Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Code VHDL diviseur de frequence



  1. #1
    soumati23

    Unhappy Code VHDL diviseur de frequence

    Bonsoir
    Pouvez vous m'aider à comprendre ce code
    ( il s'agit normalement d'un diviseur de fréquence et d'un compteur mis en cascade)
    mais j'ai pas bien saisi les différentes parties du code

    merci d'avance

    Code:
    architecture Behavioral of COMPTEUR is
    signal count :  STD_LOGIC_VECTOR (7 downto 0):= "00000000";
    signal clk_div : STD_LOGIC_VECTOR (25 downto 0) ;
    begin
    
    DIV : process (CLKIN) 
    begin 
    if rising_edge (CLKIN) then 
    clk_div <= clk_div+1;
    end if ;
    end process ;
    
    counter: process (clk_div) 
    begin 
    	 if rising_edge (clk_div(25)) 
    		then count <= count+1;
    		end if;
    
    	end process;
    	
    	
    		s<=count;
    		
    		
    
    end Behavioral;

    -----

    Dernière modification par soumati23 ; 03/05/2014 à 22h29.

  2. Publicité
  3. #2
    Antoane

    Re : Code VHDL diviseur de frequence

    Bonjour et bienvenue !

    Comme dans tout bloc VHDL qui se respecte, on trouve une déclaration des signaux :
    Code:
    signal count :  STD_LOGIC_VECTOR (7 downto 0):= "00000000";
    signal clk_div : STD_LOGIC_VECTOR (25 downto 0) ;
    Puis l'architecture du truc en elle-même, à commencer par un diviseur de fréquence par deux :
    Code:
    DIV : process (CLKIN) 
    begin 
    if rising_edge (CLKIN) then 
    clk_div <= clk_div+1;
    end if ;
    end process ;
    Le fonctionnement est simple, trace les chronogrammes pour comprendre : une entrée d'horloge et les deux ou trois bits de poids faible de clk_div pour comprendre.
    puis un compteur :
    Code:
    counter: process (clk_div) 
    begin 
    	 if rising_edge (clk_div(25)) 
    		then count <= count+1;
    		end if;
    
    	end process;
    
    	
    		s<=count;
    clock_div(25) renvoie le 26e bit de clock_div


    et un morceau asynchrone, écrit en dehors d'un process :
    Code:
    		s<=count;

    Il s'agit ici d'une description hyper-basique, digne du 1er cours de FPGA_101. y a-t-il un point précis qui te bloque ?
    Dernière modification par Antoane ; 04/05/2014 à 09h19.
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  4. #3
    jiherve

    Re : Code VHDL diviseur de frequence

    Bonjour,
    Juste un truc à ajouter : très mauvais exemple d'utilisation d'un diviseur de fréquence car au final la cible ne comporte qu'un nombre d'arbre d'horloge limité et ici on en bouffe 2 (CLKIN, clk-div(25)) alors qu'un seul suffirait(CLKIN) il eut fallu générer un signal de validation lorsque clk_div passe par une valeur déterminée (tout à 0 ou tout à 1 c'est quasi gratuit dans le FPGA car c'est le circuit généralement dédié de borrow/carry) par ailleurs le résultat est un design non synchrone ce qui par expérience conduit inévitablement à la catastrophe.
    JR
    l'électronique c'est pas du vaudou!

  5. #4
    soumati23

    Re : Code VHDL diviseur de frequence

    je vous remercie , juste une question , pourquoi a t on choisit 25 bits?

  6. #5
    soumati23

    Re : Code VHDL diviseur de frequence

    je vous remercie , juste une question , pourquoi a t on choisit 25 bits?

  7. A voir en vidéo sur Futura
  8. #6
    Antoane

    Re : Code VHDL diviseur de frequence

    On a choisi 26 bit (de 0 à 25) pour pouvoir diviser par 2^27 (division par 2^26 suivie d'une division par 2 via le count).
    Il y a peut-être aussi une raison liée à la structure interne du FPGA utilisé.
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  9. Publicité
  10. #7
    jiherve

    Re : Code VHDL diviseur de frequence

    Re,
    ben çà depend de la fréquence d'horloge CLKIN et de l'usage que l'on compte faire du compteur, mais cela peut être aussi arbitraire car c'est un exercice.
    JR
    l'électronique c'est pas du vaudou!

Sur le même thème :

Discussions similaires

  1. diviseur de frequence par 50
    Par TaRiKq dans le forum Électronique
    Réponses: 6
    Dernier message: 27/06/2011, 13h59
  2. Diviseur de fréquence VHDL
    Par speedfire12 dans le forum Électronique
    Réponses: 3
    Dernier message: 10/05/2010, 15h17
  3. Diviseur de fréquence
    Par doukidoukii dans le forum Électronique
    Réponses: 3
    Dernier message: 13/12/2008, 19h51
  4. diviseur de fréquence par 3
    Par sheba18 dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 09/06/2008, 19h16
  5. Diviseur de fréquence !
    Par Xav57 dans le forum Électronique
    Réponses: 8
    Dernier message: 22/03/2007, 16h26