名称:移相信号发生器设计Verilog代码Quartus仿真
软件:Quartus
语言:Verilog
代码功能:
设计要求:根据DDS的原理,用verilog语言代码(或混合式)设计一个10位(即所用的ROM字长10位)的移相信号发生器,输出一路为基准正弦信号,另一路为移相后的正号信号,输出频率可调,给出伤真波形,下载并SignalTapll逻辑分析仪显示俩路波形。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. 管脚分配
6. Signaltap设置
7. Testbench
8. 仿真图
部分代码展示:
`timescale?1ns?/?1ps //DDS module?DDS_top( ????input?clk_50M,//时钟频率50MHz ?input?[7:0]SW,//频率控制开关 ????output?[9:0]?sin_wave_1,//输出标准sin波形 ????output?[9:0]?sin_wave_2//移相后的可调频率正弦波 ????); ? //波形?ROM?地址位数?n=10 wire?[9:0]?addra_1; wire?[9:0]?addra_2; //标准正弦波 Frequency_ctrl_1?i1_Frequency_ctrl( .?clk_50M(clk_50M), .?frequency(8'd1),//频率控制字=1 .?addra(addra_1)//输出地址 ????); ? //相位累加器 Frequency_ctrl_2?i2_Frequency_ctrl( .?clk_50M(clk_50M), .?frequency(SW),//频率控制字,值越大,输出频率越大 .?addra(addra_2)//输出地址 ????); //sin波ROM sin_ROM?i1_sin_ROM?( ??.clock(clk_50M),????//?input?wire?clka ??.address(addra_1),??//?input?wire?[9?:?0]?addra ??.q(sin_wave_1)??//?output?wire?[9?:?0]?douta ); //sin波ROM sin_ROM?i2_sin_ROM?( ??.clock(clk_50M),????//?input?wire?clka ??.address(addra_2),??//?input?wire?[9?:?0]?addra ??.q(sin_wave_2)??//?output?wire?[9?:?0]?douta ); ? ? ? endmodule
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1082
阅读全文