Hallo,
ich habe mich jetzt schon lange Zeit mit CPLDs und FPGAs beschäftigt.
Mich störte dabei immer, dass die Programmer sehr teuer sind. 200 Euro
für das Platform USB Cable von Xilinx sind mir definitiv zu viel. Und
dann braucht man auch noch einen entsprechenden Konfigurations
Speicher... Ich will aber einen eigenen Flashbaustein und einen
Mikrocontroller benutzen: Für ein Embedded Design. Und ich will ein
eigenes Board entwickeln. Also scheiden die fertigen Lösungen schonmal
aus.
Jetzt habe ich gelesen, dass sich mit Xilinx Impact aus den Projekten
sogennante "Serial Vector Format" Dateien erzeugen lassen. Dazu gibt es
auch eine Dokumentation von Xilinx.
Nun meine Idee: Ich könnte einen Mikrocontroller auf der einen Seite mit
einer seriellen Schnittstelle ausstatten, vielleicht noch USB, und auf
der anderen Seite eine JTAG Schnittstelle per Software implementieren.
Am besten noch mit verschiedenen Spannungspegeln für die verschiedenen
Bausteine. Auf den Mikrocontroller schreibe ich dann einfach einen SVF
Interpreter. Dann muss man nur noch die Datei über RS232 oder USB
schicken und schon wird der FPGA oder CPLD über JTAG programmiert. Und
für ein Embedded Design wird der Mikrocontroller mit Schnitstelle
einfach auf das FPGA Board integriert und kann dort auf einem
zusätzlichen Flash die Konfiguration zwischenspeichern und jederzeit
abrufen.
Jetzt meine Frage: Mache ich irgendeinen Denkfehler? Natürlich lässt
sich so ein SVF Interpreter nicht so einfach schreiben. Das ist schon
eine menge Arbeit wenn es fehlerfrei laufen soll. Außerdem muss der
Mikrocontroller mit den verschiedenen Spannungen zurecht kommen. Aber am
Ende hätte man ein JTAG Programmer für CPLDs und FPGAs für den Preis des
Mikrocontrollers und dessen Peripherie... wenn man von den Stunden fürs
Programmieren absieht. =)
Schreibt doch mal, was Ihr davon haltet.
Viele Grüße
Sebihepp
Hallo,
in der CT' hatten die mal FPGA Board welches über einen AVR ATmega und
einer SD Karte geladen wurde. Evt. ist das ja was für dich.
Gruss
Ulrich Radig
Danke erstmal für alle Antworten.
Der c't Artikel ist sehr interessant.
Von OpenOCD habe ich auch schon viel gehört. Aber soweit ich weis ist
das "nur" die Software. Kann ich also mit z.B. USBprog und OpenOCD
sowohl Xilinx CPLDs und FPGAs als auch ein Configuration Flash über JTAG
programmieren? Das fände ich die einfachste Lösung. USBprog ist recht
günstig, OpenOCD wird von Windows und Linux unterstützt und für Embedded
Designs kann ich einfach solche Xilinx Flash Bausteine verwenden. Wie
sieht das mit den Spannungspegeln aus?
Letzteres ist zwar sehr interessant, aber damit werden die FPGAs über
den SlaveMode Programmiert. Also könnte man keine CPLDs programmieren.
Außerdem benutze ich PICs. (Bitte keine Diskussion AVR/PIC)
Viele Grüße
Sebihepp
Einfach mal bei ebay in der Suche "fpga" eintippen. Da gibt es einige
sehr günstige Angebote aus China. Viel Altera, aber auch Xilinx. Einfach
mal blättern. Habe ich auch gekauft, kam nach 3 Wochen Lieferzeit gut
verpackt aus Hong-Kong an. Funktioniert bestens.
sebihepp schrieb:> Aber am Ende hätte man ein JTAG Programmer für CPLDs und FPGAs für den> Preis des Mikrocontrollers und dessen Peripherie...
Und gratis dazu eine recht umständliche und fehlerträchtige Generierung
der SVF-Datei, incl. der Übertragung...
Als Spartipp: kauf dir für 10 Euro eine LPT-Steckkarte und für 3 Euro
die Teile für das Parallel-Cable III...
Siehe auch den Beitrag "Re: Einstieg in programmierbare Logik"
Oder sieh dir das fertige Kabel von Digilent (Trenz) mal an. Da bist du
weit weg von 200 Euro und nah dran an "selber machen lohnt sich nicht".
>>Hast Du dir mal die XAPP058 von Xilinx angesehen?> Jep, daher habe ich ja die Idee einen Mikrocontroller als SVF> Interpreter zu benutzen.
Das mache ich auch für den Feld-Einsatz (damit sich so ein FPGA sein
PROM "selber" umprogrammieren kann), aber für den Schreibtisch und das
Labor wäre mir da viel zu umständlich.
Damit sich der FPGA selbst neu programmieren kann, nimmt man SPI oder
BPI Flash. Der lässt sich dann auch indirekt über JTAG erstmalig
programmieren, danach über das FPGA Design an sich.
Christian R. schrieb:> Damit sich der FPGA selbst neu programmieren kann, nimmt man SPI oder> BPI Flash. Der lässt sich dann auch indirekt über JTAG erstmalig> programmieren, danach über das FPGA Design an sich.
Ja, in neueren Designs... ;-)
Das Ganze ist auch eher ein Abfallprodukt, ursprünglich wurden über
diese Schnittstelle CPLDs in dem System umprogrammiert. Und weil damit
der JTAG-SVF-Player schon da war, wird jetzt eben auch noch das
Config-PROM des FPGAs über die selbe Schnittstelle umprogrammiert.
>Als Spartipp: kauf dir für 10 Euro eine LPT-Steckkarte und für 3 Euro>die Teile für das Parallel-Cable III...>Siehe auch den Beitrag "Re: Einstieg in programmierbare Logik"
Soweit ich weis, wird das Parallelkabel nicht mehr unterstützt. Sonst
würde ich mir das nachbauen.
Nochmal zum USBprog und OpenOCD: Kann ich nun damit alle Xilinx Devices
programmieren, oder nicht?
>Oder sieh dir das fertige Kabel von Digilent (Trenz) mal an. Da bist du>weit weg von 200 Euro und nah dran an "selber machen lohnt sich nicht".
Zuletzt würde ich wohl diese Möglichkeit wählen. Das sind stolze 80 Euro
als Student.
>Hier gibt's einen XSVF-Player auf FT2232 Basis:>http://embdev.net/topic/139121#new
Auch eine schöne Idee, aber da steht nichts von CPLDs, sondern nur die
Spartan 3 A Serie.
>Wenn Du eine FT2232 hast, kannst Du zur direkten JTAG Programmierung von>Xilinx Bausteinen auch xc3sprog von>svn co https://xc3sprog.svn.sourceforge.net/svnroot/xc3sprog xc3sprog>verwenden.
Funktioniert das garantiert mit allen Xilinx Bausteinen? Dann würde ich
mir so einen selber bauen.
Garantiert funktioniert garnichts...
Aber die Bausteine, mit denen ich arbeite (XC95XL, XC3S und XC6s)
versuche ich im code aktuell zu halten. Und jemand hat auch schon mit
XC5V gearbeitet und Patches beigetrage.
Noch einfacher geht es über "Slave Serial".
Wenn man z.B. ChipScope usw. mit einem JTAG-(SVF)-Player sowieso nicht
benutzen kann, dann hat JTAG auch keine richtige Vorteile in dem Fall.
In meinem Projekt benutze ich einen PIC24, der über USB und von der
SD-Karte meinen Spartan3-400 in 3 sek. (Slave Serial) konfiguriert.
Man kann z.B. mit einen PIC18F2550 sehr günstigen und schnellen
USB-Programmer machen.
MfG aus Westerwald
Das Platform USB Cable kann man damit ersetzen, und auch den
eigenen Prototypen z.B CPLD als stand allone mit einer MCU testen.
Via device ID kann man dann testen, ob das CPLD auch anspricht.
Oder die Beschaltung einen Fehler hat..
Gruss Holger.
Ich habe das mit einem JTAG test via ispPAC30 (LATTICE
Analog-Chip)gemacht.
@Holger Harten:
Wenn du mir noch sagen könntest auf welche Hardware sich das bezieht,
wäre ich überglücklich. =) Das steht leider nicht in deinem Post und der
Beitrag davor handelt ja von der Programmierung über Slave Serial (Was
CPLDs leider nicht können, laut Xilinx)
@sebihepp
http://www.latticesemi.com/documents/an8082.pdf>> Programmierung über Slave Serial via JTAG mit FTDI-CHIP FTDI 3232.
Gruss Holger.
Du kannst mal den Pog-Algo für den CPLD XC95xx versuchen.
Uwe Bonnes hat das da ja als Source-File mit drin.
Sie Link ..