Anleitung zu ISE ChipScope Pro Das von Xilinx gelieferte Tool ChipScope Pro erlaubt die Implementierung eines Logic Analysator Kerns auf einem FPGA von Spartan III an aufwärts.. Chipscope Ablauf Bild : Ablauf
2. Inhaltsverzeichnis. Chipscope Ablauf 2. Inhaltsverzeichnis 2 3. CDC-Datei erstellen 3 4. Core-Inserter 4. Menü: Netzlisten 5 2. Menü : Controller 5 3. Menü : Trigger Parameters 5 4. Menü : Capture Parameters 6 5. Menü: Net Connections 6 6. Menü: Signalauswahl 6 5. Aufruf des Analysators 6 5. Ablauf 8 5.2 Auswahl der JTAG-Verbindeung 9 5.3 Bedienung des Logikanalysators 0 5.4 Sampletakt für ungetaktete Schaltungen 2
3. CDC-Datei erstellen Erzeugung der Chipscope Definition and Connection -Datei mit: Project New Source Eine CDC-Datei ~.cdc wird über das Auswahlmenü New Source erstellt: Project New Source Im Menü klicke auf: ChipScope Definition and Connection File : Der Eintrag eines Dateinamens in das Feld File name. wird benötigt. Als Speicherort (Location) kann der aktuelle ISE Projektordnorder bleiben oder der Quellenordner eingetragen werden. Aktiviere die Auswahl Add to Project ( Einbindung in das laufende Projekt ). Bild 2: Auswahlmenü: New Source Weiter mit Klick auf Next >. Es erscheint eine Zusammenfassung: Bild 3: Zusammenfassung Klicke auf Finish. Damit ist die CDC-Datei LA_cnt4.cdc im Projekt eingebunden, und ein entsprechender Eintrag ist im Feld Design Hierarchy zu finden: Bild 4: Eingebundene CDC- Datei Alle Quelldateien (VHD), Pinbelegungsdatei (UCF) und die Chipscope-Datei (CDC) sind jetzt im Projekt. Mit Anklicken der Zeile: ~.cdc wird die Synthese durchgeführt, und die Einstellungsmenüs erscheinen danach im Chipscope Pro Core Inserter. 3
4. Core-Inserter Hierarchy <Dateiname>.cdc Durch Doppelklick auf das Symbol der CDC- Datei im Feld Sources wird, falls noch nicht geschehen, die Synthese durchgeführt und danach der Core Inserter aufgerufen. Es erscheinen nacheinander 6 Einstellmenüs: Bild 5: CDC-Datei erstellen 4
.Menü: Netzlisten keine Änderungen/Eingaben erforderlich Hier sind die Netzlistenpfade für Eingänge und Ausgänge (Input Design Netlist...), der Ausgabepfad und die Bausteinfamilie z.b. SPARTAN 3, VIRTEX2P oder VIRTEX5 vom ISE-Projekt fest vorgegeben. Use SRL 6s ( SeriellShift LUT 6 bit) und RPMs (relationally placed macros) können aktiv gesetzt bleiben. Bild 6: Menü Weiter mit Klick auf Next >. 2.Menü: Controller keine Änderungen/Eingaben erforderlich Bleibt wie es ist.weiter mit Next. Bild 7: Menü 2 3. Menü: Trigger Parameter: Ein Eintrag nötig : Trigger Width auf Gewöhnlich braucht man nur einen Triggerport: Number of Trigger Ports: D.h. Es gibt nur eine Triggerwort TRIG0: Trigger Width #Match Units Match Type: Basic Enable Trigger Sequenzer Enable Storage Qualifikation inaktiv inaktiv Als Beispiel wird hier nur auf das Reset-Signal getriggert, dh. Die Triggerbreite Trigger Width ist. Möchte man auf das erscheinen eines bestimmten Zählerwertes triggern, muß man hier die Zählerbreite in Bits eintragen. Z.B. 4 Bit Zähler 4. Man braucht mindestens ein Signal oder eine Signalkombination auf die getriggert werden kann. Eine Datenaufzeichnung wird gestartet ( in Spezialfällen auch gestoppt ), wenn ein Signal oder ein Signalbündel mit dem Triggerwort übereinstimmt( match). Der Datenwert des Triggerwortes wird später im Analysatorteil eingetragen. Trigger Condition Settings und Storage Qualification Condition Settings werden für schwierige Triggerfälle eingesetzt. Kann hier deaktiviert werden. Bei Bedarf sei auf den User Guide von Xilinx ug029.pdf hingewiesen. 5
Bild 8: Menü 3: Trigger Parameter Weiter geht es mit Next. 4. Menü: Capture Parameters : Ein Eintrag nötig : Data Width auf 4 Datenerfassungsparameter wie Speichertiefe, Datenbreite, Daten gleich den Triggerdaten und Clockflanke werden hier Eingetragen bzw. ausgewählt, z.b. für einen 4 Bit-Zähler: Data Width 4 Sample on Rising Clock Edge Data Depth 52 Inaktiv : Data Same As Trigger Bild 9: Menü 4 Weiter mit Next. 5. Menü: Net Connections: Gleich weiter mit Klick auf: Clock Port, Trigger Ports und Data Ports müssen den entsprechenden Signalen zugeornet werden. Dies wird im nächsten Menü getätigt, das mit Klick auf Modify Connections aufgerufen wird. Bild 0: Menü 5 6. Menü: Select Net : Signalauswahl: Hier sind Clock, Trigger und Datensignale auszuwählen. Im Feld links unten ist die Liste der auswählbaren Signale. Grau erscheinende Signale sind nicht wählbar. (Man behelfe sich mit dem gleichen Signale nach einem Eingangsbuffer. ) Im rechten Fensterteil sind drei Signallisten sichtar, die mit Signalen gefüllt werden müssen. Ein Klick auf den jeweiligen Reiter läßt die dazugehörige Liste erscheinen:. TP0: Trigger Signals 2. CP0: Clock Signals 3. DP0: Data Signals Triggersignalauswahl: Liste im Net Selections Feld auf Trigger Signals stellen. ( Reiter wird hellblau unterlegt.) In der allgemeinen Signalliste N_RESET_IBUF selektieren ( N_RESET geht nicht! Graue Schrift! ) 6
und klicke auf die Schaltfläche Make Connections. Bild 2: Triggersignalauswahl Taktsignalauswahl Liste im Net Selections Feld auf Clock Signals stellen. ( Reiter wird hellblau unterlegt.) In der allgemeinen Signalliste CLK_BUFGP selektieren ( CLK geht nicht! Graue Schrift! ) und klicke auf die Schaltfläche Make Connections. Bild 3: Clock Signal- Auswahl Datensignalauswahl Liste in Net Selections Feld auf Data Signals stellen. ( Reiter wird hellblau unterlegt.) In der allgemeinen Signalliste CNT_INT<0> bis CNT_INT<3> selektieren und klicke auf die Schaltfläche Make Connections. Bild 4: Datensignalauswahl Alle zur Verfügung stehenden Signalfelder müssen mit einem Signal gefüllt sein. Mit von da mit kommt man wieder in das Menü 5 zurück, Return to Project Navigator zur ISE-Oberfläche: Zum Abspeichern der Einstellungen auf Ja klicken: Bild 5: Core Projekt speichern 7
Implement Design Durchführung der Impementierung An dieser Stelle muß die Implementierung durchgeführt werden Dafür auf die VHDL-Datei mit der Top-Entity im Feld Sources geklickt und : Configure Target Device Manage (impact) Baustein programmieren Zunächst muß die Programmierdatei erzeugt werden: Dann unter dem Punkt 5. Aufruf des Analysators Design Analyze Design Using Chipscope Der Logikanalysator wird gestartet durch Doppelklick auf : ( Dafür muß die VHDL-Datei mit der Top-Entity im Feld Sources und das Fenster Processes aktiviert sein!) : Es öffnet sich das Hauptfenster von ChipScope Pro. 5. Ablauf Bild 6: Ablauf 8
5.2 Auswahl der JTAG Verbindung JTAG Chain Server Host Setting Unter JTAG Chain Server Host Setting.. zuerst prüfen, ob die Server Adresse auf localhost 50004 steht: Bild 7: JTAG Chain Unter JTAG Chain Server Host Setting.. zuerst prüfen, ob die Server Adresse auf localhost 50004 steht: Bild 8: Server Settings Dann unter JTAG Chain Xilinx Platform USB Cable auswählen. Das folgende Menü zeigt die Einstelluingswerte. Die vorgegebenen Werte ändert man nicht, und es geht weiter mit: Klick auf OK. Bild 9: USB-Parameter Beim ModSys-System mit dem Spartan3E werden zwei Bausteine erkannt. Es geht weiter mit: Klicke auf OK. Bild 20 : JTAG-Chain Device Order (Eine eventuelle Windows Firewall Alert Meldung ist zu ignorieren, und mit OK zu quittieren.) 9
Es zeigt sich nun der Logikanalysator: Bild 2: ChipScope Hauptfenster des Logikanalysators Die letzte Zeile im Konsolenfenster muss erscheinen: INFO: Found core Unit in the JTAG device Chain Wenn nicht, dann prüfern: JTAG- Anschluß, Versorgungsspannung, nur eine Instanz des Chipscops aktiv. Dann Chipscope schließen und noch einmal von vorn mit dem Download der Programmierdatei. 5.3 Bedienung des Logikanalysators Im Trigger Setup-Fenster muß für die Triggerbedingung ein Wert angegeben werden. X als Default-Wert heißt don t care und würde so belassen, sofort eine Datenaufzeichnung starten, wenn der Analysator aktiviert wird. Der Trigger soll ausgelöst werden, wenn das Reset-Signal inaktiv wird, hier z.b. N_RESET auf High geht. Daher ist zu setzen: Value In der Spalte Cap (Capture) trage man in der Spalte Position z. B. 20 ein. Dadurch werden 20 Samples vor dem Triggerzeitpunkt mit aufgezeichnet. Position 20 Bild 22: Trigger und Capture Einstellungen ändern Nun halte man den Reset-Taster gedrückt. Jetzt den Analysator scharf machen, d.h. bereit zu machen für eine Datenaufzeichnung mit Klick auf die RUN Taste: Ab jetzt wird das Triggersignal permanent überprüft, ob es mit dem Triggerwert, hier, übereinstimmt. Im Hauptfenster erscheint der Schriftzug Waiting for Upload. Wird nun der Reset-Taster losgelassen, geht das Signal N_RESET auf. Die Triggereinheit erkennt nun Übereinstimmung mit der Triggerbedingung, und die Datenaufzeichnung wird gestartet.
Das Wafeform-Fenster zeigt folgende Datenaufzeichnung: Bild 23: Ergebnis im Wafeform Fenster Man sieht, daß der Zähler auf 0 steht, während der Reset aktiv ist, und dann läuft der Zähler los. Die Marke T ist der Triggerzeitpunkt, die Marken O und X lassen sich an den oberen Reitern mit der Maus verschieben und die Differenz in Anzahl der Samples wird im unteren rechten Feld angezeigt. Die Buttons Gehe zum X-Cursor, Gehe zum O.Cursor und Maßstabvergrößerung und Maßstabverkleinerung dienen zum Aufsuchen interessanter Stellen: Die Signalnamen in der Waveform-Liste können editiert und als CPJ-Projektdatei mit File Save abspeichert werden. Mit File Open Project kann dieses wieder zurückgeladen werden. Project as Dafür die Bezeichnung z.b. Dataport[0] mit der rechten Maustaste anklicken, Rename wählen und in einer erscheinenden Dialogbox den neuen Namen eintragen. Bild 25: Eingabe Dialogbox Bild 24: Pull down: Rename 5.4 Sampletakt für ungetaktete Schaltungen Bei Schaltungsentwürfen, die komplett aus kombinatorischer Logik bestehen, bleibt eine mit dem Baustein verbundene Taktleitung bei der Synthese unberücksichtigt und steht im Chipscope als Sampletakt nicht zur Verfügung. Damit eine Taktleitung zur Verfügung steht, muß man eine kleine Schaltung mit der Taktleitung realisieren und das Ausgangssignal nach außen führen. Z.B. N_CLK <= not (CLK); Dafür muß das weitere Signal in der Portliste auftauchen: Und in der UCF-Pinbelegungsdatei : N_CLK : out bit ; -- oder std_logic NET N_CLK LOC = P[Pinnummer]