Nápověda: načasování smyčky a západky

N

newcpu

Guest
Aby se předešlo západky při kódování s Verilog, přidáme "else C <= C", jak je následující:
Vždy @ (posedge CLK)

začít

if (== 1'b0)

C <= B;

jiný

C <= C;

konec

Ale pro kombinační logiku, následující kód dostane problémů načasování smyčky.Mimochodem, byla C byla přiřazena do registrů dříve.Mohl byste mi říct, v čem je problém a jak to vyřešit?Díky moc.
Vždy @ (nebo B)

začít

if (== 1'b0)

C <= B;

jiný

C <= C;

konec

 
Jak bylo uvedeno výše, pokud jste assing C <= C v taktovaný vždy procesem, budete vyvodit zámek.To proto, že se připojujete výstupu zpět na vstup.Zpětná vazba.Aby k tomu nedocházelo, a také závora inference, přiřadit C Výchozí hodnota v if.

Kód:

Vždy @ (posedge CLK)

začít

if (== 1'b0)

C = B;

jiný

C = 1'b0;

konec
 
Doufám, že není nutné přiřadit jiný účastní vždy blok, který je citlivý na posedge CLK
Zde je jeden příklad

Modul d_ff (q, d, CLK);
vstup d, CLK;
Výstup reg q;
Vždy @ (posedge CLK)
začít
if (CLK)
q <= D;
konec
endmodule

To bude syntézy d flipflop, ale v tomto není jiný součástí.vlsi_whiz napsal:

Jak bylo uvedeno výše, pokud jste assing C <= C v taktovaný vždy procesem, budete vyvodit zámek.
To proto, že se připojujete výstupu zpět na vstup.
Zpětná vazba.
Aby k tomu nedocházelo, a také závora inference, přiřadit C Výchozí hodnota v if.Kód:

Vždy @ (posedge CLK)

začít

if (== 1'b0)

C = B;

jiný

C = 1'b0;

konec
 
Pouze pro combo procesu, budeme požadovat jinak, aby se zabránilo zámky.Pro registrovat proces, není třeba jiného část

 
v sekvenčních logických, bez jinde, to není syntetizován západku.Ale v kombinačních logických. Bude.
v kombinačních kód, to je montujete nesprávné.protože to způsobí kombinační smyčka.Myslím si, že lze použít "assgin" prohlášení nahradí vždy bloku.

 

Welcome to EDABoard.com

Sponsor

Back
Top