Title: TWORZENIE SYSTEMU NIOS II
1TWORZENIE SYSTEMU NIOS II
Kolo Naukowe Ukladów Cyfrowych DEMAIN
2Altera NIOS II
- Wymagane oprogramowanie
- Quartus II v. 9.0
- Nios IDE v. 9.0
- Do pobrania na stronie www.altera.com
3Uwaga!
- Katalogi, w których instalujemy oprogramowanie
oraz w których zakladamy projekty -
- ! NIE MOGA zawierac
spacji !
4Uwaga!
- Unikac powtarzania nazw
- - block diagram lt..gt_project
- - SOPC lt..gt_sopc
- - Nios IDE lt..gt_soft
- W razie problemów www.google.com
5Tworzenie systemu
61. Utworzenie projektu (1/3)
- Utworzenie pliku z obrazem systemu
- Quartus II File New
- Block Diagram/Schematic File
7(No Transcript)
81. Utworzenie projektu (2/3)
- Zalozenie projektu
- File Save As... /szkolenie1.bdf
- Do you want to create a new project with this
file? - Tak
-
91. Utworzenie projektu (3/3)
- Wybór ukladu
- Family Cyclone II
- Device EP2C35F672C6
-
10(No Transcript)
112. Stworzenie systemu NIOS II (1/5)
- Utworzenie systemu Nios II
- Tools SOPC Builder
- System Name szkolenie1_sopc
- Target HDL VHDL
12(No Transcript)
132. Stworzenie systemu NIOS II (2/5)
- Dodanie procesora CPU
- Nios II Processor Nios II/e
14(No Transcript)
152. Stworzenie systemu NIOS II (2/5)
- Dodanie pamieci RAM (On-Chip)
- Memories and Memory Controllers
- On-Chip On-Chip Memory
- Memory type RAM
- Data width 32
- Total memory size 16 KBytes
162. Stworzenie systemu NIOS II (2/5)
- Dodanie komponentu JTAG Uart
- Interface Protocols Serial
- JTAG UART
172. Stworzenie systemu NIOS II (2/5)
- Dodanie portów I/O (diody LED)
- Peripherals Microcontroller Peripherals
PIO (Parallel I/O) - Output ports only - Width 8
182. Stworzenie systemu NIOS II (2/5)
- Dodanie portów I/O (przelaczniki SWITCH)
- Peripherals Microcontroller Peripherals
PIO (Parallel I/O) - Input ports only - Width 8
192. Stworzenie systemu NIOS II (2/5)
- Dodanie licznika czasu (Timer)
- Peripherals Microcontroller Peripherals
Interval Timer - Period 1 ms
- Writable period, Start/Stop control bits
202. Stworzenie systemu NIOS II (2/5)
- Zmiana nazw komponentów (Ctrl R)
- pio_0 leds
- pio_1 buttons
- timer_1 timer
- Powyzsze nazwy beda uzywane w kodzie
programu!
21(No Transcript)
222. Stworzenie systemu NIOS II (3/5)
- Przydzielenie przestrzeni adresowej
- i priorytetów przerwan
- System
- Auto-Assign Base Addresses
- Auto-Assign IRQs
23(No Transcript)
242. Stworzenie systemu NIOS II (4/5)
- Ustawienie adresu poczatku programu
- i adresu wektora przerwan
- cpu_0
-
- Reset Vector onchip_memory2_0
- Exception Vector onchip_memory2_0
25(No Transcript)
262. Stworzenie systemu NIOS II (5/5)
- Zapisanie i wygenerowanie systemu
- Generate Save
27(No Transcript)
283. Dodanie systemu do projektu (1/2)
- Dodanie obrazu systemu do pliku projektu
- Edit Insert Symbol
- Project szkolenie1_sopc
- Dodanie pinów wejscia/wyjscia
- input output
-
29(No Transcript)
303. Dodanie systemu do projektu (2/2)
- Polaczenie pinów z systemem
- clk_0 clk
- reset_n reset
- in_port_to_the_buttons7..0 switch7..0
- out_port_from_the_leds7..0 led7..0
31(No Transcript)
324. Przypisanie pinów do projektu
- Dodanie obrazu systemu do pliku projektu
- Assignments Import Assignments
- File name DE2_PIN.csv
-
33(No Transcript)
345. Zapisanie i kompilacja projektu
- Processing Start compilation
- - Wykorzystanie komórek logicznych
- - Wykorzystanie bloków pamieci
- Minimalna czestotliwosc taktowania
- - Compilation Report Timing Analizer
35(No Transcript)
366. Zaladowanie obrazu do ukladu
- Tools Programmer
- - Hardware Setup ByteBlaster
- Program/Configure
- Start
- - Czasami przydatne bywa wlaczenie
zasilania ? -
37Programowanie
387. Zalozenie projektu (1/2)
- File New Project
- Nios II C/C Application
39(No Transcript)
407. Zalozenie projektu (2/2)
- Wskazanie obrazu systemu (.ptf)
- Select project template Blank Project
- Name szkolenie1_soft
- SOPC Builder System PTF File
../szkolenie1_sopc.ptf - Finish
418. Kompilacja biblioteki
- Prawy klawisz myszki na szkolenie1_soft_syslib
- Properties System Library
- Reduced device drivers
- Small C library itp..
- Prawy klawisz myszki na szkolenie1_soft_syslib
- Build Project
42(No Transcript)
439. Dodanie plików zródlowych (C/C)
- Prawy klawisz myszki na szkolenie1_soft
- Import File System
- szkolenie1.h
- szkolenie1_1.c
- szkolenie1_2.c
4410. Uruchomienie projektu
- Run Run Nios II Hardware
- Main Project szkolenie1_soft
- Target Connection USB-Blaster
- Run
45(No Transcript)
46Program 1
47Program 1
- Typy danych
- alt_8, alt_u8
- alt_16, alt_u16
- alt_32, alt_u32
- Naglówki
- ltstdio.hgt - funkcja printf()
- system.h - adresy komponentów wygenerowane przy
tworzeniu systemu SoPC
48Program 1
int main() alt_u8 variable
while(1) variable
IORD_ALTERA_AVALON_PIO_DATA( BUTTONS_BASE )
IOWR_ALTERA_AVALON_PIO_DATA( LEDS_BASE,
variable ) return 0
49Komunikacja z komponentami
- Przez makrodefinicje
- IOWR_ALTERA_AVALON_PIO_DATA( LEDS_BASE, variable
) - (wpis) (dane)
-
- typ komponentu rejestr adres bazowy
- variable IORD_ALTERA_AVALON_PIO_DATA(
BUTTONS_BASE ) - (dane) (odczyt)
-
- system.h - naglówek z adresami bazowymi
komponentów - altera_avalon_pio_regs.h naglówek z makrami
50Komunikacja z komponentami
- Przez rejestry
- STATUS stan pracy komponentu
- np. ukonczenie liczenia, zgloszenie przerwania
- CONTROL rejestr konfiguracyjny
- np. odblokowanie przerwan, start, stop, reset,
itp.. - DATA rejestr danych
- SPECJALISTYCZNE w zaleznosci od komponentu
- np. DIRECTION, PERIODL, PERIODH, itd..
51Komponent PIO mapa rejestrów
52Program 2
53Program 2
int main() IOWR_ALTERA_AVALON_TIMER_PERIOD
H( TIMER_BASE, 0x02FA ) IOWR_ALTERA_AVALON_T
IMER_PERIODL( TIMER_BASE, 0xF080 )
IOWR_ALTERA_AVALON_TIMER_CONTROL( TIMER_BASE,
0x02 0x04 ) while(1)
status IORD_ALTERA_AVALON_TIMER_STATUS(
TIMER_BASE ) if( status 0x01 )
IOWR_ALTERA_AVALON_TIME
R_STATUS( TIMER_BASE, 0 ) //
do something
54Komponent TIMER mapa rejestrów
55Program 2
- IOWR_ALTERA_AVALON_TIMER_CONTROL( TIMER_BASE,
0x02 0x04 ) - Ustawienie pracy ciaglej (nie trzeba restartowac)
oraz uruchomienie licznika
56Program 2
- IOWR_ALTERA_AVALON_TIMER_PERIODH( TIMER_BASE,
0x02FA ) - IOWR_ALTERA_AVALON_TIMER_PERIODL( TIMER_BASE,
0xF080 ) - Dlaczego takie wartosci ?
- 0x02FAF080 50000000
- Jeden okres licznika trwa 50 MHz (clk)
dekrementacja co 20 ns - 50000000 20 ns 1 sekunda
PERIODH PERIODL
57Program 2
- status IORD_ALTERA_AVALON_TIMER_STATUS(
TIMER_BASE ) - if( status 0x01 )
- IOWR_ALTERA_AVALON_TIMER_STATUS(
TIMER_BASE, 0 )
58Materialy dostepne na stronie Kola http//demain.
zpt.tele.pw.edu.pl/ Publikacje
17 XI 2009