「組み込み」ならではの基礎知識 ――スタートアップ・ルーチンからハードウェアまで
7 エッジ・トリガとレベル・センス
組み込み製品は,外部から入力される信号に反応して機能します.信号には,アナログ信号とディジタル信号がありますが,ここではディジタル信号をどのようにして取り扱うかを説明します.
これは,ハードウェア開発者と打ち合わせをするときに必須の基礎知識です.しっかり理解しておきましょう.
●ディジタル信号の波形が示すレベルとエッジ
ディジタル回路の信号波形を電圧と時間軸でとったものを図7-1に示します.ディジタル回路では,あるしきい値(スレッショルド)以上の電圧をハイ("H")レベル,あるしきい値以下の電圧をロー("L")レベルと言います.それぞれのレベルを検出することをレベル・センスと言います.
"L"レベルを「有効」であるとする使いかたを「アクティブ"L"」,"H"レベルを「有効」であるとする使いかたを「アクティブ"H"」と言います.例えば,"L"レベルになったときにLEDが点灯したり,キーが押されたと判定したりする場合,LEDやキー入力はアクティブ"L"で接続されています.CMOS論理回路ではアクティブ"L"が常用されます.その理由は,"L"のときの出力が"H"のときの出力よりも大きいことや,入力回路でプルアップ抵抗(標準レベルを"H"にするための抵抗)が付いていると"L"になったときだけ電流が流れて節電になることなど,メリットが多いからです.
ソフトウェア技術者は,レベルの検出方法を特に意識する必要はありません.ハードウェアがレベルを判定するので,ポートから判定結果としての値を入力するだけです.
導線を伝わる信号の状態が変わるには,時間がある程度かかります.信号波形における信号の変わり目をエッジと呼び,"H"レベルから"L"レベルに変わるところを立ち下がりエッジ,"L"レベルから"H"レベルに変わるところを立ち上がりエッジと言います.このエッジをある動作の引き金にすることをエッジ・トリガといいます.
エッジ・トリガの実現方法には2通りあります.一つは入力ポートを使って,ソフトウェアで「"H"から"L"」,「"L"から"H"」の変化点を探す方法です.この方法はポーリングで実現するため,命令実行分の遅れが出ます.もう一つは,割り込み信号としてハードウェアで信号の変化点を検出させる方法です.
〔図7-1〕ディジタル信号のレベルとエッジ
あるしきい値以上をハイ("H")レベル,あるしきい値以下をロー("L")レベルという.また,"H"レベルから"L"レベルになるときを立ち下がりエッジ,"L"レベルから"H"レベルになるときを立ち上がりエッジという.