Resetare

M

megastar007

Guest
Există vreo speciale circuitele de eliberare a reseta pentru digital blocuri în ASIC design

 
depinde de circuit nevoie.
Are nevoie de sincrone sau asincrone de resetare a reseta?

 
de obicei, ceea ce va fi realizat este, un semnal de interne vor fi declarate, care probele negative marginea reset.acest semnal este utilizat în blocuri întotdeauna în loc de a da un semnal de resetare sine.

mereu @ (posedge clk)
latch_reset <= reiniţializaţi;

aloca rst_internal = ~ (latch_reset & ~ reset);

mereu @ (posedge clk sau negedge rst_internal)
începe
/ / Logica vine aici
finalLasă-mă să ştiu dacă
am dreptate.

 
reiniţializaţi este dat maximă prioritate!!
sa ridicat fanout net deci trebuie să fie luată de îngrijire !!!!!!

 
sree205 a scris:

de obicei, ceea ce va fi realizat este, un semnal de interne vor fi declarate, care probele negative marginea reset.
acest semnal este utilizat în blocuri întotdeauna în loc de a da un semnal de resetare sine.mereu @ (posedge clk)

latch_reset <= reiniţializaţi;aloca rst_internal = ~ (latch_reset & ~ reset);mereu @ (posedge clk sau negedge rst_internal)

începe

/ / Logica vine aici

finalLasă-mă să ştiu dacă am dreptate.
 
reiniţializaţi, în majoritatea cazurilor, este asynchronously a afirmat şi synchronously deasserted.
în cazul în care astfel de circuit a reseta negativ logica (lucrări, atunci când este prima 1)
mereu @ (posedge clk sau negedge reset) este o modalitate mai bună de a folosi ca pe sinteza infers asincrone logică şi, de asemenea, îmbunătăţeşte viteza de operare.

 
rsrinivas a scris:

reiniţializaţi, în majoritatea cazurilor, este asynchronously a afirmat şi synchronously deasserted.

în cazul în care astfel de circuit a reseta negativ logica (lucrări, atunci când este prima 1)

mereu @ (posedge clk sau negedge reset) este o modalitate mai bună de a folosi ca pe sinteza infers asincrone logică şi, de asemenea, îmbunătăţeşte viteza de operare.
 
Bună tuturor,
văzut toate posturile de interesante.Am scris un cod şi un testbench, împreună cu asta.postaţi aici.Încercaţi-l cu diferite timpilor şi lasă-mă să ştiu dacă acest lucru va functiona.

/ / RTL pentru dubla bastonadă şi deasserting
/ / Asincrone activă scăzut reiniţializaţimodul reset_try (clk, prima, rst_internal);

input clk, prima;
ieşire rst_internal;

sârmă rst_output;
reg pavilion;

sârmă rst_internal;
reg latch_reset, latch_reset1;

aloca rst_internal = ~ (latch_reset1 & prima);

aloca rst_output = (! prima & latch_reset1)? 1'b0: 1'b1;mereu @ (posedge clk)
if (! prima)
latch_reset <= prima;
alt
latch_reset <= 1'b1;

mereu @ (posedge clk)
if (! latch_reset)
latch_reset1 <= latch_reset;
alt
latch_reset1 <= 1'b1;

endmodule

/ / Test banc, pentru aceeaşi

modul tb_try ();

reg clk;
reg prima;
sârmă reset_b;

reset_try T1 (. clk (clk),
. prima (prima),
. rst_internal (reset_b));

iniţială
începe
$ recordfile ( "try1.trn");
$ recordvars ();
final

întotdeauna
# 5 clk = ~ clk;

iniţială
începe
clk = 1'b1;
prima = 1'b1;
# 10 prima = 1'b0;
# 50 prima = 1'b1;
# 100 $ termina ();
final

endmodulePS: Am folosit ncverilog pentru simulare.Sper că acest lucru va suficientă.Am postat de asemenea, de cod,
în loc de a actualiza într-un fişier, astfel încât uşor de revizuire.

 
codul de post de mai sus vor deassert reiniţializaţi într-un ciclu de ceas, dacă este de reiniţializare a afirmat pentru o lungă durată, care practic nu este ceea ce ne-o dorim.Deci,
eu sunt reposting un alt cod.

/ / Start

mereu @ (posedge clk sau negedge prima)
if (! prima)
temp <= 1'b0;
alt
temp <= 1'b1;

aloca reset_out = (temp & prima);

/ / Sfârşitul cod

acest lucru ar trebui să facă sincron deassertion asincrone de reset.

 

Welcome to EDABoard.com

Sponsor

Back
Top