DDS信号发生器波形发生器VHDL

名称:DDS信号发生器波形发生器

软件:Quartus

语言:VHDL

要求:

在EDA平台中使用VHDL语言为工具,设计一个常见信号发生电路,要求:

1. 能够产生锯齿波,方波,三角波,正弦波共四种信号;

2. 信号的频率和幅度可以通过按键调节;

3. 采用模块化设计,包含但不局限于:调频模块,调幅模块,波形的选择与切换模块等;

代码下载:DDS信号发生器波形发生器VHDL_Verilog/VHDL资源下载
代码网:hdlcode.com

部分代码展示

LIBRARY ieee;USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;
--DDS频率等于clk*N/2^13,clk为输入时钟,N为频率控制字frequency;2^13是因为ROM里面存储了8192个点,相位累加器位宽为13位
ENTITY DDS_top ISPORT (clk_in      : IN STD_LOGIC;--时钟
rst_p: IN STD_LOGIC;--复位wave_select  : IN STD_LOGIC_VECTOR(1 DOWNTO 0);--01输出sin,10输出方波,11输出三角波,00锯齿frequency_key    : IN STD_LOGIC;--频率控制按键amplitude_key    : IN STD_LOGIC;--幅值控制按键
wave         : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)--输出波形);
END DDS_top;
ARCHITECTURE behave OF DDS_top IS
--例化模块
--波形选择模块COMPONENT wave_sel ISPORT (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);
douta_juchi  : IN STD_LOGIC_VECTOR(7 DOWNTO 0);wave         : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END COMPONENT;--相位累加器模块COMPONENT Frequency_ctrl ISPORT (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 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;
--ROM表
COMPONENT fangbo_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;
--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;
--ROM表
COMPONENT juchi_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;
--按键频率控制
COMPONENT Frequency_add ISPORT (clk_in    : IN STD_LOGIC;rst_p     : IN STD_LOGIC;frequency_key     : IN STD_LOGIC;frequency  : OUT STD_LOGIC_VECTOR(9 DOWNTO 0)--频率控制字,10位位宽,变化范围可以为1~1000);
END COMPONENT;
--按键幅值控制
COMPONENT amplitude_add ISPORT (clk_in    : IN STD_LOGIC;rst_p     : IN STD_LOGIC;amplitude_key     : IN STD_LOGIC;amplitude  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--幅值);
END COMPONENT;SIGNAL addra         : STD_LOGIC_VECTOR(12 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);
SIGNAL douta_juchi     : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL wave_temp         :  STD_LOGIC_VECTOR(7 DOWNTO 0);--波形SIGNAL frequency    : STD_LOGIC_VECTOR(9 DOWNTO 0);--频率控制字,控制输出波形频率,值越大,频率越大SIGNAL amplitude    : STD_LOGIC_VECTOR(7 DOWNTO 0);--幅值控制字,值越大,幅值越大
BEGIN
--按键频率控制
i_Frequency_add: Frequency_addPORT MAP(clk_in    => clk_in,rst_p     => rst_p,frequency_key  => frequency_key,frequency  => frequency--频率控制字,10位位宽,变化范围可以为1~1000);
--按键幅值控制
i_amplitude_add: amplitude_addPORT MAP(clk_in    => clk_in,rst_p     => rst_p,amplitude_key  => amplitude_key,amplitude  => amplitude--幅值控制字);--方波ROM,存储波形数据i_fangbo_ROM : fangbo_ROMPORT MAP (clock   => clk_in,address  => addra,q  => douta_fangbo);--三角波ROM,存储波形数据i_sanjiao_ROM : sanjiao_ROMPORT MAP (clock   => clk_in,address  => addra,q  => douta_sanjiao);--sin波ROM,存储波形数据i_sin_ROM : sin_ROMPORT MAP (clock   => clk_in,address  => addra,q  => douta_sin);--锯齿波ROM,存储波形数据i_juchi_ROM : juchi_ROMPORT MAP (clock   => clk_in,address  => addra,q  => douta_juchi);--相位累加器i_Frequency_ctrl : Frequency_ctrlPORT MAP (clk_in    => clk_in,frequency  => frequency,--频率控制字addra      => addra--输出地址);--波形选择控制i_wave_sel : wave_selPORT MAP (clk_in        => clk_in,wave_select    => wave_select,--01输出sin,10输出方波,11输出三角波douta_fangbo   => douta_fangbo,--方波douta_sanjiao  => douta_sanjiao,--三角douta_sin      => douta_sin,--正弦
douta_juchi    => douta_juchi,--锯齿wave           => wave_temp--输出波形 );wave<=wave_temp*amplitude;--波形乘以幅值
END behave;

设计文档(文档点击可下载):

设计文档.doc

DDS原理

1. 工程文件

2. 程序文件

ROM IP核

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图

整体仿真图

相位累加器模块

波形选择模块

正弦波ROM模块

三角波ROM模块

方波ROM模块

锯齿波ROM模块

按键控制频率信号模块

按键控制幅值信号模块

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/144171.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【开发篇】十二、缓存框架JetCache

文章目录 0、介绍1、JetCache远程缓存2、JetCache本地缓存3、标准配置文件4、JetCache方法缓存注解--Cached5、Cached4、CacheUpdate5、CacheInvalidate6、CacheRefresh7、缓存统计报告 上篇完成了Spring Cache底层技术的各种切换&#xff0c;但各个技术有各自的优缺点&#xf…

STM32G070RBT6-MCU温度测量(ADC)

1、借助STM32CubeMX生成系统及外设相关初始化代码。 在以上配置后就可以生成相关初始化代码了。 /* ADC1 init function */ void MX_ADC1_Init(void) {/* USER CODE BEGIN ADC1_Init 0 *//* USER CODE END ADC1_Init 0 */ADC_ChannelConfTypeDef sConfig {0};/* USER COD…

【Linux】—— 详解软硬链接

前言&#xff1a; 本期&#xff0c;我将要给大家讲解的是有关 Linux下软硬链接的相关知识&#xff01;&#xff01;&#xff01; 目录 前言 &#xff08;一&#xff09;理解硬链接 1.什么是硬链接 2.创建硬链接 3.硬链接的使用场景 &#xff08;二&#xff09;理解软链接…

区块链(6):p2p去中心化介绍

1 互联网中中心化的服务和去中心化服务的概念介绍 目前的互联网公司大都是中心化的 区块链网络大多是去中心化的 去中心化 2 p2p的简单介绍 java 网络编程:socket编程,netty编程,websoket简单介绍 2.1 节点是如何提供服务的(web编程实现)

目标检测:FROD: Robust Object Detection for Free

论文作者&#xff1a;Muhammad,Awais,Weiming,Zhuang,Lingjuan,Lyu,Sung-Ho,Bae 作者单位&#xff1a;Sony AI; Kyung-Hee University 论文链接&#xff1a;http://arxiv.org/abs/2308.01888v1 内容简介&#xff1a; 1&#xff09;方向&#xff1a;目标检测 2&#xff09;…

jmeterbeanshell调用jsonpath获取对应值

1.jmeter 新建线程组、Java Request、BeanShell Assertion、View Results Tree 2、在BeanShell Assertion中贴入代码&#xff1a; import org.apache.jmeter.extractor.json.jsonpath.JSONManager; import java.util.List; JSONManager js new JSONManager(); String jsonStr…

Easysearch 压缩功能的显著提升:从 8.7GB 到 1.4GB

引言 在海量数据的存储和处理中&#xff0c;索引膨胀率是一个不可忽视的关键指标。它直接影响了存储成本和查询性能。近期&#xff0c;Easysearch 在这方面取得了显著的进展&#xff0c;其压缩功能的效果远超过了之前的版本。本文将详细介绍这一进展。 Easysearch 各版本压缩性…

广告牌安全监测系统,用科技护航大型广告牌安全

城市的街头巷尾&#xff0c;处处可见高耸的广告牌&#xff0c;它们以各种形式和颜色吸引着行人的目光。然而&#xff0c;作为城市景观的一部分&#xff0c;广告牌的安全性常常被我们所忽视。广告牌量大面大&#xff0c;由于设计、材料、施工方法的缺陷&#xff0c;加上后期的检…

No145.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

多线程学习

并发&#xff1a;交替运行 并行&#xff1a;一起运行 多线程实现方式 继承Thread类 ①自己定义一个类继承Thread public class MyThread extends Thread{public void run(){}} ②重写run方法 public class MyThread extends Thread{public void run(){"重写的内容&…

基于Java的学生选课管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

umi4中的配置问题,我想用umirc.ts中alias配置没起作用。是我的用法不对吗?

在文件中直接配置是不生效的 alias: {: /src,components: /src/components,components: /src/components, },解决&#xff1a; 具体查看官方文档&#xff1a;https://umijs.org/docs/api/config#chainwebpack 配置之后&#xff0c;在页面中引用会有ts警告&#xff0c;原因在于…

云部署家里的服务器

1.固定静态ip 查看ip地址&#xff0c;en开头的 ifconfig查看路由器ip&#xff0c;via开头的 ip route修改配置文件 cd /etc/netplan/ #来到这个文件夹 sudo cp 01-network-manager-all.yaml 01-network-manager-all.yaml.bak #先备…

No142.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

基于微信小程序的新闻发布平台小程序设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

SpringMVC 学习(八)整合SSM

10. 整合 SSM (1) 新建数据库 CREATE DATABASE SSM;USE SSM;DROP TABLE IF EXISTS BOOKS;CREATE TABLE BOOKS (BOOK_ID INT(10) NOT NULL AUTO_INCREMENT COMMENT 书ID,BOOK_NAME VARCHAR(100) NOT NULL COMMENT 书名,BOOK_COUNTS INT(11) NOT NULL COMMENT 数量,DETAIL VARCH…

科技云报道:大模型的阴面:无法忽视的安全隐忧

科技云报道原创。 在AI大模型的身上&#xff0c;竟也出现了“to be or not to be”问题。 争议是伴随着大模型的能力惊艳四座而来的&#xff0c;争议的核心问题在于安全。安全有两个方面&#xff0c;一个是大模型带来的对人类伦理的思考&#xff0c;一个是大模型本身带来的隐…

私有继承和虚函数私有化能用么?

源起 以前就知道private私有化声明关键字&#xff0c;和virtual虚函数关键字两者并不冲突&#xff0c;可以同时使用。 但是&#xff0c;它所表示的场景没有那么明晰&#xff0c;也觉得难以理解&#xff0c;直到近段时间遇到一个具体场景。 场景 借助ACE遇到的问题进行展示 …

(SAR)Sentinel-1影像自动下载

基于ASF网站提供的python代码&#xff0c;实现Sentinel-1影像的自动下载&#xff1b; 1、登录ASF网站 登录Sentinel-1影像ASF网站&#xff1a;https://search.asf.alaska.edu/&#xff1b; 点击网站最右侧Sign in图标&#xff0c;进行用户注册&#xff1b; 注册完用户之后&…

怒刷LeetCode的第19天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一&#xff1a;遍历一次数组 方法二&#xff1a;贪心算法 方法三&#xff1a;双指针 第二题 题目来源 题目内容 解决方法 方法一&#xff1a;动态规划 方法二&#xff1a;贪婪算法 方法三&#xff1a;正则表达式 第…