####Group: CO4618 ####Author: Bernard Yuan
Almost all the parts are transplanted from SingleClock CPU with some modifications in the debugging process.
##System Specification:
- controller: provides all the control signals of the CPU.
- ALUnit and related accessories: implement arithmetic operations including add, sub, or, and, slt.
- regFile: the register files, consisting of 32 registers.
- PCregister: modified from the register module, as the timing requirement of PC register is different from others.
- mux2x1 and mux4x1: use for data selections
- Note: Still need one IPcore as the Memory cell, parameter:
- Data width: 32
- Data depth: 512 or larger
- ENA signal required
- init file: can be customized, the test.coe file provides one testing routine and the test.txt file is the explanation of it.
- The timing of Multi-Clock CPU. If one element uses the data read from one register at an positive edge, this element must do the write operation at the following negative edge to avoid writing errors.
- To demonstrate it, we have to provide the clk pulse manually. Initially the clk pulses are given with a button, but the button is sometimes not stable as there are bounces, so in the .ucf file the clk is changed into one switch.
##Instructions implemented:
- R-type:
- add
- sub
- or
- and
- slt
- I-type:
- beq
- lw
- sw
- J-type:
- J
##display part:
- display32bits and display16bits: display the numbers with nodes and segments in Hexadecimal, mainly for debugging.
- The VGA display is still in progress.
- R type xor
- I type addi subi andi ori slti bne
- J type Jal