在复刻 COSMAC ELF:芯片替换方案中,我曾提到尝试使用FRAM来替代COSMAC ELF中的RAM,这样程序和数据在断电后就不会丢失了。
我查阅了FM1608的芯片手册,注意到这样一段说明:

这意味着,在使用FRAM时,/CE引脚还承担着锁存地址的作用。如果/CE引脚一直保持接地状态,那么当地址线变化后,FRAM内部锁存的依然是旧地址,这显然会导致工作异常。
那么,原始的COSMAC ELF电路是怎样的呢?

从电路图中可以看到,RAM芯片2101的/CE引脚(第19脚)是直接接地的——这需要进行调整。
于是,我打开了CDP1802微处理器的手册,研究如何获取FRAM所需的/CE信号。解决这类时序问题,最好的方法就是分析时序图。先来看一张简化的时序图:

粗略一看,似乎可以使用TPA信号。但TPA的下降沿来得太早了,在那个时间点,地址总线上还是高8位地址。虽然TPB信号拉低时,地址线上正是我们需要的低8位地址,但此时读/写周期已接近尾声,同样不合适。
再来看看更详细的时序图(部分):

可以清楚地看到,直接使用TPA的下降沿确实为时过早。合适的时机应该是在TPA信号拉低之后,时钟(CLOCK)第一次出现上升沿的位置。在这个时刻将FRAM的/CE拉低,就能成功锁存地址总线上的低8位地址。
显然,仅靠组合逻辑数字电路已经无法实现这个功能,必须使用时序逻辑。好在解决方案并不复杂,使用一个D触发器就能完成:

使用Logisim-evolution软件进行仿真,一次成功!这就是我们需要的FRAM /CE信号波形。
在COSMAC ELF的原版电路中,只用到了一个D触发器。而74HC74芯片内部包含两个独立的D触发器,正好多出一个可以用于此处。非常完美!
相关往期文章:
对复古计算机架构和硬件设计感兴趣的朋友,欢迎在云栈社区交流探讨更多技术细节。
|