如何在以下细节中设计 VHDL 模态?

How can I design VHDL modal in the following details?

设计某些处理器中使用的称为符号扩展器单元的功能单元的 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;
q <= std_logic_vector(resize(signed(a), q'length));

std_logic_vector 不代表一个整数值,只是一个 std_logic 的数组,所以首先你使用 ieee.numeric_std.signed 中的 signed 使它成为 signed ].

resize 函数也在 ieee.numeric_std 中为 signedunsigned 定义,并应用于 signed 值,具有所需的q'length 给出的长度,它 returns 一个 signed 用于 signed 参数,等等

最后,signed 值根据输出端口的要求转换回 std_logic_vector

"Morten Zilmer"提出了一个好主意。另一种方法是手动扩展它而无需任何附加功能,例如以下代码:

q <= ( 7 downto 4 => a(3) ) & a;