[VHDL] Compréhension d'un code

Compréhension d'un code [VHDL] - Divers - Programmation

Marsh Posté le 17-11-2005 à 10:10:54    

Bonjour,
 
je travaille sur un diviseur de fréquence en vhdl, récupéré d'un td en cours, cependant je comprends pas totalement le fonctionnement
 

Code :
  1. library ieee;
  2. use ieee.std_logic_1164.all;
  3. use ieee.std_logic_arith.all;
  4. entity DivisionFrequence is
  5. port(InputClk : in std_logic; OutputClk : buffer std_logic);
  6. end DivisionFrequence;
  7. architecture ArchitectureDivisionFrequence of DivisionFrequence is
  8. begin
  9.  process(InputClk)
  10.  variable n: integer range 0 to 10000000;
  11.  begin
  12.    if(InputClk 'event and InputClk='1')
  13.    then
  14.      n:=n+1;
  15.      if(n=0)
  16.      then OutputClk <= NOT OutputClk;
  17.      end if;
  18.    end if;
  19.  end process;
  20. end ArchitectureDivisionFrequence;


 
si vous pouviez m'aider en détaillant le code,
 
(avec ce code, j'obtient 1Hz en sortie environ, mais c'est par le test, je suis pas sur, c'est pour ca que j'aimerais comprendre complétement le code pour pouvoir mettre la frequence de sortie a ce que je veux)
 
merci beaucoup d'avance  :jap:


Message édité par canigou4 le 17-11-2005 à 10:12:04
Reply

Marsh Posté le 17-11-2005 à 10:10:54   

Reply

Marsh Posté le 17-11-2005 à 16:55:09    

Code :
  1. process(InputClk) // Le code suivant sera exécuté à chaque fois que l'horloge InputClk varie
  2. variable n: integer range 0 to 10000000; // Une variable, j'imagine qu'on a 10000000 + 1 = 0
  3. begin
  4.         if(InputClk 'event and InputClk='1') then // Si l'horloge varie et qu'elle vaut 1 (i.e. un front montant)
  5.              n:=n+1; // Incrémentation de n
  6.              if(n=0) then
  7.                   OutputClk <= NOT OutputClk; // La sortie est inversée si n = 0 (donc toutes les 10000000 périodes de l'horloge d'entrée)
  8.              end if;
  9.         end if;
  10. end process;


 
Il y a plus propre comme manière de faire un diviseur de fréquence, mais bon...
Donc en gros t'as frequenceEnSortie = frequenceEnEntree / (valeurMaxDeN * 2), et dans ton cas une 20 MHz en entrée et 1 Hz en sortie.


Message édité par rnoizet le 17-11-2005 à 17:01:21
Reply

Marsh Posté le 20-11-2005 à 18:19:33    

merci beaucoup pour ta reponse,
 
tu as des codes pour faire un diviseur de frequence qui sont mieux ?

Reply

Marsh Posté le 21-11-2005 à 22:38:29    

Euh non ; ca fait longtemps que j'en ai pas fait.
Je voulais dire que la maniere de faire n'est pas tres propre SELON MOI (utiliser la retenue pour revenir a zero), mais bon, si ca marche...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed