VHDL的如下STD库中对应的逻辑包有什么功用?

问题描述:

VHDL的如下STD库中对应的逻辑包有什么功用?
std_logic_1164 std_logic_arith std_logic_unsigned 这三个逻辑包有什么功用?能具体举个例子吗?

首先,你列出的3个程序包都不在VHDL的STD库中,而是在IEEE库中.
std_logic_1164程序包声明了std_Ulogic类型及其决断子类型std_logic,也声明了这种类型构成的数组std_logic_vector,还有这些类型的逻辑运算符函数.如果你需要使用std_logic类型,并只做逻辑类运算的话,就只需要声明LIBRARY IEEE;和USE std_logic_1164.ALL;就可以了.
但如果你需要进行std_logic类型的算术运算的话,就还要再声明std_logic_arith程序包;如果你的算术运算的操作数是std_logic_vector类型的话,则根据你需要做带符号算术运算还是无符号算术运算,来决定是声明std_logic_signed程序包,还是声明std_logic_unsigned程序包.什么是带符号算术和无符号算术?能举个例子吗?如果你用一个std_logic_vector(n-1 downto 0)类型的信号或者变量来表示一个数,你将其看成是一个无符号数的话,其表示范围是0~2^n-1,而你将其看成是一个带符号数的话,则其表示范围就是-2^(n-1)~+2^(n-1)-1。举个例子:std_logic_vector(7 downto 0)类型的信号或者变量,看成是无符号数,可以表示0~255("00000000"~"11111111");而看成是带符号数的话,则可以表示的范围是-128~+127("10000000"~"01111111"),最高位是符号位。