## In this project, you will be completing the design of a simple general purpose processor using Xilinx ISE Schematic Capture.

### The Problem

In this project, you will be completing the design of a simple general purpose processor using Xilinx ISE Schematic Capture.

DISCLAIMER: The processor we are working with is a very basic 8 bit single cycle processor with no data memory. While it is a good representation of a general purpose processor and is good for education, commercial processors are typically more complex.

A skeleton has been provided that contains various aspects of the processor already designed. You will be completing the Arithmetic Logic Unit, Register File and Instruction Memory of the simple processor.

Below is a description of these units as it pertains to this processor. You will need to use these descriptions as well as the information in the architecture section to fully build these units.

Arithmetic Logic Unit (ALU):

As covered in class, the arithmetic unit does the arithmetic and logic lifting for the processor. This ALU is an 8 bit ALU and can do 8 different operations as described in the table below. You will build the components for these logic and arithmetic operations.

 Opcode Operation 000 O = B 001 O = A ^ B (bitwise xor) 010 O = A AND B (bitwise and) 011 O = A OR  B (bitwise or) 100 O = A + B (addition) 101 O = A - B (subtract) 110 O(7) = 0, 0(6:0) = B (7:1) (logical shift right) 111 O = A * B (multiplication)

In addition to the operations, the ALU will also help generate flags based off the output. You do not have to create the flags but will need to create the input values for the carry flag multiplexor.

ALU inputs:
A(7:0):

8 bit data to be operated on. This comes from  the register file, read data a(R_data_a).

B (7:0):

8 bit data to be operated on. This can come from the register file, read data b (R_data_b)  or the data input to the processor.

Opcode (2:0):
This picks the operation to be done. The opcode comes from instruction bits 6 down to 4.