Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation
Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement.Téléchargez la présentation en cliquant sur ce lien.Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.
例4-2 利用类属参数说明设计N输入的与门 • LIBRARY IEEE; • USE IEEE.STD_LOGIC_1164.ALL; • ENTITY andn IS • GENERIC ( n : INTEGER ); --定义类属参量及其数据类型 • PORT(a : IN STD_LOGIC_VECTOR(n-1 DOWNTO 0);--用类属参量限制矢量长度 • c : OUT STD_LOGIC); • END; • ARCHITECTURE behav OF andn IS • BEGIN • PROCESS (a) • VARIABLE int : STD_LOGIC; • BEGIN • int := '1'; • FOR I IN a'LENGTH - 1 DOWNTO 0 LOOP • IF a(i)='0' THEN int := '0'; • END IF; • END LOOP; • c <=int ; • END PROCESS; • END;
一个构造体的一般书写格式描述如下: • ARCHITECTURE 构造体名 OF 实体名 IS • [定义语句]内部信号、常数、数据类型、函数等的定义; • BEGIN • [并行处理语句]; • END 构造体名;
(1)构造体名称的命名 • 构造体的命名可以自由命名,但通常按照设计者使用的描述方式命名为behavioral(行为),dataflow(数据流)或者structural(结构)。命名格式如下: • ARCHITECTURE behavior OF fulladd_v1 IS --用结构体的行为命名; • ARCHITECTURE dataflow OF fulladd_v1 IS --用结构体的数据流命名; • ARCHITECTURE structural OF fulladd_v1 IS --用结构体的结构命名。
(1)行为描述:不包括任何电路的结构信息,仅描述输入输出间的逻辑关系(如真值表)(1)行为描述:不包括任何电路的结构信息,仅描述输入输出间的逻辑关系(如真值表) 【例5-7】 ARCHITECTURE behavior OF fulladd_v2 IS signal temp_sum: STD_LOGIC_VECTOR(2 downto 0); BEGIN temp_sum<=Ci&Ai&Bi; process(temp_sum) begin CASE temp_sum is when "000" => S<='0';Co<='0'; when "001" => S<='1';Co<='0'; … when "111" => S<='1';Co<='1'; when others =>null; end case; end process; END ARCHITECTURE behavior;
例4-4‘1’个数计数器结构体的行为描述 • ARCHITECTURE behavior OF ones_cnt IS • BEGIN • PROCESS(A) • VARIABLE NUM: INTEGER range 0 to 3; • BEGIN • NUM:=0; • FOR I IN 0 TO n LOOP • IF A(I) = ‘1’THEN • NUM:=NUM + 1; • END IF; • END LOOP; • CASE NUM IS • WHEN 0 => C<=”00”; • WHEN 1 => C<=”01”; • WHEN 2 => C<=”10”; • WHEN 3 => C<=”11”; • END CASE; • END PROCESS; • END behavior;
例4-5‘1’个数计数器结构体的寄存器描述 • ARCHITECTURE data_flow OF ones_cnt IS • BEGIN • C1 <= (A1 AND A0) OR (A2 AND A0) OR (A2 AND A1); • C0 <= (A2 AND NOT A1 AND NOT A0) OR (NOT A2 AND NOT A1 AND A0) OR(A2 AND A1 AND A0) OR (NOT A2 AND A1 AND NOT A0); • END data_flow;
例4-6半加器结构体的VHDL寄存器描述 • ARCHITECTURE data_flow OF halfadd_v1 IS • BEGIN • S<=Ai XOR Bi ; • Co<=Ai AND Bi ; • END data_flow;
【例】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY fulladd_v1 IS PORT (Ci,Ai,Bi:IN STD_LOGIC; S,Co:OUT STD_LOGIC); END fulladd_V1; ARCHITECTURE logicfunc OF fulladd_V1 IS signal x:STD_LOGIC; BEGIN s<=Ai XOR Bi XOR Ci ;全加器逻辑表达式 x<=(Ai AND Bi) after 5ns; Co<=x OR(Ci AND Ai)OR(Ci AND Bi) after 5ns; END logicfunc; (2)寄存器传输描述:数据流描述,采用进程语句顺序描述数据流在控制流作用下被加工、处理、存储的全过程,侧重电路的具体行为,也隐含了结构信息
例4-7 一位全加器的结构化VHDL描述法。 • LIBRARY IEEE; • USE IEEE.STD_LOGIC_1164.ALL; • ENTITY fualladd_v3 IS • PORT (Cin,Ain,Bin:IN STD_LOGIC; • Si,Cout:OUT STD_LOGIC); • END fualladd_v3; • ARCHITECTURE structural OF fualladd_v3 IS • COMPONENT halfadd_v1 • PORT (Ai,Bi:IN STD_LOGIC; • S,Co:OUT STD_LOGIC); • END COMPONENT; • COMPONENT or_2 • PORT (Ai,Bi:IN STD_LOGIC; • C:OUT STD_LOGIC); • END COMPONENT; • SIGNAL C1,C2,C3:STD_LOGIC; • BEGIN • u0:halfadd_v1 PORT MAP(Ain,Bin,C1,C2); • u1:halfadd_v1 PORT MAP(C1,Cin,Si,C3); • u2:OR_2 port map(c2,c3,cout); • END ARCHITECTURE structural;
例4-8一个完整的程序包的范例 • PACKAGE HANDY IS --程序包首开始 • SUBTYPE BITVECT3 IS BIT_VECTOR(0 TO 2);--定义子类型 • SUBTYPE BITVECT2 IS BIT_VECTOR(0 TO 1); • FUNCTION MAJ3(X:BIT_VECTOR(0 TO 2)) RETURN BIT; --定义函数首 • END HANDY; • PACKAGE BODY HANDY IS • FUNCTION MAJ3(X:BIT_VECTOR(0 TO 2)) --定义函数体 • RETURN BIT IS • BEGIN • RETURN (X0 AND X1) OR (X0 AND X2) OR (X1 AND X2); • END MAJ3; • END HANDY; -- 程序包首结束