软件:Quartus
语言:VHDL
代码功能:
移相信号发生器
设计内容:采用FPGA作为控制器,设计一个移相信号发生器,能产生两路正弦信号,正弦信号频率、幅值、相位差可调,具体参数可结合目标场合需求自行拟定。
设计系统硬件电路,计算相关参数;
编写软件程序,完成代码调试。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 原理框图(红色框图)
流程图:
分为2路正弦波产生通道,每个通道对应频率、幅值、相位差可调的正弦波信号发生器。
对于每一路正弦波信号发生器,工作流程如下:
2. 工程文件
3. 程序文件
4. 程序编译
5. RTL图
6. Testbench
7. 仿真图
整体仿真图
ROM表模块
相位累加器模块
部分代码展示:
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; --一个移相信号发生器,能产生两路正弦信号,正弦信号频率、幅值、相位差可调 --正弦波频率等于clk*N/2^13,clk为输入时钟,N为频率控制字frequency;2^13是因为ROM里面存储了8192个点,相位累加器位宽为13位 ENTITY DDS_top IS PORT ( clk_in : IN STD_LOGIC;--时钟 --波形1接口 phase_1 : IN STD_LOGIC_VECTOR(9 DOWNTO 0);--相位控制字,调整相位 frequency_1 : IN STD_LOGIC_VECTOR(9 DOWNTO 0);--频率控制字,控制输出波形频率,值越大,频率越大 amplitude_1 : IN STD_LOGIC_VECTOR(7 DOWNTO 0);--幅值控制字,值越大,幅值越大 wave_1 : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);--输出波形1 --波形2接口 phase_2 : IN STD_LOGIC_VECTOR(9 DOWNTO 0);--相位控制字,调整相位 frequency_2 : IN STD_LOGIC_VECTOR(9 DOWNTO 0);--频率控制字,控制输出波形频率,值越大,频率越大 amplitude_2 : IN STD_LOGIC_VECTOR(7 DOWNTO 0);--幅值控制字,值越大,幅值越大 wave_2 : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)--输出波形2 ); 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); phase : IN STD_LOGIC_VECTOR(9 DOWNTO 0);--相位控制字,调整相位 addra : OUT STD_LOGIC_VECTOR(12 DOWNTO 0) ); END COMPONENT; --ROM表 COMPONENT sin_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;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1080
阅读全文
488