网站大量收购闲置独家精品文档,联系QQ:2885784924

利用NIOSⅡ处理器构建节省成本嵌入式系统.docVIP

利用NIOSⅡ处理器构建节省成本嵌入式系统.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
利用NIOSⅡ处理器构建节省成本嵌入式系统

利用NIOSⅡ处理器构建节省成本嵌入式系统   NIOS Ⅱ嵌入式处理器是用于FPGA的可配置的RISC处理器,其易用性和灵活性使2成为世界上最流行的嵌入式处理器之一。   NIOS Ⅱ嵌入式处理器经常与其他嵌入式处理器一起配合使用。如果NIOS Ⅱ处理器程序比较小,可以将NIOS Ⅱ处理器程序存放在FPGA内部的ROM/RAM中。但是FPGA内部的存储器资源通常都很宝贵,不能用来存放应用程序。在这种情况下,要为NIOSII处理器和外置处理器都配置Flash闪存,这种设计符合常规,但是增加系统成本,还增加单板面积。   本文介绍一种更好的设计方案,可以省掉NIOS Ⅱ处理器系统的闪存,从而降低系统成本。这种方案把NIOS Ⅱ处理器和外置处理器通过某种通信端口连接,如串口、I2c等;然后在FPGA内部存放一个很小的系统引导模块;NIOSⅡ处理器系统启动后执行引导模块;引导模块再通过通信端口,从外置处理器取得应用程序代码;应用程序加载完成后,NIOS Ⅱ处理器再执行应用程序。系统引导模块专门针对大小做了优化,占用的ROM空间很小,只有2KB左右,所以基本不会浪费FPGA的资源。对应地,外置处理器也要运行一段代码,将NIOS Ⅱ处理器的代码从自己的存储空间读出,传送给NIOS Ⅱ处理器,一般称这段代码为加载服务器。   嵌入式系统中,最常用的低成本通信端口是串口,所以先用串口实现了无闪存的NIOS Ⅱ处理器系统。在设计中,兼顾了代码在不同类型通信端口上的可移植性,保证片上系统引导模块和加载服务器可以容易地移植到其他类型的通信端口,如I2C等。   设计时,为了使片上系统引导模块最小,尽量简化片上系统引导模块。如果可能,在加载服务器中实现尽量多的功能。   片上系统引导模块和加载服务器之间使用简单、可靠的握手协议。先由加载服务器向NIOS Ⅱ嵌入式处理器发送引导开始(Boot start)标志,NIOS Ⅱ处理器收到开始标志后,发送确认消息。加载服务器接着就将NIOS Ⅱ处理器的应用程序分成帧发送。NIOS Ⅱ处理器收到应用程序的数据帧后,也发送确认消息,再将数据存放到对应的内存位置。应用程序一股分成多个帧发送,所以加载服务器和NIOS Ⅱ处理器片上系统引导模块在处理应用程序数据帧时可能需要循环多次。发送完应用程序后,加载服务器再引导结束(Boot Completion)标志;NIOS Ⅱ处理器接收到引导结束(Boot Completion)标志后,发送确认,然后跳转到应用程序入口处开始执行应用程序。如果加载服务器不能及时收到NIOS Ⅱ处理器引导模块的确认消息,将重发数据;NIOS Ⅱ处理器引导模块也可以主动发送重传消息,以节省加载服务器的等待时间。如果有必要,加载服务器还可以发送命令,重新启动整个加载流程。引导模块和加载服务器的握手协议的处理过程如图2所示。   不同的应用程序可能放在地址不同的内存区域;在同一个应用程序中,不同的代码和数据段也可能放在地址不同的内存区域。所以应用程序的数据帧中应该含有数据的存放位置。不同的应用程序,入口地址可能不一样,所以引导模块需要从加载服务器得到应用程序的入口地址。为了简化设计,规定第一个数据帧的地址就是应用程序的入口地址,即第一个数据帧必须是应用程序的起始代码。   为了保证数据的可靠性,还要校验数据的正确性。所以每帧的最后两个字节,是数据的校验和。综合考虑,NIOSⅡ处理器片上引导模块采用了如下的数据帧格式。   为了提高效率,应用程序的数据使用了二进制数据传输。如果采用S-Record中的字符传送,二进制的64B数据需要128B来编码。加上标志、目标地址等数据,需要在串口中传输的数据总共有140B,效率只有46%。而采用二进制数据传输,需要在串口中传输的数据只有76B,效率达到84%。考虑到串口等通信接口传输速率本来就偏低,所以NIOS Ⅱ处理器片上加载模块在数据帧中使用了二进制格式的数据。为了提高效率,可以增加数据帧中应用程序数据的长度。如果应用程序数据的长度是256B,效率可以达到95.5%。   加载服务器到引导模块方向的数据量很大。为了使NIOS Ⅱ处理器从巨大的数据流中正确识别出各种标志,使用32位的标志。引导模块到加载服务器方向只要确认信息或者重传消息,所以用8位的标志即可。发送时,所有数据都是高位字节先发送,低位字节后发送。如果某个数据帧中的目标地址是0则在串口上依次发送的是00、10、20、30。   为了提高可移植性,加载服务器和引导模块的代码中都使用接口无关的通信接口。加载服务器和引导模块都使用的接口有loader-comm-init、loader-comm-rxchar、loader_comm_txchar。另外,加载服务

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档