2016-11-10 6 views
0

Verilogで固定小数点除算を実行しようとしていますが、宣言されていないポート(r2とc2)に関する2つのエラーが発生しました。私はなぜこれが起こるのか分からない。なぜならCとQが働くからだ。あなたは私を助けることができる?ありがとう。宣言されていないポートのVerilogエラー

module tema1(a,b,q,c,r); 

    input[7:0] a; 
    input[7:0] b; 

    output[15:0] q; 
    reg[15:0] q; 
    output[7:0] r2; 
    output[7:0] c; 
    output[7:0] c2; 
    output[7:0] r; 
reg[7:0] r2; 
    reg[7:0] c; 
    reg[7:0] c2; 
    reg[7:0] r; 

    always @(*) 
     begin 


     c = 8'b00000000; 
     r = a; 
     c2 = 8'b00000000; 

     repeat (30) 
        begin 
         if (r >= b) 
          begin 
         c = c + 1; 
         r = r - b; 
          end 
        end 

     $display("c=%d", c); 
     $display("r=%d",r); 



       r = r * 10; 
       r2 = r; 
       repeat (30) 
        begin 
         if (r2 >= b ) 
          begin 
          c2 = c2 + 1; 
         r2= r2 - b; 
          end 
        q[8:7]=c2; 

        end 


       r = r * 10; 
       r2 = r; 
       repeat (30) 
        begin 
         if (r2 >= b ) 
          begin 
          c2 = c2 + 1; 
         r2= r2 - b; 
          end 
         q[7:6]=c2; 

        end 


       r = r * 10; 
       r2 = r; 
       repeat (30) 
        begin 
         if (r2 >= b ) 
          begin 
          c2 = c2 + 1; 
         r2= r2 - b; 
          end 
         q[6:5]=c2; 

        end 


       r = r * 10; 
       r2 = r; 
       repeat (30) 
        begin 
         if (r2 >= b ) 
          begin 
          c2 = c2 + 1; 
         r2= r2 - b; 
          end 
         q[5:4]=c2; 

        end 


       r = r * 10; 
       r2 = r; 
       repeat (30) 
        begin 
         if (r2 >= b ) 
          begin 
          c2 = c2 + 1; 
         r2= r2 - b; 
          end 
         q[4:3]=c2; 

        end 

       r = r * 10; 
       r2 = r; 
       repeat (30) 
        begin 
         if (r2 >= b ) 
          begin 
          c2 = c2 + 1; 
         r2= r2 - b; 
          end 
         q[3:2]=c2; 

        end 


       r = r * 10; 
       r2 = r; 
       repeat (30) 
        begin 
         if (r2 >= b ) 
          begin 
          c2 = c2 + 1; 
         r2= r2 - b; 
          end 
         q[2:1]=c2; 

        end 


       r = r * 10; 
       r2 = r; 
       repeat (30) 
        begin 
         if (r2 >= b ) 
          begin 
          c2 = c2 + 1; 
         r2= r2 - b; 
          end 
        q[1:0]=c2; 

        end 






end 

endmodule 

答えて

0

あなたが出力としてr2c2を宣言したため、このエラーを取得しているが、彼らはポートリストには表示されません。使用している構文は、ポートを最大3回(ポートリスト、方向、およびデータタイプで1桁)定義する必要のあるVerilog-1995のものです。 Verilog-2001の最新の構文を使用してください(現在はSystemVerilog)

module tema1(
     input[7:0] a,b, 
     output reg [15:0] q, 
     output reg [7:0] c, r 
     ); 
// internal 
     reg[7:0] c2, r2; 
関連する問題