Anleitung zu ChipScope Pro Das von Xilinx gelieferte Tool ChipScope Pro erlaubt die Implementierung eines Logic Analysator Kerns auf dem Spartan III Baustein. 1.1 Erstellen eines Logic Analysator Kerns ( Core ) Eine Core -Datei ~.cdc wird erstellt über Project New Source. Er erscheint ein Auswahlmenü: Bild 1: New Source Man wählt ChipScope Definition and Connection, vergibt einen Dateinamen mit aktiviertem Add to Project (Zufügen zum Projekt). Mit dem Button Next > kommt man zum nächsten Menü: Bild 2: Zuordnung zur Top Entity. Bild 4: Zusammenfassung Man wählt den Namen der Top Entity aus, und beendet mit dem Button Finish. 1
Damit ist die Core -Datei ila_spartan3.cdc im Project eingebunden. Bild 1: Eingebundene ila_spartan3.cdc Datei 1.2 Benutzung der Systemclock als LA Clock Damit die Systemclock für den ChipScope Logic Analysator zur Verfügung steht muß im VHDL-Quellcode in der Portliste der Entity stehen: SYSCLK N_SYSCLK : in bit; : out bit; In der Architcture z.b.: N_SYSCLK <= not (SYSCLK); In der ~.ucf-datei: NET SYSCLK LOC = P127; Und z.b: NET N_SYSCLK LOC = P46; Will man eine höhere Frequenz erzielen als den Systemtakt, so kann durch Benutzung der DCM-Schaltung eine Frequenzvervielfachung bis annähernd 400 MHz erreicht werden. Näheres siehe Anhang A. 1.3 Anpassen mit dem Core Inserter Durch Doppelklick auf das Symbol der ~.cdc Datei wird der Core Inserter aufgerufen und es erscheinen nacheinander 4 Einstellmenüs: 1. Menü: Hier sind die Netzlistenpfade für Eingänge und Ausgänge und der Ausgabepfad fest vorgegeben. Die Bausteinfamilie ist auch mit SPARTAN 3 fest vorgegeben. Use SRL 16s ( SeriellShift LUT 16 bit) und RPMs (relationally placed macros) sollten aktiv gesetzt bleiben. Bild 2: Menü 1 2. Menü: Disable JTAG Clock BUFG Insertion kann ausgeschaltet bleiben. Bild 3: Menü 2 3. Menü: Die Triggerparameter werden je nach Datenlänge und Aufteilung eingetragen. 2
Triggerzähler, Trigger Sequenzer und Storage Qualifikation werden für einfache Anwendungen nicht benötigt. Bild 4: Menü 3 4. Menü: Datenerfassungsparameter wie Speichertiefe, Datenbreite, Daten gleich den Triggerdaten und Clockflanke werden hier ausgewählt. Bild 5: Menü 4 5. Menü: Unter Modify Connections müssen die Signale aus der Liste zugeordnet werden. Bild 6: Menü 5 Man markiert in der linken Tabelle das gewünschte Signal, in der rechten Tabelle die Kanalnummer und klickt auf den Button Make Connections. Bild 7: Menü 5.1 Modify Connections: Clock Signals Durch Anklicken des Buttons Net Name wird die Signalnamensliste alphabetisch sortiert, und man kann auch ein ganzes Packet von Signalen markiert in die Trigger Data Signals Liste übernehmen. 3
Bild 8: Menü 5.2 Modify Connections: Trigger Data Signals Mit OK kommt man wieder in das Menü 5 zurück, von da mit zur ISE-Oberfläche mit Abspeichern der Einstellungen unter dem gleichen Dateinamen. Bild 9: Core Projekt speichern Danach wird wie üblich die Implementierung aufgerufen und das Spartan 3 Board programmiert. Bei der Programmierung muß man darauf achten, daß der Balkengraf flott durchläuft und nicht ruckelt. Im letzteren Fall findet anschließend ChipScope keinen Core vor. Abhilfe: ChipScope und Impact beenden (ohne Abspeichern) und noch einmal Impact starten. 1.4 ChipScope starten ISE mit installiertem ChipScope enthält im Prozessfenster am Ende eine neue Zeile: Bild 10: Startzeile von ChipScope Mit Doppelklick wird ChipScope gestartet. Es öffnet sich das Hauptfenster von ChipScope Pro : Bild 11: ChipScope Hauptfenster Zuerst muß man die JTAG-Verbindung aufrufen JTAG Chain Xilinx parallel Cable : 4
Bild 12: JTAG Chain Xilinx Parallel Cable Im nachfolgenden Menü wählt man Xilinx Parallel IV aus und klickt OK: Bild 13: Parallel Cable Selection Nach einer kurzen Weile erscheint eine Windows Firewall Alert Meldung die man ignoriert und mit OK quittiert: Bild 14: Windows Firewall Alert Meldung Es erscheint eine weiteres Menüfenster, das den erkannten Baustein meldet: Bild 15: Bausteinerkennung Nach Quittierung mit dem OK Schalter erscheinen im Hauptfenster das Triggerfenster das Daten fenster und das Konsolenfenster: 5
Bild 16: ChipScope Hauptfenster nach erfolgter Bausteinerkennung Wichtig ist die letzte Zeile im Konsolenfenster: INFO Found 1 Core Unit found in the JTAG device Chain Wenn hier steht: Found 0 Core Unit found... dann sollte man ChipScope und Impact schließen und nochmal neu programmieren. Damit man seine Signalnamen in die Waveform-Liste erhält, kann man diese (DataPort(0) usw.) überschreiben und unter File Save Project as als ~.cpj abspeichern. Bild 17: Save Project as Bild 18: Save Menü: Als ~.cpj abspeichern Eine fertige Projektdatei lässt sich mit File Open Project laden: Das Ergebnis sind die geänderten Signalnamen: 6
Bild 19: Open Project Im Triggerfenster kann man eine Triggerbedingung angeben. Ist alles auf X gesetzt wird die Datenaufnahme mit Betätigung des Buttons sofort gestartet. Bild 20: Trigger Einstellung Es lassen sich ein X-curor und ein O-Cursor aus der linken oberen Ecke unter dem Trigger-Cursor Hervorholen, verschieben und die Anzahl der Samples dazwischen ablesen : Bild 21: X-Cursor und O-Cursor Die Buttons Gehe zum X-Cursor, Gehe zum O.Cursor und Maßstabvergrößerung und Maßstabverkleinerung kann man gut gebrauchen: 7
Anhang A: Benutzung der Frequenzvervielfachung mit dem DCM-Modul Um den DCM-Wizard ( Erstellungsmenü) zu starten muß zuerst über Project New Source der Punkt IP (CoreGen & Architecture Wizard) mit Angabe eines Filenamens und Add to Project aktiv gewählt werden. Mit Next > kommt man zu einem weiteren Menü, in dem man Single DCM v7.1i auswählt. Bild 1_A: New Source Nach Next > erscheint eine Zusammenfassung: Bild 2_A: Select Core Type Bild 3_A: New Source Information Nach Finish > erscheint der DCM-Wizard: Bild 4_A: Clocking Wizard 1 Bild 5_A: Clocking Wizard 2 8
Bild 6_A: Clocking Wizard 3 Bild 7_A: Clocking Wizard 4 Danach ist die Beschreibungsdatei ~.xaw im Projekt mit eingebunden: Bild 8_A: ~.xaw im Projekt Es wird auch ein VHDL-Sourcecode im Arbeitsverzeichnis erzeugt und kann mit Markieren von DCM_300(DCM_300.xaw) Und klick auf View HDL-Source im Fenster Processes for Source angesehen werden. Nun muß dieser DCM-Teil als Komponente in den Hauptentwurf instanziiert werden: Bild 9_A: Ansehen DCM_300.vhd 9
10 Die DCM_300.vhd -Datei instanziiert das DCM-Modul auf dem Spartan-Baustein. Das Teiler/Vervielfachungsverhältnis legt der Quotient aus CLKFX_MULTIPLY und CLKFX_DIVIDE fest.. Der maximale Faktor ist 32/1 aber wie aus dem Wizard ersichtlich, ist die maximale Frequenz 326 MHz. Mit dem Teilerfaktor 8/1 lässt sich bei einer Boardfrequenz von 50 MHz eine Frequenz von 392 MHz auf den meisten Boards erreichen.
Nach der Synthese ist die DCM-Schaltung wie folgt integriert: 11