元件例化语句、块语句和生成语句

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A1
B1
a(1) a(0)
U1
c
X a(1) a(0)
U3
c Z1
Y
U2
C1
D1
a(1) a(0)
c
【流水灯】
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 IS BEGIN PROCESS(clk) BEGIN IF(clk'EVENT AND clk='1') THEN q<=d; END IF; END PROCESS; END behav; LIBRARY 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 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 PORT(a,b:IN STD_LOGIC; c:OUT STD_LOGIC); END COMPONENT no2;
三、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 : 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 t1<='0'& a; t2<='0'& b; t3<='0'& c; t<=CONV_INTEGER(t1)+CONV_INTEGER(t2)+CON V_INTEGER(t3); x<='1' WHEN (t>1) ELSE '0'; y<=NOT x; END ARCHITECTURE three;
SW1 SW2 a b c i1

混合关联方式:
COMPINENT an2 PORT(a: IN BIT; b: IN BIT; c: OUT BIT); END COMPONENT an2; ... u1: an2 PORT MAP (SW1, SW2, c=>i1); 位置关联方式 名字关联方式
元件例化语句、块语句与生 成语句(P67-68、73-76)
本课要解决的问题:

掌握元件例化语句的格式与应用; 掌握块语句的格式与应用; 掌握生成语句的格式与应用。
顺序语句的总结

VHDL的顺序语句包括:
赋值语句 等待语句 返回语句
流程控 制语句
空操作 语句

顺序语句的特点:
语句的执行与书 写顺序一致;
u2: andn GENERIC MAP (n=>2); PORT MAP (a(0)=>C1, a(1)=>D1, c=>Y);

元件调用的对应关系:
U1: an2 PORT MAP (a=>SW1, b=>SW2, c=>i1);
U2: an2 PORT MAP (a=>SW2, b=>SW3, c=>i2);
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;
元件调用语句,调用元 件an2、o3、n1, U1~U5为元件标号
元件定义语句, 将实体an2、o3 和n1定义为元件
二、元件例化语句(P73-75)

作用
将事先设计好的实体看作是一个“元件”,在新 的设计中调用这个元件,定义这个元件与其他信 号、元件与元件、元件与外部端口的连接关系。
调用了 反相器 i1 i2
BEGIN U1: df1 PORT U2: df1 PORT U3: df1 PORT U4: no2 PORT END behav;
i1
MAP(clk=>CP, d=>i1, q=>Q1); MAP(clk=>CP, d=>Q1, q=>Q2); MAP(clk=>CP, d=>Q2, q=>Q3); MAP(Q1, Q2, i1);
ENTITY voter IS PORT(SW1, SW2, SW3: IN BIT; L1: OUT BIT; L2: BUFFER BIT); END voter; 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(L2, L1); END behav;
a(0)

a(n)

c
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); 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;

实体与元件的对应:
ENTITY an2 IS PORT(a,b:IN BIT; c:OUT BIT); END an2; ARCHITECTURE behav OF an2 IS BEGIN c<=a AND b; END behav;
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; ENTITY n1 IS PORT(x: IN BIT; y: OUT BIT); END n1; ARCHITECTURE behav OF n1 IS BEGIN y<=NOT x; END behav; COMPONENT an2 PORT(a,b: IN BIT; c: OUT BIT); END COMPONENT an2;
a a b c i1
b
P74【例3-12 多输入与非门】
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 a’LENGTH-1 DOWNTO 0 LOOP IF a(i)=‘0’ THEN int:=‘1’; END IF; END LOOP; c<=int; END PROCESS; END;
U4: o3 PORT MAP (i1, i2, i3, L2);
i1 i2
i3
U3: an2 PORT MAP (a=>SW1, b=>SW3, c=>i3);
U5: n1 PORT MAP(L2, L1);
端口连接定义的方法:
名字关联方式: 把元件的端口与它要连接的系统端口通过”=>”对应起来。
U1: an2 PORT MAP (a=>SW1, b=>SW2, c=>i1);
SW1 SW2 a b c i1
位置关联方式: 系统端口在端口映射语句中的位置,与它连接的元件端口 在元件的端口说明语句中的位置相对应。
COMPONENT an2 PORT(a: IN BIT; b: IN_BIT; c: OUT STD_BIT); END COMPONENT an2; ... u1: an2 PORT MAP (SW1, SW2, i1);
顺序语句只Βιβλιοθήκη Baidu在 进程、过程、函数 中执行;
并行语句

VHDL的并行语句包括:
赋值语句
块语句
进程语句
元件例 化语句
生成语句

并行语句的特点
语句的执行与书 写顺序无关,必须 通过敏感信号的变 化来启动;
每个并行语句相 对独立,一个语句 一般对应一个电路 模块,语句间通过 信号通信;
一、利用元件例化语句描述的 表决器
i3
定义元件与 端口的连接
调用了 与门
定义调用元 件间的连接
调用了 或门
定义元件与 端口的连接

格式


元件例化语句由两部分组成,包括元件定义语句和 元件调用语句。 元件定义语句: 把已经设计好的实体定义为一个可以调用的元件。 实体的端口为该元件的引脚。
COMPONENT ND2 COMPONENT 元件名 GENERIC (n: INTEGER); GENERIC(类属表); PORT (a: IN STD_LOGIC_VECTOR(nPORT(端口名表); 1 DOWNTO 0); END COMPONENT 元件名; c: OUT STD_LOGIC); END COMPONENT ND2;
COMPONENT o3 PORT(l, m, n: IN BIT; z: OUT BIT); END COMPONENT o3;
COMPONENT n1 PORT(x: IN BIT; y: OUT BIT); END COMPONENT n1;

元件调用语句:

GENERIC MAP (…)为类属映射语句,确定调用元件的 实体中定义的类属参数;PORT MAP (…) 为端口映射 语句,定义调用元件与其他部分的连接关系。 标号名可看作是插座的名称,而元件名则是调用芯片的 插座-> 实际型号名称。 芯片型号-> U1 标号名 元件名 ULN2003 标号名: 元件名 GENERIC MAP (类属关联); PORT MAP (端口关联);
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 n1 PORT(x: IN BIT; y: OUT BIT); END COMPONENT n1;
相关文档
最新文档