|
|
|
| SPRZĘT | |
|
Dziś zajmiemy się urządzeniem usprawniającym pracę przy uruchamianiu mikroprocesorów. Jak mi wiadomo, w sprzedaży, w wersji dla Amigi, nie ma symulatorów epromu. Najwyższy czas zapełnić tę lukę. Opiszę budowę i zasadę działania tego jakże przydatnego urządzenia dla osób programujących epromy. Ciągłe programowanie i kasowanie pamięci może doprowadzić do rozpaczy, nawet najbardziej wytrwałych. Symulator może ułatwić życie, jest takim samym urządzeniem w pracowni eletronika, jak stetoskop w gabinecie lekarza. Symulator jak nazwa wskazuje, zastępuje nam pamięci ROM, EPROM w procesie uruchamiania urządzeń je wykorzystujących. Są to głównie systemy mikroprocesorowe, generatory znaków. Urządzenie może symulować pamięci do 64KB, zarówno w wersji MOS jak i C-MOS. Jak widać Amiga, może być używana do poważnej pracy (co na to niebiescy ?). No, ale nie marnujmy cennego miejsca, przejdźmy do konkretów.
CHARAKTERYSTYKA SYMULATORA.
1. Praca z każdą Amigą (OS2.04+) dzięki wykorzystaniu portu równoległego.
2. Szybkość transferu z komputera 4 KB/s.
3. Program transmisji danych napisany w assemblerze.
4. Pełna kontrola błędow programowych.
5. Praca programu w multitaskingu.
6. Wbudowany port Arexx'a.
7. Zabezpieczenia od strony złącza emulacyjnego buforami 74HCT245.
8. Wykonanie symulatora w technologii C-MOS.
9. Zasilanie z uruchamianego systemu, podtrzymanie pamięci z komputera.
SCHEMAT.
BUDOWA I ZASADA DZIAŁANIA.
Symulator podłączamy do portu PARALLEL w Amidze. Zasilanie urządzenia pochodzi z uruchamianego systemu. Z komputera jest brane napięcie do podtrzymania zawartości RAM. Symulator z uruchamianym urządzeniem łączymy 28-żyłowa taśma zakończona sonda emulacyjna. Dodatkowo możemy podłączyć przewód resetujący uruchamiane urządzenie. Główną częścią symulatora są pamięci o pojemności 32KB. Jako, że urządzenie przewidziano do uruchamiania procesorów 8-bitowych, jest to przeważnie maksymalna wielkość pamięci eprom/rom. Niektórych Czytelników zdziwi fakt, że połączenia układu US11 z US6,7,8 od strony pamięci RAM nie są oznaczone. Bynajmniej nie jest to błąd w druku. Po prostu wyprowadzenia te są połączone z układami US2,3,4,5 uwidocznionymi w lewej części schematu. Taki sposób przedstawiania niektórych połączeń przyjął się w schematach bardziej skomplikowanych urządzeń np.: mikroprocesorowych. Nie muszę uświadamiać o ile schemat jest mniejszy i czytelniejszy. Zależnie od stanu linii BUSY uaktywnione są rejestry US2, US3 (stan niski BUSY) lub bramy US6, US7 (stan wysoki BUSY). Przyjmijmy, że BUSY znajduje się w stanie niskim. Na wyjściu bramki B1 pojawi się stan wysoki, przez co wyjścia buforów US6, US7 znajdują się w stanie trzecim, natomiast wyjścia rejestrów US2, US3 są aktywne. Liniami POUT i SEL przesyłamy do rejestrów adres wpisywanej komórki pamięci. Następnie na port wystawiamy daną. Powoduje to automatyczne przejście, na chwilę linii STB w stan niski, która spowoduje za pośrednictwem B2 i B3 pojawienie się impulsu na linii WR pamięci. Dzięki bramce B2 układ US5 znajduje się w stanie aktywnym. Następstwem tego jest wpisanie danej do RAM. Następnie wysyłamy do rejestrów kolejny adres (przeważnie o jeden większy), wysyłamy daną na port, itd. Gdy wpiszemy wszystkie dane, zmieniamy stan linii BUSY na wysoki. Spowoduje to przejście rejestrów w stan trzeci, natomiast bufory US6, US7 zostaną uaktywnione. Brama US5 zostanie ustawiona w stan trzeci. Bramka B4 nie dopuści do wpisów do pamięci RAM (impulsy z STB nie bedą przepuszczane). Adres generowany przez mikroprocesor, z uruchamianego systemu, zostanie przeniesiony na wejście adresowe pamięci RAM. Bufory poza możliwością "odcięcia" linii adresowych od procesora, likwidują zakłócenia mogące pojawić się w długim kablu sondy emulacyjnej. Dzieje się to za sprawą bramek Schmitta wbudowanych w układ. Ustawienie lini CE i OE w stan niski, za pośrednictwem bramek B9 i B10 uaktywni wyjścia pamięci RAM (linia OE) oraz bufora US8. Po czasie określonym w katalogach jako "czas dostępu", na wyjściach danych pamięci pojawi się dana. Inne kombinacje OE i CE powodują przejście US8 w stan trzeci. Dzięki temu symulator zachowuje się jak prawdziwa pamięć eprom. Bramki B2, B11 i B12 sterują diodami LED. Odczyt pamięci przez mikroprocesor powoduje zaświecenie diody "Read". Ze względu na to, że są to krótkie impulsy, zastosowano kondensator C3, który powoduje przedłużenie świecenia LED. Dzięki temu obserwujemy ciągłe świecenia pełną mocą, a nie słabe żarzenie. "Write" świeci podczas wysyłania danych przez port. Kondensator C2 zastosowano z tych samych względów co poprzednio. Dioda "Load" świeci, gdy linia BUSY znajduje się w stanie niskim, a więc w czasie gdy jest możliwy zapis danych do RAM. Tranzystory T1 i T2 generują sygnał "Reset" do uruchamianego systemu. Dostępne jest wyjście z aktywnym stanem niskim lub wysokim. Diody D6, D7 oddzielają źródła zasilania od siebie. Ze względu na konieczność zapewnienia jak najmniejszego spadku napięcia, zastosowano diody Schottkiego.
MONTAŻ I URUCHOMIENIE.
W pierwszej kolejności montujemy wszyskie podstawki i elementy bierne. Następnie zaciskamy złącza i sondę symulacyjną na taśmie 28-żyłowej. Przewód ten zastosowano, aby istniała możliwość symulowania pamięci 2716 oraz innych mniejszych, czy też nietypowych. Typ symulowanej pamięci zależy od zastosowanego kabla. Przy kablu zaproponowanym w tym rozwiązaniu istnieje możliwość symulacji pamięci 2764, 27128, 27256, 27512 w typowych układach aplikacyjnych. Po doprowadzeniu zasilania, bez zamontowanych układów sprawdzamy zasilanie scalaków. Następnie montujemy US1...US5 i US9,10,11. Uruchamiamy transfer do symulatora. Podczas tej operacji powinny występować impulsy dodatnie na linii SEL(12), ujemne na STB (1), BUSY (11) powinna znaleźć się w stanie niskim, natomiast na POUT (13) ciąg impulsów prostokątnych. Ciąg ten, opóźniony o 16 taktów występuje także na nóżce 11 US2. Niski stan na BUSY (11) powoduje pojawienie się wysokiego na nóżkach 1 US2, US3, nóżkach 19 US6, US7. Montujemy pamięci US10 i US11. Wymuszenie niskiego stanu na pinach 8, 9 układu US9 powoduje niski stan na nóżkach 22 US10 i US11 oraz 19 US8. Dane z pamięci są transmitowane na wyjścia US8. Każda inna kombinacja na nóżkach 8 i 9 US9 powoduje przejście bramy US8 w stan trzeci. Umieszczamy w podstawkach pozostałe układy. Ustawiamy BUSY (11) w stan wysoki, informacja z wejść adresowych symulowanej pamięci powinna pojawić się na wejściach pamięci.
PROGRAM.
Program jest napisany w AmigaE, procedury transmisji danych w asemblerze. Program rozpoznaje pliki binarne i IntelHex. Wbudowany skrypt Arexx'a umożliwia sterowanie symulatorem z zewnętrznych programów. Do pakietu oprogramowania dołączyłem kompilaty:
6502, 6805, 6809, 6811, 8048, 8051, 8096, Z8, Z80
oraz skrypty Arexx'a ułatwiające kompilacje dla 6502, 8051 (z includami) i Z80. Skrypty te po kompilacji wysyłają dane do symulatora eprom i generują sygnał reset dla uruchamianego systemu. Jako bonus zamieściłem skrypt wysyłający dane do komputerka edukacyjnego AVT-2250. Szczegółowe informacje o sposobie instalacji pakietu kompilatorów znajdziecie w pliku Compiler.DokPL.
UWAGI KOŃCOWE.
Jeśli uruchamiany mikroprocesor nie wykorzystuje całej pamięci, to nieużywane linie należy połączyć z masą lub szyną zasilania. Unikniemy w ten sposób oscylacji na niewykorzystanych liniach adresowych. Należy wtedy jednak pamiętać o wpisaniu danych pod odpowiedni adres, np. łącząc linie A15 z zasilaniem i wpisując dane od adresu $8000 będą one widziane przez mikroprocesor od adresu $0000. Jest to dość istotne, ponieważ niejednokrotnie traciłem czas szukając złych połączeń, a po prostu wpisałem nieodpowiedni adres. Program przy emulowaniu pamięci mniejszych niż 27512 wpisuje dane we wszystkie możliwe bloki.
Po ustawieniu typu pamięci 27128 i wysłaniu danej z ram C64 pod adres $0000 zostanie ona zapisana pod adresami:
$0000
$4000
$8000
$6000
Dzięki temu nie trzeba sobie zawracać głowy adresami. Jeśli wystarczy nam 32KB symulowanej pamięci, możemy nie montować układu RAM US10. Jumper JP1 powinien zwierać pin 20 US11 z masą.
Symulator różni się od prawdziwej pamięci eprom kilkoma cechami :
1. Większą obciążalność wyjść symulatora, dzięki buforom 74HCT245, od rzeczywistej eprom.
2. Krótszy czas dostępu do pamięci symulatora (100ns) w porównaniu z eprom (200ns).
3. Dużą obciążalność dynamiczną, spowodowaną długimi przewodami połączeniowymi.
4. Większy pobór prądu przez symulator w porównaniu do eprom.
W/w cechy mogą spowodować, że urządzenie będzie działać prawidłowo z symulatorem, przestanie po zainstalowaniu eprom. Pomimo tych uwag w dotychczasowej pracy nie spotkałem się z problemami od strony symulatora. Został sprawdzony w wielu systemach opartych na procesorach Z80, jak i szybkim 6502.
Symulator podłączamy do komputera przy wyłączonym zasilaniu komputera i symulatora. Sondę emulacyjną można umieszczać w uruchamianym systemie tylko przy wyłączonym zasilaniu uruchamianego urządzenia.
Omawiane oprogramowanie możesz pobrać stąd (23kB).
Autor:
Data realizacji:
Data publikacji:
Data modyfikacji:
Pierwsza publikacja:
|
|
Sławomir Skrzyński
-
8.7.2003
-
64NET
|
|
Instrukcja używania systemu komentarzy
- W polu "Podpisz się" umieszczasz swoje Imię, Nazwisko albo Pseudonim używając znaków alfanumerycznych: A-Z, 0-9 oraz znaków specjalnych, np.: !^<>" ' itp.
Tagi HTML są nieaktywne.
- W polu "Wpisz treść" umieszczasz komentarz używając znaków alfanumerycznych: A-Z, 0-9 oraz znaków specjalnych, np.: !^<>" ' itp. Klawisz ENTER tworzy nowy akapit.
Tagi HTML są aktywne. Możesz:
Możliwość:
|
Komenda:
|
Przykład:
|
a. Pogrubić tekst: |
<B></B> |
Pogrubiony |
b. Pochylić tekst: |
<I></I> |
Pochylony |
c. Podkreślić tekst: |
<U></U> |
Podkreślony |
d. Stworzyć indeks górny: |
<SUP></SUP> |
Indeks górny |
e. Stworzyć indeks dolny: |
<SUB></SUB> |
Indeks dolny |
f. Użyć czcionki maszynowej: |
<TT></TT> |
Czcionka maszynowa |
Adresy URL wpisujemy w postaci http://nazwastrony.pl, ftp://nazwastrony.pl.
Adresy email wpisujemy w postaci nazwa@nazwa.pl.
Adresy Gadu-Gadu wpisujemy w postaci gg:1234567 (bez spacji).
Proszę pamiętać o domykaniu otwartych tagów.
Przed naciśnięciem przycisku Komentuj, zaznacz checkboks przy jego prawym boku.
|
|
|