基于Verilog设计8位碳纳米管CPU并实现软硬件计算机系统

这是我研究生期间做的一个项目——碳纳米管计算机。然而此项目暂时告一段落,后续的研究将不再以此为基础,但具有一定的参考价值。

项目背景

2013 年,斯坦福大学研制出了世界上第一个碳纳米管计算机系统,该系统由 178 个碳纳米管晶体管(CNTFET,Carbon-nontube Field-effect-transistor)组成。这一个只包含一条 SUBNEG 指令(subtract and branch if negative)的单指令计算机系统。这个 CNTFET 计算机是一个试验性的成果,只能执行 1 位的操作。当然,也不存在显示器和键盘。

在摩尔定律即将失效的今天,基于硅的集成电路几乎已经到达其工艺的极限,此时集成电路产业迫切需要一种新型材料来打破产业的瓶颈。这样一款碳纳米管计算机的出现时极具里程碑意义的。因此,该研究成果的相关论文也被 Nature 所收录。

项目介绍

项目目标:实现一个相对完整的计算机系统,用户可以在该系统上运行自己编写的程序。当然,系统所使用的 CPU 则是使用碳纳米管的相关工艺制造而成的。

该系统所使用的 CPU 的指令系统和微结构由我和一个博士师弟设计,由另一团队进行物理实现。此外,我负责设计并实现该计算机系统的完整结构,包括软硬件协同设计与实现。

整体结构

如下图所示,该系统主要由以下三部分组成:

整个系统由五大部分组成:

  • Carbon Core:采用碳纳米管实现的 CPU。
  • Coordinator:采用 FPGA 实现,其辅助 Carbon Core CPU 完成了指令和数
    据存储,产生所需时钟,并完成与输入输出控制 CPU 异步通信等功能。
  • External Controller:使用树莓派(Raspberry Pi)作为输入输出控制 CPU,
    其上运行 Linux 操作系统。
  • Monitor:显示器,用户获得系统信息的方式。
  • Keyboard:键盘,用户输入命令的方式。

Carbon Core

指令系统
该系统的 CPU 以世界上第一个 8 位处理器 Intel 8008 的设计为参考,针对碳纳米管 CPU 制造技术特点进行了裁剪和优化。CPU 的指令系统如下表所示:

助记符 指令编码 指令描述
MOV C 0000 0000 acc = C
MOV [C] 0000 0001 acc = DRAM[C]
MOVn 0000 0101 DRAM[C = acc
ADD C 0000 1000 acc = acc + C
ADD [C] 0000 1001 acc = acc + DRAM[C]
ADDn [C] 0000 1101 DRAM[C] = acc + DRAM[C]
SUB C 0001 0000 acc = acc - C
SUB [C] 0001 0001 acc = acc - DRAM[C]
SUBn [C] 0001 0101 DRAM[C] = acc - DRAM[C]
RSB C 0001 1000 acc = C - acc
RSB [C] 0001 1001 acc = DRAM[C] - acc
RSBn [C] 0001 1101 DRAM[C] = DRAM[C] - acc
DATASEG C 0010 1000 DATASEG = C
INSTSEG C 0010 1001 INSTSEG = C
JR C 0010 1100 PC = acc, INSTSEG = C
B C 0011 0000 PC = PC + C
BZ C 0011 0001 如果 acc = 0,PC = PC + C
BNZ C 0011 0010 如果 acc != 0,PC = PC + C
END 0011 1111 停机操作

微体系结构
如下图所示为该 CPU 的为体系结构。其中包括算术逻辑单元 ALU、指令译码器 DEC、程序计数器 PC、分支判断逻辑等。CPU 由两个同频不同象的时钟控制运行。

Coordinator

光有 CPU 是无法运行程序的,因此,需要为其定制设计一个外围的辅助电路。如下图所示为辅助电路模块 Coordinator 的内部实现,主要包含了 7 大部件:

  • Clock Generator:时钟发生器,时钟源来自 FPGA 时钟源,向 Decoder 和 Carbon Core CPU 提供时钟。
  • Decoder:辅助 Carbon Core CPU 进行译码、寻址、读写 RAM。
  • Main Controller:传递外部控制器的控制信号,从而可能告知 Decoder 和 Carbon Core CPU;此外,在捕获到 END 指令后会向外部控制器发送程序运行完毕信号。
  • IRAM Controller:控制 Decoder 对 IRAM 的读操作。
  • DRAM Controller:控制 Decoder 对 DRAM 的读写操作。
  • IRAM:一个包含 256 个双字节存储单元的 RAM,用于存储指令,内部包含基于 I2C 的指令收发协议。
  • DRAM:一个包含 256 个单字节存储单元的 RAM,用于存储数据,内部包含基于 I2C 的数据收发协议。

Raspberry

项目使用树莓派作为外部控制器,在树莓派上进行编程,目前只能进行汇编编程。当然,程序需要遵循 Carbon Core CPU 的指令系统。使用我们编写的一个简单的汇编器进行编译,通过控制程序即可让 Carbon Core CPU 执行你所编写的程序。

raspberry-host/mainController.cpp 文件包含整个系统软件控制程序的入口函数。

编译
直接运行 rasberry-host 目录下的 build.sh 脚本即可编译控制程序:

$ ./build.sh

运行
如果想要运行整个系统,则需要搭建相关的电路系统,并使用 FPGA 实现 sparntan6-fpga 目录中的硬件设计。项目还提供了碳纳米管 CPU 的硬件设计,普通用户虽然无法使用碳纳米管来实现该 CPU,但是可以使用 FPGA 来实现。当然,还需要树莓派、显示器、键盘才能让整个系统运行起来。

当系统搭建完毕之后,即可运行以下命令:

$ sudo ./mainController > run.log

由于系统的运行涉及到树莓派 GPIO 的初始化做操,因此需要 root 权限才能正确运行该系统。另外,运行生成的 run.log 文件记录系统执行程序时的相关信息。

其他补充

电平转换

由于 Carbon Core 的工作电压是 2V,而我们的树莓派、FPGA 的工作电压均为 5V,所以在协同工作时需要加入电平转换模块。如下图所示,便是我们设计的电平转换电路。

系统展示

碳纳米管 CPU

猜你喜欢

转载自blog.csdn.net/sheziqiong/article/details/130741237
今日推荐