名稱:頻率幅值可調(diào)波形發(fā)生器Verilog代碼Quartus仿真
軟件:Quartus
語言:Verilog
代碼功能:
頻率幅值可調(diào)波形發(fā)生器
2、可以控制波形頻率、幅值;
3、可以選擇輸出哪種波形;
4、編寫testbench,使用modelsim仿真。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
演示視頻:
設(shè)計(jì)文檔:
1.工程文件
2.程序文件
3.程序編譯
4.Testbench
5.Modelsim仿真
整體仿真,不同波形,不同頻率,不同幅值
1.幅度變化仿真,以方波為例,幅值根據(jù)amplitude_data變化而變化
2.波形切換仿真,正弦波變?yōu)?a class="article-link" target="_blank" href="/baike/1464151.html">鋸齒波
3.頻率(周期)改變仿真,頻率(周期)根據(jù)frequency_data變化而變化,下圖frequency_data=20周期為13311ns左右
下圖frequency_data=40周期為26175ns左右,頻率變化了
整體仿真圖
部分代碼展示:
`timescale?1ns?/?1ps ////////////////////////////////////////////////////////////////////////////////// //?Company:? //?Engineer:? //? //?Create?Date:?2015/12/22?14:45:39 //?Design?Name:? //?Module?Name:?wave_generation //?Project?Name:? //?Target?Devices:? //?Tool?Versions:? //?Description:? //? //?Dependencies:? //? //?Revision: //?Revision?0.01?-?File?Created //?Additional?Comments: //? ////////////////////////////////////////////////////////////////////////////////// module?wave_generation( ????input?sys_clk, ????input?sys_rst,//高電平復(fù)位 ???? ????input?[1:0]?wave_select,//00矩形波;01-三角波;10-正弦波;11-鋸齒波 ????input?[7:0]?frequency_data,//頻率控制信號(該控制字越大頻率越低) ?input?[7:0]?amplitude_data,//幅度控制 ????output?reg?[15:0]?wave_data//輸出波形 ????); ????wire?clk; ?wire?[7:0]?triangular_wave; ????wire?[7:0]?sawtooth_wave; ?wire?[7:0]?square_wave; ?wire?[7:0]?sin_wave; //波形產(chǎn)生模塊? carrier_wave?carrier_wave( ????.?clk(clk), ????.?rst(sys_rst), ?.?triangular_wave(triangular_wave),//三角波 ????.?sawtooth_wave(sawtooth_wave),//階梯波 ?.?square_wave(square_wave),//矩形波 ?.?sin_wave(sin_wave)//正弦波 ????); reg?[7:0]?clk_cnt=8'd0; always@(posedge?sys_clk) if(sys_rst) clk_cnt<=8'd0; else if(clk_cnt==frequency_data)//頻率控制frequency_data取值0~255,輸出頻率最大為50M/32Hz=1562500Hz,最低50M/256/32Hz=6103Hz clk_cnt<=8'd0; else clk_cnt<=clk_cnt+8'd1; assign?clk=(clk_cnt==8'd0)?1'b1:1'b0;//通過控制clk來控制輸出頻率 always@(posedge?sys_clk)//00矩形波;01-三角波;10-正弦波;11-鋸齒波 case(wave_select)//amplitude_data幅度控制 2'b00:wave_data<=amplitude_data*square_wave; 2'b01:wave_data<=amplitude_data*triangular_wave; 2'b10:wave_data<=amplitude_data*sin_wave; 2'b11:wave_data<=amplitude_data*sawtooth_wave; default:; endcase endmodule
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=576