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

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模块

按键控制频率信号模块

按键控制幅值信号模块

相关文章:

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

名称&#xff1a;DDS信号发生器波形发生器 软件&#xff1a;Quartus 语言&#xff1a;VHDL 要求&#xff1a; 在EDA平台中使用VHDL语言为工具&#xff0c;设计一个常见信号发生电路&#xff0c;要求&#xff1a; 1. 能够产生锯齿波&#xff0c;方波&#xff0c;三角波&…...

Python3操作SQLite3创建表主键自增长|CRUD基本操作

Win11查看安装的Python路径及安装的库 Python PEP8 代码规范常见问题及解决方案 Python3操作MySQL8.XX创建表|CRUD基本操作 Python3操作SQLite3创建表主键自增长|CRUD基本操作 anaconda3最新版安装|使用详情|Error: Please select a valid Python interpreter Python函数绘…...

B. Comparison String

题目&#xff1a; 样例&#xff1a; 输入 4 4 <<>> 4 >><< 5 >>>>> 7 <><><><输出 3 3 6 2 思路&#xff1a; 由题意&#xff0c;条件是 又因为要使用尽可能少的数字&#xff0c;这是一道贪心题&#xff0c;所以…...

python端口扫描

扫描所有端口 import socket, threading, os, timedef port_thread(ip, start, step, timeout):for port in range(start, start step):s socket.socket()s.settimeout(timeout)try:s.connect((ip, port))print(f"port[{port}] 可用")except Exception as e:# pri…...

国庆第二天

#include<th.h>#define ERR_MSG(msg) do{\fprintf(stderr,"__%d__",__LINE__);\perror(msg);\ }while(0)#define PORT 6666 #define IP "192.168.2.3"//键盘输入事件 int serverkeyboard(fd_set readfds) {char buf[128] "";int sndfd -…...

Java安全之servlet内存马分析

目录 前言 什么是中间键 了解jsp的本质 理解servlet运行机制 servlet的生命周期 Tomcat总体架构 查看Context 的源码 servlet内存马实现 参考 前言 php和jsp一句话马我想大家都知道&#xff0c;早先就听小伙伴说过一句话木马已经过时了&#xff0c;现在是内存马的天下…...

2023年第二十届中国研究生数学建模竞赛总结与分享

今天是国庆节&#xff0c;祝祖国繁荣富强。正好也学习不下去&#xff0c;就想着写写博客&#xff0c;总结一下自己在参加2023年第20届中国研究生数学建模比赛的一些感受。 目录 1.基本介绍 2.比赛分享 1.基本介绍 1. 竞赛时间&#xff1a;竞赛定于2023年9月22日8:00至2023年9…...

Web前端-Vue2+Vue3基础入门到实战项目-Day1(初始Vue, Vue指令, 小黑记事本)

Web前端-Vue2Vue3基础入门到实战项目-Day1 Vue快速上手创建一个Vue实例插值表达式Vue响应式特性 Vue指令指令初识 和 v-htmlv-show 和 v-ifv-else 和 v-else-ifv-on内联语句methods处理函数调用传参 v-bind案例 - 波仔的学习之旅v-forv-for基本使用案例 - 小黑的书架v-for的key…...

Sentinel学习(2)——sentinel的使用,引入依赖和配置 对消费者进行流控 对生产者进行熔断降级

前言 Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件&#xff0c;主要以流量为切入点&#xff0c;从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 本篇博客介绍sentinel的使用&#x…...

springboot 简单配置mongodb多数据源

准备工作&#xff1a; 本地mongodb一个创建两个数据库 student 和 student-two 所需jar包&#xff1a; # springboot基于的版本 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId>&l…...

西门子S7-1200使用LRCF通信库与安川机器人进行EthernetIP通信的具体方法示例

西门子S7-1200使用LRCF通信库与安川机器人进行EthernetIP通信的具体方法示例 准备条件: PLC:S7-1200 1214C DC/DC/DC 系统版本4.5及以上。 机器人控制柜:安川YRC1000。 软件:TIA V17 PLC做主站,机器人做从站。 具体方法可参考以下内容: 使用的库文件为西门子 1200系列…...

pytorch第一天(tensor数据和csv数据的预处理)lm老师版

tensor数据&#xff1a; import torch import numpyx torch.arange(12) print(x) print(x.shape) print(x.numel())X x.reshape(3, 4) print(X)zeros torch.zeros((2, 3, 4)) print(zeros)ones torch.ones((2,3,4)) print(ones)randon torch.randn(3,4) print(randon)a …...

CSP-J第二轮试题-2021年-1.2题

文章目录 参考&#xff1a;总结 [CSP-J 2021] 分糖果题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 样例 #3样例输入 #3样例输出 #3 提示答案1答案2-优化 [CSP-J 2021] 插入排序题目描述输入格式输出格式样例 #1样例输入 #1样…...

怒刷LeetCode的第16天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一&#xff1a;迭代 方法二&#xff1a;模拟 方法三&#xff1a;循环模拟 方法四&#xff1a;传递 第二题 题目来源 题目内容 解决方法 方法一&#xff1a;回溯 方法二&#xff1a;枚举优化 第三题 题目来源 题目…...

让大脑自由

前言 作者写这本书的目的是什么&#xff1f; 教会我们如何让大脑更好地为自己工作。 1 大脑的运行机制是怎样的&#xff1f; 大脑的基本运行机制是神经元之间通过突触传递信息&#xff0c;神经元的兴奋和抑制状态决定了神经网络的运行和信息处理&#xff0c;神经网络可以通过…...

Arcgis克里金插值报错:ERROR 010079: 无法估算半变异函数。 执行(Kriging)失败。

Arcgis克里金插值报错&#xff1a;ERROR 010079: 无法估算半变异函数。 执行(Kriging)失败。 问题描述&#xff1a; 原因&#xff1a; shape文件的问题&#xff0c;此图可以看出&#xff0c;待插值的点有好几个都超出了地理范围之外&#xff0c;这个不知道是坐标系配准的问…...

Docker Compose安装

title: “Docker Compose安装” createTime: 2022-01-04T19:08:1508:00 updateTime: 2022-01-04T19:08:1508:00 draft: false author: “name” tags: [“docker”,“docker-compose”] categories: [“install”] description: “测试的” docker-compose安装步骤 1.下载 u…...

机器人过程自动化(RPA)入门 7. 处理用户事件和助手机器人

在UiPath中,有两种类型的Robot用于自动化任何流程。一个是后台机器人,它在后台工作。它独立工作,这意味着它不需要用户的输入或任何用户交互。另一个是前台机器人,也被称为助理机器人。 本章介绍前台机器人。在这里,我们将了解自动化过程中通过简单按键、单击鼠标等触发事…...

在linux下预览markdown的方法,转换成html和pdf

背景 markdown是一种便于编写和版本控制的格式&#xff0c;但却不便于预览——特别是包含表格等复杂内容时&#xff0c;单纯的语法高亮是远远不够的——这样就不能边预览边调整内容&#xff0c;需要找到一种预览方法。 思路 linux下有个工具&#xff0c;叫pandoc&#xff0c…...

AIOT入门指南:探索人工智能与物联网的交汇点

AIOT入门指南&#xff1a;探索人工智能与物联网的交汇点 1. 引言 随着技术的快速发展&#xff0c;人工智能&#xff08;AI&#xff09;和物联网&#xff08;IoT&#xff09;已经成为当今最热门的技术领域。当这两个领域交汇时&#xff0c;我们得到了AIOT - 一个结合了AI的智能…...

CCC数字钥匙设计【NFC】 --车主配对流程介绍

1、车主配对流程介绍 车主配对流程可以通过车内NFC进行&#xff0c;若支持UWB测距&#xff0c;也可以通过蓝牙/UWB进行&#xff0c;本文主要介绍通过NFC进行车主配对的流程。 整个配对流程相对较为复杂&#xff0c;本文主要梳理整体的步骤流程&#xff0c;其中的每个细节流程未…...

一站式开源持续测试平台 MerterSphere 之测试跟踪操作详解

一、MeterSphere平台介绍 MeterSphere是一站式的开源持续测试平台&#xff0c;遵循 GPL v3 开源许可协议&#xff0c;涵盖测试跟踪、接口测试、UI 测试和性能测试等功能&#xff0c;全面兼容JMeter、Selenium 等主流开源标准&#xff0c;有效助力开发和测试团队充分利用云弹性进…...

自然语言处理状况简介

一、说明 自然语言处理已经进入大模型时代&#xff0c;然而从业人员必须了解整个知识体系、发展过程、知识结构&#xff0c;应用范围等一系列知识。本篇将报道此类概况。 二、自然语言处理简介 自然语言处理&#xff0c;或简称NLP&#xff0c;是处理和转换文本的计算机科学学科…...

python爬虫基于管道持久化存储操作

文章目录 基于管道持久化存储操作scrapy的使用步骤1.先转到想创建工程的目录下&#xff1a;cd ...2.创建一个工程3.创建之后要转到工程目录下4.在spiders子目录中创建一个爬虫文件5.执行工程setting文件中的参数 基于管道持久化存储的步骤&#xff1a;持久化存储1&#xff1a;保…...

【MySQL】数据类型(二)

文章目录 一. char字符串类型二. varchar字符串类型2.1 char和varchar比较 三. 日期和时间类型四. enum和set类型4.1 set的查询 结束语 一. char字符串类型 char (L) 固定长度字符串 L是可以存储的长度&#xff0c;单位是字符&#xff0c;最大长度是255 MySQL中的字符&#xff…...

基于Matlab实现连续模型求解方法

本文介绍了如何使用Matlab实现连续模型求解方法。首先&#xff0c;我们介绍了连续模型的概念&#xff0c;并明确了使用ODE和PDE求解器来求解常微分方程和偏微分方程的步骤。然后&#xff0c;我们通过一个简单的例子演示了如何将问题转化为数学模型&#xff0c;并使用Matlab编写…...

Tomcat 与 JDK 对应版本关系

对应关系 Tomcat版本 jdk版本11.0.x JDK 21及以后10.1.x JDK11及以后10.0.xJDK1.8及以后9.0.x JDK1.8及以后8.5.xJDK1.7及以后8.0.x JDK1.7及以后 查看对应关系方法&#xff1a; 登陆Tomcat官网&#xff1a;Apache Tomcat - Welcome! 结果&#xff1a;...

iOS自动化测试方案(二):Xcode开发者工具构建WDA应用到iphone

文章目录 一、环境准备1.1、软件环境1.2、硬件环境1.3、查看版本 二、安装WDA过程2.7、构建失败&#xff0c;这类错误有很多&#xff0c;比如在选择开发者账号后&#xff0c;就会提示:Failed to register bundle identifier表示应用唯一注册失败2.9、第二个错误&#xff0c;完全…...

IDEA的Maven换源

前言 IDEA是个好东西&#xff0c;但是使用maven项目时可能会让人很难受&#xff0c;要么是非常慢&#xff0c;要么直接下载不了。所以我们需要给IDEA自带maven换源&#xff0c;保证我们的下载速度。 具体操作 打开IDEA安装路径&#xff0c;然后打开下面的文件夹 plugins\m…...

步进电机只响不转

我出现问题的原因是相位线接错。 我使用的滑台上示17H的步进电机&#xff0c;之前用的是57的步进电机。 57步进电机的相位线是A黑、A-绿、B红、B-蓝。 17步进电机的相位线是A红、A-绿、B黑、B-蓝。 这两天被一个问题困扰了好久&#xff0c;在调试步进电机开发板的时候电机发生…...

百度搜索不到自己的网站/微信上如何投放广告

Cookie 1.什么是Cookie 一小段文本,明文的数据,关于网站相关的文本字符串数据.一个客户端状态保持机制~ 存储在客户端的浏览器内存里面或者磁盘(如果不指定过期时间,那么存储在客户端浏览器内存中,如果指定了过期时间,那么存储在客户端的磁盘上.) cookie跟网站有关的,各个网站只…...

做化工的网站/南京网站制作设计

微信上进行的网页宣传、游戏传播、APP下载各类活动很多&#xff0c;但是各位朋友肯定经常会遇到一些特殊需求&#xff0c;网页需要在手机默认浏览器打开而不是微信内置浏览器。这个问题怎么解决呢? 斗在微信营销的浪潮中 解决方案&#xff1a;微信中打开链接&#xff0c;自动打…...

开发深圳网站建设/专业推广图片

NIS服务器的配置过程 以前在做实验的过程中总结和写的一些教程的一些资料&#xff0c;一直没时间发布到博客上面&#xff0c;五一到了&#xff0c;终于有点时间发布啦&#xff01;关于Linux上面还会有RHCE系列的学习笔记发表 NIS需要的软件包&#xff1a;rpm -ivh ypserv-2.13-…...

如何做网站淘宝客/培训机构招生方案模板

首先&#xff0c;是曾经的讲师LH大佬的模板 主要涉及了常用的文件头以及一些常用语句和函数的缩写 #include<cstdio> #include<iostream> #include<cstdlib> #include<iomanip> #include<cmath> #include<cstring> #include<string>…...

WordPress企业显示/江苏seo和网络推广

"""1.三级菜单 注册 登陆 注销2.进入每一个一级菜单&#xff0c;都会有下一级的菜单"""user_item dict()try:while True:print(-------Welcome sir-------)input_choice int(input(Please enter your choice:1:Registration 2:login 3:logout:…...

做网站的软件dw/免费建网站

PPP-C#conf tPPP-C(config)#vpdn enable //启用路由器的虚拟专用拨号网络---***d 由于ADSL的PPPoE应用是通过虚拟拨号来实现的所以在路由器中需要使用VPDN的功能PPP-C(config)#int e1/0 // 路由器内网接口PPP-C(config-if)#no shutPPP-C(config-if)#i…...