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