Vivado和Quartus平臺移植tinyriscv記錄
?近些年大家都在熱衷造芯片、造處理器,RISC-V是經(jīng)常能聽到的一次詞。RISC-V公開的ISA指令集,但是具體如何實(shí)現(xiàn)并沒有統(tǒng)一的標(biāo)準(zhǔn),所以網(wǎng)上有很多開源的RISC-V實(shí)現(xiàn)。tinyriscv就是開源的版本之一,并且作者編寫的文檔也很全,非常適合新手用來練手和學(xué)習(xí)RISC-V。
軟硬件說明:
??? 本文記錄了佐大在移植tinyriscv過程中遇到的一些問題,希望這篇文章能幫助到大家。佐大用的開發(fā)版是Terasic DE1、Digilent Nexys4-DDR,對應(yīng)軟件版本是Quartus II 13.0、Vivado 2018.3。
Vivado:
??? 在Vivado平臺上,佐大用的是tinyriscv的master分支。由于master分支默認(rèn)的clk主頻是50M HZ,而Nexys4-DDR的clk時(shí)鐘是100M HZ,所以需使用PLL分頻到50M HZ。在約束引腳的時(shí),佐大把UART指到了開發(fā)板USB UART的引腳,就在這里踩坑了。使用tinyriscv_fw_downloader.py上傳ROM始終失敗,折騰半天發(fā)現(xiàn)是Nexys4-DDR USB UART兼容性問題,把UART約束到PMOD引腳就正常了。

Quartus:
???
在Quartus平臺上,tinyriscv的master分支有如下問題:1.Quartus不允許申明特別大容量的reg會報(bào)錯(cuò)。2.佐大嘗試增加bram功能失敗了。所以佐大最終用的是tinyriscv的bram分支。由于DE1性能太弱了clk跑不了50M
HZ,所以clk用的是24M HZ,同時(shí)需修改rtl/core/define.v中的CPU_CLOCK_HZ 為24000000。
????在申明RAM IP核時(shí),使用單周期、不鎖存q、寬度32bit、深度根據(jù)你開發(fā)版資源自行設(shè)置。然后修改rtl/perips目錄的rom.v和ram.v的代碼即可,下面是佐大的參考代碼。
??? 由于作者使用的Vivado平臺,并沒有考慮到Quartus的兼容性問題,需要修改rtl\utils\vld_rdy.v文件,下面是佐大的參考代碼。
??? 資源占用情況如下圖

總結(jié):
??? 本文就是一篇隨筆,技術(shù)含量不高,更多的是記錄佐大最近的動態(tài)。參加了佐大OpenWrt培訓(xùn)班的學(xué)員,佐大可提供移植tinyrisc的技術(shù)指導(dǎo),希望佐大的綿薄之力能幫助你們成長。
????本文轉(zhuǎn)摘自佐須之男的博客,原文鏈接:https://forgotfun.org/2023/08/porting-tinyriscv.html