[4] SDC One = Software Defined Computer na STM32: moduły procesorowe

Wszystkie części cyklu artykułów są dostępne pod adresem.

Jak przedstawiono to już we wcześniejszych częściach artykułu, komputer SDC_One składa się z płytki bazowej NUCLEO-L476 oraz z płytki procesora. Dotychczas zrealizowano cztery płytki dla różnych mikroprocesorów – Z80CPU, 8085, W65C02 i MC68008.

Pierwsze trzy z nich – to klasyczne mikroprocesory 8-bitowe, używane w wielu komputerach domowych z lat 1980-tych. MC68008 jest wyposażoną w 8-bitową szynę zewnętrzną wersją pierwszego mikroprocesora 16-/32-bitowego, MC68000, zastosowanego m.in. w komputerach Apple McIntosh pierwszej generacji, Atari ST i Amiga 1000. Układ MC68008 był używany w komputerach Sinclair QL, wprowadzonych na rynek w 1984 roku.

 

Pod adresem są dostępne do pobrania projekty płytek drukowanych dla komputerów opisanych w artykule (projekty w Eagle).

 

Płytki procesorów łączą się z płytką Nucleo za pomocą dwóch złącz 38-stykowych, składających się na interfejs nazwany przez ST Microelectronics Morpho. Na złączach tych są dostępne niemal wszystkie linie mikrokontrolera STM32L476. Każda płytka mikroprocesora SDC_One zawiera:

  • Złącze USB miniB do współpracy z interfejsem USB mikrokontrolera STM32L476.
  • Mikroprocesor umieszczony w podstawce DIL.
  • Diodę LED RGB sterowaną przez mikrokontroler STM32L476.
  • Elementy dopasowujące poziomy sygnałów logicznych.
  • Zworę przełączania napięcia zasilania (na płytkach procesorów występujących w wersjach zasilanych napięciem 3.3 V).
  • Miejsce na pamięć Flash z interfejsem SPI oraz złącze umożliwiające alternatywnie podłączenie zamiast pamięci modułu z kartą pamięci SD – jako opcjonalne rozszerzenie pamięci masowej komputera docelowego.

Wszystkie sygnały mikroprocesora potrzebne do działania komputera są połączone z portami mikrokontrolera STM32L476. Projektując połączenia uwzględniono następujące kryteria:

  • łatwość odczytu stanu szyny adresowej i danych mikroprocesora przez mikrokontroler,
  • konieczność sterowania wejść zegarowych mikroprocesorów z wyjść timerów mikrokontrolera,
  • konieczność doprowadzenia wyjść strobujących mikroprocesora do wybranych wejść timerów mikrokontrolera w celu umożliwienia realizacji krytycznych czasowo fragmentów protokołu szyny (co zostało opisane szczegółowo w drugiej części cyklu),
  • minimalizację potrzeb stosowania układów dopasowania elektrycznego.

Zestawienie połączeń mikroprocesorów z liniami portów mikrokontrolera L476 przedstawiono w tabeli 1. W tabeli oznaczono różnymi kolorami poszczególne grupy sygnałów. W kolumnie z oznaczeniami linii portów STM32L476 kolorem czerwonym oznaczono linie nie tolerujące napięcia wejściowego powyżej 3.3 V.

Tab. 1. Połączenia sygnałów poszczególnych mikroprocesorów z portami STM32L476 na płytkach SDC_One

Dopasowanie poziomów logicznych

Większość mikroprocesorów zastosowanych w SDC_One jest zasilana napięciem 5 V. Mikrokontroler STM32L476 jest zasilany napięciem 3.3V, należy więc zadbać o właściwą współpracę obu układów tworzących komputer.

Większość linii portów mikrokontrolerów STM32L4 akceptuje napięcia wejściowe do 5 V. Z kolei większość mikroprocesorów ma poziomy wejściowe zgodne ze standardem TTL, co czyni je zgodnymi z wyjściami układów CMOS działających z zasilaniem 3.3 V.

Ponieważ niektóre linie portów L476 nie tolerują napięć powyżej 3.3 V, a niektóre wejścia poszczególnych mikroprocesorów mogą wymagać poziomów wejściowych niezgodnych ze standardem TTL (a więc np. napięcia poziomu wysokiego powyżej 3 V), na wybranych połączeniach zastosowano proste obwody dopasowujące złożone z diod Schottkky’ego i rezystorów lub przewidziano możliwość zastosowania buforów w postaci bramek logicznych. W praktyce okazało się, że dopasowanie aktywne wyjść L476 do wejść zegarowych mikroprocesorów jest zbędne, co umożliwiło rezygnację z aktywnych układów dopasowujących. Ostatecznie na płytkach zastosowano trzy rodzaje obwodów dopasowujących.

Na wszystkich płytkach procesorów linia portu PB0 mikrokontrolera jest połączona z linią adresu A0 mikroprocesora. Jest to jedyna linia portu PB nie tolerująca napięcia wejściowego powyżej 3.3 V, co implikuje konieczność ograniczenia napięcia wejściowego w stanie wysokim, w przypadku, gdy mikroprocesor jest zasilany napięciem 5 V. Na linii tej zastosowano dopasowanie w postaci szeregowej diody Schottky’ego i rezystora podciągającego, a na płytce mikroprocesora 8085, gdzie linia ta jest dwukierunkowa – w postaci rezystora szeregowego i diody tłumiącej.

Mikroprocesor Z80CPU w wersji NMOS wymaga niestandardowego napięcia wejściowego na linii sygnału zegarowego (powyżej 4.3 V). Pierwotnie założono możliwość zastosowania do translacji poziomów logicznych układu aktywnego (bramki 74LVC1G14). Pomiary przy użyciu oscyloskopu wykazały jednak, że wystarczające dopasowanie można osiągnąć ustawiając wyjście mikrokontrolera w tryb „otwarty dren” i podciągając je do napięcia zasilania mikroprocesora rezystorem 1k5. Obwód taki działa skutecznie przy częstotliwościach przebiegu zegarowego nie przekraczających 4.5 MHz.

Podobny układ dopasowujący dla sygnałów zegarowych przewidziano na płytce mikroprocesora 65C02, która była projektowana z myślą o umożliwieniu użycia w niej również układów MC6800.

Na żadnych innych liniach nie wystąpiła potrzeba użycia obwodów dopasowujących.

Schematy płytek

Schematy ideowe płytek SDC_One przedstawiono na rysunkach 1, 2, 3 i 4. Płytki z mikroprocesorami Z80CPU, 8085 i 65C02 mają wymiary mniejsze od płytki Nucleo-64 i mieszczą się w jej obrysie. Płytka mikroprocesora MC68008 jest dłuższa, ze względu na większą obudowę samego mikroprocesora (DIL48) oraz z powodu dopasowania jej do współpracy również z płytką NUCLEO-L496ZG, należącą do serii Nucleo-144. Ze względu na zwiększoną w porównaniu z mikroprocesorami 8-bitowymi liczbę sygnałów, nie jest w tym przypadku możliwe sterowanie diody RGB ani pamięci SPI z płytki Nucleo-64.

 

Rys. 1. Schemat płytki procesora Z80CPU

Rys. 2. Schemat płytki procesora 8085

 

Rys. 3. Schemat płytki procesora 65C02

 

Rys. 4. Schemat płytki procesora MC68008

 

Płytki Z80CPU, 8085 i 65C02 mogą działać z napięciem zasilania mikroprocesora 5 lub 3.3 V. Zostały one najpierw przetestowane przy napięciu 5V. Zastosowanie napięcia 3.3 V jest możliwe tylko w przypadku użycia układów mikroprocesorów wykonanych w technologii CMOS. Układy OKI MSM80C85AH oraz WDC W65C02S są specyfikowane oficjalnie na niższe napięcia pracy. Co ciekawe, również wersja CMOS Z80CPU – Z84C00, działa poprawnie przy obniżonym napięciu zasilania przy nominalnej częstotliwości zegara. Układ MC68008 występuje wyłącznie w wersji NMOS zasilanej napięciem 5 V. Na płytce MC68008 nie przewidziano więc możliwości przełączania napięcia zasilania.

Julia Kosowska

Grzegorz Mazur