Algorytm mnożenia sekwencyjnego (wariant 1)

Podobne dokumenty
Mikrooperacje. Mikrooperacje arytmetyczne

Podział sumatorów. Równoległe: Szeregowe (układy sekwencyjne) Z przeniesieniem szeregowym Z przeniesieniem równoległym. Zwykłe Akumulujące

Architektura komputerów. Asembler procesorów rodziny x86

1. Operacje logiczne A B A OR B

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Architektura systemów komputerowych Laboratorium 8 Symulator SMS32 Instrukcje skoku i pętle

Plan wykładu. Architektura systemów komputerowych. MnoŜenie realizacja sprzętowa (wersja 1) Układy mnoŝące liczby całkowite.

Architektura systemów komputerowych. Poziom układów logicznych. Układy mnoŝące i dzielące

START: ; start programu od adresu 0100H ; zerowanie komórek od 01H do 07FH ( 1 dec dec)

Lista instrukcji procesora 8051 część 2 Skoki i wywołania podprogramów, operacje na stosie, operacje bitowe

Technika mikroprocesorowa I Wykład 2

Modelowanie układów sekwencyjnych w LabView - ćwiczenie 8

UKŁADY MIKROPROGRAMOWANE

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

Programowanie Niskopoziomowe

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Podstawy Informatyki

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów

Układy mikroprogramowane

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

Architektura Systemów Komputerowych, Wydział Informatyki, ZUT

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

Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach

Struktura i działanie jednostki centralnej

ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.

CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki

Podstawy programowania w języku C i C++

Wykład z Technologii Informacyjnych. Piotr Mika

CoDeSys 3 programowanie w języku drabinkowym LD

Magistrala systemowa (System Bus)

CoDeSys 3 programowanie w języku FBD

Lista instrukcji mikroprocesora Programowanie w assemblerze

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

Projekt prostego procesora

A Machine Architecture that is Really Intuitive and Easy. Dane: notacja dwójkowa, zapis w kodzie dopełnieniowym

Dodawanie liczb binarnych

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

Szybkie układy mnożące

B.B. 2. Sumowanie rozpoczynamy od ostatniej kolumny. Sumujemy cyfry w kolumnie zgodnie z podaną tabelką zapisując wynik pod kreską:

Szybkie układy mnożące

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

Architektura systemów komputerowych. Arytmetyka maszyn cyfrowych

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

Przykładowe pytania DSP 1

Elementy oprogramowania sterowników. Instrukcje podstawowe, funkcje logiczne, układy czasowe i liczenia, znaczniki

Operacje arytmetyczne w systemie dwójkowym

Literatura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki.

Sterowniki programowalne

Programowanie mikrokontrolera 8051

Liczniki, rejestry lab. 09 Mikrokontrolery 8051 cz. 1

Operatory AND, OR, NOT, XOR Opracował: Andrzej Nowak Bibliografia:

Szkoła programisty PLC : sterowniki przemysłowe / Gilewski Tomasz. Gliwice, cop Spis treści

AHDL - Język opisu projektu. Podstawowe struktury języka. Komentarz rozpoczyna znak i kończy znak %. SUBDESIGN

Operacje arytmetyczne

Opis układów wykorzystanych w aplikacji

Plan wykładu. Architektura systemów komputerowych. Cezary Bolek

Programowanie niskopoziomowe

Sortowanie topologiczne skierowanych grafów acyklicznych

Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4

Sprzęt i architektura komputerów

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

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

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

Arytmetyka liczb binarnych

Architektura komputerów

Budowa komputera Komputer computer computare

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

PLC2: Programowanie sterowników logicznych SIEMENS SIMATIC S7-300/400 - kurs zaawansowany

Technologie Informacyjne

Podstawy programowania w języku C

MNOŻENIE W SYSTEMACH UZUPEŁNIENIOWYCH PEŁNYCH (algorytm uniwersalny)

Sprzęt i architektura komputerów

Mikrokontroler ATmega32. Język symboliczny

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

PROGRAMOWALNE STEROWNIKI LOGICZNE

LEKCJA TEMAT: Współczesne procesory.

Arytmetyka stałopozycyjna

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

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

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Specyfika projektowania Mariusz Rawski

Organizacja typowego mikroprocesora

...o. 2. ZARYS ORGANIZACJI MASZYNY TYPOWEJ

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Pętle. Programowanie komputerowe

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

U 2 B 1 C 1 =10nF. C 2 =10nF

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

DZIESIĘTNY SYSTEM LICZBOWY

Architektura systemów komputerowych Laboratorium 10 Symulator SMS32 Urządzenia wejścia i wyjścia

Szkolenia specjalistyczne

Architektura komputerów Wykład 2

Katedra Energetyki. Laboratorium Podstaw Elektrotechniki. Badanie silników skokowych. Temat ćwiczenia:

Języki formalne i techniki translacji

Technologie informacyjne (2) Zdzisław Szyjewski

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Podstawowe elementy układów cyfrowych układy sekwencyjne Rafał Walkowiak Wersja

Transkrypt:

Przygotowanie: Przemysław Sołtan e-mail: kerk@moskit.ie.tu.koszalin.pl Algorytm mnożenia sekwencyjnego (wariant 1) //Poczynając z mniej znaczących bitów mnożnika, przesuwamy formowany //rezultat w stronę mniej znaczących bitów. //R1 rejestr sum częściowych i bardziej znaczącej części iloczynu // rejestr mnożnika X i mniej znaczącej części iloczynu // rejestr mnożnej A START 1 SRL R1 SR MOVE :=-1 NIE 2 =1 3 TAK R1:=+R1 MOVE R1 NIE 4 =0 TAK END Algorytm mnożenia sekwencyjnego (przykład). Implementacja algorytmu dokonywana jest w kilku krokach.

Deklaracja bloków funkcyjnych Po zapoznaniu się z algorytmem określamy rodzaje i liczbę bloków funkcyjnych potrzebnych do implementacji zadanego algorytmu. Deklarację bloków funkcyjnych dokonujemy dyrektywą DLR. dlr R1 : rg(16) // dlr : rg(16) // dlr : rg(16) // dlr : sm(16) // dlr : l(8) // dlr : t // R1 Zadeklarowane bloki funkcyjne algorytmu mnożenia. Deklaracja połączeń bloków funkcyjnych Po zadeklarowaniu bloków funkcyjnych należy dokonać ich połączeń zgodnie z wymaganą strukturą. Dokonuje się tego przy pomocy dyrektywy LINK. link (in1) : R1(out) // link (in2) : (out) // link R1(in) : (out) // link (in) : (cr) // link (cl) : R1(cr) // R1 Struktura połączeń algorytmu mnożenia.

Deklaracja wartości początkowych Aby ustawić wartości początkowe bloków funkcyjnych należy wykorzystać dyrektywę ACCEPT. Przy braku deklaracji wartość przechowywana przez dany blok wynosi zero. accept : 17 //ustawienie licznika accept : 0 //zerowanie przerzutnika accept R1 : 0 //zerowanie Z.h accept : 3 //X accept : 5 //Y (Z.l) Implementacja algorytmu Po zadeklarowaniu całej struktury algorytmu należy zabrać się za projektowanie głównego programu sterującego współpracą bloków funkcyjnych. start { srl R1; sr ; move ; dec } // faza1 { jz,label1 } // faza2 { add R1, ; move R1 } // faza3 label1 { jnz,start } // faza4 end { jmp end } // W projektowanym programie wyróżniamy cztery fazy pracy algorytmu. Przesunięcie rejestrów i dekrementacja licznika W pierwszej fazie dokonywane jest przesunięcie bitów w prawo rejestrów R1 i i przerzutnika połączonych ze sobą dyrektywą LINK. Przesunięcie odbywa się w ten sposób, że na rejestrze R1 dokonujemy przesunięcia logicznego SRL R1 (najstarszy bit rejestru przybiera wartość 0, a najmłodszy bit jest wypychany w prawo), na rejestrze dokonujemy przesunięcia prostego SR (na najstarszy bit rejestru pobrany jest z rejestru R1, a najmłodszy bit jest wypychany w prawo), a na przerzutniku dokonujemy (zapis bitu z rejestru ) MOVE. W tej samej fazie dokonujemy także zmniejszenia licznika DEC realizującego programową pętlę. start { srl R1; sr ; move ; dec } // faza1

R1 Pierwsza faza algorytmu mnożenia. Testowanie zawartości przerzutnika Po dokonaniu przesunięć testujemy zawartość przerzutnika mikrooperacją JZ,label1 realizującą operację if(...) then(...). W tej fazie dokonuje się sprawdzania poszczególnych bitów rejestru będącego mnożną X. W przypadku, gdy zawartość przerzutnika jest zerowa następuje skok do etykiety label1. { jz,label1 } // faza2 R1 Druga faza algorytmu mnożenia. Dodawanie zawartości rejestrów W fazie trzeciej następuje dodawanie zawartości rejestru R1 i ADD R1, z zapisem wyniku sumowania do rejestru R1 MOVE R1. W ten sposób dokonuje się sumowanie mnożnika A z sumą częściową przechowywaną w rejestrze R1. { add R1, ; move R1 } // faza3

R1 Trzecia faza algorytmu mnożenia. Testowanie zawartości licznika W fazie czwartej następuje testowanie stanu znacznika Z licznika JNZ,start. Znacznik ten jest ustawiony na 1, gdy zawartość licznika jest zerem. Przy inicjalizacji programu licznik zawierał określoną wartość, a w trakcie działania programu, była ona sukcesywnie zmniejszana o jeden. W ten oto sposób dokonuje się realizacji pętli programowej. label1 { jnz,start } // faza4 R1 Czwarta faza algorytmu mnożenia. Zakończenie programu Program można zakończyć zapętlającą się instrukcją skoku. W przypadku jej braku debugger zatrzymuje się na ostatnim wierszu programu. end { jmp end } // koniec

Listing programu Ostatecznie otrzymujemy, w postaci listingu programu, kompletną realizację algorytmu mnożenia sekwencyjnego zgodnego ze składnią programu GALAXY. // MNOZ1.glx algorytm mnożenia sekwencyjnego (wariant1) //Poczynając z mniej znaczących bitów mnożnika, przesuwamy formowany //rezultat w stronę mniej znaczących bitów. //R1 rejestr sum częściowych i bardziej znaczącej części iloczynu // rejestr mnożnika X i mniej znaczącej części iloczynu // rejestr mnożnej A dlr R1 : rg(16) // dlr : rg(16) // dlr : rg(16) // dlr : sm(16) // dlr : l(8) // dlr : t // link (in1) : R1(out) // link (in2) : (out) // link R1(in) : (out) // link (in) : (cr) // link (cl) : R1(cr) // accept : 17 //ustawienie licznika accept : 0 //zerowanie przerzutnika accept R1 : 0 //zerowanie Z.h accept : 3 //X accept : 5 //Y (Z.l) start { srl R1; sr ; move ; dec } // faza1 { jz,label1 } // faza2 { add R1, ; move R1 } // faza3 label1 { jnz,start } // faza4 end { jmp end } // koniec