Forum: FPGA, VHDL & Co. CPLD und FPGA von Hand konfigurieren


von Oliver K. (oliverkroll)


Lesenswert?

Normalerweise schreibt man ein Design in VHDL, simuliert es in ModelSim, 
synthetisiert es in der Xilinx-ISE-Design-Suite und schreibt das Hexfile 
per USB in ein CPLD oder FPGA.
Ich möchte jetzt eine einfache Schaltung, zum Beispiel einen 
1-Bit-Volladdierer, auf Papier entwickeln, auf Papier übersetzen (in 
eine Art Hexfile), dieses Hexfile in meinen C64 eingeben und über den 
Userport das CPLD oder FPGA programmieren/konfigurieren.
Leider finde ich nirgendwo Angaben, wie man das Hexfile selber erzeugen 
kann. Kann mir da jemand weiterhelfen ?

von user (Gast)


Lesenswert?

also ich würde mal einen PAL/GAL anschauen

http://en.wikipedia.org/wiki/Programmable_Array_Logic

von Oliver K. (oliverkroll)


Lesenswert?

Soweit mir bekannt ist, sind die Programmieralgorithmen für GALs nicht 
veröffentlicht worden. Ich hatte letztens 
http://www.mikrocontroller.net/articles/Low_Cost_FPGA_Konfiguration 
gelesen und hatte mir gedacht, daß ich statt eines Attiny meinen C64 
verwenden könnte. Die Ansteuerung über USB ist aber etwas kompliziert. 
Vielleicht kann man eine einfache Schaltung ja auch selber in das 
Hexfile übersetzen, nur habe ich dazu in den Datenbüchern nicht viel 
gefunden.

von Mirco (Gast)


Lesenswert?

Oliver Kroll schrieb:
> Leider finde ich nirgendwo Angaben, wie man das Hexfile selber erzeugen
>
> kann.

Da wirst Du Pech haben! Solche Files sind FPGA-spezifisch und nur 
speziell ausgesuchte Partner der FPGA-Hersteller bekommen diese Infos 
unter NDA, um z.B. an partial reconfig zu forschen.

Das Ganze ist dann noch schwer platzierungsbahängig. Du musst Dir ja 
vorstellen, dass ganz bestimmte LUTs zu ganz bestimmten Interconnections 
passen, die dann alle geschaltet werden müssen. Du musst also alle 
Randbedinungen und Topologieaspekte einfliessen lassen, um zu einem 
solche file zu gelangen, dass dann etwas einfaches tut.

Ich sehe auch den Sinn nicht ganz ein, warum man vom enfachen VHDL auf 
die unterste Bit-Ebene gehen soll.

von user (Gast)


Lesenswert?

Das problem wird sein, das kein FPGA/CPLD Hersteller Informationen zum 
internen Aufbau und somit die Erzeugung der HEX Datei zur verfügung 
stellt

von Oliver K. (oliverkroll)


Lesenswert?

Daß die Daten nur unter 
http://de.wikipedia.org/wiki/Geheimhaltungsvertrag vergeben werden, 
beantwortet meine Frage schon. Kann man dann eben leider nicht selber.

Die Mühe des Plazierens hätte ich mir für eine kleine Schaltung 
(1-Bit-Volladdierer) schon gemacht.

Ich hätte es wichtig gefunden, ein FPGA einmal ganz selber konfiguriert 
zu haben.

von user (Gast)


Lesenswert?

Also hier werden die GAL-Programmieralgorithmen beschrieben:

http://www.armory.com/~rstevew/Public/Pgmrs/GAL/algo.htm

von Mirco (Gast)


Lesenswert?

Wenn Du das unbedingt testen willst: Nimm den FPGA-Editor. Dort kannst 
Du Logik einbauen und direkt das Prog file generieren. Das entspricht in 
etwa der Eingabeebene von früher, als es noch kein VHDL gab.

von Oliver K. (oliverkroll)


Lesenswert?

Mirco schrieb:
> Wenn Du das unbedingt testen willst: Nimm den FPGA-Editor. Dort kannst
> Du Logik einbauen und direkt das Prog file generieren. Das entspricht in
> etwa der Eingabeebene von früher, als es noch kein VHDL gab.

Der FPGA-Editor 
(www.xilinx.com/support/sw_manuals/2_1i/download/fpedit.pdf) ist ein 
graphisches Programm. Ich hatte eher an die Instruction set summary von 
Mikrocontrollern gedacht. Aber scheint ja geheimgehalten zu werden.

von Mirco (Gast)


Lesenswert?

Der Schritt von der Netlist zum physical placement im FPGA ist schon 
nicht klein, aber  von dort in Richtung Programmierfile sicher gewaltig. 
Kennst DU Dich mit den internen Strukturen aus?

Weisst Du, welche FFs und Schalter zu setzen musst, um alleine eine LUT 
zu ins Laufen zu bekommen, wie Du es brauchst? Dasselbe gilt für 
IOs-ZEllen und die vielen Schaltzentren. Die musst Du alle irgendwie 
setzen, damit ein Signal von links nach rechts durch den Chip läuft. Da 
werden auch bei Xilinx einie 10 Leute dran sitzen, um das zu pflegen. 
Einarbeitsungausfwand 5 Jahre!

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

Oliver Kroll schrieb:
> Soweit mir bekannt ist, sind die Programmieralgorithmen für GALs nicht
> veröffentlicht worden.
Link:
http://www.s-line.de/homepages/bosch/indexen.html

C-Source-Code: galasm.tar.gz
http://www.s-line.de/homepages/bosch/galasm/galasmen.txt
Somit ist das was für das Project.
Architektur und Position der Fuse Matrix ist bei Lattice zu holen.

Viel Erfolg.

Gruss Holger.

von Oliver K. (oliverkroll)


Lesenswert?

Na gut. GALs könnte man dann vielleicht programmieren. Aber CPLDs und 
FPGAs anscheinend eben leider nicht.

Vielen Dank an alle.

von Sigi (Gast)


Lesenswert?

Bei kleinen+alten Xilinx FPGAs hast du eine relativ gute
Doku über die Architektur. Dazu noch ein "sehr" kleines
Programmierfile. Mit etwas rev.eng. lässt sich da eineiges
entschlüsseln. Du must ja nicht jedes Feature verwenden,
IO und interne Zellen (FF+LUTs) und deren Verschaltung
untereinander sind schon genug für den Anfang.

Bei Xilinx CPLD (XC9000/XL) werden z.B. Progfiles im JEDEC
Format erzeugt. Deren Dekodierung ist relativ simple.
Einfach mal schauen, was sich bei einzelnen IOs verändert,
schon hat man einen Algo für IOs. Für die interne Struktur
ist es ein wenig komplizierter, aber auch machbar.

von Uwe (Gast)


Lesenswert?


von Uwe (Gast)


Lesenswert?

Für GALS reicht übrigens das Datenblatt dafür aus !
Neben und über den Logikdiagrammen stehen die Bits die gebrannt werden 
müßen im JEDEC file. Je nach Modus. Und wie die OLMC konfiguriert werden 
muß.
http://www.latticesemi.com/lit/docs/datasheets/pal_gal/16v8.pdf

von Oliver K. (oliverkroll)


Lesenswert?

Ich werde das mal ausprobieren. Aber GALs sind eben keine CPLDs oder 
FPGAs.

von Bronco (Gast)


Lesenswert?

Warum denn die Mühe?
Wäre es nicht sinnvoller, so etwas wie ein XSVF zu erzeugen und dann im 
C64 den XSVF-Player zu implementieren?
http://www.xilinx.com/support/documentation/application_notes/xapp503.pdf

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


Lesenswert?

Oliver Kroll schrieb:
> möchte jetzt
Ja, das könnte aber doch noch länger dauern...  ;-)

von Oliver K. (oliverkroll)


Lesenswert?

Ich habe vielleicht doch etwas gefunden:
In www.xilinx.com/support/documentation/application_notes/xapp452.pdf
wird beschrieben:
Bitstream Composition und
Configuration Frame Addressing

Ist erst einmal eine Menge zu lesen. Aber damit könnte man dann 
vielleicht doch eine kleine Schaltung selber auf Papier übersetzen  (und 
in ein FPGA hineinschreiben). Und Geheimhaltungsverträge gibt es dann 
anscheinend für diesen Teil nicht.

von Uwe (Gast)


Lesenswert?

Naja, da steht aber nicht sehr viel über Routing der Interconnects drin 
(der Aufbau der Verdrahtungsmatrix). Also wenn du das wirklich machen 
willst geht eigentlich nur Virtex 1 und E.
Für die Theorie kannst du auch mal nach CAL1024 bzw. XC6200

von Duke Scarring (Gast)


Lesenswert?

Vielleicht hilft das etwas weiter:
http://www.fpl2012.org/Presentations/FP19.pdf

Duke

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.