AXI总线学习连载(4)

 

鲁迅曾经说过:

学硬件,不是学哪里查哪里,有一些东西是必须系统的学的,不管是嵌入式还是FPGA,硬件学习的积累一定要是系统的。

 

我也曾经说过:

英文手册非常重要,这是学习硬件标准的不二法门,没有捷径,我们这一行可以不说英语,英语也可以像我和我某些同事一样口语富有乡土气息,但是一定要能熟练看,内心看,做阅读理解一样看

跟着这篇博客,慢慢学习,对着官方文档,不仅可以学会这个协议,更能够学会硬件学习的方法,所谓举一反三。(我说的比鲁迅还多)

 

好了既然是axi,那么这么说,只要你使用arm架构的芯片,arm和fpga(pl 可编程逻辑)部分通信,或者外部设备通信,你都会用上这个协议。所以一起来学习,打工人!就该把自己的时间全部放在上面 

好了不废话了,一起来探索吧! 

 

不要厌烦枯燥,理论学习是在实践之前的必经过程,当学习完axi原型后,我也会专门贴出来一个axi协议使用开发的详细详细详细的n次方的接口解析。请学习过程中不要放弃,不要觉得枯燥!! (其实说给自己听的)

 

qq:2198187857  这里放出来一下,就是希望朋友们指导,有不足的地方批评教育一下,作为新手,还是很认真在学习

 

--------------------------------------------------------------分割线-----------------------------------------笨蛋看不见-----------------------------------------

连载(3)讲解了握手机制的原理以及注意事项,当然划分到各自通道内部后,握手机制又会不同,这一次会解析。

贴出来这次我们要讨论的几个握手信号,在连载(3)当中有各通道信号大全

 

                          AXI总线学习-------从零开始详细学-------------连载(4)

 

接下来我们就会分开讲解这些信号

--------------------------------------------------------------分割线-----------------------------------------笨蛋看不见-----------------------------------------

 

1.写地址通道

      主设备会产生AWVALID信号,此时写地址通道应该开始传输正确的地址和控制信息。当VALID置为高电平,AWVALID一定必须持续到AWREADY信号拉高,且一起持续到下一个时钟沿

触发,这和连载(3)当中讲到的第一种情况即VALID信号先到,则必须持续到完成握手,保证有效信号不被丢失。

     当然从设备可以在AWVALID变成高电平之前,将AWREADY信号置为高电平或这低电平,但是不建议这样做,因为如果随时随地AWREADY都是从低电平开始,就会像连载(3)里面讲过的一样

握手在两个时钟拍之后才能实现,所以官网建议,在设计这个硬件接口的时候,如果开始工作,让从设备的寄存器保证有空间,这样AWREADY信号可以一直处于高电平。这样从设备就可以随时随地

收到地址信号,只要VALID拉高。

2.写数据通道

    在一次写burst突发传输(这个概念先不管,后面会讲解),主设备同样可以在信息数据是有效的时候将WVALID拉高,当拉高之后,同样WVALID也必须等到握手完成,这个和之前讲的是一样的,不再

复述。

     当然从设备可以像之前说的一样,把WREADY信号变成高电平,代表准备接受,当然也可以不开启,这里也建议如果从设备寄存器条件允许,还是建议把这个READY信号随时随地置高。原因同前相同,

不用等两个周期完成握手。

    这里需要注意一下。有一个WLAST信号,这个信号表示最后一个数据传过去后,这个信号就应该拉高。这里放上信号定义,也可以回到连载(3)看。

AXI总线学习-------从零开始详细学-------------连载(4)

 

 

3.写响应通道

    这个通道有一个不同点,这里BVALID是由从设备发出,表示的是是否发送的是一个有用的写响应信号,如果BVALID被拉高同样的必须等BREADY信号拉高,知道完成握手,同样的也建议主设备一直把

BREADY信号拉高,原因和前面一样,这样握手不需要等待到两个时钟周期,只需要BVALID拉高,等一个时钟周期就可以完成。

 

4.读地址通道

       主设备能够将ARVALID置为高电平,表示携带了有效的地址和控制信息,同样的,这时候ARVALID一定也必须等待这个ARREADY信号到来,且维持到之后有效的时钟上升沿,保证握手完成。

这里和读地址通道一样,也建议如果说能过够让ARREADY信号一直是高电平,就可以避免两个时钟周期之后才完成握手,这个很简单,但前提是寄存器允许。

(这里有共同点,学习的时候还是注意下异同点,他们其实功能不同,但是机理一致)

 

5.读数据通道

    这里需要注意,在写数据通道内,是从设备发送主设备想要读取的数据,那么从设备可以拉高RVALID,表示此时的主设备要读的数据是有效的,同样的和前面所说的一样,RVALID一旦拉高必须

等待后续RREADY完成握手,才能变回低电平。当然也建议设计时候,RREADY信号一直拉高,这样也可以只需要一个时钟周期就完成。

  同样的当传输完最后一个数据之后,就必须把RLAST信号拉高,这里RLAST就代表是否到达了最后一个传数据,依旧把官方定义拿出来

 

AXI总线学习-------从零开始详细学-------------连载(4)

 

 

 

--------------------------------------------------------------分割线-----------------------------------------笨蛋看不见-----------------------------------------

总结一下:

以上讲解的是各自通道的握手原则,这里需要注意下,连载(4)讲的其实就是最细节的通道内部握手原则,接下来连载(5)会讲解各通道内握手信号的相关性,并且有他们自己的

依赖关系。

 

1.需要注意的还是,如果是像连载(3)当中说的第一种情况,VALID信号先拉高,则必须等待READY到来完成握手,这不能违反。

2.需要注意的是,虽然说READY信号可以根据目标设备(注意思考为什么是目标设备而不是从设备)自身寄存器状态拉高还是拉低,但是官方设计人员建议我们,使用的时候,

保证READY信号一直处于高电平,这样可以保证一个时钟周期就完成握手,这里带大家解析一下,假设如果READY信号一直是高,此时恰好VALID并不在某一个时钟沿处上升

而是在两个时钟沿之间拉高,则在后一个时钟沿,系统才会触发握手,所以这时候至少有一个时钟周期。

这就是这篇连载的总结

好好学好握手准则,其实握手准则是一个很基本,但是在设计系统时又是一个很细节很绕的东西。把时间都花在学习上吧!!!!

继续去战地风云5了。。。。。。。溜溜球 

 

 

 

 

 

 

 

相关文章: