------------------------------------------------------------------------------------------- --Prozess um mit Schaltern eine bestimmte Morsefrequenz / Wortgeschwindigkeit auszuwählen-- ------------------------------------------------------------------------------------------- clockUnit: PROCESS (reset, clk, choiceWPM) BEGIN --Auswahl über die Morsegeschwindigkeit mit 3 Geschwindigkeiten (5WPM = 15Hz, 13WPM = 33Hz, 20WPM = 51Hz) CASE choiceWPM IS WHEN "01" => CLK_PERIODE <= 50*10**6/39; --39Hz-Periode für 13WPM (13/5 * 15Hz = 39Hz) wpm6 <= "0110000"; -- "3" wpm7 <= "1111001"; -- "1" WHEN "10" => CLK_PERIODE <= 50*10**6/60; --60Hz-Periode für 20WPM (20/5 * 15Hz = 60Hz) wpm6 <= "1000000"; -- "0" wpm7 <= "0100100"; -- "2" WHEN OTHERS => CLK_PERIODE <= 50*10**6/15; --15Hz-Periode für 5WPM (66.666 ms - 200ms) (3 Perioden < 240 ms) (Standard-WPM) wpm6 <= "0010010"; -- "5" wpm7 <= "1000000"; -- "0" END CASE; --Generiert die Frequenz entsprechend der Auswahl der Morsegeschwindigkeit als asymmetrishes Signal IF reset='0' THEN cnt <= CLK_PERIODE; clockNC <= '0'; ELSIF clk'EVENT AND clk = '1' THEN IF cnt = 0 THEN clockNC <= '1'; cnt <= CLK_PERIODE; ELSE clockNC <= '0'; cnt <= cnt - 1; END IF; END IF; END PROCESS; END structure;