if 문에서 for 루프를 사용하는 것에 대한 질문이 있습니다. if 문은 프로세스 문 안에 있습니다. 문제는 for 루프가 실행되었지만 B의 값에 관계없이 한 번만 코드의이 부분을 실행할 때입니다. 명시 적 값을 입력하고 B를 무시하려고 시도했지만 루프는 한 번만 실행됩니다. 내가 놓친 게 있니?for 루프는 한 번만 실행합니다.
이 코드는 sll을 사용하지 않고 논리적 왼쪽 시프트를 적용하는 ALU 동작 모델의 일부입니다. 여기에 코드의이 부분에서
elsif ALU_Control = "100" then
-- implement shift logic left by B units
if (B > X"00000000") then
-- Use value of B input as the shift position
shift_value := TO_INTEGER(UNSIGNED(B));
-- concatenate a 0 to end of A
for index in 0 to shift_value loop
temp_A := (A(30 downto 0) & '0');
end loop;
ALU_out <= temp_A(31 downto 0) after 100 ps;
else
ALU_out <= A after 100 ps;
end if;
인덱스가 루프에서 사용되지 않는 : 그것은 멀리 optmised되고 당신이 있음을 증명할 수있는 기록을 추가 할 수 temp_A 변경 되었습니까? 한 번만? –
'elsif'를 끝내셨습니까? –
나는 잘 모르겠다. 불행히도 나는 VHDL을 배우기 시작했습니다. Isim (Xilinx)에서 테스트 벤치를 실행할 때 인덱스 범위에서 사용하는 값에 상관없이이 ALU 컨트롤 입력의 출력은 "1 비트"만 이동합니다. – user1452627