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

下载本文档

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

文档简介

1、第三章 硬件描述语言HDL Hardware Description Language,第一节 概述,常用的硬件描述语言有:,VHDL:Very High Speed Integrated Circuit,Hardware Description Language,Verilog:Cadence公司开发,ABEL(Advanced Boolean Hardware Description, 高级布尔方程语言) :Lattice公司,AHDL(Analog模拟硬件描述语言): Altera公司,超高速集成电路硬件描述语言,通过与非门的逻辑描述,阐述VHDL的基本结构,第二节 VHDL的基本结构,

2、LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY nand_2 IS PORT ( a,b:IN STD_LOGIC; y: OUT STD_LOGIC); END nand_2; ARCHITECTURE rtl OF nand_2 IS BEGIN y = NOT (a AND b); END rtl;,IEEE库使用说明,Nand_2实体说明,结构体,端口说明,用以 描述器件的接口,库说明 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; 语法: library 库名 use 库名.程序包名.项目名:

3、库是用VHDL语言编写的源程序及其通过编译的数据集合,它由各种程序包组成,程序包提供了各种数据类型、函数的定义以及各种类型转换函数及运算等,以供给设计者使用。,目前在VHDL语言中,常用的主要有以下几种库: IEEE库、 STD库、 WORK库、用户库 最常用的资源库是IEEE库,常用的程序包 STD_LOGIC_1164:常用的数据类型(std_logic,std_logic_vector),各种类型转换函数及逻辑运算。 STD_LOGIC_ARITH:定义了无符号unsigned、有符号数signed数据类型,相应的算术运算; unsigned, signed和integer之间的转换函数

4、。 STD_LOGIC_UNSIGNED, STD_LOGIC_SIGNED:定义了可用于integer和std_logic,std_logic_vector数据类型混合运算的运算符,由std_logic_vector型到integer型的转换函数。,(2) STD库,(3)WORK库,(4)自定义库,是VHDL的标准库,含有称为STANDARD的标准程序包,其中定义了多种常用的数据类型,均不加说明便可直接引用。另一个程序包TEXTIO(文本文件输入/输出),则需经说明后方可使用。,(2) STD库,(3)WORK库,(4)自定义库,是当前作业库,设计人员设计的VHDL语言程序的编译结果不需要

5、任何说明,都将要存放在work库中。Work库可以是设计者个人使用,也可提供给设计组多人使用,WORK库和STD库 总会被自动打开。,(2) STD库,(3)WORK库,(4)自定义库,由用户自己创建。设计者可以把一些自己需要经常使用的非标准(一般是自己开发的)包集合和实体等汇集成库,作为对VHDL标准库的补充。,还需要注意的是,LIBRARY语句和USE语句的作用范围只限于紧跟其后的实体及其结构体。因此,如果一个程序中有一个以上的实体,则必须在每个实体的前面分别加上LIBRARY语句和USE语句,说明各实体及其结构体需要使用的库和程序包。,2.实体说明,ENTITY nand_2 IS PO

6、RT ( a,b:IN STD_LOGIC; y:OUT STD_LOGIC); END nand_2;,ENTITY 实体名 IS PORT端口说明; END 实体名;,语法:,端口说明语句描述实体的外部接口情况,不管内部功,能如何只描述它的输入和输出接口信号。一般格式为:,PORT(端口信号名,端口信号名 : 端口模式 数据类型;,端口信号名,端口信号名 : 端口模式 数据类型);,端口信号名:赋给每个输入输出接口的名称,端口模式:说明信号的输入和输出方式,IN,OUT,INOUT,buffer,INOUT:在输出的同时可以自己读取,同时也可以 作为其它端口的输入。 如RAM的数据口、单片

7、机的I/O口。,Buffer:缓冲端口,其功能与inout类似,但是当作为输入用时,输入的信号不是从外部输入,而是由内部产生向外输出的信号。即内部回读自身向外产生的信号,即允许反馈。 如将计数器输出的计数信号回读,作为下一个计数值的初值。,【例1】 以如图1所示的RS触发器为例,定义如下: ENTITYrsffIS PORT ( set, reset: IN BIT; q, qb: BUFFER BIT ); END rsff ;,图1 RS触发器,端口数据类型: (1)标准数据类型,如:整数、实数,位,位矢量等。 (2)IEEE标准数据类型,标准逻辑位STD_LOGIC、标准逻辑矢量STD_

8、LOGIC _VECTOR。 (3)用户自定义的数据类型,如枚举型、数组类型、文件(FILE)类型、记录(RECORD)类型等。,在逻辑电路设计中用到两种,即位逻辑数据类型(BIT)和位向量型(BIT_VECTOR)。BIT类型也可以用STD_LOGIC说明,BIT_VECTOR也可以用STD_LOGIC_VECTOR说明。但是,在使用STD_LOGIC和STD_LOGIC_VECTOR时,应该在实体说明以前增加两条语句: LIBRARY IEEE:IEEE库 USE IEEE. STD_LOGIC_1164.ALL:,Bit数据类型只有两种:0和1。 Std_logic数据类型有9种: U:

9、未初始化; X:强未知; 0:逻辑0; 1:逻辑1; Z:高阻态; W:弱未知; L:弱逻辑0; H:弱逻辑1; -:忽略;,Z和-(有的综合器用X) 可以用于三态描述,Std_logic数据在数字器件的实现中 只有其中的45种值,即X(或/和-) 0、1和Z。,一个基本设计实体由实体说明(Entity Declaration) 和结构体(Architecture Body)两部分构成。如果把实体说明看作为一个黑盒子,则知道黑盒子的输入和输出,但不知道黑盒子里面的内容。黑盒子里面的内容由结构体来描述。,3结构体(Architecture ) 结构体定义了设计单元的具体功能,一定要跟在实体的后面

10、。结构体可以分为两部分:说明部分和描述体部分。一个结构体的具体结构描述如下: ARCHITECTURE 结构体名OF实体名IS 结构体说明内部信号,常数,数据类型等的定义; BEGIN 并行处理语句; END 结构体名;,【例】 编写描述一个二选一器件(如图所示)的程序。 ENTITYmuxIS PORT ( d0, d1: IN BIT; sel: IN BIT; q: OUT BIT ); END mux ;,图 二选一器件的电路原理图,ARCHITECTUREdataflow OF muxIS BEGIN q= ( d0 AND sel ) OR ( NOT sel AND d1 );

11、END dataflow; “=”表示赋值关系。 逻辑运算符包括:AND(与), OR(或), NAND(与非), NOR(或非), XOR(异或), NOT(非)。,Verilog 程序,Module fulladder(a,b,carryin,sum,carryout) Input a,b,carryin; Output sum carryout; Wire a,b,carryin,sum,carryout;/数据类型,连线型 /寄存器型 reg q ,reg 9:0 c; assign sum=(ab)carryin;/异或,连续赋值语句 Assign carryou=(a output

12、3:0 out; input reset,clk; reg3:0 out; always (posedge clk) begin if(reset) out=0; /同步复位 else out=out+1; /计数 end endmodule,library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;-由std_logic_vector转换成integer; entity countA is port(clk,clr,en: in std_logic; QA,QB,QC,QD:out std_logic

13、); end countA; architecture exampleA of countA is signal count_4:std_logic_vector(3 downto 0); begin QA=count_4(0); QB=count_4(1); QC=count_4(2); QD=count_4(3); process(clk,clr) begin if(clr=1)then count_4=0000; elsif (clkevent and clk=1)then if (en=1)then if(count_4=1111)then count_4=0000; else cou

14、nt_4 =count_4+1; end if; end if; end if; end process; end exampleA;,IF THEN 顺序处理语句1; ELSIF THEN 顺序处理语句2; . ELSE 顺序处理语句3; END IF;,IF语句的格式:,If 条件 then 顺序处理语句; end if;,If 条件 then 顺序语句1; Else 顺序语句2; End if;,注意在VHDL语言中不区分大小写,时钟信号上升沿和下降沿的表示 (1) 表示一个上升沿时钟clk: clk EVENTAND clk =1; rising_edge(clk) (2) 表示一个下

15、降沿时钟clk: clk EVENT ANDclk =0; Falling_edge(clk),entity regn is generic(n:integer:=8); port(r:in std_logic_vector(n-1 downto 0); rin,clock:in std_logic; q:buffer std_logic_vector(n-1 downto 0); end regn;,类属参数说明 类属参数说明必须放在端口说明前面,用于指定参数。类属参数说明的一般格式为: GENERIC (常数名:数据类型 :设定值);,在门级模型中,可以使用类属参数指定延迟时间参数。 例如

16、在结构体内出现语句: GENERIC ( m: TIME : = 1ns) Temp1:= do AND sel AFTER m; 表示do和sel相与后,经过1 ns延迟才送到Temp1。 (当然,时间单位可以取fs(1 ps=1000 fs,1 ns=1000 ps)、(s、ms、sec、min、hr等)。,第三节 VHDL结构体的子结构,一个大规模的电路原理图通常由多张子电路原理图构成。一个结构体也可以由几个子结构组成,有利于编程和查错。 VHDL可以用以下三种子结构描述语句: (1) BLOCK语句结构; (2) PROCESS语句结构; (3) SUBPROGRAMS语句结构。,3.

17、1 块(BLOCK)语句 块语句将结构体中的并行描述语句进行组合,增加并行描述语句及其结构的可读性,使结构体层次清晰,对技术交流、程序移植和修改都是非常有用的。 BLOCK语句的结构如下: 块结构标号:BLOCK BEGIN END BLOCK 块结构标号;,【例】 采用BLOCK语句描述二选一电路。 ENTITYmuxIS PORT ( d0, d1: IN BIT; sel: IN BIT; q: OUT BIT ); END mux ; ARCHITECTURE connect OF muxIS SIGNAL tmp1, tmp2, tmp3: BIT;,BEGIN cale: BLOC

18、K BEGIN tmp1 = d0 AND sel; tmp2 = d1 AND ( NOT sel ); tmp3 = tmp1 OR tmp2; q = tmp3; END BLOCK cale; END connect;,3.2 进程(PROCESS)语句 1进程(PROCESS)语句的结构 进程语句是VHDL中使用最广泛的语句之一,进程语句既能够描述组合逻辑,又能够描述时序逻辑。 进程语句的结构如下: 进程名:PROCESS(敏感信号1,敏感信号2,) BEGIN END PROCESS 进程名 ;,2进程的启动 在PROCESS语句中一般都带有几个输入信号,在书写时写在PROCESS

19、后面的括号中。这些信号中的任意一个信号发生变化(“1”变“0”或“0”变“1”)都会启动PROCESS 语句,因此这些信号称为敏感信号。,寄存器,library IEEE; use Ieee.std_logic_1164.all; entity register1 is port( clk: in std_logic; clr:in std_logic; d:in std_logic_vector(3 downto 0); q: out std_logic_vector(3 downto 0); end register1;,寄存器管脚图,Clr=1,q=0;,architecture rtl

20、 of register1 is begin process(clk,clr) begin if(clr=1)then q=0000; elsif (clkevent and clk=1)then q=d; end if; end process; end rtl;,移位寄存器,设计一个具有异步并行预制功能的 8位右移移位寄存器。 clk:移位时钟信号; din:8位并行预制数据端口; load:并行数据预制使能信号; QB:串行输出端;,library IEEE; use IEEE.std_logic_1164.all; entity shfrt is port(clk,load:in st

21、d_logic; din:in std_logic_vector(7 downto 0); QB:out std_logic); end shfrt;,architecture behavioral of shfrt is begin process(clk,load) variable reg8:std_logic_vector(7 downto 0); begin if clkevent and clk=1 then if load=1 then reg8:=din; else reg8(6 downto 0):=reg8(7 downto 1); end if; end if; QB=r

22、eg8(0); end process; end behavioral;,移位寄存器,移位寄存器,移位寄存器,3进程语句的顺序性 PROCESS结构中的语句是按顺序一条一条向下执行的,与BLOCK中的语句可以并发执行是不一样的。VHDL语言中,顺序执行的语句只在PROCESS和SUBPROGRAMS的结构中使用。一个结构体可以有多个并行运行的进程,每一个进程之间是并行执行的关系,而每一个进程的内部结构却是由一系列顺序语句构成的。,图 多路选择器,【例】 用进程语句描述一个如图所示的二选一 的多路选择器的程序如下:,ENTITYmuxIS PORT ( d0, d1, sel: IN BIT;

23、q: OUT BIT ); END mux ; ARCHITECTUREconnect OF muxIS BEGIN PROCESS (d0, d1, sel ) VARIABLE tmp1, tmp2, tmp3: BIT; BEGIN tmp1 := d0 AND sel; tmp2 := d1 AND ( NOT sel ); tmp3 := tmp1 OR tmp2; q = tmp3; END PROCESS; END connect;,【例】三态门电路设计,【例】单向总线缓冲器,En=1时,dout=din, En=0时,输出为三态;,单向总线缓冲器的RTL电路图,use Ieee

24、.std_logic_1164.all; use Ieee.std_logic_unsigned.all; entity han is port( clk: in std_logic; clr:in std_logic; d:in std_logic_vector(4 downto 0); q: out std_logic_vector(4 downto 0); end han; architecture rtl of han is begin process(clk,clr) variable aa:std_logic_vector(4 downto 0); begin if(clr=1)t

25、hen q=00000; aa:=d; elsif (clkevent and clk=1)then aa:=aa-1; q=aa; end if; end process; end rtl;,clk,clr,d4.0,q4.0,减计数器,clr=1,q=0; 让学生对该计数器编程,4.1 数据对象(Data Objects) 常用的数据对象有三类:常量(Constant)、信号(Signal)和变量(Variable)。常量相当于硬件电路中的恒定电平;信号和变量相当于电路中的连线和连线上的信号值。 1常量(Constant) 常量说明就是对一个常量名赋予一个固定的值。常量说明的一般格式如下:

26、 CONSTANT常量名:数据类型:=表达式;,第四节 数据对象、数据类型,例如: CONSTANTVCC:REAL: =5.0; CONSTANTDELAY:TIME: =100 ns; CONSTANTFBUS:BIT_VECTOR: =0101; 常量所赋予的值应该和定义的数据类型一致。,2信号(Signal) 信号是一个全局量,它可以用于进程之间的通信,用于说明电路内部的连线信号。信号通常在结构体、程序包和实体中说明。信号说明语句的格式如下:,例如: SIGNAL ground:BIT: =0; 其中,符号“: =”表示直接赋值,用于指定信号的初始值。 信号赋值语句的格式为: 信号名

27、= 表达式 AFTER 时间表达式; 其中,信号赋值符号为“=”,时间表达式指定延迟时间,如果省略AFTER语句,则延迟时间取默认值。,3变量(Variable) 变量只能够在进程语句、函数语句和过程语句结构中使用,是一个局部变量。变量说明语句的格式如下: VARIABLE 变量名:数据类型 约束条件: =表达式; 例如: VARIABLE count: INTEGER RANGE 0 TO 255: =10; 变量count为整数类型,RANGE 0 TO 255是对类型INTEGER的附加限制。该语句一旦执行,立即将初始值10赋予变量。,变量可以定义成布尔(BOOLEAN)类型、整数(IN

28、TEGER)类型、BIT和BIT_VECTOR类型、STD_LOGIC和STD_LOGIC_VECTOR类型。 变量赋值语句的格式为: 变量名 : = 表达式;,4信号与变量 信号与变量之间的差别如表所示。,信号与变量的差别,信号与变量在结构体的位置说明如下: ARCHITECTURE sv_arch OF sv IS 信号说明 -在进程外部对信号说明,该信号对所有的进程都是可见的 -BEGIN 进程标号1: PROCESS 变量说明 -在进程内部对变量说明,该变量只在进程是可见的 END PROCESS进程标号1;,进程标号2: PROCESS 变量说明 END PROCESS进程标号1;

29、END sv_arch;,【例】数据选择器:通过这个例子进一步了解变量和信号的区别,仿真结果,【例】数据选择器:通过这个例子进一步了解变量和信号的区别,仿真结果,判断下列程序的正确性:,4.2 数据类型(Data Types) VHDL是一种对数据类型的定义非常严格的硬件描述语言,规定每一个对象都必须有明确的数据类型。不同类型之间的数据不能够直接代入,把不同数据类型的信号连接起来是非法的。,1VHDL的预定义数据类型 在STD库中有一个标准(STANDARD)程序包,定义了一些预定义的数据类型。由于在用VHDL编写程序时,STD库总是自动打开的,因此当使用这些数据类型时,不需要使用USE语句打

30、开STD库。常用的预定义的数据类型如下。,1) 整数(INTEGER)类型 例如: SIGNAL int_s: INTEGER RANGER 0 TO 255; -信号int_s的数据宽度为8位 VHDL的算术运算符都定义为整数。描述算术运算时,一般都使用整数类型。但是使用整数也有一些缺点,很难表示未知、三态等逻辑状态。,2) 实数(REAL)数据类型 实数的取值范围为-1.0E38+1.0E38。由于要完成具有实数的运算需要大量的资源,因此一般的可编程逻辑器件开发系统中的VHDL综合器不支持实数数据类型。,3) 位(BIT)和位向量(BIT_VECTOR)类型 位(BIT)和位向量(BIT_

31、VECTOR)类型是预定义类型,通用性强。位(BIT)只能取值0或1,位值放在单引号中。位向量是用双引号括起来的一组位数据。例如: 001100 1 X表示十六进制。 一般用位向量表示硬件电路的信号总线,可以采用多种方式对信号总线进行赋值。,数字,KX康芯科技,例如:设定义信号 a (3 DOWNTO 0); =“1011”; -执行该赋值语句后,,a(3)=1,a(2)=0, a(1)=1,a(0)=1,-执行该赋值语句后, a(1)=0, a(0)=1,a(0 TO 1)=“10”;,4) 布尔(BOOLEAN)数据类型 布尔数据类型经常用于逻辑关系运算中,它的取值只有两个(TRUE和FA

32、LSE)。它和位数据类型不同,没有数值的含义,也不能够进行算术运算。,5) 字符(CHARACTER)类型 当对一个变量进行字符赋值操作时,应该先说明后赋值,例如将字符A赋给变量C,先说明如下: VARIABLE C: CHARACTER; 然后进行赋值操作: C: =A; 其中字符A放在单引号中。,2IEEE预定义的标准逻辑数据类型 VHDL的标准数据“BIT”类型是一个逻辑数据类型。定义为“BIT”类型的数据对象的取值只能够是0或1,不能够描述高阻状态。在IEEE库中的程序包STD_LOGIC_1164中,定义了包含高阻(Z)、不定(X)状态的标准逻辑位和逻辑向量数据(STD_LOGIC和

33、STD_LOGIC_VECTOR)类型。,3用户定义的数据类型 VHDL有许多不需要用户自己说明的预定义类型,这些预定义类型放在标准程序包中,只要打开标准程序包就可以使用。VHDL也允许用户根据芯片的资源和实际的需要,自己定义数据类型。 可以由用户定义的数据类型有:枚举(ENUMERATED)类型、整数(INTEGER)类型、实数(REAL)类型、数组(ARRAY)类型、存取(ACCESS)类型、文件(FILE)类型、记录(RECORD)类型和时间(TIME)类型(物理类型)等。下面对常用的几种用户定义的类型加以说明。,1) 枚举类型 枚举类型是一种特殊的数据类型,用文字符号来表示一组实际的二

34、进制数。枚举类型最适合表示有限状态机的状态,有助于改善复杂电路的可读性。 枚举定义的格式如下: TYPE数据类型名 IS(元素1, 元素2, );,例如: TYPEcolorIS(blue, green, yellow, red ); signal p:color;-信号p是color数据类型,2) 整数(INTEGER)类型和实数(REAL)类型 整数和实数类型在标准的程序包中已经作了定义。但在实际应用中,数据类型的取值范围比较小,应该重新定义,限定取值范围,以提高芯片的利用率。 整数和实数定义的格式如下: TYPE数据类型名IS 数据类型定义 约束范围; 例如: TYPEdigitISIN

35、TEGERRANGE0 TO9; TYPEdigitISREALRANGE-1.0 TO1.0;,3) 数组(ARRAY)类型 数组类型是相同类型数据集合在一起形成的一个新的数据类型。数组可以是一维数组或多维数组。 数组定义的格式如下: TYPE数据类型名 ISARRAY范围OF数组元素的数据类型 例如: TYPEwordISARRAY(15 DOWNTO 0)OFBIT;,其中,“(15 DOWNTO 0)”决定了数组元素的个数有16个和元素的排序方向,“DOWNTO”指明下标将以降序变化。 例如: TYPEmatrixISARRAY (1 TO 8)OFBIT; “TO”指明下标将以升序变

36、化,按低到高的顺序排列8个元素。,5数据类型的转换 VHDL是一种强类型语言,这意味着如果两个信号的数据类型不同,则不允许将其中的一个信号的值赋给另一个信号,这个问题一般可以通过将信号的数据类型转换成相同的数据类型来解决。 整数类型与STD_LOGIC类型可以相互转换。 将STD_LOGIC_VECTOR类型转换成整数类型的函数为CONV_INTEGER; 将整数类型转换成STD_LOGIC_VECTOR类型的函数为CONV_STD_LOGIC_VECTOR; 转换函数由IEEE.STD_LOGIC_ARITH库提供。,【例】 LIBRARY IEEE; USE IEEE.STD_LOGIC_

37、1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; -在实体说明前,必须加上这条语句,因为转换函数是 -由IEEE.STD_LOGIC_ARITH库提供的 ENTITY test IS PORT (a: IN STD_LOGIC_VECTOR(3 DOWNTO 0); b: IN INTEGER RANGE 0 TO 15; c: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); d: OUT INTEGER RANGE 0 TO 15); END test;,ARCHITECTURE test_body OF test IS BEGIN c=CO

38、NV_STD_LOGIC_VECTOR(b); -将整数转换成STD_LOGIC_VECTOR类型 d=CONV_INTEGER(a); -将STD_LOGIC_VECTOR转换成整数类型 END test_body;,entity priority_encoder8_3 is Port ( x : in STD_LOGIC_VECTOR (7 downto 0); y : out STD_LOGIC_VECTOR (2 downto 0) ); end priority_encoder8_3; architecture Behavioral of priority_encoder8_3 is

39、 begin process(x) begin y = 000; for i in 0 to 7 loop if(x(i)=1) then y = conv_std_logic_vector(i,3); -把整数i转为3位逻辑矢量 end if; end loop; end process; end Behavioral;,【例】83编码器,第五节 VHDL的运算操作符,1逻辑运算符 常用的逻辑运算符有NOT(取反)、AND(与)、OR(或)、NAND(与非)、NOR(或非)、XOR(异或) 、XNOR(异或非) 。 这六种逻辑运算符可以对“STD_LOGIC”和“BIT”等逻辑数据、“STD

40、_LOGIC_VECTOR”逻辑型数组、布尔型数据进行逻辑运算。运算符的左边和右边的数据类型必须一致。 例: a=(b AND c )OR( d AND e) 存在两个或两个以上逻辑表达式时,左右没有优先级差别。,2算术运算符 在IEEE库中的程序包STD_LOGIC_ARITH中包含了一些算术和比较运算操作,如下所示:,+ 加; 减; * 乘; / 除; MOD 求模; REM 取余; + 正; 负; * 指数; ABS 取绝对值。,3关系运算符 常用的关系运算符主要有: = 等于; /= 不等于; = 大于等于。,4连接运算符 连接运算符“ y(3)为a(1),y(0)为b(0)。,而下面

41、的赋值是错误的: SIGNAL a: STD_LOGIC; SIGNAL b: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL c: STD_LOGIC_VECTOR(4 DOWNTO 0); c=(a,b); 正确: c=a ,【例】全加器的VHDL描述,Ain: 本位输入; Bin: 本位输入; Cin: 低位进位; So:和; Co:进位;,library IEEE; use IEEE.std_logic_1164.all; entity h_adder is port(a,b:in std_logic; co,so:out std_logic); end h_

42、adder; architecture behavioral of h_adder is Begin so=a XOR b; co=a and b; end behavioral;,半加器真值表,半加器真值表,-名称映射法,元件定义语句,,全加器VHDL描述中所涉及的语法: (1)CASE语句 CASE语句是另一种形式的条件控制结构,它根据所给的表达式的值域选择执行语句集。 语法 Case 条件表达式 is When 条件表达式的值一组顺序语句; When 条件表达式的值一组顺序语句; End case 注意:case 语句中条件表达式的值必须列举穷尽,不能重复。不能穷尽的条件表达式用others表示。,全加器VHDL描述中所涉及的语法: (2)component 语句,【例】双向总线缓冲器,En=0 ,dr=1,b=a; En=0,dr=0,a=b;,Sn54hc245逻辑框图,library IEEE; use IEEE.std_logic_1164.all; entity tri_bigate is port(en,dr:in std_logic; a,b:inout std_logic_vector(7 downto 0); end tri_bigate; architecture behavioral of tr

温馨提示

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

评论

0/150

提交评论