www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Frequenzhalbierer


Autor: Tom (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe einen Frequenzhalbierer programmiert, den ich dem Forum
respektive einer Diskussion nicht vorenthalten möchte....

Zwecks Kritik und Verbesserungsvorschläge wäre ich dankbar...!!
Die Ausgangsclock YCLK ist zudem zwecks einer nachfolgenden
Datenverarbeitung mit YCLK auf die Systemclock clk einsynchronisiert.

Gruß
Tom

Autor: Mockup (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hy kannste das:
   rising_XCLK_in <= (XCLK_in_tmp = '1') and (XCLK_in_sync = '0');
   if rising_XCLK_in then
nicht einfach als if schreiben.

if (XCLK_in_tmp = '1') and (XCLK_in_sync = '0') then
wäre meiner meinung einfacher zu verstehen und das signal
rising_XCLK_in entfällt.

den counter kannst du auch auf integer range 0 to 1 stellen, da du die
2 ja eh nicht benötigst.

du könntest das aber noch vereinfachen indem du schreibst

architecture Behavioral of XCLK_YCLK_Adaption is

 Signal XCLK_in_tmp : std_logic;
 Signal XCLK_in_sync : std_logic;
 signal yclk_out_tmp : std_logic;
begin

 clock_adaption : process(rst,clk)
 begin
  if (rst = '0') then
   YCLK_out_tmp <= '0';
  elsif (rising_edge(clk)) then
   XCLK_in_tmp <= XCLK_in;
   XCLK_in_sync <= XCLK_in_tmp;
      if (XCLK_in_tmp = '1') and (XCLK_in_sync = '0') then
         YCLK_out_tmp <= not yclk_out_tmp;
      end if;
  end if;
 end process clock_adaption;
yclk_out <= yclk_out_tmp;
end Behavioral;

mfg mockup

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

warum so kompliziert ? es geht auch einfacher und funktioniert
wunderbar:

process (reset, clk)
begin
if rising_edge(clk) then
     clk_half <= not clk_half
end if;
end process

Gruß Markus

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Mockup,

danke Deiner Vorschläge. Jepp, ist richtig, dass der Counter einen
Bereich von 0 bis 1 hat. Aber es scheint wohl mit der Anweisung

YCLK_out_tmp <= not YCLK_out_tmp

völlig überflüssig zu sein.
Nur die Ausgabe von YCLK_out müßte mE im Prozess erfolgen....

@ Markus: im Endeffekt geht Mockups Tip mit Deinem konform.....

Vielen Dank Euch beiden!!

Gruß
Tom

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.