Soft Core Prozessor Nios II. Konfiguration, Einbettung und Programmierung
FACHHOCHSCHULE KÖLN FAKULTÄT FÜR INFORMATIONS-, MEDIEN UND ELEKTROTECHNIK REGELUNGSTECHNIK PROF. DR. J. O. KRAH Gruppe:
DSF Praktikum Thema des Versu...
FACHHOCHSCHULE KÖLN FAKULTÄT FÜR INFORMATIONS-, MEDIEN UND ELEKTROTECHNIK REGELUNGSTECHNIK PROF. DR. J. O. KRAH Gruppe:
DSF Praktikum Thema des Versuchs :
Versuch
Soft Core Prozessor Nios II
3
Konfiguration, Einbettung und Programmierung
Name:
Fachsemester:
Vorname:
Versuchsdatum:
Matr. Nr.:
Testat:
Einleitung: In diesem Versuch soll auf einem FPGA ein einfaches SOPC (System on a Programmable Chip) System erstellt werden. Hardwarebasis ist das Stratix I DSP Development-System von Altera. Das FPGA verfügt über 25 000 Logikelemente und kann auf zwei 12-Bit AD-Wandler und zwei 14-Bit DA-Wandler zugreifen. Die Abtastrate beträgt bis zu 80 MHz (Systemclock). Bei Verwendung des Soft Core µControllers Nios II werden diese hohen Abtastraten nicht erreicht. Hier soll der Soft-Core Prozessor Nios II lediglich den ADC auslesen und das Signal unverarbeitet über den DAC wieder ausgeben. Benutzte Tools: Quartus II Version 11.1sp1 (32 Bit) Nios II Integrated Development Environment (IDE) Version 11.1sp1 Download: www.altera.com Hinweis: In der Download-Version (Web-Edition) können Stratix-Bausteine nur eingeschränkt kompiliert werden. Wenn zum Testen alternativ ein Cyclone-Baustein ausgewählt wird, ist das Kompilieren auch ohne die kostenpflichtige Lizenz möglich. Bitte achten Sie auf die Behandlung des Vorzeichens von ADC bzw. DAC.
DSF V3 WS 12/13 – Krah
1
1. Quartus II starten FPGA Konfigurationen werden in der integrierten Entwicklungsumgebung Quartus II von Altera erstellt (siehe Skript). Im Labor verwenden wir eine Version mit Lizenz, um auch die Stratix Bausteine programmieren zu können. Quartus II 11.1sp1 wird durch einen Doppelklick auf das Symbol gestartet.
Um den New Project Wizard zu starten, klicken Sie bitte auf das Feld Create a New Project. Auf der ersten Seite ist das Working Directory anzugeben: „D:\DSF\Krah“ Als Projektname (und top-level design entity) geben Sie bitte „Prakt3“ an.
Auf der Seite 2 sind keine Eingaben erforderlich, also bitte „Next“ wählen.
DSF V3 WS 12/13 – Krah
2
Auf der Seite 3 wird der zu programmierende FPGA Type angegeben:
Im Praktikumsaufbau wird ein FPGA aus der Stratix Serie verwendet: “EP1S25F780C5” 1S: Stratix 1 25: 25 000 Logik Elemente 780: FBGA mit 780 Pin’s C: Commercial temperature range (0°…70°) 5: Speed Grade Da auf den Seiten 4 und 5 keine Eingaben erforderlich sind, kann nach der Auswahl des FPGATyps sofort „Finish“ gewählt werden.
DSF V3 WS 12/13 – Krah
3
Als Top-Level ist eine schematische Eingabe mit Block-Diagrammen vorgesehen. Dazu wählen Sie bitte unter File / New den Typ „Block Diagram/Schematic File“ an. New File …
Die „Leere“ Datei mit „Save As“ speichern. Der Name sollte dem im Projektwizard Top Level Entity angegebenen (Prakt3) entsprechen.
DSF V3 WS 12/13 – Krah
4
Um Quartus II das geforderte Timing mitzuteilen, muss das Synopsis Design Constraints File „DSF.sdc“ in den Projektordner kopiert und dem System bekannt gemacht werden. (Vom Desktop oder aus dem DSF - Web) Assigments → Settings → Files (all Files anwählen)
Die in der Datei genutzten und im Weiteren beschriebenen Signalnamen (z.B. „clk“) sollten unverändert übernommen werden, damit das Timing Quartus bekannt ist.
DSF V3 WS 12/13 – Krah
5
2. Konfiguration des Soft Core Prozessors Nios II mit dem SOPC Builder: Tools → Qsys
Rechtsklick auf “clk_0” unter “Name” Rename in „clk“ clk unter “Clock Settings” auf 80 MHz ändern. Library → Embedded Processors → Nios II Processor Doppelklick auf “Nios II Processor” Nios II / s auswählen - cpu_reset (noch) nicht anwählen Auf den nächsten Karten: - 4 kByte Instruction Cache bestätigen - Keine Advanced Features anwählen - Keine MMU etc. anwählen - Debug level 1 anwählen - keine Custom Instructions „Finish“ anwählen: cpu erscheint unter „Name“.
DSF V3 WS 12/13 – Krah
6
-
Klappen Sie im linken Fenster das „Memories and Memory Controllers“-Menü auf. Das Menü „On-Chip“ aufklappen Doppelklick auf „On-Chip-Memory“ Memory Type RAM Block Type Automatic Memory Width 32 bits Total Memory Size 65536 Bytes (64k) Read Latency 1 Finish Rechtsklick auf “onchip_memory2_0”
-
Rename in “memory”
Im linken Fenster das „Peripherals“- und anschließend das „Microcontroller Peripherals“Menü aufklappen -
Doppelklick auf „PIO“ Width 12 bits Direction: Input Input options; Synchronous capture; Rising Edge (D-Latch Register im I/O-Block) Finish Rename → pio_0 in ADC
-
Doppelklick auf „PIO“ Width 14 bits Direction: Output Finish Rename → pio_0 in DAC Im linken Fenster das „Interface Protocols“ - und anschließend das „Serial“- Menü aufklappen
-
Doppelklick auf „JTAG UART“ Finish
DSF V3 WS 12/13 – Krah
7
Verbinden Sie die einzelnen Komponenten wie im folgenden Bild:
Die schon ausgewählte Nios-CPU erneut anklicken und den “Reset Vector”(Systemreset) und „Exception Vector“(Interupts) mit Adressen im „memory.s1“ belegen. Finish Da Adressen doppelt belegt oder bereits reserviert sein können, sollte man, um Fehlermeldungen zu vermeiden, unter „System“ „Assign Base Addresses“ anwählen. Dadurch werden die Adressen neu vergeben und es gibt keine Adress-Überschneidungen mehr. -
File → Save as „CPU_prakt3“ In Quartus II Assigments → Settings → Files (all Files anwählen) muss das Qsys System File „CPU_prakt3.qsys“ dem System bekannt gemacht werden.
DSF V3 WS 12/13 – Krah
8
-
Im Qsys den Reiter „Generation“ anwählen. Simulation NICHT anwählen „Generate“ anwählen und ein bisschen gedulden. Wenn das Info “Finished: Create HDL design files for synthesis“ erscheint, „Close“ anwählen.
Im Block-Diagram-Fenster -
Rechter Mausklick Insert → Symbol Den „Project“-Ordner öffnen und „CPU_prakt3“ auswählen Rechtsklick auf Symbol und „Generate Pins for Symbol Ports“ anwählen Insert Pin’s und verbinden und die Namen anpassen (Wie im folgenden Bild)
Start Compilation: (violettes Dreieck - und ein bisschen gedulden) Mit dem „Programmer“ die Konfiguration in das FPGA laden (Kästchen Program/Configure anwählen) und anschließend „Start“ anwählen Quartus II Fenster minimieren DSF V3 WS 12/13 – Krah
10
4. Nios II IDE starten (Programmierumgebung für die Soft-Core-µC Nios II) Workspace wechseln (damit das C-Projekt im VHDL-Projektarbeitsverzeichnis angelegt wird) File → Switch Workspace → “ D:\ DSF\Krah\software” C-Projekt anlegen File → New→ „Nios II Application and BSP from Template” (BSP - Board Support Package)
C-Projekt Compilieren und starten Rechtsklick auf Projektordner im linken Verzeichnisbaum → „Run As → 3 NIOS II Hardware“
Nun wird das Projekt in den µC geladen und es erscheint: “Hello from Nios” auf den Bildschirm.
DSF V3 WS 12/13 – Krah
12
Einbinden von µC-Ports in das C-Projekt (12-Bit Eingangsport des ADCs und 14-Bit Ausgangsport des DACs) - Die Systemdatei “system.h” einbinden. (Hier wird beim „build“ aus der Systembeschreibung (*.ptf) des im SOPC-Builder erstellten µCs generiert. Deklaration und Beschreibung aller wichtigen Parameter des µC o →Verzeichnisbaum → CPU_prakt_2_bsp-Ordner → „system.h“ #define Adressen aus system.h für den ADC und den DAC benutzen … short *padc = (void*) ; short *pdac = (void*) ; Schreiben Sie ein C- Programm, das den AD-Wandlereingang auf den DA-Wandlerausgang übergibt, so dass auf dem Skop das Referenzsignal des Funktionsgenerators identisch mit dem Ausgangssignal des Stratix-Boards ist. Bitte beachten Sie, dass der ADC -10V auf 0x000 und +10V auf 0xfff abbildet. Der DAC erwartet das Signal als signed 14 Bit in der Zweierkomplementdarstellung
Anhang C-Programm Schleifen
Abfrage
Operatoren
while(1){ . . Programmcode . }
if (Ausdruck = = Wert) { . . . } else { . . . }
== >= < = (Zuweisungsoperator) && UND logisch || ODER logisch & |