在nios的使用中,我们往往要用到自定义外设,然后通过avalon交换架构和niosii进行通信。
avalon总线,其实是一种交换架构的协议,在自定义外设挂在avalon总线上时,一定要注意地址对齐。
avalon总线要求自定义外设数据位宽必须为8、16、32,这样如果使用位宽为32,那么就不需要考虑对齐了。 如果使用数据位宽为8,也就是外设数据总线位宽是8,而nios数据总线位宽是32,这样就要考虑地址对齐了。这个地址对齐就是内存地址对齐。在nios写数据到从外设时,由于位宽不对等,nios会执行4次写操作,将一个32位数分成4个8位数据写到从外设。nios读取从外设数据时同样道理,在读使能有效后的下一个时钟从外设必须将数据放到总线上,而且应该是4个数据,如果只有一个字节有效,其他3个字节补零即可。
举个例子,在qsys下挂外设时,通常系统分配好了内存映射地址,比如0x3322,那么外设的地址就从这里开始,对于8位数据位宽,那么连续4个数据在内存中存储的地址分别是0x3322,0x3323,0x3320,0x3321,这个是由内存决定的。调试过sdram的朋友应该知道。特别是nios读取外设数据的时候,很容易出错。比如当nios读数据时,外设的连续4个数据是0xaa,0x00,0x00,0x00,也就是说只有0xaa是有效的,那么根据上述地址,根据小端存储方式,地址对应的数据为0x3322-》0xaa,0x3323-》0x00,0x3320-》0x00,0x3321-》0x00,这样我们在nios中操作的时候,由于nios是32位的,地址对齐的是0x3320,所以就出现了读取数据的错误。 如果使用位宽是16位的,那么nios读写外设的时候会产生两次读写过程。同样和上面一样,也要注意地址对齐问题。
华为MateX怎么样 值不值得买
物联网在日常场景中的应用实例方案
英特尔会步诺基亚后尘?近期面临五大挑战
JAE的KW03系列CHAdeMO连接器介绍
华为P10最新消息:荣耀9已正式发布,华为P10一夜之间直降500元,买荣耀9还是华为P10?
浅谈AVALON总线的应用及要求
上海消保委点名批评微信
谷景8mH min 磁环电感应用于大功率电源中
压力传感器在使用过程中该如何防护?
永磁同步电机工作原理是什么
新松机器人东北地区产教融合示范基地正式揭牌
干货分享:火线、零线、地线的区分与判断
6GHz对于实现5G愿景至关重要
发电侧无功成本与定价研究
沐渥告诉你智能氮气柜的优点有哪些!
华东理工大学校长带队赴嘉定区开展智能传感产业发展专题调研
锂离子电池是如何制造的 锂离子电池的发展潜力
高始兴解读智能语音,并对其未来做出预测
MMC卡SPI接口电路
电气成套柜如何进行布线安装?电气成套柜设计实例图解?