# Autres langages > Autres langages > VHDL >  Compatibilit std_logic et std_logic_vector

## thenemesys

Bonjour,

Je suis en train d'apprendre le VHDL et je fais face  un problme que je ne comprend pas. 

Le code est le suivant : 



```

```

Le composant pulse_after sert  mettre sa sortie s_out   '1' aprs un temps nb_period et pendant pulse_size, puis retombe  '0'.

Lorsque je simule ce code (avec Xsim, l'outil Xilinx), test(0) se met  un tat 'X' au lieu de 1 et retombe bien  '0' aprs pulse_size...
Si je fais une simulation en remplacant test (std_logic_vector) par 8 std_logic, la simulation fonctionne correctement...

Quelqu'un saurait m'expliquer pourquoi ?

Merci beaucoup par avance

----------


## titiri

Bonsoir,

   Deux remarques :
mapper un composant par des positions "relatives" (comme fait ici) est une trs mauvaise ide : grosse source de bug. De plus, on ne connait que difficilement le nom du signal de l'entit qui est mappe.vous mappez 8 pulse_after. si leur sortie est bien le dernier signal (ici test(i)), alors le 'X' est logique puisque plusieurs drivers (vos pulse_after) pilotent le mme 'test' si test est un std_logic. Votre solution de mettre test en tant que std_logic_vector(7 downto 0) est la bonne : chaque pulse_after a sa propre sortie, et ces 8 sorties sont regroupes par le OR.

Cdlt

----------


## thenemesys

Bonjour et merci pour votre rponse.

2 - Justement, en utilisant un STD_LOGIC_VECTOR, test(0) bascule  l'tat 'X' au lieu de 1 donc je ne passe jamais  l'tat suivant. C'est en utilisant des STD_LOGIC (test0, test1, test2.... jusque test7) que j'arrive au rsultat escompt. D'o ma question...

Merci

----------

