RISCV核設計與Chisel語言入門資料

RISCV SOC設計與Chisel語言入門資料

關於項目的一點說明

【本文提到的所有資料正在打包上傳,請等待】

今年三月,我和舍友一起參加了第四屆全國集成電路設計大賽,選擇了RISCV挑戰杯的子賽題二網址。自二月份開始着手做該項目,其間踩過無數的坑,也從一開始的手足無措,逐漸找到門路,熟悉了整個的開發流程。爲了對之前的工作做一個小小的總結,秉承RISCV一貫的開源開放的開發精神,並吸引更多的同志共同探討RISCV軟硬件協同開發的魅力,創作此博客。
簡而言之,項目的目的是在digilent公司提供的NexysDDR2板卡上,設計裝有任一RISCV處理器核的SOC,並將其燒寫到板卡上。之後編寫C語言代碼,經過相關工具鏈編譯後通過openocd上載到flash中,SOC啓動後,將會讀取flash中存儲的代碼,實現以太網下載、身份證識別功能、攝像頭讀取與人臉識別的功能。
我將具體的技術路線整理成思維導圖,見
【RISC-V身份證識別片上系統開發技術路線】

Rocket核與Chisel語言

Rocket核的主要信息可以輕易在網上查到,這裏不多言,然而chisel語言的教程卻很難查到,並且國內有關chisel語言的論壇也少之又少,導致出了錯誤之後很難在網上找到相關的解決方案。這裏我將這幾個月收集的chisel的教程與資料一併列出,基本都爲英文版,但語言簡單易懂,並且偏實踐性,故學習起來並無太大困難。
chisel語言是基於scala語言開發的硬件設計支持包,總體上開發者需要基本瞭解JAVA語言的設計法則,JAVA的語法與C/C++差不太多,熟悉C++的開發者很容易就可以掌握這種JAVA。部分語法及高級功能可以查閱資料包中的:
【Java核心技術 卷1 基礎知識 原書第10版.pdf】
【Java核心技術 卷2 高級特性 原書第10版.pdf】
scala語言學習起來較有難度,建議先花一個星期自己熟悉一下scala編程,資料爲
【快學Scala 第2版】
!!!重點搞懂懶值(page31),構造映射(page53),自身類型(page149),帶函數參數的函數(page178),控制抽象(page185)與拉鍊操作(page209)!!!
大略熟悉scala之後,就可以着手開始chisel語言的實踐了,這裏推一本好書:
【chisel-book.pdf】
這本書僅有英文版,但是對chisel的各項機制與語法進行了一個大致的介紹,適合用於入門學習,建議對該書進行通讀。
之後就可以開始rocket-chip的學習了,網上的許多SOC其內核都是rocket核,而rocket核及其所用的一系列必要硬件結構如移位寄存器、FIFO等的實現代碼都儲存在rocket-chip文件夾中,之後這些代碼可通過FIRRTL編譯爲verilogHDL文件用於進一步設計。對該文件夾內容的解釋可以參考該網址,好似是一個西電的大佬寫的,對其文件結構做了一個基本的介紹。
Notes for Rocket-Chip.
Rocket核最關鍵的部分是與外設總線進行通信。伯克利大學自定義了一套數據組織結構,較Diplomacy。在這裏面定義各個參數parameter,結點node與邊edge的通信交互協議。這個網址對該過程有了一個非常簡短的介紹:
Diplomacy and TileLink from the Rocket Chip.
進一步瞭解可見:
Chipyard教學網站.
在熟悉了SOC的硬件設計之後,就可以想方設法往總線上面掛外設了。

其他RISCV學習資料:
博主a_weiming的博客集.
博主_iChthyosaur的博客集

今天寫不動了,下次打算解說E310-G000 SOC的chisel代碼實現。

不免存在錯誤,歡迎大家批判。

最後配一張E310-G000 SOC的系統圖
Sifive公司的E310-G000系統簡圖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章