新人技術者のためのロジカル・シンキング入門(6) ―― ハードウェア基礎の基礎
【2】ソフト技術者のための「クロック」と「リセット」(2/2)
2)リセットは1クロック分とは限らない
リセット処理は,かならずしも1クロックで終わるとは限らないことに注意が必要です.回路内のフリップフロップをすべて初期化するのに1クロックですむとは限らないからです(大きな回路の場合,リセットですべてのフリップフロップが初期化されるわけではない).
したがって,「リセット」してから「リリース」するまでの間にwait(待機)処理が必要なことがあります.例えば,「リセット後,リリースまで2クロック分のwaitが必要」とハードウェアの仕様書に書かれているのに気づかずにプログラムを書いてしまった場合,そのハードウェアが未定義の動作をしてしまうことがあるので注意が必要です.
3)リセット後のリリースが自動的になされることも
リリースの設定はプログラムで明示的に設定する設計もあれば,リセット後に回路が自動的に戻してくれる場合もあります.リセット後のリリースが回路で自動的に行われる場合,2)でお話ししたwaitは,リリースの設定レジスタの値が'0'から'1'に戻るのを待つ処理に変わります.
4)イネーブルと区別
リセットはイネーブル信号と区別する必要があります.両者には図7に示したような違いがあります.
リセットは内部のフリップフロップに保存されているステート情報を初期値に戻す信号のことですが,イネーブルは単に通常の処理を行うかどうかを決めるための信号です.
ディセーブル→初期化→イネーブルというシーケンスで回路の初期設定を行うことがあります.この場合のディセーブルはあくまで回路の動作を止めたにすぎないので,注意が必要です.仕様書をよく読んで,自分が設定しようとしている信号がただのイネーブルなのかリセットなのかを確認しましょう.
両者を組み合わせて使う必要がある場合などは,例えばディセーブル→リセット→初期化→イネーブルというような使いかたになると思います.
tag: 技術教育