avalon 메모리 맵핑 된 인터페이스를 통해 count_x 32 비트의 데이터를 HPS에 가져와야합니다. 1 차 및 2 차 케이스가 잘 작동했습니다. HPS에 데이터가 있습니다. 하지만 3 번째 경우 WHEN '2'=> avs_s0_readdata < = count_x (31 downto 0);으로 '2'이 (가) 선언되지 않았습니다. 무슨 뜻입니까? Vhdl은 Altera quartus 16.1에서 완료되었으며 HPS 시스템은 Qsys에서 수행되었습니다.HPS FPGA Avalon 메모리 매핑 된 인터페이스의 세 번째 경우에 쓰기 오류
architecture behavior of encorder is
signal count : STD_LOGIC_VECTOR(31 DOWNTO 0);
signal countx : 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'' 타입입니다 .'vs_s0_address'는 그 타입이 아닙니다). [MCVE] (http://stackoverflow.com/help/mcve)를 게시하십시오. –
avs_s0_address에 대한 선언을 보지 않고 '2'는 유형의 열거 형 값이 아닌 것처럼 보입니다. [Minimal, Complete and Verifiable example] (https://stackoverflow.com/help/mcve)을 제공해주십시오. 귀하의 문제는 중복 될 수 없습니다 (또는 누군가가 구문 문제를 나타내지 않는 스 니펫 주위의 예를 고안 할 수도 있음). 유형이 std_logic (기본 유형 std_ulogic) 인 경우 열거 형 값은 문자 리터럴 'U', 'X', '0', '1', 'Z', 'W', 'L', 'H' , '-'. if 조건이 오류를 생성하지 않았 음에 유의하십시오. – user1155120
또 다른 도구는보다 자세한 오류 메시지를 줄 수 있습니다 -'encorder.vhdl : 34 : 6 : error : 문자 리터럴 '2'를 std_ulogic 유형과 일치시킬 수 없습니다. std_logic은 std_ulogic - ('U', 'X', '0', '1', 'Z', 'W', 'L', 'H'및 '-')의 해결 된 하위 유형입니다. '2'는 case 문에서 유효한 선택이 아니며 std_logic 값을 나타내지 않습니다. – user1155120