第三章 VHDL的描述风格

第三章 VHDL的描述

3.1  描述方式

3.2  数据流描述方式(RTL描述方式)

3.3  构化描述方式

3.4  混合描述 

 

VHDL言是过结构体具体描述整个设计实逻辑功能。通常构体有四不同的描述方式:描述方式behavior)、数据流描述方式(dataflow)或寄存器RTL描述方式、构化描述方式(structural)以及混合描述方式。VHDL过这不同的描述方式从不同的面描述构体的功能。前三是最基本的描述方式,他们组合起来就成混合描述方式。

    下面合一个全加器来描述格,全加器的端口示意所示,其系如表所示 

全加器框

全加器的

                       

c_in      x       y       c_out        sum

0         0       0           0           0

0         0       1           0           1

0         1       0           0           1

0         1       1           1           0

1         0       0           0           1

1         0       1           1           0

1         1       0           1           0

1         1       1           1           1 

3.1  描述方

描述入与间转换的行,不需包含任何构信息,它对设计实体按算法的路径来描述。行描述在EDA工程中通常被称次描述设计工程只需要注意正确的体行、准确的函数模型和精确的果就可以了,无需体的组织门级实现

:基于全加器真表采用行描述方式设计的全加器(1位二制数全加

LIBRARY IEEE

USE IEEE.STD_LOGIC_1164.ALL

ENTITY full_adder IS

  GENERICtpd : TIME := 10 ns);

  PORTxyc_in : IN STD_LOGIC;

        Sum, c_out : OUT STD_LOGIC);

END full_adder;

ARCHITECTURE behav OF full_adder IS

BEGIN

   PROCESS (x, y, c_in)

VARIABLE  n: INTEGER;

CONSTANT sum_vector: STD_LOGIC_VECTOR (0 TO 3) := “0101”;

CONSTANT carry_vector: STD_LOGIC_VECTOR (0 TO 3) := “0011”;   

BEGIN                 --对照真值表解释程序

       n := 0;

       IF x = ’1’ THEN

          n := n+1;

       END IF;

       IF y = ’1’ THEN

          n:=n+1;

       END IF;

       IF c_in = ’1’ THEN

          n:=n+1;

       END IF;                                                                                           --  (0 TO 3)

       sum <= sum_vector (n) AFTER 2*tpd;       - - sum_vector值为“0101”

       c_out <= carry_vector (n) AFTER 3*tpd;     - - carry_vector值为“0011”

    END PROCESS;                                                                        END behav;

3.2  数据流描述方式

         数据流描述方式表示行,也含表示构,它描述了数据流的运线、运方向和运动结

于全加器,用布方程描述其逻辑功能如下

  s = x XOR y

  sum = s XOR c_in

  c_out = (x AND y) OR( s AND c_in)

下面是基于上述布方程的数据流格的描述

例:采用数据流描述方式的全加器

LIBRARY IEEE

USE IEEE.STD_LOGIC_1164.ALL

ENTITY full_adder IS

  GENERICtpd : TIME := 10 ns);

  PORTxyc_in : IN STD_LOGIC;

        Sum, c_out : OUT STD_LOGIC);

END full_adder;

ARCHITECTURE dataflow OF full_adder IS

BEGIN

   s <= x XOR y AFTER tpd;

  sum <= s XOR c_in  AFTER tpd;

  c_out <= (x AND y) OR( s AND c_in) AFTER 2* tpd;

END dataflow

3.23 构描述方

构化描述方式就是在多次的设计次的设计可以用低次的设计,或直接用门电设计单元来构成一个复杂逻辑电路的方法利用构化描述方法将已有的设计成果方便地用于新的设计,能大大提高设计效率。构化描述中,建模的焦点是端口及其互连关

构化描述的建模步骤如下:

1)元件

2)元件例化

3)元件配置

元件明用于描述局部接口;元件例化是要相于其他元件来放置元件;元件配置用于指定元件所用的设计实

对于上图给出的全加器端口结构,可以认为它是由两个半加器和一个或门组成的

基于上图所示的结构,可以写出全加器的结构化描述设计程序如下。

例:全加器的结构化描述

LIBRARY IEEE

USE IEEE.STD_LOGIC_1164.ALL

ENTITY half_adder IS

  GENERICtpdTIME:=10 ns);

  PORTin1, in2: IN STD_LOGIC;

        sum, carry: OUT STD_LOGIC);

END half_adder;

ARCHITECTURE behavioral OF half_adder IS

BEGIN

PROSESS (in1, in2)

BEGIN

   sum <= in1 XOR in2 AFTER tpd;

   carry <= in1 AND in2 AFTER tpd;

END PROCESS;

END behavioral;                                - -半加器设计完毕

 

LIBRARY IEEE

USE IEEE.STD_LOGIC_1164.ALL

ENTITY or_gate IS

  GENERICtpdTIME:=10 ns);

  PORTin1, in2: IN STD_LOGIC;

        out1: OUT STD_LOGIC);

END or_gate;

ARCHITECTURE structural OF or_gate IS

BEGIN

        out1 <= in1 OR in2 AFTER tpd;

END structural;                                 - - 或门设计完毕

 

LIBRARY IEEE

USE IEEE.STD_LOGIC_1164.ALL

ENTITY full_adder IS

  GENERICtpdTIME=10 ns);

  PORTxyc_in: IN STD_LOGIC;

        Sum, c_out: OUT STD_LOGIC);

END full_adder;

 

ARCHITECTURE structural OF full_adder IS

  COMPONENT half_adder

     PORTin1, in2: IN STD_LOGIC;

        sum, carry: OUT STD_LOGIC);

  END COMPONENT;                     --元件说明

  COMPONENT or_gate

     PORTin1, in2: IN STD_LOGIC;

          out1: OUT STD_LOGIC);

  END COMPONENT;

SIGNAL a, b, c:STD_LOGIC;

FOR u1,u2 : half_adder USE ENTITY WORK.half_adder (behavioral);       --元件例化

    FOR u3: or_gate USE ENTITY WORK. or_gate (structural);

BEGIN

  u1: half_adder PORT MAP (x, y, b, a);                        --元件配置

  u2: half_adder PORT MAP (c_in, b, sum, c);

  u3: or_gate PORT MAP (c, a, c_out);

END structural;

由上例可见,对于一个复杂的电子系统,可以将其分解为若干个子系统,每个子系统再分解成模块,形成多层次设计。这样,可以使更多的设计者同时进行合作。在多层次设计中,每个层次都可以作为一个元件,再构成一个模块或系统,可以先分别仿真每个元件,然后再整体调试。所以说结构化描述不仅是一种设计方法,而且是一种设计思想,是大型电子系统高层次设计的重要手段。

3.4 混合描述风格

在实际设计工作中,可以采用上述三种描述方式的任意组合,这就是混合描述。同样还是图所给出端口结构的全加器模型,其混合描述方式如下。

:全加器的混合描述

LIBRARY IEEE

USE IEEE.STD_LOGIC_1164.ALL

ENTITY xor_gate IS

  GENERICtpdTIME=10 ns);

  PORTin1in2: IN STD_LOGIC;

        out1: OUT STD_LOGIC);

END xor_gate;

ARCHITECTURE behavioral OF xor_gate IS

BEGIN

   out1 <= in1 XOR in2 AFTER tpd;

END behavioral;

 

LIBRARY IEEE

USE IEEE.STD_LOGIC_1164.ALL

ENTITY full_adder IS

  GENERICtpdTIME=10 ns);

  PORTxyc_in: IN STD_LOGIC;

        Sum, c_out: OUT STD_LOGIC);

     END full_adder;

ARCHITECTURE mix OF full_adder IS

  COMPONENT xor_gate

     PORTin1, in2: IN STD_LOGIC;

          out1: OUT STD_LOGIC);

  END COMPONENT;

SIGNAL s :STD_LOGIC;

FOR ALL: xor_gate USE ENTITY WORK. xor_gate (behavioral);

BEGIN

  u1: xor_gate PORT MAP (x, y, s);

  u2: xor_gate PORT MAP (s, c_in, sum);

c_out <= (x AND y) OR (s AND c_in) AFTER 2*tpd;

  END mix;

 

 

你可能感兴趣的:(学习历程----嵌入式系统编程)