收藏 分享(赏)

VHDL设计初步.doc

上传人:HR专家 文档编号:7521575 上传时间:2019-05-20 格式:DOC 页数:32 大小:638.50KB
下载 相关 举报
VHDL设计初步.doc_第1页
第1页 / 共32页
VHDL设计初步.doc_第2页
第2页 / 共32页
VHDL设计初步.doc_第3页
第3页 / 共32页
VHDL设计初步.doc_第4页
第4页 / 共32页
VHDL设计初步.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、豆丁文档代下载:http:/ (0.1 元/篇)造纸,印染染料请选择 宏浩染料推荐好文档当选:http:/ 年 7 月 19 号豆丁文档代下载:http:/ (0.1 元/篇)造纸,印染染料请选择 宏浩染料推荐好文档当选:http:/ VHDL 设计初步第一节 2 选 1 多路选择器的 VHDL 描述例 1-1是 2选 1多 路 选 择 器 的VHDL完 整 描 述 ,【例1-1】ENTITY mux21a ISPORT ( a, b : IN BIT; s : IN BIT;y : OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21

2、a ISBEGINy fb) ,当 s 为高电平时,y 输出 fb,而当 s 为低电平时,y 输出fa。显然,图 1-3 的波型证实了 VHDL 逻辑设计的正确性。需要指出的是,以上各例的实体和结构体分别是以“END ENTITYxxx”和“END ARCHITECTURE xx ”语句结尾的,这是符合 VHDL 的 IEEE STD 1076_1993 版的语法要求的。若根据 VHDL87 版本,IEEE STD 1076_1987 的语法要求,这两条结尾语句只需写成“END ;”和“END xx”。但考虑到目前绝大多数常用的 EDA 工具中的 VHDL综合器都兼容两种 VHDL 版本的语法

3、规则,且许多最新的 VHDL 方面的资料,仍然使用VHDL87 版本语言规则。因此,出于实用的目的,对于以后出现的示例,不再特意指出VHDL 两种版本的语法差异处。但对于不同的 EDA 工具,仍需根据设计程序不同的 VHDL版本表述,在综合前作相应的设置。1.1.1VHDL 语言现象说明这里将对例 1-1/2/3/4 中出现的语言现象作出说明和归纳:1、实体表达 图 1-3 mux21a 功能时序波形豆丁文档代下载:http:/ (0.1 元/篇)造纸,印染染料请选择 宏浩染料推荐好文档当选:http:/ 完整的,可综合的程序结构,必须完整地表达出一片专用集成电路 ASIC 器件的端口结构和

4、电路功能用,无论是一片 74LS138 还是一片 CPU,都必须包含实体和结构体两个最基本的语言结构,这里将含有完整程序结构(包含实体和结构体)的 VHDL 表述称为设计实体。如前所述,实体描述的是电路器件的端口构成和信号属性,它的最简表式如下:或:上下两种表式的唯一区别是 IEEE93/87 标准不同。前者为 IEEE93 标准、而后者是IEEE87,一般 VHDL 综合器都兼容两种不同标准。上式中 ENTITY、IS、PORT 和 END ENTITY 都是描述实体的关键词,在实体描述中必须包含这些关键词,编辑中,关键词不分大写和小写。2、实体名例 1-5/1-6 中的 e_name 是实

5、体名,具体取名由设计者自定。由于实体名实际上表达的是该设计电路的器件名,所以最好根据相应电路的功能来确定,如 4 位二进制计数器,实体名可取为 counter4b;8 位二进制加法器,实体名可取为 adder8b 等等。需要特别注意的是,一般不应用数字或中文定义实体名,也不应用与 EDA 工具库中已定义好的元件名作为实体名,如 or2、latch 等,也不能用数字带头的实体名,如 74LSX。3、 PORT 语句和端口信号名描述电路的端口及其端口信号,必须用端口语句 PORT()引导,并在语句结尾处加分号 “ ;“。例 1-5/1-6 中的 p_name 是端口信号名,也由设计者自己确定,如例

6、 7-1 中的端口信号名分别是 a、b 、s 和 y。4、端口模式例 1-5/1-6 中的 port_m 表达端口模式,可综合的端口模式有 4 种,它们分别是“IN”、 “OUT”、 “INOUT”和 “BUFFER”,用于定义端口上数据的流动方向和方式:IN : IN 定义的通道为单向只读模式,规定数据只能通过此端口被读入实体中。OUT :OUT 定义的通道为单向输出模式,规定数据只能通过此端口从实体向外流出,或者说可以将实体中的数据向此端口赋值。INOUT :INOUT 定义的通道确定为输入输出双向端口,即从端口的内部看,可以对此端口进行赋值,也可以通过此端口读入外部的数据信息;而从端口的

7、外部看,信号既可以从此端口流出,也可以向此端口输入信号,如 RAM 的数据端口,单片机的 I/O 口。在实际电路描述中,INOUT 模式的正确使用还应该考虑其它因素,详细情况将在后文介绍。BUFFER :BUFFER 的功能与 INOUT 类似,区别在于当需要输入数据时,只允许内部回读输出的信号,即允许反馈。如计数器的设计,可将计数器输出的计数信号回读,以作下【例 1-5】ENTITY e_name IS PORT ( p_name :port_m data_type; . . .p_namei : port_mi data_type );END ENTITY e_name;【例 1-6】EN

8、TITY e_name IS PORT ( p_name :port_m data_type; . . .p_namei : port_mi data_type );END e_name;豆丁文档代下载:http:/ (0.1 元/篇)造纸,印染染料请选择 宏浩染料推荐好文档当选:http:/ INOUT 模式相比,BUFFER 回读(输入)的信号不是由外部输入的,而是由内部产生,向外输出的信号。BUFFER 的使用示例将在下章介绍。在例 1-1 中,a、b 、s 的端口模式都定义为 IN,y 的端口模式定义为 OUT;5、数据类型 BIT例 1-5/1-6 中的 data_type 是数据

9、类型名。例 1-1 中,端口信号 a、b 、s 和 y 的数据类型都定义为 BIT。 VHDL 作为一种强类型语言,任何一种数据对象(信号、变量、常数)必须严格限定其取值范围,即对其传输或存储的数据类型作明确的界定。这对于大规模电路描述的排错是十分有益的。在 VHDL 中,预先定义好的数据类型有多种,如整数数据类型 INTEGER、布尔数据类型 BOOLEAN、标准逻辑位数据类型 STD_LOGIC 和位数据类型 BIT 等。BIT 数据类型的信号规定的取值范围是逻辑位1和0 。在 VHDL 中,逻辑位 0 和 1 的表达必须加单引号 ,否则 VHDL 综合器将 0 和 1 解释为整数数据类型

10、 INTEGER。BIT 数据类型可以参与逻辑运算或算术运算,其结果仍是位的数据类型。VHDL 综合器用一个二进制位表示 BIT。将例 7-1 中的端口信号 a、b 、 s 和 y 的数据类型都定义为BIT,即表示 a、b 、s 和 y 的取值范围,或者说是数据变化范围被限定在逻辑位1和0之间。BIT 数据类型的定义或者说是解释包含在 VHDL 标准程序包 STANDARD 中,而程序包STANDARD 包含于 VHDL 标准库 STD 中。6、结构体表达结构体的一般表达如以下例 1-7/1-8 所示:和例 1-5/1-6 一样,上下两种表式的唯一区别是 IEEE93/87 标准不同。前者为

11、IEEE93标准、而后者是 IEEE87。上式中ARCHITECTURE、OF、IS 、 BEGIN 和 END ARCHITECTURE 都是描述结构体的关键词,在描述中必须包含,arch_name 是结构体名。(说明语句)包括在结构体中需要说明和定义的数据对象、数据类型、元件调用声明等等。 (说明语句)并非是必须的, (功能描述语句)则不同,结构体中必须给出相应的电路功能描述语句,可以是并行语句,顺序语句或它们的混合。一般地,一个可综合的,完整的 VHDL 程序有比较固定的结构。设计实体中,一般首先出现的是各类库及其程序包的使用声明,包括未以显式表达的工作库 WORK 库的使用声明,然后是

12、实体描述,然后是结构体描述,而在结构体中可以含有不同的逻辑表达语句结构。这里对一个相对完整的 VHDL 程序设计构建称为设计实体。7、信号传输(赋值)符号和数据比较符号例 1-1 中的表达式 y ;USE.ALL ;STD_LOGIC 的类型定义在被称为 STD_LOGIC_1164 的程序包中,此包由 IEEE 定义,而且此程序包所在的程序库的库名也称 IEEE。由于 IEEE 库不属于 VHDL 标准库,所以在使用其库中内容前,必须事先给予声明。例 1-9 最上的两句语句:LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;正是出于需要定义端口信号的数据类

13、型为STD_LOGIC(当然也可以定义为 BIT 类型或其它数据类型,但一般应用中推荐定义 STD_LOGIC 类型) 。3、 SIGNAL 信号定义和数据对象【例 1-10】ARCHITECTURE bhv OF DFF1 ISBEGINPROCESS (CLK)BEGINIF CLKEVENT AND CLK = 1 THEN Q EVENT短语“clockEVENT”就是对 clock 标识符的信号在当前的一个极小的时间段 内发生事件的情况进行检测。所谓发生事件,就是 clock 的电平发生变化,从一种电平方式转变到另一种电平方式。如果clock 的数据类型定义为STD_LOGIC,则在

14、 时间段内,clock 从其数据类型允许的 9 种值中的任何一个值向另一值跳变,如由0变成1、由1变成0或由Z变成0,都认为发生了事件,于是此表式将输出一个布尔值 TRUE,否则为 FALSE。如果将以上短语“clockEVENT”改成语句“clock EVENT AND clock=1”,则一旦“clockEVENT” 在 时间内测得 clock 有一个跳变,而小时间段 之后又测得 clock 为高电平 1,从而满足此语句右侧的 “clock=1 ”的条件,而两者相与(AND)后返回 TRUE,由此便可以从当前的“clock=1 ”推断在此前的 时间段内,clock 必为 0(假设 cloc

15、k 的数据类型为 BIT) 。因此,以上的表达式可以用来对信号clock 的上升沿进行检测。5、不完整条件语句与时序电路现在来分析例 1-9 中对 D 触发器功能的描述:图 1-5 例 1-11 的电路图豆丁文档代下载:http:/ (0.1 元/篇)造纸,印染染料请选择 宏浩染料推荐好文档当选:http:/ CLK 发生变化时,PROCESS 语句被启动,IF 语句将测定条件表式“CLKEVENT AND CLK = 1”是否满足条件(即 CLK 的上升沿是否到来) ,如果为“true”,则执行语句 Q1 b1 THEN q1 b1 THEN q1 ”键将需要观察的信号选到右栏中,然后点击

16、 OK 键即可将测试信号 s(I)、b(I)、a(I) 和 y(O)输入仿 真 波 形 编 辑 窗 。 。图 1-20 从 SNF 文件中输入设计文件的信号节点豆丁文档代下载:http:/ (0.1 元/篇)造纸,印染染料请选择 宏浩染料推荐好文档当选:http:/ 1-21 列出并选择需要观察的信号节点图 1-22 在 Options 选项中消去网格对齐 Snap to Grid 的选择(消去勾)3、设置波形参量。图 1-22 所示的波形编辑窗中已经调入了半加器的所有节点信号,在为编辑窗的半加器输入信号 a 和 b 设定必要的测试电平之前,首先设定相关的仿真参数。如图 1-22 所示, 在

17、 Options 选项中消去网格对齐 Snap to Grid 的选择(消去勾) ,以便能够任意设置输入电平位置,或设置输入时钟信号的周期。4、如图 1-23,1-24 所示,设定仿真时间宽度。选择 File 项及其 End time 选项,在 End time 选择窗中选择适当的仿真时间域,如可选 80us(80 微秒) ,以便有足够长的观察时间。5、加上输入信号。图 1-25 显示了波形编辑窗各按钮的功能。图 1-23 设定仿真时间宽度豆丁文档代下载:http:/ (0.1 元/篇)造纸,印染染料请选择 宏浩染料推荐好文档当选:http:/ 1-24 设定仿真时间宽度图 1-25 为输入

18、信号设定必要的测试电平或数据图 1-26 为输入信号设定必要的输入信号图 1-27 mux21a 仿真波形豆丁文档代下载:http:/ (0.1 元/篇)造纸,印染染料请选择 宏浩染料推荐好文档当选:http:/ 图 1-26仿 真 波 形 中 , 多 路 选 择 器 mux21a的 输 入 端 口 a和 b分 别 输 入 时 钟 周 期 为400ns和 1.2us的 时 变 信 号 。 由 图 可 见 , 当 控 制 端 s为 高 电 平 时 , y的 输 出 为 b的 低 频 率 信 号 ,而 当 s为 低 电 平 时 , y的 输 出 为 a的 高 频 率 信 号 。注 意 , 仿 真

19、 波 形 文 件 的 建 立 , 一 定 要 十 分 注 意 仿 真 时 间 区 域 的 设 定 , 以 及 时 钟 信 号 的 周期 设 置 , 否 则 即 使 设 计 正 确 也 无 法 获 得 正 确 的 仿 真 结 果 。 如 图 1-26所 示 , 设 定 了 比 较 合 理 的仿 真 时 间 区 域 和 信 号 频 率 。即 仿 真 时 间 区 域 不 能 太 小 , 仿 真 频 率 不 能 太 高 , 即 信 号 周 期 不 能 小 到 与 器 件 的 延 时 相 比拟 。图 1-28 仿真波形文件存盘 图 1-29 运行仿真器6、波形文件存盘。选择 File 项及其 Save

20、as 选项,按 OK 键即可。存盘窗(图 1-28)中的波形文件名是默认的(这里是 mux21a.scf) ,所以直接存盘即可。7、运行仿真器。选择 MAX+plusII 项及其中的仿真器 Simulator 选项,点击跳出的仿真器窗口(图 1-29)中的 Start 键。图 1-27 是仿真运算完成后的时序波形。注意,刚进入图 1-27 的窗口时,应该将最下方的滑标拖向最左侧,以便可观察到初始波形。8、观察分析波形。还可以进一步了解信号的延时情况。图 1-27 右侧的竖线是测试参考线,它与鼠标箭头间的时间差显示在窗口上方的 Interval 小窗中。由图可见输入与输出波形间有一个小的延时量。

21、 图 1-30 打开延时时序分析窗1.3.5 硬件测试为在实验系统上验证设计的正确性,完成硬件测试。如果目标器件是 EP1K30,建议选择实验电路模式 5,用键 1(PIO0)控制通道选择信号 s ;a 和 b 分别接 clock5 和clock0;输出信号 y 接扬声器 spker。通过短路帽选择 clock0 接 256Hz 信号,clock5 接豆丁文档代下载:http:/ (0.1 元/篇)造纸,印染染料请选择 宏浩染料推荐好文档当选:http:/ 信号。现在根据以上确定的实验模式锁定多路选择器在目标芯片中的具体引脚:首先通过选择“MAX+plus II”“Compiler”菜单,进

22、入编辑窗,然后在“Assign”项中选“Pin / Location / Chip”选项,在跳出的窗口中的 Node Name 项中输入引脚 a ,这时“Pin Type”项会出现 “Input”指示字,表明 a 的引脚性质是输入,否则将不出现此字。此时在“PIN”项内输入“126”引脚名,再点击右下方的 Add 项,此引脚即设定好了;以同样方法分别锁定引脚 b、s、y(图 1-31) ,再点击上方的 OK。此 4 个引脚的选择方法是根据附录实验电路模式“NO.5”设定的。关闭“Pin / Location / Chip”窗后,应点击编辑窗的“Start” ,将引脚信息编辑进去。编程下载和硬件

23、测试的步骤如下:(1)选 “ MAX+PLUS “ 项中的“Programmer”项,跳出 Programmer 窗后,选Options 项中的硬件设置项“ Hardware Setup”,在此窗的下拉窗中选“ByteBlaster (MV)”项,点击 OK 即可。(2)将实验板连接好,接好电源,点“Configure” ,即进行编程下载。(3)选实验电路模式“NO.5”后,用短路帽设定 clock5 和 clock0 的频率分别为 256Hz和 1024Hz。当用键 1 输入高电平时,扬声器发出 256Hz 低频声,当用键 1 输入低电平时,扬声器发出 1024Hz 高频声。当然也可以用示波

24、器观察输出信号。图 1-31 引脚锁定豆丁文档代下载:http:/ (0.1 元/篇)造纸,印染染料请选择 宏浩染料推荐好文档当选:http:/ 1-32 设置编程下载方式下载方式设定:选择 MAX+plusII 项及其中的编程器 Programmer 选项,跳出如图 1-32 左侧所示的编程器窗口,然后选择 Options 项的 Hardware Setup 硬件设置选项,其窗口如图1-32 左侧所示。在其下拉菜单中选 ByteBlaster(MV)编程方式。此编程方式对应计算机的并行口下载通道, “MV”是混合电压的意思,主要指对 ALTERA 的各类芯核电压(如 5V、3.3V、2.5

25、V 与 1.8V 等)的 FPGA/CPLD 都能由此下载。此项设置只在初次装软件后第一次编程前进行,设置确定后就不必重复此设置了。图 1-33 向目标器件下载配置文件下载:如图 1-33,点击 Configure 键,向 EPF10K10 下载配置文件,如果连线无误,应出现图 1-33 报告配置完成的信息提示。到此为止,完整的设计流程已经结束。VHDL 文本输入的设计可参考这一流程。1.3.6 设计流程归纳图 1-34 所示的是利用 MAX+plusII 进行设计的一般流程,因此对原理图输入设计和文本方式的硬件描述语言设计输入都能适用。豆丁文档代下载:http:/ (0.1 元/篇)造纸,印

26、染染料请选择 宏浩染料推荐好文档当选:http:/ 1-34 MAX+plusII 一般设计流程1.3.7MAX+plusII 在 Windows 2000 上的安装设置在 windows 98h,MAX+plusII 一旦安装完毕,经过设置即可使用硬件下载功能。在 windows 2000 上的安装,除了安装软件外,为使用 ByteBlasterMV 下载功能,还必须安装硬件驱动( drivers) ,以支持MAX+plusII 对 PC 机并行口的操作。具体安装步骤如下:(1)首先安装 MAX+plusII;(2)选择(“开始”“设置”“控制面板” ) ;(3)双击“游戏选项” ,然后选

27、择“添加”“添加其他”“从磁盘安装”命令,再单击“浏览”浏览驱动所在目录:MAX+plusII 的安装目录 driverswin2000;(4)选择 win2000.inf ,单击确定;(5)在“数字签名未找到”对话框中,选择是;(6)在“选择一个设备驱动程序”窗口中,选择 Altera ByteBlaster,并单击“下一步” ;(7)在接下去的“数字签名未找到”对话框中,仍选择“是” ;(8)安装完成,依提示,重新启动计算机在 WINXP/WINNT 操作环境下,若要使用下载(Download)功能,同样要安装驱动,安装方法可参考在 Windows 2000 上的安装方法进行,在此不再赘述

28、。实 验(以下实验项目选自EDA 技术使用教程 ,更多更详细的实验内容请参考该书)【实验 1】1 位全加器 VHDL 文本输入设计:-或门逻辑描述LIBRARY IEEE ;USEIEEE.STD_LOGIC_1164.ALL;ENTITY or2a ISPORT (a,b:IN STD_LOGIC; c:OUT STD_LOGIC);END ENTITY or2a;ARCHITECTURE one OF or2a ISBEGINc ain,b=bin,co=d,so=e); u2: h_adder PORT MAP(a=e,b=cin,co=f, so=sum);u3: or2a PORT

29、MAP(a=d, b=f,c=cout);END ARCHITECTURE fd1;【实验 2】2 选 1 多路选择器 VHDL 设计: 设计与实验方法参考第 6 章第 4 节。【实验 3】8 位硬件加法器 VHDL 设计设计程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ADDER8 ISPORT ( CIN : IN STD_LOGIC;A, B : IN STD_LOGIC_VECTOR(7 DOWNTO 0);S : OUT STD_LOGIC_VECTOR(7 D

30、OWNTO 0);COUT : OUT STD_LOGIC );END ADDER8;ARCHITECTURE behav OF ADDER8 ISSIGNAL SINT : STD_LOGIC_VECTOR(8 DOWNTO 0);BEGINSINT LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S NULL ;END CASE ;END PROCESS ;END ;3、实验内容 2:引脚锁定以及硬件下载测试。建议选实验电路模式 6,用数码 8 显示译

31、码输出(PIO41-PIO40) ,键 8、键 7、键 6、键 5 四位控制输入,硬件验证译码器的工作性能。4、思考题:讨论语句 WHEN OTHERS=NULL 的作用。对于不同的 VHDL 综合器,此句是否具有相同含义和功能?实验图 3 计数器和译码器连接电路的顶层文件原理图5、附加实验内容:用 VHDL 例化语句(参考实验 2)按实验图 3 的方式,以例 1 和例2 为底层元件,完成顶层文件设计,并重复以上实验过程。注意实验图 3 中的 tmp 是 4 位总线,led 是 7 位总线。对于引脚锁定和实验,建议仍选实验电路模式 6,用数码 8 显示译码输出,用键 3 作为时钟输入(每按 2

32、 次键为 1 个时钟脉冲) ,或直接时钟信号clock0。 (答案见最后一页) 。6、实验报告:根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和详细实验过程;设计原程序,程序分析报告、仿真波形图及其分析报告。【实验 6】数控分频器的设计1、实验目的:学习数控分频器的设计、分析和测试方法。2、实验原理:数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比,例 3 的数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可。3、实验内容 1:根据实验图 3 的波形提示,分析例 3 中的各语句功能

33、、设计原理、逻辑功能,并详述进程 P_REG 和 P_DIV 的作用。实验图 3 当给出不同输入值 D 时,FOUT 输出不同频率(CLK 周期=50ns)豆丁文档代下载:http:/ (0.1 元/篇)造纸,印染染料请选择 宏浩染料推荐好文档当选:http:/ 2:输入不同的 CLK 时钟频率和预置值 D,给出如例 3 的时序波形。5、实验内容 3:在实验系统上硬件验证例 3 的功能。如果目标器件是 EPF10K10,建议选实验电路模式 1,键 2 / 键 1(PIO7-PIO0)负责输入 8 位预置数 D;CLK 由 clock0 输入,频率可选 65536Hz 或更高(确保分频后落在音

34、频范围) ;输出 FOUT 接扬声器(SPKER) 。编译下载后进行硬件测试:改变键 2 / 键 1 的输入值,可听到不同音调的声音。6、实验报告:根据以上的要求,将实验项目分析设计,仿真和测试写入实验报告。【例 3】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY PULSE ISPORT ( CLK : IN STD_LOGIC;D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);FOUT : OUT STD_LOGIC );END;ARCHITECTURE o

35、ne OF PULSE ISSIGNAL FULL : STD_LOGIC;BEGINP_REG: PROCESS(CLK)VARIABLE CNT8 : STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN IF CLKEVENT AND CLK = 1 THENIF CNT8 = “11111111“ THEN CNT8 := D; -当 CNT8 计数计满时,输入数据 D 被同步预置给计数器 CNT8 FULL IF DIN = D(7) THEN Q IF DIN = D(6) THEN Q IF DIN = D(5) THEN Q IF DIN = D(4) THEN

36、 Q IF DIN = D(3) THEN Q IF DIN = D(2) THEN Q IF DIN = D(1) THEN Q IF DIN = D(0) THEN Q Q ALE ALE ALE ALE ALE ALE ALE ALE=0;START=0;OE=0;LOCK=0;next_state = st0; END CASE ;END PROCESS PRO ;PROCESS (CLK) BEGINIF ( CLKEVENT AND CLK=1) THEN current_state = next_state; - 在时钟上升沿,转换至下一状态END IF;END PROCESS;

37、 - 由信号 current_state 将当前状态值带出此进程,进入进程 PROPROCESS (LOCK) - 此进程中,在 LOCK 的上升沿,将转换好的数据锁入BEGINIF LOCK=1 AND LOCKEVENT THEN REGL = D ;END IF;END PROCESS ; Q = REGL;END behav;实验图 4 ADC0809 工作时序2、实验内容:利用 MAX+plusII 对例 5 进行文本编辑输入和仿真测试;给出仿真波形。最后进行引脚锁定并进行测试,硬件验证例 5 电路对 ADC0809 的控制功能。豆丁文档代下载:http:/ (0.1 元/篇)造纸,

38、印染染料请选择 宏浩染料推荐好文档当选:http:/ 2-7,建议引脚锁定为:START 接 PIO34,OE 接 PIO35,EOC接 PIO8,ALE 接 PIO33,状态机时钟 CLK 接 clock0( PIN2,可选“65536Hz”或更高),ADDA 接 PIO32(ADDB 和 ADDC 都接 GND) ,ADC0809 的 8 位输出数据线接PIO23 PIO16,锁存输出 Q 显示于数码 8/数码 7(PIO47PIO40) ,设目标器件是 EPF10K10,建议选择实验电路结构图 NO.5(即结构图 NO.5,附图 2-7,由该图可见,ADC0809 的转换时钟 CLK

39、已经事先接有 750KHz 的频率) ,拨码开关选择“转换结束”和“A/D 使能 ”。下载目标文件后,可用螺丝刀旋转实验系统左下角的电位器,以便为 ADC0809 提供变化的待测模拟信号,这时数码管 8 和 7 将显示 ADC0809 采样输出并被锁存的数字值(16 进制) 。3、思考题:在不改变原代码功能的条件下将例 5 表达成用状态码直接输出型的状态机。4、实验报告:根据以上的实验要求、实验内容和实验思考题写出实验报告。【实验 9】波形发生与扫频信号发生器电路设计1、实验目的:学习用 VHDL 设计波形发生器和扫频信号发生器,掌握 FPGA 对 D/A 的接口和控制技术,学会 LPM_RO

40、M 在波形发生器设计中的实用方法。2、实验原理:如实验图 5 所示,完整的波形发生器由 4 部分组成: FPGA 中的波形发生器控制电路,它通过外来控制信号和高速时钟信号,向波形数据ROM 发出地址信号,输出波形的频率由发出的地址信号的速度决定;当以固定频率扫描输出地址时,模拟输出波形是固定频率,而当以周期性时变方式扫描输出地址时,则模拟输出波形为扫频信号。 波形数据 ROM 中存有发生器的波形数据,如正弦波或三角波数据。当接受来自 FPGA的地址信号后,将从数据线输出相应的波形数据,地址变化得越快,则输出数据的速度越快,从而使 D/A 输出的模拟信号的变化速度越快。波形数据 ROM 可以由多

41、种方式实现,如在 FPGA 外面外接普通 ROM;由逻辑方式在 FPGA 中实现(如例 6) ;或由 FPGA 中的 EAB 模块担当,如利用 LPM_ROM 实现。相比之下,第 1 种方式的容量最大,但速度最慢;,第 2 种方式容量最小,但速度最最快;第 3 种方式则兼顾了两方面的因素; D/A 转换器负责将 ROM 输出的数据转换成模拟信号,经滤波电路后输出。输出波形的频率上限与 D/A 器件的转换速度有重要关系,本例采用 DAC0832 器件。DAC0832 是 8 位 D/A转 换 器 , 转 换 周 期 为 1s, 其 引 脚 信 号 以 及 与 FPGA 目标器件典 型的 接 口

42、方 式 如 附 图 2-7所 示 。 其参考电压与5V 工作电压相接(实用电路应接精密基准电压) 。DAC0832 的引脚功能简述如下:ILE(PIN 19):数据锁存允许信号,高电平有效,系统板上已直接连在5V 上。WR1、WR2(PIN 2、18):写信号 1、2,低电平有效。XFER(PIN 17):数据传送控制信号,低电平有效。VREF(PIN 8):基准电压,可正可负,10V10V。RFB(PIN 9):反馈电阻端。IOUT1/IOUT2(PIN 11、12 ):电流输出 1 和 2 。D/A 转换量是以电流形式输出的,所以必须如实验结构图 NO.5 所示的连接方式将电流信号变为电压信号。AGND/DGND(PIN 3、10):模拟地与数字地。在高速情况下,此二地的连接线必须尽可能短,且系统的单点接地点须接在此连线的某一点上。例 6 中的正弦波波型数据由 64 个点构成,此数据经 DAC0832,并经滤波器后,可在示波器上观察到光滑的正弦波( 若接精密基准电压,可得到更为清晰的正弦波形)。3、实验内容 1:根据示例例 6,及以上的设计原理,完成波形发生器和扫频信号源的设计,仿真测试及实验系统上的硬件测试。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报