question de syntaxe: l'utilisation de déclarations lors de

N

neocool

Guest
Salut, comment puis-je mettre quelque chose comme ça en une seule ligne, de sorte que je ne conduis pas DOUT à deux endroits?

DOUT <= DO_higher (SAMPLE_WIDTH-1 downto 0) lorsque (CSN = '0 'et RDN = '0' et ADDR (

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Frais" border="0" />

= '1 ');
DOUT <= DO_lower (SAMPLE_WIDTH-1 downto 0) lorsque (CSN = '0 'et RDN = '0' et ADDR (

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Frais" border="0" />

= '0 ');

Merci

 
Une des solutions est la suivante:
DOUT <= DO_higher (SAMPLE_WIDTH-1 downto 0) lorsque CSN = '0 'et RDN = '0' et ADDR () = '1 'ELSE DO_lower (SAMPLE_WIDTH-1 downto 0) lorsque CSN = '0' et RDN = ' 0 'et ADDR () = '0' ELSE default_value;

Une autre façon:
Pourquoi n'utilisez-vous pas une instruction IF dans un communiqué le processus plutôt que d'eux?

Vous pouvez les remplacer par la déclaration processus suivant:

processus (CSN, RDN, ADDR, DO_higher, DO_lower)
commencer
if (CSN = '0 'et RDN = '0' et ADDR () = '1 ') puis
DOUT <= DO_higher (SAMPLE_WIDTH-1 downto 0);
elsif (CSN = '0 'et RDN = '0' et ADDR () = '0 '), puis
DOUT <= DO_lower (SAMPLE_WIDTH-1 downto 0);
d'autre
DOUT <= default_value;
fin si;
processus de bout;

Cordialement,
KH

 
Ainsi, il est autorisé à utiliser, bien-quand-où Else ..
Je l'ai essayé, mais je crois que j'ai fait une erreur d'autres, de sorte qu'il ne compile pas.

La raison pour laquelle je voulais éviter processus et si les états parce ISE ajoute un verrou à la sortie, il ya donc un retard d'une horloge.Je voulais créer aucun retard car il s'agit d'un petit correctif à l'intérieur de mon dessein.
Est-il possible de supprimer cette serrure et toujours utiliser processus du CI à l'intérieur?

Cordialement

 
Si vous avez une déclaration incomplète si, l'outil de synthèse génère un verrou.Comme vous pouvez le voir dans le code, la dernière instruction else empêche de faire un loquet.Vous devez assigner une valeur par défaut à l'DOUT.

processus (CSN, RDN, ADDR, DO_higher, DO_lower)
commencer
if (CSN = '0 'et RDN = '0' et ADDR () = '1 ') puis
DOUT <= DO_higher (SAMPLE_WIDTH-1 downto 0);
elsif (CSN = '0 'et RDN = '0' et ADDR () = '0 '), puis
DOUT <= DO_lower (SAMPLE_WIDTH-1 downto 0);

d'autreDOUT <= default_value;

fin si;
processus de bout;

Cordialement,
KH

 

Welcome to EDABoard.com

Sponsor

Back
Top