[Horloge] 26.6Mhz de 80MHz.

P

pjyc

Guest
HI THERE. J'ai 80MHz d'horloge sur mon système. et nous avons besoin pour obtenir 26.666Mhz de 80MHz. (80MHz / 3 = 26.666Mhz) Ci-dessous le code source est la partie de l'horloge generater 26.6Mhz. Nous avons bon résultat en simulateur. mais véritable système n'était pas bon. Yat-il quelqu'un qui peut suggérer anyting faire à ce sujet? merci.
Code:
 bibliothèque IEEE; ieee.std_logic_1164.all utilisation; ieee.std_logic_unsigned.all utilisation; clk26M entité est port (clk: en std_logic; outclk: tampon std_logic); clk26M fin; p1 architecture de clk26M signal de comptage est: std_logic_vector (2 downto 0); signal de div2: std_logic; signal de div3: std_logic; signal de dlydiv3: std_logic; commencer - Divisé deux processus (CLK) commencer if (clk'event et CLK = '1 ') puis div2
 
essayez ce code:) Bibliothèque IEEE; ieee.std_logic_1164.all utilisation; ieee.std_logic_unsigned.all utilisation; clk26M entité est port (clk, reset: en std_logic; outclk: hors std_logic); clk26M fin; p1 architecture de clk26M est de compter le signal : std_logic_vector (1 downto 0); signal CK1, ck1_dly: std_logic; entamer le processus (reset, CLK) commencer si reset = '0 'alors compter '0'); CK1
 
J'ai problème ur! Ur signaux internes div2, div3 et dlydiv3 doivent être synchronisés! Vous n'avez pas ajouté de réinitialisation de ces flops! pour les initialiser à zéro! En simulation, tels flops qui n'avez pas réinitialisé, doit être forcé à vallons aléatoire. Essayez une simulation avec
Code:
 du signal div2: std_logic: = '1 '; signal de div3: std_logic: = '0'; signal de dlydiv3: std_logic: = '1 ';
Votre circuit l'habitude fonctionne soit en matière de simulation! Voici le code corrigé!
Code:
 bibliothèque IEEE; ieee.std_logic_1164.all utilisation; ieee.std_logic_unsigned.all utilisation; clk26M entité est port (clk: en std_logic; rst_n: en std_logic; outclk: tampon std_logic); clk26M fin; p1 architecture de clk26M est le signal count: std_logic_vector (2 downto 0); signal de div2: std_logic; signal de div3: std_logic; signal de dlydiv3: std_logic; commencer - Divisé deux processus (clk, rst_n) commencer if (rst_n = '0 ') puis div2
 
Salut, peut-être essayer ceci, je pense que cela prend moins d'espace et travaille également à la fréquence d'horloge plus élevée. Si quelque chose de mal S'il vous plaît laissez-moi savoir ... Cordialement,
 
Oui! Circuit fournis par dBUGGER fonctionnera correctement sans remise à zéro! Mais la relation de phase entre CLK et clk_out sera aléatoire chaque fois que vous mettez sur la logique. Un autre inconvénient ici est à la fois posdege et NEG bord flops sont nécessaires!
 
Si vous utilisez FPGA Xilinx, le meilleur moyen est d'utiliser CLKDLL ... kala
 
Merci à tous. J'ai vérifié ce circuit dBUGGER travaille correctement sans réinitialiser. J'ai 26.88Mhz de 80MHz sur mon système. Merci beaucoup.
 
si vous ne ne se soucient pas du cycle de l'horloge sur, vous pouvez utiliser mon code
Code:
 //========================= =========================== / / Creat le 07/09/2005 / / Objectif: System Clock Diviser par N / / entrée CLK, Out mis DivOut / / On obtient le posedge des DivOut pour d'autres applications / / Supposons que le besoin de diviseur est N = 3 //======================== ============================ module de PulseDiv (CLK, DivOut); entrée CLK; DivOut sortie; reg [01:00] DivCount; / / 2 ^ 2 = 4> 3 reg DivOut; / / Diviseur ouput paramètre Diviseur = 3; / / N = 3 toujours @ (posedge Clk) DivOut
 

Welcome to EDABoard.com

Sponsor

Back
Top