名稱:基于DDS和PLL組合的波形發(fā)生器Verilog代碼Quartus? DE1-SoC板子
軟件:Quartus
語言:Verilog
代碼功能:基于DDS和PLL組合的波形發(fā)生器:利用DDS和PLL(鎖相環(huán),調(diào)IP核)實現(xiàn)輸出頻率在一定范圍內(nèi)連續(xù)可調(diào)的信號發(fā)生器
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在DE1-SoC板子驗證,DE1-SoC板子如下,其他開發(fā)板可以修改管腳適配:
演示視頻:
設(shè)計文檔:
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
閱讀全文