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
du forderst nur ein paar Millihertz. ich denke nicht, dass das ein problem ist. Einfach einen Zähler implementieren und gut.
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.
Jaja. Über die Groß- und Kleinschreibung Scherze machen, aber selbst keine Ahnung davon.
ist da wieder der bierbach am werk.
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
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
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.
------------------ 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
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.
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.
Sinnvoll ist natürlich auch im Wizard den richtige Chip auszuwählen. Du hast einen Cyclone IV E und keinen GX
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
VGA 640x480 funktioniert jetzt mit 25Mhz und VGA mit 40Mhz läuft auch. Beides mit dem MegaWizard erstellt von 48Mhz. Danke. Gruss
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
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
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
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
Was du da benötigst, sind "ENABLES" und keine "Clocks"!
Funktioniert mit Clocks und Enables... Gruss
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
Was sind denn das da für lustige Diplome im Hintergrund des rechten Bildes?
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
Respekt! Habe auch schonmal daran gedacht, es aber immer wieder verworfen. Dann vielleicht in 25 Jahren mal ;-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.