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

时间:2025-05-02  作者: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实现都行喽)~

审核编辑 :李倩

 

猜您喜欢

现代生活中,电吹风已经成为了我们日常护理发型的重要工具。为了提升使用体验,许多电吹风都配备了指示灯功能,以便用户更直观地了解设备的工作状态。指示灯的工作原理通常...
2025-04-01 19:00:02

2010贴片电阻是一种常用的电子元件,其封装尺寸对于电路设计和PCB布局至关重要。「2010」指的是其尺寸代码,表示其长度为2.0mm,宽度为1.0mm。具体来...
2025-04-14 15:02:38

贴片电阻体积微小,直接测量其长度较为困难。一般情况下,我们不需要精确测量其实际长度,而是通过读取其表面标识的阻值代码来确定其尺寸规格。阻值代码通常由数字和字母组...
2024-11-26 11:29:36

PTC热敏电阻作为重要的保护元件,应用于各种电子设备中。在众多品牌中,美磊(Mag.Layers)PTC热敏电阻凭借其优异的性能和可靠的品质,逐渐受到行业内外的...
2020-02-13 01:24:30

固液混合铝电解电容器是应用于电子设备中的关键组件,其规格和尺寸因型号和用途而异。通常,这类电容器的电压范围从6.3V到450V不等,电容量则可从几微法到几千微法...
2014-01-11 00:00:00


电荷泵电路作为一种常用的电压变换电路,在各种电子设备中都有着的应用。能够在没有变压器的情况下,高效地产生高于或低于输入电压的输出电压。为了帮助大家更好地理解和应...
2024-06-01 00:00:00

聚丙烯电容薄膜生产厂是个重要的工业基地。专注于生产高品质的薄膜,用于电容器。电容器在电子设备中应用。本文将介绍聚丙烯电容薄膜的特点和生产过程。聚丙烯电容薄膜的特...
2025-03-24 14:01:40

汽车保险丝作为保护车辆电路安全的重要元件,其作用日益凸显。CNOBLE作为知名的汽车保险丝品牌,高品质的产品性能和可靠的安全保障,赢得了众多车主和维修行业的信赖...
2024-06-08 03:40:30

工业清洗剂应用于多个领域,主要包括制造业、汽车工业、电子行业和食品加工等。在制造业中,清洗剂用于去除金属表面的油污、锈蚀和加工残留物,确保产品的质量和外观。汽车...
2022-09-17 00:00:00