




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第三章第三章 VHDL设计基础设计基础一、一、VHDL简介简介二、二、VHDL设计流程设计流程三、三、VHDL文件基本结构文件基本结构四、四、 VHDL基本语法规则基本语法规则2VHDL语言的成就有两个方面:语言的成就有两个方面:1. 描述复杂的电路系统描述复杂的电路系统;2. 成为硬件描述语言的标准成为硬件描述语言的标准。什么是什么是VHDL:VHSIC(Very High Speed Integrated Circuit)HardwareDescriptionLanguage3 ABEL AHDL Verilog HDL VHDLIEEE标准标准与其硬件相对应的硬件描述语言,受各自硬件设
2、与其硬件相对应的硬件描述语言,受各自硬件设计环境的束缚,设计不便于交流和移植。计环境的束缚,设计不便于交流和移植。 (Very High Speed Integrated Circuit HDL)标准:标准: IEEE STD 1076_1987;IEEE STD 1076_1993特点特点:1.与硬件和设计平台无关与硬件和设计平台无关2.强大的对电路系统及其行为的建模、描述能力强大的对电路系统及其行为的建模、描述能力3.易读性易读性4.层次化与结构化设计性能层次化与结构化设计性能一、硬件描述语言一、硬件描述语言HDL (Hardware Description Language)4ENTIT
3、Y mux21a IS PORT( a, b : IN BIT ; s : IN BIT; y : OUT BIT ) ;END ENTITY mux21a ;ARCHITECTURE one OF mux21a IS BEGIN y = a WHEN s = 0 ELSE b ;END ARCHITECTURE one ;实体结构体图图1 mux21a实体实体图图2 mux21a结构体结构体例例 2选选1多路选择器的多路选择器的VHDL描述描述5 2选选1多路选择器的多路选择器的VHDL描述描述【例例2】 ENTITY mux21a IS PORT ( a, b : IN BIT; s :
4、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 ; END ARCHITECTURE one ;【例【例3】 . . . ARCHITECTURE one OF mux21a IS BEGIN y = (a AND (NOT s) OR (b AND s) ; END ARCHITECTURE one;62选选1多路选择器的多路选择器的VHDL描述描述【例【例4】 ENT
5、ITY mux21a IS PORT ( a, b, s: IN BIT; y : OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN PROCESS (a,b,s) BEGIN IF s = 0 THEN y = a ; ELSE y = b ;END IF; END PROCESS;END ARCHITECTURE one ;72选选1多路选择器的多路选择器的VHDL描述描述图图 mux21a功能时序波形功能时序波形8 原理图原理图l绘制繁琐绘制繁琐,且绘制完成后不易修改。在绘制过程且绘制完成后不易修改。在绘制过程
6、中必须给出完整的、具体的电路结构图,不能中必须给出完整的、具体的电路结构图,不能进行抽象描述。进行抽象描述。l与具体的实现工艺有关。与具体的实现工艺有关。VHDL 语言语言l 用语言写成什么功能用语言写成什么功能,就能够完成相应的原理图就能够完成相应的原理图 设计设计,功能更强大。具有较强的抽象描述能力,描功能更强大。具有较强的抽象描述能力,描述更简洁,效率更高。述更简洁,效率更高。l设计者不能够控制电路是如何执行的设计者不能够控制电路是如何执行的 原理图输入与原理图输入与 VHDL文本输入设计的区别文本输入设计的区别9 为什么用为什么用VHDL语言替代原理图设计方法语言替代原理图设计方法?w
7、 容易修改容易修改w 功能比原理图更强大功能比原理图更强大w VHDL 语言中每个设备是独立的语言中每个设备是独立的,而且同样的代码而且同样的代码可用于不同的设计中可用于不同的设计中10 VHDL的功能和标准的功能和标准w VHDL 描述描述n输入端口输入端口n输出端口输出端口n电路的行为和功能电路的行为和功能w VHDL有过两个标准:有过两个标准:nIEEE Std 1076-1987 (called VHDL 1987)nIEEE Std 1076-1993 (called VHDL 1993)11 VHDL语言的主要优点语言的主要优点l 是一种多层次的硬件描述语言,覆盖面广,描述能力强是
8、一种多层次的硬件描述语言,覆盖面广,描述能力强l VHDL 有良好的可读性。有良好的可读性。l VHDL本身的生命期长。本身的生命期长。l支持大规模设计的分解和已有设计的再利用支持大规模设计的分解和已有设计的再利用。l具有丰富的仿真语句和库函数,可对具有丰富的仿真语句和库函数,可对VHDL源代码进行源代码进行早期仿真,有利于大系统的设计与验证早期仿真,有利于大系统的设计与验证lVHDL与硬件电路关系不大与硬件电路关系不大lVHDL设计不依赖于器件,与工艺无关设计不依赖于器件,与工艺无关l移植性好移植性好lVHDL体系符合体系符合TOP-DOWN和并行工程的设计思想和并行工程的设计思想l易于易于
9、ASIC实现实现12STEP1STEP1:建立建立 工作库文件夹工作库文件夹STEP2STEP2:输入设计项输入设计项目目原理图原理图/ /VHDLVHDL文本代文本代码码STEP3STEP3:存盘,注存盘,注意意 原理图原理图/ /文本取名文本取名STEP4STEP4:将设计将设计项项目设置成目设置成ProjectProjectSTEP5STEP5:选选择目标器择目标器件件 STEP11STEP11: 硬件测试硬件测试STEP9STEP9:引引脚脚锁定并编译锁定并编译STEP8STEP8:仿真测仿真测 试和波形分析试和波形分析STEP7STEP7:建立仿建立仿真波形文件真波形文件STEP6S
10、TEP6:启动编译启动编译STEP10STEP10:编编程程 下载下载/ /配置配置二、VHDL文本输入设计流程 13 VHDL主要用于描述数字系统的结构、主要用于描述数字系统的结构、行为、功能和接口。行为、功能和接口。 VHDL将一个设计(元件、电路、系统将一个设计(元件、电路、系统)分为:)分为: 外部(可视部分、端口)外部(可视部分、端口) 内部(不可视部分、内部功能、算法)内部(不可视部分、内部功能、算法) 三、三、VHDL的基本组成的基本组成14LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux21a IS PORT( a, b :
11、 IN BIT ; s : IN BIT; y : OUT BIT ) ;END ENTITY mux21a ;ARCHITECTURE one OF mux21a IS BEGIN y = a WHEN s = 0 ELSE b ;END ARCHITECTURE one ;VHDL的基本组成的基本组成结构体结构体(ARCHITECTURE)进程进程或其它并行结构或其它并行结构实体(实体(ENTITY)配置配置(CONFIGURATION)库、程序包库、程序包设设计计实实体体15lVHDL语言由保留关键字组成;语言由保留关键字组成;l一般,一般,VHDL语言对字母大小写不敏感;语言对字母大小
12、写不敏感;例外:例外: 、“ ”所括起来的字符、字符串所括起来的字符、字符串l每条每条VHDL语句由一个分号(;)结束语句由一个分号(;)结束lVHDL语言对空格不敏感,增加可读性;语言对空格不敏感,增加可读性;l在在“-”之后的是之后的是VHDL的注释语句;的注释语句;lVHDL有以下描述风格:有以下描述风格:行为描述行为描述数据流(寄存器传输数据流(寄存器传输RTL)描述)描述结构化描述结构化描述VHDL语言的基本特点语言的基本特点16VHDL相关语句说明相关语句说明1.1. 实体表达实体表达 定义系统定义系统的输入输的输入输出端口出端口ENTITY IS Generic Declarat
13、ions Port DeclarationsEND ; (1076-1987 version)END ENTITY ; (1076-1993 version)【例】【例】ENTITY e_name IS PORT ( p_name : port_m data_type; . p_namei : port_mi data_type );END e_name; END ENTITY e_name;17VHDL相关语句说明相关语句说明(1)(1)类属说明类属说明 确定实体或组件中定义的局部常数。模块化设计确定实体或组件中定义的局部常数。模块化设计时多用于不同层次模块之间信息的传递。可从外时多用于不同
14、层次模块之间信息的传递。可从外部改变内部电路结构和规模。必须放在端口说明部改变内部电路结构和规模。必须放在端口说明之前。之前。Generic ( 常数名称:类型常数名称:类型:=缺省值缺省值常数名称:类型常数名称:类型:=缺省值缺省值 ););18VHDL相关语句说明相关语句说明类属说明常用于定义:类属说明常用于定义: 实体端口的大小实体端口的大小 设计实体的物理特性设计实体的物理特性 总线宽度总线宽度 元件例化的数量等元件例化的数量等Entity mck is Generic ( width : integer:= 16); Port (add_bus : out std_logic_vec
15、tor (width-1 downto 0);19VHDL相关语句说明相关语句说明例:例:2输入与门的实体描述输入与门的实体描述Entity and2 is Generic ( risewidth : time:= 1 ns fallwidth: time:= 1 ns); Port ( a1: in std_logic; a0: in std_logic; z0: out std_logic);End and2;注意:数据类型注意:数据类型time用于仿用于仿真模块的设计。真模块的设计。 综合器仅支持数据类型为综合器仅支持数据类型为整数的类属值。整数的类属值。20(2)端口说明)端口说明端口
16、声明:确定输入输出端口的数目和类型。端口声明:确定输入输出端口的数目和类型。Port( 端口名称端口名称,端口名称,端口名称:端口模式:端口模式 数据类型;数据类型; 端口名称端口名称,端口名称,端口名称:端口模式:端口模式 数据类型);数据类型);21设计实体设计实体 提供设计模块的公共信息,是提供设计模块的公共信息,是VHDL设计电设计电 路的最基本部分。路的最基本部分。一个模块中仅有一个设计实体一个模块中仅有一个设计实体ENTITY mux21a IS PORT( a, b : IN BIT; s : IN BIT; y : OUT BIT ) ;END ENTITY mux21a ;实
17、体名实体名端口名端口名端口模式端口模式端口数据类型端口数据类型22VHDL相关语句说明相关语句说明2. 2. 实体名实体名: :不应用数字或中文定义实体名不应用数字或中文定义实体名, ,也不能用元件也不能用元件 名命名名命名, ,且不能用数字起头且不能用数字起头. .3. 3. PORTPORT语句和端口信号名语句和端口信号名: :描述电路的端口及其端口信描述电路的端口及其端口信 号号. .4. 4. 端口模式端口模式INOUTINOUTBUFFER5. 5. 数据类型数据类型BIT:BIT:规定的取值范围是逻辑位规定的取值范围是逻辑位0 0和和1 123VHDL相关语句说明相关语句说明6.
18、6. 结构体表达结构体表达【例】【例】ARCHITECTURE arch_name OF e_name IS (说明语句说明语句)BEGIN (功能描述语句功能描述语句)END ARCHITECTURE arch_name ;或:或:【例】【例】ARCHITECTURE arch_name OF e_name IS (说明语句说明语句)BEGIN (功能描述语句功能描述语句)END arch_name ;7. 7. 信号传输信号传输( (赋值赋值) )符号符号= = 和数据比较符号和数据比较符号 = =24VHDL相关语句说明相关语句说明8. 8. 逻辑操作符逻辑操作符ANDAND、OROR、
19、NOT,NAND(NOT,NAND(与非与非),NOR(),NOR(或非或非),XOR(),XOR(异或异或),XNOR(),XNOR(同或同或),NOT(),NOT(取反取反):):操作数数据类型是操作数数据类型是BIT,BOOLEAN,STD_LOGICBIT,BOOLEAN,STD_LOGIC25最基本的最基本的VHDL设计文本模板设计文本模板LIBRARY ;USE .ALL ; 参数部分参数部分程序包程序包接口部分接口部分实体实体描述部分描述部分结构体结构体ARCHITECTURE OF IS 声明区域声明区域 BEGIN 描述区域描述区域 END ARCHITECTURE ;ENT
20、ITY IS 端口定义端口定义 END ENTITY ;26VHDL 设计文本设计文本参数部分参数部分程序包程序包接口部分接口部分实体实体描述部分描述部分结构体结构体 1)设计实体)设计实体27设计实体设计实体 提供设计模块的公共信息,是提供设计模块的公共信息,是VHDL设计电设计电 路的最基本部分。路的最基本部分。一个模块中仅有一个设计实体一个模块中仅有一个设计实体ENTITY mux21a IS PORT( a, b : IN BIT; s : IN BIT; y : OUT BIT ) ;END ENTITY mux21a ;实体名实体名端口名端口名端口模式端口模式端口数据类型端口数据类
21、型28 标识符标识符 命名规则:命名规则: 有效的字符:包括有效的字符:包括26个大小写英文字母,数字包括个大小写英文字母,数字包括09 以及下以及下划线划线“_”。 任何标识符必须以英文字母开头。任何标识符必须以英文字母开头。 必须是单一下划线必须是单一下划线“_”,且其前后都必须有英文字母或数字。,且其前后都必须有英文字母或数字。 标识符中的英语字母不分大小写。标识符中的英语字母不分大小写。 允许包含图形符号允许包含图形符号(如回车符、换行符等如回车符、换行符等),也允许包含空格符。,也允许包含空格符。文字规则文字规则29Adder_13FFTSig_#NS_SS0L-MuxRstr _
22、_1Entity FFT3Sig_NL_MuxRstr _1Etity30端口模式端口模式:OUT、 IN、 INOUT、BUFFEROUT单向输出通道单向输出通道IN单向只读通道单向只读通道INOUT输入输出双向通道输入输出双向通道BUFFER与与INOUTINOUT类似,但输入时只允许反馈类似,但输入时只允许反馈31数据类型数据类型标量型标量型(Scalar Type)复合类型复合类型( (Composite Type)Composite Type)存取类型存取类型(Access Type)文件类型文件类型(Files Type)包括实数类型、整数类型、枚举类型和时间类型。包括实数类型、整
23、数类型、枚举类型和时间类型。包括数组型和记录型。包括数组型和记录型。为给定的数据对象提供存取方式。为给定的数据对象提供存取方式。提供多值存取类型。提供多值存取类型。32 VHDL的预定义数据类型的预定义数据类型1. 1. 布尔布尔( (BOOLEAN)BOOLEAN)数据类型:数据类型:FALSEFALSE和和TRUETRUE2. 2. 位位( (BIT)BIT)数据类型:包括数据类型:包括0 0和和1 13. 3. 位矢量位矢量( (BIT_VECTOR)BIT_VECTOR)数据类型:是用双引号括起数据类型:是用双引号括起来的数字序列,如:来的数字序列,如:“00110011” , , “
24、00FD00FD”等等, ,在使用位在使用位矢量时矢量时, ,必须注明位宽必须注明位宽, ,例如例如: :SIGNAL:a:BIT_VECTOR(7 DOWNTO 0);SIGNAL:a:BIT_VECTOR(0 TO 7);4. 4. 字符字符( (CHARACTER)CHARACTER)数据类型数据类型: :如如0 0, ,A A等等数据类型数据类型:指端口上流动的数据的表达格式指端口上流动的数据的表达格式33 VHDL的预定义数据类型的预定义数据类型5. 5. 整数整数( (INTEGER)INTEGER)数据类型数据类型: :范围范围-(2-(23131-1)-(2-1)-(23131
25、-1)-1)6. 6. 实数实数( (REAL)REAL)数据类型范围数据类型范围:-1.0E+38:-1.0E+381.0E+381.0E+388. 8. 字符串字符串( (STRING)STRING)数据类型数据类型: :”S.booS.boo”7. 7. 时间时间( (TIME)TIME)数据类型数据类型fs;-飞秒(飞秒(10-15S)VHDL中的最小时间单位中的最小时间单位ps=1000fs;-皮秒皮秒 ns=1000ps;-纳秒纳秒us=1000ns;-微秒微秒ms=1000us;-毫秒毫秒sec=1000ms;-秒秒min=60sec;-分分hr=60min;-时时34IEEE预
26、定义标准逻辑位与矢量预定义标准逻辑位与矢量1.1. 标准逻辑位标准逻辑位STD_LOGICSTD_LOGIC数据类型数据类型2. 2. 标准逻辑矢量标准逻辑矢量( (STD_LOGIC_VECTOR)STD_LOGIC_VECTOR)数据类型数据类型STD_LOGIC所定义的9种数据的含义是:U U表示未初始化的;表示未初始化的; X X表示强未知的;表示强未知的; 0 0表示强逻辑表示强逻辑0 0; 1 1表示强逻辑表示强逻辑1 1; Z Z表示高阻态;表示高阻态; W W 表表示弱未知的;示弱未知的; L L表示弱逻辑表示弱逻辑0 0; H H表示弱逻辑表示弱逻辑1 1; - -表示忽略。
27、表示忽略。35VHDL 设计文设计文本本参数部分参数部分程序包程序包接口部分接口部分实体实体描述部分描述部分结构体结构体2)结构体)结构体36结构体结构体 描述设计实体内部结构和端口之间的关系,包括描述设计实体内部结构和端口之间的关系,包括硬件的互连关系、数据的传输和变换以及动态行为。硬件的互连关系、数据的传输和变换以及动态行为。 一个实体可以对应多个结构体,但综合时只可选择其中一个实体可以对应多个结构体,但综合时只可选择其中 一个。一个。 每个结构体对应着实体不同的结构和算法实现方案,其地位每个结构体对应着实体不同的结构和算法实现方案,其地位是同等的,取名不可相重是同等的,取名不可相重。AR
28、CHITECTURE 结构体名结构体名 OF 实体名实体名 IS 说明语句说明语句BEGIN 功能描述语句功能描述语句END ARCHITECTURE 结构体名结构体名;37ARCHITECTURE one OF mux21a IS BEGIN y = a WHEN s = 0 ELSE b ;END ARCHITECTURE one ;结构体名结构体名实体名实体名功能描述功能描述区域区域38ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1 : STD_LOGIC ; BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1
29、THEN Q1 = D ; END IF; Q = Q1 ; END PROCESS ; END bhv;声明区域声明区域39功能描述区域功能描述区域进程语句进程语句信号赋值语句信号赋值语句子程序调用语句子程序调用语句元件例化语句元件例化语句结构体声明区域结构体声明区域数据类型数据类型常量、信号常量、信号子程序子程序元件元件40实体与结构体的关系:实体与结构体的关系: 一个设计实体可有多个结构体,代表实体一个设计实体可有多个结构体,代表实体的多种实现方式。各个结构体的地位相同。的多种实现方式。各个结构体的地位相同。设计实体设计实体结构体结构体1结构体结构体2结构体结构体n41VHDL 设计文设
30、计文本本参数部分参数部分程序包程序包接口部分接口部分实体实体描述部分描述部分结构体结构体3) 程序包程序包42程序包程序包VHDL预定义程序包预定义程序包设计者自身设计的程序包设计者自身设计的程序包已定义的常数、数据类型、元件调已定义的常数、数据类型、元件调用说明、子程序的一个集合用说明、子程序的一个集合使用库和程序包的使用库和程序包的VHDL语言格式:语言格式: LIBRARY ; USE . . ALL; 或或USE . ;43LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ; USE IEEE.STD_LOGIC_1164.RISING_EDGE ;
31、放在放在VHDL程序的最前面,表示以后在实体或结构体程序的最前面,表示以后在实体或结构体中要用到数据类型包中的数据类型。中要用到数据类型包中的数据类型。44IEEE.STD_LOGIC_1164(std_logic types& related functions)IEEE.STD_LOGIC_arith(arithmetic functions)IEEE.STD_LOGIC_signed(signed arithmetic functions)IEEE.STD_LOGIC_unsigned(unsigned arithmetic)库的种类:库的种类:(1)IEEE库库定义了定义了4个常用的程
32、序包:个常用的程序包:45库的种类:库的种类:(2)STD库库库中程序包为:库中程序包为:standard定义最基本的数据类型:定义最基本的数据类型: Bit , bit_vector , boolean , integer, real , time(3) 面向面向ASIC的库的库(4) WORK 库库(5) 用户定义库用户定义库46LIBRARY ;USE .ALL ; ENTITY IS 端口定义端口定义 END ENTITY ;ARCHITECTURE OF IS 声明区域声明区域 BEGIN 描述区域描述区域 END ARCHITECTURE ;调用程序包调用程序包语句语句标标准准程程
33、序序包包定定义义程程序序包包实体实体 及实及实体声体声明语明语句句结结构构体体1结结构构体体2结结构构体体n47VHDLVHDL语法语法数据对象数据对象文字规则文字规则数据类型数据类型操作符操作符关系关系逻辑逻辑算术算术符号符号基本语句基本语句并行并行顺序顺序( (进程,子程序进程,子程序) )其它其它( (属性描述与定义属性描述与定义) )其它其它( (子程序子程序, ,函数函数, ,过程过程, ,元件例化元件例化) )VHDLVHDL基本语法基本语法4.1 多路选择器的多路选择器的VHDL描述描述 4.1.1 2选选1多路选择器的多路选择器的VHDL描述描述 图图4-1 mux21a实体实
34、体 4.1 多路选择器的多路选择器的VHDL描述描述 4.1.1 2选选1多路选择器的多路选择器的VHDL描述描述 图图4-2 mux21a结构体结构体 4.1 多路选择器的多路选择器的VHDL描述描述 4.1.1 2选选1多路选择器的多路选择器的VHDL描述描述 【例例4-1】ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN y = a WHEN s = 0 ELSE b ;END ARCHITECTURE
35、 one ; 4.1 多路选择器的多路选择器的VHDL描述描述 4.1.1 2选选1多路选择器的多路选择器的VHDL描述描述 【例例4-2】 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 ; END ARCHITECTURE one ; 4.1 多路选择器的多路选择器的VHDL描述描述
36、 4.1.1 2选选1多路选择器的多路选择器的VHDL描述描述 【例例4-3】 ENTITY mux21a IS PORT ( a, b, s: IN BIT; y : OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN PROCESS (a,b,s) BEGINIF s = 0 THEN y = a ; ELSE y = b ;END IF; END PROCESS;END ARCHITECTURE one ; 4.1 多路选择器的多路选择器的VHDL描述描述 4.1.1 2选选1多路选择器的多路选择器的VHDL描述
37、描述 图图4-3 mux21a功能时序波形功能时序波形 4.2 寄存器描述及其寄存器描述及其VHDL语言现象语言现象 4.2.1 D触发器的触发器的VHDL描述描述 【例例4-6】LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ; 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 ; -类似于在芯片内部定义一个数据的类似于在芯片内部定义
38、一个数据的暂存节点暂存节点 BEGIN 图4-4 D触发器图图4-4 D触发器触发器4.2 寄存器描述及其寄存器描述及其VHDL语言现象语言现象 4.2.1 D触发器的触发器的VHDL描述描述 【例例4-6】PROCESS (CLK,Q1) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; END PROCESS ;Q = Q1 ; -将内部的暂存数据向端口输出(双横线将内部的暂存数据向端口输出(双横线-是注释符号)是注释符号) END bhv; 图4-4 D触发器图图4-4 D触发器触发器56D触发器触发器VHDL描述的语言现象说明描述的
39、语言现象说明1. 1. 标准逻辑位数据类型标准逻辑位数据类型STD_LOGICSTD_LOGICBIT数据类型定义:数据类型定义: TYPE BIT IS(0,1);TYPE BIT IS(0,1);STD_LOGIC数据类型定义:数据类型定义:TYPE STD_LOGIC IS (U,X,0,1,Z,W,L,H,-);TYPE STD_LOGIC IS (U,X,0,1,Z,W,L,H,-);STD_LOGIC所定义的9种数据的含义是:U U表示未初始化的;表示未初始化的; X X表示强未知的;表示强未知的; 0 0表示强逻辑表示强逻辑0 0; 1 1表示强逻辑表示强逻辑1 1; Z Z表示
40、高阻态;表示高阻态; W W 表示弱未知的;表示弱未知的; L L表示弱逻辑表示弱逻辑0 0; H H表示弱逻辑表示弱逻辑1 1; - -表示忽略。表示忽略。57D触发器触发器VHDL描述的语言现象说明描述的语言现象说明2. 2. 设计库和标准程序包设计库和标准程序包3. 3. SIGNALSIGNAL信号定义和数据对象信号定义和数据对象【例】【例】ARCHITECTURE bhv OF DFF1 IS BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q = D ; END IF; END PROCESS ;END ;使用库和程序包
41、的一般定义表式是:使用库和程序包的一般定义表式是: LIBRARY LIBRARY ; USE USE .ALL ; ALL ; 58D触发器触发器VHDL描述的语言现象说明描述的语言现象说明4. 4. 上升沿检测表式和信号属性函数上升沿检测表式和信号属性函数EVENTEVENT 关键词关键词EVENT是信号属性,是信号属性,VHDL通过以下表式来测定通过以下表式来测定某信号的跳变边沿:某信号的跳变边沿: EVENTEVENT是是对对clock标识符的信号在当前一个极小的时间段标识符的信号在当前一个极小的时间段内发生时内发生时间的情况进行检测间的情况进行检测. 所谓发生事件所谓发生事件,就是就
42、是clock在其数据类型在其数据类型的取值范围内发生变化的取值范围内发生变化,从一种取值转变到另一种取值从一种取值转变到另一种取值(或电或电平方式平方式) 如果如果clock数据类型定义为数据类型定义为STD_LOGIC,则在则在时间内时间内,clock从其数据类型允许的从其数据类型允许的9个值中任意一个值向另一个值个值中任意一个值向另一个值跳变跳变,如由如由0变成变成1 ,由由Z变成变成0等等,都认为发生了事件都认为发生了事件.59D触发器触发器VHDL描述的语言现象说明描述的语言现象说明4. 4. 上升沿检测表式和信号属性函数上升沿检测表式和信号属性函数EVENTEVENT 如果以上短语是
43、如果以上短语是clockEVENT AND clock=1 ,则表示一则表示一旦旦clockEVENT在在时间内测得时间内测得clock有一个跳变有一个跳变,而此小时而此小时间段间段之后又测得之后又测得clock为高电平为高电平1 ,即满足此语句右侧的即满足此语句右侧的clock=1 的条件的条件,于是两者相与于是两者相与”AND”后返回值为后返回值为”true”,由由此便可以从当前的此便可以从当前的clock=1 推断在此前的推断在此前的时间段内时间段内,clock必为必为0(设设clock的数据类型为的数据类型为BIT). 因此因此,以上的表达式就可以用来对信号以上的表达式就可以用来对信号
44、clock的上升沿进的上升沿进行检测行检测, clockEVENT AND clock=1 就成了就成了边沿测试语句边沿测试语句60D触发器触发器VHDL描述的语言现象说明描述的语言现象说明4. 4. 上升沿检测表式和信号属性函数上升沿检测表式和信号属性函数EVENTEVENT 如果如果CLK的数据类型是的数据类型是STD_LOGIC,则它的可能的取值则它的可能的取值有有9中中,而而CLKEVENT为真的条件是为真的条件是CLK在九种数据中的在九种数据中的任何两种间的跳变任何两种间的跳变,因而当因而当CLKEVENT AND CLK=1 为真时为真时,并不能推定并不能推定CLK在在时刻前是时刻
45、前是0(例如例如,它可以从它可以从Z变到变到1). 为确保为确保CLK发生的是一次上升沿的跳变发生的是一次上升沿的跳变,可采可采用如下语句用如下语句:CLKEVENT AND (CLK=1) AND (CLKLAST_VALUE=0)61最常用的信号属性:最常用的信号属性:EVENTEVENT(BooleanBoolean) 对对该属性所附着的信号该属性所附着的信号在当前的一个极小时间段在当前的一个极小时间段内发生内发生事件的情况进行检测。事件的情况进行检测。 如果有事件发生在该如果有事件发生在该信号信号上(即信号有变化),上(即信号有变化), 则则EVENTEVENT取值取值TrueTrue
46、; 否则取值否则取值FalseFalse。信号属性函数信号属性函数EVENTEVENT属性:关于信号、常量、变量、实体、结构体、类型等的一些属性:关于信号、常量、变量、实体、结构体、类型等的一些特征。特征。信号类,数据区间类,数值类,数组类,用户定义类信号类,数据区间类,数值类,数组类,用户定义类。62上升沿检测表达式上升沿检测表达式 可以利用可以利用信号属性函数信号属性函数EVENTEVENT,通过以下表式来测定某时通过以下表式来测定某时钟信号的跳变边沿:钟信号的跳变边沿: EVENTEVENT如:如: CLKEVENT AND CLK = 1 或:或: CLK = 1 AND CLKEVE
47、NT表示时钟的上升沿表示时钟的上升沿而:而: CLKEVENT AND CLK = 0 或:或: CLK = 0 AND CLKEVENT表示时钟的下降沿表示时钟的下降沿rising_edge(clk) 表示时钟的上升沿表示时钟的上升沿falling_edge(clk) 表示时钟的下降沿表示时钟的下降沿其他表示时钟边沿的表示:其他表示时钟边沿的表示:635. 5. 不完整条件语句与时序电路不完整条件语句与时序电路【例】【例】ENTITY COMP_BAD IS PORT( a1 : IN BIT; b1 : IN BIT; q1 : OUT BIT ); END ; ARCHITECTURE
48、one OF COMP_BAD IS BEGIN PROCESS (a1,b1) BEGIN IF a1 b1 THEN q1 = 1 ; ELSIF a1 b1 THEN q1 b1 THEN q1 = 1 ; ELSE q1 = 0 ; END IF; END PROCESS ; END 图图 电路图电路图654.2.3实现时序电路的实现时序电路的VHDL不同表达方式不同表达方式【例【例4-9】.PROCESS (CLK) BEGINIF CLKEVENT AND (CLK=1) AND (CLKLAST_VALUE=0) THEN Q = D ; -确保确保CLK的变化是一次上升沿的跳变
49、的变化是一次上升沿的跳变 END IF; END PROCESS ;【例【例4-10】.PROCESS (CLK) BEGINIF CLK=1 AND CLKLAST_VALUE=0 -同例同例4-13 THEN Q = D ; END IF; END PROCESS ;664.2.3 实现时序电路的实现时序电路的VHDL不同表达方式不同表达方式【例【例4-11】LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY DFF3 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_L
50、OGIC ); END ; ARCHITECTURE bhv OF DFF3 IS SIGNAL Q1 : STD_LOGIC; BEGIN PROCESS (CLK) BEGIN IF rising_edge(CLK) - CLK的数据类型必须是的数据类型必须是STD_LOGIC THEN Q1 = D ; END IF; Q = Q1 ; END PROCESS ; END ;67 4.2.3实现时序电路的实现时序电路的VHDL不同表达方式不同表达方式【例【例4-12】 . PROCESS BEGIN wait until CLK = 1 ; -利用利用wait语句语句 Q = D ; E
51、ND PROCESS;【例【例4-13】. PROCESS (CLK) BEGIN IF CLK = 1 THEN Q = D ; -利用进程的启动特性产生对利用进程的启动特性产生对CLK的边的边沿检测沿检测 END IF; END PROCESS ;【例【例4-14】. PROCESS (CLK,D) BEGIN IF CLK = 1 -电平触发型寄存器电平触发型寄存器 THEN Q = D ; END IF; END PROCESS ;68比较用5种不同语句的D触发器VHDL程序Entity test1 isport (clk, d : in bit; q : out bit);end t
52、est1;architecture body of test1 issignal q1 : 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 isbeginproc
53、ess (clk,d)begin if rising_edge(clk) then q = d; 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
54、 isport (clk : in bit; d : in bit; q : out bit);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;69实现时序电路的实现时序电路的VHDL不同表达方式不同表达方式图图 边沿型触发器时序波形边沿型触发器时序波形图图 电平触发型寄存器的时序波形电平触发型寄存器的时序波形704.2.4异步时序电异步时序电路设计路设计 【
55、例例4-15】. ARCHITECTURE bhv OF MULTI_DFF IS SIGNAL Q1,Q2 : STD_LOGIC; BEGINPRO1: PROCESS (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; QQ = Q2 ; END PROCESS ; X康芯科技康芯科技图图4-10 半加器半加器h_adder电路图及其真值表电路图及其真值
56、表 4.3.1 半加器描述半加器描述 4.3 1位二进制全加器的位二进制全加器的VHDL描述描述 I113coasob1001010110001100cosobanotxnor2and2X康芯科技康芯科技图图4-11 全加器全加器f_adder电路图及其实体模块电路图及其实体模块 4.3.1 半加器描述半加器描述 4.3 1位二进制全加器的位二进制全加器的VHDL描述描述 I113aincoutcoutainbinsumcinbinsumcinf_adderor2afedu3u2u1baccosoBcosoBh_adderAh_adderA4.3.1 半加器描述半加器描述 【例例4-16】LI
57、BRARY IEEE; -半加器描述半加器描述(1):布尔方程描述方法:布尔方程描述方法USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (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; 【例例4-17】LIBRARY IEEE; -半加器描述半加器描述(2):真
58、值表描述方法:真值表描述方法USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (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; EN
59、D PROCESS; END ARCHITECTURE fh1 ; 76CASE语句属于顺序语句语句属于顺序语句,因此必须放在进程语句中使用因此必须放在进程语句中使用CASE语句的一般表述如下语句的一般表述如下:CASE ISWHEN = ;WHEN = ;WHEN OTHERS = ;END CASE;CASE语句语句77= 不是操作符不是操作符,它的含义相当于它的含义相当于THEN注意注意:WHEN条件句中的选择值或标识符所代表的值必须在表达式条件句中的选择值或标识符所代表的值必须在表达式的取值范围内的取值范围内除非所有条件句中的选择值能够完全覆盖除非所有条件句中的选择值能够完全覆盖CAS
60、E语句中表达语句中表达式的取值式的取值,否则最末一句必须加上否则最末一句必须加上”WHEN OTHERS = 顺序顺序语句语句”,使用这一句的目的是为了涵盖所有的可能取值使用这一句的目的是为了涵盖所有的可能取值,避免综合避免综合器加入不必要的锁存器器加入不必要的锁存器.CASE语句中的选择值只能出现一次语句中的选择值只能出现一次,不允许有相同选择值的不允许有相同选择值的条件语句出现条件语句出现.CASE语句执行中必须选中语句执行中必须选中,且只能选中所列条件语句中的一且只能选中所列条件语句中的一条条CASE语句语句4.3.2 CASE语句语句 2. 2. 标准逻辑矢量数据类型标准逻辑矢量数据类
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 三基三严护理知识培训课件
- 金融行业面试必 备:海南农信面试题库深度解析与求职指导
- 内科护理(中级)题库检测试题打印(综合题)附答案详解
- 小儿视光门诊基本知识培训课件
- 初中书面表达主题分类训练10篇-环境保护
- 小儿生长发育课件讲解
- 农业开发种养殖合同范本
- KTV商标使用合同范本
- 二手停车场销售合同协议
- 与装修公司补充合同范本
- 城市轨道交通工程监测技术
- 2025年海南省财金集团有限公司招聘笔试冲刺题(带答案解析)
- 2025年新七年级数学暑假衔接 (人教版)专题05 有理数的加法和减法 (3知识点+10大题型+思维导图+过关测) (学生版)
- 2025年综合基础知识题库(含答案)
- 恙虫病疑难病例讨论记录
- 患者知情同意培训
- 骨灰管理员职业技能鉴定经典试题含答案
- 火锅店股东协议合同范本
- 村流动人口管理办法细则
- (正式版)HGT 6313-2024 化工园区智慧化评价导则
- 工程项目管理实施方案(5篇)
评论
0/150
提交评论