新人技術者のためのロジカル・シンキング入門(6) ―― ハードウェア基礎の基礎
【2】ソフト技術者のための「クロック」と「リセット」(1/2)
クロックの供給には次の三つの手順を踏みます(図5).
図5 回路へクロックを供給する方法
図の右端のデバイスにクロックを供給するまでがどのような設定かを考える.大まかにいうと,クロック・ソースを決めて分周率を与えればクロックは供給される.クロック線そのものがつながっていないこと(ジャンパ・ピンが外れているなど)もあるので注意.
- クロック・ソースを決める
- 分周率を決める
- クロックをイネーブルする
クロックの配分が複雑で,いくつもの分周器やマルチプレクサによる選択を介す場合でも,基本的な考えかたは変わりません.
あたりまえのことですが,ディジタル回路はクロックが供給されないと動きません注1.このあまりにも基本的な事がらをソフトウェア技術者は忘れている,というより知らない事すらあります(恥ずかしながら,筆者も昔はそうだった...).
ソフトウェアによる回路の設定がいかに正しくても,クロックを供給する配線がつながっていなければ(例えば,ジャンパ・ピンが外れているなど)回路は動きません.クロックの設定が必要かどうかか,必要だとしたらどのレジスタを設定する必要があるのか,ということを最初に確認する必要があります.
● ソフト技術者が知っておくべきリセットに関する注意点
リセットは回路の中にあるフリップフロップを初期化する処理です(図6).ソフトウェア的には「スタティック変数の初期化」といってもいいでしょう.ハードウェア特有の話としては以下の1)~4)のようなものがあります.
図6 「リセット」と「リリース」
「リセット」してフリップフロップを初期化した後に「リリース」する.両者を手動で行う場合,リセット中に初期設定をすませてリリースする.リセットは1クロックで終わるとは限らないため,wait(待機)処理が必要となることが多い.
1)リセットの後にリリースが必要
リセット信号は,通常の信号線と極性が逆(アクティブL;信号が'0'のときON)のケースが多いです.C言語で書くと,図7のいちばん上のパスがリセット処理のイメージです.
図7 「リセット」と「イネーブル」
図の"reset"と"enable"の違いに注意.resetはほんとうに各フリップフロップを初期化するものだが,enableは単に通常の処理を止めるだけ.マニュアルをよく読んで確認すること.さらに,部分的にリセットするだけの信号線もあるので注意.
リセット処理が終わり,信号が'1'に戻ると(リリースされると)通常の処理が開始されるので,その間に必要な初期設定を行うことになります.
tag: 技術教育