实验报告 基于FPGA的2FSK调制器的实现.docx

上传人:b****2 文档编号:17855582 上传时间:2023-08-04 格式:DOCX 页数:15 大小:1.15MB
下载 相关 举报
实验报告 基于FPGA的2FSK调制器的实现.docx_第1页
第1页 / 共15页
实验报告 基于FPGA的2FSK调制器的实现.docx_第2页
第2页 / 共15页
实验报告 基于FPGA的2FSK调制器的实现.docx_第3页
第3页 / 共15页
实验报告 基于FPGA的2FSK调制器的实现.docx_第4页
第4页 / 共15页
实验报告 基于FPGA的2FSK调制器的实现.docx_第5页
第5页 / 共15页
实验报告 基于FPGA的2FSK调制器的实现.docx_第6页
第6页 / 共15页
实验报告 基于FPGA的2FSK调制器的实现.docx_第7页
第7页 / 共15页
实验报告 基于FPGA的2FSK调制器的实现.docx_第8页
第8页 / 共15页
实验报告 基于FPGA的2FSK调制器的实现.docx_第9页
第9页 / 共15页
实验报告 基于FPGA的2FSK调制器的实现.docx_第10页
第10页 / 共15页
实验报告 基于FPGA的2FSK调制器的实现.docx_第11页
第11页 / 共15页
实验报告 基于FPGA的2FSK调制器的实现.docx_第12页
第12页 / 共15页
实验报告 基于FPGA的2FSK调制器的实现.docx_第13页
第13页 / 共15页
实验报告 基于FPGA的2FSK调制器的实现.docx_第14页
第14页 / 共15页
实验报告 基于FPGA的2FSK调制器的实现.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

实验报告 基于FPGA的2FSK调制器的实现.docx

《实验报告 基于FPGA的2FSK调制器的实现.docx》由会员分享,可在线阅读,更多相关《实验报告 基于FPGA的2FSK调制器的实现.docx(15页珍藏版)》请在冰点文库上搜索。

实验报告 基于FPGA的2FSK调制器的实现.docx

实验报告基于FPGA的2FSK调制器的实现

一、设计原理

1、2FSK调制原理

2FSK信号是用载波频率的变化来表征被传信息的状态的,被调载波的频率随二进制序列0、1状态而变化,即载频为

时代表传0,载频为

时代表传1。

显然,2FSK信号完全可以看成两个分别以

为载频、以

为被传二进制序列的两种2ASK信号的合成。

2FSK信号的典型时域波形如图1所示,

图12FSK信号的典型时域波形

其一般时域数学表达式为

(10-1)

式中,

的反码,即

2、用FPGA实现2FSK调制器的方案

采用键控法实现2FSK,功能模块设计如图2所示。

图2用FPGA实现2FSK调制器方案

通过不同的分频器,产生频率分别为f1和f2的基频。

基带信号为“1”时,频率f1的信号通过;当基带信号为“0”时,频率f2的信号通过。

f1和f2作为正弦表的地址发生器的时钟,正弦表输出正弦波的样点数据,经过D/A数模转换,得到连续的2FSK信号。

3、程序设计原理

本实验制作一个基于FPGA的2FSK调制器,其设计原理图如图2所示。

程序整体由四个子模块构成:

正弦波形模块,采用64个点作为一个波形的数据周期,即正弦波的一个周期的波形采样为64个点;100KHz分频模块,利用FPGA上50MHz的晶振分频得到,作为正弦波形的频率f1;400KHz分频模块,利用FPGA上50MHz的晶振分频得到,作为正弦波形信号的频率f2;1Hz分频模块,利用PGA上27MHz的晶振分频得到,作为频率f1或f2的选择信号。

电路图如图3所示:

图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(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)

begin

if(reset)

begin

cnt<=0;//同步复位

clk_100K<=0;

end

elseif(cnt==249)

begin

cnt<=0;

clk_100K<=~clk_100K;

end

else

cnt<=cnt+1;//计数

end

endmodule

 

//分屏器2f2(400kHz)

moduledivider2(clk_400K,reset,clk_50M);

outputclk_400K;

inputreset,clk_50M;

regclk_400K;

reg[23:

0]cnt;

always@(posedgeclk_50M)

begin

if(reset)

begin

cnt<=0;//同步复位

clk_400K<=0;

end

elseif(cnt==42)

begin

cnt<=0;

clk_400K<=~clk_400K;

end

else

cnt<=cnt+1;//计数

end

endmodule

 

//分屏器3(1Hz,用来选频)

moduleselect_clk(clk,flag,reset,clk_27M,clk_100K,clk_400K);

inputclk_100K,clk_400K,clk_27M,reset;

outputclk,flag;

regclk,flag;

reg[23:

0]cnt;

always@(posedgeclk_27M)

begin

if(reset)

begin

cnt<=0;//同步复位

flag<=0;

end

elseif(cnt==13499999)

begin

cnt<=0;

flag<=~flag;

end

else

cnt<=cnt+1;//计数

case(flag)

0:

clk<=clk_100K;//用来选择正弦信号的频率

1:

clk<=clk_400K;

endcase

end

endmodule

 

//正弦波形模块

modulesin(clk,reset,sin_out);

inputclk,reset;

output[7:

0]sin_out;

reg[7:

0]sin_out;

reg[6:

0]num;

always@(posedgeclkorposedgereset)

begin

if(reset)

sin_out<=0;

elseif(num==63)

num<=0;

else

num<=num+1;

case(num)

0:

sin_out<=255;

1:

sin_out<=254;

2:

sin_out<=252;

3:

sin_out<=249;

4:

sin_out<=245;

5:

sin_out<=239;

6:

sin_out<=233;

7:

sin_out<=225;

8:

sin_out<=217;

9:

sin_out<=207;

10:

sin_out<=197;

11:

sin_out<=186;

12:

sin_out<=174;

13:

sin_out<=162;

14:

sin_out<=150;

15:

sin_out<=137;

16:

sin_out<=124;

17:

sin_out<=112;

18:

sin_out<=99;

19:

sin_out<=87;

20:

sin_out<=75;

21:

sin_out<=64;

22:

sin_out<=53;

24:

sin_out<=43;

24:

sin_out<=34;

25:

sin_out<=26;

26:

sin_out<=19;

27:

sin_out<=13;

28:

sin_out<=8;

29:

sin_out<=4;

30:

sin_out<=1;

31:

sin_out<=0;

32:

sin_out<=0;

33:

sin_out<=1;

34:

sin_out<=4;

35:

sin_out<=8;

36:

sin_out<=13;

37:

sin_out<=19;

38:

sin_out<=26;

39:

sin_out<=34;

40:

sin_out<=43;

41:

sin_out<=53;

42:

sin_out<=64;

43:

sin_out<=75;

44:

sin_out<=87;

45:

sin_out<=99;

46:

sin_out<=112;

47:

sin_out<=124;

48:

sin_out<=137;

49:

sin_out<=150;

50:

sin_out<=162;

51:

sin_out<=174;

52:

sin_out<=186;

53:

sin_out<=197;

54:

sin_out<=207;

55:

sin_out<=217;

56:

sin_out<=225;

57:

sin_out<=233;

58:

sin_out<=239;

59:

sin_out<=245;

60:

sin_out<=249;

61:

sin_out<=252;

62:

sin_out<=254;

63:

sin_out<=255;

default:

sin_out<=8'bx;

endcase

end

endmodule

 

三、仿真结果

1、分屏器模块仿真结果如图4所示:

图4分屏器模块仿真结果

 

2、正弦波形模块仿真结果如图5所示:

图5正弦波形模块仿真结果

3、最终波形输出仿真结果如图6所示:

图6最终波形输出结果

4、modelsim仿真波形图如图7所示:

图7modelsim仿真波形图

四、实验结果

利用DE2上的拓展引脚,接到单片机上的数/模转换芯片DAC0832,再用示波器测试芯片的输出引脚查看波形,结果如图8和图9所示:

图8频率为f1的正弦波形

图9频率为f2的正弦波形

图10混合波形图

从以上分析可知,该设计实现了2FSK调制器的功能:

基带信号为“1”时,频率f1的信号通过;当基带信号为“0”时,频率f2的信号通过。

由此说明,实验取得了成功。

五、实验总结

本实验内容为制作一个基于FPGA的2FSK调制器。

虽然学习Verilog和QuartusII软件、ModuleSim仿真软件已有一个学期,但是此次实验过程中遇到有比较棘手的难题。

起初,对于选频功能不是很了解,不知怎样设置比较好。

通过深思和对比之后,最终我选择了用一个时钟信号来控制。

另外,此次实验遇到的最大难题就是硬件连接问题。

以前的实验都只是在QuartusII上编写实验,进行仿真观察,或者用modelsim进行仿真,这样就不用搭建实际电路,实验难度系数也就较小。

而此次实验需要将ED2输出的信号经过数/模转换,再用示波器来观察。

通过老师的提点,我对数/模转换芯片DAC0832进行了较深入的了解,并且上网查找了实验室单片机板的电路图,最终明白的整个电路的原理,因而成功搭建了电路,并输出了预期的波形。

通过自己课下的努力和钻研,最终较快较好地成功完成了实验,这给了我极大的兴趣和信心。

从一开始对搭建电路无从下手,到一步一步查找资料并尝试连接,确实在课下花了很多时间和心思。

但看着自己制作的成果,深感一切都值得。

本次实验让我深深体会到,单纯学习理论知识是不行的,只有勤于动手,将所学的知识运用到实际当中,才能真正理解和掌握知识。

在接下去的学习中,我将不断完善知识面,设计更为复杂的电路。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2