我刚刚在大学里开始VHDL模块,而我的讲师并不能很好地解释事情。如何在VHDL中使用/声明签名值?
这是我已经教过的基本代码格式,目前正在编程2位减法器。其他网站上的信息非常混乱。
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.std_logic_arith.all;
entity TwoBitSubtractor is port(
x,y :in integer range 0 to 3;
result :out integer range 0 to 3);
end TwoBitSubtractor;
architecture gates of TwoBitSubtractor is
begin
result<= x - y;
end gates;
答案 0 :(得分:1)
您应使用signed
类型来指定带符号的值。整数也可以用来以更易于理解的方式声明值,但是这样您就超出了位级别的定义,我认为这在VHDL中是不希望的。例如,您忽略了integer
用于任何信号的位数,这对于高级语言可能是好的,但对VHDL来说却不太有用。
library ieee;
use ieee.numeric_std.all;
entity TwoBitSubtractor is port(
x : in signed(2 downto 0);
y : in signed(2 downto 0);
result : out signed(2 downto 0));
end TwoBitSubtractor;
architecture gates of TwoBitSubtractor is
begin
result <= x - y;
end gates;
查看在实体端口中声明它们的方式。有关已签名/未签名的更多详细信息,请检查here
还可以使用TwoBitSubtractor
在线testbench
进行模拟,请选中here