3.6.2 IEEE预定义标准逻辑位与矢量
在IEEE库的程序包STD_LOGIC_1164中,定义了两个非常重要的数据类型,即标准逻辑位STD_LOGIC和标准逻辑矢量STD_LOGIC_VECTOR。
1)标准逻辑位(STD_LOGIC)数据类型
在IEEE库程序包STD_LOGIC_1164中数据类型STD_LOGIC的定义如下所示:
各值的含义是:
U---未初始化的,X---强未知的,0---强0,1---强1,Z---高阻态,W---弱未知的,L---弱0,H---弱1,----忽略。
STD_LOGIC是标准BIT数据类型的扩展,共定义了9种值,这就意味着,对于定义为数据类型是标准逻辑为STD_LOGIC的数据对象,其可能的取值已非传统的BIT那样只有逻辑0和1两种取值。由于标准逻辑位数据类型的多值性,再编程时应当特别注意。因为在条件语句中,如果未考虑到STD_LOGIC的所有可能的取值情况,综合器可能会插入不希望的锁存器。
在程序中使用STD_LOGIC数据类型前,需加入下面的语句:
在仿真和综合中,STD_LOGIC值是非常重要的,它可以使设计者精确模拟一些未知和高阻态的线路情况。对于综合器,高阻态和‘-’忽略态可用于三态的描述。但就综合而言,STD_LOGIC型数据能够在数字器件中实现的只有其中的4种值,即‘-’、‘0’、‘1’和‘Z’ 。当然,这并不表明其余的5种值不存在。这9种值对于VHDL的行为仿真都有重要意义。
2)标准逻辑矢量(STD_LOGIC_VECTOR)数据类型
STD_LOGIC_VECTOR类型定义如下:
显然,STD_LOGIC_VECTOR是定义在STD_LOGIC_1164程序包中的标准一维数组,数组中的每一个元素的数据类型都是以上定义的标准逻辑位STD_LOGIC。
在使用时,STD_LOGIC_VECTOR数据类型的数据对象赋值的原则是:同位宽、同数据类型的矢量间才能进行赋值。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。