《FPGA课程设计FPGA通信模块设计.doc》由会员分享,可在线阅读,更多相关《FPGA课程设计FPGA通信模块设计.doc(7页珍藏版)》请在三一办公上搜索。
1、m序列原理(20)m序列仿真(20)NCO原理(20)NCO仿真(20)综合(10)格式(10)总分 FPGA通信模块设计专 业:通信工程学 号:20085415姓 名: FPGA通信模块设计1 现代数字信号处理随着电子技术和集成电路技术的飞速发展,数字信号处理已广泛应用于语音、图像处理,通信和多媒体等领域中。傅立叶变换(DFT)作为其数字信号处理中的基本运算,发挥着重要作用。特别是快速傅立叶变换(FFT)算法的提出,减少了当N很大的时候DFT的运算量,使得数字信号处理的实现和应用变得更加容易,因此对FFT算法及其实现方法的研究具有很强的理论和现实意义,且实际价值不可估量。数字信号处理是利用计
2、算机或专专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合需要的信号形式。数字信号处理技术的实质就是将模拟信号或我们现实生活中的一些信号转化为数字信号并对转换后的数字信号进行相应的处理。数字信号处理是从20世纪60年代以来,随着信息科学和计算机学科的高速发展而迅速发展起来的一门新兴学科。70年代以来,随着电子计算机、大规模集成电路、超大规模集成电路以及微处理器技术的迅猛发展,数字信号处理得到了飞速的发展,它的重要性日益在各个领域的应用中表现出来。早期的FPGA设计大都是使用FPGA供应商提供的设计软件工具,进行门级设计。现在设计的一个特点是首先采用VH
3、DL语言进行电路描述,然后使用高层次的EDA综合工具进行综合,最后使用FPGA供应商提供的布局布线工具进行布局布线。要求在系统设计、综合技巧等方面就要考虑FPGA的特点。在代码设计时,遵从VHDL描述一系统仿真一系统综合一FPGA实现这一高层次设计方法来完成系统的设计与实现。2 BPSK调制BPSK(二进制相移键控)是利用载波的相应变化来传递数字信息,具有抗噪声性能好、易于产生、误码率低等优点。BPSK调制在扩频载波调制中是一种极重要的调制方式,它的抗干扰性及通频带的利用率均优先于ASK移幅键控和FSK移频键控。因此,PSK技术在高速数据传输中得到了十分广泛的应用。BPSK框图如下:图1 BP
4、SK调制图图2 BPSK调制仿真图I图3 BPSK调制仿真图II3 m序列伪随机信号既有随机信号所具有的优良的相关性,又有随机信号所不具备的规律性。因此,伪随机信号既易于从干扰信号中被识别和分离出来,又可以方便的产生和重复,其相关函数接近白噪声的相关函数。伪随机序列具备可重复性,可确定性,易于实现相关接受和匹配接受,故有很好的抗干扰性能。因此伪随机序列在相关辨识、伪码测距、导航、遥控测试和多址通讯等方面有广泛的应用。长度线形移位寄存器序列(简称m序列),m序列是一类重要的伪随机序列,最早应用于扩频通信。3.1 m序列原理m序列是由带线性反馈的移位寄存器产生的周期最长的一种序列,由反馈移位寄存器
5、的“和”、“异”、“或”门组成的环形计数器即可产生m序列。n级线性移位寄存器产生的非零周期序列的极小多项式为n次本原多项式,这样的就是m序列,周期是。根据某一n次本原多项式和不同的初始状态可以得到多个m序列,但它们只不过相差若干步位移,这些m序列称作一个平移等价类。在全部n级m序列中,平移等价类的个数为,其中表示v的欧拉函数。可以通过对某一n级m序列进行采样来获得m序列其它所有的平移等价类(即求取全部的本原多项式)。3.2 m序列仿真图图4 m序列仿真图4 NCO4.1 NCO原理数控振荡器(NCO)产生时间离散和幅度离散的正弦信号和余弦信号,典型情况下用在通信系统中,在I-Q混频器中用作正交
6、载波发生器,也常用在数字锁相环中,在通信接收机中用于载波同步。NCO还可作为频移键控(FSK)或相移键控(PSK)调制器,此时输出信号的频率或相位变化直接与输入数据相对应。产生数字正弦信号的方法有很多种。通用的方法是在单位圆上累加相位增量产生角度位置,然后用累加相位值作为ROM查找表的地址,完成从极坐标到笛卡尔坐标的转换。可以使用乘法器减少ROM的容量,对于给定的精度,乘法器的使用可以指数降低存储器的使用量,但是需要更多的逻辑单元。产生数字正弦信号的另一个方法是使用坐标旋转数字计算(CORDIC)算法确定正弦和余弦的值,CORDIC算法用累加器相位值作为输入,然后通过一系列二进制移位和比较确定
7、对应角度的笛卡尔坐标。在所有的方法中,相位增量累加的频率和输入相位增量的大小直接决定正弦信号的频率,而输出信号的值用二进制补码表示。NCO生成的正弦信号用下列公式定义: (1)其中:T是时钟周期,f0是由相位增量输入值INC制输出频率,fFM是由频率调制输入值FM决定的频率调制参数,FM是相位调制输入值,DITH是内部抖动相位值,N是幅值精度。对于给的相位增量INC,输出频率f0由下列公式决定: (2)其中:fclk是时钟频率,M是相位累加器精度。4.2 NCO仿真图图5 NCO仿真图计数器源代码/ Quartus II Verilog Template/ Binary countermodu
8、le janet11(input clk, reset,input 9:0 k,output reg 9:0 cnt_out);/ Reset if needed, or increment if counting is enabledalways (posedge clk or posedge reset)beginif (reset)cnt_out = 0;else cnt_out = cnt_out + k;endEndmoduleCOS_ROM源代码module ROM_COS (address,clock,q);input9:0 address;input clock;output7
9、:0 q;wire 7:0 sub_wire0;wire 7:0 q = sub_wire07:0;altsyncramaltsyncram_component (.clock0 (clock),.address_a (address),.q_a (sub_wire0),.aclr0 (1b0),.aclr1 (1b0),.address_b (1b1),.addressstall_a (1b0),.addressstall_b (1b0),.byteena_a (1b1),.byteena_b (1b1),.clock1 (1b1),.clocken0 (1b1),.clocken1 (1b
10、1),.clocken2 (1b1),.clocken3 (1b1),.data_a (81b1),.data_b (1b1),.eccstatus (),.q_b (),.rden_a (1b1),.rden_b (1b1),.wren_a (1b0),.wren_b (1b0);defparamaltsyncram_component.address_aclr_a = NONE,altsyncram_component.clock_enable_input_a = BYPASS,altsyncram_component.clock_enable_output_a = BYPASS,alts
11、yncram_component.init_file = rom_cos.mif,altsyncram_component.intended_device_family = Cyclone III,altsyncram_component.lpm_hint = ENABLE_RUNTIME_MOD=NO,altsyncram_component.lpm_type = altsyncram,altsyncram_component.numwords_a = 1024,altsyncram_component.operation_mode = ROM,altsyncram_component.outdata_aclr_a = NONE,altsyncram_component.outdata_reg_a = UNREGISTERED,altsyncram_component.widthad_a = 10,altsyncram_component.width_a = 8,altsyncram_component.width_byteena_a = 1;endmodule