12,3 Mhz Frequenz

#677414
Lesenswert?

@ Edgard (Gast)

>Wie erzeuge ich mit VHDL ein Frequenz von 12,3 MHz mit ein Ozcillator
>von  50 MHz . 12,5 MHz geht schon aber 12,3 MHz ist für mich schwierig.

In VHDL eigentlich gar nicht. Ausserdem ist das Problem kniffeliger als 
du denkst. Einen Teilfaktor von 50/12,3=4,06504 macht man mal nicht so 
nebenbei. Kauf dir einen DDS IC dafür. Oder gleich den richtigen 
Oszillator.

MfG
Falk
Gast #677657
Lesenswert?

Das geht mit DDS und ein paar kleinen Modifikationen:

50/12,3 = 500/123

Dazu braucht man ein 10 Bit breites Register. Wenn Bit 9=0, dann werden 
beim nächsten Takt 123 addiert, wenn bit 9=1, dann werden 647 addiert. 
Die Ausgangsfrequenz von 12,3 MHz liegt dann an Bit 8 an, allerdings mit 
ziemlichem Jitter.

Gruß Jörg
#677861
Lesenswert?

vom Speed her würde ein XC9536 mit 15ns reichen (52,6MHz nach 
timing-report, alle Zellen im STD-Modus). Ob es auch wie gewünscht 
funktioniert, habe ich aber nicht getestet.
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
entity divtest is
7
-------------------------------------------------------------------------------
8
--- io
9
-------------------------------------------------------------------------------
10
port (
11
  inclk:          in std_logic;      
12
  outclk:         out std_logic);
13
  
14
end entity divtest;
15

16
architecture main of divtest is
17
-------------------------------------------------------------------------
18
--- internal signals
19
-------------------------------------------------------------------------
20
signal  counter:  std_logic_vector(9 downto 0);
21

22
begin
23
-------------------------------------------------------------------------
24
--- divider  
25
-------------------------------------------------------------------------
26
process (inclk) is
27
begin
28
  if (rising_edge(inclk)) then
29
      if counter(9)='1' then
30
    counter <= counter + 647;
31
      else
32
    counter <= counter + 123;
33
      end if;    
34
  end if;
35
end process;
36

37
outclk <= counter(8);
38
-------------------------------------------------------------------------
39
--- minimal configuration
40
-------------------------------------------------------------------------
41
end architecture main;
42

43
configuration main of mctest is
44
    for main
45
    end for;
46
end configuration main;

Gruß Jörg

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