Forum: FPGA, VHDL & Co. Kleine FPGAs zum selber löten?


von Max M. (maxmicr)


Lesenswert?

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
von Hurra (Gast)


Lesenswert?

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.

von user (Gast)


Lesenswert?

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

von user (Gast)


Lesenswert?


von Max M. (maxmicr)


Lesenswert?

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
von user (Gast)


Lesenswert?

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

von user (Gast)


Lesenswert?


von Max M. (maxmicr)


Lesenswert?

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
von Strubi (Gast)


Lesenswert?

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.

von Max M. (maxmicr)


Lesenswert?

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.

von asdfasd (Gast)


Lesenswert?


von Gerd E. (robberknight)


Lesenswert?

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.

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


Lesenswert?

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...

von Andi (Gast)


Lesenswert?

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

von Max M. (maxmicr)


Lesenswert?

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
von Bitwurschtler (Gast)


Lesenswert?

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

von Andi (Gast)


Lesenswert?

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

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

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.

von Max M. (maxmicr)


Lesenswert?

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?

von Andi (Gast)


Lesenswert?

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

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

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
von Bitwurschtler (Gast)


Lesenswert?

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

von Max M. (maxmicr)


Lesenswert?

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
von Guest (Gast)


Lesenswert?

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...

von Max M. (maxmicr)


Lesenswert?

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

von Guest (Gast)


Lesenswert?

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...

von Guest (Gast)


Lesenswert?

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?

von Max M. (maxmicr)



Lesenswert?

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
von Andi (Gast)


Lesenswert?

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.

von Guest (Gast)


Lesenswert?

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...

von Max M. (maxmicr)


Lesenswert?

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.

von Schreiber (Gast)


Lesenswert?

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.

von Max M. (maxmicr)


Lesenswert?

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
von Cyblord -. (cyblord)


Lesenswert?

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

von Noch einer (Gast)


Lesenswert?

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.

von Max M. (maxmicr)


Lesenswert?

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.

von Andi (Gast)


Lesenswert?

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

von Cyblord -. (cyblord)


Lesenswert?

> 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.

von Max M. (maxmicr)


Angehängte Dateien:

Lesenswert?

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).

von Max M. (maxmicr)


Lesenswert?

Weiß jemand, warum TDO durchgängig auf '1' ist?

von Duke Scarring (Gast)


Lesenswert?

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

von Max M. (maxmicr)


Lesenswert?

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
von Duke Scarring (Gast)


Lesenswert?

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

von Max M. (maxmicr)


Lesenswert?

Den hat der MachXO2 in der 32-Pin QFN Version nicht

von Duke Scarring (Gast)


Lesenswert?

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

von Max M. (maxmicr)


Angehängte Dateien:

Lesenswert?

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.

von Duke Scarring (Gast)


Angehängte Dateien:

Lesenswert?

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
Noch kein Account? Hier anmelden.