名称:基于DDS和PLL组合的波形发生器Verilog代码Quartus? DE1-SoC板子
软件:Quartus
语言:Verilog
代码功能:基于DDS和PLL组合的波形发生器:利用DDS和PLL(锁相环,调IP核)实现输出频率在一定范围内连续可调的信号发生器
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在DE1-SoC板子验证,DE1-SoC板子如下,其他开发板可以修改管脚适配:
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. 管脚分配
6. Testbench
7. 仿真图
整体仿真图
PLL模块
频率控制模块
相位累加器模块
部分代码展示:
module?DDS( input?clk,//时钟50M input?rst_n,//复位 input?key0,//频率增加 input?key1,//频率减小 output?dac_clk,//DA时钟 output?[7:0]?sin_wave//输出波形 ); wire?clk_10M; wire?[9:0]??address; wire?[9:0]?q;//输出波形 assign?dac_clk=clk_10M; wire?[9:0]?freq_data;//频率控制字10bit //PLL_ip?50M->10M pll_ippll_ip_inst?( .inclk0?(?clk?),//输入50M .c0?(?clk_10M?)//输出10M ); //频率控制模块 Freq_ctrl?i_Freq_ctrl( .?clk(clk_10M), .?rst_n(rst_n),//复位 .?key0(key0),//频率增加 .?key1(key1),//频率减小 .?freq_data(freq_data)//频率控制字9bit ); //sin存储Rom表 sin_ROM?i_sin_ROM?( .address(address),//查找表地址 .clock(clk_10M),//时钟 .q(q)//输出波形 ); //相位累加器 Freq_sum?i_Freq_sum( .?clk(clk_10M), .?rst_n(rst_n), .?freq_data(freq_data),//频率控制字32bit .?freq_out(address)//累加器输出 ); assign?sin_wave=q[9:2];//输出最终波形 endmodule
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=488
阅读全文
685