信号发⽣器的设计与实现 1.输出波形:⽅波(占空⽐50%)、锯⻮波、三⻆波、脉冲信号(占空⽐连续可调)、正弦波、任意波等 2.输出频率:100KHz 3.波形选择:使⽤拨码开关选择 思路: 使用FPGA搭建信号发生器DDS,重点是制作能够提前下载进开发板板载ROM的数据文件,这里用到的是mif文件,里面保存了数种波形(正弦波,方波,三角波,锯齿波)的点值,这些点值是由前期采样得来的,然后编写verilog代码,实现功能选择(波形选择等),在quartus中配置所选器件的ROM,将mif文件加载进去,在代码中调用rom中的数据,然后仿真时绘制显示波形,这时显示的是离散的数字信号,可以在仿真端modsim里选择模拟信号显示 查阅相关资料: (本次实验中,没有用到LPF低通滤波,但大体不影响) mif文件的创建: 这里用的是matlab编程,生成正弦波,方波,三角波,锯齿波,然后利用Fs采样频率对其采样,提取其离散值保存到创建的mif文件中 同时使用plot函数输出波形,检查 波形图示: 检查生成的mif文件:(以文本方式打开 共有16384 quartus端的文件: 其中 dds.v是主模块,在编译前要设置为顶层文件set as the top-level-entity,里面包含了调用的模块及其对应端口赋值(连线) key_ctrl.v和dds_ctrl.v dds_ctrl.v中包含了对ROM的初始化,这里调用了rom_wave(一会在rom中添加文件的名称要与rom_wave一致 key_ctrl.v实现对波形的选择 在ROM中添加已经创建好的mif文件: 在IP catalog中搜索rom,选择rom port1,注意这里的ip variation file name要与程序中的一致 注意 q的输出位宽和数据数要与创建的mif文件内容一致 在创建成功后可以发现quartus的file左栏出现生成的romwave.v: 仿真: 这次没有单独在modsim中添加文件仿真,因为经常报错,因此采用quartus唤起modsim仿真的方法 1.要在quartus中设置modsim的启动程序的路径,不然无法拉起仿真 2.要在settings中添加仿真文件testbench,告诉modsim拿什么仿真 启动仿真: tb_dds_ctrl.v文件 延迟800000000个时间单位后,进行wave切换 波形设置为模拟: 结果:
标签:仿真,文件,FPGA,波形,DDS,mif,Verilog,modsim,rom From: https://www.cnblogs.com/huaiyuandefeng/p/16921147.html