【问题标题】:how to reduce integer bit size in vivado如何减少vivado中的整数位大小
【发布时间】:2020-08-06 14:28:14
【问题描述】:

我必须在 nexys 4 上实现我的设计。在我的设计中,我有 4 个整数数据类型的输入。 vivado 默认的整数数据长度为 32 位,同时板卡 nexys 4 只能处理最大数据长度为 16 位的整数在 GPIO 端口中设置。所以我想知道如何将整数的数据长度从32位减少到16位,你能帮帮我吗?谢谢

【问题讨论】:

  • 不使用实体中的“整数”类型,而是使用 std_logic_vector(SIZE-1 downto 0)?
  • 从整数创建自己的子类型并使用它subtype my_integer is integer range 0 to 65535; 然后input_1 : IN my_integer;
  • 范围 0 到 65535 消除了不是 16 位整数的负值

标签: integer vhdl fpga vivado


【解决方案1】:

使用标准向量类型并在内部将其转换为整数:

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));

【讨论】:

    猜你喜欢
    • 2015-05-07
    • 1970-01-01
    • 2013-11-19
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    相关资源
    最近更新 更多