可编程逻辑器件(EDA):第3章 VHDL设计初步-ST_第1页
可编程逻辑器件(EDA):第3章 VHDL设计初步-ST_第2页
可编程逻辑器件(EDA):第3章 VHDL设计初步-ST_第3页
可编程逻辑器件(EDA):第3章 VHDL设计初步-ST_第4页
可编程逻辑器件(EDA):第3章 VHDL设计初步-ST_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、EDA技术实用教程技术实用教程第3章 VHDL设计初步 13 VHDL3 VHDL设计初步设计初步 本章内容:本章内容:典型的电路实例典型的电路实例 VHDL语言描述语言描述 熟悉电路与熟悉电路与VHDL之间的映射关系之间的映射关系 了解了解VHDL的基本结构、特点及设计方法的基本结构、特点及设计方法23.1 3.1 组合电路的组合电路的VHDLVHDL描述描述 3.1.1 2选选1多路选择器及其多路选择器及其VHDL描述描述1 33.1 3.1 组合电路的组合电路的VHDLVHDL描述描述 3.1.1 2选选1多路选择器及其多路选择器及其VHDL描述描述1 43.1 3.1 组合电路的组合电

2、路的VHDLVHDL描述描述 3.1.1 2选选1多路选择器及其多路选择器及其VHDL描述描述1 53.1 3.1 组合电路的组合电路的VHDLVHDL描述描述 典型的典型的VHDL语言描述组成:语言描述组成:1.实体描述:实体描述:ENTITY END ENTITY描述电路器件外部情况及端口性质(信号方向及数据类型)描述电路器件外部情况及端口性质(信号方向及数据类型)2. 结构体描述:结构体描述:ARCHITECTURE END ARCHITECTURE 描述电路器件的内部逻辑功能与电路结构描述电路器件的内部逻辑功能与电路结构6既定的电路功能既定的电路功能 对应的电路结构不具有唯一性对应的电

3、路结构不具有唯一性VHDL结构体语句分为顺序语句和并行语句,其中并行语结构体语句分为顺序语句和并行语句,其中并行语句是同时执行的句是同时执行的3.1 3.1 组合电路的组合电路的VHDLVHDL描述描述 3.1.1 2选选1多路选择器及其多路选择器及其VHDL描述描述1 1. 实体表达实体表达ENTITY、IS、PORT、END ENTITY都是实体关键词,都是实体关键词,不可缺少,关键词不区分大小不可缺少,关键词不区分大小73.1 3.1 组合电路的组合电路的VHDLVHDL描述描述 2. 实体名实体名 e_name是实体名(标识符),由设计者自定,一般是实体名(标识符),由设计者自定,一般

4、根据相应电路功能来确定根据相应电路功能来确定counter4b 4位二进制计数器位二进制计数器83.1 3.1 组合电路的组合电路的VHDLVHDL描述描述 3. 端口语句和端口信号名端口语句和端口信号名4. 端口模式端口模式(1) IN:输入端口:输入端口(2) OUT:输出端口:输出端口(3) INOUT:双向端口:双向端口(4) BUFFER:缓冲端口:缓冲端口PORT()引导,语句结尾加分号()引导,语句结尾加分号9端口模式符号图端口模式符号图 INOUTBUFFERINOUT10INOUT 和 BUFFER 的区别: BUFFER回读的信号不是由外部输入的,而是由内部产生向外输出的(

5、不可更改);而INOUT读取的信号是外部的。 (BUFFER可以用做一个数据缓存器,不做I/O输出端口)113.1 3.1 组合电路的组合电路的VHDLVHDL描述描述 5. 数据类型数据类型 VHDL规定:任何一种数据对象的应用都必须严格限定其规定:任何一种数据对象的应用都必须严格限定其取值范围与数值类型,因此必须先定义要使用的数据类型取值范围与数值类型,因此必须先定义要使用的数据类型数据类型包括:数据类型包括:INTEGER、BOOLEAN、STD_LOGIC和和BIT注意:注意:type BOOLEAN is (FALSE, TRUE);type BIT is (0, 1),必须加单引号

6、必须加单引号,否则按照,否则按照INTEGER处理;处理;BIT是一个逻辑型的数据类型,只可能是是一个逻辑型的数据类型,只可能是(0, 1)两两种状态,可参与逻辑运算种状态,可参与逻辑运算123.1 3.1 组合电路的组合电路的VHDLVHDL描述描述 5. 数据类型数据类型 注意(续):注意(续):STD_LOGIC符合标准符合标准IEEE STD1164,具有,具有9种不同的种不同的值:值:00;11;Z高阻;高阻;W弱信号不定;弱信号不定;L弱信号弱信号0;H弱信号弱信号1;在使用该数据类型时,在程序中必须写出库说明语句和使在使用该数据类型时,在程序中必须写出库说明语句和使用包集合的说明

7、语句用包集合的说明语句133.1 3.1 组合电路的组合电路的VHDLVHDL描述描述 6. 结构体表达结构体表达 arch_name是结构体名(标识符),是结构体名(标识符), ARCHITECTURE、OF、IS、BEGIN、END ARCHITECTURE都是结构关键词都是结构关键词说明语句非必需,用以定义数据对象、类型及元件调用说明语句非必需,用以定义数据对象、类型及元件调用功能描述语句用以描述电路功能,是必需部分功能描述语句用以描述电路功能,是必需部分143.1 3.1 组合电路的组合电路的VHDLVHDL描述描述 7. 赋值符号和数据比较符号赋值符号和数据比较符号 8. WHEN_

8、ELSE条件信号赋值语句条件信号赋值语句 赋值符赋值符“=”两边信号数据类型要一致两边信号数据类型要一致条件赋值语句在结构体中(进程之外)是一种并行语句条件赋值语句在结构体中(进程之外)是一种并行语句条件赋值语句的第一子句具有最高优先级条件赋值语句的第一子句具有最高优先级153.1 3.1 组合电路的组合电路的VHDLVHDL描述描述 9关键字(词)关键字(词) 10标识符(端口名、实体名、结构体名等)标识符(端口名、实体名、结构体名等) 11规范的程序书写格式规范的程序书写格式 12文件取名和存盘文件取名和存盘关键字不用用来作标识符,不区分大小写关键字不用用来作标识符,不区分大小写注意标识符

9、的命名规则:注意标识符的命名规则:不能用数字、数字起头的文不能用数字、数字起头的文字或者中文表述字或者中文表述分层、对齐分层、对齐文件扩展名:文件扩展名:.vhd,需要存放于建立的工作文件夹中,需要存放于建立的工作文件夹中Quartus II规定程序名须与该程序的实体(模块)名一规定程序名须与该程序的实体(模块)名一致致16标识符命名的具体规则:标识符命名的具体规则:1)有效字符:包括)有效字符:包括26个大小写英文字母、数字个大小写英文字母、数字09以及以及下划线下划线”_”2)第一个字符必需是英文字母)第一个字符必需是英文字母3)最后一个字符不能是下划线)最后一个字符不能是下划线”_”(不

10、能以下划线结尾),(不能以下划线结尾),标识符中不允许有两个连续的下划线标识符中不允许有两个连续的下划线”_”4)标识符中的英语字母不分大小写。例如:信号)标识符中的英语字母不分大小写。例如:信号AB、ab表示同一个信号表示同一个信号5)标识符不能与)标识符不能与VHDL中的保留字同名,如中的保留字同名,如return、entity、begin等等17my_counter Decoder_1 FFT Sig_N Not_Ack State0 entity1_Decoder_1 2FFT Sig_#N Not-Ack ALL_RST_ data_BUS Return entity合法标识符合法标

11、识符不合法标识符不合法标识符183.1 3.1 组合电路的组合电路的VHDLVHDL描述描述 3.1.2 2选选1多路选多路选择器及其择器及其VHDL描述描述2 193.1 3.1 组合电路的组合电路的VHDLVHDL描述描述 3.1.2 2选选1多路选择器及其多路选择器及其VHDL描述描述2 1. 逻辑操作符逻辑操作符 VHDL直接用对应的英文来表达逻辑操作符号,支持直接用对应的英文来表达逻辑操作符号,支持BIT、BOOLEAN和和STD_LOGIC三种数据类型三种数据类型20TYPE std_logic IS ( U,-Uninitialized X,-Forcing Unknown 0,

12、-Forcing 0 1,-Forcing 1 Z,-High Impedance W,-Weak Unknown L,-Weak 0 H,-Weak l -,-Dont care );TYPE BOOLEAN IS(FALSE,TRUE);TYPE BIT IS (0,1);2. 标准逻辑位数据类型标准逻辑位数据类型STD_LOGIC 21 一般而言在设计中会使用到的仍是0与1两种状态,而在双向的bus上会使用到Z 在某些设计中为减少逻辑门的使用,可能会用到- U及X,大多出现在simulation的输出中 W、L及H则很少使用到,且很少出现注意:在std_logic的定义中,所有英文字母构

13、成的数据类型,例如X、U或Z等都是用大写的英文字母223.1 3.1 组合电路的组合电路的VHDLVHDL描述描述 3. 设计库和标准程序包设计库和标准程序包 LIBRARY、USE和和ALL是关键词是关键词VHDL默认标准库默认标准库STD和工作库和工作库WORK是打开的是打开的234. 信号定义和数据对象信号定义和数据对象 数据对象包括三类:信号、变量和常量数据对象包括三类:信号、变量和常量Signal是定义某标识符为信号的关键词是定义某标识符为信号的关键词所有端口的数据对象默认为信号所有端口的数据对象默认为信号signal243.1 3.1 组合电路的组合电路的VHDLVHDL描述描述

14、3.1.3 2选选1多路选择器及其多路选择器及其VHDL描述描述3 253.1 3.1 组合电路的组合电路的VHDLVHDL描述描述 3.1.3 2选选1多路选择器及其多路选择器及其VHDL描述描述3 1. 条件语句条件语句 IF语句必须以语句语句必须以语句“END IF;”结束结束IF语句属于顺序语句,根据语句排列顺序执行语句属于顺序语句,根据语句排列顺序执行IF 条件条件 THEN ;ELSE ;END IF;263.1 3.1 组合电路的组合电路的VHDLVHDL描述描述 3.1.3 2选选1多路选择器及其多路选择器及其VHDL描述描述3 2. 进程语句和顺序语句进程语句和顺序语句 格式

15、:格式:PROCESSEND PROCESS由由PROCESS 引导的语句成为进程语句引导的语句成为进程语句PROCESS是进程的关键词是进程的关键词PROCESS旁括号中的是进程的敏感信号表旁括号中的是进程的敏感信号表PROCESS进程在敏感信号发生变化时被激活进程在敏感信号发生变化时被激活一个结构体中可以包含任意个进程语句;进程语句之间是并行语句,其内部均为顺序语句 VHDL中所有顺序描述语句都必须放在进程语句中273.1 3.1 组合电路的组合电路的VHDLVHDL描述描述 3.1.4 半加器及其半加器及其VHDL的描述的描述3.1.5 1位二进制全加器及其位二进制全加器及其VHDL描述

16、描述3.1.6 例化语句例化语句使用新课件使用新课件 283.2 3.2 基本时序电路的基本时序电路的VHDLVHDL描述描述 3.2.1 D触发器的触发器的VHDL描述描述 293.2 3.2 基本时序电路的基本时序电路的VHDLVHDL描述描述 3.2.1 D触发器的触发器的VHDL描述之描述之VHDL语言知识语言知识 1. 上升沿检测表达式和信号属性函数上升沿检测表达式和信号属性函数 EVENT CLKEVENT AND CLK=1 CLK标识符在一个极小的时间段内状态发生改变,标识符在一个极小的时间段内状态发生改变,并且改变后的状态为高电平并且改变后的状态为高电平1 一般作为上升沿测试

17、语句使用一般作为上升沿测试语句使用 CLK上升沿触发事件上升沿触发事件303.2 3.2 基本时序电路的基本时序电路的VHDLVHDL描述描述 3.2.1 D触发器的触发器的VHDL描述之描述之VHDL语言知识语言知识 2. 不完整条件语句与时序电路不完整条件语句与时序电路 31在在VHDL综合器中:综合器中:1)进程)进程PROCESS将被综合为真实电路,不论是否被激活将被综合为真实电路,不论是否被激活2)在当前实例中,如果)在当前实例中,如果IF语句的条件表达式为语句的条件表达式为TRUE,则执行,则执行Q1 = D语句,否则跳过该赋值语句,即使输入语句,否则跳过该赋值语句,即使输入D发生

18、变化发生变化3)因此,该电路必须存在存储元件)因此,该电路必须存在存储元件/时序元件来保存时序元件来保存Q1数值数值3.2 3.2 基本时序电路的基本时序电路的VHDLVHDL描述描述 3.2.1 D触发器的触发器的VHDL描述之描述之VHDL语言知识语言知识 2. 不完整条件语句与时序电路不完整条件语句与时序电路 完整的条件语句只能构成组合逻辑电路完整的条件语句只能构成组合逻辑电路不完整的条件语句是不完整的条件语句是VHDL描述时序电路的重要途径描述时序电路的重要途径323.2 3.2 基本时序电路的基本时序电路的VHDLVHDL描述描述 33不必要的(时不必要的(时序)元件浪费序)元件浪费

19、了逻辑资源,了逻辑资源,降低了电路的降低了电路的工作速度,影工作速度,影响了电路的可响了电路的可靠性靠性3.2 3.2 基本时序电路的基本时序电路的VHDLVHDL描述描述 3.2.2 VHDL实现时序电路的不同表述实现时序电路的不同表述 STD_LOGIC有有9种状态种状态 理论上,上述语句不能完全保证理论上,上述语句不能完全保证CLK是上升沿跳变是上升沿跳变然而,然而,对于大多数综合器,并不关注信号的对于大多数综合器,并不关注信号的STD_LOGIC数数据类型据类型34LAST_VALUE属于信号属性函数,表示最近一次事件发属于信号属性函数,表示最近一次事件发生前的值生前的值3.2 3.2

20、 基本时序电路的基本时序电路的VHDLVHDL描述描述 3.2.2 VHDL实现时序电路的不同表述实现时序电路的不同表述 353.2 3.2 基本时序电路的基本时序电路的VHDLVHDL描述描述 3.2.2 VHDL实现时序电路的不同表述实现时序电路的不同表述 36 VHDL要求,当进程语句中使用要求,当进程语句中使用WAIT语句后,不必列语句后,不必列出敏感信号出敏感信号 D触发器可以不使用触发器可以不使用IF语句实现语句实现 引入时序电路结构不局限于引入时序电路结构不局限于IF语句语句3.2 3.2 基本时序电路的基本时序电路的VHDLVHDL描述描述 3.2.2 VHDL实现时序电路的不

21、同表述实现时序电路的不同表述 37原则上,进程的敏感信号原则上,进程的敏感信号表中必须列出所有可能导表中必须列出所有可能导致本进程启动的输入信号致本进程启动的输入信号3.2 3.2 基本时序电路的基本时序电路的VHDLVHDL描述描述 3.2.3 异步时序电路设计异步时序电路设计 38构成时序电路的进程称为时钟进程(构成时序电路的进程称为时钟进程(PRO1、PRO2)PRO1的赋值信号的赋值信号Q1是是PRO2的敏感信号及时钟信号的敏感信号及时钟信号PRO1总是先于总是先于PRO2被启动被启动异步时序电路异步时序电路3.2 3.2 基本时序电路的基本时序电路的VHDLVHDL描述描述 3.2.

22、3 异步时序电路设计异步时序电路设计 39没有单一主控时钟的时序电路,或系统中所有的时序部件没有单一主控时钟的时序电路,或系统中所有的时序部件不随某个主控时钟同步接收时钟信号达到状态同步变化的不随某个主控时钟同步接收时钟信号达到状态同步变化的电路都属于电路都属于异步时序电路异步时序电路系统工作状态不稳定,不能组建高速工作模块(温度系统工作状态不稳定,不能组建高速工作模块(温度/压压力力/电压的变化,冒险竞争,高频)电压的变化,冒险竞争,高频)在现代数字系统设计中,极少应用异步时序逻辑在现代数字系统设计中,极少应用异步时序逻辑3.3 3.3 计数器的计数器的VHDLVHDL设计设计 3.3.1

23、4位二进制加法计数器设计位二进制加法计数器设计 403.3 3.3 计数器的计数器的VHDLVHDL设计设计 3.3.1 4位二进制加法计数器设计位二进制加法计数器设计 Q = Q + 1 Q定义为定义为BUFFER模式模式 Q具有输出和回读功能具有输出和回读功能本例(例本例(例3-18)描述与)描述与D触发器(例触发器(例3-8)描述基本一致)描述基本一致 使用不完整的(使用不完整的(IF)条件语句来组建时序电路)条件语句来组建时序电路注意:注意: Q = Q + 1中中 Q(输出)和(输出)和Q+1(回读)的区别(回读)的区别413.3 3.3 计数器的计数器的VHDLVHDL设计设计 3.3.2 整数类型整数类型 整数类型INTEGER包括正整数、负整数和零自然数类型NATURAL包括正整数和零正整数类型POSITIVE只包括正整数 INTEGER取值范围可使用32位有符号的二进制数表示 在使用时必需range (down)to语句限制整数取值范围 423.3 3.3 计数器的计数器的VHDLVHDL设计设计 3.3.3 计数器的其他计数器的其他VHDL表达方式表达方式 signal Q1没有方向,可以出没有方向,可以出现在赋值符现在赋值符X)463.4 3.4 实用计数器的实用计数器的VHDLVHDL设计设计 1. 十进制计数器相关语法十进制计数器相关语法 信号具有全局性

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论