Skip to content

XB-CPU/cpu_test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

简介

恰逢龙芯高端处理器出世之时,BirB和Calx对于制作CPU的尝试也应运而生。本项目是两人合作完成的计算机组成原理课设大作业,是在正点原子的ZYNQ 7020开发板上实现的一个基于MIPS指令集的32位CPU,并且带有非常炫酷的显示功能。显示模块、PS大部分逻辑和CPU的部分逻辑由Calx完成,汇编器、CPU大部分逻辑和PS部分逻辑由BirB完成。

说明

XB-CPU是两人合作的组织,bluex是两人对于本CPU的称呼。仓库主体代码在2024年1月7日之后应该没有更新了,所以有些bug可能已经找到原因,但是本仓库仍然未更新。

仓库结构

本仓库(cpu_test)包含将全部模块(CPU与显示),而bluex仓库和bluex update是CPU的仓库。bluex本身包含bluex 1版本(异步复位),而bluex update包含bluex 2、bluex 3.0、bluex 3.1版本(同步复位)。主要的PL部分代码存放在cpu_test.srcs/sources_1/new目录下,包含汇编器(python),CPU(Verilog);主要的PS部分代码存放在vitis/cpu/src中,包含显示模块、中断配置等等。

CPU

功能(仿真结果)

  1. 加减乘除(支持操作数都是寄存器或有一个操作数为立即数且在后的运算,但是乘除法要求操作数是16位的补码)
  2. 与或非、异或(支持操作数都是寄存器或有一个操作数为立即数且在后的运算)
  3. 大小比较
  4. 条件分支与无条件跳转
  5. 移位运算
  6. 读写主存
  7. 搬移寄存器数据

Bug!(上板实测结果)

  1. 理论主频150M,但是上板结果显示在100M左右已经出现了部分问题
  2. 大小比较可能有bug
  3. CPU_error不能正常使用,会莫名进入错误状态然后死机,所以已经在CPU test仓库中关闭该功能,bluex update仓库仍然保留该功能
  4. 条件分支指令的下条指令为普通指令,而下下条指令为无条件跳转时,PC会发生不可预料的跳转

功能缺口

  1. 堆栈及相关操作指令
  2. 实现函数跳转指令
  3. 实现中断
  4. 将外设统一编址
  5. 实现分支预测

显示部分

功能

  1. 显示所有寄存器的值
  2. 显示主存所有数据
  3. 切换壁纸

结语

应当承认,本项目还有很多不足,特别是CPU部分。本项目选择开源,便是希望后来者能够居上,解决现有的问题,做出更好的作品

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •