# Autres langages > Autres langages > VHDL >  Filtre extrema

## Kalvin_20

Je suis tudiant en GEII2 et j'ai un projet tutor en VHDL a raliser. J'aurais donc besoin d'un peu d'aide afin de pouvoir avancer sur ce sujet. Je remercie d'avance pour tous ceux qui m'apporterons leur soutien.

Mon sujet est le suivant.

Filtre extrema :

Description :

Un signal E entier sign complment  2 en 8 bits prsente une valeur  tous les fronts actifs de H  l'entre du filtre. Le filtre dtecte en temps rel le maxi et le mini sur une fentre indtermine de valeurs de E.

Entres :
- H : Horloge de cadencement interne 1 MHz
- E (7 :0) : Entre du filtrage
- R : Rinitialise les maximum et minimum courants
- DV : Donne valide ( actif  1 sur front montant de H)

Sorties :
- SMIN(7 :0) : Sortie du filtrage mini (-128...127)
- SMAX(7 :0) : Sortie du filtre maxi (-128...127)

Ma premire solution :



```

```

----------


## Barsy

Salut

Le code que tu propose  l'air bon  vue de pif. Je dirais simplement qu'il manque un 

```
process(CLK)
```

 avant le begin.

Et dernire chose, je ne sais pas si c'est prcis dans le sujet mais tu as fait un reset synchrone. Or, je sais que dans 80% des cas, on demande  faire un reset asynchrone (enfin, si a n'est pas prcis, j'imagine que c'est au bon vouloir de l'tudiant).

Pour un reset asynchrone, il faut faire :



```

```

EDIT : non je viens de voir une *enorme*  erreur sur le DV. 

Le VHDL n'est pas un langage comme le C ou autres. Les instructions ne s'excutent pas l'une aprs l'autre mais toutes en mme temps.
Donc si dans ton code tu cris DV <= '1' et plus loin DV <= '0', tu peux tre certain d'avoir un conflit. 
D'autant plus que le DV dans ton nonc est une entre et non pas une sortie. Il sert j'imagine  valider E. Donc ton code devrait plutt tre :



```

```

----------


## Kalvin_20

merci pour votre rponse si rapide, j'ai essay d'intgrer votre solution  mon programme, celui-ci ne dtecte aucune erreur a la compilation mais le problme se pose lors de la simulation des signaux mon programme ne dtecte pas les valeurs mini et max et je trouve pas le problme ????
voici le nouveaux programme :



```

```

----------


## Barsy

Est ce que le programme retourne des valeurs min et max (bien que ce ne soient pas les bonnes) ou ne retourne-t-il rien du tout ?

Parce que je pense que le souci vient du fait que E est un nombre par complment  2. a signifie que le bit de poids fort est un bit de signe. Donc  la place de "std_logic_vector" pour E, SMIN et SMAX, je mettrais "signed".

Par contre, je n'ai jamais travaill avec des nombres signs en VHDL donc je ne sais pas si a marchera.

----------


## Kalvin_20

le programme retourne des valeurs min et max et le problemes je crois c dans l'initialisation des valeur min et max et aussi la fautes que vous avez cit .et d'aprs mon prof il faut faire 2 process : un pour la valeur min et l'autre pour la valeur min .

----------


## Kalvin_20

```

```

----------


## Barsy

Pour moi, il y a beaucoup d'erreurs dans ce code.

D'une part les dclarations des entres sorties ne sont pas bonnes (par exemple le DIV qui a t dclar comme vecteur).
D'autre part ton reset est masqu par ton if(CLK'event and CLK = '1'and DV = '1'). Imagine que ton DV ne passe jamais  1, ton reset ne marchera pas.

Je ne vois pas l'intert de mettre deux process (si le prof le dit, il faut le satisfaire, c'est lui qui note  ::P: ) surtout qu'ils s'activent sur les mmes entres.

Enfin, SMIN et SMAX ne devraient-ils pas tre signs ?

----------


## mich35

signs et non signs depend du package utilis:
http://dz.ee.ethz.ch/support/ic/hdl/vhdlsources.en.html
c'est juste pour faire du vhdl ou vous allez assayer de le synthtiser dans un fpga/asic plus tard?



```

```

----------

