首页 > 技术 > 内容

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

时间:2026-01-25  作者:Diven  阅读:0

对于FPGA系统设计里,寄存器控制通道的设计是系统控制中必不可少的部分。今日且看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实现都行喽)~

审核编辑 :李倩

 

猜您喜欢


二极管是应用于电子电路中的半导体器件,其主要功能是允许电流在一个方向流动,而阻止其在相反方向流动。在电子元件的选型过程中,了解二极管的型号命名规则是非常重要的,...
2025-03-31 05:31:39
在日常办公和学习中,文件夹是我们不可少的工具,但你知道不同类型的文件夹有哪些区别吗?按照材质分类,文件夹主要有纸质和塑料两种。纸质文件夹轻便环保,适合日常使用和...
2011-12-26 00:00:00
雪崩二极管是特殊类型的半导体器件,应用于电子电路中,尤其是在高频和高电压的场合。工作原理基于雪崩击穿效应,这使得在特定条件下能够快速响应并产生稳定的电流输出。本...
2025-04-08 14:00:03
作者:Achronix资深现场应用工程师 黄仑一个运用NoC来优化加解密设计的例子Achronix 最新基于台积电(TSMC)的7nm FinFET工艺的S...
2020-02-27 17:08:00
贴片电阻,顾名思义,是一种表面贴装的电阻器,广泛应用于各种电子电路中。它就像电路中的「减速带」,控制着电流的流动。 其基本功能是限制电流,并根据欧姆定律(电压=...
2024-11-26 11:29:35
HVSSOP-8(HighVoltageShrinkSmallOutlinePackage-8)是应用于电子行业的封装形式,特别是在需要高电压和高密度集成的应用...
2025-04-20 21:30:04
电阻器作为电子元件中的重要组成部分,其性能参数和品牌选择越来越受到工程师和电子爱好者的关注。冠佐(SUSCON)作为国内知名的瓷管电阻品牌,高品质的产品质量和稳...
2019-03-14 19:49:30
半导体制造过程中,晶圆的电阻率是衡量其电性能的重要参数。准确测量晶圆电阻率不仅关系到芯片的质量控制,还直接影响到器件的性能表现。那么,晶圆电阻率到底怎么测出来的...
2025-12-05 11:00:07
电动牙刷是通过电动机芯的快速旋转或振动使刷头产生高频振动的,瞬间将牙膏分解成细小泡沫来深入清洁牙齿。电动牙刷有两种:旋转和振动式。AH468霍尔开关是用来控制电...
2023-08-16 10:08:00