• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

简易信号发生器设计VHDL代码Quartus仿真

08/22 08:59
588
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-240Z91F20I28.doc

共1个文件

名称:简易信号发生器设计VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

简易信号发生器的设计

设备及软件:装有 Quartus II软件完成设计数字系统的计算机

目的:

1.了解系统相关功能电路图与印刷电路图的设计、绘制,并完成相关流程的设计以及硬件描述语言VHDL程序的编写、设计与综合和调试仿真工作。

2.学会 Quartus II软件完成设计系统的设计与综合。

3.握该数字电路系统的仿直调试,分析系统功能实现的可行性等。

任务:本课程设计主要是利用VHDL语言设计一个信号发生器,要求实现以下功能:

1.根据输入信号的选择可以产生周期性输出方波三角波正弦波、阶梯波四种波形信号。

2.可以在一定范围内调整频率。

3.如果有祭件,可将波形数据送入DA转换器,将数字信号转换为横拟信号输出,用示波器测试DA转换器的输出,可以现测到4种信号的输出。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

1. 工程文件

2. 程序文件

ROM IP核

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图

整体仿真图

上图中,wave_select选择波形类型,01输出sin,10输出方波,11输出三角波,00阶梯波。

Frequency控制波形频率

相位累加器模块

相位累加器,控制读ROM的地址,图上可以看到地址累加

波形选择模块

01输出sin,10输出方波,11输出三角波,00阶梯波

正弦波ROM模块

存储了正弦波波形

三角波ROM模块

存储了三角波波形

方波ROM模块

存储了方波波形

阶梯波ROM模块

存储了阶梯波波形

按键控制频率信号模块

通过按键控制frequency信号,从而进制波形频率

部分代码展示:

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?IS
???PORT?(
??????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;--频率控制按键
wave?????????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--输出波形
???);
END?DDS_top;
ARCHITECTURE?behave?OF?DDS_top?IS
--例化模块
--波形选择模块
???COMPONENT?wave_sel?IS
??????PORT?(
?????????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?IS
??????PORT?(
?????????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;

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1050

  • 2-240Z91F20I28.doc
    下载

相关推荐