[Ur] 26.6Mhz fra 80MHz.

P

pjyc

Guest
Hi there. Jeg har 80MHz uret på mit system. og vi har brug for at få 26.666Mhz fra 80MHz. (80MHz / 3 = 26.666Mhz) Nedenfor kildekoden er den del af 26.6Mhz ur generater. Vi har fået godt resultat ved simulator. men rigtige system var ikke godt. Er der nogen, der kan foreslå anyting at gøre ved det? tak.
Code:
 bibliotek IEEE, brug ieee.std_logic_1164.all, brug ieee.std_logic_unsigned.all; enhed clk26M er port (CLK: i std_logic; outclk: buffer std_logic); slutningen clk26M, arkitektur p1 af clk26M er signal tæller: std_logic_vector (2 downto 0); signal div2: std_logic; signal div3: std_logic; signal dlydiv3: std_logic; begynde - Opdelt 2 i processen (CLK) begynder if (clk'event og CLK = '1 '), så div2
 
prøv denne kode:) Bibliotek IEEE, brug ieee.std_logic_1164.all, brug ieee.std_logic_unsigned.all; enhed clk26M er port (CLK, reset: i std_logic; outclk: ud std_logic); slutningen clk26M, arkitektur p1 af clk26M er signal tæller : std_logic_vector (1 downto 0); signal CK1, ck1_dly: std_logic; begynde processen (reset, CLK) begynder, hvis reset = '0 'og derefter tæller '0'); CK1
 
Jeg fik ur problem! Ur interne signaler div2, div3 og dlydiv3 skal være i sync! Du har ikke tilføjet nulstillet til disse flops! at initialisere dem til nul! I simulering sådanne flops, der dont have nulstillet, skal tvinges til at tilfældige Vales. Prøv en simulering med
Code:
 signal div2: std_logic: = '1 '; signal div3: std_logic: = '0'; signal dlydiv3: std_logic: = '1 ';
Din kredsløb plejer arbejder enten i simulation! Her er den korrigerede kode!
Code:
 bibliotek IEEE, brug ieee.std_logic_1164.all, brug ieee.std_logic_unsigned.all; enhed clk26M er port (CLK: i std_logic; rst_n: i std_logic; outclk: buffer std_logic); slutningen clk26M, arkitektur p1 af clk26M er signal tæller: std_logic_vector (2 downto 0); signal div2: std_logic; signal div3: std_logic; signal dlydiv3: std_logic; begynde - Opdelt 2 i processen (CLK, rst_n) begynder if (rst_n = '0 '), så div2
 
Hej, måske prøve dette, jeg tror, det tager mindre plads og fungerer også ved højere clock frekvens. Hvis der er noget galt Lad mig vide ... Med venlig hilsen,
 
Ja! Circuit leveres af dBUGGER vil fungere korrekt uden reset! Men den fase forholdet mellem CLK og clk_out vil være tilfældig, hver gang du tænder for logik. En anden ulempe her er både posdege og neg kant flops er påkrævet!
 
Hvis du bruger Xilinx FPGA, den bedste måde er at bruge CLKDLL ... Kala
 
Tak alle. Jeg tjekkede, at dBUGGER er kredsløbet fungerer korrekt uden reset. Jeg har fået 26.88Mhz fra 80MHz på mit system. Tak meget.
 
hvis du er ligeglad intermittensen af uret ud, kan du bruge min kode
Code:
 //========================= =========================== / / Creat på 2005/9/7 / / Formål: Opdel System Clock ved N / / Input Clk, Out sætte DivOut / / Vi får posedge af DivOut for andre programmer / / Antag at kræve divisor er N = 3 //======================== ============================ modul PulseDiv (Clk, DivOut); input Clk, output DivOut; reg [01:00] DivCount; / / 2 ^ 2 = 4> 3 reg DivOut; / / Divider ouput parameter Divisor = 3; / / N = 3 altid @ (posedge Clk) DivOut
 

Welcome to EDABoard.com

Sponsor

Back
Top