原创 理解Avalon总线的静态地址对齐与动态地址对齐

2010-4-13 10:10 3331 9 11 分类: FPGA/CPLD
尽管看了不少资料,但是一直对 Avalon slave 的动态地址对齐和静态地址对齐的理解不是很透彻。前两天自己做了一个SOPC的自定义组件,通过Deprecated这个选项的不同选取,一下子就理解了Avalon slave的两种地址对齐方式之间的区别。

下面以Altera提供的PWM自定义外设的例子,介绍两种地址对齐方式的区别。该例子有所改动,源代码中的32-bit的接口被改成了8-bit的接口,如果不这样改动的话,接口是32位,就不存在动态和静态对齐之分,动态对齐和静态对齐都是对于数据总线小于32-bit位宽的slave而言。

b6518765-0b94-48e7-a380-806145e08e2d.JPG

上图是在制作自定义PWM组件时,在Deprecated选项框中,Slave  addressing选择DYNAMIC


b626f762-7702-4ea7-a198-adcdd39984fc.JPG

上图是在制作自定义PWM组件时,在Deprecated选项框中,Slave  addressing选择NATIVE。

7c8b6d30-61cf-4519-8af3-239a490e04df.JPG

上图中,把两个自定义组件同时添加到系统中。由图中可以看出,pwm_avalon_interface_dynamic_0这一外设的地址空间为0x00000800 — 0x00000803,共4个字节;而pwm_avalon_interface_native_0这一外设的地址空间为0x00000804 — 0x00000813共16个字节。

分析:在pwm_avalon_interface.v文件中,Avalon总线的地址宽度为2-bit,因此一共会有4个数据。在使用动态地址对齐方式的时候,地址的增长方式以8-bit为单位增长。这种方式的优点是可以得到一个连续的存储器空间,但缺点是当32-bit的NIOS II core 对该外设每进行一次操作,则物理上相当于对该外设进行了4次操作,大部分寄存器类型的slave器件都不能容忍。在使用静态地址对齐方式的时候,地址的增长以32-bit位单位增长。这种方式的缺点是相对于同样的外设,他需要更大存储空间,优点是每对该器件进行一次操作,实际的每次读写也的确只有一次,没有额外的副作用。当一个32位的Nios II core读一个8位宽的slave时,其获得的32位数据低8位从slave获取,而高24位则没有定义。同样,当它读16宽的slave时,其获得的32位数据低16位从slave获取,而高16位则没有定义。当Nios II core想继续读下一个8位(或16位)时,则需要增长字节地址4。除非你一定需要一个连续的地址空间,否则使用静态地址对齐方式是比较保险的方式。

结论:在做自定义组件时,同样的代码,地址对齐方式选择的不同,得到的自定义组件占用的存储器空间大小有所区别,通过这一细微的区别,可以很直观的看出Avalon动态地址对齐和静态地址对齐的差异。


文章评论2条评论)

登录后参与讨论

用户1366067 2010-4-18 20:15

这个选项就在IP的时序图上面。我用9.1版本,不记得8.0是否有,按说是有的

用户1039119 2010-4-16 13:35

请问Deprecated选项框中在哪里啊?我怎么没看见啊,我的是8.0的

tengjingshu_112148725 2009-4-5 10:35

这种函数注释很好

用户383241 2009-4-1 19:37

格式当然是自己写的,这样才容易移植呀!

用户144681 2009-4-1 18:05

您好!请问您这种格式的标注是软件自身有的吗?? 就是说对每一个函数的注释!!!

用户1480039 2009-3-31 10:29

嗯,顶一下,还有改善的空间

用户383241 2009-3-30 20:00

仿真时显示在闪烁,不知道上硬件会怎么样。

用户199512 2009-3-30 10:44

原理图给我看看啊!

用户518079 2009-3-28 10:49

只要是时序正确了,仿真也是能够看到效果的。

用户383241 2009-3-27 11:56

最后发现是时序的问题,程序我用硬件试过,是可以的,但是仿真就不行.
相关推荐阅读
用户1366067 2010-03-31 15:00
国内IC公司,还缺点啥?
俺并不算是IC业内人士,但俺用IC、可算是IC业内人士的客户,就从一个应用IC的工程师的角度来简单说说国内IC公司,还欠缺点啥!前两天拿到EDN杂志,看到了无锡芯朋微电子有限公司的广告,在广告中,极力...
用户1366067 2010-03-27 14:51
俺的FPGA接口学习板
    一直以来,都坚定的认为自己是一个硬件爱好者;也一直想把一个硬件工程师必须掌握的几种常用接口,整个明白。今年,终于下定决心,搞一块自己的FPGA接口学习板,系统学习USB接口、网络接口、SD卡读...
用户1366067 2010-03-25 20:22
Firefox 试用
昨天闲得慌,在IT168看到了年度最流行的开源软件的介绍,其中就有Firefox这款浏览器。挺好奇的,就下载了一个。使用两天咯,感觉超棒,HOHO,比以前用的360安全浏览器速度快,功能还多。可惜就是...
用户1366067 2009-11-08 16:10
嵌套式状态机的描述
     在上周,就有写这个日志的打算咯,今天终于完工。    附件中,用一个简单的例子,描述了嵌套状态机的描述方法,一段式、三段式描述方法(1)和(2),其中包含了所有的源代码(所有源代码用VHDL...
用户1366067 2009-10-30 16:49
USB2.0 描述符小结
描述符(descriptor)是一个数据结构,使主机了解设备的格式化信息。每一个描述符可能包含整个设备的信息,或是设备中的一个组件。所有的USB外围设备,都必须对标准的USB描述符作出响应。<?...
我要评论
2
9
关闭 站长推荐上一条 /2 下一条