logging in or signing up 11-IO interfacing Diptutun Download Post to : URL : Related Presentations : Share Add to Flag Embed Email Send to Blogs and Networks Add to Channel Uploaded from authorPOINT lite Insert YouTube videos in PowerPont slides with aS Desktop Copy embed code: (To copy code, click on the text box) Embed: URL: Thumbnail: WordPress Embed Customize Embed The presentation is successfully added In Your Favorites. Views: 368 Category: Education License: All Rights Reserved Like it (0) Dislike it (0) Added: March 18, 2011 This Presentation is Public Favorites: 0 Presentation Description No description available. Comments Posting comment... Premium member Presentation Transcript Microprocessor System Design Input / Output Peripheral Interfacing: Microprocessor System Design Input / Output Peripheral Interfacing Omid Fatemi (omid@fatemi.net)Outline: Outline Peripheral devices Input devices Output devices 8 bit / 16-bit IO Simple Input device - interfacing switches Simple Output device - interfacing LEDs 8255 PPI 8255 modes 16-bit data bus to 8-bit peripherals or memory devicesPeripheral: Peripheral is an input and/or output device like a memory chip, it is mapped to a certain location (called the port address) unlike a memory chip, a peripheral is usually mapped to a single locationOutput Device: Output Device like a memory chip, you can write to an output device You can write to a memory chip using the command mov [bx], al You can write to an output device using the command out dx, alInput Device: Input Device like a memory chip, you can read from an input device You can read from a memory chip using the command mov al, [bx] You can read from an input device using the command in al, dxMemory mapped vs. peripheral: Memory mapped vs. peripheral Same instruction vs. independent instruction Entire address bus vs. part of address bus Same control signals vs. independent More IO ports vs. 65536 ports More commands and operations Uses memory spaceTwo formats for IN / OUT: Two formats for IN / OUT Format 1 IN AL, port# Or OUT port#, AL Example: BACK: IN AL,22H CMP AL, 100 JNZ BACK Format 2 MOV DX,port# IN AL, DX Or MOV DX, port# OUT DX, AL8bit vs 16bit IO: 8bit vs 16bit IO 8088 case: MOV DX, 648H OUT DX, AX ; AX = 76A9H Address bus and ALE Low byte (A9), IOW Setup time Address (649) and ALE High byte (76), IOW Setup time 8086 case: MOV DX, 648H OUT DX, AX ; AX = 76A9H Address bus and ALE Word (76A9), IOW Setup timeCreating a Simple Output Device: Creating a Simple Output Device Use 8-LED’sUse 8 LED’s: Use 8 LED’s 8088 Minimum Mode A18 A0 : D7 D6 IOR IOW A19 D5 D4 D3 D2 D1 D0 : mov al, 55 out dx, al : : :Creating a Simple Output Device: Creating a Simple Output Device Use 8-LED’s Use a chip and an address decoder such that the LED’s will respond only to the command out and a specific address (let’s assume that the address is F000 )Use of 74LS245 and Address Decoder: Use of 74LS245 and Address Decoder : mov al, 55 mov dx, F000 out dx, al : 8088 Minimum Mode A18 A0 : D7 D6 IOR IOW A19 D5 D4 D3 D2 D1 D0 74LS245 B0 B1 B2 B3 B4 B5 B6 B7 A0 A1 A2 A3 A4 A5 A6 A7 E DIR 5V A 1 5 A 1 4 A 1 3 A 1 2 A 1 1 A 1 0 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 IOWCreating a Simple Output Device: Creating a Simple Output Device Use 8-LED’s Loses the data Solution? Use a chip and an address decoder such that the LED’s will not only respond to the command out and a specific address (let’s assume that the address is F000 ) but will also latch the dataUse of 74LS373 and Address Decoder: Use of 74LS373 and Address Decoder : mov al, 55 mov dx, F000 out dx, al : A 1 5 8088 Minimum Mode A18 A0 : D7 D6 IOR IOW A19 D5 D4 D3 D2 D1 D0 A 1 4 A 1 3 A 1 2 A 1 1 A 1 0 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 IOW 74LS373 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 D0 D1 D2 D3 D4 D5 D6 D7 OE LECreating a Simple Input Device: Creating a Simple Input Device Use 8-Switches (keys) Use a chip and an address decoder such that the keys will be read only to the command in and a specific address (let’s assume that the address is F000 ) How to interface a switch to computer?Use of 74LS245 and Address Decoder: Use of 74LS245 and Address Decoder : mov dx, F000 in al, dx : A 1 5 8088 Minimum Mode A18 A0 : D7 D6 IOR IOW A19 D5 D4 D3 D2 D1 D0 A 1 4 A 1 3 A 1 2 A 1 1 A 1 0 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 IOR 5V 74LS245 B0 B1 B2 B3 B4 B5 B6 B7 A0 A1 A2 A3 A4 A5 A6 A7 E DIR Same address for input and output?How do you know if a user has pressed a button?: How do you know if a user has pressed a button? By Polling By InterruptPolling: Polling mov dx, F000 in al, dx L1: cmp al, FF je L1 : :Output Port Design: Output Port Design T1 – T4 of OUT 99H, AL ?Input Port Design: Input Port Design T1 – T4 of IN AL, 5FH ?8255 PPI: 8255 PPIControl word: Control wordModes of Operation: Modes of Operation Mode 0 – simple input or output Mode 1 – input or output with handshaking Mode 2 – bideirectional IO with handshakingExample - Port addresses: Example - Port addressesSolution: SolutionExample – Programming 8255: Example – Programming 8255Solution: SolutionBSR mode: BSR modeExample for BSR: Example for BSR Program 8255 for the following A) set PC2 to high B) Use PC6 to generate a square wave of 66% duty cycle Solution A) MOV AL, 00000101B OUT 93H,AL B) MOV AL, 0xxx1101 OUT 93H, AL CALL Delay CALL Delay MOV AL, 0xxx1100 OUT 93H, AL CALL Delay JMP AGAINMODE 1 Output Operation: MODE 1 Output OperationOutput with handshake: Output with handshake #OBFa : CPU has written a byte #ACKa: Data has been picked up by receiving device INTRa: After rising edge of #ACKa INTEa (interrupt enable) Internal flipflop Controlled by PC6MODE 1 Timing (output): MODE 1 Timing (output)Interrupt vs. Polling: Interrupt vs. Polling CPU is interrupted whenever necessary CPU can serve many devices Require more hardwareUsing status to Poll: Using status to PollSolution: SolutionMODE 1 Input Operation: MODE 1 Input OperationInput with handshake: Input with handshake #STB (in): Device provides data to an input port IBF (out): Data has been latched by 8255 INTR (out): After activation of IBF INTE (interrupt enable) Internal flip-flop Controlled by PC4 and PC2MODE 1 Timing (input): MODE 1 Timing (input)MODE 2 Operation: MODE 2 OperationIBM PC IO MAP: IBM PC IO MAPDecoding by 74138: Decoding by 741388255 Address in PC: 8255 Address in PCUse of 8255 ports in PC: Use of 8255 ports in PC MOV AL,99H OUT 63, AL80x86 family: 80x86 family 16-bit Processors 8088 (8-bit data / 20-bit address) 8086/186 (16-bit data / 20-bit address) 80286 (16-bit data / 24-bit address) 32-bit Processors 80386 (16/24 or 32/32 common) 80486 (32/32), Pentium, PII (64/32) Pentium Pro, II, III, IV (64/36) PPC 60x (32 or 64/32) All 80x86 processors use a 16-bit address for i/o8 And 16 bit Organizations: 8 And 16 bit Organizations 8088 Data is organized into byte widths The 1MB memory is organized as 1M x 8-bits 8086/80186 Data is organized into word widths The 1MB memory is organized as 512kB x 16-bits 80286/80386SX Data is organized into word widths The 16MB memory is organized as 8MB x 16-bits32 and 64 bit Organizations: 32 and 64 bit Organizations • 80386DX/80486 – Data is organized into double word widths – The 4GB memory is organized as 1GB x 32-bits • Pentium Pro/Pentium 1-4 – Data is organized into quad word widths – The 4GB memory is organized as 512MB x64-bits (on P2-4, actual address bus is 36 bits)Little Endian / Big Endian: Little Endian / Big Endian for the 68000: MOVE.W #513, D0 ; move value 513 into the lower 16 bits of D0 MOVE.W D0,4 ; store the lower word of D0 into memory 4 for the 80x86: MOV AX,513 ; load AX (16 bits), with the value 513 MOV [4],AX ; store AX into memory 4Memory Alignment in 16-bit Micro: Memory Alignment in 16-bit Micro We have 16-bit data bus Why not use it for memory access. 1M byte of memory is organized as: 512K * 16 bit The memory is word-aligned Access to even addresses is aligned and simple Example: 0102H and 0304H stored in [4H] What happens on mov AX,[4]? What happens on mov AX,[5]? Motorola family of the MC680x0 forbids non-aligned accessMemory Bank Select: Memory Bank Select 8086/186/286/386SX has 16 Data Lines D15-D0 6264 Only has 8 I/O7 – I/O0 Must Use a “Memory Bank” 1 SRAM for Storing Bytes with “Even Addresses” (… 0 2 ) 1 SRAM for Storing Bytes with “Odd” Addresses” (… 1 3 ) 8086 has BHE Control Signal – (Bank High Enable) Can Use Combination of A0 and BHE to Determine Type of Access BHE A0 Access Type 0 0 1 word (16-bits) 0 1 Odd Byte (D15-D8) 1 0 Even Byte (D7-D0) 1 1 No AccessInterfacing two 512KB Memory to the 8088 Microprocessor (review): Interfacing two 512KB Memory to the 8088 Microprocessor (review) A18 A0 : D7 D0 : MEMR MEMW XXXX BP ES DS SS CX BX AX XXXX XXXX XXXX 2000 0000 0023 3F1C FCA1 SP DX XXXX CS SI XXXX XXXX IP XXXX DI A19 23 00000 00001 95 : 20020 20021 20022 20023 7FFFD 7FFFE 7FFFF 29 12 7D 13 19 25 36 : : : A18 A0 : D7 D0 : RD WR CS 97 00000 00001 D4 : 20020 20021 20022 20023 7FFFD 7FFFE 7FFFF A3 92 45 33 2C 98 12 : : : A18 A0 : D7 D0 : RD WR CSInterfacing two 512KB Memory to the 8086 Microprocessor: Interfacing two 512KB Memory to the 8086 Microprocessor A19 A1 : D7 D0 : MEMR MEMW XXXX BP ES DS SS CX BX AX XXXX XXXX XXXX 4000 0000 0023 3F1C FCA1 SP DX XXXX CS SI XXXX XXXX IP XXXX DI A0 23 00000 00001 95 : 20020 20021 20022 20023 7FFFD 7FFFE 7FFFF 29 12 7D 13 19 25 36 : : : A18 A0 : D7 D0 : RD WR CS 97 00000 00001 D4 : 20020 20021 20022 20023 7FFFD 7FFFE 7FFFF A3 92 45 33 2C 98 12 : : : A18 A0 : RD WR CS D15 D8 : D7 D0 : BHE# How to connect data lines? How to connect address lines? What about chip select? MOV [0040], AL? MOV [0041], AH? MOV [0040], AX? 1C 3FDecoding Circuit with Bank Select: Decoding Circuit with Bank SelectInterfacing 8-bit Peripherals to 16-bit Data Bus: Interfacing 8-bit Peripherals to 16-bit Data Bus The Problem? Solutions: 1) two separate PPI devices. Even address for one and odd addresses for other OUT port#, AX outputs to both of them!!!Interfacing 8-bit Peripherals to 16-bit Data Bus (2): Interfacing 8-bit Peripherals to 16-bit Data Bus (2) Solutions: 2) Hi / Lo byte copier. Outputting to odd-addressed ports: Hi/Lo byte copier copies data from D8-D15 to D0-D7 Inputting a byte form odd-addressed ports: Hi/Lo byte copier copies data from D0-D7 to D8-D15 The logic now resides in chipsets.Hi/Lo Copier in PC: Hi/Lo Copier in PCISA Bus expansion slot: ISA Bus expansion slot Only 16-bit (even 32-bit or higher data bus) Speed is limited to 8MHzLinear Select Address Decoding: Linear Select Address Decoding What is the address range and aliases?Buffering Selected IO Address Range: Buffering Selected IO Address Range Range of addresses? Blocking others.PC Interface Card: PC Interface Card From BitPardazI/O Programming with C and BASIC: I/O Programming with C and BASIC Assembly Microsoft C Borland C BASIC OUT port#, AL outp (port#, byte) ouportb(port#, byte) Out port#, byte IN AL, port# var=inp(port#) var=inportb(port#) Var = INP (port#) OUT DX, AX Outpw(port#, word) Outport(port#, word) Out port#, word ?? IN AX, DX word=inpw(port#) word=inport(port#) Var = INP (port#)??Example: ExampleExample Polling program?: Example Polling program? The program makes a “running LED” effect (initially moving from down to up). Every time the lowest button is pressed, it changes the direction of the movement. When the highest button is pressed, the program terminates.The Circuit: The Circuit A 1 5 8088 Minimum Mode A18 A0 : D7 D6 IOR IOW A19 D5 D4 D3 D2 D1 D0 A 1 4 A 1 3 A 1 2 A 1 1 A 1 0 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 IOR 5V 74LS245 B0 B1 B2 B3 B4 B5 B6 B7 A0 A1 A2 A3 A4 A5 A6 A7 E DIR A 1 5 A 1 4 A 1 3 A 1 2 A 1 1 A 1 0 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 IOW 74LS373 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 D0 D1 D2 D3 D4 D5 D6 D7 OE LETrace what the program does:: Trace what the program does: mov dx, F000 mov ah, 00 mov al, 01 L1: out dx, al mov cx, FFFF L2: dec cx jnz L2 cmp ah, 00 jne L3 rol al, 1 cmp al, 01 jne L1 jmp L4 L3: ror al, 1 cmp al, 80 jne L1 L4: mov bl, al in al, dx cmp al, FF je L6 test al, 01 jnz L5 xor ah, FF jmp L6 L5: test al, 80 jz L7 L6: mov al, bl jmp L1 L7:What’s the problem with polling in the sample program?: What’s the problem with polling in the sample program? Running LED takes time User might remove his/her finger from the switch before the in al, dx instruction is executed the microprocessor will not know that the user has pressed the buttonProblem with Polling: Problem with Polling mov dx, F000 mov ah, 00 mov al, 01 L1: out dx, al mov cx, FFFF L2: dec cx jnz L2 cmp ah, 00 jne L3 rol al, 1 cmp al, 01 jne L1 jmp L4 L3: ror al, 1 cmp al, 80 jne L1 L4: mov bl, al in al, dx cmp al, FF je L6 test al, 01 jnz L5 xor ah, FF jmp L6 L5: test al, 80 jz L7 L6: mov al, bl jmp L1 L7:Interrupt: Interrupt The microprocessor does not check if data is available. The peripheral will interrupt the processor when data is availablePolling vs. Interrupt: Polling vs. Interrupt While studying , I’ll check the bucket every 5 minutes to see if it is already full so that I can transfer the content of the bucket to the drum. Input Device Memory P instruction POLLINGPolling vs. Interrupt: Polling vs. Interrupt I’ll just study . When the speaker starts playing music it means that the bucket is full. I can then transfer the content of the bucket to the drum. Input Device Memory P instruction INTERRUPT Interrupt request You do not have the permission to view this presentation. In order to view it, please contact the author of the presentation.
11-IO interfacing Diptutun Download Post to : URL : Related Presentations : Share Add to Flag Embed Email Send to Blogs and Networks Add to Channel Uploaded from authorPOINT lite Insert YouTube videos in PowerPont slides with aS Desktop Copy embed code: (To copy code, click on the text box) Embed: URL: Thumbnail: WordPress Embed Customize Embed The presentation is successfully added In Your Favorites. Views: 368 Category: Education License: All Rights Reserved Like it (0) Dislike it (0) Added: March 18, 2011 This Presentation is Public Favorites: 0 Presentation Description No description available. Comments Posting comment... Premium member Presentation Transcript Microprocessor System Design Input / Output Peripheral Interfacing: Microprocessor System Design Input / Output Peripheral Interfacing Omid Fatemi (omid@fatemi.net)Outline: Outline Peripheral devices Input devices Output devices 8 bit / 16-bit IO Simple Input device - interfacing switches Simple Output device - interfacing LEDs 8255 PPI 8255 modes 16-bit data bus to 8-bit peripherals or memory devicesPeripheral: Peripheral is an input and/or output device like a memory chip, it is mapped to a certain location (called the port address) unlike a memory chip, a peripheral is usually mapped to a single locationOutput Device: Output Device like a memory chip, you can write to an output device You can write to a memory chip using the command mov [bx], al You can write to an output device using the command out dx, alInput Device: Input Device like a memory chip, you can read from an input device You can read from a memory chip using the command mov al, [bx] You can read from an input device using the command in al, dxMemory mapped vs. peripheral: Memory mapped vs. peripheral Same instruction vs. independent instruction Entire address bus vs. part of address bus Same control signals vs. independent More IO ports vs. 65536 ports More commands and operations Uses memory spaceTwo formats for IN / OUT: Two formats for IN / OUT Format 1 IN AL, port# Or OUT port#, AL Example: BACK: IN AL,22H CMP AL, 100 JNZ BACK Format 2 MOV DX,port# IN AL, DX Or MOV DX, port# OUT DX, AL8bit vs 16bit IO: 8bit vs 16bit IO 8088 case: MOV DX, 648H OUT DX, AX ; AX = 76A9H Address bus and ALE Low byte (A9), IOW Setup time Address (649) and ALE High byte (76), IOW Setup time 8086 case: MOV DX, 648H OUT DX, AX ; AX = 76A9H Address bus and ALE Word (76A9), IOW Setup timeCreating a Simple Output Device: Creating a Simple Output Device Use 8-LED’sUse 8 LED’s: Use 8 LED’s 8088 Minimum Mode A18 A0 : D7 D6 IOR IOW A19 D5 D4 D3 D2 D1 D0 : mov al, 55 out dx, al : : :Creating a Simple Output Device: Creating a Simple Output Device Use 8-LED’s Use a chip and an address decoder such that the LED’s will respond only to the command out and a specific address (let’s assume that the address is F000 )Use of 74LS245 and Address Decoder: Use of 74LS245 and Address Decoder : mov al, 55 mov dx, F000 out dx, al : 8088 Minimum Mode A18 A0 : D7 D6 IOR IOW A19 D5 D4 D3 D2 D1 D0 74LS245 B0 B1 B2 B3 B4 B5 B6 B7 A0 A1 A2 A3 A4 A5 A6 A7 E DIR 5V A 1 5 A 1 4 A 1 3 A 1 2 A 1 1 A 1 0 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 IOWCreating a Simple Output Device: Creating a Simple Output Device Use 8-LED’s Loses the data Solution? Use a chip and an address decoder such that the LED’s will not only respond to the command out and a specific address (let’s assume that the address is F000 ) but will also latch the dataUse of 74LS373 and Address Decoder: Use of 74LS373 and Address Decoder : mov al, 55 mov dx, F000 out dx, al : A 1 5 8088 Minimum Mode A18 A0 : D7 D6 IOR IOW A19 D5 D4 D3 D2 D1 D0 A 1 4 A 1 3 A 1 2 A 1 1 A 1 0 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 IOW 74LS373 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 D0 D1 D2 D3 D4 D5 D6 D7 OE LECreating a Simple Input Device: Creating a Simple Input Device Use 8-Switches (keys) Use a chip and an address decoder such that the keys will be read only to the command in and a specific address (let’s assume that the address is F000 ) How to interface a switch to computer?Use of 74LS245 and Address Decoder: Use of 74LS245 and Address Decoder : mov dx, F000 in al, dx : A 1 5 8088 Minimum Mode A18 A0 : D7 D6 IOR IOW A19 D5 D4 D3 D2 D1 D0 A 1 4 A 1 3 A 1 2 A 1 1 A 1 0 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 IOR 5V 74LS245 B0 B1 B2 B3 B4 B5 B6 B7 A0 A1 A2 A3 A4 A5 A6 A7 E DIR Same address for input and output?How do you know if a user has pressed a button?: How do you know if a user has pressed a button? By Polling By InterruptPolling: Polling mov dx, F000 in al, dx L1: cmp al, FF je L1 : :Output Port Design: Output Port Design T1 – T4 of OUT 99H, AL ?Input Port Design: Input Port Design T1 – T4 of IN AL, 5FH ?8255 PPI: 8255 PPIControl word: Control wordModes of Operation: Modes of Operation Mode 0 – simple input or output Mode 1 – input or output with handshaking Mode 2 – bideirectional IO with handshakingExample - Port addresses: Example - Port addressesSolution: SolutionExample – Programming 8255: Example – Programming 8255Solution: SolutionBSR mode: BSR modeExample for BSR: Example for BSR Program 8255 for the following A) set PC2 to high B) Use PC6 to generate a square wave of 66% duty cycle Solution A) MOV AL, 00000101B OUT 93H,AL B) MOV AL, 0xxx1101 OUT 93H, AL CALL Delay CALL Delay MOV AL, 0xxx1100 OUT 93H, AL CALL Delay JMP AGAINMODE 1 Output Operation: MODE 1 Output OperationOutput with handshake: Output with handshake #OBFa : CPU has written a byte #ACKa: Data has been picked up by receiving device INTRa: After rising edge of #ACKa INTEa (interrupt enable) Internal flipflop Controlled by PC6MODE 1 Timing (output): MODE 1 Timing (output)Interrupt vs. Polling: Interrupt vs. Polling CPU is interrupted whenever necessary CPU can serve many devices Require more hardwareUsing status to Poll: Using status to PollSolution: SolutionMODE 1 Input Operation: MODE 1 Input OperationInput with handshake: Input with handshake #STB (in): Device provides data to an input port IBF (out): Data has been latched by 8255 INTR (out): After activation of IBF INTE (interrupt enable) Internal flip-flop Controlled by PC4 and PC2MODE 1 Timing (input): MODE 1 Timing (input)MODE 2 Operation: MODE 2 OperationIBM PC IO MAP: IBM PC IO MAPDecoding by 74138: Decoding by 741388255 Address in PC: 8255 Address in PCUse of 8255 ports in PC: Use of 8255 ports in PC MOV AL,99H OUT 63, AL80x86 family: 80x86 family 16-bit Processors 8088 (8-bit data / 20-bit address) 8086/186 (16-bit data / 20-bit address) 80286 (16-bit data / 24-bit address) 32-bit Processors 80386 (16/24 or 32/32 common) 80486 (32/32), Pentium, PII (64/32) Pentium Pro, II, III, IV (64/36) PPC 60x (32 or 64/32) All 80x86 processors use a 16-bit address for i/o8 And 16 bit Organizations: 8 And 16 bit Organizations 8088 Data is organized into byte widths The 1MB memory is organized as 1M x 8-bits 8086/80186 Data is organized into word widths The 1MB memory is organized as 512kB x 16-bits 80286/80386SX Data is organized into word widths The 16MB memory is organized as 8MB x 16-bits32 and 64 bit Organizations: 32 and 64 bit Organizations • 80386DX/80486 – Data is organized into double word widths – The 4GB memory is organized as 1GB x 32-bits • Pentium Pro/Pentium 1-4 – Data is organized into quad word widths – The 4GB memory is organized as 512MB x64-bits (on P2-4, actual address bus is 36 bits)Little Endian / Big Endian: Little Endian / Big Endian for the 68000: MOVE.W #513, D0 ; move value 513 into the lower 16 bits of D0 MOVE.W D0,4 ; store the lower word of D0 into memory 4 for the 80x86: MOV AX,513 ; load AX (16 bits), with the value 513 MOV [4],AX ; store AX into memory 4Memory Alignment in 16-bit Micro: Memory Alignment in 16-bit Micro We have 16-bit data bus Why not use it for memory access. 1M byte of memory is organized as: 512K * 16 bit The memory is word-aligned Access to even addresses is aligned and simple Example: 0102H and 0304H stored in [4H] What happens on mov AX,[4]? What happens on mov AX,[5]? Motorola family of the MC680x0 forbids non-aligned accessMemory Bank Select: Memory Bank Select 8086/186/286/386SX has 16 Data Lines D15-D0 6264 Only has 8 I/O7 – I/O0 Must Use a “Memory Bank” 1 SRAM for Storing Bytes with “Even Addresses” (… 0 2 ) 1 SRAM for Storing Bytes with “Odd” Addresses” (… 1 3 ) 8086 has BHE Control Signal – (Bank High Enable) Can Use Combination of A0 and BHE to Determine Type of Access BHE A0 Access Type 0 0 1 word (16-bits) 0 1 Odd Byte (D15-D8) 1 0 Even Byte (D7-D0) 1 1 No AccessInterfacing two 512KB Memory to the 8088 Microprocessor (review): Interfacing two 512KB Memory to the 8088 Microprocessor (review) A18 A0 : D7 D0 : MEMR MEMW XXXX BP ES DS SS CX BX AX XXXX XXXX XXXX 2000 0000 0023 3F1C FCA1 SP DX XXXX CS SI XXXX XXXX IP XXXX DI A19 23 00000 00001 95 : 20020 20021 20022 20023 7FFFD 7FFFE 7FFFF 29 12 7D 13 19 25 36 : : : A18 A0 : D7 D0 : RD WR CS 97 00000 00001 D4 : 20020 20021 20022 20023 7FFFD 7FFFE 7FFFF A3 92 45 33 2C 98 12 : : : A18 A0 : D7 D0 : RD WR CSInterfacing two 512KB Memory to the 8086 Microprocessor: Interfacing two 512KB Memory to the 8086 Microprocessor A19 A1 : D7 D0 : MEMR MEMW XXXX BP ES DS SS CX BX AX XXXX XXXX XXXX 4000 0000 0023 3F1C FCA1 SP DX XXXX CS SI XXXX XXXX IP XXXX DI A0 23 00000 00001 95 : 20020 20021 20022 20023 7FFFD 7FFFE 7FFFF 29 12 7D 13 19 25 36 : : : A18 A0 : D7 D0 : RD WR CS 97 00000 00001 D4 : 20020 20021 20022 20023 7FFFD 7FFFE 7FFFF A3 92 45 33 2C 98 12 : : : A18 A0 : RD WR CS D15 D8 : D7 D0 : BHE# How to connect data lines? How to connect address lines? What about chip select? MOV [0040], AL? MOV [0041], AH? MOV [0040], AX? 1C 3FDecoding Circuit with Bank Select: Decoding Circuit with Bank SelectInterfacing 8-bit Peripherals to 16-bit Data Bus: Interfacing 8-bit Peripherals to 16-bit Data Bus The Problem? Solutions: 1) two separate PPI devices. Even address for one and odd addresses for other OUT port#, AX outputs to both of them!!!Interfacing 8-bit Peripherals to 16-bit Data Bus (2): Interfacing 8-bit Peripherals to 16-bit Data Bus (2) Solutions: 2) Hi / Lo byte copier. Outputting to odd-addressed ports: Hi/Lo byte copier copies data from D8-D15 to D0-D7 Inputting a byte form odd-addressed ports: Hi/Lo byte copier copies data from D0-D7 to D8-D15 The logic now resides in chipsets.Hi/Lo Copier in PC: Hi/Lo Copier in PCISA Bus expansion slot: ISA Bus expansion slot Only 16-bit (even 32-bit or higher data bus) Speed is limited to 8MHzLinear Select Address Decoding: Linear Select Address Decoding What is the address range and aliases?Buffering Selected IO Address Range: Buffering Selected IO Address Range Range of addresses? Blocking others.PC Interface Card: PC Interface Card From BitPardazI/O Programming with C and BASIC: I/O Programming with C and BASIC Assembly Microsoft C Borland C BASIC OUT port#, AL outp (port#, byte) ouportb(port#, byte) Out port#, byte IN AL, port# var=inp(port#) var=inportb(port#) Var = INP (port#) OUT DX, AX Outpw(port#, word) Outport(port#, word) Out port#, word ?? IN AX, DX word=inpw(port#) word=inport(port#) Var = INP (port#)??Example: ExampleExample Polling program?: Example Polling program? The program makes a “running LED” effect (initially moving from down to up). Every time the lowest button is pressed, it changes the direction of the movement. When the highest button is pressed, the program terminates.The Circuit: The Circuit A 1 5 8088 Minimum Mode A18 A0 : D7 D6 IOR IOW A19 D5 D4 D3 D2 D1 D0 A 1 4 A 1 3 A 1 2 A 1 1 A 1 0 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 IOR 5V 74LS245 B0 B1 B2 B3 B4 B5 B6 B7 A0 A1 A2 A3 A4 A5 A6 A7 E DIR A 1 5 A 1 4 A 1 3 A 1 2 A 1 1 A 1 0 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 IOW 74LS373 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 D0 D1 D2 D3 D4 D5 D6 D7 OE LETrace what the program does:: Trace what the program does: mov dx, F000 mov ah, 00 mov al, 01 L1: out dx, al mov cx, FFFF L2: dec cx jnz L2 cmp ah, 00 jne L3 rol al, 1 cmp al, 01 jne L1 jmp L4 L3: ror al, 1 cmp al, 80 jne L1 L4: mov bl, al in al, dx cmp al, FF je L6 test al, 01 jnz L5 xor ah, FF jmp L6 L5: test al, 80 jz L7 L6: mov al, bl jmp L1 L7:What’s the problem with polling in the sample program?: What’s the problem with polling in the sample program? Running LED takes time User might remove his/her finger from the switch before the in al, dx instruction is executed the microprocessor will not know that the user has pressed the buttonProblem with Polling: Problem with Polling mov dx, F000 mov ah, 00 mov al, 01 L1: out dx, al mov cx, FFFF L2: dec cx jnz L2 cmp ah, 00 jne L3 rol al, 1 cmp al, 01 jne L1 jmp L4 L3: ror al, 1 cmp al, 80 jne L1 L4: mov bl, al in al, dx cmp al, FF je L6 test al, 01 jnz L5 xor ah, FF jmp L6 L5: test al, 80 jz L7 L6: mov al, bl jmp L1 L7:Interrupt: Interrupt The microprocessor does not check if data is available. The peripheral will interrupt the processor when data is availablePolling vs. Interrupt: Polling vs. Interrupt While studying , I’ll check the bucket every 5 minutes to see if it is already full so that I can transfer the content of the bucket to the drum. Input Device Memory P instruction POLLINGPolling vs. Interrupt: Polling vs. Interrupt I’ll just study . When the speaker starts playing music it means that the bucket is full. I can then transfer the content of the bucket to the drum. Input Device Memory P instruction INTERRUPT Interrupt request