4-Bit-Addierer-Subtrahierers in Verilog

stimmen
0

Ich schreibe Verilog-Code für 4-Bit-Addierer-Subtrahierer. Ich bin mit Baukonstruktion. Zuerst habe ich Verilog-Code für 1-Bit-Volladdierer geschrieben. Dann bin ich mit, dass Code für 4-Bit-Addierer Subtrahierer zu schreiben.

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;
  always@(A or B or In)
    begin
      if(In==0)
        begin
          fadder f1(A[0],B[0],In,Res[0],t1);
          fadder f2(A[1],B[1],t1,Res[1],t2);
          fadder f3(A[2],B[2],t2,Res[2],t3);
          fadder f4(A[3],B[3],t3,Res[3],Out);
        end

      else
        begin
          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);

        end
    end
endmodule

Ich erhalte Fehler nicht im Code. Worin besteht das Problem?

Veröffentlicht am 02/09/2018 um 05:05
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
0

Nutzen Sie beglückwünschend B mit XORTor (wenn in = 1) , bevor sie in den instanziiert Module in die Werte setzen.

wenn das in=0wird gleichen B zu A gegeben werden , und wenn in=1, ~ B wird zu A hinzugefügt werden

Beantwortet am 07/09/2018 um 11:14
quelle vom benutzer

stimmen
0

Sie sind eigentlich ziemlich nahe. Was Sie scheinen zu verstehen, ist, dass in Verilog Ihr Design bei der Kompilierung synthetisiert wird, nicht zur Laufzeit. Sie können keine Module bedingt instanziiert, da zum Zeitpunkt der Kompilierung wir wissen nicht, ob diese Bedingung erfüllt wird oder nicht. So Ihre erste Aussage im Fall der Subtraktion Bit niedrig ist nicht wirklich sinnvoll. Es macht auch keinen Sinn, es in einem immer Block zu setzen, da die rtl bereits in den Modulen definiert sind.

Jedoch Ihre zweite Anweisung enthält die meisten der Lösung des Problems. Wenn das Vorzeichenbit niedrig ist, werden diese XORs an der Spitze des Addierers / Subtrahierers die eingehenden Bits erhalten, und das Design auf nur einen Addierer vereinfacht. Versuchen Sie, nur allein den zweiten Block verwendet wird.

Beantwortet am 02/09/2018 um 15:06
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more