名稱:Quartus三角波發(fā)生器VHDL代碼
軟件:Quartus
語言:VHDL
代碼功能:
三角波發(fā)生器:
1、使用VHDL設(shè)計(jì)三角波發(fā)生器,輸出三角波;
2、可以調(diào)整波形的頻率。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
演示視頻:
設(shè)計(jì)文檔:
DDS原理
1. 工程文件
2. 程序文件
ROM IP核
3. 程序編譯
4. RTL圖
5. 仿真圖
部分代碼展示:
LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; USE?ieee.std_logic_unsigned.all; --DDS頻率等于clk*N/2^13,clk為輸入時(shí)鐘,N為頻率控制字frequency;2^13是因?yàn)镽OM里面存儲了8192個(gè)點(diǎn),相位累加器位寬為13位 ENTITY?DDS_top?IS ???PORT?( ??????clk_in??????:?IN?STD_LOGIC;--時(shí)鐘 ??????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?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; --ROM表 COMPONENT?sanjiao_ROM?IS PORT ( address:?IN?STD_LOGIC_VECTOR?(12?DOWNTO?0); clock:?IN?STD_LOGIC??:=?'1'; q:?OUT?STD_LOGIC_VECTOR?(7?DOWNTO?0) ); END?COMPONENT; ??? ???SIGNAL?addra?????????:?STD_LOGIC_VECTOR(12?DOWNTO?0); ???SIGNAL?douta_sanjiao?:?STD_LOGIC_VECTOR(7?DOWNTO?0); BEGIN ??? ???--三角波ROM,存儲波形數(shù)據(jù) ???i_sanjiao_ROM?:?sanjiao_ROM ??????PORT?MAP?( ?????????clock???=>?clk_in, ?????????address??=>?addra, ?????????q??=>?douta_sanjiao ??????); ??? ???--相位累加器 ???i_Frequency_ctrl?:?Frequency_ctrl ??????PORT?MAP?( ?????????clk_in????=>?clk_in, ?????????frequency??=>?frequency,--頻率控制字 ?????????addra??????=>?addra--輸出地址 ??????); ??? wave<=douta_sanjiao;--波形輸出 END?behave
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=405
閱讀全文