资源描述:
《实验报告基于fpga的2fsk调制器的实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、专业资料参考一、设计原理1、2FSK调制原理2FSK信号是用载波频率的变化来表征被传信息的状态的,被调载波的频率随二进制序列0、1状态而变化,即载频为时代表传0,载频为时代表传1。显然,2FSK信号完全可以看成两个分别以和为载频、以和为被传二进制序列的两种2ASK信号的合成。2FSK信号的典型时域波形如图1所示,图12FSK信号的典型时域波形其一般时域数学表达式为(10-1)式中,,,是的反码,即word格式整理专业资料参考2、用FPGA实现2FSK调制器的方案采用键控法实现2FSK,功能模块设计如图2所示。图2用FPGA实现2FSK调制器方案通过不同的分频器,产生频率分别
2、为f1和f2的基频。基带信号为“1”时,频率f1的信号通过;当基带信号为“0”时,频率f2的信号通过。f1和f2作为正弦表的地址发生器的时钟,正弦表输出正弦波的样点数据,经过D/A数模转换,得到连续的2FSK信号。3、程序设计原理本实验制作一个基于FPGA的2FSK调制器,其设计原理图如图2所示。程序整体由四个子模块构成:正弦波形模块,采用64个点作为一个波形的数据周期,即正弦波的一个周期的波形采样为64个点;100KHz分频模块,利用FPGA上50MHz的晶振分频得到,作为正弦波形的频率f1;400KHz分频模块,利用FPGA上50MHz的晶振分频得到,作为正弦波形信号的
3、频率f2;1Hz分频模块,利用PGA上27MHz的晶振分频得到,作为频率f1或f2的选择信号。电路图如图3所示:word格式整理专业资料参考图3电路原理图二、源程序代码//顶层模块moduleFSK(clk_50M,clk_27M,reset,sin_out);inputclk_50M,clk_27M,reset;output[7:0]sin_out;wireclk_100K,clk_400K,clk,flag;divider1U1(clk_100K,reset,clk_50M);divider2U2(clk_400K,reset,clk_50M);select_clkU3
4、(clk,flag,reset,clk_27M,clk_100K,clk_400K);sinU4(clk,reset,sin_out);endmodule//分频器1f1(100KHz)moduledivider1(clk_100K,reset,clk_50M);outputclk_100K;inputreset,clk_50M;regclk_100K;reg[23:0]cnt;always@(posedgeclk_50M)beginword格式整理专业资料参考if(reset)begincnt<=0;//同步复位clk_100K<=0;endelseif(cnt==249
5、)begincnt<=0;clk_100K<=~clk_100K;endelsecnt<=cnt+1;//计数endendmodule//分屏器2f2(400kHz)moduledivider2(clk_400K,reset,clk_50M);outputclk_400K;inputreset,clk_50M;regclk_400K;reg[23:0]cnt;always@(posedgeclk_50M)beginif(reset)begincnt<=0;//同步复位clk_400K<=0;endelseif(cnt==42)begincnt<=0;clk_400K<=~c
6、lk_400K;endelsecnt<=cnt+1;//计数endendmodule//分屏器3(1Hz,用来选频)moduleselect_clk(clk,flag,reset,clk_27M,clk_100K,clk_400K);inputclk_100K,clk_400K,clk_27M,reset;outputclk,flag;word格式整理专业资料参考regclk,flag;reg[23:0]cnt;always@(posedgeclk_27M)beginif(reset)begincnt<=0;//同步复位flag<=0;endelseif(cnt==1349
7、9999)begincnt<=0;flag<=~flag;endelsecnt<=cnt+1;//计数case(flag)0:clk<=clk_100K;//用来选择正弦信号的频率1:clk<=clk_400K;endcaseendendmodule//正弦波形模块modulesin(clk,reset,sin_out);inputclk,reset;output[7:0]sin_out;reg[7:0]sin_out;reg[6:0]num;always@(posedgeclkorposedgereset)beg