Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
689 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  [VHDL] Compréhension d'un code

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VHDL] Compréhension d'un code

n°1247377
canigou4
siteman ...
Posté le 17-11-2005 à 10:10:54  profilanswer
 

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
mood
Publicité
Posté le 17-11-2005 à 10:10:54  profilanswer
 

n°1247758
rnoizet
Posté le 17-11-2005 à 16:55:09  profilanswer
 

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
n°1249409
canigou4
siteman ...
Posté le 20-11-2005 à 18:19:33  profilanswer
 

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

n°1250354
rnoizet
Posté le 21-11-2005 à 22:38:29  profilanswer
 

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...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  [VHDL] Compréhension d'un code

 

Sujets relatifs
probléme compréhension ligne Php pour categorie?Afficher un caractere d'aprés son code ASCII
imagejpeg(); J'veux les pixels...pas le code !changer le PATH dans le code
lecture codequ'est ce que fait ce code ?
super débutante lecteur code barreerreur dans code
inserer du code grace a jsCode source Galerie photos fonctionnelle
Plus de sujets relatifs à : [VHDL] Compréhension d'un code


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR