• 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

頻率幅值可調(diào)波形發(fā)生器Verilog代碼Quartus仿真

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

2-240116103010H7.doc

共1個(gè)文件

名稱:頻率幅值可調(diào)波形發(fā)生器Verilog代碼Quartus仿真

軟件:Quartus

語言:Verilog

代碼功能:

頻率幅值可調(diào)波形發(fā)生器

1、輸出方波;三角波;正弦波;階梯波;

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

  • 2-240116103010H7.doc
    下載

相關(guān)推薦