概述
AXI总线学习连载(5)
鲁迅曾经说过:
学硬件,不是学哪里查哪里,有一些东西是必须系统的学的,不管是嵌入式还是FPGA,硬件学习的积累一定要是系统的。
我也曾经说过:
英文手册非常重要,这是学习硬件标准的不二法门,没有捷径,我们这一行可以不说英语,英语也可以像我和我某些同事一样口语富有乡土气息,但是一定要能熟练看,内心看,做阅读理解一样看
跟着这篇博客,慢慢学习,对着官方文档,不仅可以学会这个协议,更能够学会硬件学习的方法,所谓举一反三。(我说的比鲁迅还多)
好了既然是axi,那么这么说,只要你使用arm架构的芯片,arm和fpga(pl 可编程逻辑)部分通信,或者外部设备通信,你都会用上这个协议。所以一起来学习,打工人!就该把自己的时间全部放在上面
好了不废话了,一起来探索吧!
不要厌烦枯燥,理论学习是在实践之前的必经过程,当学习完axi原型后,我也会专门贴出来一个axi协议使用开发的详细详细详细的n次方的接口解析。请学习过程中不要放弃,不要觉得枯燥!! (其实说给自己听的)
qq:2198187857 这里放出来一下,就是希望朋友们指导,有不足的地方批评教育一下,作为新手,还是很认真在学习
--------------------------------------------------------------分割线-----------------------------------------笨蛋看不见-----------------------------------------
上一个连载学习了五个通道内部的握手机制,这一次将会学习,通道间握手信号的相关关系。
首先我们先给出通道信号相关关系的一个概述,这个概述是arm对于axi原型的一个要求
1.写响应通道必须跟随最后一次写传输行为
2。读数据必须总是跟随这读地址通道内部的有效地址
3.通道内握手信号必须符合依靠原则 (什么是依靠原则接下来会讲)
那么同样的,我们先学习通道内握手信号们的相关性
为了阻止一种锁死情况的发生,这种依靠准则必须要在这些握手信号中间的得到体现,那么这种体现表现在什么上面呢:
1.首先VALID信号不应该受到READY信号控制
2.一个axi接口如果激活VALID则必须等待相应的READY
3,READY信号变动只根据目标设备情况进行变化
接下来会有三幅图表现这些握手信号们之间的变化,需要注意的是,这些图的含义
1.单箭头指向的信号能够在箭头开始位置的信号,之前或者之后激活
2,双箭头指向的信号能够在箭头开始位置的信号,之后激活
--------------------------------------------------------------分割线-----------------------------------------笨蛋看不见-----------------------------------------
好了 接下来就是读处理当中的相关性,如下图,读处理和两个通道有关,就是读数据通道和读地址通道
这里边官方文档对这幅图有七句解析
1.一个主设备不能够在将要激活ARVALID信号之前去通过等待已经激活的ARREADY,理解起来就是ARVALID是自由的,只要地址有用就可以激活(如图所示)
2.同样的ARREADY信号可以等待ARVALID信号拉高之后才开始激活
3.从设备可以在ARVALID激活之前,就是高电平,这意味着,只要从设备准备好就可以
4.从设备如果要激活RVALID必须要等着ARVALID和ARREADY都是高电平才能激活,如何理解?一句话,数据要走,地址先行,只有读地址通道完成握手,读数据通道才
开始握手,所以在图上是两个双箭头
5.相同的对于都数据通道,RREADY信号可以在RVALID之前或者之后变为高电平。
6.但是和前面讨论一致,RVALID如果变为高电平,则必须等着READY信号。
总结一下,这里就是所有的读行为相关的握手细节了,设计的时候,可以通过这个图来观察。
--------------------------------------------------------------分割线-----------------------------------------笨蛋看不见-----------------------------------------
如图所示,这是写处理当中,三个通道握手信号的相关关系,可以看见一共有三对,因为在写行为当中一共有三个通道,AW,W,B通道,同样官方给出一些注解,但是官方给出的比较混乱,
这里我重新总结,按着箭头顺序
1.AWREADY信号可以在AWVALID前后激活因为,只需要从设备准备好就可以。
2,AWVALID激活不需要也不能够取决于AWREADY信号,因为AWVALID具有主动性,只要地址有效就有效
3.AWVALID可以在WREADY前后激活,这代表地址信息和控制信息先走,从设备有寄存器可以接受
4.WVALID信号可以在AWREADY信号之前之后激活,这里代表着数据有用就可以有效。这里注意一下,WLAST!!不要忘记了
5.WREADY信号可以在WVALID信号前后都激活。理由不再复述
6.BVALID代表着必须要在WVALID和WREADY信号都激活之后,也就是开始传输之后才可以开始握手,因为这是写响应通道。
7.BREADY信号可以在BVALID前后激活,同样BVALID信号不需要也不能按照BREADY信号的高低作为激活标志。
好了这就是axi原型的通道握手信号的依靠准则,但是这里需要注意几个点
1.这种依靠原则必须在设计上得到体现,这样才能阻止锁死现象发生。
2.什么是锁死现象,这里举一个例子,我们知道一个源设备,一定不能够通过READY信号才去驱动VALID,更为细节,如果说跨越通道,在我们激活WVALID时,这个代表着数据开始有用了,我们不仅
不能根据WREADY信号去判断是否激活WVALID,也不能够根据AWREADY信号是否激活作为标准,锁死标准就是死循环,一个从设备如果一直没有激活READY,而主设备却一直需要等着READY才会拉高
VALID,这导致这个通信系统一直不开始工作!!
对于axi原型,AXI4自己在写处理上有自己的一个处理原则,是基于之前的写处理原则来的。
其实这里就注意一点就可以了,我们看BVALID信号,其实这里就是说,写这个事儿,写响应必须建立在地址和数据通道都握手之后才开始BVALID激活
不过这里需要注意一下:其实我们在设计的时候,很多时候没有必要去亲手写,因为这些最底层的是有ide工具写好的,但是我们需要去读懂他们的源代码
但是如果自己亲自设计一个axi从设备的接口时候,我基于自己的理解有一下几个建议:
1,按照axi4 这个设计来
2.地址通道先走。
3.数据通道第二位走,只有当地址通道完成传输后,再去操作数据通道
4.等待最后一次传输,做响应通道,如果是读数据通道,则使用RLAST
5,B通道为写响应通道,则是最后一个开始握手的
这个方式时序上统一,很容易去调节错误。
--------------------------------------------------------------分割线-----------------------------------------笨蛋看不见-----------------------------------------
好了撒花!!! 这里我们关于axi原型的所有握手机制都结束了!!!!!!
非常细致的学习了握手原则之后,我们能够建立起通道工作的先后顺序规则,这么说比较模糊,换一句话说就是,我们在用Verilog写接口的时候
可以建立起读写步骤的入口标准了,什么时候读写地址,什么时候读写数据,什么时候完成响应!
接下来我们就要去研究当握手完成后,我们要传递的东西是什么,他们分别代表什么含义!
今天的连载结束了!!!11月16日,不要心急,最多再过7天就能完全学习AXI原型,这时候我们就可以向下拓展了,AXI3 AXI4 AXI4LITE AXI4 STREAM
都可以完完全全自学啦!!!
去玩游戏了,每日总结一点快乐一点!
太平洋风暴见
最后
以上就是重要香烟为你收集整理的AXI总线学习-------从零开始详细学-------------连载(5)各通道握手信号,握手机制相互关系AXI总线学习连载(5) 的全部内容,希望文章能够帮你解决AXI总线学习-------从零开始详细学-------------连载(5)各通道握手信号,握手机制相互关系AXI总线学习连载(5) 所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复