在一个项目中,有fpga与单片机的交互。FPGA做的比较灵活,即支持与8位的单片机数据交互,又支持
与16位的数据交互。
这一次,要解决的问题是fpga与一款ARM的交互。这款arm的特点是:数据总线有16位。地址却支持8位
寻址。因此芯片TD上一再强调将A0接地,A1接到外部cpu的A0上,将将A1直接写成AD0.
因此我们想着将arm的AD0接到fpga的A0上。这样fpga对arm一次可以进行16位寻址。
实现上,不是这样的。fpga要与arm的地址一一对应。因为fpga也支持8位的数据总线,当它支持16位数据
总线时A0是没有用的。实际上应该是fpga的A1接到arm的AD0上。
刚开始我们发现,arm的小板已经做错了(arm的AD0接到fpga的A0上),就考虑着将fpga上地址总体向右偏
移一位,将fpga的A1偏移到A0上。可是还是不行。
因为FPGA上的A0在数据总线为16位时,总是接地,A0处的地址是偏移不到的。
最终只能通过修改FPGA内部的映射程序或改板来解决。