基于VHDL语言信号发生器的设计.EDA课程设计.doc
《基于VHDL语言信号发生器的设计.EDA课程设计.doc》由会员分享,可在线阅读,更多相关《基于VHDL语言信号发生器的设计.EDA课程设计.doc(18页珍藏版)》请在沃文网上搜索。
1、基于VHDL语言信号发生器的设计1、设计目的 1) 掌握使用EDA工具设计信号发生器系统的设计思路和设计方法,体会使用EDA综合过程中电路设计方法和设计思路的不同,理解层次化设计理念。2) 熟悉在Quartus II环境中,用文本输入方式与原理图输入方式完成电路的设计,同时掌握使用这两种方式相结合的EDA设计思路。3) 通过这一部分的学习,对VHDL语言的设计方法进行进一步的学习,对其相关语言设计规范进行更深层次的掌握,能够更加熟练的做一些编程设计2、设计的主要内容和要求 通过使用VHDL语言及Quartus II软件,设计多功能信号发生器的每个模块,将正弦波模块,方波模块,三角波模块,阶梯波
2、模块创建相应的元件符号,同时设计好4选1数据选择器模块,再通过原理图输入方式,将各个模块组合起来,设计成一个完整的多种信号发生器电路,同时将各个模块单独进行仿真,设计各个模块的仿真波形,最后进行总原理图电路仿真,设计该信号发生器的总的仿真波形。信号发生器:体现在它能自动的实现四种波形的转换。根据题目的分析与整体构思可知,要完成设计任务必须完成以下要求: 1、设计好用于波形切换的四路数据选择器selector4_1;2、设计好用于总电路设计的各个信号输出模块;3、设计好数模(D/A)转换器。3、整体设计方案基本设计方案:在现有单一信号发生器的基础上,加上其它信号模块,通过组合与设计,用数模转换器
3、(D/A)将选中的信号源发出的信号由数字信号转换为模拟信号,再用示波器显示出来,其信号发生器的结构框图如图3.1所示。信号发生器由各个单一信号模块组合而成,其中信号产生模块将产生所需的各种信号,信号发生器的控制模块可以用数据选择器实现,用4选1数据选择器实现对四种信号的选择。最后将波形数据送入D/A转换器,将数字信号转换为模拟信号输出。用示波器测试D/A转换器的输出,可以观测到4种信号的输出。图3.1 信号发生器结构框图通过查找资料把各类信号模块的程序输入到Quartus 中进行运行仿真,每一步都要慎重小心,错误难免的,还需要通过课本和资料一一更正。最后,在前面模块做好的基础上再考虑如何输出波
4、形的问题,通过对四种波形采样就可以得到。4、硬件电路的设计与软件设计根据题目分析与整体构思可知,要完成设计任务必须设计出以下模块: 4.1正弦波发生器的实现该模块产生以64个时钟为一个周期的正弦波。其VHDL语言源程序代码如下所示:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;-打开库文件USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY sinqi ISPORT ( clk : IN STD_LOGIC;-声明clk是标准逻辑位类型的输入端口 clr : IN STD_LOGIC; -声明clr是标准逻辑位类型的输入端口 d :
5、OUT integer range 0 to 255); -声明d是标准逻辑向量类型的 -输出端口END sinqi;ARCHITECTURE sinb OF sinqi ISBEGIN PROCESS(clr,clk) variable temp:integer range 0 to 63; BEGIN IF clr=0 THEN dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddnull; -当temp值不是选择值,Q作未知 -处理END CASE; END IF;END PROCESS;END sinb;4.
6、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是标准逻辑 -向量类型的输出端口
7、END fangboqi;ARCHITECTURE fangbo1 OF fangboqi IS -结构体说明SIGNAL a: STD_LOGIC;BEGIN PROCESS(clk,clr) VARIABLE tmp:std_logic_vector(3 downto 0); -变量定义 BEGIN IF clr=0 THEN a=0; ELSIF clkevent AND clk= 1 THEN -clk为上升沿 IF tmp=1111 THEN tmp:=0000; ELSE tmp:=tmp+1; END IF; IF tmp1000 THEN a=1; ELSE a=0; END
8、IF; END IF; END PROCESS; PROCESS(clk,a) BEGIN IF clkevent AND clk= 1 THEN -clk为上升沿 IF a=1 THEN q=11111111; -q赋值 ELSE q=00000000; -q赋值 END IF; END IF; END PROCESS; -结束进程END fangbo1; -结束结构体4.3 三角波信号发生器的实现该模块产生的三角波形以64个时钟为一个周期,输出q每次加减8其VHDL语言源程序代码如下所示: LIBRARY IEEE; -打开库文件 USE IEEE.STD_LOGIC_1164.ALL;U
9、SE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY sjbo IS PORT (clk : IN STD_LOGIC;-声明clk是标准逻辑位类型的输入端口 clr : IN STD_LOGIC;-声明clr是标准逻辑位类型的输入端口 q: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-声明q是标准逻辑 -向量类型的输出端口END sjbo;ARCHITECTURE sjqi OF sjbo IS -结构体说明 BEGIN PROCESS(clk,clr) VARIABLE tmp:STD_LOGIC_VECTOR(7 DOWNTO 0); -变量
10、说明 VARIABLE a:STD_LOGIC; BEGIN IF clr=0 THEN tmp:=00000000; ELSIF clkevent AND clk=1 THEN -clk为上升沿 IF a=0 THEN IF tmp=11111000 THEN tmp:=11111111; a:=1; ELSE tmp:=tmp+8; END IF; ELSE IF tmp=00000111 THEN tmp:=00000000; a:=0; ELSE tmp:=tmp-8; END IF; END IF; END IF; q=tmp; -q赋值 END PROCESS; END sjqi;
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VHDL 语言 信号发生器 设计 EDA 课程设计