第五章 VHDL语言基础_第1页
第五章 VHDL语言基础_第2页
第五章 VHDL语言基础_第3页
第五章 VHDL语言基础_第4页
第五章 VHDL语言基础_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

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

文档简介

1、重点知识点重点知识点v VHDL程序的基本语法结构程序的基本语法结构v 常用的数据类型常用的数据类型v 数据对象数据对象v 基本操作符基本操作符5.1 VHDL5.1 VHDL语言简介语言简介VHDL程序的基本结构一个完整的VHDL语言程序通常包含 实体(Entity) 结构体(Architecture) 库(Library) 程序包(Package) 配置(Configuration)2选选1多路选择器的多路选择器的VHDL设计实例设计实例2选选1数据选择器的思想:数据选择器的思想: 两个输入信号两个输入信号a,b,根据控制信号,根据控制信号s的取值的取值0或或1的不同,从输出端的不同,从输

2、出端y选择输出。选择输出。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;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 one ;2选选1数据选择器的数据选择器的V

3、HDL语言(语言(1) 程序包程序包 实体实体 结构体结构体 - 库库实体:实体:用于描述所设计系统的外部接口特性;即该设计实用于描述所设计系统的外部接口特性;即该设计实体对外的输入、输出端口数量和端口特性。体对外的输入、输出端口数量和端口特性。结构体:结构体:用于描述实体所代表的系统内部的结构和行为;用于描述实体所代表的系统内部的结构和行为;它描述设计实体的结构、行为、元件及内部连接关系。它描述设计实体的结构、行为、元件及内部连接关系。库:库:存放已经编译的实体、结构体、程序包集合和配置。存放已经编译的实体、结构体、程序包集合和配置。程序包:程序包:存放各设计模块都能共享的数据类型、常数和子

4、存放各设计模块都能共享的数据类型、常数和子程序库;程序库;配置:配置:实体对应多个结构体时,从与某个实体对应的多个实体对应多个结构体时,从与某个实体对应的多个结构体中选定一个作为具体实现。结构体中选定一个作为具体实现。 各组成部分功能:各组成部分功能: 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; BEGIN d = a AND (NOT S); e = b AND s ; y

5、 = d OR e ; END ARCHITECTURE one ;2选选1数据选择器的数据选择器的VHDL语言(语言(2) 实体实体 结构体结构体2选选1数据选择器的仿真波形数据选择器的仿真波形91.1.行为描述方式行为描述方式 只需描述输入与输出的行为,不关只需描述输入与输出的行为,不关注具体的电路实现,一般通过一组注具体的电路实现,一般通过一组顺序顺序的的VHDLVHDL进程进程来反映设计的功能和算法;来反映设计的功能和算法;2.2.数据流描述方式数据流描述方式 这种描述将数据看成从设计的输入这种描述将数据看成从设计的输入端到输出端,通过并行语句表示这些数端到输出端,通过并行语句表示这些

6、数据形式的改变,即信号到信号的数据流据形式的改变,即信号到信号的数据流动的路径和形式进行描述;动的路径和形式进行描述;结构体的描述方式结构体的描述方式3.3.结构描述方式结构描述方式 多用在多用在多层次多层次的设计中,通过调用的设计中,通过调用库中得元件或已经设计好的元件,进行库中得元件或已经设计好的元件,进行组合来完成实体功能的描述,它只表示组合来完成实体功能的描述,它只表示元件和元件之间的互连元件和元件之间的互连. .5.3 VHDL5.3 VHDL程序语法格式程序语法格式VHDLVHDL书写格式:书写格式: VHDL VHDL语言不区分大小写;语言不区分大小写; 表示括号内的内容是可选的

7、,表示括号内的内容是可选的, 表示括表示括 号内的内容是可重复出现的;号内的内容是可重复出现的; VHDL VHDL用双横线用双横线”-“-“表示注释;表示注释; 保存的文件名与实体名字应该一致。保存的文件名与实体名字应该一致。实体:实体:用于描述所设计系统的外部接口特性;即该设计用于描述所设计系统的外部接口特性;即该设计实体对外的输入、输出端口数量和端口特性。实体对外的输入、输出端口数量和端口特性。5.3.1 实体声明实体声明1. 1. 实体表达实体表达ENTITY e_name IS PORT ( p_name : port_m data_type; . . . . p_namei : p

8、ort_mi data_type );END ENTITY e_name;例例2:D触发器的实体描述触发器的实体描述 ENTITY DFF1 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ENTITY DFF1;ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT );END ENTITY mux21a;例例1 1:2 2选一数据选择器实体描述选一数据选择器实体描述2 2. . PORTPORT(端口)说明端口)说明POR

9、T ( PORT ( 端口名端口名 : : 端口模式端口模式 数据类型数据类型 ; ; 。 端口名端口名 : : 端口模式端口模式 数据类型数据类型 ) ; ) ; 端口名端口名为实体的每一个对外通道的名字,符合标志符规范 端口模式端口模式是指这些通道上的数据流动方式。 数据类型数据类型是指端口上流动的数据的表达格式或取值类 型,VHDL要求只有相同数据类型的端口信号和操作数 才能相互作用。PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT );PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT S

10、TD_LOGIC );PORTPORT端口举例端口举例3 3. . 端口模式端口模式INOUTINOUTBUFFERout (输出输出):只能被赋值,用于不能反馈的输出;只能被赋值,用于不能反馈的输出;in (输入输入):只能读,用于时钟输入、控制输入单向数据输入;只能读,用于时钟输入、控制输入单向数据输入;inout(输入输出输入输出) :既可读又可被赋值,被读的值是端口输入值既可读又可被赋值,被读的值是端口输入值而不是被赋值,作为双向端口。而不是被赋值,作为双向端口。buffer(缓冲缓冲):类似于输出,但可以读,读的值是被赋值,用类似于输出,但可以读,读的值是被赋值,用做内部反馈用,不能

11、作为双向端口使用。做内部反馈用,不能作为双向端口使用。4. 4. 数据类型:即端口采用的数据类型,它决定了端口可选的数数据类型:即端口采用的数据类型,它决定了端口可选的数 值范围值范围 1 1、Boolean Boolean 可取值可取值“True”True”或或“False”False”; 2 2、Bit Bit 可取值可取值“0”0”或或“1”1”; 3 3、Bit_Vector Bit_Vector 由由STDSTD库中的标准包库中的标准包 STANDARDSTANDARD支持;支持; 4 4、Integer Integer 可用作循环的指针或常数可用作循环的指针或常数, ,一定要指明范

12、围一定要指明范围 5 5、Std_logic Std_logic 和和Std_logic_VectorStd_logic_Vector 由由IEEE_Std_Logic_1164IEEE_Std_Logic_1164 程序包支持,该程序包需要显示声明程序包支持,该程序包需要显示声明 5.3.2 结构体声明与描述结构体声明与描述1.1.结构体的一般表达如下:结构体的一般表达如下: ARCHITECTUREARCHITECTURE 结构体名称结构体名称 OFOF 实体名称实体名称 ISIS 说明语句说明语句 BEGINBEGIN ( (功能描述语句功能描述语句) ) END ARCHITECTUR

13、E END ARCHITECTURE 结构体名称结构体名称;2.2.结构体的组成部分结构体的组成部分说明语句说明语句。可以不要可以不要功能描述语句功能描述语句。结构体说明语句:结构体说明语句:位于 architecture 和 begin 之间,对结构体内部的使用信号、常数、元件、数据类型和函数进行说明,包括:使用语句、程序说明、子程序体、类型说明、子类型说明、常数说明、信号说明、元件说明。2.2.结构体的一般表达如下:结构体的一般表达如下: ARCHITECTUREARCHITECTURE 结构体名称结构体名称 OFOF 实体名称实体名称 ISIS 说明语句说明语句 BEGINBEGIN (

14、 (功能描述语句功能描述语句) ) END ARCHITECTUREEND ARCHITECTURE 结构体名称结构体名称;2.2.结构体的一般表达如下:结构体的一般表达如下: ARCHITECTURE ARCHITECTURE 结构体名称结构体名称 O OF F 实体名称实体名称 ISIS 说明语句说明语句 BEGINBEGIN ( (功能描述语句功能描述语句) ) END ARCHITECTURE END ARCHITECTURE 结构体名称结构体名称;功能描述语句:功能描述语句:处于 begin 与 end 之间,描述结构体的行为与连接关系,它是构成结构体的主体。描述实体的逻辑行为、以各

15、种不同的描述风格表达的功能描述语句,或针对层次设计中,以元件例化语句为特征的外部元件(设计实体)端口间的连接。结构体的描述方法:结构体的描述方法: 行为描述,即按算法的路径来描述; 数据流描述或 RTL 描述,即采用寄存器传输描述; 结构化描述,即采用例化元件,在高层次的设计中调用低 层次的实体作为元件的过程。2.2.结构体的一般表达如下:结构体的一般表达如下: ARCHITECTUREARCHITECTURE 结构体名称结构体名称 OFOF 实体名称实体名称 I IS S 说明语句说明语句 BEGINBEGIN ( (功能描述语句功能描述语句) ) END ARCHITECTUREEND A

16、RCHITECTURE 结构体名称结构体名称;例例1 1:2 2选一数据选择器的结构体描述选一数据选择器的结构体描述(1 1) 2 2选一数据选择器采用行为描述方式:选一数据选择器采用行为描述方式:ARCHITECTURE one OF mux21a ISBEGIN y = a WHEN s = 0 ELSE b ;END ARCHITECTURE one ;功能说明功能说明ARCHITECTURE one OF mux21a IS SIGNAL d,e : BIT;BEGIN d = a AND (NOT S) ; e = b AND s ; y = d OR e ; END ARCHITE

17、CTURE one ;(2 2) 2 2选一数据选择器采用数据流描述方式:选一数据选择器采用数据流描述方式:功能说明功能说明结构体说明结构体说明-ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1 : STD_LOGIC ; BEGIN PROCESS (CLK,Q1) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; END PROCESS ; Q = Q1 ; END bhv;例例2 2:D触发器的结构体描述触发器的结构体描述功能说明功能说明结构体说明结构体说明- 1.1.时序电路必须放在进程中;时序电路必须放在

18、进程中; 3. 3.时钟上升沿的表示方法时钟上升沿的表示方法(1 1)IF CLKEVENT AND CLK =1IF CLKEVENT AND CLK =1(2 2)IF CLKEVENT AND (CLK =1)IF CLKEVENT AND (CLK =1) AND(CLKLAST_VALUE =0) AND(CLKLAST_VALUE =0)(3 3)IF rising_edge(CLK)IF rising_edge(CLK)2.2.不完整的条件语句构成时序电路;不完整的条件语句构成时序电路;完整的条件语句构成组合电路。完整的条件语句构成组合电路。 5.3.3 库库1、库、库: 经编译

19、后的数据的集合,它存放已经编译的实体、结构体、包和配置。库说明总是放在设计单元的最前面库说明总是放在设计单元的最前面。2、库的典型结构:库的典型结构:库库Library包集包集Package函数函数过程过程元件元件常量常量类型类型5.3.3 库库3、库的种类、库的种类(1)IEEE库库(1)IEEE库库IEEE库定义了四个常用的程序包库定义了四个常用的程序包(P321):std_logic_1164 (std_logic (9值)值)& std_logic_vector 逻辑值的逻辑值的逻辑运算逻辑运算)std_logic_arith (signed、unsigned 、small_int数据

20、类数据类 型的型的算术、比较运算算术、比较运算函数函数) std_logic_signed (有符号数有符号数的不同数据类型的的不同数据类型的重载重载运运 算符及算符及转换函数转换函数. std_logic_unsigned (无符号数无符号数的不同数据类型的重载的不同数据类型的重载 运算符及转换函数运算符及转换函数. (2)STD库库(3)ASIC 矢量库矢量库 各公司提供的 ASIC 称逻辑门库(4)WORK 库库 为现行作业库,存放设计者的 VHDL 语言程序(5)用户定义的库)用户定义的库 用户为自身设计需要所开发的共用包集合和实体。3. 3. 库的使用库的使用 除除 WORKWORK

21、、STD STD 库外,其他库在使用之前必须要说明。库外,其他库在使用之前必须要说明。格式: LIBRARYLIBRARY 库名; USEUSE 库名.程序包名.项目名 ; USEUSE 库名.程序包名.ALL ; 例如: LIBRARYLIBRARY IEEE ; USEUSE IEEE.STD_LOGIC_1164.ALL ; USEUSE IEEE.STD_LOGIC_1164.STD_ULOGIC ; 4. 库说明的作用范围:库说明的作用范围: 从实体声明开始到其所属构造体、配置为止。5.3.4 程序包程序包1、程序包、程序包:集合用于封装属于多个设计单元分享的公共信息2、程序包的组成

22、、程序包的组成:3、程序包的结构、程序包的结构(1 1)程序包声明)程序包声明 PACKAGEPACKAGE 程序包名程序包名 ISIS 程序包首说明部分程序包首说明部分 ENDEND 程序包名程序包名; ;(2 2)程序包主体)程序包主体 PACKAGE BODY PACKAGE BODY 程序包名程序包名 ISIS 程序包体说明部分程序包体说明部分 ENDEND 程序包名程序包名; ;4、程序包的使用、程序包的使用use work.包集合名包集合名.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;5、常用的预

23、定义的程序包、常用的预定义的程序包5.4 VHDL5.4 VHDL文字规则文字规则1. 数字表达数字表达(1 1)整数:)整数:整数都是十进制的数,如:整数都是十进制的数,如: 5 5, 678 678, 0 0, 156 156E2(=15600)E2(=15600), 45_234_287 (=45234287) 45_234_287 (=45234287) (2 2)实数:)实数:实数也都是十进制的数,但必须带有小数点,如:实数也都是十进制的数,但必须带有小数点,如: 5.0 5.0,670_551.453 (=670551.453)670_551.453 (=670551.453),.

24、178.178, 44.99 44.99E-2(=0.4499)E-2(=0.4499) (3 3)物理量文字)物理量文字( (VHDLVHDL综合器不接受此类文字综合器不接受此类文字) )。如:。如: 60 60s (60s (60秒秒) ), 100 100m (100m (100米米) ), k (k (千欧姆千欧姆) ), 177 177A (177A (177安培安培) )5.4 VHDL5.4 VHDL文字规则文字规则(4 4)以数制基数表示的文字:)以数制基数表示的文字:用这种方式表示的数由五个部分组成。用这种方式表示的数由五个部分组成。 SIGNALSIGNAL d1,d2,d

25、3,d4,d5, : d1,d2,d3,d4,d5, : INTEGERINTEGER RANGE 0 TO 255; RANGE 0 TO 255; d1 = 10#170# ; - ( d1 = 10#170# ; - (十进制表示,等于十进制表示,等于 170) 170) d2 = 16#FE# ; - ( d2 = 16#FE# ; - (十六进制表示,等于十六进制表示,等于 254) 254) d3 = 2#1111_1110#; - ( d3 = 2#1111_1110#; - (二进制表示,等于二进制表示,等于 254) 254) d4 = 8#376# - ( d4 = 8#3

26、76# - (八进制表示,等于八进制表示,等于 254) 254) d5 = 16#E#E1 - ( d5 = 16#E#E1 - (十六进制表示,等于十六进制表示,等于2#11102#11100 0000#000#,等于,等于224)224) 5.4 VHDL5.4 VHDL文字规则文字规则(5 5)字符:)字符:用单引号括起,不具有固定值用单引号括起,不具有固定值 。大、小写含义不同。大、小写含义不同 a a * * abc abc(6 6)字符串:)字符串:用双引号括起,不具有固定值用双引号括起,不具有固定值 。大、小写含义不同。大、小写含义不同 ERROR ERROR , Both S

27、 and Q equal to 1 Both S and Q equal to 1 , X X ,BB$CC“BB$CC“(7 7)位串:)位串:由预定义数据类型位构成的一维数组。由预定义数据类型位构成的一维数组。 B B:二进制基数符号,表示二进制位二进制基数符号,表示二进制位0 0或或1 1,在字符串中的,在字符串中的 每位表示一个每位表示一个BitBit。 O: O: 八进制基数符号,八进制基数符号,代表一个八进制数,即一个代表一个八进制数,即一个3 3位的二进制数。位的二进制数。 X X:十六进制基数符号十六进制基数符号(0(0F)F),代表一个十六进制数,即代表一个十六进制数,即 一

28、个一个4 4位的二进制数。位的二进制数。 2. 字符串表达字符串表达5.4 VHDL5.4 VHDL文字规则文字规则(7 7)位串:)位串:由预定义数据类型位构成的一维数组。由预定义数据类型位构成的一维数组。 B B:二进制基数符号,表示二进制位二进制基数符号,表示二进制位0 0或或1 1,在字符串中的,在字符串中的 每位表示一个每位表示一个BitBit。 O: O: 八进制基数符号,八进制基数符号,代表一个八进制数,即一个代表一个八进制数,即一个3 3位的二进制数。位的二进制数。 X X:十六进制基数符号十六进制基数符号(0(0F)F),代表一个十六进制数,即代表一个十六进制数,即 一个一个

29、4 4位的二进制数。位的二进制数。data1 = B1_1101_1110“ data1 = B1_1101_1110“ 二进制数数组,位矢数组长度是二进制数数组,位矢数组长度是9 9data2 = O15 data2 = O15 八进制数数组,位矢数组长度是八进制数数组,位矢数组长度是6 6data3 = X“AD0” data3 = X“AD0” 十六进制数数组,位矢数组长度是十六进制数数组,位矢数组长度是1212data5 = 101_010_101_010 data5 = 101_010_101_010 表达错误,缺表达错误,缺B B。data6 = 0AD0 data6 = 0AD0

30、 表达错误,缺表达错误,缺X X。3. 标识符标识符 包括包括26个大小写英文字母,数字个大小写英文字母,数字09 以及下划线以及下划线“_”。 任何标识符必须以英文字母开头任何标识符必须以英文字母开头 不能连续使用下划线,不能以下划线不能连续使用下划线,不能以下划线“_”结尾结尾 标识符中间不能出现空格标识符中间不能出现空格 标识符中的英语字母不分大小写。标识符中的英语字母不分大小写。 标识符不能使用标识符不能使用VHDL语言的关键字和元件名语言的关键字和元件名 允许包含图形符号允许包含图形符号(如回车符、换行符等如回车符、换行符等)例如:例如: 合法标识符:合法标识符:decoder38,

31、 fft_1,th_1_2,非法标识符:非法标识符:8couter, data_bus, sina#1,entity ,and, dec_等等5.5 VHDL5.5 VHDL基本数据类型基本数据类型VHDLVHDL是一种数据类型概念很强的语言。任何一个对象声明时是一种数据类型概念很强的语言。任何一个对象声明时必须指明数据类型,并且只能携带和返回指定的数据类型。必须指明数据类型,并且只能携带和返回指定的数据类型。1.VHDL1.VHDL基本数据类型基本数据类型2.2. 常用的常用的VHDL预定义数据类型预定义数据类型常用的常用的VHDLVHDL预定义数据类型存放在预定义数据类型存放在STDSTD

32、库的库的STANDARDSTANDARD程序包中在程序包中在程序开始时不需声明其程序包。程序开始时不需声明其程序包。3. IEEE预定义标准逻辑位与矢量预定义标准逻辑位与矢量 在在IEEEIEEE库中程序包库中程序包STD_LOGIC_1164STD_LOGIC_1164中定义了另外一类中定义了另外一类常用的数据类型常用的数据类型STD_LOGICSTD_LOGIC和和STD_LOGIC_vectorSTD_LOGIC_vector。使用这。使用这些类型时,要在些类型时,要在程序开始时先声明其程序包。程序开始时先声明其程序包。(1 1)标准逻辑位)标准逻辑位STD_LOGICSTD_LOGIC

33、数据类型数据类型(P69,P327)(P69,P327)TYPE STD_LOGIC IS TYPE STD_LOGIC IS (U,X,0,1,Z,W,L,H,-);(U,X,0,1,Z,W,L,H,-);(2 2)标准逻辑矢量)标准逻辑矢量( (STD_LOGIC_VECTOR)STD_LOGIC_VECTOR)数据类型数据类型 STD_LOGIC_VECTOR STD_LOGIC_VECTOR类型是一维数组。类型是一维数组。 STD_LOGIC_VECTOR STD_LOGIC_VECTOR类型在使用时应指明位矢宽度。类型在使用时应指明位矢宽度。 STD_LOGIC_VECTOR STD

34、_LOGIC_VECTOR类型数组的每一位由类型数组的每一位由STD_LOGIC STD_LOGIC 数据类型组成。数据类型组成。例如例如 din: in din: in STD_LOGIC_VECTOR(7 STD_LOGIC_VECTOR(7 downtodownto 0); 0); dout: out dout: out STD_LOGIC_VECTOR(0 STD_LOGIC_VECTOR(0 toto 3); 3);4. 其他预定义标准数据类型其他预定义标准数据类型 在在IEEEIEEE库库中程序包中程序包STD_LOGIC_ARITHSTD_LOGIC_ARITH中定义了另外一类常

35、用的数中定义了另外一类常用的数据类型据类型无符号型(无符号型(UNSIGNEDUNSIGNED)、有符号型()、有符号型(SIGNEDSIGNED)、小整型)、小整型(SMALL_INTSMALL_INT)。)。如果将信号或变量定义为这几个数据类型,就可以如果将信号或变量定义为这几个数据类型,就可以使用本程序包中定义的运算符。使用这些类型时,要在使用本程序包中定义的运算符。使用这些类型时,要在程序开始时先程序开始时先声明其程序包声明其程序包。(1 1)无符号型()无符号型(UNSIGNEDUNSIGNED)数据类型)数据类型 Variable a: unsigned (0 to 10);Var

36、iable a: unsigned (0 to 10); Signal b: unsigned (5 downto 0); Signal b: unsigned (5 downto 0); 说明变量说明变量a a有有1111位数值,最高位是位数值,最高位是a(0),a(0),最低位为最低位为a(10)a(10) 说明变量说明变量b b有有6 6位数值,最高位是位数值,最高位是b(5),b(5),最低位为最低位为b(0)b(0)(2 2)有符号型()有符号型(SIGNEDSIGNED)数据类型)数据类型 Variable a: signed (0 to 10);Variable a: signe

37、d (0 to 10); Signal b: signed (5 downto 0); Signal b: signed (5 downto 0); 说明变量说明变量a a有有1111位数值,最高位位数值,最高位a(0)a(0)是符号位是符号位5. 数据类型转换数据类型转换注意事项注意事项:(1 1)当定义了端口或数据对象的数据类型后,只能携带)当定义了端口或数据对象的数据类型后,只能携带 和返回指定类型的数据和返回指定类型的数据. .(2 2)如果不同类型的数据需要进行运算或操作,必须在)如果不同类型的数据需要进行运算或操作,必须在 类型转换后才能类型转换后才能. .5.6 VHDL5.6

38、VHDL操作符操作符类 型操作符功 能操作数数据类型 +加整数 减整数 &并置一维数组 *乘整数和实数(包括浮点数) /除整数和实数(包括浮点数)MOD取模整数 REM取余整数 SLL逻辑左移BIT 或布尔型一维数组 SRL逻辑右移BIT 或布尔型一维数组 SLA算术左移BIT 或布尔型一维数组 SRA算术右移BIT 或布尔型一维数组 ROL逻辑循环左移BIT 或布尔型一维数组 ROR逻辑循环右移BIT 或布尔型一维数组 *乘方整数算术操作符 ABS取绝对值整数表一表一 VHDLVHDL操作符操作符类 型操作符功 能操作数数据类型 =等于任何数据类型 /=不等于任何数据类型 大于枚举与整数类型

39、,及对应的一维数组 =大于等于枚举与整数类型,及对应的一维数组 AND与BIT,BOOLEAN,STD_LOGIC OR或BIT,BOOLEAN,STD_LOGIC NAND与非BIT,BOOLEAN,STD_LOGIC NOR或非BIT,BOOLEAN,STD_LOGIC XOR异或BIT,BOOLEAN,STD_LOGIC XNOR异或非BIT,BOOLEAN,STD_LOGIC逻辑操作符 NOT非BIT,BOOLEAN,STD_LOGIC +正整数符号操作符 负整数表一表一 VHDLVHDL操作符操作符表表2 VHDL操作符优先级操作符优先级 SIGNAL a ,b,c : STD_LO

40、GIC_VECTOR (3 DOWNTO 0) ; SIGNAL d,e,f,g : STD_LOGIC_VECTOR (1 DOWNTO 0) ; SIGNAL h,I,j,k : STD_LOGIC ; SIGNAL l,m,n,o,p : BOOLEAN ; . a=b AND c; -b、c 相与后向相与后向a赋值赋值 d=e OR f OR g ; - 两个操作符两个操作符OR相同,不需括号相同,不需括号 l=(m XOR n)AND(o XOR p); - 操作符不同,必须加括号操作符不同,必须加括号 h=i AND j AND k ; - 两个操作符都是两个操作符都是AND,不必

41、加括号不必加括号 h=i AND j OR k ; - 两个操作符不同,未加括号,表达错误两个操作符不同,未加括号,表达错误 a=b AND e ; - 操作数操作数b 与与 e的位矢长度不一致,表达错误的位矢长度不一致,表达错误 h=i OR l ; - i 的数据类型是位的数据类型是位STD_LOGIC,而而l的数据类型是的数据类型是 . - 布尔量布尔量BOOLEAN,因而不能相互作用,表达错误。因而不能相互作用,表达错误。 (1)逻辑操作符)逻辑操作符【例【例1 1】ENTITY relational_ops_1 IS PORT ( a,b : IN BITVECTOR (0 TO 3

42、) ; m : OUT BOOLEAN) ;END relational_ops_1 ;ARCHITECTURE example OF relational_ops_1 ISBEGIN m = (a = b) ;END example ; 【例【例2 2】 ENTITY relational_ops_2 IS PORT (a,b : IN INTEGER RANGE 0 TO 3 ; m : OUT BOOLEAN) ;END relational_ops_2 ;ARCHITECTURE example OF relational_ops_2 ISBEGIN m = b) ;END examp

43、le ;关系运算操作符:关系运算操作符:“ = = ”( (等于等于) )、“/=/=”( (不等于不等于) )、“ ”( (大于大于) )、“ =”( (大于等于大于等于) )“=”( (小于等于小于等于) )(2)关系操作符)关系操作符LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY mux21a IS PORT( a, b : IN BIT ; s : IN BIT; y : OUT BIT ) ;END ENTITY m

44、ux21a ;ARCHITECTURE one OF mux21a IS BEGIN y = a WHEN s = 0 ELSE b ;END ARCHITECTURE one ;2选选1数据选择器的数据选择器的VHDL语言(语言(1) 程序包程序包 实体实体 结构体结构体 - 库库省略了库声明和程序包说明省略了库声明和程序包说明ENTITY mux41a IS PORT( a, b,c,d : IN BIT ; s : IN BIT_vector(1 downto 0); y : OUT BIT ) ;END ENTITY mux41a ;ARCHITECTURE one OF mux41a

45、 IS BEGIN y = a WHEN s = “00” ELSE b WHEN s = “01” ELSE c WHEN s = “10” ELSE d;END ARCHITECTURE one ; 例例2 4选选1的数据选择器的数据选择器(方法方法1)省略了库声明和程序包说明省略了库声明和程序包说明ENTITY mux41a ISENTITY mux41a IS PORT( a, b,c,d : IN BIT ; PORT( a, b,c,d : IN BIT ; s1 s1,s0 : IN BITs0 : IN BIT ; ; y : OUT BIT ) ; y : OUT BIT )

46、 ;END ENTITY mux41a ;END ENTITY mux41a ;ARCHITECTURE one OF mux41a ISARCHITECTURE one OF mux41a IS BEGIN BEGIN y = a WHEN y = a WHEN (s1 =0)and (s1 =0)and (s0 =0) (s0 =0) ELSEELSE b WHEN b WHEN (s1 =0)and (s0 =1) (s1 =0)and (s0 =1) ELSEELSE c WHEN c WHEN (s1 =1)and (s0 =0) (s1 =1)and (s0 =0) ELSEELS

47、E d; d;END ARCHITECTURE one ;END ARCHITECTURE one ; 例例2 4选选1的数据选择器的数据选择器(方法方法2)ENTITY mux41a IS PORT( a, b,c,d: IN BIT ; s1,s0 : IN BIT ; y : OUT BIT );END ENTITY mux41a ;ARCHITECTURE one OF mux41a IS signal s : std_logic_vector(1 downto 0); s=s1&s0;BEGIN s=s1&s0; y = a WHEN s = 00 ELSE b WHEN s = 0

48、1 ELSE c WHEN s = 10 ELSE d;END ARCHITECTURE one ; signal s : bit_vector(1 downto 0);错误错误1:说明部分不能进行:说明部分不能进行 语句操作。语句操作。错误错误2:操作符左右两边数:操作符左右两边数 据类型要一致。据类型要一致。例例2 4选选1的数据选择器的数据选择器(方法方法3)作业:请采用作业:请采用WHEN_ELSE语句实现语句实现8选选1的数据选择器的数据选择器in1in2in3LED1 LED20000100101010010111010001101101101011110 实例来演示:一个三人表决

49、器的逻辑设计。三人表决,以少数服从多数为原则,多数人同意则议案通过,否则议案被否决。这里,我们使用三个按键代表三个参与表决的人,置“0”表示该人同意议案,置“1”表示该人同意议案;两个指示灯用来表示表决结果,LED1 点亮表示议案通过,LED2 点亮表示议案被否决。真值表如下所示:根据上面的真值表,做卡诺图简化,可以得出:LED1=in1LED1=in1* *in2+in1in2+in1* *in3+in2in3+in2* *in3 in3 ,LED2=LED1 LED2=LED1 例例3 3人投票表决人投票表决LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;

50、USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY voter ISEND ENTITY voter;ARCHITECTURE one OF voter ISBEGIN END ARCHITECTURE one ; 程序包程序包 实体实体 结构体结构体 - 库库PORT ( in1, in2, in3: IN BIT; led1,led2 : OUT BIT );led1=(in1 and in2) or (in1 and in3) or (in2 and in3) ;led1=(in1 and in2) or

51、 (in1 and in3) or (in2 and in3) ;led2=not(led1);led2 LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S NULL ; END CASE ; END PROCESS ;END ;8选一实验说明选一实验说明LIBRARY IEEE; -正确程序正确程序USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux81a IS PORT( a, b,c,d,e,f,g,h : IN BIT ; s : IN BIT_vector(2 downto 0); y : O

52、UT BIT ) ;END ENTITY mux81a ;ARCHITECTURE one OF mux81a ISBEGIN y = a WHEN s = 000 ELSE b WHEN s = 001 ELSE c WHEN s = 010 ELSE d WHEN s = 011 ELSE e WHEN s = 100 ELSE f WHEN s = 101 ELSE g WHEN s = 110 ELSE h ;END ARCHITECTURE one ; 实验错误说明及改正实验错误说明及改正(1)实体说明部分省略实体说明部分省略ARCHITECTURE one OF mux81a IS

53、BEGIN process(a,b,c,d,e,f,g,h,s) begin if s = 000 then y=a; ELSIF s = 001 then y=b; ELSIF s = 010 then y=c; ELSIF s = 011 then y=d; ELSIF s = 100 then y=e; ELSIF s = 101 then y=f; ELSIF s = 110 then y=g; ELSE y=h; End if; end process;END ARCHITECTURE one ; 错误ENTITY mux81a IS PORT( a, b,c,d,e,f,g,h :

54、 IN BIT ; s2,s1,s0 : IN BIT ; y : OUT BIT ) ;END ENTITY mux81a ;ARCHITECTURE one OF mux81a IS signal s : std_logic_vector(2 downto 0); s=s2&s1&s0;BEGIN s=s2&s1&s0; y = a WHEN s = 000 ELSE b WHEN s = 001 ELSE c WHEN s = 010 ELSE d WHEN s = 011 ELSE e WHEN s = 100 ELSE f WHEN s = 101 ELSE g WHEN s = 1

55、10 ELSE h ;END ARCHITECTURE one ; signal s : bit_vector(2 downto 0);实验错误说明及改正实验错误说明及改正(2)错误错误1:说明部分不能进行:说明部分不能进行 语句操作。语句操作。错误错误2:操作符左右两边数:操作符左右两边数 据类型要一致。据类型要一致。 5.7 VHDL5.7 VHDL数据对象数据对象 VHDL VHDL的数据对象包括的数据对象包括信号(信号(signalsignal)、变量()、变量(variablevariable)、)、 常量(常量(constantconstant)三类。三类。1.1.常量常量 (co

56、nstant)(constant):命名数据类型的一种特殊值。:命名数据类型的一种特殊值。2.2.变量变量(variable):用来在顺序执行的语句间传递中间值用来在顺序执行的语句间传递中间值3.3.信号(信号(signalsignal) : : 用于在实体(或进程)之间传送信息;用于在实体(或进程)之间传送信息;1. 1. 常量常量 (constant)(constant):命名数据类型的一种特殊值。命名数据类型的一种特殊值。(1 1)信号声明的语法格式:)信号声明的语法格式: constantconstant 常数名:数据类型常数名:数据类型 := =初始值初始值 ; 例:例: const

57、antconstant aa : aa : realreal; ; constantconstant bb : bb : bitbit; ; (2 2)常量的赋值:)常量的赋值: aa:= 5.0 ; aa:= 5.0 ; bb:=1; bb:=1;5.7 VHDL5.7 VHDL数据对象数据对象 常数赋值后不能变;常数赋值后不能变; 常数赋值采用:常数赋值采用:= = 赋的值要与数据类型一致赋的值要与数据类型一致 在结构体、程序包、实体中说明在结构体、程序包、实体中说明, 能在进程中说明。能在进程中说明。 在程序包中说明的信号为全局量;在实体说明部分的在程序包中说明的信号为全局量;在实体说明

58、部分的 信号可以被该实体中任何构造体引用,在构造体中的信号可以被该实体中任何构造体引用,在构造体中的 信号能被其构造体内部任何语句采用,包括被进程语信号能被其构造体内部任何语句采用,包括被进程语 句采用;在进程说明中说明的信号只能在进程中使用。句采用;在进程说明中说明的信号只能在进程中使用。(3 3)注意事项)注意事项 5.7 VHDL5.7 VHDL数据对象数据对象 (1 1)变量声明的语法格式)变量声明的语法格式 Variable Variable 变量名:数据类型变量名:数据类型 约束条件约束条件 := =表达式表达式 ; 例:例: VariableVariable x,y: x,y:b

59、itbit; VariableVariable a,b: a,b: integerinteger range 0 to 255:=10; range 0 to 255:=10; (2 2)变量的赋值)变量的赋值 x:=1;x:=1; Y:=0; Y:=0; a:=10;a:=10; b:=2+a; b:=2+a;2.变量(变量(variable):用来在顺序执行的):用来在顺序执行的VHDL语句间传递中间值语句间传递中间值5.7 VHDL5.7 VHDL数据对象数据对象 1. 1.只能在进程、函数或过程中使用只能在进程、函数或过程中使用(3 3)注意事项)注意事项 5.7 VHDL5.7 VH

60、DL数据对象数据对象5.7 VHDL5.7 VHDL数据对象数据对象3.3.信号(信号(signal signal ):):用于在实体(或进程)之间传送信息用于在实体(或进程)之间传送信息(1 1)信号声明的语法格式:)信号声明的语法格式: signal signal 信号名:数据类型信号名:数据类型 约束条件约束条件:= =初始值初始值 ; 例例: : signalsignal a : a : bitbit ; ; signalsignal b : b : std_logic_vectorstd_logic_vector(7 downto 0);(7 downto 0);(2 2)信号的赋值

温馨提示

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

评论

0/150

提交评论