当前位置:文档之家› 第四章 VHDL语言构造体的描述

第四章 VHDL语言构造体的描述


例4-4 将上升、下降时间作为类属参数的 二输入与门





ENTITY and2 IS GENERIC (rise,fall: TIME); PORT ( a,b: IN BIT; c: OUT BIT); END and2; ARCHITECTURE behave OF and2 IS SIGNAL internal:BIT; BEGIN internal <= a AND b; c <= internal AFTER (rise) WHEN internal = '1' ELSE internal AFTER (fall); END behave;
( 'U', 'X', '0', 'X', '0', '0', '0', '0', 'X' ), -- | 0 | ( 'U', 'X', 'X', '1', '1', '1', '1', '1', 'X' ), -- | 1 |
( 'U', 'X', '0', '1', 'Z', 'W', 'L', 'H', 'X' ), -- | Z |
ELSE FOR i IN s'RANGE LOOP result := resolution_table(result, s(i)); END LOOP; END IF; RETURN result; END resolved; …… END std_logic_1164;
在FUNCTION resolved ( s : std_ulogic_vector ) RETURN std_ulogic IS中,
PACKAGE BODY std_logic_1164 IS TYPE stdlogic_table IS ARRAY(std_ulogic, std_ulogic) OF std_ulogic; CONSTANT resolution_table : stdlogic_table := ( -----------------------------------------------------------| U X 0 1 Z W L H | |
第四章 VHDL语言构 造体的描述方式
引子
硬件系统的描述可以采用三种不同的描述风 格: 行为描述方式 数据流描述方式 结构化描述方式

4.1构造体的行为描述方式

1 什么是行为描述? 它是对系统数学模型的描述,与寄存器传输描述方 式和结构化描述方式相比,具有最高的抽象程度。 2 使用的语句具有什么样的特点? 采用 : 算术运算,关系运算,惯性延时,传输延时 等不易或不能进行逻辑综合的VHDL语句。 3 行为描述方式的VHDL语言程序的运用场合? 主要用于系统数学模型的仿真或系统工作原理的仿 真。
四选一电路真值表
b 0 0 1 1
a 0 1 0 1
q i0 i1 i2 i3
延时语句
有两类延时用于行为描述:惯性延时、传输延时。

惯性(Inertial)延时:在惯性模型中,系统或器件 输出信号要发生变化,必须有一段时间的延时,这 段延时时间,就是系统或元件的惯性延时。 特点:当一个系统或器件的输入信号周期,小于系 统或器件的惯性延时,其输出将保持不变。 如:在一个信号值维持期间,如果存在任何毛刺、 脉冲等周期小于器件本身的惯性延时的情况,输出 信号的值将不变,否则将引起信号的变化。


惯性延时示例
假设某门电路的惯性延时为20 ns
B<=inertial A after 20 ns;
所有器件都存在惯性延 时,为了仿真硬件电路 实际工作情况,可以在 代入语句中加上惯性延 时时间加以说明, 如: b <= a AFTER 10 ns; 或: b <= INERTIAL a AFTER 10 ns; 惯性延时说明只在行为 仿真时才有意义,逻辑 综合时将被忽略。
--------------------------------------------------------( 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U' ), -- | U |
( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' ), -- | X |
( 'U', 'X', '0', '1', 'W', 'W', 'W', 'W', 'X' ), -- | W | ( 'U', 'X', '0', '1', 'L', 'W', 'L', 'W', 'X' ), -- | L |
( 'U', 'X', '0', '1', 'H', 'W', 'W', 'H', 'X' ), -- | H |
类属语句主要用于行为描述
使用GENERIC语句易于使器件 模块化和通用化



例如,要描述 2 输入与门的行为,其逻辑关系是明 确的 但在加工集成时: 材料、工艺不同,不同类型的输入与门的上升沿、 下降沿参数是不一致的 为了简化设计和供其它的设计人员方便地使用 需要开发一个通用的二输入与门的程序模块 在该模块中某些参数是待定的 在仿真或逻辑综合时,只要用GENERIIC语句 将待定参数初始化 就可以实现各种类型二输入与门的仿真与逻辑综合
例:四选一电路的行为描述方式(2)
Begin with sel select q<=i0 after 10 ns when 0, i1 after 10 ns when 1, i2 after 10 ns when 2, i3 after 10 ns when 3, „X‟ after 10 ns when others; sel<= 0 when a=„0‟ and b=„0‟ else 1 when a=„1‟ and b=„0‟ else 2 when a=„0‟and b=„1‟ else 3 when a=„1‟and b=„1‟ else 4; End behav;


一些专门用于行为描述的语句 代入语句:
格式: 信号量 <= 敏感信号量表达式;

例: z <= a OR (b NAND c); 上式中有3 个敏感量 a,b, c,无论哪一个 敏感量发生了变化,该代入语句将被执行。



a <= b AFTER 5 ns; --表示当b发生新的变化5ns后, 才被代入到信号a中
-- unconstrained array of std_ulogic for use with the resolution function TYPE std_ulogic_vector IS ARRAY ( NATURAL RANGE <> ) OF std_ulogic; -------------------------------------------------------------------- resolution function FUNCTION resolved ( s : std_ulogic_vector ) RETURN std_ulogic; -------------------------------------------------------------------- *** industry standard logic type *** SUBTYPE std_logic IS resolved std_ulogic; -------------------------------------------------------------------- unconstrained array of std_logic for use in declaring signal arrays TYPE std_logic_vector IS ARRAY ( NATURAL RANGE <>) OF std_logic; …… END std_logic_1164;
s是位矢量,它有多长就是多少个驱动源。

假设 s=“01X” S1<= resolved(s); --s1处于什么状态? 假设 s=“0ZZ”、“0X1” S1的状态又是什么呢?
„X‟ „0‟ „X‟
GENERIC语句(类属参数语句)
1. 2.3.源自常用于不同层次之间的信息传递 要把信息传递给实体的具体元件 就可用类属语句 例如, 把器件的上升和下降沿延时信息传给实体 类属也可用传送一些用户定义的数据类型,负载电 容和电阻 对综合参数,如数据通道宽度,信号宽度等均可用 类属传递
相关主题