Újrakonfigurálható eszközök

Hasonló dokumentumok
Újrakonfigurálható eszközök

Újrakonfigurálható eszközök

Egyszerű RISC CPU tervezése

Újrakonfigurálható eszközök

Újrakonfigurálható eszközök

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

Bevezetés az informatikába

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

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

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

Dr. Oniga István DIGITÁLIS TECHNIKA 8

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

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

Újrakonfigurálható eszközök

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

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

Bevezetés az informatikába

A Picoblaze Core implementálása FPGA-ba

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

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

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

Hardver leíró nyelvek (HDL)

Dr. Oniga István DIGITÁLIS TECHNIKA 9

Informatika érettségi vizsga

A MiniRISC processzor

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

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

A Verilog HDL áttekintése

Hobbi Elektronika. A digitális elektronika alapjai: Újrakonfigurálható logikai eszközök

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

Digitális technika (VIMIAA02) Laboratórium 5

Digitális technika (VIMIAA02) Laboratórium 5

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

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

Újrakonfigurálható eszközök

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

Operandus típusok Bevezetés: Az utasítás-feldolgozás menete

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

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

Digitális technika VIMIAA01 9. hét

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

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

A mikroprocesszor egy RISC felépítésű (LOAD/STORE), Neumann architektúrájú 32 bites soft processzor, amelyet FPGA val valósítunk meg.

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

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

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

Kiegészítő segédlet szinkron sorrendi hálózatok tervezéséhez

Egyszerű mikroprocesszor RTL modellek (VHDL)

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

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

7.hét: A sorrendi hálózatok elemei II.

Összetett feladatok megoldása

Digitális rendszerek. Mikroarchitektúra szintje

Összeadás BCD számokkal

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

Számítógép architektúrák I. Várady Géza

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

Digitális technika VIMIAA02 9. hét

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

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

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

Labor gyakorlat Mikrovezérlők

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

FPGA & Verilog ismertetı. BME Méréstechnika és Információs Rendszerek Tanszék

Processzor (CPU - Central Processing Unit)

14. TARTALOM FUTTATÁSA A FEJLESZTŐLAP HÉTSZEGMENSES KIJELZŐJÉN

11. KÓDÁTALAKÍTÓ TERVEZÉSE HÉTSZEGMENSES KIJELZŐHÖZ A FEJLESZTŐLAPON

Számítógép fajtái. 1) személyi számítógép ( PC, Apple Macintosh) - asztali (desktop) - hordozható (laptop, notebook, palmtop)

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

A LEGO Mindstorms EV3 programozása

Verilog HDL ismertető

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

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

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

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

Alaplap: közös kapcsolódási felület a számítógép részegységei számára

A tervfeladat sorszáma: 1 A tervfeladat címe: ALU egység 8 regiszterrel és 8 utasítással

Hardverközeli programozás 1 1. gyakorlat. Kocsis Gergely

Labor gyakorlat Mikrovezérlők

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

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

7. Fejezet A processzor és a memória

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.

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

MPLAB IDE - SIM - - Rövid ismertető a használathoz - Kincses Levente 3E22 89/ November 14. Szabadka

Újrakonfigurálható technológiák nagy teljesítményű alkalmazásai

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

Véges állapotú gépek (FSM) tervezése

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

DIGITÁLIS TECHNIKA 8 Dr Oniga. I stván István

Adatok ábrázolása, adattípusok

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

Hobbi Elektronika. A digitális elektronika alapjai: Sorrendi logikai áramkörök 4. rész

SZÁMÍTÓGÉP FELÉPÍTÉSE (TK 61-TŐL)

Hobbi Elektronika. A digitális elektronika alapjai: Sorrendi logikai áramkörök 2. rész

DIGITÁLIS TECHNIKA I

Digitális Rendszerek és Számítógép Architektúrák (BSc államvizsga tétel)

Központi vezérlőegység

Digitális technika (VIMIAA01) Laboratórium 4

Digitális rendszerek. Digitális logika szintje

Átírás:

Újrakonfigurálható eszközök 8. Egy minimalista 8-bites mikrovezérlő tervezése 1

Felhasznált irodalom és segédanyagok Icarus Verilog Simulator: htttp:iverilog.icarus.com/ University of Washington Comttputer Science & Engineering, CSE370 Lecture 23: Factoring FSMsDesign Examttples ASIC world Verilog tutorial: asic-world.com/verilog/veritut.html GtkWave wave viever: htttp:gtkwave.sourceforge.net/ Verilog online tutorial: vol.verilog.com/vol/main.htm Verilog tutorial for beginners: www.referencedesigner.com/tutorials/verilog/verilog_01.ttphttp Végh János: Bevezetés a Verilog hardverleíró nyelvbe Végh János: Segédeszközök az Altera DE2 tanulói készlethez Végh János: Bevezetés a Qartus II V13 fejlesztő rendszerbe 2

A digitális számítógépek felépítése A digitális számítógép alapegységei: Processzor (CPU központi feldolgozó egység) Memória A be- és kimeneti egységek illesztő áramkörei A CPU vezérli a számítógéttp működését, a memóriában tárolt ttprogram alattpján, aritmetikai és logikai műveleteket végez. A memória tárolja a ttprogramot és az adatokat. A be- és kimeneti egységek illesztő áramkörei lehetővé teszik a ttperifériák (be- és kimeneti egységek) csatlakoztatását. A ttperifériák a számítógéttp közttponti egységéhez kívülről csatlakozó eszközök, amelyek az adatok ki- vagy bevitelét teszik lehetővé. 3

A digitális számítógépek fejlődése EDVAC 1949 DEC PDP-8 1965 Microchittp PIC18Fxxx Intel 8080 4

A sín koncepció A közttponti egység, a memória és a ttperifériák vezérlői közös adatcím- és vezérlőjel vezetékeken (sín, angolul bus) kommunikálnak A Hardvard feléttpítésű eszközökben az utasítások és az adatok külön-külön adatsínen áramlanak A Neumann feléttpítésű eszközöknél az adatsín közös 5

Egyszerű CPU felépítése, főbb összetevői 6

Egyszerű CPU felépítése, főbb összetevői PC utasítás-számláló Utasítás-dekóder Cím- és adatsín IR utasítás regiszter Akkumulátor regiszter ALU aritmetikai és logikai egység RAM memória vagy regisztertömb Az ábrán nem tüntetük fel az óra- és ütemező jeleket! 7

Mi az ALU? A rövidítés az Arithmetic Logic Unit (aritmetikai és logikai egység) elnevezést takarja Az ALU a matematikai (összeadás, kivonás) és a logikai (komttplemenskéttpzés, ÉS, VAGY, XOR stb.) műveletvégzések helye Az ALU koncettpciót Neuman János javasolta 1945-ben, amikor az EDVAC tervein dolgozot. A Neumann-elvek: Teljesen elektronikus működés Soros utasítás-végrehajtás Ketes számrendszer használata Univerzális felhasználhatóság, Belső memória használata Tárolt program elve. Szerkezet: öt funkcionális egység (aritmetikai egység, központi vezérlőegység, memóriák, bemeneti és kimeneti egységek 8

Egy tipikus ALU sematikus vázlata A és B az úgynevezet ottperandusok Az Y eredmény az akkumulátor regiszterbe (PIC-nél WREG) íródik Az ALU műveleteket az utasításból kattpot műveleti kód (Ottpcode) vezérli A műveletek során státusbitek keletkezhetnek (C, Z, OV stb.), ill. a korábbi állattpotot is fgyelembe kell venni 9

Leegyszerűsítet ALU Verilog kódja Az ALU általában kombinációs logikai hálózatal írható le Ebben a ttprimitív ttpéldában a státus bitekkel nem foglalkoztunk It most a és b bemenet a két ottperandus, operation a műveleti kód, s a result kimeneten jelenik meg az eredmény module ALU_32_bit( input [31:0] a; input [31:0] b; input [1:0] operation; output reg [31:0]result; ); always@ (*) begin case (operation) 2'b00: result 2'b01: result 2'b10: result 2'b11: result endcase end endmodule = = = = a a a a & + - b; b; b; b; 10 AND OR addition subtraction

74S181 4 bites ALU a múlt évezredbőll Számos számítógéttp éttpült erre az IC-re (ttpl. PDP-11, VAX-11/780) a 80-as években 11

74S181 4 bites ALU a múlt évezredbőll Az M bemenet állattpotától függően logikai vagy aritmetikai művelet történik, ahol s0 s3 adják meg a művelet kódját 12

MCPU - Minimalista 8bit CPU, 32 makrocellából Tim Böscke érdekes ttprojektje. Link: github.com/cttpldcttpu/mcpu Makrók (több utasítás kombinálásával) Utasítás készlet 13

Adat- és címfeldolgozás A felhasznált erőforrások minimalizálása érdekében külön adatadatút és cím-adatút készült, emiat a cím léttptetéshez egy külön inkrementáló is kellet Nincs IR regiszter 14

Adat- és címfeldolgozás 0 1 2 3 4 5 6 7 8 9 10 Memory 15

Vezérlés, állapotgép Az adatutat egy 5 állattpotú állattpotgéttp vezérli Majdnem minden utasítás két állattpotból áll (kivéve az ugró utasítást C =0 esetén) Állapot Funkció Műveletek Következő állapot [5:0] 00: 01: 10: 11: 16 NOR ADD STA JCC

MCPU Verilog kódja (2/1 rész) Különös fgyelmet igényel data kezelése, ami kétirányú (inout) module mcpu(data,adress,oe,we,rst,clk); inout [7:0] data; output [5:0] adress; output oe; output we; input rst; input clk; reg reg reg reg [8:0] [5:0] [5:0] [2:0] accumulator; adreg; pc; states;... assign assign assign assign Kétirányú adatforgalom (a RamChip memória modul is kezeli) accumulator(8) is carry! Ez a rész külön lapon! adress data oe we = = = = adreg; states!=3'b001? 8'bZZZZZZZZ : accumulator[7:0]; clk ~rst states==3'b001 states==3'b101 ; clk ~rst (states!=3'b001) ; endmodule 17

MCPU Verilog kódja (2/2 rész) always @(posedge clk) if (~rst) begin adreg <= 0; states <= 0; az összes bit VAGY kapcsolata accumulator <= 0; pc <= 0; & az összes bit ÉS kapcsolata end ^ az összes bit XOR kapcsolata else begin (paritásbit) --- PC/Address path if (~ states) begin pc <= adreg + 1'b1; adreg <= data[5:0]; was adreg <=pc, aw fix. end else adreg <= pc; --- ALU/Data Path -------case(states) 3'b010 : accumulator <= {1'b0,accumulator[7:0]} + {1'b0,data}; add 3'b011 : accumulator[7:0] <= ~(accumulator[7:0] data); nor 3'b101 : accumulator[8] <= 1'b0; branch not taken, clear carry endcase default: instruction fetch, jcc taken Redukciós operátorok --- State machine -------if ( states) states <= 0; else begin if ( &data[7:6] && accumulator[8] ) states <= 3'b101; else states <= {1'b0, ~data[7:6]}; end end 18

A próbapad modul kódja `timescale 1ns / 1ns module test_bench; wire [7:0] data; wire [5:0] adress; wire oe, we; reg rst,clk; mcpu dut (data,adress,oe,we,rst,clk); RamChip ram (adress, data, 1'b0, we, oe); initial begin $dumpfile("test.vcd"); $dumpvars(0,test_bench); clk <= 0; rst <= 1; #50 clk <= 0; rst <= 0; #50 clk <= 1; #25 rst <= 1; #5000 $finish; end initial begin forever #50 clk =!clk; end MCPU példányosítása RAM memória példányosítása Változók naplózása Gtkwave számára 10 MHz Clock generator endmodule 19

A RAM memória kódja module RamChip (Address, Data, CS, WE, OE); had to add the #5 delay to get the MCPU parameter AddressSize = 6; to work -- the state machine needs the parameter WordSize = 8; input [AddressSize-1:0] Address; data to hold past the posedge clk. inout [WordSize-1:0] Data; input CS, WE, OE; reg [WordSize-1:0] Mem [0:1<<AddressSize]; assign #5 Data = (!CS &&!OE)? Mem[Address] : {WordSize{1'bz}}; initial begin Mem[61]= 8'b00000000; Mem[62]= 8'b11111111; Mem[63]= 8'b00000001; Mem[00]= 8'b00111110; Mem[01]= 8'b01000110; Mem[02]= 8'b01111111; Mem[03]= 8'b11000010; Mem[04]= 8'b11000100; Mem[05]= 8'b11000100; Mem[06]= 8'b11110110; Mem[07]= 8'b00000000; end pre-program 00 zero: FF allone: 01 one: 3E 46 7F cloop: C2 C4 loop: C4 F6 count: 00 the RAM DCB 0 DCB (256-1) DCB 1 LDA count (NOR allone) (ADD counter) ADD one JCC cloop JCC loop JCC loop DCB (256-10) A program elszámlál -10-től nulláig, majd végtelen ciklusra fut always @(CS or WE) if (!CS &&!WE) Mem[Address] = Data; always @(WE or OE) if (!WE &&!OE) $display("operational error in RamChip: OE and WE both active"); endmodule 20

PC szimuláció Az MCPU ttprojekt assemblert és szimulátort is tartalmaz Futassuk ttpl. a test.asm ttprogramot a do test ttparanccsal! (ennek kifejtése: smal test.asm és cttpu3emu test.o) 21

Iverilog szimuláció > PATH= %PATH%;C:\iverilog\bin;C:\iverilog\gtkwave\bin > iverilog -o test MCPU0.1a.v tb.v > vvp test 00003D: 00 FF 000000: 3E 46 > gtkwave test 000002: 7F 000003: C2 000004: C4 000006: F6 22 C4 01 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ;23.09.2000 Tim B"oscke USE "cpu3.inc" label0: cloop: loop: count: END LDA count ADD JCC one cloop JMP loop DCB (256-10)

Iverilog szimuláció A program futása a utasítás végtelen ismételgetésével ér véget (az akkumulátor túlcsordulása után) JMP loop 00003D: 00 FF 000000: 3E 46 000002: 7F 000003: C2 000004: C4 000006: F6 23 C4 01 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ;23.09.2000 Tim B"oscke USE "cpu3.inc" label0: cloop: loop: count: END LDA count ADD JCC one cloop JMP loop DCB (256-10)