6. WPROWADZENIE DO MIKROPROGRAMOWANIA

Podobne dokumenty
Układy mikroprogramowane

UKŁADY MIKROPROGRAMOWANE

UKŁADY MIKROPROGRAMOWALNE

Struktura i działanie jednostki centralnej

Organizacja typowego mikroprocesora

Instrukcja do ćwiczenia : Matryca komutacyjna

1.2 Schemat blokowy oraz opis sygnałów wejściowych i wyjściowych

Logiczny model komputera i działanie procesora. Część 1.

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

Projekt z przedmiotu Systemy akwizycji i przesyłania informacji. Temat pracy: Licznik binarny zliczający do 10.

Programowanie w językach asemblera i C

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

Ćwiczenie 31 Temat: Analogowe układy multiplekserów i demultiplekserów. Układ jednostki arytmetyczno-logicznej (ALU).

Pracownia elektryczna i elektroniczna. Elektronika cyfrowa. Ćwiczenie nr 5.

Przykładowe pytania DSP 1

2. Architektura mikrokontrolerów PIC16F8x... 13

3.2. Zegar/kalendarz z pamięcią statyczną RAM 256 x 8

Opis układów wykorzystanych w aplikacji

Ćwiczenie 01 - Strona nr 1 ĆWICZENIE 01

Architektura komputera. Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt

Architektura typu Single-Cycle

Badanie układów średniej skali integracji - ćwiczenie Cel ćwiczenia. 2. Wykaz przyrządów i elementów: 3. Przedmiot badań

Układy sekwencyjne. Podstawowe informacje o układach cyfrowych i przerzutnikach (rodzaje, sposoby wyzwalania).

Modułowy programowalny przekaźnik czasowy firmy Aniro.

1. Cel ćwiczenia. 2. Podłączenia urządzeń zewnętrznych w sterowniku VersaMax Micro

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Układy kombinacyjne. cz.2

LABORATORIUM ENERGOOSZCZĘDNEGO BUDYNKU

dokument DOK wersja 1.0

Technologie Informacyjne

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 8 (3h) Implementacja pamięci ROM w FPGA

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania

Architektura komputerów Wykład 2

OPTIMA PC v Program konfiguracyjny dla cyfrowych paneli domofonowy serii OPTIMA ELFON. Instrukcja obsługi. Rev 1

Ćw. 7: Układy sekwencyjne

Tranzystor JFET i MOSFET zas. działania

Parametryzacja przetworników analogowocyfrowych

interfejs szeregowy wyświetlaczy do systemów PLC

Kurs Podstawowy S7. Spis treści. Dzień 1

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

Ćwiczenie 27 Temat: Układy komparatorów oraz układy sumujące i odejmujące i układy sumatorów połówkowych i pełnych. Cel ćwiczenia

Projektowanie Systemów Wbudowanych

Automatyzacja i robotyzacja procesów produkcyjnych

Konfiguracja i programowanie sterownika GE Fanuc VersaMax z modelem procesu przepływów i mieszania cieczy

Modelowanie liczników w języku Verilog i ich implementacja w strukturze FPGA

Zwory na płycie z łączem szeregowym ustawienie zworek dla programowania.

Układy arytmetyczne. Joanna Ledzińska III rok EiT AGH 2011

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Elementy struktur cyfrowych. Magistrale, układy iterowane w przestrzeni i w czasie, wprowadzanie i wyprowadzanie danych.

Instrukcja do oprogramowania ENAP DEC-1

Moduł licznika położenia LP 2.

Technika mikroprocesorowa I Wykład 2

SML3 październik

Projekt zespołowy. Część1: Projekt potokowej jednostki przetwarzającej przeznaczonej do realizacji algorytmu FFT. Rok akademicki 2008/2009

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Materiały pomocnicze do ćwiczeń z podstaw techniki cyfrowej (przygotował R.Walkowiak) Dla studiów niestacjonarnych rok AK 2017/18

Magistrala systemowa (System Bus)

Projekt prostego procesora

Podstawy działania układów cyfrowych...2 Systemy liczbowe...2 Kodowanie informacji...3 Informacja cyfrowa...4 Bramki logiczne...

PROGRAMOWALNE STEROWNIKI LOGICZNE

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

1. Podstawowe wiadomości Możliwości sprzętowe Połączenia elektryczne Elementy funkcjonalne programów...

PAMIĘCI. Część 1. Przygotował: Ryszard Kijanka

1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33

PAMIĘĆ RAM. Rysunek 1. Blokowy schemat pamięci

SML3 październik 2008

Ćwiczenie 2. Siedmiosegmentowy wyświetlacz LED

Programowalne Układy Cyfrowe Laboratorium

Elementy struktur cyfrowych. Magistrale, układy iterowane w przestrzeni i w czasie, wprowadzanie i wyprowadzanie danych.

Arytmetyka liczb binarnych

Ćwiczenie Digital Works 003 Układy sekwencyjne i kombinacyjne

Elementy struktur cyfrowych. Magistrale, układy iterowane w przestrzeni i w czasie, wprowadzanie i wyprowadzanie danych.

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

Podstawy Informatyki Układ sterujący

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

Programowanie Mikrokontrolerów

Technika cyfrowa Układy arytmetyczne

Konfiguracja i programowanie sterownika GE Fanuc VersaMax z modelem procesu przepływów i mieszania cieczy. Przebieg ćwiczenia

organizacja procesora 8086

Kurs SIMATIC S7-300/400 i TIA Portal - Podstawowy. Spis treści. Dzień 1. I System SIEMENS SIMATIC S7 - wprowadzenie (wersja 1503)

LEKCJA TEMAT: Współczesne procesory.

Technika Mikroprocesorowa

Mikrooperacje. Mikrooperacje arytmetyczne

Interfejs analogowy LDN-...-AN

MIKROKONTROLERY I MIKROPROCESORY

Układy sekwencyjne. 1. Czas trwania: 6h

1. Operacje logiczne A B A OR B

SML3 październik

STEROWANIE MASZYN I URZĄDZEŃ I. Laboratorium. 4. Przekaźniki czasowe

Laboratorium 1: Wprowadzenie do środowiska programowego. oraz podstawowe operacje na rejestrach i komórkach pamięci

LEKCJA. TEMAT: Funktory logiczne.

PLC1: Programowanie sterowników logicznych SIEMENS SIMATIC S7-300/400 - kurs podstawowy

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

1. Poznanie właściwości i zasady działania rejestrów przesuwnych. 2. Poznanie właściwości i zasady działania liczników pierścieniowych.

SML3 październik

dwójkę liczącą Licznikiem Podział liczników:

AKADEMIA MORSKA KATEDRA NAWIGACJI TECHNICZEJ

Sterowanie oświetleniem poprzez TEBIS

Transkrypt:

6. WPROWADZENIE DO MIKROPROGRAMOWANIA Mikroprogramowane układy cyfrowe składają się z dwóch części: części wykonującej operacje na danych wejściowych (układ wykonawczy), części sterującej wykonywaniem tych operacji (układ sterujący). Schemat takiego układu przedstawiono na rysunku 6.1. Układ sterujący kontroluje pracę układu wykonawczego poprzez linie sterowania S i. Liniami tymi przesyłane są sygnały wybierające rodzaj operacji, która ma być wykonana przez elementy składowe układu wykonawczego oraz sygnały wskazujące, skąd mają być pobrane argumenty dla tej operacji. Układ wykonawczy informuje o swoim stanie za pomocą sygnałów przesyłanych liniami warunków W i (których część nazywana jest znacznikami). Pojawiają się tam np. sygnały mówiące o wyniku ostatniej operacji. Sygnały te wpływają na dalsze działanie jednostki sterującej. Laboratoryjny układ wykonawczy ma dwa 8-bitowe wejścia danych WE1 i WE2 i 8-bitowe wyjście danych WY. Rysunek 6.1. Schemat blokowy układu mikroprogramowanego Układ sterujący można zaprojektować na dwa różne sposoby jako automat synchroniczny lub jako układ z pamięcią. Pierwszy sposób polega na zaprojektowaniu takiego automatu synchronicznego, którego działanie (przejścia ze stanu do stanu) jest określone przez algorytm realizowany przez układ wykonawczy. Na podstawie algorytmu buduje się tabelę przejść i wyjść automatu. Jednym z rozwiązań może być automat zwany rozdzielaczem sterującym, w którym stany kodowane są w kodzie 1 z n (przerzutników jest tyle, ile jest stanów). Drugi sposób polega na utworzeniu odpowiedniego programu działającego zgodnie z wymaganym algorytmem i zapisaniu go w pamięci. Układ taki nazywany jest mikroprogramowanym układem sterującym. Kolejne rozkazy programu nazywane są mikrorozkazami lub mikroinstrukcjami. Mikroinstrukcje składają się z mikrooperacji, czyli

2 Wprowadzenie do mikroprogramowania zestawu bitów przeznaczonych do sterowania poszczególnymi blokami układu wykonawczego i sterującego. Układ mikroprogramowany wyróżnia się prostotą i przejrzystością budowy. Zastosowanie mikroprogramowanego układu sterującego pozwala na łatwą modyfikację działania jednostki sterującej przez wymianę mikroprogramu, bez konieczności modyfikowania struktury sprzętowej układu. 6.1. PRZYKŁADOWY UKŁAD MIKROPROGRAMOWANY 6.1.1. UKŁAD STERUJĄCY Głównym zadaniem układu sterującego (rysunek 6.2) jest zapewnienie wykonywania mikrorozkazów w odpowiedniej kolejności. W jego skład wchodzą: Rysunek 6.2. Schemat blokowy układu sterującego pamięć ROM o organizacji 64 słów 40 bitowych, układ adresowania (licznik mikrorozkazów LA, multiplekser wyboru warunku skoku MW i układ modyfikacji adresu skoku MAS), układ implementacji pętli (licznik pętli LP z wewnętrznym multiplekserem wyboru źródła wpisywanych do niego danych), Bloki UCK i GEN generujące sygnał taktujący CLK.

Pamięć mikroprogramu ROM Wprowadzenie do mikroprogramowania 3 Pamięć ROM ma pojemność 64 słów 40-bitowych. Bity S 39 S 26 i S 23 S 12 są przeznaczone do sterowania układem wykonawczym. Pozostałe bity odpowiadają za operacje wykonywane w układzie sterującym. Wybór komórki pamięci następuje przez podanie (z układu adresowania) adresu na wejście adres pamięci ROM. W układzie laboratoryjnym moduł pamięci ROM został zrealizowany jako pamięć RAM, której zawartość może być w czasie ćwiczenia zapisywana z komputera przez łącze szeregowe RS232. Układ adresowania Licznik adresu LA jest 6-bitowym licznikiem, który wykonuje dwie operacje: inkrementację zawartości oraz ładowanie licznika wartością z wyjścia bloku modyfikacji adresu skoku MAS. Wyjścia licznika jest połączone z wejściem adres pamięci ROM i służy do wyboru aktualnie wykonywanego mikrorozkazu. Gdy na wejściu LD licznika LA jest jedynka, to następuje inkrementacja jego zawartości, natomiast gdy na wejściu LD jest zero, to licznik zostaje załadowany wartością podaną na wejście danych licznika. Załadowanie nowej zawartości powoduje wykonanie skoku w mikroprogramie, który może być warunkowy lub bezwarunkowy. Zależy to od stanu na wyjściu multipleksera wyboru warunku skoku MW. Wartość na wyjściu tego multipleksera uzależniona jest od jego wysterowania, czyli od wartości bitów S 11 S 8 słowa mikrorozkazowego. Jeśli bity te mają wartość 0000, to na wyjściu multipleksera MW jest zero i wykonywany jest skok bezwarunkowy (ładowanie licznika LA). Jeśli bity te mają wartość 0001, to na wyjściu multipleksera wystawiana jest jedynka i jako następny wykonywany jest mikrorozkaz umieszczony pod kolejnym adresem w pamięci ROM (inkrementacja licznika LA). Jeśli bity te mają wartości od 0010 do 1111, to wartość na wyjściu multipleksera zależy od stanu na odpowiednim wejściu, czyli od wybranego warunku skoku. Na przykład, gdy bity S 11 S 8 słowa mikrorozkazu mają wartość 0010, to warunkiem jest aktualna wartość bitu RQ0. W tabeli 6.1 przedstawiono możliwości wyboru warunku skoku. Tabela 6.1. Sterowanie multiplekserem warunków MW Sterowanie S 11 S 8 Wykonywana operacja 0000 LD<=0 Ładowanie licznika adresu skok bezwarunkowy 0001 LD<=1 Inkrementacja licznika adresów 0010 LD<=RQ0 Aktualna wartość najmniej znaczącego bitu rejestru RQ

4 Wprowadzenie do mikroprogramowania Sterowanie S 11 S 8 Wykonywana operacja 0011 LD<=F P Aktualna wartość znacznika F P 0100 LD<=OVR Aktualna wartość znacznika OVR 0101 LD<=ZER Aktualna wartość znacznika ZER 0110 LD<=ZN Aktualna wartość znacznika ZN 0111 LD<=Cout Aktualna wartość znacznika Cout 1000 LD<=LP=0 Aktualna wartość znacznika ustalanego w bloku LP informująca stanem 1 wyzerowanie licznika pętli 1001 LD<=RRQ0 Poprzednia wartość najmniej znaczącego bitu rejestru RQ 1010 LD<=RF P Poprzednia wartość znacznika F P 1011 LD<=ROVR Poprzednia wartość znacznika OVR 1100 LD<=RZER Poprzednia wartość znacznika ZER 1101 LD<=RZN Poprzednia wartość znacznika ZN 1110 LD<=RCout Poprzednia wartość znacznika Cout 1111 LD<=SW3 Aktualna wartość ustalana przez przełącznik SW3 Licznik pętli LP Licznik LP służy do implementacji w mikroprogramie pętli. Jest to 3-bitowy licznik, który wykonuje jedną z czterech operacji wybraną sterowaniem S 25 S 24. Wyjście LP=0 przyjmuje wartość jeden, gdy wszystkie bity licznika mają wartość zero, w przeciwnym wypadku na wyjściu LP=0 jest zero. W tabeli 6.2 pokazano sposób sterowania licznikiem pętli. Tabela 6.2. Sterowanie licznikiem pętli LP Sterowanie S 25 S 24 Wykonywana operacja 00 LP:=WE2[2:0] Ładowanie licznika pętli 3-bitową daną z wejścia WE2 01 LP:=S[18:16] Ładowanie licznika pętli 3-bitową daną natychmiastową 10 LP:=LP-1 Zmniejszenie o jeden zawartości licznika pętli 11 LP:=LP NOP - Podtrzymanie dotychczasowej zawartości

Układ modyfikacji adresu skoku MAS Wprowadzenie do mikroprogramowania 5 Układ MAS służy do implementacji w mikroprogramie skoków do jednego z czterech mikrorozkazów, potencjalnych następników aktualnego, wybranego wartościami dwóch warunków. Para warunków wybrana sterowaniem S 7 S 6 wstawiana jest na dwa najmniej znaczące bity adresu skoku AS. W ten sposób adres bazowy (AB[5:2],0,0) wskazuje blok czterech kolejnych słów pamięci mikroprogramu, w którym zapisane są mikrorozkazy, które mogą być następnikami aktualnie wykonywanego mikrorozkazu. Adres mikrorozkazu, który będzie wykonany jako następny jest wybierany, spośród nich, przez wartości warunków wstawionych na najmniej znaczące bity adresu skoku. Dla przykładu, w przypadku sterowania S 7 S 6 równego 01 i adresu bazowego AB[5:2]=0010, gdy warunek LP=0 ma wartość jeden a warunek RQ0 jest równy zeru, to następny mikrorozkaz zostanie odczytany z pamięci ROM spod adresu AS=001010. Układ pozwala na wybór jednej z dwóch par warunków, oraz umożliwia wyzerowanie adresu skoku lub podanie na niego wartości odczytanej z pamięci mikroprogramu. W tabeli 6.3 pokazano sposób sterowania układem MAS. Tabela 6.3. Sterowanie blokiem modyfikacji adresu skoku MAS Sterowanie S 7 S 6 Wykonywana operacja 00 AS<=AB Adres skoku odczytany z pamięci mikroprogramu 01 AS<=(AB[5:2],LP=0,RQ0) Adres skoku AB5,AB4,AB3,AB2,LP=0,RQ0 10 AS<=(AB[5:2],ZER,ZN) Adres skoku AB5,AB4,AB3,AB2,ZER,ZN 11 AS<=0 Zerowy adres skoku Bloki UCK i GEN Bloki UCK i GEN służą do wytworzenia sygnału taktującego dla części wykonawczej i sterującej. Blok GEN wytwarza sygnał o okresie 1 sekunda. Sygnał ten jest źródłem sygnału taktującego CLK, gdy przełącznik SW1 jest w górnym położeniu. Ustawienie przełącznika SW1 w dolnym położeniu powoduje, że źródłem sygnału taktującego staje się przełącznik SW2. Przełączenie SW2 z dolnej pozycji na górną oznacza wygenerowanie narastającego zbocza sygnału taktującego. Zbocze narastające sygnału CLK powoduje zapisanie danych do rejestrów a także przejście do następnego mikrorozkazu.

6 Wprowadzenie do mikroprogramowania 6.1.2. UKŁAD WYKONAWCZY W skład układu wykonawczego wchodzą: blok 4xR zawierający cztery rejestry uniwersalne, rejestr pomocniczy RQ, dwa multipleksery MA i MB wyboru argumentów dla układu ALU, jednostka arytmetyczno-logiczna ALU. Schemat blokowy układu wykonawczego pokazano na rysunku 6.3. Rysunek 6.3. Schemat blokowy układu wykonawczego Blok rejestrów uniwersalnych 4xR Blok rejestrów uniwersalnych 4xR składa się z czterech 8-bitowym rejestrów. W każdym cyklu zegara można odczytać dwa z nich i dowolny z nich zapisać. Na wyjściu WA pojawia się zawartość rejestru wskazana adresem adra odczytanym z pamięci mikroprogramu (S 33 S 32), a na wyjściu WB można odczytać zawartość rejestru zaadresowanego polem adrb mikrorozkazu (S 35 S 34). Rejestr wybrany adresem adrc (S 37 S 36) zapisywany jest daną WE pobieraną z wyjścia F bloku ALU, gdy sygnał sterujący Z (pole S 38 ) jest w stanie jeden. W przeciwnym wypadku żaden z rejestrów nie zostanie w danym cyklu zegara zapisany. Zapis wskazanego rejestru synchronizowany

Wprowadzenie do mikroprogramowania 7 jest narastającym zboczem sygnału zegara CLK. W tabeli 6.4 pokazano sposób sterowania blokiem rejestrów 4xR. Sterowanie S 38 Tabela 6.4. Sterowanie blokiem rejestrów uniwersalnych 4xR Wykonywane operacje 0 1 WA<=R(adrA), WB<=R(adrB), WA<=R(adrA), WB<=R(adrB), R(adrC):= WE Odczyt danych ze wskazanych rejestrów, żaden z rejestrów nie jest zapisywany Odczyt danych ze wskazanych rejestrów, do rejestru wskazanego adresem adrc zapisywany jest stan wejścia WE (wynik operacji w ALU) Rejestr pomocniczy RQ Rejestr RQ jest 8-bitowym rejestrem przesuwającym. W tabeli 6.5 pokazano wysterowanie układu bitami S 27 S 26 słowa mikrorozkazu, umożliwiające wykonanie odpowiednich operacji. Sterowanie S 27 S 26 Wykonywane operacje Tabela 6.5. Sterowanie rejestrem RQ 00 RQ:=RQ NOP zawartość rejestru nie ulega zmianie 01 RQ:=WE1 Zapis danej z wejścia WE1 układu mikroprogramowanego 10 RQ:=(F P,RQ[7:1]) 11 RQ<=WE1 Multipleksery wyboru argumentu Przesunięcie w prawo zawartości rejestru w prawo z wprowadzeniem na lewą skrają pozycję bitu F P z ALU Przesłanie na wyjście bloku danej wejściowej WE1 bez zmiany zawartości rejestru RQ W układzie znajdują się dwa multipleksery (MA oraz MB) do wyboru argumentów A i B na wejściach układu ALU. Wejścia i wyjścia multiplekserów są 8-bitowe. Multiplekser argumentu A jest sterowany bitami S 29 i S 28, a multiplekser argumentu B przez bity S 31 i S 30. W tabelach 6.6 i 6.7 pokazano sposób wysterowania multiplekserów. Sterowanie S 29 S 28 Wykonywane operacje Tabela 6.6. Sterowanie multiplekserami MA 00 A<=0 Podanie zerowego słowa na wyjście multipleksera 01 A<=WA Wyprowadzenie na wyjście zawartości rejestru wskazanego adresem adra 10 A<=WE2 Wyprowadzenie na wyjście danej wejściowej WE2 11 A<=RQ Wyprowadzenie na wyjście zawartości rejestru RQ

Cout ZN ZER OVR 8 Wprowadzenie do mikroprogramowania Tabela 6.7. Sterowanie multiplekserami MB Sterowanie S 31 S 30 Wykonywane operacje 00 B<=0 Podanie zerowego słowa na wyjście multipleksera 01 B<=WB Wyprowadzenie na wyjście zawartości rejestru wskazanego adresem adrb 10 MB<=RQ Wyprowadzenie na wyjście zawartości rejestru RQ 11 MB<=AN Argument natychmiastowy (odczytany z pamięci ROM) Jednostka arytmetyczno-logiczna ALU Jednostka arytmetyczno-logiczna ALU ma dwa 8-bitowe wejścia A i B oraz 8-bitowe wyjście F, na którym pojawia się wynik operacji. Trzybitowe wejście sterujące (S 14 S 12) służy do wyboru operacji wykonywanej przez ALU. W zależności od wyniku operacji wykonywanej przez ALU modyfikowane są bity znaczników, wykorzystywanych w układzie sterowania do realizacji skoków warunkowych, tj. warunkowych operacji rozejścia w mikroprogramie. W tabeli 6.8. pokazano operacje wykonywane przez układ ALU. Tabela 6.8. Sterowanie ALU Sterowanie S 31 S 29 Wykonywane operacje Znaczniki 1 F P 1) 000 F<=A + B + C0 001 F<=A B C0 Dodawanie słów binarnych A i B z uwzględnieniem C0 Odejmowanie słów binarnych od A słowa B z uwzględnieniem C0 x x x x 0 x x x x 0 010 F<=A and B Iloczyn logiczny słów binarnych 0 x x 0 0 011 F<=A or B Suma logiczna słów binarnych 0 x x 0 0 100 F<=A xor B Alternatywa rozłączna słów binarnych 0 x x 0 0 101 F<=not A Inwersja słowa binarnego A 0 x x 0 0 110 F<=(C0,A[7:1]) Przesunięcie w prawo słowa A 0 x x 0 x 111 F<= (Cout,(A+B)[7:1]) Przesunięcie w prawo sumy słów binarnych A i B x w tabeli oznacza, że znacznik jest ustawiany przez daną operację 0 x x 0 x

Znaczniki Wprowadzenie do mikroprogramowania 9 Jednostka arytmetyczno-logiczna ALU podczas wykonywania operacji ustala wartości następujących znaczników: Cout wartość przeniesienia wyjściowego (pożyczki) bloku ALU podczas operacji dodawania/odejmowania, ZN ustawiany na 1, gdy wartość wyniku ALU jest liczbą ujemną w kodzie U2, ZER ustawiony na wartość 1, gdy wynik operacji ALU jest równy zeru i ustawiany na 0 w przeciwnym przypadku, OVR sygnał nadmiaru bloku z bloku ALU, wskazujący stanem 1 przekroczenie zakresu podczas operacji dodawania/odejmowania liczb w kodzie U2, F P najmniej znaczący bit wyniku operacji w bloku ALU (usuwany z wyniku podczas przesunięcia w prawo). Na podstawie wartości znaczników ZER i ZN możliwe jest porównanie argumentów A i B. Jeśli iloczyn logiczny (~ ZER and ZN) jest równy jeden, to argument A jest mniejszy od B. Jeśli natomiast (~ ZER and ~ZN) = 1, to A jest większe od B. 6.1.3. FORMAT MIKROROZKAZU Mikrorozkazy to słowa 40-bitowe. Format mikrorozkazu przedstawiono w tabeli 6.9. Tabela 6.9. Znaczenie bitów mikrorozkazu Bity Pole Znaczenie S 5 S 0 AB Adres bazowy/skoku w zależności od sterowania blokiem MAS S 7 S 6 MASs Sterowanie blokiem modyfikacji adresu skoku MAS S 11 S 08 MWs Sterowanie multiplekserem warunków MW S 14 S 12 ALUs Sterowanie jednostką arytmetyczno-logiczną ALU S 15 C0 Przeniesienie wejściowe C0 dla bloku arytmetyczno-logicznego ALU S 23 S 16 AN Argument natychmiastowy S 25 S 24 LPs Sterowanie licznikiem pętli LP S 27 S 26 RQs Sterowanie rejestrem pomocniczym RQ S 29 S 28 MAs Sterowanie multiplekserem MA argumentu A dla bloku ALU S 31 S 30 MBs Sterowanie multiplekserem MB argumentu B dla bloku ALU S 33 S 32 S 35 S 34 adra adrb Adres rejestru uniwersalnego, którego zawartość podawana jest na wyjście WA bloku 4xR (od 0 do 3) Adres rejestru uniwersalnego, którego zawartość podawana jest na wyjście WB bloku 4xR (od 0 do 3) S 37 S 36 adrb Adres rejestru uniwersalnego zapisywanego daną WE (od 0 do 3) S 38 Z Sterowanie zapisem rejestru wskazanego adresem arc S 39 L Sterowanie diodą LED_A1 na module FPGA (1 dioda świeci)

10 Wprowadzenie do mikroprogramowania Na rysunku 6.4 przedstawiono nagłówek formularza ułatwiającego kompletowanie mikrorozkazu w kodzie binarnym lub heksadecymalnym. L Z adrc adrb adra MBs MAs RQs LPs Argument natychmiastowy... S 39 S 38 S 37 S 36 S 35 S 34 S 33 S 32 S 31 S 30 S 29 S 28 S 27 S 26 S 25 S 24 S 23 S 22 S 21 S 20...Argument C0 ALUs MWs MASs Adres bazowy natychmiastowy S 19 S 18 S 17 S 16 S 15 S 14 S 13 S 12 S 11 S 10 S 9 S 8 S 7 S 6 S 5 S 4 S 3 S 2 S 1 S 0 Rysunek 6.4. Słowo mikrorozkazu. L Z adrc adrb adra MBs MAs RQs LPs Argument natychmiastowy... S 39 S 38 S 37 S 36 S 35 S 34 S 33 S 32 S 31 S 30 S 29 S 28 S 27 S 26 S 25 S 24 S 23 S 22 S 21 S 20 0 1 0 1 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0...Argument natychmiastowy C0 ALUs MWs MASs Adres bazowy S 19 S 18 S 17 S 16 S 15 S 14 S 13 S 12 S 11 S 10 S 9 S 8 S 7 S 6 S 5 S 4 S 3 S 2 S 1 S 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 Rysunek 6.5. Przykładowy mikroprogram odejmowania Na rysunku 6.5 przedstawiono przykładowy mikroprogram odejmowania dwóch liczb w naturalnym kodzie binarnym. Ten sam mikroprogram, zapisany w pliku tekstowym używanym do zaprogramowania pamięci (pliki z rozszerzeniem.mif) będzie miał następującą postać: bin 0: 0 1 01 00 00 00 10 01 11 00000000 0 000 0001 00 000000 1: 0 1 00 00 00 10 00 00 11 00000000 0 000 0001 00 000000 2: 0 1 10 01 00 01 01 00 11 00000000 0 001 0001 00 000000 3: 1 0 00 10 00 00 00 00 11 00000000 0 000 0000 00 000011 Mikroprogram ten jest dostępny w katalogu RS pod nazwą MIKRO.mif. Po jego skopiowaniu na dysk użytkownika będzie stanowił bazę do tworzenia własnych mikroprogramów realizujących funkcje wskazane zadaniem do zrealizowania podczas ćwiczenia laboratoryjnego.

6.2. ZESTAW LABORATORYJNY Wprowadzenie do mikroprogramowania 11 Zestaw laboratoryjny przedstawiony na rysunku 6.6, składa się z sześciu modułów systemu SML3: 1. Modułu zasilacza PS1. 2. Modułu przełączników szesnastkowych IN_4xHEX. 3. Modułu FPDL EP1K30TC144, (FPGA). 4. Modułu wyświetlacza 7-segmentowego 7SEG2. 5. Modułu wyświetlacza LCD 182 (wersja z interfejsem 8-bitowym). 6. Modułu łącza szeregowego EIA232_4. Rysunek 6.6. Widok zestawu laboratoryjnego Połączenia między modułami systemu SML3 przedstawiono w tabeli 6.10. Tabela 6.10. złączy modułu SML3 z pakietem FPGA Połączenie taśmą (moduł.złącze moduł.złącze) PS1.SV1 IN_4xHEX.PWR Zasilanie układu IN_4xHEX.OUTB FPGA.SV7 IN_4xHEX.OUTA FPGA.SV6 FPGA.SV1 7SEG2 FPGA.SV3 LCD.D8 FPGA.SV4 LCD.CTRL FPGA.SV5 EIA232_4.SV1 Argument B Argument A Wyświetlenie wyniku (zawartość rejestru R(adrB)) Dane dla LCD Sterowanie LCD Ładowanie wartości pamięci RAM

12 Wprowadzenie do mikroprogramowania Modułu FPGA Moduł z układem FPGA, pokazany na rysunku 6.7, zawiera: układ FPGA EP1K30, programator ByteBlasterMV ze złączem portu równoległego, generator kwarcowy 20 MHz, gniazdo BNC, 9 gniazd w standardzie systemu SML3 (SV1- SV9), 16 diod LED, 4 przyciski (BT1-BT4), 3 przełączniki (SW1-SW3). Rysunek 6.7. Pakiet z układem FPGA Zwory (dostępne na pakiecie FPGA) powinny mieć następujące ustawienie: OSC zwarte z CLK1 (ustawione w pozycji dolnej), BNC zwarte z CLK2 (ustawione w pozycji górnej), V osc zwarte z +5 V (ustawione w pozycji prawej), zwora 2.5 V zwarta (jeśli nie jest zwarta, należy obowiązkowo zgłosić to prowadzącemu ćwiczenie). Przełączniki (na pakiecie FPGA) mają następujące znaczenie: SW1 praca z zegarem 1Hz (góra) / praca krokowa (dół), SW2 krok pracy krokowej (przełączenie dół/góra/dół) SW3 warunek zewnętrzny, podawany na multiplekser warunku MW, BT1 zerowanie układu, sygnał RES zerujący licznik adresowy LA.

Wprowadzenie do mikroprogramowania 13 Diody LED Diody LED umieszczone na module FPGA wyświetlają stan 14 warunków oraz aktualny stan sygnału zegara CLK (dioda B1), a także wartość bitu S 39 słowa mikrorozkazowego (pole L). Górny wiersz diod wyświetla stan warunków ustalonych w aktualnym cyklu zegara, tzn. w aktualnie wykonywanym mikrorozkazie. W dolny wierszu sześć prawych diod pokazuje stan tych samych warunków z poprzedniego cyklu zegara. Warunki te pobierane są z rejestru znaczników w układzie sterującym. Na rysunku 6.8 pokazano znaczenie diod LED. Moduł wyświetlacza LCD Rysunek 6.8. Wyświetlacz LED Dwuwierszowy wyświetlacz LCD 2 16 (rysunek 6.9) wraz ze sterownikiem ułatwia śledzenie pracy układu mikroprogramowanego. Dzięki niemu prezentowany jest stan układu w chwili bieżącej. W połączeniu z możliwością pracy krokowej pozwala to na dokładną obserwację działania układu. Jest to szczególnie cenne, gdy układ nie działa w zamierzony sposób. Rysunek 6.9. Wyświetlacz LCD Wyświetlacz LCD prezentuje stan układu w bieżącym cyklu zegarowym. Na wyświetlaczu pokazywane są następujące wielkości (wskazane także na rysunku): R0 R1 R2 aktualna zawartość rejestru R0 (2 znaki szesnastkowe), aktualna zawartość rejestru R1 (2 znaki szesnastkowe), aktualna zawartość rejestru R2 (2 znaki szesnastkowe),

14 Wprowadzenie do mikroprogramowania R3 RQ LP LA aktualna zawartość rejestru R3 (2 znaki szesnastkowe), aktualna zawartość rejestru RQ (2 znaki szesnastkowe), aktualna zawartość licznika pętli LP (1 znak szesnastkowy), adres, wartość wyjścia licznika adresowania LA (2 znaki szesnastkowe), AS adres skoku, wyjście z bloku MAS (2 znaki szesnastkowe) lub znaki +1 oznaczające spełnienie warunku i zwiększenie o 1 zawartości licznika LA, MIKRO aktualna zawartość słowa mikrorozkazowego S 39 S 0 (10 znaków szesnastkowych. 6.3. PRZYKŁAD PROSTEGO MIKROPROGRAMU Polecenie Napisać mikroprogram dla układu sterującego zadanym układem wykonawczym, aby zrealizować operację warunkowego dodawania. W zależności od stanu przełącznika SW3 należy n-krotnie dodać albo wartość z wejścia WE1, albo wartość zapisaną w programie. Rozwiązanie Mikroprogram należy zacząć od wprowadzenia argumentów. Zakłada się, że wartość z wejścia WE1 zostanie zapisana do rejestru RQ. Liczba dodawań będzie zapisana w rejestrze LP. Sieć działań mikroprogramu przedstawiono na rysunku 6.10. Rysunek 6.10. Sieć działań projektowanego mikroprogramu

Wprowadzenie do mikroprogramowania 15 Mikrorozkazy można ułożyć w następującej kolejności: M0. Mikrorozkaz ten ma wykonać trzy mikrooperacje: RQ:=WE1, LP:=5 i R3:=0 oraz przejście do kolejnego mikrorozkazu M1. M1. W tym mikrorozkazie sprawdzany jest stan przełącznika SW3 i w zależności od jego położenia wykonywane jest przejście do mikrorozkazu M2, gdy SW3=1, albo skok do M3, gdy SW3= 0. M2. Trzeci mikrorozkaz wykonuje operację R3:=R3+RQ. Po jej wykonaniu wykonuje się mikrorozkaz M4. M3. Czwarty mikrorozkaz realizuje operację R3:=R3+AN i przenosi sterowanie do mikrorozkazu M4. M4. Piąty mikrorozkaz ma sprawdzać, czy liczba obiegów pętli nie przekroczyła n i w zależności od wyniku powrócić do mikrorozkazu M1 (liczba pętli < n) albo zakończyć wykonywanie pętli (liczba pętli >= n) i przejść do mikrorozkazu M5. M5. Szósty mikrorozkaz ma zatrzymać działanie mikroprogramu. Na tej podstawie możemy napisać mikroprogram. Pogrubioną czcionką zaznaczono istotne fragmenty poszczególnych mikrorozkazów. L Z ac ab aa MB MA RQ LP AN Cin ALU MW MAS AB 0: 0 1 11 00 00 00 00 01 00 00000101 0 000 0001 00 000000 1: 0 0 00 00 00 00 00 00 11 00000000 0 000 1111 00 000011 2: 0 1 11 00 11 10 01 00 11 00000000 0 000 0000 00 000100 3: 0 1 11 00 11 11 01 00 11 00000011 0 000 0001 00 000000 4: 0 0 00 00 00 00 00 00 10 00000000 0 000 1000 00 000001 5: 1 0 00 11 00 00 00 00 11 00000000 0 000 0000 00 000101 Mikroprogram ten jest dostępny w katalogu RS pod nazwą MIKRO_1.mif. ZADANIA 1. Napisać mikroprogram obliczający sumę WE2 + WE1 w kodzie NKB. 2. Napisać mikroprogram obliczający wartość średnią liczb z WE2 i WE1. 3. Napisać mikroprogram obliczający sumę liczb z przeciwnymi znakami w kodzie U2. Na wejście WE2 podawana jest liczba ujemna w kodzie U2 a na wejście WE1 liczba dodatnia. 4. Napisać mikroprogram obliczający sumę liczb z przeciwnymi znakami w kodzie U1. Na wejście WE2 podawana jest liczba ujemna w kodzie U1 a na wejście WE1 liczba dodatnia. 5. Napisać mikroprogram obliczający sumę liczb z przeciwnymi znakami w kodzie ZM. Na wejście WE2 podawana jest liczba ujemna w kodzie ZM a na wejście WE1 liczba dodatnia.

16 Wprowadzenie do mikroprogramowania 6. Napisać mikroprogram obliczający wartość sumy liczb z WE2 i dowolnego argumentu natychmiastowego. 7. Napisać mikroprogram obliczający wartość 4 liczba z WE2 i wyświetlający wartość argumentu i wynik, w zależności od położenia przełącznika SW3. 8. Napisać mikroprogram obliczający iloczyn liczb w kodzie NKB podanych na wejścia WE2 i WE1. 9. Napisać mikroprogram obliczający iloczyn liczb w kodzie U2 podanych na wejścia WE2 i WE1. 10. Napisać mikroprogram obliczający iloczyn liczb w kodzie U1 podanych na wejścia WE2 i WE1. 11. Napisać mikroprogram obliczający iloczyn liczb w kodzie ZM podanych na wejścia WE2 i WE1. 12. Napisać mikroprogram obliczający kolejne wyrazy ciągu arytmetycznego (pierwszy wyraz w WE2 a skok w WE1). Kolejny wyraz ciągu powinien być pokazany na wyświetlaczu siedmiosegmentowym LED po każdej zmianie położenia przełącznika SW3. 13. Napisać program obliczający liczbę jedynek w słowie zadanym z WE1. 14. Napisać mikroprogram obliczający wartość 2 WE2[2:0]. 15. Napisać mikroprogram wczytujący trzy słowa z wejścia WE2 do rejestrów R0, R1 i R2. Moment czytania danej należy uzależnić od zmiany sygnału SW3. Następnie mikroprogram powinien uporządkować wczytane wartości od najmniejszej w rejestrze R0 do największej w rejestrze R2 i zatrzymać się.

DODATEK B PROGRAM MAXPLUS II PROGRAMOWANIE UKŁADU 1. Sprawdzić konfigurację zestawu laboratoryjnego opisanego w rozdziale 6.2 opisu ćwiczenia i włączyć zasilanie układu. 2. Skopiować zawartość katalogu wzorcowego do katalogu roboczego (wskazane przez prowadzącego zajęcia). 3. Zaprogramować układ FPGA, postępując następująco: 3.1. Uruchomić środowisko MaxPlusII. 3.2. Wybrać z menu MaxPlusII polecenia Programmer. 3.3. W oknie programatora nacisnąć przycisk ekranowy Configure. Właściwe zaprogramowanie powoduje: wyzerowanie wyświetlacza siedmiosegmentowego, wyświetlenie komunikatu polecającego wprowadzenie danych do pamięci mikroprogramu (postać komunikatu pokazano w tabeli B.1). Nieudane programowanie może oznaczać, że: nie włączono zasilania urządzenia (należy je włączyć), nastąpił brak łączności urządzenia z komputerem (należy sprawdzić połączenie urządzenia z portem LPT2 komputera i w przypadku zauważonych uchybień zgłosić problem prowadzącemu zajęcia), pominięto lub niewłaściwie wykonano któryś z kroków konfiguracji (należy powtórzyć konfigurację). ŁADOWANIE MIKROPROGRAMU DO UKŁADU FPGA 1. Przygotować lub zmodyfikować plik.mif znajdujący się w podkatalogu RS i zapisać pod własną nazwą (z numerem odpowiedniego zadania). 2. Otworzyć wiersz poleceń systemu Windows, przejść do katalogu zawierającego program rs.exe i zmodyfikowany plik nazwa.mif, a następnie przesłać mikroprogram poleceniem: rs nazwa.mif

DODATEK B KOMUNIKATY WYŚWIETLANE NA MODULE LCD Podczas normalnej pracy układu zawartość wyświetlacza LCD ma postać pokazaną na rysunku 6.9. Pozostałe komunikaty, ich znaczenie i sposób postępowania przedstawiono w tabeli B.1 Tabela B.1. Znaczenie komunikatów wyświetlanych na module LCD Zawartość wyświetlacza Znaczenie komunikatu Komunikat przypominający o konieczności wysłania za pomocą programu rs danych do pamięci mikroprogramu. Komunikat potwierdzający wczytanie danych do pamięci mikroprogramu. Wciśnięcie przycisku RES (BT1) wprowadzi układ w stan normalnej pracy. Przedtem należało ustawić przełączki SW1 i SW2 w stan 0. Komunikat o ostatnio wczytanym bajcie danych. Dwie pierwsze cyfry pokazują adres pamięci, trzecia cyfra to numer bajtu a ciąg 10 cyfr szesnastkowych przedstawia słowo mikrorozkazowe. Po 5 sekundach komunikat ten zostanie zastąpiony poniższym. Komunikat po błędnym wczytaniu danych do pamięci mikroprogramu. Konieczna ponowna transmisja za pomocą programu rs.