tempReg:=B;
shiftReg:= "0000000000000000" & A;
for i in 0 to 16 loop
if shiftReg(2*n+1) = '1' then
shiftReg(2*n+1 downto 0) := (shiftReg(2*n+1 downto n+1) + tempReg(n downto 0)) & shiftReg(n downto 0);
elsif shiftReg(2*n+1) = '0' then
shiftReg(2*n+1 downto 0) := (shiftReg(2*n+1 downto n+1) - tempReg(n downto 0)) & shiftReg(n downto 0);
end if;
if shiftReg(2*n+1) = '1' then
shiftReg(2*n+1 downto 0):= shiftReg(2*n downto 0) & '0';
elsif shiftReg(2*n+1) = '0' then
shiftReg(2*n+1 downto 0):= shiftReg(2*n downto 0) & '1';
end if;
end loop;
C <= shiftReg(n downto 0);
D <= shiftReg(2*n+1 downto n+1);
이것은 ALU 코드의 일부입니다. (A와 B는 16 비트 입력이고, C는 답이고, D는 미리 알림입니다.) 이 부분 코드는이 부분에서 책임을집니다. VHDL 언어를 사용하여이 분배기 "https://www.youtube.com/watch?v=z0RIEvzX65I"을 다시 만들고 싶습니다. 문제는 올바른 대답 (C)을 받았지만 잘못된 미리 알림 (D)입니다.VHDL 분배기, 수정
내가 진심이 "나쁜/바보 코드"또는
하시기 바랍니다가, [mcve] 제공 :
는 여기에 기본 코드입니다. 특히 전체 엔터티 및 테스트 벤치를 제공하십시오. 나는 당신이 그것을 단지 시뮬레이션하고 있다고 가정한다. 이 코드를 합성하려는 하드웨어는 언급하지 않았기 때문에. – Staszek