PDF-Datei_ger

Transcription

PDF-Datei_ger
Anleitung ISE13
ISE 13.4 (Xilinx)
Designflow
1/11
Aktualisiert: 11/2012 Pal
Inhaltsverzeichnis
1.
Projekterstellung
3
2. Bausteinauswahl
4
3. Einbinden der Quelldateien
5
4. Die Pinbelegungsdatei
6
5. Die Synthese
7
6. Die Implementierung
8
7. Die Programmierung des Bausteins
9
8. Generierung der Timesim-Dateien
11
2/11
Starten von
ISE13.4
vom Desktop :
1. Projekterstellung
Ein neues Projekt (Projektordner, Projektdatei ~.xise) wird angelegt mit:
→ File → New Project
Das Menü „New Project Wizard“ erscheint:
Der einzig zu tätigende Eintrag ist die Angabe eines Namens für das Projekt.
Hierbei ist zu beachten, daß
keine Sonderzeichen (ausgenommen Unterstrich),
kein Leerzeichen,
keine Umlaute und
nicht mehr als 20 Zeichen
verwendet werden.
In den Feldern „Location“ und „Working Directory“, ist darauf zu achten, dass der
eingetragenen Pfad vor der Projektbenennung
„D:\ISE_Projects“ lautet.
Es wird ein Projektunterordner mit dem Projektnamen angelegt.
Das Feld „Top-level source type“ bleibt auf „HDL“ gesetzt.
Weiter mit Klick auf
3/11
Es geht automatisch weiter mit der Bausteinauswahl:
2. Bausteinauswahl
Im nächsten Menü des „New Project Wizard“s ist der Baustein auszuwählen:
Weiter mit Klick auf
Im nächsten Bild „Project Summary“ des „New Project Wizard“s sind alle Einstellungen aufgeführt.
Weiter mit Klick auf
Liste der z.Zt. gebräuchlichen Bausteine z.T auf spez. Entwicklungsboard:
Family
Device
Package
Speed
CPLD ModSys
Coolrunner2 CPLDs
XC2C256
PQ208
-7
FPGA ModSys
Spartan3E
XC3S500E
PQ208
-5
ML507 Board
Virtex5
XC5FX70T
FF1136
-1
NEXYS-II-Board
Spartan3S1200E
XC3S1200E
FG320
-4
CPLD (alt)
XC9500 CPLDs
XC9572
PC44
-10
CPLD (alt)
XC9500 CPLDs
XC95108
PC84
-7
EDK-Board (nur unter ISE10 !!)
(Virtex2)
(XC2VP30)
(FF896)
-7
4/11
3. Einbinden der Quelldateien
→ Project → Add Source
Das Windows-Open-Menü wird zur Dateiauswahl geöffnet mit:
→ Project → Add source
Alle benötigten Dateien (~.vhd, +.ucf) können zusammen markiert und auf einmal eingebunden werden.
Ein darauffolgendes Informationsfenster „Adding source Files“ bleibt unverändert und wird quittiert mit:
Das „Design“ → „Hierarchy“-Feld beinhaltet nun:
In der ersten Zeile:
In der zweiten Zeile:
In der dritten Zeile :
In den folgenden:
Projektnamen
Bausteintyp
Entity-Name, Architektur-Name, Datei-Name
eventuelle Komponenten und in der letzten die Pinbelegungsdatei ~.ucf:
Um einen Quelltext im ISE-Editor dargestellt zu bekommen, genügt ein Doppelklick der linken
Maustaste auf den Eintrag des Entitynamens (bzw. Dateinamens) in der „Hierarchy“-Liste,
desgleichen auf den Eintrag der UCF-Datei.
Bei anderen als der Laborinstallation startet evtl. für die UCF-Datei das Xilinx Tool PACE, das für uns
nicht nützlich ist, da wir durch unsere Peripheriehardware festgelegt sind.
( Änderung durch → Edit → Preferences unter „Category“ → ISE General → Editors unter „Constraints entry“ auf „Text Editor“ stellen.)
Oder mit markiertem UCF-Datei-Eintrag Einmalklick linke Maustaste im Feld „Processes“ unter
„User Constraints“ → Edit Constraints (Text) anklicken.
Um Projekteinstellungen nachträglich zu ändern, z.B. den Bausteintyp, kann man durch Doppelklick
linke Maustaste im Fenster „Hierarchy“ auf den Eintrag der Bausteinbezeichnung das Menü
„Design Properties“ öffnen.
5/11
4. Die Pinbelegungsdatei
UCF-Datei für ModSys-System
Durch eine UCF-Datei (sog. „Constraints“-Datei ) muss man die Pinnummern festlegen, mit denen die Portsignale
verbunden werden sollen.
In der Pinbelegungsdatei, UCF-Datei (sog. „Constraints“-Datei ) wird angegeben welches Portsignal an welchen
Pin des CPLDs oder FPGAs angeschlossen wird. Bei unserer realisierten Hardware, der ModSys-System, sind
nur vorgegebene Verbindungen möglich.
In Abhängigkeit vom gewählten Steckplatz und des jeweiligen Peripherie-Board-Typs liegen Dateien vor, die die
Pinnummern liefern.
Für unser ModSys-System sind für diverse UCF-Dateien für Peripherieboards unter dem Pfad verfügbar:
D:\ISE_Lab_Files\ModSys-Peripherie-Boards-UCF\
z.B. für das IOM-Board im Unterordner:
IOM-Board
Datei:
IOM-Board_conn3.ucf
Die Syntax für eine Pinbelegung lautet:
NET [Signalname]
LOC = P[Pinnummer]
|
IOSTANDARD=LVCMOS33;
Auf der Digitaltechnik-Downloadseite gibt es den UCF-Generator, der für jede mögliche Peripherie-Board
Konstellation die Pinangaben des ModSys-Systems liefert::
http://ieweb.etech.haw-hamburg.de/yamlt3/Download.285.0.html
Unter:
→ Modulares System → ModSys Unterlagen → Coolrunner: (bzw. Spartan3) UCF-Generator
Beispiel:
#IOM Board Connector 3
############## INPUTS ##############################
#
NET IOM_IN_CONN3<0> LOC = P76 | IOSTANDARD=LVCMOS33; #IN0
NET IOM_IN_CONN3<1> LOC = P75 | IOSTANDARD=LVCMOS33; #IN1
„IOM_IN_CONN“ ist ein „Dummy“-Signalname, der durch den wirklich benutzten ersetzt werden muss.
Nicht benötigte Anschlüsse sind zu löschen oder mit „#“ auszukommentieren.
Für das Beispiel „exor“ (Die Signale sind keine Vektoren, d.h die Bitnummer <nr> entfällt) entsteht:
NET X1 LOC = P76 | IOSTANDARD=LVCMOS33; #IN0
NET X2 LOC = P75 | IOSTANDARD=LVCMOS33; #IN1
NET Q1 LOC = P80 | IOSTANDARD=LVCMOS33; #OUT0
Bei Verwendung von Vektoren z. B. D : in (3 downto 0) benötigt man für jedes einzelne Bit einen Pin mit Angabe
der Vektornummer in spitzen Klammern:
NET D<0> LOC = P76 | IOSTANDARD=LVCMOS33; #IN0
NET D<1> LOC = P75 | IOSTANDARD=LVCMOS33; #IN1
NET D<2> LOC = P74 | IOSTANDARD=LVCMOS33; #IN2
NET D<3> LOC = P73 | IOSTANDARD=LVCMOS33; #IN3
Erläuterungen:
IOSTANDARD=LVCMOS33 besagt, dass der Eingang bzw. Ausgang kompatibel zur 3,3 V Technik realisiert wird.
# ist das Kommentarzeichen
Die Bezeichnung „IN0“, „IN1“, „OUT0“ usw. findet man an der Buchse auf dem Board wieder.
6/11
5. Die Synthese
→ Synthesize-XST
Voraussetzung dafür ist die markierte Top-Level-Entity im Feld Design Hierarchy:
Erst dann zeigen sich im Feld „Processes“ die Aktionszeilen:
Doppelklick mit der linken Maustaste ( Tab: Design vorn ) auf den Aktionspunkt „Synthese“ .
Der VHDL-Code wird in die verfügbare Logik des Bausteins umgesetzt.
Die Pinbelegungsdatei(UCF-Datei) wird bei diesem Vorgang nicht berücksichtigt.
Im „Console“-Fenster werden die aktuellen Bearbeitungsvorgänge aufgelistet. Es tauchen hier evtl
auch „ERROR“- und „WARNING“-Meldungen auf.
Die separierten Fehlermeldungen sind im „Console“-Fenster mit aktivem Tab „Errors“ nachzulesen.
Die Fehler sind dann im VHDL-Quelltext zu korrigieren und die Synthese erneut durchzuführen.
Es ist nur sinnvoll die ersten drei Meldungen zu bearbeiten, da die weiteren meist Folgefehler sind.
Dieser Vorgang ist zu wiederholen bis im „Console“_Fenster folgende Meldung erscheint.
Process "Synthesize - XST" completed successfully
Ebenso verfährt man mit Warnungen, die im „Console“-Fenster unter dem Tab „Warnings“ erscheinen.
Der umgesetzte Entwurf ist als RTL-Schematic zu sehen mit Klick auf den Unterpunkt
→ Synthese → View RTL Schematic :
Ein Zwischenmenü mit dem aktiviertem Punkt : Start with a schematic … wird quittiert mit :
Als oberste Ebene sieht man das Blockschaltbild :
Durch weiteres Anklicken in den Block bis zur untersten Stufe erhält man die Gatterebene:
Mit dem Button
w
wird das gesamte Bild in den
Rahmen eingepasst.
Ein weißer Hintergrund wird erzeugt mit:
→ Edit → Preferences → RTL/Technology Viewers → Color Scheme
7/11
6. Die Implementierung
→ Implement Design
Voraussetzung dafür sind die eingebundene UCF-Datei und die markierte Top-Level-Entity im Feld Design Hierarchy :
Erst dann zeigen sich im Feld „Processes“ die Aktionszeilen:
Doppelklick mit der linken Maustaste ( Tab: Design aktiv ) auf die Aktionszeile „Implement Design“
startet die Implementierung:
Jetzt werden die Unterpunkte „Translate“, „Fit“ und bei CPLDs „Generate Programming File“ ausgeführt.
Fehlermeldungen sind im „Console“-Fenster mit aktivem Tab „Errors“ nachzulesen und die Fehler zu
korrigieren. Hierbei handelt es sich meist um Fehler in der UCF-Datei.
Diese Prozedur ist so oft zu wiederholen bis keine Fehler mehr auftreten.
Warnungen sind im „Consolen“-Fenster mit aktivem Tab „Warnings“ zu überprüfen.
Oben genannte Warnung ist für uns ohne Bedeutung: „Unable to retrieve the path ...“
Auch „TIMESPEC“-Warnungen sind für uns ohne Bedeutung, da wir keine Zeitspezifikationen
vorgegeben haben.
(Ein verschwundenes „Console“-Fenster wird mit → View → Panels → ⱱ Console eröffnet.)
Der „Fitter“-Report erscheint nach erfolgreichem Durchlauf im Hauptfenster von ISE im HTMLFormat.
1. Zuerst ist unter:
→ Pin List
die Pinbelegung zu überprüfen !
Ganz wichtig!
Falsche Pinbelegung kann zur Zerstörung des Bausteins führen !
Ein unzweifelhafter Hinweis auf ein fehlendes Signal in der UCF-Datei ist das Auftauchen des Signals
auf einem falschen Pin, vornehmlich auf den beginnenden Pinnummern 1 bis 10 oder den endenden
Pinnummern 200 bis 208 und die Angabe „LVCMOS18“ in der Spalte I/O Standard.
Dies ist in der UCF-Datei zu korrigieren und die Implementierung ist zu wiederholen.
2. Unter dem Punkt
→ Equations
Unter
→ Summary
ist die entstandene Logik als Produktterm ersichtlich.
lassen sich statistische Daten ersehen,
Unter
Angaben zu Warnungen und Fehler.
→ Errors/Warnings
Im schwarzen Balken kann auf den → Timing Report
umgestellt werden :
Hier kann man in der Tabelle „Pad to Pad List“ (ganz unten auf der Seite ) die maximal garantierten
Verzögerungszeiten zwischen allen Ein- und Ausgangssignalen herauslesen.
8/11
7. Die Programmierung des Bausteins
Das Hilfsprogramm „iMPACT“ bewerkstelligt die Programmierung des Bausteins.
→ Configure Target Device
→ Manage Configuration Project (iMPACT)
Voraussetzung für die Programmierung ist die Herstellung der „JTAG“-Verbindung über das
Interface-Kästchen „XILINX USB-Platform-Cable 2“ und die eingeschaltete Versorgungsspannung
am Zielsystem. Das rote Kästchen prüft dies und die LED wechselt von gelb auf grün .
Mit Klick auf → Configure Target Device → Manage Configuration Project (iMPACT)
öffnet sich das Menü „ISE iMPACT“ :
Hier ist auszuführen:
1. → iMPACT Flows → Boundary Scan
2. Auf den erscheinenden Schriftzug „Right click to Add Device or Initialize chain“
3. In der Auswahlbox 3. Zeile „Initialize Chain“ auswählen
Nun wird eine Kennnummer ausgelesen und der Baustein identifiziert.
9/11
Folgendes Bild im Hauptfenster bestätigt die erfolgreiche Erkennung:
Dies zeigt, dass ein Baustein mit der Bezeichnung „xc2c256“ gefunden wurde. „bypass“ besagt, dass noch
keine Programmierdatei zugewiesen ist. Dies folgt sogleich.
Der auftauchende „Query“-Dialog ist
mit Klicken auf „ Yes “
zu quittieren.
Zuweisung einer Programmierdatei:
Falls die Zuweisung später wiederholt werden soll, klickt man mit der rechten Maustaste auf das Bausteinsymbol,
das darauf grün markiert ist, und eine Auswahlbox erscheint. Hier „Assign New Configuration File“ auswählen.
Im folgenden „Open“-Menü ist die Programmierdatei auszuwählen.
( für CPLDs im Jedec-Format ~.jed, für FPGAs im Format: ~.bit )
Nun erscheint der Dateiname unterhalb der
Bausteinbezeichnung:
Jetzt die Programmierung starten mit rechter
Maustaste auf den Baustein und Auswahl des
Menüpunktes „Program“.
10/11
Im folgenden letzten Menü kann man die Programmiereigenschafen einstellen.
Die „Default“-Einstellung ist in Ordnung:
Verfy
→ aktiv , Design-Specific Erase before … → aktiv , aber kein Read Protect → inaktiv
(„Read Protect“ ist ein Ausleseschutz des Bausteins gegen Datendiebstahl, wird nicht benötigt.)
Weiter geht es mit „OK“.
Nun findet der „Download“-Vorgang statt.
Ein kleines Informationsfenster zeigt den zeitlichen Fortschritt in % an:
Nach einigen Sekunden erscheint die Erfolgsmeldung :
8. Generierung der „Timesim“-Dateien
→ Optional Implementation Tools
→ Generate Post-Fit Simulation Model
Die zwei Dateien, die für die Timing-Simulation unter „ModelSim“ benötigt werden, werden durch Ausführen
der Aktionszeile „Generate Post-Fit Simulation Model“ erzeugt:
In den Unterordner <projektname>/netgen/fit bei CPLDs oder <projektname>/netgen/par bei FPGAs
werden u.a. folgende Dateien abgelegt:
<Entity_name>_timesim.vhd
und
<Entity_name>_timesim.sdf
(Standard Delay Format)
(Sollte nur die Datei ~_timesim.v zu sehen sein, dann ist unter : rechter Mausklick auf den Bausteineintrag hier xc2c256-7PQ208 der Menüpunkt
→ Design Properties zu wählen. Als „Preferred Language“ muss „ VHDL“ eingetragen sein.)
11/11