对于一个FPGA硬件工程师来说,经常会遇到FPGA和DDR布线,太密,难以走通的问题,实际上,有一些办法可以让我们走线更加完美,比如对于DDR D0~D7 D8~D15 D16~D24 D25~D31 一共4组数据,不仅这4组数据之间可以调换顺序,而且比如数据D0~D7也是可以调换顺序,这样布线的时候就可以最大优化布线路径,大大减少工作量,提高布线效率。那么对于有些人来说,不知道为什么可以调换。
实际上对于DDR存储器,比如有地址32bit ,没有改变组间顺序的,我们写入十六进制A B C D 那么自然我们读出是A B C D 那么 如果把组间换下,比如换完后我们的时序变成了 D8~D15 D16~D24 D25~D31 D0~D7 把 D0~D7 接到了DDR的D24~D31,那么我们写进去的数据那么我们写入 A B C D 到DDR 后,DDR的储存空间的排列顺序是B C D A 反正数据是写进去了,现在我们关心的是读出来后的情况,显然读出来后数据又恢复成A B C D了。
同理我们对于组内,D0~D7 顺序写入二进制,0000_1111, 如果我们把D0 和D7 顺序反下,实际上保存到DDR地址空间的数据为,1000_1110,当我们读出来后,我们仍然只关系读出来的和写进去的是否一致,显然我们读出来的,还是0000_1111