Forum: FPGA, VHDL & Co. FPGA dazu geeignet?


von Mehmet K. (mkmk)


Lesenswert?

Servus allerseits

Seit Jahren vertreibe ich ein Geraet in kleiner Stückzahl. Es checkt 
Kabelbaeume und zeigt an, wo ein eventueller Fehler vorhanden ist.

In der ersten Version kontrollierte ein STM32F407 mehrere I/O Boards via 
SPI. Weil es mir nicht gelang, die SPI frei von Störungen zu halten, 
musste ich die Geschwindigkeit ziemlich drosseln. Was sich natürlich 
sehr negativ auf die gesamte Test-Laufzeit auswirkte.

In der zweiten Version verpasste ich jedem Board eine STM32F103, die via 
SPI die I/Os auf ihren Boards kontrollierten und via USART/RS485 mit dem 
Master STM32F407 kommunizierten. Bis zu 3 Boards (zu je 128 I/O) war die 
Gesamtlaufzeit akzeptabel. Aber bei 4 Boards war's vorbei mit lustig.

Nun muss ich für einen Kunden ein Geraet mit 1.024 Verbindungen 
herstellen. Diesmal ohne Schnick-Schnack wie variable Ausgangsspannung, 
analoge Messerfassung usw. usf.
Weiss aber nicht so recht, wie ich das anpacken soll.
Mein erster Gedanke war, jedes Board mit einem 32bit-Bus mit dem Master 
zu verbinden, wobei jedes Board für 64 I/Os zustaendig ist. Der erste 
Entwurf steht: aber viel zu viele 74HCxxx. Das alles zu routen wird 
alles andere als einfach sein.
Weshalb ich mir überlege, ob ich nicht gleich jedem Board eine 144pin 
CPU verpassen soll, um mich von all diesen Logik-Bausteinen zu befreien.
Nun kam mir die Idee das Ganze mit FPGAs zu lösen; von denen ich aber 
z.Zt. nicht viel verstehe. Bin aber lernfaehig :)

Was ich braeuchte:
- 32-bit I/O tri-state faehig (Bus)
- 12-bit Inputs für Adress- und Steuer-Signale
- 64-bit I/O mit min. 10mA Ausgangstrom
- kein BGA

Nice to have:
- interner Flash
- read-out protection
- wenn ich jeden dieser 64 I/O intern an einen A/D-Converter umleiten 
könnte.

2 Fragen:
- Kann man dieses Vorhaben mit FPGA lösen? Wenn ja: irgendwelche 
konkreten Vorschlaege für eine FPGA?
- (Vielleicht eine etwas blöde, nebulöse Frage) Wie gross waere der 
Mehrgewinn, das Ganze mit FPGA zu lösen (und nicht mit MCU oder 
Logik-Bausteinen)?

von Bürovorsteher (Gast)


Lesenswert?

Latticesemi: MachXO2, was sonst? LCMXO2-1200-HC.... im TQFP144 sollte 
alles machen, was du brauchst (ja, einer alleine reicht nicht, aber 
einer pro Lp)

> - (Vielleicht eine etwas blöde, nebulöse Frage) Wie gross waere der
> Mehrgewinn, das Ganze mit FPGA zu lösen (und nicht mit MCU oder
> Logik-Bausteinen)?

Das ist keine nebulöse Frage, sondern die einzig richtige Strategie. MCU 
und Logik war gestern.

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


Lesenswert?

Mehmet K. schrieb:
> Was ich braeuchte:
> - 32-bit I/O tri-state faehig (Bus)
> - 12-bit Inputs für Adress- und Steuer-Signale
Wieso ein 32 Bit Bus für nur 64 IO?
Ich würde da eher auf eine parallele SPI Schnittstelle gehen, so wie bei 
SD Karten auch verwendet wird.

> Nice to have: - interner Flash
> - read-out protection
MachXO2

> - wenn ich jeden dieser 64 I/O intern an einen A/D-Converter umleiten
> könnte.
Solche FPGA gibt es nicht.

> Weil es mir nicht gelang, die SPI frei von Störungen zu halten
Warum nicht? Und was für Störungen? SPI ist eigentlich extrem gutmütig, 
wenn man den richtigen SPI Mode nimmt und den Takt sauber terminiert 
hat.

von Mehmet K. (mkmk)


Lesenswert?

Lothar M. schrieb:
> Wieso ein 32 Bit Bus für nur 64 IO?
Weil es ja 16 boards sind mit je 64 I/Os.

Lothar M. schrieb:
> Solche FPGA gibt es nicht.
Schade.

Lothar M. schrieb:
> Und was für Störungen?
Die Termininierung habe ich nicht hingekriegt. Und weil mir die Zeit 
davonlief, war es einfacher, die Geschweindigkeit herabzusetzen.
Auch liefen 3 SPIs parallel und hin und wieder kam es zu 
Uebersprechungen. Kurzum: ein Fiasko.

Lothar M. schrieb:
> Ich würde da eher auf eine parallele SPI Schnittstelle gehen, so wie bei
> SD Karten auch verwendet wird.
Wegen meinen alptraumartigen Erfahrungen, die ich mit SPI in Eigenbau 
hatte, versuche ich SPI nicht mehr in Eigenregie aufzusetzen.

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


Lesenswert?

Ein SPI ist ja nun kein Hexenwerk. Und es ist sicher einfacher, 4 
Signale störungsfrei über eine Leitung zu bringen als 44. Denn ein 
paralleler Bus hat die selbe Physik...

von Mehmet K. (mkmk)


Lesenswert?

Bei 1.024 Verbindungen macht es schon einen Unterschied, ob ich mit 
32bit oder 4bit arbeite. Um auch Dioden zu erkennen, muss ich jeden 
einzelnen IO auf Ausgang schalten und alle anderen einlesen.
Und selbst bei der lausigsten Terminierung: eine kurze Pause um den 
Bus-State zu beruhigen, wird die Gesamt-Testlaufzeit auch nicht in einen 
nicht-akzeptablen Bereich verschieben. Nicht so aber bei 4bit.

Okay, bei FPGA haette ich jetzt die Freiheit auf Nummer Sicher gehend 
das Ganze als 32bit zu entwerfen, um dann mal zu testen, ob ich es auch 
mit 4bit hinkriege. Aber diesbezüglich ist mein Selbstvertrauen ziemlich 
rampuniert :)

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


Lesenswert?

Mehmet K. schrieb:
> Um auch Dioden zu erkennen, muss ich jeden einzelnen IO auf Ausgang
> schalten und alle anderen einlesen.
Wieviel Zeit braucht so eine Messung mindestens? Oder andersrum: wie 
schnell möchtest du da durchschalten?

von Dennis R. (dennis_r93)


Lesenswert?

Ich würde an deiner Stelle entweder 16 Module mit uC in Serie laufen 
lassen oder 4 Module (a 256 Ports) mit uC die dann aber auch jeweils 4 
Onboard SPI Busse (a 64 Ports) haben.

Je nach Leitungslänge und Störumfeld kann es auch Sinn machen RS485 
Treiber und Empfänger in den Bus zwischen den einzelnen Teilnehmern zu 
schalten.

Schönes Bild un kleine Erlöärung zu der RS485-SPI Kombination:
http://www.deathbylogic.com/2014/10/spi-over-long-distances/

Wieviele bits brauchst du pro Ausgang? mit 1/0/Tri sind 2 Bit notwendig.
Wenn du dann noch pro 128 bit eine 16 Bit Prüfsumme mitlieferst pro 
Ausgangsmodul wärst du bei 2304 Bit pro Testmuster.
Bei 512 Kbit/s hast du dann unter 5 ms pro Muster Übertragungsdauer.

Und wärend das eine Muster noch getestet wird, kannst du das nächste 
schon übertragen.
Mit gutem Timing schaffst du dann deine 200 Muster pro Sekunde.

Eine Andere Idee wäre es vom Master nur die Ports zu Übertragen die sich 
ändern und das wieder mit Checksumme und Bestätigung.
Dann brauchst du nur noch wenige Bits pro Testmuster.

Oder deine Module haben gleich das Testmuster lokal gespeichert und der 
Master gibt nur noch an welches Muster geprüft werden soll. Und die 
Module sagen nur noch OK oder Fehler.
Dann weiß der Master auch was Sache ist.




eine Übersicht zu guten Checksummen findest du hier:
https://users.ece.cmu.edu/~koopman/pubs/KoopmanCRCWebinar9May2012.pdf

von Mehmet K. (mkmk)


Lesenswert?

Lothar M. schrieb:
> Wieviel Zeit braucht so eine Messung mindestens? Oder andersrum: wie
> schnell möchtest du da durchschalten?

Bei den Geraeten mit einer eignenen MCU auf jedem Board (je 128pins), 
komme ich bei 3 x 128 pins auf eine Gesamtdauer von ca. 5 - 6 Sekunden.
Diese Zeitspanne wird, da meist eine grosse Anzahl von Kabelbaeumen 
getesten werden muss, als zu lang empfunden.
Mein Ziel ist es, bei 1.024 Verbindungen das Ergebnis nach spaetestens 
10 Sekunden auszugeben.

von Mehmet K. (mkmk)


Lesenswert?

Dennis R. schrieb:
> Ich würde an deiner Stelle ...

Wie ich oben schon festhielt: Die Lösung, jedem Board eine MCU zu 
verpassen, ist die eine Option, die ich auch beherrschen würde. Aber: 
mit dieser Lösung wird es zu unnötigen Verzögerungen kommen. Denn die 
MCU muss ja erst den Befehl auf seinem Bus erkennen, in die 
entsprechende Funktion springen usw. usf.
Auch ist bei dieser Art der Aufgaben-Teilung der Master sich nie sicher, 
was an seiner Peripherie gerade ablaeuft.
FPGA ist für diese Aufgabe schon die idealere Lösung. Fragt sich nur, ob 
ich diesen Brocken auf die Schnelle verdauen werden kann.

von Christian R. (supachris)


Lesenswert?

Göpel Electronic hat sowas fertig im Angebot, die arbeiten hauptsächlich 
mit JTAG. Wir nutzen das zum Leiterplatten Test, das Ding testet selbst 
mit wenigen MHz JTAG Frequenz ein paar Tausend Verbindungen zwischen 
FPGAs in wenigen Sekunden durch. Man muss natürlich auch die Pattern 
intelligent wählen.

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


Lesenswert?

Christian R. schrieb:
> die arbeiten hauptsächlich mit JTAG.
Und JTAG ist von der Physik her nichts Anderes als SPI: 4 
Kupferleitungen, auf denen seriell die Daten unterwegs sind. Die Bilder 
ähneln sich dementsprechend sehr:
https://upload.wikimedia.org/wikipedia/commons/c/c9/Jtag_chain.svg
https://upload.wikimedia.org/wikipedia/commons/9/97/SPI_three_slaves_daisy_chained.svg

Mehmet K. schrieb:
> Mein Ziel ist es, bei 1.024 Verbindungen das Ergebnis nach spaetestens
> 10 Sekunden auszugeben.
Wieviele verschiedene (Einzel-)Testmuster musst du dafür anlegen und 
abprüfen?
Welche räumlichen Dimensionen hat das Gerät?

: Bearbeitet durch Moderator
von Christian R. (supachris)


Lesenswert?

Lothar M. schrieb:
> Und JTAG ist von der Physik her nichts Anderes als SPI: 4
> Kupferleitungen, auf denen seriell die Daten unterwegs sind. Die Bilder
> ähneln sich dementsprechend sehr:

Das ist mir klar. Ich habs nur eingeworfen um zu verdeutlichen dass es 
zwischen den Modulen höchstwahrscheinlich keinen Parallelbus braucht.

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


Lesenswert?

Christian R. schrieb:
> Das ist mir klar.
Ist mir klar, dass es dir klar ist. Deshalb auch das "Und" quasi als 
Weiterführung deines Gedankens...  ;-)

von Mehmet K. (mkmk)


Lesenswert?

Lothar M. schrieb:
> Wieviele verschiedene (Einzel-)Testmuster musst du dafür anlegen und
> abprüfen?
Ich arbeite nicht mit pass/fail, sondern gebe auch stets an, wo der 
Fehler ist.

> Welche räumlichen Dimensionen hat das Gerät?
Ca. 30x25x30cm
Hinten am Geraet sind jeweils die 6 DIN41612 Konnektoren (2x32pin). 
Diese werden an einen für den jeweiligen Kabelbaum angepassten Adapter 
angeschlossen. Die Laenge der getesteten Kabel variert sehr stark: von 
50cm bis 20m.

Ich werde mal den Tipp vom Bürovorsteher mir zu Herzen nehmen und den 
LCMXO2-1200 mir etwas genauer anschauen.
Danke für all die Hinweise.

von Gerd E. (robberknight)


Lesenswert?

Dennis R. schrieb:
> Oder deine Module haben gleich das Testmuster lokal gespeichert und der
> Master gibt nur noch an welches Muster geprüft werden soll. Und die
> Module sagen nur noch OK oder Fehler.

Ich finde diese Lösung sehr elegant und sie erscheint mir gut umsetzbar.

Natürlich musst Du die elektrischen Probleme der SPI-Übertragung in den 
Griff bekommen. Das musst Du bei einer FPGA-Lösung aber auch.

Mehmet K. schrieb:
> Wie ich oben schon festhielt: Die Lösung, jedem Board eine MCU zu
> verpassen, ist die eine Option, die ich auch beherrschen würde. Aber:
> mit dieser Lösung wird es zu unnötigen Verzögerungen kommen. Denn die
> MCU muss ja erst den Befehl auf seinem Bus erkennen, in die
> entsprechende Funktion springen usw. usf.

Ist das wirklich der Flaschenhals?
Sagen wir der Master sendet 2 Bytes per SPI, das reicht dann für 65535 
verschiedene Muster. Das zu decodieren, das Muster zu laden etc. sollte 
ein µC schnell genug schaffen.

> Auch ist bei dieser Art der Aufgaben-Teilung der Master sich nie sicher,
> was an seiner Peripherie gerade ablaeuft.

Der Master könnte danach jeden einzelnen µC nach dem Status befragen. Er 
bekommt dann wieder die Muster-Nummer plus z.B. ein Bit für OK oder 
nicht OK zurück. Durch das Auslesen der Muster-Nummer weiß der Master 
ganz sicher, daß der Slave-µC den Muster-Lade-Befehl richtig verstanden 
hat.

Im Fall von einem Fehler kann der Master dann über einen anderen Befehl 
jedes einzelne Bit auslesen. Das ist natürlich langsamer, aber ich 
vermute mal daß der Fehlerfall nicht so zeitkritisch ist.

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


Lesenswert?

Mehmet K. schrieb:
> Lothar M. schrieb:
>> Wieviele verschiedene (Einzel-)Testmuster musst du dafür anlegen und
>> abprüfen?
> Ich arbeite nicht mit pass/fail, sondern gebe auch stets an, wo der
> Fehler ist.
Das war jetzt zwar schon eine Antwort, aber nicht die auf meine 
Frage(n).

Zudem kannst du da evtl. zweistufig arbeiten: wenn bei den abgelegten 
Prüfmustern ein Fehler auftritt dann muss dieser Fehlerfall nochmal 
genauer geschaut werden.

Mehmet K. schrieb:
> Ich werde mal den Tipp vom Bürovorsteher mir zu Herzen nehmen und den
> LCMXO2-1200 mir etwas genauer anschauen.
Du solltest aber beachten, dass FPGAs prinzipiell eine andere 
Designstrategie als z.B. einfache Schieberegister oder CPLDs haben: du 
hast bei FPGAs einen internen Takt um die 100MHz und mit diesem tastest 
du dann deine Eingänge ab und berechnest du Ausgänge. Du wirst 
eigenartige Effekte erleben, wenn du z.B. ein FPGA direkt wie ein 
"dummes" 74573 Latch oder ein 74374 Flipflop ansteuern willst.

von Strubi (Gast)


Lesenswert?

Moin,

ich unterschreib mal MachXO2, mit dem MachXO2-Breakout-Board kann man 
prima komplexe Systemtests realisieren. Da passt auch der uC mit ins 
FPGA. Bei 1024 I/O würde ich allerdings anfangen, über sinnvolles 
Multiplexen nachzudenken.

von Falk B. (falk)


Lesenswert?

@Mehmet Kendi (mkmk)

>> Und was für Störungen?
>Die Termininierung habe ich nicht hingekriegt. Und weil mir die Zeit

Wenn das Bastler hinkriegen, dann schaffst du das auch.

Beitrag "Re: Skurriles Problem mit BS170 Mosfets"

>Wegen meinen alptraumartigen Erfahrungen, die ich mit SPI in Eigenbau
>hatte, versuche ich SPI nicht mehr in Eigenregie aufzusetzen.

Ein Trauma sollte man aktiv bewältigen und letztendlich überwinden und 
sich davon NICHT lebenslang verfolgen lassen.

von Falk B. (falk)


Lesenswert?

@ Mehmet Kendi (mkmk)

>Mein Ziel ist es, bei 1.024 Verbindungen das Ergebnis nach spaetestens
>10 Sekunden auszugeben.

Klingt machbar. Aber die Frage ist dabei, wieviele Bitoperationen dafür 
nötig sind. Wenn sich in der 1Kbit Kette immer nur ein Bit ändert, du 
dafür aber alle 1k neu laden musst, wäre das doof. Dito umgekehrt, wenn 
du immer nur wenige Bit auswerten musst, dafür aber alle lesen musst, 
wäre das auch doof. Aber nur solange, wie das zeitlich kritisch wird. 
Brute force ist zwar nicht elegant, reicht aber oft ;-)

SPI schafft LOCKER 10 MBIT/s, da kann man 1kbit pro sekunde 10k mal 
lesen oder schreiben. Hmm. Reicht das?

von Mehmet K. (mkmk)


Lesenswert?

Lothar M. schrieb:
> Du wirst
> eigenartige Effekte erleben, wenn du z.B. ein FPGA direkt wie ein
> "dummes" 74573 Latch oder ein 74374 Flipflop ansteuern willst.

Ich dachte, ich könnte dank FPGA auf alles was mit 74 beginnt 
verzichten:
an den I/Os Schutzdioden und Widerstaende. Sonst nichts. Falsch gedacht?

von Mehmet K. (mkmk)


Lesenswert?

Falk B. schrieb:
> SPI schafft LOCKER 10 MBIT/s, da kann man 1kbit pro sekunde 10k mal
> lesen oder schreiben. Hmm. Reicht das?

Natürlich reicht das. Wenn! Wenn man SPI nicht vermasselt. Aber nach all 
den Buh-Rufen betreffend meinen SPI-Künsten werde ich das nochmals 
anpacken müssen. Das Projekt ist nicht dringend. Habe Zeit bis Ende 
Jahr.

von Bürovorsteher (Gast)


Lesenswert?

> an den I/Os Schutzdioden und Widerstaende. Sonst nichts. Falsch gedacht?
Nun ja, im Prinzip schon, aber wenn das Gerät idiotensicher sein soll...
Ich würde zumindest noch kräftige Leitungstreiber spendieren.
Was denkst du, was meine Kunden schon alles kaputtbekommen haben.

von Mehmet K. (mkmk)


Lesenswert?

Ich habe mal damit angefangen, im Datenblatt des MachX02 herumzustöbern.
Falls ich mich nicht verguckt habe, scheinen seine Ausgaenge 
kurzschlussfest zu sein; haben aber nur so um die 5mA.
Weshalb natürlich Leitungstreiben angebracht sind.

von Frank F. (frank_f49)


Lesenswert?

Signale breiten  sich  mit  15cm / nanosekunde aus  bei  eps_r=4.

D.h. bei einem  4m langen Kabelbaum dauert es 26ns  bis ein HIGH/LOW
hinten das Erste Mal rauskommt.  Bei Fehlen jeglicher Terminierung 
dauert es dann  100ns  bis  Reflexionen sicher abgeklungen sind.

Die Reflexionen können heftig sein,  ein temporär 2x größeres 
Ausgangssignal
als man vorne reingesteckt hat wäre möglich ( 6.6V statt 3.3V).

Ob es eine gute Idee ist  Datenpakete  reinzustecken und zu kucken ob 
sie hinten rauskommen:  was ist  wenn eine Ader gebrochen ist und die 
Signale
durch reines Übersprechen es trotzdem schaffen durchzukommen?

von Falk B. (falk)


Lesenswert?

@ Mehmet Kendi (mkmk)

>Falls ich mich nicht verguckt habe, scheinen seine Ausgaenge
>kurzschlussfest zu sein; haben aber nur so um die 5mA.
>Weshalb natürlich Leitungstreiben angebracht sind.

Wieso? Zum Durchklingeln eines Kabelbaums reicht das doch locker.

von Mehmet K. (mkmk)


Lesenswert?

Frank F. schrieb:
> Ob es eine gute Idee ist  Datenpakete  reinzustecken und zu kucken ob
> sie hinten rauskommen:  was ist  wenn eine Ader gebrochen ist und die
> Signale
> durch reines Übersprechen es trotzdem schaffen durchzukommen?

Solche Probleme wie Reflektionen, Ueberspannungen, fehlende Ader etc. 
habe ich im Griff. Aber trotzdem Danke für den Hinweis.

von Mehmet K. (mkmk)


Lesenswert?

Lothar M. schrieb:
> Wieviele verschiedene (Einzel-)Testmuster musst du dafür anlegen und
> abprüfen?

Sorry für die verspaetete Antwort. Ist schon 'ne Zeit her, seit ich mich 
mit dem Geraet intensiv beschaeftigt habe.
Also ich "kann" nur 1 bit als Ausgang schalten und n-1 Eingaenge 
einlesen.
Ich könnte zwar 1 bit als Ausgang schalten und 7 einlesen. Also bei 384 
pins waeren dies max. 48 Ausgaenge und 336 Eingaenge. Aber das waere ein 
Mehr an SPI-Verkehr gewesen (habe es zumindest so im Kopf). Wegen meinem 
glücklichen Haendchen in Sachen SPI habe ich mir dies nicht angetan.

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


Lesenswert?

Mehmet K. schrieb:
> Ich dachte, ich könnte dank FPGA auf alles was mit 74 beginnt verzichte
Es ist kein "verzichten können", sondern ein "verzichten müssen": du 
darfst nicht einfach ein Steuersignal als Latch oder Takt nehmen wie 
z.B. die steigende Flanke eines WR Signals.

Sondern du baust einen Zustandsautomaten, der mit 100MHz läuft und für 
den erst mal alle externe Signale einsynchronisiert werden. Auf diese 
Art machst du quasi eine art Coprozessor.

> Aber nach all den Buh-Rufen betreffend meinen SPI-Künsten werde ich
> das nochmals anpacken müssen.
So wie dort im Lauf des Threads entwickelt sieht z.B. ein SPI-Slave auf 
dem FPGA aus: Beitrag "Erfahrung mit SPI Slave und Spartan 6 FPGA?"

Und dort finden sich ein paar Worte zur Terminnierung:
Beitrag "Serienwiderstand bei Hochfrequenz"
Beitrag "Signalproblem bei langem Kabel"

> Habe Zeit bis Ende Jahr.
Dann solltest du bald mit den ersten Spielereien auf dem FPGA anfangen. 
Und mein Vorschlag: nimm VHDL (dann bekommst du hier am ehesten Hilfe) 
und such hier im Forum nach "Postulate", dann findest du schon mal die 
üblichsten Anfängerprobleme... ;-)

von Mehmet K. (mkmk)


Lesenswert?

Falk B. schrieb:
> Wieso? Zum Durchklingeln eines Kabelbaums reicht das doch locker.

Stimmt. Keine Ahnung wieso ich - als ich Obiges schrieb - der Meinung 
war, HC-Bausteine haetten mehr Power. Vermutlich gedanklich an ALS- oder 
AS-Bausteine abgeschweift.

von Falk B. (falk)


Lesenswert?

@ Mehmet Kendi (mkmk)

>> Wieso? Zum Durchklingeln eines Kabelbaums reicht das doch locker.

>Stimmt. Keine Ahnung wieso ich - als ich Obiges schrieb - der Meinung
>war, HC-Bausteine haetten mehr Power.

Das haben sie schon, wenn gleich dann die Logikpegel ggf. nicht mehr 
ganz normgerecht sind.

von Bernd G. (Gast)


Lesenswert?

> Stimmt. Keine Ahnung wieso ich - als ich Obiges schrieb - der Meinung
> war, HC-Bausteine haetten mehr Power.

Dein Kunde bekommt den FPGA garantiert durchgeheizt. Ein schnöder 
Treiber ist schneller gewechselt als der FPGA.

von Falk B. (falk)


Lesenswert?

@Bernd G. (Firma: LWL flex SSI) (berndg)

>Dein Kunde bekommt den FPGA garantiert durchgeheizt. Ein schnöder
>Treiber ist schneller gewechselt als der FPGA.

Die wahrscheinlichste Todesfalle ist ESD. Dagegen helfen Schutzdioden, 
die gibt es im 2, 4, 8er Pack. Und ein Längswiderstand als 
Angstwiderstand ist auch leicht platziert. Soooo einfach würde ich mir 
nicht Angst machen lassen.

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


Lesenswert?

Bernd G. schrieb:
> Ein schnöder Treiber ist schneller gewechselt als der FPGA.
Aber dann hat man wieder das Gelecke, dass man den Treiber umschalten 
muss zum Lesen. Wenn man direkt den FPGA-Pin verwendet, dann kann man 
sogar den Pegel des Ausgangs leicht zurücklesen und so evtl. aus diesem 
Pegel auch Erkenntnisse gewinnen.

von Bernd G. (Gast)


Lesenswert?

Das ist natürlich auch richtig.
Also vorsichtshalber ein paar Baugruppen mehr fertigen lassen, die der 
Kunde dann im Schadensfall gut bezahlen muss.
Eine Reparatur macht ohnehin zuviel Aufwand.

von Mehmet K. (mkmk)


Lesenswert?

@Lothar
Danke für Deine Links im Beitrag 
Beitrag "Re: FPGA dazu geeignet?"

Die Theorie in Sachen Terminierung, Wellenwiderstand etc. sind mir schon 
bekannt. Nur scheint es, dass die Umsetzung in die Praxis nicht so recht 
klappen mag.
Was ich aber als heftig empfand war Dein erster Link:
Beitrag "Erfahrung mit SPI Slave und Spartan 6 FPGA?"
Waehrend der Lektüre musste ich des öfteren schlucken. Und insbesondere 
der Satz "Das war ja einfach..." im letzten Beitrag war echt 
demoralisierend.
Ich werde mir jetzt das Eval-Board LCMX02-1200ZE-PE-EVN bestellen; aber 
angesichts Deines Satzes "Dann solltest du bald mit den ersten 
Spielereien auf dem FPGA anfangen." werde ich zweigleisig fahren und 
nicht alle meine Karten auf FPGA setzen.

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


Lesenswert?

Mehmet K. schrieb:
> werde ich zweigleisig fahren und nicht alle meine Karten auf FPGA
> setzen.
Das halte ich für eine sinnvolle Strategie... ?

von Mehmet K. (mkmk)


Angehängte Dateien:

Lesenswert?

Habe mich nun doch dazu entschlossen, ins kalte Wasser zu springen und 
nur auf die FPGA-Karte zu setzen: wer nichts waget, darf nichts hoffen.
Die ersten Gehversuche mit einem MachXO2 Development-Kit waren zwar echt 
gruselig - aber irgendwie ist diese FPGA-Welt doch sehr faszinierend.
Ich habe nun für die LCMXO2-1200HC (TQFP-144) eine PCB entworfen, zu der 
ich eine Fragen haette.
Gehe ich recht in der Annahme, dass wenn ich diese FPGA mit der 
JTAG-Schnittstelle ansprechen will, alle Pins als IO benutz werden 
können ausser:

- JTAG (TDO, TDI, TCK TMS)
- JTAGENB

Anscheinend kann man die MachXO2 auch nur mit SPI und I2C ansprechen; 
aber in diesem Fall möchte ich doch mit der JTAG-Schnittstelle arbeiten.
Anbei die Pinout-Liste (die auf der Lattice-Seite zu finden alles andere 
als einfach war).

Dank im voraus.

: Bearbeitet durch User
von Bürovorsteher (Gast)


Lesenswert?

> Gehe ich recht in der Annahme, dass wenn ich diese FPGA mit der
> JTAG-Schnittstelle ansprechen will, alle Pins als IO benutz werden
> können ausser:

> - JTAG (TDO, TDI, TCK TMS)
> - JTAGENB

Ja, völlig korrekt.
Wenn du von außen einen Takt zuführen willst, musst du selbigen 
allerdings wirklich an einen Clock-Eingang legen, sonst winkt die 
Synthese ab :-(

Ja, die Pinout-Liste ist wirklich saumäßig.

von Joerg Hagedorn (Gast)


Lesenswert?

Wenn Du nur den JTAG Mode benutzt, kannst Du sogar den JTAGENB als IO 
pin nutzen. Per default wird der JTAG port genutzt. Erst wenn das 
abgeschaltet wird, kann mann mit dem JTAGENB pin zwischen verschieden 
Modi hin und her schalten.

Datasheet:
Use care when using JTAGENB to selectively enable and disable the JTAG 
port. Any external logic connected to
the JTAG I/O must not contend with the JTAG programming port.
...
The JTAG port is enabled by default when the MachXO2 is in the Feature 
Row HW Default Mode state.
...
The JTAG port, when set in the DISABLE state, enables the JTAGENB input. 
JTAGENB permits the JTAG pins to
be multiplexed. Asserting JTAGENB high causes the JTAG pins to take on 
the IEEE 1149.1 personality. De-asserting
JTAGENB (i.e. driven low) causes the JTAG port pins to become general 
purpose I/O. Design the JTAG port circuitry
carefully when taking advantage of JTAG port pin multiplexing. Avoid bus 
contention between logic attached
to the JTAG port.

Ich verzichte auf andere Modi und nutze ausschliesslich den JTAG Mode 
und den JTAGENB pin als IO Pin.

Gruss
Joerg

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

Man muss nicht unbedingt einen dedizierten Takteingang verwenden. Man 
muss nur Taktnetze verwenden. Auf die kommt man intern auch über Umwege. 
Und dann die Frage, was das mit dem Thema JTAG zu tun hat? Der besonders 
hat ja seinen eigenen Takt mit handgerierter Oszillaton.

von Bürovorsteher (Gast)


Lesenswert?

OMg, danke für deine Klugscheißerei, es war nur ein Hinweis am Rande, 
weiter nichts.

von Mehmet K. (mkmk)


Lesenswert?

Bürovorsteher schrieb:
> Wenn du von außen einen Takt zuführen willst

Verdammt! Den Clock habe ich doch tatsaechlich vergessen gehabt. Faengt 
ja gut an :)
Danke für den Hinweis.

von Duke Scarring (Gast)


Lesenswert?

Mehmet K. schrieb:
> Ich habe nun für die LCMXO2-1200HC (TQFP-144) eine PCB entworfen, zu der
> ich eine Fragen haette.

Es gibt bei Lattice eine 'MachXO2 Hardware Checklist' (Technical Note 
TN1208) [1]. Hast Du die schon mal durchgesehen?

Duke

[1] 
http://www.latticesemi.com/~/media/LatticeSemi/Documents/ApplicationNotes/MO/MachXO2HardwareChecklist.pdf?document_id=39095

von Mehmet K. (mkmk)


Lesenswert?

Joerg Hagedorn schrieb:
> Ich verzichte auf andere Modi und nutze ausschliesslich den JTAG Mode
> und den JTAGENB pin als IO Pin.

War mir schon aufgefallen, dass dieser Pin auf dem Dev-Board nicht 
benutzt wird. Wollte nur auf Numme sicher gehen. Danke für die 
Richtigstellung.

von Mehmet K. (mkmk)


Lesenswert?

Bürovorsteher schrieb:
> Wenn du von außen einen Takt zuführen willst,

Irgendwie hatte ich im Hinterkopf, dass der MachXO2 dazu imstande ist, 
intern einen Clock zu erzeugen. Auf dem Dev-Board wird er zwar vom Takt 
des FTDI gespeist, aber im Datenblatt lese ich was von "Flexible On-Chip 
Clocking".

Weltbester FPGA-Pongo schrieb im Beitrag #5018450:
> Man muss nicht unbedingt einen dedizierten Takteingang verwenden.

Kann ich also wie gehabt auf eine externe Taktquelle verzichten?

von Bürovorsteher (Gast)


Lesenswert?

> Kann ich also wie gehabt auf eine externe Taktquelle verzichten?

Du kannst drauf verzichten, ich kenne deine weiteren Intentionen nicht.
Der interne Takt jittert und wandert, hält aber seine spezifizierte 
Taktrate recht gut ein.

> Ich verzichte auf andere Modi und nutze ausschliesslich den JTAG Mode
> und den JTAGENB pin als IO Pin.

Wenn man ein Pin frei hat und den JTAGENB nicht zwangsweise als IO 
nutzen muss, ist es empfehlenswert, ihn trotzdem auf High zu legen. 
Damit vermeidet man, dass man sich als Anfänger (oder auch als 
selbsternannter Experte) durch Entfernen des JTAGENB-Häkchens irgendwann 
selbst aussperrt. Ist zwar behebbar, aber ärgerlich.

von Bürovorsteher (Gast)


Lesenswert?

> Kann ich also wie gehabt auf eine externe Taktquelle verzichten?

Nachtrag: manches Eingangssignal entpuppt sich erst bei näherer 
Betrachtung als Taktsignal und möchte als solches behandelt werden.

von Mehmet K. (mkmk)


Lesenswert?

Duke Scarring schrieb:
> Es gibt bei Lattice eine 'MachXO2 Hardware Checklist' (Technical Note
> TN1208) [1]. Hast Du die schon mal durchgesehen?

War mir bis anhin nicht bekannt: 2 Fehler weniger. Danke!

von Mehmet K. (mkmk)


Lesenswert?

Bürovorsteher schrieb:
> Du kannst drauf verzichten, ich kenne deine weiteren Intentionen nicht.
> Der interne Takt jittert und wandert, hält aber seine spezifizierte
> Taktrate recht gut ein.

Ich beabsichtige anfaenglich alles mit kombinatorischer Logik zu 
erschlagen. Vermutlich werde ich nur 2 oder 3 Signale synchronisieren 
müssen. Erst wenn ich so das Geraet zum Laufen gebracht habe, werde ich 
versuchen Gebiete zu betreten, die etwas mehr Ruhm und Ehre versprechen 
:)
Steht der interne Takt mit dieser (anfaenglicher) Intention im Einklang?

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


Lesenswert?

Bürovorsteher schrieb:
> Nachtrag: manches Eingangssignal entpuppt sich erst bei näherer
> Betrachtung als Taktsignal und möchte als solches behandelt werden.
Nachtrag 2: die meisten Takte, die ein Anfänger in einem Design hat, 
sind eigentlich nur stinknormale einzusynchronisierende 
Eingangssignale...

: Bearbeitet durch Moderator
von Bürovorsteher (Gast)


Lesenswert?

> Nachtrag 2: die meisten Takte, die ein Anfänger in einem Design hat,
> sind eigentlich nur stinknormale einzusynchronisietende
> Eingangssignale...

Nun ja, irgendjemand muss ja das letzte Wort haben :-)
Dem Meister sei es gestattet.

von Bürovorsteher (Gast)


Lesenswert?

> Steht der interne Takt mit dieser (anfaenglicher) Intention im Einklang?

Ja.

Vorsichtige Naturen sehen trotzdem einen Bestückungsplatz für einen 
Oszillator vor.

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.