[IC設計] 在電路中設計 software reset 機制
reset 機制在系統中是一大學問
可以參考這篇
何謂同步reset和非同步reset,使用Asynchronous reset整合global reset、scan reset以及software reset
本篇要講的是 software reset
這裡雖然說是 software
但是是在說明如何用硬體實現其電路功能
software reset 必須透過 control register 來 trigger
透過 CPU 將 CSR 設定成 1 之後
這個訊後將會接到 reset controller module
這個 reset module 內部有許多 don't touch 電路
透過 and 或是 or 電路將 module_reset 訊號的訊號拉成0
藉此來以發對應 module 的 D-flip-flop reset
通常我們不會將csr flip-flop使用這裡的module_reset
要不然許多設定都會被清掉了
可以針對之後要做 software reset的電路來接上 module_reset 即可
才不會因此造成功能錯誤
software reset 可能在某些特殊清況被使用
或是一些不可預期的錯誤但是不能重新開機
所以只能透過 cpu來觸發這種reset
在 reset control module內可以設計一個 counter
可能是10個cycle之類的
一旦 csr software reset 被拉起來
counter就會開始計數
數到10的時候
就會拉起一個cycle的reset done訊號回去給csr
用這個pulse將 software reset csr 清回0
因此 CPU 就可以對此 csr 進行 polling 來得知硬體電路是否已經完成 software reset