Memory 无法使用高位MSB地址位读/写SRAM

Memory 无法使用高位MSB地址位读/写SRAM,memory,interface,embedded,psoc,Memory,Interface,Embedded,Psoc,我使用的是一个具有16位数据和18位地址的外部sram(256kbx16b),当我使用msb(addr位16和17)访问任何内容时,我无法读取/写入外部sram 访问任何不需要这些比特的东西(任何具有addr比特0-15的东西)都可以正常工作 我发现,当我断开16和17 addr位的连接并将其连接到高或低位置时,它工作正常,但当这些位连接到PSoC 5lp并由emif组件(外部内存接口)选择时,它会显示一个随机静态值,我期待一组特定的变化值 我还验证了来自psoc的地址位16和17的信号,它们的

我使用的是一个具有16位数据和18位地址的外部sram(256kbx16b),当我使用msb(addr位16和17)访问任何内容时,我无法读取/写入外部sram

访问任何不需要这些比特的东西(任何具有addr比特0-15的东西)都可以正常工作

我发现,当我断开16和17 addr位的连接并将其连接到高或低位置时,它工作正常,但当这些位连接到PSoC 5lp并由emif组件(外部内存接口)选择时,它会显示一个随机静态值,我期待一组特定的变化值

我还验证了来自psoc的地址位16和17的信号,它们的行为似乎与其他地址位的行为一样。如果我断开16和17线,然后分别插入,psoc上寻址第16位或第17位的任何端口都会冻结lcd上的数据

到ext sram的传输是通过dma完成的,而读取是直接使用指向内存的指针完成的,这对于以前的sram来说效果很好,尽管它们是1Mbx8b

这在gpio引脚之间是一致的

我使用的是512kbx16 sram:CY7C1041D

sram是异步的

同样,PSoC的读/写操作适用于sram上不使用上2个msb寻址的所有地址


有人知道发生了什么吗?

2^18是256k。它真的是512kx16b还是256kx16b?这个问题似乎更适合电气工程堆栈交换。并在发布时包含原理图的相关部分。只需在谷歌上搜索零件号即可显示为256Kx16。但您应该仍然能够控制所有19个地址位。因此,也许这不是你真正拥有的部分。一个非常简单的测试是做一个内存测试,在这个测试中,您用每个位置的地址或地址的一个版本填充每个位置,这样地址就不会部分滚动,所以地址>>2。然后在填充后,把它读回来,看看它是否在某个地方滚动,表明你没有你想象的那么多内存。当然,仔细检查你的线路。此外,如果PSoC在大小上有一些配置,请检查其是否正确和/或是否以某种方式对该空间的访问进行了倾斜或窗口化,以确保您在PSoC内正确访问该空间。基本上,对单次访问的作用域进行测试,以确保您认为呈现的地址位是总线上显示的地址位。您是在每个板上都看到了这一点,还是只有一个板显示了这一问题。无论是软件问题、硬件设计问题还是制造问题,试着将其归结为其中之一。