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

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

在这之前首先要弄清楚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中

#set_interface_property avalon_slave addressAlignment DYNAMIC

set_interface_property avalon_slave addressAlignment NATIVE

注释掉DYNAMIC,改成NATIVE。

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

时间: 2024-12-22 15:57:11

SOPC系统自定义外设之软件设计的相关文章

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

开发环境:Quartus II 8.1 + Nios II IDE 8.1 外设功能:4*4键盘 自定义外设是SOPC系统灵活性的重要体现,是SOPC系统中极其重要的一种设计方法.在大量的数据需要处理时,利用自定义外设由具体的硬件来实现,可以极大程度的提高系统运行的速度,同时便于系统的模块化与集成,是SOPC系统设计的重中之重!!! 在设计自定义外设之前,一定要知道外围电路的工作原理,也就是自定义的外设的时序.逻辑一定要根据具体的硬件电路来设计.其原图在前一篇Verilog HDL 4*4矩阵键

Android实训案例(九)——答题系统的思绪,自己设计一个题库的体验,一个思路清晰的答题软件制作过程

Android实训案例(九)--答题系统的思绪,自己设计一个题库的体验,一个思路清晰的答题软件制作过程 项目也是偷师的,决心研究一下数据库.所以写的还是很详细的,各位看官,耐着性子看完,实现结果不重要,思路一定要清晰,我们做一个简单的项目,所以也就设计的比较简陋了,首先新建一个项目--AnswerSystem 一.实现项目框架 主页面就是一个问题,四个答案,还有一个正确答案,最后就是翻页了,正确答案默认是隐藏的,所以我们的layout_mian.xml是这样实现的 <?xml version=&qu

关于软件设计的一个问题

问题描述 关于软件设计的一个问题 要求是这样的: 要实现一个程序X定时从第三方获取数据并存储,并且我自己的程序A也可以通过此程序X从第三方主动获取需要的数据,这个程序X应该用什么实现? windows service可以么? 解决方案 1.定时程序通过windows的service来定时同步数据 2.程序A通过自己的业务接口去第三方系统获取数据,不要和定时程序公用.如果你的定时程序也是在程序A中,则你可以公用相同的代码,否则还是单独使用各自的代码. 至于如何同步数据,可以通过sockete.ht

《挖掘管理价值:企业软件项目管理实战》一2.4 软件设计过程

2.4 软件设计过程 挖掘管理价值:企业软件项目管理实战 软件设计是根据需求的内容,运用计算机理论.技术和工具将其合理地.有机地.具体地转化为功能,并演示其实现的方法.过程和结果.设计人员在理解了用户的需求之后,首先在自己的脑海中会有一个大致的概念和思路,然后考虑如何去实现这些功能,当然这需要一定的专业知识和实践经验.这里就不阐述软件或数据库设计的理论知识了,而重点介绍如何将设计人员脑子里对软件的设计和理解反映到文字.图形和流程上,使得用户可以了解计算机是如何实现他们的需求的.我们用图 2-9

了解LabVIEW FPGA和软件设计射频仪器的优势所在

概览 无线设备的数量.通信标准的多样性,以及调制方案的复杂度,每一年都在不断增加.而随着每一代新技术的诞生,由于使用传统技术测试无线设备,需要大量更复杂的测试设备,其成本也在不断提高.    使用虚拟(软件)仪器与模块化I/O相结合是一种最小化硬件成本并减少测试时间的方法.软件设计仪器的新方法使得射频测试工程师无需凭借自定义或特殊标准的仪器,就能以多个数量级的幅度减少测试时间.   阅读此文可以帮助您了解如何使用NI LabVIEW FPGA来设计和自定义您的射频仪器,以及通过软件设计的仪器能为

Win10怎么自定义文件图标?Win10系统自定义桌面图标的方法

Windows美化之路让好多用户趋之若鹜,自定义桌面图标也不能幸免,正常情况下,桌面图标是琳琅满目的,五颜六色看起来比较杂,很多用户不喜欢系统图标,这些图标将被统一颜色或统一风格的图片所代替,而这些图标都是网友自己设计或网络下载的ico后缀图标文件.下面小编就给大家带来Win10系统自定义桌面图标的方法,一起来看看吧. 操作方法: 右击文件夹,选择属性. 2.在自定义选项卡中,点击更改图标. 3.选择列表中的图标,或自主选择图标. 4.点击确定,完成. 以上便是关于Win10系统自定义文件图标的

如何写软件设计文档

软件设计的不同模型:瀑布式.快速原型法以及迭代式 自从1968年提出"软件工程"概念以来,软件开发领域对于借鉴传统工程的原则.方法,以提高质量.降低成本的探索就从未停止过.而在这个过程中,提出了许多不同的软件开发模型,典型的有:瀑布式,快速原型法,以及迭代式开发等. 瀑布式模型 是由W.W.Royce在1970年最初提出的软件开发模型,在瀑布模型中,开发被认为是按照需求分析,设计,实现,测试 (确认), 集成,和维护顺序的进行. 快速原型法 快速原型模型的第一步是建造一个快速原型,实现

从一个圈套For循环来谈软件设计[原创]

设计|循环|原创 从一个圈套For循环来谈软件设计 武汉华中师范大学信管系 谢刚 摘要:就自己的一次实际经历来谈谈软件设计过程中应该注意的一些细节 关键字:软件设计 需求分析      前段时间,跟外面公司设计一个MIS系统(使用工具是PB8.0+MSSQL),是一个关于安全生产的.为了体现我们设计人员的高质量服务,我在<需求说明>之外又帮他们设计了一个功能,就是:在每次这个功能窗口打开时,到数据库中去自动检测看看有没有冲突数据:也就是说,两个一模一样的器材是否被安装了到了两个不同的机器上.这

苹果mac系统下的办公软件

Osx 系统下的办公软件 苹果平台下的办公软件的制作公司可谓阵容强大.大名鼎鼎的微软,除了为自己的Windows平台制作office系列以外,只有为苹果的osx 系统上量身定作office.而且一而再再二三的更新,从最初的officeX到最新的office2008.无论在功能还是界面上,无论是兼容性和流畅度,无一不个大家带来惊喜.苹果公司自己制作的iWork系列,虽然只历经两代,可是表现不俗,隐约有超越office的趋势,无论是界面的简洁性,还是制作的高效性,都是胜人一筹,更可喜的是在最新的iW