Mihai Sprinceana
Un forum de programare cu de toate. Va astept sa va inscrieti si sa deveniti moderatori. Oricine este binevenit aici sa se inscrie si sa aiba acces la informatie free! Fiecare este liber sa adauge proiecte programe free etc. Ajutati acest forum sa devina o comunitate puternica unde fiecare invata de la fiecare! Tot ce trebuie sa faceti este sa va inregistrati si fiecare contributie se poate dovedi utila in timp! Forumul este free informatia free dk aveti timp liber ajutati si pe ceilalti si invatati si voi in acelasi timp! Haideti sa facem ceva pt.a ne ajuta intre noi! Cititi regulament postare forum inainte de a posta!
Lista Forumurilor Pe Tematici
Mihai Sprinceana | Inregistrare | Login

POZE MIHAI SPRINCEANA

Nu sunteti logat.
Nou pe simpatie:
Stefania23 pe Simpatie.ro
Femeie
24 ani
Dolj
cauta Barbat
25 - 46 ani
Mihai Sprinceana / Verilog / Bistabil T sincron Moderat de Catalin, buivietkhoa1919upg, fireratbat, profu.info, sade5000
Autor
Mesaj Pagini: 1
Catalin
Moderator

Inregistrat: acum 18 ani
Postari: 19
//Bistabil T sincron(cu clk adica cu semnal de ceas)

module bistabilT(Q,nQ,CLK,T,RESET); //declar iesiri finale apoi intrari
input T,CLK,RESET;  //declaratia intrarilor
output Q,nQ;reg Q;  //declaratia iesirilor
assign nQ=~Q;  //asignam variabilei nq simbolul ~q-adica q negat la nivel de bit pt a sti ca variabila nq reprezinta
q negat
always @(posedge CLK or posedge RESET)
begin
if (RESET==1)  Q=1'b0;  //daca reset=1 atunci lui q ii atribuim valoarea bitului
else if (T==1) #2 Q=~Q; //altfel daca T==1 atunci la 2 semiperioade il negam pe q
end
endmodule

module numbit(Q,CLK,RESET);
input CLK,RESET; //declaratia intrarilor
output [2:0] Q; //avem practic iesirea Q pe 3 biti; [2:0] un vector cu 3 elemente
wire [2:0] nQ;
wire w;
bistabilT T1(Q[0],nQ[0],CLK,1,RESET); //apelez de 3 ori modulul bistabilT deoarece avem bistabilul pe 3biti
bistabilT T2(Q[1],nQ[1],CLK,1,RESET);
bistabilT T3(Q[2],nQ[2],CLK,w,RESET);
and(w,Q[0],Q[1]);
endmodule

module numbit1(Q,CLK,RESET); //avem 2 module numbit deoarece bistabilul T este sincron
input CLK,RESET;
output [2:0] Q;
wire [2:0] nQ;
bistabilT T1(Q[0],nQ[0],CLK,1,RESET);
bistabilT T2(Q[1],nQ[1],Q[0],1,RESET);
bistabilT T3(Q[2],nQ[2],Q[1],1,RESET);
endmodule

module simulous; //modul de simulare
reg CLK,RESET;  //declar registrii adica intrarile
wire [2:0] Q1,Q2;  //de tip wire sunt iesirile
numbit numb(Q1,CLK,RESET); //apelul modulului numbit(practic functia=modul in verilog)
numbit1 numb1(Q2,CLK,RESET); //apelul modulului numbit1
initial
begin
#0 CLK=1'b0;
#0 RESET=1'b1;
#1 RESET=1'b0;
#45 $finish; //9semiperioade, $finish-directiva de terminare, initial-initializare valori
end
always #3 CLK=~CLK; //negarea semnalului de ceas la nivel de bit
initial
//afisare cu directiva $monitor
$monitor($time," input CLK=%b  RESET=%b -->>  output1 Q1=%b output2 Q2=%b",CLK,RESET,Q1,Q2);
endmodule


pus acum 18 ani
   
Pagini: 1  

Mergi la