元件例化语句块语句和生成语句_第1页
元件例化语句块语句和生成语句_第2页
元件例化语句块语句和生成语句_第3页
元件例化语句块语句和生成语句_第4页
元件例化语句块语句和生成语句_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、元件例化语句、块语句与生成语句(P67-68、73-76),本课要解决的问题:,掌握元件例化语句的格式与应用; 掌握块语句的格式与应用; 掌握生成语句的格式与应用。,顺序语句的总结,VHDL的顺序语句包括:,赋值语句,等待语句,返回语句,流程控制语句,空操作语句,顺序语句的特点:,并行语句,VHDL的并行语句包括:,并行语句的特点,一、利用元件例化语句描述的表决器,BEGIN U1: an2 PORT MAP(a=SW1, b=SW2, c=i1); U2: an2 PORT MAP(a=SW2, b=SW3, c=i2); U3: an2 PORT MAP(a=SW1, b=SW3, c=i

2、3); U4: o3 PORT MAP(i1, i2, i3, L2); U5: n1 PORT MAP(L2, L1); END behav;,ENTITY voter IS PORT(SW1, SW2, SW3: IN BIT; L1: OUT BIT; L2: BUFFER BIT); END voter; ARCHITECTURE behav OF voter IS SIGNAL i1, i2, i3: BIT; COMPONENT an2 PORT(a,b: IN BIT; c: OUT BIT); END COMPONENT an2; COMPONENT o3 PORT(l, m,

3、 n: IN BIT; z: OUT BIT); END COMPONENT o3; COMPONENT n1 PORT(x: IN BIT; y: OUT BIT); END COMPONENT n1;,元件定义语句,将实体an2、o3和n1定义为元件,元件调用语句,调用元件an2、o3、n1,U1U5为元件标号,二、元件例化语句(P73-75),作用 将事先设计好的实体看作是一个“元件”,在新的设计中调用这个元件,定义这个元件与其他信号、元件与元件、元件与外部端口的连接关系。,调用了与门,调用了或门,定义元件与端口的连接,定义调用元件间的连接,定义元件与端口的连接,调用了 反相器,i3,i

4、2,i1,格式 元件例化语句由两部分组成,包括元件定义语句和元件调用语句。 元件定义语句: 把已经设计好的实体定义为一个可以调用的元件。实体的端口为该元件的引脚。,COMPONENT ND2 GENERIC (n: INTEGER); PORT (a: IN STD_LOGIC_VECTOR(n-1 DOWNTO 0); c: OUT STD_LOGIC); END COMPONENT ND2;,实体与元件的对应:,ENTITY an2 IS PORT(a,b:IN BIT; c:OUT BIT); END an2; ARCHITECTURE behav OF an2 IS BEGIN c=a

5、 AND b; END behav;,COMPONENT an2 PORT(a,b: IN BIT; c: OUT BIT); END COMPONENT an2;,ENTITY n1 IS PORT(x: IN BIT; y: OUT BIT); END n1; ARCHITECTURE behav OF n1 IS BEGIN y=NOT x; END behav;,COMPONENT o3 PORT(l, m, n: IN BIT; z: OUT BIT); END COMPONENT o3;,COMPONENT n1 PORT(x: IN BIT; y: OUT BIT); END C

6、OMPONENT n1;,ENTITY o3 IS PORT(l, m, n:IN BIT; z: OUT BIT); END o3; ARCHITECTURE behav OF o3 IS BEGIN z=l OR m OR n; END behav;,元件调用语句: GENERIC MAP ()为类属映射语句,确定调用元件的实体中定义的类属参数;PORT MAP () 为端口映射语句,定义调用元件与其他部分的连接关系。 标号名可看作是插座的名称,而元件名则是调用芯片的实际型号名称。,u2: andn GENERIC MAP (n=2); PORT MAP (a(0)=C1, a(1)=D1

7、, c=Y);,ULN2003,U1,芯片型号-元件名,插座-标号名,元件调用的对应关系:,i3,i2,i1,U1: an2 PORT MAP (a=SW1, b=SW2, c=i1);,U2: an2 PORT MAP (a=SW2, b=SW3, c=i2);,U3: an2 PORT MAP (a=SW1, b=SW3, c=i3);,U4: o3 PORT MAP (i1, i2, i3, L2);,U5: n1 PORT MAP(L2, L1);,端口连接定义的方法: 名字关联方式: 把元件的端口与它要连接的系统端口通过”=”对应起来。 位置关联方式: 系统端口在端口映射语句中的位置

8、,与它连接的元件端口在元件的端口说明语句中的位置相对应。,U1: an2 PORT MAP (a=SW1, b=SW2, c=i1);,SW2,SW1,i1,a,b,c,COMPONENT an2 PORT(a: IN BIT; b: IN_BIT; c: OUT STD_BIT); END COMPONENT an2; . . . u1: an2 PORT MAP (SW1, SW2, i1);,混合关联方式:,COMPINENT an2 PORT(a: IN BIT; b: IN BIT; c: OUT BIT); END COMPONENT an2; . . . u1: an2 PORT

9、 MAP (SW1, SW2, c=i1);,位置关联方式,名字关联方式,LIBRARY IEEE; USE IEEE.STD. LOGIC_1164. ALL; ENTITY ND2 IS GENERIC( n: INTEGER); PORT(a: IN STD_LOGIC_VECTOR(n-1 DOWNTO 0); c: OUT STD_LOGIC); END ND2; ARCHITECTURE behav OF ND2 IS BEGIN PROCESS(a) VARIABLE int: STD_LOGIC; BEGIN int :=0; FOR i In aLENGTH-1 DOWNTO

10、 0 LOOP IF a(i)=0 THEN int:=1; END IF; END LOOP; c=int; END PROCESS; END;,P74【例3-12 多输入与非门】,P75【例3-13 元件例化】,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY ORD41 IS PORT(A1,B1,C1,D1:IN STD_LOGIC; Z1:OUT STD_LOGIC); END ORD41; ARCHITECTURE ORD41BEHV OF ORD41 IS COMPONENT ND2 GENERIC ( n: INTEGER);

11、PORT(a: IN STD_LOGIC_VECTOR(n-1 DOWNTO 0); c: OUT STD_LOGIC); END COMPONENT ND2; SIGNAL X,Y:STD_LOGIC; BEGIN U1:ND2 GENERIC MAP (n=2); PORT MAP(A1,B1,X); U2:ND2 GENERIC MAP (n=2); PORT MAP(a(1)=C1,a(0)=D1,C=Y); U3:ND2 GENERIC MAP (n=2); PORT MAP(X,Y,C=Z1); END ARCHITECTURE ORD41BEHV;,Z1,【流水灯】,LIBRAR

12、Y IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY no2 IS PORT(a,b:IN STD_LOGIC; c:OUT STD_LOGIC); END no2; ARCHITECTURE behav OF no2 IS BEGIN c=NOT (a OR b); END behav;,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY df1 IS PORT(clk,d: IN STD_LOGIC; q: OUT STD_LOGIC); END df1; ARCHITECTURE behav OF df1

13、IS BEGIN PROCESS(clk) BEGIN IF(clkEVENT AND clk=1) THEN q=d; END IF; END PROCESS; END behav;,COMPONENT df1 PORT(clk,d: IN STD_LOGIC; q: OUT STD_LOGIC); END COMPONENT df1;,COMPONENT no2 PORT(a,b:IN STD_LOGIC; c:OUT STD_LOGIC); END COMPONENT no2;,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY lsd I

14、S PORT(CP:IN STD_LOGIC; Q1, Q2: BUFFER STD_LOGIC; Q3: OUT STD_LOGIC); END lsd; ARCHITECTURE behav OF lsd IS SIGNAL i1: STD_LOGIC; COMPONENT df1 PORT(clk,d: IN STD_LOGIC; q: OUT STD_LOGIC); END COMPONENT df1; COMPONENT no2 PORT(a,b:IN STD_LOGIC; c:OUT STD_LOGIC); END COMPONENT no2;,BEGIN U1: df1 PORT

15、 MAP(clk=CP, d=i1, q=Q1); U2: df1 PORT MAP(clk=CP, d=Q1, q=Q2); U3: df1 PORT MAP(clk=CP, d=Q2, q=Q3); U4: no2 PORT MAP(Q1, Q2, i1); END behav;,i1,三、VHDL不同描述风格(P82-86),【表决器描述】,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY voter IS PORT( a, b, c : IN STD_LOGIC; x :

16、 BUFFER STD_LOGIC; y : OUT STD_LOGIC ); END ENTITY voter ; ARCHITECTURE three OF voter IS SIGNAL t1, t2, t3: STD_LOGIC_VECTOR(1 DOWNTO 0); SIGNAL t: INTEGER RANGE 0 TO 3; BEGIN t11) ELSE 0; y=NOT x; END ARCHITECTURE three;,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY voter IS PORT( a, b, c : IN

17、 STD_LOGIC; x : BUFFER STD_LOGIC; y : OUT STD_LOGIC ) ; END ENTITY voter ; ARCHITECTURE two OF voter IS SIGNAL t: STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN t=a ,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY voter IS PORT( a, b, c : IN STD_LOGIC; x : BUFFER STD_LOGIC; y : OUT STD_LOGIC ) ; END ENTITY v

18、oter ; ARCHITECTURE one OF voter IS BEGIN x = (a AND b) OR (b AND c) OR (c AND a); y=NOT x; END ARCHITECTURE one ;,数据流描述,RTL描述,行为描述,BEGIN U1: an2 PORT MAP(a=SW1, b=SW2, c=i1); U2: an2 PORT MAP(a=SW2, b=SW3, c=i2); U3: an2 PORT MAP(a=SW1, b=SW3, c=i3); U4: o3 PORT MAP(i1, i2, i3, L2); U5: n1 PORT MAP

19、(L2, L1); END behav;,ENTITY voter IS PORT(SW1, SW2, SW3: IN BIT; L1: OUT BIT; L2: BUFFER BIT); END voter; ARCHITECTURE behav OF voter IS SIGNAL i1, i2, i3: BIT; COMPONENT an2 PORT(a,b: IN BIT; c: OUT BIT); END COMPONENT an2; COMPONENT o3 PORT(l, m, n: IN BIT; z: OUT BIT); END COMPONENT o3; COMPONENT

20、 n1 PORT(x: IN BIT; y: OUT BIT); END COMPONENT n1;,结构描述,结构描述就是描述元件之间的互联关系。 它将一个大的设计划分成若干个小的单元,逐一完成个单元的设计,然后用结构描述将它们组合起来,形成更复杂的设计。 结构描述体现了模块化的设计思想。,【流水灯描述】,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY lsd is PORT(clk:in STD_LOGIC; led1:out STD_LOGIC_VECTOR(2 DOWNTO 0); END lsd; ARCHITECTURE beha

21、v OF lsd IS BEGIN PROCESS(clk) VARIABLE count1: INTEGER RANGE 0 TO 3; BEGIN IF(clkEVENT AND clk=1) THEN IF(count1=3) THEN count1:=0; END IF; CASE count1 IS WHEN 0=led1led1led1null; END CASE; count1:=count1+1; END IF; END PROCESS; END behav;,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY lsd is PO

22、RT(clk:in STD_LOGIC; led1:buffer STD_LOGIC_VECTOR(2 DOWNTO 0); END lsd; ARCHITECTURE behav OF lsd IS BEGIN PROCESS(clk) VARIABLE count1: INTEGER RANGE 0 TO 3; BEGIN IF(clkEVENT AND clk=1) THEN IF(count1=3) THEN count1:=0; ELSE count1:=count1+1; END IF; led10); led1(count1)=1; END IF; END PROCESS; EN

23、D behav;,数据流描述,行为描述,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY lsd IS PORT(CP:IN STD_LOGIC; Q1, Q2: BUFFER STD_LOGIC; Q3: OUT STD_LOGIC); END lsd; ARCHITECTURE behav OF lsd IS SIGNAL i1: STD_LOGIC; COMPONENT df1 PORT(clk,d: IN STD_LOGIC; q: OUT STD_LOGIC); END COMPONENT df1; COMPONENT no2 POR

24、T(a,b:IN STD_LOGIC; c:OUT STD_LOGIC); END COMPONENT no2;,BEGIN U1: df1 PORT MAP(clk=CP, d=i1, q=Q1); U2: df1 PORT MAP(clk=CP, d=Q1, q=Q2); U3: df1 PORT MAP(clk=CP, d=Q2, q=Q3); U4: no2 PORT MAP(Q1, Q2, i1); END behav;,结构描述,四、块语句(P67-68),作用 把一个大的系统分成几个模块,把一段代码分类为几个部分。 格式 接口说明和类属说明可以把块封装起来,块与外部通过端口连接;

25、若块语句中定义了保护表达式,则保护表达式的值为真时,块里的并行语句才可以执行。,HA1: BLOCK GENERIC (C_DELAY: TIME); GENERIC MAP(C_DELAY=5ns); PORT (IN1, IN2: IN BIT; SUM, CARRY: OUT BIT); PORT MAP( IN1=A, IN2=B, SUM=S1, CARRY= C1); BEGIN SUM=(IN1 XOR IN2); CARRY=IN2 AND IN2 after C_DELAY; END BLOCK HA1;,ARCHITECTURE bolck_view OF f_adder

26、IS SIGNAL S1, C1, C2: BIT; BEGIN END block_view;,【全加器描述】,ENTITY f_adder IS PORT(A, B, CIN: IN BIT; SUM, COUT: OUT BIT); END f_adder;,HA1: BLOCK GENERIC (C_DELAY: TIME); GENERIC MAP(CARRY_DELAY=5ns); PORT (IN1, IN2: IN BIT; SUM, CARRY: OUT BIT); PORT MAP( IN1=A, IN2=B, SUM=S1, CARRY= C1); BEGIN SUM=(

27、IN1 XOR IN2); CARRY=IN2 AND IN2 after C_DELAY; END BLOCK HA1;,OR1: BLOCK PORT (A, B: IN BIT; C: OUT BIT); PORT MAP( A=C1, C=COUT, B= C2); COMPONENT OR_GATE PORT (X, Y: IN BIT; Z: OUT BIT); END COMPONENT; BEGIN O1: OR_GATE PORT MAP(A, B, C); END BLOCK OR1;,HA2: BLOCK PORT (X, Y: IN BIT; S, C: OUT BIT

28、); PORT MAP( X=CIN, Y=S1, S=SUM, C= C2); BEGIN S=(X XOR Y); C=X AND Y; END BLOCK HA2;,HA1: BLOCK GENERIC (C_DELAY: TIME); GENERIC MAP(C_DELAY=5ns); PORT (IN1, IN2: IN BIT; SUM, CARRY: OUT BIT); PORT MAP( IN1=A, IN2=B, SUM=S1, CARRY= C1); BEGIN SUM=(IN1 XOR IN2); CARRY=IN1 AND IN2 after C_DELAY; END

29、BLOCK HA1;,块HA1描述了一个半加器。,块HA2定义了一个半加器。,HA2: BLOCK PORT (X, Y: IN BIT; S, C: OUT BIT); PORT MAP( X=CIN, Y=S1, S=SUM, C= C2); BEGIN S=(X XOR Y); C=X AND Y; END BLOCK HA2;,OR1: BLOCK PORT (A, B: IN BIT; C: OUT BIT); PORT MAP( A=C1, C=COUT, B= C2); COMPONENT OR_GATE PORT (X, Y: IN BIT; Z: OUT BIT); END

30、COMPONENT; BEGIN O1: OR_GATE PORT MAP(A, B, C); END BLOCK OR1;,块OR1定义了一个或门。,整个电路:,块语句可以嵌套: 块语句中定义的信号只在该块范围内有效。,A,S1可使用在B1、B2和B3中,S2可使用在B2和B3中,S3可使用在B3中,五、生成语句(P75-76),作用 产生多个相同的结构或逻辑描述。 格式,循环变量是局部变量,不需要事先定义,循环变量只能在生成语句中使用。,标号: IF 条件 GENERATE 生成语句 END GENERATE 标号;,当条件成立时,把生成语句中描述的结构或逻辑复制一次。, COMPONEN

31、T comp PORT(X:IN STD_LOGIC; Y:OUT STD_LOGIC); END COMPONENT; SIGNAL a,b:STD_LOGIC_VECTOR(0 TO 7); G1:FOR I IN 0 TO 7 GENERATE U1:comp PORT MAP(X=a(i),Y=b(i); END GENERATE G1; ,【FORGENERATE举例】,利用生成语句,对comp元件复制8次,每复制一次循环变量i加1。8个comp元件形成了一个新的元件。,ENTITY COUNTER4 IS PORT(COUNT, CLOCK: IN BIT; Q: BUFFER BIT_VECTOR(0 TO 3); END COUNTER4; ARCHITECTURE a_counter

温馨提示

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

评论

0/150

提交评论