1

4 ビット加算減算器の Verilog コードを書いています。私は構造設計を使用しています。最初に、1 ビット全加算器の Verilog コードを書きました。次に、それを使用して 4 ビット加算器減算器のコードを記述しています。

module fadder (A, B, Cin, Sum, Cout);
    input A, B;
    input Cin;
    output Sum;
    output Cout;
    wire t1,t2,t3,t4;
  xor x1(t1,A,B);
  xor x2(Sum,t1,Cin);
  and g1(t2,A,B);
  and g2(t3,B,Cin);
  and g3(t4,Cin,A);
  or  g4(Cout,t2,t3,t4);  
endmodule


module add_sub_4 (A, B, In, Res, Out);
    input [3:0] A, B;
    input In;
    output [3:0] Res;
    output Out;
    wire t1,t2,t3,t4,t5,t6,t7;


          xor x3(t3,B[0],In);
          xor x4(t4,B[1],In);
          xor x5(t5,B[2],In);
          xor x6(t6,B[3],In);
          fadder f5(A[0],t3,In,Res[0],t1);
          fadder f6(A[1],t4,t1,Res[1],t2);
          fadder f7(A[2],t5,t2,Res[2],t3);
          fadder f8(A[3],t6,t3,Res[3],Out);  
endmodule
4

2 に答える 2

1

あなたは実際にはかなり近いです。あなたが理解していないように見えるのは、Verilog では、実行時ではなくコンパイル時にデザインが合成されるということです。コンパイル時に条件が満たされるかどうかわからないため、モジュールを条件付きでインスタンス化することはできません。したがって、減算ビットが低い場合の最初のステートメントは、実際には意味がありません。rtl は既にモジュールで定義されているため、always ブロックに配置することも意味がありません。

ただし、2 番目のステートメントには、問題に対する解決策のほとんどが含まれています。符号ビットが低い場合、加算器/減算器の上部にあるこれらの xor は着信ビットを保持し、設計は加算器だけに簡素化されます。2 番目のブロックだけを使用してみてください。

于 2018-09-02T15:06:47.103 に答える