Projekte.PCI-Tutorial-Vorbereitung
(Struktur)
Vorarbeiten
|
In diesem Kapitel wird beschrieben, wie man an das LogiCore PCI Interface von der Xilinx-Website herunterlädt und ein Projekt-Grundgerüst im Project Navigator der Entwicklungsumgebung Xilinx ISE 5.1i erstellt.
|
Beschaffung
Das LogiCore PCI Interface ist auf der Xilinx-Website zu erreichen:
- http://www.xilinx.com/pci/
- PCI Lounge (Customers only) → 32bit-PCI (0-33 MHz)
- Benutzer- und Kennworteingabe
- PCI32 Spartan-II Releases → aktuelle Version
- The Real-PCI® LogiCORE PCI32 Spartan-II V3.0, configuration and download
Dem Download ist ein Java-Applet vorgeschaltet, das den
PCI Configuration Space Header zeigt. Dort kann das PCI-Interface grafisch konfiguriert werden. Die Einstellungen finden ihren Niederschlag in einer Konfigurationsdatei, die sich auch sehr einfach per Hand modifizieren lässt. So braucht man nur einmal den Core herunterladen und kann ihn dann je nach Bedarf wie weiter unten beschrieben anpassen. Das eigentliche PCI-Interface ist unversell. Daher:
- Alle Häkchen entfernen.
- Auf "Download" klicken.
- Die Optionen "Documentation" und "Customized VHDL Source Files" auswählen sowie den gewünschten Datentyp, bei Windows üblicherweise ".zip"
- Datei herunterladen und entpacken.
Welche Dateien werden benötigt?
Die tatsächlich benötigten Dateien werden in den zukünftigen Projektordner kopiert.
- \vhdl\src\xpci\pci_lc_i.ngo enthält das eigentliche PCI-Interface.
- \vhdl\src\xpci\pci_lc_i.vhd ist der Low-Level Wrapper für das PCI-Interface.
- \vhdl\src\wrap\pcim_lc_33_5_s.vhd ist die Wrapper-Datei für das PCI-Interface.
In dem Ordner \src\wrap\ stehen mehrere Dateien für unterschiedliche Hardwarekonfigurationen zur Auswahl, in diesem Fall 33 MHz bei 5 V.
- \vhdl\src\xpci\cfg.vhd ist das Konfigurationsmodul.
- \vhdl\src\xpci\pcim_top.vhd stellt die Top-Level Datei für das VDHL-Design dar.
- \vhdl\src\xpci\userapp.vhd wird später den selbstgeschriebenen Code aufnehmen.
Die User Constraints Datei (UCF)
Nun fehlt noch eine passende User Constraint Datei. Da das Layout des Entwicklungsboards die Xilinx-Empfehlungen einhält, kann der Xilinx UCF Generator verwendet werden:
- http://www.xilinx.com/pci/
- PCI Lounge (Customers only) → 32bit-PCI (0-33 MHz)
- Benutzer- und Kennworteingabe
- PCI UCF Generator (unten auf der Seite) → aktuelle Version
- Irgendwelche Angaben über die Art der geplanten Applikation machen, PCI Compliance required, "Start"-Schaltfläche anklicken.
- Die folgende Konfiguration einstellen:
Core Version |
Bus Interface |
V3.0 (PCI Core)
|
PCI
|
|
Device Family |
Bus Width |
PCI Interface on |
|
Spartan-II
|
32 bits
|
the Slot side
|
|
Frequency |
Targeted Device |
Package |
33
|
XC2S200
|
FG456
|
|
Speed grade |
Footprint Compatibility |
-6
|
N/A
|
|
- Die "Generate"-Schaltfläche betätigen und die Datei speichern.
(Unter "Customize" kann man noch spezielle Einstellungen vornehmen, die an dieser Stelle jedoch nicht erforderlich sind.)
Abb.: Die Komponenten-Hierarchie und die zugehörigen Dateinamen
Die Beschreibung bezieht sich auf ISE 5.1i.
- Im Project Navigator ein neues Projekt erstellen
Device Family | : Spartan2 |
Device | : xc2s200 |
Package | : fg456 |
Speed Grade | : -6 |
Design Flow | : XST VHDL |
- Alle VHDL-Dateien (cfg.vhd, pci_lc_i.vhd, pcim_lc_33_5_s.vhd, pcim_top, userapp.vhd) als VHDL-Module zum Projekt hinzufügen (Project → Add Source...). Die Dateien ordnen sich automatisch hierarchisch an.
- Die User Constraint Datei xc2s200fg456_32_33.ucf einbinden (Project → Add Source...) und pcim_top zuordnen.
- Im Project Navigator unter Edit → Preferences... → Processes den "Property Display Level" auf "Advanced" setzen.
- Im Dateifenster des Projektes (Module View) pcim_top anklicken.
- Im Prozessfenster (Process View) sind nun noch ein paar Voreinstellungen vorzunehmen.
Angegeben werden hier nur die Parameter, die auf jeden Fall erforderlich sind. Es lohnt sich, im Hinblick auf spätere komplexere Projekte auch die anderen Optionen genauer zu studieren.
- Synthesize (rechte Maustaste) → Properties...
Synthesis Options → Keep Hierarchy | : Yes |
Synthesis Options → Read Cores | : <kein Häkchen> |
- Implement Design (rechte Maustaste) → Properties...
Translate Properties → Macro Search Path | : <Verzeichnis, in dem pci_lc_i.ngo liegt> |
- Generate Programming File (rechte Maustaste) → Properties...
Startup Options → FPGA Start-Up Clock | : JTAG Clock |
- In der User Constraint Datei xc2s200fg456_32_33.ucf muss der Instanzenname des eigenen Entwurfs korrigiert werden: In der Datei userapp.vhd wird die Top-Level-Modul "userapp" des eigenen Entwurfs beschrieben. userapp ist als Komponente in der Top-Level-Datei des Projektes pcim_top als Komponente deklariert und instanziiert. Dieser Instanzenname (in der diesen Ausführungen zugrunde liegenden Version des LogiCore PCI Interface ist es "USER_APP") muss im letzten Abschnitt den dort eingetragenen Instanzenname ersetzen. Daher
- im Dateifenster des Projektes (Module View) xc2s200fg456_32_33.ucf anklicken,
- im Prozessfenster des Projektes (Process View) mit "Edit Constraints (Text)" die User Constraint Datei editieren,
- im letzten Abschnitt der Datei wird aus
#############################################################
# User Time Names / User Time Groups
#############################################################
#
# Note: [...]
#
INST "PING32_INST" TNM = FFS:USER_FFS ;
in diesem Beispiel
#############################################################
# User Time Names / User Time Groups
#############################################################
#
# Note: [...]
#
INST "USER_APP" TNM = FFS:USER_FFS ;
Zusätzliche eigene Vereinbarungen, z.B. Pin-Zuweisungen können später an diese User Cointraint Datei angehängt werden oder in einer zweiten UCF gespeichert werden. ISE 5.1i erlaubt es, mehrere User Contraint Dateien für ein VHDL-Modul zu verwenden.
Es bietet sich an, von diesem Projekt-Grundgerüst Kopien für spätere Arbeiten zu machen.
Autor: gkemnitz, Letzte Änderung: 14.04.2011 15:09:59