名称:移相信号发生器设计VHDL代码Quartus仿真(文末获取)
软件:Quartus
语言:VHDL
代码功能:
移相信号发生器
设计内容:采用FPGA作为控制器,设计一个移相信号发生器,能产生两路正弦信号,正弦信号频率、幅值、相位差可调,具体参数可结合目标场合需求自行拟定。
设计系统硬件电路,计算相关参数;
编写软件程序,完成代码调试
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;
源代码
点击下方的公众号卡片获取