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

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

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

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

上图中,把两个自定义组件同时添加到系统中。由图中可以看出,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动态地址对齐和静态地址对齐的差异。

理解Avalon总线的静态地址对齐与动态地址对齐相关推荐

  1. [转载]【转】Avalon总线的静态地址对齐与动态地址对齐_Detective_ALong_新浪博客

    原文地址:[转]Avalon总线的静态地址对齐与动态地址对齐作者:笨鳥先飛 SOPC系统自定义外设之软件设计 时间:2010-10-20 博客园 路漫漫... 完成自定义外设的硬件设计后,就需要编写软 ...

  2. 正确理解Avalon MM总线的动态地址寻址Dynamic Addressing

    目前Nios已经取消了Native寻址模式(即从设备到主设备寄存器直接映射),全部采用了Dynamic寻址模式,查找了目前存在的一些资料,尤其是某些教程,还在使用Native模式,对Dynamic动态 ...

  3. 关于AVALON总线动态地址对齐

    在NIOS的使用中,我们往往要用到自定义外设,然后通过AVALON交换架构和NIOSII进行通信. AVALON总线,其实是一种交换架构的协议,在自定义外设挂在AVALON总线上时,一定要注意地址对齐 ...

  4. Qsys自定义组件的开始-Avalon总线规范(中文)

    学习FPGA这么长时间了,一直没有整理自己的学习内容,这回要把每一段时间的学习内容总结一下,就从自定义组件开始吧.一定要坚持下来呀!! Avalon 总线规范 参考手册   (Avalon从端口传输与 ...

  5. 【Windows 逆向】内存地址分析 ( 动态地址 | 静态地址 | 偏移量 )

    文章目录 一.动态地址 二.静态地址 三.偏移量 一.动态地址 在 [Windows 逆向]使用 CE 工具挖掘关键数据内存真实地址 ( CE 找出子弹数据内存地址是临时地址 | 挖掘真实的子弹数据内 ...

  6. 有关于ipconfig查出来的地址和百度ip地址不同的解析

    本文参考地址https://blog.csdn.net/gui951753/article/details/79210535 最近补一个网络协议的实训报告,许多网络相关的知识都快忘记了,在这里做一下补 ...

  7. on-chip-bus(四)AXI总线:突发长度、突发大小以及非对齐传输的理解

    1.突发长度.突发大小 突发长度(burst length):指在一次突发传输中进行的数据传输次数,用AxLEN字段标识.由于标识值是从0开始的,实际的突发长度应为标识值+1,即突发长度=AxLEN ...

  8. 关于 avalon总线理解(整理)

    1,一个基于Avalon接口的系统会包含很多功能模块,这些功能模块就是Avalon存储器映射外设,通常简称Avalon外设.所谓存储器映射外设是指外设和存储器使用相同的总线来寻址,并且CPU使用访问存 ...

  9. niosII的那些事--基于AVALON总线的IP核定制

    简介 NIOS II是一个建立在FPGA上的嵌入式软核处理器,除了可以根据需要任意添加已经提供的外设外,用户还可以通过定制用户逻辑外设和定制用户指令来实现各种应用要求.这节我们就来研究如何定制基于Av ...

最新文章

  1. C++中四种类型装换
  2. golang select channel 多路复用
  3. Drupal 网站漏洞修复以及网站安全防护加固方法
  4. STM32 基础系列教程 19 – WWDG
  5. 2021年互联网公司“死亡”名单!(附清单)
  6. Freemarker宏和函数的用法和区别
  7. java 栈队列区别是什么意思_java栈和队列的区别
  8. bzoj 2194: 快速傅立叶之二 FFT
  9. RHadoop安装和使用
  10. matlab仿真高斯脉冲,高斯脉冲comsol仿真
  11. 黑马程序员——银行业务调度系统
  12. 谷歌邮箱lmap服务器填什么_GMAIL邮箱IMAP设置
  13. html中加号实体,纯css实现加号“+”效果(代码示例)
  14. 学校计算机教学楼命名大全,学校楼名及释义集锦
  15. 大白菜Ghost备份还原系统-人人都会重装系统
  16. kotlin 中关键字 lateinit
  17. Android扫码功能--华为统一扫码服务
  18. 鸿蒙系统可以跟ios媲美吗,华为鸿蒙三年媲美苹果iOS?技术上问题不大,生态才是真正考验...
  19. oracle 删除主键级联删除唯一索引
  20. JsonObject null 的神坑

热门文章

  1. 用C++语言实现坦克大战游戏
  2. Android 代理 wss,打android包使用wss协议进行websocket连接出错
  3. 一把王者的时间带你拿捏计算机原码、反码、补码的计算原理
  4. AUTOCAD——文字显示方式、CAD怎么直接打开天正图纸
  5. 于明:尝鲜Fusion APU新品
  6. 【幻灯片制作软件】Focusky教程 | 帧的播放时间太长,该如何调整?
  7. Box2D 像素(pixels)
  8. 从零开始SpringCloud Alibaba实战(58)——vim常用快捷键
  9. layout_constraintDimensionRatio中 H与W的区别
  10. 基于FFmpeg的视频播放器之七:音频解码