<aside> π Table of contents
</aside>
https://github.com/ZephyrusZhang/CS202-Final-HW-Pipellined-CPU
If there is anything that can be worked on better, or something not right in the code, raise an issue or comment on this page to help us improve. Thanks in advance.
Designed with VIVADO, and additional files:
<aside> π Files
Translates Minisys ISA set instructions to machine code in .coe
files
Translates Minisys ISA set instructions to machine code in .coe
files
Merges instruction and data .coe
files into one .txt
file for UART transmission
Merges instruction and data .coe
files into one .txt
file for UART transmission
Used to send the .txt
file through UART to the development board
Used to send the .txt
file through UART to the development board
[Script from this site β (highly recommend)](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/7b21873f-079c-451b-9b15-01c80b5e047c/converter.py)
Script from this site β (highly recommend)
The IP core used by the UART module
The IP core used by the UART module
</aside>
This CPU design is developed on the Xilinx Artix-7TM series FPGA, development board model XC7A100T FGG484C-1.
<aside> π Files
Some documentations for this development board are provided below:
Minisys Hardware Manual 1.1 (Chinese).pdf
Block Memory Generator Product Guide.pdf
FPGA XC7A100T FGG484 Package.webarchive
</aside>
The dev board might differ, please check the following hardware specifications and adjust the parameters accordingly (the parameters will be given here in the Parameters section).
clk_generator
modules
clk_cpu
used throughout the entire CPU, set to 100 MHzclk_vga
is set to 25 MHz to match the requirements of a VGA displayclk_uart
is set to 10MHz to match the requirements of the UART portclk_tube
is set to tick every 1 ms for the seven segment tubes to refreshKey A
will be used to pause and resume the execution of the CPU
EXECUTE
Key B
will be used to toggle the input between keypad and switches
Key C
and D
will not be utilized
Keys 1
, 2
, 3
, 4
, 5
, 6
, 7
, 8
, 9
will be used for user input during IO interrupts, input will be in decimal format and stored into a 32 bit register
Key *
will be used for backspace, each press will clear the least recent input from the keypad, if the user have not keyed in any valid data (data that is greater than 0 is considered valid), then it will have no effect on the segment tube display
Key #
will be used for enter, which specifies that the user have completed the data input, and the resulting data will be a 32 bits binary with padded zeros
K4, J4, L3, K3 are input pins for rows 1 to 4 respectively
M2, K6, J6, L5 are output pins for columns 1 to 4 respectively
The wiring for the pins to the keypad is shown in Graph 0
Graph 0 (Minisys Hardware Manual 1.1)