Verilog: question avec blocage cession

C

Cluny

Guest
Salut,

Je veux calculer le minimum de deux valeurs par rapport à une valeur minimale de plus.Et je veux le faire en un seul cycle.Dans mes calculs je prends la première valeur et la comparer avec l'ancienne valeur minimale.Ensuite, je prends la nouvelle (peut-être) la valeur minimale et la comparer avec le deuxième élément.

Je pense que je ne peut réaliser cela avec le blocage des affectations?par exemple dans le prospectus simplifié comme suit:

Code:

@ toujours (*)

commencer

if (value [0 min] <)

min = valeur1;

if (value [1] <min)

min = valeur2;

fintoujours @ (posedge CLK)

commencer

<Min_out = min;

fin

 
déclin est dû à incomplement de votre si le bloc, vous pouvez ajouter d'autre bloc!

 
Salut,

Peut être est ce ce que tu veux, sinon essayer de donner quelques exemples / meilleure explication:

Je suppose que X et Y deux entrées de 2-bits.Le code ci-dessous peuvent écrite de manière plus efficace, mais je voulais juste vérifier avec vous si c'est ce que tu voulais interms de fonctionnalité

entrée [01:00] x, y;

fils [1; 0] min_x_y, min_old_new;
reg min_old [01:00];

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

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

toujours @ (reset posedge ou posedge horloge)
commencer
if (reset)
<Min_old = 0;
d'autre
= <Min_old_new min_old;
finCordialement,
dcreddy

 
Merci pour les conseils.Le véritable programme que j'ai écrit est plus complexe que mon exemple simple montre.Je veux obtenir le minimum d'un lot de valeurs et que vous souhaitez prendre deux valeurs et de les vérifier à la fois (en un cycle).Le min_out calculé est le nouveau salaire minimum que je dois comparer avec les deux prochaines valeurs et ainsi de suite ...

Je crois que j'ai fondé mon problème.Dans le peigne toujours bloquer j'ai utilisé la valeur min en tant que contribution "et non pas la valeur de retour de la min_out registre de sortie.En ce qui concerne mon exemple une meilleure version d'origine, qui ne produit pas un verrou, serait:

Code:

@ toujours (*)

commencer

min_out min = / / min est chargé par la valeur précédente de min_out, aucun verrou est produite

if (value [0 min] <)

min = valeur1;

if (value [1] <min)

min = valeur2;

fintoujours @ (posedge CLK)

commencer

<Min_out = min;

fin
 
Cluny Salut,

Son peu de logique ur étrange, supposons que ce scénario:

valeur [0] = 2
valeur [1] = 3
min_out = 4

ur valeur min après le bloc sera toujours: min = 3

Est-ce que tu veux???L'exigence semble étrange, idéal pour moi serait attendu à la valeur [0] et [la valeur 1] contre d'abord, puis la valeur résultante est comparée à la précédente nombre minimum qui est de savoir comment j'ai mis en place.

Toute façon si c'est ce que tu veux, sa me va.

Cordialement,
dcreddy

 
Salut dcreddy1980,

Je ne sais pas vraiment pourquoi le résultat serait de 3???
Il ya blocage des affectations dans le bloc de toujours, qui sont successivement exécutées.Je suppose que cela conduit à la droite et le résultat désiré.

Code:

min_out min = / / = 4 min

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

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

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

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

 

Welcome to EDABoard.com

Sponsor

Back
Top