4 bits adderer-subtrahereren i Verilog

stemmer
0

Jeg skriver Verilog kode for 4 bit huggorm subtractor. Jeg bruker strukturell design. Ved første har jeg skrevet Verilog kode for en bit fulladderer. Så jeg bruker det til å skrive kode for 4 bit huggorm subtractor.

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

Jeg får ikke feil i koden. Hva er problemet?

Publisert på 02/09/2018 klokken 05:05
kilden bruker
På andre språk...                            


2 svar

stemmer
0

Gjøre bruk av komplementære B ved hjelp av XORporten (når i = 1) før man setter inn verdiene i instansiert modulene.

når det in=0, samme B legges til A, og da in=1vil ~ B legges til A.

Svarte 07/09/2018 kl. 11:14
kilden bruker

stemmer
0

Du er faktisk ganske nær. Hva du synes å ikke forstå er at i Verilog design er syntetisert ved kompilering, ikke under kjøring. Du kan ikke instantiate moduler betinget fordi på kompilering vet vi ikke om at tilstanden vil bli oppfylt eller ikke. Så din første uttalelse i saken av subtraksjon bit er lav ikke virkelig fornuftig. Det heller ikke fornuftig å sette den i en alltid blokk, siden RTL er definert i modulene allerede.

Imidlertid inneholder ditt andre utsagn de fleste av løsningen på problemet. Når den bit tegn er lav, vil disse xors på toppen av addereren / subtrahereren bevare de innkommende bits, og utformingen vil forenkles til bare en adderer. Prøv bare å bruke den andre blokken alene.

Svarte 02/09/2018 kl. 15:06
kilden bruker

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