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

时间:2015-03-04 17:47:40

标签: unit-testing vhdl xilinx

设计一些处理器中使用的称为符号扩展器单元的功能单元的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;

2 个答案:

答案 0 :(得分:4)

q <= std_logic_vector(resize(signed(a), q'length));

std_logic_vector不代表整数值,只是std_logic的数组,因此首先使用signed中的signed进行ieee.numeric_std.signed

resizeieee.numeric_std的{​​{1}}中也定义了signed函数,并将其应用于unsigned值,并给出了所需的长度按signed,它会为q'length参数返回signed等。

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

答案 1 :(得分:2)

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

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