Forum: FPGA, VHDL & Co. Anfängerfragen Ethernet, PCI


von eye (Gast)


Lesenswert?

Hallo.

Ich bin dabei, mein erstes PLD-Projekt zu starten, und hoffe, dass mir 
vielleicht jemand mit Rat hilft. Ich habe nöchstens theroretische 
VHDL-Erfahrunf, aber sonst keine Ahnung.

Es geht darum, für ein bereits embedded Gerät entweder die vergriffene 
Ethernet-Erweiterungskarte nachzubauen, oder eine eigene zu 
konstruieren. Ein Klon der bestehenden würde etwas Absatzmöglichkeit 
bedeuten, aber für unsere interne Zwecke würde eine Eigenkonstruktion 
reichen. Ein Exemplar der original Ethernet-Karte liegt vor. Der Bus des 
Geräts ist einigermaßen ISA-ähnlich, aber schneller. Die ursprüngliche 
Ethernetkarte verwendete den PCI-Chipsatz RTL8139, und einen 
proprietären Chip, zwischen diesem und dem Bus. Fragen zum 
Kommunikationsprotokoll (insb. Busmaster-Emulation) lassen sich insofern 
klären, dass es einen kompletten Treiber für die Netzwerkkarte inklusive 
der PCI-Host-Brücke gibt.

Es geht dabei um ein nichtkommerzielles Projekt. Ich bin also nur zu 
relativ kleinen Ausgaben bereit, auch hinsichtlich der großen 
Wahrscheinlichkeit, dass das Ganze mangels Zeit oder Können im Sand 
landet.

Die Homebrew-Variante wäre also irgendeins der vielen ISA-Ethernet 
Chipsätze (z.B. von ASIX), über ein CPLD an den Bus gebunden. Die 
Nachbau-Variante erfordert einen PCI-Host.

Zuerst einmal, welche hobbyfreundliche Anfangsmöglichkeiten es gibt. Vor 
allem die Software sollte kostenlos sein (evtl. kostenlose 
Studentenversion?), aber auch der Upload-Kabel sollte nicht allzu teuer 
sein. Ich wäre bereit, bis allerhöchstens 200 EUR für Software, 
Entwicklerkabel und Entwicklerboard auszugeben, weniger ist besser. Die 
Software (inkl. Upload) sollte unter Linux laufen können, da wir im 
Falle der Homebrew-Variante parallel die Treiber für den Host entwickeln 
müssen, und diese Werkzeuge laufen am Besten unter Linux.

Verstehe ich es richtig, dass man für jeden PLD-Anbieter eigene 
JTAG-Kabel verwenden muss? Es fliegen viele Schaltungen zu 
LPT-JTAG-Adaptern herum, z.B. dem Xilinx Parallel III und Altera 
Parallel Blaster, lassen diese sich denn auch an handelsüblichen 
USB->LPT Adaptern betreiben? Mein Notebook hat kein Parallelport. Kann 
man diese Kabel auch für aktuelle Modelle nutzen, solange es um günstige 
FPGAs geht?

An interessanten Möglichkeiten habe ich soweit Xilinx-Zeug gefunden, 
Software ist kostenlos, FPGAs ziemlich günstig. Deren 
Spartan3e-Starterkit hat für 180 EUR so ziemlich alles, was man sich so 
vorstellen kann, und einen USB JTAG kabel, den ich auch bei künftigen 
In-System-Programmed designs verwenden kann. Bei Altera habe ich auch 
den Endruck, dass sich damit erschwinglich anfangen lässt. Gilt das in 
irgendeinem Maße auch für kleinere FPGA-Hersteller?

In Zusammenhang mit diesem Projekt scheint Quicklogic besonders 
interessant, da sie "kleine" FPGAs mit eingebauten PCI-Hosts anbieten... 
Leider scheint es mit ihrer Distribution nicht so gut gestellt hier, und 
nicht mal die ungefähren Preise für deren Teile konnte ich finden...

Welche andere Möglichkeiten gibt es, einen PCI host zu implementieren? 
Kann man sich als Hobbyprogrammierer die Softcores der FPGA-Hersteller 
leisten? Wie viel FPGA-Platz fressen sie, vom Kostengesichtspunkt? Was 
ist mit dem Opencores PCI Project - ist es nur ein PCI-Endgerät, oder 
kann es auch als Host fungieren?

Hat irgendjemand Ahnung/Erfahrung/Tipps?

im Voraus dankbar,
eye

von Jens (Gast)


Lesenswert?

Viel Text mit vielen Fragen...

Nimm was von Xilinx, kostet alles nicht viel und Programmiergerät 
besteht aus einer Hand voll Bauteilen. Software ist kostenlos und alle 
sind glücklich.

Oft bekommt man Xilinx-Krempel auch günstigst bei eBay.

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

Bei ebay nach XILINX suchen.
Ich habe dort den 4.1 Kit+CD,s für 10 Euro gekauft.
Dan Bei Xilinx die Soft kostenlos downloaden. 8.x
soll gut sein. Viel MBS ohne DSL :::wait:
http://www.stud.fit.vutbr.cz/~xvasic11/cl.cpld/

Hier ist das gut zu sehen mit den Constsaints , bitte dort nach unten
scrollen.

Das ist zwar nicht in deutsch,oder englisch.
Aber du kanst an den Bildern,u. Schaltungen, genau sehen was du zu
designen machen must.

Was auch ganz wichtig ist sind an dem Chip die GCLK = Global Clock
Pins.
GSET, GRESET.
Global Reset, Global Tristate, Global SET usw....
Diese Pinne solte man nutzen.
Gruss Holger.

von eye (Gast)


Lesenswert?

Seltsam, schon 2 Antworte und keiner hat so richtig gelesen.

Dem "Xilinx rult, weil es billig ist"-Gebet will ich nicht folgen, 
zumindest nicht stur und gedankenlos. Es kann sein, dass für mich z.B. 
Lattice CPLDs gut sind, die stellen welche mit RAM her, welchen ich 
möglicherweise als Puffer brauche, um den Bus und Prozessor zu 
entlasten. Andere wie Actel stellen FPGAs mit Flash her, so dass die 
Anzahl an Bauteilen reduziert werden kann - wichtig für die Endversion 
der Netzwerkkarte. Es ist noch unklar, ob das ein FPGA oder ein CPLD 
werden soll.

Der Programmierkabel aus "einer Handvoll Bauteilen" ist für Druckerport, 
der physisch nicht unbedingt vorhanden ist. PCMCIA LPT Adapter wäre 
vielleicht eine Möglichkeit, aber die sind eben auch nicht billig.

Meine Internet-Leitung tröpfelt nicht. Ich werde auch nicht bei eBay 
nach irgendeinem Gelegenheitskauf jagen und versuchen, irgendetwas aus 
ihm zu machen, das wäre getötete Zeit. Das Vorhaben ist groß und 
anspruchsvoll und erfordert eine systematische Herangehensweise.

Ein echtes FPGA-Experimentierboard ist keine schlechte Idee. Es würde 
mir so einiges erlauben, zum Beispiel die Kommunikation zwischen diesem 
seltsamen Embedded-Rechner und einer bestehenden Netzwerkkarte für kurze 
Zeit anzuzapfen und die Daten im FPGA-RAM zwischenzuspeichern. Ein 
komplexes Design ausprobieren bevor ich zu einem einfacheren gehe, das 
dann erst ist ein CPLD passt, etc.

Holger, ich hoffe, der Großteil der Nachricht war nicht für mich? Oder 
postest du es zu jeder Frage? Ich kann zwar mit Mühe und Not Tschechisch 
lesen, aber... was soll das?

-eye

von Jens (Gast)


Lesenswert?

Äh und was ist jetzt eigentlich dein Problem bzw. deine Frage, mal in 
zwei Zeilen formuliert?

Du scheinst ja wohl  ziemlich genau zu wissen, was du brauchst. Also 
kauf dir halt das entsprechende. Wenn Gelegenheitskäufe für dich nicht 
in Frage kommen und du ne schnelle Internetverbindung hast, scheint also 
Geld keine Rolle zu spielen. Um es zu wiederholen, kaufe halt.

Im übrigen ist dein Eingangspost ewig langes Gelaber. Bringe es doch 
bitte einfach mal auf den Punkt, was willst du jetzt von uns wissen?


von eye (Gast)


Lesenswert?

Hallo.

"Geld spielt keine Rolle" ist nicht richtig. Ich habe gehört, z.B. 
Lizenzgebühren für einen PCI-Host als Softcore liegen in einer 
Größenordnung von 1000 EUR und mehr, das kann ich mir ganz und gar nicht 
leisten. Bei etwa 200 EUR setzt die Schmerzgrenze ein. Einige Hersteller 
verlangen Miete für die Sofware, die in Größenordnung 100er EUR pro 
Monat liegen kann - das geht ganz bestimmt nicht. Auch sollten die Teile 
(CPLDs, FPGAs, PCI-Controller) für Endgeräte 20 EUR nicht überschreiten, 
wenn es geht.

1. Wie implementiere ich einen PCI HOST, so dass ich mir das leisten 
kann, so dass es nicht die Ewigkeit dauert, und so dass es funktioniert? 
Ich blättere gerade durch eine PCI Spec, sieht nach 'ner Menge Holz, 
ganz und gar nicht damit zu vergleichen, ein PCI-Endgerät zu bauen. Der 
Host muss nur ein einziges PCI-Endgerät tragen, wenn es hilft.

2. Hat jemand Meinung/Erfahrung zu "kleineren" FPGA-Herstellern, wie 
Lattice, Qucklogic, Actel. Ob es günstige Evaluierungsboards usw. dafür 
gibt. Kommentare in der Art von "für A ist B empfehlenswert" oder 
vielleicht Warnungen in der Art von "X ist eine Kostenfalle", 
"Problemfalle", "Y geht nicht mit Linux", "Z lässt sich nicht über USB 
programmieren" etc.

So, ich gehe mal alleine suchen. Denn anscheinend kann hier niemand 
lesen, geschweige denn, dass jemand spezielle Erfahrung dazu hätte.

-eye

von Roger S. (edge)


Lesenswert?

Tja, preiswert, schnell implementiert, funktionsgarantie und erstes PLD 
Projekt beissen sich. Du musst dich entscheiden auf was du deine 
Prioritaet legst.

Wenns nichts kosten darf, dann ist der PCI core von opencores 
unschlagbar.
Wenns garantiert mit Haendehalten laufen soll, dann der Core vom FPGA 
Hersteller, oder den von PLDA kann ich waermstens empfehlen.
Jedoch reicht fuer kommerzielle PCI cores 1000EUR bei weitem nicht.

Software fuer Altera und Xilinx (ander Hersteller nicht ausgeschlossen) 
gibts gratis zum download. Funktionalitaet etwas gegnueber der 
Bezahlversion eingeschraenkt. Mieten musst du auch diese nicht, wobei 
ein Preis von 100EUR/Monat waehre nichts aussergewoehnliches, eine 
Jahres subscription der Software einer dieser Hersteller liegt knapp in 
diesem Rahmen.

Was du schlussendlich fuer die FPGAs berappen musst, liegt in der 
Stueckzahl und Familie die du waehlst. Am besten du laesst dich von 
einem FAE beraten, ist in meinen Augen unerlaesslich fuer ein ernstes 
Projekt, wo's um Stueckzahlen geht. Wobei vorher schreibst du von einem 
nicht kommerziellen Projekt, also kann dir es ja wurscht sein ob das 
FPGA nun 20 oder 100 Euro kostet.

Dein Erstes Posting hatt Fragen ueber Gott und die Welt, wundert mich 
nicht, dass sich da niemand die Muehe macht um genauer drauf einzugehen.

Cheers, Roger

von Gast (Gast)


Lesenswert?

Wenn ich mich jetzt nich verlesen habe willst du an den PCI-Buss nur 
einen
Netzwerkcontroller anbinden. Dann würde ich doch lieber die MAC in den 
FPGA platzieren. An die IO-Pins noch einen Ethernet-Phy und schon hast 
du einen Ethernetcontroller.

Eine MAC bekommst du zum Beispiel bei www.OpenCores.org
Stell dich aber drauf ein, das da noch ein paar Fehler drin sein 
könnten.
Ich habe sie noch nicht benutzt.

Bei www.terasic.com.tw bekommt man zum Beispiel das Altera DE1 - 
Development and Education Board. Mit Zoll und Versandkosten liegen wir 
aber schon über 200€.

Die USB -> Paralleadapter kannst du für diesen Zweck vergessen, sie sind 
nur für die Komunikation mit einem Drucker ausgelegt. Es gibt einen 
Adapter, der ist aber eine Etwicklung eines Bastlers, muss mal die URL 
raussuchen.
Bei den PCMCIA gibt es auch nur einige, bei denen die Ansteuerung noch 
funktioniert.

Auf dem Board von Terasic ist schon ein USB-Blaster Nachbau drauf.

Vor ein Paar Tagen hat jemand einen USENET Beitrag gepostet, in dem 
beschrieben stand, wie man Quartus unter Wine zum laufen bekommt.
Spartan oder Cyclone: Beitrag "Re: Spartan oder Cyclone"

von eye (Gast)


Lesenswert?

Ok, danke für die sinnvollen Antworte.

>Tja, preiswert, schnell implementiert, funktionsgarantie und erstes PLD
>Projekt beissen sich. Du musst dich entscheiden auf was du deine
>Prioritaet legst.

Auf die Nase fallen ist natürlich immer das Einfachste, und das habe ich 
auch fast ein bisschen vor. :)

>Wenns nichts kosten darf, dann ist der PCI core von opencores
>unschlagbar.

Beim ersten Hinsehen sieht es nach einem Endgerät-Core aus. Aber ich 
habe es länger schon im Auge und werde ich mir noch genauer anschauen.

>Wenn ich mich jetzt nich verlesen habe willst du an den PCI-Buss nur
>einen
>Netzwerkcontroller anbinden. Dann würde ich doch lieber die MAC in den
>FPGA platzieren. An die IO-Pins noch einen Ethernet-Phy und schon hast
>du einen Ethernetcontroller.

Plan A ist, einen bestimmten PCI-Netzwerkchip zu nutzen, weil das dem 
nicht mehr erhältlichen Originalteil entspricht, und bestehende Software 
einen Treiber dafür einkompiliert hat. Die Implementierung der Hardware 
ist noch unklar.

Plan B ist, auf die Softwarekompatibilität zunächst zu scheißen, und 
eine teilweise schon bestehende Hobby-Entwicklung zu nutzen. Es hat 
nämlich schon jemand eine ISA-Karte an den Bus anschließen können. Was 
noch zu tun bleibt, dem Gerät eine spezifikationskonforme ID zu geben 
und DMA beizubringen. Da sind mehrere konkrete 
Implementierungsstrategien erarbeitet, und es klappt auch sicher. Und 
ich glaube, da komme ich mit einem CPLD statt FPGA aus. Als Bonus ließe 
sich an den so entstehenden Bus noch ein Compact-Flash Kartenslot 
hängen... ziemlich cool, wenn auch etwas unsauber. Anzahl der Bauteile 
wäre minimal: CPLD, ASIX oder Davicom MAC/PHY in einem Chip, Büchse mit 
eingebauten Magnetics, fertig. Für Treiber und Qualität ist ziemlich gut 
gesorgt.

Für unsere interne Zwecke reicht Plan B. Man könnte sogar versuchen, 
alte Software zu hacken... Aber mit dem Erfolg könnte man schwer 
rechnen. ASM-Level-Debuggen auf einem Embedded, auf einem 
Hitachi-RISC-Prozessor, wo das ganze Betriebssystem mit in jeder 
Executable drin ist und alle Symbole wegoptimiert sind... da sieht man 
ja gar nichts! Es könnte da aber ein paar krumme Wege geben.

Die Geräte würden in kleiner Serie hergestellt werden, und der Preis für 
einzelne Teile sollte deswegegen schon vernünftig bleiben. 
Nichtkommerziell ist es in dem Sinne, dass ich nicht damit rechne, mir 
die gemachte Arbeit von dem Erlös bezahlen zu lassen, sondern der 
Verkaufspreis soll lediglich die unmittelbaren Herstellungskosten 
einigermaßen abdecken. Und wer weiss, vielleicht artet das ja noch in 
Großserie aus - größtmögliche anzunehmende Absatzmenge ist 20000, aber 
jetzt werden es etwa 20 Stück sein.

>Die USB -> Paralleadapter kannst du für diesen Zweck vergessen, sie sind
>nur für die Komunikation mit einem Drucker ausgelegt. Es gibt einen
>Adapter, der ist aber eine Etwicklung eines Bastlers, muss mal die URL
>raussuchen.

http://www-user.tu-chemnitz.de/~heha/bastelecke/Rund%20um%20den%20PC/USB2LPT/

Ich google ja schon seit Monaten.

Zu Spartan vs. Cyclone, danke, sehr interessant, insbesondere Vergleich 
der Features der Programmierumgebungen.

Die ziemlich günstigsten Boards sind die unter
http://www.fpga4fun.com/board_Xylo.html
und die sind für Cyclone. Terasic ist auch interessant, danke.

Beides bestätigt ein wenig meinen instinktiven Drang, mich nicht in den 
Xilinx-Reigen einbinden zu lassen.

Danke.
-eye

von T.M. (Gast)


Lesenswert?

http://www-user.tu-chemnitz.de/~heha/bastelecke/Rund%20um%20den%20PC/USB2LPT/

Den Entwickler dieses Adapters hatte ich vor 1 Jahr oder so gefragt, ob 
der auch zum Programmieren von FPGAs funzt. Er verneinte. Kann sein dass 
ich da was dran geändert hat. Ich habe mir mittlerweile eine 
PCMCIA-Karte gekauft. Zumal, wenn ich die Webseite überfliege, kein 
Linux supportet wird.

von FPGA-Küchle (Gast)


Lesenswert?

Also mit Host meinst du einen PCI-initiator und mit Slave ein 
PCI-Target?

Kennst Du das:
http://techwww.in.tu-clausthal.de/Projekte/Abgeschlossen/VHDL-Entw%FCrfe/pci-tutorial/

von eye (Gast)


Lesenswert?

Mhmm, soweit mein dünnes Verständnis zulässt, fungieren alle geräte 
typischerweise sowohl als Initiator als auch als Target. Die 
Funktionseinheit, die mir eher schleierhaft ist und Angst macht, ist der 
Moderator, und den muss der Hostcontroller implementieren, ein Endgerät 
dagegen nicht.

Aber: ich habe mir mittlerweile die gesamte Literatur besorgt, lese mich 
da ein, und dann weiss ich mehr.

Danke für den Link.

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.