580 likes | 830 Views
TWORZENIE SYSTEMU NIOS II. Orkiszewski Marcin. Koło Naukowe Układów Cyfrowych DEMAIN. Altera NIOS II. Wymagane oprogramowanie: Quartus II v. 9.0 Nios IDE v. 9 .0 Do pobrania na stronie www.altera.com. Uwaga!.
E N D
TWORZENIE SYSTEMU NIOS II Orkiszewski Marcin Koło Naukowe Układów Cyfrowych DEMAIN
Altera NIOS II • Wymagane oprogramowanie: • Quartus II v. 9.0 • Nios IDE v. 9.0 • Do pobrania na stronie www.altera.com
Uwaga! • Katalogi, w których instalujemy oprogramowanie oraz w których zakładamy projekty: ! NIE MOGĄ zawierać spacji !
Uwaga! • Unikać powtarzania nazw: - block diagram: <..>_project - SOPC: <..>_sopc - Nios IDE <..>_soft • W razie problemów www.google.com
1. Utworzenie projektu (1/3) Utworzenie pliku z obrazem systemu: Quartus II File New… Block Diagram/Schematic File
1. Utworzenie projektu (2/3) Założenie projektu: File Save As... …/szkolenie1.bdf „Do you want to create a newprojectwiththis file?” Tak
1. Utworzenie projektu (3/3) Wybór układu: Family: Cyclone II Device: EP2C35F672C6
2. Stworzenie systemu NIOS II (1/5) Utworzenie systemu Nios II: ToolsSOPC Builder System Name: szkolenie1_sopc Target HDL: VHDL
2. Stworzenie systemu NIOS II (2/5) Dodanie procesora CPU: Nios II ProcessorNios II/e
2. Stworzenie systemu NIOS II (2/5) Dodanie pamięci RAM (On-Chip): Memories and MemoryControllers On-Chip On-ChipMemory Memorytype: RAM Data width: 32 Total memorysize: 16 KBytes
2. Stworzenie systemu NIOS II (2/5) Dodanie komponentu JTAG Uart: InterfaceProtocols Serial JTAG UART
2. Stworzenie systemu NIOS II (2/5) Dodanie portów I/O (diody LED): PeripheralsMicrocontrollerPeripherals PIO (Parallel I/O) Outputportsonly - Width: 8
2. Stworzenie systemu NIOS II (2/5) Dodanie portów I/O (przełączniki SWITCH): PeripheralsMicrocontrollerPeripherals PIO (Parallel I/O) Inputportsonly - Width: 8
2. Stworzenie systemu NIOS II (2/5) Dodanie licznika czasu (Timer): PeripheralsMicrocontrollerPeripheralsIntervalTimer Period: 1 ms + Writable period, Start/Stop controlbits
2. Stworzenie systemu NIOS II (2/5) Zmiana nazw komponentów (Ctrl + R): • pio_0 leds • pio_1 buttons • timer_1 timer Powyższe nazwy będą używane w kodzie programu!
2. Stworzenie systemu NIOS II (3/5) Przydzielenie przestrzeni adresowej i priorytetów przerwań: System • Auto-AssignBaseAddresses • Auto-AssignIRQ’s
2. Stworzenie systemu NIOS II (4/5) Ustawienie adresu początku programu i adresu wektora przerwań: cpu_0: Reset Vector: onchip_memory2_0 ExceptionVector: onchip_memory2_0
2. Stworzenie systemu NIOS II (5/5) Zapisanie i wygenerowanie systemu: GenerateSave
3. Dodanie systemu do projektu (1/2) Dodanie obrazu systemu do pliku projektu: Edit Insert Symbol… Project szkolenie1_sopc Dodanie pinów wejścia/wyjścia: • input + output
3. Dodanie systemu do projektu (2/2) Połączenie pinów z systemem: • clk_0 clk • reset_n reset • in_port_to_the_buttons[7..0]switch[7..0] • out_port_from_the_leds[7..0]led[7..0]
4. Przypisanie pinów do projektu Dodanie obrazu systemu do pliku projektu: Assignments Import Assignments… File name: DE2_PIN.csv
5. Zapisanie i kompilacja projektu Processing Start compilation - Wykorzystanie komórek logicznych - Wykorzystanie bloków pamięci Minimalna częstotliwość taktowania - Compilation Report Timing Analizer
6. Załadowanie obrazu do układu ToolsProgrammer - Hardware Setup ByteBlaster • Program/Configure • Start - Czasami przydatne bywa włączenie zasilania -
7. Założenie projektu (1/2) File New Project… Nios II C/C++ Application
7. Założenie projektu (2/2) Wskazanie obrazu systemu (.ptf): Selectprojecttemplate: Blank Project Name: szkolenie1_soft SOPC Builder System PTF File: ../szkolenie1_sopc.ptf • Finish
8. Kompilacja biblioteki • Prawy klawisz myszki na szkolenie1_soft_syslib • Properties System Library • Reduceddevicedrivers • Small C library itp.. • Prawy klawisz myszki na szkolenie1_soft_syslib • Build Project
9. Dodanie plików źródłowych (C/C++) • Prawy klawisz myszki na szkolenie1_soft • Import… File System • szkolenie1.h • szkolenie1_1.c • szkolenie1_2.c
10. Uruchomienie projektu Run Run… Nios II Hardware Main Project: szkolenie1_soft Target Connection: USB-Blaster • Run
Program 1 Typy danych: • alt_8, alt_u8 • alt_16, alt_u16 • alt_32, alt_u32 • Nagłówki: • <stdio.h> - funkcja printf() • ”system.h” - adresy komponentów wygenerowane przy tworzeniu systemu SoPC
Program 1 intmain() { alt_u8 variable; while(1) { variable = IORD_ALTERA_AVALON_PIO_DATA( BUTTONS_BASE ); IOWR_ALTERA_AVALON_PIO_DATA( LEDS_BASE, variable ); } return 0; }
Komunikacja 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” - nagłówek z adresami bazowymi komponentów ”altera_avalon_pio_regs.h” – nagłówek z makrami
Komunikacja z komponentami Przez rejestry: • STATUS – stan pracy komponentu np. ukończenie liczenia, zgłoszenie przerwania • CONTROL – rejestr konfiguracyjny np. odblokowanie przerwań, start, stop, reset, itp.. • DATA – rejestr danych • SPECJALISTYCZNE – w zależności od komponentu np. DIRECTION, PERIODL, PERIODH, itd..