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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.