Digitális technika VIMIAA01

Hasonló dokumentumok
Digitális technika VIMIAA01

Digitális technika VIMIAA hét

Digitális technika VIMIAA hét

Digitális technika VIMIAA hét

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

A MiniRISC processzor

Digitális technika VIMIAA02 9. hét

Digitális technika VIMIAA02 9. hét Fehér Béla BME MIT

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

Digitális technika (VIMIAA01) Laboratórium 9

Digitális technika (VIMIAA01) Laboratórium 9

Digitális technika (VIMIAA02) Laboratórium 5

Digitális technika (VIMIAA02) Laboratórium 5

Digitális rendszerek. Digitális logika szintje

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

Perifériák hozzáadása a rendszerhez

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

A mikroprocesszor felépítése és működése

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

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

A MiniRISC processzor

Bevezetés az informatikába

SZORGALMI FELADAT. 17. Oktober

Rendszerarchitektúrák labor Xilinx EDK

Nagy Gergely április 4.

A MiniRISC processzor (rövidített verzió)

A MiniRISC processzor

Mikrorendszerek tervezése

Az interrupt Benesóczky Zoltán 2004

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

Budapesti Műszaki és Gazdaságtudományi Egyetem. A Verilog HDL II. Nagy Gergely. Elektronikus Eszközök Tanszéke (BME) szeptember 26.

Digitális technika (VIMIAA02) Laboratórium 4

Programozási segédlet DS89C450 Fejlesztőpanelhez

Egyszerű RISC CPU tervezése

A PicoBlaze vezérlő alkalmazása a LOGSYS kártyán

A Számítógépek felépítése, mőködési módjai

Digitális technika (VIMIAA01) Laboratórium 10

A Számítógépek hardver elemei

Digitális rendszerek. Utasításarchitektúra szintje

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

Egyszerű számítógép működése

Digitális technika (VIMIAA02) Laboratórium 4

A LOGSYS GUI. Fehér Béla Raikovich Tamás, Laczkó Péter BME MIT FPGA laboratórium

Dr. Oniga István DIGITÁLIS TECHNIKA 9

Digitális technika VIMIAA01

Digitális technika VIMIAA01

Karakteres LCD kijelző használata MiniRISC processzoron

Mikrorendszerek tervezése

Architektúra, megszakítási rendszerek

Összetett feladatok megoldása

Processzor (CPU - Central Processing Unit)

Digitális technika (VIMIAA02) Laboratórium 12

Digitális technika (VIMIAA02) Laboratórium 12

A vezérlő alkalmas 1x16, 2x16, 2x20, 4x20 karakteres kijelzők meghajtására. Az 1. ábrán látható a modul bekötése.

Mikrorendszerek tervezése

Mikrorendszerek tervezése

Tartalomjegyzék. Előszó... xi. 1. Bevezetés Mechanikai, elektromos és logikai jellemzők... 13

Digitális technika (VIMIAA01) Laboratórium 4

LOGSYS LOGSYS LCD KIJELZŐ MODUL FELHASZNÁLÓI ÚTMUTATÓ november 8. Verzió

SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1

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

Digitális technika (VIMIAA02) Laboratórium 3

Digitális technika (VIMIAA02) Laboratórium 1

Járműfedélzeti rendszerek I. 3. előadás Dr. Bécsi Tamás

A számítógép fő részei

Digitális technika (VIMIAA02) Laboratórium 3

Digitális technika (VIMIAA02) Laboratórium 1

Digitális technika VIMIAA hét

Digitális technika (VIMIAA01) Laboratórium 8

Digitális technika (VIMIAA02) Laboratórium 5.5

Digitális technika VIMIAA hét

Periféria illesztési példák áramkörön belüli buszra (kiegészítés az előadás vázlathoz) Benesóczky Zoltán (2017)

Adatfeldolgozó rendszer tervezése funkcionális elemekkel

Bevitel-Kivitel. Bevitel-Kivitel és Perifériák. Algoritmusok és Alkalmazásaik Tanszék Budapest december 16.

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

2. Számítógépek működési elve. Bevezetés az informatikába. Vezérlés elve. Külső programvezérlés... Memória. Belső programvezérlés

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

találhatók. A memória-szervezési modell mondja meg azt, hogy miként

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

Digitális technika (VIMIAA02) Laboratórium 8

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

A feladatokat önállóan, meg nem engedett segédeszközök használata nélkül oldottam meg: Olvasható aláírás:...

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

Informatika 1 2. el adás: Absztrakt számítógépek

loop() Referencia:

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

Áramkörön belüli rendszerek

A Texas Instruments MSP430 mikrovezérlőcsalád

Előadó: Nagy István (A65)

Digitális technika (VIMIAA01) Laboratórium 11

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

A MicroBlaze processzor

Mintavételes szabályozás mikrovezérlő segítségével

VI. SZOFTVERES PROGRAMOZÁSÚ VLSI ÁRAMKÖRÖK

Dr. Oniga István DIGITÁLIS TECHNIKA 8

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

Központi vezérlőegység

LOGSYS LOGSYS SPARTAN-3E FPGA KÁRTYA FELHASZNÁLÓI ÚTMUTATÓ szeptember 19. Verzió

Programmable Chip. System on a Chip. Lazányi János. Tartalom. A hagyományos technológia SoC / PSoC SoPC Fejlesztés menete Mi van az FPGA-ban?

Átírás:

BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika VIMIAA01 Fehér Béla BME MIT Processzor utasítás rendszerek A processzorok utasításkészlete az alábbi utasítás csoportokra osztható: Adatmozgató (MOV, máshol LOAD/STORE) Aritmetikai (ADD, SUB, CMP,MUL, DIV) Logikai (AND, OR, XOR, CPL, TST) Léptető (SLx,/SRx, RR/RL, ASR és multibit) Vezérlő (JMP, CJP, JAL/CALL, RTN) Egyéb (NOP, EI, DI, HALT) Jellemző RISC utasításkészlet: 50 150 utasítás Érdekesség: OISC: One Instruction Set Computer Összetett utasítás művelet, test és adatmozgatás

Processzor utasítás rendszerek A RISC processzorok utasítás formátuma Általában fix hosszúságú, 16/32 bit Felépítése 2R vagy 3R típusú (utóbbi a 32 bitnél) Kevés utasítás formátum típus (2-5 maximum) Egy formátumon belül minden utasítás azonosan használható A bitmezők kiosztása rögzített Egyszerű dekódolás, sok érték közvetlenül használható Pipe-line végrehajtás könnyen kialakítható Az utasítások végrehajtási ideje azonos (1 órajel) Processzor utasítás rendszerek A RISC processzorok címzési módjai A címzési mód az utasításban hivatkozott adatelem, adatérték elérési módját jelenti A címzési módok jelentősen befolyásolják az utasítás ill. programvégrehajtás hatékonyságát Különböző címzési módok léteznek a program memória és az adatmemória elérésére Eltérő igények: Programmemória esetén a cél a következő utasítás címének megadása, ez ugrásoknál, feltételes ugrásoknál, szubrutinhívásoknál (függvény/eljárás) lényeges Adatmemóriánál sokkal általánosabb igényeket találunk

Processzor utasítás rendszerek Programmemória címzési módjai A programmemóriát a PC (programszámláló) címzi Az alapművelet a következő utasítás PC = PC + 1 Az ugrási vagy szubrutinhívás esetén a PC értékét módosítani kell Abszolút címzés: A PC minden bitje módosul: A teljes programmemória bármely címe szerepelhet, mint új cím. Kedvező, egyszerűen használható, de sok bitet igényel Relatív címzés: A PC bitjeinek csak egy része módosul, az ugrás, szubrutinhívás elérési tartománya korlátozott. A programszervezés bonyolultabb (assembler/fordító feladata), de a programok lokalitása miatt ez ritkán okoz komoly problémát. A relatív címzési tartomány 2 8-2 16 Processzor utasítás rendszerek Programmemória címzési módjai Közvetlen cím: Az új cím értéke az utasításban kódolt, ez gyakran relatív címzésre korlátoz A célcím FORDÍTÁS időben meghatározott, futáskor konstans, nem lehet adatfüggő MiniRISC: 16 bit utasítás, 8 bit program cím: lehet abszolút is Regiszter indirekt: Az ugrási címet egy regiszter tartalmazza (ez általában abszolút címzésre is elegendő) A célcím lehet adatfüggő, több utas elágazások, táblázat értékek indexelt olvasásához a programmeóriából MiniRISC: van regiszter indirekt címzés, teljes tartományra A szegmensregiszteres címzés egy kevert címzési mód

Processzor utasítás rendszerek Adatmemória címzési módjai, illetve az utasítások operandusainak elérési, specifikációs módjai: Közvetlen adat (adat az utasításban) Közvetlen cím (memória cím az utasításban) Regiszter adat Regiszter (indirekt) címzésű adat Regiszter + közvetlen ofszet című adat Regiszter címzésű indexelt adat Regiszter címzésű post-inkremens/pre-dekremens adat Egy-egy utasításkészlet nem mindegyiket tartalmazza Léteznek egyéb speciális (bitfordított, modulo, stb.) címzések is, ezeket nem tárgyaljuk Processzor utasítás rendszerek Adatmemória címzési módjai, illetve az utasítások operandusainak elérési, specifikációs módjai: Közvetlen adat: Az adat az utasítás része MiniRISC 16 bit utasítás. 8 bit adat megoldható Általában pl. 32 bites processzor esetén nem egyszerű: 32 bites utasításban 32 bites adat nem helyezhető el (ut.kód?) Gyakran használunk kis értékű konstansokat, ezért a közvetlen adatra egy 8-12-16-20 bitmező áll rendelkezésre + előjel kiterjesztés Vagy: teljes méretű adat: két utasításban: alsó-felső fele, és ekkor a két utasítás végrehajtása nem megszakítható!

Processzor utasítás rendszerek Adatmemória címzési módjai, illetve az utasítások operandusainak elérési, specifikációs módjai: Közvetlen cím: A cím az utasítás része MiniRISC 16 bit utasítás. 8 bit adat megoldható, mert az adatinterfész csak 256 címet tartalmaz Általában ugyanazok a korlátozások érvényesek, mint a közvetlen adatnál, bár beágyazott rendszerekben a memóriaméret korlátos (nem kell 32 címbit) Processzor utasítás rendszerek Adatmemória címzési módjai, illetve az utasítások operandusainak elérési, specifikációs módjai: Regiszter adat: A regiszter címe az utasítás része MiniRISC 16 bit utasítás: 2 regiszter cím 2 adat Ez a leggyakoribb címzési mód RISC processzorokban univerzális regiszterhasználat, nincsenek specialitások, kivételek Regiszter (indirekt) címzésű adat: A regiszter tartalma az adat címe a memóriában A MiniRISC utasításkészlet tartalmazza Hatékony címzés adatvektorok/tömbök eléréséhez

Processzor utasítás rendszerek Adatmemória címzési módjai, illetve az utasítások operandusainak elérési, specifikációs módjai: Regiszter + közvetlen ofszet adat: Az adat címe egy regisztertartalom (bázis) és az utasításból származó közvetlen érték (ofszet) összege Regiszter címzésű indexelt adat: Az adat címe két regiszter tartalmából adódik: Az egyik a bázis cím a másik az index érték Regiszter címzésű post-inkremens/pre-dekremens címzés: Az adat elérése után/előtt a címregiszter tartalma automatikusan módosul. Hasznos verem (stack) és adatvektor/tömb címzésénél MiniRISC utasításkészlete A MiniRISC processzor diasorozat 43-59 diája

Processzor belső kommunikációja A mikroprocesszoros rendszerek összetett digitális rendszerek, több modulból állnak Eddig csak a központi egység felépítését, az un. CPU struktúráját és működését vizsgáltuk: Ez két fő részegységből áll: vezérlő és ALU Ezek mindegyike bonyolult részrendszer, de önmagában szinte működésképtelen A vezérlő a működéséhez szükséges utasításokat a programmemória interfészen keresztül éri el Az ALU értelmes működésének feltétele az adatmemória és a perifériák elérése. Ezt az adatmemória interfész biztosítja MiniRISC mintarendszer Bevezetés (Egyszerűsített Blokkvázlat) LED ek DIP kapcsoló A bővítőcsatlakozó B bővítőcsatlakozó 128 x 8 bites adatmemória (0x00 0x7F) basic_owr (0x80) basic_in (0x81) basic_io (0x84 0x87) basic_io (0x88 0x8B) MiniRISC CPU Adatmem. Adatmemória interfész Debug Prg. mem. Debug modul 256 x 16 bites programmemória slave_usrt (0x8E 0x8F) USRT basic_display (0x90 0x9F) basic_timer (0x8C 0x8D) basic_in (0x82) JTAG nyomógombok 14 fejlesztői és kijelzők kommunikációs port MiniRISC processzor, 2013.04.17. (v1.2)

Processzor belső kommunikációja A mikroprocesszoros rendszerek adatátviteli interfészeit buszoknak nevezzük Sok mikroprocesszor rendelkezik egyedi külső busszal is (lokális busz), alkalmazási céltól függően A külső buszok némelyike processzor független, ún. rendszer busz, általános célú alkalmazásokra. Ilyen külső rendszerbusz pl. IBM PC ISA (Industry Standard Architecture) PCI busz (Peripheral Component Interface) VMEbus (Versa Module Europa bus) VXI (VMEbus extension for Instrumentation) Processzor belső kommunikációja A mikroprocesszoros rendszerek belső adatátviteli buszai hasonlóak a külső buszokhoz Egy lényeges különbség: Szétválasztott DATA_IN és DATA_OUT adatvonalak vannak. A belső buszok között is van processzor független, általános célú rendszer busz, tetszőleges alkalmazásokra. Ez nagyban megkönnyíti a modern SoC (System on Chip) rendszerek tervezését. Ilyen belső rendszerbusz pl. IBM Core Connect ARM AMBA (Advanced Microcontr. Bus Arch.) ARM AXI (Advanced extensible Interface) Whisbone

Processzor belső kommunikációja A felsoroltak mind PÁRHUZAMOS buszok A mai nagysebességű adatátviteli interfészek gyakran áramköri okokból SOROS adatátviteli protokollt használnak. Ezek pont-pont kapcsolatot valósítanak meg, de megszokásból ezeket is buszoknak nevezik. Ilyen pont-pont kapcsolatok pl.: USB (Universal Serial Bus) FireWire (IEEE 1394) PCIe (PCI Express) InfiniBand HyperTransport QuickPath Interconnect Processzor belső kommunikációja A továbbiakban a PÁRHUZAMOS buszokkal foglalkozunk A busz jelvezetékek együttese, amelyekre áramköri, elektromos és időzítési előírások vonatkoznak Gyakran mechanikai is pl. ISA/PCI/VME csatlakozó Az áramköri előírások specifikálják a jelszintet, a meghajtó képességet, a megengedett terhelést, a maximális túllövést, stb. Az időzítési előírások definiálják a működési sebességet, a jelváltási időt, az adatátviteli buszciklusok időbeli lefolyását A buszok komplex rendszerek, mi csak egy egyszerű verzióval foglalkozunk

A mikroprocesszoros busz A busz részei: Címbusz ADDR[n:0] Adatbusz DATA[m:0], belső busznál külön D_IN[m:0], D_OUT[m:0] Vezérlő busz (sok egyedi jel összessége): Rendszerjelek: CLK, RST, Arbitrációs jelek: BUSREQ, BUSACK, Irányvezérlő jelek: READ, WRITE, Átvitelvezérlő jelek: FRAME, TS, TACK, AS, DS, Megszakítás vezérlő jelek: IRQi, IACK, A mikroprocesszoros busz A busz használatának szabályai: A buszra kapcsolódó egységek között megkülönböztetünk MASTER és SLAVE egységeket MASTER: Vezérelheti a buszt, meghatározza a cím/adat és egyéb paramétereket, kezdeményezi az átvitelt és vezérli a működést SLAVE: Figyeli a buszt, felismeri/dekódolja a címet és a parancsokat, azonosítás esetén válaszol a kérésre az adat fogadásával vagy kiadásával

A mikroprocesszoros busz Buszhasználat külső buszon: Közös vonalak, 3 állapotú, HiZ, nagy impedanciás meghajtókkal Egy időben csak egyetlen adatforrás lehet aktív A vezérlő/engedélyező jelek 1-az-N-ből kódolásúak A mikroprocesszoros busz Buszhasználat belső buszon: Az adatvonalak meghajtása AND-OR hálózaton (elosztott multiplexer) keresztül A megoldás kizárja a több forrás kimeneteinek áramköri összekapcsolását

A mikroprocesszoros busz Buszhasználat belső buszhálózaton: Szétválasztott DATA_IN (SLAVE MASTER) és DATA_OUT (MASTER SLAVE) A MUX alapú meghajtás kizárja a több forrás kimenetének áramköri összekapcsolását A buszhasználat szabályai Egy buszon lehet több MASTER és SLAVE is Több SLAVE nem gond Több MASTER : Arbitráció a buszhasználat jogáért Az arbitrációban (döntési folyamatban) csak a MASTER funkciójú egységek vesznek részt Az arbitráció a buszhasználat jogáért történik Az arbitráció dönti el, hogy versenyhelyzetben ki jogosult a busz használatára. Többfajta algoritmus létezik az arbitrációra: Fix prioritás, körbenforgó, utolsó egység nagyobb prioritású, stb.

A buszhasználat szabályai A buszhasználati feltételek eldöntése lehet: Központi: Az arbiter értékeli ki a kéréseket és jelöli ki a következő MASTER egységet, aki indíthat egy adatátvitelt A dekóder értelmezi a címet/vezérlést és jelöli ki a SLAVE egységet, aki válaszol a kérésre A buszhasználat szabályai A buszhasználati feltételek eldöntése lehet: Elosztott: Minden MASTER tartalmaz logikát az arbitrációhoz és így dől el, ki lehet a következő MASTER egység, aki indíthat egy adatátvitelt Minden SLAVE egység tartalmaz dekóder áramkört, ami értelmezi a címet/vezérlést és engedélyezi az egységet, hogy a kérésre válaszoljon Helyes tervezés esetén csak egy MASTER és egy SLAVE egység lehet egy időben aktív

A busz adatátviteli ütemezése Az adatátvitel ütemezése: aszinkron Nincs ütemező órajel Az adatátvitelt a kézfogásos (hand-shake) szinkronizáció vezérli (REQ ACK jelek) 4 állapot REQ_ACK 00 10 11 01 00 Ha az előző átvitelnek vége (ACK =0), akkor Átviteli paraméterek beállítása REQ 1, start Vár ACK-ra, minden jel stabilan tartva Ha ACK megjön, REQ=0 Vár ACK elengedésére A busz adatátviteli ütemezése Az adatátvitel ütemezése szinkron módon Az adatátvitelt a busz órajel ciklusai ütemezik Sokfajta busz ütemezési protokoll létezik, gyakori a címzési és az adat fázis szétválasztása Első ütem: a cím és a vezérlési paraméterek beállítása Második ütem: adatátvitel Jellemzően egy átvitel több órajel ciklus ideig tart (START ÁTVITEL LEZÁRÁS) A MiniRISC busz egyetlen órajel alatt hajtja végre az átvitelt

MiniRISC mintarendszer Bevezetés (Egyszerűsített Blokkvázlat) LED ek DIP kapcsoló A bővítőcsatlakozó B bővítőcsatlakozó 128 x 8 bites adatmemória (0x00 0x7F) basic_owr (0x80) basic_in (0x81) basic_io (0x84 0x87) basic_io (0x88 0x8B) MiniRISC CPU Adatmem. Adatmemória interfész Debug Prg. mem. Debug modul 256 x 16 bites programmemória slave_usrt (0x8E 0x8F) USRT basic_display (0x90 0x9F) basic_timer (0x8C 0x8D) basic_in (0x82) JTAG nyomógombok 29 fejlesztői és kijelzők kommunikációs port MiniRISC processzor, 2013.04.17. (v1.2) MiniRISC interfészei A MiniRISC processzor diasorozat 69-78 diája

Az egyszerűsített MiniRISC rendszer MiniRISC CPU Adat memória IF. Adatmemória interfész Debug Debug modul Prg. mem. 256 x 16 bit program mem. slave_usrt (0x88 0x8B) USR T basic_in (0x81) basic_owr (0x80) 128 x 8 bit adat memória (0x00 0x7F) basic_in_irq (0x84 0x87) JTAG Fejlesztő és komm. interfész DIP kapcsoló LED Nyomógombok Címtartomány Méret Periféria Funkció 0x00 0x7F 128 byte adatmemória 128 x 8 bit memória 0x80 1 byte basic_owr LED periféria 0x81 1 byte basic_in DIP kapcsoló periféria 0x84 0x87 4 byte basic_in_irq Nyomógomb periféria 0x88 0x8B 4 byte slave_usrt Soros USRT kommunikáció 0x90 0xFF 112 byte További perifériák 31 MiniRISC processzor Perifériaillesztés A perifériaillesztési feladat lépései A periféria típusa alapján az igények felmérése Regiszterek száma és használati módja (írható, olvasható) Parancs, státusz, üzemmód, stb. regiszterek Esetleg FIFO vagy kisebb memória blokk A báziscím kijelölése, a címtartomány használatának megtervezése A címdekódolás kialakítása psel = ((cpu2dmem_addr >> N) == (BASEADDR >> N)) A címtartomány mérete 2 N byte Írás engedélyező jelek xxx_wr = psel & cpu2dmem_wr & (cpu2dmem_addr[n 1:0] == ADDR) Olvasás engedélyező jelek xxx_rd = psel & cpu2dmem_rd & (cpu2dmem_addr[n 1:0] == ADDR) Szerepe a kimeneti MUX vezérlése: egy időben csak egy MUX kimenetén van érvényes adat, a többi periféria kimenetének értéke inaktív nulla Használni kell még, ha az olvasás állapotváltozást is okoz (pl. FIFO) 32 Az alsó címbitek vizsgálata akkor kell, ha N > 0

MiniRISC processzor Perifériaillesztés (1. példa Specifikáció) Feladat: 8 darab LED illesztése a processzoros rendszerhez, az állapot legyen visszaolvasható Egyszerű, egy 8 bites írható és olvasható regiszter szükséges Adatregiszter: BASEADDR + 0x00, 8 bites, írható/olvasható Az OUT i bit hajtja meg az i edik LED et 7. bit 6. bit 5. bit 4. bit 3. bit 2. bit 1. bit 0. bit OUT7 OUT6 OUT5 OUT4 OUT3 OUT2 OUT1 OUT0 R/W R/W R/W R/W R/W R/W R/W R/W cpu2dmem_addr BASEADDR cpu2dmem_data cpu2dmem_wr 8 bites regiszter D[7:0] Q[7:0] LD dout 33 A[7:0] B[7:0] psel 8 bites komparátor A=B out 0 1 cpu2dmem_rd MiniRISC processzor, 2014.11.11. (v1.3) 0 dmem2cpu_data MiniRISC processzor Perifériaillesztés (1. példa Megvalósítás Verilog nyelven) Feladat: 8 darab LED illesztése a processzoros rendszerhez module basic_owr #( //A periféria báziscíme. parameter BASEADDR = 8'hff ) ( //Órajel és reset. input wire clk, input wire rst, ); //Adatmemória interfész. input wire [7:0] cpu2dmem_addr, input wire cpu2dmem_wr, input wire cpu2dmem_rd, input wire [7:0] cpu2dmem_data, output reg [7:0] dmem2cpu_data, //Kimenő adat. output reg [7:0] dout //A periféria kiválasztó jele. wire psel = (cpu2dmem_addr == BASEADDR); //Az adatreg. írás engedélyező jele. wire dreg_wr = psel & cpu2dmem_wr; //Az adatreg. olvasás engedélyező jele. wire dreg_rd = psel & cpu2dmem_rd; //Adatregiszter. always @(posedge clk) if (rst) dout <= 8 d0; else if (dreg_wr) dout <= cpu2dmem_data; //Az olvasási adatbusz meghajtása. always @(*) if (dreg_rd) dmem2cpu_data <= dout; else dmem2cpu_data <= 8 d0; endmodule 34 MiniRISC processzor, 2014.11.11. (v1.3)

MiniRISC processzor Perifériaillesztés (2. példa Specifikáció) Feladat: 8 darab kapcsoló illesztése a processzoros rendszerhez Egyszerű, egy 8 bites csak olvasható regiszter szükséges, amely folyamatosan mintavételezi a 8 kapcsoló állapotát Adatregiszter: BASEADDR + 0x00, 8 bites, csak olvasható Az IN i bit az i edik kapcsolón beállított értéket veszi fel 7. bit 6. bit 5. bit 4. bit 3. bit 2. bit 1. bit 0. bit IN7 IN6 IN5 IN4 IN3 IN2 IN1 IN0 R R R R R R R R din Regiszter D[7:0] Q[7:0] 1 dmem2cpu_data 0 0 cpu2dmem_rd EN 8 bites komparátor A=B out A[7:0] B[7:0] 35 cpu2dmem_addr BASEADDR MiniRISC processzor, 2014.11.11. (v1.3) MiniRISC processzor Perifériaillesztés (2. példa Megvalósítás Verilog nyelven) Feladat: 8 darab kapcsoló illesztése a processzoros rendszerhez module basic_in #( //A periféria báziscíme. parameter BASEADDR = 8'hff ) ( //Órajel és reset. input wire clk, input wire rst, ); //Adatmemória interfész. input wire [7:0] cpu2dmem_addr, input wire cpu2dmem_rd, output reg [7:0] dmem2cpu_data, //Bejövő adat. input wire [7:0] din //A periféria kiválasztó jele. wire psel = (cpu2dmem_addr == BASEADDR); //Az adatreg. olvasás engedélyező jele. wire in_reg_rd = psel & cpu2dmem_rd; //Adatregiszter. reg [7:0] in_reg; always @(posedge clk) if (rst) in_reg <= 8 d0; else in_reg <= din; //Az olvasási adatbusz meghajtása. always @(*) if (in_reg_rd) dmem2cpu_data <= in_reg; else dmem2cpu_data <= 8 d0; endmodule 36 MiniRISC processzor, 2014.11.11. (v1.3)

Digitális technika 10. EA vége