2017-12-10 16 views
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 

답변

0

당신의 MUX는 '1'비트 신호에 연결 :

mux mux1(c0[z+1], cin[z+1], bp[z+1], co[z+1]); 

자체가 8 비트 포트가 선언 된 먹스 :

parameter Nbits = 8; 
input wire [Nbits-1:0] a,b; 

그래서, 포트 폭이를 불일치.