从设计 <em>CPU</em>、制作原型机、最终成品到软件编程,19 岁极客小伙用了整整两年的时间。RISC-V 是一个基于精简指令集(RISC)原则的开源指令集架构(ISA),它是对应开源软件运动的一种「开源硬件」。该项目于 2010 年始于加
2021-05-27 16:03:11
機器之心報道
編輯:杜偉
從設計 CPU、製作原型機、最終成品到軟體程式設計,19 歲極客小夥用了整整兩年的時間。
RISC-V 是一個基於精簡指令集(RISC)原則的開源指令集架構(ISA),它是對應開源軟體運動的一種「開源硬體」。該項目於 2010 年始於加州大學伯克利分校,項目貢獻者是該大學以外的志願者和行業工作者。
RISC-V 指令集的設計考慮了小型、快速、低功耗的現實情況來實做,但並沒有對特定的微架構做過度的設計。與大多數指令集相比,RISC-V 指令集可以自由地用於任何目的,允許任何人設計、製造和銷售 RISC-V 晶片和軟體。
2021 年 4 月初,一位熱衷於自制 CPU 的 19 歲極客小夥 Filip Szkander 自己設計和製造出了 32 位功能性 RISC-V CPU,並構建了與其他自制計算機不同的個人計算機「菠蘿一號(Pineapple ONE)」。從設計、偵錯和安裝 CPU 和所有硬體,Filip 整整花了兩年時間。Filip 還受邀在東京舉辦的 RISC-V Days Tokyo 2021 Spring 上做了演示,他也成為了該會議自 2017 年舉辦以來最年輕的演示者。
創建者 Filip Szkander。
整體來看,「菠蘿一號」是由8 塊正方形列印電路板垂直堆疊組成,邊側高度約為 10 釐米,外加一個VGA 顯示介面卡。一共使用了230 多個積體電路,大多數是 74HCT 系列邏輯晶片。示意圖如下:
32 位 RISC-V CPU 的規格如下:
最大時鐘速度:500kHz程式記憶體:512kB記憶體 512kB快閃記憶體 512kBVGA 輸出:200×150px(黑白)2 個 8 位輸入埠2 個 8 位輸出埠
目前,「菠蘿一號」計算機支援的命令包括:HELLO、HI、PEEK <ADDRESS>、POKE <ADDRESS> <DATA>、SYSTEM INFORMATION、CLEAR 等。
此外雖然 CPU 的運行速度僅有 500kHz,但玩個貪吃蛇遊戲還是綽綽有餘的:
Filip 在一篇部落格中介紹了他從設計 CPU、製作原型機、輸入 / 輸出埠、最終成品到軟體程式設計的技術細節(下文以第一人稱敘述)。
設計自己的 RISC-V CPU
此前,我在 Youtube 上發現了電子愛好者 Ben Eater 自制 CPU(構建著名的 8 位計算機和經典的 6502 微處理器)的相關教程,所以非常著迷,也就有了自制 CPU 的想法。然而,我覺得對於 CPU 基礎知識瞭解的還不夠,因此又觀看了 Google Robotics 軟體工程師 Robert Baruch 的教程視訊,他只使用了基本邏輯元件構建了 32 位 RISC-V CPU。
之後,我便開始在一個名為「Logisim-Evolution」的項目中製造自己的 RISC-V CPU。我給自己設定的目標是不使用任何微控制器或 FPGA,只使用基本的分立邏輯元件。編譯器支援的最基礎 RISC-V CPU 必須包含擴展「整數(I)」且至少為 32 位。此外,我還需要安裝一個 VGA(視訊圖形陣列)輸出卡。
我花了整整 6 個月的時間在 Logisim 項目上,終於得到一個可運行的程式模擬。下一步繪製所有模組的原理圖、從 JLCPCB 網站上購買所有的 PCB(印製電路板)並重新設計。由於這是我首次購買 PCB,擔心搞砸一切,於是決定在設計過程中分模組處理,一次選購幾個,以免自己應接不暇。
Logisim-Evolution 項目中的模擬原理圖如下:
經過了兩輪設計,最後只剩下幾個模組需要處理,其中一個是直接生成器(immediate generator)。當我絞盡腦汁想將它從模擬轉化為合適的原理圖時,發現自己犯了一個致命錯誤:完全不清楚模擬是如何運行的。幸運的是,修復起來也沒有那麼困難,於是對已經制作完成的 PCB 做了改進。
原型機
接下來,我將開源電子原型平臺 Arduino連線到每個 PCB 的輸入端、同時監控輸出端並與預測端(prediction)做對比,從而對這些 PCB 進行測試。設定好之後,一切就可以自動運行了。每次測試都至少持續數個小時。
當我準備好將所有 PCB 整合到一塊時,模組也已經間隔地安裝在了木頭上,並使用 3D 列印墊片(spacer)來固定。接著上傳了一個測試程式並開始測試。
原型機示意圖如下:
Arduino 平臺僅用來偵錯,沒有在最終成品中使用。
儘管我單獨測試了每個 PCB,但首次嘗試還是失敗了,這不足為奇。我又不得不花費大量時間來找失敗的原因,找出了一些錯誤,如很難發現的時序問題。
輸入 / 輸出埠
我構建的 RISC-V CPU 擁有兩個 8 位輸入埠和兩個 8 位輸出埠,你可以通過 RJ50 連線器在前板上訪問。此外,頂部模組上有一個 7 段式顯示器(7-segment display),它與一個可以通過程式訪問的寄存器相連。
至於與 VGA 顯示器的連線,我受 Ben Eater 的啟發構建了一個 VGA 卡。VGA 的輸出解析度是 200×150 畫素,黑白顯示。雖然我想實現彩色顯示,但需要使用大型 V-RAM,太貴了,也就放棄了。
下板(board)將顯示儲存在 EEPROM(帶電可擦可程式設計只讀儲存器,型號 39SF010A)中的靜態影象。我在最終成品中使用到了雙埠 SRAM(靜態隨機存取儲存器)。
我還構建了一些演示用的 I/O 模組,它們在末端都有 RJ50 連線器。
PS/2 解碼器是買的現成的,我沒有時間自己製作。
最終成品
讓原型機運行不太容易,在大約 5 個月的時間後,我終於成功了。
我又重新設計了所有的 PCB,修復錯誤,並將這些 PCB 以塔狀結構堆疊,所以每個模組僅用針座(pinheader)相連線。重新設計 PCB 大約花了 3 個月的時間,然後對最終的 PCB 進行有序排列。
此外,我還設計並使用 Prusa i3 3D 印表機列印了一個圓柱體外殼,足以容納所有的 PCB 和 I/O 連線器,這樣也可以將鍵盤和 VGA 顯示器直接連線到計算機。
最終成品,左:無圓柱體外殼,右:安裝圓柱體外殼。
最終成品的元件拆卸:
方框圖:
程式設計
最後,在經過了數百小時的設計、焊接和偵錯,我終於看到了成功的曙光。在好友 Jan Vykydal 的幫助下,我設定了一個相容 RISC-V 且運行良好的編譯器,使用 C 語言編寫了一些系統軟體和 demo 程式。這個編譯器可以生成機器程式碼,我使用一個 Python 指令碼來接收程式碼並 flash 入 CPU 記憶體。
我還創建了一個具有一些有用函數的庫,程式碼如下:
Pineshell:
利用這個庫,我創建了一個簡單的 shell 程式,這樣可以通過「與其中一個輸入埠相連的 PS/2 鍵盤」來實現與該程式的互動。我使用帶有模組的 PS/2 鍵盤將輸入訊號解碼為 8 位。
大功告成!
相關文章
从设计 <em>CPU</em>、制作原型机、最终成品到软件编程,19 岁极客小伙用了整整两年的时间。RISC-V 是一个基于精简指令集(RISC)原则的开源指令集架构(ISA),它是对应开源软件运动的一种「开源硬件」。该项目于 2010 年始于加
2021-05-27 16:03:11
2021年是电脑硬件设备性能提升特别大的一年,不论是显卡市场还是<em>CPU</em>市场,各家新品层出不穷,巨头厂家之间火药味十足。当然,这对于我们消费者来说是件好事,厂家之间的竞争让我们能以一个更合理的价格拥有配置更好的
2021-05-27 16:03:05
第三款: i7-11800H高性能处理器+RTX3060甜品级显卡 这款惠普(HP)暗影精灵7 游戏本是最新上市的一款游戏本,搭载了<em>英特尔</em>酷睿i7-11800H的处理器,8核16线程,其测试性能比AMD锐龙5800h处理器要领先一些。内存大小为
2021-05-27 16:03:00
依据介绍,RedmiBook Pro 15锐龙版笔记本,搭载了<em>AMD</em>最新Zen3架构的锐龙R7 5800H处理器,还有一款搭载锐龙R5 5600H处理器。其他配置和此前RedmiBook Pro一致,包括3.2K 90Hz屏幕、CNC一体精雕工艺,内置小爱同学
2021-05-27 16:02:52
Epic表示虚幻5引擎抢先体验版正式开放,并将于2022年初发行完整版。在发布会上,Epic还宣布与<em>AMD</em>达成合作伙伴关系,会确保锐龙和镭龙用户在创建内容或游戏时能够最大限度地利用UE5。值得一提的是,本次虚幻5发布会
2021-05-27 16:02:49
另一层面,上汽大众ID.6X也是基于本土消费者喜好来进行开发,首先CPU采用了<em>高通</em>的820A,8核,计算速度是欧洲版本(4核)的2.2倍,运算能力强了很多,另外,国内版本支持HUD、LUNIX以及安卓三大系统,而欧洲版本仅支持
2021-05-27 16:02:36