Upload
hera
View
83
Download
4
Embed Size (px)
DESCRIPTION
GSPV. GRADNIKI SISTEMOV PROCESNEGA VODENJA. UNI- Elektrotehnika - Avtomatika. Procesna avtomatika - Inteligentni sistemi. 4. letnik (7. semester). NAČTOVANJE MIKRORAČUNALNIKA. Razvoj strojne opreme. Razvoj programske opreme. analiza kompleksnosti problema - PowerPoint PPT Presentation
Citation preview
GRADNIKI SISTEMOV PROCESNEGA VODENJA
GSPV
Procesna avtomatika - Inteligentni sistemi
UNI- Elektrotehnika - Avtomatika
4. letnik (7. semester)
NAČTOVANJE MIKRORAČUNALNIKA
Razvoj strojneopreme
Razvoj programske opreme
• izbira komponent • načrtovanje vezja• električne lastnosti• mehanske lastnosti
• zgradba prog. opreme• izbira OS in prog. jezika• krmilniki za periferijo • algoritmi in kodiranje
• analiza kompleksnosti problema• izbira osnovnih parametrov (procesor, količina pomnilnika,…)
ZGRADBA MIKRORAČUNALNIKA
CPU ROM RAM I/O
Podatkovno vodilo
Kontrolno vodilo
Naslovno vodilo
Mikroprocesor (CPU)
Zgradba:• CISC• RISC• DSP
Tehnologija:• NMOS• CMOS• 5m - 0.15m
Širina vodila:• 8 bitov• 16 bitov• 32 bitov• 64 bitov
Pakiranje (ohišje):• DIL• PGA ...• SO, TSOP, TQFP, BGA ...
Poraba energ.
Napajalnanapetost:• 5 V• 3.3V• 2.5V• 1.8V
Cena:1$ - 1000$
MIKROPROCESOR MC6800
prvi Motorolin mikroprocesor (1974) 8 bitno podatkovno vodilo 16 bitno naslovno vodilo 72 ukazov 6 internih registrov 7 načinov naslavljanja frekvenca ure: 2 MHz
Dekodirnik ukazov
+nadzor
ALU
Vmesnik za
krmiljenje vodil
OSNOVNE ENOTE MIKROPROCESORJA MC6800
Registri
MIKROPROCESOR MC6800 - Programski model
0
0
0
0
0
0
7
7
7
15
15
15
1 1 H I N Z V C
ACCA
ACCB
IX
PC
SP
CCR
Akumulator A
Akumulator B
Indeksni register
Programski števec
Kazalec sklada
Statusni register
CarryOverflowZeroNegativeInterruptHalf Carry
ZGRADBA MIKROPROCESORJA MC6800
Dekodirnik ukazov
+nadzor
Programski števec (H)
Kazalec sklada (H)
Indeksni register (H)
Ukazni register
Programski števec (L)
Kazalec sklada (L)
Indeksni register (L)
Akumulator A
Akumulator B
Statusni register
ALU
Podatkovni vmesnik
Vmesnik za nalove (H) Vmesnik za nalove (L)
D7 D6 D5 D4 D3 D2 D1 D0
A7 A6 A5 A4 A3 A2 A1 A0A15 A14 A13 A12 A11 A10 A9 A8
RESETNMI
HALTIRQTSCDBE
BAVMAR/W
PRIKLJUČKI MIKROPROCESORJA MC6800
– D0 - D7 Data Bus– A0 - A15 Address Bus– DBE Data Bus Enable– BA Bus Available– R/W Read / Write– RESET Reset– IRQ Interupt Request– NMI Non Maskable Interrupt– VMA Valid Memory Address– TSC Three-State Control– HALT Halt– 1 Clock Phase 1– 2 Clock Phase 2– VCC Supply Voltage (+5V)– VSS Ground
Podatkovno vodiloNaslovno vodilo
Kontrolno vodilo
Napajanje
POMNILNIŠKI PROSTOR PROCESORJA
26382A5CEF003A16000000
0000000100020003000400050006000700080009000A
46FFFEACFFFF
• •
Naslov Vsebina
Širina naslovnegavodila
Naslovljivpomnilnik
16 bitov 64K20 bitov 1MB24 bitov 16MB32 bitov 4GB
POMNILNIŠKI PROSTOR PROCESORJA
26382A
00
3A
16
00
00
00
000000010002
00FF
3FFF
4000
7FFF
8000
4001
468001
ACFFFF
• •
Prosto
I/O (256 bytov)• •
000100• •
• •
RAM (16KB)
ROM (32KB)
• •
• •
• •
• •
64KB
IZVRŠEVANJE UKAZA LDAA - korak 1
26382A5CEF003A
1696244C
0020002100220023002400250026
1F451F461F471F48
971F49231F4A
• •
• •
• •
LDAA$24
INCASTAA$23
CPU RAM
Akumulator A
Programski števec
Ukazni register
1F46
Naslovno vodilo
Podatkovno vodilo
1F46
1
2
96 4
3
96
Naslovni register
IZVRŠEVANJE UKAZA LDAA - korak 2
26382A5CEF003A
1696244C
0020002100220023002400250026
1F451F461F471F48
971F49231F4A
• •
• •
• •
LDAA$24
INCASTAA$23
CPU RAM
Akumulator A
Programski števec
Ukazni register
1F46
Naslovno vodilo
Podatkovno vodilo
1F47
1
2
96
3
24
Naslovni register
40024
IZVRŠEVANJE UKAZA LDAA - korak 3
26382A5CEF003A
1696244C
0020002100220023002400250026
1F451F461F471F48
971F49231F4A
• •
• •
• •
LDAA$24
INCASTAA$23
CPU RAM
Akumulator A
Programski števec
Ukazni register
Naslovno vodilo
Podatkovno vodilo
0024
12
96
3
EF
Naslovni register
4EF
0024
1F46 51F48
IZVRŠEVANJE UKAZA INCA - korak 1
26382A5CEF003A
1696244C
0020002100220023002400250026
1F451F461F471F48
971F49231F4A
• •
• •
• •
LDAA$24
INCASTAA$23
CPU RAM
Akumulator A
Programski števec
Ukazni register
1F48
Naslovno vodilo
Podatkovno vodilo
1F48
1
296
3
4C
Naslovni register
EF
0024
44C
5F0
61F49
IZVRŠEVANJE UKAZA STAA - korak 1
26382A5CEF003A
1696244C
0020002100220023002400250026
1F451F461F471F48
971F49211F4A
• •
• •
• •
LDAA$24
INCASTAA$21
CPU RAM
Akumulator A
Programski števec
Ukazni register
1F49
Naslovno vodilo
Podatkovno vodilo
1F49
1
24C
3
97
Naslovni register
F0
0024
497
IZVRŠEVANJE UKAZA STAA - korak 2
26382A5CEF003A
1696244C
0020002100220023002400250026
1F451F461F471F48
971F49211F4A
• •
• •
• •
LDAA$24
INCASTAA$21
CPU RAM
Akumulator A
Programski števec
Ukazni register
1F49
Naslovno vodilo
Podatkovno vodilo
1F4A
1
297
3
21
Naslovni register
F0
0024 40021
IZVRŠEVANJE UKAZA STAA - korak 3
26382A5CEF003A
1696244C
0020002100220023002400250026
1F451F461F471F48
971F49211F4A
• •
• •
• •
LDAA$24
INCASTAA$21
CPU RAM
Akumulator A
Programski števec
Ukazni register
1F49
Naslovno vodilo
Podatkovno vodilo
0021
1
97
2
F0
Naslovni register
F0
0021
41F4B F0
3
NAČINI NASLAVLJANJA
• V prvih 256 bytih pomnilnika Direktno (Direct)• V pomnilniku Razširjeno (Extended)• Takoj za kodo ukaza Takojšnje (Immediate)• Operanda ni ali je v akumulatorju Vsebovano (Inherent)• Naslov operanda = PC +/- odmik, ki je za kodo ukaza Relativno (Relative)• Nalov operanda = X + odmik, ki je za kodo ukaza Indeksno (Indexed)
Kje se nahaja operand ?
UKAZ = KODA UKAZA + OPERAND
Načini naslavljanja: Direktno naslavljanje
Ukazn
• •
Z = Naslov operandan+1
Naslednji ukazn+2• •
K = OperandZ
ali
KH = OperandZ
KL = OperandZ+1
Primeri:LDAA $F0 - Preberi v akumulator A vrednost, ki je shranjena na naslovu $F0.ADDA $17 - Prištej akumulatorju A vrednost, ki je shranjena na naslovu $17.
ZL = Naslov operanda
Načini naslavljanja: Razširjeno naslavljanje
Ukazn
• •
ZH = Naslov operandan+1
Naslednji ukazn+3• •
K = OperandZ
ali
KH = OperandZ
KL = OperandZ+1
Primeri:LDAA $7AF0 - Preberi v akumulator A vrednost, ki je shranjena na naslovu $7AF0.LDX $1700 - Naloži v indeksni register vrednost, ki je shranjena na naslovih
$1700 in $1701.
n+2
Načini naslavljanja: Takojšnje naslavljanje
Ukazn
• •
K = Operandn+1
Naslednji ukazn+2
Ukazn
ali
KH = Operandn+1
KL = Operandn+2
Primeri:LDAA #$7A - Naloži v akumulator A vrednost $7A.LDX #$3701 - Naloži v indeksni register vrednost $3701.
n+3 Naslednji ukaz
Načini naslavljanja: Vsebovano
Ukazn
• •
Naslednji ukazn+1
Primeri:INCA - Zvečaj vrednost v akumulatorju A.CLC - Briši (postavi na 0) bit za prenos (carry).NOP - No operation
Načini naslavljanja: Relativno
Ukaz, ki vsebuje pogojni skokn
• •
+/- K = Dolžina skokan+1
Naslednji ukaz, če pogoj ni izpolnjenn+2
Naslednji ukaz, če je pogoj izpolnjenN+2 +/- K
Primeri:BCC $04 - Če je C(carry) bit = 0, preskoči štiri naslove, sicer nadaljuj. BNE $F0 - Če je Z(zero) bit = 0, skoči nazaj za 15 naslovov, sicer nadaljuj.
• •
Načini naslavljanja: Indeksno
Ukazn
• •
Z = Odmikn+1
Naslednji ukazn+2• •
K = OperandX+Z
ali
KH = OperandX+Z
KL = OperandX+Z+1
Primeri:LDAA 0,X - Preberi v akumulator A vrednost, ki je shranjena na naslovu, ki je
shranjen v indeksnem registru (X).ADDA 5,X - Prištej akumulatorju A vrednost, ki je shranjena na naslovu, ki je
enak vrednosti v indeksnem registru zvečani za 5.
Nabor ukazov mikroprocesorja MC6800
Operacija Mnemonik # D X E I OpisAdd ADDA X X X X A + M ŕ A
ADDB X X X X B + M ŕ B ABA X A + B ŕ A
ADCA X X X X A + M + C ŕ A ADCB X X X X B + M +C ŕ B
And ANDA X X X X A ź M ŕ A ANDB X X X X B ź M ŕ B
Bit test BITA X X X X A ź M BITB X X X X B ź M
Clear CLR X X 00 ŕ MCLRA X 00 ŕ ACLRB X 00 ŕ B
Compare CMPA X X X X A - MCMPB X X X X B - MCBA X A - B
Ukazi za delo z akumulatorji in pomnilnikom
Operacija Mnemonik # D X E I OpisComplement 1's COM X X !M ŕ M
COMA X !A ŕ A COMB X !B ŕ B
Complement 2's NEG X X 00 - M ŕ M NEGA X 00 - A ŕ A NEGB X 00 - B ŕ B
Decimal adjust A DAA X Binary A ŕ BCD A Decrement DEC X X M - 1 ŕ M
DECA X A - 1 ŕ ADECB X B - 1 ŕ B
Exclusive OR EORA X X X X A Ĺ M ŕ AEORB X X X X B Ĺ M ŕ B
Increment INC X X M + 1 ŕ MINCA X A + 1 ŕ AINCB X B + 1 ŕ B
Load Acumulator LDAA X X X X M ŕ ALDAB X X X X M ŕ B
Or - inclusive ORAA X X X X A + M ŕ AORAB X X X X B + M ŕ B
Ukazi za delo z akumulatorji in pomnilnikom
Operacija Mnemonik # D X E I OpisPush Data PSHA X A ŕ MSP, SP - 1 ŕ SP
PSHB X B ŕ MSP, SP - 1 ŕ SPPull Data PULA X SP + 1 ŕ SP, MSP ŕ A
PULB X SP + 1 ŕ SP, MSP ŕ BRotate Left ROL X X M
ROLA X AROLB X B
Rotate Right ROR X X MRORA X ARORB X B
Shift Left, Aritmetic ASL X X MASLA X AASLB X B
Shift Right, Aritmetic ASR X X MASRA X AASRB X B
Shift Right, Logic LSR X X MLSRA X ALSRB X B
Ukazi za delo z akumulatorji in pomnilnikom
b0b7C
b0b7C
b0b7C0
b0b7 C0
b0b7 C
Operacija Mnemonik # D X E I OpisStore Acumulator STAA X X X A ŕ M
STAB X X X B ŕ M Subtract SUBA X X X X A - M ŕ A
SUBB X X X X B - M ŕ B Subtract Acumulators SBA X A - B ŕ A Subttract with Carry SBCA X X X X A - M - C ŕ A
SBCB X X X X B - M - C ŕ B Transfer Acumulators TAB X A ŕ B
TBA X B ŕ ATest Zero or Minus TST X X M - 00
TSTA X A - 00TSTB X B - 00
Ukazi za delo z akumulatorji in pomnilnikom
Operacija Mnemonik # D X E I OpisCompare Index Reg. CPX X X X X XH - M, XL - (M + 1)Decrement Index Reg. DEX X X - 1 ŕ X Decrement Stack Pointer DES X SP - 1 ŕ SP Increment Index Reg. INX X X +1 ŕ X Increment Stack Pointer INS X SP + 1 ŕ SP Load Index Reg. LDX X X X X M ŕ XH, (M + 1) ŕ XL
Load Stack Pointer LDS X X X X M ŕ SPH, (M + 1) ŕ SPL
Store Index Reg. STX X X X XH ŕ M, XL ŕ (M+1) Store Stack Pointer STS X X X SPH ŕ M, SPL ŕ (M+1) Index Reg. ŕ Stack Pntr TXS X X - 1 ŕ SP Stack Pntr ŕ Index Reg. TSX X SP + 1 ŕ X
Ukazi za delo z indeksnim registrom in kazalcem sklada
Operacija Mnemonik # D X E I OpisClear Carry CLC X 0 ŕ C Clear Interrupt Mask CLI X 0 ŕ I Clear Overflow CLV X 0 ŕ VSet Carry SEC X 1 ŕ C Set Interrupt Mask SEI X 1 ŕ I Set Overflow SEV X 1 ŕ VAcumulator A ŕ CCR TAP X A ŕ CCR CCR ŕ Acumulator A TPA X CCR ŕ A
Ukazi za delo s statusnim registrom
Operacija Mnemonik PogojBranch Always BRA 1Branch if Carry Clear BCC C = 0Branch if Carry Set BCS C = 1Branch if Equal BEQ Z = 1Branch if Greater or Equal BGE N Ĺ V = 0Branch if Greater Than Zero BGT Z + (N Ĺ V) = 0Branch if Higher BHI C + Z = 0Branch if Less or Equal BLE Z + (N Ĺ V) = 1Branch if Lower or Same BLS C + Z = 1Branch if Less Than Zero BLT N Ĺ V = 1Branch if Minus BMI N = 1Branch if Not Equal BNE Z = 0Branch if Overflow Clear BVC V = 0Branch if Overflow Set BVS V = 1Branch if Plus BPL N = 0Branch to Subroutine BSR 1
Pogojne Razvejitve (relativno naslavljanje)
Brezpogojni skoki in posebni ukazi
Operacija Mnemonik # D X E IJump JMP X XJump to Subroutine JSR X XNo operation NOP XReturn from Interrupt RTI XReturn from Subroutine RTS XSoftware Interrupt SWI XWait for Interrupt WAI X
RESET mikroprocesorja MC6800 - korak 1
260196244C9723
16A80000
8020802180228023802480258026
FFFAFFFBFFFCFFFD
80FFFE22FFFF
• •
• •
• •
LDAA$24
INCASTAA$23
CPU RAM
Akumulator A
Programski števec Naslovno vodilo
Podatkovno vodilo
FFFE
2
3
4
80Statusni register
xx
xxxx 580xx
1 1 x x x x x x
1 1 H I N Z V C
1
1
RESET mikroprocesorja MC6800 - korak 2
260196244C9723
16A80000
8020802180228023802480258026
FFFAFFFBFFFCFFFD
80FFFE22FFFF
• •
• •
• •
LDAA$24
INCASTAA$23
CPU RAM
Akumulator A
Programski števec Naslovno vodilo
Podatkovno vodilo
FFFF
1
23
22Statusni register
xx
80xx 48022
1 1 x 1 x x x x
1 1 H I N Z V C
Operacije s skladom
• shranjevanje podatkov: PSHA, PSHB• jemanje podatkov: PULA, PULB• skok na podprogram: BRS, JSR• vrnitev iz podprograma: RTS• prekinitev: SWI, IRQ, NMI• vrnitev iz prekinitve: RTI• operacije s kazalcem sklada: LDS, STS, INS, DES
Sklad - shranjevanje podatkov (PSHA, PSHB)
m - 2
• •
7F
FD
PSHANasl. Inš.
• •
• •
m - 1m
m + 1
m + 3
nn + 1
SP
63m + 2
PC
MPUkACCAmSPnPC
m - 2
• •
k7F
FD
PSHANasl. Inš.
• •
• •
m - 1m
m + 1
m + 3
nn + 1
SP
63m + 2
PC
MPUkACCA
m - 1SPn + 1PC
Pred izvršitvijo: Po izvršitvi:
Sklad - jemanje podatkov (PULA, PULB)
m - 2
• •
k7F
FD
PULANasl. Inš.
• •
• •
m - 1m
m + 1
m + 3
nn + 1
SP
63m + 2
PC
MPUACCA
m - 1SPnPC
m - 2
• •
7F
FD
PSHANasl. Inš.
• •
• •
m - 1m
m + 1
m + 3
nn + 1
SP
63m + 2
PC
MPUkACCAmSP
n + 1PC
Pred izvršitvijo: Po izvršitvi:
Skok na podprogram (JSR)
m - 2
• •
7F
JSR
Nasl. Inš.
• •
• •
m - 1m
m + 1
n
n + 3
SP
63m + 2
PC
MPUX
mSPnPC
MPUX
m - 2SPSPC
SHn + 1
SLn + 2
S + 1Sub.S
m - 2
• •
(n + 3)H
(n + 3)L
7F
JSR
Nasl. Inš.
• •
• •
m - 1m
m + 1
n
n + 3
SP
63m + 2
PC
SHn + 1
SLn + 2
S + 1Sub.S
+3
Skok na podprogram (JSR x)
m - 2
• •
7F
JSR, x
Nasl. Inš.
• •
• •
m - 1m
m + 1
n
n + 2
SP
63m + 2
PC
MPUxXmSPnPC
MPUxX
m - 2SPx + kPC
kn + 1
x + k + 1Sub.x + k
m - 2
• •
(n + 2)H
(n + 2)L
7F
• •
m - 1m
m + 1
SP
63m + 2
+2
JSR
Nasl. Inš.• •
n
n + 2
PC
kn + 1
x + k + 1Sub.x + k
+x
Relativni skok na podprogram (BSR)
m - 2
• •
7F
BSR
Nasl. Inš.
• •
• •
m - 1m
m + 1
n
n + 2
SP
63m + 2
PC
MPUX
mSPnPC
MPUX
m - 2SPn+2+kPC
kn + 1
n + 3 + kSub.n + 2 + k
m - 2
• •
(n + 2)H
(n + 2)L
7F
• •
m - 1m
m + 1
SP
63m + 2
+2
BSR
Nasl. Inš.• •
n
n + 2
PC
kn + 1
+/-
n + 3 + kSub.n + 2 + k
Vrnitev iz podprograma
m - 2
• •
(n + 2)H
(n + 2)L
7F
BSR
Nasl. Inš.
• •
• •
m - 1m
m + 1
n
n + 2
SP
63m + 2
PC
MPUX
m - 2SPSnPC
MPUX
mSPn + 2PC
kn + 1
RTSSnS(n-1)
m - 2
• •
7F
• •
m - 1m
m + 1SP
63m + 2
BSR
Nasl. Inš.•
n
n + 2PC kn + 1
RTSSnS(n-1)
•
Prekinitev (Interrupt)
m - 2
• •
Inšt. k
• •
• •
m - 1m
n
SP
PC
MPUmSPnPC
Inšt. k +1n + 1
P + 1Interr.P
m - 3m - 4m - 5m - 6m - 7
PH
PL
Vektor
FFFCFFFD
XLm - 2
• •
(n + 1)H
(n + 1)L
Inšt. k
• •
• •
m - 1m
n
SP
PC
MPUm - 7SP
PPC
Inšt. k +1n + 1
P + 1Interr.P
XHm - 3Am - 4Bm - 5
CCRm - 6m - 7
PC, X, A, B, CCR
Vrnitev iz prekinitve
m - 2
• •
Inšt. k
• •
• •
m - 1m
n
SP
PC
MPUm - 7SPPnPC
Inšt. k +1n + 1
m - 3m - 4m - 5m - 6m - 7
XLm - 2
• •
(n + 1)H
(n + 1)L
Inšt. k
• •
• •
m - 1m
n
SP
PC
MPUmSP
n + 1PC
Inšt. k +1n + 1
RTIPnP(n-1)
XHm - 3Am - 4Bm - 5
CCRm - 6m - 7
RTI
P(n-1)Pn
CCR, B, A, X, PC
Prekinitveni vektorji
NMI LFFFD
•
RESET HRESET L
•
FFFEFFFF
NMI HFFFCSWI LFFFBSWI LFFFAIRQ LFFF9IRQ LFFF8
•
Interrupt Request
Software Interrupt
Non Maskable Interrupt
Reset
Zbirnik - AssemblerPisanje in prevajanje programov
* Primer programa, ki vrednosti, shranjene na* naslovih $800, $801 in $802, zveča za 10 *
ORG $8000 ; zacetek programa na naslovu $8000*
LDAA $800 ; preberemo prvo številoADDA #10 ; prištejemo mu 10STAA $800 ; shranimo vsotoLDAA $801 ; preberemo drugo številoADDA #10 ; prištejemo mu 10STAA $801 ; shranimo vsotoLDAA $802 ; preberemo tretje številoADDA #10 ; prištejemo mu 10STAA $802 ; shranimo vsoto
*
• komentarji• ukazi procesorja• ukazi zbirnika• spremenljivke (labele)• konstante• aritmetični in logični izrazi
* Primer programa, ki vrednosti, shranjene na* naslovih $800, $801 in $802, zveča za 10 *RAM EQU $6000 ; naslov pomnilnika RAMST1 EQU $800 ; naslov prvega stevilaST2 EQU ST1+1 ; naslov drugega stevilaST3 EQU ST1+2 ; naslov trejega stevilaKONST EQU 10 ; konstanta, ki jo prištevamo *
ORG RAM ; začetek programa v RAM-u*
LDAA ST1 ; preberemo prvo številoADDA #KONST ; prištejemo mu 10STAA ST1 ; shranimo vsotoLDAA ST2 ; preberemo drugo številoADDA #KONST ; prištejemo mu 10STAA ST2 ; shranimo vsotoLDAA ST3 ; preberemo tretje številoADDA #KONST ; prištejemo mu 10STAA ST3 ; shranimo vsoto
*
• komentarji• ukazi procesorja• ukazi zbirnika• spremenljivke (labele)• konstante• aritmetični in logični izrazi
* Primer programa, ki vrednosti, shranjene na* naslovih $800, $801 in $802, zveča za 10 *RAM EQU $6000 ; naslov pomnilnika RAMST1 EQU $800 ; naslov prve vrednostiN EQU 3 ; stevilo bytovKONST EQU 10 ; konstanta, ki jo prištevamo *
ORG RAM ; začetek programa v RAM-u*
LDX #ST1 ; naložimo naslov prve vrednosti v XLDAB #N ; naložimo število bytov v B
ZANKA LDAA 0,X ; preberemo prvo številoADDA #KONST ; prištejemo mu 10STAA 0,X ; shranimo vsotoINX ; zvecamo X (naslednja vrednost)DECB ; zmanjsamo števec bytovBNE ZANKA ; ce števec ni enak 0, nadaljujemo
*
* Primer programa, ki vrednosti, shranjene na* naslovih $800, $801 in $802, zveča za 10 *RAM EQU $6000 ; naslov pomnilnika RAMST1 EQU $800 ; naslov prve vrednostiKONST EQU 10 ; konstanta, ki jo prištevamo *
ORG RAM ; začetek programa v RAM-u*PRIMER LDX #ST1 ; naložimo naslov prve vrednosti v X
JSR ZVECAJ ; zvecamo prvo vrednostJSR ZVECAJ ; zvecamo drugo vrednostJSR ZVECAJ ; zvecamo tretjo vrednost
* … nadanjevanje *** Podprogram, ki zveča za KONST, spominsko lokacijo,* na katero kaže X*ZVECAJ LDAA 0,X ; preberemo vrednost na katero kaže X
ADDA #KONST ; prištejemo 10STAA 0,X ; shranimo vsotoINX ; zvecamo X (naslednja vrednost)RTS
*
0001 * Primer programa, ki vrednosti, shranjene na0002 * naslovih $800, $801 in $802, zveča za 100003 *0004 RAM EQU $6000 ; naslov pomnilnika RAM0005 ST1 EQU $800 ; naslov prve vrednosti0006 KONST EQU 10 ; konstanta, ki jo prištevamo0007 *0008 6000 ORG RAM ; začetek programa v RAM-u0009 *0010 6000 CE 08 00 PRIMER LDX #ST1 ; naslov prve vrednosti X0011 6003 BD 60 0C JSR ZVECAJ ; zvecamo prvo vrednost0012 6006 BD 60 0C JSR ZVECAJ ; zvecamo drugo vrednost0013 6009 BD 60 0C JSR ZVECAJ ; zvecamo tretjo vrednost0014 * … nadaljevanje0015 *0016 *0017 * Podprogram, ki zveča za KONST, spominsko lokacijo,0018 * na katero kaže X0019 *0020 600C A6 00 ZVECAJ LDAA 0,X ; preberemo vrednost na katero kaže X0021 600E 8B 0A ADDA #KONST ; prištejemo 100022 6010 A7 00 STAA 0,X ; shranimo vsoto0023 6012 08 INX ; zvecamo X (naslednja vrednost)0024 6013 39 RTS0025 *
Prevajanje programa
C:\> ASM TEST
TEST.ASM
TEST.HEX (Motorola S format)
S0030000FCS1176000CE0800BD600CBD600CBD600CA6008B0AA700083914S9030000FC
* Primer programa, ki vrednosti, shranjene na* naslovih $800, $801 in $802, zveča za 10 *RAM EQU $6000 ; naslov pomnilnika RAMST1 EQU $800 ; naslov prve vrednostiKONST EQU 10 ; konstanta, ki jo prištevamo *
ORG RAM ; začetek programa v RAM-u*PRIMER LDX #ST1 ; naložimo naslov prve vrednosti v X
JSR ZVECAJ ; zvecamo prvo vrednostJSR ZVECAJ ; zvecamo drugo vrednostJSR ZVECAJ ; zvecamo tretjo vrednost
* … nadanjevanje *** Podprogram, ki zveča za KONST, spominsko lokacijo,* na katero kaže X*ZVECAJ LDAA 0,X ; preberemo vrednost na katero kaže X
ADDA #KONST ; prištejemo 10STAA 0,X ; shranimo vsotoINX ; zvecamo X (naslednja vrednost)RTS
*
ABC.HEX (Motorola S format)
S0030000FCS1136000CE0800BD600CBD600CBD600CA6008B0A14S11360103974F39B0381A0387EF02BA565D76479A3S1136020A700083928FA39E0AA010198029A7BA0F2S1066030037F197FS1136800013936345FA28BA9034903790AA2882142S105681028BA8CS107FFFC60006800AAS90300003B
OznakaNaslovKontrola parnosti
Število znakov v vrsticiVsebina (podatki)
Osnovni ukazi zbirnika:
• EQU Equal• ORG Origin• RMB Reserve Memory Bytes (ds - define space)• FCB Form Constant Byte (db - define byte)• FDB Form Double Byte (dw - define word)• FCC Form Constant Character• END End
0001 0000 K1 EQU 1280002 0000 K2 EQU $12340003 0000 K3 EQU %010010010004 *0005 8100 ORG $81000006 8100 0A148049 NASL0 FCB 10, 20, K1, K30007 8104 AABB12A21033 FDB $AABB, $12A2, $10330008 810A 8100 FDB NASLO00009 810C F2 FCB %111100100010 810D 544F204A4520 54455354 FCC ‘TO JE TEST’0011 8117 000000 VAR1 RMB 30012 811A 00 VAR2 RMB 10013 811B 8117 NA1 FDB VAR10014 *0015 8000 ORG $80000016 8000 CE811B LDX #NA10017 8003 FE811B LDX NA10018 8006 08 INX
POMNILNIKI
RAM• Statični• Dinamični• Dual port• Zero power
ROM• ROM• PROM(OTP)• EPROM
EEPROM• Serijski• Paralelni
Flash EPROM• Serijski (Data flash)• Paralelni
POMNILNIKI - Povezava s CPU
A0A0A1A1A2A2A3A3A4A4A5A5A6A6A7A7A8A9
A10A11A12
A8A9A10A11A12A13A14A15
E(2)VMAR/W
DEKODIRNIK
NASLOVOVCS
R/W
D0D1D2D3D4D5D6D7
D0D1D2D3D4D5D6D7
CPU RAM(8K)
DEKODIRANJE NASLOVOV
0000000100020003
9FFFA000
BFFFC000
A001
C001
FFFF
• •
Prosto
I/O (4 byte)
0004• •
• •
RAM (8KB)
ROM (16KB)
• •
• •
• •
1FFF
• •
• •
0000
3FFF
0001• •
• •
00000001
00000001
RAM
ROM
I/O
00020003
1. Linearno dekodiranje naslovov
ROM(8 KB)
CS
RAM(8 KB)
CS
I/O(4 B)
CS
A15A14A13
A0 - A12
D0 - D7
A0 - A12
D0 - D7
A0 - A1
D0 - D7
NASLOV (A15 - A0) NASLOVLJENO VEZJE100X XXXX XXXX XXXX ROM010X XXXX XXXX XXXX RAM001X XXXX XXXX XXXX I/O
000X XXXX XXXX XXXX PROSTO
110X XXXX XXXX XXXX PREPOVEDAN NASLOV101X XXXX XXXX XXXX PREPOVEDAN NASLOV011X XXXX XXXX XXXX PREPOVEDAN NASLOV111X XXXX XXXX XXXX PREPOVEDAN NASLOV
• Ni dekodirnega vezja• Nizka cena• Slaba izkoriščenost naslovnega prostora• Potrebna je previdnost pri programiranju
0000
1FFFProsto
I/O
RAM
ROM
• •
2000
3FFF
• •
4000
5FFF
• •
6000
7FFF
• •
8000
9FFF
• •
A000
BFFF
• •
C000
DFFF
• •
E000
FFFF
• •
Prepovedano
Prepovedano
Prepovedano
Prepovedano
8K
8K
8K
8K
8K
8K
8K
8K
Linearno dekodiranje
2. Delno dekodiranje naslovov
ROM(16 KB)
CS
RAM(8 KB)
CS
I/O(4 B)
CS
E(
2)A
14A
15
A0 - A13
D0 - D7
A0 - A12
D0 - D7
A0 - A1
D0 - D7
• Majhno število elementov• Ni možnosti trčenja na podatkovnem vodilu• Naslovni prostor ni popolnoma izkoriščen
VM
A
0000
3FFF4000
7FFF8000
9FFFA000
BFFFC000
FFFF
RAM8K
RAM8K
I/O16K
ROM16K
0-DRA1-CRA2-DRB3-CRB0-DRA1-CRA2-DRB3-CRB0-DRA
0-DRA1-CRA2-DRB3-CRB
• • •
400040014002400340044005400640074008
7FFC7FFD7FFE7FFF
Dostop do prvega byta RAM-a:
10X0 0000 0000 00008000 1000 0000 0000 0000A000 1010 0000 0000 0000
Dostop do prvega registra I/O (DRA):
01XX XXXX XXXX XX004000 0100 0000 0000 00004004 0100 0000 0000 01004008 0100 0000 0000 1000400C 0100 0000 0000 11004010 0100 0000 0001 0000
. . .5AF4 0101 1010 1111 0100
. . .7FFC 0111 1111 1111 1100
Prosto16K
Delno dekodiranje
3. Popolno dekodiranje naslovov
ROM(16 KB)
CS
RAM(8 KB)
CS
I/O(4 B)
CS
E(
2)
A14
A15
A0 - A13
D0 - D7
A0 - A12
D0 - D7
A0 - A1
D0 - D7
• Vsak register je dostopen le na enem naslovu • Veliko število elementov• Visoka cena• Naslovni prostor je popolnoma izkoriščen
VM
A
A13
A2
A12• •
0000
00030004
9FFFA000
BFFFC000
FFFF
RAM8K
ROM16K
0-DRA1-CRA2-DRB3-CRB
0000000100020003
I/O4B
Prosto~40KB
Popolno dekodiranje
VHODNO IZHODNI VMESNIKI
PARALELNI• Digitalno krmiljenje• Senzorji• Tiskalnik• SCSI• PCI
SERIJSKI• Sinhroni / Asinhroni• RS232• Ethernet• ISDN• FDDI• USB• E1, T1• ATM ….
ANALOGNI• A/D in D/A• Paralelni ali serijski• Ločljivost (8 - 20 bitov)• Način pretvorbe• Hitrost• Število vhodov (multipleks)• Vgrajeni filtri• Za posebne aplikacije (codec)
ŠTEVCI
MC6821 PIA (Peripheral Interface Adapter)
PheripheralInterface
A
PheripheralInterface
B
InterruptControl B
InterruptControl A
Data Dir. Reg. A
Control Reg. A
Data Reg. A
Data Dir. Reg. B
Control Reg. B
Data Reg. B
Data BusBuffers
Chip Select
&R/W
Control
D0
D7
PA0
PA7
PB0
PB7
• • • •
• • • •
• • • •
IRQA
IRQB
CS0CS1CS2RS0RS1R/W
ERESET
CA1CA2
CB1CB2
MC6821 PIA - Registri
Bit v kontrolnem reg.RS1 RS0 CRA-2 CRB-2 Izbrani register
0 0 1 X Podatkovni register A (DRA)0 0 0 X Smerni register A (DDRA)0 1 X X Kontrolni register A (CRA)1 0 X 1 Podatkovni register B (DRB)1 0 X 0 Smerni register B (DDRB)1 1 X X Kontrolni register B (CRB)
IRQA1Flag
IRQA2Flag
CA2Control
DDRAccess
CA1Control
b7 b6 b5 b4 b3 b2 b1 b0
MC6821 PIA - Kontrolni register A
Zahteva za prekinitev 1: 1 - po aktivnem prehodu na vhodu CA1 0 - po branju podatkovnega registra DRA
Omogočena prekinitev 1: 1 - CA1 sproži IRQA 0 - CA1 ne sproži IRQA
Aktivni prehod za CA1: 1 - aktiven je prehod iz 0 na 1 0 - aktiven je prehod iz 1 na 0
Dostop do smernega/podat. reg. 1 - dosopen je podatkovni register 0 - dostopen je smerni register
Statusni bitiKontrolni biti
IRQA1Flag
IRQA2Flag
CA2Control
DDRAccess
CA1Control
b7 b6 b5 b4 b3 b2 b1 b0
MC6821 PIA - Kontrolni register A
Zahteva za prekinitev 1: 1 - po aktivnem prehodu na vhodu CA2, če je CA2 definiran kot vhod 0 - po branju podatkovnega registra DRA
CA2 Smer 0 - CA2 je vhod 1 - CA2 je izhod
Aktivni prehod za CA2: 1 - aktiven prehod 0 1 0 - aktiven prehod 1 0
Omogočena prekinitev CA2: 1 - CA2 sproži IRQA 0 - CA2 ne sproži IRQA
Funkcija CA2 : 1 - navaden izhod 0 - posebna funkcija
Stanje CA2 / posebna funkcija: 1 - 1 / “Read strobe with E restore” 0 - 0 / “Read strobe with CA1 restore”
CA2 je vhod: CA2 je izhod:
MC6821 PIA - Inicializacija
1. Zagotovimo dostop do podatkovnega reg. (DRA) $04 CRA 2. Nastavimo začetne vrednosti izhodov $XX DRA 3. Zagotovimo dostop do smernega registra (DDRA) $00 CRA 4. Nastavimo smer posameznih bitov $YY DDRA 5. Ponovno omogočimo dostop do podatkovnega registra (DRA) in, če je potrebno, omogočimo prekinitve in nastavimo delovanje linij CA1 in CA2 %xxxxx1xx CRA
MC6850 ACIA (Asynchronous Communications Interface Adapter)
TransmitterData BusBuffers
Selection&
Control
Data Bus
ReceiverAddressControl
&Interrupt
TransmitData (TD)
ReceiveData (RD)
Pheripheral / Modem Control
Clear to Send (CTS)Request to Send (RTS)
Data Carrier Detect (DCD)
MC6850 ACIA
ReceiveControl
ReceiveShift Reg.
TransmitShift Reg.
StatusRegister
TransmitData Reg.
ControlRegister
Data BusBuffers
Chip Select
&R/W
Control
D0
D7
• • • •
T Clock
R Clock
CS0CS1CS2RS
R/WE
TD
ReceiveData Reg.
TransmitControl
InteruptLogic
ParityGen.
ClockGen.
ParityCheck
SyncLogic
ClockGen.
CTS
IRQ
DCD
RTS
RD
RS TDR RDR Control Reg. Status reg.0 Write Read
1 Write Read
bit TDR RDR Control Reg. Status reg.
0 Data bit 0 Data bit 0 Counter Devide Select 1 CDS1
Receive Data Register Full RDRF
1 Data bit 1 Data bit 1 Counter Devide Select 2 CDS2
Transmit Data Register Empty - TDRE
2 Data bit 2 Data bit 2 Word Select 1 WS1
Data Carrier Detect DCD
3 Data bit 3 Data bit 3 Word Select 2 WS2
Clear to Send CTS
4 Data bit 4 Data bit 4 Word Select 3 WS3
Framing Error FE
5 Data bit 5 Data bit 5 Transmit Control 1 TC1
Receiver Overrun OVRN
6 Data bit 6 Data bit 6 Transmit Control 2 TC2
Parity Error PE
7 Data bit 7 Data bit 7 Receive Interrupt Enable RIE
Interrupt Request IRQ
MC6850 ACIA - Registri
Counter Devide Select:
CDS1 CDS2 Funkcija0 0 ÷ 1
0 1 ÷ 16
1 0 ÷ 64
1 1 Master Reset
Word Select:
WS1 WS2 WS3 Funkcija0 0 0 7 bitov, soda parnost, 2 stop bita
0 0 1 7 bitov, liha parnost, 2 stop bita
0 1 0 7 bitov, soda parnost, 1 stop bit
0 1 1 7 bitov, liha parnost, 1 stop bit
1 0 0 8 bitov, 2 stop bita
1 0 1 8 bitov, 1 stop bit
1 1 0 8 bitov, soda parnost, 1 stop bit
1 1 1 8 bitov, liha parnost, 1 stop bit
RIE TC2 TC1 WS1 CDS2
b7 b6 b5 b4 b3 b2 b1 b0
WS3 WS2 CDS1
Kontrolni register ACIA:
Transmit Control:
TC1 TC2 Funkcija0 0 RTS=0, Prekinitve onemogočene
0 1 RTS=0, Prekinitve omogočene
1 0 RTS=1, Prekinitve onemogočene
1 1 RTS=0, Prekinitve onemogočene, Oddajnik oddaja signal "Break"