MM
1. Zaimplementuj bufor okrężny
(Kompletna implementacja, wraz ze wszystkimi zbędnymi rzeczami ;-) )
#define DLUGOSC_BUFF 500
//...
int buff[DLUGOSC_BUFF]; int i=0,koniec=0;
//...
while(!koniec) { buff[i]=wejscie; i++; if (i>DLUGOSC_BUFF) i=0;
//… jakieś operacje na buforze
} |
2. Przetwarzanie równoległe a potokowe
Przetwarzanie równoległe: dwie różne jednostki procesora wykonują równocześnie dwie różne instrukcjie, np.: w procesorze dsp omawianym na laboratorium mielismy jednoczesne dodawanie (na ALU - arithmetic-logic unit) i mnożenie (na MAC'u - multiply-accumulate).
Przetwarzanie potokowe: czyli wykorzystywanie kilku podjednostek procesora w celu równoległego wykonywania kilku instrukcji (niemalże, ponieważ instrukcje wykonywane są sekwencyjnie, jedynie czas trwania pojedyńczej instrukcji, ze względu na potokowość zmalał, bywa też, np. przy instrukcji skoku że potokowość zostaje zakłócona ponieważ nie można przewidzieć następnej instrukcji przy skoku). Procesor przez nas opisywany miał 4 niezależne potoki. Każdy potok zajmował się jednym procesem, tj. pobieraniem instrukcji (fetch), jej dekodowaniem (decode) i wykonaniem (execute) oraz zapisem przetworzonych danych do pamięci (writeback). Poniższa tabelka pokazuje zasadę działania przetwarzania potokowego.
Instrukcja |
Pobieranie |
Dekodowanie |
Wykonanie |
Zapis |
I1 ⇒ |
I1 |
|
|
|
I2 ⇒ |
I2 |
I1 |
|
|
I3 ⇒ |
I3 |
I2 |
I1 |
|
... |
... |
I3 |
I2 |
I1 |
|
|
... |
I3 |
I2 |
3. Układ DMA, jak działa, przykładowe zastosowanie
DMA (Direct Memory Access - bezpośredni dostęp do pamięci) - to układ do przesyłania danych między pamięcią a pamięcią, pamięcią a układami wejścia/wyjścia, i układami wejścia/wyjścia a pamięcią - bez użycia procesora. Brak ingerencji procesora w przesyłanie danych skutkuje większą prędkością - procesorowi ta sama czynność zajmuje znacznie więcej czasu. DMA nie potrzebuje żadnych instr., generuje potrzebne adresy i sygnały sterujące dla pamięci i urządzeń zewnętrznych umożliwiając bezpośrednią wymianę danych. Mikroprocesor musi dla tej samej czynności pobrac instrukcje i je przetworzć, co jest zdecydowanie wolniejsze. Układ DMA działa według następującego schematu:
po otrzymaniu żądania bezpośr. dostępu do pamięci od urz. zewn.:przejmuje kontrolę nad magistralą systemową; potwierdza żądnie dostępu do pamięci przez to urządz., które ma największy priorytet; generuje potrzebny adres i sygnał sterujący do pamięci i urządz. zew. umożliwiając wymianę danych (trwa to dopóki urz. zew. Podtrzymuje żądanie bezpośr. dostępu do pamięci); po transmisji zadanej ilości słów sygnalizuje zakończenie cyklu
KC
1. Cechy charakterystyczne RISC
RISC (Reduced (or regular) instruction set computer (or Computing)):
-uniwersalna (stała) długość rozkazu;
-rejestry uniwersalne (mogą przechowywać dane i adresy);
-architektura LOAD/STORE;
-każda instrukcja wykonywana w jednym cyklu zegara;
-zredukowana ilość rozkazów
CISC (Complex instruction set computer):
-duża ilość złożonych rozkazów, mających zmienny format;
-rejestry dedykowane, akumulator;
-rozbudowany sposób adresowania;
-rozbudowana liczba rozkazów
2. Narysować schemat Counter-Timera i omówić jak działa
Timer Counter 8253/8254
Programowalny generator przebiegów czasowych i jest przeznaczony do generacji szerokiego wachlarza sygnałów będących funkcją czasu lub funkcją liczby zliczanych impulsów. Układ ten składa się z: 3 16bitowych liczników odejmujących, których wartości początkowe można ustawić; magistrali adresowej, magistrali danych, magistrali sterującej, magistrali wewnętrznej, bufora danych, rejestru kontrolnego. Każdy licznik może być indywidualnie programowany do liczenia w kodzie binarnym lub BCD. Zliczane są opadające zbocza sygnału podawanego na wejście CLK danego licznika. Graniczną częstotliwością pracy układu są 2MHz. Zliczaniem impulsów można sterować za pomocą sygnału We GATE, gdy jest on równy 1 odbywa się zliczanie. Tryb pracy:
0 - po zakończeniu zliczania zadanej liczby impulsów na wyjściu pojawia się 1
1 - licznik pracuje jako programowalny przerzutnik monostały
2 - licznik pracuje jako dzielnik impulsów
3 - licznik pracuje jako generator impulsów
4 - programowo generowany pojedynczy impuls jednostkowy
5 - sygnałowo generowany pojedynczy impuls jednostkowy
8254 pozwala dodatkowo odczytać słowo statusowe licznika.
3. Na procku ARM ustawić flagę przerwań (7. bit) gdy ustawiona jest flaga przeniesienia (30. bit)
// 100000000000000000000000000000b= 20000000h
if (cpsr & 0x20000000)
|
(7 bit, uznaję , że siódmy bit kolejno, czyli 6 numer, liczony od 0, to samo ma się do 30 bitu, czyli to będzie 29 bit, liczony od 0, czyli 1 i 29 zer. Jeżeli tu jest gdzieś błąd, to poprawcie według własnego uznania.)
JH
1. Bloki funkcyjne mikrokontrolera na przykładzie H8
(wydaje mi się, że jak tyle narysujecie, to powinno być dość , )
Może tylko jeszcze wyjaśnię parę skrótów:
SCI - serial communication interface
Watchdog Timer - specjalny bloczek pilnujący, aby procek nie wpadł w martwą pętlę, wykrywa także różne nieprawidłowości w działaniu kontrolera (np. niestabline napięcie zasilania)
I2C - standardowa magistrala do komunikacji między różnymi urządzeniami (standard industrialny )
A/D converter - Analog/Digital -analogowo cyfrowy przetwornik
Reszta - standard
2. Narysować ramke w kom. synchro. i asynchro. dla słowa B7h gdy transmisja jest ustawione (czy cos takiego) na 8N1 (8 bitów, nie ma Partiy Bit, 1 bit stopu)
B7h= 10110111b
Synchroniczna:
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
Asynchroniczna:
|
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
|
Bit_startu |
D0 |
D1 |
D2 |
D3 |
D4 |
D5 |
D6 |
D7 |
Bit_stopu |
3. Rotajcja bitu w bajcie (progs)
If (kierunek==1) |
JL
1. Wymienić i opisać flagi w procku
AF - Auxiliary Flag - przeniesienie pomocnicze
CF - Carry Flag - przeniesienia
DF - Direction Flag - kierunku
IF - Interupt Flag - flaga przrwania (wykorzystana, przy maskowaniu przerwań)
OF - Overflow Flag - przepełnienia
PF - Parity Flag - bit parzystości
SF - Sign Flag - znacznik znaku
TF - Trap Flag - pracy krokowej
ZF - Zero Flag - znacznik zera
2. Wymienić rodzaje pamięci w mikroprocesorze (podkreślił, że nie w mikrokomputerze)
RAM- Random acces memory - pamięć o swobodnym dostępie, dla danych
ROM- Read only memory - pamięć tylko do odczytu, dla programu, elementów systemu op.
CACHE - pamięć podręczna, przeważnie zróżnicowana, inna dla danych, inna dla kodu programu.
PROM - Programmable ROM
EPROM - Erasable Programable ROM
EEPROM - Electrically-Erasable Programable ROM
3. Bloki funkcyjne (a moze jednak cos innego) w 8051
(jeżeli chodziło o bloki MIKROKONTROLERA, to odp. Będzie na miejscu ;-) )
Mikrokontrolery powstały ze scalenia kontrolerów z pewnymi urządzeniami w jeden chip w procesie miniaturyzacji. Mikrokontrolery zawierają zazwyczaj:
jednostkę centralną (CPU)
zegar
pamięć RAM (dla danych)
pamięć ROM (zazwyczaj EPROM, dla programu
układy wejścia - wyjścia (programowalne I/O)
układ liczników (8051 - dwa układy czasowo-licznikowe)
kontroler przerwań
$ver: 1.0.2 by wuja diskaciu / 30.01.2005
Bufor danych
i ukł. sterowania
A0
A1
WR
RD
CS
D0-D7
Licznik 0
CLK 0
GATE
OUT 0
OUT 2
Licznik 2
GATE
CLK 2
OUT 1
Licznik 1
GATE
CLK 1