收藏 分享(赏)

电子设计自动化第三章 3.4.ppt

上传人:dzzj200808 文档编号:3231600 上传时间:2018-10-08 格式:PPT 页数:59 大小:411KB
下载 相关 举报
电子设计自动化第三章 3.4.ppt_第1页
第1页 / 共59页
电子设计自动化第三章 3.4.ppt_第2页
第2页 / 共59页
电子设计自动化第三章 3.4.ppt_第3页
第3页 / 共59页
电子设计自动化第三章 3.4.ppt_第4页
第4页 / 共59页
电子设计自动化第三章 3.4.ppt_第5页
第5页 / 共59页
点击查看更多>>
资源描述

1、3.4 VHDL语句,顺序语句:每一条顺序语句的执行(指仿真执行)顺序是与它们的书写顺序基本一致。只能出现在进程或子程序中。 并行语句:各种并行语句的执行是同步的,与书写的顺序无关。,语句从多侧面完整地描述梳子系统的硬件结构和基本逻辑功能,包括通信方式、信号的赋值、多层次的元件例化等。,理解,顺序描述语句,赋值语句 转向控制语句 等待语句 子程序调用语句 返回语句 空操作语句,顺序描述语句 用在进程或子程序中,用来定义进程或子程序的行为 。 顺序描述语句的特点 :每一条语句的执行(指仿真执行)都是按语句排列的次序执行的。,识记,信号代入语句,信号代入语句的语法格式为:目的信号量=信号量表达式;

2、,变量赋值语句,变量赋值语句的语法格式为:目的变量 := 表达式;,3.4.1 赋值语句,识记,IF语句,门闩控制的IF语句的语法格式为:IF 条件 THEN顺序处理语句;END IF;,IF语句是一种条件语句。其语句结构有以下三种:1) 门闩控制的IF语句;2) 2选择控制的IF语句;3) 多选择控制的IF语句。,3.4.2 转向控制语句,识记,设计D触发器。 LIBRARY ieee; USE ieee.std_logic_1164.ALL;ENTITY dff ISPORT(clk, d : IN STD_LOGIC;q : OUT STD_LOGIC); END dff; ARCHIT

3、ECTURE rtl OF dff IS BEGINPROCESS (clk)BEGINIF (clkevent and clk=1) THENq=d;END IF;END PROCESS ; END rtl;,门闩控制的IF语句,选择控制的IF语句的语法格式为:IF 条件 THEN顺序处理语句 l;ELSE顺序处理语句 2;END IF;,2)选择控制的IF语句,识记,设计2选1的数据选择器。ARCHITECTURE rtl OF mux2_1 IS BEGINPROCESS(a,b,sel)BEGINIF (sel=1) THENc=a;ELSEc=b;END IF;END PROCESS

4、; END rtl;,多选择控制的IF语句的语法格式为:IF 条件1 THEN顺序处理语句1;ELSIF 条件2 THEN顺序处理语句2;ELSIF 条件n THEN顺序处理语句n;ELSE顺序处理语句n+l;END IF;,3) 多选择控制的IF语句,识记,设计4选1的多路选择器 ENTITY mux4_1 ISPORT(d : IN STD_LOGIC_VECTOR(3 DOWNTO 0);sel : IN STD_LOGIC_VECTOR(1 DOWNTO 0);y : OUT STD_LOGIC); END mux4_1; ARCHITECTURE rtl OF mux4_1 IS B

5、EGINPROCESS (d, sel)BEGINIF (sel=“00“) THENy=d(0);ELSIF (sel=“01“) THENy=d(1);ELSIF (sel=“10“) THENy=d(2);ELSEy=d(3);END IF;END PROCESS; END rtl;,IF语句至少应有一个条件句,条件句必须由布尔表达式构成。IF语句根据条件句产生的判断结果为 true 或 false ,有条件地选择执行其后的顺序语句。 在IF语句的条件表达式中只能使用关系运算操作(=、/=、 = )及逻辑运算操作的组合表达式。,2、CASE语句,CASE语句的一般格式为:CASE 条件表

6、达式 ISWHEN 选择值=顺序处理语句;WHEN 选择值=顺序处理语句;END CASE;,CASE语句是无序的,所有表达式的值都是并行处理的;CASE语句所有表达式的值都必须穷举 ,且不能重复 ,不能穷尽的值用 OTHERS 表示 ;CASE语句中至少要包含一个条件语句。对任意项 输入的条件表达式, VHDL不支持。(即条件表达式的值不能含有X),识记,设计4选1的多路选择器 ENTITY mux4_1 ISPORT(d : IN STD_LOGIC_VECTOR(3 DOWNTO 0);sel : IN STD_LOGIC_VECTOR(1 DOWNTO 0);y : OUT STD_L

7、OGIC); END mux4_1; ARCHITECTURE rtl OF mux4_1 IS BEGINPROCESS (d, sel)BEGINCASE sel IS WHEN “00”=yyyyy= X;END CASE;END PROCESS; END rtl;,LOOP语句的书写格式一般有两种:,1)FOR 循环变量形成的LOOP语句,其一般格式为:循环标号:FOR 循环变量 IN 循环范围 LOOP顺序处理语句;END LOOP 循环标号;,3、LOOP语句,2)FOR 循环变量形成的LOOP语句,其一般格式为:循环标号:WHILE 循环控制条件 LOOP顺序处理语句;END L

8、OOP 循环标号;,循环变量是一个临时变量,属于局部变量。循环变量只能作为赋值源,不能被赋值,它由LOOP语句自动定义。循环变量是一个整数变量,不用事先说明。循环范围是指循环变量在循环中依次取值的范围。,ENTITY P_CHECK ISPORT (A:IN STD_LOGIC_VECTOR(7 DOWNTO 0 ); Y:OUT STD_LOGIC); END P_CHECK; ARCHITECTURE ART OF P_CHECK ISSIGNAl TMP: STD_LOGIC;BEGINPROCESS(A)BEGINTMP =1;FOR N IN 0 TO 7 LOOPTMP = TMP

9、 XOR A(N);END LOOP;Y= TMP;END PROCESS; END ART;,FORLOOP语句的使用(8位奇偶校验逻辑电路的VHDL程序),ENTITY P_CHECK ISPORT (A:IN STD_LOGIC_VECTOR(7 DOWNTO 0 ); Y:OUT STD_LOGIC); END P_CHECK; ARCHITECTURE ART OF P_CHECK ISBEGINPROCESS(A)BEGINVARIABLE TMP: STD_LOGIC;TMP :=1;FOR N IN 0 TO 7 LOOPTMP := TMP XOR A(N);END LOOP

10、;Y= TMP;END PROCESS; END ART;,FORLOOP语句的使用(8位奇偶校验逻辑电路的VHDL程序),举例:,ENTITY LOOPEXP ISPORT (A: IN BIT_VECTOR (0 TO 3);OUT1:OUT BIT_VECTOR(0 TO 3); END ENTITY LOOPEXP;ARCHITECTURE ART OF LOOPEXP IS BEGIN PROCESS (A) IS VARIABLE B: BIT; BEGIN B:=1;FOR I IN 0 TO 3 LOOPB:=A(3-I) AND B;OUT1(I)=B;END LOOP; E

11、ND PROCESS; END ARCHITECTURE ART;,举例:,在LOOP语句中,NEXT语句用于跳出本次循环 。,NEXT语句的书写格式为: NEXT 标号 WHEN 条件;,NEXT后面的“标号 ”表示下一次循环的起始位置 ;“WHEN 条件 ”是NEXT语句的执行条件 。NEXT后面若既无“标号” ,又无“WHEN 条件”, 则程序 立即无条件 跳出本次循环,从LOOP语句的起始位置转入下一次循环。,4、NEXT语句,识记, L1: FOR CNT IN 1 TO 8 LOOP S1: A(CNT):=0;K:=0; L2: LOOP S2: B(k):=0;NEXT L1

12、WHEN (EF); S3: B(k+8):=0;K:=K+1;NEXT LOOP L2;NEXT LOOP L1; ,举例:,在LOOP语句中,用EXIT语句跳出并结束整个循环状态(而不是仅跳出本次循环),继续执行LOOP语句后继的语句。,EXIT语句的书写格式为: EXIT 标号 WHEN 条件;,当 “WHEN条件”为真时,跳出LOOP至程序标号处。如果EXIT后面无“标号”和“WHEN 条件”,则程序执行到该语句时即无条件从LOOP语句跳出,结束循环状态,继续执行后继语句。,5、EXIT语句,识记,SIGNA A,B:STD_LOGIC_VECTOR(1 DOWNTO 0); SIGN

13、A A_LESS _B:BOOLEAN; A_LESS_THEN_B=FLASE; -设初始值 FOR I IN 1 DOWNTO 0 LOOP IF (A(I)=1 AND B(I)=0) THEN A_LESS _B=FALSE; EXIT; ELSIF (A(I)=0 AND B(I)=1) THEN A_LESS _B=TRUE; -AB EXIT; ELSE NULL; END IF; END LOOP; -当I=1时返回LOOP语句继续比较,举例:,6、WAIT语句,WAIT语句有以下四种形式:WAIT -无限等待WAIT ON 敏感信号表; -敏感信号量变化,进程启动WAIT U

14、NTIL 条件表达式; -表达式成立时,进程启动WAIT FOR 时间表达式; -时间到,进程启动,WAIT语句是进程(含过程)的同步语句,是进程的启动点。在进程(或过程)中,当执行到WAIT 等待语句时,运行程序将被挂起,直到满足此语句的结束挂起条件后,将重新开始执行进程(或过程)中的程序。 WAIT作为进程体的一条语句同进程体内的其它语句顺序执行。,2. 敏感信号等待语句,即敏感信号一旦发生变化将结束挂起,再次启动进程。VHDL规定,已列出敏感信号表的进程中不能使用任何形式的WAIT语句。一般, WAIT语句可用于进程中的任何地方。,3. 条件等待语句。被此语句挂起的进程需满足如下两个条件

15、才能结束挂起状态,重新启动: 条件表达式中所含信号发生了变化; 此信号改变后,且满足WAIT语句所设的条件。两条件缺一不可,且必须依照以上顺序完成。,4. 超时等待语句(此语句不可综合,故不再讨论)。,例 1:利用WAIT语句设计与非门电路。nandx: PROCESSBEGINy=a NAND b;WAIT ON a,b;END PROCESS nandx;,识记, PROCESS IS BEGIN WAIT UNTI CLK= 1; AVE=A; WAIT UNTI CLK= 1; AVE=AVE+A; WAIT UNTI CLK= 1; AVE=AVE+A; WAIT UNTI CLK=

16、 1; AVE=(AVE+A)/4; END PROCESS; ,四个脉冲求四个数的平均值,举例:,PROCESS IS BEGINL1: LOOPWAIT UNTI CLOCK=1 AND CLOCKEVENT ;-等待时钟信号NEXT L1 WHEN (RST=1); -检测复位信号RSTX=A; -无复位信号,执行赋值操作 WAIT UNTI CLOCK=1AND CLOCKEVENT; -等待时钟信号NEXT L1 WHEN (RST=1); -检测复位信号RSTY=B; -无复位信号,执行赋值操作END LOOP L1; END PROCESS;,举例:,RETURN语句RETURN

17、语句是一段子程序结束后,返回主程序的控制语句。,返回语句的两种语法格式:RETURN; RETURN 条件表达式;,RETURN 用于函数和过程体内,用来结束最内层函数或过程体的执行。第一种语法格式只能用于过程,它只是结束过程,并不返回任何值。用于函数中的RETURN语句必须有条件表达式,并且必须返回一个值。每一个函数必须至少包含一个返回语句,也可以拥有多个返回语句,但在函数调用时只有其中一个返回语句可以将值带出。,识记,PROCEDURE RS(SIGNAL S,R:IN STD_LOGIC;SIGNAL Q,NQ:INOUT STD_LOGIC) IS BEGIN IF(S=1AND R=

18、1)THEN REPORT“FORBIDDEN STATE:S AND R ARE EQUA TO1”; RETURN; ELSEQ=S AND NQ AFTER 5 ns;NQ=R AND Q AFTER 5 ns;END IF; END PROCEDURE RS;,过程,举例:,FUNCTION OPT(A,B,OPR:STD_LOGIC) RETURN STD_LOGIC IS BEGINIF(OPR=1)THENRETURN(A AND B);ELSERETURN(A OR B);END IF; END FUNCTION OPT;,函数,举例:,NULL语句,空操作语句的语法格式:NU

19、LL;,NULL语句不完成任何操作,类似于汇编语言中的 NOP语句,其作用只是使程序运行流程跨入下一步语句的执行。 NULL语句常用于CASE语句中,为满足所有可能的条件,利用NULL来表示所余的不用条件下的操作行为。,识记,CASE OPCODE ISWHEN “001”= TMP := REGA AND REGB;WHEN “101”= TMP := REGA OR REGB;WHEN “110”= TMP := NOT REGA;WHEN OTHERS = NULL; END CASE;,举例:,断言(ASSERT)语句只能在VHDL仿真器中使用,综合器通常忽略此语句。ASSERT语句判

20、断指定的条件是否为TRUE,如果为FALSE则报告错误。,ASSERT NOT (S=1 AND R=1)REPORT “BOTH VALUES OF SIGNALS S AND R ARE EQUA TO1“SEVERITY ERROR;,断言语句,语句格式是:ASSERT 条件表达式REPORT 字符串SEVERITY 错误等级 SEVERITY_LEVEL;,了解,NOTE:可以用在仿真时传递信息。 WARNING:用在非平常的情形,此时仿真过程仍可继续,但结果可能是不可预知的。 ERROR:用在仿真过程继续执行下去已经不可能的情况。 FAILURE:用在发生了致命错误,仿真过程必须立即

21、停止的情况。,错误等级,了解,REPORT语句类似于ASSERT语句,区别是它没有条件。其语句格式如下:REPORT 字符串;REPORT字符串 SEVERITY SEVERITY_LEVEL;,WHILE COUNTER 50THEN REPORT “THE COUNTER IS OVER 50“; END IF; END LOOP;,REPORT语句,了解,决断(RESOLUTION)函数定义了当一个信号有多个驱动源时,以什么样的方式将这些驱动源的值决断为一个单一的值。决断函数用于声明一个决断信号。,PACKAGE RES_PACK ISFUNCTION RES_FUNC(DATA: IN

22、 BIT_VECTOR) RETURN BIT:SUBTYPE RESOLVED_BIT IS RES_FUNC BIT; END PACKAGE RES_PACK;PACKAGE BODY RES_PACK IS,决断函数,了解,FUNCTION RES_FUNC(DATA:IN BIT_VECTOR) RETURN BIT IS BEGINFOR I IN DATA RANGE LOOPIF DATA(I)=0THENRETURN 0;END IF; END LOOP; RETURN 1; END FUNCTION RES_FUNC; END PACKAGE BODY RES_PACK;,

23、USE WORK.RES_PACK.ALL;ENTITY WAND_VHD ISPORT(X,Y:IN BIT; Z:OUT RESOLVED_BIT); END ENTITY WAND_VHDL;ARCHITECTURE ART OF WAND_VHD IS BEGINZ=X;Z=Y; END ARCHITECTURE ART;,3.5 并发描述语句,并发语句结构是最具VHDL特色的。 在VHDL中,并发语句有多种语句格式,它们在结构体中的执行是同步进行的,或者说是并行运行的;其执行方式与书写顺序无关。 在执行中,并发语句之间可以有信息往来;也可以是互为独立、互不相关、异步运行(如多时钟情况

24、)。但每一并发语句内部的语句运行方式可以不同,即有并行执行方式(如块语句)和顺序执行方式(如进程语句)。,识记,识记,并行信号赋值语句(CONCURRENT SIGNA ASSIGNMENTS) 进程语句(PROCESS STATEMENTS) 块语句(BLOCK STATEMENTS) 条件信号赋值语句(SELECTED SIGNA ASSIGNMENTS) 元件例化语句(COMPONENT INSTANTIATIONS) 生成语句(GENERATE STATEMENTS) 并行过程调用语句(CONCURRENT PROCEDURE CALLS),七种并行语句:,识记,ARCHITECTUR

25、E 结构体名 OF 实体名 IS 说明语句; BEGIN 并行语句; END ARCHITECTURE 结构体名;,并行语句在结构体中的使用格式,识记,3.5.1 PROCESS语句,PROCESS语句是一种并发处理语句,在一个构造体中多个PROCESS语句可以同时并发运行。因此,PROCESS语句是VHDL中描述硬件系统并发行为的最常用、最基本的语句。 PROCESS语句的特点: 1)可以与其它进程并发执行,并可存取结构体或实体所定义的信号。 2)进程中的所有语句都是顺序执行的。 3)进程中必须包含一个显式的敏感信号表或者包含一个WAIT语句。 4)进程之间的通信是通过信号量传递来实现的。,

26、识记,1)PROCESS语句格式进程标号:PROCESS(敏感信号参数表) IS进程说明部分;BEGIN顺序描述语句;END PROCESS进程标号; 进程说明部分用于定义该进程所需的局部数据环境。,识记,2)PROCESS 组成PROCESS语句结构是由三个部分组成的,即进程说明部分、顺序描述语句部分和敏感信号参数表。进程说明部分主要定义一些局部量,可包括数据类型、常数、属性、子程序等。但需注意,在进程说明部分中不允许定义信号和共享变量。顺序描述语句部分可分为赋值语句、进程启动语句、子程序调用语句、顺序描述语句和进程跳出语句等。敏感信号参数表需列出启动本进程要读入的信号名。,识记,信号赋值语

27、句:即在进程中将计算或处理的结果向信号(SIGNAL)赋值。 变量赋值语句:即在进程中以变量(VARIABLE)的形式存储计算的中间值。 进程启动语句:当PROCESS的敏感信号参数表中没有列出任何敏感量时,进程的启动只能通过进程启动语句WAIT语句。WAIT语句可以看成是一种隐式的敏感信号表。 子程序调用语句:对已定义的过程和函数进行调用,并参与计算。 顺序描述语句:包括IF语句、CASE语句、LOOP语句和NULL语句等。 进程跳出语句:包括NEXT语句和EXIT语句。,顺序描述语句部分,识记,ARCHITECTURE ART OF STAT IS BEGIN P1:PROCESS - 该

28、进程未列出敏感信号,进程需靠WAIT语句来启动 BEGIN WAIT UNTI CLOCK ; - 等待CLOCK激活进程 IF (DRIVER=1) THEN - 当DRIVER为高电平时进入CASE语句 CASE OUTPUT ISWHEN S1= OUTPUT OUTPUT OUTPUT OUTPUT=S1; END CASE; END PROCESS P1; END ARCHITECTURE ART;,3.5.2 块语句,块(BLOCK)语句是一种将结构体中的并行描述语句进行组合的方法,它的主要目的是改善并行语句及其结构的可读性,或是利用BLOCK的保护表达式关闭某些信号。,块标号:

29、BLOCK (块保护表达式) IS接口说明;类属说明;BEGIN并行语句;END BLOCK 块标号;,1、块语句的结构,识记,2、块语句的应用,BLOCK的应用可使结构体层次鲜明,结构明确。利用BLOCK语句可以将结构体中的并行语句划分成多个并列方式的BLOCK,每一个BLOCK都像一个独立的设计实体,具有自己的类属参数说明和界面端口,以及与外部环境的衔接描述。,与大部分的VHDL语句不同,BLOCK语句的应用,包括其中的类属说明和端口定义,都不会影响对原结构体的逻辑功能的仿真结果。,3BLOCK语句在综合中的地位,了解, ENTITY GAT IS GENERIC(L_TIME:TIME;

30、S_TIME:TIME); -类属说明PORT (B1,B2,B3:INOUT BIT); -结构体全局端口定义 END ENTITY GAT; ARCHITECTURE ART OF GAT ISSIGNA A1:BIT; -结构体全局信号A1定义 BEGIN BLK1:BLOCK IS -块定义,块标号名是BLK1 GENERIC (GB1,GB2:TIME); -定义块中的局部类属参量 GENERIC MAP (GB1=L-TIME,GB2=S-TIME) -局部端口参量设定 PORT (PB1:IN BIT;PB2:INOUT BIT); -块结构中局部端口定义 POTR MAP(PB

31、1=B1,PB2=A1); -块结构端口连接说明 CONSTANT DELAY:TIME:=1 ms; -局部常数定义 SIGNA S1:BIT; -局部信号定义 BEGINS1=PB1 AFTER DELAY; PB2=S1 AFTER GB1,B1 AFTER GB2; END BLOCK BLK1; END ARCHITECTURE ART;,了解,2)条件信号代入语句,条件信号赋值语句的格式为:目标信号 = 表达式1 WHEN 条件1 ELSE表达式2 WHEN 条件2 ELSE 表达式n;,3.5.3 并行信号赋值语句,1)简单信号赋值语句,信号赋值目标=表达式;,每条信号赋值语句相

32、当于一个进程,语句中任何信号的变化,将启动相关并行语句的赋值操作。,识记,3)选择信号赋值语句,选择信号赋值语句的格式为:WITH 条件表达式 SELECT目标信号 = 表达式1 WHEN 条件1,表达式2 WHEN 条件2,表达式n WHEN 条件n;,识记,ENTITY DECODER ISPORT(A,B,C: IN STD_LOGIC;DATA1,DATA2:IN STD_LOGIC;DATAOUT: OUT STD_LOGIC); END ENTITY DECODER; ARCHITECTURE ART OF DECODER IS BEGIN SIGNA INSTRUCTION:ST

33、D_LOGIC_VECTOR(2 DOWNTO 0); INSTRUCTION =C & B & A;WITH INSTRUCTION SELECTDATAOUT =DATA1 AND DATA2 WHEN “000”, DATA1 OR DATA2 WHEN “001“,DATA1 NAND DATA2 WHEN “010“,DATA1 NOR DATA2 WHEN “011“,DATA1 XOR DATA2 WHEN “100“,DATA1 NXOR DATA2 WHEN “101“,Z WHEN OTHERS; -当不满足条件时,输出呈高阻态 END ARCHITECTURE ART;,

34、了解,3.5.4 并行过程调用语句,并行过程调用语句可以作为一个并行语句直接出现在结构体或块语句中。并行过程调用语句的功能等效于包含了同一个过程调用语句的进程。,PROCEDURE CHECK(SIGNA A:IN STD_LOGIC_VECTOR; -在调用时再定位宽SIGNAN ERROR:OUT BOOLEAN) IS VARIABLE FOUND_ONE:BOOLEAN:=FALSE; -设初始值,例3.5.16:,了解,BEGIN FOR I IN ARANGE LOOP -对位矢量A的所有的位元素进行循环检测 IF A(I)=1THEN -发现A中有1 IF FOUND_ONE T

35、HEN -FOUND_ONE为TRUE,则表明发现了一个以上的1ERROR=TRUE; -发现了一个以上的1,令FOUND_ONE为TRUERETURN; -结束过程 END IF; FOUND_ONE:=TRUE; -在A中已发现了一个1 END IF; END LOOP; -再测A中的其他位 ERROR=NOT FOUND_ONE; -如果没有任何1被发现,ERROR将被置TRUE END PROCEDURE CHECK;,了解,3.5.5 COMPONENT语句,元件说明语句的书写格式为:COMPONENT 元件名GENERIC 说明;PORT 说明; END COMPONENT ;,元

36、件例化语句的格式为: 标号:元件名 PORT MAP(信号,),元件例化:即引入一种连接关系,它将预先设计好的设计实体定义为一个元件,然后利用特定的语句将此元件与当前的设计实体中的指定端口相连接,从而为当前设计实体引入一个新的低一级的设计层次。元件例化是使VHDL设计实体构成自上而下层次化设计的一个重要途径。元件例化可以是多层次的。,元件例化就是将预先设计好的设计实体定义为一个元件,然后利用特定的语句将此元件与当前的设计实体中的指定端口相连接,从而为当前设计实体引入一个新的低一级的设计层次。,识记,端口信号映射(匹配)方法有两种:1. 位置映射方法 :即在元件例化语句中,实例元件的PORT M

37、AP( )中的实际信号书写顺序位置应与元件说明语句中的端口说明中的信号书写顺序位置一一对应。2. 名称映射方法 :这种方法与信号的书写顺序位置无关。名称映射方法的语法格式为:PORT MAP(形参 = 实参); 其中,实参是设计中连接到端口的实际信号;形参是指元件的对外接口信号。 例如: u0: xnor2 PORT MAP (in1=a(0), in2=b(0), out=s(0);u1: xnor2 PORT MAP (in1=a(1), in2=b(1), out=s(1);u2: xnor2 PORT MAP (in1=a(2), in2=b(2), out=s(2);u3: xnor

38、2 PORT MAP (in1=a(3), in2=b(3), out=s(3);u4: and4 PORT MAP(in1=s(0), in2=s(1), in3=s(2), in4=s(3),out=y);,识记,GENERATE语句用来产生多个相同的结构,适合于生成存储器阵列和寄存器阵列。 GENERATE语句有两种格式:,格式1:标号名:FOR 变量 IN 范围 GENERATE并发处理语句;END GENERATE 标号名;,FOR-GENERATE语句在形式上与FOR-LOOP语句相象,但结构中前者是并发处理,后者是顺序处理。故FOR-GENERATE语句结构中不能使用EXIT和N

39、EXT语句。在FOR-GENERATE语句中,变量 i 不需要事先定义。,3.5.6 GENERATE语句,识记,格式2: 标号名:IF 条件 GENERATE并发处理语句;END GENERATE 标号名 ;,IF-GENERATE语句在形式上与IF语句相象,但结构中没有ELSE项。IF-GENERATE语句是并发处理的,只有当条件为“真”时才执行结构内的语句。,识记,-1位锁存器LATCH的逻辑描述 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY LATCH IS PORT(D:IN STD_LOGIC;ENA:IN STD_LOGIC;

40、 Q:OUT STD_LOGIC); END ENTITY LATCH; ARCHITECTURE ONE OF LATCH IS SIGNA S0: STD_LOGIC; BEGIN PROCESS(D,ENA) IS BEGINIF ENA=1 THENS0=D;END IF;Q=S0; END PROCESS; END ARCHITECTURE ONE;,-SN74373的逻辑描述 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY SN74373 IS -SN74373器件接口说明 PORT (D:IN STD_LOGIC_VECTOR(8

41、 DOWNTO 1); -定义8位输入 OEN:IN STD_LOGIC;G:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(8 DOWNTO 1); -定义8位输出信号 END ENTITY SN74373;,ARCHITECTURE ONE OF SN74373 IS COMPONENT LATCH IS -声明调用前面描述的1位锁存器 PORT(D,ENA:IN STD_LOGIC;Q:OUT STD_LOGIC ); END COMPONENT LATCH; SIGNA S1:STD_LOGIC_VECTOR (8 DOWNTO 1);BEGIN GELATCH

42、:FOR NO IN 1 TO 8 GENERATE-用FORGENERATE语句循环例化8个1位锁存器 LATCHX:LATCH PORT MAP(D(NO),G,S1(NO); -位置关联 END GENERATE GELATCH; Q=S1 WHEN OEN=0 ELSE -条件信号赋值语句“ZZZZZZZZ“; -当OEN=1 时,Q(8)Q(1)输出状态呈高阻态 END ARCHITECTURE ONE;,ARCHITECTURE TWO OF SN74373 IS SIGNA S2:STD_LOGIC_VECTOR(8 DOWNTO 1); BEGIN PROCESS(D, OEN,G) IS BEGINIF OEN=0 THEN -IF语句Q=S2; ELSEQ=“ZZZZZZZZ“;END IF;IF G=1THENS2=D;END IF; END PROCESS; END ARCHITECTURE TWO;,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 通信信息 > 电子设计

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报