如何实现非常简单的异步DRAM控制器?
我想知道如何构建一个简单的异步DRAM控制器。我有一些30针1MB SIMM 70ns DRAM(带奇偶校验的1Mx9)模块,我想在自制的复古计算机项目中使用。不幸的是,没有适用于他们的数据表,因此我一直在研究IBM 的Siemens HYM 91000S-70和“了解DRAM操作”。 我想要结束的基本界面是 / CS:输入,片选 读/写:读,不写 RDY:数据准备就绪时,输出为高 D:输入/输出,8位数据总线 答:在20位地址总线中 刷新似乎很简单,有几种方法可以解决问题。我应该能够使用任何旧计数器进行行地址跟踪,在CPU时钟低(在该特定芯片中不进行内存访问)的情况下,进行分布式(交织)纯RAS刷新(ROR)。我相信根据JEDEC的要求,至少每64ms刷新所有行(根据Seimens数据表每8ms刷新512,即标准的周期刷新为15.6us),所以这应该工作正常,如果遇到问题,我将发布另一个问题。我对获得简单,正确的阅读和确定以及确定我应该达到的速度更感兴趣。 首先,我将快速描述一下我认为它是如何工作的以及到目前为止我提出的潜在解决方案。 基本上,您将20位地址分成两半,其中一半用于列,另一半用于行。您先选通行地址,然后选列地址,如果/ CAS变为低电平时/ W为高电平,则为读操作,否则为写操作。如果是写操作,则此时数据必须已经在数据总线上。一段时间后,如果是读操作,则表明数据可用,或者如果是写操作,则表明数据已被写入。然后,需要在与直觉相反的“预充电”期间将/ RAS和/ CAS重新设置为高电平。这样就完成了循环。 因此,基本上,这是一个跨越多个状态的过渡,每个过渡之间存在特定的特定延迟。我将其列为“表”,该表按事务的每个阶段的持续时间进行索引: t(ASR)= 0 ns / RAS:H / CAS:H A0-9:RA / W:高 t(RAH)= 10 ns / RAS:L / CAS:H A0-9:RA / W:高 t(ASC)= 0纳秒 / RAS:L / CAS:H A0-9:CA / …