Forum: FPGA, VHDL & Co. effizienter/kleiner, konfigurierbarer Frequenzteiler


von Roman (Gast)


Lesenswert?

Hallo zusammen,

ich möchte gerne meinen Systemtakt für Debug-Zwecke auf ein Pad umleiten 
und ihn damit messbar machen.

Dabei möchte ich gerne mit einem Vektor den Teiler einstellen können.

Ich hab es jetzt so umgesetzt:
1
  p_divide_sys_clk : PROCESS (NRES, CLK)
2
  BEGIN
3
    IF NRES = '0' THEN
4
      sys_clk_cnt    <= (OTHERS => '0');
5
      sys_clk_divide <= '0';
6
    ELSIF rising_edge(CLK) THEN
7
      sys_clk_cnt <= sys_clk_cnt + 1;
8
      CASE FREQ_DIVIDE IS
9
        WHEN   "11" => sys_clk_divide <= sys_clk_cnt(3); -- divide by 16
10
        WHEN   "10" => sys_clk_divide <= sys_clk_cnt(2); -- divide by  8
11
        WHEN   "01" => sys_clk_divide <= sys_clk_cnt(1); -- divide by  4
12
        WHEN OTHERS => sys_clk_divide <= sys_clk_cnt(0); -- divide by  2
13
      END CASE;
14
    END IF;
15
  END PROCESS;

sys_clk_divide wird dann an anderer Stelle auf das PAD geschaltet.

Gibt es noch eine andere Methode, das noch effizienter bzw. noch 
variabler zu beschreiben?

Vielen Dank!
Roman

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Roman schrieb:
> Gibt es noch eine andere Methode, das noch effizienter bzw. noch
> variabler zu beschreiben?
Definiere "effizient" und "variabel". Geht es dir nur um die "Anzahl der 
Zeichen im VHDL Quelltext", oder meinst du mit effizient den 
Ressourcenverbrauch? Falls ja: welche Ressource plagt dich am meisten?
Bedeutet "variabel" = "generisch" (universell), oder bedeutet variabel 
eher "flexibel im Hin- und Herrouten und Umschalten"?

von Luke.skywalker (Gast)


Lesenswert?

Hallo Roman,

lies bitte zunächst folgenden Artikel: 
[[http://www.mikrocontroller.net/articles/Taktung_FPGA/CPLD]]

Das was du mit deiner Schaltung generierst ist kein echter "Takt" und 
würde somit auch nicht über das interne Taktnetz des FPGAs geroutet 
werden. Das kann zu Verzögerungen in deinem "Taktsignal" führen und das 
Verhalten deiner Schaltung beeinflussen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Luke.skywalker schrieb:
> Das was du mit deiner Schaltung generierst ist kein echter "Takt" und
> würde somit auch nicht über das interne Taktnetz des FPGAs geroutet
> werden. Das kann zu Verzögerungen in deinem "Taktsignal" führen und das
> Verhalten deiner Schaltung beeinflussen.
Es soll m.E. gar kein Takt für die interne Verwendung erzeugt werden, 
sondern nur ein Teiler, der den durch Zweierpotenzen geteilten Takt an 
einem Pin ausgibt. Da ist nichts kritisch, weil keine Phasenbeziehung 
gefordert und kein Jitter definiert ist...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.