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

时间:2025-09-12  作者: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-05 06:01:39

(文章来源:微计算机信息,作者:王曦;王立德;刘彪;丁国君)引言内燃机车在实际应用中仍占有很大的比重,比如在货运及调车运转方面发挥着重要的作用,且随着科学技...
2020-08-14 16:54:00

不断变化的行业定期经历结构性变化,刺激新的价值创造,并实现内容和通信服务的数字化。2023年,工业自动化中引入物联网将通过提供关键工具、合格人员和先进技术来促进...
2023-08-14 15:44:00

继电器开关是应用于电气控制系统中的自动化元件。通过电磁铁的原理实现电路的开关控制,能够在低电流信号下控制高电流负载。继电器开关的主要组成部分包括线圈、触点和壳体...
2008-05-21 00:00:00

单稳态多谐振荡器是应用于电子设备中的重要元件,其规格尺寸直接影响到设备的性能和稳定性。单稳态多谐振荡器的尺寸通常取决于其工作频率、输出波形及应用场景。常见的型号...
2009-11-05 00:00:00

在选择电锯、往复锯或曲线锯时,了解其规格尺寸非常重要。电锯一般有多种尺寸,常见的刀片长度为10英寸到20英寸,适合不同的切割需求。往复锯的刀片长度通常在4到12...
2017-04-26 00:00:00

发光二极管(LED)作为高效、环保的光源,已经在照明、显示屏、背光等领域得到了应用。随着科技的发展,市场上涌现出众多LED品牌,各具特色和优势。本文将为您介绍当...
2025-04-10 02:00:05


保险丝作为重要的保护元件,起着保障电路安全的关键作用。比普保险丝作为市场上知名的品牌,高品质的产品和多样的规格选择,赢得了广大用户的信赖。了解比普保险丝的大小规...
2025-03-03 08:08:30