VHDL: найти диапазон целых чисел по ширине соответствующей ширины std_logic_vector

#vhdl

#vhdl

Вопрос:

У меня есть сигнал std_logic_vector(WIDTH-1 downto 0) . Мне нужен целочисленный сигнал, который получает значение из вектора. Как мне определить диапазон этого целочисленного сигнала?

Комментарии:

1. Как называется сигнал? для signal A: std_logic_vector ( WIDTH - 1 downto 0); последующего signal indx: integer range A'RANGE; использования предопределенного атрибута массива ‘RANGE. Обратите внимание, что вы могли signal indx: integer range WIDTH - 1 downto 0); бы также или signal indx: integer range A'REVERSE_RANGE; и т. Д.

2. Спасибо @user1155120.

Ответ №1:

 library ieee;
use ieee.std_logic_1164.all;

entity TEST is
  generic(WIDTH : integer := 8);
  port(
    S : in  std_logic_vector(WIDTH-1 downto 0));
end entity TEST;

architecture A of TEST is
  subtype I is integer range S'range;
  subtype T is integer range 0 to 2**WIDTH-1;
begin
  process is
  begin
    report "I: " amp; I'image(I'val(I'low)) amp; "; " amp; I'image(I'val(I'high));
    report "T: " amp; T'image(T'val(T'low)) amp; "; " amp; T'image(T'val(T'high));
    wait;
  end process;
end architecture A;
  

Результат:

 > # ** Note: I: 0; 7
> #    Time: 0 ps  Iteration: 0  Instance: /test
> # ** Note: T: 0; 255
> #    Time: 0 ps  Iteration: 0  Instance: /test
  

Комментарии:

1. Кристально чистый. Спасибо @EML. Можно ли узнать ШИРИНУ вместо того, чтобы получать ее из общего ввода?