首页 > 移动平台 > 详细

Avalon总线的地址对齐与NIOS编程

时间:2016-01-27 21:26:40      阅读:185      评论:0      收藏:0      [点我收藏+]

首先关于地址对齐的概念我不详述了,大家可以参考这篇文章:Avalon总线的地址对齐:Dynamic Addressing和Native Addressing

假设我们定制了一个外设,数据宽度是32位,地址是2位。如果我们想让地址线干点其他的事,而不是传地址,例如:

1 if(cs&wr)
2 begin
3 case(addr)
4     2b00:  //自定义
5     2b01:  //自定义
6 endcase
7 end

那在Nios EDS中,如何确定addr呢?也就是说我们使用IOWR_32DIRECT(BASE, OFFSET, DATA)时,怎么确定OFFSET?

相信大家已经想到答案了,答案其实很简单:OFFSET为0x00对应addr为2‘b00,OFFSET为0x04对应addr为2‘b01,OFFSET为0x08对应addr为2‘b10,OFFSET为0x0C对应addr为2‘b11。

其他数据宽度也是一样,假设数据宽度是8位,地址是2位,IOWR_32DIRECT(BASE, 0x00, DATA)就是对应addr的2‘b00,IOWR_32DIRECT(BASE, 0x01, DATA)就是对应addr的2‘b01,其余类推即可。

还有一篇文章大家也可以参考一下:理解Avalon总线的静态地址对齐与动态地址对齐

Avalon总线的地址对齐与NIOS编程

原文:http://www.cnblogs.com/fimwest/p/5164308.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!