Suche IO-Standard für High-Speed-BUS

Hallo NG,

Vorgeschichte :

ich soll auf einer Platine 4 FPGAs (Actel A3PE1500) miteinander über einen performanten Bus verbinden. Ich würde mich gerne für 64Bit-PCI mit 200MHz entscheiden (so eine Quadrat-/Überkreuzverdrahtung wie die 6 Hypertransport-Verbindungen auf einem 4 Opteron-Board, mit 3 Links pro CPU, ist mir zu kompliziert und in PCI bin ich fit). Um Ground-Bouncing u.ä. Effekte, wenn 80 IOs synchron schalten, zu vermeinden will ich nicht 3,3V LVCMOS benutzen. Da die FPGAs eine Core-Spannung von 1,5V haben und für die Peripherie ja noch 3,3V benötigt werden würde ich einen IO-Standard mit 1,5V bevorzugen damit ich nicht noch eine dritte Spannung benötige. Beim Studium des FPGA-Datasheet ist mir HSTL(I) ins Auge gesprungen. Vor allem die Terminierung auf Vddq/2 und der geringe Spannungshub sind mir positiv aufgefallen. Dafür würde ich einige Pins in den betroffenen IO-Bänken als Vref verwenden müssen aber damit könnt ich gut leben.

Zu diesem IO-Standard hab ich nun ein paar Fragen :

Wenn der Bus im Tristate ist, also alle 4 Teilnehmer ihre Pins auf High-Z schalten, pegelt sich die Spannung auf den Datenleitungen ja bei Vref bzw. Vddq/2 ein. In der JESD8-6 steht in Kapitel 2.2 "Inputs should not be held at Vref". Wie soll das bei einem korrekt terminierten Bus im Tristate gewährleistet werden? Vertragen das die Inputs trotzdem?

Was ist von den restlichen unterstützen IO-Standards (GTL / GTL+ / SSTL) zu halten? Hat mit einem derartigem Bus schon mal jemand Erfahrungen sammeln dürfen/müssen und mag hier ein bisschen was berichten?

Dann hätte ich noch eine Layout-Frage :

Ich möchte die 4 FPGAs über Kreuz anordnen: einen Oben, einen Unten, einen Links und einen Rechts. Für den Bus benötige ich am FPGA wahrscheinlich 3 Layer (von einer 8 Layer-Platine) so das ich die FPGAs "Oben" und "Unten" auf den Lagen 1 bis 3 direkt verbinden und die FPGAs "Links" und "Rechts" auf den Lagen 4 bis 6 direkt verbinden möchte. Am Kreuzungspunkt (eher Bereich) würde ich die Leitungen mit Durchsteigern verbinden und auf der Unterseite gleich überall den Terminierungswiderstand anschließen. Ich denke das die Leitungen, pro Richtung, nicht länger als 10cm werden. Was haltet ihr von dieser Variante? Sind damit die angestrebten 200MHz realistisch? (166MHz währen auch noch OKay ;-)

Grüße und Danke für alle guten Antworten Erik

Reply to
Erik
Loading thread data ...

Performant = fulminant, sauschnell, blitz-g'writtrisch?

HSTL kenne ich nicht, aber ich muss oft alle moglichen Busse als HF-Mensch aus dem Graben zerren. 200MHz ist realistisch. Da Du mit 10cm aber schon ein Stueck der Viertelwellenlaenge hochlaeufst, waere ein Ausrechnen der Bahnbreiten auf passenden Wellenwiderstand sinnvoll. Kostet ausser Gehirnschmalz nichts und ich denke, Du weisst wie (falls nicht, nochmal melden). Falls es wegen Terminierung keine starren Vorschriften gibt, empfehle ich die AC Terminierung anzusehen, ob sie geeignet ist. Tri-State braucht dann aber noch einen "Bleeder", je nach Standard. Dabei halte ich den Kondensator etwa 2-3 mal so gross wie noetig, aber mehr nicht. Das spart eine Menge Verlustleistung beim jeweiligen Treiber. Du musst das aber alles fuer HSTL auf Zulaessigkeit untersuchen, ich kenne wie gesagt diesen Bus nicht.

^^^^^

Das weiss man immer erst, wenn's nachher auch funzt ;-)

--
Gruesse, Joerg

http://www.analogconsultants.com/
Reply to
Joerg

performanten

In Abwandlung des Spruches "Junge, keine Gewalt, nimm einen groesseren Hammer":

Junge, keine Gewalt, nehme ein groesseres FPGA...

--
Uwe Bonnes                bon@elektron.ikp.physik.tu-darmstadt.de

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
 Click to see the full signature
Reply to
Uwe Bonnes

Hallo Uwe Bonnes,

performanten

Es gibt von Actel nichts größeres. Actel war Kundenvorgabe wegen Kopierschutz und Preis. Die 4 FPGAs kosten zusammen etwas mehr als 200Euro, in kleinen Stückzahlen. Dafür bekommt man bei Xilinx oder Altera auch nur _einen_ FPGA aus der Einstiegsklasse und die brauchen dann noch ein Boot-ROM und mit dem Kopierschutz ists auch nicht weit her. Ich bin schon der Meinung das die Wahl nicht unbedingt verkehrt war außerdem kann ich so noch einiges lernen.

Grüße Erik

Reply to
Erik

Wie kommst du auf 200 Euro? Man kann die zwar schlecht vergleichen, da System Gates nicht viel aussagt, aber wenn das 1500 ein Hinweis auf die Anzahl Logikelemente ist und man die mit Altera vergleichen kann, dann würde schon der Cyclone 3, in der Ausführung EP3C10, mit 10.320 Logikelementen mehr bieten, den du direkt bei Altera aktuell ab $23,50 kaufen kannst. Das zusätzlich benötigte serielle Flash ist winzig und sind dann auch nur 2 Chips gegenüber deiner 4 Chip-Lösung.

Das gibt es bei den Stratix-Devices, die aber teurer sind. Man kann dort einen AES-Schlüssel im FPGA ablegen, sodaß man mit den Daten im Flash nichts anfangen kann.

--
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Reply to
Frank Buss

Erik schrieb:

Hallo,

willst Du also jede einzelne Busleitung als ein "Kreuz" haben, einer der vier FPGAs treibt den Bus, die anderen drei empfangen, terminiert wird an allen vier Enden? Das gibt doch Probleme mit dem Wellenwiderstandssprung im Zentrum des Kreuzes wo es von einer ankommenden Leiterbahn auf drei parallelgeschalteten Leiterbahnen weitergeht. Dazu muß jeder Treiber gleich vier statt nur zwei Busabschlüsse mit treiben können.

Wäre es nicht besser den Bus so zu führen das die vier FPGAs über Leitungen in Form eines Quadrates verbunden sind, wobei von diesem Quadrat eine Seite fehlt? Dann hat der Bus genau zwei Enden und muß nur an diesen terminiert werden, es gubt keine Verzweigungen des Busses, nur die unvermeidlichen sehr kurzen Stichleitungen zu den FPGAs selbst. In der Buslänge gibt es auch keine grossen Unterschiede, die Kreuzform hat 2*Wurzel(2)*Kantenlänge des Quadrats gesamte Leitungslänge, beim offenen Quadrat sind es dagegen 3*Kantenlänge, das ist nur der Unterschied von 2,828 zu 3,0.

Bye

Reply to
Uwe Hercksen

Hallo Joerg,

aha, Danke für die Aufklärung ;-)

Sicher eine interessante Arbeit.

Das ist schön.

Ich nehme an in Abhängigkeit von Platinenmaterial u.ä. Parametern.

Na, ich hoffe das ich davon noch ein bisschen auftreiben kann.

Ich hab sowas noch nie gemacht daher : "Meldung"

Laut Spec sollen die Leitungen mit 50 Ohm auf Vddq/2 also 0,75V terminiert werden. Das sorgt für einen symmetrischen Spannungshub. Die Terminierungsspannung soll natürlich möglichst stabil sein. Ich hab mir überlegt die 0,75V aus was preiswertem und stabilen zu erzeugen und dann über einen mehrfach OP auf mehrere Leitungen zu verteilen an deren Ende jeweils 12 oder 16 Terminierungswiederstände und einmal 100 nF hängen. Die Vref für die Eingangselemente, ebenfalls 0,75V, sollen aus einem weiteren OP, auch als Spannungsfolger, pro FPGA kommen.

Was bitte ist das?

Welchen Kondensator?

Das ist immer gut.

Mach ich, die Spec ist ja nicht so lang.

Grüße Erik

Reply to
Erik

Erik schrieb:

Ganz abgesehen von der Problematik auf dem Board ist das schon von der FPGA Seite komplett unrealitisch. Mit 200 Mhz bekommst du PCI nicht auf dem FPGA hin. Actel schreibt aus guten Grund nur etwas von 66 Mhz PCI, viel mehr sind auf den Chips vermutlich auch nicht drin. FPGAs sind keine ASICs, selbst wenn der Hersteller sie so nennt, und die Actel Teile gehören wohl auch eher nicht zu den allerschnellsten. Überlegt euch erstmal was ihr überhaupt braucht, wie ihr das ganze auf die 4 FPGA partioniert bekommt, baut lieber spezialisierte Punkt zu Punkt Verbindungen als Busse. In den IO Blöcken gibt es meistens DDR-Flipflops und ähnliche Hilfsmittel zum serialisieren. Wenn du diese Hilfsmittel benutzt, dann kannst du extern die Daten mit höherem Takt als intern übertragen und sparst so IOs. Besonders hohe Taktfrequenzen im FPGA sind eh nicht drin, rechnet mal eher mit etwas in der Region 100 Mhz als interne Taktfrequenz. Auf den Actel Teilen vielleicht eher noch weniger. (Informationen findet man recht wenige, die Architektur sieht aber recht altbacken aus, der Prozess ist nicht der neuste, lediglich die Flash statt SRAM Konfigurationszellen könnten helfen) Macht lieber mal ne Testsynthese um rauszubekommen, wie realistisch eure Performancevorstellungen sind. Der sicherlich sehr gute optimierte ARM Kern läuft mit 68 Mhz.

Jan

Reply to
Jan Lucas

Haben wir schon auf Pertiknacks gemacht :-)

An die HF-Puristen unter uns: Bitte jetzt nicht mit Tomaten werfen, ich musste das aus Kostengruenden machen. Und ja, auch mir hat sich dabei leicht der Magen umgedreht.

Ok, here goes:

formatting link

Damit kann man die Dimensionen ueberschlagen, die man fuer einen bestimmte Impedanze braucht. Bei 200MHz und 10cm fangen solche Berechnungen an, Sinn zu machen.

Ok, ob die 100nF da reichen? Zumindest wuerde ich noch 3.3nF oder 4.7nF parallel dazu spendieren. Diese Bourns Bloecke mit vielen Terminierungen drin sind bei 200MHz u.U. nicht so der Hit. Einfach ausprobieren.

Brauchst Du nicht, wenn Du hart mit jeweils 50ohm auf eine VDD/2 Schiene gehst. Das ist aber in Sachen Stromverbrauch und Hitzentwicklung ziemlich verschwenderisch.

Hint: Opamps moegen eine direkte kapazitive Belastung des Ausgangs in dieser Hoehe i.d.R. ueberhaupt nicht und werden dann zu einem Oszillator oder rauchen gar ab.

Bleeder benutzt man, wenn die AC-Terminierung ueber eine Serie von z.B.

50ohm und 33pF geschieht, und auch nur wenn Tri-State vorkommen kann. Damit die Leitung im Leerlauf nicht driftet.

Nur bei AC-Terminierung.

Selbst mit VDD/2 muss der Treiber z.B. bei laengeren H oder L Perioden staendig einen Gleichstrom ziehen. Bei AC-Terminierung nur ganz kurz im Umschaltmoment.

--
Gruesse, Joerg

http://www.analogconsultants.com/
Reply to
Joerg

Hall Frank Buss,

Der A3PE1500 hat 38400 "Versatiles" (recht einfache Logikelemente), nach kurzem Datenblattvergleich würde ich sagen das eine Cyclone-LE etwa 1,7 Actel-Versatiles wert ist. Das heist für einen vergleichbaren Ersatz bräuchte es etwa 90353 LEs (38400 * 4 / 1,7). Der EP3C80 würde sicher reichem aber wenn ich mir den Preis des EP3C120 anschaue und davon 2/3 als Preis für den EP3C80 ansetze ist das jedenfalls nicht mehr billiger als des Actel-Quartet.

Die Anzahl der IOs darf ich auch nicht außer acht lassen. Jeder A3PE1500 hat

280 IOs wovon (abzüglich des System-Bus) etwa 200 pro FPGA, also insgesamt 800, zu meiner Verfügung stehen. Davon benötige ich etwa 720 (ca. 180 an jedem FPGA). Wenn ich mich auf der Altera-Web-Page nach was passendem umsehe, z.B. bei den Stratix 2, dann währ der EP2S90 im 1020-Pin FBGA interessant. Der Preis für diese Bauform fängt bei 2'315,00 USD an. Da macht der Aufpreis für eine Platine mit 12 oder 14 Layern (gegenüber den 8 Layern für das Actel-Quartet) auch nichts mehr.

Ist zwar nur ein "one-time programmable ROM" aber besser als nichts oder gar so was flüchtiges mit einer Batterie.

Grüße Erik

Reply to
Erik

Erik schrieb:

Du brauchst erhebliche Resourcen für die Kopplung zwischen den FPGAs, die fallen bei einem einzelnen Chip weg. Zudem dürfte eine Cyclone LE eher mehr als 1,7 LE Versatiles wert sein, da steckt eine LUT4 statt LUT3 drin, ein Register (braucht bei Actel eine eigene Versatile) und eine Carry Chain Logik, die für die Performance von Addierern sehr wichtig ist drin. Zudem hängt die Frage ob ein Design in einen FPGA passt auch sehr häufig an anderen Resourcen wie RAMs, die ProASIC3 Teile haben ziemlich wenige RAMs, zudem scheinen sie auch nicht Versatiles als RAMs verwenden zu können, so das du eigentlich darauf angewiesen bist, für jedes kleine RAM entweder sehr viel Logik oder einen der eh knappen RAM Blöcke zu verwenden. Jan

Reply to
Jan Lucas

Hallo Uwe Hercksen,

ja, so hab ich mir das vorgestellt

nein, in der Mitte

Ist das so ein großes Problem?

Ich hab gehofft das ein Terminierungswiderstand reicht.

Da ich den Bus nicht _unter_ den FPGA durch Routen kann (ich würd gerne mit 8 Layern auskommen) währen die Stichleitungen wohl nicht viel kürzer als die Hälfte so einer Längsleitung. Ich weis nicht ob 2 Stichleitungen an einer Stelle, an einem Bus der etwa genauso lang ist wie die 2 Stichleitungen zusammen, ein Problem sind aber ich hoffe mal das es günstiger ist als wenn noch mal etwa 5 cm als zusätzliches Bussegment drauf gelegt werden (insbesondere wegen der Laufzeit soll das ganze so kurz wie möglich sein und gleichmäßige Laufzeiten sind sicher auch nicht verkehrt). Ich hab schon deutlich verzweigtere Bus-Systeme gesehen die auch mit 133MHz stabil laufen.

Grüße Erik

Reply to
Erik

Hallo Jan Lucas,

Ich hab schon mehrmals PCI in den A3Ps implementiert, für das was mir vorschwebt sollten weniger als 1500 Versatiles reichen.

Die LUT und das Register lassen sich beim Cyclone aber nicht komplett unabhängig voneinander Nutzen so das ich mir vorstellen kann das in einigen LEs eines von Beiden unbenutzt bleiben muss. Auch die Carry-Chain wird bestimmt nicht in allen LEs verwendet. Das die Cyclone LEs deutlich (mehr als Faktor 2) potenter sind als die Actel-Versatiles ist mir schon klar aber dafür dürfte dort oft manches brach liegen. Ein EP3C55, der vielleicht gerade so reicht, ist sicher preiswerter als die 4 A3PE1500 aber es bleibt das Problem der IO-Anzahl. Wenn ich meinen IO-Bedarf mit einem Chip decken wollte müsste ich auf jeden Fall zu einem Stratix 2 (oder einen vergleichbaren Virtex 4) greifen und das sprengt die finanziellen Vorstellungen vom Kunden dann wohl doch.

ACK

das ist leider wahr

Grüße Erik

Reply to
Erik

Erik schrieb:

Wie kommst du dann auf die 200 Mhz?

Ich kenn nun deine Anwendung nicht, aber das PCI Interfaces ist ja meistens nur ein ganz kleiner Teil des Problems, bei einem FPGA kannst du die Einheiten direkt verbinden, mit dem Bus dazwischen müssen sie alle dazu gebracht werden ihren Datentransfer per Bus erledigen zu können.

Du willst hohe Geschwidigkeit, also wirst du viele Register brauchen, zusätzlich ist der Übergang zwischen LUT3 und LUT4 ein ziemlich großer. Aus einer LUT4 werden schliesslich ganz schnell 3 LUT3. Sicher wird auch oft nur eine LUT3 gebraucht, aber Funktionen mit 4 Inputs sind auch sehr sehr häufig und brauchen gleich sehr viel mehr LUT3s. Hat schon seinen Grund, warum praktisch alle Hersteller bis auf Actel LUT4 oder inzwischen bei den Virtex5 oder Stratix III Teilen sogar LUT6 verwendetet werden.

Dann machs doch mit zwei Chips?

Jan

Reply to
Jan Lucas

Im Zweifel ausprobieren: Mit der Dremel ein Kreuz in den angepeilten Dimensionen fraesen, terminieren, treiben und mit einem FET-Tastkopf mal ansehen.

Ich auch, aber die wurden mitunter in ellenlangem Trial-and-Error solange hingefriemelt, bis es lief.

--
Gruesse, Joerg

http://www.analogconsultants.com/
Reply to
Joerg

Hallo Joerg,

Der Kostendruck ist diesmal zwar auch recht groß aber soweit würde der Kunde wohl nicht gehen wollen. Ich denke es bleibt bei klassischem FR4.

Vielen Dank, ist schon in den Bookmarks gelandet.

OKay, dann die 100 nF kurz vor dem Bereich und den kleinen in unmittelbarer Nähe zum Terminierungswiderstand. Beide gegen Ground und im kleinstmöglichen SMD-Gehäuse.

Also lieber nur 8 Daten-Leitungen auf eine Vtt-Leitung (jeweils mit eigenem OP als Push-Pull-Versorgung) terminieren?

Der Treiber im FPGA hat, laut Datenblatt, knapp 50 Ohm Innenwiederstand also werden von Vdd bzw. Ground nach Vtt etwa 8 mA fließen. Das macht für 72 Datenleitungen und 5 Steuerleitungen ca. 650 mA also knapp 1W bei 1,5 V Bus-Versorgung, das ist mir ein schneller Bus wert. Vor allem weil weniger als

30% der Verlustleistung im FPGA entsteht.

Also 5 Ohm in Serie zwischen OP-Ausgang und Kondi? Die Rückführung auf den Invertierenden OP-Eingang vor oder hinter dem Serien-Widerstand anklemmen?

Dafür hilft die Vdd/2-Terminierung beim Umschalten, zumindest bei der ersten Hälfte, und der Spannungshub ist insgesamt nicht so groß (ca. 0,7 Vp-p) so das die Leitungskapazität schneller umgeladen ist.

Grüße und Danke für Deine Antwort Erik

Reply to
Erik

Hallo Jan Lucas,

Ich will ja eben nicht den Physical-Layer von PCI verwenden sondern nur das Protokoll, also FRAME/DEVSEL/IRDY/TRDY/LOCK und die CBE-Signale. Ich hab gestern noch mal den Bandbreitenbedarf genauer überschlagen und 150 MHz (eventuell noch weniger) werden wohl auch zuverlässig reichen.

Ich betrachte das eher als Herausforderung.

Nur für den Datenaustausch, der Rest wird parallelisiert.

Ist vielleicht nur eine Eigenart vom verwendeten Synplify Lite aber in meines Designs finden sich recht viele Logikelemente mit nur 2 Eingängen obwohl ich meine das sich einiges davon mit LUT3s effizienter lösen lässt. Aber ich denke ein Faktor ca. 2 von Cyclone 3 LEs zu A3P-Versatiles ist wohl doch angebrachter auch wenn sich das natürlich nicht so pauschal sagen lässt. Trotzdem würde ich wohl kaum unter einem EP3C55 auskommen.

Welchen?

Grüße Erik

Reply to
Erik

Jan Lucas schrieb:

Klingt so, als wäre Actel generell nicht empfehlenswert.

- Henry

--
www.ehydra.dyndns.info
Reply to
Henry Kiefer

Joerg schrieb:

Vielleicht sollte man mal erwähnen, das PCI in klassischem Sinne überhapt nicht terminiert ist.

- Henry

--
www.ehydra.dyndns.info
Reply to
Henry Kiefer

Das ist immer schwierig zu vergleichen. Wenn du ein Beispielprojekt hast, dann kann ich das mal übersetzen oder du kannst versuchen, das hier zu übersetzen (zumindest die I2C-Entity sollte einigermaßen portabel sein)

formatting link

Nur die I2C-Einheit braucht 151 LEs, insgesamt braucht das Projekt 296 LEs mit dem simulierten PCA9555. Der Xilinx Spartan braucht 249 LUTs. Jetzt wäre interessant, wieviel der Actel-Chip braucht, um bessere Umrechnungsfaktoren zu bekommen.

Das sind ja ziemlich viele Anschlüsse. Wenn die nicht so schnell sein brauchen, dann könntest du die mit kleinen FPGAs anbinden und dann z.B. per LVDS anbinden, was je nach Chip Datenraten bis in den GHz-Bereich erlaubt.

--
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Reply to
Frank Buss

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.