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
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.
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.
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
Ä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?
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
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
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"
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
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.
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.