Ta strona wykorzystuje pliki cookies. Korzystając ze strony, zgadzasz się na ich użycie. OK Polityka Prywatności Zaakceptuj i zamknij X

Mikrokontroler MC68000 - MOTOROLA - DIP64

18-07-2015, 19:59
Aukcja w czasie sprawdzania była zakończona.
Cena kup teraz: 14.99 zł     
Użytkownik REWELACJA_bg
numer aukcji: 5526396422
Miejscowość Środa Wielkopolsa
Wyświetleń: 4   
Koniec: 18-07-2015 19:46:15
info Niektóre dane mogą być zasłonięte. Żeby je odsłonić przepisz token po prawej stronie. captcha

Mikroprocesor MC68000 - posiada niezależne magistrale danych (16 bitów) i adresową (24 bity) co poprzez mniejszą złożoność układu prowadzi do zwiększenia szybkości działania. 24-bitowa szyna adresowa umożliwia bezpośrednie adresowanie 16 MB pamięci.

Rodzina mikroprocesorów 68000 nie ma wyróżnionego wśród rejestrów akumulatora. Funkcje tę może pełnić dowolny z ośmiu dostępnych 32-bitowych rejestrów danych D0-D7. Dane przechowywane w tych rejestrach mogą być:

-niezależnymi bitami - 32 bity,

-liczbami BCD (4-bity) - 8 liczb,

-słowami words (16-bitów) - 2 słowa,

-podwójnymi słowami long words (32-bity) - 1 słowo.

Załadowanie danej do rejestru danych o rozmiarze mniejszym od 32 bitów nie powoduje (tak jak w rejestrach adresowych) znakowego rozszerzenia tej danej do 32 bitów. Oznacza to, że górna część rejestru pozostaje niezmieniona.

Rejestry danych nie mogą być wykorzystane do adresowania pamięci. Są one używane jako tymczasowe komórki pamięci, w których przechowywać można dane. Wiele instrukcji wymaga, aby rejestry danych zawierały jeden lub więcej operandów danej instrukcji.

Rejestry A0-A6 to 32-bitowe rejestry adresowe, które można adresować programowo. Rejestr A7 to de facto dwa rejestry 32-bitowe, z których tylko jeden działa w danym momencie. Podczas pracy procesora w trybie użytkownika oznaczenie A7 dotyczy tzw. wskaźnika stosu użytkownika (USP), natomiast podczas pracy procesora w trybie nadzorcy oznaczenie A7 dotyczy tzw. wskaźnika stosu nadzorcy (SSP). Tworzony stos rozciąga się w dół pamięci.

Rejestry adresowe mogą być również używane jako rejestry 16-bitowe. Podczas ładowania do rejestru adresowego 16-bitowego słowa, słowo to zostaje wcześniej znakowo rozszerzone do 32 bitów. Rejestry adresowe nie mogą być używane jako rejestry 8-bitowe.

Rejestry adresowe używane są jako tymczasowe miejsca przechowywania adresów pamięci. Mogą być one wykorzystane w instrukcjach odnoszących się do pamięci, w celu określenia adresu, pod którym znajduje się dana.

Kolejnymi rejestrami są:

- 32-bitowy licznik programu PC (Program Counter). Licznik programu zawsze zawiera adres następnej do wykonania instrukcji. W chwili wykonywania danej instrukcji zostaje on zwiększony o taką wartość, żeby wskazywać następną instrukcję, która ma być wykonana.

-16-bitowy rejestr statusowy (rejestr stanu) SR (Status Register) podzielony na dwa bajty :

systemowy i użytkownika. Bajt systemowy (bity od 8 do 15 rejestru statusowego) : -Bit 15 stanowi sprzętową pomoc dla debugerów. Zwany jest on bitem śledzenia (Trace bit). Umożliwia on przejmowanie sterowania przez debuger po wykonaniu każdej kolejnej instrukcji śledzonego programu. -Bit 13 używany jest do kontrolowania dostępu do określonych instrukcji i do bajtu systemowego rejestru statusowego. Bit ten jest nazywany bitem nadzorcy (Supervisor bit). Jeśli bit ten jest ustawiony, dostęp jest dozwolony. Gdy jest on wyzerowany oznacza to, że procesor pracuje w trybie użytkownika. -Bity 10 do 8 zwane są maską przerwań. Określają one priorytet obsługiwanego aktualnie przerwania. Pozostałe bity bajtu systemowego nie są w procesorze 68000 używane. -Bajt użytkownika (bity od 0 do 7 rejestru statusowego): Bajt ten zwany jest rejestrem kodów warunków CCR (Condition Codes Register). Bajt użytkownika zawiera zestaw bitów zwanych kodami warunków, które używane są do zapisywania informacji dotyczących poprzednio wykonywanych instrukcji. W bajcie użytkownika zdefiniowane są następujące bity: Bit 0, bit przeniesienia C (Carry). Bit 1, bit nadmiaru V (Overflow). Bit 2, bit zera (Zero). Bit 3, bit mniejszości od zera (Negative). Bit 4, bit rozszerzenia X (Extend). Jest on kopią bitu C.

Opis wyprowadzeń i sygnałów

Sygnał

Opis sygnału

Nr wyprowadzenia

A0-A23 Szyna adresowa, trzystanowa 29-48,50-52

D0-D15 Szyna danych, dwukierunkowa, trzystanowa 1-5,54-64

R/W Zapis/odczyt (zapis - niski poziom) - wejście 9

AS Strob adresu (wyjście) 6

UDS, LDS Stroby danych 7,8

DTACK Potwierdzenie transmisji danych (wyjście) 10

BR Żądanie dostępu do magistrali (wejście) 13

BG Potwierdzenie dostępu do magistrali (wyjście) 11

BGACK Potwierdzenie dostępu do magistrali (wejście) 12

IPL0-IPL2 Sterowanie przerwaniami (wejście) 23-25

BERR Błąd magistrali (wejście) 22

RESET Zerowanie systemu (wejście) 18

HALT Zatrzymanie (wejście) 17

E Akwizycja sygnału zegara (wejście) 20

VMA Adres ważny (wyjście) 19

VPA Ważne dane z układu peryferyjnego (wejście) 21

FC0-FC1 Stany procesora (wyjścia) 26-28

CLK Zegar systemowy (wejście) 15

Ucc, GND Zasilanie (wejścia) 49,16

Obsługa przerwań

Osługę zdarzeń wyjątkowych inicjują:

przerwania sprzętowe,

sygnały błędów układowych (np. BERR),

pułapki programowe (np. generowane automatycznie przy dzieleniu przez zero).

Następuje wówczas przełączenie w tryb systemowy i obsługa danego przerwania. Powrót do trybu użytkowego następuje po wystąpieniu rozkazu RET.

O priorytecie danego przerwania sprzętowego decydują sygnały na wejściach IPL0-IPL2.

Istnieje 256 lokacji wektorów przerwań, z których każda zajmuje po 4 bajty. Daje to zatem 1024 bajtów pamięci. Aktualny adres wektora przerwań otrzymuje się dodając do zawartości rejestru bazowego, przesunięcia.

Nr przerwania

Przesunięcie

Opis

0 000 Inicjacja wskaźnika stosu

1 004 Inicjacja licznika rozkazów

2 008 Błąd magistrali

3 00C Błąd adresu

4 010 Nieprawidłowa instrukcja

5 014 Dzielenie przez zero

6 018 Rozkazy CHK lub CHK2

7 01C Rozkazy TRAPcc, TRAPV

8 020 Naruszenie praw dostępu

9 024 Śledzenie

10 028 Emulator linii A (1010)

11 02C Emulator linii F (1111)

12 030 Zarezerwowane

13 034 Błąd protokołu koprocesora

14 038 Błąd formatu

15 03C Nie zainicjowany wektor przerwań

16-23 040-05C Zarezerwowane

24 060 Fałszywe przerwanie

25 064 Autowektor poziom 1

26 068 Autowektor poziom 2

27 06C Autowektor poziom 3

28 070 Autowektor poziom 4

29 074 Autowektor poziom 5

30 078 Autowektor poziom 6

31 07C Autowektor poziom 7

32-47 080-0BC Wektory rozkazów TRAP #0 - TRAP#15

48 0C0 Koprocesor, nie żądany skok / ustawienie

49 0C4 Koprocesor, nie dokładny wynik

50 0C8 Koprocesor, dzielenie przez zero

51 0CC Koprocesor , niedomiar

52 0D0 Koprocesor, błąd argumentu

53 0D4 Koprocesor, nadmiar

54 0D8 Koprocesor, sygnalizacja NAN

55 0DC Zarezerwowane

56 0E0 Błąd konfiguracji MMU (układu zarządzenia pamięcią)

57-63 0E4-0FC Zarezerwowane

64-255 100-3FC Definiowane przez użytkownika

Lista instrukcji

Procesor posiada 56 rozkazów o kodach 16-bitowych:

[rodzaj operacji] [adres źródłowy], [adres docelowy]

Instrukcje przesyłania danych przenoszą dane z jednego miejsca systemu 68000 do drugiego. Przesłaniu podlegają dane o rozmiarze jednego, dwóch lub czterech bajtów pomiędzy rejestrami, rejestrem i pamięcią oraz pomiędzy dwoma lokacjami pamięci. Do tej klasy należą instrukcje:

EXG

LEA

LINK

MOVE, MOVEM, MOVEP, MOVEQ

PEA

SWAP

UNLK

Instrukcje arytmetyki całkowitoliczbowej przeprowadzają podstawowe operacje w kodzie uzupełnienia do dwóch na danych binarnych. Należą do nich:

ADD, ADDA, ADDI, ADDQ, ADDX

CLR

CMP, CMPA, CMPI, CMPM

DIVS, DIVU

EXT

MULS, MULU

NEG, NEGX

SUB, SUBA, SUBI, SUBQ, SUBX

TAS

TST

Instrukcje logiczne. Grupa instrukcji logicznych obejmuje instrukcje wykonujące operacje w arytmetyce Boole'a na danych binarnych. Do grupy tej należą:

AND, ANDI

OR, ORI

EOR, EORI

Instrukcje przesunięć i obrotów obejmują przesunięcia i obroty arytmetyczne oraz logiczne:

ASL, ASR

LSL, LSR

ROL, ROR

ROXL, ROXR

Instrukcje manipulacji bitami operują na pojedynczym bicie określonego bajtu. Należą do nich:

BTST

BSET

BCLR

BCHG

Instrukcje BCD operują na liczbach zapisanych w kodzie BCD. Mikroprocesor 68000 używa tylko trzech tego typu instrukcji:

ABCD

SBCD

NBCD

Instrukcje sterowania programem modyfikują sposób realizacji programu, zmieniając kolejność wykonania poszczególnych segmentów programu. Grupa ta zawiera instrukcje:

Bcc

DBcc

Scc

BSR, JSR

RTS

JMP

RTR

Instrukcje kontroli systemu oddziałują na hardware systemu 68000. Są to instrukcje uprzywilejowane, co oznacza, że mogą być wykonane jedynie w trybie nadzorcy. Do grupy tej należą:

MOVE USP

RESET

RTE

STOP

CHK, TRAPV

TRAP

Organizacja danych w pamięci

Dane zapisane w postaci binarnej mogą mieć rozmiar 8, 16 lub 32 bitów. Tego typu dane nazywa się odpowiednio bajtami, słowami i długimi słowami. Większość instrukcji, które wykonują operacje na liczbach binarnych przyjmuje każdy z powyższych trzech rozmiarów danych. Na przykład instrukcja MOVE, przesyłająca daną binarną z jednego miejsca do drugiego, posiada trzy formy:

MOVE.B przesyła daną o długości bajtu,

MOVE.W przesyła daną o długości słowa,

MOVE.L przesyła daną o długości długiego słowa.

Zapis słowa lub długiego słowa w pamięci zorganizowany jest w ten sposób, że bajty danego słowa lub długiego słowa zapisywane są w kolejności malejącej. Najbardziej znaczący bajt słowa lub długiego słowa znajduje się pod najniższym adresem. Należy zwrócić na to uwagę, ponieważ wiele komputerów nie zapisuje wielobajtowych liczb binarnych w ten sam sposób. W szczególności 8080, Z80, 6502 i rodzina mikroprocesorów 8088/86 zapisuje słowa i długie słowa w zgoła odwrotnej kolejności, tzn. w ten sposób, że najmłodszy bajt zapisywany jest pod najniższym adresem.

Tryby adresowania

Mikroprocesor MC68000 dysponuje 8 trybami adresowania, zaś w obrębie niektórych z nich istnieją podtryby co prowadzi w konsekwencji do ogólnej liczby 14 trybów.

Lp. Nazwa trybu Działanie Przykład

1 Adresowania bezpośredniego rejestru danych D0 := D1 MOVE D1, D0

2 Adresowania bezpośredniego rejestru adresowego D0 := A1 MOVE A1, D0

3 Adresowania pośredniego rejestrem adresowym D0 := (A1) MOVE (A1), D0

4 Adresowania pośredniego rejestrem adresowym z postinkrementacją D0 := (A1) A1:= A1 + N; N=1,2,4 MOVE (A1)+, D0

5 Adresowania pośredniego rejestrem adresowym z predekrementacją A1:= A1 - N; N=1,2,4 D0 := (A1) MOVE -(A1), D0

6 Adresowania pośredniego rejestrem adresowym z przesunięciem D0 := (A1+4) MOVE 4(A1), D0

7 Adresowania pośredniego licznikiem programu z przesunieciem D0 := (PC+4) MOVE 4(PC), D0

8 Adresowania pośredniego rejestrem adresowym z indeksem D0 := (A1+4) + (D1) MOVE 4(A1,D1.L), D0

9 Adresowania pośredniego licznikiem programu z indeksem D0 := (PC+4) + (D1) MOVE 4(PC,D1.L), D0

10 Adresowanie absolutne krótkie D0 := ($1000) - 16 bitów MOVE $1000, D0

11 Adresowania absolutnego długiego D0 := ($10000) - 32 bity MOVE $10000, D0

12 Adresowanie natychmiastowe (proste) krótkie D0 := $10[zasłonięte]000, D0 MOVE #$10[zasłonięte]000, D0

13 Adresowanie natychmiastowe (proste) długie D0 := $10[zasłonięte]000, D0 MOVE #$10[zasłonięte]000, D0

14 Adresowanie implikowane (niejawne) D0 := SR, USP, SSP, PC