Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

TWORZENIE SYSTEMU NIOS II Orkiszewski Marcin Orkiszewski Marcin Koło Naukowe Układów Cyfrowych DEMAIN.

Podobne prezentacje


Prezentacja na temat: "TWORZENIE SYSTEMU NIOS II Orkiszewski Marcin Orkiszewski Marcin Koło Naukowe Układów Cyfrowych DEMAIN."— Zapis prezentacji:

1 TWORZENIE SYSTEMU NIOS II Orkiszewski Marcin Orkiszewski Marcin Koło Naukowe Układów Cyfrowych DEMAIN

2 Altera NIOS II 2 Wymagane oprogramowanie: Quartus II v. 9.0 Quartus II v. 9.0 Nios IDE v. 9.0 Nios IDE v. 9.0 Do pobrania na stronie

3 Uwaga! Katalogi, w których instalujemy oprogramowanie oraz w których zakładamy projekty: Katalogi, w których instalujemy oprogramowanie oraz w których zakładamy projekty: ! NIE MOGĄ zawierać spacji ! ! NIE MOGĄ zawierać spacji ! 3

4 Uwaga! Unikać powtarzania nazw: Unikać powtarzania nazw: - block diagram: _project - SOPC: _sopc - Nios IDE _soft W razie problemów W razie problemów 4

5 5 Tworzenie systemu

6 1. Utworzenie projektu (1/3) Utworzenie pliku z obrazem systemu: Quartus II File New… Quartus II File New… Block Diagram/Schematic File 6

7 7

8 8 Założenie projektu: File Save As... …/szkolenie1.bdf File Save As... …/szkolenie1.bdf Do you want to create a new project with this file? Tak Tak 1. Utworzenie projektu (2/3)

9 9 1. Utworzenie projektu (3/3) Wybór układu: Family:Cyclone II Family:Cyclone II Device:EP2C35F672C6 Device:EP2C35F672C6

10 10

11 Utworzenie systemu Nios II: Tools SOPC Builder Tools SOPC Builder System Name: szkolenie1_sopc Target HDL: VHDL Stworzenie systemu NIOS II (1/5)

12 12

13 Dodanie procesora CPU: Nios II Processor Nios II/e Nios II Processor Nios II/e Stworzenie systemu NIOS II (2/5)

14 14

15 Dodanie pamięci RAM (On-Chip): Memories and Memory Controllers Memories and Memory Controllers On-Chip On-Chip Memory On-Chip On-Chip Memory Memory type: RAM Memory type: RAM Data width: 32 Data width: 32 Total memory size: 16 KBytes Total memory size: 16 KBytes Stworzenie systemu NIOS II (2/5)

16 Dodanie komponentu JTAG Uart: Interface Protocols Serial Interface Protocols Serial JTAG UART JTAG UART Stworzenie systemu NIOS II (2/5)

17 Dodanie portów I/O (diody LED): Peripherals Microcontroller Peripherals PIO (Parallel I/O) Peripherals Microcontroller Peripherals PIO (Parallel I/O) Output ports only - Width: Stworzenie systemu NIOS II (2/5)

18 Dodanie portów I/O (przełączniki SWITCH): Peripherals Microcontroller Peripherals PIO (Parallel I/O) Peripherals Microcontroller Peripherals PIO (Parallel I/O) Input ports only - Width: Stworzenie systemu NIOS II (2/5)

19 Dodanie licznika czasu (Timer): Peripherals Microcontroller Peripherals Interval Timer Peripherals Microcontroller Peripherals Interval Timer Period: 1 ms + Writable period, Start/Stop control bits Stworzenie systemu NIOS II (2/5)

20 Zmiana nazw komponentów (Ctrl + R): - pio_0 leds - pio_1buttons - timer_1timer Powyższe nazwy będą używane w kodzie programu! Powyższe nazwy będą używane w kodzie programu! Stworzenie systemu NIOS II (2/5)

21 21

22 Przydzielenie przestrzeni adresowej i priorytetów przerwań: System System Auto-Assign Base Addresses Auto-Assign Base Addresses Auto-Assign IRQs Auto-Assign IRQs Stworzenie systemu NIOS II (3/5)

23 23

24 Ustawienie adresu początku programu i adresu wektora przerwań: i adresu wektora przerwań:cpu_0: Reset Vector: onchip_memory2_0 Exception Vector: onchip_memory2_ Stworzenie systemu NIOS II (4/5)

25 25

26 Zapisanie i wygenerowanie systemu: Generate Save Generate Save Stworzenie systemu NIOS II (5/5)

27 27

28 Dodanie obrazu systemu do pliku projektu: Edit Insert Symbol… Project szkolenie1_sopc Project szkolenie1_sopc Dodanie pinów wejścia/wyjścia: Dodanie pinów wejścia/wyjścia: input + output input + output Dodanie systemu do projektu (1/2)

29 29

30 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] Dodanie systemu do projektu (2/2)

31 31

32 32 4. Przypisanie pinów do projektu Dodanie obrazu systemu do pliku projektu: Assignments Import Assignments… File name: DE2_PIN.csv File name: DE2_PIN.csv

33 33

34 Processing Start compilation - Wykorzystanie komórek logicznych - Wykorzystanie bloków pamięci Minimalna częstotliwość taktowania - Compilation Report Timing Analizer Zapisanie i kompilacja projektu

35 35

36 Tools Programmer - Hardware Setup ByteBlaster Program/Configure Program/Configure Start Start - Czasami przydatne bywa włączenie zasilania - - Czasami przydatne bywa włączenie zasilania Załadowanie obrazu do układu

37 37 Programowanie

38 File New Project… Nios II C/C++ Application Nios II C/C++ Application Założenie projektu (1/2)

39 39

40 Wskazanie obrazu systemu (.ptf): Select project template: Blank Project Name: szkolenie1_soft SOPC Builder System PTF File:../szkolenie1_sopc.ptf Finish Finish Założenie projektu (2/2)

41 - Prawy klawisz myszki na szkolenie1_soft_syslib -Properties System Library Reduced device drivers Reduced device drivers Small C library itp.. Small C library itp.. - Prawy klawisz myszki na szkolenie1_soft_syslib -Build Project Kompilacja biblioteki

42 42

43 - Prawy klawisz myszki na szkolenie1_soft -Import… File System szkolenie1.h szkolenie1.h szkolenie1_1.c szkolenie1_1.c szkolenie1_2.c szkolenie1_2.c Dodanie plików źródłowych (C/C++)

44 Run Run… Nios II Hardware MainProject: szkolenie1_soft Target Connection: USB-Blaster Run Run Uruchomienie projektu

45 45

46 46 Program 1

47 47 Typy danych: - alt_8, alt_u8 - alt_16, alt_u16 - alt_32, alt_u32 Nagłówki: - funkcja printf() system.h- adresy komponentów wygenerowane przy tworzeniu systemu SoPC Program 1

48 48 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; } Program 1

49 49 Przez makrodefinicje: IOWR_ALTERA_AVALON_PIO_DATA( LEDS_BASE, variable ); IOWR_ALTERA_AVALON_PIO_DATA( LEDS_BASE, variable ); (wpis) (dane) (wpis) (dane) typ komponentu rejestr adres bazowy variable = IORD_ALTERA_AVALON_PIO_DATA( BUTTONS_BASE ); variable = IORD_ALTERA_AVALON_PIO_DATA( BUTTONS_BASE ); (dane) (odczyt) (dane) (odczyt) system.h - nagłówek z adresami bazowymi komponentów altera_avalon_pio_regs.h – nagłówek z makrami Komunikacja z komponentami

50 50 Przez rejestry: STATUS – stan pracy komponentu STATUS – stan pracy komponentu np. ukończenie liczenia, zgłoszenie przerwania CONTROL – rejestr konfiguracyjny CONTROL – rejestr konfiguracyjny np. odblokowanie przerwań, start, stop, reset, itp.. DATA – rejestr danych DATA – rejestr danych SPECJALISTYCZNE – w zależności od komponentu SPECJALISTYCZNE – w zależności od komponentu np. DIRECTION, PERIODL, PERIODH, itd.. Komunikacja z komponentami

51 51 Komponent PIO – mapa rejestrów

52 52 Program 2

53 53 int main() { IOWR_ALTERA_AVALON_TIMER_PERIODH( TIMER_BASE, 0x02FA ); IOWR_ALTERA_AVALON_TIMER_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_TIMER_STATUS( TIMER_BASE, 0 ); // do something… } Program 2

54 54 Komponent TIMER – mapa rejestrów

55 55 IOWR_ALTERA_AVALON_TIMER_CONTROL( TIMER_BASE, 0x02 | 0x04 ); Ustawienie pracy ciągłej (nie trzeba restartować) oraz uruchomienie licznika Program 2

56 56 IOWR_ALTERA_AVALON_TIMER_PERIODH( TIMER_BASE, 0x02FA ); IOWR_ALTERA_AVALON_TIMER_PERIODL( TIMER_BASE, 0xF080 ); Dlaczego takie wartości ? = 0x02FAF080 = Jeden okres licznika trwa 50 MHz (clk) dekrementacja co 20 ns * 20 ns = 1 sekunda Program 2 PERIODHPERIODL

57 57 status = IORD_ALTERA_AVALON_TIMER_STATUS( TIMER_BASE ); if( status & 0x01 ) IOWR_ALTERA_AVALON_TIMER_STATUS( TIMER_BASE, 0 ); Program 2

58 17 XI 2009 Materiały dostępne na stronie Koła Publikacje


Pobierz ppt "TWORZENIE SYSTEMU NIOS II Orkiszewski Marcin Orkiszewski Marcin Koło Naukowe Układów Cyfrowych DEMAIN."

Podobne prezentacje


Reklamy Google