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

24-04-2015, 0:18
Aukcja w czasie sprawdzania była zakończona.
Cena kup teraz: 19.99 zł     
Użytkownik REWELACJA_bg
numer aukcji: 5265768465
Miejscowość Środa Wielkopolsa
Wyświetleń: 21   
Koniec: 24-04-2015, 0:13
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-A23Szyna adresowa, trzystanowa29-48,50-52

D0-D15Szyna danych, dwukierunkowa, trzystanowa1-5,54-64

R/WZapis/odczyt (zapis - niski poziom) - wejście9

ASStrob adresu (wyjście)6

UDS, LDSStroby danych7,8

DTACKPotwierdzenie transmisji danych (wyjście)10

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

BGPotwierdzenie dostępu do magistrali (wyjście)11

BGACKPotwierdzenie dostępu do magistrali (wejście)12

IPL0-IPL2Sterowanie przerwaniami (wejście)23-25

BERRBłąd magistrali (wejście)22

RESETZerowanie systemu (wejście)18

HALTZatrzymanie (wejście)17

EAkwizycja sygnału zegara (wejście)20

VMAAdres ważny (wyjście)19

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

FC0-FC1Stany procesora (wyjścia)26-28

CLKZegar systemowy (wejście)15

Ucc, GNDZasilanie (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

0000Inicjacja wskaźnika stosu

1004Inicjacja licznika rozkazów

2008Błąd magistrali

300CBłąd adresu

4010Nieprawidłowa instrukcja

5014Dzielenie przez zero

6018Rozkazy CHK lub CHK2

701CRozkazy TRAPcc, TRAPV

8020Naruszenie praw dostępu

9024Śledzenie

10028Emulator linii A (1010)

1102CEmulator linii F (1111)

12030Zarezerwowane

13034Błąd protokołu koprocesora

14038Błąd formatu

1503CNie zainicjowany wektor przerwań

16[zasłonięte]23040CZarezerwowane

24060Fałszywe przerwanie

25064Autowektor poziom 1

26068Autowektor poziom 2

2706CAutowektor poziom 3

28070Autowektor poziom 4

29074Autowektor poziom 5

30078Autowektor poziom 6

3107CAutowektor poziom 7

32-47080-0BCWektory rozkazów TRAP #0 - TRAP#15

480C0Koprocesor, nie żądany skok / ustawienie

490C4Koprocesor, nie dokładny wynik

500C8Koprocesor, dzielenie przez zero

510CCKoprocesor , niedomiar

520D0Koprocesor, błąd argumentu

530D4Koprocesor, nadmiar

540D8Koprocesor, sygnalizacja NAN

550DCZarezerwowane

560E0Błąd konfiguracji MMU (układu zarządzenia pamięcią)

57-630E4-0FCZarezerwowane

64-[zasłonięte]100-3FCDefiniowane 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 trybuDziałaniePrzykład

1Adresowania bezpośredniego rejestru danychD0 := D1MOVE D1, D0

2Adresowania bezpośredniego rejestru adresowegoD0 := A1MOVE A1, D0

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

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

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

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

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

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

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

10Adresowanie absolutne krótkieD0 := ($1000) - 16 bitówMOVE $1000, D0

11Adresowania absolutnego długiegoD0 := ($10000) - 32 bityMOVE $10000, D0

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

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

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