#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. Можно ли узнать ШИРИНУ вместо того, чтобы получать ее из общего ввода?