Bonjour à tous,

Je reviens sur de la programmation VHDL pour un problème de vecteur.

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 ; pour faire simple j'aimerai lire tout mon vecteur mais bit à bit.

voici le début de ma réflexion :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
-- code VHDL
 
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 de type "integer" à cause de la synthétisation.

voici le code complet de mon process :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
-- code VHDL 
  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;
je vous met encore l'erreur qui m'est affiché à la compilation :


Je vous remercie déjà de m'avoir lu, et aussi pour toutes vos suggestions, exemples, docs, etc...

Au plaisir de vous relire.

Amicalement Philou