Digitális technika II. (vimia111) 5. gyakorlat: Tervezés adatstruktúra-vezérlés szétválasztással, vezérlőegység generációk



Hasonló dokumentumok
b. Következő lépésben egészítse ki az adatstruktúrát a teljes rendezéshez szükséges további egységekkel és készítse el a teljes mikroprogramot!

Számítógépek felépítése, alapfogalmak

A mikroszámítógép felépítése.

Az INTEL D-2920 analóg mikroprocesszor alkalmazása

Digitális technika II. (vimia111) 5. gyakorlat: Mikroprocesszoros tervezés, egyszerű feladatok HW és SW megvalósítása gépi szintű programozással

Digitális technika VIMIAA01

Egyszerű RISC CPU tervezése

A MiniRISC processzor

1. Kombinációs hálózatok mérési gyakorlatai

Mikroprocesszor CPU. C Central Központi. P Processing Számító. U Unit Egység

Bevezetés az informatikába

FPGA áramkörök alkalmazásainak vizsgálata

5. KOMBINÁCIÓS HÁLÓZATOK LEÍRÁSÁNAK SZABÁLYAI

Az integrált áramkörök kimenetének kialakítása

1. Az utasítás beolvasása a processzorba

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Dr. Oniga István DIGITÁLIS TECHNIKA 9

A számítógép alapfelépítése

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Összetett feladatok megoldása

A TMS320C50 és TMS320C24x assembly programozására példák

2. Digitális hálózatok...60

LOGIKAI TERVEZÉS HARDVERLEÍRÓ NYELVEN. Dr. Oniga István

Dr. Oniga István DIGITÁLIS TECHNIKA 8

4-1. ábra. A tipikus jelformáló áramkörök (4-17. ábra):

Hardver leíró nyelvek (HDL)

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Számítógépek felépítése, alapfogalmak

Funkcionális áramkörök vizsgálata

ISE makró (saját alkatrész) készítése

LOGIKAI TERVEZÉS HARDVERLEÍRÓ NYELVEN. Dr. Oniga István

A Picoblaze Core implementálása FPGA-ba

Máté: Számítógép architektúrák

Programozható logikai vezérlõk

Verilog HDL ismertető 2. hét : 1. hét dia

DIGITÁLIS TECHNIKA 7-ik előadás

Nagy adattömbökkel végzett FORRÓ TI BOR tudományos számítások lehetőségei. kisszámítógépes rendszerekben. Kutató Intézet

Digitális technika 1. Tantárgykód: VIIIA105 Villamosmérnöki szak, Bsc. képzés. Készítette: Dudás Márton

ELŐADÁS SZÁMÍTÓGÉP MŰKÖDÉSE FIZIKA ÉS INFORMATIKA

[cimke:] [feltétel] utasítás paraméterek [; megjegyzés]

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

DIGITÁLIS TECHNIKA 7. Előadó: Dr. Oniga István

hét Sorrendi hálózatok tervezési lépései: szinkron aszinkron sorrendi hálózatok esetén

Számítógép architektúra kidolgozott tételsor

Máté: Számítógép architektúrák

4. Fejezet : Az egész számok (integer) ábrázolása

AF 088II DIO 16/8 AF 088II DIO 16. Digitális ki-, bemeneti modul. Digitális bemeneti modul

Kombinációs áramkörök modelezése Laborgyakorlat. Dr. Oniga István

DIGITÁLIS TECHNIKA I Dr. Lovassy Rita Dr. Pődör Bálint

Laborgyakorlat 3 A modul ellenőrzése szimulációval. Dr. Oniga István

Digitális technika (VIMIAA02) Laboratórium 1

Verilog HDL ismertető 4. hét : hét dia

Digitális technika (VIMIAA02) Laboratórium 1

Közlekedés gépjárművek elektronikája, diagnosztikája. Mikroprocesszoros technika. Memóriák, címek, alapáramkörök. A programozás alapjai

4. KOMBINÁCIÓS HÁLÓZATOK. A tananyag célja: kombinációs típusú hálózatok analízise és szintézise.

10. EGYSZERŰ HÁLÓZATOK TERVEZÉSE A FEJLESZTŐLAPON Ennél a tervezésnél egy olyan hardvert hozunk létre, amely a Basys2 fejlesztőlap két bemeneti

Joint Test Action Group (JTAG)

1. Kombinációs hálózatok mérési gyakorlatai

DIGITÁLIS TECHNIKA I

Digitális technika VIMIAA hét

A megfelelő IP védelem biztosításával, alkalmasak a kültéri alkalmazások kialakítására.

LOGIKAI TERVEZÉS PROGRAMOZHATÓ. Elő Előadó: Dr. Oniga István

1. ábra: Perifériára való írás idődiagramja

LOGIKAI TERVEZÉS HARDVERLEÍRÓ NYELVEN. Előadó: Dr. Oniga István

MEMÓRIA TECHNOLÓGIÁK. Számítógép-architektúrák 4. gyakorlat. Dr. Lencse Gábor. tudományos főmunkatárs BME Híradástechnikai Tanszék

Digitális technika VIMIAA hét

DSP architektúrák dspic30f család

Dr. Oniga István DIGITÁLIS TECHNIKA 9

Bevezetés a C++ programozásba

Digitális Technika. Dr. Oniga István Debreceni Egyetem, Informatikai Kar

Szupermikroprocesszorok és alkalmazásaik

Digitális technika (VIMIAA02) Laboratórium 3

Számítógép Architektúrák

Aritmetikai utasítások I.

Verilog HDL ismertető

Memóriák - tárak. Memória. Kapacitás Ár. Sebesség. Háttértár. (felejtő) (nem felejtő)

Kapuáramkörök működése, felépítése, gyártása

Újrakonfigurálható eszközök

Számítógép Architektúrák (MIKNB113A)

Digitális technika (VIMIAA02) Laboratórium 5.5

12. NYOMÓGOMBOK ÉS KAPCSOLÓK PERGÉSMENTESÍTÉSE A FEJLESZTŐLAPON

LOGSYS LOGSYS ECP2 FPGA KÁRTYA FELHASZNÁLÓI ÚTMUTATÓ szeptember 18. Verzió

noannb Számítógépek automatizált tervezése

Tanulmányozza az 5. pontnál ismertetett MATLAB-modell felépítést és működését a leírás alapján.

Megoldás Digitális technika I. (vimia102) 3. gyakorlat: Kombinációs hálózatok minimalizálása, hazárdok, a realizálás kérdései

Digitális technika (VIMIAA02) Laboratórium 3

PROTOTÍPUSKÉSZÍTÉS. Előadó: Dr. Oniga István

Hobbi Elektronika. A digitális elektronika alapjai: További logikai műveletek

KNX távirat nyugtázása. Épületinformatika. KNX távirat példa. KNX távirat példa

Digitális ki-bemenetek kezelése, bitszintű műveletek

Mérési jegyzőkönyv. az ötödik méréshez

Számítógép Architektúrák

Digitális Technika 2. Logikai Kapuk és Boolean Algebra

Dr. Oniga István DIGITÁLIS TECHNIKA 4

0 0 1 Dekódolás. Az órajel hatására a beolvasott utasítás kód tárolódik az IC regiszterben, valamint a PC értéke növekszik.

PROGRAMOZHATÓ LOGIKAI VEZÉRLİK

II. Zárthelyi feladat (1) Automatika c. tárgyból. 2. Rajzoljon le egy-egy 3 bites szinkron illetve aszinkron számlálót ütemdiagramjával együtt

EB134 Komplex digitális áramkörök vizsgálata

1. eset: a háromból két motor 5 s-nál hosszabb ideig leáll. (Időkésleltetett jelzés). 2. eset: mindhárom motor leáll. (Azonnali jelzés).

A gyakorlatokhoz kidolgozott DW példák a gyakorlathoz tartozó Segédlet könyvtárban találhatók.

Átírás:

Digitális technika II. (vimia111) 5. gyakorlat: Tervezés adatstruktúra-vezérlés szétválasztással, vezérlőegység generációk Elméleti anyag: Processzoros vezérlés általános tulajdonságai o z induló készletben a vezérlőn kívül általános célú adatstruktúra elemek (aritmetikai-logikai egység, regiszterek stb.) is vannak o külvilággal való kommunikáció BUSZ-on keresztűl történik o BUSZ-on alapvetően egy rendszervezérlő, több de egyidejűleg csak egy aktív MSTER és több SLVE van. o Tipikus SLVE-ek: memória, periféria, ezek illesztése később Programozható processzor o processzor jellemzői, HW paraméterek, SW jellemzők o z utasítás architektúra és az adatstruktúra kapcsolata o Stack alapú, akkumulátor alapú és regisztertömbös megoldások, a felépítés hatása az utasítás kódolásra és formátumra o Egy egyszerű feladat Fibonacci sorozat generálása gépi szintű programjának elkészítése, az assembler és a gépi kód kapcsolata Irodalom: Benesóczky Zoltán: Digitális tervezés funkcionális elemekkel és mikroprocesszorokkal, egyetemi tankönyv, MK55033,.103-112. Gyakorló példák: 5.1. 3 címes regisztertömb belső felépítése RISC CPU-k adatstruktúrájának jellemző eleme a 3 regiszter címes címzést (1 írási cím, 2 olvasás cím) biztosító regisztertömb, 8-16-32 bit adatszélességgel és 8-16-32 mélységű méretben. z alkatelem használatával a két operandusú műveleteket közvetlenül, felesleges adatmozgatások nélkül lehet elvégezni, Rdest = Rsrc1 FUN Rsrc2, utasítás formátum: FUN_ DEST_ SRC1_ SRC2. Tervezzünk meg egy 4 bit széles, 4 regiszterből álló 3 cím elérésű egységet. z interfész jelek: CLK, WR_DR[1:0], RD_DR_[1:0], RD_DR_B[1:0], WR_EN, WR_DT[3:0], RD_DT_[3:0], RD_DT_B[3:0]. terv 4 db élvezérelt DFF-ból álló 4 bites regisztert tartalmaz. RST jelet nem használjuk, mivel a processzorok regisztereire a RST alapvetően nincs hatással, tehát a programozó nem tételezheti fel, hogy a regiszterek induláskor bármilyen alapértékkel rendelkeznek. Mivel a DW DFF-ok-nak nincs CE jelük, ezért a bemeneti MUX-os adatválasztás helyett az órajelet kapuztuk a WR_DEC makróban. Ez nem szép megoldás, de most fogadjuk el. Egy szebb terveben, inkább szinkron töltéssel rendelkező regisztereket rajzolnánk, és a dekóder ezeket vezérli, míg az órajel közös és globális, azaz nem kapuzott. REG_FILE 3 regiszter címet képes egyszerre kezelni, tehát támogatja az olyan utasításkészletet, amelyben 3 operandus szerepel, vagyis Rdest = Rsrc1 OPER Rscr2. Ez hasznos, mert nagyon ritkán kell csak regiszter másolásokat végeznünk. Ugyanakkor 32 méretű regiszter tömb esetén ehhez 3x5 bit, azaz 15 utasításbit kell, ami csak 32 bites utasításformátum mellett engedhető meg. 1

Megjegyzés1: fenti megoldásban ugyanazt a címet használva mind a WR_DR, mind a RD_DR_ bemeneten is, a szintén elterjedt 2 címes regisztertömböt kapjuk, ahol a művelet eredménye mindig felülírja az egyik operandust : Rsrc1 = Rsrc1 FUN Rsrc2. Itt a programba gyakran kénytelenek vagyunk extra adatmozgatásokat beépíteni (ha pl. szeretnénk megőrizni a Rsrc1 eredeti értékét). Ugyanígy egy ilyen megoldásnál gondolnunk kell a SUB kivonás (-B) LU művelet mellett a fordított kivonás RSUB (B-) LU művelet megvalósítására is, vagy a (B-) kivonáshoz 2 utasítás kell (1 regisztermásolás és egy kivonás). Megjegyzés2: fenti megoldásban a WR_DR címet használva a RD_RD_ bemeneten is és a RD_DR_B címet elhagyva a szintén elterjedt 1 címes regisztertömböt kapjuk, ami az un. akkumulátor típusú adatstruktúrák jellemző elem. Ebben az esetben a művelet a következő lehet: CC = CC FUN Rsrc. Ez olcsó, de rengeteg extra adatmozgatást kíván a regiszterek és az akkumulátor között. regiszterek írása gyakran csak az Rdst = CC áttöltéskor lehetséges, esetleg még az Rdst = Rdst +1, vagy Rdst-1 esetekben. Megjegyzés3: Hangsúlyozzuk, hogy az olvasás a cím megjelenésére azonnali, közvetlen, aszinkron végrehajtódik (kombinációs jelutak), míg az írás parancs az adott címen az órajelciklus végén, a felfutó élre (szinkron) hajtódik végre. Emiatt tehát lehetséges egyetlen utasításon belül a regiszter értékének használata és az új érték visszaírása (Read-Modify-Write) tervezői fájlok: REG_FILE4x4.dwm, FILE_REG.dwm, MUX4b4x4.dwm, WR_DEC2x4.dwm, mellékelve. 2

5.2. LU egység tervezése z adatstruktúra másik fontos eleme az LU. szükséges művelethalmaz (aritmetikai, logikai, shift) kiválasztása gondos analízist igényel, a hatékonyságot egyértelműen meghatározza. Tervezzünk egy LU egységet, ami a következő műveleteket biztosítja: FUN[2:0] Funkció Leírás 000 +B Összeadás 001 -B Kivonás 010 +1 Inkrementálás 011 datátmásolás 100 and B Bitenkénti ND 101 or B Bitenkénti OR 110 xor B Bitenkénti XOR 111 not Bitenkénti NOT triviális megoldás a 8 funkció önálló realizálása és egy nagyméretű 8 bites adatokon dolgozó 8 bemenetű multiplexer használata. Rajzoljuk fel vázlatosan, de magyarázzuk el, hogy ez nagyon gazdaságtalan. Egy jobb megoldást eredményez az alábbi összeadóra és elő-feldolgozóra alapuló struktúra. Ennek megfelelően a kimeneti eredményt mindig az összeadó kimenete adja, és a bemeneti operandusokat [7:0], B[7:0] egy átalakítás után vezetjük az összeadó I[7:0], IB[7:0] bemeneteire. [7:0] B[7:0] LU FUN[2:0] ELŐFELDOLGOZÓ FUN datbitek Cin I IB I IB Cin DDER RES[7:0] fenti blokkvázlat alapján az előfeldolgozó által szükséges műveletek a belső (I[7:0], IB[7:0]) adatkimenetek és a Cin jel generálását jelentik. mennyiben az eredetileg tervezett not művelet helyett a notb műveletet valósítjuk meg, a hálózat egyszerűbb lehet (mivel ez a részfeladat része az -B műveletnek is). Így a műveleti tábla az elő-feldolgozó funkcióit is részletezve a következő: FUN[2:0] Funkció Leírás I IB Cin 000 +B Összeadás B 0 001 -B Kivonás not B 1 010 +1 Inkrementálás 0 1 3

011 datátmásolás 0 0 100 and B Bitenkénti ND 0 and B 0 101 or B Bitenkénti OR 0 or B 0 110 xor B Bitenkénti XOR 0 xor B 0 111 not not B Bitenkénti NOT 0 not notb Egyszerűen kiolvasva: I =, ha FUN[2] = =0, egyébként 0, tehát ez egy 2 bemenetű ÉS kapu minden bitre. Cin = 1 ha FUN == 1 vagy FUN= 2, tehát ez kettő db három bemenetű ÉS kapu. IB = Ez már bonyolultabb, de azért megtervezhető. 5 bemenet, 1 kimenet minden bitre. FUN[2:0] IBx, x=3 0 000 Bx 001 not Bx 010 0 011 0 100 x and Bx 101 x or Bx 110 x xor Bx 111 not B feladathoz nem készült DW rajz, felesleges, mindenki el tudja képzelni. Megjegyzés: műveletek kiválasztása véletlenszerűen, egy példa alapján történt. Megemlíthető, hogy nem feltétlenül optimális, mivel ha az utasításban tudunk közvetlenül adatot megadni (és ez általában teljesül, mint konstans operandus), akkor az +1 vagy a not (notb) felesleges. z inkrementáláshoz használható a B bemeneten az 1, mint konstans, a negálás pedig az XOR FF, azaz csupa egyes konstans. Tehát egy LU funkciókészlet kialakítása gondos tervezést igényel. 5.3 Feltételjelek CPU vezérlőegysége a program következő utasításának címét feltételes utasítás esetén pl. az aktuális LU művelet eredménye alapján határozza meg. z aritmetikai típusú LU műveletekben mindig kettes komplemens számábrázolást tételezünk fel, mind a bemeneten, mind a kimeneten. tipikus feltételjelek a következők: 0 Z C N V z LU művelet eredménye nulla z LU művelet végrehajtásakor átvitel keletkezett z LU művelet eredményének előjele z LU művelet során túlcsordulás keletkezett Tervezzük meg a feltétel jelek logikai hálózatát! 1. Z = RES[7:0]==0, azaz a hálózat egy 8 bemenetű NOR kapu. 2. C= Cout4, az LU DDER átvitelbit közvetlenül felhasználható 3. N= RES[7], az eredmény legnagyobb helyiértékű bitje közvetlenül felhasználható. 4. V=? Mikor van túlcsordulás kettes komplemensű számokkal végzett műveleteknél? Túlcsordulás csak aritmetikai műveletek esetén fordulhat elő. zonos előjelű operandusok esetén: Összeadásnál is és kivonásnál is, ha az operandusok előjele azonos, de az eredmény előjele ettől eltérő, akkor túlcsordulás van (POS + POS = NEG, vagy NEG + NEG = POS). 4

Eltérő előjelű operandusoknál a helyzet nem ilyen egyértelmű. Összeadásnál soha nem keletkezik túlcsordulás (POS + NEG vagy NEG + POS eredménye mindig helyes), ekkor soha nem lépünk ki a tartományból. Kivonásnál a NEG POS vagy a POS NEG művelet eredménye előjel szerint tetszőleges lehet, de sajnos túlcsordulás ezzel együtt is előfordulhat. (Pl. -100 (+5) = -105, -100 (+50) = -150, de ez kisebb lenne mint -128, tehát = +106). Vagyis nem elegendő az előjel eltérése, az operandusok pozíciója és értéke is fontos. Ha az előjel azonos az első operandus előjelével, akkor a művelet eredménye helyes. Ez azonban a kimeneti feltétel jelet a bemeneti operandusok előjeléből számítja. Összefoglalóan a kettes komplemens DD/SUB áramkörben az OVR bitet a legegyszerűbben a Cout7 XOR Cout6 hálózattal állíthatjuk elő, vagyis az utolsó előtti és az utolsó bitpozíciók átvitelbitjeit kell használnunk. 5.4 DW alkatrészkönyvtár RTL (Regiszter Transzfer Szintű) Verilog megvalósítása HDL nyelvű leírásokban általában nem strukturális szintű specifikáció a legmegfelelőbb. megismert DW könyvtár elemeinek elkészítettük az RTL szintű Verilog HDL specifikációit is. Ezeket, és a korábbi segédlet tartalmát egyetlen táblázatba foglaltuk, a következő módon: DigitalWorks Funkcionális alkatrész katalógus v1.0 Verilog HDL példa megvalósítása közvetlen strukturális, kapcsolási rajz szintű és RTL szintű leírással 2012 strukturális leírásokban az egyes alkatrészek specifikációjánál törekedtünk a DW könyvtár megfelelő kapcsolási rajzainak és építkezési szabályainak lehető legjobb másolására, akkor is, ha ez a HDL specifikáció szempontjából nem a legkedvezőbb stílus használatához vezetett z RTL szintű leírásokban a szokásos legkedvezőbb leírási stílust használtuk STRUKTURÁLIS LEÍRÁS SZIMBÓLUM RTL SZINTŰ LEÍRÁS // DW könyvtár 1.0 DEC_1to8 // 1-ből 8-as Demultiplexer vagy 3-ból 8-as Dekóder module DEC_1to8( input en, input [2:0] s, output [7:0] out ); // DW könyvtár RTL DEC_1to8 // 1-ből 8-as Demultiplexer vagy 3-ból 8-as Dekóder module DEC_1to8( input en, input [2:0] s, output [7:0] out ); // Kapu szintű leírás, 8 db 4 bemenetű ÉS logika, // ponált/negált bemenetekkel assign out[0] = en & ~s[2] & ~s[1] & ~s[0]; assign out[1] = en & ~s[2] & ~s[1] & s[0]; assign out[2] = en & ~s[2] & s[1] & ~s[0]; assign out[3] = en & ~s[2] & s[1] & s[0]; assign out[4] = en & s[2] & ~s[1] & ~s[0]; assign out[5] = en & s[2] & ~s[1] & s[0]; assign out[6] = en & s[2] & s[1] & ~s[0]; assign out[7] = en & s[2] & s[1] & s[0]; // Egy dekóder logika shifteléssel assign out = {7 b0,en} << s; endmodule endmodule teljes dokumentum a tárgy honlapon megtalálható. vizsgán az RTL szintű leírás megadása vagy felismerése kérdésként szerepelhet. 5