All Projects → vuryleo → Naivecpu

vuryleo / Naivecpu

A CPU that implementing THCO-MIPS16 instruction set.

Labels

Projects that are alternatives of or similar to Naivecpu

Open Fpga Verilog Tutorial
Learn how to design digital systems and synthesize them into an FPGA using only opensource tools
Stars: ✭ 464 (+9180%)
Mutual labels:  verilog
Zipcpu
A small, light weight, RISC CPU soft core
Stars: ✭ 640 (+12700%)
Mutual labels:  verilog
Hdl
HDL libraries and projects
Stars: ✭ 727 (+14440%)
Mutual labels:  verilog
Platformio Atom Ide
PlatformIO IDE for Atom: The next generation integrated development environment for IoT
Stars: ✭ 475 (+9400%)
Mutual labels:  verilog
Corundum
Open source, high performance, FPGA-based NIC
Stars: ✭ 577 (+11440%)
Mutual labels:  verilog
Verilator
Verilator open-source SystemVerilog simulator and lint system
Stars: ✭ 645 (+12800%)
Mutual labels:  verilog
Leflow
Enabling Flexible FPGA High-Level Synthesis of Tensorflow Deep Neural Networks
Stars: ✭ 414 (+8180%)
Mutual labels:  verilog
Co4618
This repo is for the 4618 group nember to share code.
Stars: ✭ 5 (+0%)
Mutual labels:  verilog
Oh
Verilog library for ASIC and FPGA designers
Stars: ✭ 585 (+11600%)
Mutual labels:  verilog
Verilog Ethernet
Verilog Ethernet components for FPGA implementation
Stars: ✭ 699 (+13880%)
Mutual labels:  verilog
Odrivehardware
High performance motor control
Stars: ✭ 498 (+9860%)
Mutual labels:  verilog
Platformio Core
PlatformIO is a professional collaborative platform for embedded development 👽 A place where Developers and Teams have true Freedom! No more vendor lock-in!
Stars: ✭ 5,539 (+110680%)
Mutual labels:  verilog
Platformio Vscode Ide
PlatformIO IDE for VSCode: The next generation integrated development environment for IoT
Stars: ✭ 676 (+13420%)
Mutual labels:  verilog
Vtr Verilog To Routing
Verilog to Routing -- Open Source CAD Flow for FPGA Research
Stars: ✭ 466 (+9220%)
Mutual labels:  verilog
Cocotb
cocotb, a coroutine based cosimulation library for writing VHDL and Verilog testbenches in Python
Stars: ✭ 740 (+14700%)
Mutual labels:  verilog
Sd2snes
SD card based multi-purpose cartridge for the SNES
Stars: ✭ 418 (+8260%)
Mutual labels:  verilog
Miaow
An open source GPU based off of the AMD Southern Islands ISA.
Stars: ✭ 650 (+12900%)
Mutual labels:  verilog
Fpga
related to Spartan6 FPGA
Stars: ✭ 5 (+0%)
Mutual labels:  verilog
Hydra
a programmable cryptographic coprocessor in verilog
Stars: ✭ 5 (+0%)
Mutual labels:  verilog
Spinalhdl
Scala based HDL
Stars: ✭ 696 (+13820%)
Mutual labels:  verilog

naiveCPU

This is a THCO-MIPS 16bits CPU implemented in Verilog, served as the course project in Computer Organization (2013Fall) in Tsinghua University.

Authors:

Protocols

Boot

On reset process, the PC register will be set to FF00, where it BIOS located.

Registers

R0 ~ R7 ==> "0000" ~ "0111" IH ==> "1000" SP ==> "1001" RA ==> "1010"

Memory Mapping

0000 ~ 7FFF physical memory, so only 31KB of memory is available 8000 ~ 8AFF graphic memory FE00 keyboard input FF00 ~ FFFF rom

VGA

On debug mode, VGA will display the status of CPU as a supervising program for convenient debuging. The left part will be the registers storage, the right part will be the result cache of each step. So, developers will spot which part was going wrong very easily. Though it spend lots of compiling time and lots of logic gate, it is effective in most situations.

Interrupt

In order to support hardware interrupt, an extra instruction is introduced. It is called eret. And its binary format is 1000000000000000, and hexadecimal format is 8000. When executing this instruction, CPU will clear the interrupt signal and reset PC to EPC that stored when interrupt occers.

Notice eret instruction is NOT a jump instruction, so a delay slot isn't appear.

naiveKernel

naiveKernel is a basic OS kernel that implements serval system calls, and is embedded a text editor and a interpreter.

Memory

0000 ~ 0003 boot instruction Just a b instruction that point to real program 0004 ~ 003f interrupt vector table 0400 I/O buffer start 7FFE stack bottom

Interrupts

0 -> reserved 1 -> load keyboard input into I/O buffer 2 -> read I/O buffer 3 -> write to graphic memory

For interrupts' detail, please refer to wiki.

License

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].