Hallo zusammen. Ich soll/möchte mich in die FPGA Welt einarbeiten und habe eine Testplatine mit einen Lattice XP10 bekommen. Bisher habe ich nur AVR's in Assembler und C programmiert. Die FPGA Welt sieht jedoch ganz anders aus. Ich habe schon ein bisschen hier im Forum durchgelesen und auch schon die ispVM und Lattice Diamond Software herunter geladen. Ein isp Programmierkabel hängt auch schon dran und der XP10 wird im ispVM auch erkannt. Soweit ich das aus den mir verständlichen Fragmenten beim durchlesen der Foreneinträge und des FPGA Artikels dieser Seite erkannt habe, handelt es sich bei FPGA's nicht um einen sequenziellen Programmablauf wie bei den AVR's, sondern um programmierte Abhängigkeiten (z.B. und-, oder-, nicht- Gatter). Ich habe die Erleuchtung noch nicht bekommen wie man nun beginnt ein Programm daraus zu machen. Bei den Codebeispielen, die beim Lattice Diamond dabei sind, habe ich keine besonderen Programmsequenzen erkannt, sondern bisher nur eine große Ansammlung von Einstellungen diverser Ports und Blöcke. Kann mir jemand auf die Spünge helfen wie mit Lattice Diamond weiter zu verfahren ist? Mein erstes Ziel ist es eine LED auf einem Port blinken zu lassen.
So sass ich vor 2 Monaten auch davor: intensives Lernen war angesagt. Ich habe mir einige Bücher besorgt: Ashenden: The Designers Guide to VHDL ist recht gut. Auch die Bücher von Pong P.Chu sind hilfreich. Bei VHDL ist alles parallel. Sequentielle Programme bekommt man nur über State-Machines, die über eine Clock getaktet werden. Für deine LED brauchst du einen Takt, den du herunter zählst. Und bei einem Nulldurchgang wird der Status getoggelt. So etwas sollte bei guten Beispielen beschrieben werden. Da ich hier Xilinx habe, kann ich bei Lattice-Beispielen nicht weiter helfen.
Igor Ebner schrieb: > Soweit ich das aus den mir verständlichen Fragmenten beim durchlesen der > Foreneinträge und des FPGA Artikels dieser Seite erkannt habe, handelt > es sich bei FPGA's nicht um einen sequenziellen Programmablauf wie bei > den AVR's, Hallo Igor, bin selber Anfänger, probier es trotzdem ;-) Verabschiede dich vom Gedanken eines "Programms" im FPGA. VHDL und Konsorten sind Hardware-Beschreibungssprachen, das hat mit konventioneller Programmierung nix zu tun. Ich kann bei dieser komplexen Materie erstmal nur auf Literatur verweisen, wie z.B. der hier (nicht zu unrecht) viel zitierte Reichardt/ Schwarz "VHDL-Synthese" (Oldenburg Verlag). Ich selbst "arbeite" mit den Xilix'schen ICs/ Tools (noch, tendiere zum Wechsel auf Altera), Lattice Diamond ist im Forum seltener gefragt und dementsprechend wenige Anworten könntst du hierfür bekommen, es sei den es ist ein "sprachliches" Problem (VHDL/ Verilog). Gruss Uwe
Danke schon mal. Bevor ich nun beginne ein Buch zu bestellen, habe ich erst einmal Panik bekommen, dass ein FPGA für sequenzielle Aufgaben dann fast nicht geeignet ist, da man nur noch an Takten zählen / überwachen und neu setzen ist. Die Testplatine hat jedoch bereits ein schönes Programm drinnen, in dem ein großes grafisches Display angesteuert wird, Tasten überwacht werden, Schrittmotoren angesprochen werden usw. Wie würde da die Programmierung dann aussehen? Mehrere verschieden schnelle Takte, die bei bestimmten Werten jeweils eine andere Aktion auslösen? Wie können Speicherinhalte von externen Speichern auf das Display übertragen werden, wenn es keine sequenzielle Handlung gibt? Das noch vorhandene Programm im XP10 ist leider ein überbleibsel des Vorbesitzers, also keine Möglichkeit mehr an den Source ran zu kommen. Das werde ich löschen / überschreiben müssen, wenn meine erste HEX Datei fertig ist.
Igor Ebner schrieb: > handelt > > es sich bei FPGA's nicht um einen sequenziellen Programmablauf wie bei > > den AVR's, sondern um programmierte Abhängigkeiten (z.B. und-, oder-, > > nicht- Gatter). Das klingt so als ob Du keinen blassen Schimmer hast was ein FPGA so macht und was es kann. Das führt auf die Frage: was willst DU denn eigentlich damit machen?
Lerne und Verstehe erstmal VHDL oder Verilog, je nach Geschmack. Dann kannst du dir Gedanken über komplexere Dinge wie Grafik-Display Ansteuerung machen, sonst hat es keinen Sinn. Am besten du vergisst temporär deine C-Kenntnisse - das ist, so komisch es klingt, eher verwirrend.
Achja, du kannst aus deinem Board den Bitstream (kein HEX-File) auslesen, auf dem PC speichern und bei belieben später wieder neu einspielen.
Das mit dem Schimmer hast Du vollkommen recht :c) Wie gesagt, mit den AVR's ist es überhaupt kein Problem. Code wird vom Prozessor oben nach unten (ab Adresse 0x000) abgearbeitet und fertig. Aber bei den FPGA's beginne ich nur sehr langsam gerade deren Funktionsweise zu verstehen und befürchte, dass ich in der selbstverwaltung von Zählern unter gehen werde, bevor ich mich an komplexe Handlungen heran wagen kann. Mein Ziel ist es die vorhandene Testplatine soweit zu bringen, dass ich das Display und die Schrittmotoren selbst mit meinem Programm ansprechen kann und die Tastatureingänge selbst abfragen kann. Auch will ich später Sequenzen für die Schrittmotoren von einem USB Stick lesen, oder zumindest von einer SD Karte. Bis dahin ist es jedoch noch ein weiter weg. Deswegen erst einmal das kleine Ziel mit einer blinkenden LED, damit ich die Funktionsweise genauer erkenne und darauf aufbauen kann. Ich könnte mir auch vorstellen, dass es für gewisse Funktionen (wie z.B. serielle Ausgaben, Displayansteuerungen, SD Karten lesen) fertige Libs gibt, die ich noch nicht entdeck habe :c)
Igor Ebner schrieb: > Wie gesagt, mit den AVR's ist es überhaupt kein Problem. Code wird vom > Prozessor oben nach unten (ab Adresse 0x000) abgearbeitet und fertig. Und genauso ist es bei VHDL eben NICHT. Das "Programm" arbeitet parallel - es ist ja auf Hardware abgebildet. (es gibt, um die Verwirrung zu steigern, kombinatorische und sequentielle Logik - aber das steht alles im Lehrbuch) Wie gesagt: vergiss ASM und C. Igor Ebner schrieb: > Ich könnte mir auch vorstellen, dass es für gewisse Funktionen (wie z.B. > serielle Ausgaben, Displayansteuerungen, SD Karten lesen) fertige Libs > gibt, die ich noch nicht entdeck habe :c) Ja, das gibt es, z.B. für UARTs, SPI und komplexere Dinge wie DDRx und Ethernet Zeugs, dies aber meist nur als Lizenz, d.h. du musst blechen.
Gut, dann muss ich nun grundsätzlich überlegen ob ich auf diesen Zug aufspringen will oder nicht. Ich denke ich wäre bereit es zu lernen und will es versuchen. Sonst treibt man zurück und stirbt alt mit einem Atmel in der Hand :c) Sqeuenzielle Logik klingt, glaube ich, nach dem, was ich brauche :c) Ein VHDL Buch zu kaufen ist erstmal kein Problem - die kosten ja im Vergleich zur Hardware oder den Libs kaum was, nur habe ich in der Vergangenheit die Erfahrung gemacht, dass Bücher die ersten Schritte gar nicht beschreiben, sondern gleich ins eingemachte gehen, ohne speziell auf die vorhandene Hardware einzugehen. Ich bin mir fast sicher, dass in Deinem Vorschlag "The Designers Guide to VHDL" kein einziges Sterbenswörtchen über Lattice Diamond, ispVM oder ispLEVER verschwendet wurde. So habe ich bücher zwar gerne als nachzuschlagende Referenz verwendet, aber der erste Kickstart ist immer der schwierigste, wo ich auf Unterstützung Eurer Gemeinschaft hoffe :c) Welche Hardware Software Libs hast Du (andere dürfen sich auch melden) im Einsatz um mit FPGA's herum zu spielen? Sollte ich - um die Umstellung zu Xilinx offen zu halten / universell zu bleiben, gleich eine andere Software einsetzen?
Igor Ebner schrieb: > Mein Ziel ist es die vorhandene Testplatine soweit zu bringen, dass ich > das Display und die Schrittmotoren selbst mit meinem Programm ansprechen > kann und die Tastatureingänge selbst abfragen kann. Auch will ich später > Sequenzen für die Schrittmotoren von einem USB Stick lesen, oder > zumindest von einer SD Karte. Das geht doch alles so "langsam", daß Du mit einem Controller viel schneller am Ziel bist... Wenn ich nur den FPGA dafür verwenden dürfte, würde ich mir einen Softcore reinbauen und den herkömmlich programmieren... Duke
Wie hier schon gesagt wurde: Es ist der falsche Ansatz, sich gleich mit einem konkreten FPGA zu beschäftigen. Lerne erstmal die Sprache VHDL und mach dich mit dem Simulator (z.B. Modelsim) vertraut. Der nächste Schritt besteht dann darin, eine "synthesefähige Beschreibung" zu implementieren und zu simulieren. Erst dann kannst du dir Gedanken über einen konkreten FPGA machen.
Igor Ebner schrieb: > Gut, dann muss ich nun grundsätzlich überlegen ob ich auf diesen Zug > aufspringen will oder nicht. Ich denke ich wäre bereit es zu lernen und > will es versuchen. Ja, sonst springst du nämlich VOR den Zug ;-) Igor Ebner schrieb: > nur habe ich in der > Vergangenheit die Erfahrung gemacht, dass Bücher die ersten Schritte gar > nicht beschreiben, sondern gleich ins eingemachte gehen, ohne speziell > auf die vorhandene Hardware einzugehen. Das macht bei einem Buch, indem es um eine HW-Beschreibungssprache geht ja auch Sinn - die Beschreibung der Herstellerspezifischen Tools würde den Rahmen komplett sprengen. Igor Ebner schrieb: > Welche Hardware Software Libs hast Du (andere dürfen sich auch > melden) im Einsatz um mit FPGA's herum zu spielen? Wenn du mich meinst - ich habe nur die zur Verfügung, die mir Xilinx mit seinem kostenlosen ISE mitliefert. Für den Anfang weit mehr als genug. Igor Ebner schrieb: > Sollte ich - um die > Umstellung zu Xilinx offen zu halten / universell zu bleiben, gleich > eine andere Software einsetzen? Naja, das ist wie gesagt Geschmackssache. Für den Anfang ist Xilinx oder Altera besser geeignet, weil es einfach mehr Leute benutzen und man speziell bei Tool-Fragen eher eine Antwort bekommt. Es ist ja auch die Frage der Verfügbarkeit der ICs.
Igor Ebner schrieb: > Das mit dem Schimmer hast Du vollkommen recht :c) > > Wie gesagt, mit den AVR's ist es überhaupt kein Problem. Code wird vom > Prozessor oben nach unten (ab Adresse 0x000) abgearbeitet und fertig. Du kannst dir den Unterschied bildlich vorstellen: Beim AVR schreibst du ein Programm für einen Prozessor. Beim FPGA baust du selbst einen Prozessor.
Wenn du wissen willst wie Lattice Diamond funktioniert, dann schau ins User Manual von Diamond. Da ist vieles drin beschrieben, inkl. den ersten Schritten um ein Projekt anzulegen, etc. Wenn du das hast, brauchst du eigentlich nur eine VHDL oder Verilog Datei für dein erstes Ziel, die LED blinken zu lassen. Wie du diese Datei schreibst, findest du, wie schon erwähnt wurde, in den entsprechenden VHDL / Verilog Büchern. Das ist vollkommen unabhängig von deiner Hardware. Zurück im Diamond Manual findest du auch die infos wie du die FPGA Pins definierst, synthetisierst, ... Damit sollte dass dann eigentlich klappen.
Jungs, danke schon mal. Das was Ihr schreibst öffnet mir schon weitere Fenster... >daß Du mit einem Controller viel schneller am Ziel bist... Yo, mein nächstes Ziel ist jedoch eher der Einstieg in die FPGA Welt, als nur diese Platine zum laufen zu bringen. Natürlich habe ich schon fertige Routinen für meinen Atmel, die ich nur noch zusammen werfen könnte :c) > Wenn ich nur den FPGA dafür verwenden dürfte, würde ich mir einen > Softcore reinbauen und den herkömmlich programmieren... Aha... "Softcore" ... Hab gerade mal das Archiv auf dieser Seite bemüht. Jetzt glaube ich, kommen wir der Sache ganz nach dran. Könnte man also z.B. für eine VGA Ausgabe die Hardware bemühen und es laufen einer oder mehrere Cores, die eine sequenzielle Abhandung durchführen? >Beim AVR schreibst du ein Programm für einen Prozessor. >Beim FPGA baust du selbst einen Prozessor. Jetzt hats geklingelt... Ein Softcore würde also die vorhandene Hardware ausnutzen, ob eine richtige Programmsequenz ablaufen lassen zu können? Die Libs (z.B. RS232 Ausgang auf einem Pin) würden die Hardware direkt ansprechen und in der Softcore würde ein z.B. C-Programm ablaufen, dass mit der Hilfe der RS232 Lib einen langen Text ausgibt?
Blöd beschrieben. Das C-Programm würde ja kompiliert werden, je nach dem was die Softcore an Befehlen kann... Richtig?
Igor Ebner schrieb: > Aha... "Softcore" ... Konzentrier dich auf die Basics, sonst kommst du selbst mit einem einfachen Softcore wie dem PicoBlaze in Trudeln (hier geht nur ASM, dieser hat mit dem Atmel'schen ASM gar nix zu tun). Davon abgesehen hast du es dann mit mehreren unterschiedlichen Tools zu tun (tw. DOS) Sowas wie MicroBlaze oder NIOS, welche mit C (gnucc) programmiert werden, sind noch in grösserer Entfernung.
Erstmal solltest Du verstehen was ein FPGA überhaupt ist. Ist Dir überhaupt klar weshalb Du mit einem FPGA arbeiten willst? Du hast doch keinen blanken Schimmer von Digitaldesign, und da willst Du gleich mit einem FPGA loslegen ohne zu wissen was der macht? Bleib lieber bei Controllern und schreib Software, statt irgendwelche Gattergräber auf einem FPGA zu verdrahten. Das bisschen Funktionalität dass Du anscheinend zu bauen beabsichtigst passt locker in einen Controller.
ja stimmt.... Jeder Softcore hat natürlich seine (Assembler-)Befehle. Ich glaube du benötigst noch ein bisschen Nachhilfe was ein FPGA denn eigentlich ist. Vielleicht mal auf Wikipedia oder ähnlichen Seiten nachlesen? Hier auf www.mikrocontroller.net gibts ja auch einiges im Wiki. Nur soviel dazu: Ja, ein FPGA kennt im Endeffekt nur simple Gatter und Flip-FLops oder gehen wir noch eine Stufe tiefer: LUTs und Flip-FLops. Jede digitale Technik besteht aus diesen Grundbausteinen. Ein FPGA kann also prinzipiell dazu dienen digitale Schaltungen aufzubauen. Und damit man das nicht per Hand mit Gattern und Flip-Flops aufbauen muss gibt es Hardwarebeschreibungssprachen wie VHDL. Wenn du das lernen willst: ok, aber frage dich doch nochmal vorher ob du das den wirklich brauchst für dein Problem, denn warum soll man sich das Leben unnötig kompliziert machen? Etwas tolles ist es natürlich auch wenn du es um der Neugierde willen lernen möchtest, denn danach stehen dir viele Möglichkeiten offen. Es geht übrigens bei FPGAs nicht hauptsächlich darum nen Softcore reinzubauen und nen Prozessor zu haben....nein, ein FPGA ist eigentlich als Ersatz für ASICs zu sehen, also viel universeller. Es kann natürlich einen Prozessor ersetzen, kann aber VIEL mehr...
Das klingt sau-gut... :c) Die Neugierde ist voll da, und im Falle eines Projektes kann ich zuschlagen und sagen: Ja, das könnte man so und so machen. Und schon habe ich einen Job :c) Sehe ich das richtig, dass man mehrere Softcores auf einem FPGA parallel laufen lassen könnte, ohne dass sich diese gegenseitig stören, solange sie keine gemeinsamen Recourcen (z.B. Pins oder Speicher) verwenden? z.B. ein Softcore für ein VGA Signal, ein Softcore für den TCP Stack und pro Schrittmotor ein unabhängiger weiterer Softcore, die vom Timing komplett unterschiedlich laufen könnten? Also das was man früher nur mit mehreren Atmels auf einer Platine lösen konnte?
Nur mal so am Rande, 99% der FPGA-Designs benutzen überhaupt keinen Prozessor(Softcore) im FPGA. Die FPGAs werden hauptsächlich zur Echtzeit-Signalverarbeitung, Hardwaresteuerung, Grafikansteuerung oder für schnelle Kommunikationsprotokolle verwendet.
Verstehe, verstehe. Wie würdest Du z.B. eine CNC Fräse mit Webinterface kombinieren? Für die Motoren wäre der FPGA ja ideal. Der Webserver arbeitet jedoch mit vielen Variablen, Texten und Bildern, die in einem Speicher abgelegt sind, und je nach Fall unterschiedlich zusammen verknüpft und ausgegeben werden. Würdest Du auf die Platine einen FPGA und einen Atmel (für den Webzugriff) drauf setzen oder doch ein oder mehrere Softcores einsetzen?
Igor Ebner schrieb: > Verstehe, verstehe. Aha, sorry - das bezweifel ich langsam. Du willst alles, und zwar sofort. Das wird nicht klappen. Ich gebe es auf.
Igor Ebner schrieb: > Verstehe, verstehe. Wie würdest Du z.B. eine CNC Fräse mit Webinterface > kombinieren? Für die Motoren wäre der FPGA ja ideal. Der Webserver > arbeitet jedoch mit vielen Variablen, Texten und Bildern, die in einem > Speicher abgelegt sind, und je nach Fall unterschiedlich zusammen > verknüpft und ausgegeben werden. Würdest Du auf die Platine einen FPGA > und einen Atmel (für den Webzugriff) drauf setzen oder doch ein oder > mehrere Softcores einsetzen? Den Webserver mit Softcore im FPGA laufen zu lassen wäre Unfug. Also auf jeden Fall FPGA plus extra Processor-IC. Auf keinne Fall Softcore, denn da würde dein Projekt 10 Jahre dauern oder noch wahrscheinlicher nie fertig werden.
Uwe N. schrieb: > Igor Ebner schrieb: >> Verstehe, verstehe. Uwe N. schrieb: > Aha, sorry - das bezweifel ich langsam. Du willst alles, und zwar > sofort. Das wird nicht klappen. Das seh ich auch so! Fang doch einfach mal mit deinem kleinen LED Programm an. Dann verstehst du vielleicht wie ein FPGA im Grunde funktioniert. Danach arbeitest du dich immer weiter voran, bis du irgendwann mal einen softcore (bei Lattice z.B. der Mico32) anfasst. Dass du verstehen willst was mit FPGAs so alles möglich ist, ist ja ok. Wenn du aber selber einen Einstieg finden willst, dann fang schön klein an und gewöhn dich erstmal an die Beschreibungssprache und vor allem die parallele Arbeitsweise eines FPGA...
Das kommt Dir nur so vor. Ich will nicht "alles", ich würde aber gerne wissen, was man "alles" damit anstellen kann. Aber wenn mal so eine Aufgabe ansteht, dann will ich entscheiden können welche Möglichkeiten ich dafür habe und was für Hardware ich dafür benötige. Sofort soll es auch nicht sein, wie ich schon geschrieben habe, bleibt die Testplatine noch wochenlang aus. Mit Euren Antworten habe ich schon mal die grobe Funktionsweite des FPGA's erkannt. Und als ersten Schritt will ich ja nur eine blinkende LED. Natürlich kann ich dafür einen Atmel verwenden, dann fehlt aber der Lerneffekt. Und man könnte ja auch sagen: Für eine LED nimmste lieber einen NE555 statt einen Atmel usw... Deswegen bin ich schon sehr froh, dass Ihr mir soweit schon mal den richtigen Weg weist... Ich bin gerade noch am suchen ob man wirklich mehrere Softcores parallel laufen lassen kann. Aber alle Einträge sprechen immer nur von einem Softcore. OK, hab gerade gelesen: Also sollte ein Webserver in einen extra Prozessor hinein kommen... Somit vermutlich auch alle anderen komplexen Sachen wie USB, Ethernet, usw...
Igor Ebner schrieb: > Ich bin gerade noch am suchen ob man wirklich mehrere Softcores parallel > laufen lassen kann. Aber alle Einträge sprechen immer nur von einem > Softcore. Ja, kann man. Ein Xilinx-FAE berichtete mal von einem Kunden, der sechs MicroBlaze im FPGA verbaut hat. Und der Leon3 von Gaisler ist auch multiprozessorfähig. Aber wenn man das macht, hat man akademisches Interesse oder zuviel Geld & Zeit. > OK, hab gerade gelesen: Also sollte ein Webserver in einen extra > Prozessor hinein kommen... Somit vermutlich auch alle anderen komplexen > Sachen wie USB, Ethernet, usw... Das passt doch alles zusammen in einen Cortex-M3. Nimm einen Controller, wo das Speicherinterface rausgeführt wurde. Dort kann dann der FPGA ran. Softwareseitig würde ich ein real-time OS wie FreeTOS oder eCos verwenden. Da ist der IP-Stack und der Webserver schon fertig. Duke
Hallo Igor, wenn Du Beispiele suchst, was man mit den FPGAs machen kann, dann schau doch mal bei Lattice in die Sektion Referenzdesigns auf deren Webseite: http://www.latticesemi.com/products/intellectualproperty/aboutreferencedesigns.cfm Dort findest du kostenfreie Designs in VHDL oder Verilog gemeinsam mit Dokumentation, die Dir die Funktion erklärt. Das wäre doch schon einmal ein guter Startpunkt. Lass dich nicht von den unterstützten Bausteinenfamilien in den Spalten täuschen, die meisten Funktionen können auf beliebige Familen portiert werden. Wenn Du neben Literatur eine andere Art der Einarbeitung suchst, dann kontaktiere einfach einen Schulungspartner des FPGA Herstellers. Ich war z.B. schon bei der Firma Evision in dem VHDL Einsteiger Kurs und habe gute Erfahrungen gemacht. Das ist auf jeden Fall effektiver als andere Wege und kostet auch nur kleines Geld. Aus persönlicher Erfahrung kann ich nur sagen, dass ich den Support von Lattice am Besten finde. Man kann in München auch mal anrufen und bekommt bei Problemem auch direkt Auskunft. Viele Grüße Lupi
OK, wenn ich die ganzen Antworten mal zusammenfasse kommt folgendes raus: 1) Ein Softcore ist zwar möglich, aber umständlicher zu behandeln, als ein normaler Prozessor. Damit wäre jedoch ein Programmablauf wie in einem Prozessor schon möglich. Mit einem Softcore in einem FPGA könnte man einen Prozessor weglassen, wenn der Prozessor: A. nicht genug Ein- und Ausgänge hat B. das geplante Gehäuse zu klein für zwei dicke Chips wäre C. das Timing bei den Ausgängen nicht garantiert werden kann, wenn der Prozessor noch andere Aufgaben zu erfüllen hat. 2) Mehrere Softcores sind richtig schwrierig einzubauen, für Hobby-Bastler kaum zu machen. 3) Ein FPGA ist mehr für Echtzeit-Signalverarbeitung, Hardwaresteuerung, Grafikansteuerung oder für schnelle Kommunikationsprotokolle zu gebrauchen, trotzdem aollte ein externer Prozessor das Programm ausführen, also quasi die Logistik übernehmen. Also ist das Programm auf der Test-Platine, die ich erwischt habe, eher eine Ausnahme, wie man es nicht machen sollte: Mit einem FPGA alles zusammen erledigen (Grafisches Display mit komplexen Menüs und Untermenüs und Texteingabefeldern, Tastatur, steuerung mehrer Stepmotoren... @Lupi den Gedanken einer Schulung hatte ich schon, bevor ich hier losgelegt hatte zu schreiben, evtl sollte ich auf diesen Zug aufspringen. Ich bin auch der Meinung, dass man mit einer Schulung an einem Tag mehr erreicht, als selbstständig mühsam wochenlang aus dem WWWald mit Millionen von Informationen das richtige heraus zu picken, die sich teilweise auch widersprechen. Mein "ich-bin-neugierig-Plan" sieht also so aus: 1. jemanden suchen, der mir auf einer XP10 Experimentierplatine eine Privarschulung in Nähe München verpasst (meldet Euch :c) - das ist der schnellste Weg. 2. Wenn dieses fehlschlägt, dann Literatur besorgen, Codebeispiele für Lattice Diamond suchen und die LED zum laufen bringen, notfalls im Forum für jeden Schritt dumme Fragen stellen müssen - das ist der ganz lange Weg, aber günstig. Wenn beides nicht klappt dann sich zu einer Schulung anmelden - das ist der teuerste Weg. Das ist der mittlere Weg, aber teuerer. Auch dann befürchte ich, dass die Schulung nicht Lattice-Hardware-nah abläuft, sondern nur allgemein, dass auf dem Lattice gar nicht laufen muss, weil dieser bestimmt einige Einstellungen hat, die nicht jeder FPGA hat. Über die VHDL Sprache mache ich mir keine Sorgen, das wird bestimmt langsam aber sicher immer umfangreicher, wie bisher mein ASM, C, BASIC, HTML, SQL es auch wurden und immer noch wachsen.
Nachtrag: ich habe mir gerade den Link von Lupi angeschaut: http://www.latticesemi.com/products/intellectualproperty/aboutreferencedesigns.cfm der XP selbst hat ja fast gar nichts an Referenz Designs. der XP2 selbst dafür umso mehr. Fällt der XP10C unter die XP Klasse oder unter die XP2 Klasse?
Igor Ebner schrieb: > der XP selbst hat ja fast gar nichts an Referenz Designs. der XP2 selbst > dafür umso mehr. Fällt der XP10C unter die XP Klasse oder unter die XP2 > Klasse? Der XP10C ist ein XP. Die meisten dieser Beispiele sind generisch genug um auch auf anderen FPGA's zu funktionieren (z.B. Wishbone SPI). Im Diamond ist es sehr einfach den typ zu wechseln, einfach Edit auf der Chipbezeichnung ganz oben in der Filelist. Pin zuordungen gehen dabei natürlich kaput, IP Express Module (z.B. EBR) müssen danach auch neu generiert werden. Unter "C:\lscc\diamond\1.3\examples" findet sich auch ein einfaches Zählerbeispiel in mehreren Varianten für die ersten Stolperversuche.
Was mir gerade erst selbst aufgefallen ist: Unter "C:\lscc\diamond\1.3\active-hdl\Samples_82" Sind viele Beispiele für den Aldec Simulator einschliesslich eines 8051 Softcores in VHDL. Allerdings sind diese nicht Lattice spezifisch.
Hallo Igor, Bin zwar selber noch ein Anfänger, aber ich kann dir hier mal ein paar Unterlagen posten die mir geholfen haben mich in die Welt der FPGA's einzuarbeiten. >>>Warum nimmt nam einen FPGA und keinen µC? Hier mal meine Gründe mich in die Welt der FPGA einzuarbeiten: 1) Man braucht für eine Echtzeitaufgabe einen Prozess den ein µC zeitlich nicht mehr schafft oder an seine Grenze stößt 2) Die Ausgangs/Eingangs-Pins sind (fast) frei programmierbar. 3) FPGA's haben schon interne Block-RAM integriert Gruß Steffen
wegen Softcore: nette Spielerei, jedoch wird in der Entwicklung ein Softcore wohl eher selten und dann für Kleinigkeiten eingesetzt; bei Uni/FH wird ein Softcore sicher öfter benutzt, weil er Hardware spart. Mehrere Softcores: natürlich möglich, aber das schreit geradezu nach einem größeren externen Prozessor. Nicht zu vergessen: Viele VHDL-Libraries und Blackboxes (siehe: IP) werden von den FPGA-Firmen nur gegen Bares angeboten. Für Hobbybastler und Uni/FH gibt es natürlich auch viele freie VHDL-Funktionsblöcke/Libraries, die sind dann oft nicht vollständig bzw. ungetestet bzw. möglicherweise fehlerhaft.
Ein Lehrbuch über Digitale Schaltungen und Bauelemente wäre für den Einstieg nicht schlecht (Also noch mit TTL Gattern und so). Zähler, FlipFlops, Kombinatorische Logik, Zustandsmaschinen usw. verstehen und praktisch anwenden lernen (Grundlagen der Digitaltechnik). Zu diesem Zeitpunkt sollte es dir möglich sein einen Algorithmus in eine Digitalschaltung zu konvertieren bzw. andersherum. Danach kann man sich mit der Grafischen Entwicklung von kleinen CPLD bzw. FPGA Projekten beschäftigen. Später gehts dann mit VHDL Verilog bzw. RTL weiter.
Eine CPU ist nichts weiter als eine Komplexe FSM "Finit State Machine". google mal Zustandsmaschine oder "State Machine". Dann eine Bauen auf papier oder in einem C programm. Dann mal zwei oder mehr bauen die miteinander kommunizieren. Dann hast du im Prinzip mehrere parallele Prozesse die jeweils sequentiel abgearbeitet werden. Ich empfehle dir mit einem Lehrbuch für Digitale Schaltuingen anzufangen bei Logikfunktionen, FlipFlops, Counter, und Zustandsmaschinen. Danach schnappst du dir VHDL und baust deine eigene CPU. Plane aber etwas Zeit ein. Dann versuch ZWEI davon mal SINNVOLL an EINEM Problem arbeiten zu lassen (Synchronisation, Koheränz usw.) Danach its ein weiterführender Lehrgang auf einer speziellen Zielhardware sicher nützlich (z.B. um die Tricks, Vor- und Nachteile einer Hardwareplattform bzw. Synthesewerkzeuge kennenzulernen)
PittyJ schrieb: > Ashenden: The Designers Guide to VHDL ist recht gut. Ack. > Auch die Bücher von Pong P.Chu sind hilfreich. Nak. Meist undurchschaubar und umständlich beschrieben. Siehe auch den Beitrag "Suche VHDL Buch" Igor Ebner schrieb: > dann Literatur besorgen, VHDL-Synthese Reichart&Schwarz > Codebeispiele für Lattice Diamond suchen VHDL-Code ist portierbar. > und die LED zum laufen bringen, Eine einzige LED? Ich würde ein Lauflicht vorschlagen: http://www.lothar-miller.de/s9y/archives/61-Lauflicht.html > notfalls im Forum für jeden Schritt dumme Fragen stellen müssen Die meisten dieser Fragen wurden schon gestellt. Gute 90% kann dir die Suche beantworten...
Na gut, soweit wie der FPGA theoretisch funktioniert ist mir nun bewusst, auch habe ich mit UND/ODER/NICHT/XOR usw. TTL Gattern auch schon eine 8086 CPU mit ALU, Program Counter, Taktung, Register usw. in der Lehre vor 25 Jahren aufgebaut - diese Kenntnisse sind also auch da. Aber leider hat mir keines Eurer geschätzten Bemühungen dabei geholfen dieses in ipsDiamond als ersten Schritt zu starten. Und wenn es nur darum geht einen einzigen UND Gatter auf den Lattice zu spielen. An Laufschrift noch gar nicht zu denken... Auch weiss ich immer noch nicht, ob ich jetzt mehr Einarbeitungszeit in ipsDiamond stecken soll, oder gleich mit anderen Programmen beginnen soll, die evtl übersichtlicher sind, oder auch mit anderen FPGA Typen / Marken zurecht kommen. Deshalb kam auch meine Frage welche Tools Ihr benutzt?
>Na gut, soweit wie der FPGA theoretisch funktioniert ist mir nun >bewusst, ???? 1. Grundlegende Logic verstehen , dann 2. verschiedene Logic-Blöcke, Routing-Möglichkeiten in PALs GALs PLDs / CPLDs / versch. FPGAs verstehen 3. erst dann Verdrahtung dessen , mittels Schaltplan, VHDL oder sonstwas. (Ein Schaltplan ist norm.weise kein Programm! (kann aber im Sonderfall eins darstellen))
Igor Ebner schrieb: > Und wenn es nur > darum geht einen einzigen UND Gatter auf den Lattice zu spielen. An > Laufschrift noch gar nicht zu denken... > Wie wärs einfach mal eines von Lothars Beispiele in eine .vhd verfrachten und ausprobieren: 1. Diamond Starten 2. File->New-Project 3. FPGA auswählen, 4. lauflicht.vhd der Dateiliste hinzufügen. Damit ist das Projekt angelegt. Im Linkem Panel vo Filelist auf Process wechseln Doppelclick auf "Place&Route Trace" um alle Schritte bis zur statischen Timing Analyse zu starten. Bei obigen Vorgehen sind jetzt erstmal Pins automatisch zugewiesen worden, das kann man dann im "Spreadsheet View" auf die tatsächliche Pins ändern. (Spreadsheet View wird mit dem Icon ganz links in der Toolbar aufgerufen) Danach nochmal "Place&Route Trace" Wenn man einen Schaltplan sehen will: Synplify starten (im Tools Menu) Im Synplify F8 (bzw Run->Run) HDL-Analyst->RTL->Flattened View (Damit habe ich angehängtes Bild erzeugt) > Auch weiss ich immer noch nicht, ob ich jetzt mehr Einarbeitungszeit in > ipsDiamond stecken soll, oder gleich mit anderen Programmen beginnen > soll, die evtl übersichtlicher sind, oder auch mit anderen FPGA Typen / > Marken zurecht kommen. Deshalb kam auch meine Frage welche Tools Ihr Es gibt keine freien bzw bezahlbaren Tools die herstellerübergreifend funktionieren. Altera User plagen sich mit Quartus, Lattice User mit Diamond, Xilinx User mit .....
Lattice User schrieb: > Xilinx > User mit ..... ISE/XST und Altium User mit dem jeweiligen Herstellertool (s.o.) und dem Wrapper von Altium (=doppelte Verwirrung für Anfänger, wenn mal was nicht geht). Duke P.S.: Actel(Microsemi) wäre da auch noch. Die verwenden wohl Libero.
Yo, die Info von Lattice User (Gast) ist das, was mir noch gefehlt hat - und nicht geschaft habe es aus Euch heraus zu entlocken :c) Damit habe ich es endlich geschafft die oben angegebenen VHDL beispiele in den Lattice zu übertragen und die LED's blinken zu lassen. Meine Testplatine lebt :c) Ich weiss dass ich erst einen Bruchteil der VHDL Sprache kenne und noch viel zu lernen habe. Ich will jetzt trotzdem mal in die Zukunft schweifen: Auf der Platine befindet sich noch ein Hitachi TX14D12 Display, das direkt zum Lattice verdrahtet ist: Pins: DTMG, DCLK, R0-R5, G0-G5, B0-B5 Werde ich mir nun die Arbeit von Anfang an machen müssen und die Ansteuerung für das Display anhand des Datenblatts komplett selbst zusammen schreiben müssen, oder gibt es bereits Module oder Code Schnipsel dafür?
Hallo Igor, ich wundere mich etwas dass Dich noch niemand auf opencore.org aufmerksam gemacht hat. Ich habe mal nach Lattice xp10 gegoogelt. Scheint ein seltenes board zu sein, kein Link auf Demodesigns, nichts. Das Handbuch http://www.msc-ge.com/download/lattice/files/ebug12.pdf ist auch nicht toll, sehr kurz. Macht auf mich keinen guten Eindruck. Musst Du unbedingt dieses board benutzen? Ich habe auch Dein Posting auf my-hammer gesehen. Viel zu ambitioniert, Dein plan. Ganz zu schweigen von I2C, Seriell, evtl TCP Stack, evtl Displays. Besorg Dir ein besseres Evaluationsboard, und nicht von Lattice, die Firma zu klein. Nimm Xilinx oder Altera. Und nimm ein board mit einem Display drauf. Ich selbst habe ein Altera-Evalkit von Terasic . http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=56&No=372 Da ist auch ein nios II softcore drauf. Auch wenn Du da die Finger von lassen solltest.
Yo, ich habe auch das Gefühl, dass ich mit dem Lattice so ziemlich alleine da stehe. Ich habe halt das schöne Board vor mir liegen, hat mich nichts gekostet, hat das große Display, Metallfront und noch eine Folientastatur drauf, USB, SD Kartenleser, einen AD Wandler, einen RAM Chip und einen Flash Chip dabei, und sogar noch ein USB Programmierkabel, also alles was man sich so wünscht. Also wollte ich das als Einsprung in die FPGA Welt verwenden. Für einen Privatunterricht wird sich vermutlich auch niemand melden, wenn sich so wenige auskennen bzw das mühsam erarbeitete lieber für sich behalten möchten. Vermutlich wird die schöne Platine in die Tonne wandern und ich arbeite mich zuerst in die ARM Prozessoren ein...
Jetzt also solls ein ARM sein. Deine Postings sind doch die Totalverarsche. Verkauf das Teil bei ebay, und gut is.
Den AVR kenne ich schon einigermassen und wollte was neues kennen lernen, wenn einem schon so eine Platine in die Hände fällt. Warum soll das eine Totalverarsche sein? Darf ich Dich mal von weiter oben zitieren? Autor: Martin (Gast) Datum: 10.08.2011 14:25 ..."Bleib lieber bei Controllern"... Wie ich schon weiter oben geschrieben habe bin ich am überlegen ob ich auf den Zug aufspringen soll oder nicht. Der Lattice scheint dafür weniger geeignet zu sein, obwohl mich das kleine bisschen, was ich in VHDL zusammen bekommen habe, schon fasziniert hat. Vielleicht bekomme ich ja mal eine Xilinx Platine in die Hand. Bis dahin schaue ich mich mal weiter um ( ohne jemanden verarschen zu wollen, nenn wir es Wegfindung... )
@ Igor Ebner Hallo Igor, Ich weiss, der Thread ist relativ alt, aber hoffe trotzdem, du ließt noch mit :) Mir geht es ähnlich wie dir. Komme aus der AVR Welt und möchte nichts verpassen und ständig hinzulernen. Wie weit bist du nun gekommen und hast du nun FPGA drauf :) ? Welches Projekt bist du als erstes angegangen und was hat dir am besten geholfen FPGA zu verstehen ?
Yatko Jaens schrieb: > Welches Projekt bist du als erstes angegangen Ein Blinklicht und dann den Binärzähler auf LEDs, danach das Lauflicht, dann die serielle Schnittstelle, dann einen Modellbauservo über RS232 ansteuern, dann auf einem VGA Monitor Pong spielen... > und was hat dir am besten geholfen FPGA zu verstehen ? Einfach damit herumspielen: Learning by doing! Auf keinen Fall darfst du dir ein Riesenmegamonsterprojekt vornehmen und dann in einem Monat fertig sein wollen. Das sind dann immer die Kandidaten, die ihr EVAL-Board nach 3 Monaten wieder bei EBAY verticken... Als Tipp: um zu sehen, ob dir das überhaupt liegt kannst du ja einfach mal die Software (ISE) herunterladen und ein Blinklicht machen: http://www.lothar-miller.de/s9y/archives/81-Xilinx-ISE-Step-by-Step.html http://www.lothar-miller.de/s9y/archives/80-Hello-World!.html
Hallo Lothar, das ging sogar noch, das hat auch soweit funktioniert. Bei mir scheiterte es dann als ich ein Softcore einbauen wollte. Das Softcore selbst ging auch noch, aber sämtliche vom Hersteller (Digilent) spezifisch für das Board zur Verfügung gestellten Demo Projekte und auch fertige Libraries funktionierten nicht, weil sich die Versionsnummer der Xilinx SDK/EDK/ISE geändert hat. Die Bescheibung passte nicht mehr und die IDE spukte Fehler aus, die korrigiert hätten werden müssen. Es kam keine Hilfe vom Hersteller, das interessierte ihn nicht einmal, dass seine alten Demos nicht mehr funktionieren, es kam auch keine brauchbare Hilfe aus dem Forum. Nach mehrmonatigem Herumprobieren, lesen, googeln, dumme Fragen stellen und angepöbelt werden kam ich keinen einzigen Schritt mehr weiter und habe die Lust daran verloren. In weiser Voraussicht dachte ich mir, wenn ich ein 1000€ teueres Board kaufe, dass ich dann nicht so schnell aufgebe, habe ich es doch noch ein paar mal wieder angepackt, und scheiterte immer wieder an der gleichen Stelle. Das frustriert. Ein Hobby sollte nicht frustrieren... Und so weise war der Kauf dann auch nicht, eher dumm :c)
Igor Ebner schrieb: > Bei mir scheiterte es dann als ich ein Softcore einbauen wollte. Der kluge Schluss daraus kann sowieso nur sein: ein Softcore ist Siliziumvergeudung. Ein FPGA ist super für kundenspezifische Anwendungen, aber was ist an einem CPU-Core üblicherweise spezifisch? Wenn Prozessor im FPGA, dann ein Hardcore. Denn mit den kompakten ARMs kommen die jetzt (nach anfänglichen Versuchen mit AVR- und PPC-Cores) so langsam wieder ins Rennen. > es kam auch keine brauchbare Hilfe aus dem Forum. Weil das im echten Leben kaum einer macht. Bestenfalls an ein paar Hochschulen wird diese Softcores-könne-Alles Lehre noch verbreitet... > wenn ich ein 1000€ teueres Board kaufe Autsch, so ein Board wird garantiert einen spürbaren Wertverlust haben. Aber bei der ganzen Softcoregeschichte kommen dann ja noch Lizenzen und Software dazu...
Ein FPGA mit Hardcore klingt gut... Hab mal gegoogelt, meinst Du sowas wie der Actel SmartFusion? Ich habe die Befürchtung, dass man da mangels Verbreitung auch keine große Hilfe erwarten kann.
Igor Ebner schrieb: > Ein FPGA mit Hardcore klingt gut... > Hab mal gegoogelt, meinst Du sowas wie der Actel SmartFusion? Ich war da in Gedanken eher bei Xilinx und Altera: http://www.altera.com/devices/processor/arm/cortex-a9/m-arm-cortex-a9.html http://www.embedded.com/electronics-products/electronic-product-reviews/embedded-tools/4115523/Xilinx-puts-ARM-core-into-its-FPGAs
Lothar Miller schrieb: >> wenn ich ein 1000€ teueres Board kaufe > Autsch, so ein Board wird garantiert einen spürbaren Wertverlust haben. > Aber bei der ganzen Softcoregeschichte kommen dann ja noch Lizenzen und > Software dazu... Für Hobbyisten: http://www.bomerenzprojekt.de Lizenzkosten bei Xilinx und bei Digilent: Null Lizenzkosten für Konfiguration incl. 8bit-Softcore: Null Kosten für Hardware bei trenz: Spartan 3E Starter Board ca. 145EUR +MwSt oder: Nexys2 500K 114EUR +MwSt Academic noch billiger.
Josef G. schrieb: > Für Hobbyisten: http://www.bomerenzprojekt.de Erstens: Hör doch bitte mal auf, überall wo es auch nur entfernt um uC Cores im FPGA geht, mit deinem Projekt rumzuspammen. Zweitens: Dein letzter Beitrag ergibt nicht den leisesten Sinn. Egal, ob man einen Hardcore oder Softcore im FPGA hat, man kann es immer gleichzeitig auch für andere Sachen benutzten.
Klaus schrieb: > Zweitens: Dein letzter Beitrag ergibt nicht den leisesten Sinn. Egal, ob > man einen Hardcore oder Softcore im FPGA hat, man kann es immer > gleichzeitig auch für andere Sachen benutzten. Ich hätte besser schreiben sollen: Ein Hobbyist, der sich ein FPGA-Board zulegt, wird sich nicht durch die Wahl des FPGA auf eine bestimmte CPU festlegen wollen.
Walter M. schrieb: > Schau dir mal die Seite etwas genauer an: > > http://www.fpga4fun.com Kannte ich noch nicht. Was mir bei der "SPOC"-CPU aufgefallen ist: > Part 6: Hardware architecture ... coming soon Coming soon seit 2006! Meine CPU ist offengelegt.
Josef G. schrieb: > Kannte ich noch nicht. Was mir bei der "SPOC"-CPU aufgefallen ist: >> Part 6: Hardware architecture ... coming soon > > Coming soon seit 2006! Meine CPU ist offengelegt. sag mal, ist das jetzt dein thread oder was? Der Post war an den TO gerichtet!!!!
Josef G. schrieb: > Coming soon seit 2006! Meine CPU ist offengelegt. Aber Josef, wir haben 2013 und nicht 1970. Mir reicht schon ein Blick in Deine Signaldefinitionen, um davon Abstand zu halten. Schau Dir bei Lothar an, wie lesbarer Code aussieht. Code, den man auch einem Anfänger/Einsteiger zumuten kann. Duke
Lupinus Digitalus schrieb: > Wenn Du neben Literatur eine andere Art der Einarbeitung suchst, dann > kontaktiere einfach einen Schulungspartner des FPGA Herstellers. Ich war > z.B. schon bei der Firma Evision in dem VHDL Einsteiger Kurs und habe > gute Erfahrungen gemacht. Schon mal dort was bestellt?
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.