Мне нужно передать count_x
32-битных данных в HPS через интерфейс отображения памяти Avalon. 1-й и 2-й корпус работали нормально. И я получил данные в HPS. Но в 3-м случае WHEN '2' => avs_s0_readdata <= count_x(31 downto 0);
показывает ошибку, так как ''2'' не объявлено, что это значит? Vhdl был сделан в Altera quartus 16.1, а система HPS была сделана в Qsys.
architecture behavior of encorder is
signal count : STD_LOGIC_VECTOR(31 DOWNTO 0);
signal count_x : STD_LOGIC_VECTOR(31 DOWNTO 0);
signal count_y : STD_LOGIC_VECTOR(31 DOWNTO 0):= x"00000000";
begin
PROCESS(avs_s0_read)
BEGIN
IF avs_s0_read = '1' THEN
CASE(avs_s0_address) IS
WHEN '2' => avs_s0_readdata <= count_x(31 downto 0);
WHEN others => avs_s0_readdata <= x"00000000";
END CASE;
ELSE
avs_s0_readdata <= x"00000000";
END IF;
END PROCESS;`
avs_s0_address
('2'
относится к типуcharacter
.avs_s0_address
не будет этого типа). Опубликуйте MCVE. - person Matthew Taylor   schedule 13.04.2017encorder.vhdl:34:6:error: can't match character literal '2' with type std_ulogic
. std_logic является разрешенным подтипом std_ulogic - ("U", "X", "0", "1", "Z", "W", "L", "H" и "-"). '2' не является допустимым выбором в операторе case, поскольку он не представляет значение std_logic. - person   schedule 13.04.2017