1.每个地址空间存一个字节,这个在哪里能找到出处??(现在看地址变化的确是这样的)
如果是4位的数据线,那么一个地址空间只是用一半,空出四位吗??
2.DM是一定要使用的吗?mig生成的example_design是把DM全都置零的,我的设计里面也是全置零,似乎没有影响,所以什么时候用DM??
非常感谢您的回复!

1.芯片资料上会写明,4位的数据线我就不太清楚了,没看过4位的芯片资料
2.DM是0的时候代表这一位对应的字节是有效数据,比如说16位数:AABBCCDD,DM为:0011,则有效数据为:AABB(至于那两个被屏蔽的数据,可能是写FF代替,这个我没验证过)。
3.地址映射应该是ddr2的local_address=local_bank & local_row & local_col,我用的是altera的,没发现row和col是复用的,但是做col用的时候,要注意本地数据总线是2倍ddr2的数据总线,需要local_address(8 downto 0)<=local_col(9 downto 1),你可以看下是不是这个原因,当地址位的时候每一位都是有用的。
2.DM是0的时候代表这一位对应的字节是有效数据,比如说16位数:AABBCCDD,DM为:0011,则有效数据为:AABB(至于那两个被屏蔽的数据,可能是写FF代替,这个我没验证过)。
3.地址映射应该是ddr2的local_address=local_bank & local_row & local_col,我用的是altera的,没发现row和col是复用的,但是做col用的时候,要注意本地数据总线是2倍ddr2的数据总线,需要local_address(8 downto 0)<=local_col(9 downto 1),你可以看下是不是这个原因,当地址位的时候每一位都是有用的。

我现在理解的是,如果DM全置0,就是所有数据都有效,那么单沿采高16位还是低16位都可以采到
example_design里面就是直接全置0,我的程序现在全置0没有发现高低16位数据有问题,还没有试过置1的情况
我没用过altera,但是ddr2芯片应该是相同的,我用的这个16数据线1g密度的ddr2芯片地址a就只有13位,bank有3位,所以10位的col和13位的row肯定要复用这13位的a!
ug416给出了用户地址和ddr2地址的映射关系,就我用的这个ddr2芯片,和你说的是一样的,但是没有提复用的事,我是看网上别人的提问看到的,后来经仿真发现,当地址超过10位的col所能表达的范围以后,再写地址的时候,会先出现应该x00000001或者x0000002这样一个多余的数,我理解,这是把第一行或者第几行给有效了,好像是用的active这个词!
我的问题现在就是要么写的时候把第一行多谢了一次,要么就是读的时候多读了一次,
或者第一行是费数
大部分震都没有问题,某些各别帧出现上面的问题
感觉应该有人遇到过类似的问题吧
请大家赐教!!!
example_design里面就是直接全置0,我的程序现在全置0没有发现高低16位数据有问题,还没有试过置1的情况
我没用过altera,但是ddr2芯片应该是相同的,我用的这个16数据线1g密度的ddr2芯片地址a就只有13位,bank有3位,所以10位的col和13位的row肯定要复用这13位的a!
ug416给出了用户地址和ddr2地址的映射关系,就我用的这个ddr2芯片,和你说的是一样的,但是没有提复用的事,我是看网上别人的提问看到的,后来经仿真发现,当地址超过10位的col所能表达的范围以后,再写地址的时候,会先出现应该x00000001或者x0000002这样一个多余的数,我理解,这是把第一行或者第几行给有效了,好像是用的active这个词!
我的问题现在就是要么写的时候把第一行多谢了一次,要么就是读的时候多读了一次,
或者第一行是费数
大部分震都没有问题,某些各别帧出现上面的问题
感觉应该有人遇到过类似的问题吧
请大家赐教!!!