如何在以下细节中设计 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
中为 signed
和 unsigned
定义,并应用于 signed
值,具有所需的q'length
给出的长度,它 returns 一个 signed
用于 signed
参数,等等
最后,signed
值根据输出端口的要求转换回 std_logic_vector
。
"Morten Zilmer"提出了一个好主意。另一种方法是手动扩展它而无需任何附加功能,例如以下代码:
q <= ( 7 downto 4 => a(3) ) & a;
设计某些处理器中使用的称为符号扩展器单元的功能单元的 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
中为 signed
和 unsigned
定义,并应用于 signed
值,具有所需的q'length
给出的长度,它 returns 一个 signed
用于 signed
参数,等等
最后,signed
值根据输出端口的要求转换回 std_logic_vector
。
"Morten Zilmer"提出了一个好主意。另一种方法是手动扩展它而无需任何附加功能,例如以下代码:
q <= ( 7 downto 4 => a(3) ) & a;