나는 이미 여기에서 검색을 수행했으며 약간의 통찰력을 발견했지만 이러한 종류의 루프를 사용하는 것에 대한 개념 중 일부는 나를 벗어난다. 내가 실행할 수있는 시뮬레이터 (ISIM)를 얻으려고블록/루프 생성을 사용하여 리플 캐리 더하기 만들기
module RCA8(A_8, B_8, Cin, Cout, S_8);
input [7:0] A_8, B_8;
input Cin;
output Cout;
output [7:0] S_8;
wire [8:0] c;
assign c[0] = Cin;
genvar i;
generate
for (i = 0; i < 8; i=i+1)
begin : make_fadders
FullAdder fa( .FA_A(A_8[i]),
.FA_B(B_8[i]),
.Cin( c[i] ),
.FA_S(S_8[i]),
.Cout(c[i+1])
);
end
endgenerate
assign Cout = c[8];
endmodule
: 여기
module HalfAdder(A, B, Cout, S);
input A, B;
output Cout, S;
assign Cout = A & B;
assign S = A^B;
endmodule
module FullAdder(FA_A, FA_B, Cin, FA_S, Cout);
input FA_A, FA_B, Cin;
output FA_S, Cout;
wire ha0_S, ha0_C, ha1_C;
HalfAdder ha0(.A( FA_A ),
.B( FA_B ),
.Cout(ha0_C),
.S(ha0_S)
);
HalfAdder ha1(.A( Cin ),
.B( ha0_S),
.Cout(ha1_C),
.S(FA_S )
);
assign Cout = ha0_C | ha1_C;
endmodule
그리고 내 RCA 코드입니다 : 여기에 반 가산기와 전 가산기 내 모듈입니다. 구문을 검사 할 때 작동하지만 프로그래밍 파일을 생성하려고하면 오류가 발생하고 매핑을 실행하면 여러 경고가 반환됩니다. iSim은 오류 861 : 디자인을 연결하지 못했습니다. 매핑과 관련이 없습니까?
내가 실제로 이해하지 못한 한 가지는 구현 및/또는 시뮬레이션보기에서 RCA의 드롭 다운 트리에 하나의 fullAdder 모듈 만 표시한다는 것입니다. 8을 보여줘야 하나? 또는 이것이 작동하지 않는가?
대체로이 유용한 도구를 사용하는 방법을 배우는 것과는 대조적으로 손으로 8 개의 방울을 만들기 때문에 (할당이 ... 표시됨)이 작업을 실제로하고 싶습니다.
기타 세부 정보 : Windows 10, 32 비트 프로젝트 네비게이터 자일링스 14.7
어떤 도움감사를 사용!
정말 고마워요! 그래도 생성 블록이 작동하는 방법에 대한 답변이 필요합니다. 구현에 문제가 있습니까? – rub3z
코드에 따르면, 나는 8 개의 make_fadder 인스턴스를 볼 것으로 예상됩니다. 각 make_fadder 인스턴스에는 1 개의 FullAdder가 있습니다. 그것은 당신이보고있는 것이 아닙니까? –
@ rub3z KamilRymarz의 답변을보십시오. –