動手設計CPU連載——(19)Clock

前面我們介紹瞭寄存器,知道瞭控制數據進入的信號s和數據輸出的信號e,利用這兩個信號,通過總線就可以實現數據在不同寄存器之間的交流。CPU中寄存器很多,如何有效地控制協調這些s和e信號讓CPU正常運作起來呢?想一下,控制這些信號不就是在合適的實踐產生需要的1和0嗎,我們需要一個能恒定產生1和0振蕩的器件,然後可以利用邏輯門電路將其變換成我們需要的1和0輸出。

更進一步,e置1時,數據從寄存器中取出放到總線上,然後將s置1(此時,e仍然置1,否則會斷開,參見:動手設計CPU連載——(18)Tri-state Buffer – 電子創造力的文章 – 知乎 https://zhuanlan.zhihu.com/p/645310998),數據寫入相關的寄存器。由此看來,要控制數據的正確傳輸,必須要保證s置1的時候e是置1的。為此,我們可以構造如下電路,其中用到瞭一個JK觸發器,這個JK觸發器是直接從Logisim Evolution中調用的,當JK同時置1時,輸出端Q在輸入clk in上升沿觸發,在0和1之間切換。對JK觸發器不瞭解的,請查看另一個專欄文章:觸發器(The Flip-Flops) – 電子創造力的文章 – 知乎 https://zhuanlan.zhihu.com/p/646394098

感興趣的可以也看看:

鎖存器(Latches) – 電子創造力的文章 – 知乎 https://zhuanlan.zhihu.com/p/645613711

同步和異步時序電路——鎖存器和觸發器續 – 電子創造力的文章 – 知乎 https://zhuanlan.zhihu.com/p/646660686

The Clock

當輸入clk in在1和0之間來回切換時,其他的信號輸出如下:

The timing diagram

可以看出,s置1的時候,e始終置1,這就確保信號從總線上存取到寄存器的時候,總線上已經放瞭數據。封裝一下,如下圖所示。

The clock

赞(0)