硬件
简介
这是Pinsec顶层硬件图:
RISCV
RISCV是一款5级流水线CPU,具有以下特性:
指令缓存
单周期桶式移位器
单周期MUL、34周期DIV
中断支持
动态分支预测
调试端口
AXI4
如前所述,Pinsec集成了AXI4总线结构。 AXI4不是最容易使用的总线,但具有许多优点,例如:
灵活的拓扑结构
高带宽潜力
潜在的乱序请求完成
满足时钟时序的简单方法
被许多IP核使用的标准
适合SpinalHDL反压流(Stream)的握手方法。
从面积利用率的角度来看,AXI4肯定不是最轻量的解决方案,但某些技术可以大大减少这种担忧:
在可能的情况下使用只读/只写AXI4变体
引入Axi4-Shared变体,其中引入新的ARW通道来代替和组合AR和AW通道。该解决方案将地址解码和地址仲裁的资源使用量减少了两倍。
根据互连实现的不同,如果所有主设备都不会使R/B通道停滞(RREADY和BREADY被固定为1),则可以进行时序松弛。在这种情况下,可以通过综合去除两个xREADY信号,从而放宽时序。
正如AXI4规范所建议的,互连可以通过聚合相应的输入端口ID来扩展事务ID。这允许互连具有无限数量的待处理请求,并且能够以极小的面积成本(扩大事务ID)支持乱序完成。
Pinsec互连不会引入延迟周期。
APB3
在Pinsec中,所有外设均实现了一个APB3总线接口。选择APB3的原因如下:
非常简单的总线(无突发)
使用很少的资源
被许多IP核使用的标准
生成RTL
要生成RTL,您有多种方案:
您可以下载SpinalHDL源代码,然后运行:
sbt "project SpinalHDL-lib" "run-main spinal.lib.soc.pinsec.Pinsec"
或者您可以在自己的SBT项目中创建自己的main,然后运行它:
import spinal.lib.soc.pinsec._
object PinsecMain {
def main(args: Array[String]) {
SpinalVhdl(new Pinsec(100 MHz))
SpinalVerilog(new Pinsec(100 MHz))
}
}
备注
目前,由于最新版本的GHDL与cocotb不兼容,因此仅在仿真和FPGA中测试了verilog版本。