Verilog: vprašanje z blokiranjem prenosa

C

Cluny

Guest
Živjo,

Želim izračunati najmanj dve vrednosti, v primerjavi s starejšim najnižjo vrednost.In želim, da to stori v enem ciklu.V mojem izračunu vzamem prvo vrednost in jih primerjajte s starimi najmanjša vrednost.Potem vzamem novo (morda) minimalno vrednost, in ga primerjati z drugim elementom.

Mislim, da lahko uresniči le to z blokiranjem nalog?na primer v naslednjih poenostavljen način:

Code:

Vedno @ (*)

začeti

if (value [0] <min)

min = vrednost1;

if (vrednost [1] <min)

min = value2;

konecVedno @ (posedge CLK)

začeti

min_out <= min;

konec

 
nimajo veliko je posledica incomplement vaše, če bloka, lahko dodate drugega bloka!

 
Živjo,

Lahko je to tisto, kar želim u, če ne poskušate dati nekaj primerov / boljšo razlago:

i bo prevzela x in y kot dva vnosa 2-bit ravni.Spodaj kodo lahko napisal bolj učinkovito, vendar sem želela preveriti s tabo, ali je to kar si hotel interms funkcionalnosti

input [1:0] x, y;

wire [1, 0] min_x_y, min_old_new;
reg [1:0] min_old;

dodelite min_x_y = (x <y)?x: y;

dodelite min_old_new = (min_old <min_x_y)?min_old: min_x_y;

Vedno @ (posedge reset ali uro posedge)
začeti
if (reset)
min_old <= 0;
še
min_old <= min_old_new;
konecS spoštovanjem,
dcreddy

 
Hvala za namige.Pravi program, napisal sem bolj zapleten, kot je moj preprost primer je pokazala.Rad bi dobil vsaj veliko vrednot in želijo, da se dve vrednosti in preveri njihovo naenkrat (v enem taktu).Izračunana min_out je nova najnižja stopnja, ki sem jih primerjati z naslednjih dveh vrednosti in tako naprej ...

Mislim, da sem ustanovil, kaj je moj problem.V glavnik vedno blok sem uporabil min vrednost kot "input" in ne povratnih vrednosti min_out register proizvodnje.Glede na svojo začetno primer boljšo različico, ki ne proizvajajo zapah, bi bil:

Code:

Vedno @ (*)

začeti

min = min_out / / min je naložen s prejšnjimi vrednostjo min_out, no zapah se proizvaja

if (value [0] <min)

min = vrednost1;

if (vrednost [1] <min)

min = value2;

konecVedno @ (posedge CLK)

začeti

min_out <= min;

konec
 
hi Cluny,

Njegova bit čuden ur logiko, omogoča, da prevzame ta scenarij:

Vrednost [0] = 2
vrednost [1] = 3
min_out = 4

ur min vrednost ko bo vedno blok je: min = 3

Je to kar želiš??Zahteva izgleda čudno, idealnem primeru bi imam pričakovano vrednost [0] in vrednost [1] v primerjavi z prvo in nato posledično vrednost je v primerjavi primerjavi s prejšnjim najmanjše število, ki je, kako imam izvajati.

Vse kako, če je to kaj u želijo, globe z mano.

S spoštovanjem,
dcreddy

 
Hi dcreddy1980,

Res ne vem, zakaj bi bil vaš rezultat 3??
Obstajajo blokiranje naloge v vedno bloku, ki se izvajajo zaporedoma.Mislim, da to vodi v desno in želenega rezultata.

Code:

min = min_out / / min = 4

if (value [0] <min) / / desno, 2 <4

min = vrednost [0]; / / min = 2

if (vrednost [1] <min) / / false, 3 <2

min = vrednost [1]; / / min = 2

 

Welcome to EDABoard.com

Sponsor

Back
Top