賽靈思 Spartan-3開發(fā)板成為作者改進其軟件教育用的Oberon 編程語言和編譯器的基礎。
1988 年,Jürg Gutknecht 和我一起完成并出版了Oberon 編程語言[1,2],其為我職業(yè)生涯早期開發(fā)的另外兩種編程語言Pascal 和Modula-2 的后續(xù)版本。與Modula-2 相比,我們最初設計Oberon 編程語言力求更加精簡和高效,以便能夠更好地幫助教學人員為計算機科學專業(yè)的學生教授系統(tǒng)編程。我們再接再勵,于1990 年針對可采用windows 系統(tǒng)和具有字處理能力的工作站開發(fā)了Oberon 操作系統(tǒng)(OS),以此作為工作站的現(xiàn)代實現(xiàn)方式。接著,我們出版了一本書,名為《Project Oberon》,詳細講解了Oberon 編譯器以及與之同名的操作系統(tǒng)。此外,書中還包括詳細的指令和源代碼。
幾年前,我的朋友Paul Reed 建議我重新修訂并再次出版這本書,不僅因為這本書對系統(tǒng)設計教學具有重要價值,同時還因為這本書可以作為良好的切入點,幫助那些想要成為創(chuàng)新者的人們從零基礎構建可靠的系統(tǒng)。
然而,我當時實際上是遇到了很大的困難。我最初開發(fā)的編譯器是將已基本消失了的處理器作為目標。因此,我的解決辦法就是為現(xiàn)代處理器重新編寫編譯器。但在做了不少研究之后,我無法找到一款能夠在清晰度、規(guī)律性和簡潔性上符合我標準的處理器。因此,我自己設計了這款編譯器。而我之所以能夠將該想法付諸實現(xiàn),都是因為現(xiàn)代FPGA 能夠幫助我設計硬件以及系統(tǒng)軟件。更重要的是,選擇賽靈思FPGA 能幫助我更新系統(tǒng),同時讓設計盡可能接近自1990 年以來的原始版本。
實現(xiàn)在低成本Digilent Spartan?-3開發(fā)板上的新型處理器RISC 負責托管1MB 靜態(tài)RAM (SRAM) 內存。我唯一添加的系統(tǒng)硬件就是一個鼠標接口和一個用來替換舊系統(tǒng)中硬盤驅動器的SD 卡。
這本書和面向整個系統(tǒng)的源代碼可在projectoberon.com[3,4,5] 中查閱,也可在該網(wǎng)站上名為 S3RISCinstall.zip. 的單個文件中進行查閱。該文件包含指令、SD 卡文件系統(tǒng)圖像和FPGA 配置比特文件(對于Spartan-3開發(fā)板的 Platform Flash,此為PROM文件形式),以及SD 卡/ 鼠標接口硬件的構造詳圖。
RISC處理器
該處理器由算術邏輯單元、由16 個32 位寄存器組成的陣列和帶指令寄存器、IR 及程序計數(shù)器PC 的控制單元組成。Verilog 模塊RISC5 就是該處理器的典型代表。
該處理器具有20 種指令:4 種用于移動、偏移和旋轉;4 種用于邏輯運算;4 種用于整數(shù)運算;4 種用于浮點運算;2 種用于存儲器訪問;2 種用于分支。
RISC5 通過運行環(huán)境RISC5Top導入。該運行環(huán)境包括到各種(內存映射)器件和SRAM(256M×32 位)的接口。整個系統(tǒng)(圖1)包括以下Verilog 模塊(見行統(tǒng)計):
?
圖1 – 該系統(tǒng)及其所含Verilog模塊的方框圖
?
?
我將內存映射到黑白VGA 顯示器中,這樣它只占用1024×768×1位/ 像素=98304 字節(jié),基本上占 1MB 可用主內存的10%。該SD 卡將取代初始系統(tǒng)中80MB 的硬盤驅動器,其可通過能夠接受并序列化字節(jié)或32 位字的標準SPI 接口進行存取。鍵盤和鼠標通過標準PS-2 串行接口連接。此外,還提供一根串行異步的RS-232 線和一個通用8 位并行的I/O接口。模塊RISC5Top 還帶有一個每毫秒采用增量式計數(shù)的計數(shù)器。
OBERON操作系統(tǒng)
該操作系統(tǒng)軟件由包括內存分配器(帶垃圾回收器)的內核、文件系統(tǒng)以及引導載入程序、文本系統(tǒng)、瀏覽器系統(tǒng)和文本編輯器組成。
名為“Oberon”的模塊是中心任務調度程序,而“System”是基礎命令模塊。通過點擊顯示器上任何瀏覽器文本“M.P”上的中間按鈕即可觸發(fā)動作,其中P 是模塊M 聲明的程序名。如果M 不存在,則會自動加載。但是,大多數(shù)文本編輯命令是通過簡單的鼠標點擊觸發(fā)的。其中,左邊一欄按鈕用來設置" 脫字" 符,標記文本位置,右邊一欄按鈕用來選擇文本字段(text stretch)。
“Kernel”模塊包括磁盤存儲管理和垃圾回收器。我保證觀察瀏覽器是平鋪的,不重疊。標準布局顯示了多個瀏覽器的兩條垂直軌跡。只需拖動標題欄,就可以放大、縮小或移動它們。圖2 顯示了在顯示器上運行的用戶界面以及Spartan-3 開發(fā)板、鍵盤及鼠標。
?
圖2 - 顯示用戶界面的顯示器(Spartan-3開發(fā)板在右側)
評論