Skip to main content

Overview

I/O Device Overview

Interrupts

TODO

Roadmap

  1. PS2 Keyboard
  2. Timer
  3. SPI, SD-Card
  4. Sound card
  5. Real-Time-Clock
  6. MIDI (via FPGA)
  7. Barcode Scanner (RS232 protocol)
  8. GPIO
  9. IO Break Out-Board

ISA

For further details see ISA Overview.

MnemonicDescription
prefix_a16change addressing mode to memory mapped IO for the next instruction
i2c_sendSend data over I2C
i2c_recvReceive data over I2C
spisend and receive for SPI communication

Control Lines

Note: We use ~ to denote active-low control lines. All other control lines are active-high.

Parallel

  • ~INT: Signals CPU interrupt from IO-device.
  • INTACK: Signals acknowledgement from CPU to IO-device. Commences interrupt handling routine.
  • IO/MEM_TO_DBUS : Memory Write From Bus
  • IO/MEM_FROM_DBUS: Memory Read From Bus
  • ADDR16: Shared with Graphics to differentiate between MMIO and normal address space. The 17th address bit, so to say.
  • BUSREQ: Signals CPU that IO-device wants to access data bus for read/write operation.

For case IO to CPU: IOtoCPU.png For case CPU to IO: CPUtoIO.png

Serial (for SPI/I2C)

  • SPI_SEND/REC: For sending and receiving data via SPI communication.
  • SPI_SCLK_EN: Enables clock of SPI device to make SPI communication possible according to SPI protocol.

IO Address Ranges

AddressDevice
0x0000reserved
0x0001Arduino
0x0008-0x000fKeyboard
0x0100-0x01ffTimer
0x8000-0xffffGraphics-Card