名称:正弦波方波三角波信号发生器设计VHDL代码Quartus仿真
软件:Quartus
语言:VHDL
代码功能:
正弦波方波三角波信号发生器
1、可以通过开关控制输出正弦波、方波、三角波
2、输出波形的频率可以控制
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
DDS原理
1. 工程文件
2. 程序文件
ROM IP核
3. 程序编译
4. RTL图
5. Testbench
6. 仿真图
整体仿真图
相位累加器模块
波形选择模块
正弦波ROM
三角波ROM
方波ROM
部分代码展示:
LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; --DDS频率等于clk*N/2^13,clk为输入时钟81.92KHz,N为频率控制字frequency;2^13是因为ROM里面存储了8192个点,相位累加器位宽为13位 --要求频率范围10~10KHz,步进10Hz,需要1000个步进,故频率控制字位宽为10位 ENTITY?DDS_top?IS ???PORT?( ??????clk_in??????:?IN?STD_LOGIC;--81.92KHz ??????wave_select??:?IN?STD_LOGIC_VECTOR(1?DOWNTO?0);--01输出sin,10输出方波,11输出三角波 ??????frequency????:?IN?STD_LOGIC_VECTOR(9?DOWNTO?0);--频率控制字,控制输出波形频率,值越大,频率越大 ??????wave?????????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--输出波形 ???); END?DDS_top; ARCHITECTURE?behave?OF?DDS_top?IS --例化模块 --波形选择模块 ???COMPONENT?wave_sel?IS ??????PORT?( ?????????clk_in??????:?IN?STD_LOGIC; ?????????wave_select??:?IN?STD_LOGIC_VECTOR(1?DOWNTO?0); ?????????douta_fangbo?:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0); ?????????douta_sanjiao?:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0); ?????????douta_sin????:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0); ?????????wave?????????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0) ??????); ???END?COMPONENT; ??? --相位累加器模块 ???COMPONENT?Frequency_ctrl?IS ??????PORT?( ?????????clk_in??????:?IN?STD_LOGIC; ?????????frequency????:?IN?STD_LOGIC_VECTOR(9?DOWNTO?0); ?????????addra????????:?OUT?STD_LOGIC_VECTOR(12?DOWNTO?0) ??????); ???END?COMPONENT;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1079
阅读全文