机心报道编辑:杜伟
从CPU的设计、样机的制作、最终产品到软件编程,19岁的极客团队花了整整两年。
RISC-V是基于精简指令集( RISC )原则的开源指令集架构( ISA ),是与开源软件运动相对应的“开源硬件”。 该项目于2010年在加州大学伯克利分校开始,项目贡献者是大学以外的志愿者和行业工人。 RISC-V指令集的设计是考虑到小型、高速、低功耗的现实而实际进行的,但并没有针对特定的微架构进行过度的设计。 与大多数指令集相比,RISC-V指令集可自由用于任何目的,任何人都可以设计、制造或销售RISC-V芯片和软件。 2021年4月初,热衷于自制CPU的19岁极简主义Filip Szkander自行设计制造32位功能性RISC-V CPU,构建了与其他自制计算机不同的个人电脑“一号机”。 Filip花了整整两年的时间来设计、调试和安装CPU和所有硬件。 Filip还被邀请在东京举办的RISC-V Days Tokyo 2021 Spring上进行演示,成为2017年举办以来最年轻的演示者。
作者文件签名者。 总体来看,“菠萝1号”由8块正方形印刷电路板垂直堆叠而成,边高约10厘米,还配有VGA显示接口卡。 总共使用了230多个集成电路,大部分为74HCT系列的逻辑芯片。 图像如下所示。
32位RISC-V CPU的规格如下。
最大时钟速度: 500kHz程序内存: 512kB内存512kB闪存512kBVGA输出: 200150px (黑白) 2个8位输入端口2个8位输出端口当前“菠萝1号”计算机
另外,CPU的运行速度只有500kHz,但足以玩蛇游戏。
Filip在博客上介绍了CPU的设计、样机的制作、输入输出端口、从最终产品到软件编程的详细技术内容(以下用第一人称叙述)。 在设计自己的RISC-V CPU之前,在Youtube上看到了电子爱好者Ben Eater的自制CPU (与着名的8位计算机构建经典的6502微处理器)教程,我非常着迷,想自制CPU 但是,我觉得关于CPU的基础知识还不够,所以看了谷歌robotics软件工程师Robert Baruch的教程视频。 他仅使用基本的逻辑组件构建了32位RISC-V CPU。 之后,我开始在一个名为“Logisim-Evolution”的项目中创建自己的RISC-V CPU。 我给自己设定的目标是完全不使用微控制器和FPGA,只使用基本的分立逻辑元件。 编译器支持的最基本RISC-V CPU包括扩展“整数( I )”,并且必须至少为32位。 此外,还必须安装视频图形阵列( VGA )输出卡。 我花了整整六个月的时间在Logisim项目上,终于得到了可行的程序模拟。 然后绘制所有模块的电路图,从JLCPCB网站购买所有的PCB (印刷电路板)并重新设计。 因为这是我第一次买PCB,所以担心会毁了一切,所以在设计的过程中决定分模块处理,一次买几个,让自己没空。 Logisim-Evolution项目的模拟原理图如下。
经过两轮设计,最后只有几个模块需要处理,其中之一是直接生成器。 当我绞尽脑汁想把它从模拟转换成合适的原理图时,我发现自己犯了致命的错误。 我完全不知道模拟是如何工作的。 幸运的是,修复也不是很难,所以对已经制作好的PCB进行了改良。 接下来,将开源电子原型平台Arduino连接到每个PCB的输入端,同时监控输出端并与预测端( prediction )进行比较,以测试这些PCB。 设定完成后,全部自动执行。 每次测试至少持续几个小时。 当所有的PCB准备放在一起时,模块也已经间隔安装在树上并使用3D打印垫( spacer )固定。 上传了测试程序并开始了测试。 原型机的示意图如下。
Arduino平台仅用于调试,未在最终产品中使用。 难怪尽管我单独测试了每个PCB,但第一次尝试还是失败了。 我还得花很多时间寻找失败的原因,发现了难以发现的时间序列问题等错误。 I/o端口我构建的RISC-V CPU具有两个8位输入端口和两个8位输出端口,可通过RJ50连接器访问前面板。 此外,上部模块具有7段显示器( 7段显示),与可通过程序访问的寄存器相连。 关于与VGA显示器的连接,是受Ben Eater的启发而构建的VGA卡。 VGA的输出分辨率为200150像素,黑白显示。 虽然想实现彩色显示,但是需要使用大型的V-RAM,因为太贵而放弃了。 底板( board )显示EEPROM (带电可擦可编程只读存储器,型号39SF010A )中存储的静止图像。 我最终产品使用了双端口随机存取存储器( SRAM )。
我们还构建了一些用于演示的I/O模块,它们在末端具有RJ50连接器。
PS/2解码器是买来的,没有时间自己做。 最终的成品不容易开动原型机,大约五个月后,我终于成功了。 我还重新设计了所有的PCB,修复了错误,将这些PCB用塔状的结构堆积起来,所以各模块只通过管脚固定连接。 PCB的重新设计花了大约三个月。 随后,我们有序地排列了最终的PCB。 此外,使用Prusa i3 3D打印机设计并打印了可以容纳所有PCB和I/O连接器的圆柱壳。 这还允许您将键盘和VGA显示器直接连接到计算机。
最终产品,左:无圆柱壳,右:安装圆柱壳。 拆卸最终产品组件:
框图:
编程的最后,经过几百个小时的设计、焊接、调试,我终于看到了成功的曙光。 在朋友Jan Vykydal的帮助下,我设置了一个与RISC-V兼容且运行良好的编译器,并用c语言编写了一些系统软件和demo程序。 这个编译器可以生成机器代码。 我使用Python脚本接收代码,并将其闪存到CPU存储器中。
我们还创建了一个带有有用函数的库。 代码如下所示。
pine shell :为了通过“连接到其中一个输入端口的PS/2键盘”与程序进行交互,使用该库编写了一个简单的shell程序。 使用带有模块的PS/2键盘将输入信号解码为8位。
大功告成! 参考链接: https://riscv-association.jp/en/2021/04/filip-szkandera/https://hackaday.io/project/178826-pineapple-178826 wtchv=nuavknvrph 0t=16s https://spectrum.IEEE.org/geek-life/hands-on/build-a-riscv