Avalon 总线普遍应用于外设和软核或者硬核交互,其时序简单明了,也很是适合用来做为划分模块的接口信号。本文结合quartus 关于 avalon 总线英文原版作简单介绍,重点理解时序便可。欢迎你们一块儿交流,Q群:912014800。app
1.Avalon的时钟和复位异步
这里没什么好讲的,时钟信号略,而对于复位信号,可能有三个选择:ui
NONE: 复位是异步信号spa
DEASERT : 复位发生异步,复位释放同步3d
BOTH: 复位释放和发生都是同步信号blog
2.avalon M-M接口接口
这个接口比较重要,这个接口通常用于读写,可用在主从之间的元件上。全名,Avalon Memory-Mapped,阿瓦隆内存映射接口。事件
先看一个图:内存
如上图所示,Avalon MM mastet 经过内部桥链接Avalon MM slave,就是主链接从,其次下方有不少设备,好比uart来说,对于Avalon mm slave来说,一端链接到桥上,另外一端链接到真实的串口。其余外设均相似。文档
那么这个接口的时序是什么样子的呢?其实不一样的外设,其时序也少量差异,不过大同小异,如下举几个例子说明该接口的时序:
E1:
如上所示:发出读请求read和地址address的同时须要看等待信号waitquest是否是高,如果高,则表示须要等待,如果低,则表示能够进行读操做。
以后过必定的时钟节拍,会返回读数据readdata和readdatavalid读数据信号。(比较简单,写也是如此,固然这只是咱们比较熟悉的状况。)
E2:基于以上基础,请看下图,改图表示读请求有效以后,固定两个clk的延迟出读数据,可自行理解。
E3: 写突发操做
如上所示,在发出第一个写请求有效的同时(waitquest=0),会有burstcount=4和beginbursttransfer=1,这里burstcount表示这次写突发操做写几个
数,而beginbursttransfer表示第一个数,其余信号定义和以前相似,此处再也不赘述,上图表示写突发操做为4个长度,这里须要注意的是,第一个数据在第一次waitquest=0,写第一个数据。
E4:读突发操做:和写相似。
E5:写容忍两个:
如上所示:即便waitquest信号等于1,因为设置能够容忍两个写数据,所以A1 和A2仍然能够写道slave里面。
就介绍这么多吧,还有一些信号没有介绍,笔者也没有遇到过,到时候在补充吧。
3.Avalon 中断接口
中断接口相对简单一些,当发生什么事件时,拉高该信号便可,可是有时候可能会有几个中断同时来,那么就须要一个优先级。
4.AvalonStreaming Interfaces ,简称Avalon ST接口
E1:当ready信号准备好后,即可以传输数据,其中经过valid信号来指示信号的正确性,经过error和channel来选择那个通道以及是否错误。
E2:读准备好延迟=1,读准备容许=2
如上所示:单ready=1时,因为有一个clk的延迟,所以须要等待一个clk后在传输数据,因为其ready的容忍是2,所以即便ready已经为0了,
user仍然能够传输两个数据D2 和 D3.
E3:包传输,包传输就是在数据传输的过程当中,加入起始(start of packet)和结束指示信号(end of packet),其中也能够加入ready信号,
empty信号(有几个空,也就是无效),channel和错误信号,以下所示。
5.Avalon conduit 接口
用来导出做为和外部链接的接口或者给其余模块用。好比和外部sdram链接,或者和外部串口相链接。主要分为两类,好比给其余模块用的内部信号
和与外部真实物理器件相链接的信号。
6. Avalon 三态 conduit 接口,这里笔者也没怎么用过。。
总结:熟悉avalon MM和avalon ST总线的一些时序,不少IP核对user的接口都是基于avalon总线的,好比sdram ,ddr2,ddr3,uart,mac,方便user从另外一个角度理解和使用IP核,实际使用IP时,能够参考仿真,快速熟悉接口时序,从而将该IP核使用起来。本文并无将上述图中的信号的定义列出,如须要熟悉,请参考官方文档。