0
문제가 있습니다. 내 코드가 작동하지 않는 이유는 무엇입니까. 도와주세요, 제발. nbits를 건너 뛰고 오류가 발생했습니다.연결 너비가 포트 너비와 일치하지 않습니다.
이 내 오류입니다 :
경고 : C : /Users/Gerson/Desktop/cska1/cska1.v (102) : 연결 폭 '는'포트의 폭과 일치하지 않습니다.
그리고이 오류는 내 모든 mux a, b, sel out에서 발생했습니다.
모든 도움 주셔서 감사합니다.
module ha_w (a, b, co, s); // modulo de meio somador half adder wire
input wire a, b; // declaraco das entradas a e b
output wire
co, // declaracao das saidas carry out
s; // e saida
assign s = a^b; // funcao xor representada pelo simbolo^
assign co = a & b; // funcao and representada pelo simbolo &
endmodule // fim do modulo ha_w
module fulladd(a, b, cin, co, s); //declaracao das variaveis
// bloco full adder feito com a juncao de dois half adders adders
input a, b; // entradas do full adder
input wire cin; // declaracao entrada carry input
output wire co; // declaracao da saida carry out
output wire s; // tava faltando
wire x,y,z; // fios dentro do bloco de projeto x(liga o primeiro half adder ao segundo half adder),
//y(liga o segundo half adder a porta OR), z(liga o primeiro half adder a porta OR)
// ha_w (a, b, co, s)
ha_w ha_1 ( // mapeamento do primeiro half adder(entradas e saidas)
.a (a), .b(b), // inputs connection
.co(z), // cout
.s(x) // saida //nao vai virgula
);
ha_w ha_2 (cin, x, y, s); // mapeamento do segundo half adder (entradas e saidas)
assign co = y | z; // saida co obtida pelo resultado de y e z pela porta OR
endmodule // fulladd
module mux(a,b,sel,out);
parameter Nbits = 8;
input wire [Nbits-1:0] a,b;
output wire [Nbits :0] out;
input wire [Nbits-1:0] sel;
wire [Nbits-1:0] a1,b1,so;
genvar r;
generate
for (r=0; r<Nbits;r=r+1) begin
nand u1(so[r],sel[r],sel[r]);
nand u2(a1[r],so[r],a[r]);
nand u3(b1[r],sel[r],b[r]);
nand u4(out[r],a1[r],b1[r]);
end
endgenerate
endmodule
module cska(a,b,co);
parameter Nbits = 8;
input [Nbits-1:0]a,b;
output[Nbits :0]co;
wire [Nbits :0] cin;
wire [Nbits-1:0] p,s;
wire [Nbits :0] clinha ; // fios de ligacao entre os full adders, cout vai ligado no cin
wire [Nbits :0] c0;
wire [Nbits :0] bp;
genvar m;
generate
for (m=0; m<Nbits; m=m+1) begin
// fulladd( a, b, cin, co, s);
fulladd fa1(a[m], b[m], clinha[m], clinha[m+1], s[m]); // mapeamento de portas do full adder para assim generaliza-las para o RCA
end
endgenerate
//assign clinha[0] = cin;
//assign co = clinha [Nbits];
genvar n;
generate
for (n=0; n<Nbits; n=n+1) begin
assign p[n] = a[n] | b[n]; // Propagate = P=A+B
assign bp = &p ;
end
endgenerate
//assign Cin[0]= 1'b0; // carry in = 0
//assign co = {Cin[Nbits], S}; //Concatenacao entre a previsao de carry in's e a saida soma
genvar z;
generate
for (z=0; z<Nbits; z=z+1) begin
mux mux1(c0[z+1], cin[z+1], bp[z+1], co[z+1]);
end
endgenerate
endmodule