用VHDL设计正弦信号发生器

正弦信号发生器的结构由3部分组成:

1、计数器或地址信号发生器,要根据ROM大小来确定地址发生器宽度。(其实验选择6位地址信号发生器给ROM)

2、正弦信号数据存储ROM(地址宽度6位,数据宽度8位),包含64个字的完整正弦波数据(1个完整周期)

3、8位D/A模块(采用TLC5602超高频数模转换器),实现数模转换,输出模拟正弦波信号。

结构图

在正弦信号发生器结构图中,地址信号发生器的时钟信号有clk提供,假设其频率为f0,正弦波数据ROM中存放每周期64个字节的波形数据,则8位

D/A转换后的正弦信号频率为:f=f0/64.

TLC5602X电路图:

并行DAC电路原理图

1、产生6位计数器(地址发生器)

(1)、生成mif文件

(2)、6位地址,64个字,8位宽。

(3)、生成包含完整周期的正弦波数据

2、创建正弦波数据存储ROM

(1)、选择路径

(2)、创建

(3)、选择产生的rom

(4)、添加文件

(5)、更改时钟,选择周期

(6)、去掉多余输出

(7)、添加,fim文件

(8)、选中

产生文件程序:

LIBRARY ieee;
USE ieee.std_logic_1164.all;

LIBRARY altera_mf;
USE altera_mf.all;

ENTITY date_rom IS
PORT
(
address : IN STD_LOGIC_VECTOR (5 DOWNTO 0);
inclock : IN STD_LOGIC := ‘1‘;
q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0)
);
END date_rom;

ARCHITECTURE SYN OF date_rom IS

SIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0);

COMPONENT altsyncram
GENERIC (
address_aclr_a : STRING;
clock_enable_input_a : STRING;
clock_enable_output_a : STRING;
init_file : STRING;
intended_device_family : STRING;
lpm_hint : STRING;
lpm_type : STRING;
numwords_a : NATURAL;
operation_mode : STRING;
outdata_aclr_a : STRING;
outdata_reg_a : STRING;
widthad_a : NATURAL;
width_a : NATURAL;
width_byteena_a : NATURAL
);
PORT (
address_a : IN STD_LOGIC_VECTOR (5 DOWNTO 0);
clock0 : IN STD_LOGIC ;
q_a : OUT STD_LOGIC_VECTOR (7 DOWNTO 0)
);
END COMPONENT;

BEGIN
q <= sub_wire0(7 DOWNTO 0);

altsyncram_component : altsyncram
GENERIC MAP (
address_aclr_a => "NONE",
clock_enable_input_a => "BYPASS",
clock_enable_output_a => "BYPASS",
init_file => "date.mif",
intended_device_family => "Cyclone IV E",
lpm_hint => "ENABLE_RUNTIME_MOD=YES,INSTANCE_NAME=ROM1",
lpm_type => "altsyncram",
numwords_a => 64,
operation_mode => "ROM",
outdata_aclr_a => "NONE",
outdata_reg_a => "UNREGISTERED",
widthad_a => 6,
width_a => 8,
width_byteena_a => 1
)
PORT MAP (
address_a => address,
clock0 => inclock,
q_a => sub_wire0
);

END SYN;

3、正弦信号发生器顶层设计

程序:

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity signt is
port(
clk_in:in std_logic;
dout:out std_logic_vector(7 downto 0);
clk_out:out std_logic
);
end;
architecture bhv of signt is
component date_rom
port(
address : IN STD_LOGIC_VECTOR (5 DOWNTO 0);
inclock : IN STD_LOGIC := ‘1‘;
q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0)
);
end component;
signal q1:std_LOGIC_VECTOR(5 downto 0);
begin
process(clk_in)
begin
if clk_in‘event and clk_in=‘1‘ then
q1<=q1+1;
end if;
end process;
u1:date_rom port map(address=>q1,q=>dout,inclock=>clk_in);
clk_out<=not clk_in;
end;

仿真图:

rtl原图:

原文地址:https://www.cnblogs.com/lhkhhk/p/11972432.html

时间: 2024-11-07 12:10:10

用VHDL设计正弦信号发生器的相关文章

用VHDL设计信号发生器

信号发生器要求: 信号发生器程序: library ieee;use ieee.std_logic_1164.all;entity signal_gen1 isport(clk:in bit;wave:out bit);end signal_gen1;architecture bhv of signal_gen1 isbeginprocessvariable count: integer range 0 to 7;beginwait until clk'event and clk='1';cas

VHDL设计----十进制计数器

一.异步复位加法计数器 代码: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity CNT10 is port( CLK,RST,EN: in std_logic; DOUT : out std_logic_vector (3 downto 0); COUT : OUT std_logic ); end CNT10; architecture behav of CNT10 is be

VHDL设计时参数定义的方法 例子

-- SPtb LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; use std.textio.all; use ieee.std_logic_textio.all;   -- Uncomment the following library declaration if using -- arithmetic functions wit

采用DDS(数字频率合成法)设计信号发生器

§2.1设计指导思想 用大规模CPLD设计多功能信号发生器,要求能够输出方波.锯齿波.三角波.正弦波. 具体是用VHDL硬件描述语言编写多功能信号发生器程序,经过编译.仿真,再下载到CPLD器件上,再经数模转换器输出各类波形. 1.CPLD(COMPLEX Programmable Logic Device,复杂可编程逻辑器件)属于最具有代表性的IC芯片之一.CPLD基本上是由多个SPLD(SIMPLE PLD)在单片上的集成,集成度高,可以实现比较复杂的电路或系统.CPLD的优点是其结构的规则

VHDL学习之TEXTIO在仿真中的应用

TEXTIO 在VHDL 仿真与磁盘文件之间架起了桥梁,使用文本文件扩展VHDL 的仿真功能.本文介绍TEXTIO 程序包,以一个加法器实例说明TEXTIO 的使用方法,最后使用ModelSim 对设计进行仿真,并分析仿真结果.在对VHDL 源程序进行仿真时, 由于有的输入输出关系仅仅靠输入波形或编写testbench 中的信号输入是难以验证结果正确性的,例如, 设计8 位加法器,如果将所有的输入都验证一遍, 是非常麻烦的,因为要全面判断输出是否正确需要一个个的验证.此外,若用VHDL 设计一个

VHDL介绍

VHDL是一种硬件描述语言,它可以对电子电路和系统的行为进行描述. 制定了ieee.1164库. 使用VHDL语言描述的电路,可以进行综合和仿真. VHDL代码3个基本组成部分:库(library)声明.实体(entity)和构造体(architecture). 库(library)声明:列出了当前设计中需要用到的所有文件,如ieee,std,work等. 实体(entity):定义了电路的输入和输出引脚. 构造体(architecture):所包含的代码描述了电路要实验的功能. 1.库声明 库

2003-2011电赛题目

2011年题目清单 .开关电源模块并联供电系统(A) 基于自由摆的平板控制系统(B) 智能小车(C题) LC谐振放大器(D ) 简易数字信号传输性能分析仪(E题) 帆板控制系统(F题 ) 简易自动电阻测试仪(G题) 波形采集.存储与回放系统(H题) 2009年题目清单: .A题--光伏并网发电模拟装置 B题--声音导引系统 C题--宽带直流放大器 D题--无线环境监测模拟装置 E题--电能收集充电器 F题--数字幅频均衡功率放大器 G题--低频功率放大器 H题--LED点阵书写显示屏 I 题--

第五篇:本人多年来积累的单片机程序 资料下载(绝对干货,内附下载链接)

首先打个广告:如果需要做毕设以及嵌入式项目合作,欢迎进入我们工作室:创想嵌入式设计工作室 本人搜集的大量单片机源码资料及毕业设计资料,足有1200+套,很多实用的demo源码和毕业设计参考方案,可用于做项目时借鉴,博尾附有下载链接.(内附本人联系方式,可一起交流探讨,交朋友) 为了方便 查找,我已将项目源码的目录整理出来了,方便 采用"ctrl +F"快速查找验证是否有需要的demo.可以一键打包下载,也可只下载需要的demo. 下载链接内附本人联系方式,如果在安装过程中遇到问题,可以

基于CDMA的可见光通信

大致流程:LED光源在驱动电路作用下,加载着CPLD中欲传输的数据信息向自由空间中以广播的形式传播,各接收用户使用光电探测元件经过接收电路处理,传送给各用户的CPLD中,在CPLD中各用户使用本地码与接收到的信号做相关处理,输出欲接收的数据信息. 利用CPLD,实现对发送端与接收端通信的设计,发送端设计了信号发生器,驱动电路上驱动LED发光,将信号发生器产生的信号加载到LED灯上,信号以载波的形式进行传输,接收端通过光电探测元件将接收信号作光电转换,并经过放大滤波电路等信号处理电路,恢复发送数据