This year the task is to produce a microprocessor for embedded computing tasks. The processor should be as general purpose as possible.
To demonstrate the usefulness of your design you will be asked to show that it can execute programs to perform the following tasks:
You may find that the resources for this project are rather less than those available to Intel in terms of:
For these reasons you should aim for the simplest design possible:
Your architecture should support a 16 bit wide datapath and a 216 word address space.
Your architecture should support subroutine call and return via a system stack. Your factorial program should use a recursive subroutine in order to demonstrate this facility. You should also support the use of the stack for parameter passing and local variable storage. A separate subroutine for multiplication (called by your factorial routine) should help to demonstrate these features.
Note that a dedicated stack pointer is not required in order to support this system stack. A RISC processor would simply use one of its general purpose registers as a stack pointer. Nor is it necessary to provide auto-increment or auto-decrement in order to support stack pull(push). A RISC processor would typically use different instructions for load(store) data and increment(decrement) stack pointer. In order to support local variable storage on the stack you will need to include a simple indexed addressing mode.
Your processor should employ no more than six(+n/2) 16 bit registers, including the program counter (PC) and the instruction register (IR). Solutions with between four and ten registers are possible. This limit will help to keep processor sizes down and will encourage you to think carefully about the efficient use of the registers that you have.
The n factor is the number of completely general purpose registers in your design. Thus if you opt for only PC and IR as special purpose registers you will be allowed up to eight general purpose registers. Note that no general purpose register may be recognised as different from any other by the architecture.
Note that this is a limit not a target, thus it is perfectly acceptable for any team to submit a design with only four registers.
The system will consist of a central microprocessor (to be designed by you), connected via a single set of buses and some glue logic to ROM, RAM and I/O units.
As much as possible you are left to make your own decisions on the form of your design.
Hopefully the research phase of this project has given you a good starting point for attempting this design. Further research is likely to be required as your ideas develop. Although your design may have more in common with microprocessors of the late '70s than with modern RISC machines, the same principles of good design apply. Remember that you are not competing with the Pentium 4, only with the designs put forward by other design teams.
All memory accesses take four cycles of the system clock
Pad cells for this design will be taken from Alcatel Mietec's MTC35400 library for their 0.5um CMOS process. Alcatel provide us with empty abstract representations of these cells since the contents are considered company confidential. You will be provided with dummy versions of the cells which should simulate correctly using Magic and Verilog. To avoid design rule violations with the real pad cells you should keep routing wires one full design rule away from the edge of the pad cells except where connection is required.
The following types of pad are available:
The following pads will exist on the finished chip:
These pads make no direct connection to the core circuit. This will reduce switching noise on the core power rails.
These pads include a non-inverting buffer and static protection circuit.
These pads include non-inverting pad drivers.
These pads include a tri-state non-inverting buffer (with inverted enable) on output and a non-inverting buffer on input. Three connections are made to the core of the cell in order to support a bi-directional pad. Although the pad connection is tri-state, the core connections are not, thus the ZI and A connections cannot be directly connected to the same internal bus.
Iain McNally
7-2-2002