Hallo, habe für ein Projekt einen einstellbaren Frequenzteiler geschrieben. Am Anfang hatte ich etwas Platzprobleme. Nach einigen GUTEN TIPPS von anderen Beiträgen hier im Forum bin ich mir am überlegen was man noch machen könnte um weniger Ressourcen und damit Strom zu verbraten (es handelt sich um ein Batteriegerät). Hier der Code:
1 | library IEEE; |
2 | use IEEE.STD_LOGIC_1164.ALL; |
3 | use IEEE.STD_LOGIC_ARITH.ALL; |
4 | use IEEE.STD_LOGIC_UNSIGNED.ALL; |
5 | |
6 | |
7 | entity counter is |
8 | Port ( CLOCK : in std_logic; |
9 | Teiler : in std_logic_vector(3 downto 0); |
10 | Takt : out std_logic); |
11 | end counter; |
12 | |
13 | architecture Behavioral of counter is |
14 | |
15 | |
16 | signal count_val : std_logic_vector(9 downto 0) := (others=>'0'); |
17 | signal teiler_faktor : std_logic_vector(9 downto 0) := (others=>'0'); |
18 | signal s_takt : std_logic := '0'; |
19 | |
20 | begin
|
21 | |
22 | process (Teiler) |
23 | begin
|
24 | case Teiler is |
25 | when "0001" => teiler_faktor <= "0110001111"; --50kHz |
26 | when "0010" => teiler_faktor <= "0011000111"; --100kHz |
27 | when "0011" => teiler_faktor <= "0001100011"; --200kHz |
28 | when "0100" => teiler_faktor <= "0000100111"; --500kHz |
29 | when "0101" => teiler_faktor <= "0000010011"; --1MHz |
30 | when "0110" => teiler_faktor <= "0000001001"; --2MHz |
31 | when "0111" => teiler_faktor <= "0000000011"; --5MHz |
32 | when "1000" => teiler_faktor <= "0000000001"; --10MHz |
33 | when others => teiler_faktor <= "0000000000"; --50kHz und default |
34 | end case; |
35 | end process; |
36 | |
37 | process (CLOCK) |
38 | begin
|
39 | if CLOCK='1' and CLOCK'event then |
40 | |
41 | if Teiler > "0000000000" then |
42 | |
43 | if count_val > "0000000000" then |
44 | count_val<= count_val-1; |
45 | else
|
46 | count_val <= teiler_faktor; |
47 | s_takt<= not s_takt; |
48 | end if; |
49 | end if; |
50 | end if; |
51 | |
52 | end process; |
53 | |
54 | Takt <= s_takt; |
55 | |
56 | End Behavioral; |
Für ein paar Vorschläge wäre ich euch dankbar. Gruß Mani PS: Ich habe mich seit langem mal wieder mit VDHL beschäftigt...nehmt mich deshalb nicht gleich auseinander :-D