VHDL主要描述语句(并行语句).ppt

上传人:小飞机 文档编号:6522920 上传时间:2023-11-08 格式:PPT 页数:52 大小:518KB
返回 下载 相关 举报
VHDL主要描述语句(并行语句).ppt_第1页
第1页 / 共52页
VHDL主要描述语句(并行语句).ppt_第2页
第2页 / 共52页
VHDL主要描述语句(并行语句).ppt_第3页
第3页 / 共52页
VHDL主要描述语句(并行语句).ppt_第4页
第4页 / 共52页
VHDL主要描述语句(并行语句).ppt_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《VHDL主要描述语句(并行语句).ppt》由会员分享,可在线阅读,更多相关《VHDL主要描述语句(并行语句).ppt(52页珍藏版)》请在三一办公上搜索。

1、第五章 VHDL主要描述语句第二部分并行语句,5.2.1 进程语句5.2.2 BLOCK 语句5.2.3 并行过程调用语句5.2.4 元件例化语句 5.2.5 并行断言语句 5.2.6 生成语句,5.2 并行语句,相对于传统的软件描述语言,并行语句结构是最具VHDL特色的。在VHDL中,并行语句具有多种语句格式,各种并行语句在结构体中的执行是同步进行的,或者说是并行运行的,其执行方式与书写的顺序无关。在执行中,并行语句之间可以有信息往来,也可以是互为独立、互不相关、异步运行的(如多时钟情况)。每一并行语句内部的语句运行方式可以有两种不同的方式,即并行执行方式(如块语句)和顺序执行方式(如进程语

2、句)。因此,VHDL并行语句勾画出了一幅充分表达硬件电路的真实的运行图景。,如下图所示的是在一个结构体中各种并行语句运行的示意图。这些语句不必同时存在,在每一语句模块都可以独立异步运行,模块之间并行运行,并通过信号来交换信息。,VHDL中的并行运行有多层含义,即模块间的运行方式可以有同时运行、异步运行、非同步运行等方式,从电路的工作方式上可以包括组合逻辑运行方式、同步逻辑运行方式和异步逻辑运行方式等。并行语句在结构体中的使用格式如下:ARCHITECTURE 结构体名 OF 实体名 IS 说明(定义)语句;BEGIN并行语句;并行语句;END ARCHITECTURE 结构体名;,5.2.1

3、进程语句,进程(PROCESS)语句是最具VHDL语言特色的语句,因为它提供了一种用算法(顺序语句)描述硬件行为的方法。进程实际上是用顺序语句描述的一种进行过程,也就是说进程用于描述顺序事件。PROCESS语句结构包含了一个代表着设计实体中部分逻辑行为的、独立的顺序语句描述的进程。一个结构体中可以有多个并行运行的进程结构,而每一个进程的内部结构却是由一系列顺序语句来构成的。PROCESS语句的表达格式如下:进程标号:PROCESS(敏感信号参数表)IS进程说明部分;BEGIN顺序描述语句;END PROCESS进程标号;,PROCESS 组成 PROCESS语句结构是由三个部分组成的,即进程说

4、明部分、顺序描述语句部分和敏感信号参数表。(1)进程说明部分主要定义一些局部量,可包括数据类型、常数、属性、子程序等。但需注意,在进程说明部分中不允许定义信号和共享变量。(2)顺序描述语句部分是一段顺序执行的语句,描述该进程的行为。PROCESS中规定了每个进程语句在它的某个敏感信号(由敏感信号参量表列出)的值改变时都必须立即完成某一功能行为。它可分为赋值语句、进程启动语句、子程序调用语句、顺序描述语句和进程跳出语句等。(3)敏感信号参数表需列出启动本进程要读入的信号名(当有WAIT语句时例外)。,例ARCHITECTURE art OF stat IS BEGIN P1:PROCESS-该进

5、程未列出敏感信号,进程需靠WAIT语句来启动 BEGIN WAIT UNTIL CLOCK;-等待CLOCK激活进程 IF(driver=1)THEN-当driver为高电平时进入CASE语句CASE output ISWHEN s1=output output output output=s1;END CASE;END IF;END PROCESS P1;END ARCHITECTURE art;,例SIGNAL cnt4:INTEGER RANGE 0 TO 15;-注意CNT4的数据类型.PROCESS(clk,clear,stop)-该进程定义了3个敏感信号 clk,clear,sto

6、p-当其中任何一个改变时,都将启动进程的运行BEGIN IF clear=0 THEN cnt4=0;ELSIF clkEVENT AND clk=1THEN-如果遇到时钟上升沿,则 IF stop=0THEN-如果stop为低电平,则进行加法计数,否则停止计数 cnt4=cnt+1;END IF;END IF;END PROCESS;,进程设计要点 进程的设计需要注意以下几方面的问题:虽然同一结构体中的进程之间是并行运行的,但同一进程中的逻辑描述语句则是顺序运行的,因而在进程中只能设置顺序语句。进程的激活必须由敏感信号表中定义的任一敏感信号的变化来启动,否则必须有一个显式的WAIT语句来激活

7、。结构体中多个进程之所以能并行同步运行,一个很重要的原因是进程之间的通信是通过传递信号和共享变量值来实现的。进程是重要的建模工具。进程结构不但为综合器所支持,而且进程的建模方式将直接影响仿真和综合结果。,进程语句是VHDL程序中使用最频繁和最能体现VHDL语言特点的一种语句,其原因是由于它的并行和顺序行为的双重性,以及其行为描述风格的特殊性。为了使VHDL的软件仿真与综合后的硬件仿真对应起来,应当将进程中的所有输入信号都列入敏感表中。不难发现,在对应的硬件系统中,一个进程和一个并行赋值语句确实有十分相似的对应关系,并行赋值语句就相当于一个将所有输入信号隐性的列入结构体监测范围的(即敏感表的)进

8、程语句。综合后的进程语句所对应的硬件逻辑模块,其工作方式可以是组合逻辑方式的,也可以是时序逻辑方式的。例如在一个进程中,一般的IF语句,综合出的多为组合逻辑电路(一定条件下);若出现WAIT语句,在一定条件下,综合器将引入时序元件,如触发器。,例LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt10a IS PORT(clr:IN STD_LOGIC;in1:IN STD_LOGIC_VECTOR(3 DOWNTO 0);out1:OUT STD_LOGIC_VECTOR(3 D

9、OWNTO 0);END cnt10a;ARCHITECTURE art OF cnt10a IS BEGIN PROCESS(in1,clr)BEGIN IF(clr=1 OR in1=1001)THEN out1=0000;-有清零信号,或计数已达9,out1输出0,ELSE-否则作加1操作 out1=in1+1;END IF;END PROCESS;END art;,组合电路型十进制加法器cnt10a综合后的RTL硬件结构图,例LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY c

10、nt10b ISPORT(clr:IN STD_LOGIC;Clk:IN STD_LOGIC;Cnt:Buffer STD_LOGIC_VECTOR(3 DOWNTO 0);END CNT10b;ARCHITECTURE actv of cnt10b ISBEGINPROCESSBEGINWAIT UNTIL clkEVENT AND clk=1;-等待时钟clk的上沿IF(clr=1 OR cnt=1001)THENcnt=0000;-有清零信号,或计数已达9,out1输出0,ELSE-否则作加1操作cnt=cnt+1;END IF;END PROCESS;END actv;,组合电路型十进

11、制加法器cnt10b综合后的RTL硬件结构图(增加了D触发器),块(BLOCK)语句是一种将结构体中的并行描述语句进行组合的方法,它的主要目的是改善并行语句及其结构的可读性,或是利用BLOCK的保护表达式关闭某些信号。BLOCK语句的格式:块标号:BLOCK(块保护表达式)类属子句类属接口表端口子句 端口接口表BEGINEND BLOCK 块标号;,5.2.2 BLOCK 语句,类属子句和类属接口表为接口说明,它有点类似于实体的定义部分,它可包含由关键词PORT、GENERIC、PORT MAP和GENERIC MAP引导的接口说明等语句,对BLOCK的接口设置以及与外界信号的连接状况加以说明

12、。块的类属说明部分和接口说明部分的适用范围仅限于当前BLOCK。所以,所有这些在BLOCK内部的说明对于这个块的外部来说是完全不透明的,即不能适用于外部环境,但对于嵌套于内层的块却是透明的。块的说明部分可以定义的项目主要有:USE语句、子程序、数据类型、子类型、常数、信号、元件。块中的并行语句部分可包含结构体中的任何并行语句结构。BLOCK语句本身属并行语句,BLOCK语句中所包含的语句也是并行语句。,BLOCK的应用可使结构体层次鲜明,结构明确。利用BLOCK语句可以将结构体中的并行语句划分成多个并列方式的BLOCK,每一个BLOCK都像一个独立的设计实体,具有自己的类属参数说明和界面端口,

13、以及与外部环境的衔接描述。下例描述了一个具有块嵌套方式的BLOCK语句结构。,例ENTITY gat IS GENERIC(L_time:TIME;S_time:TIME);-类属说明 PORT(b1,b2,b3:INOUT BIT);-结构体全局端口定义 END ENTITY gat;ARCHITECTURE art OF gat IS SIGNAL a1:BIT;-结构体全局信号a1定义 BEGIN blk1:BLOCK-块定义,块标号名是BLK1GENERIC(gb1,gb2:time);-定义块中的局部类属参量GENERIC MAP(gb1=L-time,gb2=S-time);-局部

14、端口参量设定 PORT(pb1:IN BIT;pb2:INOUT BIT);-块结构中局部端口定义POTR MAP(pb1=b1,pb2=a1);-块结构端口连接说明CONSTANT delay:time:=1 ms;-局部常数定义SIGNAL s1:BIT;-局部信号定义BEGIN s1=pb1 AFTER delay;pb2=s1 AFTER gb1;END BLOCK blk1;END ARCHITECTURE art;,块中定义的所有的数据类型、数据对象(信号、变量、常量)和子程序等都是局部的;对于多层嵌套的块结构,这些局部定义量只适用于当前块,以及嵌套于本层块的所有层次的内部块,而对

15、此块的外部来说是不可见的。下例是一个含有三重嵌套块的程序,从此例能很清晰地了解上述关于块中数据对象的可视性规则。它实际描述的是如下图所示的两个相互独立的2输入与门:,例b1:BLOCK-定义块b1 SIGNAL s:BIT;-在b1块中定义s BEGIN s=a AND b;-向b1中的s赋值 b2:BLOCK-定义块b2,套于b1块中 SIGNAL s:BIT;-定义b2块中的信号s BEGIN s=c AND d;-向b2中的s赋值 b3:BLOCK BEGIN z=s;-此s来自b2块 END BLOCK b3;END BLOCK b2;y=s;-此s来自b1块END BLOCK b1;

16、,并行信号赋值语句有三种形式:简单信号赋值语句、条件信号赋值语句和选择信号赋值语句。这三种信号赋值语句的共同点是:赋值目标必须都是信号,所有赋值语句与其他并行语句一样,在结构体内的执行是同时发生的,与它们的书写顺序和是否在块语句中没有关系。简单信号赋值语句 并行简单信号赋值语句是VHDL并行语句结构的最基本的单元,它的语句格式如下:信号赋值目标=表达式;式中,信号赋值目标的数据类型必须与赋值符号右边表达式的数据类型一致。,5.2.3 并行信号赋值语句,例ARCHITECTURE curt OF bc1 ISSIGNAL s1:STD_LOGIC;BEGIN output1=a AND b;ou

17、tput2=c+d;b1:BLOCK ISSIGNAL e,f,g,h:STD_LOGIC;BEGIN g=e OR f;h=e XOR f;END BLOCK b1;s1=g;END ARCHITECTURE curt,条件信号赋值语句条件信号赋值语句的表达方式如下:赋值目标=表达式1 WHEN 赋值条件1 ELSE 表达式2 WHEN 赋值条件2 ELSE 表达式n;在结构体中的条件信号赋值语句的功能与在进程中的IF语句相同。在执行条件信号赋值语句时,每一赋值条件是按书写的先后关系逐项测定的,一旦发现赋值条件为TRUE,立即将表达式的值赋给赋值目标。,例 z=a WHEN p1=1 ELS

18、E b WHEN p2=0 ELSE c;由于条件测试的顺序性,第一句具有最高赋值优先级,第二句其次,第三句最后。这就是说,如果当p1和p2同时为1 时,z获得的赋值是a。,上例等同于原在顺序语句所的例子:SIGNA a,b,c,p1,p2,z:BIT;.IF(p1=1)THENz=a;-满足此语句的执行条件是(p1=1)ELSIF(p2=0)THENz=b;-满足此语句的执行条件是(p1=0)AND(p2=0)ELSEz=c;-满足此语句的执行条件是(p1=0)AND(p2=1)END IF;,选择信号赋值语句选择信号赋值语句格式如下:WITH 选择表达式SELECT赋值目标信号=表达式WH

19、EN选择值,表达式 WHEN选择值,表达式WHEN选择值;下例是一个简化的指令译码器。对应于由A、B、C三个位构成的不同指令码,由DATA1和DATA2输入的两个值将进行不同的逻辑操作,并将结果从DATAOUT输出。,例LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY decoder IS PORT(a,b,c:IN STD_LOGIC;data1,data2:IN STD_LOGIC;dataout:OUT STD_LOGIC);END ENTITY decoder;ARCHITEC

20、TURE concunt OF decoder IS BEGIN SIGNAL instruction:STD_LOGIC_VECTOR(2 DOWNTO 0);instruction=c&b&a;WITH instruction SELECT dataout=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;-当不满

21、足条件时,输出呈高阻态END ARCHITECTURE concunt;,指令译码器DECODER,并行过程(PROCEDURE)调用语句可以作为一个并行语句直接出现在结构体或块语句中。并行过程调用语句的功能等效于包含了同一个过程调用语句的进程。并行过程调用语句的语句调用格式与前面讲的顺序过程调用语句是相同的,即过程名(关联参量名)。过程语句的格式:PROCEDUE 过程名(参数1;参数2;)IS 定义语句BEGIN 顺序语句END 过程名;,5.2.4 并行过程调用语句,下例是个说明性的例子,在这个例子中,首先定义了一个完成半加器功能的过程。此后在一条并行语句中调用了这个过程,而在接下去的一

22、条进程中也调用了同一过程。事实上,这两条语句是并行语句,且完成的功能是一样的。例:PROCEDURE adder(SIGNAL a,b:IN STD_LOGIC;-过程名为adder SIGNAL sum:OUT STD_LOGIC);adder(a1,b1,sum1);-并行过程调用,在此,a1、b1、sum1-即为分别对应于a、b、sum的关联参量名 PROCESS(c1,c2);-进程语句执行 BEGIN adder(c1,c2,s1);-顺序过程调用,在此c1、c2、c1即为分别-对应于a、b、sum的关联参量名 END PROCESS;,并行过程的调用,常用于获得被调用过程的多个并行

23、工作的复制电路。例如,要同时检测出一系列有不同位宽的位矢信号,每一位矢信号中的位只能有一个位是1,而其余的位都是0,否则报告出错。完成这一功能的一种办法是先设计一个具有这种位矢信号检测功能的过程,然后对不同位宽的信号并行调用这一过程。下例中首先设计了一个过程check,用于确定一给定位宽的位矢是否只有一个位是1。如果是只有一个位为1,则将check中的输出参量“error”设置为FALSE,如果不是,“error”则为TRUE。,例PROCEDURE check(SIGNAL a:IN STD_LOGIC_VECTOR;-在调用时 SIGNANL error:OUT BOOLEAN)IS-再定

24、位宽VARIABLE found_one:BOOLEAN:=FALSE;-设初始值BEGINFOR i IN aRANGE LOOP-对位矢量A的所有的位元素进行循环检测 IF a(i)=1 THEN-发现a中有1IF found_one THEN-found_one为TRUE,则表明发现了一个以上的1 error=TRUE;-发现了一个以上的1,令found_one为TRUE RETURN;-结束过程 END IF;found_one:=TRUE;-在a中已发现了一个1 END IF;END LOOP;-再测a中的其他位 ERROR=NOT found_one;-如果没有任何1被发现,ERR

25、OR将被置TRUEEND PROCEDURE check;,下例是对不同位宽的位矢信号利用以上的过程进行检测的并行过程调用程序:chblk:BLOCK SIGNAL s1:STD_LOGIC_VECTOR(0 TO 0);-过程调用前设定矢尺寸 SIGNAL s2:STD_LOGIC_VECTOR(0 TO 1);SIGNAL s3:STD_LOGIC_VECTOR(0 TO 2);SIGNAL s4:STD_LOGIC_VECTOR(0 TO 3);SIGNAL e1,e2,e3,e4:BOOLEAN;BEGIN check(s1,e1);-并行过程调用,关联参数名为s1、e1 check(

26、s2,e2);-并行过程调用,关联参数名为s2、e2 check(s3,e3);-并行过程调用,关联参数名为s3、e3 check(s4,e4);-并行过程调用,关联参数名为s4、e4 END BLOCK;,上例块chblk的逻辑电路结构图,元件例化就是将预先设计好的设计实体定义为一个元件,然后利用特定的语句将此元件与当前的设计实体中的指定端口相连接,从而为当前设计实体引入一个新的低一级的设计层次。元件例化是可以多层次的,在一个设计实体中被调用安插的元件本身也可以是一个低层次的当前设计实体,因而可以调用其他的元件,以便构成更低层次的电路模块。,5.2.5 元件例化语句,元件例化语句由两部分组成

27、,前一部分是将一个现成的设计实体定义为一个元件的语句,第二部分则是此元件与当前设计实体中的连接说明,它们的语句格式如下:COMPONENT 例化元件名 IS GENERIC(类属表);PORT(例化元件端口名表);-元件定义语句END COMPONENT 例化元件名;元件例化名:例化元件名 PORT MAP(例化元件端口名=连接实体端口名,);-元件例化语句,例LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY nd2 ISPORT(a,b:IN STD_LOGIC;c:OUT STD_LOGIC);END ENTITY nd2;ARCHITECTU

28、RE nd2behv OF nd2 ISBEGINc=a NAND b;END ARCHITECTURE nd2behv;,续例:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ord41 ISPORT(a1,b1,c1,d1:IN STD_LOGIC;z1:OUT STD_LOGIC);END ENTITY ord41;ARCHITECTURE ord41behv OF ord41 ISCOMPONENT nd2 ISPORT(a,b:IN STD_LOGIC;c:OUT STD_LOGIC);END COMPONENT nd2;SIGNAL

29、s1,s2:STD_LOGIC;BEGINu1:nd2 PORT MAP(a1,b1,s1);-位置关联方式u2:nd2 PORT MAP(a=c1,c=s2,b=d1);-名字关联方式u3:nd2 PORT MAP(s1,s2,c=z1);-混合关联方式END ARCHITECTURE ord41behv;,ORD41逻辑原理图,生成(GENERATE)语句可以简化为有规则设计结构的逻辑描述。生成语句有一种复制作用,在设计中,只要根据某些条件,设定好某一元件或设计单位,就可以利用生成语句复制一组完全相同的并行元件或设计单元电路结构。生成语句的语句格式有如下两种形式:标号:FOR 循环变量 I

30、N 取值范围 GENERATE 说明 BEGIN 并行语句 END GENERATE标号;标号:IF 条件 GENERATE说明 BEGIN并行语句 END GENERATE标号;,5.2.6 生成语句,这两种语句格式都是由如下四部分组成:生成方式:有FOR语句结构或IF语句结构,用于规定并行语句的复制方式。说明部分:这部分包括对元件数据类型、子程序和数据对象作一些局部说明。并行语句:生成语句结构中的并行语句是用来“COPY”的基本单元,主要包括元件、进程语句、块语句、并行过程调用语句、并行信号赋值语句甚至生成语句。这表示生成语句允许存在嵌套结构,因而可用于生成元件的多维阵列结构。标号:生成语

31、句中的标号并不是必须的,但如果在嵌套生成语句结构中就是很重要的。,对于FOR语句结构,主要是用来描述设计中的一些有规律的单元结构,其生成参数及其取值范围的含义和运行方式与LOOP语句十分相似。但需注意,从软件运行的角度上看,FOR语句格式中生成参数(循环变量)的递增方式具有顺序的性质,但是最后生成的设计结构却是完全并行的,这就是为什么必须用并行语句来作为生成设计单元的缘故。生成参数(循环变量)是自动产生的,它是一个局部变量,根据取值范围自动递增或递减。取值范围的语句格式与LOOP语句是相同的,有两种形式:表达式 TO 表达式;-递增方式,如1 TO 5 表达式 DOWNTO 表达式;-递减方式

32、,如5 DOWNT 1 其中的表达式必须是整数。,下例是利用了VHDL数组属性语句ATTRIBUTERANGE作为生成语句的取值范围,进行重复元件例化过程,从而产生了一组并列的电路结构(如图所示):,生成语句产生的8个相同的电路模块,例:COMPONENT comp ISPORT(x:IN STD_LOGIC;y:OUT STD_LOGIC);END COMPONENT comp;SIGNAL a,b:STD_LOGIC_VECTOR(0 TO 7);gen:FOR i IN aRANGE GENERATEu1:comp PORT MAP(x=a(i),y=b(i);END GENERATE

33、gen;,以下将利用元件例化和FORGENERATE语句完成一个8位三态锁存器的设计。示例仿照74373(或74LS373/4HC373)的工作逻辑进行设计。74373的器件引脚功能如下图所示,它的引脚功能分别是:D1D8为数据输入端;Q1Q8为数据输出端;OEN为输出使能端,若OEN=1,则Q8Q1的输出为高阻态,若OEN=0,则Q8Q1的输出为保存在锁存器中的信号值;G为数据锁存控制端,若G=1,D8D1输入端的信号进入74373中的8位锁存器中,若G=0,74373中的8位锁存器将保持原先锁入的信号值不变。,SN74373的内部逻辑结构,例LIBRARY IEEE;USE IEEE.ST

34、D_LOGIC_1164.ALL;ENTITY latch IS PORT(d:IN STD_LOGIC;ena:IN STD_LOGIC;q:OUT STD_LOGIC);END ENTITY latch;ARCHITECTURE one OF latch IS SIGNAL s0:STD_LOGIC;BEGIN PROCESS(d,ena)IS BEGIN IF ena=1 THEN s0=D;END IF;Q=s0;END PROCESS;END ARCHITECTURE one;,下面开始SN74373的逻辑描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.

35、ALL;ENTITY SN74373 IS-SN74373器件接口说明PORT(d:IN STD_LOGIC_VECTOR(8 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 ISCOMPONENT latch IS-声明调用前面描述的1位锁存器PORT(d,ena:IN STD_LOGIC;q:OUT STD_LOGIC);END COMPONENT lat

36、ch;,续上例 SIGNAL s1:STD_LOGIC_VECTOR(8 DOWNTO 1);BEGINGeLatch:FOR iNum IN 1 TO 8 GENERATE-用FORGENERATE语句循环例化8个1位锁存器Latchx:Latch PORT MAP(D(iNum),G,s1(iNum);-位置关联END GENERATE GeLatch;q=s1 WHEN oen=0 ELSE-条件信号赋值语句 ZZZZZZZZ;-当OEN=1 时,Q(8)Q(1)输出状态呈高阻态END ARCHITECTURE one;,续上例 ARCHITECTURE two OF SN74373 I

37、SSIGNAL s2:STD_LOGIC_VECTOR(8 DOWNTO 1);BEGINPROCESS(d,oen,g,s2)ISBEGINIF oen=0 THEN-IF语句q=s2;ELSEq=ZZZZZZZZ;END IF;IF g=1THENs2=d;END IF;END PROCESS;END ARCHITECTURE two;,由本例可以看出:程序中安排了两个结构体,以不同的电路来实现相同的逻辑,即一个实体可以对应多个结构体,每个结构体对应一种实现方案。COMPONENT语句对将要例化的器件进行了接口声明,它对应一个已设计好的实体(ENTITY latch)。在FORGENERATE语句使用中,GELATCH为标号,iNum为变量,从18共循环了八次。“latchx:latch PORT MAP(D(iNum),G,s1(iNum);是一条含有循环变量iNum的例化语句,且信号的连接方式采用的是位置关联方式,安装后的元件标号是LATCHX。,THANKS!,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号