设计一些处理器中使用的称为符号扩展器单元的功能单元的VHDL模型。该单元的输入是4位有符号二进制数,输出是8位有符号二进制数。该单位保留数量的大小和符号。
这是我的代码,它不起作用。我是初学者。请帮忙解释一下。非常感谢。
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity sign_extender is
port
(
a: in std_logic_vector (3 downto 0);
q: out std_logic_vector (7 downto 0);
);
end sign_extender;
architecture sign_extender_arch of sign_extender is
begin -- architecture
q <= a;
end sign_extender_arch;
答案 0 :(得分:4)
q <= std_logic_vector(resize(signed(a), q'length));
std_logic_vector
不代表整数值,只是std_logic
的数组,因此首先使用signed
中的signed
进行ieee.numeric_std.signed
。
在resize
和ieee.numeric_std
的{{1}}中也定义了signed
函数,并将其应用于unsigned
值,并给出了所需的长度按signed
,它会为q'length
参数返回signed
等。
最后,signed
值将根据输出端口的要求转换回signed
。
答案 1 :(得分:2)
q <= ( 7 downto 4 => a(3) ) & a;