DE NAYER Instituut J. De Nayerlaan 5 B-2860 Sint-Katelijne-Waver Tel. (015) 31 69 44 Fax. (015) 31 74 53 e-mail:
[email protected] [email protected] [email protected] website: emsys.denayer.wenk.be
Altera NIOS 3.0 Tutorial Versie 1.0
HOBU-Fonds Project IWT 020079 Titel
:
Embedded Systeemontwerp op basis van Soft- en Hardcore FPGA’s
Projectleider
:
Ing. Patrick Pelgrims
Projectmedewerkers :
Ing. Dries Driessens Ing. Tom Tierens
Copyright (c) 2003 by Patrick Pelgrims, Tom Tierens and Dries Driessens. This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, v1.0 or later (the latest version is presently available at http://www.opencontent.org/openpub/). Pagina 1 van 8
I Inleiding
Deze tutorial heeft als doel u te helpen bij het van start gaan met de Altera Nios softcore processor. Om verder te gaan moet u minstens beschikken over volgende: Hardware: - Windows PC - bord met Altera Flex, Acex, Apex, Cyclone of Stratix FPGA en minimum 1 seriële poort Software: - Quartus II v3.0 - SOPC Builder 2.8 met cygwin Er wordt verder verondersteld dat de projectmap “c:\qdesigns\nios” is. Indien u een andere map verkiest, gelieve dan een path te kiezen zonder spaties aangezien Quartus dit niet ondersteunt.
II Specifieke voorbereiding
Indien u efficiënter en sneller wilt werken met de GNU-Pro toolkit, die werkt onder cygwin, kan u volgende 2 bestanden creëren in “c:\qdesigns\nios\”: nios.bat @c:\altera\excalibur\cygwin\bin\bash.exe --rcfile c:\qdesigns\nios\nios.bashrc
nios.bashrc export sopc_builder="c:/altera/excalibur/sopc_builder" source $sopc_builder/bin/nios_bash cd /cygdrive/c/qdesigns/nios/nios_0_sdk/src/
Pagina 2 van 8
III Nieuw Quartus project aanmaken 1) start Quartus op (Start
programs
Altera
Quartus II 3.0)
2) menu ‘File’ – ‘new project wizard’ 3) -
pagina 1/6 van de project wizard: working directory: geef het path in van de projectmap (in ons geval c:\qdesigns\nios\) project name: geef een projectnaam, wij kiezen voor nios (eveneens zonder spaties) top level: is standaard dezelfde als de projectnaam druk op ‘Next’
4) pagina 2/6 van de project wizard: (voeg source-files toe) - voorlopig zijn er nog geen source-files, dus druk op ‘Next’ 5) pagina 3/6 van de project wizard: (definieer de EDA-tool settings) - druk op ‘Next’ 6) -
pagina 4/6 van de project wizard (device familie) selecteer de FPGA family van het development-board assign a specific device moet op ‘Yes’ staan druk op ‘Next’
7) pagina 5/6 van de project wizard (target device) - selecteer de target device bij de ‘available devices’ 8) druk 2 x op ‘Next’ ofwel op ‘Finish’
Pagina 3 van 8
III Nieuw Nios-systeem creëren 1) menu ‘Tools’ – ‘SOPC Builder’ 2) ‘create new system’ venster: - geef een naam aan uw nios systeem bv. ‘nios’ (dit moet de focus_entity_name zijn van de csf-file) - (HDL language heeft niet zoveel belang indien er geen simulatie gebeurt) 3) geef bovenaan de systeem frequentie en de fpga familie van het Nios systeem in. Deze frequentie is afhankelijk van de oscillator- en de Altera architectuur gebruikt door het FPGAboard development. Opmerking: Indien u wenst gebruik te maken van externe EDA-tools zoals bv. Synplify om uw Nios-systeem in VHDL te connecteren en synthetiseren dient u hier als target device ‘FLEX 10KE’ in te stellen. Zoniet stopt SOPC Builder low-level, architectuur-specifieke constructies in de Nios-VHDL code. Externe EDA-tools zoals Synplify genereren hieruit verkeerde hardware zodat Quartus het gesynthetiseerde systeem niet kan placen of routen. Tabel 1: Maximum Nios kloksnelheden Technology
4) -
Timing
(10% foutmarge)
CPU: dubbelklik links op ‘Altera Nios 3.0 CPU’ (of de time-limited versie ervan) alle standaard instellingen zijn goed (32bit en standaard Nios) (Opgepast! De ‘minimal Nios’ heeft geen interrupts!) dus klik ‘Finish’
5) UART (communications): dubbelklik links ‘UART (RS232- serial port)’ - alle standaardinstellingen zijn goed (115200kbps, no parity, 8 data bits, 1 stop bit, ,no CTS/RTS, no DMA) - dus klik wederom op ‘Finish’ - eventueel kan deze stap worden herhaald indien het bord meerdere UARTS bevat om bijvoorbeeld een UART te voorzien om te debuggen. 6) -
ROM (memory): dubbelklik links op ‘On-chip Memory (RAM or ROM)’ selecteer ‘ROM (read-only)’ alle ander instellingen zijn normaal standaard goed (32 bits & 1kbyte) klik vervolgens op ‘Next’
Pagina 4 van 8
-
duid vervolgens ‘GERMS Monitor (requires Nios master)’ aan tenslotte klik op ‘Finish’
7) -
RAM (memory): dubbelklik opnieuw op ‘On-chip Memory (RAM or ROM)’ selecteer ‘RAM (writeable)’ verander ‘total memory size’ in het maximum (kbytes) dat nog onchip vrij is de andere instelling is normaal goed (32 bits) de rest is goed (blank), dus klik op ‘Finish’
8) PIO (other): indien het bord nog knopjes en/of ledjes bevat kan je deze eventueel toevoegen aan je Nios systeem. Per categorie (input, output, bi-directioneel) dubbelklik links op ‘PIO (Parallel I/O)’ - Stel in hoeveel bits en welk type (input, output, bi-directioneel) - klik tenslotte op ‘Finish’ 9) basis adressen updaten: - de huidige basisadressen worden nu best ge-update - klik daarom in de ‘System’ menu op ‘Auto-Assign Base Addresses’ 10) klik onderaan op ‘Next’ 11) alle geheugenlocaties worden automatisch goed ingesteld. Eventueel kan er een ‘System Boot ID’ gegeven worden. Druk vervolgens op ‘Next’. 12) tenslotte nog ‘Simulation’ afzetten en op ‘Generate’ klikken. Nadat SOPC Builder de VHDL en software libraries heeft gegenereerd, kan deze verlaten worden door op ‘Exit’ te drukken.
Pagina 5 van 8
IV pinfile voor Nios-systeem
Voor het eenvoudige systeem dat we bouwen, kunnen we de genereerde topfile gebruiken. Enkel bij complexere systemen of bij gebruik van klok-dividers is een zelf op te stellen topfile nodig. Welke signalen moeten een pin-toekenning krijgen? In principe zijn dit de klok, reset en de rx/tx signalen van de UART. Indien u ervoor koos ook een GPIO-blok toe te voegen, moeten deze ingangen of uitgangen ook een toewijzing krijgen. Het pin-bestand dat moet worden aangepast is nios.csf Om te weten te komen welk de benaming is van de signalen die moeten worden toegewezen, moet er worden gekeken in de topfile van het genereerde nios-systeem. Helemaal onderaan deze topfile (<project_naam>.vhd) is er een entiteit test_bench. Hierin wordt een nios systeem gedefinieerd en kan u de juiste benaming van de pinnen terugvinden. Vervolgens kan u de pinnen toevoegen en ze toewijzen aan de juiste pin-locatie. Hiervoor raadpleegt u best de documentatie van uw bord. projectnaam nios.csf CHIP(nios) { clk : LOCATION = Pin_H14; reset : LOCATION = Pin_D11; ... } ... focus_entity_name=|nios; ...
zelfde als SOPC Builder
V Compilatie (Fitting, place & route) in Quartus druk op het paars ‘play’ icoontje bovenaan om de compilatie te starten
Pagina 6 van 8
VI Download met behulp van Quartus
1) Na de compilatie moet de behaalde kloksnelheid nog eens nagekeken worden in het Quartus messages window (wat normaal gezien geen probleem mag opleveren), en kan het design gedownload worden in uw target. Dit kan u doen met de Quartus programmer: Tools programmer 2) Zorg ervoor dat u de downloadkabel (byteblaster, …) goed verbonden is en uw bord onder spanning staat. Druk dan op “Setup” om uw juiste hardware setup aan te geven. 3) Druk op “Auto detect”, waarna de device-chain weergegeven wordt. 4) Verwijder het te programmeren device en voeg de gegenereerde target file (Nios.sof of Nios.pof) toe. Let op de volgorde, deze moet behouden blijven! 5) Vink het gewenste vakje in de “program/configure”-kolom aan (figuur 15) 6) Druk op “start” , waarna het design gedownload wordt in uw target
Figuur 15: Quartus programmer
Pagina 7 van 8
VII “Hello world” De connectie met het Nios embedded systeem moet gebeuren via cygwin. 1) Open het ‘Nios.bat’ bestand dat in het begin van deze tutorial werd opgesteld. 2) Verbindt het FPGA bord met COM1 van uw pc. 3) Compileer het hello world programmaatje dat standaard meegeleverd is met volgende commando’s: ‘nb hello_world.c’ ‘nr hello_world.srec’ als alles goed gegaan is, krijgt u volgende boodschap: nios-run: Downloading………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………. nios-run: Terminal mode (Control-C exits) ----------------------------------------Hello from Nios. This Nios design has: 1 uarts 1 pios 1 timers 512 registers #52842002 nios_tutorial +
4) -
U kunt nog volgende commando’s uitvoeren: G(o)
: om een programma op uit te voeren E(dres): om AMD flash te wissen R(ead): om te lezen wat op staat (geheugen/PIO/…) M(emory): om te schrijven op en vervolgens een geheugendump S(end hexfile): om programma/data bestanden weg te schrijven na
Proficiat, u heeft nu uw tutorial succesvol beëindigd.
Pagina 8 van 8