Vermutlich fehlen mir hier noch Grundlagen... ich habe ein Board mit einem Cyclone II (EP2C8), sowie JTAG-Schnittstelle, einem EPCS4 dran, sowie externem Flash und SD-RAM. Wie wird nun aus dem FPGA eine Nios II CPU? Indem er die VHDL Anweisungen aus dem Serial-Config-Flash EPCS4 lädt? Und wie erzeugt man diesen Inhalt? Gibt es dafür fertige Images zum Download welche man dann nur in den config flash programmiert? In dem EPCS4 ist bereits Inhalt, aber vermutlich kann man damit so nichts anfangen?
> fehlen mir hier noch Grundlagen Besorg dir erstmal mal Quartus. Dann geht das mit dem NIOS2 fast so wie Brezel backen. 1. mit QSYS eine CPU und die noetigen Komponenten erzeugen 2. mit QSYS das System generieren 3. das System mit Quartus synthetisieren und 4. per JTAG in den FPGA uebertragen 5. BSP (aka Treiber) erzeugen 6. NIOS2/NIOS2-BSP Projekt verwursten Ist doch einfach, oder?
Du brauchst ein Quartus13. aus Quartus startest du Qsys, damit klickst du deinen Prozessor zusammen, dann noch ein paar tools und das ganze steckt im FPGA. Ambesten du suchst dir ein passendes Tutorial und hackst das duch., aufpassen das du kein altes mit dem SOPC-Builder erwischt. Beuer als Quartus von 2013 darf es aber auch nicht sein, weil die kein CycII mehr können. https://static5.arrow.com/pdfs/2013/3/18/4/31/50/153/arw_/manual/bemicro_sdk_embedded_system_hw_lab_qsys_v12_1.pdf
Olli Z. schrieb: > Indem er die VHDL Anweisungen aus dem Serial-Config-Flash EPCS4 lädt? Zudem solltest du dir die Grundlagen von FPGAs und uC aneignen, damit du so halbwegs verstehst, was du so machen willst. Deine obige Frage kann man nur mit "falsch" beantworten. Ein FPGA führt keine Anweisungen aus.
> Ein FPGA führt keine Anweisungen aus. Natuerlich kann ein FPGA auch Anweisungen ausfuehren. Wenn er passend verdrahtet ist...
D00fi schrieb: >> Ein FPGA führt keine Anweisungen aus. > > Natuerlich kann ein FPGA auch Anweisungen ausfuehren. > Wenn er passend verdrahtet ist... Aucxh dann wird er nicht wie man aus den Phanatasterein des TO heraushören kann, VHDL-Anweisungen vom Firmware-ROM laden, decodieren und Ausführen.
> Aucxh dann wird er nicht wie man aus den Phanatasterein des TO > heraushören kann, VHDL-Anweisungen vom Firmware-ROM laden, decodieren > und Ausführen. Ja, schade eigentlich :-). So ein VHDL-Interpreter im FPGA haette schon was.
D00fi schrieb: >> Aucxh dann wird er nicht wie man aus den Phanatasterein des TO >> heraushören kann, VHDL-Anweisungen vom Firmware-ROM laden, decodieren >> und Ausführen. > > Ja, schade eigentlich :-). > So ein VHDL-Interpreter im FPGA haette schon was. Jajaja, was Nerds so cool finden: https://www.chip.de/video/Die-besten-Wecker-fuer-Nerds-Video_64655726.html https://www.giga.de/extra/usb/gallery/15-sinnlose-tech-innovationen-die-verwirrung-stiften/ https://www.watson.ch/spass/japan/680451889-19-verrueckte-erfindungen-auf-die-nur-japaner-kommen-konnten
> Jajaja, was Nerds so cool finden Ich hab hier einen Casio PB-2000C. Der kann immerhin C interpretieren. Inklusive structs, unions und gotos! Die Links habe ich uebrigens ignoriert. Aber womoeglich koennte man Hardware auch stackorientiert beschreiben und ein Forthentwickler baut daraus dann mal ein FPGA-Forth. Wo die Forthworte als Seiteneffekt quasi Hardware instanziieren. Aber die Geheimniskraemerei der FPGA-Macher wird das wohl nachhalitg hintertreiben.
D00fi schrieb: >> fehlen mir hier noch Grundlagen > Besorg dir erstmal mal Quartus. > Dann geht das mit dem NIOS2 fast so wie Brezel backen. So mancher angehende Brezelbäcker hat sich trotzdem böse die Finger verbrannt, weil er keinerlei Ahnung zu den zum Brezelbacken verwendeten Werkzeugen hatte... Olli Z. schrieb: > Wie wird nun aus dem FPGA eine Nios II CPU? Indem das FPGA intern so verdrahtet wird, wie eine Nios II CPU. > Indem er die VHDL Anweisungen aus dem Serial-Config-Flash EPCS4 lädt? Dazu lädt sich das FPGA einen Config-Bitstrom aus einem angeschlossenen Flash-Speicher. Oder es wird mit einem solchen Bitstrom von aussen (z.B. von einem µC) konfiguriert. > Und wie erzeugt man diesen Inhalt? Es gibt irgendwo eine Hardwarebeschreibung, die dann mit den üblichen Tools der Toolchain über einige Schritte in diesen Bitstrom umgeformt werden. > Gibt es dafür fertige Images zum > Download welche man dann nur in den config flash programmiert? Man klickt sich so einen Prozessor zusammen, und der wird dann als "Soft-Core" in das eigene HDL-Design eingebunden und zum Bitstrom umgeformt. Du solltest dir also unbedingt die Toolchain und ihre Werkzeuge anschauen und verstehen.
Josef G. (bome) schrieb: > C. A. Rotwang schrieb: >> Du brauchst ein Quartus13. > > 13.0 SP1. Und nicht 13.1. Ja. Das ist zwar nicht so alt, aber für heutige intel FPGA genügt die 13 nicht. Du wirst also in Zukunft mehrerer Versionen nebeneinander pflegen müßen, denen man nachsagt, das sie sich u.U. gegenseitig die Pfade verbiegen. Also wenn es nicht unbedingt CycII sein muß, würde ich den CycII in die Rente schicken und durch einen moderneren Max10 oder Cyc10LP ersetzen, der auch von der neuen kostenfreien Quartus lite unterstützt wird. https://fpgasoftware.intel.com/devices/ https://fpgasoftware.intel.com/13.0sp1/?edition=web
> würde ich den CycII in die Rente schicken
Es ist nichts schlechtes am Cyclone II.
Ein aktueller Max10 10M08 hat etwa genauso viele LEs wie der EP2C8.
Von Rente kann also gar keine Rede sein.
Und Quartus 13.0SP1 laeuft recht problemlos unter Win10 x64.
D00fi schrieb: >> Ein FPGA führt keine Anweisungen aus. > > Natuerlich kann ein FPGA auch Anweisungen ausfuehren. > Wenn er passend verdrahtet ist... Das ist wieder die typische Missinterpretation der Funktion von Hardware, verknüpft mit schlechter Sprache und unzureichender Darstellung. >Wie wird aus einem Cyclone II FPGA eine Nios II CPU? Indem man sie reinlädt. D00fi schrieb: > Es ist nichts schlechtes am Cyclone II. Die Frage ist, ob man ihn braucht, oder nicht. Alte FPGAs sind ja auch noch 5V kompatibel. Damit baut heute niemand mehr. Dass die neuen Versionen die alten Chips nicht unterstützen, ist ein Witz! Wie soll man aktualisierte Cores in einen Chip bekommen? Vom Spartan 6 weiß ich, dass manche designer aus neueren Versionen von Vivado Netzlisten exportieren, um sie dann in die ISE zu quetschen. Offenbar denken Hersteller nicht daran, dass es Firmen gibt, die FPGAs genau so nutzen, wie sie gedacht waren, nämlich als im Feld updatebar. Viele haben den Spartan 6 in ihren Geräten verbaut und müsssen Funktionen nachrüsten, können es aber nicht so einfach, weil sie nicht 5000 Platinen in Altgeräten ersetzen können, um einen Spartan 7 einzubauen, zumal der auch nicht alles abdeckt, wie ich lernen musste. FPGAs verkommen so zu OTP-Chips, die man zur Compilezeit konfiguriert und nachher nicht mehr anfassen kann.
Hallo Lothar, ich hatte die Hoffnung auf einer sinnvollen Antwort nach all dem Schwachsinn davor schon aufgegeben. Daher vielen Dank! :-) Lothar M. schrieb: >> Wie wird nun aus dem FPGA eine Nios II CPU? > Indem das FPGA intern so verdrahtet wird, wie eine Nios II CPU. Also der FPGA "startet", erkennt dann das er sich seine Config vom externen Config-Flash ziehen soll, macht das, stellt sich entsprechend ein und stellt dann eine Nios II CPU dar, richtig? Und dann? Fängt die CPU an wie eine Hardware-CPU Anweisungen aus einem externen Datenspeicher auszuführen? Und wie greift sie darauf zu? >> Gibt es dafür fertige Images zum >> Download welche man dann nur in den config flash programmiert? > Man klickt sich so einen Prozessor zusammen, und der wird dann als > "Soft-Core" in das eigene HDL-Design eingebunden und zum Bitstrom > umgeformt. Die CPU ist ja, soweit ich verstanden habe nur eines der möglichen Komponenten? Da braucht es dann vermutlich auch noch einen Memory-Controller, IO-Ports, usw.? > Du solltest dir also unbedingt die Toolchain und ihre Werkzeuge > anschauen und verstehen. Ok. Aber wie gesagt das Thema ist sehr umfangreich und ich fürchte mich zu verrennen, also auch hier meine Bitte mit einen Anlaufpunkt zu nennen. Welche Toolchain? Wonach soll ich suchen?
C. A. Rotwang schrieb: > Also wenn es nicht unbedingt CycII sein muß, würde ich den CycII in die > Rente schicken und durch einen moderneren Max10 oder Cyc10LP ersetzen, Doch, es MUSS dieser sein :-) Ich will auch jetzt nicht anfangen zu überlegen was der aktuell beste FPGA etc. ist. Ich will auch keine Entwicklungen damit starten. Ich möchte die Funktion und Arbeitsweise verstehen und mich in das bestehende System einarbeiten welches ich hier vor mir habe.
Beim FPGA fängt man nicht mit einem NIOS bzw. einer Soft-CPU an. Das ist dann schon die höhere Schule. Ich empfehle erstmal eine LED zum Blinken zu bringen. Da ist der VHDL-Code übersichtlich und man kann die Toolchain bedienen lernen. Vielleicht hilft es Dir mal bei Youtube zu schauen? Da findet man sehr viele FPGA-Videos auf Einstiegsniveau. DUke
D00fi schrieb: > Und Quartus 13.0SP1 laeuft recht problemlos unter Win10 x64. Kann ich bestätigen. Das hatte ich sogar schonmal installiert. Aber hier greife ich auf die Analogie zum Brezen-Backen zurück, ich konnte mit diesem Werkzeug bislang nicht viel anfangen außer mich mittels meinem Segger J-Link damit verbinden.
Duke Scarring schrieb: > Beim FPGA fängt man nicht mit einem NIOS bzw. einer Soft-CPU an. Das ist > dann schon die höhere Schule. > Ich empfehle erstmal eine LED zum Blinken zu bringen. Da ist der > VHDL-Code übersichtlich und man kann die Toolchain bedienen lernen. > Vielleicht hilft es Dir mal bei Youtube zu schauen? Da findet man sehr > viele FPGA-Videos auf Einstiegsniveau. Sehr gern, könntest Du mir was empfehlen? Gleiches Problem wie oben: es gibt hunderte davon... Der Grund diesen Thread zu eröffnen war für mich ja genau die Frage nach dem Einstieg. Letztlich habe ich ein gegebenes System, bestehend aus - Cyclone II FPGA (EP2C8) - Spannungsversorgung (VCCINT mit 1,2V und VCCIO mit 3,3V) - Eine 55 MHz Taktquelle - Einem Farb-LCD Display - Div. Tasten und Drehencoder sowie LEDs - Einem SD-Card Interface - Einem JTAG-Interface - Ein EPCS4 Config-Flash - 128MB SDRAM (MT48LC4M32B2) - 8MB Flash-Memory (S29GL064) mit dem ich arbeiten möchte.
:
Bearbeitet durch User
Tipp mal im Forumsfeld oben links "Grundlagen" ein. Dann werden alle Grundlagen-Threads sichtbar: https://www.mikrocontroller.net/forum/fpga-vhdl-cpld?filter=grundlagen&x=0&y=0
Olli Z. schrieb: > Lothar M. schrieb: >>> Wie wird nun aus dem FPGA eine Nios II CPU? >> Indem das FPGA intern so verdrahtet wird, wie eine Nios II CPU. > Also der FPGA "startet", erkennt dann das er sich seine Config vom > externen Config-Flash ziehen soll, macht das, stellt sich entsprechend > ein und stellt dann eine Nios II CPU dar, richtig? Passt im Grunde. Aber in diesem Zug werden dann ggfs. auch interne RAM-Blöcke mit Defaultwerten geladen. > Und dann? Dann macht sie das, was das Datenblatt dieser speziellen CPU samt kundespezifischer Konfiguration vorgibt. Vermutlich wird der Prozessor am Reset-Vektor den erstan Befehl abholen und ihn ausführen. > Fängt die CPU an wie eine Hardware-CPU Anweisungen aus einem > externen Datenspeicher auszuführen? Oder aus einem internen Speicherblock, der zuvor bei der Konfiguration mit Daten geladen wurde. > Und wie greift sie darauf zu? Wie üblich: über interne und externe Bussysteme. > Die CPU ist ja, soweit ich verstanden habe nur eines der möglichen > Komponenten? Da braucht es dann vermutlich auch noch einen > Memory-Controller Ja, klar. > IO-Ports, usw.? An dieser Stelle fängt deine Arbeit an, denn solche Bauteile musst du dann selber an den Prozessor "anbauen". Nicht umsonst ist das im Grunde nur eine rudimentärer Prozessor (CPU mit Interrupthandler und Businterface), ganz ohne Timer, Capture, I²C, SPI, serielle Schnitte, IO-Ports und sonstwas. > Aber wie gesagt das Thema ist sehr umfangreich Und die Einarbeit lässt sich auch nicht einfach so auf simple Weise "abkürzen". Deshalb empfiehlt sich das ausgiebige Studium (so 1-2 Wochen für einen anständigen Überblick) der Informationen, die der Hersteller bereitstellt: https://www.intel.de/content/www/de/de/products/programmable/processor/nios-ii.html
Naja und wenn man dann so einiges an Komponenten hinzugefügt hat, dann wird aus dem FPGA nicht nur eine einfache CPU sondern eher schon wieder sowas wie ein Mikrocontroller... Mir seit die kätzerische Frage gestattet warum man dann nicht gleich soetwas nimmt und sich mit dem ganzen Aufwand des FPGA rumplagt? Ist ein FPGA denn so viel schneller/besser?
Beitrag #6541072 wurde von einem Moderator gelöscht.
Olli Z. schrieb: > Mir seit die kätzerische Frage gestattet warum man dann nicht gleich > soetwas nimmt und sich mit dem ganzen Aufwand des FPGA rumplagt? Ist ein > FPGA denn so viel schneller/besser? Was hat das mit Katzen zu tun? ;-) So ein NIOS im FPGA ist teurer oder langsamer als ein externer Controller. Aber man kann halt mehr Faxen damit treiben und es ist kein weiterer Chip notwendig. Du kannst irgendwelche speziellen HW-Beschleuniger reinbauen, eigene Befehle dazubasteln; wenn du aus irgendwelchen Gruenden genau 17 SPI Transceiver und droelfzehn UARTS haben willst und einen Videocontroller fuer ein sehr exotisches Display, kein Problem; mussts halt "nur" programmieren - aeh' natuerlich nicht programmieren, sondern "beschreiben". Gruss WK
Ok, ich versuche nun ein Tutorial zu finden über das ich eine der an den IO-Ports hängenden LEDs zum blinken bekomme um das ganze Toolset mal zu testen... werde berichten, bis hierhin erstmal vielen Dank für die Unterstützung :-)
Olli Z. schrieb: > Mir seit die kätzerische Frage gestattet warum man dann nicht gleich > soetwas nimmt und sich mit dem ganzen Aufwand des FPGA rumplagt? Frage ich mich auch... 😉 > kätzerisch Ketzerei Dergute W. schrieb: > So ein NIOS im FPGA ist teurer oder langsamer als ein externer > Controller. Ich mache da einfach ein kleines FPGA und setze einen Mainstream-uC daneben. > und es ist kein weiterer Chip notwendig. Wenn ich den Platinenplatz und den Wartungsaufwand gegenrechne, dann verliert der Softcore auch bei romantischer Betrachtung. Diese ernüchternde Erkenntnis musste ich leider wiederholt gewinnen, wenn ich wieder mal so einen hippen Softcore in ein Seriendesign einsetzen wollte.
Moin, Lothar M. schrieb: > Wenn ich den Platinenplatz und den Wartungsaufwand gegenrechne, dann > verliert der Softcore auch bei romantischer Betrachtung. Ja, da haben sich auch die Zeiten etwas gewandelt. Ich hab' mit NIOS mal vor fast 15 Jahren was gemacht, iirc war da noch nix oder ganz wenig mit STM32 etc. oder gar FPGAs mit Hardcore-CPU. Nachdem auf der Platine ja auch nicht grad' der neueste Cyclon werkelt, wird die wohl aehnlich alt sein. Gruss WK
In den neueren Quartus-Versionen gibt es ja eine Neuauflage des NIOS2. Den alten findet man noch als NIOS2-Classic. Weiss da jemand naeheres? Bei Intel konnte ich so recht nichts an Infos finden was es damit auf sich hat. > setze einen Mainstream-uC daneben. Die FPGA-Boards die mit dem Hintergrund NIOS2 angeboten werden, sind zumindest immer mit reichlich (SD-)RAM versehen. Beim "Mainstream-uC" geht es deutlich knapper zu.
D00fi schrieb: > In den neueren Quartus-Versionen gibt es ja eine Neuauflage > des NIOS2. Den alten findet man noch als NIOS2-Classic. > Weiss da jemand naeheres? Ich hab den Eindruck die haben den SoC-Bus gewechselt resp. angepasst, das da auch ein Hardcore-ARM dranpasst. Siehe Avalon: https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/manual/mnl_avalon_spec.pdf Und es mehrere NIOSe Varianten, nur die langsamste ist(in den altene Systemen) kostenlos. https://www.intel.de/content/www/de/de/products/programmable/processor/nios-ii.html > Letztlich habe ich ein gegebenes System, bestehend aus .. dann solltest die auch sources für ein Reference projekt haben. Also die mal über die passenden Projektdateien (*.qpf; *.sopcinfo)? in die Toolchain laden und dann modifizieren. >> Vielleicht hilft es Dir mal bei Youtube zu schauen? Da findet man sehr >> viele FPGA-Videos auf Einstiegsniveau. >Sehr gern, könntest Du mir was empfehlen? Gleiches Problem wie oben: es >gibt hunderte davon... Ich perönlich finde die meisten Videos grausam, ich rate deshalb zu den klassischen Turoeials in pdf. Da gibt es von en Boradherstellern und von Unis (stichwort Lab) einiges. Oben habe ich eins von BeMicro verlinkt Beitrag "Re: Wie wird aus einem Cyclone II FPGA eine Nios II CPU?" Das ich persönlich benutzte, weil hier ein Bemicro board eumlag Da gibt es auch dieses Tutorial für Q14.0 , das auch auf die 13 passt: https://www.intel.com/content/dam/altera-www/global/en_US/uploads/5/5e/BeMicroM10_Embedded_System_Lab.pdf Da mal was von Uni: https://www.cl.cam.ac.uk/teaching/1213/P34/exercise-nios/ und wenn mit den richtigen Stichworten sucht findet sich aucu was auf Germanisch ;-): http://docplayer.org/42576171-Soft-core-prozessor-nios-ii-konfiguration-einbettung-und-programmierung.html
Dergute W. schrieb: > So ein NIOS im FPGA ist teurer oder langsamer als ein externer > Controller. Das ist pauschal nicht korrekt. Allerdings ist die NIOS-Architektur nicht wirklich das gelbe vom Ei und nicht praktikabel mit eigenen inline-Opcodes (Beschleuniger) erweiterbar. Ansonsten gibt es - nichtsdestotrotz - aus der Altera-Welt eine Menge Beispiele für Video-Verarbeitungs-Pipelines, wo ein Nios schlicht für die Konfiguration der Register nötig ist. Ob man sich anstatt einem portablen System die Hinterlassenschaften von Qsys/SOPC antun will, ist eine andere Frage.
Olli Z. schrieb: > Wie wird nun aus dem FPGA eine Nios II CPU? Eine CPU ist eigentlich nicht mehr als ein komplexer Automat (Finite State Machine, FSM). Also ungefähr das gleiche, wie wenn du vier LEDs als Lauflicht blinken lassen willst, nur eben größer. :-) > Indem er die VHDL Anweisungen aus dem Serial-Config-Flash EPCS4 lädt? Nein, dein VHDL oder Verilog wird vorher ziemlich heftig zermanscht und in eine Netzliste mit Komponenten umgewandelt, die dann wieder auf das FPGA gemappt werden. Das Ergebnis davon wird dann in einen Bitstream umgewandelt, der in den FPGA geladen wird - das ergibt dann die "Verschaltung" im FPGA. Das ist jetzt einer Software-Umgebung nicht unähnlich... eine CPU führt ja auch keinen C-Code aus, sondern der wird erst durch Compiler, Assembler und Linker geschoben. Dann wird vielleicht noch eine Hexdatei oder ein Speicherabzug draus gebastelt, und den musst du dann noch irgendwie in den Adressraum schießen (Betriebssystem, Bootloader, EPROM), bis daraus was passiert. > Und wie erzeugt man diesen Inhalt? Gibt es dafür fertige Images zum > Download welche man dann nur in den config flash programmiert? Es gibt fertige Inhalte, aber die sind eigentlich immer abhängig vom gesamten Board. Also eher "nein". Olli Z. schrieb: > Also der FPGA "startet", erkennt dann das er sich seine Config vom > externen Config-Flash ziehen soll, macht das, stellt sich entsprechend > ein und stellt dann eine Nios II CPU dar, richtig? Wenn der Chip so verdrahtet ist, dann vermutlich ja. Ich kenne mich mit den Intel-Dingern nicht aus, aber es gibt meist verschiedene Bootmöglichkeiten. FPGAs mit Hardcore (also einem fest eingebauten ARM) können zum Beispiel ohne Konfiguration den ARM mit Linux hochfahren und die Logik wird dann erst von einem Linux-Tool programmiert (oder vom Bootloader, der die SD-Karte anspricht). Für die Entwicklung nehme ich den Programmer und prügel den Bitstream direkt in den Chip rein (per JTAG). Das hat den Vorteil, dass ich keinen Flash beschreiben muss, überlebt aber dafür keinen Stromausfall. > Und dann? Fängt die CPU an wie eine Hardware-CPU Anweisungen aus einem > externen Datenspeicher auszuführen? Und wie greift sie darauf zu? Wie gesagt, eine CPU ist ein Automat - und ein Automat hat einen Startzustand und tut in diesem Zustand etwas. In der Regel dürfte das ein "Reset"-Zustand sein, der nach ein paar Takten den ersten Befehl lädt. > Die CPU ist ja, soweit ich verstanden habe nur eines der möglichen > Komponenten? Ja. Eine CPU lebt "nur" in einem oder mehreren Adressräumen. Was dahinter liegt, ist der CPU egal; das muss nichtmal Speicher sein. > Da braucht es dann vermutlich auch noch einen > Memory-Controller, IO-Ports, usw.? "Im Prinzip schon." Du kannst zum Beispiel den im FPGA integrierten Block-RAM (BRAM) benutzen, der ist sehr einfach ansprechbar. Ich habe mal einen PicoRV32 mit BRAM benutzt, da war die Speicherlogik ("Memory-Controller") sehr überschaubar. Mit anderen Worten: Ein paar Verbindungen, mehr nicht. Wenn du mit I/O-Ports sowas wie GPIOs meinst, dann: Ja, kann man machen, muss man aber nicht, ist nur kompliziert. Ich schreibe dazu unten noch was. > Ok. Aber wie gesagt das Thema ist sehr umfangreich und ich fürchte mich > zu verrennen, also auch hier meine Bitte mit einen Anlaufpunkt zu > nennen. Welche Toolchain? Wonach soll ich suchen? Von jedem Hersteller gibt es ein Programm, mit dem man die FPGAs benutzt. Dazu gehört der Teil, der VHDL/Verilog verarbeitet, daraus den Bitstream erzeugt, den Programmer anspricht und das Ergebnis in den FPGA pustet. Von Intel/Altera dürfte das Quartus sein. Wie gesagt, ich hab mit den Dingern nie gearbeitet und bin definitiv nicht der große Experte. :-) Olli Z. schrieb: > Der Grund diesen Thread zu eröffnen war für mich ja genau die Frage nach > dem Einstieg. Letztlich habe ich ein gegebenes System, bestehend aus Fange mal damit an, das "Constraints-File" zu verstehen. Bei Xilinx-FPGAs ist das eine Textdatei, in der für jeden programmierbaren Pin vom FPGA steht, was das für ein Pin ist (3.3V, 1.8V, Input, Output, Taktausgang, Takteingang mit xx MHz, ...), ob der Teil einer Gruppe ist und wie er im Top-Level heißen soll. So einen Mechanismus muss es für deinen FPGA auch geben. Da kannst du dir zum Beispiel definieren, dass Pin 28 ein 3.3V-Output ist und "led0" heißt. Wie das genau aussieht, hängt vom Schaltplan deines Boards ab. Zu meinem Board gab es eine ZIP-Datei mit Schaltplänen und Beispielen dazu. Im VHDL-Code gibt es dann eine Top-Level-Entity, die alle Definitionen vom Constraints-File enthält. Bei meinem Xilinx Spartan 6 und Xilinx ISE sieht das dann im Constraints-File so aus:
1 | # Pin T8 ist ein CLOCK-Pin mit 50 MHz Eingang |
2 | # der Pin soll CLK_50M heißen |
3 | NET "CLK_50M" LOC = T8 | TNM_NET = sys_clk_pin; |
4 | TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 50000 kHz; |
5 | |
6 | # Pins P4, N5, P5 und M6 sind 3.3V-Pins |
7 | # alle vier Pins zusammen heißen "led" |
8 | NET led<0> LOC = P4 | IOSTANDARD = "LVCMOS33"; |
9 | NET led<1> LOC = N5 | IOSTANDARD = "LVCMOS33"; |
10 | NET led<2> LOC = P5 | IOSTANDARD = "LVCMOS33"; |
11 | NET led<3> LOC = M6 | IOSTANDARD = "LVCMOS33"; |
Und im VHDL-Code (der Top-Entity) tauchen die dann so auf:
1 | entity test is |
2 | port ( |
3 | CLK_50M : in std_logic; |
4 | led : out std_logic_vector(3 downto 0); |
5 | );
|
6 | end test; |
Und damit kann ich im eigentlichen VHDL dann sowas machen:
1 | architecture IMPL of test is |
2 | begin
|
3 | led <= "1010"; |
4 | end architecture; |
Das zaubert mit ein "an/aus/an/aus"-Muster auf die vier LEDs, die mein Board hat. Nachtrag: Ich hatte oben versprochen, noch was zu den GPIOs zu schreiben. Also hier: Du musst die GPIOs nicht für die CPU konfigurierbar machen. In meinem VHDL steht zum Beispiel drin, dass ein Schreibzugriff auf eine bestimmte Adresse das Datenwort auf die LEDs legt. Dann kann die CPU auch ohne GPIOs die LEDs blinken lassen. Ein Schreibzugriff auf bestimmte andere Adressen geht in den Speicher, und dann habe ich bestimmte Adressen für meine UART-Komponente. Bei Mikrocontrollern nennt man das "Register". ;-) Ende vom Nachtrag. Und natürlich funktioniert das alles nur, wenn ich meinem Tool sowohl das Constraints-File als auch die VHDL-Datei zum Fraß vorwerfe und gleichzeitig mitteile, welches FPGA auf dem Board drauf ist, welchen Programmer ich verwende - und den dann auch so konfiguriere, dass er das FPGA direkt mit dem Bitstream beschreibt und nicht das Config-Flash. Irgendwie so ähnlich muss es mit Quartus auch funktionieren.
:
Bearbeitet durch User
Meine Kenntnisse zu diesem Themenkomplex sind zwar sehr begrenzt (also ca. 0.1% ;-)), aber ich finde mit den bisherigen hochwertigen Antworten und mit der hervorragenden Beschreibung von Svenska sollte ein Einstieg auch für den absoluten Beginner möglich sein. Bislang ist mir keine vergleichbar verständliche Kurzübersicht über den FPGA-Workflow untergekommen. Daumen hoch!
Beitrag #6542672 wurde von einem Moderator gelöscht.
D00fi schrieb: >> würde ich den CycII in die Rente schicken > > Es ist nichts schlechtes am Cyclone II. Doch einiges. Das entscheidende, die seit 8 Jahren eingestellte Softwareunterstützung und die Neustrukturierung der Toolchain seit der INtel-Übernahme. Diese Neuübernahme hat dazu geführt, das viele Doks schwer zu finden sind und in den Suchergebnissen nach typischen Problemlösungen die für alte Environmentsg anz nach Hinten in der Antwortliste gerutscht sind. > Ein aktueller Max10 10M08 hat etwa genauso viele LEs wie der EP2C8. Das war es aber auch schon mit den Gemeinsamkeiten. Ein Max ist Non-volatil, bringt einen ADC mit, unterstütz einfacher DDR und andere zeitgenössische Speichertechnologien... . Und preislich liegt der CycII inzwischen auch deutlich über dem MAX10. Da mal die Familienübersicht zum selber schlau machen: https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/cyc2/cyc2_cii51001.pdf https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/max-10/m10_overview.pdf > Von Rente kann also gar keine Rede sein. Doch bei Chips ist nach 17 Jahren schon der Zeitpunkt erreicht, über eine Abwechslung zumindest nachzudenken, erst recht, wenn die Software seit 8 Jahren nicht mehr Gepflegt wird. > Und Quartus 13.0SP1 laeuft recht problemlos unter Win10 x64. Alte Dosprogramme in der DOS-Box auch ... was aber bei Neubesetzungen von Entwicklungsstellen keine Rolle spielt. Da geht es vornehmlich um den Umgang mit aktuellen und zukünftigen Tools. Und Einarbeitung in die Tools ist im FPGA-Bereich essentieller als bspw. im Programmierbereich.
> Ein Max ist > Non-volatil, bringt einen ADC mit, unterstütz einfacher DDR und andere > zeitgenössische Speichertechnologien... Jedesmal, wenn ich im Chipplanner das sehe, aergere ich mich ueber den "verplemperten" Platz, wo mir 20-30 % mehr LEs lieber gewesen waeren. > Das war es aber auch schon mit den Gemeinsamkeiten. Ja eben ja nicht. Auch wenn nun M9K-RAM statt M4K-RAM verwendet wird, der grundsaetzliche Aufbau hat sich doch kaum geaendert. Ausser das das periphere "Bling-Bling" fehlt. Den MAX10 kann man einsetzen, muss man aber nicht. > erst recht, wenn die Software seit 8 Jahren nicht mehr Gepflegt wird. Fuer aktuelles Material laeuft hier uebrigens Quartus Pro 20.3(3). Aber wenn jemand einsteigen will, und ein einigermassen komplettes Cyclone 2 Board hat, wird er damit nichts wesentliches vermissen, was auch in aktuellen Produkten dieser Reihe zu finden ist. Internes RAM und Multiplizierer. Mit einem Spartan 2 waere er z.B. deutlich schlechter dran. Und so gewaltig sind die Unterschiede in der Software dann auch nicht. > Alte Dosprogramme in der DOS-Box auch Zeig mir das mal bei einem 64 bit System. > was aber bei Neubesetzungen > von Entwicklungsstellen keine Rolle spielt Du verbreitest den selben Dummschwatz, wie manche HR-Abteilung. Das nur Kenntnisse mit der "allerneuesten" Version akzeptabel waeren. Das reicht bei speziellen Problemen und Aufgaben naemlich auch nicht. Spaetestens wenn bei einem Projekt/Bewerbung die Fachabteilung mit dabei ist, zaehlt solides Grundlagenwissen allemal mehr.
D00fi schrieb: > Mit einem Spartan 2 waere er z.B. deutlich schlechter dran. > Und so gewaltig sind die Unterschiede in der Software dann auch nicht. Doch für Anfänger sind so das, insbesonders für Anfänger die wohl nicht mal Reference-Sourcen/Tutorials für ihr Board vorweisen können. Es genügt, das sich die Benennung eines Menüs geändert hat und der Rookie sucht sich einen Wolf wenn er aus dem 'falschen Tutorial' abtippt. > >> Alte Dosprogramme in der DOS-Box auch > > Zeig mir das mal bei einem 64 bit System. Siehe Anhang - aber das ist nicht der Punkt. > >> was aber bei Neubesetzungen >> von Entwicklungsstellen keine Rolle spielt > > Du verbreitest den selben Dummschwatz, wie manche HR-Abteilung. > Das nur Kenntnisse mit der "allerneuesten" Version akzeptabel waeren. Natürlich entscheidet man sich, wenn man eine Wahl zwischen einem Rookie mit CycII und Quartus 13V0 SP1 Grundkenntnissen und einem weiteren Rookie mit Erfahrung in MAX10/Cyc10 und Quartus lite hat, für letzteren weil Projekte eben mit neuen Familien gestartet werden. Für 'Altlasten' wählt man dann lieber einen Altingenieur, der zu einer X-Jahre alten Toolchain auch die X Jahre an Erfahrung mit dieser Toolchain mitbringt. Und nein, es ist kein Dummschwatz darauf hinzuweisen, das man mit einen CycII die Einarbeitung in die Toolchain zweimal oder mindestens 1.5Mal macht. Und startet man die Einarbeitung von Anfang an mit einem aktuellen und verbreiteten Systen wie eben MAX10 macht man es potentiellen Helfern einfach, weil die auf aktuelle threads und projekte wie: Beitrag "MAX10/DE10-Lite board Erfahrung/Meinungsaustausch gesucht ?" Beitrag "Ebedded Probleme MAX10" Beitrag "Internal Oscillator des MAX10 von Altera (Anfänger)" https://wiki.trenz-electronic.de/display/PD/TEI0001+Resources ... verweisen können und nicht erst im Archiv wühlen müßen: Beitrag "Re: Wie wird aus einem Cyclone II FPGA eine Nios II CPU?" Naja, nicht mein Problem, ich bin raus.
Deiner Logik weiter folgend: > Natürlich entscheidet man sich, fuer keinen von beiden. Weil ein Quartus Pro eben eine andere Hausnummer als ein Quartus Lite oder eine Webedition ist. > ich bin raus Ditto.
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.