Forum: FPGA, VHDL & Co. Frequenzhalbierer


von Tom (Gast)


Angehängte Dateien:

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

von Mockup (Gast)


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

von Markus (Gast)


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

von Tom (Gast)


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

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.