原创 Avalon-MM接口地址对齐方式浅析

2007-6-17 14:31 5761 9 11 分类: FPGA/CPLD

    在Avalon-MM接口规范中,有两种地址对齐方式:Native Address Alignment和Dynamic Bus Sizing。 riple


    引入地址对齐的机制是为了解决主设备和从设备数据宽度不一致的问题。当主从设备数据宽度不一致时,主设备数据的宽度可能是从设备数据宽度的几倍或者几分之一。 riple


    解决这一问题可以有两种方法: riple


    1. 主设备一次访问固定地对应从设备一次响应,有效数据取二者之中最窄的。当主设备宽于从设备时,主设备可以访问全部的从设备数据;当主设备窄于从设备时,主设备只能访问从设备的部分数据。 riple


    2. 主设备一次访问对应从设备的多次响应或几分之一次响应,有效数据取二者之中最宽的。当主设备宽于从设备时,主设备一次访问对应从设备的多次响应;当主设备窄于从设备时,主设备多次连续地址访问对应从设备一次响应,或者是主设备一次访问对应从设备一个地址对应数据的一部分。 riple


    显然,前一种解决方法不能适用于主设备数据宽度窄于从设备数据宽度的情况。 riple


    在自己动手连接宽度不同的主从设备时,对于前一种解决方法,可以通过硬连线实现窄数据向宽数据接口的映射。对于后一种解决方法,当主设备宽于从设备时,需要在从设备中用有限状态机(或功能等价的逻辑)来实现自发的多次响应;当主设备窄于从设备时,需要在主设备接口中增加一组字节使能信号,实现部分数据的选取。 riple


 


    在Avalon-MM系统互连结构中,前一种解决方法对应Native Address Alignment,即从设备一个地址对应主设备一次访问,在主设备看来,从设备地址是和主设备的访问边界对齐的,系统互连结构通过硬连线实现窄数据对宽数据的映射。后一种解决方法对应Dynamic Bus Sizing,当主设备宽于从设备时,系统互连结构通过有限状态机实现对从设备的多次访问,不需要在从设备中实现数据宽度调整逻辑;当主设备窄于从设备时,系统互连结构采用从设备的字节使能信号或通过硬连线选取从设备接口的部分数据,只需要主设备连续发起多次访问即可,不需要主设备提供多余的位使能控制信号。 riple


    由于主设备可以不实现数据宽度变换逻辑,一个主设备可以访问多种数据宽度的从设备而不需要重新调整接口逻辑;同理,一个从设备可以支持多种数据宽度的主设备而不需要重新调整接口逻辑。这就是Avalon-MM接口的优点:通过自动的互连逻辑生成功能,提高了主从设备的可重用性。 riple


 


    从数据的角度看来,Dynamic Bus Sizing可以保证从设备数据和主设备地址的一一对应,Native Address Alignment是不恰当的,浪费主设备的地址空间,传输效率也低;但是从访问次数的角度看来,Native Address Alignment可以保证主设备访问次数和从设备访问次数的一一对应,Dynamic Bus Sizing会带来对从设备多余的访问。到底选择哪种方式,是由从设备决定的。在寄存器类型的从设备中,一次访问不仅仅涉及到数据,还影响到其他的逻辑,多余的访问是不可接受的;在存储器类型的从设备中,访问仅仅影响到数据本身,多余的访问是允许的,并且可以提高传输效率。 riple


    所以,采用哪一种地址对齐方式是由从设备的属性决定的;主设备无权决定采用哪种地址对齐方式,但是主设备需要明确当前被访问的从设备采用的地址对齐方式,以确定一次访问的有效数据宽度和位置。 riple


    今天就写到这,为了说清地址对齐这个概念,我对上面文字的表述方法作了三次大的修改,最终才确定了现在的写法。在修改的过程中,我也逐步加深了对这一概念的理解,许多以前似是而非的理解,现在都逐渐明确了。写作真的是“最有效的学习方式”。 riple


 


    总结一下: riple


    0. 数据宽度不一致也就是地址无法自然对齐,需要约定对齐方式。除了数据宽度不一致的情况外,数据字节的排列顺序问题(大小端问题)也是地址对齐的问题。Avalon-MM默认采用小端方式对齐。 riple


    1. 地址对齐方式就是从设备的地址在主设备地址空间的排列方式。 riple


    2. 地址对齐有两种方式:按照地址映射(Dynamic Bus Sizing),从设备地址在主设备的地址空间是连续排列的;按照访问映射(Native Address Alignment),从设备地址在主设备的地址空间是不连续排列的,按照主设备的访问单位小端对齐。 riple


    3. Avalon-MM系统互连结构支持上面两种映射,不需要主、从设备实现数据宽度调整功能。 riple


    4. 采用哪种方式由从设备的属性决定,从设备需要(在Component Editor中)声明自己支持的地址对齐方式,主设备需要明确被访问的从设备采用哪种地址对齐方式。 riple


    5. Dynamic Bus Sizing适用于任何形式的主从设备数据宽度比,Native Address Alignment只适用于主设备数据宽度大于等于从设备的情况。 riple

文章评论4条评论)

登录后参与讨论

托尼杰克马 2022-10-29 14:45

看看看

用户1571372 2012-3-20 11:04

恍然大悟啊,很有用

ash_riple_768180695 2007-6-19 10:26

谢谢,昨天下午就看到解决结果了。真是有求必应。

用户1053025 2007-6-19 10:10

Riple,图片和附件应该都没问题了吧

用户936143 2006-10-25 13:50

开发工具不一样,GTK主要采用c语言开发,而GTK++采用c++开发。此外,它们所用的库也不一样。

用户65733 2006-10-24 18:54

GTK和GTK++主要有什么区别,能否讲讲?
相关推荐阅读
ash_riple_768180695 2015-12-18 11:06
学习示例程序:FPGA快速系统原型设计--敏捷实践
        学习与开发板配套的示例程序,是敏捷实践的起点。示例程序是厂商针对开发板上提供的硬件资源和接口量身定做的工程,可以展示其FPGA芯片的功能和性能特点。从示例程序入手最大的好处就是:示...
ash_riple_768180695 2015-11-03 16:46
开发板选取:FPGA快速系统原型设计--敏捷实践
    既然是“实践”,就不能只谈编码和仿真,必须要上板运行、调试。这个虚拟项目的目标是实现一块兼容Intel82574L以太网控制器的千兆网卡,需要运行在一块具备PCIe接口和10/100/10...
ash_riple_768180695 2015-10-22 12:41
开篇:FPGA快速系统原型设计--敏捷实践
    虽然借用了 “系统原型开发”的标题,本系列文章将围绕FPGA IP级别的开发这个主题展开,如果可能的话,将扩展至FPGA System级别的开发。     先上一篇PPT:RSPwFP...
ash_riple_768180695 2013-08-26 10:21
学习SystemVerilog(二)——学习它的理由
    学习SystemVerilog的理由也很多,我在阅读SystemVerilog for Design 和 SystemVerilog for Verification两本书前言的过程中,总...
ash_riple_768180695 2013-08-26 10:19
学习SystemVerilog(一)——不学习它的理由
    想要学习SystemVerilog已经很久了。曾经尝试通过Accellera网站上给出的LRM学习,怎奈内容众多,找不出入手点和重点,只能望而却步。虽然手头有三本SystemVerilog...
ash_riple_768180695 2011-06-26 23:20
Hardware-Assisted IEEE1588 Implementation Analysis
06/18/11 11:00:05 PM         最近一段时间在研究IEEE1588-2008精确时间同步协议(PTP)。该协议可以在软件中实现,如果需要提高时间同步...
我要评论
4
9
关闭 站长推荐上一条 /2 下一条