Forum: FPGA, VHDL & Co. Ich brauche bitte 4 Clocks verschiedener Frequenz in VHDL bitte.


von peter (Gast)


Lesenswert?

Hallo, guten Tag.

Ich brauche bitte 4 Clock-Frequenzen für die Nutzung in VHDL bitte.

Hauptclock ist 48 MHz.

Davon brauche ich bitte 4 Frequenzen um mit dem neuen Board spielen zu 
können. Die Demoprogramme sind in Verilog, möchte aber gernen in VHDL 
weitermachen.
- 5 khz
- 2 mhz
- 1 mhz
- 40 mhz

Wer kann mir diese Clocks bitte in vhdl herstellen?

Diese 25 mhz hatte ich mal aus 50 mhz hergestellt zum spielen:
---------------
process (clk50_in)
begin
  if rising_edge(clk50_in) then
    clk25 <= not clk25;
  end if;
end process;
----------------

Danke.

Gruss

von ... (Gast)


Lesenswert?

du forderst nur ein paar Millihertz. ich denke nicht, dass das ein 
problem ist.  Einfach einen Zähler implementieren und gut.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

peter schrieb:
> Wer kann mir diese Clocks bitte in vhdl herstellen?
Lies dir mal das Thema "Clockmanager" in deinem FPGA Handbuch durch. 
Damit werden in FPGAs Takte gemacht.

Die 40 MHz bekommst du zudem mit deiner Art Takterzeugung (die nennt 
sich übrigens derived clocks) aus 48MHz nämlich nicht ohne extremem 
Jitter.

von dudn (Gast)


Lesenswert?

Jaja.
Über die Groß- und Kleinschreibung Scherze machen, aber selbst keine 
Ahnung davon.

von ./. (Gast)


Lesenswert?

ist da wieder der bierbach am werk.

von Torben K. (tokuhila)


Lesenswert?

Die Frequenzen (5/6, 1/24, 1/48, 1/9600) kannst du dir alle mit der 
ALTPLL-Megafunction erzeugen und dann in VHDL einbinden.

https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/ug/ug_altpll.pdf

von peter (Gast)


Lesenswert?

Ja danke, ich habe ein ALTPLL-Megafunction in Verilog:
1
// synopsys translate_off
2
`timescale 1 ps / 1 ps
3
// synopsys translate_on
4
module pll (
5
  inclk0,
6
  c0,
7
  c1,
8
  c2,
9
  c3);
10
11
  input    inclk0;
12
  output    c0;
13
  output    c1;
14
  output    c2;
15
  output    c3;
16
17
  wire [4:0] sub_wire0;
18
  wire [0:0] sub_wire7 = 1'h0;
19
  wire [2:2] sub_wire4 = sub_wire0[2:2];
20
  wire [0:0] sub_wire3 = sub_wire0[0:0];
21
  wire [3:3] sub_wire2 = sub_wire0[3:3];
22
  wire [1:1] sub_wire1 = sub_wire0[1:1];
23
  wire  c1 = sub_wire1;
24
  wire  c3 = sub_wire2;
25
  wire  c0 = sub_wire3;
26
  wire  c2 = sub_wire4;
27
  wire  sub_wire5 = inclk0;
28
  wire [1:0] sub_wire6 = {sub_wire7, sub_wire5};
29
....
30
....


So werden die Clocks in einem Verilogprogramm übernommen:
1
......
2
wire clk_5k;
3
wire clk2m;
4
wire clk1m;
5
  pll pll_inst
6
  (
7
    .inclk0  (CLK),
8
    .c0    (clk_5k),
9
    .c1    (clk2m),
10
    .c2    (clk1m),
11
    .c3    (clk40m_vga)
12
  );
13
......

Wie sieht das bitte in VHDL aus mit der Übernahme der Clocks das der 
Verilog-ALTPLL.
Ich weiß nicht wie man es umsetzen kann.

Danke.
Gruss

von Millimega (Gast)


Lesenswert?

dudn schrieb:
> Jaja.
> Über die Groß- und Kleinschreibung Scherze machen, aber selbst keine
> Ahnung davon.

Das hat mit Groß- und Kleinschreibung überhaupt nichts zu tun. Es geht 
nur darum, dass milli und Mega sehr unterschiedliche Größenordnungen 
haben.

von peter (Gast)


Angehängte Dateien:

Lesenswert?

------------------
Die Frequenzen (5/6, 1/24, 1/48, 1/9600) kannst du dir alle mit der
ALTPLL-Megafunction erzeugen und dann in VHDL einbinden.
------------------


Die Erstellung geht nicht, weil es nicht freigegeben ist.
Siehe Bild.

Danke.
Gruss

von P. K. (pek)


Lesenswert?

peter schrieb:
> Wie sieht das bitte in VHDL aus mit der Übernahme der Clocks das der
> Verilog-ALTPLL.
> Ich weiß nicht wie man es umsetzen kann.

Wenn Du Tante Google mit "tutorial altera alt_pll" fütterst, erhältst Du 
gleich als erstes drei brauchbare Links:

https://www.altera.com/literature/ug/ug_altpll.pdf
https://www.altera.com/support/support-resources/design-examples/design-software/quartus-ii/altpll.html
https://www.altera.com/literature/tt/tt_my_first_fpga.pdf

Ich an Deiner Stelle würd mal mit dem Dritten beginnen.

von Markus F. (mfro)


Lesenswert?

peter schrieb:
> ------------------
> Die Frequenzen (5/6, 1/24, 1/48, 1/9600) kannst du dir alle mit der
> ALTPLL-Megafunction erzeugen und dann in VHDL einbinden.
> ------------------
>
>
> Die Erstellung geht nicht, weil es nicht freigegeben ist.
> Siehe Bild.
>
> Danke.
> Gruss

Die Cyclone IV PLLs sind im MegaWizard (lustigerweise) unter I/O (und 
eben nicht unter PLL) zu finden. Dort sind sie dann auch nicht 
ausgegraut.

von Torben K. (tokuhila)


Lesenswert?

Sinnvoll ist natürlich auch im Wizard den richtige Chip auszuwählen. Du 
hast einen Cyclone IV E und keinen GX

von peter (Gast)


Lesenswert?

Ja danke für die Tipps.

Cyclone IV E habe ich eingestellt.

--------------------
Die Cyclone IV PLLs sind im MegaWizard (lustigerweise) unter I/O
--------------------

ja danke, habe ich jetzt auch entdeckt, nachdem ich mal alle angebotenen 
Reiter angeklickt habe.

Nun muss ich mal schauen, welches ich alles nach dem durchklicken im 
MegaWizard einstellen muss.
Ich möchte jetzt nur erstmal von 48Mhz die c0 auf 25 Mhz haben.

Gruss

von peter (Gast)


Lesenswert?

VGA 640x480 funktioniert jetzt mit 25Mhz und VGA mit 40Mhz läuft auch.
Beides mit dem MegaWizard erstellt von 48Mhz.

Danke.
Gruss

von peter (Gast)


Angehängte Dateien:

Lesenswert?

Die Grafik und Textdarstellung funktioniert jetzt präzise.
Mit dem MegaWizard eine neue Altpll ertellt von 48 Mhz auf 25.175 MHz.

Das Board ist sehr sauber in der Darstellung ohne flimmern oder Jitter 
usw.

Der Memoryverbrauch liegt bei der Grafikdarstellung bei 66%.

Danke für die Hilfe.

Gruss

von Worstie F. (worstcase_ffm)


Lesenswert?

Hi,
schaut doch gut aus. Ich bin gerade dran über VGA endlich auch mal Text 
und Grafiken auf meinen Monitor zu bringen und nicht nur einzelne 
Linien. Dauert wohl noch ein wenig.
Hast Du für die Text-Ausgabe Beispielcode, an dem ich mich orientieren 
könnte?
Viele Grüße,
Steve

von Peter B. (funkheld)


Angehängte Dateien:

Lesenswert?

Wenn du ein anderes Board hast muss du die Pins ändern usw.
Das RAM ist 2400 Byte gross und beinhaltet den Bildschirm 80x30 als 
Asciizeichen. Das Rom beinhaltet 128 Zeichen (1024 Byte) , 1 Zeichen 8 
Byte hoch.  Die Bytes von den Zeichen sind als Nibbles abgespeichert.
Ich habe auch mal einen C64-Zeichensatz reingeladen.  Da hast du freie 
Wahl.

Gruss

von Worstie F. (worstcase_ffm)


Lesenswert?

Vielen Dank,
Ich hatte es in Deinem anderen Beitrag schon gefunden. Werde ich mir 
morgen gleich zu Gemüte führen.
Die Pin-Zuordnung für mein DE0-Nano sollte nicht so schwer sein.
Viele Grüße, Steve

von FPGA-Entwickler de Luxe (Gast)


Lesenswert?

Was du da benötigst, sind "ENABLES" und keine "Clocks"!

von peter (Gast)


Lesenswert?

Funktioniert mit Clocks und Enables...

Gruss

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

peter schrieb:
> Funktioniert mit Clocks und Enables...
In diesem Design wird einfach alles mit 25MHz berechnet, und dann kurz 
vor der Ausgabe auf 48MHz registriert. Dieser letzte Schritt ist unnötig 
und gefährlich. Er erhöht die Taktfrequenz dieses einen Pfades auf 
virtuelle 600MHz. Da dürfte die Toolchain ganz hübsch motzen...

Es wäre richtig, die 48MHz mit der PLL auf 25MHz umzuwandeln und dann 
das ganze Design auf diesen 25MHz laufen zu lassen. Das wäre zudem auch 
mit einer kleinen Änderung ohne funktionelle Änderung möglich: in diesem 
"Ausgabeprozess" muss einfach statt 48 die Zahl 25 stehen:
1
process(clk48)
2
begin
3
  if rising_edge(clk48) then
4
    if vid_enable ='1' and pixel='1' then
5
    ....

: Bearbeitet durch Moderator
von Hilfegeber (Gast)


Lesenswert?

Was sind denn das da für lustige Diplome im Hintergrund des rechten 
Bildes?

von peter (Gast)


Lesenswert?

Ja , was für Diplome.....erzähl ich gerne.

Vor 3 Jahren sind meine Frau und ich mit 65 jahren den Jakobsweg 
gegangen.
von Saint-Jean-Pied-de-Port nach Santiago de Compostela. Ca 830 Km in 5 
Wochen, Nur aus dem Rucksack gelebt. Anhand von Herbergsnachweisen 
bekommst du dann so eine Urkunde in Santiago de Compostela von der 
Kirche.

Hat Spaß gemacht. In 2 Jahren wenn wir 70zig sind wollen wir es noch 
einmal wagen.


Gruss

von Worstie F. (worstcase_ffm)


Lesenswert?

Respekt! Habe auch schonmal daran gedacht, es aber immer wieder 
verworfen. Dann vielleicht in 25 Jahren mal ;-)

von J. S. (engineer) Benutzerseite


Lesenswert?

Peter B. schrieb:
> Wenn du ein anderes Board hast muss du die Pins ändern usw.
> Das RAM ist 2400 Byte gross und beinhaltet den Bildschirm 80x30 als
> Asciizeichen. Das Rom beinhaltet 128 Zeichen (1024 Byte) , 1 Zeichen 8
> Byte hoch.  Die Bytes von den Zeichen sind als Nibbles abgespeichert.
> Ich habe auch mal einen C64-Zeichensatz reingeladen.

Wird so langsam ein Retroprojekt, was? :-D

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.