原文地址:【转】Avalon总线的静态地址对齐与动态地址对齐作者:笨鳥先飛

SOPC系统自定义外设之软件设计

时间:2010-10-20 博客园 路漫漫...

完成自定义外设的硬件设计后,就需要编写软件来测试外设的设计是否正确了。

在这之前首先要弄清楚Nios II中的地址对齐,对Avalon slave来说,有两种地址对齐方式:动态地址对齐和静态地址对齐。

动态地址对齐:动态地址对齐可以自动适应和Avalon master端口宽度不同的器件,而同时保持地址增长的方式是以字节为单位增长的方式。匹配不同端口宽度的master和slave时使用动态地址对齐方式可以得到一个连续的存贮器空间。但动态地址对齐在读操作的时候有附作用。当一个32位Nios II core读一个8位宽的slave时,物理会产生4次8位的读操作,而读一个16位宽的slave时,则要产生2次的读操作。大部分寄存器类型的外设不能容忍这种附作用,所以动态地址对齐一般不适合用于寄存器外设,主要用于存贮器。如果外部存贮器的宽度大于8位时,比如16位或32位,则必然有字节使能信号,以便进行字节粒度的写操作。所以在为这些存贮器做接口的时候,如果采用动态地址对齐的方式,则一定要连接字节使能信号。

静态地址对齐:静态地址对齐的地址增长单位是Avalon master的端口宽度,每次读写都只对应一次操作没有什么附作用。但在匹配不同端口宽度的master和slave时,地址不能自动调整,某些地址没有相应的物理实体和它对应。当一个32位的Nios II core读一个8位宽的slave时,其获得的32位数据低8位从slave获取,而高24位则没有定义。同样,当它读16宽的slave时,其获得的32位数据低16位从slave获取,而高16位则没有定义。当Nios II core想继续读下一个8位(或16位)时,则需要增长字节地址4。除非你一定需要一个连续的地址空间,否则使用静态地址对齐方式是比较保险的方式。

在刚调试期间遇到这样一个问题:用IOWR(KEYBOARD_BASE,2,0);清楚irq中断信号,在用SignalTap II逻辑分析仪始终抓不到write信号,一直保持低电平,后来用IOWR(KEYBOARD_BASE,0,0)就能抓到write信号了。我想一定是地址对齐的问题,然后打开SOPC Builder,准备地址对齐对齐方式,可是始终没有看到那一项,以前6.0版本是有这个选项的。折腾了我一天,后来只好硬着头皮看Altera官方文档,终于找到答案了。

于是决定找到源文件,改代码,在生成的key_hw.tcl中

注释掉DYNAMIC,改成NATIVE。

重新编译,问题就不服存在了,用SignalTap II成功到捕捉write信号

测试源程序如下:

为了能弄清楚中断的工作流程,决定进行单步调试。但必须先知道中断时如何控制和执行的。

中断由三个寄存器控制:state,ienable,ipending。

state:最后一位PIE,中断开关,1:中断使能。0:禁止外部中断

ipending:32位,第n位为1则表示正在处理第n个中断。

ienable:32位,每1位对应1个外部中断源的使能位,若第n位为1,则使能对应的中断,为0则禁止对应的中断

注意,ienable变成了0x4,联想到上一篇(原创)SOPC系统自定义外设之:硬件设计,中断号为2,表示键盘中断已经使能。

还有一个就是终端向量表alt_irq,一共有32个,每一个对应一个中断优先级,如果中断注册成功,就会向中断向量表里面写入ISR和context

如上图,alt_irq[2]的handler指向key_isr()中断服务程序,中断注册成功!

Context为全0,因为程序在注册中断服务程序时设置的context参数为NULL。

alt_irq_active是一个32位的全局变量,当某个中断被使能后,对应位就为1。

开始硬件上运行程序,让程序执行key_isr()中断服务程序。在按键时,输出如下:

中断服务程序成功执行!!

经过这次自定义外设软硬件的调试,实在是让人感叹SOPC的灵活性!

本文来自编程入门网:http://www.bianceng.cn/Programming/extra/201010/19618.htm

[转载]【转】Avalon总线的静态地址对齐与动态地址对齐_Detective_ALong_新浪博客相关推荐

  1. [转载]动物伦理,为了人的尊严_习惯累积沉淀_新浪博客

    原文地址:动物伦理,为了人的尊严作者: 评论员李铁 "道德就是拿火腿肠喂流浪狗喂到心碎流泪,而完全不用去顾虑猪的感受."这是一位网友对爱狗人士拯救流浪狗的讥讽,不少人觉得这句话绝妙 ...

  2. [转载]Ghost硬盘对拷图解教程(双硬盘克隆)_RWERWERWE_96921_新浪博客

    原文地址:Ghost硬盘对拷图解教程(双硬盘克隆)作者:leehwawong Ghost硬盘对拷图解教程(双硬盘克隆) 硬盘对拷,顾名思义:就是把一块硬盘上原有的数据拷贝到另一块硬盘上,从而实现目标硬 ...

  3. [转载]关于如何选择5D2和6D的忠告_我是亲民_新浪博客

    [选择5D3的言论] 尽管佳能使用了1位数命名,但我认为6D与5D2并不是一个档次的,亲.理由如下: 一.众所周知,无论佳能还是尼康,日本照相机在刚刚推出时的价位偏高,假以时日,日后一定是会降价的,这 ...

  4. [转载]如何让上传到新浪博客和相册中的照片更大更清晰_我是亲民_新浪博客

    原文地址:如何让上传到新浪博客和相册中的照片更大更清晰作者:李永宏 如何让上传到新浪博客和相册中的照片更大更清晰 图.文 李永宏 以前有朋友问我,怎么你上传到博客里的照片看起来不是很清晰,你用什么相机 ...

  5. 推荐一款自己的软件作品[豆约翰博客备份专家],新浪博客,QQ空间,CSDN,cnblogs博客备份,导出CHM,PDF(转载)...

    推荐一款自己的软件作品[豆约翰博客备份专 豆约翰博客备份专家是完全免费,功能强大的博客备份工具,博客电子书(PDF,CHM和TXT)生成工具,博文离线浏览工具,软件界面美观大方,支持多个主流博客网站( ...

  6. [转载]Word直接发布新浪博客(以Word 2013为例)

    2019独角兽企业重金招聘Python工程师标准>>> 原文地址:Word直接发布新浪博客(以Word 2013为例) 作者:paulke2011 注意:这篇博客直接由Word 20 ...

  7. 我的新浪博客地址升级了

    我的新浪博客地址升级了,不再是那一长串难记的数字,而是一个有意义的名字: http://blog.sina.com.cn/bitfan 这样,就与CSDN博客的地址一致了. 原有的那一长串数字的地址仍 ...

  8. 我的新浪博客地址升级了 1

    我的新浪博客地址升级了,不再是那一长串难记的数字,而是一个有意义的名字: http://blog.sina.com.cn/bitfan 这样,就与CSDN博客的地址一致了. 原有的那一长串数字的地址仍 ...

  9. [转载]环游澳大利亚18天——前传与攻略_我是亲民_新浪博客

    期待中,学习中... 原文地址:环游澳大利亚18天--前传与攻略作者:老湖 我一直以为自助旅行首先要走遍中国最美的地方,趁着年轻,徒步旅行中国最艰苦的美丽之地,老了之后,再去国外旅行,国外旅行先去比较 ...

最新文章

  1. AI时代,摄影艺术即将消失?
  2. Go语言构建json和解析json实例
  3. struts2+spring3+hibernate3整合(二)转载
  4. 【数据竞赛】组合特征的构建技巧,如何快速构建百大组合特征池
  5. 前端开发必备!Emmet使用手册
  6. boost::type_erasure::callable相关的测试程序
  7. Python并发编程之concurrent.futures
  8. CCTV2《今日观察》:谷歌事件美国早有预谋
  9. Python与机器视觉(x) 颜色直方图
  10. JNI读取assets资源文件
  11. 微信AD密码输入显示服务器出错怎么回事呢,微信提示账户或密码错误,请重新输入,怎么办...
  12. FMEA软件知识库(FMEAHunter)
  13. 华硕台式计算机光盘怎么启动不了,华硕怎么设置光盘启动_华硕怎么设置开机启动光驱...
  14. 微信小程序注册完整教程
  15. Lua math函数的用法
  16. html5多张图片滚动播放,javascript+html5实现仿flash滚动播放图片的方法_javascript技巧...
  17. 微信转账记录删除了服务器还有吗,微信转账记录能彻底删除吗?你应该知道的删除技巧是这三种!...
  18. HPE BL460c 配置536 FLB网卡VMware Esxi 6.0开启FCOE功能方法
  19. 360网站卫士 PHP-DOS攻击脚本专杀工具使用笔记
  20. 浙江省2013计算机教师招聘试题,2013年浙江省教师招聘考试真题(教育基础知识)省统考中学...

热门文章

  1. 数值孔径NA、分辨率极限与衍射极限(转)
  2. v4跨界战显示服务器维护中,V4跨界战手游预约-V4跨界战游戏首发预约_第一手游网...
  3. 愿每一个人的创造力都能被激发:剪映Mac版来了!
  4. 基于javaweb心理咨询预约管理系统
  5. 有效提升英语论文写作的方法
  6. Hibernate系列教材 (八)- 基础 - 使用Criteria进行查询
  7. js微信抢红包脚本代码_JavaScript语言基于AutoJs简易微信抢红包参考大佬修改
  8. 动态规划背包问题详解(二)---0-1背包问题
  9. 阿里云-ocr-身份识别
  10. 上海 交通卡退卡规则,余额给退吗