Aller au contenu


Photo
- - - - -

Lire un élément d'un vecteur


  • Veuillez vous connecter pour répondre
2 réponses à ce sujet

#1 philouxy

philouxy

    Membre

  • Membres
  • 50 messages
  • Gender:Male
  • Location:Riviera Vaudoise - Suisse

Posté 20 juin 2011 - 06:15

Bonjour à tous,

Je reviens sur ma programmation VHDL, mais sur un autre problème. J'aimerai pouvoir lire un élément d'un vecteur. Je m'explique : j'ai vecteur de 68 cases, et j'aimerai à chaque coup de clock pouvoir lire un autre élément, effet pour faire simple j'aimerai lire tout mon vecteur mais bit à bit.

signal bit_recup : std_logic;
signal cpt_68 : std_logic_vector(6 downto 0) 
signal vecteur_68_case : std_logic_vector(67 downto 0); 

-- dans un process je vais l'instruction suivante
bit_recup <= vecteur_68_case(cpt_68)


Remarque : j'aimerai aussi éviter d'utiliser des variables "integer" à cause de la synthétisation

voici le code complet de mon process :

  Compteur_68E : process(Clock_Bit_out, cpt_68, Trame_No_Manch, Init_Code_Manchester)
    begin
      if Init_Code_Manchester = '1' then
        -- à chaque coup de clock, on incrémente une valeur et on donne essaie de lire le vecteur 
        if Rising_edge(Clock_Bit_out) then
          lecture_bit <= Trame_No_Manch(cpt_68); 
          cpt_68 <= cpt_68+1;
        elsif (cpt_68 > "1000011") then 
          cpt_68 <= "0000000"; 
        end if;
      else 
        cpt_68 <= "0000000";        
      end if;  
  end process Compteur_68E; 


Voici aussi l'erreur à la compilation de mon code pour la simulation
Image IPB

je serai tout heureux de pouvoir lire vos différentes suggestions

Amicalement Philou

-------------------------------------

Amicalement le cht'y Philou

 

Fixme Members : fixme.ch
-------------------------------------


#2 zeqL

zeqL

    Membre passionné

  • Membres
  • PipPipPip
  • 393 messages
  • Gender:Male

Posté 08 juillet 2011 - 05:05

Je n'ai pas le code complet, mais ton process est très mal écrit.

Un process possède une liste de signaux sur lesquels il va se déclencher, on met donc en général une horloge ainsi qu'un reset.
Dans ton cas, pas de reset (comme je l'ai dit je n'ai pas le code complet, donc ca peut se faire sans reset), mais surtout tu trigge sur l'horloge (normal), le signal Trame_machin ce qui ne sert strictement à rien vu l'utilisation que tu en fait, le signal cpt_68, qui est utilisé avec Trame_machin, donc là aussi une erreur, et enfin le signal Init_code_machin, qui semble être un reset.

As-tu le code complet par hasard ?

Car parfois en VHDL l'erreur n'est pas forcément celle indiquée par le synthétiseur :P


Ah oui, pourquoi ne pas utiliser de variable ? Pourquoi "à cause de la synthétisation" ?

#3 philouxy

philouxy

    Membre

  • Membres
  • 50 messages
  • Gender:Male
  • Location:Riviera Vaudoise - Suisse

Posté 16 août 2011 - 10:38

Bonjour à tous,

Sorry pour le retard de ma réponse, et merci à toi Zeql pour t'être penché sur mon problème...

Effectivement ce code a été écrit à l'arach comme dirais les Jeun's :blink:

Et cherchant à résoudre, j'ai compris mon problème :

lecture_bit <= Trame_No_Manch(cpt_68);

ce que je voulais faire, c'était de lire un vecteur par une valeur numérique... mais comme on nous avait dit en cours, d'essayer d'utiliser le moins possible des variables numérique de type integer, j'ai pris ca un peu trop à la lettre :( ...
Bref l'erreur ici : je veux lire un bit, mais je ne peux pas avec cette instruction car je donne un vecteur avec comme paramètre un autre vecteur, ca ne va jamais fonctionner.... :wacko: ...

Donc j'ai résolu ca en utilisant un entier ! maintenant pour la remarque sur la synthétisation, c'est que celui va "coder" notre code VHDL avec des logiques, donc un entier y va pas forcément comprendre, ou ne va pas l’interpréter correctement...

Oui Zeql, je posterais le code complet de cette partie,... Malheureusement je suis pas à la Casa... donc faut être patient

Merci à vous de m'avoir lu

Amicalement Philou

-------------------------------------

Amicalement le cht'y Philou

 

Fixme Members : fixme.ch
-------------------------------------





0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users