名称:可变参数波形发生器的设计Verilog代码Quartus仿真
软件:Quartus
语言:Verilog
代码功能:
可变参数波形发生器设计
1、功能要求
设计一个波形发生器,至少可以生成4种波形,如正弦波、方波、锯齿波、三角波等。
每种波形及其基本参数如幅度、频率等,可以通过按键进行设置。
参数种类至少2个(如幅度和频率),每个参数的取值至少4个。
每种波形的基本参数如幅度、频率等,可以通过串口进行设置,串口通信协议自定(该功能选做)。
2、总体设计思路
说明系统的总体设计框架、主要组成模块及模块间时序关系。
3、设计步骤
详细给出每个模块的功能、设计方法和测试验证结果(modelsim仿真或SignalTap),并对结果进行分析说明。
4、设计中遇到的主要问题及解决方法
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1、工程文件
2、程序文件
3、程序编译
4、RTL图
5、testbench
6、仿真图
整体仿真图
相位累加器模块
方波模块
三角波模块
正弦波模块
锯齿波模块
波形选择模块
部分代码展示:
module DDS_top(clk_50M, wave_select, frequency, wave_out,amplitude); input clk_50M; input [1:0] wave_select;//波形选择控制按键,01输出sin,10输出方波,11输出三角波,00//锯齿 input [7:0] frequency;//频率控制字,控制输出波形频率,值越大,频率越大 input [3:0] amplitude;//幅值 output [11:0] wave_out;//输出波形 wire [7:0] wave;//波形 wire [9:0] addra; wire [7:0] douta_fangbo; wire [7:0] douta_sanjiao; wire [7:0] douta_sin; wire [7:0] douta_juchi; //方波ROM fangbo_ROM i_fangbo_ROM(.clock(clk_50M), .address(addra), .q(douta_fangbo)); //三角波ROM sanjiao_ROM i_sanjiao_ROM(.clock(clk_50M), .address(addra), .q(douta_sanjiao)); //sin波ROM sin_ROM i_sin_ROM(.clock(clk_50M), .address(addra), .q(douta_sin)); //锯齿波ROM juchi_ROM i_juchi_ROM(.clock(clk_50M), .address(addra), .q(douta_juchi)); //相位累加器 Frequency_ctrl
166