VHDL数值数据类型

(1)整数(integer)

   定义位置:在std库的standard程序包中进行定义。即数值范围为-2^31~2^31。

 (2)无符号(unsigned)和有符号(signed)类型

定义位置:有符号(signed)和无符号(unsigned)逻辑信号定义在库IEEE的程序包std_logic_arith中。

无符号类型数据代表无符号数值,即代表0或正数;最左边的位为最高位。如:unsigned(“0110”)为+6,unsigned(“1010”)为+10.

有符号类型数据代表有符号数值,即可以是正数,0,负数;编译器将有符号数据类型作为一个补码的二进制数,最左边的位为符号位。

如:signed(“0110”)代表+6;signed(“1010”)代表-2。

程序:

library IEEE;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

entity data is

port( a,b:in unsigned(3 downto 0);  %a,b:in signed(3 downto 0);

c:out std_logic

);

end data;

architecture  m1 of data is

begin

 c<='1' when a<b else '0';

end m1;

当定义成无符号数据类型时,若a="1000",b="0001",即a=8,b=1.则结果是a>b,c='0';

当定义成有符号数据类型时,若a="1000",b="0001",即a=-8,b=1.则结果是a<b,c='1';

posted on 2019-11-01 22:09  李好123  阅读(2167)  评论(0)    收藏  举报