- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
全数字2FSK调制解调系统
实验二、全数字2FSK调制解调系统
一. 实验目的
掌握2FSK调制解调的原理及其实现方法;
掌握MAX+pluⅡ开发软件的运用,在该软件下熟练的运用多种输入方式完成各种电路设计的要求;
初步掌握VHDL语言,能够运用该语言编写简单的程序,完成设计要求;
熟悉对PLD的下载和仿真,学会观察测试结果的正确性;
学会运用各方面知识,设计并实现一个系统。
二. 实验要求
使用MAX+pluⅡ软件,用M序列发生器作为信号源设计全数字2FSK调制解调系统,速率可自定, 并在实验箱上调试出调制和解调波形,并将信号源和解调结果进行比较。
三. 实验设备
MAX+plusⅡ开发系统、微机1台、示波器1台、稳压电源1台、万用表1只、实验箱1套
四. 实验原理:
FSK(Frequency Shift Keying)
方波源
由FPGA内部晶振构成,频率为32.768MHz,为了使后续的A/D和D/A能在1MHz正常工作,方波源必须进行分频,降到1MHz以下。
分频器
由不同进制的计数器构成不同模的分频器。由于载波的频率要高于m序列信号源的频率,因此产生m序列的分频器模要比产生载波的分频器模大,且载波1和载波2的频率不同,它们所用的分频器的模也不同。
m序列
由伪随机信号m序列构成,可根据其生成多项式选择不同阶数的伪随机序列。
载波
载波f1和载波f2通过D/A映射表来设计,一周期取8点或16点或32点都可以,自己决定。
调制
采用二选一数据选择器即可完成。
2、FSK解调原理
FSK解调总体框图如下:
各部分的对应的波形原理为:
经抽样判决后,得到规整的信码。
3、位同步提取
与HDB3位同步原理相同,略。
五. 实验方案
1、设计思路
因FPGA实验板的晶振为32.768M,频率过高,所以要对系统时钟进行分频,设计了一个64分频器。考虑到接收端的A/D采样工作频率,将输入的时钟又通过了8分频器,然后通过8分频得到载波f1,速率32.768M/64/8/8=8Kbps;通过16分频得到载波f2,速率32.768M/64/8/16=4Kbps;通过1024分频得到信码,速率32.768M/64/8/1024=62.5bps;我们采用5阶伪随机序列。在调制模块中称为div64模块、div8模块、div16模块、div1024模块和m5模块。
之后,电路中加入两个载波映射表,将两个不同的频率根据D/A转换表映射成不同的载波。它们分别为f1_zaibo和f2_zaibo模块。然后通过调制模块mux成为2FSK调制信号。
解调电路采用过零检测的方法,不同的载波对应的零点数不同,过零点数反映了载波变化的不同,也反映了信码的不同。按设计原理,解调模块包括:A/D采样模块、将正弦波进行变换的整形模块、微分整流模块、脉冲展宽模块、低通滤波模块和抽样判决模块。
为使解调部分的时钟信号与调制部分同步,加入了位同步dpll模块,控制解调部分的抽样判决时钟。
2、分频器模块
调制模块中共有div64.v、div8.v、div16.v、div1024.v、div128.v等分频器模块,设计如下,供参考。
/////////////////////////////////////////////////////////////////////////////
// 64分频器
module div32(
clk,
divout);
input clk;
output divout;
reg [5:0]div; //采用6bit寄存器
reg divout;
initial
div=0;
always @(posedge clk)
begin
div=div+1; //计数器操作
divout=div[5]; //输出最高位
end
endmodule
///////////////////////////////////////////////////////////////////////////////
// 8分频器
module div128(
clk,
divout);
input clk;
output divout;
reg [2:0]div; //采用3bit寄存器
reg divout;
initial
div=0;
always @(posedge clk)
begin
div=div+1; //计数器操作
divout=div[2]; //输出最高位
end
endmodule
//////////////////////////////////////////////////////////////////////////
// 16分频器
module div128(
clk,
div
文档评论(0)