# Autres langages > Autres langages > VHDL >  Problme code vhdl condition "when"

## Renaudvdg

Bonjour, je dbute en vhdl et je dois voulais utiliser la fonction _case_. Cependant j'aimerais que la condition sur mon _when_ x => soit un condition *<=* ou *>=* et non sur une simple valeur. Cela est-il possible ? Ou existe-il des alternatives ?
Merci d'avance,
Renaud

PS : je peux ventuellement afficher mon code et dcrire sa fonction pour une solution au problme.

----------


## sgievounet

Salut,

J'ai juste un contournement comme solution en passant par une variable.

ventuellement, si ca a du mal a tenir les contraintes de timing, tu places le test et l'affectation de la variable apres le case, en gardant  l'esprit que le case se fera un coup d'horloge plus tard.

Code ci dessous



```

```

----------


## Renaudvdg

Salut sgievounet, 
a premire vue ton code est intressant. Cependant j'ai aussi fait part de cette question sur le forum altera (anglais seulement donc plus compliqu) et j'ai obtenu diverses rponses. 
Malheureusement le but de ma question tait pour un exercice pour l'unif o je devais a la fin avoir moins de 22 lments logiques et si j'en ai plus de 25 j'avais un minus. J'ai essay avec des if imbriqus et avec un 


```

```

Mais j'ai trop d'EL. En ce qui concerne ton exemple je crois que c'est pas la meilleure solution a mon problme car je dois respecter normment d'intervalle de valeur, et donc cration d'autant de variable_test. Notre code doit est un test d'lectrocardiogramme qui allume certaines leds(8 en tout) en fonction du rythme cardiaque. Si tu as le temps de regarder, voici le code mre que nous avions pour un premier lectrocardiogramme compos de 2 leds(led_slow et led_fast). Comment l'amliorer pour qu'il corresponde a un celui pour 8 leds ? Voici aussi 2 autres codes tests que j'ai crit sur base du code mre. Je dbute en vhdl donc si tu as des conseils je suis tout oue  ::): 
Merci,
Renaud

PS : on peut pas joindre de fichier vhdl donc voici la page o j'ai post les miens sur l'autre forum http://www.alteraforum.com/forum/showthread.php?t=51915

----------


## sgievounet

Salut,

Ce que j'ai cris c'est qu'une bidouille de contournement qui n'a pas de sens en fait...

22 elements logiques ca fait vraiment pas beaucoup...

Les intervalles de valeurs c'est toi qui les fixes?

Par ce que si c'est toi, et bien tu pourrais bien prendre 0,32,64,96,128,160,192,224 comme intervales..

En binaire ca vaut ca:

0   => 00000000
32  => 00100000
64  => 01000000
96  => 01100000
128 => 10000000
160 => 10100000
192 => 11000000
224 => 11100000

Donc en te servant des 3 premiers bits, tu peux piloter tes leds.

----------


## Renaudvdg

Malheureusement je dois respecter certaines valeurs d'intervalle oui.. Mais j'ai demand  des amis et ils ont pas trouv le moyen de faire moins de 22 non plus

----------


## sgievounet

J'ai fais une passe dans ton code post sur le forum d'altera.

L'histoire des 22 elements logiques m'a bien dfi.

J'ai un peu modifi ton code et je crois avoir perdu une intervalle en route,  toi de la remettre.

Je n'ai pas install les composants MAX d'Altera sous Quartus, donc j'ai compil sous un Cyclone III.

J'arrive  24 elements logiques, contre 35 avant modification. Peut tre que sous le MAX on arriverait  22 avec l'intervalle manquante.

Faudrait que tu re simules sous modelsim pour verifier les resultats sont ceux que tu dois obtenir. Pas sur de ma modif.

Je suis preneur de la correction de ton prof.



```

```

----------


## Renaudvdg

Je crois qu'au final on a la mme ide mais tu ne prends pas en compte toutes les valeurs. Parce que moi je dois grer toutes les valeurs possibles du nombre de battement tandis que toi tu prends certaines valeurs particulire. Donc si par exemple cnt valait 80 les leds de ton code s'allumeraient mais pour cnt = 81 on serait dans le when other ce qui n'est pas logique en soit. Mais je te remercie du temps et des conseils que tu m'as donn et je te ferai part d'un correctif  ::):

----------


## sgievounet

En cnt = 81, on passe en when others, et dans le when others il n'y a rien.

Donc les leds restent en l'etat du when 80.

EDIT: Effectivement, ca ne marcherait pas

Bon courage

----------


## sgievounet

29 LE's



```

```

----------


## Renaudvdg

26


```

```

----------

