이전에 설계된 1 비트 ALU를 사용하여 8 비트 ALU를 설계하기 위해 VHDL 프로젝트에서 작업하고 있습니다. 이렇게하려면 비트 0과 7이이 블록 외부에서 처리되는 동안 generate 문을 사용하여 ALU의 1-6 비트를 생성합니다. 무슨 일이 일어나는가가 ALU를 시뮬레이션하기 위해 갈 때 비트 1-6은 입력 값이 무엇이든 값을 변경하지 않습니다. ALU가 잘 작동하는 것을 알고 있습니다. 왜냐하면 8 비트 ALU를 수동으로 예상대로 작동시키기 때문입니다.VHDL 생성 문에서 구성 요소가 올바르게 인스턴스화되지 않았습니다.
나는 무슨 일이 일어나고 있는지 생각하는 이유는 무엇이든, 생성 블록 내부의 구성 요소 인스턴스화가 제대로 컴파일되지 않고 있다는 것입니다. ModelSim에서 시뮬레이션을 실행하려고하면 "component instance bit1_6 : bitslice is bound"라는 메시지가 스크립트에 나타납니다. 무슨 일이 벌어지고 있는지 설명하기 위해, firstGen 아키텍처에 게시 한 코드는 컴파일하지 않고 "bit1_6 : bitlice 레이블이 없습니다."(for ALL을 사용하면 ... 잘못된 동작을 마스크합니다. lsb 및 msb는 인스턴스화 된 상태입니다.) 아무도 무슨 일이 일어나고 있는지 알고 있습니까?
ENTITY alu8bit IS
PORT(A, B : IN bit_vector(7 downto 0);
P,K,R : IN bit_vector(3 downto 0);
ci : IN bit;
Z : OUT bit_vector(7 downto 0);
co : OUT bit);
END;
ARCHITECTURE firstGen of alu8bit IS
COMPONENT bitslice
PORT(a, b, ci: IN bit;
P, K, R : IN bit_vector(3 downto 0);
ri, cn: OUT bit);
END COMPONENT;
FOR bit1_6: bitslice USE ENTITY work.one_bit_alu(alu_1_bit);
FOR others : bitslice USE ENTITY work.one_bit_alu(alu_1_bit);
signal c : bit_vector(7 downto 1);
BEGIN
lsb : bitslice PORT MAP(A(0), B(0), ci, P, K, R, Z(0), c(1));
GEN_MIDDLE_BITS: FOR I IN 1 TO 6 GENERATE
bit1_6 : bitslice PORT MAP(A(I), B(I), c(I), P, K, R, Z(I), c(I+1));
end generate;
msb : bitslice PORT MAP(A(7), B(7), c(7), P, K, R, Z(7), co);
END;