五、存储元件
D锁存器
st为0时无响应(不影响存储和输出),st为1时存储并输出d。
D触发器
其实就是引入了上升沿触发的锁存器。
时钟信号上升沿:若st=1将存储并输出d,st=0时输出不变。第一个上升沿前输出0。
时钟信号下降沿:输出不变。
实现的关键:一是用两个锁存器分别缓存输入和输出。二是如何读取上升沿,我利用了门延迟。
DFF(st, d, cl) = latch(cl, latch((st & ~cl) & cl, d))
对于第一个问题:内层的latch是输入缓存,在上升沿时将d存入并输出到外层latch;外层latch是输出缓存,时钟为1时就存储并输出。
对于第二个问题:注意到(st & ~cl) & cl,仅从逻辑层面考虑输出一定为0;但是由于门延迟的存在,括号内的&先被计算。当时钟信号为0,st & ~cl = st;如果遇到上升沿则在短时间内转换为1,此时刚好被外面的与门捕获到,故该表达式结果为st。
但是这个方案(13个与非门)并不是最简