Guten Tag, ich überlege aktuell, selber ein FPGA-Board zu erstellen. Am liebsten würde ich das auf 2 Layern erledigen, welches FPGA würdet ihr empfehlen (am besten im TQFP, QFN oder ähnlichen Packages) um das umzusetzen? Mir ist klar, dass es vom Umfang bzw. von den Möglichkeiten her beschränkt ist im Vergleich zu größeren FPGAs die dann mehr I/Os, Gates und Flip-Flops haben. Eine kleine CPU sollte in das FPGA passen und eine PLL zum Erzeugen verschiedener Frequenzen für diese CPU hätte ich auch gerne. Im Prinzip reichen mir ~30 I/Os, da so eine CPU nicht viele Beinchen haben wird. Eine Frage die mich noch beschäftigt: Wie läuft das mit dem Flash / RAM? Einige FPGAs verlieren den Inhalt ohne Strom und benötigen dafür einen externen Flash, der das Programm beinhaltet. So einen externen Flash stelle ich mir sehr schwierig zum designen und zum löten vor, gibt es FPGAs mit integriertem Flash? Falls ja: Sind diese zu bevorzugen wenn es um ein möglichst einfaches Platinenlayout geht? Programmieren würde ich den Chip über JTAG, also kein extra USB Anschluss. Grüße
:
Bearbeitet durch User
Hab da mal vor kurzem gesucht, konnte mein Problem dann aber mit einem Controller lösen. Das beste Ergebnis war ein MAX10 von ALTERA: https://www.altera.com/support/literature/lit-index/lit-pkg/package.html?family=MAX_10 erhältlich hier: https://www.digikey.at/product-detail/de/altera/10M02SCE144C8G/544-3098-ND/5284822?WT.z_cid=ref_findchips_standard z.B. per Sammelbestellung. Das wäre auch aus anderen Gründen nich so schlecht, Versorung zum Beispiel, oder die integrierte Konfiguration. Es ist halt ein wenig klein. Kommt halt drauf an, was du brauchst.
wie wäre es mit dem hier, bei mouser kann man auch als Privatmann bestellen und sogar ab 50€ versandkostenfrei: http://www.mouser.com/ProductDetail/Intel-Altera/10M02SCE144C8G
Sonst fällt mir noch die ICE40 oder ICE5 Serie von Lattice ein: http://www.mouser.com/ProductDetail/Lattice/ICE5LP1K-SG48ITR50 http://www.mouser.com/ProductDetail/Lattice/ICE40LP384-SG32
user schrieb: > Sonst fällt mir noch die ICE40 oder ICE5 Serie von Lattice ein: Danke, das ist schon eher die Größe, die ich mir vorgestellt habe, 144 Pin sind dann doch etwas viel. Blöde Frage - aber woran erkenne ich, ob da eine kleine 4- oder 8-bit CPU mit RAM und eigenem Flash reinpasst? Edit: Was ist bei dem hier: http://www.mouser.de/search/ProductDetail.aspx?R=0virtualkey0virtualkeyICE40LP384-SG32 mit 384 Logic Cells (LUT + FlipFlop) gemeint? Mit 384 (AND/OR etc.)-Gattern kann man glaub ich keine wirkliche CPU mit Registern bauen, oder?
:
Bearbeitet durch User
ja das sind 384 LUTs mit 4 Eingängen und ein FlipFlop, da wird eine 8bit CPU sehr knapp. Dann doch eher den hier: http://www.mouser.com/ProductDetail/Lattice/ICE5LP1K-SG48ITR50 der hat 1100 LUTs
user schrieb: > Die ZPU benötigt z.B. ca 500LUTs Das ist eine 32-bit CPU? Dann müsste eine kleine 8-bit CPU doch unterzubringen sein, oder? Ich werde erst mal mit einer 4-bit CPU beginnen. Ich hätte noch eine Frage zum ICE40LP384: Dieses FPGA besitzt einen NVCM, der nur einmal programmierbar ist, d.h. es macht nur Sinn, diesen Speicher zu benutzen, wenn man mit dem Design fertig ist, oder? Ansonsten muss ich bei jedem Neustart das aktuelle Design wieder in den RAM laden? Der LP384 hat keine RAM-Blöcke, macht es überhaupt Sinn, damit eine CPU zu erstellen wenn man keine externen Dinge wie RAM und ROM anschließen will und trotzdem irgendwie ein ausführbares Programm für die CPU auf das FPGA laden möchte? Der LP384 hat auch keine PLL aber ich kann prinzipiell einen niedrig taktenden Crystal oder Oszillator an den Clock-Input Pin dran hängen? Gibt es eine Unter- bzw. Obergrenze für den Takt? Um den LP384 zu betreiben, benötige ich verschiedene Versorgungsspannungen, 1.2V für den Core und irgendwas zwischen 2.3 und 3.0V (da für NVCM Programming maximal 3.0V), da ich so wenig Spannungswandler wie möglich auf dem Board haben möchte, werden die I/Os wohl auch mit dieser Spannung (2.3 - 3.0V) laufen, macht das Sinn? Für den LP384 benötigt man ein "Lattice Programming Tool" um den SRAM zu beschreiben, wo findet man das? Würde da so etwas funktionieren? http://www.ebay.com/itm/USB-Download-Cable-Jtag-SPI-Programmer-for-LATTICE-FPGA-CPLD-/111284428437 Nach dem im Artikelnamen steht "Jtag SPI Programmer" ich aber im Datenblatt des ICE40 nirgends eine JTAG Referenz erkennen kann, gehe ich davon aus, dass das Ding wohl nur in Verbindung mit einem externen SPI-Flash funktioniert, nicht aber, wenn man den internen SRAM beschreiben möchte? Die IDE: http://www.latticesemi.com/Products/DesignSoftwareAndIP/FPGAandLDS/LatticeDiamond.aspx#_FD13D8A25CBB47BD83F143E5B55DBC75 unterstützt anscheinend keine ICE40 Devices?
:
Bearbeitet durch User
Hol dir doch erst mal ein günstiges Starterkit, wie das MachXO2 Breakout board, bevor du dir hier nen Aufsatz schreibst. Lieber mehr als wenig Logikeinheiten, abspecken geht immer. Regel Nr. 1: Vor dem Einkaufen das (gut simulierte) Design test-synthetisieren. Die ZPU kann man auch auf 8 bit-Register runterkochen und entsprechend Logik sparen. Dann muss man nur mit dem C-Compiler aufpassen, oder die Stackmaschine in Assembler programmieren. Minimaler ist nur noch die J1.
Strubi schrieb: > Hol dir doch erst mal ein günstiges Starterkit, wie das MachXO2 Breakout > board, bevor du dir hier nen Aufsatz schreibst. Aber wenn ich das Dev-Kit hier habe, stelle ich mir immer noch die selben Fragen, ich würde schon gerne mal so ein FPGA Board selber erstellen und ich hab das Gefühl, dafür muss ich auf die oben genannten Fragen eine Antwort finden.
Zum ICE40 gibt's die OSHW-Boards von Olimex: https://olimex.wordpress.com/tag/ice40/ https://www.olimex.com/Products/FPGA/iCE40/
Max M. schrieb: > Aber wenn ich das Dev-Kit hier habe, stelle ich mir immer noch die > selben Fragen, ich würde schon gerne mal so ein FPGA Board selber > erstellen und ich hab das Gefühl, dafür muss ich auf die oben genannten > Fragen eine Antwort finden. Naja, um so Dinge wie Spannungswandler, SPI-Flash, Programmierschnittstelle, Layout, Abblockkondensatoren etc. musst Du Dich dann erst mal nicht mehr kümmern. Das vereinfacht den Start schon deutlich. Die Frage nach der passenden FPGA-Serie und -Modell musst Du natürlich vorher beantworten. Da halte ich Strubis Regel Nr. 1 für den richtigen Weg.
Max M. schrieb: > Aber wenn ich das Dev-Kit hier habe, stelle ich mir immer noch die > selben Fragen Aber die Antwort auf die meisten Fragen liegt dann vor dir. Mein Tipp aus der Praxis: wenn es schon funktionierende Boards gibt, dann beschaffe die ( oder wenigstens deren Fertigungsdaten). Man muss ja nicht mit aller Gewalt jeden Fehler selber machen...
MachXO2 oder MAX10 finde ich besser als ICE40 für Selbstbau. Die benötigen nur eine 3.3V Spannung und haben Konfigurationsflash auf dem Chip. Beide lassen sich per JTAG programmieren. ICE40 brauchen 2 Spannungen, haben kein Flash und werden über SPI programmiert. Ausserdem sind sie nur etwa halb so schnell (ausser -HX Typen). Sehr interessantes Projekt mit MachXO2: https://hackaday.io/project/25958-tinyfpga-a-series Das kann man leicht selber nachbauen, KiCAD Layout findest du auf Github. Es gibt auch einen günstigen Selbstbau-JTAG Programmer dazu: https://github.com/tinyfpga/TinyFPGA-A-Programmer (keine Ahnung ob der schon funktioniert). Der MachXO2 mit 1200 LUTs kann leicht eine kleine CPU aufnehmen und hat 7kByte BlockRAM für Programm und Daten. Lattices MICO8 CPU benötigt z.B. minimal nur etwa 200 LUTs und es gibt einen GCC Port dazu. Andi
Danke für deine Antwort, Andi. Andi schrieb: > ICE40 brauchen 2 Spannungen, haben kein Flash und werden über SPI > programmiert. Das ist ja im Prinzip erstmal einfacher zu verstehen da SPI ein recht simples Protokoll ist, oder? Bedeutet das, dieser Programmer https://www.mikrocontroller.net/link/ebay/111284428437 würde funktionieren? Andi schrieb: > MachXO2 oder MAX10 finde ich besser als ICE40 für Selbstbau. Die > benötigen nur eine 3.3V Spannung und haben Konfigurationsflash auf dem > Chip. Wenn man kein BGA löten kann bleibt einem nur die TQFP Version, und die ist riesig mit 144 Pins, ich hatte mir vorgestellt, das Board so klein wie Möglich zu machen damit es der Größe eines realen DIP-Prozessors möglichst nahe kommt und da würden die Lattice Dinger perfekt passen. Wegen einem Spannungswandler hin oder her, das ist mir nicht so wichtig. Das mit dem Flash stört in der Tat etwas... Lothar M. schrieb: > ein Tipp > aus der Praxis: wenn es schon funktionierende Boards gibt, dann > beschaffe die ( oder wenigstens deren Fertigungsdaten). Okay, trotzdem verwirrt mich das etwas, dass die IDE von Lattice den ICE40 nicht unterstützt bzw. er wird nicht explizit aufgeführt. Bedeutet "SPI: In this mode an external CPU or a microcontroller programs the device in SPI mode, the device being the Slave." (http://www.latticesemi.com/en/Support/AnswerDatabase/2/7/1/2714.aspx), dass man über einen SPI-Programmer die Konfiguration der IDE vom PC zum FPGA überträgt?
:
Bearbeitet durch User
asdfasd schrieb: > Zum ICE40 gibt's die OSHW-Boards von Olimex: Da gibt es auch was bei Trenz electronic: https://shop.trenz-electronic.de/de/TE0876-01-IceZero-mit-Lattice-ICE40HX
Ob der angegebene Programmer funktioniert für das programmieren über SPI für ICE40 kann ich die nicht sagen. Man kann auch MachXO2 über SPI programmieren (und auch I2C). SPI ist grundsätzlich schon einfacher, es fragt sich halt ob der Lattice Programmer den Adapter unterstützt. Allerdings bekommst du zum Preis dieses Programmers ein ganzes Breakoutboard mit MachXO2/3 und FT2232 drauf. Mit etwas basteln kannst das auch als Programmer für eigene Boards verwenden. Es gibt sowohl bei ICE40, wie auch MachXO2, TQFP100 und TQFP144. Nur dass der ICE40 im TQFP100 keine PLL drin hat, und der MachXO2 schon, und dazu noch das Flash und einen guten internen Oszillator. Kostet aber auch etwas mehr. Eine Platine in DIL Grösse wrid wohl nur mit QFN oder BGA möglich sein. Zum Programmieren der ICE40 brauchst du die ICEcube Software, nicht das Lattice Diamond. Zum laden des Bitstreams brauchst du dann aber wieder den Diamond Programmer. Andi
Max M. schrieb: > Blöde Frage - aber woran erkenne ich, ob da eine kleine 4- oder 8-bit > CPU mit RAM und eigenem Flash reinpasst? Die Anforderung, dass die CPU ein eigenes internes Flash besitzen muss, schließt eigentlich alle derzeit erhältlichen FPGAs aus. Die Firmware für die CPU(s) befindet sich im ganz normalen FPGA-Bitstream und wird beim Laden in die betreffenden RAM-Bereiche geladen. Falls es sich unbedingt aus CPU-Sicht um einen ROM-Bereich handeln soll, muss man eben im Logikdesign die entsprechende Write-Enable-Leitung deaktivieren. Dennoch handelt es sich dann keineswegs um Flash-Speicher, da dieser auf einem komplett anderen Funktionsprinzip basiert. Bei vielen neueren FPGA kann man aber das angeschlossene Bitstream-Flash auch für eigene Zwecke verwenden, d.h. natürlich nur nicht verwendete Bereiche. Dieser Speicher ist aber nicht im FPGA untergebracht, sondern als externer Baustein per SPI anzuschließen. Ich empfehle übrigens auch sehr dringend die Verwendung eines fertigen FPGA-Moduls. Kürzlich habe ich zur größten Zufriedenheit ein Trenz TE0725 eingesetzt, welches über zwei 50-poligen Stiftleisten im 2,54mm-Raster auf der Trägerplatine aufgesteckt wird. Damit kann man dieses Modul auch auf einer normalen Lochrasterplatine oder gar einem Steckbrett einsetzen. Als Programmieradapter setzt man z.B. ein Trenz TE0790 ein, welches wiederum auf das TE0725 gesteckt wird. Auch eines meiner aktuellen Projekte basiert auf einem FPGA-Modul, nämlich einem TE0714. Der Grund besteht in diesem Fall darin, dass der Lagenaufbau der Hauptplatine in Dickkupfertechnik nicht wirklich kompatibel zu einem Baustein im BGA-Gehäuse wäre. Die Erstellung eines FPGA-Design mit integrierter CPU als Softcore geht mit Xilinx Vivado wirklich sehr schnell. Entsprechende Assistenzen erzeugen und verdrahten dann automatisch die benötigte Infrastruktur, z.B. Takterzeugung, RAM, Interrupt-Controller, AXI-Switch, usw.. Insbesondere wird dann auch eine Adresstabelle erstellt, anhand derer das zugehörige SDK entsprechende Header-Dateien in C sowie einfache "Gerätetreiber" eerzeugt.
Andreas S. schrieb: > Ich empfehle übrigens auch sehr dringend die Verwendung eines fertigen > FPGA-Moduls. Das habe ich auch vor - aber toll wäre es halt schon so ein selber erstelltes FPGA Board zu haben, vor allem da ich irgendwie keine großen Probleme sehe, außer den Spannungswandlern und wie man das FPGA denn nun programmiert. Andreas S. schrieb: > Die Anforderung, dass die CPU ein eigenes internes Flash besitzen muss, > schließt eigentlich alle derzeit erhältlichen FPGAs aus. Okay, vllt. habe ich das falsche formuliert: So eine LUT kann laut dem Datenblatt von Lattice auch als ein 16x1 ROM gesehen werden, d.h. da könnte ich im Prinzip auch meine Befehle für die CPU, die sich im FPGA befindet, ablegen, oder? Ist es möglich, eine CPU im FPGA zu erstellen und das Program als Maschinencode in diese LUTs zu legen?
Andreas S. schrieb: > Die Anforderung, dass die CPU ein eigenes internes Flash besitzen muss, > schließt eigentlich alle derzeit erhältlichen FPGAs aus. MachXO2/3 und Max10 sind aber derzeit erhältlich. Beide haben im OnChip Flash neben der Konfiguration auch ein User Flash Bereich, der vom Softcore geschrieben und gelesen werden kann. Andi
Andi schrieb: > User Flash Bereich, der vom Softcore geschrieben und gelesen werden kann. Oh, das war mir noch nicht bekannt; ich war bislang davon ausgegangen, dass die Größe des internen Flashs genau auf den Bitstream zugeschnitten wäre. Vielen Dank für diese interessante Information!
:
Bearbeitet durch User
Andreas S. schrieb: > Andi schrieb: >> User Flash Bereich, der vom Softcore geschrieben und gelesen werden kann. > > Oh, das war mir noch nicht bekannt; ich war bislang davon ausgegangen, > dass die Größe des internen Flashs genau auf den Bitstream zugeschnitten > wäre. Funzt auch beim Spartan3AN https://forums.xilinx.com/xlnx/attachments/xlnx/GenDis/17982/3/insystem%20flash%20_address.pdf
Kennt sich jemand mit den Datenblättern von Lattice aus? Ich finde für den iCE40LP384 kein Dokument in dem ich das Pinout mit den Pinbeschreibungen finde. Es gibt ein Dokument "PackageDiagrams" mit den Dimensions, ein Dokument "iCE40PinoutLP384" mit den Pinbeschreibungen und das "iCE40LPHXFamilyDataSheet" mit der Funktionsbeschreibung des FPGA aber anscheinend keines (?) das mir sagt, welcher Pin bei dem Package welche Funktion hat. http://www.latticesemi.com/en/Products/FPGAandCPLD/iCE40.aspx?ActiveTab=Reference+Design#_21E33C7EC0BD48AA80FE384ED73CC895
:
Bearbeitet durch User
Hab ganz gute Erfahrungen mit dem Xilinx FBGA 256 Package. Dank 1mm Pitch bringt man das locker auf ner Standardplatine mit 6mil trace/clearance und .3mm drill unter. Auf 2 Lagen kann man die Spannungsversorgung reinrouten und ca 80 IOs rausfuehren. Nen seriellen Flash kann man locker auch draufsetzen, zum Entwickeln nimmt man aber meist eh JTAG. Fuer die Spannungsversorgung der XC6S reichen locker 2 Linearregler, damit sind die Chips glücklich. Loeten kannst das Ding mit Heissluft. Vorteil: Viel groesserer Chip, gibt vernuenftige Tools und Doku dafuer, trotzdem recht kleiner Footprint. Ansonsten kauf ein Eval Board...
Guest schrieb: > Hab ganz gute Erfahrungen mit dem Xilinx FBGA 256 Package. Max M. schrieb: > am besten im TQFP, QFN oder ähnlichen Packages Guest schrieb: > gibt vernuenftige Tools und Doku dafuer Ich erwarte von einem Hersteller, dass er für jedes seiner Produkte eine vernünftige Doku hat
Max M. schrieb: > Ich erwarte von einem Hersteller, dass er für jedes seiner Produkte eine > vernünftige Doku hat Erwarten kann man viel. Vor allem bei den Tools gibt es grosse Unterschiede. Aber das merkt man erst, wenn man sich dann selber drueber aergern darf. Max M. schrieb: > am besten im TQFP, QFN oder ähnlichen Packages BGA ist aehnlich QFN. Tatsaechlich ist BGA einfacher zu loeten weil du keinen Stencil brauchst. QFN mit dem Loetkolben loeten ist ganz grosser Scheiss. Aber auch das merkt man erst wenn mans mal versucht...
Max M. schrieb: > Ich erwarte von einem Hersteller, dass er für jedes seiner Produkte eine > vernünftige Doku hat Max M. schrieb: > Es gibt ein Dokument "PackageDiagrams" mit den Dimensions, ein Dokument > "iCE40PinoutLP384" mit den Pinbeschreibungen und das > "iCE40LPHXFamilyDataSheet" mit der Funktionsbeschreibung des FPGA aber > anscheinend keines (?) das mir sagt, welcher Pin bei dem Package welche > Funktion hat. Das sollte eigentlich schon genug aussagen, oder?
Guest schrieb: > BGA ist aehnlich QFN. Tatsaechlich ist BGA einfacher zu loeten weil du > keinen Stencil brauchst. QFN mit dem Loetkolben loeten ist ganz grosser > Scheiss. Aber auch das merkt man erst wenn mans mal versucht... Ich hab mir diverse BGA-Lötvideos angeguckt und da sah es immer so aus, dass, wenn man es beim ersten Versuch nicht hinbekommt, der Chip quasi nicht mehr lötbar ist weil die Kugeln weg sind? Ist es nicht so, dass es auch schwierig ist mit 2 Layern alle Pins eines BGAs rauszuführen (hattest du ja schon erwähnt)? Es gibt die iCE40LP384 auch in nem BGA Package mit mehr Outputs aber kleineren Abmessungen als QFN32 (z.B. 49 ucBGA). QFN hab ich bisher auch immer mit Heißluft gelötet, hat bestens funktioniert. Guest schrieb: > Das sollte eigentlich schon genug aussagen, oder? Okay, jetzt wo du es sagst, ist allerdings sehr umständlich zu lesen (siehe Anhang) - rechts oben Pin 1 identifizieren und dann per Hand nachzählen, das kenne ich von allen µC-Herstellern besser, die haben das als ein Bild in einem PDF und nicht extra als Excel-Tabelle.
:
Bearbeitet durch User
Die FPGA Hersteller drucken die Pinbelegungen zwar nicht in den Datenblättern ab, dafür bietet die Toolchain eine Ansicht des Gehäuses mit allen Pinbeschreibungen. Bei ICEcube nennt sich das "Package Viewer". Natürlich kannst du davon ein Screenshot machen und ausdrucken.
Max M. schrieb: > Ich hab mir diverse BGA-Lötvideos angeguckt und da sah es immer so aus, > dass, wenn man es beim ersten Versuch nicht hinbekommt, der Chip quasi > nicht mehr lötbar ist weil die Kugeln weg sind? Beim QFN gibts garkeine Kugeln. Und jetzt? Ein oder zwei Reservechips und Boards werden sicher nicht schaden aber ueblicherweise sind die Kugeln nicht weg weil du den Chip nicht mehr vom Board nimmst. Du richtest den sauber aus, dafuer Zeit nehmen. Ist unkritischer als beim QFN weil der Pitch des BGA mit 1mm ziemlich gross ist, QFN hat meist 0.5mm. Dann mit Heissluft drauf oder in den Ofen. Das was am wahrscheinlichsten schief geht ist dass nicht alle Balls schmelzen und damit nicht alles Kontakt hat. In dem Fall nimmst du den Chip aber nicht runter sondern loetest einfach nochmal. Alles in allem hast du bei BGA immernoch einen Versuch mehr als bei QFN bevor du selbst mit Loetpaste ran musst ;) Ich rede nicht unbedingt von 0.5mm BGA, aber das 1mm Zeug ist ziemlich gutmuetig. Max M. schrieb: > Ist es nicht so, dass es auch schwierig ist mit 2 Layern alle Pins eines > BGAs rauszuführen (hattest du ja schon erwähnt)? Es gibt die iCE40LP384 > auch in nem BGA Package mit mehr Outputs aber kleineren Abmessungen als > QFN32 (z.B. 49 ucBGA). Du kannst grob rechnen pro Lage 2 Reihen Pins rauszubekommen. Das heisst bei einem 256er bleiben ca. 64 Pins an die du mit 2 Lagen nicht ran kommst. Nun kommt es also darauf an, wie die Pins verteilt sind. Wenn alle wichtigen Pins in der Mitte sind hast du ein Problem. Daher meine Aussage dass ich mit den XC6S gute Erfahrungen gemacht habe, du kannst ca 80 IOs auf 2 Lagen rausfuehren und dabei alle wichtigen Signale, also JTAG, SPI Config Flash, Spannungsversorgung, etc. benutzen. Sollte auch bei der 7er Serie gehen, habe ich aber noch nicht ausprobiert. Aergerlich ist, dass Xilinx die Transceiver erst ab 484 Pins anbietet. Also mit BGA256 kannst du immer nur SERDES mit max 1.25Gbps pro Pin-Paar benutzen. PCIe und co. sind damit leider nicht drinn...
Ich wollte wieder etwas an dem Projekt weiter machen. Andi schrieb: > MachXO2 oder MAX10 finde ich besser als ICE40 für Selbstbau. Auf den bin ich jetzt auch umgeschwenkt nachdem ich das https://www.cnx-software.com/2017/07/24/tinyfpga-is-a-breakout-board-for-lattice-semi-machxo2-fpga/ Projekt nochmal genauer betrachtet habe. Im Endeffekt möchte ich das grob nachbauen, mit ein paar LEDs extra um für den Einstieg z.B. eine binäre Uhr zu bauen. Allerdings komme ich mit den Dokumenten immer noch nicht zurecht. Ich hab zwar Zuordnung von Pin-Nummer zu Funktion gefunden (unter Pin&Package: http://www.latticesemi.com/en/Products/FPGAandCPLD/MachXO2#_3D24D0EEB97F430890D7AF24D20DF79A) allerdings keine Package-Beschreibung der QFN-32 Version? Das MachXO2 Family Data Sheet macht darüber keine Aussage. Kennt sich jemand genauer mit Lattice aus und weiß, wo die üblicherweise solche Angaben verstecken? Lattice Diamond, das vllt. mehr Details zu den einzelnen FPGAs enthält, kann ich seltsamerweise nicht runterladen, da werde ich auf "PageNotAvailable" weitergeleitet.
Max M. schrieb: > Ist es nicht so, dass es auch schwierig ist mit 2 Layern alle Pins eines > BGAs rauszuführen (hattest du ja schon erwähnt)? Es gibt die iCE40LP384 > auch in nem BGA Package mit mehr Outputs aber kleineren Abmessungen als > QFN32 (z.B. 49 ucBGA). Guest schrieb: > Du kannst grob rechnen pro Lage 2 Reihen Pins rauszubekommen. Das heisst > bei einem 256er bleiben ca. 64 Pins an die du mit 2 Lagen nicht ran > kommst. bei einem grobßen Pin-Abstand kann man notfalls auch 5 Reihen auf einer 2Lagigen Platine anschließen. Hängt vom Mindestdurchmesser der Durchkontaktierungen ab Was (bei Prototypen) auch geht: Durchkontaktierung in das Pad legen und in einem ersten Schritt mit Lötzinn füllen. Erst danach das Bauteil auflöten.
Max M. schrieb: > allerdings keine Package-Beschreibung der QFN-32 Version Anscheinend muss man tatsächlich die Dokumente "MachXO2-1200 Pinout" und "PackageDiagrams" kombinieren. Eine weitere Frage: Lattice Unterscheidet in ihrer Produktbezeichnung zwischen verschiedenen "Speed" - Modellen. Bei diesen beiden Versionen z.B.: https://www.mouser.de/ProductDetail/Lattice/LCMXO2-1200HC-4SG32C?qs=sGAEpiMZZMvoScKlWpK8TJPrOdKEdsHYVky1nfhMcnk%3d https://www.mouser.de/ProductDetail/Lattice/LCMXO2-1200HC-6SG32C?qs=sGAEpiMZZMvoScKlWpK8TJPrOdKEdsHYd78ouCwn%252bzw%3d hat das erste FPGA die Zahl "4" als Speed, das Zweite "6". Allerdings differenziert das Datenblatt nicht genau, was da der Unterschied ist? Der einzige, mir sinnvoll erscheinende Unterschied ist auf Seite 48 des "MachXO2 Family Data Sheet" in den Fußnoten vermerkt: "Supported only for inputs and BIDIs for all ZE devices, and –6 speed grade for HE and HC devices." Die Rede ist von "sysIO Recommended Operating Conditions". Bedeutet das, ich kann nur an IOs der -6 speed Version ~3.1V als Eingangsspannung anlegen?
:
Bearbeitet durch User
Max M. schrieb: > Die Rede ist von "sysIO Recommended Operating Conditions". Bedeutet das, > ich kann nur an IOs der -6 speed Version ~3.1V als Eingangsspannung > anlegen? Unsinn
Ich glaube, bei DEM Wissen des TE ist "Selberlösten" nicht angebracht. Selberkaufen würde Ich vorschlagen! trenz-elektronik hat sehr gute und preiswerte Module in allen Lagen.
Noch einer schrieb: > Ich glaube, bei DEM Wissen des TE ist "Selberlösten" nicht angebracht. > Selberkaufen würde Ich vorschlagen! Ich versteh deine Logik nicht ganz. Wenn ich ein bereits fertiges Board kaufe, dann setze ich mich ans Entwickeln mit VHDL. Ich hab das bereits mit einem Evaluation-Board für ein Quartus II FPGA (in beschränktem Umfang) gemacht und dabei hab ich keine Kenntnisse erworben, die mir beim Design eines eigenen FPGA-Boards weitergeholfen hätten. Also wie lernt man das Erstellen von FPGA-Boards wenn man es nicht selbst macht? Anstatt ständig abzuraten wären (sinnvolle) Antworten hilfreicher für mich.
Max M. schrieb: > Anstatt ständig abzuraten wären (sinnvolle) Antworten > hilfreicher für mich Eigentlich wurden alle relevanten Antworten schon in deiner ersten Fragerunde gegeben. Anstatt das nochmal durchzulesen fragst einfach nochmal dasselbe. Wenn du Diamond nicht runterladen kannst, brauchst du dir gar keine Gedanken über ein MachXO2 Board zu machen. TinyFPGA A2 ist doch genau was du brauchst, dazu den Programmer und die Diamond Software, das ist alles. LEDs kannst du an die Pads am Rand anschliessen, dazu sind sie da. Ist doch alles OpenSource von Schema, über Layout bis zum Programmer Sourcecode. Einfach mal nach "TinyFPGA A2 Github" googeln. Du kannst auch die unbestückte Platine bei OSHPark bestellen, wenn du unbedingt selber löten willst. Oder das fertige KiCAD Layout runterladen und abändern. Andi
> Also wie lernt man das Erstellen von FPGA-Boards wenn man es nicht > selbst macht? Keine Ahnung was du da willst. Inwiefern unterscheidet sich ein "FPGA Board" von einem "Microcontroller Board" oder sonstigem Elektronikboard? Geht es dir um das allgemeine Erstellen von Leiterkarten? Geht es dir um die notwendigen Beschaltungen eines FPGAs? Hier gibt es natürlich riesige Unterschiede. Ein großer FPGA benötigt noch einige externe ICs, die hier vorgestellen MachXO2 fast gar nichts mehr. Also es wäre gut wenn du mal darlegen könntest, was du eigentlich genau wissen willst. So eine Aussage wie oben, ist nicht zielführend. Andi schrieb: > TinyFPGA A2 ist doch genau was du brauchst, dazu den Programmer und die > Diamond Software, das ist alles. LEDs kannst du an die Pads am Rand > anschliessen, dazu sind sie da. Kann ich zustimmen. Das TinyFPGA A2 ist ein super Einstieg und der verwendete FPGA kann auch in eigenen Designs (mit eigener PCB) noch gut selber verlötet werden. Dann hat das Ding ja alles an Board, nicht nur Config-Flash, User-Flash, User-Ram, sondern auch noch nen OSC. Bastlerfreundlicher wird es nicht mehr bei FPGAs. Ich würde allerdings gleich bei eBay einen passenden Lattice JTAG Programmer Clone bestellen (~16 EUR). Damit kann der dann direkt aus der Diamond Oberfläche programmiert werden, was deutlich besser ist, als immer über das externe Programm für den TinyProgrammer zu gehen. Aber für die allerersten Gehversuche tuts der auch.
Ich hab versucht, den TinyFPGA A2 nachzubauen, hab nun das gelötete PCB auch im Einsatz, allerdings reagiert das FPGA nicht auf die Programmierversuche aus Lattice Diamond. Aus meinem FT232H kommt definitiv ein JTAG Signal raus (siehe Anhang). Diamond meldet aber nur:
1 | Device#1 LCMXO2-1200HC: Failed to verify the ID |
2 | (Expected: 0x012BA043 Read: 0xFFFFFFFF). |
3 | |
4 | ERROR - Check configuration setup: Unsuccessful. |
5 | |
6 | ERROR: pgr_program failed. |
7 | |
8 | ERROR - Programming failed. |
Ich hab leider keine Ahnung, woran das liegt. Mein Aufbau sieht 1:1 so aus wie im http://www.latticesemi.com/-/media/LatticeSemi/Documents/ApplicationNotes/MO/MachXOJTAGProgrammingandConfigurationUsersGuide.ashx?document_id=9917 auf Seite 3 (außer, dass ich 2K7OHm anstatt 4K7Ohm für den TCK Pulldown verwende). 3.3V liegen an, auch wenn mein Routing vermutlich ziemlich schlecht ist, sollte es doch funktionieren (hoffe ich).
Max M. schrieb: > Weiß jemand, warum TDO durchgängig auf '1' ist? Es gibt da mehrere Möglichkeiten: - Pin nicht richtig angelötet (Verbindung offen) - Pin mit Vcc oder einer anderen Leitung die '1'-Potential hat verbunden (Kurzschluss) - der/die/das FPGA sieht die TCK-, TMS- oder TDI-Pulse nicht (Verbindung offen) - der/die/das FPGA hat nicht alle benötigten Vcc-Verbindungen ... Die hoch ist denn denn die Stromaufnahme des FPGA? Duke
Duke Scarring schrieb: > Es gibt da mehrere Möglichkeiten: TDO ist ja tatsächlich die Leitung, über die das FPGA Daten zurück an den FT232H sendet während dieser über TDI Daten an das FPGA sendet. Also vielleicht ist die logische '1' einfach ein Default-Wert (so wie man das bei SPI auch einstellen kann)? Duke Scarring schrieb: > Pin nicht richtig angelötet (Verbindung offen) Nein, Kontakt besteht Duke Scarring schrieb: > - Pin mit Vcc oder einer anderen Leitung die '1'-Potential hat verbunden > (Kurzschluss) Auch nicht. Duke Scarring schrieb: > der/die/das FPGA hat nicht alle benötigten Vcc-Verbindungen Doch. Duke Scarring schrieb: > Die hoch ist denn denn die Stromaufnahme des FPGA? 9.3mA
:
Bearbeitet durch User
Max M. schrieb: >> Die hoch ist denn denn die Stromaufnahme des FPGA? > 9.3mA Klingt vernünftig (Was sagt das Datenblatt?). Da fallen mir nur noch die TRST-Leitungen ein (oder wie auch immer die im konkreten Fall heißen)... Duke
Max M. schrieb: > Den hat der MachXO2 in der 32-Pin QFN Version nicht Den scheint es bei MachXO2 generell nicht zu geben, sehe ich gerade... Max M. schrieb: > (außer, dass ich 2K7OHm anstatt 4K7Ohm für den TCK Pulldown > verwende) Warum nicht 4k7? Im Schaltplan vom Breakoutboard sind außerdem noch 5k1 Pull-Ups für TMS, TDI und TDO verbaut. Deine +5V auf dem JTAG machen mich stutzig. Die MachXO2 wollen maximal 3,3V auf den JTAG-Pins sehen. Was verwendest Du als Programmer? Die Technical Note TN1208 (MachXO2 Hardware Checklist) hast Du schon durch? Außerdem gibt es noch TN1204 (MachXO2 Programming and Configuration Usage Guide). Duke
Duke Scarring schrieb: > Im Schaltplan vom Breakoutboard Von welchem Breakout-Board? Duke Scarring schrieb: > Warum nicht 4k7? Der chinesische Händler hat mir statt 4k7 nur 100Ohm geliefert und 2k7 war das nächste, was ich noch in 0805 da hatte. Duke Scarring schrieb: > Deine +5V auf dem JTAG machen mich stutzig. Die MachXO2 wollen maximal > 3,3V auf den JTAG-Pins sehen. Die dienen nur zur Stromversorgung und haben nichts mit dem JTAG Interface zu tun. Die 5V werden von einem HT7133 auf 3.3V geregelt. Duke Scarring schrieb: > Was verwendest Du als Programmer? Einen FT232H (wird von Lattice Diamond einwandfrei erkannt) Duke Scarring schrieb: > Die Technical Note TN1208 (MachXO2 Hardware Checklist) hast Du schon > durch? Ehrlich gesagt konnte ich da nicht viel zusätzliche Information raus lesen... Duke Scarring schrieb: > Außerdem gibt es noch TN1204 (MachXO2 Programming and Configuration > Usage Guide). Dieses Chart macht mich etwas unsicher, im TN1208 werden INITN, DONE und PROGRAMN als I/Os beschrieben, hier haben sie aber anscheinend eine Funktion? Außerdem hat meine Ausführung keinen INITN Pin.
Max M. schrieb: > Von welchem Breakout-Board? http://www.latticesemi.com/en/Products/DevelopmentBoardsAndKits/MachXO2BreakoutBoard > Der chinesische Händler hat mir statt 4k7 nur 100Ohm geliefert und 2k7 > war das nächste, was ich noch in 0805 da hatte. Ok. Du könntest trotzdem mal schauen, ob TCK am Pin noch sauber anliegt. [+5V] > Die dienen nur zur Stromversorgung und haben nichts mit dem JTAG > Interface zu tun. Die 5V werden von einem HT7133 auf 3.3V geregelt. Gut, Ok. > Dieses Chart macht mich etwas unsicher, im TN1208 werden INITN, DONE und > PROGRAMN als I/Os beschrieben, hier haben sie aber anscheinend eine > Funktion? Außerdem hat meine Ausführung keinen INITN Pin. Diese Pins sind für die Konfiguration zuständig. Der JTAG-Port müsste immer gehen (wenn JTAGENB = high ist). Hast Du ein zweites Board für Vergleichsmessungen? Vielleicht ist der Chip faul?! So langsam gehen mir die Ideen aus :-) 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.