为什么单片机连接16BIT存储器时,错位相接

首先你要明白为什么地址先要错位接线

这个说起来有点复杂,不知这样说你明不明白
由于你的RAM是16bits为存储单元的
而从接线看, 你的单片机应该是以8bits为存储调度机制
这就是说
对于RAM来说 0地址有16bits,1地址也有16bits,每一个地址都是16bits
但对于单片机来说就不是这样了,他根本不知道RAM是16位这一回事,在他看来RAM的0地址只有8bits,1地址也是8bits
因此如果采用对齐方式接线(A0接A0,A1接A1)的话
当单片机向RAM写数据时,只写8位,但是RAM却不知道,却把16位写进来了(连接了16根数据线),这样会造成致命的错误

所以通常在这中存储机制不对应的存储器接线中,会使用错位接线
16bits是8bits的两倍,相当于左移1位, 所以单片机的A1就接到存储器的A0上
这样单片机发出的0或1地址就对应存储器的0地址,单片机发出的2或3地址均对应存储器的1地址(8位读写对应16位存储)

这样就可以保证16位存储

但是有些时候需要存储8位,那怎么办
这个时候就考A0结合BHE控制了

下图是关于这块芯片手册的相关部分
可以看出, 当单片机寻一个地址是奇数x的时候A0是高电平
则对应nLB若口为低
此时BHE若为低,则读/写要存储器中x>>1这个地址上的16bits数,同时屏蔽低电平

当单片机寻一个地址是奇数x的时候A0是低电平
则对应nLB若口为高
此时BHE若为低,则读/写要存储器中x>>1这个地址上的16bits数,同时屏蔽高电平
nLB若口为高
此时BHE若为低,则读/写要存储器中x>>1这个地址上的16bits数,不屏蔽

以上的操作只是为了方便地对8bits数或16bits数进行方便的读写,而不需要进行硬件的修改

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值