当前位置: 首页 > news >正文

基于FPGA的DDS波形发生器VHDL代码Quartus仿真

名称:基于FPGA的DDS波形发生器VHDL代码Quartus仿真(文末获取)

软件:Quartus

语言:VHDL

代码功能:

DDS波形发生器VHDL

1、可以输出正弦波、方波、三角波

2、可以控制输出波形的频率

DDS波形发生器原理

1. 工程文件

2. 程序文件

ROM IP核

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图

整体仿真图

相位累加器模块

波形选择模块

正弦波ROM

三角波ROM

方波ROM

部分代码展示:

LIBRARY ieee;USE ieee.std_logic_1164.all;
--信号发生器
ENTITY DDS_top ISPORT (clk_50M      : IN STD_LOGIC;wave_select  : IN STD_LOGIC_VECTOR(1 DOWNTO 0);--01输出sin,10输出方波,11输出三角波frequency    : IN STD_LOGIC_VECTOR(7 DOWNTO 0);--频率控制字,控制输出波形频率,值越大,频率越大wave         : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--输出波形);
END DDS_top;
ARCHITECTURE behave OF DDS_top IS
--例化模块COMPONENT wave_sel ISPORT (clk_50M      : 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 ISPORT (clk_50M      : IN STD_LOGIC;frequency    : IN STD_LOGIC_VECTOR(7 DOWNTO 0);addra        : OUT STD_LOGIC_VECTOR(9 DOWNTO 0));END COMPONENT;
COMPONENT sin_ROM IS
PORT
(
address: IN STD_LOGIC_VECTOR (9 DOWNTO 0);
clock: IN STD_LOGIC  := '1';
q: OUT STD_LOGIC_VECTOR (7 DOWNTO 0)
);
END COMPONENT;
COMPONENT fangbo_ROM IS
PORT
(
address: IN STD_LOGIC_VECTOR (9 DOWNTO 0);
clock: IN STD_LOGIC  := '1';
q: OUT STD_LOGIC_VECTOR (7 DOWNTO 0)
);
END COMPONENT;
COMPONENT sanjiao_ROM IS
PORT
(
address: IN STD_LOGIC_VECTOR (9 DOWNTO 0);
clock: IN STD_LOGIC  := '1';
q: OUT STD_LOGIC_VECTOR (7 DOWNTO 0)
);
END COMPONENT;SIGNAL addra         : STD_LOGIC_VECTOR(9 DOWNTO 0);SIGNAL douta_fangbo  : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL douta_sanjiao : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL douta_sin     : STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN--方波ROMi_fangbo_ROM : fangbo_ROMPORT MAP (clock   => clk_50M,address  => addra,q  => douta_fangbo);--三角波ROMi_sanjiao_ROM : sanjiao_ROMPORT MAP (clock   => clk_50M,address  => addra,q  => douta_sanjiao);--sin波ROMi_sin_ROM : sin_ROMPORT MAP (clock   => clk_50M,address  => addra,q  => douta_sin);--相位累加器i_Frequency_ctrl : Frequency_ctrlPORT MAP (clk_50M    => clk_50M,frequency  => frequency,--频率控制字addra      => addra--输出地址);--波形选择控制i_wave_sel : wave_selPORT MAP (clk_50M        => clk_50M,wave_select    => wave_select,--01输出sin,10输出方波,11输出三角波douta_fangbo   => douta_fangbo,--方波douta_sanjiao  => douta_sanjiao,--三角douta_sin      => douta_sin,--正弦wave           => wave--输出波形 );END behave;

源代码

 扫描文章末尾的公众号二维码

http://www.lryc.cn/news/342723.html

相关文章:

  • C++语法|可调用对象与function类型
  • Linux学习之路 -- 文件 -- 文件描述符
  • JDK动态代理和Cglib动态代理区别
  • 牛客 | 字符金字塔
  • 【计算机科学速成课】笔记三——操作系统
  • 用js代码实现贪吃蛇小游戏
  • 微信小程序+esp8266温湿度读取
  • 软考中级-软件设计师(十)网络与信息安全基础知识
  • 推荐一个好用的命令行工具ShellGPT
  • Prompt提示词教程 | 提示工程指南 | 提示词示例 入门篇
  • uniapp + uView动态表单校验
  • 【Linux】HTTPS
  • 语音识别--使用YAMNet识别环境音
  • 前端JS必用工具【js-tool-big-box】,邮箱,手机,身份证号,ip地址等正则验证方法学习
  • notepad++安装 hex-editor插件
  • Ubuntu18.04设置SSH密钥登录
  • 自动化运维管理工具----------Ansible模块详细解读
  • 零基础代码随想录【Day27】|| 39. 组合总和,40.组合总和II, 131.分割回文串
  • 实验15 MVC
  • 《Python编程从入门到实践》day21
  • 上位机图像处理和嵌入式模块部署(树莓派4b镜像烧录经验总结)
  • 简单数据加解密,JS和JAVA同时实现
  • Android Framework中PackageManagerService的深度剖析
  • (AI Web、ChatGPT Native、Ai Loading、AI Tools、知豆AI)
  • VBA 批量处理Excel文件
  • PG实例连接访问控制
  • 2024-05-07 商业分析-如何在社会层面做一个更好的工具人-记录
  • C++设计模式-创建型设计模式
  • code-server容器webpack的ws无法连接解决方法
  • leetcode47-Permutations II