硬件
简介
这是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版本。