參考:
(1)、PULPino datasheet:https://github.com/pulp-platform/pulpino/blob/master/doc/datasheet/datasheet.pdf
(2)、論文《基於RISC-V的PULPino+SoC的FPGA原型設計和物理實現》
1、OVERVIEW
PULPino是為RISC-V RI5CY和zero-riscy core 構建的單核晶片系統。PULPino重用了其bigger brother PULP的大部分元件。它使用單獨的單埠資料和指令ram。它包括一個引導ROM,其中包含一個引導載入程式,可以通過SPI從外部快閃記憶體裝置載入程式。
Figure 1.1 展示了SOC的框圖。SoC使用AXI作為其與簡單外設的APB橋的主介面。AXI和APB匯流排都具有32位寬的資料通道。 為了除錯目的,SoC包括一個高階除錯單元,它允許通過JTAG訪問核心暫存器(core register)、兩個RAMs和記憶體對映的IO。這兩個ram都通過匯流排介面卡連線到AXI匯流排。

圖1.1 PULPino Overview.
PULPino主要針對RTL 模擬和ASICs,儘管也有一個FPGA版本。FPGA版本在效能方面並不是特別優的,因為我們主要使用它作為一個模擬平臺,而不是一個standalone platform。
2、Memory Map
圖2.1顯示了PULPino的預設記憶體對映,假設有32kB的資料和指令記憶體。這可以在PULPino頂級系統版本檔案中進行更改。

Figure 2.1: PULPino memory map.
2.1、Interrupt Vector Table
PULPino的IVT遵循了對RI5CY核心的定義。
表2.1:中斷/異常(exception)偏移向量表

3、CPU Core
PULPino同時支援RISC-V RI5CY和RISC-V ZERO-RISCY。這兩個core 具有相同的外部介面,因此與插頭相容(plug-compatible)。圖3.1和3.2顯示了兩個core體系結構
The core使用一個非常簡單的資料和指令介面來與資料和指令記憶體進行互動(talk)。為了與AXI介面,在PULPino中例項化了一個 core2axi 協議轉換器。
為了除錯,所有core register都被記憶體對映,允許通過AXI匯流排訪問它們。core內部的除錯單元通過此匯流排處理請求,並讀取/設定 core register and/or halts the core。
The core支援 performance counters。這些主要用於 counting core internal events,如 stalls,但也有可能 count core-external events。為此,有ext_perf_counters_i埠,可以附加任意事件。然後,每當在該埠上看到 a logic high,the core 就會為該事件型別增加其 internal performance counter。
RISCY 核是一個有序的單發射核心,具有 4 級流水線,每個時鐘週期能執行接近 1 條指令。該核心完全支援基本整數指令集、壓縮指令集、乘法指令集擴充套件和單精度浮點指令集擴充套件,並且實現了多個 ISA 擴充套件,例如位操作指令、MAC 操作、支援定點操作、打包 SIMD 指令和點積。 它旨在提高超低功耗訊號處理應用的能效。(見論文:基於RISC-V的PULPino+SoC的FPGA原型設計和物理實現)

Figure 3.1: RISCY core overview
ZERO RISCY 核是一個有序的單發射核心,有 2 級流水線,完全支援基本整數指令集和壓縮指令集。它還可以配置為具有乘法指令集擴充套件和為嵌入式系
統而設計的,減少整數暫存器數目的基本整數指令集。 它旨在實現超低功耗和超低面積。(見論文:基於RISC-V的PULPino+SoC的FPGA原型設計和物理實現)

Figure 3.2: zero-riscy core overview
4、Advanced Debug Unit
高階除錯單元有一個AXI主介面來訪問外圍設和記憶體。與PulpinoV1 the adv.相比,除錯單元不再具有專門的除錯介面來讀出所有的core register。
所有的核心暫存器(core registers)現在都是記憶體對映的,這意味著它們可以通過AXI介面讀取。因此,除錯不僅可以通過JTAG進行,而且還可以通過SPI或任何其他介面進行。
JTAG訊號被連線到SoC的引腳上。(訊號:trstn、tck、tms、tdl、tdo、dbginf)

Figure 4.1: Advanced Debug Unit.