VHDL - Instruction sur plusieurs cycles d'horloges
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

VHDL - Instruction sur plusieurs cycles d'horloges



  1. #1
    invite4c606666

    VHDL - Instruction sur plusieurs cycles d'horloges


    ------

    Salut tout le monde !

    Je travaille sur un projet où je produis un timestamp à travers un compteur qui est incrémenté de 1 à chaque cycle d'horloge.
    Or à chaque fois que je charge la valeur d'horodatage dans ma mémoire tampon, la valeur n'est pas incrémentée de 1 en 1, mais par la taille de mon timestamp qui est de 8 bits.
    Donc, je vais avoir ma première valeur à 0, puis la seconde valeur à 7 le troisième à 15 et ainsi de suite ....

    Je dois incrémenter mon compteur non pas chaque cycle d'horloge, mais toutes les 8 cycles d'horloge, afin de résoudre le problème.
    Donc, je voudrais savoir si une telle chose est possible, et si oui, comment pourrais-je le faire?
    J'ai essayé de le faire avec une boucle ou avec une déclaration d'attente, mais jusqu'à présent, rien n'a fonctionné.

    Voici le code de mon compteur:

    Code:
    LIBRARY IEEE;
    USE IEEE.STD_LOGIC_1164.ALL;
    USE IEEE.STD_LOGIC_UNSIGNED.ALL;
    
    ENTITY counter IS
    PORT(
    clk_i : in std_logic;
    count : out std_logic_vector(7 DOWNTO 0)
    ) ;
    end counter;
    
    ARCHITECTURE rtl OF counter IS
    
    SIGNAL s_count : STD_LOGIC_VECTOR(7 DOWNTO 0);
    
    begin
    process (clk_i)
    begin
    if clk_i'event AND clk_i = '1' then
    s_count <= s_count + 1;
    end if;
    
    end process;
    count <= s_count;
    end;
    Merci d'avance.

    Cordialement,
    David.

    -----
    Dernière modification par Antoane ; 05/08/2015 à 11h18. Motif: Ajout balises [code]

  2. #2
    jiherve

    Re : VHDL - Instruction sur plusieurs cycles d'horloges

    Bonjour,
    avec çà cela devrait le faire:
    Code:
    LIBRARY IEEE;
    USE IEEE.STD_LOGIC_1164.ALL;
    USE IEEE.STD_LOGIC_UNSIGNED.ALL;
    
    ENTITY counter IS
    PORT(
    clk_i : in std_logic;
    count : out std_logic_vector(7 DOWNTO 0)
    ) ;
    end counter;
    
    ARCHITECTURE rtl OF counter IS
    
    SIGNAL s_count : STD_LOGIC_VECTOR(10 DOWNTO 0);
    
    begin
    process (clk_i)
    begin
    if clk_i'event AND clk_i = '1' then
    s_count <= s_count + 1;
    end if;
    
    end process;
    count <= s_count(10 downto 3) ;
    end;
    JR
    l'électronique c'est pas du vaudou!

  3. #3
    invite4c606666

    Re : VHDL - Instruction sur plusieurs cycles d'horloges

    Oui ça marche sans problème je te remercie bien !
    Je ne connaissais pas cette astuce d'augmenter la taille de ton signal, c'est efficace.

    J'étais en train d'utiliser un signal clock qui se basait sur la clock d'origine, afin qu'un coup de la nouvelle horloge sur laquelle tu te bases, soit équivalente à plusieurs coups de l'horloge d'origine :

    LIBRARY IEEE;
    USE IEEE.STD_LOGIC_1164.ALL;
    USE IEEE.STD_LOGIC_UNSIGNED.ALL;

    ENTITY compteur IS
    PORT(
    clk_i : in STD_LOGIC;
    compt_sortie : out STD_LOGIC_VECTOR(7 DOWNTO 0)
    );
    end compteur;

    ARCHITECTURE rtl OF compteur IS

    signal clk_div : STD_LOGIC_VECTOR (2 downto 0);
    SIGNAL s_compt_sortie : STD_LOGIC_VECTOR(7 DOWNTO 0);

    begin
    process (clk_i)
    begin
    if (clk_i'Event and clk_i = '1') then
    clk_div <= clk_div + '1';
    end if;
    end process;

    process (clk_div(2))
    begin
    if (clk_div(2)'Event and clk_div(2) = '1') then
    s_compt_sortie <= s_compt_sortie+1;
    end if;
    end process;

    compt_sortie <= s_compt_sortie ;
    end;

    Mais ce n'est pas optimal et ne fait pas ce que je voudrais que ça fasse !
    Ton code est bien plus simple.

    Merci encore.

  4. #4
    jiherve

    Re : VHDL - Instruction sur plusieurs cycles d'horloges

    Re,
    Ton code pourrait être fonctionnel si tu générais un pulse durant un coup d'horloge clk_i tous les 8 coups et que ce pulse servait d'enable au compteur principal, mais en fait cela revient à rajouter 3 bascules au compteur.
    JR
    l'électronique c'est pas du vaudou!

  5. A voir en vidéo sur Futura
  6. #5
    invite4c606666

    Re : VHDL - Instruction sur plusieurs cycles d'horloges

    Oui, c'est pour ça que j'ai privilégié ton code, plus simple et plus fonctionnel pour mon application.

Discussions similaires

  1. Instruction concurrente en VHDL???
    Par invite387f72d1 dans le forum Électronique
    Réponses: 1
    Dernier message: 26/04/2010, 13h21
  2. instruction VHDL
    Par invite1af3caff dans le forum Électronique
    Réponses: 2
    Dernier message: 29/03/2010, 21h11
  3. convertir une instruction de verilog en vhdl
    Par invite8c6f844d dans le forum Électronique
    Réponses: 6
    Dernier message: 26/07/2009, 23h56
  4. VHDL : Liens entre plusieurs components
    Par invite18a7f966 dans le forum Électronique
    Réponses: 0
    Dernier message: 06/01/2008, 17h52
  5. Partage de déclaration entre plusieurs fichier VHDL
    Par WhiteBird dans le forum Électronique
    Réponses: 2
    Dernier message: 04/12/2006, 21h29
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...