EDA技术实用教程-第3章_VHDL设计初步ppt课件_第1页
EDA技术实用教程-第3章_VHDL设计初步ppt课件_第2页
EDA技术实用教程-第3章_VHDL设计初步ppt课件_第3页
EDA技术实用教程-第3章_VHDL设计初步ppt课件_第4页
EDA技术实用教程-第3章_VHDL设计初步ppt课件_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

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

文档简介

1、EDA技术适用教程技术适用教程第第3 3章章 VHDLVHDL设计初步设计初步 教学内容教学内容:3.1组合电路的组合电路的VHDL描画描画3.2根本时序电路的根本时序电路的VHDL描画描画3.3计数器的计数器的VHDL设计设计3.4适用计数器的适用计数器的VHDL设计设计教学要求:教学要求: 经过对VHDL电路例如分析学习,了解用VHDL表达和设计电路的方法,了解VHDL言语景象和语句规那么的特点。VHDL的优点的优点*易于设计复杂的、多层次的设计。支持设计库和设易于设计复杂的、多层次的设计。支持设计库和设计的反复运用计的反复运用*与硬件独立,一个设计可用于不同的硬件构造,而与硬件独立,一个

2、设计可用于不同的硬件构造,而且设计时不用了解过多的硬件细节。且设计时不用了解过多的硬件细节。*有丰富的软件支持有丰富的软件支持VHDL的综合和仿真,从而能在的综合和仿真,从而能在设计阶段就能发现设计中的设计阶段就能发现设计中的Bug,缩短设计时间,缩短设计时间,降低本钱。降低本钱。*更方便地向更方便地向ASIC过渡过渡*VHDL有良好的可读性,容易了解。有良好的可读性,容易了解。VHDL与计算机言语的区别与计算机言语的区别l*运转的根底运转的根底l计算机言语是在计算机言语是在CPURAM构建的平台构建的平台上运转上运转lVHDL设计的结果是由详细的逻辑、触发设计的结果是由详细的逻辑、触发器组成

3、的数字电路器组成的数字电路l*执行方式执行方式l计算机言语根本上以串行的方式执行计算机言语根本上以串行的方式执行lVHDL在总体上是以并行方式任务在总体上是以并行方式任务l*验证方式验证方式l计算机言语主要关注于变量值的变化计算机言语主要关注于变量值的变化lVHDL要实现严厉的时序逻辑关系要实现严厉的时序逻辑关系3.1组合电路的组合电路的VHDL描画描画3.1.12选选1多路选择器及其多路选择器及其VHDL描画描画1通道选择控制信号端通道选择控制信号端数据通数据通道输入道输入端口端口数据输出端数据输出端ENTITY mux21a ISPORT ( a, b : IN BIT; s : IN B

4、IT; y : OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a ISBEGIN y = a WHEN s = 0 ELSE b ;END ARCHITECTURE one ; 【例【例3-1】2选选1多路选择器多路选择器s = 0 y = a s = 1 y =b3.1.12选选1多路选择器及其多路选择器及其VHDL描画描画12选选1多路选择器多路选择器s = 0 y = a s = 1 y =b(1) 以关键词以关键词ENTITY引导,引导,END ENTITY 结尾的结尾的语句部分,称为实体。语句部分,称为实体。mux21a实体

5、实体 2选选1多路选择器的多路选择器的VHDL描画描画功能功能:描画设计模块的输入描画设计模块的输入/输出信号或引脚,并给出设计模块输出信号或引脚,并给出设计模块与外界的接口。与外界的接口。 实体类似一个实体类似一个“黑盒,实体描画了黑盒,实体描画了“黑盒的输入输出口。黑盒的输入输出口。port: *在层次化设计时,在层次化设计时,Port为模块之间的接口为模块之间的接口 *在芯片级,那么代表详细芯片的管脚在芯片级,那么代表详细芯片的管脚(2) 以关键词以关键词ARCHITECTURE引导,引导,END ARCHITECTURE 结尾的语句部分,称为构造体。结尾的语句部分,称为构造体。 图图3

6、-2 mux21a构造体构造体 功能功能:经过假设干顺序语句和并行语句来描画设计实体的逻辑经过假设干顺序语句和并行语句来描画设计实体的逻辑功能功能(行为描画行为描画)或内部电路构造或内部电路构造(构造描画构造描画),从而建立设计实,从而建立设计实体输出与输入之间的关系。体输出与输入之间的关系。一个设计实体可以有多个构造体一个设计实体可以有多个构造体构造体有三种描画方式构造体有三种描画方式*行为描画行为描画(behavioral): 高层次的功能描画,不用思索在电路中究竟是怎样实现的。高层次的功能描画,不用思索在电路中究竟是怎样实现的。*数据流描画数据流描画(dataflow): 描画输入信号经

7、过怎样的变换得到输出信号描画输入信号经过怎样的变换得到输出信号*构造化描画构造化描画(structural): 类似于电路的网络表,将各个器件经过言语的方式进展衔类似于电路的网络表,将各个器件经过言语的方式进展衔接,与电路有一对应的关系接,与电路有一对应的关系,普通用于大规模电路的层次化设普通用于大规模电路的层次化设计时。计时。构造体构造体ARCHITECTURE进程进程或其它并行构造或其它并行构造实体实体ENTITY配置配置CONFIGURATION库、程序包库、程序包设设计计实实体体结结构构设计实体:设计实体:一个完好的、可综合的一个完好的、可综合的VHDL程序设计构建程序设计构建VHDL

8、程序设计根本构造:程序设计根本构造:构造体三种描画方式的比较构造体三种描画方式的比较描述方式描述方式优点优点缺点缺点适用场合适用场合结构化描述结构化描述连接关系清晰,电路模块化清晰电路不易理解、繁琐、复杂电路层次化设计数据流描述数据流描述布尔函数定义明白 不易描述复杂电路,修改不易小门数设计行为描述行为描述电路特性清楚明了 进行综合效率相对较低大型复杂的电路模块设计1. 实体表达实体表达 描画电路器件端口构成、端口类型描画电路器件端口构成、端口类型信号流动方向和方式和信号属性信号流动方向和方式和信号属性【例】【例】ENTITY e_name IS PORT ( p_name : port_m

9、data_type; . p_namei : port_mi data_type );END ENTITY e_name; VHDL相关语法阐明相关语法阐明语法格式语法格式entity 实体名实体名 is port端口阐明;端口阐明;end entity 实体名实体名 ;留意:关键词留意:关键词2. 实体名实体名 3.端口语句端口语句PORT和端口信号名和端口信号名 实体名实践上是器件名,最好根据相应的电路功实体名实践上是器件名,最好根据相应的电路功能确定;实体名必需与文件名一样,否那么无法编译;能确定;实体名必需与文件名一样,否那么无法编译;实体名不能用工具库中定义好的元件名;实体名不能实体

10、名不能用工具库中定义好的元件名;实体名不能用中文,也不能用数字开头。用中文,也不能用数字开头。端口语句端口语句(port)阐明阐明:以以port为引导,并在语句结尾为引导,并在语句结尾处加分号处加分号“;port (端口信号名:端口方式端口信号名:端口方式 数据类型名数据类型名 :=初始初始值值;);4. 端口方式端口方式 “IN、“OUT、“INOUT、“BUFFER 输入输入In:从外部输入至实体;单向端口;:从外部输入至实体;单向端口;输出输出Out:从实体输出至外部;单向端口;:从实体输出至外部;单向端口;双向双向Inout:可以从外部输入至实体;也可以从实体输出:可以从外部输入至实体

11、;也可以从实体输出至外部;双向端口;可替代一切其他方式,但降低了程序的至外部;双向端口;可替代一切其他方式,但降低了程序的可读性,普通用于与可读性,普通用于与CPU的数据总线接口;的数据总线接口;缓冲缓冲Buffer:可以从实体输出至外部;也可以从端口回:可以从实体输出至外部;也可以从端口回读该输出值至实体;不可以从外部输入至实体;单向端口读该输出值至实体;不可以从外部输入至实体;单向端口伪双向端口;允许该管脚名作为一些逻辑的输入信号。伪双向端口;允许该管脚名作为一些逻辑的输入信号。VHDL言语中数据对象言语中数据对象(信号、变量、常数信号、变量、常数)被赋予的类型被赋予的类型规定取值范围和数

12、值类型,即对传输或存储数据的类规定取值范围和数值类型,即对传输或存储数据的类型作明确的界定。型作明确的界定。 如如Integer整型、整型、Bit位型等;位型等; *VHDL - 强类型言语强类型言语*预定义类型预定义类型 vs. 自定义类型:自定义类型:-数据类型的分类数据类型的分类已在已在VHDL规范中预先定义,可直接运用规范中预先定义,可直接运用 ,如,如Integer, Real, Bit等;等;按照类型阐明的格式自定义用户所需的类型;按照类型阐明的格式自定义用户所需的类型;5. 数据类型数据类型BIT:位数据类型:位数据类型 规定的取值范围是逻辑位规定的取值范围是逻辑位1和和0; 可

13、参与逻辑运算或算术运算;可参与逻辑运算或算术运算; BIT数据类型的定义在数据类型的定义在VHDL规范程序包规范程序包STANDARD中中6. 构造体表达构造体表达 【例】【例】ARCHITECTURE arch_name OF e_name IS (阐明语句阐明语句)阐明和定义数据对象、数据类型、元件调用阐明等阐明和定义数据对象、数据类型、元件调用阐明等 BEGIN (功能描画语句功能描画语句)电路功能描画语句电路功能描画语句,可以是并行语句、顺序语可以是并行语句、顺序语句或是他们的混合语句句或是他们的混合语句END ARCHITECTURE arch_name ; 一个设计实体的功能与一个

14、设计实体的功能与/或构造描画;或构造描画;一个设计实体可以有多个构造体;一个设计实体可以有多个构造体;语法格式语法格式architecture 构造体名构造体名 of 设计实体名设计实体名 is 阐明区;阐明区;begin 执行语句区;执行语句区;end architecture 构造体名构造体名 ; 顺序语句:顺序语句: 由进程语句引导的,以顺序方式执行的语句由进程语句引导的,以顺序方式执行的语句, ,其执行结果其执行结果与书写先后顺序有关与书写先后顺序有关. .如赋值语句如赋值语句; ;分支控制语句分支控制语句; ;循环控制语句循环控制语句; ;同步控制语句同步控制语句 并行语句:并行语句

15、: 在构造体中以并行方式执行的语句。其结果与书写先后在构造体中以并行方式执行的语句。其结果与书写先后顺序无关顺序无关. .并行语句有五种语句构造:块语句、进程语句、信并行语句有五种语句构造:块语句、进程语句、信号赋值语句、子程序调用语句和元件例化语句。号赋值语句、子程序调用语句和元件例化语句。 VHDL的根本语句的根本语句顺序语句顺序语句并行语句并行语句-eqcomp4 is a four bit equality comparatorLibrary IEEE;use IEEE.std_logic_1164.all;entity eqcomp4 isport(a, b:in std_logic

16、_vector(3 downto 0); equal :out std_logic);end entity eqcomp4;architecture dataflow of eqcomp4 isbegin equal = 1 when a=b else 0;End architecture dataflow;VHDL 大小写不敏感大小写不敏感eqcomp4.vhd包实体构造体文件名和实体名一致每行;结尾关键字begin关键字end后跟实体名关键字end后跟构造体名库7. 赋值符号和数据比较符号赋值符号和数据比较符号 8. WHEN_ELSE条件信号赋值语句条件信号赋值语句 并行语句并行语句 并

17、行逻辑操作符:并行逻辑操作符:赋值符号赋值符号: “= 用于信号数据的传输,仿真传输延时最短用于信号数据的传输,仿真传输延时最短为一个为一个。 要求两边的要求两边的 信号的信号的 数据类型必需一致数据类型必需一致数据比较符号数据比较符号 : “= 在条件语句表式中用于比较待测数据在条件语句表式中用于比较待测数据的关系。的关系。 没有赋值的含义,只是一种数据比较符号。没有赋值的含义,只是一种数据比较符号。输出结果的数据类型是布尔输出结果的数据类型是布尔BOOLEAD赋值目的赋值目的 = 表达式表达式 WHEN 赋值条件赋值条件 ELSE 表达式表达式 WHEN 赋值条件赋值条件 ELSE . 表

18、达式表达式 ; 例:例:z = a WHEN p1 = 1 ELSE b WHEN p2 = 1 ELSE c ; VHDL言语中预定义的有特殊含义的英文词语。用户不能用关键词命名自用对象或用作标识符。9关键字关键字10标识符标识符11规范的程序书写格式规范的程序书写格式用户在编程中自定义的,用于表示不同称号的词语12文件取名和存盘文件取名和存盘 文件取名:文件取名: 建议文件名与建议文件名与VHDLVHDL设计的实体名一致,后缀是设计的实体名一致,后缀是.vhd.vhd。 文件存盘:文件存盘: VHDLVHDL设计文件必需存于指定为工程的目录中,此目录将设计文件必需存于指定为工程的目录中,此

19、目录将被设定为被设定为WORKWORK库,库,WORKWORK库的途径即为此目录的途径。库的途径即为此目录的途径。 文件名后缀为文件名后缀为.vhd文件名英文字母不分大小文件名英文字母不分大小【例【例4-2】 2选选1多路选择器多路选择器ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT ); END ENTITY mux21a;ARCHITECTURE one OF mux21a IS SIGNAL d,e : BIT;BEGINd = a AND (NOT s) ;e = b AND s ;y = d OR e ;

20、END ARCHITECTURE one ; s = 0 y = a s = 1 y =bde并行语句并行语句3.1.22选选1多路选择器及其多路选择器及其VHDL描画描画2布尔表达式1.逻辑操作符逻辑操作符在在AND(AND(与与) )、OR(OR(或或) )和和NOT(NOT(取反取反) )等的作用下可构成组合等的作用下可构成组合电路。电路。 AND、OR、NOTNAND、NOR、XOR、XNOR操作对象的数据类型为:操作对象的数据类型为:BIT、BOOLEAD、STD_LOGICBIT数据类型定义:数据类型定义: 种取值种取值TYPE BIT IS (0,1);STD_LOGIC数据类型

21、定义:种取值数据类型定义:种取值TYPE STD_LOGIC IS (U-未初始化的未初始化的X-强未知的强未知的 0-强强0 1-强强1Z-高阻态高阻态W-弱未知的弱未知的 L-弱弱0 H-弱弱1-忽略忽略可实现:可实现:X -0 1 Z2.规范逻辑位数据类型规范逻辑位数据类型STD_LOGIC库库LIBRARY存放预先设计好的程序包和数据的集存放预先设计好的程序包和数据的集合体。常用的库有合体。常用的库有IEEE、STD、WORK、用户库等。这、用户库等。这些设计单元可用作其他些设计单元可用作其他VHDL描画的资源。用户编写的设描画的资源。用户编写的设计单元既可以访问多个设计库计单元既可以

22、访问多个设计库,又可以参与到设计库中又可以参与到设计库中,被其被其他单元所访问。他单元所访问。程序包程序包PACKAGE将已定义的数据类型、元件调将已定义的数据类型、元件调用阐明及子程序搜集在一同用阐明及子程序搜集在一同,供供VHDL设计实体共享和调用设计实体共享和调用,假设干个包那么构成库。程序包由两个独立的单元组成:假设干个包那么构成库。程序包由两个独立的单元组成:程序包声明单元和程序包体单元构成。程序包声明单元和程序包体单元构成。3.设计库和规范程序包设计库和规范程序包IEEE库包括:库包括:STD_LOGIC_1164STD_LOGIC_ARITH是是SYNOPSYS公司参与公司参与I

23、EEE库库程序包,包括:程序包,包括:STD_LOGIC_SIGNED有符号数有符号数STD_LOGIC_UNSIGNED无符号数无符号数STD_LOGIC_SMALL_INT(小整型数小整型数)VHDL 87版本运用版本运用IEEE STD 1076-1987 语法规范语法规范VHDL 93版本运用版本运用IEEE STD 1076-1993 语法规范语法规范描画器件的输入、输出端口数据类型中将要用到的描画器件的输入、输出端口数据类型中将要用到的IEEE的规范库中的的规范库中的STD_LOGIC_1164程序包。程序包。运用库和程序包的普通定义表式是:运用库和程序包的普通定义表式是:LIBR

24、ARY LIBRARY ;USE USE .ALL ; .ALL ; 信号是在构造体信号是在构造体ARCHITECTURE、程序包、程序包PACKAGE和实体和实体ENTITY中阐明的全局量。中阐明的全局量。 信号定义格式:信号定义格式:SIGNAL 信号名:数据类型:信号名:数据类型:=初值;初值;例如:例如:SIGNAL Q1:STD LOGIC:=0;信号赋值语句:信号赋值语句: 目的信号名目的信号名=表达式表达式例如:例如:x=9; z=x AFTER 5ns;4.SIGNAL信号定义和数据对象信号定义和数据对象数据对象:数据对象:数据对象定义:数据对象定义:类似于容器,可接受不同数据

25、类型的赋值类似于容器,可接受不同数据类型的赋值数据对象类型:数据对象类型:信号、变量、常数信号、变量、常数【例【例3-3】2选选1多路选择器多路选择器ENTITYmux21aISPORT(a,b,s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINPROCESS(a,b,s)BEGINIFs=0THENy=a;ELSEy=b;ENDIF;ENDPROCESS;ENDARCHITECTUREone;3.1.32选选1多路选择器及其多路选择器及其VHDL描画描画3进程语句进程语句敏感信号敏感信号s = 0 y = a s

26、= 1 y =bIF THEN ELSE顺序语句顺序语句1.条件语句条件语句2.进程语句和顺序语句进程语句和顺序语句IF语句必需以语句语句必需以语句“END IF;终了;终了 IF_THEN_ELSE顺序顺序进程语句进程语句以以PROCESS敏感信号表敏感信号表.END PROCESS引导的语句构造引导的语句构造 敏感信号表中敏感信号的变化将激活所在进程;敏感信号表中敏感信号的变化将激活所在进程; 在一个构造体中可以包含恣意个进程语句构造在一个构造体中可以包含恣意个进程语句构造,一切进程语句是并行语句;一切进程语句是并行语句; 由由PROCESS引导的语句是顺序语句引导的语句是顺序语句顺序语句

27、顺序语句以顺序方式执行的语句以顺序方式执行的语句,其执行结果与书写先后顺序有关其执行结果与书写先后顺序有关.进程语句:进程语句:主要用于设计实体的算法和功能描画,即行为描画;主要用于设计实体的算法和功能描画,即行为描画;语法格式进程标号: process( 敏感信号表 ) 进程阐明区 begin进程程序区 end process; 进程阐明区:只能定义类型、变量、子程序,不能定义信号;进程程序区:只能包含顺序语句;可包含信号和变量两种数据对象:变量为进程内部对象,不可跨越进程;信号为实体全局对象,用于与其它实体内模块建立联络;敏感信号表可以激活该进程的信号列表敏感信号表中信号的变化将激活所在进

28、程;敏感信号表中只能包含信号,不能包含变量;在在VHDL中一切合法的顺序描画的语句必需放在进程语句中中一切合法的顺序描画的语句必需放在进程语句中3.1.4半加器及其半加器及其VHDL的描画的描画so =a XNOR (NOT b)co=a ANDI113coasob1001010110001100cosobanotxnor2and2异或非同或异或非同或半加器半加器h_adder逻辑功能真值表逻辑功能真值表LIBRARY IEEE; -半加器描画半加器描画(1):布尔方程描画方法布尔方程描画方法USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT

29、 (a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY h_adder; ARCHITECTURE fh1 OF h_adder is BEGIN so = NOT(a XOR (NOT b) ; co = a AND b ; END ARCHITECTURE fh1; so =a XNOR (NOT b)co=a AND【例【例3-4】半加器】半加器LIBRARY IEEE; -半加器描画半加器描画(2):真值表描画方法:真值表描画方法USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS P

30、ORT (a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY h_adder; ARCHITECTURE fh1 OF h_adder IS SIGNAL abc : STD_LOGIC_VECTOR(1 DOWNTO 0) ; -定义规范逻辑位矢量定义规范逻辑位矢量数据类型数据类型BEGIN abc so=0; co so=1; co so=1; co so=0; co NULL ; END CASE; END PROCESS; END ARCHITECTURE fh1 ;【例【例3-5】半加器】半加器格式格式:CASE ISWh

31、en = ; . ; ;When = ; . ; ;.END CASE ; CASE语句属于顺序语句语句属于顺序语句,须放在进程语句中运用须放在进程语句中运用. CASE语句根据满足的条件直接选择多项顺序语句中的一项执行,它常语句根据满足的条件直接选择多项顺序语句中的一项执行,它常用来描画总线行为、编码器、译码器等的构造。可读性比用来描画总线行为、编码器、译码器等的构造。可读性比if 语句强。语句强。 1.CASE语句语句WHEN条件选择值可以有四种表达方式;条件选择值可以有四种表达方式;l1单个普通数值,形如单个普通数值,形如WHEN选择值选择值=顺序语句;顺序语句;l2并列数值,形如并列数

32、值,形如WHEN值值/值值/值值=顺序语句;顺序语句;l3数值选择范围,形如数值选择范围,形如WHEN值值TO值值=顺序语句;顺序语句;l4WHENOTHERS=顺序语句;顺序语句;运用运用CASE语句需留意以下几点:语句需留意以下几点:( 1) CASE语句中每一条语句的选择值只能出现一次语句中每一条语句的选择值只能出现一次,即不能有一即不能有一样选择值的条件语句出现样选择值的条件语句出现 (2) CASE语句执行中必需选中语句执行中必需选中,且只能选中所列条件语句中的一且只能选中所列条件语句中的一条条,即即CASE语句至少包含一个条件语句。语句至少包含一个条件语句。(3) 除非一切条件语句

33、中的选择值能完全覆盖除非一切条件语句中的选择值能完全覆盖CASE语句中表达语句中表达式的取值式的取值,否那么最末一个条件语句中的选择必需用否那么最末一个条件语句中的选择必需用“OTHERS表示,它代表已给出的一切条件语句中未能列出的其他能够表示,它代表已给出的一切条件语句中未能列出的其他能够的取值。否那么在综合过程中会插入不用要的锁存器。关键词的取值。否那么在综合过程中会插入不用要的锁存器。关键词OTHERS只能出现一次只能出现一次,且只能作为最后一种条件取值。且只能作为最后一种条件取值。 当执行到当执行到CASE语句时语句时,首先计算首先计算CASE和和IS之间的表达式的值之间的表达式的值,

34、然后根据条件语句中与之一样的选择值然后根据条件语句中与之一样的选择值,执行对应的顺序语句执行对应的顺序语句,最后终了最后终了CASE语句。语句。在运用在运用STD_LOGIC_VECTORSTD_LOGIC_VECTOR中,必需注明其数组宽度,即位宽中,必需注明其数组宽度,即位宽如:如: B : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) B : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ; 或或 SIGNAL A SIGNAL A :STD_LOGIC_VECTOR(1 TO 4) STD_LOGIC_VECTOR(1 TO 4) B = 011

35、00010 ; - B(7)为为 0B(4 DOWNTO 1) = 1101 ; - B(4)为为 1B(7 DOWNTO 4) = A ; - B(6)等于等于 A(2) 2.规范逻辑矢量数据类型规范逻辑矢量数据类型STD_LOGIC_VECTOR并置操作例如:并置操作例如:SIGNAL a : STD_LOGIC_VECTOR (3 DOWNTO 0) ;SIGNAL d : STD_LOGIC_VECTOR (1 DOWNTO 0) ;.a = 10d(1)1 ; - 元素与元素并置,并置后的数元素与元素并置,并置后的数组长度为组长度为4.IF a d = 101011 THEN .-

36、在在IF条件句中可以运用并条件句中可以运用并置符置符 并置操作是将操作数或数组合并起来构成新的数组。并置操作是将操作数或数组合并起来构成新的数组。并置后的数组长并置后的数组长度为度为63.并置操作符并置操作符3.1.5一位二进制全加器及其一位二进制全加器及其VHDL描画描画1位全加器逻辑功能真值表位全加器逻辑功能真值表LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL; ENTITY or2a IS PORT (a, b : IN STD_LOGIC; c : OUT STD_LOGIC ); END ENTITY or2a; ARCHITECTURE one

37、 OF or2a IS BEGIN c ain,b=bin,co=d,so=e);-映射语句映射语句-例化语句例化语句u2:h_adderPORTMAP(a=e,b=cin,co=f,so=sum);u3:or2aPORTMAP(a=d,b=f,c=cout);ENDARCHITECTUREfd1;层次化设计层次化设计:l 对于一个复杂的电子系统,可以将其分解为假设干个子系统,每个子系统再分解成模块,构成多层次设计。这样,可以使更多的设计者同时进展协作。l l 在多层次设计中,每个层次都可以作为一个元件,再构成一个模块或系统,可以先分别仿真每个元件,然后再整体调试。l 元件例化是引入一种衔接关

38、系,元件例化是引入一种衔接关系, 是将预先设计好的设计实体定义为一个元件,然后利是将预先设计好的设计实体定义为一个元件,然后利用映射语句将此元件与当前设计实体中的指定端口相连,用映射语句将此元件与当前设计实体中的指定端口相连,从而为当前设计实体引入了一个低一级的设计层次。从而为当前设计实体引入了一个低一级的设计层次。 *在构造体中,描画只表示元件或模块和元件或模在构造体中,描画只表示元件或模块和元件或模块之间的互连,就象网表一样。块之间的互连,就象网表一样。 *元件例化语句也是一种并行语句,各个例化语句的执行元件例化语句也是一种并行语句,各个例化语句的执行顺序与例化语句的书写顺序无关,而是按照

39、驱动的事件并顺序与例化语句的书写顺序无关,而是按照驱动的事件并行执行的。行执行的。 *元件例化可以是多层次的元件例化可以是多层次的 *当援用库中不存在的元件时,必需首先进展元件的创建,当援用库中不存在的元件时,必需首先进展元件的创建,然后将其放在任务库中,经过调用任务库来援用元件。在然后将其放在任务库中,经过调用任务库来援用元件。在援用元件时,要先在构造体中阐明部分进展元件的阐明,援用元件时,要先在构造体中阐明部分进展元件的阐明,然后在运用元件时进展元件例化。然后在运用元件时进展元件例化。3.1.6例化语句例化语句COMPONENT 元件名元件名 IS PORT (端口名表端口名表) ;END

40、 COMPONENT 元件名元件名 ; 元件例化语句由两部分组成元件例化语句由两部分组成第一部分:元件定义语句或元件阐明语句是对一个现第一部分:元件定义语句或元件阐明语句是对一个现成的设计实体定义为一个元件,语句的功能是对待调用的成的设计实体定义为一个元件,语句的功能是对待调用的元件作出调用声明,它的最简表达式如下所示:元件作出调用声明,它的最简表达式如下所示: 即对设计实体进展封装即对设计实体进展封装,使其只留出对外的接口界面使其只留出对外的接口界面,其中端口名表须其中端口名表须列出该元件对外通讯的各端口名列出该元件对外通讯的各端口名,命名方式与实体中的命名方式与实体中的 PORT()语句一

41、样,语句一样,元件定义语句必需放在构造体的元件定义语句必需放在构造体的ARCHITECTURE与与BIGIN之间之间-即在即在构造体的阐明区。构造体的阐明区。元件例化语句组成:元件例化语句组成:第二部分:映射语句,是此元件与当前设计实体第二部分:映射语句,是此元件与当前设计实体(顶层文件顶层文件)中中元件间及端口的衔接阐明。完成电路板上的元件元件间及端口的衔接阐明。完成电路板上的元件“插座的定插座的定义,义,“例化名标号名相当于例化名标号名相当于“插座名是不可短少的;插座名是不可短少的; 语句的表达式如下:语句的表达式如下:例化名例化名 : 元件名元件名 PORT MAP( 端口名端口名 =

42、衔接端口名衔接端口名,.); PORT MAP:端口映射端口映射/端口衔接端口衔接端口名端口名:是在元件例化语句中端口名表中已定义好的元件端口名字是在元件例化语句中端口名表中已定义好的元件端口名字衔接端口名衔接端口名:是在顶层系统中是在顶层系统中,预备与接入的元件的端口相连的通讯线名预备与接入的元件的端口相连的通讯线名或顶层系统的端口名或顶层系统的端口名“= : 衔接符号衔接符号 端口名端口名 = 衔接端口名衔接端口名,.部分完成部分完成“元件引脚与元件引脚与“插座引脚的衔接插座引脚的衔接“关联关联关联方法:关联方法:位置影射法位置影射法上层元件端口阐明语句中的信号名与上层元件端口阐明语句中的

43、信号名与PORT MAP中中的信号名书写顺序和位置一一对应。的信号名书写顺序和位置一一对应。例如,例如,u1:and1a1,b1,y1; 称号映射法称号映射法用用“=号将上层元件端口阐明语句中的信号名与号将上层元件端口阐明语句中的信号名与PORT MAP中的信号名关联起来。中的信号名关联起来。例如,例如,u1:and1a=a1,b=b1,y=y1; 【例【例3-8】 D触发器触发器图图3-6 D触发器触发器3.2存放器描画及其存放器描画及其VHDL言语景象言语景象3.2.1D触发器的触发器的VHDL描画描画LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;

44、ENTITY DFF1 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1 : STD_LOGIC ; -类似于在芯片内部定义一个数据的暂存节点类似于在芯片内部定义一个数据的暂存节点 BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; Q = Q1 ; -将内部的暂存数据向端口输出将内部的暂存数据向端口输出 END PROCESS

45、 ; END ARCHITECTURE bhv; 双横线双横线-是注释符号是注释符号1. 上升沿检测表达式和信号属性函数上升沿检测表达式和信号属性函数EVENT 关键词关键词EVENT是预定义信号属性,表示对当前的一个极小是预定义信号属性,表示对当前的一个极小的时间段内发惹事件的情况进展检测如时钟的边沿。的时间段内发惹事件的情况进展检测如时钟的边沿。VHDL经过以下表式来测定某信号的跳变边沿:经过以下表式来测定某信号的跳变边沿:EVENT 例如:例如:clockEVENT-检测以检测以clock为属性测试工程的事件为属性测试工程的事件clockEVENT AND clock=1;-检测检测cl

46、ock的上升沿的上升沿clockEVENT AND clock=0;-检测检测clock的下降沿的下降沿LAST_EVENT从信号最近一次的发生至今所阅历的时间,常用于检查从信号最近一次的发生至今所阅历的时间,常用于检查定时时间、建立时间、坚持时间和脉冲宽度等。定时时间、建立时间、坚持时间和脉冲宽度等。 D触发器触发器VHDL描画的言语景象阐明描画的言语景象阐明【例【例3-9】-比较器比较器ENTITY COMP_BAD IS PORT( a1 : IN BIT; b1 : IN BIT; q1 : OUT BIT); END ; ARCHITECTURE one OF COMP_BAD IS

47、 BEGIN PROCESS (a1,b1) BEGIN IF a1 b1 THEN q1 = 1 ; ELSIF a1 b1 THEN q1 b1 :q1= 1 a1 b1 THEN q1 = 1 ; ELSE q1 b1 :q1= 1 a1 b1:q1= 0 【例【例3-11】 D触发器触发器.PROCESS (CLK) BEGIN IF CLKEVENT AND (CLK=1) AND (CLKLAST_VALUE=0) THEN Q = D ; -确保确保CLK的变化是一次上升沿的跳变的变化是一次上升沿的跳变 END IF; END PROCESS ; 3.2.2VHDL实现时序电路的

48、不同表述实现时序电路的不同表述CLK LAST_VALUE: 预定义信号属性,表示最近一次事件预定义信号属性,表示最近一次事件EVENT发生前的值发生前的值 CLKLAST_VALUE 0为为true表示在表示在时辰前为时辰前为0 CLKLAST_VALUE 1为为true表示在表示在时辰前为时辰前为1【例【例3-12】 D触发器触发器.PROCESS (CLK) BEGIN IF CLK=1 AND CLKLAST_VALUE=0 -同例同例4-11 THEN Q = D ; -确保确保CLK的变化是从的变化是从0跳变到跳变到1 END IF; END PROCESS ; . . .【例【例

49、3-13】 D触发器触发器LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY DFF3 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF3 IS SIGNAL Q1 : STD_LOGIC; BEGIN PROCESS (CLK) BEGIN IF rising_edge(CLK) - 必需翻开必需翻开STD_LOGIC_1164程序包程序包 THEN Q1 = D ; END IF; Q = Q1

50、 ; END PROCESS ; END ;rising_edge()是是VHDL在在IEEE库中规范程库中规范程序包序包STD_LOGIC_1164内预定义函数。内预定义函数。【例【例3-14】 D触发器触发器.PROCESS BEGIN wait until CLK = 1; -利用利用wait语句语句 Q = D ;END PROCESS; . . .wait until:等待坚持至:等待坚持至【例【例3-15】 D触发器触发器.PROCESS (CLK) BEGIN IF CLK = 1 THEN Q = D ; -利用进程的启动特性产生对利用进程的启动特性产生对CLK的边沿检测的边沿

51、检测 END IF; END PROCESS ; 图图3-9 3-9 边沿型触发器时序波形边沿型触发器时序波形 【例【例3-16】 D触发器触发器.PROCESS (CLK,D) BEGIN IF CLK = 1 -电平触发型存放器电平触发型存放器 THEN Q = D ; END IF; END PROCESS ; 图图3-10 3-10 电平触发型存放器的时序波形电平触发型存放器的时序波形 Entity test1 isport (clk, d : in bit; q : out bit);end test1;architecture body of test1 issignal q1 :

52、 bit ;beginprocess (clk)begin if clk=1 AND clklast_value=0 then q1 = d; end if; q = q1 ;end process;end test1_body;LIBRARY IEEE;USE IEEE.std_logic_1164.all;Entity test1 isport (clk, d : in bit; q : out bit);end test1;architecture body of test1 isbeginprocess (clk)begin if rising_edge(clk) then q = d

53、; end if;end process;end test1_body;Entity test1 isport (clk : in bit; d : in bit; q : out bit);end test1;architecture body of test1 issignal q1 : bit ;beginprocess (clk,d)begin if (clk = 1) then q1 = d; end if; q = q1 ;end process;end body;Entity test1 isport (clk : in bit; d : in bit; q : out bit)

54、;end test1;architecture body of test1 issignal q1 : bit ;beginprocess (clk)begin if (clk = 1) then q1 = d; end if; q = q1 ;end process;end body;比较不同语句的比较不同语句的D触发器触发器VHDL程序程序小结:小结:l*时序逻辑电路只能利用进程中的顺序语句建立;时序逻辑电路只能利用进程中的顺序语句建立;l*常用和通用的边沿检测表达式:常用和通用的边沿检测表达式:lclockEVENTANDclock=1;-检测检测clock的上的上升沿升沿lclockE

55、VENTANDclock=0;-检测检测clock的下的下降沿降沿3.2.3异步时序电路设计异步时序电路设计异步时序电路的实现异步时序电路的实现: 一个时钟进程只能构成对应单一时钟信号的时一个时钟进程只能构成对应单一时钟信号的时序电路序电路,异步时序电路最好用多个时钟进程构成异步时序电路最好用多个时钟进程构成.时钟进程时钟进程:构成时序电路的进程构成时序电路的进程【例【例3-17】用两个时钟进程描画的异步时序电路】用两个时钟进程描画的异步时序电路 . ARCHITECTURE bhv OF MULTI_DFF IS SIGNAL Q1,Q2 : STD_LOGIC; BEGINPRO1: PR

56、OCESS (CLK) - -时钟进程时钟进程 BEGIN IF CLKEVENT AND CLK=1 THEN Q1 = NOT (Q2 OR A); END IF; END PROCESS ;PRO2: PROCESS (Q1) - -时钟进程时钟进程 BEGIN IF Q1EVENT AND Q1=1 THEN Q2 = D; END IF; = Q2 ; END PROCESS ;END ARCHITECTURE bhv Q1Q2【例【例3-18】 4位加法计数器位加法计数器ENTITY CNT4 IS PORT ( CLK : IN BIT ; Q : BUFFER INTEGER

57、RANGE 15 DOWNTO 0 ) ; END ; ARCHITECTURE bhv OF CNT4 IS BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q = Q + 1 ; END IF; END PROCESS ;END bhv;3.3计数器的计数器的VHDL设计设计3.3.14位二进制加法计数器设计位二进制加法计数器设计加、减算术操作符对加、减算术操作符对应的操作数的数据类应的操作数的数据类型为整数类型型为整数类型言语景象言语景象:*端口方式端口方式:Buffer缓冲缓冲*数据类型数据类型:INTEGER整数类型整数类

58、型*计数器累加表达式计数器累加表达式:Q=Q+1*加、减算术操作符加、减算术操作符:对应的操作数的数据类型为整数类型对应的操作数的数据类型为整数类型*数据对象更新时间数据对象更新时间:Q=Q+1下一时钟周下一时钟周期期3.3.2整数类型整数类型整数类型整数类型INTEGER:正整数、负整数和零:正整数、负整数和零 表示范围:表示范围:2147483647 2147483647可用可用32位有符号位有符号的二进制的二进制 数表示,即从数表示,即从(2311)到到+(2311 ,已定义在已定义在VHDL规规范程序包范程序包 STANDARD。可以运用预定义运算操作符,如。可以运用预定义运算操作符,

59、如: 加加“、减减“、 乘乘“、除、除“进展算术运算。进展算术运算。自然数类型自然数类型NATURUL:正整数和零正整数和零正整数类型正整数类型POSITIVE:正整数:正整数*VHDL仿真器将整数类型作为有符号数处置;仿真器将整数类型作为有符号数处置;*VHDL综合器将整数类型作为无符号数处置,要求运用综合器将整数类型作为无符号数处置,要求运用RANGE子句限定整数的范围,并根据限定范围决议信号或变子句限定整数的范围,并根据限定范围决议信号或变量的二进制的位数量的二进制的位数 例例:Q : BUFFER INTEGER RANGE 15 DOWNTO 0整数常量的书写方式例如如下:整数常量的

60、书写方式例如如下:1 1 十进制整数十进制整数0 0 十进制整数十进制整数3535 十进制整数十进制整数10E310E3 十进制整数十进制整数:1000:100016#D9#16#D9# 十六进制整数十六进制整数8#720#8#720# 八进制整数八进制整数 2#11010010# 2#11010010# 二进制整数二进制整数VHDL规定加、减算术操作符对应的操作数的数据类型为整数类型规定加、减算术操作符对应的操作数的数据类型为整数类型以数制基数表示的文字格式:数制以数制基数表示的文字格式:数制#数值数值# B二进制基数符号;二进制基数符号; O八进制基数符号;八进制基数符号; X16进制基数

温馨提示

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

评论

0/150

提交评论