как уменьшить размер целого числа в битах в vivado - PullRequest
0 голосов
/ 06 августа 2020

Мне нужно реализовать свой проект на плате nexys 4. В моем дизайне у меня есть 4 входа с целочисленными типами данных. Целое число в vivado по умолчанию имеет длину данных 32 бита, в то время как на плате nexys 4 может обрабатываться только целое число с максимальной длиной данных 16 бит для установки в портах GPIO. поэтому я хочу знать, как я могу уменьшить длину данных целого числа с 32 бит до 16 бит, вы можете мне помочь, пожалуйста? Спасибо

1 Ответ

2 голосов
/ 06 августа 2020

Используйте стандартный векторный тип и внутренне конвертируйте его в целое число:

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