[Ρολόι] 26.6Mhz από 80Mhz.

P

pjyc

Guest
Γεια σου. Έχω 80Mhz ρολόι στο σύστημά μου. και είναι ανάγκη να δώσουμε 26.666Mhz από 80Mhz. (80Mhz / 3 = 26.666Mhz) Κάτω από τον πηγαίο κώδικα είναι το μέρος του 26.6Mhz generater ρολογιού. Έχουμε καλό αποτέλεσμα από τον προσομοιωτή. αλλά πραγματικό σύστημα δεν ήταν καλό. Είναι κανείς που μπορεί να εισηγηθεί anyting να κάνουμε γι 'αυτό εκεί; ευχαριστίες.
Code:
 IEEE βιβλιοθήκη? Ieee.std_logic_1164.all χρήση? Ieee.std_logic_unsigned.all χρήση? Clk26M οντότητα λιμάνι (CLK: σε std_logic? Outclk: buffer std_logic)? Clk26M τέλος? P1 αρχιτεκτονική του clk26M είναι σήμα μετράνε: std_logic_vector (2 downto 0)? σήμα DIV2: std_logic? σήμα DIV3: std_logic? σήμα dlydiv3: std_logic? αρχίσει - Divided 2 διαδικασία (CLK) αρχίσουν εάν (clk'event και CLK = '1 '), τότε DIV2
 
δοκιμάστε αυτόν τον κώδικα:) Βιβλιοθήκη IEEE? ieee.std_logic_1164.all χρήση? ieee.std_logic_unsigned.all χρήση? clk26M οντότητα λιμάνι (CLK, επαναφορά: σε std_logic? outclk: από std_logic)? clk26M τέλος? p1 αρχιτεκτονική του clk26M είναι να μετρήσουμε το σήμα : std_logic_vector (1 downto 0)? σήμα ck1, ck1_dly: std_logic? ξεκινήσει διαδικασία (επαναφορά, CLK) αρχίσουν εάν reset = '0 'τότε μετράνε '0')? ck1
 
Πήρα ur πρόβλημα! Ur εσωτερικά σήματα DIV2, DIV3 και dlydiv3 πρέπει να είναι σε συγχρονισμό! Δεν έχετε προσθέσει επαναφορά σε αυτές τις flops! να προετοιμάσει τους στο μηδέν! Στην προσομοίωση αυτή flops που dont έχει επαναφορά, πρέπει να υποχρεωθεί να τυχαία Vales. Δοκιμάστε μια προσομοίωση με
Code:
 σήμα DIV2: std_logic: = '1 '? Σήμα DIV3: std_logic: = '0'? Σήμα dlydiv3: std_logic: = '1 '?
κύκλωμα σας δεν θα λειτουργεί είτε σε προσομοίωση! Αυτή είναι η διορθωμένη κωδικό!
Code:
 IEEE βιβλιοθήκη? Ieee.std_logic_1164.all χρήση? Ieee.std_logic_unsigned.all χρήση? Clk26M οντότητα λιμάνι (CLK: σε std_logic? Rst_n: σε std_logic? Outclk: buffer std_logic)? Clk26M τέλος? P1 αρχιτεκτονική του clk26M είναι σήμα καταμέτρηση: std_logic_vector (2 downto 0)? σήμα DIV2: std_logic? σήμα DIV3: std_logic? σήμα dlydiv3: std_logic? αρχίσει - Divided 2 διαδικασία (CLK, rst_n) αρχίσουν εάν (rst_n = '0 ') τότε DIV2
 
Γεια σας, δοκιμάστε ίσως αυτό, νομίζω ότι αυτό διαρκεί λιγότερο χώρο και επίσης να λειτουργεί σε υψηλότερη συχνότητα ρολογιού. Αν κάτι λάθος Παρακαλώ επιτρέψτε μου να ξέρω ... Best Regards,
 
Ναι! Κύκλωμα που παρέχονται από dBUGGER θα λειτουργήσει σωστά, χωρίς επαναφορά! Αλλά η σχέση φάσης μεταξύ CLK και clk_out θα είναι τυχαία κάθε φορά που ενεργοποιείτε τη λογική. Ένα άλλο μειονέκτημα εδώ είναι τόσο posdege και neg άκρη flops απαιτούνται!
 
Εάν χρησιμοποιείτε Xilinx FPGA, ο καλύτερος τρόπος είναι να χρησιμοποιήσετε CLKDLL ... kala
 
Ευχαριστώ όλους. Έλεγξα αυτό το κύκλωμα dBUGGER δουλεύει σωστά, χωρίς επαναφορά. Έχω 26.88Mhz από 80Mhz στο σύστημά μου. Σας ευχαριστώ πολύ.
 
Αν δεν με νοιάζει το καθήκον του κύκλου του ρολογιού έξω, μπορείτε να χρησιμοποιήσετε τον κωδικό μου
Code:
 //========================= =========================== / / Δημιουργήθηκε στις 09/07/2005 / / Σκοπός: Διαχωρισμός Ρολόι Συστήματος από τη Ν / / είσοδο του CLK, Από θέσει DivOut / / Παίρνουμε το posedge των DivOut για άλλη εφαρμογή / / Ας υποθέσουμε ότι το απαιτούν διαιρέτης είναι N = 3 //======================== ============================ module PulseDiv (Clk, DivOut)? είσοδος Clk? DivOut εξόδου? reg [1:00] DivCount? / / 2 ^ 2 = 4> 3 reg DivOut? / / Διαχωριστικό φωτεινότητά παράμετρο Divisor = 3? / / N = 3 πάντα @ (posedge Clk) DivOut
 

Welcome to EDABoard.com

Sponsor

Back
Top