Forum: FPGA, VHDL & Co. freien PCI 32Bit Target in VHDL


von MARK (Gast)


Lesenswert?

Hallo...

Ich suche einen freien PCI 32Bit Target in VHDL.
Ich brauche diesen PCI IP-Core für einen Lattice MachXO FPGA.

Kenn jemand einen?

Vielen Dank
Mark

von Kest (Gast)


Lesenswert?

Ich glaube gerade für Lattice gibt es einen freien Core, direkt auf der 
deren Seite

Grüße,

Kest

von Willivonbienemaya .. (willivonbienemaya)


Lesenswert?

Ist der wirklich kostenlos?

Xilinx und Altera wollen 5000 $ für deren IP Core haben.

Hat jemand Erfahrungen mit Lattice und dem PCI Core ?

von Kest (Gast)


Lesenswert?

Ja, der ist kostenlos. Erfahrung habe ich leider keine damit. Man darf 
den aber nur in Verbindung mit Lattice FPGAs verwenden, sonst nicht.

Kest

von MARK (Gast)


Lesenswert?

Ja das Lattice Reference Design habe ich schon gefunden.
Allerdings ist das in Verilog geschrieben und ich bräuchte einen in 
VHDL.

Sonst wäre das schon ganz fein.

von Kest (Gast)


Lesenswert?

Mhh... hast Du auf Opencores.org geschaut? Da gab's ja auch mal 
PCI-Core, aber ich weiß auch nicht, ob in Verilog oder VHDL.

Kest

von Willivonbienemaya .. (willivonbienemaya)


Lesenswert?

Kann man den Verilog Core nicht in VHDL einbinden?

von MARK (Gast)


Lesenswert?

Ich habe auf OpenCores.org nur einen Verilog gefunden. Es gibt zwar auch 
einen VHDL, da fehlt aber eine Datei und es ist nur beta 0.1....

Ich kann mit der Student Version von ispLever nur VHDL oder Verilog 
entwickeln.... Mixed Mode geht nicht in der Student Version...

von T.M. (Gast)


Lesenswert?

Es gibt den PCI-Target Core auf Opencores in VHDL:
http://www.opencores.org/projects.cgi/web/pci32tlite_oc/overview

Dieser wurde auch schon auf PCI-Kart5e von Raggedstone implementiert, 
siehe:
http://projects.varxec.net/raggedstone1

von Hardwareonkel (Gast)


Lesenswert?

Die Karte will ich mir auch holen, daher ist das Projekt für mich 
interessant. Leider habe ich noch nichts mit PCI auf der Treiberseite 
zur Hardware hin gemacht. Hätte da jemand einen Literaturtipp? Oder 
reicht der Kauf der Raggedstone?

von MARK (Gast)


Lesenswert?

Buchtipps zur Treiberprogrammierung:

Eva-Katharina Kunst, Jürgen Quade: „Linux Treiber entwickeln“ 
(Onlineversion) (http://ezs.kr.hsnr.de/TreiberBuch/html)

Michael Beck, Harald Böhme u.A.: „Linux Kernelprogrammierung-Algorithmen 
und Strukturen der Version 2.4“ 6. Auflage; Addison-Wesley 2001

Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman: Linux Device 
Drivers, Third Edition EBook
(http://lwn.net/Kernel/LDD3/)

Linux Magazin: Kern-Technik Serie

Letzteres ist für Einsteiger zu Empfehlen, allerdings von Artikel 1 zu 
lesen...
Behandelt alles aber nur Linux-Treiber. Bei den Windowstreibern habe ich 
auch keine Ahnung. Man sollte schon einige Erfahrungen im Umgang mit C 
programmierung besitzen.

Laut Homepage ist ein Beispieltreiber zur Ansteuerung der 
7_Segmentanzeige zum Runterladen verfügbar.

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

In der ELRAD war mal ein schöner Artikel uber den PCI BUS. Ich weiss 
nicht genau in welcher Ausgabe.

Wenn du nicht alle Buszugriffarten benötigtst, dann reduziert sich der 
Aufwand erheblich. Ich meine damit DMA oder Burst Zugriff

von Hardwareonkel (Gast)


Lesenswert?

Naja, das ist so das Thema: Ich bräuchte erstmal einen deteillierten 
Überblick über die möglichen Zugriffsarten. :o

von Philip S. (phs)


Lesenswert?

Hardwareonkel wrote:
> Die Karte will ich mir auch holen, daher ist das Projekt für mich
> interessant.

Ich hab' vor kurzem auch das Raggedstone1-1500 Board gekauft, ein sehr 
nettes Spielzeug. Allerdings ist es mein erstes FPGA Board, daher habe 
ich keinen Vergleich ob es gut, günstig usw. ist. Mir macht's aber Spass 
;)

Man kann wohl (als Student kostenlos) einen PCI-IP-Core vom Hersteller 
bekommen, darum habe ich mich aber noch nicht gekümmert.  Mein Augenmerk 
liegt im Moment auf der Anpassung der OpenCores.org Implementierung.

> Leider habe ich noch nichts mit PCI auf der Treiberseite
> zur Hardware hin gemacht. Hätte da jemand einen Literaturtipp?

Jemand hat ja schon die Anpassung des OpenCore.org PCI IP Core für das 
Raggedstone-Board verlinkt, zur Erinnerung trotzdem hier nochmal der 
Link: http://projects.varxec.net/raggedstone1. Dafür gibt es schon einen 
Linux-Treiber, der als Lehrbeispiel herhalten kann.
Ein Freund von mir hat das selbe Board und er hat schon mit dem PCI-Core 
experimentiert, laut seiner Aussage funktioniert das alles ganz gut.

Ich persönlich bevorzuge allerdings FreeBSD (http://www.freebsd.org) 
gegenüber Linux, hauptsächlich wegen der hervorragenden Dokumentation. 
Es gibt dort das "Architecture Handbook" wo relativ genau beschrieben 
wird, wie man einen einfachen Treiber schreibt (siehe 
http://www.freebsd.org/doc/en_US.ISO8859-1/books/arch-handbook/driverbasics.html). 
Für die Buszugriffe gibt es eine eigene, gut dokumentierte API 
(bus_space(9) oder auch bus_dma(9)), so dass man sich nicht um die 
Details kümmern muss. Als Bonus ist der Treiber, wenn man die APIs 
verwendet, auch gleich auf mehreren Architekturen verwendbar.

> Oder reicht der Kauf der Raggedstone?

Also das Raggedstone Board kommt ohne große Dokumentation. Das online 
verfügbare Handbuch beschreibt die einzelnen Bauteile auf dem Board und 
es gibt noch ein Einsteiger-Tutorium das beschreibt, wie man ein 
einfaches Design mittels Webpack 8.x auf das Board bringt. Für die 
PCI-Sachen also eher nutzlos.

von René D. (Firma: www.dossmatik.de) (dose)


Angehängte Dateien:

Lesenswert?

Ich habe den Artikel zur PCI Einführung gefunden.

Bus Basice Technische Grundlagen des PCI-BUS von Oliver Rovini Elrad 
1997 Heft 3.

Die PCI Karte wird vom BIOS abgefragt wieviel Adressraum benötigt wird. 
Das BIOS weist einen Adressraum zu. Die Karte kodiert den Adressraum 
nach der Zuweisung selbst aus. Der Takt kann von DC bis 33MHz alle Werte 
annehmen. Da müssen die Daten in eine FIFO oder Dual Port RAM gepuffert 
werden.

DMA gibt es nicht. Doch die PCI Karte kann auch Bus Master werden und 
dann den Ganzen PCI Bus steuern. Bus Master ist sohn etwas zu weit. Um 
eine Daten Brücke für den PCI zu haben, ist ein Adressdecoder und eine 
Anmeldung für das BIOS notwendig.

Als typische Chips für solche Universal Karten sind der PLX 9054 und der 
AMCC S5933.


Ich habe eine nicht ganz freien Code gefunden. Er darf nicht in einem 
kommerziellen Produkt verwendet werden!

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.