如何减少vivado中的整数位大小
how to reduce integer bit size in vivado
我必须在 nexys 4 上实现我的设计。在我的设计中,我有 4 个整数数据类型的输入。 vivado中的整数默认有32位的数据长度,同时在board nexys 4中只能处理最大数据长度为16位的整数以在GPIO端口中设置。所以我想知道如何将整数的数据长度从 32 位减少到 16 位,你能帮我吗?谢谢
使用标准向量类型并在内部将其转换为整数:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity my_design is
port(
v1, v2, v3, v4: in std_ulogic_vector(15 downto 0);
...
);
end entity my_design;
architecture rtl of my_design is
signal i1, i2, i3, i4: natural range 0 to 2**16 - 1;
...
begin
i1 <= to_integer(unsigned(v1));
i2 <= to_integer(unsigned(v1));
i3 <= to_integer(unsigned(v1));
i4 <= to_integer(unsigned(v1));
...
-- use signals i1, i2, i3, i4
...
end architecture rtl;
如果您的整数已签名,请使用:
signal i1, i2, i3, i4: integer range -2**15 to 2**15 - 1;
和:
i1 <= to_integer(signed(v1));
我必须在 nexys 4 上实现我的设计。在我的设计中,我有 4 个整数数据类型的输入。 vivado中的整数默认有32位的数据长度,同时在board nexys 4中只能处理最大数据长度为16位的整数以在GPIO端口中设置。所以我想知道如何将整数的数据长度从 32 位减少到 16 位,你能帮我吗?谢谢
使用标准向量类型并在内部将其转换为整数:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity my_design is
port(
v1, v2, v3, v4: in std_ulogic_vector(15 downto 0);
...
);
end entity my_design;
architecture rtl of my_design is
signal i1, i2, i3, i4: natural range 0 to 2**16 - 1;
...
begin
i1 <= to_integer(unsigned(v1));
i2 <= to_integer(unsigned(v1));
i3 <= to_integer(unsigned(v1));
i4 <= to_integer(unsigned(v1));
...
-- use signals i1, i2, i3, i4
...
end architecture rtl;
如果您的整数已签名,请使用:
signal i1, i2, i3, i4: integer range -2**15 to 2**15 - 1;
和:
i1 <= to_integer(signed(v1));