Jak 8032 wykonuje program?

Badałem mikrokontroler 8032. Wspomina się, że 8032 nie ma wewnętrznej pamięci ROM. Mam kilka pytań.

  • Czy potrzebujemy zewnętrznej pamięci ROM, aby wykonywać programy koniecznie? Czy nie możemy użyć 256-bajtowej wewnętrznej pamięci RAM?

  • Załóżmy, że używam mikrokontrolera 8032 z zewnętrzną pamięcią ROM 2732, a także za pomocą zatrzasku do przechowywania adresu (niższego rzędu) portu P0. (który może przenosić adres / dane). Teraz po włączeniu EA i podłączeniu PSEN jak 8032 wykonuje program? Co się stanie, jeśli włączę system? (W jaki sposób licznik programu mikrokontrolera 8032 wykonuje polecenia? Z jakiego adresu pamięci zewnętrznej program powinien być czytany?

Mam przeczytaj te podręczniki – Intel 8032H Keil , Atmel 80C32E .

Odpowiedź

Jeśli spojrzysz na typowy obwód 80 (C) 32 poniżej (z tutaj ):

tutaj wprowadź opis obrazu

Możesz zobaczyć, że 8032 komunikuje się z zewnętrzną pamięcią EPROM, RAM i EEPROM przez magistrala – 8-bitowe dane i 16-bitowy adres. Ten ostatni jest zatrzaśnięty, a tym samym demultipleksowany z HCT573. Było kilka chipów z wbudowanym zatrzaskiem, zaprojektowanych do użytku z 8031/8032, ale powyższa była bardziej powszechna konfiguracja – wykorzystująca niski -cost standardowe układy pamięci. Jest też trochę ” kleju ” logiki do dekodowania adresów i rodzajów Te odpowiednie sygnały dla pamięci (HCT138 i quad NAND).

Istotne jest, aby logika kleju została zaprojektowana w taki sposób, aby pamięć EPROM znajdowała się pod adresem 0, ponieważ po zresetowaniu wykonanie zawsze zaczyna się od 8032 pobieranie pierwszego bajtu instrukcji z tego adresu. Jest to funkcja sprzętu w 8032 i nie można jej zmienić. Zwykle jest to 3-bajtowa instrukcja LJMP, która przeskakuje na początek programu. Nazywamy to ” RESET VECTOR „. Inne wektory zajmują bajty bezpośrednio nad wektorem resetowania – dla procedury obsługi przerwań zewnętrznych i procedury obsługi przerwań czasowych.

W tamtych czasach pamięć EPROM byłaby programowana (zapisywana) przez oddzielnego programistę poza obwód, a następnie zazwyczaj podłączany do gniazdka. W tamtych czasach nie było programowania w obwodzie. Pamięć RAM i EEPROM mogą być zapisane przez mikro, ale program musiałby zostać załadowany do pamięci EPROM, zanim to było możliwe.

Komentarze

  • .: Dam +1. Czy mógłbyś szczegółowo opisać część glue logic. Wygląda na to, że LJMP przejdzie na początek programu? Ale tutaj program jest w pamięci zewnętrznej. Czy jest używany tego rodzaju instrukcja? Mam na myśli proste instrukcje są pobierane z pamięci zewnętrznej i umieszczane w IR, dekodowane i wykonywane? Gdzie jest przypadek LJMP tutaj?
  • Logika kleju zapewnia tylko, że ' jest pamięcią EPROM, która ' s wybierane, gdy adres to 0000. W powyższej konfiguracji, gdy A15 = 0 jest wybrana pamięć EPROM. LJMP to 3-bajtowa instrukcja, która przyjmuje adres w dowolnym miejscu w 16-bitowej przestrzeni pamięci 8031, ale zazwyczaj można po prostu przeskoczyć przez inne wektory, więc następne dwa bajty po LJMP zawierałyby adres w pobliżu początku EPROM. Nie ' zazwyczaj nie marnujesz adresów bezpośrednio – używasz asemblera, który śledzi je za pomocą symbolicznych etykiet.
  • ” Logika kleju ” to slangowy termin używany w odniesieniu do mniejszych funkcji logicznych, które są wymagane między procesorem a pamięcią.

Odpowiedź

Nie, nie można używać wewnętrznej pamięci RAM do przechowywania kodu. Model 8051/8032 wykorzystuje architekturę Harvardu, co oznacza, że ma całkowicie oddzielną przestrzenie pamięci na kod i dane. Instrukcje są pobierane z przestrzeni kodu, ale pamięć RAM znajduje się w przestrzeni danych.

Teraz po włączeniu EA i podłączeniu PSEN jak czy 8032 wykonuje program?

8032 pobiera instrukcje z przestrzeni kodu. Ponieważ EA jest potwierdzone, te pobrania (odczyty pamięci) pojawiają się na zewnętrznej szynie pamięci , z zaznaczonym PSEN. Gdy PSEN NIE jest potwierdzane w operacji odczytu pamięci zewnętrznej, jest to odczyt przestrzeni danych.

Co się stanie, jeśli włączę system?

8032 rozpoczyna pobieranie instrukcji z przestrzeni kodowej adresu 0.

W jaki sposób licznik programu mikrokontrolera 8032 wykonuje polecenia?

licznik programu jest po prostu odpowiedzialny za przechowywanie adresu następnej instrukcji do wykonania. Inne części procesora wykonują instrukcje.

Z jakiego adresu pamięci zewnętrznej program powinien być czytany?

Adres 0

Jeśli chcesz używać przerwań w swoim programie, są inne adresy w małej pamięci kodowej, które są dla nich zarezerwowane, więc kod, który masz wykonanie po zresetowaniu ostatecznie będzie musiało „przeskakiwać” między zarezerwowanymi adresami.

Komentarze

  • To jest odpowiedź na pierwsze pytanie. Dam mu +1. Czy mógłby Pan rozwinąć drugą część pytania? W tej części nie mogę ' znaleźć żadnej wskazówki.
  • Zobacz edycję powyżej.

Odpowiedź

8032, który jest wariantem 8052, nie ma wewnętrznej pamięci ROM do przechowywania programów. Zamiast tego do przechowywania programu należy użyć zewnętrznej pamięci ROM / EPROM / EEPROM.

Dwa porty są używane w celu uzyskania dostępu do pamięci zewnętrznej: Port 0 (linie P0.0-P0.7) emituje niski 8 bity 16-bitowego adresu 64K, a także służą jako 8-bitowa szyna danych do odczytu / zapisu po zatrzaśnięciu adresu przez pamięć zewnętrzną.

P2 (linie P2.0-P2.7 ) są używane do emitowania wysokich 8-bitów 16-bitowego adresu 64K.

Chociaż 8032 ma 256 bajtów wewnętrznej pamięci RAM, można to rozszerzyć, dodając układ RAM do zewnętrznej szyny adresowej również .

Zewnętrzna linia adresu \ $ \ mathsf {\ small \ overline {\ text {EA}}} \ $ jest utrzymywana nisko, aby wskazać, czy następuje dostęp do zewnętrznej pamięci programu, w przeciwnym razie do zewnętrznej Zakładana jest pamięć RAM.

Aby wykonać kod z pamięci zewnętrznej, adres z licznika programu jest wyprowadzany na linie danych portu 0 i portu 2; następnie podczas cyklu odczytu bajt (y) pobierany (e) z ROM podczas wczytywania do portu 0 i wykonywany przez procesor.

Tylko jedna instrukcja jest pobierana naraz.

\ $ \ mathsf {\ small \ overline {\ text {PSEN}}} \ $ to stroboskop używany podczas dostępu do pamięci programu zewnętrznego.

Komentarze

  • .: Ale w jaki sposób wykonuje program, który znajduje się w pamięci zewnętrznej? Słuchaj, nie rozumiem, jak komputer sobie radzi, gdy program znajduje się w pamięci zewnętrznej. Mam na myśli to, że w każdym cyklu m / c pobiera pewną liczbę bajtów. Następnie po pobraniu program jest wykonywany natychmiast lub cały program jest pobierany od razu >, jeśli tak jest, gdzie będzie on przechowywany?
  • .: Więc początkowo PC=0000h. Zaczyna pobierać bajty w każdym cyklu m / c, a następnie wykonuje to? Dlatego w pamięci ROM zawsze powinniśmy wypalać program z adresu 0000h, w przeciwnym razie nie moglibyśmy go poprawnie wykonać.
  • @learner. Poprawny. Zwykle następuje skok adresu do ” rzeczywistego ” początku kodu.
  • .: I da +1 Twojej odpowiedzi. Ale jeśli program jest wykonywany instrukcja po instrukcji, jak będzie zarządzana taka możliwość przekazywania dalej referencji? L1:JNZ L2 .. L2:.....
  • Instrukcja JNZ (oraz inne instrukcje Jump and Branch) ładują adres docelowy Jump do licznika programu, więc procesor pobierze następny instrukcji z tego adresu, a nie instrukcji bezpośrednio po skoku.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *