关闭

AVALON-MM接口

833人阅读 评论(0) 收藏 举报
分类:
AVALON接口分为两类:一种是AVALON-MM接口,一般称为MM接口,另一种是AVALON-ST接口,刚出来的一种新型接口。

MM接口,通过地址读写数据,更多的是用在控制上面,ST接口用于点到点的流数据接口,更多的可以用在有高速通过率的模块中。一个SOPC系统中,可以有多个MM接口,也可以同时存在多个ST接口。与PCI(外设接口互相标准)接口不同,PCI是铁路轨道,不可以同时有两路数据同时传输,而AVALON接口好像高速公路(比如8个车道。。),可以有多路并行数据的传输,但是当两个数据同时到一个目的地时,需要一个仲裁机制。

AVALON-MM接口分为主接口和从接口,无论是读写操作。都是主接口发出命令,从接口被动执行。

一、AVALON-MM  slave port(主端口)

引用《大话FPGA》的原话:在美眉面前,MM就是主接口,追MM的那个傻老爷们就是从接口。所以我们先介绍一下这个傻老爷们-从接口。所谓MM从接口,就是美眉向你提出要求。要你去拿点东西(read),或者存点东西(write)。MM的命令一定要执行,不过有不同的执行方法。

①、非定时传输

再谈AVALON-MM - 初学者 - 既然选择了远方,便只顾风雨兼程!
信号组合如上,不再一一介绍。传输操作如下:MM要你做事情的同时,你给他一块牌子,叫做waitrequest(置高)。表示让MM等待。等到你完成MM的任务,拿出东西或存好东西后,把牌子取回来,叫做waitrequest(置低)。MM就高高兴兴地走了,在你完成任务以前,MM会一直傻傻地等待着。(保持读写状态)。
②定延迟传输操作
再谈AVALON-MM - 初学者 - 既然选择了远方,便只顾风雨兼程!
在这种情况下,MM对你狠是了解了,她很确定的知道你取东西或者存东西需要的时间。所以就不需要waitrequest的牌子了。她发出命令后,等待响应的时间。她就高高兴兴地走了。
③非定时流水操作
再谈AVALON-MM - 初学者 - 既然选择了远方,便只顾风雨兼程!
这种情况适合于MM只拿东西,不适合送东西的情况。这个MM比较残暴,她没耐心等你把东西拿出来才发出下一个要求。她会一直发要求,虽然她不知道可能会花多少时间去拿来。所以她可以每个时钟都发出拿东西的要求,告诉你地址,你就不断的区出来。由于可能回来的时间是不同的,你需要提醒一下她东西来了,将readdatavalid置高。在这里我们确保发出的地址请求和回来东西的顺序是一直的。否则,MM会翻脸。
这样效率会高很多,当然我们需要一点反抗精神。当我们很忙或者想罢工的时候,我们就递给她一块waitrequest的牌子。在这个阶段,MM只能眼巴巴地等待
④定时流水操作、
再谈AVALON-MM - 初学者 - 既然选择了远方,便只顾风雨兼程!
这是一个对你比较了解的残暴MM,她知道你需要多少时间去拿回东西(readwaittime),所以readdatavalid就不需要了.但是waitrequest还是需要的。所以她需要的等待时间是waitrequest+readwaittime.
⑤、批处理套装
再谈AVALON-MM - 初学者 - 既然选择了远方,便只顾风雨兼程!
这是一个比较内向的MM。她不喜欢不厌其烦的告诉每次操作的地址,她只是告诉第一次的位置,和希望拿(放)多少东西就好了。所以叫做批处理。
批处理写操作:写的时候,首先会有一个beginbursttransfer命令。随着这个命令,会告诉逆地址,数据以及批处理的数量(burstcount)。waitrequest对于begintransfer信号无效。不管是否有waitrequest,她都会告诉你批处理的信息。但是地址,burstcount,,写信号以及写的数据,必须保持到waitrequest撤销的时候。在第一个数据以后的传递中,她不再告诉你地址和数量,只要告诉你放和要放什么东西(writedata)就好
批处理读操作:与读操作一样,拿东西的指令也是有beginbursttransfer发出的。依然告诉你读的地址。但在读的时候,不需要等到数据返回,可以继续发起下一次操作。而拿回来东西的时候,需要一个readdatavalid的牌子告诉一下
⑥、流控
我们也需要提高一些服务质量。有些情况是MM不知道的。比如,我这个抽屉里现在是空的,还是满的。如果为空,就不能来拿东西(read),如果是满的,就不能再塞东西了(write)。所以,我们需要用datavaliabe来表示,现在的抽屉是否为空,用readyfordata表示抽屉是否为满。
二、AVALON MM master port
了解了从端口的情况,对于主端口也可以知道个大概了。这里需要注意的是,主从端口并不是直接连接的,中间会有一个Avalon fabric switch的东西。他从中进行调整和一些自动加入的控制逻辑。这里我们主要说一下两个信号:arbiterlock,flush.
Arbiterlock,锁定仲裁。你在帮几个MM做事,其中有个MM比较霸道,于是她举起arbiterlock的牌子,那么在一定时间里,你就被她所独享了。
flush,流水线读的状态下。他给你一个请求,要你去拿一堆东西。可是突然她说不要了,举起这个flush的牌子。于是在这之前发出的要求被取消。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:66285次
    • 积分:1197
    • 等级:
    • 排名:千里之外
    • 原创:43篇
    • 转载:82篇
    • 译文:0篇
    • 评论:0条