电子科技大学实验报告学生姓名:学号:指导教师:一、实验室名称:通信信号处理及传输实验室二、实验项目名称:数字上下变频三、实验原理:1、数字上/下变频的理论基础通常的无线通信都是通过载波调制信号来实现。
这意味着产生了数字基带信号后,需要将信号通过数模(DA)转换,由射频端调制到某个载波频段进行发送。
这个将基带信号调制到高频载波频段的过程就称为上变频。
反之,在接收机端将模数(AD)转换后的高速率高频带数字信号转换为低速率的基带信号,即将中频或者高频信号搬移到基带或者低频波段的过程就称为下变频。
因此,上变频和下变频的概念分别是指把信号搬移到更高或更低的频率上。
这可以通过信号()t c与一个复旋转向量相乘得到,结果为:()()t f j c=t sπ2t cef代表搬移的频率,通常称为载波频率。
其中,c复数信号的实部和虚部也可以分别称做同相分量或正交分量。
数字上变频和下变频就是对上式进行数字化。
这就意味着信号和复向量都要用量化的样本来表示。
引入满足采样定理的采样周期T,这样,数字上变频和下变频可以写为:()()kT f j c e kT c kT s π2=。
进行上变频还是下变频是由频率c f 的符号决定。
因此只要对其中一种情况进行讨论即可。
我们假设对接收到的信号在模拟前端对整个接收带宽进行下变频,然后进行滤波。
假设信道可位于带宽为Band 的频带(波段)内的任何位置,频带内包含所需信道加上干扰邻道。
如图1所示。
对信号进行下变频可以得到图2。
邻道干扰可以通过信道化滤波器来滤除。
图1 下变频前信号信道示意图图2 下变频后信号信道示意图为了分析方便,我们假设中频信号为单频形式,暂不考虑邻道及其他干扰。
1)数字下变频的时域分析:数字下变频的目的是把所需的分量从载波频率加搬移至基带。
模拟中频信号为单频形式:()()0cos c c t t ωϕ=+其中c ω表示信号频率,0ϕ表示信号初始相位。
同时假设用于正交解调的两路数字本振的初始相位为0,那么模拟中频信号c c c c经过A/D 后得到的信号形式为()()()()()[]∑+∞-∞=-⨯=⨯=k T kT t kT c t P t c kT C δ。
可见信号()kT C 是原信号()t c 在 ,2,,0T T t ±±=处的一些离散值。
因此A/D 输出的最终信号形式为:[]()0cos ,c c k kT ωϕ=+ 0,1,2,k =±±那么,此信号经过正交数字解调后的信号形式 (设信号频率和本振频率相同,即cp ωω=)可以表示如下:I 路: ()()()()()0cos cos cos I p c p s k c k kT kT kT ωωϕω=⨯=+⨯()()001cos 2cos 2c kT ωϕϕ⎡⎤=++⎣⎦; Q 路:()()()()()0cos cos sin Q p c p s k c k kT kT kT ωωϕω=⨯=+⨯()()001sin 2sin 2c kT ωϕϕ⎡⎤=+-⎣⎦。
可以看出:数字正交解调输出包括两项,其中第1项为解调过程中引入的高频分量,第二项为所需要的低频分量。
2)数字下变频的频域分析:输入模拟中频信号的频谱为:()()()00j j c c c F e e ϕϕωπδωωδωω-⎡⎤=⨯-+⨯+⎣⎦。
此信号经A/D 变换后的输出信号频谱为:()()()()112222s T c c k k F P F F T T ππωωωδωωππ+∞=-∞⎡⎤⎛⎫=⊗=-⊗ ⎪⎢⎥⎝⎭⎣⎦∑12c k k F T T πω+∞=-∞⎛⎫=- ⎪⎝⎭∑ 经过数字正交解调后的频谱:I 路:()()()1222Is p p k k F T T ππωπδωωδωωδωπ+∞=-∞⎛⎫⎡⎤=⨯-++⊗- ⎪⎣⎦⎝⎭∑ 22p p k k k T T T πππδωωδωω+∞=-∞⎡⎤⎛⎫⎛⎫=--++- ⎪ ⎪⎢⎥⎝⎭⎝⎭⎣⎦∑; Q 路: ()()()1222Qs p p k k F j T T πππωδωωδωωδωπ+∞=-∞⎛⎫⎡⎤=⨯-++⊗- ⎪⎣⎦⎝⎭∑ 22p p k k k jT T T πππδωωδωω+∞=-∞⎡⎤⎛⎫⎛⎫=--++- ⎪ ⎪⎢⎥⎝⎭⎝⎭⎣⎦∑。
应该注意的是,实际上发射机和接收机的本振是不同步的。
因而,经过接收机下变频后的信号与发射信号之间存在相位和频率偏差,必须进行校正。
2、VHDL 实现数字上/下变频在程序中,我们先对AD 输入的信号进行采样,然后将采样后的数据与内部的1MHz 正弦载波信号值表相乘,再通过DA 发送出去。
(1) 1MHz 正弦载波信号的产生由于实验箱中输入信号的采样率是16MHZ ,要产生1MHz 的正弦载波信号,我们可将1MHz 的正弦信号离散化为16个样本,等效于用16MHZ 的时钟采样,即:sin(2*pi*f*n/fs),其中f=1MHz ,fs=16MHZ→sin(2*pi*n/16)其中,n 的取值为0到15,也就完整地表示了这个调制正弦信号的一个周期。
在离散化之后,我们再进行一个幅值上的放大,即乘以511,最终得到的一个样本用10bit 长的向量来表示。
在程序中,我们用变量dc_array来表示调制正弦信号modulation_signal,它是一个包含16个元素的数组,每个元素都是一个长度为10bit的向量。
constant modulation_signal uc_array(0 to 15) := --- frequency = 1Mhz("0000000000", --511*sin(2 * pi * 0 / 16)"0011000011", --511*sin(2 * pi * 1 / 16)"010*******", --511*sin(2 * pi * 2 / 16)"0111011000", --511*sin(2 * pi * 3 / 16)"0111111111", --511*sin(2 * pi * 4 / 16)"0111011000", --511*sin(2 * pi * 5 / 16)"010*******", --511*sin(2 * pi * 6 / 16)"0011000011", --511*sin(2 * pi * 7 / 16)"0000000000", --511*sin(2 * pi * 8 / 16)"1100111101", --511*sin(2 * pi * 9 / 16)"1010010111", --511*sin(2 * pi * 10/ 16)"1000101000", --511*sin(2 * pi * 11/ 16)"1000000010", --511*sin(2 * pi * 12/ 16)"1000101000", --511*sin(2 * pi * 13/ 16)"1010010111", --511*sin(2 * pi * 14/ 16)"1100111101"); --511*sin(2 * pi * 15/ 16)(2)上变频过程上变频过程其实就是输入信号uc_din(经过AD之后长度也为10bit)与调制信号modulation_signal的相乘过程。
关键代码段如下:t ype uc_array is array(natural range <>) of std_logic_vector(9 downto 0);type uc_smachine is (uc_idle,uc_transmit);constant modulation_signal : uc_array(0 to 15) := --frequency = 1Mhzsignal uc_st : uc_smachine;signal uc_flag : std_logic;--signal chip_cnt : std_logic_vector(4 downto 0);signal chip_cnt : std_logic_vector(4 downto 0);signal uc_wave : std_logic_vector(19 downto 0);signal v_origin,v_modu : std_logic_vector(9 downto 0);signal uc_tmp : std_logic_vector(9 downto 0);beginv_origin <= uc_din-512; ---change data from unsigned to signed;v_modu <= modulation_signal(conv_integer(chip_cnt(3 downto 0)));uc_sending:process(rst,clk)beginif rst = '1' thenuc_st <= uc_idle;chip_cnt <= (others => '0');uc_wave <= (others => '0');uc_tmp <= "1000000000";uc_flag <= '0';elsif clk'event and clk = '1' thencase uc_st iswhen uc_idle => if uc_en = '1' thenuc_st <= uc_transmit;end if;uc_wave <= (others => '0');uc_tmp <= "1000000000";uc_flag <= '0';when uc_transmit => if sample_en = '1' thenchip_cnt <= chip_cnt +1;uc_tmp <= uc_din;if (v_origin(9) or v_modu(9)) = '0' thenuc_wave <= v_origin * v_modu;elsif ((v_origin(9) = '0') and (v_modu(9) = '1')) thenuc_wave <= v_origin * (1024 - v_modu);elsif ((v_origin(9) = '1') and (v_modu(9) = '0')) thenuc_wave <= v_modu * (1024 - v_origin);elseuc_wave <= (1024 - v_modu) * (1024 - v_origin);end if;uc_flag <= v_origin(9) xor v_modu(9);end if;if uc_en = '0' thenuc_st <= uc_idle;end if;end case;end if;end process;----change up converted signal intoregister_uc_i_Q:process(rst,clk)beginif rst = '1' thenuc_I <= "1000000000";uc_Q <= "1000000000";elsif clk'event and clk = '1' thenif uc_st = uc_idle thenuc_I <= "1000000000";uc_Q <= "1000000000";elseuc_I <= uc_tmp;if uc_flag = '1' thenuc_Q <= "1000000000" + not uc_wave(18 downto 9);elseuc_Q <= "1000000000" + uc_wave(18 downto 9);end if;end if;end if;end process;四、实验目的:1. 理解数字上/下变频的原理,了解无线通信中进行上/下变频的原因。