一种简单的axi2ahb桥的实现

本文作者分享了一项秋招准备中的项目,实现了AXI Master到AHB Slave的数据转换,包括INCR/WRAP操作处理、突发地址计算及AHB协议适配。通过模块化设计解决了arlen/awlen映射、地址卷绕突发等问题。验证阶段通过多种读写测试确保准确性。寻求读者反馈和可能的bug修复。

准备走秋招了,感觉除了数字ic设计和验证的理论知识外,项目好像还真没有能拿的出手的Orz,于是弄了个这个,希望设计与验证的两边都能练到。

项目代码在github

先看功能:能将AXI Master的transaction转换为AHB协议发送到AHB slave端口。能正确返回AHB slave的response。AXI部分只支持INCR/WRAP读写操作,(Fixed操作由于没考虑到就没写,其实也不难,但是写完过后我懒得加了);支持outstanding;不支持out of order,retry,split等高级feature。AHB部分则为single传输,支持b2b的single传输。

模块结构如下图:

axi2ahb_bridge_top.v:顶层文件,连接各个模块。


axi_controller.v:axi控制器的顶层,连接下面两个模块。


axi2fifo.v:将axi主机发送的数据拆分成一个一个的小块,地址、数据、读写状态、id、size,last一一对应。这个地方主要有两个难点:arlen和awlen如何与ahb协议对应、卷绕突发地址该怎么算。

如果arlen、awlen不为0的话,axi会只发送一个首地址,然后发送一连串的数据。这时我们用两个寄存器a与b,寄存器a在主机第一笔数据来的时候保存当前的len,寄存器b从0开始,遇见一次wvalid自加1,直到加到数据等于len为止。地址的计算就为:首地址+b*(1<<size)。size就是突发的大小

评论 29
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值