DE NAYER Instituut J. De Nayerlaan 5 B-2860 Sint-Katelijne-Waver Tel. (015) 31 69 44 Fax. (015) 31 74 53 e-mail:ppe@denayer.wenk.be ddr@denayer.wenk.be tti@denayer.wenk.be 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 Timing (10% foutmarge) 4) 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. nios.csf CHIP(nios) { clk : LOCATION = Pin_H14; reset : LOCATION = Pin_D11;... }... projectnaam 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)<adres>: om een programma op <adres> uit te voeren - E(dres)<adres>: om AMD flash te wissen - R(ead)<adres>: om te lezen wat op <adres> staat (geheugen/pio/ ) - M(emory)<adres>: om te schrijven op <adres> en vervolgens een geheugendump - S(end hexfile)<adres>: om programma/data bestanden weg te schrijven na <adres> Proficiat, u heeft nu uw tutorial succesvol beëindigd. Pagina 8 van 8