Difference between revisions of "IOP16 16-bit I/O CPU Design"

From Land Boards Wiki
Jump to navigation Jump to search
Line 88: Line 88:
 
* [https://github.com/douggilliland/IOP16/tree/main/Higher_Level_Examples/Front%20Panel%20Examples/FrontPanel01_Test_LoopBack Front Panel Loopback FPGA]
 
* [https://github.com/douggilliland/IOP16/tree/main/Higher_Level_Examples/Front%20Panel%20Examples/FrontPanel01_Test_LoopBack Front Panel Loopback FPGA]
 
* [https://github.com/douggilliland/Design_A_CPU/tree/main/CPU_Code/Application_Code/FP01_LOOP4 Front Panel Loopback Code]
 
* [https://github.com/douggilliland/Design_A_CPU/tree/main/CPU_Code/Application_Code/FP01_LOOP4 Front Panel Loopback Code]
 +
* [https://hackaday.io/project/180199-8-bit-computer-front-panel Hackaday Front Panel]
  
 
== External References ==
 
== External References ==

Revision as of 17:45, 10 April 2022

Overview

This CPU is intended to be used as an I/O Processor. The CPU can be used as a Microcontroller replacement in many applications. It implemented in an FPGA. It is useful for offloading polled I/O or replacing CPUs in small applications. The majority of these applications deal with 8-bit data and that's where this CPU excels.

Video PlayList

Features Set

  • 16-bit CPU
  • Simple/consistent opcode bit fields
    • Instructions are always only 16-bits wide
    • 4-bit opcode
      • Some sub-instructions allow more than 16 instructions
    • 4-bit register field (shared with address/offset)
    • 8-bit constant (shared with address/offset)
  • High enough Performance - 12.5 MIPS (4 of 50 MHz FPGA clocks)
  • Register File
    • 8 General Purpose registers
    • 3 constant value registers
    • Registers are 8-bits
  • 12-bit of Program address (up to 4K instructions)
  • Return Stack - 1 deep or optionally deeper as build option

IOP16 Block Diagram

IOP16 Block-Diagram.png

Instruction Set

Assembler

  • Table driven Assembler
    • Input comes from a CSV file
    • Outputs .MIF and Listing files
      • MIF (Memory Initialization File) is Altera ROM initialization File

Hardware Requirements

  • Targeted at an FPGA implementation
    • The CPU could easily be run on pretty much any FPGA
    • Coded in VHDL
  • Very small LUT/Memory footprint in FPGA
    • Uses 226 logic cells in an Altera EP4 FPGA
    • Requires a minimum 2 of 1K SRAM blocks (depends on program size)
      • Trade-off - SRAM could be replaced with logic cells (in theory)

Target Hardware

CycloneIV Starter Kit P528-720px.jpg

Peripheral Support

  • Extensive Peripheral Support
  • 8-bit address (controls up to 256 peripherals)
  • 8-bit data
  • Read strobe (a couple of clocks wide)
  • Write strobe (a couple of clocks wide)

Code Examples

Here are some Code and FPGA build example applications

ANSI Terminal

Front Panel Loopback

External References

IOP16 Porting Guide

Example Applications