版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、 设计选题及技术要求设计选题 FM信号调制器的设计与实现基础指标:实现FM信号产生,可配置载波和调制信号频率、调频频偏。(1)载波频率范围:100kHz-20MHz,精度优于5%。(2)音频(调制信号)频率范围:10Hz-10kHz,精度优于5%。(3) 调频频偏:10kHz-100kHz,步进1kHz,精度优于5%。(4) 将FM调制器封装成IP核,测试其功能。增加指标:(1) 实现多种波形的调制信号(2) 可设置输入外部载波信号二、 方案设计及原理分析(一)原理分析由题目要求可知,需要输入的基本控制字有载波频率控制字和调制信号频率控制字、调频频偏控制字。时域表达式:SFM(t)=cos
2、ct+KFM0lxd =coscnTa+mTs+KFM0nTa+mTsxd =cos22NKnl+m+KFMp=0nl+m-1xpTsTs =cosp=0nl+m-122N(K+2N2KFMTsx(pTs) 则SFMt=cosp=0nl+m-122N(K+K0x(pTs),其中:K是频率控制字,K0=2NKFMTs/2, KFM是调制指数。从波形产生的角度,可以把公式分成两部分来设计,第一部分是调制信号产生部分,第二部分是FM信号产生部分。而信号的产生可以运用DDS原理实现,直接数字式频率合成DDS技术的基本原理是将波形数据先存储起来,然后在频率控制字的作用下,通过相位累加器从存储器中读出波形
3、数据,最后经过数模转换和低通滤波后输出频率合成。调制信号频率控制字控制调制信号的频率,由DDS产生的调制信号和调频频偏控制字相乘后再与载波频率控制字相加,得到的就是FM频率控制字,这个控制字通过DDS控制FM信号的产生。(二)总体方案设计硬件部分:图1 硬件原理框图1、外部控制部分:通过实验硬件平台具有的外部控制(按键、开关等)实现对FM模块的控制字输入2、基于FPGA的FM信号发生部分:通过FPGA实现FM信号输出,同时输出调制信号作为参考3、数模转换器:将已经合成的波形数字量转化成模拟量。4、低通滤波器:滤除高频成分,恢复所要合成的波形。由于实验平台缺少数模转换器和低通滤波器,故本报告没有
4、介绍这两个部分。软件部分:图2 软件原理框图方案论证:系统设计方案:方案一:各模块代码自己编写,优点是代码灵活,可根据需要增加功能。缺点是设计中无法充分考虑时序因素。方案二:各模块通过调用IP核实现,优点是实现方便,IP核已通验证,性能优越。缺点是灵活性低,不能随意修改内部代码。时钟方案:方案一:所有模块共用同一时钟源,设计方便,不必考虑时钟选择问题。硬件调试时,时钟域单一,可以减少时钟域选择造成的错误。但时钟频率低,可能导致DDS输出波形失真。方案二:DDS高频部分时钟源为系统时钟倍频得到,其他部分共用系统时钟。优点是所有模块理论上可达到题目指标要求。缺点是倍频过高可能导致系统最终不满足时序
5、约束。方案分析:需要输入的基本控制字有载波频率控制字和调制信号频率控制字、调频频偏控制字。在此基础上,该设计又增加了调制信号波形控制部分,总体软件原理框图如图2所示,模块较多,但各部分功能较简单,故不必考虑代码灵活与否,而需要考虑整体性能,则系统设计选择方案二,而部分无IP核可实现的模块通过代码编写。调制信号频率控制字控制DDS IP核,在100MHz时钟源的条件下,DDS核通过查找余弦ROM表生成调制信号,由于增加了三角波、方波和外部信号等波形,故将DDS IP核产生的相位信号作为外部ROM表的输入,ROM表的输出则通过一个波形选择器来控制,波形选择器通过波形控制字决定哪种信号输出,将输出的
6、调制信号与调频频偏控制字相乘,得到的数据再与载波频率控制字相加,结果可作为另一个DDS IP和的输入,DDS IP核的输出即为生成的FM信号。需要注意的是,系统时钟100MHz,而载波最高为20MHz,则当载波为最高时,DDS IP核输出的波形有一定程度的失真,所以产生FM信号的DDS IP核所用的时钟源应该经过系统时钟倍频,时钟方案选择方案二,考虑到系统稍复杂,如果倍频太高,可能导致所设计硬件不能满足时序约束,综合以上情况考虑,将系统时钟倍频到200MHz,作为产生FM信号的DDS核的时钟源。三、 程序分析及设计图3 总体流程图(一) 倍频模块图4 Clocking Wizard配置结果将1
7、00MHz时钟倍频到200MHz,通过调用Clocking Wizard IP核实现(见图4)。wire clk_200M;/定义输出已倍频时钟信号 clk_wiz_0 instance_name(.clk_in1(clk), / 系统时钟接入.clk_out1(clk_200M), / 输出已倍频时钟.reset(cpu_resetn), / 复位信号取反后与其连接.locked() / locked输出不接信号); (二) 内部调制信号模块通过DDS Compiler IP核实现,设置相位可编程,Phase Width设置28位,100MHz228=0.3725Hz,满足10Hz时5%的精
8、度,输出数据设置16位(见图5)。 图5 DDS Compiler配置结果wire 31:0mod_data_reg;wire 31:0mod_ph_data;dds_mod dds_mod_inst ( .aclk(clk), / 接入时钟信号 .s_axis_config_tvalid(1'b1), / 接高电平有效 .s_axis_config_tdata(4'b0,mod_wave), .m_axis_data_tvalid(), / 输出数据有效信号不接 .m_axis_data_tdata(mod_data_reg), / 输出32位数据,为调制信号,取低16位为实
9、际数据位 .m_axis_phase_tvalid(), / 输出相位有效信号不接 .m_axis_phase_tdata(mod_ph_data) / 输出相位,用来后续连接其他ROM,控制波形);(三) 其他波形三角波部分:通过 Block Memory Generator IP核实现,地址设置8位,输出设置16位,与DDS IP核的输出位数相对应(见图6)。图6 三角波Block Memory Generator 配置界面wire 15:0dout_tri;/定义rom输出信号blk_mem_gen_0 rom_tria ( .clka(clk), / 接时钟信号 .addra(mod_
10、ph_data27:20), / 接8位地址信号 .douta(dout_tri) /ROM输出三角波原码);wire15:0dout_tri_result=dout_tri151'b1,dout_tri14:0;/进行码型变换,转换为有符号型三角波方波部分:通过 Block Memory Generator IP核实现,地址设置8位,输出设置16位,与DDS IP核的输出位数相对应(见图7)。图7 方波Block Memory Generator 配置界面wire 15:0dout_squ;/定义rom输出信号brom_squ rom_squa ( .clka(clk), / 接时钟
11、信号 .addra(mod_ph_data27:20), / 接8位地址信号 .douta(dout_squ) /ROM输出方波);(四) 波形选择器组合逻辑实现,通过波形选择控制字控制调制信号波形。reg 15:0mod_data1;/定义寄存器型调制信号always(*)case(mod_wave_con)/当波形控制字为正弦波时输出正弦波sin_wave:mod_data1=mod_data_reg15:0; /当波形控制字为三角波时输出三角波tri_wave:mod_data1=dout_tri_result; /当波形控制字为方波时输出方波square_wave:mod_data1=
12、dout_squ_result; /当波形控制字为外部信号时输出外部信号external_wave:mod_data1=external_mod; /波形控制字不为以上情况时输出正弦信号default:mod_data1=mod_data_reg15:0; endcasewire 15:0mod_data= mod_data1;/定义最终调制信号assign modwave_out=mod_data;/作为输出端将调制信号输出(五) 乘法器通过Multiplier IP核实现,A端输入16位无符号频偏控制字,B端输入16位有符号调制信号,输出设置32位输出(见图8,图9)。图8 乘法器输入配置
13、 图9 乘法器输出配置wire 31:0f_offset_data;/定义乘法器输出信号mult_gen_0 mult_a ( .CLK(clk), / 接入时钟信号 .A(f_offset), / 输入16位无符号频偏控制字 .B(mod_data), /输入16位有符号调制信号 .P(f_offset_data) /输出32位有符号频偏结果);(六) 加法器通过 Adder/Subtracter IP 核实现,将24位的无符号载波信号控制字与乘法器输出的32位信号的前16位相加,输出为输出24位FM信号控制字(见图10)。图10 Adder/Subtracter配置界面c_addsub_0
14、 add_a ( .A(car_wave), /输如24位无符号载波频率控制字 .B(f_offset_data31:17), / 输入15位有符号频偏结果 .CLK(clk), / 接入时钟信号 .CE(1'b1), /使能信号始终接高电平 .S(FM_w_result) / 输出24位FM信号控制字);(七) DDS的FM信号生成模块通过DDS Compiler IP核实现,设置相位可编程,Phase Width设置24位,200MHz224=11.92Hz,满足100kHz时5%的精度,输出数据设置16位,输出信号为FM信号(见图11)。图11 DDS Compiler配置结果
15、dds_car dds_car_inst ( .aclk(clk_200M), / 接入200M时钟 .s_axis_config_tvalid(1'b1), / 输入有效信号接高电平 .s_axis_config_tdata(FM_w_result), /接入24位FM信号控制字 .m_axis_data_tvalid(), / 输出数据有效信号不接 .m_axis_data_tdata(FM_wave_reg), / 输出32位有符号FM信号 .m_axis_phase_tvalid(), / 输出相位有效信号不接 .m_axis_phase_tdata() /输出相位信号不接);
16、(八) 顶层模块程序设计由于本实验设计是通过调用若干IP核来实现,所以以上子模块顺序连接生成FM_0 IP核(见图12)。图12 IP核打包管脚界面(九) 测试程序设计module FM_tb();parameter car_width = 5'd23,/载波控制字位宽mod_width = 5'd27,/调制信号控制字位宽f_offset_width =5'd15,/2频偏控制字位宽FM_width = 5'd15;/FM输出信号位宽/-reg clk;/时钟信号reg cpu_resetn;/复位信号reg car_width:0car_wave;/载波控制
17、字reg mod_width:0mod_wave;/调制信号控制字reg f_offset_width:0f_offset; /频偏控制字reg 2:0mod_wave_con;/调制信号波形控制字reg 15:0external_mod;/外部信号wire 15:0modwave_out;/调制信号输出wire FM_width:0FM_wave;/FM信号输出/实例化FM模块FM FM_tb(clk,cpu_resetn,car_wave,mod_wave,f_offset,mod_wave_con,external_mod,modwave_out,FM_wave );initial be
18、gin#0 clk=0;#0 cpu_resetn=0;#0 car_wave=83886;/公式fo=fc*M/2N,fo=200MHz*car_wave/224, 83886*200MHz/224=1MHz#0 mod_wave=2684;/公式fo=fc*M/2N,得fo=100MHz*mod_wave/228,2684*100MHz/228=1kHz#0 f_offset=100000/3;/50000/3;/12Hz-16'h0004;设计频偏分辨率/为200MHz/224=12Hz,当控制字为16h0004时最小,所以当频偏100kHz 时,对应f_offset=10000
19、0/3#0 external_mod=16'h0000;/外部信号起始为0#0 mod_wave_con=3'b000;/调制信号波形控制起始为正弦#100 cpu_resetn=1'b1;/复位信号拉高#1100000 mod_wave_con=3'b100;/调制信号波形控制变为为外部信号#1100000 mod_wave_con=3'b001;/end /波形存储寄存器reg 15:0mem_tri0:255;reg 15:0mem_sin0:255;reg 15:0mem_squ0:255;reg 15:0external_mod_reg;reg
20、 8:0i;initialbegin $readmemh("F:/workplace/FPGA/Vivado/FM/FM/project_1/project_1.srcs/sim_1/new/tri_test.dat",mem_tri);/调用系统函数产生外部三角波信号$readmemh("F:/workplace/FPGA/Vivado/FM/FM/project_1/project_1.srcs/sim_1/new/sin_test.dat",mem_sin); /调用系统函数产生外部正弦波信号$readmemh("F:/workplace
21、/FPGA/Vivado/FM/FM/project_1/project_1.srcs/sim_1/new/squ_test.dat",mem_squ); /调用系统函数产生外部方波信号endinitialbegin#4000000mod_wave_con=3'b100;/波形控制字为外部信号/-将外部信号文件的数据导入for(i=1'b0;i<=8'd255;i=i+1'b1)begin#(1000000000/10000/255) external_mod_reg=mem_trii;/三角波数据external_mod=external_mo
22、d_reg151'b1,external_mod_reg14:0;endfor(i=1'b0;i<=8'd255;i=i+1'b1)begin#(1000000000/10000/255) external_mod_reg=mem_sini;/正弦波数据external_mod=external_mod_reg151'b1,external_mod_reg14:0;endfor(i=1'b0;i<=8'd255;i=i+1'b1)begin#(1000000000/10000/255) external_mod_reg
23、=mem_squi;/方波数据external_mod=external_mod_reg;endend/-always #5 clk=clk;/仿真每5ns翻转一次时钟,相当于100MHzendmodule(十) RTL级:图 13 生成RTL级视图四、系统测试及分析(一) 测试方案及数据测试方案:为方便测试,选取载波为1MHz,频偏为100KHz,调制信号为1kHz作为测试点,首先通过行为级仿真测试,观察设计的逻辑是否满足要求,测试文件为上面编写的testbench。行为级仿真正确后,再进行硬件测试,外部控制输入为三个拨码开关,可以控制调制信号的波形,还可以选择外部调制信号输入,为了方便测试,程序中直接将外部信号接地,所以当拨码开关拨到外部模式时,输出的信号为载波信号,可以通过测量该信号的频率来确定载波是否满足要求。然后通过拨码开关设置调制信号为内部正弦信号,先测量调制信号是否为1kHz,调制信号测试正确后,继续测量FM信号的最高频率和最低频率,最高频率对应位置为正弦调制信号的波峰,最低频率对应位置为正弦调制信号的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 团队管理企业培训
- 二零二五年度企业兼职市场营销人员合同2篇
- 在线健康信息替代搜寻对老年人健康素养的影响研究-基于社会认知理论
- 医生年终工作总结
- 2025年度绿色建筑合作框架协议范本3篇
- 基于前景理论的大规模传染疫情应急管理决策研究
- 二零二五年POS机租赁与移动支付安全监控合同3篇
- 临床胃肠镜术前术后护理要点
- Unit 4 Lesson 1My family photo(说课稿)-2024-2025学年冀教版(2024)初中英语七年级上册
- 全国冀教版信息技术三年级上册新授课 二 画大熊猫 说课稿
- DB44∕T 2149-2018 森林资源规划设计调查技术规程
- 肝移植的历史、现状与展望
- 商业定价表(含各商铺价格测算销售回款)
- 【化学】重庆市2021-2022学年高一上学期期末联合检测试题
- 供应商物料质量问题赔偿协议(终端)
- 单位工程质量控制程序流程图
- 部编版小学语文三年级(下册)学期课程纲要
- 化学工业有毒有害作业工种范围表
- 洼田饮水试验
- 定置定位管理一
- 商票保贴协议
评论
0/150
提交评论