泗阳建设局网站,wordpress首页新文章加new,电子商务公司注册,建站是什么专业AXI总线已经是AMBA总线中最常见#xff0c;使用最频繁的总线#xff0c;并且没有之一。
可以说AXI总线已经成为了片上总线中最重要的协议#xff0c;本篇文章打算花一些篇幅#xff0c;帮大家总结一下AXI总线的学习重点、学习难点#xff0c;以帮助大家更好更快的掌握AXI…AXI总线已经是AMBA总线中最常见使用最频繁的总线并且没有之一。
可以说AXI总线已经成为了片上总线中最重要的协议本篇文章打算花一些篇幅帮大家总结一下AXI总线的学习重点、学习难点以帮助大家更好更快的掌握AXI总线。
一、什么是总线Bus
1.1、什么是片上总线
要理解AXI总线首先要理解什么是总线。大家刚接触总线的时候千万不要纠结于具体的概念可以简单的理解成几根线按照规定的方式通信即可。
对于芯片设计而言可以简单的理解总线就是一组通信规范允许系统中不同组件之间进行传输。
AMBA总线包括AXI属于片上总线On-chip Bus它用于芯片内部中各个模块之间的通信。
总线可以简单的分为设备之间的总线和片上总线。其中设备之间的总线有时候也可以叫做传输接口比如最常见的UART串口硬盘的PCIE、SATA接口。显示器的HDMI接口电脑的USB、Type-C接口等。这些传输接口往往更注重设备的电气特性、稳定性。这是另外一套大的话题后面可以单独开个专题讲一些常见的传输接口。
而另外一种总线就是我们今天要聊的话题片上总线。所谓片上总线。顾名思义就是同一个芯片上一般指SoC系统各个模块IP核之间的数据通信方式。比如大家都设计好了自己的模块要集成在一个芯片上。如果都能满足类似的通信方式或者接口那集成起来就非常的方便其实片上总线的规范制定也是考虑到可扩展性。一般片上总线要满足以下的标准
对频率和数据吞吐量有较高的要求
扩展性强能够很方便扩展更多模块
常见的片上总线有Wishbone部分MIPS芯片使用、AvalonAltera芯片会使用、TilelinkUCB用在其RISC-V项目中、AMBA绝大多数SoC会使用。
1.2、总线中常见的名词和组件
接下来我们谈谈总线中常见的组件。以下说的这些概念和机制对任何常见的片上总线都是成立的。
首先是Master和Slave。前面已经说到了总线是用来进行数据传输用的那么既然是数据传输必然有发起方和接收方。一般我们称之为Master和Slave。 对于命令而言是由Master发给Slave而数据可以是双向传输的。比如可以是Master写给Slave也可以是Slave返回数据给Master甚至还可以是两者都有。Master和Slave的区分关键在于命令这次传输是谁发起的。
除了Master和Slave总线中一般还包括哪些组件呢比如有多个Slave的时候那么自然要确定你的命令是发给哪个Slave的这个时候我们就需要地址译码器。而当Slave返回数据的时候Master需要知道是哪个Slave回的数据因此还需要MUX选择器。
如果我们有多个Master的时候就需要仲裁器来选择到底是哪个Master可以发起某次通信上述的这一套仲裁译码等机制可以组合在一起构成片上互联Interconnect。所谓的互联可以理解为把所有模块的通信集成在一起。基于互联系统可以完成Master对Slave的访问而不用在乎互联的内部实现细节对于IP设计者而言。
1.3、什么是AMBA总线
AMBA全称Advanced Microcontroller Bus Architecture。即高级微控制总线架构。首先高级是针对那个年代而言的其实也没有多高级。然后是Microcontroller微控制器可以知道它最初是用在微控制器上实际上就是ARM自己的处理器上。然后Bus Architecture即总线架构。
AMBA协议是一个公开标准的片上芯片互联协议。AMBA没有版权费大家都可以使用协议都是公开的
提供接口标准使IP可以服用IP reuse加速设计和集成
移动领域和物联网领域使用最广泛的片上总线没有之一桌面领域我不清楚
然后我们看一下AMBA的发展历史对于大家来说学习APB、AHB和AXI就行。我相信如果大家已经学习到ACE和CHI了也不用看我这篇文章了。而最最重要的就是AXI。 二、AXI总线的学习路线
大家有了总线的基本概念以后便可以开始学习AXI总线以下是我推荐的AXI总线的学习路线。
2.1、第一阶段带着问题去看源文档
学习AXI总线之前首先我们要知道为什么会出现AXI总线即它设计之初是为了解决什么问题的没有AXI总线会怎么样
AXI总线是ARM公司在其第三代AMBA中推出的称之为AXI3.0有时候也可以叫做AXI1.0。其设计的目的是针对高性能、高时钟频率的系统设计用于在这些场景替代AHB协议的。针对这一特点我们可以思考一下为什么AXI的性能就高了为什么AXI可以跑到较高的时钟频率
带着这一问题去看协议就可以明白AXI提高性能最主要的因素是因为AXI是读写通道分离的其作为全双工的协议自然比AHB这样的半双工协议快此外AXI是基于握手机制的并且通道之间的握手没有1T cycle delay的要求。因此这么多复杂的东西不需要一个时钟周期就全部算完可以插入寄存器逻辑自然可以提高主频。
类似的点还有很多我帮大家总结了一下大家可以先带着这些问题去思考然后去看AXI协议知道这些信号设计的目的是什么即使协议看不太明白也不至于不清楚为什么要有这个东西。这种感觉就像之前学数学课即使你看不太明白推导但也不至于完全不清楚为什么要有这个东西。
如何提升主频以及保证数据安全-AXI的握手机制
数据不是顺序回来的怎么办、想多发几个命令出去怎么办-AXI的Out of Order、Outstanding、ID机制
现代多核处理器中的数据一致性如何保证-AXI的原子访问机制和Response相关信号
非对齐访问如何实现-AXI支持非对齐访问
现代处理器中往往有Cache和BufferAXI怎么支持-AXI的Cache信号
现代处理器往往有特权访问、安全访问等机制AXI如何支持-AXI的PROT信号
大家带着这些问题然后去看文档边看边思考。理解AXI为什么要设计这些信号先不用在意实现细节具体哪些比特代表啥先知道有这么一回事就行。并且边看边补充一些计算机组成原理和操作系统相关的知识这是第一阶段。
2.2、第二阶段自己动手设计简单的AXI IP模块
在完成第一阶段以后基本都会对AXI协议有个初步的了解但毕竟纸上得来终觉浅绝知此事要躬行。完成AXI协议的了解以后应该自己动手去设计具有AXI接口的Master和Slave。
不一定要特别复杂。这里建议可以从最简单的AXI-lite开始设计一个AXI-lite的从机然后可以通过AXI-lite给它配置相应的寄存器。配置寄存器这一部分可以在TB里面完成。
然后可以设计一个相对复杂点的AXI-full的Slave比如AXI2RAM模块该模块可以支持突发乃至Outstanding甚至可以支持乱序完成该模块以后工作中再遇到AXI-Slave设计至少心里不会虚并且面试基本可以应付大部分问题了。
最后可以再设计一个AXI Master从主机和从机两个不同的维度深刻理解AXI协议的通信机制这个主机同样的也可以支持Outstanding乃至乱序。这里建议设计一个AXI DMA非常的锻炼人。
上述的这些模块设计可以去网上如github找些开源的AXI IP参考别人的设计理念然后再自己动手做毕竟能一次自己做出来基本上是不可能的。
2.3、第三阶段学习AXI接口验证以及AXI互联IP
首先说AXI接口验证其实工作中大家写完了AXI的IP并不知道是否符合AXI的通信要求很多公司可能会用VIP能给各种AXI的激励然后大家根据自己IP的结果判断设计的是否合理。大家可以想一想这个VIP到底是怎么设计的如果让你来设计你会怎么做。
然后是AXI互联IP前面已经说过什么是互联了由于总线互联非常复杂并且非常重要。实际上大多数公司会采用买总线互联IP的方式。大家可以自己动手设计一个简单的互联IP让自己设计的Master和Slave挂在上面然后看能否建立通信如果没问题的话可以进一步的学习如何使用第三方IP比如典型的NIC400。
三、一些AXI面试常问的问题
最近移知对AMBA课程进行全面升级打磨了《AMBA进阶之AXI总线实战》课程。本人非常有幸受邀移知教育参加它们的课程体验官活动有幸成为了AMBA-AXI课程的首席体验官。该课程基本符合我推荐的AXI学习路线。并且给大家解决了AXI学习中会碰到的疑难问题。
课程系统全面解读AXI总线协议帮助学习者快速定位到具体实际问题解决面试和实际项目中常见难题如outstanding机制、握手机制原则、out of order机制死锁问题等。
在协议的理解基础上提供Masrter和Slave的设计案例模块通过循序渐进的方式理解RTL源代码掌握AXI接口的视线。 目前秋招已经开始了关注我的很多都是学生朋友大家学习AXI的目的可能也是为了吊打面试官找到满意的工作。下面给大家分享一些我之前参加面试以及我面试别人常问的一些AXI相关的问题。
AXI和AHB的区别在哪里为什么AXI相比AHB有明显的性能优势
AXI3和AXI4的区别在哪里
Exclusive访问是什么它的实现机制是什么相比于Lock Access的优势是什么
AXI的outstanding数量如何计算
Burst中的WRAP类型如何计算上下界地址
AXI哪些情况可能出现死锁如何避免此问题
AXI Stream中如何进行反压
AXI中各个Channel之间的依赖关系是什么
如何计算AXI最大传输带宽
Interleave和乱序的区别是什么
AXI的Out of Order应该怎么去实现
…
如果大家能把上述的问题都答出来那恭喜大家AXI已经掌握的很好了。去参加面试这部分的内容不会成为你的障碍了。如果仍然有不会的那还需要继续学习。
大家加油祝大家早日掌握AMBA总线