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)

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

Digitális technika VIMIAA hét

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

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 (VIMIAA01) Laboratórium 9

Digitális technika (VIMIAA01) Laboratórium 9

Egyszerű RISC CPU tervezése

Az interrupt Benesóczky Zoltán 2004

Mikrorendszerek tervezése

Digitális technika (VIMIAA01) Laboratórium 11

I. C8051Fxxx mikrovezérlők hardverfelépítése, működése. II. C8051Fxxx mikrovezérlők programozása. III. Digitális perifériák

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

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

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

Dr. Oniga István DIGITÁLIS TECHNIKA 8

Digitális technika (VIMIAA01) Laboratórium 11

Digitális technika VIMIAA01

Digitális technika VIMIAA01

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

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.

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

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

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

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

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

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

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

Digitális technika VIMIAA02 9. hét

Digitális rendszerek. Digitális logika szintje

Újrakonfigurálható eszközök

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

Dr. Oniga István DIGITÁLIS TECHNIKA 9

Digitális technika (VIMIAA02) Laboratórium 12

Digitális technika (VIMIAA02) Laboratórium 12

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

Programozási segédlet DS89C450 Fejlesztőpanelhez

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

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

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

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

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

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

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

Periféria kezelési módszerek. programozott megszakításos DMA-s - közvetlen szoftver ütemezés - lekérdezéses ütemezés

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

Digitális technika (VIMIAA02) Laboratórium 5

Digitális technika (VIMIAA02) Laboratórium 5

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

Digitális technika (VIMIAA02) Laboratórium 4

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

Mechatronika és mikroszámítógépek. 2018/2019 I. félév. Külső megszakítások

Újrakonfigurálható eszközök

Architektúra, megszakítási rendszerek

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

Mikrorendszerek tervezése

Digitális technika VIMIAA01

Digitális technika VIMIAA01

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

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

_INVHU000_WriteReadParameter.cxf Frekvenciaváltók

Újrakonfigurálható eszközök

Digitális technika VIMIAA hét

Digitális technika VIMIAA hét

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

SZORGALMI FELADAT. 17. Oktober

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

Digitális technika (VIMIAA02) Laboratórium 4

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

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

Digitális technika VIMIAA02 6. EA

Bevezetés az informatikába

Digitális technika VIMIAA02 6. EA Fehér Béla BME MIT

I 2 C, SPI, I 2 S, USB, PWM, UART, IrDA

Szántó Péter BME Méréstechnika és Információs Rendszerek Tanszék, FPGA Labor

funkcionális elemek regiszter latch számláló shiftregiszter multiplexer dekóder komparátor összeadó ALU BCD/7szegmenses dekóder stb...

A MiniRISC processzor

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

1 done by: b+bme. Adja meg, hogy milyen ICW3 parancsot kell küldeni a MASTER illetve a SLAVE egységeknek!

Az MSP430 mikrovezérlők digitális I/O programozása

Verilog ismertető (Szántó Péter, BME MIT, )

A MiniRISC processzor

8.3. AZ ASIC TESZTELÉSE

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

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

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

KINCO árlista. Viszonteladói árlista. K2 PLC család K5 PLC család MT,GL univerzális kijelzők CV frekvenciaváltók PS tápegységek

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

Digitális elektronika gyakorlat

PWM elve, mikroszervó motor vezérlése MiniRISC processzoron

Jeltárolás. Monitorozás

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

VEZÉRLŐEGYSÉGEK. Tartalom

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

Digitális technika (VIMIAA01) Laboratórium 4

Mikrorendszerek tervezése

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

Tervezési módszerek programozható logikai eszközökkel

Újrakonfigurálható eszközök

Átírás:

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)

Periféria illesztés mikroprocesszoros buszra (áramkörön belüli szinkron busz esetén) KÓDMEMÓIA ADD DATA pmem2cpu_data cpu2pmem_addr gen. gen. arbit. log. bus_grant ADAT MEMÓIA (0x00-0x7f) ÉS PEIFÉIA (0x0-0xff) TEÜLET IQ DOU (cpu2dmem_data) perif.tól DIN (dmem2cpu_data) ADD (cpu2dmem_addr) PC LD E counter MUX Z,C,N,V, IE,IF STACK push pop 14 I E MUX1 WdX WEX EG. TÖMB (0-15) AddrX AddrY POCESSZO ADATSTUKTÚA 0x00 () 0x01 stack (IT) ugr.cím FLAGSfromStack IE IF VEZÉLÉS dx konstans ugr.cím dy MUX2 FLAGSfromStack MUX FSM FETCH->DECODE->EXECUTE->(IT) FELTÉTEL JELEK OP1 ALU OP2 FLAG Z C N V POCESSZO VEZÉLÕ MiniISC processzor feltétel jelekhez

Áramkörön belüli busz (pl. FPGA-ban megvalósított és perifériák esetén) a busz felület óra gen. ESET gen. MiniISC busz felület bus_grant IQ DIN[7:0] ADD vezérlõ busz írás a mem/per.-ba mov addr1, 1 írás execute fázis addr1 cím busz adat busz olvasás mem/per.-ból mov 2, addr2 olv. execute fázis addr2 DOU 0x00 1 0x00 0x00 DIN 0x00 0x00 (addr2) 0x00

A perifériák tipikus programozói felülete busz illesztés periféria funkció B U S Z DIN DOUT ADD IQ ADAT EGISZTE(EK) ÁLLAPOT EGISZTE PAANCS EGISZTE(EK) ÜZEMMÓD EGISZTE(EK) konkrét periféria funkciót megvalósító egység külvilághoz csatlakozó jelek Üzemmód regiszter: A periféria működési módjának beállítására szolgál. Egy-egy periféria egy adott feladatcsoport megoldását teszi lehetővé konfigurálható üzemmódok segítségével (pl. egy timer egységgel időzítési, számlálási, impulzus generálási feladatok oldhatók meg). Parancs regiszter: A periféria valamely működését lehet vele kezdeményezni. Pl. A/D konverzió indítása. Sokszor az üzemmód és parancs reigsztert összevonják és vezérlő regiszternek nevezik. Állapot (státus) regiszter: A periféria állapotáról ad információkat. Az állapotregiszter bitjei ún. megszakítást is kérhetnek, ha az engedélyezett. Adat regiszter: Ide kell beírni itt lehet kiolvasni az adatot (nem feltétlenül ugyanazt, amit beírtunk).

Kimeneti port regiszter illesztése Mini ISC processzorhoz 1 kimeneti regiszter esetén (a periféria 1 címet foglal) MiniISC busz felület DIN[7:0] cím komparátor bus_grant IQ COMP peiféria cím (pl. 0x0A0) Írási ciklus: mov r0, #adat1 mov, r0 execute fázis = EG0_ ADD[7-0] adat1 ld D Q EG0 OUT adat1 EG0_ DOUT[7-0] adat1 OUT[7-0] adat1

Egy címmel rendelekező írható periféria illsztése cím felismerése konstans komparátorral: A7-A0 konstans komparátor AND kapuval: A7-A0 konstans komparátor jelölése: komp = =0xa0 periféria cím: 0xa0 Írási ciklus: mov 0, #adat1; 1<-adat1 mov,0; execute fázis proc címbusz: A7-A0 parameter BASE_ADD = 'HA0; assign = ADD == BASE_ADD; assign EG0_ = & ; A7-0 =0xa0 írás után EG0 = adat1 adat1 EG0_ Ld EG0 always @(posedge ) if() EG0 <= 'H00; else if(eg0_) EG0 <= DOUT; CLK EG0_ DOUT7-0 adat1 DOUT7-0 (processzor kimeneti adat busz) adat1 OUT7-0 adat1

Kimeneti port, regiszter illesztése Mini ISC processzorhoz 2 kimeneti regiszter esetén (a periféria 2 címet foglal) MiniISC busz felület DIN[7:0] cím komparátor bus_grant IQ A0 ADD[7:1] 7 COMP = 7 bázis cím[7:1] (pl. 0x0A01>>1) =0 ~A0 assign = (ADD>>1) == (BASE_ADD>>1)); assign EG0_ = &~A0 & ; assign EG1_ = & A0 & ; A0 =1 A0 EG0_ ld OUT0 D Q EG0 EG1_ ld OUT1 D Q EG0

Bemeneti port illesztése Mini ISC processzorhoz 1 adat forrás esetén (a periféria 1 címet foglal) bus_grant IQ mov r0, Olvasási ciklus: execute fázis ADD[7-0] DIN[7:0] P0_DATA MPX OU bemeneti adatbusz multiplexer (elosztva alakítjuk ki) s0 I0 s1 I1 P1_ MiniISC busz felület P1_DATA COMP = P0_ P0_DATA cím komparátor peiféria cím (pl. 0x0A0) 1 címet foglaló bemeneti periféria illesztése P0_ DIN[7-0] () sn In Px_ Px_DATA 0 P0_DATA

Bemeneti port illesztése Mini ISC processzorhoz 1 adat forrás esetén (a periféria 1 címet foglal) MiniISC busz felület bus_grant IQ DIN[7:0] COMP = 0 cím komparátor peiféria cím (pl. 0x0A0) mov r0, Olvasási ciklus: execute fázis ADD[7-0] P0_DATA adatbusz multiplexer DIN[7] DIN[6] DIN[5] DIN[4] DIN[3] P0DO[7] P0DO[6] P0DO[5] P0DO[4] P0DO[3] P0_ P0_DATA Elosztott multiplexer: Az adatbusz MPX O kapuit a processzorhoz, AND kapuit a perifériákhoz rendeljük P0_ DIN[2] P0DO[2] DIN[7-0] 0 () 0=P0_DATA DIN[1] DIN[0] P0DO[1] P0DO[0] elosztott MPX logika részlete másik perifériához tartozó bemeneti csatorna AND kapuiról (melyek kimenete most 0x00)

Bemeneti port illesztése Mini ISC processzorhoz 1 adat forrás esetén (a periféria 1 címet foglal) Egyszerűsített busz O és közös engedélyezésű busz AND jelöléssel bus_grant IQ mov r0, Olvasási ciklus: execute fázis ADD[7-0] MEM_DOU DIN[7:0] P0_DATA P1_DOU P0_DOU = P0_DATA MiniISC busz felület COMP = DATA_ cím komparátor peiféria cím (pl. 0x0A0) P0_DATA 1 címet foglaló bemeneti periféria illesztése P0_ DIN[7-0] () 0 P0_DATA

Bemeneti port illesztése Mini ISC processzorhoz 2 adat forrás esetén (a periféria 2 címet foglal) - Kódolatlan select-tekkel rendelkező multiplexert használva bus_grant IQ mov r0, Olvasási ciklus: execute fázis ADD[7:1] DIN[7:0]= P0_DATA0 MiniISC busz felület A0 P0_0 7 cím komparátor COMP = 7 bázis cím [7:1] (pl. 0x0A0 >>1) DEKÓDE ADD[7-0] P0_ 0xA1 P0_DOU P1_DOU MEM_DOU s0 P0_DATA0 I0 OU P0_1 s1 I1 P0_DATA1 MPX (dek=dolatlan s bemenetekkel) DIN[7-0] 0 () P0_DATA0 2 címet foglaló bemeneti periféria illesztése

Bemeneti port illesztése Mini ISC processzorhoz 2 adat forrás esetén (a periféria 2 címet foglal) - Kódolt select-tel rendelekező multiplexert használva bus_grant IQ mov r0, 0xA1 Olvasási ciklus: execute fázis ADD[7-0] 0xA1 P0_ DIN[7-0] (0xA1) DIN[7:0]=P0_DATA1 P1_DOU MEM_DOU P0_DOU 0xA1 MiniISC busz felület A0=1 s cím komparátor 7 COMP = 7 peiféria cím (pl. 0x0A0) OU e I0 I1 P P0_DATA0 P0_DATA1 MPX (dekódolt s bemenettel) 2 címet foglaló bemeneti periféria illesztése 0 P0_DATA1

4 címet foglaló periféria illesztése: parancs (/), státus (), adat ki (), adat be () 0xa0 0xa1 0xa2 0xa3 assign = ((ADD >>2) == (BASE_ADD>>2)); A7-A2 =BASE_ADD[7:2] parameter BASE_ADD = 'HA0; A7 A6 A5 A4 A3 A2 A1 A0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 A1A0 =0 0 1 1 0 1 1 W/ W COMAND STATUS DATA_OUT parameter DATOU_ADD = 2'b10; DATA_IN COMM_ parameter COMM_ADD = 2'b00; parameter STAT_ADD = 2'b01; parameter DATIN_ADD = 2'b11; COMM_ egyéb slave-ekhez COMMAND Ld EG assign COMM_ = & & ({A1,A0} == COMM_ADD); DATOU_ DATA_OUT Ld EG always @(posedge ) if() COMMAND <= 0x00; always @(posedge ) if() DATA_OUT <= 0x00; else else if(comm_) COMMAND <= DOUT; if(datou_) DATA_OUT <= DOUT; egyéb slave-ektől PD POCESSZO ESET CLK DOUT7-0 DIN7-0 BÁZISCÍM KOMPAÁTO =1 =2 =3 PAANCS DEKÓDE COMM_ STAT_ assign COMM_ = & & ({A1,A0} == COM M_ADD); assign STAT_ = & & ({A1,A0} == STAT_ADD); DATOU_ assign DATOU_ = & & ({A1,A0} == DATOU_ADD); DATIN_ assign DATIN_ = & & ({A1,A0} == DATIN_ADD); S0 I0 S1 MPX COMM_ COMMAND STATUS DATA_IN STAT_ DATIN_ I1 S2 always @(*) case ({COMM_,STAT_, DATIN_}) 3'b100: PD <= COMMAND; 3'b010: PD <= STATUS; default: PD <= 'h00; endcase I2 3'b001: PD <= DATA_IN;

GPIO általánios célú be/kimeneti port GPIO A felépítése x I_O parameter BASE_ADD = 'HA0; A7 A6 A5 A4 A3 A2 A1 A0 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 /W /W OUT_EG IN_EG DI_EG BUFF E OUT_EGi DI_EGi IN_EGi OUT_EG parameter OUT_ADD = 2'b00; Ld OUT_EG CLK Ld parameter IN_ADD = 2'b01; parameter DI_ADD = 2'b10; OUT_ DI_ DI_EG DI_EG CLK IN_EG IN_EG always @ (posedge ) IN_EG <= I_O; DOUT7-0 A7-A2 =BASE_ADD[7:2] assign = (ADD >>2) == (BASE_ADD >> 2) ; másképp is lehet: assign = ADD[7:2] == BASE_ADD[7:2]; A1A0 =0 =1 =2 =3 OUT_ assign OUT_ = & & ({A1,A0} == OUT_ADD); OUT_ assign OUT_ = & & ({A1,A0} == OUT_ADD); IN_ assign IN_ = & & ({A1,A0} == IN_ADD); DI_ assign DI_ = & & ({A1,A0} == DI_ADD); DI_ always @ (posedge ) if() OUT_EG <= 0x00; else if(out_ OUT_EG <= DOUT; assign DI_ = & & ({A1,A0} == DI_ADD); always @ (posedge ) if() DI_EG <= 0x00; else if(di_ DI_EG <= DOUT; SI0 I0 adatok egyéb perifériáktól SI1 MPX OUT_ OUT_EG IN_EG DI_EG IN_ DI_ I1 SI2 always @ (*) case ({OUT_,IN_, DI_}) I2 3'b100: DIN <= OUT_EG; 3'b010: DIN <= IN_EG; 3'b001: DIN <= DI_EG; default: DIN <= 'h00; endcase POCESSZO DIN7-0 CLK

TIME egység blokkvázlata (cím és parancs dekódolók nélkül) DIN7-0 IQ (TIT) SI0 I0 MPX SI1 I1 TIE TOUT tm_rd TM ts_rd STÁTUSZ: TIT, TPS2-0, 0, TOUT, TEP, TEN Q S tmr_cnt_tc Q E TM lefele számláló LD LD0xff D ps_tc PS elõosztó ps_cnt_clr E ts_rd TPS2-0 tc_wr TPS2-0 TEP TIE TC LD parancs reg. DO7-0 I0 MPX T T LD kezdõérték reg. LD0xff DO7-0 I1 s DO7-0 TEN Q TEP ciklikus üzemmód tr_wr Timer engedéyezés (parancs reg) TC LD D DO0 tc_wr D7 D6 D5 D4 D3 D2 D1 D0 parancs regiszter TC: TIE TPS2 TPS1 TPS0 - TEP TEN státus regszter TS: TIT TPS2 TPS1 TPS0 0 TOUT TEP TEN TPS2-0: 000 001 010 011 100 101 110 111 előosztás: 1 16 64 256 1024 4096 1634 65536 Periódusidő (frekvencia) ha f: 16MHz 1/16 us (16MHz) 1 us (1MHz) 4 us (250kHz) 16 us (62500Hz) 64 us (15625Hz) 256 us (3906.25Hz) 1024 us (976.5625Hz) 4096 us (244.141Hz)

UST blokkvázlata (cím és parancs dekódolók nélkül) rxfull rxne FULL EMPTY rx_data FIFO clr rd_data rx_valid UST VEVÕ XCL XEN ST LD3ff SH(10bit) STP SI E DO3 ctrl_wr XD FALL éldetektáló SCLK ISE s_rise 1 LD3ff E SI SH(9bit) SH 0 SO LD TXEN TXD UST ADÓ txnf tx_empty FULL EMPTY FIFO clr tx_empty tx_ld TC cnt10 CL s_rise TXCL E LD9 ctrl_wr DO2 tx_adat wr_data D7 D6 D5 D4 D3 D2 D1 D0 parancs regiszter UC: - - - - XCL TXCL XEN TXEN státus regszter US: 0 0 0 0 XFULL XNE TXNF TXEMPTY IT engedélyezés UIE 0 0 0 0 XFULL XNE TXNF TXEMPTY

Két maste rendszer mintapélda, MiniISC processzor és DMA vezérlő (DMC) Perifériák Perifériák, adat memória IQ kiementeirõl adat kimeneteirõl vezérlõbusz CLK ST kimeneti adat busz címbusz mst2slv_data DOUT ADD in adatbusz slv2mst_data cpu2slv_addr dma2slv_addr cpu2slav_data dma2slv_data DMA_IQ IQ DIN ADD DOUT DOUT_M M_ADD _M _M DIN_M DIN DOUT cpu_bus_rq dma_bus_rq bus_rq bus_rq ABITE miniisc CPU cpu_bus_grant dma_bus_grant DMC bus_grant bus_grant ADD IQ CLK ST CLK ST