KOMPONENTY TYPU SLAVE Orkiszewski Marcin

Slides:



Advertisements
Podobne prezentacje
I część 1.
Advertisements

Architektura jednostki centralnej RD MBR MAR IRPC +1 WR jednostka sterująca ALU A F Adres Dane Rejestry: MAR – (Memory Address Register) rejestr adresowy.
Praca dyplomowa inżynierska
Mechanizmy pracy równoległej
Wykonał : Marcin Sparniuk
SYSTEMY OPERACYJNE WSTĘP
Systemy rozproszone W. Bartkiewicz
SYSTEMY OPERACYJNE WSTĘP
dynamiczny przydział pamięci
Instrukcje strukturalne
PAMIĘĆ RAM.
KONKURS WIEDZY O SZTUCE
Materiały pomocnicze do obsługi wybranych funkcji Quartus II
Magistrale.
Programowanie w środowiskach zintegrowanych wykład 1 PSZ Programowanie w Środowiskach Zintegrowanych > Systemy i środowiska zintegrowane > Środowisko zintegrowane.
by Ernest Jamro Katedra Elektroniki, AGH Kraków
Najczęściej popełniane błędy w VHDL’u
ZASTOSOWANIE PROCESORÓW SYGNAŁOWYCH
Wykład nr 2: Struktura systemu komputerowego a system operacyjny
Magistrala & mostki PN/PD
Komputer, procesor, rozkaz.
Wstęp do FPGA Krzysztof Pisaniec
SORTOWANIE (przykład zastosowania DMA)
PRZERWANIA, DMA, UART Orkiszewski Marcin
TWORZENIE SYSTEMU NIOS II
Programowanie wizualne PW – LAB5 Wojciech Pieprzyca.
ZARZĄDZANIE PROCESAMI
Autor: Piotr Wojtowicz Opiekun naukowy referatu: dr inż. Cezary Worek
ogólne pojęcia struktury
Komputer a system komputerowy
Architektura komputerów
przykładowy 8-bitowy mikroprocesor uniwersalny CISC
Dekodery adresów.
Architektura komputerów
Architektura komputerów
Opracowanie: Maria W ą sik. Pierwsze komputery budowano w celu rozwi ą zywania konkretnych problemów. Gdy pojawiało si ę nowe zadanie, nale ż ało przebudowa.
Pliki tekstowe. Operacje na plikach. mgr inż. Agata Pacek.
Rodzina AVR wykład 4.
Administracja serwerem bazy danych Oracle 11g Zarządzanie strukturą bazy danych Wykład nr 2 Michał Szkopiński.
ARCHTEKTURA KOMPUTERA
Płyta główna. Magistrale I/O
Zasada działania komputera
Urządzenia wewnętrzne komputera
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
Budowa i rodzaje procesorów.
Mikroprocesory.
Mikroprocesory mgr inż. Sylwia Glińska.
Podsystem graficzny i audio
Programowanie obiektowe – zastosowanie języka Java SE
VisNow – czytanie danych regularnych
OPB - On-chip Peripherial Bus AXI – Advance eXtensible Interface

Procesor – charakterystyka elementów systemu. Parametry procesora.
BUDOWA I ZASADA DZIAŁANIA
Budowa wewnętrzna KOMPUTERA
Wyk. Tomasz Marciniuk ZASADA DZIAŁANIA KOMPUTERA Operacje I/O pod nadzorem procesora Urządzenia Techniki Komputerowej.
Portal edukacyjny A.Ś. FORMULARZE W JĘZYKU HTML. Portal edukacyjny A.Ś. Obiekty umieszczane na stronach www Teksty Obrazy Odnośniki Tabele Ramki pływające.
Pamięć RAM Pamięć RAM.
Architektury procesorów rdzeniowych mikrokontrolerów.
Procesy, wątki Program a proces Proces: Przestrzeń adresowa, kod, dane, stos (część pamięci do przechowania zmiennych lokalnych i niektórych adresów) Otwarte.
Układy i systemy mikroprocesorowe
Budowa komputera.
Płyta główna. Magistrale I/O
Synteza logiczna w projektowaniu układów cyfrowych
Interfejsy synchroniczne
Projektowanie systemów cyfrowych z wykorzystaniem języka VHDL
OPB - On-chip Peripherial Bus AXI – Advance eXtensible Interface
Mikrokontrolery System przerwań
Mikrokontrolery MSP430 DMA
OPB - On-chip Peripherial Bus AXI – Advance eXtensible Interface
Zapis prezentacji:

KOMPONENTY TYPU SLAVE 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

Tworzenie systemu

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... …/szkolenie3.bdf „Do you want to create a new project with this 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: Tools SOPC Builder System Name: szkolenie3_sopc Target HDL: VHDL

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

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

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

2. Stworzenie systemu NIOS II (3/5) Przydzielenie przestrzeni adresowej i priorytetów przerwań: System Auto-Assign Base Addresses Auto-Assign IRQ’s

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

Tworzenie komponentu

Altera Nios II

Altera Avalon (1/2) „System” realizujący połączenia między komponentami Memory Mapped – komponenty rozmieszczone w przestrzeni adresowej Streaming Mode – bezpośrednie połączenie między komponentami

Altera Avalon (2/2) Każdy port typu Master posiada bezpośrednie połączenie z wybranym portem typu Slave W przypadku próby jednoczesnego dostępu wykonywany jest arbitraż (w przykładzie 4:1)

Sygnały (1/6) Sygnały kontrolne: [in] reset – reset [in] clk – zegar [out] irq – przerwanie (musi trwać wystarczająco długo, mechanizm dezaktywacji)

Sygnały (2/6) Szyny danych: [in] writedata(.. downto 0) – szyna przesyłająca dane do komponentu [out] readdata(.. downto 0) – szyna odczytująca dane z komponentu [bidir] data(.. downto 0) – szyna dwukierunkowa Szyny muszą być tej samej szerokości. Szerokość szyn musi być potęgą 2.

Sygnały (3/6) address - szyna adresowa [in] address(.. downto 0) – szyna adresowa określająca rejestr docelowy IOWR( SWAP_IN1_BASE, 1, data); address <= b’01’ if (address = b’00’ ) then register_0 <= writedata; elsif (address = b’01’ ) then register_1 <= writedata; … Czy to zadziała z DMA ??

Sygnały (4/6) write - żądanie zapisu

Sygnały (5/6) read - żądanie odczytu

Sygnały (6/6) waitrequest - żądanie wstrzymania transferu

Przykładowy zapis process( clk ) variable addr : INTEGER := conv_integer(address); begin if ( clk'event and clk = '1' ) then if ( (write = '1') and (chipselect = '1') ) then registers( addr ) <= writedata; end if; end process;

Przykładowy odczyt process( clk ) variable addr : INTEGER := conv_integer(address); begin if ( clk'event and clk = '1' ) then if ( (read = '1') and (chipselect = '1') ) then readdata <= registers(addr); end if; end if; end process;

Konwencja nazw sygnałów (typ portu)_(nazwa portu)_(nazwa sygnału) Np. csi_clock_clk : in STD_LOGIC; csi_clock_reset_n : in STD_LOGIC; ins_interrupt_irq : out STD_LOGIC; avs_in1_chipselect : in STD_LOGIC; avs_in1_write_n : in STD_LOGIC; avs_in1_address : in STD_LOGIC_VECTOR(1 downto 0); avs_in1_writedata : in STD_LOGIC_VECTOR(31 downto 0); avs_out1_chipselect : in STD_LOGIC; avs_out1_read_n : in STD_LOGIC; avs_out1_address : in STD_LOGIC_VECTOR(1 downto 0); avs_out1_readdata : out STD_LOGIC_VECTOR(31 downto 0));

Dodanie komponentu

Katalog z kodem komponentu musi znajdować się w katalogu projektu !! Uwaga! Katalog z kodem komponentu musi znajdować się w katalogu projektu !!

Dodanie plików

Sygnały

Przerwanie

Port in1

Port out1

Architektura systemu

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

3. Dodanie systemu do projektu (1/2) Dodanie obrazu systemu do pliku projektu: Edit Insert Symbol… Project szkolenie3_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

4. Przypisanie pinów do projektu Dodanie obrazu systemu do pliku projektu: Assignments Assignment Editor Category: PIN clk PIN_N2 reset_n PIN_G26

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 Tools Programmer - Hardware Setup UsbBlaster Program/Configure Start - Czasami przydatne bywa włączenie zasilania  -

Programowanie

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): Select project template: Blank Project Name: szkolenie3_soft SOPC Builder System PTF File: ../szkolenie3_sopc.ptf Finish

8. Kompilacja biblioteki Prawy klawisz myszki na szkolenie3_soft_syslib Properties System Library Reduced device drivers Small C library itp.. Build Project

9. Dodanie plików źródłowych (C/C++) Prawy klawisz myszki na szkolenie3_soft Import… General File System szkolenie3.h szkolenie3_1.c szkolenie3_2.c

10. Uruchomienie projektu Run Run… Nios II Hardware Main Project: szkolenie3_soft Target Connection: USB-Blaster Run

Program 1

Program 1 #include ”system.h” #include <io.h> int main() { alt_u32 i, result, testValue = 0x11113333; for(i=0; i<3; i++) IOWR( SWAP_IN1_BASE, 0, testValue ); result = IORD( SWAP_OUT1_BASE, 0 ); testValue <<= 1; } return 0;

(adresowanie, przerwanie) Program 2 (adresowanie, przerwanie)

Program 2 Wpisanie danych do komponentu: (wpis pod adres '2' wyzwala przerwanie) alt_u32 i, offset, testValue = 0x11113333; offset = 0; for(i=0; i<3; i++) { IOWR( SWAP_IN1_BASE, offset, testValue ); // 0, 1, 2 testValue <<= 1; offset += 1; }

Program 2 Zarejestrowanie przerwania: Funkcja przerwania: alt_irq_register( SWAP_IN1_IRQ, 0, SWAP_ISR ); Funkcja przerwania: alt_u32 irq_flag = 0; // zmienna globalna void SWAP_ISR( void *context, unsigned long id ) { irq_flag = 1; IOWR( SWAP_IN1_BASE, 3, 0 ); // zdjęcie przerwania }

Program 2 Odczyt danych z komponentu w pętli głównej: while(1) { if( irq_flag ) // flaga ustawiana w przerwaniu offset = 0; for(i=0; i<3; i++) result = IORD( SWAP_OUT1_BASE, offset ); // 0, 1, 2 offset += 1; } irq_flag = 0;

Przykładowa obsługa przerwania if ( (write = '1') and (chipselect = '1') ) then registers( addr ) <= writedata; if ( addr = 2 ) then // zapis do rejestru 2 interrupt <= '1'; elsif ( addr = 3 ) then // zapis do rejestru 3 interrupt <= '0'; end if;

Materiały dostępne na stronie Koła http://demain.zpt.tele.pw.edu.pl/ Publikacje 1 XII 2009