1
다음 Verilog HDL 코드가 있습니다. 이것은 기본적으로 a
과 b
을 추가하고 PG 단위, Carry 생성 단위 (cg_unit
) 및 Sum 단위 (s_unit
)를 갖는 2 비트 덧셈기입니다. ci
은 2 비트 가산기의 캐리 인입니다. sel
은 트로이를 활성화하는 것으로, 즉 s[1]
의 값을 무효화합니다. coutminus1
및 cout
은 단순히 캐리 아웃 및 캐리 아웃 이전의 캐리입니다. 나는 다음과 같은 구문 오류가 몇 가지 이유를 들어구문 오류 '='
module trojan
(
input [1:0] a, b,
input ci, sel,
output [1:0] s,
output cout, coutminus1
);
wire [1:0] c, p, g;
cla_pg_unit_2bits pgu1(a, b, p, g);
cla_cg_unit_2bits cgu1(p, g, ci, c);
cla_s_unit_2bits su1(p, {c[0], ci}, s);
coutminus1 = c[0];
cout = c[1];
[email protected](sel)
begin
if (sel == 1)
assign s[1] = ~s[1];
else
assign s[1] = s[1];
end
endmodule
:
Following Verilog source has the following syntax error: token is '='
coutminus1 = c[0];
^
나는 그것을 시도했지만 네 가지 새로운 오류를 준다. 하나는 :'왼편의 불법 행위. 이 과제의 왼쪽에는 비트 선택 또는 부품 선택을 사용할 수 없습니다. s [1] ='assign [1] = (~ s [1]); ' – thetypist
's'가 다른 모듈에서 사용되기 때문에 결과물이 필요합니다. 이 상황에 어떻게 가야합니까? 또한 부울 대수가 표현식에있을 때'assign' 키워드가 필요하다고 생각했습니다. 이것은 사실이 아닌가? – thetypist
'출력 레지스터'로 's'를 선언 할 때 다음과 같은 오류가 발생합니다 : '레지스터'가 모듈 "cla_s_unit_2bits", 인스턴스 "su1"의 출력 포트 "s"에 불법으로 연결되었습니다. " – thetypist