实验二、波形发生器实验de2-70版

上传人:j****9 文档编号:45640402 上传时间:2018-06-18 格式:DOC 页数:20 大小:1.08MB
返回 下载 相关 举报
实验二、波形发生器实验de2-70版_第1页
第1页 / 共20页
实验二、波形发生器实验de2-70版_第2页
第2页 / 共20页
实验二、波形发生器实验de2-70版_第3页
第3页 / 共20页
实验二、波形发生器实验de2-70版_第4页
第4页 / 共20页
实验二、波形发生器实验de2-70版_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《实验二、波形发生器实验de2-70版》由会员分享,可在线阅读,更多相关《实验二、波形发生器实验de2-70版(20页珍藏版)》请在金锄头文库上搜索。

1、实验二、多波形发生器实验实验二、多波形发生器实验DE2-70 版一一.实验内容实验内容:本实验要求设计一个波形发生器,生成正弦波,三角波,经过 ASK 调制的正弦波和 经过 BPSK 调制的正弦波,通过开关可以选择波形,改变输出频率.各开关的控制功 能见下表: 表 1 波形选择控制 输入端口SW1SW2波形 00三角波 01正弦波 10ASK 调制的正弦波wave_selc11BPSK 调制的正弦波表 2 频率选择控制 输入端口SW3SW4频率 01每周期采样 128 点 00每周期采样 64 点 10每周期采样 32 点fre11每周期采样 16 点二二.实验原理实验原理用查找表的方法实验信

2、号发生器.查找表法由相位累加器和存储器构成,如下 图所示.相位累加器的功能是产生正弦波和三角波的相位值.每隔一个时钟周期, 累加器的相位值自动增加一定数值,并将当前的相位值作为查找表的输入值进行 查表.通过改变每次增加的相位值可以控制输出信号的频率.例如,每个时钟周期 累加器的相位值增加 90 度,则四个时钟周期产生一个完整的正弦波.输出信号的 周期为时钟周期的 1/4. 查找表用 RAM 来构造.例如,如果把相位值作为 RAM 的地址,只要在该地址中 存储相应的正余弦幅度值,就可以通过相位值寻址 RAM,输出正弦函数.任意波形发生器原理图三三 实验设计实验设计3.1 程序构架程序构架程序的总

3、体构架如图 3-1 所示,程序的顶层模块为 ask_bpsk.bdf.其中有四个模块 wave_sine, wave_askmod,wave_bpsk 和 wave_tri,分别生成正弦波,ASK 正弦波,BPSK 正弦波和 三角波.通过一个多路选择器选择需要输出的波形,由输入信号 wave_selc 来控制.顶层模块的输入输出接口如下:inputclk; inputrst_n; inputwave_selc; inputfre; outputwave; outputclk_out;程序中的四个模块发生器的结构非常类似,在此以正弦波为例介绍设计思路.3.2 wave_sine 模块模块sin_

4、wave 产生频率可调的正弦波,输入输出接口如下: inputclk; inputclr; inputfre; outputwave_si;本实验要生成的正弦波形图,.在实验原理中已经指出,本实验采用查找表法生成所需的 波形,查询表中存储了正弦波的相位和幅度之间的对应关系,查询表存储在 FPGA 的内部存储 器中,使用 Quartus II 的 Mega Winzard 来制定需要的 ROM.mif 文件的大小为每个周期的正弦波有 128 个采样点,原则上要在 ROM 中存储这 128 个采样点的幅度值, 在生成 ROM 前,先用 Matlab 计算正弦波的幅度值:x = round(sin(

5、linspace(0,pi,49)+1)*5200);for i=1:1:49y=x(i);endy=52005457571459696222647367216965 72057440766978928109831985218714 89009076924393999546968298079920 1002210113101911025710311103521038110396 1040010390103681033310285102261015310069 99739865974696159474932291608989 88088619842182158001778175557323 70

6、866844659863486096584255865329 50714814455843044052380235563314 30772845261923992185197917811592 141112401078926 785 654 535 427 331 247 174 115 67 32 10 0 4 19 48 89 143 209 287 378 480 593 718 854 1001115713241500 16861879208122912508273129603195 34353679392741784431468649435200 在 Quartus II 中新建一个

7、.mif 文件,用于存储正弦函数的幅度值,这些值将初始 到内部存储器中.在 Quartus II 中新建.mif 文件的过程为:依次执行File-New OtherFiles- Memory Initialization File 命令.将上述数据复制到.mif 文件的表格 中,保存上述.mif 文件为 data_sine.mif. 用 Quartus II 中的 Mega Winzard 定制一个单端口的 RAM,具体流程如下: (1) 单击 Tools 菜单栏的 Megawizard Plug-in Wizard 选项,新建一个 “megafunction variation”,如图:(2

8、) 选择 ROM:1-PORT,设置器件类型为 Cyclone II,输出文件类型为 Verilog HDL 输入文件名 “sin_rom”,单击 下一步 按钮.(3) 定义存储深度为 128 个字(word),存储器的深度为 14bit.使用 M4K 存储器,单 击下一步按钮,(4) 将新建的 data_sine.mif 文件导入至 ROM 中(5) 然后单击finish按钮完成 1-PORT ROM 的定制.(6) 新建Verilog 文件,命名为 wave_sine.v 将提供的 wave_sine.v 内的 程序复制进来,并保存。(7) 在文件树中的 wave_sine.v 上右键Cr

9、eat Symbol Files For Current File3.3 wave_tri 模块模块Wave_tri 模块是产生三角波的模块,波形产生的原理和 wave_sine 模块相同,都是用读取 rom 内值的方式完成。 (1)新建mif 文件,这个 mif 文件中我们将存储三角波波形的数据。Mif 文件 word size 为 14,num 为 128(2)在 mif 文件中右键Custom Fill Cells. Starting address:0 Ending address: 31Custom values 选择 Incrementing/decrementing; Start

10、ing value:5200 Increment by 128.点击 OK。 这样配置就是说从地址 0 到地址 31,每个地址中的数据以 128 为等差递增。(3)由于我们要配置成三角波,所以还需要配置递减的数据,再次在 mif 文件上右键 custom fill cells.(4)最后,32 个的地址配置为:保存后我们便生成好了三角波的 trang.mif 文件。(5)ToolsMegaWizard Plug-in Manager 新建 megafuncion variation。相关配置 ROM:1-PORT, CycloneII Verilog文件名 trang(6) Next 后,配置

11、为 14bits 128words Memory block type 选择 M4K,(7) Next,Next 后载入三角波的 mif 文件,注意上面的 mif 文件要保存在工程文件夹 中, “./”表示相对路径。Finish,Finish(8)新建Verilog File,保存为 wave_tri.v,内容在提供的 wave_tri.v 中,保存。并在 目录树中文件上右键Creat Symbol File For Current File。3.4 wave_askmod 模块模块这个模块是显示出经 ask 调制的波形。 “幅移键控”又称为“振幅键控”,记为 ASK。也有称为“开关键控”(通

12、断键控)的,所以 又记作 OOK 信号。ASK 是一种相对简单的调制方式。幅移键控(ASK)相当于模拟信号中 的调幅,只不过与载频信号相乘的是二进制数码而已。幅移就是把频率、相位作为常量, 而把振幅作为变量,信息比特是通过载波的幅度来传递的。二进制振幅键控(2ASK) , 由 于调制信号只有 0 或 1 两个电平,相乘的结果相当于将载频或者关断,或者接通,它的实 际意义是当调制的数字信号为“1”时,传输载波;当调制的数字信号为“0”时,不传输载波。 其中 s(t)为基带矩形脉冲。一般载波信号用余弦信号,而调制信号是把数字序列转换成 单极性的基带矩形脉冲序列,而这个通断键控的作用就是把这个输出与

13、载波相乘,就可以 把频谱搬移到载波频率附近。 新建 verilog 文件 Wave_askmod.v,或者也可以按照实验一中添加文件的方法,把所提 供的 wave_askmod.v 文件添加到工程中。 方法如下: (1)先将提供的 wave_askmod.v 到工程目录中 (2)在文件树如图位置右键add Files.注意!这里把文件复制到工程目录中是为了省去绝对路径的麻烦。使用相对 路径可以使工程整体复制到其他目录或其他机器时仍能正常编译。选中后点击 add这样就可以把已有的文件添加到系统的工程中了。 (3)wave_askmod.v 上右键Creat symbol file for cur

14、rent file.3.5 Wave_bpsk 模块模块BPSK - Binary Phase Shift Keying(二相相移键控)是利用偏离相位的复数波浪组合来表现信息键控移相方式的一种。是把模拟信号转换成数据值的转换方式之一。 BPSK 使用了基准的正弦波和相位反转的波浪,使一方为 0,另一方为 1,从而可以同时传 送接受 2 值(1 比特)的信息。由于最单纯的键控移相方式虽抗噪音较强但传送效率差,所以 常常使用利用 4 个相位的 QPSK 和利用 8 个相位的 8PSK。这里建立模块的步骤和上面的相同,大家参考 3.4 节,添加进 wave_bpsk 模块,并生成相 应的 symbo

15、l 模块3.6 构建顶层文件构建顶层文件(1)新建Design FilesBlock Diagram/Schematic File,保存命名为 ask_bpsk.bdf (2)添加进上述各模块,并添加相应的 input,output 管脚。编译后,在 Assignment Editor 中分配 Pin 管脚(请把下图放大对照)。最终模块结构如图:(3)其中的 lpm_mux0 是多路数据选择器,它的生成办法如下: 1.在 ask_bpsk.bdf 文件的空白处双击,弹出模块添加对话框。找到/libraries 下面的 megafunction/gates/lpm_mux 2.点击 OK 后,会

16、出现相关的配置界面,next3.设置 input 个数为 4,数据宽度为 14bit4.在 finish,finish 就 ok 了。这样我们就定制好了一个所需要的多路数据选 择器;再次在 bdf 文件中双击打开添加文件模块,可以在 Projects 中找到 新生成的 lpm_mux0 模块,如图:(4)设置 ask_bpsk.bdf 为顶层模块,如图(5)综合编译。3.7 观察输出波形观察输出波形(1)新建Signal TapII 文件,保存。(2)在 setup 页中设置时钟,和采样深度:(3)在上图左侧圆圈处,双击,添加欲观测的管脚,这里我们添加如下所示的管脚:(4)保存后,完整编译 (5)下载到板子中,Autorun Analysis 运行可观察到 signaltapII 采集到的波形。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号