




摘" 要: 由于現有的處理器架構及IP核存在授權費用高、兼容性差等問題,近兩年出現的新型RISC?V架構有著開源、免費等優勢,文中基于RISC?V指令集的PicoRV32開源處理器,搭建一個精簡SOC硬件平臺。通過運行呼吸燈測試程序,驗證了該平臺的正確性。在Xilinx XCVU440的FPGA開發板下資源顯示最高頻率為381.2 MHz,LUTs為1 137。可見PicoRV32開源微處理器具有邏輯門數少、跑頻高的優點,可被用作FPGA設計和ASIC設計的輔助處理器,具有較高的研究價值和應用前景,并且所設計的平臺可適用于其他處理器的SOC搭建及FPGA綜合驗證。
關鍵詞: 開源處理器; RISC?V; Verilog HDL; 呼吸燈; SOC硬件平臺; 平臺驗證
中圖分類號: TN43?34" " " " " " " " " " " " " 文獻標識碼: A" " " " " " " " " " " " " "文章編號: 1004?373X(2019)21?0090?04
Abstract: Because the now available processor architecture and IP kernel has high licensing fee, poor compatibility and many other historical burdens, the new RISC?V architecture emerging in the last two years has the advantages such as open source and charge free. Therefore, a streamlined SOC hardware platform has been built on the basis of PicoRV32 open source processor with RISC?V instruction set. The correctness of the platform was verified by running the breathing light test program. Resources on the FPGA development board of Xilinx XCVU440 show: the highest frequency is 381.2 MHz and the LUTs are 1 137. It can be seen that the PicoRV32 open source microprocessor has the advantages of fewer logic gates and higher running frequency, which can be used as an auxiliary processor for FPGA design and ASIC design, and has high research value and application prospect. The designed platform is applied to SOC setup of other processors and FPGA comprehensive verification.
Keywords: open source processor; RISC?V; Verilog HDL; breathing light; SOC hardware platform; platform verification
0" 引" 言
當今芯片發展對SOC設計的高要求,迫使采用集成面積小、性能高、結構簡單的CPU。有兩個重要的因素制約了對新結構的探索,即已有的軟硬件生態系統和開發成本[1]。目前,各大公司研發推出自己的軟核處理器,其中ARM處理器和Power PC處理器不提供開源代碼,使用時需要較高的授權費;Altera公司的Nios Ⅱ處理器和Xilinx公司的MicroBlaze處理器雖然提供免費的開發平臺,但是不提供HDL源代碼,在IP配置時受限制,并且這些處理器只兼容他們公司自己的相應器件,具有一定的局限性;OpenCore組織開源公布的Open RISC系列OR1200處理器的軟件開發包中沒有圖形化配置界面[2],配置分析相對麻煩、不靈活,并且這些IP的內核和工具生態系統十分封閉,開發人員也無法或僅有極少開發空間來把軟件移植到其他架構中[3]。這樣的現狀在一定程度上限制了研究者對微處理器的深入研究,進而減緩了對微處理器的研發設計和商業化應用進程。所以。在摩爾定律預言瀕臨終結、計算微體系結構日趨成熟,新的開源指令架構RISC?V系統架構萌芽發展,為開源處理器的多樣化設計開辟了新的前景。本文所研究的PicoRV32微處理器就是一款基于RISC?V指令集架構的開源微處理器,通過設計和搭建硬件平臺,編譯軟件測試程序進行驗證,在一定程度上展示了PicoRV32處理器的研究應用價值。
1" RISC?V概述
1.1" RISC?V指令集
RISC?V是繼RISC?I,RISC?Ⅱ,SOAR和SPUR之后推出的第五代精簡指令架構,由加州大學伯克利分校(University of California at Berkeley)的研究者設計發布的一款免費開源指令集,最初被設計為面向計算機架構的研究和教育領域[4],可根據系統實際需求自由擴展硬件和軟件架構,近一兩年受到業界和學者的廣泛關注和重視[5]。其中,基于該指令架構的Rocket開源處理器采用臺積電公司40 nm工藝時的性能[6],與采用相同工藝的標量處理器ARM Cortex?A5的性能對比,其占用面積小、動態功耗低,整體性能等方面明顯更優。相對于商用指令架構和開放指令架構,RISC?V指令架構可以提供更有利于研究和應用的設計優勢,如支持用戶級指令和特定用戶的應用擴展,支持高度并行的同異構多核或眾核實現技術開放,可免費應用于學術和商業等。值得一提的是,所有的RISC?V軟件工具也是開源的,比如,Icarus Verilog(Iverilog),它是一個開源的Verilog仿真綜合工具,在進行平臺仿真驗證時,可采用批處理的方法將代碼編譯、啟動仿真工具、查看波形等過程統一為一個操作。像開源IP、軟件工具都能在開源社區中找到,這樣能更好地支持和維護處理器的硬件開發和學者研究。
針對RISC?V指令架構特點對存儲器訪問的研究發現:
1) RISC?V架構只支持小端模式,考慮到主流的應用大部分也是小端模式,這樣可以簡化硬件的實現;
2) 不同于其他RISC處理器,RISC?V架構的存儲器的讀寫指令不支持地址自增自減模式,這也是RISC?V架構簡化硬件的目標,在不支持地址的自增自減模式下,對處理器訪問連續存儲器地址區間具有一定的局限性,但是,可以很大程度上簡化地址的生成邏輯,從而減小集成面積;
3) 在指令規劃方面,雖然在傳統的RISC處理器中,只需要執行“一次讀多個數據”或“一次寫多個數據”這樣的一條命令就可以完成多步操作,但弊端是會讓處理器的硬件設計增加難度,加大了硬件的開銷,時序要求更難達到,無法提高主頻,優化處理器性能。所以在RISC?V指令集中舍棄了這兩條指令。
1.2" PicoRV32處理器
PicoRV32是由Clifford wolf 工程師設計的開源處理器。其采用RISC?V指令集架構,遵循作者設計的私有總線規則,可配AXI4?Lite總線協議和wishbone總線協議,采用Verilog語言編碼、32位尋址空間,提供一個獨立的IP核接口,該IP核可用于創建自定義核,方便設計者進行自主研發,PicoRV32微處理器的高頻特性可以應用在大多數現有的SOC設計中。此外,PicoRV32微處理器也可配置協處理器接口(Pico Co?Processor Interface,PCPI),可以應用在CPU內核外,不需要分支命令的傳輸。外部協處理器內核可以進行譯碼、執行,結果值可以自由地寫入相應的寄存器。為了實現更低的硬件開銷,PicoRV32中配置的中斷處理IRQ可以不遵循RISC?V所享有的ISA規范,而是通過一組自定義指令實現IRQ處理,這樣的設計也是為了進一步減少硬件邏輯。
2" 基于PicoRV32的SOC平臺搭建
本文設計和搭建的平臺基于RISC?V指令架構中的基本配置指令集,即RV32I指令集,以PicoRV32處理器為核心,集成ROM,RAM,并行輸入/輸出(parallel in out,PIO),乘除法功能模塊。其中,各個功能模塊與PicoRV32微處理器之間以私有總線接口互連,按照PicoRV32微處理器開發人員定義的傳輸規則進行模塊間的數據信息傳輸。搭建的SOC系統平臺框圖如圖1所示。
圖1a)設計的是通過PicoRV32的私有總線搭建的SOC平臺,可在RISC?V系統架構下完成處理器的基本讀寫操作。在平臺設計和搭建過程中,為了得到更小的SOC系統,針對模塊的物理地址區分問題,采用MUX選擇的方式,目的是使用盡可能少的邏輯門將PicoRV32所處理的數據信息傳輸到指定的功能模塊中。圖1b)是基于AMBA3 AXI?Lite標準總線設計的,在 AXI?Lite標準總線上掛載AXI標準接口的RAM,ROM 模塊,經過AXI to APB轉接橋集成GPIO外設,該AMBA標準總線下設計的SOC平臺可以適用于其他處理器,由于PicoRV32開源微處理器為了盡可能減少不必需的硬件邏輯,所以沒有調試功能這部分,在圖1b)設計的SOC平臺中,可以通過掛載其他可調試標準接口處理器對PicoRV32進行調試,從而解決PicoRV32無法調試的問題。
根據上述設計的兩種結構,在Linux操作系統中進行搭建集成。其中,這兩種不同的接口是通過宏定義配置選擇,采用Verdi仿真工具查看由硬件代碼模擬生成的電路圖,如圖2所示。經與所設計的SOC系統框圖對比確認,所搭建的精簡SOC平臺與設計結構圖一致。
搭建此平臺可以兼容存儲器接口的處理器,也適用于AXI標準協議接口的處理器,比如,R15CY,mRISC?V,ORCA,SCR1等RISC?V處理器IP核,在研究其他RISC?V處理器IP核時,可以在此平臺進行仿真驗證和綜合驗證,具有一定的通用性。
3" SOC平臺測試驗證
3.1" SOC平臺驗證環境
本次SOC平臺采取軟硬件協同驗證[7],驗證開發環境如下:
軟件條件:在Win10系統上安裝VMware Workstation虛擬機+Ubuntu系統。
硬件環境:首先,從github開源社區下載PicoRV32 IP核源代碼,并在Linux操作系統中設計集成,生成可綜合文件,使用synplify premier 綜合工具對文件進行編譯綜合,輸出綜合報告。
3.2" 編寫呼吸燈程序
實現呼吸燈的設計方法有多種,可采用脈沖寬度調制(PWM)驅動LED和定時器電路等方式。PWM方式具有易控制、功耗小并且相對直觀的優點[8]。呼吸燈程序通過控制電路的開關時長實現脈沖寬度調制,采取PWM正調光,即PWM為高電平時LED發光,低電平時LED不發光。因此,當占空比為100%時,LED燈最亮;占空比為0%時,LED燈熄滅。
根據視覺暫留效應,頻率大于100 Hz肉眼是無法分辨出閃爍的,因此,將PWM的脈沖周期設置為10 ms。LED燈在某個周期內的通斷比例不同,會出現不同程度的亮度。采用PWM技術,通過調整占空比,調整LED燈的亮度,使LED燈實現從亮逐漸變暗,再從暗逐漸變亮的順序循環,從而在實驗觀察中呈現出呼吸燈的效果。
3.3" SOC平臺呼吸燈仿真
針對設計的SOC平臺,采用riscv32i?unknown?elf?gcc編譯工具編譯[9]呼吸燈程序,生成elf文件和hex文件。在軟硬件協同驗證設計中,有兩種針對處理器啟動的方式:
1) 將hex文件固化進ROM模塊中,通過ROM模塊的只讀功能在PicoRV32啟動時直接從ROM中取指運行;
2) 通過task任務調用hex文件寫入RAM模塊中,在PicoRV32啟動時從RAM模塊中進行取指運行。實驗系統中,采用將hex文件中的代碼信息寫入RAM模塊,合理分配數據段和代碼段,通過仿真工具進行編譯生成vcd文件查看波形,以波形圖與呼吸燈明暗變化的對應關系驗證SOC平臺設計的合理性。
在Linux環境平臺下針對所設計的兩種不同端口的SOC搭建平臺,加載編譯呼吸燈軟件程序,通過ModelSim軟件仿真工具驗證,如圖3所示。
從圖3a),圖3b)中不難看出,將PIO模塊的gpio端口輸出相鄰的全零(低電平)和全F(高電平)看作為一組,從仿真波形中不難看出,輸出的每一組中的全零和全F比例為等差規律變化,根據視覺暫留效應,肉眼看到的光強應為每一組中全零和全F的疊加效果,從而模擬出LED燈如人呼吸一樣的光感效果。從仿真波形上可以看出,PicoRV32將加載到RAM中的代碼編譯信息正確傳輸到PIO模塊的gpio端口,在使能端控制下,驅動流水燈執行亮滅循環的變換,該仿真波形與軟件測試程序一致,說明此SOC驗證成功。該SOC硬件平臺的SOC驗證平臺適用于其他任何處理器的驗證。再通過synplify premier綜合工具對該SOC平臺進行性能分析,輸出資源報告如圖4所示。
從圖4中可以看出,設計的SOC平臺總LUTs為1 137,主頻可以跑到380 MHz左右,性能指標在現有的開源處理器中有很大的優勢。同理,在AXI?Lite標準總線下也進行了同樣的驗證,如圖5所示,仿真波形與測試程序一致,說明所搭建的AXI?Lite接口SOC硬件平臺驗證成功。
4" 結" 論
本文搭建了基于PicoRV32軟核開源處理器,采用RISC?V指令集的硬件設計平臺,通過運行呼吸燈測試程序進行平臺驗證,得到的仿真波形與測試程序功能一致,驗證了所設計平臺系統的合理性。在Xilinx XCVU440的FPGA下編譯綜合[10],最高頻率為381.2 MHz, LUTs為1 137,可以說明通過集成精簡的SOC系統能夠完成基本的讀寫數據操作和相應的功能實現,并且能為總線掛載帶有調試功能的處理器,為解決PicoRV32微處理器的無調試問題提供平臺搭建方案,從而更為容易和廣泛地移植到其他的SOC系統中,同時在一定程度上說明了PicoRV32開源處理器的研究開發潛力和商用化前景。其中,在遵循AMBA標準總線協議下搭建的SOC硬件平臺也可以適用于更換為其他處理器IP核的仿真驗證和FPGA綜合,也為研究不同處理器的性能分析比較評估帶來方便。
參考文獻
[1] 唐志敏.高端處理器芯片的技術趨勢與可持續發展[J].電子產品世界,2017,24(4):27?29.
TANG Zhimin. The Technology trend and sustainable development of high?end MPU [J]. Electronic engineering amp; product world, 2017, 24(4): 27?29.
[2] 危必波.基于LEON3的SoC平臺搭建及嵌入式Linux系統的移植研究[D].武漢:武漢工程大學,2014.
WEI Bibo. SoC platform build and research of embedded Linux system porting based on LEON3 [D]. Wuhan: Wuhan University of Engineering, 2014.
[3] MARENA T.RISC?V:改變SoC器件的開發[J].中國電子商情(基礎電子),2017(12):34?35.
MARENA T. RISC?V: Changing the development of SoC devices [J]. China electronic business (Basic electronics), 2017(12): 34?35.
[4] GROSS H, JELINEK M, MANGARD S, et al. Concealing secrets in embedded processors designs [M]. Norwich: Springer International Publishing AG, 2017.
[5] 李佳師. RISC?V架構將是我國物聯網芯片逆襲機會?[N].中國電子報,2018?08?28(007).
LI Jiashi. Will the RISC?V architecture be an opportunity for China′s Internet of Things chip counterattack? [N]. China electronics news, 2018?08?28 (007).
[6] 雷思磊.RISC?V架構的開源處理器及SoC研究綜述[J].單片機與嵌入式系統應用,2017,17(2):56?60.
LEI Silei. Overview of open source processor and SoC research in RISC?V architecture [J]. Microcontrollers amp; embedded systems, 2017, 17(2): 56?60.
[7] 張明文.SOC技術在微電子芯片設計中的應用[J].信息與電腦(理論版),2016(13):66?67.
ZHANG Mingwen. Application of SOC technology in microelectronic chip design [J]. Information and computer (Theoretical edition), 2016(13): 66?67.
[8] 郭占苗,宋雪松.呼吸燈的設計與制作[J].自動化與儀器儀表,2017(1):32?34.
GUO Zhanmiao, SONG Xuesong. Design and production of breathing lamps [J]. Automation and instrumentation, 2017 (1): 32?34.
[9] 雷思磊,王軍,張海燕.開源片上系統Freedom E310調試過程原理分析[J].單片機與嵌入式系統應用,2017,17(9):19?22.
LEI Silei, WANG Jun, ZHANG Haiyan. Debugging process principle analysis of open?source SoC freedom E310 [J]. Microcontrollers amp; embedded systems, 2017, 17(9): 19?22.
[10] FARHAT A, HOMMOS O, AL?ZAWQARI A, et al. Optical character recognition on heterogeneous SoC for HD automatic number plate recognition system [J]. EURASIP journal on image and video processing, 2018(1): 1?17.