Question concernant les case avec des if [VHDL] - Divers - Programmation
Marsh Posté le 21-03-2011 à 23:31:40
Syntaxiquement ton code est un peu bizarre mais bon je le comprends comme une présentation de concept.
Si la condition n'est pas vérifiée, tu sors du case.
Par exemple avec ce code
Code :
|
Si valeur vaut 1 tu ne rentre que dans le cas 1 et donc tu ne fais rien.
Marsh Posté le 22-03-2011 à 07:15:41
À part ça, c'est une mauvaise idée de procéder de cette manière (ne pas taiter tous les cas) car ça infère des latches, ce qui en général n'est pas voulu
Marsh Posté le 22-03-2011 à 08:34:39
esox_ch a écrit : À part ça, c'est une mauvaise idée de procéder de cette manière (ne pas taiter tous les cas) car ça infère des latches, ce qui en général n'est pas voulu |
Pas vraiment, tout dépend d'où tu décris tes cas.
Par contre ce qui est sur c'est que ta simulation risque de planter si tu n'a pas de "others" alors que le synthétiseur va inférer cette clause. Cela crée une différence entre simulation et matériel ce qui n'est jamais souhaitable.
Mais bon c'est un chouilla HS...
Marsh Posté le 22-03-2011 à 15:29:53
Pas vraiment . Suffi de ne pas penser en mode "Programmation" (ce qui est généralement une très mauvaise idée en VHDL) mais de penser en mode "hardware".
Quand tu écris ton when avec le signal "valeur" qui a une valeur uniquement dans une des branches, ton synthétiseur il ne saura pas quoi en faire quand il passe dans l'autre => Il va donc mettre un latch. C'est pas forcément un problème, mais les débutants n'en sont pas toujours conscients ... Pour cette raison on préconise parfois de faire "apparaître" le latch en travaillant sur des variables à l’intérieur du process et en les traduisant en signal juste avant la fin du process.
Marsh Posté le 22-03-2011 à 21:28:02
esox_ch a écrit : Pas vraiment . Suffi de ne pas penser en mode "Programmation" (ce qui est généralement une très mauvaise idée en VHDL) mais de penser en mode "hardware". |
Tout dépend d'où est ton case... si il est dans un process cadencé par une horloge par exemple, pas de latch.
Après c'est sûr que ça reste relativement dangereux et à proscrire pour un débutant.
Marsh Posté le 21-03-2011 à 23:07:37
Bonjour, je débute en VHDL et j'ai une question, j'ai crée un process dans lequel j'ai mis un case
case valeur
when '1'
if une_certaine_condition
valeur <= valeur +1;
end if;
when '2'
....
Je voulais savoir ce qu'il se passait si le condition n'était pas vérifiée.
Est-ce que ça passe dans le cas 2 ? le cas others ? ça bloque ? le process continuera à tourner et aller dans ce cas tant que la condition n'est pas vérifié ?
Merci de votre réponse !