mirror of
https://github.com/supleed2/ELEC50010-IAC-CW.git
synced 2024-12-23 05:45:47 +00:00
Update program counter
Logic for instructions with linking not implemented. Can do basic branch delay slots. More left to do with return register
This commit is contained in:
parent
3594365a25
commit
14ad7fa0ce
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
exec/*
|
||||||
|
inputs/*.log.txt
|
||||||
|
inputs/*.out.txt
|
||||||
|
mips_cpu_harvard.vcd
|
60
MIPS.txt
60
MIPS.txt
|
@ -1,60 +0,0 @@
|
||||||
MIPS 32 bits
|
|
||||||
|
|
||||||
== Bits, Bytes, Hex ==
|
|
||||||
-- 8 bits = 1 byte = 2 hex
|
|
||||||
-- 32 bits = 4 bytes = 8 hex
|
|
||||||
-- e.g. 00000000 00000000 00000000 00000000 -> 0x00000000
|
|
||||||
|
|
||||||
== CPU ==
|
|
||||||
inputs:
|
|
||||||
-- manual MIPS assembly code -> instructions in binaries
|
|
||||||
-- C code -> compiled c program under mips -> disassemble binaries -> assembly code -> instruction in binaries
|
|
||||||
-- these binary instructions goes into instruction memory
|
|
||||||
outputs:
|
|
||||||
-- output of the instructions
|
|
||||||
errors:
|
|
||||||
-- ?????? how do we detect errors ??????
|
|
||||||
|
|
||||||
== Submodules ==
|
|
||||||
-- ALU
|
|
||||||
-- Register File
|
|
||||||
-- Data Memory
|
|
||||||
-- Instruction Register
|
|
||||||
-- PC
|
|
||||||
-- Control Unit
|
|
||||||
|
|
||||||
== Testbench ==
|
|
||||||
-- ????? not so sure yet ?????
|
|
||||||
|
|
||||||
== Endianess ==
|
|
||||||
-- big endian: bytes are numbered starting with byte 0 at MSB
|
|
||||||
-- use -EB flag to ensure big endian
|
|
||||||
|
|
||||||
== Instruction Access ==
|
|
||||||
-- PC (program counter): 32 bit register
|
|
||||||
-- PC is initialised to 0xBFC00000
|
|
||||||
-- PC changed as instructions are executed
|
|
||||||
-- IR = Mem[PC] -> instruction is fetched from data memory using data at the address given by program counter
|
|
||||||
|
|
||||||
Address bus: CPU -> Memory
|
|
||||||
Data bus: CPU <=> Memory
|
|
||||||
|
|
||||||
== Register File ==
|
|
||||||
-- 32 general-purpose registers
|
|
||||||
|
|
||||||
== Program Counter ==
|
|
||||||
-- PC is just a 32 bit register in which the value (address of instruction) get updated by other blocks
|
|
||||||
-- Controlled by PCSrc (for branching or regular increment by 4 bytes)
|
|
||||||
|
|
||||||
== Questions ==
|
|
||||||
Pseudo-instructions -> how to deal with them -> convert to actual instructions?
|
|
||||||
Do we implement big-endian mips?
|
|
||||||
What verilator could be useful for
|
|
||||||
How would a testbench in c++ be helpful?
|
|
||||||
Don't understand that part where we need to implement cache
|
|
||||||
|
|
||||||
== Todo ==
|
|
||||||
Testbench in c++
|
|
||||||
Cache
|
|
||||||
CPU stall cycle
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,288 +0,0 @@
|
||||||
RAM: Loading RAM contents from inputs/add.txt
|
|
||||||
ERROR: rtl/mips_cpu_memory.v:33: $readmemh: Unable to open inputs/add.txt for reading.
|
|
||||||
byte +bfc00000: 00000000
|
|
||||||
byte +bfc00004: 00000000
|
|
||||||
byte +bfc00008: 00000000
|
|
||||||
byte +bfc0000c: 00000000
|
|
||||||
byte +bfc00010: 00000000
|
|
||||||
byte +bfc00014: 00000000
|
|
||||||
byte +bfc00018: 00000000
|
|
||||||
byte +bfc0001c: 00000000
|
|
||||||
byte +bfc00020: 00000000
|
|
||||||
byte +bfc00024: 00000000
|
|
||||||
byte +bfc00028: 00000000
|
|
||||||
byte +bfc0002c: 00000000
|
|
||||||
byte +bfc00030: 00000000
|
|
||||||
byte +bfc00034: 00000000
|
|
||||||
byte +bfc00038: 00000000
|
|
||||||
byte +bfc0003c: 00000000
|
|
||||||
byte +bfc00040: 00000000
|
|
||||||
byte +bfc00044: 00000000
|
|
||||||
byte +bfc00048: 00000000
|
|
||||||
byte +bfc0004c: 00000000
|
|
||||||
byte +bfc00050: 00000000
|
|
||||||
byte +bfc00054: 00000000
|
|
||||||
byte +bfc00058: 00000000
|
|
||||||
byte +bfc0005c: 00000000
|
|
||||||
byte +bfc00060: 00000000
|
|
||||||
byte +bfc00064: 00000000
|
|
||||||
byte +bfc00068: 00000000
|
|
||||||
byte +bfc0006c: 00000000
|
|
||||||
byte +bfc00070: 00000000
|
|
||||||
byte +bfc00074: 00000000
|
|
||||||
byte +bfc00078: 00000000
|
|
||||||
byte +bfc0007c: 00000000
|
|
||||||
byte +bfc00080: 00000000
|
|
||||||
byte +bfc00084: 00000000
|
|
||||||
byte +bfc00088: 00000000
|
|
||||||
byte +bfc0008c: 00000000
|
|
||||||
byte +bfc00090: 00000000
|
|
||||||
byte +bfc00094: 00000000
|
|
||||||
byte +bfc00098: 00000000
|
|
||||||
byte +bfc0009c: 00000000
|
|
||||||
byte +bfc000a0: 00000000
|
|
||||||
byte +bfc000a4: 00000000
|
|
||||||
byte +bfc000a8: 00000000
|
|
||||||
byte +bfc000ac: 00000000
|
|
||||||
byte +bfc000b0: 00000000
|
|
||||||
byte +bfc000b4: 00000000
|
|
||||||
byte +bfc000b8: 00000000
|
|
||||||
byte +bfc000bc: 00000000
|
|
||||||
byte +bfc000c0: 00000000
|
|
||||||
byte +bfc000c4: 00000000
|
|
||||||
byte +bfc000c8: 00000000
|
|
||||||
byte +bfc000cc: 00000000
|
|
||||||
byte +bfc000d0: 00000000
|
|
||||||
byte +bfc000d4: 00000000
|
|
||||||
byte +bfc000d8: 00000000
|
|
||||||
byte +bfc000dc: 00000000
|
|
||||||
byte +bfc000e0: 00000000
|
|
||||||
byte +bfc000e4: 00000000
|
|
||||||
byte +bfc000e8: 00000000
|
|
||||||
byte +bfc000ec: 00000000
|
|
||||||
byte +bfc000f0: 00000000
|
|
||||||
byte +bfc000f4: 00000000
|
|
||||||
byte +bfc000f8: 00000000
|
|
||||||
byte +bfc000fc: 00000000
|
|
||||||
VCD info: dumpfile mips_cpu_harvard.vcd opened for output.
|
|
||||||
Initial Reset 0
|
|
||||||
Initial Reset 1
|
|
||||||
Opcode: xx
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
Opcode: 00
|
|
||||||
CTRLREGDST: Rd
|
|
||||||
Memory read disabled
|
|
||||||
Initial Reset 0: Start Program
|
|
||||||
New PC from xxxxxxxx to bfc00000
|
|
||||||
Opcode: 00
|
|
||||||
CTRLREGDST: Rd
|
|
||||||
Memory read disabled
|
|
||||||
Opcode: xx
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
Opcode: xx
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
Opcode: 00
|
|
||||||
CTRLREGDST: Rd
|
|
||||||
Memory read disabled
|
|
||||||
New PC from bfc00000 to bfc00000
|
|
||||||
New PC from bfc00000 to bfc00004
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00004 to bfc00004
|
|
||||||
New PC from bfc00004 to bfc00008
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00008 to bfc00008
|
|
||||||
New PC from bfc00008 to bfc0000c
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc0000c to bfc0000c
|
|
||||||
New PC from bfc0000c to bfc00010
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00010 to bfc00010
|
|
||||||
New PC from bfc00010 to bfc00014
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00014 to bfc00014
|
|
||||||
New PC from bfc00014 to bfc00018
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00018 to bfc00018
|
|
||||||
New PC from bfc00018 to bfc0001c
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc0001c to bfc0001c
|
|
||||||
New PC from bfc0001c to bfc00020
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00020 to bfc00020
|
|
||||||
New PC from bfc00020 to bfc00024
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00024 to bfc00024
|
|
||||||
New PC from bfc00024 to bfc00028
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00028 to bfc00028
|
|
||||||
New PC from bfc00028 to bfc0002c
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc0002c to bfc0002c
|
|
||||||
New PC from bfc0002c to bfc00030
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00030 to bfc00030
|
|
||||||
New PC from bfc00030 to bfc00034
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00034 to bfc00034
|
|
||||||
New PC from bfc00034 to bfc00038
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00038 to bfc00038
|
|
||||||
New PC from bfc00038 to bfc0003c
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc0003c to bfc0003c
|
|
||||||
Opcode: 00
|
|
||||||
CTRLREGDST: Rd
|
|
||||||
Memory read disabled
|
|
||||||
Opcode: xx
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
New PC from bfc0003c to bfc00040
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00040 to bfc00040
|
|
||||||
New PC from bfc00040 to bfc00044
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00044 to bfc00044
|
|
||||||
New PC from bfc00044 to bfc00048
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00048 to bfc00048
|
|
||||||
New PC from bfc00048 to bfc0004c
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc0004c to bfc0004c
|
|
||||||
New PC from bfc0004c to bfc00050
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00050 to bfc00050
|
|
||||||
New PC from bfc00050 to bfc00054
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00054 to bfc00054
|
|
||||||
New PC from bfc00054 to bfc00058
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00058 to bfc00058
|
|
||||||
New PC from bfc00058 to bfc0005c
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc0005c to bfc0005c
|
|
||||||
New PC from bfc0005c to bfc00060
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00060 to bfc00060
|
|
||||||
New PC from bfc00060 to bfc00064
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00064 to bfc00064
|
|
||||||
New PC from bfc00064 to bfc00068
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00068 to bfc00068
|
|
||||||
New PC from bfc00068 to bfc0006c
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc0006c to bfc0006c
|
|
||||||
New PC from bfc0006c to bfc00070
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00070 to bfc00070
|
|
||||||
New PC from bfc00070 to bfc00074
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00074 to bfc00074
|
|
||||||
New PC from bfc00074 to bfc00078
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00078 to bfc00078
|
|
||||||
New PC from bfc00078 to bfc0007c
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc0007c to bfc0007c
|
|
||||||
New PC from bfc0007c to bfc00080
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00080 to bfc00080
|
|
||||||
New PC from bfc00080 to bfc00084
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00084 to bfc00084
|
|
||||||
New PC from bfc00084 to bfc00088
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00088 to bfc00088
|
|
||||||
New PC from bfc00088 to bfc0008c
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc0008c to bfc0008c
|
|
||||||
New PC from bfc0008c to bfc00090
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00090 to bfc00090
|
|
||||||
New PC from bfc00090 to bfc00094
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00094 to bfc00094
|
|
||||||
New PC from bfc00094 to bfc00098
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00098 to bfc00098
|
|
||||||
New PC from bfc00098 to bfc0009c
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc0009c to bfc0009c
|
|
||||||
New PC from bfc0009c to bfc000a0
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc000a0 to bfc000a0
|
|
||||||
New PC from bfc000a0 to bfc000a4
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc000a4 to bfc000a4
|
|
||||||
New PC from bfc000a4 to bfc000a8
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc000a8 to bfc000a8
|
|
||||||
New PC from bfc000a8 to bfc000ac
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc000ac to bfc000ac
|
|
||||||
New PC from bfc000ac to bfc000b0
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc000b0 to bfc000b0
|
|
||||||
New PC from bfc000b0 to bfc000b4
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc000b4 to bfc000b4
|
|
||||||
New PC from bfc000b4 to bfc000b8
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc000b8 to bfc000b8
|
|
||||||
New PC from bfc000b8 to bfc000bc
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc000bc to bfc000bc
|
|
||||||
New PC from bfc000bc to bfc000c0
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc000c0 to bfc000c0
|
|
||||||
New PC from bfc000c0 to bfc000c4
|
|
||||||
Reg File Write data: x
|
|
||||||
FATAL: testbench/mips_cpu_harvard_tb.v:47: Simulation did not finish within 100 cycles.
|
|
||||||
Time: 2000 Scope: mips_cpu_harvard_tb
|
|
|
@ -1 +0,0 @@
|
||||||
Time: 2000 Scope: mips_cpu_harvard_tb
|
|
|
@ -1,181 +0,0 @@
|
||||||
RAM: Loading RAM contents from inputs/addiu.txt
|
|
||||||
WARNING: rtl/mips_cpu_memory.v:33: $readmemh(inputs/addiu.txt): Not enough words in the file for the requested range [0:63].
|
|
||||||
byte +bfc00000: 3404000a
|
|
||||||
byte +bfc00004: 24820014
|
|
||||||
byte +bfc00008: 00000008
|
|
||||||
byte +bfc0000c: 00000000
|
|
||||||
byte +bfc00010: 00000000
|
|
||||||
byte +bfc00014: 00000000
|
|
||||||
byte +bfc00018: 00000000
|
|
||||||
byte +bfc0001c: 00000000
|
|
||||||
byte +bfc00020: 00000000
|
|
||||||
byte +bfc00024: 00000000
|
|
||||||
byte +bfc00028: 00000000
|
|
||||||
byte +bfc0002c: 00000000
|
|
||||||
byte +bfc00030: 00000000
|
|
||||||
byte +bfc00034: 00000000
|
|
||||||
byte +bfc00038: 00000000
|
|
||||||
byte +bfc0003c: 00000000
|
|
||||||
byte +bfc00040: 00000000
|
|
||||||
byte +bfc00044: 00000000
|
|
||||||
byte +bfc00048: 00000000
|
|
||||||
byte +bfc0004c: 00000000
|
|
||||||
byte +bfc00050: 00000000
|
|
||||||
byte +bfc00054: 00000000
|
|
||||||
byte +bfc00058: 00000000
|
|
||||||
byte +bfc0005c: 00000000
|
|
||||||
byte +bfc00060: 00000000
|
|
||||||
byte +bfc00064: 00000000
|
|
||||||
byte +bfc00068: 00000000
|
|
||||||
byte +bfc0006c: 00000000
|
|
||||||
byte +bfc00070: 00000000
|
|
||||||
byte +bfc00074: 00000000
|
|
||||||
byte +bfc00078: 00000000
|
|
||||||
byte +bfc0007c: 00000000
|
|
||||||
byte +bfc00080: 00000000
|
|
||||||
byte +bfc00084: 00000000
|
|
||||||
byte +bfc00088: 00000000
|
|
||||||
byte +bfc0008c: 00000000
|
|
||||||
byte +bfc00090: 00000000
|
|
||||||
byte +bfc00094: 00000000
|
|
||||||
byte +bfc00098: 00000000
|
|
||||||
byte +bfc0009c: 00000000
|
|
||||||
byte +bfc000a0: 00000000
|
|
||||||
byte +bfc000a4: 00000000
|
|
||||||
byte +bfc000a8: 00000000
|
|
||||||
byte +bfc000ac: 00000000
|
|
||||||
byte +bfc000b0: 00000000
|
|
||||||
byte +bfc000b4: 00000000
|
|
||||||
byte +bfc000b8: 00000000
|
|
||||||
byte +bfc000bc: 00000000
|
|
||||||
byte +bfc000c0: 00000000
|
|
||||||
byte +bfc000c4: 00000000
|
|
||||||
byte +bfc000c8: 00000000
|
|
||||||
byte +bfc000cc: 00000000
|
|
||||||
byte +bfc000d0: 00000000
|
|
||||||
byte +bfc000d4: 00000000
|
|
||||||
byte +bfc000d8: 00000000
|
|
||||||
byte +bfc000dc: 00000000
|
|
||||||
byte +bfc000e0: 00000000
|
|
||||||
byte +bfc000e4: 00000000
|
|
||||||
byte +bfc000e8: 00000000
|
|
||||||
byte +bfc000ec: 00000000
|
|
||||||
byte +bfc000f0: 00000000
|
|
||||||
byte +bfc000f4: 00000000
|
|
||||||
byte +bfc000f8: 00000000
|
|
||||||
byte +bfc000fc: 00000000
|
|
||||||
MEM: Loading MEM contents from inputs/addiu.data.txt
|
|
||||||
WARNING: rtl/mips_cpu_memory.v:42: $readmemh(inputs/addiu.data.txt): Not enough words in the file for the requested range [0:63].
|
|
||||||
byte +00001000: 12341234
|
|
||||||
byte +00001004: 01010101
|
|
||||||
byte +00001008: 12312312
|
|
||||||
byte +0000100c: 88888888
|
|
||||||
byte +00001010: 00000000
|
|
||||||
byte +00001014: 00000000
|
|
||||||
byte +00001018: 00000000
|
|
||||||
byte +0000101c: 00000000
|
|
||||||
byte +00001020: 00000000
|
|
||||||
byte +00001024: 00000000
|
|
||||||
byte +00001028: 00000000
|
|
||||||
byte +0000102c: 00000000
|
|
||||||
byte +00001030: 00000000
|
|
||||||
byte +00001034: 00000000
|
|
||||||
byte +00001038: 00000000
|
|
||||||
byte +0000103c: 00000000
|
|
||||||
byte +00001040: 00000000
|
|
||||||
byte +00001044: 00000000
|
|
||||||
byte +00001048: 00000000
|
|
||||||
byte +0000104c: 00000000
|
|
||||||
byte +00001050: 00000000
|
|
||||||
byte +00001054: 00000000
|
|
||||||
byte +00001058: 00000000
|
|
||||||
byte +0000105c: 00000000
|
|
||||||
byte +00001060: 00000000
|
|
||||||
byte +00001064: 00000000
|
|
||||||
byte +00001068: 00000000
|
|
||||||
byte +0000106c: 00000000
|
|
||||||
byte +00001070: 00000000
|
|
||||||
byte +00001074: 00000000
|
|
||||||
byte +00001078: 00000000
|
|
||||||
byte +0000107c: 00000000
|
|
||||||
byte +00001080: 00000000
|
|
||||||
byte +00001084: 00000000
|
|
||||||
byte +00001088: 00000000
|
|
||||||
byte +0000108c: 00000000
|
|
||||||
byte +00001090: 00000000
|
|
||||||
byte +00001094: 00000000
|
|
||||||
byte +00001098: 00000000
|
|
||||||
byte +0000109c: 00000000
|
|
||||||
byte +000010a0: 00000000
|
|
||||||
byte +000010a4: 00000000
|
|
||||||
byte +000010a8: 00000000
|
|
||||||
byte +000010ac: 00000000
|
|
||||||
byte +000010b0: 00000000
|
|
||||||
byte +000010b4: 00000000
|
|
||||||
byte +000010b8: 00000000
|
|
||||||
byte +000010bc: 00000000
|
|
||||||
byte +000010c0: 00000000
|
|
||||||
byte +000010c4: 00000000
|
|
||||||
byte +000010c8: 00000000
|
|
||||||
byte +000010cc: 00000000
|
|
||||||
byte +000010d0: 00000000
|
|
||||||
byte +000010d4: 00000000
|
|
||||||
byte +000010d8: 00000000
|
|
||||||
byte +000010dc: 00000000
|
|
||||||
byte +000010e0: 00000000
|
|
||||||
byte +000010e4: 00000000
|
|
||||||
byte +000010e8: 00000000
|
|
||||||
byte +000010ec: 00000000
|
|
||||||
byte +000010f0: 00000000
|
|
||||||
byte +000010f4: 00000000
|
|
||||||
byte +000010f8: 00000000
|
|
||||||
byte +000010fc: 00000000
|
|
||||||
VCD info: dumpfile mips_cpu_harvard.vcd opened for output.
|
|
||||||
Initial Reset 0
|
|
||||||
Initial Reset 1
|
|
||||||
Opcode: xx
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
Opcode: 0d
|
|
||||||
CTRLREGDST: Rt
|
|
||||||
Memory read disabled
|
|
||||||
Initial Reset 0: Start Program
|
|
||||||
New PC from xxxxxxxx to bfc00000
|
|
||||||
Opcode: 0d
|
|
||||||
CTRLREGDST: Rt
|
|
||||||
Memory read disabled
|
|
||||||
Opcode: xx
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
Opcode: xx
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
Opcode: 0d
|
|
||||||
CTRLREGDST: Rt
|
|
||||||
Memory read disabled
|
|
||||||
New PC from bfc00000 to bfc00000
|
|
||||||
Opcode: 0d
|
|
||||||
CTRLREGDST: Rt
|
|
||||||
Memory read disabled
|
|
||||||
Opcode: 09
|
|
||||||
CTRLREGDST: Rt
|
|
||||||
Memory read disabled
|
|
||||||
ALU OP = 0 (ADDU/ADDIU)
|
|
||||||
New PC from bfc00000 to bfc00004
|
|
||||||
Reg File Write data: 30
|
|
||||||
Reg File Write data: 30
|
|
||||||
New PC from bfc00004 to bfc00004
|
|
||||||
Opcode: 09
|
|
||||||
CTRLREGDST: Rt
|
|
||||||
Memory read disabled
|
|
||||||
ALU OP = 0 (ADDU/ADDIU)
|
|
||||||
Opcode: 00
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
JUMP REGISTER
|
|
||||||
Reg File Write data: 18
|
|
||||||
Opcode: 00
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
Opcode: xx
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
Reg File Write data: 18
|
|
||||||
Reg File Write data: 18
|
|
||||||
TB: CPU Halt; active=0
|
|
||||||
Output:
|
|
||||||
30
|
|
|
@ -1 +0,0 @@
|
||||||
30
|
|
|
@ -1,125 +0,0 @@
|
||||||
RAM: Loading RAM contents from inputs/addu.txt
|
|
||||||
WARNING: rtl/mips_cpu_memory.v:33: $readmemh(inputs/addu.txt): Not enough words in the file for the requested range [0:63].
|
|
||||||
byte +bfc00000: 3404ffff
|
|
||||||
byte +bfc00004: 3405f000
|
|
||||||
byte +bfc00008: 00851021
|
|
||||||
byte +bfc0000c: 00000008
|
|
||||||
byte +bfc00010: 00000000
|
|
||||||
byte +bfc00014: 00000000
|
|
||||||
byte +bfc00018: 00000000
|
|
||||||
byte +bfc0001c: 00000000
|
|
||||||
byte +bfc00020: 00000000
|
|
||||||
byte +bfc00024: 00000000
|
|
||||||
byte +bfc00028: 00000000
|
|
||||||
byte +bfc0002c: 00000000
|
|
||||||
byte +bfc00030: 00000000
|
|
||||||
byte +bfc00034: 00000000
|
|
||||||
byte +bfc00038: 00000000
|
|
||||||
byte +bfc0003c: 00000000
|
|
||||||
byte +bfc00040: 00000000
|
|
||||||
byte +bfc00044: 00000000
|
|
||||||
byte +bfc00048: 00000000
|
|
||||||
byte +bfc0004c: 00000000
|
|
||||||
byte +bfc00050: 00000000
|
|
||||||
byte +bfc00054: 00000000
|
|
||||||
byte +bfc00058: 00000000
|
|
||||||
byte +bfc0005c: 00000000
|
|
||||||
byte +bfc00060: 00000000
|
|
||||||
byte +bfc00064: 00000000
|
|
||||||
byte +bfc00068: 00000000
|
|
||||||
byte +bfc0006c: 00000000
|
|
||||||
byte +bfc00070: 00000000
|
|
||||||
byte +bfc00074: 00000000
|
|
||||||
byte +bfc00078: 00000000
|
|
||||||
byte +bfc0007c: 00000000
|
|
||||||
byte +bfc00080: 00000000
|
|
||||||
byte +bfc00084: 00000000
|
|
||||||
byte +bfc00088: 00000000
|
|
||||||
byte +bfc0008c: 00000000
|
|
||||||
byte +bfc00090: 00000000
|
|
||||||
byte +bfc00094: 00000000
|
|
||||||
byte +bfc00098: 00000000
|
|
||||||
byte +bfc0009c: 00000000
|
|
||||||
byte +bfc000a0: 00000000
|
|
||||||
byte +bfc000a4: 00000000
|
|
||||||
byte +bfc000a8: 00000000
|
|
||||||
byte +bfc000ac: 00000000
|
|
||||||
byte +bfc000b0: 00000000
|
|
||||||
byte +bfc000b4: 00000000
|
|
||||||
byte +bfc000b8: 00000000
|
|
||||||
byte +bfc000bc: 00000000
|
|
||||||
byte +bfc000c0: 00000000
|
|
||||||
byte +bfc000c4: 00000000
|
|
||||||
byte +bfc000c8: 00000000
|
|
||||||
byte +bfc000cc: 00000000
|
|
||||||
byte +bfc000d0: 00000000
|
|
||||||
byte +bfc000d4: 00000000
|
|
||||||
byte +bfc000d8: 00000000
|
|
||||||
byte +bfc000dc: 00000000
|
|
||||||
byte +bfc000e0: 00000000
|
|
||||||
byte +bfc000e4: 00000000
|
|
||||||
byte +bfc000e8: 00000000
|
|
||||||
byte +bfc000ec: 00000000
|
|
||||||
byte +bfc000f0: 00000000
|
|
||||||
byte +bfc000f4: 00000000
|
|
||||||
byte +bfc000f8: 00000000
|
|
||||||
byte +bfc000fc: 00000000
|
|
||||||
VCD info: dumpfile mips_cpu_harvard.vcd opened for output.
|
|
||||||
Initial Reset 0
|
|
||||||
Initial Reset 1
|
|
||||||
Opcode: xx
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
Opcode: 0d
|
|
||||||
CTRLREGDST: Rt
|
|
||||||
Memory read disabled
|
|
||||||
Initial Reset 0: Start Program
|
|
||||||
New PC from xxxxxxxx to bfc00000
|
|
||||||
Opcode: 0d
|
|
||||||
CTRLREGDST: Rt
|
|
||||||
Memory read disabled
|
|
||||||
Opcode: xx
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
Opcode: xx
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
Opcode: 0d
|
|
||||||
CTRLREGDST: Rt
|
|
||||||
Memory read disabled
|
|
||||||
New PC from bfc00000 to bfc00000
|
|
||||||
Opcode: 0d
|
|
||||||
CTRLREGDST: Rt
|
|
||||||
Memory read disabled
|
|
||||||
Opcode: 0d
|
|
||||||
CTRLREGDST: Rt
|
|
||||||
Memory read disabled
|
|
||||||
New PC from bfc00000 to bfc00004
|
|
||||||
Reg File Write data: 4294963200
|
|
||||||
Reg File Write data: 4294963200
|
|
||||||
New PC from bfc00004 to bfc00004
|
|
||||||
Opcode: 0d
|
|
||||||
CTRLREGDST: Rt
|
|
||||||
Memory read disabled
|
|
||||||
Opcode: 00
|
|
||||||
CTRLREGDST: Rd
|
|
||||||
Memory read disabled
|
|
||||||
ALU OP = 0 (ADDU/ADDIU)
|
|
||||||
New PC from bfc00004 to bfc00008
|
|
||||||
Reg File Write data: 4294963199
|
|
||||||
Reg File Write data: 4294963199
|
|
||||||
New PC from bfc00008 to bfc00008
|
|
||||||
Opcode: 00
|
|
||||||
CTRLREGDST: Rd
|
|
||||||
Memory read disabled
|
|
||||||
ALU OP = 0 (ADDU/ADDIU)
|
|
||||||
Opcode: 00
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
JUMP REGISTER
|
|
||||||
Reg File Write data: 4294963199
|
|
||||||
Opcode: 00
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
Opcode: xx
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
Reg File Write data: 4294963199
|
|
||||||
Reg File Write data: 4294963199
|
|
||||||
TB: CPU Halt; active=0
|
|
||||||
Output:
|
|
||||||
4294963199
|
|
|
@ -1 +0,0 @@
|
||||||
4294963199
|
|
|
@ -1,123 +0,0 @@
|
||||||
RAM: Loading RAM contents from inputs/and.txt
|
|
||||||
WARNING: rtl/mips_cpu_memory.v:33: $readmemh(inputs/and.txt): Not enough words in the file for the requested range [0:63].
|
|
||||||
byte +bfc00000: 3404000a
|
|
||||||
byte +bfc00004: 3405000f
|
|
||||||
byte +bfc00008: 00851024
|
|
||||||
byte +bfc0000c: 00000008
|
|
||||||
byte +bfc00010: 00000000
|
|
||||||
byte +bfc00014: 00000000
|
|
||||||
byte +bfc00018: 00000000
|
|
||||||
byte +bfc0001c: 00000000
|
|
||||||
byte +bfc00020: 00000000
|
|
||||||
byte +bfc00024: 00000000
|
|
||||||
byte +bfc00028: 00000000
|
|
||||||
byte +bfc0002c: 00000000
|
|
||||||
byte +bfc00030: 00000000
|
|
||||||
byte +bfc00034: 00000000
|
|
||||||
byte +bfc00038: 00000000
|
|
||||||
byte +bfc0003c: 00000000
|
|
||||||
byte +bfc00040: 00000000
|
|
||||||
byte +bfc00044: 00000000
|
|
||||||
byte +bfc00048: 00000000
|
|
||||||
byte +bfc0004c: 00000000
|
|
||||||
byte +bfc00050: 00000000
|
|
||||||
byte +bfc00054: 00000000
|
|
||||||
byte +bfc00058: 00000000
|
|
||||||
byte +bfc0005c: 00000000
|
|
||||||
byte +bfc00060: 00000000
|
|
||||||
byte +bfc00064: 00000000
|
|
||||||
byte +bfc00068: 00000000
|
|
||||||
byte +bfc0006c: 00000000
|
|
||||||
byte +bfc00070: 00000000
|
|
||||||
byte +bfc00074: 00000000
|
|
||||||
byte +bfc00078: 00000000
|
|
||||||
byte +bfc0007c: 00000000
|
|
||||||
byte +bfc00080: 00000000
|
|
||||||
byte +bfc00084: 00000000
|
|
||||||
byte +bfc00088: 00000000
|
|
||||||
byte +bfc0008c: 00000000
|
|
||||||
byte +bfc00090: 00000000
|
|
||||||
byte +bfc00094: 00000000
|
|
||||||
byte +bfc00098: 00000000
|
|
||||||
byte +bfc0009c: 00000000
|
|
||||||
byte +bfc000a0: 00000000
|
|
||||||
byte +bfc000a4: 00000000
|
|
||||||
byte +bfc000a8: 00000000
|
|
||||||
byte +bfc000ac: 00000000
|
|
||||||
byte +bfc000b0: 00000000
|
|
||||||
byte +bfc000b4: 00000000
|
|
||||||
byte +bfc000b8: 00000000
|
|
||||||
byte +bfc000bc: 00000000
|
|
||||||
byte +bfc000c0: 00000000
|
|
||||||
byte +bfc000c4: 00000000
|
|
||||||
byte +bfc000c8: 00000000
|
|
||||||
byte +bfc000cc: 00000000
|
|
||||||
byte +bfc000d0: 00000000
|
|
||||||
byte +bfc000d4: 00000000
|
|
||||||
byte +bfc000d8: 00000000
|
|
||||||
byte +bfc000dc: 00000000
|
|
||||||
byte +bfc000e0: 00000000
|
|
||||||
byte +bfc000e4: 00000000
|
|
||||||
byte +bfc000e8: 00000000
|
|
||||||
byte +bfc000ec: 00000000
|
|
||||||
byte +bfc000f0: 00000000
|
|
||||||
byte +bfc000f4: 00000000
|
|
||||||
byte +bfc000f8: 00000000
|
|
||||||
byte +bfc000fc: 00000000
|
|
||||||
VCD info: dumpfile mips_cpu_harvard.vcd opened for output.
|
|
||||||
Initial Reset 0
|
|
||||||
Initial Reset 1
|
|
||||||
Opcode: xx
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
Opcode: 0d
|
|
||||||
CTRLREGDST: Rt
|
|
||||||
Memory read disabled
|
|
||||||
Initial Reset 0: Start Program
|
|
||||||
New PC from xxxxxxxx to bfc00000
|
|
||||||
Opcode: 0d
|
|
||||||
CTRLREGDST: Rt
|
|
||||||
Memory read disabled
|
|
||||||
Opcode: xx
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
Opcode: xx
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
Opcode: 0d
|
|
||||||
CTRLREGDST: Rt
|
|
||||||
Memory read disabled
|
|
||||||
New PC from bfc00000 to bfc00000
|
|
||||||
Opcode: 0d
|
|
||||||
CTRLREGDST: Rt
|
|
||||||
Memory read disabled
|
|
||||||
Opcode: 0d
|
|
||||||
CTRLREGDST: Rt
|
|
||||||
Memory read disabled
|
|
||||||
New PC from bfc00000 to bfc00004
|
|
||||||
Reg File Write data: 15
|
|
||||||
Reg File Write data: 15
|
|
||||||
New PC from bfc00004 to bfc00004
|
|
||||||
Opcode: 0d
|
|
||||||
CTRLREGDST: Rt
|
|
||||||
Memory read disabled
|
|
||||||
Opcode: 00
|
|
||||||
CTRLREGDST: Rd
|
|
||||||
Memory read disabled
|
|
||||||
New PC from bfc00004 to bfc00008
|
|
||||||
Reg File Write data: 10
|
|
||||||
Reg File Write data: 10
|
|
||||||
New PC from bfc00008 to bfc00008
|
|
||||||
Opcode: 00
|
|
||||||
CTRLREGDST: Rd
|
|
||||||
Memory read disabled
|
|
||||||
Opcode: 00
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
JUMP REGISTER
|
|
||||||
Reg File Write data: 10
|
|
||||||
Opcode: 00
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
Opcode: xx
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
Reg File Write data: 10
|
|
||||||
Reg File Write data: 10
|
|
||||||
TB: CPU Halt; active=0
|
|
||||||
Output:
|
|
||||||
10
|
|
|
@ -1 +0,0 @@
|
||||||
10
|
|
|
@ -1,113 +0,0 @@
|
||||||
RAM: Loading RAM contents from inputs/andi.txt
|
|
||||||
WARNING: rtl/mips_cpu_memory.v:33: $readmemh(inputs/andi.txt): Not enough words in the file for the requested range [0:63].
|
|
||||||
byte +bfc00000: 34040005
|
|
||||||
byte +bfc00004: 3082000f
|
|
||||||
byte +bfc00008: 00000008
|
|
||||||
byte +bfc0000c: 00000000
|
|
||||||
byte +bfc00010: 00000000
|
|
||||||
byte +bfc00014: 00000000
|
|
||||||
byte +bfc00018: 00000000
|
|
||||||
byte +bfc0001c: 00000000
|
|
||||||
byte +bfc00020: 00000000
|
|
||||||
byte +bfc00024: 00000000
|
|
||||||
byte +bfc00028: 00000000
|
|
||||||
byte +bfc0002c: 00000000
|
|
||||||
byte +bfc00030: 00000000
|
|
||||||
byte +bfc00034: 00000000
|
|
||||||
byte +bfc00038: 00000000
|
|
||||||
byte +bfc0003c: 00000000
|
|
||||||
byte +bfc00040: 00000000
|
|
||||||
byte +bfc00044: 00000000
|
|
||||||
byte +bfc00048: 00000000
|
|
||||||
byte +bfc0004c: 00000000
|
|
||||||
byte +bfc00050: 00000000
|
|
||||||
byte +bfc00054: 00000000
|
|
||||||
byte +bfc00058: 00000000
|
|
||||||
byte +bfc0005c: 00000000
|
|
||||||
byte +bfc00060: 00000000
|
|
||||||
byte +bfc00064: 00000000
|
|
||||||
byte +bfc00068: 00000000
|
|
||||||
byte +bfc0006c: 00000000
|
|
||||||
byte +bfc00070: 00000000
|
|
||||||
byte +bfc00074: 00000000
|
|
||||||
byte +bfc00078: 00000000
|
|
||||||
byte +bfc0007c: 00000000
|
|
||||||
byte +bfc00080: 00000000
|
|
||||||
byte +bfc00084: 00000000
|
|
||||||
byte +bfc00088: 00000000
|
|
||||||
byte +bfc0008c: 00000000
|
|
||||||
byte +bfc00090: 00000000
|
|
||||||
byte +bfc00094: 00000000
|
|
||||||
byte +bfc00098: 00000000
|
|
||||||
byte +bfc0009c: 00000000
|
|
||||||
byte +bfc000a0: 00000000
|
|
||||||
byte +bfc000a4: 00000000
|
|
||||||
byte +bfc000a8: 00000000
|
|
||||||
byte +bfc000ac: 00000000
|
|
||||||
byte +bfc000b0: 00000000
|
|
||||||
byte +bfc000b4: 00000000
|
|
||||||
byte +bfc000b8: 00000000
|
|
||||||
byte +bfc000bc: 00000000
|
|
||||||
byte +bfc000c0: 00000000
|
|
||||||
byte +bfc000c4: 00000000
|
|
||||||
byte +bfc000c8: 00000000
|
|
||||||
byte +bfc000cc: 00000000
|
|
||||||
byte +bfc000d0: 00000000
|
|
||||||
byte +bfc000d4: 00000000
|
|
||||||
byte +bfc000d8: 00000000
|
|
||||||
byte +bfc000dc: 00000000
|
|
||||||
byte +bfc000e0: 00000000
|
|
||||||
byte +bfc000e4: 00000000
|
|
||||||
byte +bfc000e8: 00000000
|
|
||||||
byte +bfc000ec: 00000000
|
|
||||||
byte +bfc000f0: 00000000
|
|
||||||
byte +bfc000f4: 00000000
|
|
||||||
byte +bfc000f8: 00000000
|
|
||||||
byte +bfc000fc: 00000000
|
|
||||||
VCD info: dumpfile mips_cpu_harvard.vcd opened for output.
|
|
||||||
Initial Reset 0
|
|
||||||
Initial Reset 1
|
|
||||||
Opcode: xx
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
Opcode: 0d
|
|
||||||
CTRLREGDST: Rt
|
|
||||||
Memory read disabled
|
|
||||||
Initial Reset 0: Start Program
|
|
||||||
New PC from xxxxxxxx to bfc00000
|
|
||||||
Opcode: 0d
|
|
||||||
CTRLREGDST: Rt
|
|
||||||
Memory read disabled
|
|
||||||
Opcode: xx
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
Opcode: xx
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
Opcode: 0d
|
|
||||||
CTRLREGDST: Rt
|
|
||||||
Memory read disabled
|
|
||||||
New PC from bfc00000 to bfc00000
|
|
||||||
Opcode: 0d
|
|
||||||
CTRLREGDST: Rt
|
|
||||||
Memory read disabled
|
|
||||||
Opcode: 0c
|
|
||||||
CTRLREGDST: Rt
|
|
||||||
Memory read disabled
|
|
||||||
New PC from bfc00000 to bfc00004
|
|
||||||
Reg File Write data: 5
|
|
||||||
Reg File Write data: 5
|
|
||||||
New PC from bfc00004 to bfc00004
|
|
||||||
Opcode: 0c
|
|
||||||
CTRLREGDST: Rt
|
|
||||||
Memory read disabled
|
|
||||||
Opcode: 00
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
JUMP REGISTER
|
|
||||||
Reg File Write data: 0
|
|
||||||
Opcode: 00
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
Opcode: xx
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
Reg File Write data: 0
|
|
||||||
Reg File Write data: 0
|
|
||||||
TB: CPU Halt; active=0
|
|
||||||
Output:
|
|
||||||
5
|
|
|
@ -1 +0,0 @@
|
||||||
5
|
|
|
@ -1,288 +0,0 @@
|
||||||
RAM: Loading RAM contents from inputs/andiu.txt
|
|
||||||
ERROR: rtl/mips_cpu_memory.v:33: $readmemh: Unable to open inputs/andiu.txt for reading.
|
|
||||||
byte +bfc00000: 00000000
|
|
||||||
byte +bfc00004: 00000000
|
|
||||||
byte +bfc00008: 00000000
|
|
||||||
byte +bfc0000c: 00000000
|
|
||||||
byte +bfc00010: 00000000
|
|
||||||
byte +bfc00014: 00000000
|
|
||||||
byte +bfc00018: 00000000
|
|
||||||
byte +bfc0001c: 00000000
|
|
||||||
byte +bfc00020: 00000000
|
|
||||||
byte +bfc00024: 00000000
|
|
||||||
byte +bfc00028: 00000000
|
|
||||||
byte +bfc0002c: 00000000
|
|
||||||
byte +bfc00030: 00000000
|
|
||||||
byte +bfc00034: 00000000
|
|
||||||
byte +bfc00038: 00000000
|
|
||||||
byte +bfc0003c: 00000000
|
|
||||||
byte +bfc00040: 00000000
|
|
||||||
byte +bfc00044: 00000000
|
|
||||||
byte +bfc00048: 00000000
|
|
||||||
byte +bfc0004c: 00000000
|
|
||||||
byte +bfc00050: 00000000
|
|
||||||
byte +bfc00054: 00000000
|
|
||||||
byte +bfc00058: 00000000
|
|
||||||
byte +bfc0005c: 00000000
|
|
||||||
byte +bfc00060: 00000000
|
|
||||||
byte +bfc00064: 00000000
|
|
||||||
byte +bfc00068: 00000000
|
|
||||||
byte +bfc0006c: 00000000
|
|
||||||
byte +bfc00070: 00000000
|
|
||||||
byte +bfc00074: 00000000
|
|
||||||
byte +bfc00078: 00000000
|
|
||||||
byte +bfc0007c: 00000000
|
|
||||||
byte +bfc00080: 00000000
|
|
||||||
byte +bfc00084: 00000000
|
|
||||||
byte +bfc00088: 00000000
|
|
||||||
byte +bfc0008c: 00000000
|
|
||||||
byte +bfc00090: 00000000
|
|
||||||
byte +bfc00094: 00000000
|
|
||||||
byte +bfc00098: 00000000
|
|
||||||
byte +bfc0009c: 00000000
|
|
||||||
byte +bfc000a0: 00000000
|
|
||||||
byte +bfc000a4: 00000000
|
|
||||||
byte +bfc000a8: 00000000
|
|
||||||
byte +bfc000ac: 00000000
|
|
||||||
byte +bfc000b0: 00000000
|
|
||||||
byte +bfc000b4: 00000000
|
|
||||||
byte +bfc000b8: 00000000
|
|
||||||
byte +bfc000bc: 00000000
|
|
||||||
byte +bfc000c0: 00000000
|
|
||||||
byte +bfc000c4: 00000000
|
|
||||||
byte +bfc000c8: 00000000
|
|
||||||
byte +bfc000cc: 00000000
|
|
||||||
byte +bfc000d0: 00000000
|
|
||||||
byte +bfc000d4: 00000000
|
|
||||||
byte +bfc000d8: 00000000
|
|
||||||
byte +bfc000dc: 00000000
|
|
||||||
byte +bfc000e0: 00000000
|
|
||||||
byte +bfc000e4: 00000000
|
|
||||||
byte +bfc000e8: 00000000
|
|
||||||
byte +bfc000ec: 00000000
|
|
||||||
byte +bfc000f0: 00000000
|
|
||||||
byte +bfc000f4: 00000000
|
|
||||||
byte +bfc000f8: 00000000
|
|
||||||
byte +bfc000fc: 00000000
|
|
||||||
VCD info: dumpfile mips_cpu_harvard.vcd opened for output.
|
|
||||||
Initial Reset 0
|
|
||||||
Initial Reset 1
|
|
||||||
Opcode: xx
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
Opcode: 00
|
|
||||||
CTRLREGDST: Rd
|
|
||||||
Memory read disabled
|
|
||||||
Initial Reset 0: Start Program
|
|
||||||
New PC from xxxxxxxx to bfc00000
|
|
||||||
Opcode: 00
|
|
||||||
CTRLREGDST: Rd
|
|
||||||
Memory read disabled
|
|
||||||
Opcode: xx
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
Opcode: xx
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
Opcode: 00
|
|
||||||
CTRLREGDST: Rd
|
|
||||||
Memory read disabled
|
|
||||||
New PC from bfc00000 to bfc00000
|
|
||||||
New PC from bfc00000 to bfc00004
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00004 to bfc00004
|
|
||||||
New PC from bfc00004 to bfc00008
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00008 to bfc00008
|
|
||||||
New PC from bfc00008 to bfc0000c
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc0000c to bfc0000c
|
|
||||||
New PC from bfc0000c to bfc00010
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00010 to bfc00010
|
|
||||||
New PC from bfc00010 to bfc00014
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00014 to bfc00014
|
|
||||||
New PC from bfc00014 to bfc00018
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00018 to bfc00018
|
|
||||||
New PC from bfc00018 to bfc0001c
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc0001c to bfc0001c
|
|
||||||
New PC from bfc0001c to bfc00020
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00020 to bfc00020
|
|
||||||
New PC from bfc00020 to bfc00024
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00024 to bfc00024
|
|
||||||
New PC from bfc00024 to bfc00028
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00028 to bfc00028
|
|
||||||
New PC from bfc00028 to bfc0002c
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc0002c to bfc0002c
|
|
||||||
New PC from bfc0002c to bfc00030
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00030 to bfc00030
|
|
||||||
New PC from bfc00030 to bfc00034
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00034 to bfc00034
|
|
||||||
New PC from bfc00034 to bfc00038
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00038 to bfc00038
|
|
||||||
New PC from bfc00038 to bfc0003c
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc0003c to bfc0003c
|
|
||||||
Opcode: 00
|
|
||||||
CTRLREGDST: Rd
|
|
||||||
Memory read disabled
|
|
||||||
Opcode: xx
|
|
||||||
xxxxxxxxxxxxxx
|
|
||||||
New PC from bfc0003c to bfc00040
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00040 to bfc00040
|
|
||||||
New PC from bfc00040 to bfc00044
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00044 to bfc00044
|
|
||||||
New PC from bfc00044 to bfc00048
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00048 to bfc00048
|
|
||||||
New PC from bfc00048 to bfc0004c
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc0004c to bfc0004c
|
|
||||||
New PC from bfc0004c to bfc00050
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00050 to bfc00050
|
|
||||||
New PC from bfc00050 to bfc00054
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00054 to bfc00054
|
|
||||||
New PC from bfc00054 to bfc00058
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00058 to bfc00058
|
|
||||||
New PC from bfc00058 to bfc0005c
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc0005c to bfc0005c
|
|
||||||
New PC from bfc0005c to bfc00060
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00060 to bfc00060
|
|
||||||
New PC from bfc00060 to bfc00064
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00064 to bfc00064
|
|
||||||
New PC from bfc00064 to bfc00068
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00068 to bfc00068
|
|
||||||
New PC from bfc00068 to bfc0006c
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc0006c to bfc0006c
|
|
||||||
New PC from bfc0006c to bfc00070
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00070 to bfc00070
|
|
||||||
New PC from bfc00070 to bfc00074
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00074 to bfc00074
|
|
||||||
New PC from bfc00074 to bfc00078
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00078 to bfc00078
|
|
||||||
New PC from bfc00078 to bfc0007c
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc0007c to bfc0007c
|
|
||||||
New PC from bfc0007c to bfc00080
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00080 to bfc00080
|
|
||||||
New PC from bfc00080 to bfc00084
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00084 to bfc00084
|
|
||||||
New PC from bfc00084 to bfc00088
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00088 to bfc00088
|
|
||||||
New PC from bfc00088 to bfc0008c
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc0008c to bfc0008c
|
|
||||||
New PC from bfc0008c to bfc00090
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00090 to bfc00090
|
|
||||||
New PC from bfc00090 to bfc00094
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00094 to bfc00094
|
|
||||||
New PC from bfc00094 to bfc00098
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc00098 to bfc00098
|
|
||||||
New PC from bfc00098 to bfc0009c
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc0009c to bfc0009c
|
|
||||||
New PC from bfc0009c to bfc000a0
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc000a0 to bfc000a0
|
|
||||||
New PC from bfc000a0 to bfc000a4
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc000a4 to bfc000a4
|
|
||||||
New PC from bfc000a4 to bfc000a8
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc000a8 to bfc000a8
|
|
||||||
New PC from bfc000a8 to bfc000ac
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc000ac to bfc000ac
|
|
||||||
New PC from bfc000ac to bfc000b0
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc000b0 to bfc000b0
|
|
||||||
New PC from bfc000b0 to bfc000b4
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc000b4 to bfc000b4
|
|
||||||
New PC from bfc000b4 to bfc000b8
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc000b8 to bfc000b8
|
|
||||||
New PC from bfc000b8 to bfc000bc
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc000bc to bfc000bc
|
|
||||||
New PC from bfc000bc to bfc000c0
|
|
||||||
Reg File Write data: x
|
|
||||||
Reg File Write data: x
|
|
||||||
New PC from bfc000c0 to bfc000c0
|
|
||||||
New PC from bfc000c0 to bfc000c4
|
|
||||||
Reg File Write data: x
|
|
||||||
FATAL: testbench/mips_cpu_harvard_tb.v:47: Simulation did not finish within 100 cycles.
|
|
||||||
Time: 2000 Scope: mips_cpu_harvard_tb
|
|
|
@ -1 +0,0 @@
|
||||||
Time: 2000 Scope: mips_cpu_harvard_tb
|
|
1
inputs/beq.ref.txt
Normal file
1
inputs/beq.ref.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
1
|
|
@ -1,7 +1,8 @@
|
||||||
50004043
|
34040005
|
||||||
50005043
|
34050005
|
||||||
20005801
|
10850003
|
||||||
00006C42
|
00000000
|
||||||
80000000
|
00000008
|
||||||
10002043
|
00000000
|
||||||
80000000
|
34020001
|
||||||
|
00000008
|
1
inputs/bgez.ref.txt
Normal file
1
inputs/bgez.ref.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
1
|
|
@ -1,6 +1,7 @@
|
||||||
30004043
|
34040003
|
||||||
20001840
|
04810003
|
||||||
00006C42
|
00000000
|
||||||
80000000
|
00000008
|
||||||
10002043
|
00000000
|
||||||
80000000
|
34020001
|
||||||
|
00000008
|
1
inputs/bgezal.ref.txt
Normal file
1
inputs/bgezal.ref.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
2
|
|
@ -1,7 +1,8 @@
|
||||||
30004043
|
34040003
|
||||||
30001940
|
04910004
|
||||||
00006C42
|
00000000
|
||||||
10002442
|
24420001
|
||||||
80000000
|
00000008
|
||||||
10002043
|
00000000
|
||||||
80000000
|
34020001
|
||||||
|
03E00008
|
1
inputs/bgtz.ref.txt
Normal file
1
inputs/bgtz.ref.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
1
|
|
@ -1,6 +1,7 @@
|
||||||
30004043
|
34040003
|
||||||
200008C1
|
1C800003
|
||||||
00006C42
|
00000000
|
||||||
80000000
|
00000008
|
||||||
10002043
|
00000000
|
||||||
80000000
|
34020001
|
||||||
|
00000008
|
||||||
|
|
1
inputs/blez.ref.txt
Normal file
1
inputs/blez.ref.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
1
|
|
@ -1,6 +1,7 @@
|
||||||
FFFF4043
|
3C05FFFF
|
||||||
20000881
|
18800003
|
||||||
00006C42
|
00000000
|
||||||
80000000
|
00000008
|
||||||
10002043
|
00000000
|
||||||
80000000
|
34020001
|
||||||
|
00000008
|
1
inputs/bltz.ref.txt
Normal file
1
inputs/bltz.ref.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
1
|
|
@ -1,6 +1,7 @@
|
||||||
FFFF4043
|
3C05FFFF
|
||||||
20000840
|
04800003
|
||||||
00006C42
|
00000000
|
||||||
80000000
|
00000008
|
||||||
10002043
|
00000000
|
||||||
80000000
|
34020001
|
||||||
|
00000008
|
1
inputs/bltzal.ref.txt
Normal file
1
inputs/bltzal.ref.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
2
|
|
@ -1,7 +1,8 @@
|
||||||
FFFF4043
|
3C05FFFF
|
||||||
20000940
|
04900004
|
||||||
00006C42
|
00000000
|
||||||
10002442
|
24420001
|
||||||
80000000
|
00000000
|
||||||
10002043
|
00000008
|
||||||
80000000
|
34020001
|
||||||
|
03E00008
|
1
inputs/bne.ref.txt
Normal file
1
inputs/bne.ref.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
1
|
|
@ -1,7 +1,8 @@
|
||||||
30004043
|
34040003
|
||||||
50005043
|
34040005
|
||||||
20005841
|
14850003
|
||||||
00006C42
|
00000000
|
||||||
80000000
|
00000008
|
||||||
10002043
|
00000000
|
||||||
80000000
|
34020001
|
||||||
|
00000008
|
1
inputs/bqtz.ref.txt
Normal file
1
inputs/bqtz.ref.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
1
|
|
@ -20,13 +20,11 @@ module mips_cpu_harvard(
|
||||||
input logic[31:0] data_readdata//port from data memory out, going to the 'Write Register' port in regfile.
|
input logic[31:0] data_readdata//port from data memory out, going to the 'Write Register' port in regfile.
|
||||||
);
|
);
|
||||||
|
|
||||||
always_comb begin
|
assign instr_address = in_pc_in;
|
||||||
instr_address = in_pc_in;
|
assign data_address = out_ALURes;
|
||||||
data_address = out_ALURes;
|
assign data_write = out_MemWrite;
|
||||||
data_write = out_MemWrite;
|
assign data_read = out_MemRead;
|
||||||
data_read = out_MemRead;
|
assign data_writedata = out_readdata2;
|
||||||
data_writedata = out_readdata2;
|
|
||||||
end
|
|
||||||
|
|
||||||
logic[31:0] in_pc_in, out_pc_out = 32'hBFC00000, out_ALURes, out_readdata1, out_readdata2, in_B, in_writedata;
|
logic[31:0] in_pc_in, out_pc_out = 32'hBFC00000, out_ALURes, out_readdata1, out_readdata2, in_B, in_writedata;
|
||||||
logic[4:0] in_readreg1, in_readreg2, in_writereg, out_shamt, out_ALUOp;
|
logic[4:0] in_readreg1, in_readreg2, in_writereg, out_shamt, out_ALUOp;
|
||||||
|
@ -38,7 +36,7 @@ assign in_readreg1 = instr_readdata[25:21];
|
||||||
assign in_readreg2 = instr_readdata[20:16];
|
assign in_readreg2 = instr_readdata[20:16];
|
||||||
assign in_opcode = instr_readdata[31:26];
|
assign in_opcode = instr_readdata[31:26];
|
||||||
|
|
||||||
always_comb begin
|
always @(*) begin
|
||||||
//Picking what register should be written to.
|
//Picking what register should be written to.
|
||||||
case(out_RegDst)
|
case(out_RegDst)
|
||||||
2'd0: begin
|
2'd0: begin
|
||||||
|
@ -76,10 +74,12 @@ always_comb begin
|
||||||
endcase
|
endcase
|
||||||
end
|
end
|
||||||
|
|
||||||
pc pc(
|
mips_cpu_pc pc(
|
||||||
//PC inputs
|
//PC inputs
|
||||||
.clk(clk),//clk taken from the Standard signals
|
.clk(clk),//clk taken from the Standard signals
|
||||||
.rst(reset),//clk taken from the Standard signals
|
.rst(reset),//clk taken from the Standard signals
|
||||||
|
.instr(instr_readdata), //needed for branches and jumps
|
||||||
|
.reg_readdata(out_readdata1), //needed for jump register
|
||||||
.pc_ctrl(out_PC),
|
.pc_ctrl(out_PC),
|
||||||
.pc_in(out_pc_out),//what the pc will output on the next clock cycle taken from either: PC itself + 4(Normal/Default Operation); or 16-bit signed valued taken from Instr[15-0] sign extend to 32bit then shifted by 2 then added to PC + 4(Branch Operation); or 26-bit instruction address taken from J-type instr[25-0] shifted left by 2 then concatanated to form Jump Address (PC-region branch); or from the GPR rs.
|
.pc_in(out_pc_out),//what the pc will output on the next clock cycle taken from either: PC itself + 4(Normal/Default Operation); or 16-bit signed valued taken from Instr[15-0] sign extend to 32bit then shifted by 2 then added to PC + 4(Branch Operation); or 26-bit instruction address taken from J-type instr[25-0] shifted left by 2 then concatanated to form Jump Address (PC-region branch); or from the GPR rs.
|
||||||
//PC outputs
|
//PC outputs
|
||||||
|
|
|
@ -1,45 +1,46 @@
|
||||||
module pc(
|
module mips_cpu_pc(
|
||||||
input logic clk,
|
input logic clk,
|
||||||
input logic rst,
|
input logic rst,
|
||||||
input logic[1:0] pc_ctrl,
|
input logic[1:0] pc_ctrl,
|
||||||
input logic[31:0] pc_in,
|
input logic[31:0] pc_in,
|
||||||
input logic[4:0] rs,
|
input logic[31:0] instr,
|
||||||
output logic[31:0] pc_out,
|
input logic[31:0] reg_readdata,
|
||||||
output logic active
|
output logic[31:0] pc_out,
|
||||||
|
output logic active
|
||||||
);
|
);
|
||||||
|
|
||||||
reg [31:0] pc_curr;
|
reg [31:0] pc_next, pc_lit_next;
|
||||||
|
|
||||||
initial begin
|
initial begin
|
||||||
pc_out = pc_in;
|
pc_out = pc_in;
|
||||||
end // initial
|
pc_next = pc_out + 32'd4;
|
||||||
|
end
|
||||||
|
|
||||||
|
assign pc_lit_next = pc_out + 32'd4;
|
||||||
|
|
||||||
always_ff @(posedge clk) begin
|
always_ff @(posedge clk) begin
|
||||||
if (rst) begin
|
if (rst) begin
|
||||||
active <= 1;
|
active <= 1;
|
||||||
pc_out <= 32'hBFC00000;
|
pc_out <= 32'hBFC00000;
|
||||||
end else if (pc_out != 32'd0) begin
|
end else begin
|
||||||
active <= active;
|
pc_out <= pc_next;
|
||||||
case(pc_ctrl)
|
case(pc_ctrl)
|
||||||
2'd0: begin
|
default: begin
|
||||||
pc_curr <= pc_out;
|
pc_next <= pc_out + 32'd4;
|
||||||
pc_out <= pc_curr + 32'd4;//No branch or jump or load, so no delay slot.
|
|
||||||
$display("New PC from %h to %h", pc_curr, pc_out);
|
|
||||||
end
|
end
|
||||||
2'd1: begin
|
2'd1: begin // Branch
|
||||||
pc_out <= pc_in;//Branches
|
pc_next <= pc_out + 32'd4 + {{14{instr[15]}},instr[15:0],2'b00};
|
||||||
end
|
end
|
||||||
2'd2: begin
|
2'd2: begin // Jump
|
||||||
pc_out <= pc_in;//Jumps
|
pc_next <= {pc_lit_next[31:28], instr[25:0], 2'b00};
|
||||||
end
|
end
|
||||||
2'd3: begin
|
2'd3: begin // Jump using Register
|
||||||
$display("JUMP REGISTER");
|
pc_next <= reg_readdata;
|
||||||
pc_out <= 32'd0;//Jumps using register
|
|
||||||
end
|
end
|
||||||
endcase
|
endcase
|
||||||
end else if (pc_out == 32'd0) begin
|
end
|
||||||
|
if (pc_out == 32'd0) begin
|
||||||
active <= 0;
|
active <= 0;
|
||||||
//$display("CPU Halt");
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,21 +1,44 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
#arithmetic
|
||||||
bash test/test_mips_cpu_harvard.sh rtl addu #Pass
|
bash test/test_mips_cpu_harvard.sh rtl addu #Pass
|
||||||
bash test/test_mips_cpu_harvard.sh rtl addiu #Pass
|
bash test/test_mips_cpu_harvard.sh rtl addiu #Pass
|
||||||
bash test/test_mips_cpu_harvard.sh rtl ori #Pass
|
bash test/test_mips_cpu_harvard.sh rtl ori #Pass
|
||||||
#bash test/test_mips_cpu_harvard.sh rtl sw
|
|
||||||
bash test/test_mips_cpu_harvard.sh rtl and #Pass
|
bash test/test_mips_cpu_harvard.sh rtl and #Pass
|
||||||
bash test/test_mips_cpu_harvard.sh rtl andi #Pass
|
bash test/test_mips_cpu_harvard.sh rtl andi #Pass
|
||||||
bash test/test_mips_cpu_harvard.sh rtl or #Pass
|
bash test/test_mips_cpu_harvard.sh rtl or #Pass
|
||||||
bash test/test_mips_cpu_harvard.sh rtl xor #Pass
|
bash test/test_mips_cpu_harvard.sh rtl xor #Pass
|
||||||
bash test/test_mips_cpu_harvard.sh rtl xori #Pass
|
bash test/test_mips_cpu_harvard.sh rtl xori #Pass
|
||||||
bash test/test_mips_cpu_harvard.sh rtl sll
|
bash test/test_mips_cpu_harvard.sh rtl subu #Pass
|
||||||
bash test/test_mips_cpu_harvard.sh rtl slti
|
|
||||||
bash test/test_mips_cpu_harvard.sh rtl sltiu #Pass
|
|
||||||
|
#load & store
|
||||||
|
bash test/test_mips_cpu_harvard.sh rtl beq #Pass
|
||||||
|
bash test/test_mips_cpu_harvard.sh rtl bgez #Pass
|
||||||
|
#bash test/test_mips_cpu_harvard.sh rtl bgezal
|
||||||
|
bash test/test_mips_cpu_harvard.sh rtl bgtz #Pass
|
||||||
|
bash test/test_mips_cpu_harvard.sh rtl blez #Pass
|
||||||
|
#bash test/test_mips_cpu_harvard.sh rtl bltz
|
||||||
|
bash test/test_mips_cpu_harvard.sh rtl bltzal #Pass
|
||||||
|
bash test/test_mips_cpu_harvard.sh rtl bne #Pass
|
||||||
|
|
||||||
|
|
||||||
|
# shift
|
||||||
|
#bash test/test_mips_cpu_harvard.sh rtl sll
|
||||||
|
#bash test/test_mips_cpu_harvard.sh rtl srl
|
||||||
|
#bash test/test_mips_cpu_harvard.sh rtl sra
|
||||||
|
#bash test/test_mips_cpu_harvard.sh rtl srav
|
||||||
|
#bash test/test_mips_cpu_harvard.sh rtl srlv
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
#bash test/test_mips_cpu_harvard.sh rtl sw
|
||||||
|
|
||||||
|
|
||||||
|
#bash test/test_mips_cpu_harvard.sh rtl slti
|
||||||
|
#bash test/test_mips_cpu_harvard.sh rtl sltiu
|
||||||
#bash test/test_mips_cpu_harvard.sh rtl slt # missing
|
#bash test/test_mips_cpu_harvard.sh rtl slt # missing
|
||||||
bash test/test_mips_cpu_harvard.sh rtl sltu #Pass
|
bash test/test_mips_cpu_harvard.sh rtl sltu #Pass
|
||||||
bash test/test_mips_cpu_harvard.sh rtl sra
|
|
||||||
bash test/test_mips_cpu_harvard.sh rtl srav
|
|
||||||
bash test/test_mips_cpu_harvard.sh rtl srl
|
|
||||||
bash test/test_mips_cpu_harvard.sh rtl srlv
|
|
||||||
bash test/test_mips_cpu_harvard.sh rtl subu #Pass
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ iverilog -Wall -g2012 \
|
||||||
-P mips_cpu_harvard_tb.RAM_INIT_FILE=\"inputs/${INSTR}.txt\" \
|
-P mips_cpu_harvard_tb.RAM_INIT_FILE=\"inputs/${INSTR}.txt\" \
|
||||||
-P mips_cpu_harvard_tb.MEM_INIT_FILE=\"inputs/${INSTR}.data.txt\" \
|
-P mips_cpu_harvard_tb.MEM_INIT_FILE=\"inputs/${INSTR}.data.txt\" \
|
||||||
-o exec/mips_cpu_harvard_tb_${INSTR} testbench/mips_cpu_harvard_tb.v \
|
-o exec/mips_cpu_harvard_tb_${INSTR} testbench/mips_cpu_harvard_tb.v \
|
||||||
${SRC} #2> /dev/null
|
${SRC} 2> /dev/null
|
||||||
/mnt/c/Windows/System32/cmd.exe /C vvp ./exec/mips_cpu_harvard_tb_${INSTR} &> ./inputs/${INSTR}.log.txt; # log file for debugging (contains $display)
|
/mnt/c/Windows/System32/cmd.exe /C vvp ./exec/mips_cpu_harvard_tb_${INSTR} &> ./inputs/${INSTR}.log.txt; # log file for debugging (contains $display)
|
||||||
echo "$(tail -1 ./inputs/${INSTR}.log.txt)" > ./inputs/${INSTR}.out.txt; # register v0 output to compare with reference
|
echo "$(tail -1 ./inputs/${INSTR}.log.txt)" > ./inputs/${INSTR}.out.txt; # register v0 output to compare with reference
|
||||||
if diff -w ./inputs/${INSTR}.out.txt ./inputs/${INSTR}.ref.txt &> /dev/null # compare
|
if diff -w ./inputs/${INSTR}.out.txt ./inputs/${INSTR}.ref.txt &> /dev/null # compare
|
||||||
|
|
Loading…
Reference in a new issue