南理工电类综合实验报告FM调制解调的数字实现.docx
- 文档编号:11932635
- 上传时间:2023-06-03
- 格式:DOCX
- 页数:18
- 大小:1.43MB
南理工电类综合实验报告FM调制解调的数字实现.docx
《南理工电类综合实验报告FM调制解调的数字实现.docx》由会员分享,可在线阅读,更多相关《南理工电类综合实验报告FM调制解调的数字实现.docx(18页珍藏版)》请在冰点文库上搜索。
南理工电类综合实验报告FM调制解调的数字实现
《电类综合实验》
仿真报告
实验课题:
FM调制解调的数字实现
指导教师:
刘光祖
学生姓名:
院系:
电光学院
专业:
通信与信息系统
实验时间:
2016.05.09至2016.05.13
一、实验背景
1.FPGA简介
FPGA(Field-ProgrammableGateArray,现场可编程逻辑门阵列)是在PAL、GAL、CPLD等可编程逻辑器件的基础上进一步发展的产物,是专用集成电路领域一种半定制的集成数字芯片,其最大特点是现场可编程,既解决了全定制电路的不足,又克服了原有可编程逻辑器件门电路数有限的缺点。
FPGA的内部结构由CLB、RAM、DCM、IOB、Interconnect等构成。
如下给出了FPGA的最典型的结构:
FPGA开发的一般流程:
1(a)1(b)
2.DE2-115开发板简介
本实验中所用开发板为Altera公司的DE2-115。
如下为开发板的配置列表:
•AlteraCyclone®IV4CE115FPGA器件
•Altera串行配置芯片:
EPCS64
•USBBlaster在线编程;也支持JTAG和AS可编程方式
•2MBSRAM
•两片64MBSDRAM
•8MBFlashmemory
•SD卡插槽
•4个按钮
•18个滑动开关
•18个红色LED
•9个绿色LED
•50M时钟源
•24位音频编解码器,麦克风插孔
•电视解码
•RJ452G以太网接口
•VGA连接器
•含有USB_A和USB_B连接器的主从控制器
•RS232收发器和9针连接器
•PS/2鼠标和键盘连接器
•红外接收器
ControlPanel是开发板自带的一个工具软件,可以通过该软件提供的图形界面直接对FPGA上的各个外设进行操作。
通过该操作可以确认PC机与开发板的连接是否正确,开发板的硬件工作是否正常。
ControlPanel的安装过程如下:
确保QUARTUSII10.0或以上版本能被成功安装;将开关RUN/PROG切换到RUN位置;将USB接线连接至USB驱动端口,供12V电源并打开开关;打开主机上的可执行文件DE2_115_ControlPanel.exe,controlPanel的用户界面如下:
DE2_115_ControlPanel.exe一旦被启动,DE2_115_ControlPanel.sof程序流文件将会被自动加载;如果未连接,点击CONNECT,点sof文件将会重新加载到板子上;注意,控制面板将会占用一直到你关闭那个端口,除非你关闭USB端口,否则你不能使用QUARTUSII来下载文件;控制面板现在可以使用了,通过设置一些LED灯ON/OFF的状态来观察DE2-115上的状态。
JTAG配置FPGA如下左图所示:
开发板代码设计流程如上右图所示。
3.A/D、D/A扩展板
AD、DA扩展板是利用HSMC接口进行扩展的子卡,相当于FPGA的一个外设。
扩展板提供两路65M,14位采样分辨率的ADC以及两路125M,14位采样精度的DAC。
采样时钟设置灵活可以采用多种形式。
信号输入和输出采用变压器耦合方式,频率范围为0.1MHz~800MHz。
ADC的基本参数:
集成双端口14位AD;3V供电(2.7V-3.6V);SNR=71.6dB;固定的模拟输入范围0V~2V
二、实验原理
本实验利用DE2-115开发板及AD、DA扩展板实现一个数字式FM调制解调器,并要求测试调制解调器的功能和解调性能。
1.基本原理
FM调制信号的时域及频域波形
FM信号的解调方法主要分为以下两种:
(1)鉴相法:
鉴相法指的是利用鉴相电路将已调载波中的相位信息提取出来,再对相位信息求导即可得到调制信号,鉴相的方法可以鉴相的方法可以是模拟的也可以是数字的。
(2)鉴频法:
鉴频法指的是利用鉴频器直接将已调载波中的瞬时频率提取出来,鉴频方法主要有两种,一种是将FM信号经过频幅转换网络,转换成调频-调幅波,再经过调幅解调得到调制信号。
另一种是将FM信号经过频相转换网络转换成调频-调相波,在经过鉴相器得到调制信号。
2.调制实现
FM调制的数字实现最直接的方法就是利用DDS技术。
DDS是通过控制相位累加器的累加增量值来改变相位累加器的循环频率。
再通过相位累加器对波形表进行查表得到所需频率的输出信号。
其工作原理决定了我们可以很容易的改变输出波形的频率和相位。
基于DDS的基本原理,模拟调制方法中的直接法和间接法在DDS技术中实际上是统一的,因为DDS实现过程中的相位累加器实际上可以看做是一个积分器,而相位累加器的输出实际上就代表了信号的瞬时相位。
如下为DDS实现的FM调制器框图:
数字FM实现的改进方案:
由于FM是一种非线性调制,因此已调信号的频谱宽度会大大展宽,而在实际应用中很多时候通信信道都是带限的,为了防止不同频道之间的干扰对信号的边带抑制都有严格规定,而上述调制的实现方案实际上并没有考虑边带抑制的问题。
根据对FM信号的数学表达式的分析在最简单的单音调制下,已调信号的边频分量理论上是无限多的,其幅度按照贝塞尔函数的规律下降的,因此不能有效进行边带抑制。
为了有效的进行边带抑制可以采用如下左图改进结构
3.解调实现
FM的数字解调可以采用鉴相法:
接收信号先经过正交下变频变为零中频信号,然后根据调制信号带宽进行适当倍数抽取以降低运算量。
正交解调得到的零中频信号可以计算出接收信号的瞬时相位,再通过对瞬时相位进行差分得到最后的解调信号。
实现过程中的正交下变频以及抽取、差分等运算都是数字信号处理中的常见算法比较容易实现,实现比较困难的是求相位运算,这一步运算包含了除法以及反正切运算,运算量较大。
实现的方法一般有两种,一种是查表法,查表法在精度要求较高时需要很大的数据存储量。
另一种方法是利用Cordic算法来求解,由于Cordic算法的核心思想是通过迭代运算来逼近所求的非线性函数的函数值,因此高精度的运算需要较多的迭代次数。
因此虽然硬件消耗量较少,但是很难满足较高吞吐率的运算。
具体方法的选择需要考虑实际情况来决定。
简化方案:
如果实现精度要求不高,那么可以对算法进行一些简化处理,考虑到解调的关键实际上是计算信号相位值得变化率,在数字域实际上就是计算前后两个采样点所表示的载波相位值之差。
因此可以考虑计算相邻两个采样点所代表的载波相位之差的三角函数值。
考虑到当
很小的时候
,因此:
4.实验要求
本实验基于FPGA开发板(DE2-115)和AD/DA板(THDB-ADA)设计数字FM调制解调器
按照FM调制的实现框图,设计一个FM数字调制器,完成对设定波形的FM数字调制。
并验证调制信号的正确性。
按照FM解调的实现框图,选择合理方案设计一个FM数字解调器,完成对输入已调信号的FM数字解调,并验证其功能及性能。
将设计好的FM调制器代码下载到演示板,调制信号由FPGA内部产生,设置调参数,包括载波频率,调制信号频率,调制波形及最大频偏。
用示波器观察DAC输出的已调载波的时域波形,并利用Signal_tap尽可能多的记录送给DAC的数据,并绘出频谱图。
将设计好的FM解调器代码下载到演示板,利用函数信号发生器产生已调的FM调制信号,并设定好各项参数。
用示波器观察DAC输出端的解调时域波形,并利用Signal_tap记录送给DAC的数据,并绘出频谱图。
逐步减小输入波形幅度,观察解调结果,找出解调器工作的门限电平并记录。
利用按键或者通信接口改变调制器和解调器的工作参数并通过观察记录输出波形验证参数改变的正确性。
设计要求包括基本要求和提高要求两部分。
基本要求如下:
要求调制信号为正弦波,输入幅度为调制信号频率为100kHz,最大频偏为100kHz,载波频率为3MHz。
输入已调载波信号峰峰值幅度不超过1V,调制信号频率不大于50kHz,载波频率为3MHz的正弦波。
提高要求如下:
利用按键或通信接口实现对调制解调器的参数配置要求可以在一定范围内任意设置,最大频偏,载波频率等参数。
减小解调器输入端信号幅度,观察并记解调门限电平。
三、实验过程
1.实验结果
在一个星期的时间里,我们小组(两人:
徐皖峰,汪锦)基本完成了实验设计的要求,通过Altera的Quratus软件上verilog编程完成了相应地功能。
实验结果的截图在下面展示:
开发板实物图如下:
①实现调制信号的输出,通过键控输入的方式调整频偏:
②实现调制信号的解调,信号发生器产生的信号为:
③SignalTap抓取到的不同情况下的调制解调信号为:
2.结果分析
由上面示波器的输出波形以及SignalTap抓取到的信号可以看出,我们的实验设计(verilog程序)仿真是满足实验要求的,而且对于实验的提高要求做出了键控频偏的改进,这一点也是成功的。
3.总结
通过这一个星期的电类综合实验我对FPGA,DE2-115开发板,QUARTUSII软件的使用,FM信号调制解调的数字实现有了一定的基本了解。
从刚开始的不会到后面可以熟练使用实验室设备,我从中学到了很多,更多地了解到一些跟电类相关的实验设备的使用。
回顾整个设计过程,发现自己真的有很多不足,真是书到用时方恨少。
在课程设计过程中,学到了很多有关电子技术理论和实际方面的知识,从理论中得出结论,才能真正的提高自己的实际动手能力和独立能力,从中获得经验和知识。
附录:
本次实验中的verilog代码如下:
moduleDE2_115_ADDA_TOP(
CLOCK_50,
ADC_CLK_A,
ADC_CLK_B,
ADC_DA,
ADC_DB,
ADC_OEB_A,
ADC_OEB_B,
ADC_OTR_A,
ADC_OTR_B,
DAC_CLK_A,
DAC_CLK_B,
DAC_DA,
DAC_DB,
DAC_MODE,
DAC_WRT_A,
DAC_WRT_B,
OSC_SMA_ADC4,
SMA_DAC4,
SW_0,
SW_1
);
inputCLOCK_50;
outputADC_CLK_A;
outputADC_CLK_B;
input[13:
0]ADC_DA;
input[13:
0]ADC_DB;
outputADC_OEB_A;
outputADC_OEB_B;
inputADC_OTR_A;
inputADC_OTR_B;
outputDAC_CLK_A;
outputDAC_CLK_B;
output[13:
0]DAC_DA;
output[13:
0]DAC_DB;
outputDAC_MODE;
outputDAC_WRT_A;
outputDAC_WRT_B;
inputOSC_SMA_ADC4;
inputSMA_DAC4;
inputSW_0;
inputSW_1;
//=======================================================
//REG/WIREdeclarations
//=======================================================
assignDAC_WRT_B=CLK_125;//InputwritesignalforPORTB
assignDAC_WRT_A=CLK_125;//InputwritesignalforPORTA
assignDAC_MODE=1;//ModeSelect.1=dualport,0=interleaved.
assignDAC_CLK_B=CLK_125;//PLLClocktoDAC_B
assignDAC_CLK_A=CLK_125;//PLLClocktoDAC_A
assignADC_CLK_B=CLK_65;//PLLClocktoADC_B
assignADC_CLK_A=CLK_65;//PLLClocktoADC_A
assignADC_OEB_A=0;//ADC_OEA
assignADC_OEB_B=0;//ADC_OEB
/////////////////////////////////////
wire[13:
0]sin10_out;
wire[13:
0]sin_out;
wire[13:
0]comb;
wireg=0;
wirev=1;
pllpll_100(
.inclk0(CLOCK_50),
.pllena(v),
.areset(g),
.c0(CLK_125),
.c1(CLK_65)
);
wire[15:
0]sin_100k;
fm_100k_stfm_100k_st_inst(
.phi_inc_i(3435973),
.clk(CLK_125),
.reset_n(v),
.clken(v),
.fsin_o(sin_100k),
.fcos_o(),
.out_valid());
wire[13:
0]sin_3M;
wire[31:
0]det;
assigndet=$signed(sin_100k)*$signed(SW_1==1?
(SW_0==1?
400:
300):
(SW_0==1?
200:
100));
assignDAC_DB[13:
0]={~sin_3M[13],sin_3M[12:
0]};//调制上
fc_3M_stfc_3M_st_inst(
.phi_inc_i(103079215),
.clk(CLK_125),
.reset_n(v),
.clken(v),
.freq_mod_i(det),
.fsin_o(sin_3M),
.fcos_o(),
.out_valid());
wire[13:
0]sin_3m;
wire[13:
0]cos_3m;//ADC_DA
fmod_3M_stfmod_3M_st_inst(
.phi_inc_i(206158430),
.clk(CLK_65),
.reset_n(v),
.clken(v),
.fsin_o(sin_3m),
.fcos_o(cos_3m),
.out_valid());
wire[13:
0]ADC_DA_tran;//补码
assignADC_DA_tran[13]=~ADC_DA[13];
assignADC_DA_tran[12:
0]=ADC_DA[12:
0];
reg[27:
0]fm_I;
reg[27:
0]fm_Q;
always@(posedgeCLK_65)
begin
fm_I[27:
0]=$signed(cos_3m)*$signed(ADC_DA_tran);
fm_Q[27:
0]=$signed(sin_3m)*$signed(ADC_DA_tran)*$signed(-1);
end
reg[13:
0]fir_I0;
reg[13:
0]fir_Q0;
fir0_astfir0_ast_inst(
.clk(CLK_65),
.reset_n(v),
.ast_sink_data(fm_I[26:
13]),//25溢出
.ast_sink_valid(v),
.ast_source_ready(v),
.ast_sink_error(g),
.ast_source_data(fir_I0),
.ast_sink_ready(),
.ast_source_valid(),
.ast_source_error());
fir0_astfir1_ast_inst(
.clk(CLK_65),
.reset_n(v),
.ast_sink_data(fm_Q[26:
13]),
.ast_sink_valid(v),
.ast_source_ready(v),
.ast_sink_error(g),
.ast_source_data(fir_Q0),
.ast_sink_ready(),
.ast_source_valid(),
.ast_source_error());
reg[13:
0]fir_I1;
reg[13:
0]fir_Q1;
reg[27:
0]sin0;
always@(posedgeCLK_65)
begin
sin0=(($signed(fir_I0)*$signed(fir_Q1))-($signed(fir_I1)*$signed(fir_Q0)));
end
always@(posedgeCLK_65)
begin
fir_I1<=fir_I0;
fir_Q1<=fir_Q0;
end
reg[13:
0]sin000;
fir0_astfir2_ast_inst(
.clk(CLK_65),
.reset_n(v),
.ast_sink_data(sin0[15:
2]),
.ast_sink_valid(v),
.ast_source_ready(v),
.ast_sink_error(g),
.ast_source_data(sin000),
.ast_sink_ready(),
.ast_source_valid(),
.ast_source_error());
assignDAC_DA={~sin000[13],sin000[12:
0]};//xia
endmodule
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 理工 综合 实验 报告 FM 调制 解调 数字 实现
![提示](https://static.bingdoc.com/images/bang_tan.gif)