Frequenzhalbierer

Gast #297441
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
Angehängte Dateien:
Gast #297442
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
Gast #297444
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren