1、 基于基于 VHDLVHDL 语言信号发生器的设计语言信号发生器的设计 1、设计目的 1) 掌握使用 EDA 工具设计信号发生器系统的设计思路和设计方法,体会 使用 EDA 综合过程中电路设计方法和设计思路的不同,理解层次化设计理念。 2) 熟悉在 Quartus II 环境中,用文本输入方式与原理图输入方式完成电路 的设计,同时掌握使用这两种方式相结合的 EDA 设计思路。 3) 通过这一部分的学习,对 VHDL 语言的设计方法进行进一步的学习, 对其相关语言设计规范进行更深层次的掌握, 能够更加熟练的做一些编程设计 2 2、设计的主要内容和要求设计的主要内容和要求 通过使用 VHDL 语言
2、及 Quartus II 软件,设计多功能信号发生器的每个模 块,将正弦波模块,方波模块,三角波模块,阶梯波模块创建相应的元件符号, 同时设计好 4 选 1 数据选择器模块,再通过原理图输入方式,将各个模块组合 起来, 设计成一个完整的多种信号发生器电路, 同时将各个模块单独进行仿真, 设计各个模块的仿真波形,最后进行总原理图电路仿真,设计该信号发生器的 总的仿真波形。 信号发生器:体现在它能自动的实现四种波形的转换。 根据题目的分析与整体构思可知,要完成设计任务必须完成以下要求: 1、设计好用于波形切换的四路数据选择器 selector4_1; 2、设计好用于总电路设计的各个信号输出模块;
3、3、设计好数模(D/A)转换器。 3、整体设计方案 基本设计方案:在现有单一信号发生器的基础上,加上其它信号模块,通过 组合与设计,用数模转换器(D/A)将选中的信号源发出的信号由数字信号转换 为模拟信号,再用示波器显示出来,其信号发生器的结构框图如图 3.1 所示。 信号发生器由各个单一信号模块组合而成, 其中信号产生模块将产生所需的 各种信号,信号发生器的控制模块可以用数据选择器实现,用 4 选 1 数据选择器 实现对四种信号的选择。最后将波形数据送入 D/A 转换器,将数字信号转换为 模拟信号输出。用示波器测试 D/A 转换器的输出,可以观测到 4 种信号的输出。 时钟信号信号产生信号控
4、制D/A转换输出信号 选择信号 图 3.1 信号发生器结构框图 通过查找资料把各类信号模块的程序输入到 Quartus 中进行运行仿真, 每一步都要慎重小心,错误难免的,还需要通过课本和资料一一更正。 最后,在前面模块做好的基础上再考虑如何输出波形的问题,通过对四种波 形采样就可以得到。 4、硬件电路的设计与软件设计 根据题目分析与整体构思可知,要完成设计任务必须设计出以下模块: 4.1 正弦波发生器的实现 该模块产生以 64 个时钟为一个周期的正弦波。 其 VHDL 语言源程序代码如下所示: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;-打开库文件 U
5、SE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY sinqi IS PORT ( clk : IN STD_LOGIC;-声明clk是标准逻辑位类型的输入端口 clr : IN STD_LOGIC; -声明 clr 是标准逻辑位类型的输入端口 d : OUT integer range 0 to 255); -声明d是标准逻辑向量类型的 -输出端口 END sinqi; ARCHITECTURE sinb OF sinqi IS BEGIN PROCESS(clr,clk) variable temp:integer range 0 to 63; BEGIN IF
6、clr=0 THEN dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddnull; -当 temp 值不是选择值,Q 作未知 -处理 END CASE; END IF; END PROCESS; END sinb; 4.2 方波信号发生器的实现 该模块产生方波,是通过交替送出全 0 和全 1 实现,每 16 个时钟翻转一次。 其 VHDL 语言源程序代码如下所示: LIBRARY IEEE;-打开库文件 USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY fangboqi IS PORT (clk: IN STD_LOGIC;-声明 clk 是标准逻辑位类型的输入端口 clr: IN STD_LOGIC;-声明 clr 是标准逻辑位类型的输入端口 q: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-声明 q 是标准逻