问题描述
我一直非常成功地将AT28C256用作Z80项目的EEPROM“ ROM”。由于可以使用/ WE引脚将AT28C256编程为5V,因此我在考虑将其用作非易失性SRAM的形式,而不是添加其他芯片。
是的,AT28C256的大小仅为32kB,所以我没有在Z80上使用整个16位地址空间-但我想知道是否可行?
我可以将AT80C256上的/ WE与Z80上的/ MREQ和/ WR行一起使用吗?还是我错过了什么?
然后我可以将堆栈指针(SP)设置为32k边界,而不是通常的0xFFFF。
解决方法
您可以使用像RAM这样的EEPROM,,但前提是要考虑到其行为。
您可以简单地连接:
- Z80- / MREQ到EEPROM- / CE,但是您需要对此进行门控
- Z80- / WR到EEPROM- / WE
- Z80- / RD到EEPROM- / OE
注意事项,有关详细信息,请查阅数据表:
-
如果您写入一个字节(或使用页面写入算法),则EEPROM在读取后将 不 输出存储的值,直到定时的写入周期已经过去。
-
写入周期约为几毫秒。
-
EEPROM可能会在几万次写入周期后失败(谢谢Stefan Paul Noack)。
由于第1点,您不能将其用于更改芯片内容的程序。
由于第2点,您不能将其用于堆栈或需要快速存储和检索的任何其他数据。
但是,您可以将其用于应用程序的数据。但是您将需要另一个内存才能运行程序。
如果您的程序需要堆栈或其他变量来快速写入,则将需要额外的RAM。 (注意:我记得一个Z80应用程序通过一个简单的DRAM实现了打印机队列,仅将CPU的寄存器用作程序变量,而仅将DRAM用于缓冲数据。)
要使用多个芯片作为存储器,您将需要根据它们的地址范围对这些存储器的/ CE引脚进行门控。