Avalon总线的地址对齐与NIOS编程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Avalon总线的地址对齐与NIOS编程相关的知识,希望对你有一定的参考价值。
首先关于地址对齐的概念我不详述了,大家可以参考这篇文章:Avalon总线的地址对齐:Dynamic Addressing和Native Addressing。
假设我们定制了一个外设,数据宽度是32位,地址是2位。如果我们想让地址线干点其他的事,而不是传地址,例如:
1 if(cs&wr) 2 begin 3 case(addr) 4 2‘b00: //自定义 5 2‘b01: //自定义 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编程的主要内容,如果未能解决你的问题,请参考以下文章
Avalon总线学习 ---Avalon Interface Specifications
nios中写字节怎么理解 void iic_write(alt_u8 dat) alt_u8 i, tmp; IOWR_ALTERA_AVALON_PIO_DIRECTION(SD