SpinalHDL中如何优雅地实现寄存器总线读写

时间:2025-11-01  作者:Diven  阅读:0

对于FPGA系统设计里,寄存器控制通道的设计是系统控制中必不可少的部分。今日且看SpinalHDL中如何优雅地实现寄存器总线读写。

SpinalHDL中如何优雅地实现寄存器总线读写

Bus Slave Factory

在SpinalHDL里,其Libraries里提供了关于总线相关的库。包含AMBA3、AMBA4、AVALON等总线类型,并提供了bus slave factory工具

通过bus slave factory,我们可以方便地实现寄存器读写,其提供了一系列寄存器读写方法。这里列举几个常用的方法(完整的方法列表可参照SpinalHDL-Doc):

read(that,address,bitOffset)    

注册寄存器读操作到指定地址,比特偏移为bitOffset 。     

write(that,address,bitOffset)

注册寄存器写操作到指定地址,比特偏移为bitOffset。             

readAndWrite(that,address,bitOffset)

注册寄存器读写操作到指定地址,比特偏移为bitOffset 。            

readMultiWord(that,address)

注册大位宽寄存器(超过总线数据位宽)读操作到指定地址,其中address地址存放对应低比特,高比特地址向上累加。

writeMultiWord(that,address)

注册大位宽寄存器(超过总线数据位宽)写操作到指定地址,其中address地址存放对应低比特,高比特地址向上累加。

除此之外,bus slave factory还提供了printDataModel函数用于打印寄存器列表。而且在生成RTL时,其会自动检测寄存器地址是否存在冲突。

AXI4-Lite总线实现

这里以AXI4-Lite总线举例,通过AXI4-Lite总线读写三组寄存器:

en:单比特信号,可读可写。

plus:单比特信号,可读写,写1自动清零。

cnt:64比特信号,可读。

这里给出完整的代码结构:

这里代码5~10行代码声明模块端口,第12行代码规范AXI4-Lite端口名称。代码第15~18行通过slave factory实现AXI4-Lite寄存器读写。代码第19行打印输出寄存器列表。

由于plus写1清零,因此代码14行用于实现清零操作。

通过下面的语法生成RTL代码:

在生成RTL代码的会打印寄存器列表:

仿真结果

SpinalHDL里提供了AXI4-Lite总线的基础仿真库,这里直接调用其仿真库,完整的仿真代码如下:

通过gtkWave观察波形:

可以看到,功能符合我们的设计,写寄存器0x4信号plus拉高1个时钟周期后自动清零。     这里简单几行代码实现了AXI4-Lite总线控制寄存器读写,对于我们在真正的项目实现里,能够极大简化我们的工作量和bug产生。尽管现在各个大厂或许有专门的总线控制寄存器读写代码生成工具,但SpinalHDL这种形式从本质上解决了Verilog描述的重复性工作。

写在最后

虽然SpinalHDL这种slave factory工具能够让我们在工程中快捷的实现想要的功能,但对于初学者来说,理解掌握AXI4-Lite这些标准的总线协议时序还是非常有必要的(Verilog or SpinalHDL实现都行喽)~

审核编辑 :李倩

 

猜您喜欢

FPGA原型验证系统要尽可能多的复用SoC相关的模块,这样才是复刻SoC原型的意义所在。通常,许多SoC中设计的方式在FPGA中其实是不能通用的,在SoC设计的...
2023-05-23 16:50:00

标准云母电容器是电子设备中常用的元件。具有高稳定性和低损耗的特点。许多电子产品中都能看到的身影。接下来,我们将深入了解标准云母电容器的特点及优势。高稳定性标准云...
2025-03-25 18:31:07

Murata陶瓷电容是电子产品中常见的元件。被应用于各种电路中。制作过程复杂,但可以分为几个简单步骤。本文将介绍Murata陶瓷电容的制作过程。材料准备制作陶瓷...
2025-04-13 06:00:38

电阻分流器作为测量电流和分压的重要元件,有着着关键作用。选择合适的电阻分流器不仅关系到电路的精度和稳定性,还影响整体设备的性能和寿命。华润电阻作为国内知名的电子...
2016-06-23 03:42:15

信号继电器是重要的电气元件,应用于各个领域。在工业自动化中,信号继电器用于控制和监测设备的运行状态,确保生产流程的顺畅。在交通信号系统中,继电器负责管理信号灯的...
2013-01-21 00:00:00

贴片电阻在电子电路中非常常见,的缩写英文通常是 SMR (Surface Mount Resistor) 或 Chip Resistor。 SMR 更为常用,直...
2024-11-29 10:26:19

在选择服装套装时,了解其参数非常重要。不同的套装在材质、尺寸、设计和功能上各有特点,适合不同场合和风格。材质是决定舒适度和耐用性的关键。常见的有棉、麻、聚酯纤维...
2020-09-28 00:00:00

开关二极管是常见的半导体器件,应用于电子电路中。主要作用是控制电流的流动,通常用于整流、开关和保护电路等场合。了解开关二极管的连接方式,对于设计和调试电路非常重...
2025-04-03 05:01:40

现代电子设备的设计中,封装的选择对整体性能和尺寸有着重要影响。MSOP10_3X3MM_EP是广泛应用的小型封装,因其优越的性能和紧凑的尺寸而受到电子工程师的青...
2025-02-21 12:57:44

现代电子设备和工业自动化中,连接器的选择非常重要。TERMINAL_12.50X15.24MM作为高效的连接解决方案,凭借其独特的设计和优异的性能,应用于各类电...
2025-04-27 00:31:44