本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

基于32位RISC-V的自制CPU
发布时间:2021-04-30
分享到:
基于32位RISC-V的自制CPU
发布时间:2021-04-30
分享到:

该项目介绍了在家中如何设计和制造功能性的32位RISC-V CPU。该CPU不会打破任何速度记录,但是它采用分立逻辑芯片,在500 kHz上运行相对稳定,它具有512kB的程序存储器和512kB的RAM。

规格:

  • “最大”时钟速度:500 kHz
  • 程序存储器:512 kB
  • RAM大小:512 kB
  • VGA输出:200x150 px(黑白)
  • 2x 8位输入端口
  • 2x 8位输出端口

在一个名为Logisim-Evolution的程序中进行自己的RISC-V CPU设计。

Logisim-Evolution模拟图片:

框图:

程序设计:

1、将两个数字相加

int  main(void) {
     while( 1){
         //从端口A加载第一个操作数
        char操作数_A = SR-> INPUT_A;

        //从端口B加载第二个操作数
        char操作数_B = SR-> INPUT_B;

        //将端口A和B的总和输出到端口C
        SR-> OUTPUT_C =操作数A +操作数B;
    }

2、创建库

//打开屏幕上的特定像素
void  writePixel (int x,int y) ;
//关闭屏幕上的特定像素
void  clearPixel (int x,int y) ;
//在屏幕上写ASCII字符
void  writeChar (int x,int y,char arr []) ;
//清除萤幕
空白 VGA_clear () ;
//打开/关闭VGA输出
void  VGA_power (const  uint8_t状态);
//平方根
int32_t lib_math_sqrt(int32_t x);
//电源
int32_t lib_math_pow(int32_t base_i,int32_t exponent_i); 

使用该库,我可以创建一个简单的Shell程序,您可以通过连接到输入端口之一的PS / 2键盘与之交互(我使用PS / 2键盘和一个模块将输入信号解码为8位)。 

松壳:

当前支持的命令:

  • 你好
  • PEEK <地址>
  • 点<地址> <数据>
  • 系统信息
  • 清除
  • 跑蛇

原型:

通过将Arduino连接到其输入并同时监视其输出并将其与预测进行比较,对它们中的每一个进行了测试。一旦设置好,它就会自动完成,并且要测试尽可能多的可能性,每个测试至少要运行几个小时。  Arduino仅用于调试目的(最终版本中不存在)

输入、输出:

CPU有两个8位输入端口和两个8位输出端口,可以通过RJ50连接器在前面板上进行访问。还可以在顶部模块上看到一个7段显示器,该显示屏连接到可由程序访问的寄存器。为了连接VGA显示器,建立了一个受Ben Eater(https://eater.net/vga)启发的VGA卡。VGA输出分辨率为200x150像素。

此面板将显示存储在EEPROM(39SF010A)中的静态图像。

在最终版本上将使用双端口SRAM。

I / O模块演示(它们的末尾都有RJ50连接器)
1、LED模组:

2、按键模块:

3、PS/2解码器:

最终版本:

重新设计了所有PCB,进行错误修复,并使其可堆叠成塔状结构,因此每个模块只能通过引脚连接器连接。

最终版本(无顶部):

最终版本(顶部):

拆卸后的最终版本:

演示:

此视频中使用了VGA-> HDMI适配器,因此对电视上的图像进行裁剪。

外文原文:点击进入
声明:本文由Hackaday授权电路城翻译,系电路城的原创内容,转载请注明出处!

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论