作業學習內容如下:
-
使用 RISC-V assembly 實現簡單的 quick sort (Hoare’s partition)。
-
使用 Verilog 實現部分指令的 RV64I RISC-V single-cycle processor。
-
課程代碼: CSIE3340(三校聯盟課程代碼: 3T1684701)
-
授課老師: Prof. Shih-Hao Hung(洪士灝 教授)
-
課程用書: Computer Organization and Design Risc-V Edition: The Hardware Software Interface, by David A. Patterson and John L. Hennessy
Homework 2 | Description | Input | Output |
---|---|---|---|
使用 RISC-V assembly (RV64I) | 實現簡單的Quick Sort (Hoare partition),了解組合語言中的陣列與指標,以及遞迴呼叫時堆疊區應該保存的上下文資訊。 |
資料夾結構如下:
homework_2
├── main.s
├── rars-1.7.jar
└── sort.s
從右側連結 點此下載 下載 RARS 1.7
使用以下指令執行程式:
java -jar rars-1.7.jar rv64 sm main.s sort.s
Homework 3 | Description | Output 1 (ALU Wave) | Output 2 (Register Wave) |
---|---|---|---|
使用 Verilog | 設置verilog開發環境,學習基礎verilog語法,按照作業規範實現ALU Design與RISC-V Register File Design,並寫testbench測試邏輯是否正確。 | ![]() |
資料夾結構如下:
homework_3
├── ALU.v
├── ALU_tb.v
├── Registers.v
└── Registers_tb.v
設置 verilog environment:
右側連結下載 Icarus Verilog 與 GTKWave 點此下載
使用以下指令執行:
iverilog -o alu ALU.v ALU_tb.v
vvp alu
gtkwave ALU.vcd
以及:
iverilog -o reg Registers.v Registers_tb.v
vvp reg
gtkwave Registers.vcd
資料夾結構如下:
homework_4
├── ALU.v
├── ALUControl.v
├── CPU.v
├── ImmGen.v
├── instruction.txt
├── Instruction_Memory.v
├── PC.v
├── Registers.v
└── Testbench.v
使用以下指令執行:
iverilog -o CPU.out *.v
vvp CPU.out
gtkwave CPU.vcd