リセット
リセットとは、電子機器や組込みシステム、デジタル回路において動作状態を既知の初期状態へ強制的に戻す処理である。電源投入時の不定状態からの立ち上げ、異常検出時の回復、ソフトウェア更新後の再始動など、信頼性と安全性を担保する中心概念である。マイクロコントローラ(MCU)、FPGA、ASIC、アナログ混在回路の別を問わず、リセットの設計は電源品質、クロック安定、シーケンス制御、フェイルセーフの各要件と不可分である。
リセットの基本機能と効果
リセットは内部フリップフロップやレジスタの初期値を規定し、プログラムカウンタをリセットベクタへ導く。結果としてスタックや周辺回路の初期化コードが確実に実行され、システムは規定のブート手順に復帰する。電気的には、リセット信号が一定時間アサート(多くはアクティブLow)され、解除後にクロックが安定していることが望まれる。解除(デアサート)のタイミングが不適切だとメタスタビリティや不完全初期化が発生し、再現困難な不具合につながる。
リセットの分類
- パワーオンリセット(POR):電源立ち上がりを検出して自動的に発行する。
- 外部リセット:ボタンや外部監視ICからの入力で強制初期化する。
- ウォッチドッグリセット:ソフトウェアハングを検知して再始動する。
- ブラウンアウトリセット(BOR):電源電圧低下(ディップ)を検出して保護する。
- ソフトリセット:レジスタ操作や命令により論理的に再始動する(ウォームリセット)。
同期/非同期リセットの扱い
フリップフロップに対するリセット入力は同期式と非同期式がある。非同期リセットは即時性に優れるが、解除はクロックに同期させないとハザードやメタスタビリティを招く。一方、同期リセットはタイミング解析に馴染みゲーティング容易だが、クロック停止時は作用しない。実装では「非同期アサート・同期デアサート」を推奨し、解除縁を二段FFで同期化するのが定石である。
電源監視とリセット保持時間
RC遅延のみのPORは温度・公差に弱く、近年はスーパーバイザICを用いてしきい値精度と保持時間(tRST)を保証する。保持時間は電源レギュレータの立ち上がり、PLLロック時間、外部メモリの初期化時間を覆う必要がある。複数電源レール(例:1.0V/1.8V/3.3V)を持つSoCでは、アナログ→デジタル→I/Oの順にレール‐グッドを確認し、最後にグローバルリセット解除とするシーケンスが一般的である。
リセットベクタとブートシーケンス
MCUではリセット解除後にベクタテーブル最上位の初期SP/PCを読み、初期化ルーチンへ分岐する。キャッシュ無効化、BSS領域クリア、クロック源切替(内部RC→外部水晶→PLL)、周辺の安全初期化を経てmainへ入る。ブートROM/二次ブートローダの切替がある場合、リセット原因レジスタ(RST cause)で直前の要因(POR/BOR/WDT/外部)を読み取り、回復手順(不整合フラッシュのロールバック等)を分岐させる。
機械式入力とノイズ対策
外部スイッチによるリセットボタンはチャタリングを伴うため、RC+シュミットトリガで整形し、EMIの強い環境ではESD保護と適切なプルアップ/プルダウンを施す。長配線ではグリッチ抑制のためにデジタルフィルタやミニマムパルス幅検出を入れ、誤動作による不要リセットを防ぐ。
FPGA/ASICにおける初期化戦略
FPGAはコンフィグ後に初期値属性(INIT)を持つため、グローバルリセット配線(巨大ファンアウト)を縮減し、ローカルイネーブルによる状態遷移開始で代替する手法がある。静的タイミング解析( STA )ではリセット除外パスの扱いと、解除同期化の挿入位置が品質(DFT/ATPG含む)に直結する。
ソフトリセットとウォーム起動
OS搭載系ではリセットでも保持すべきコンテキスト(バックアップSRAM、RTC、レジューム用DRAM)を定義する。ウォーム起動ではデバイスドライバの再初期化順序が重要で、依存関係(電源/クロック/バス)を満たしつつ短いダウンタイムで復帰させる。ファーム更新時はA/B領域とロールバックカウンタを組み合わせ、WDTによる自動回復を併用する。
安全規格とフェイルセーフ
ISO 26262やIEC 61508などでは、危険状態検知時に安全側へ遷移する手段としてリセットを位置づける。ただし単純再起動は根本原因を覆い隠しうるため、リセット回数のレート制限、原因ログの保存、ディグレードモード移行(機能制限)を設計に含める。非常停止(E-stop)は電源遮断とリセットを区別し、残留エネルギの無害化を優先する。
設計指針(ベストプラクティス)
- 非同期アサート・同期デアサートを徹底し、解除は二段同期化する。
- スーパーバイザICで閾値精度と保持時間を規定し、温度/製造ばらつきを評価する。
- 多電源時はパワーグッド連鎖とリセット解除順を明記したシーケンス図を用意する。
- WDT/BOR/POR/外部を区別できる原因レジスタをログ化し、現場解析を容易にする。
- グローバルリセット網のファンアウトを抑え、局所初期化やイネーブルで代替する。
- EMI/ESD/チャタリング対策を行い、誤リセットを低減する。
用語補足:コールド/ウォーム/ハードリセット
コールドは全電源の再投入、ウォームは論理再始動、ハードは外部信号やWDT等の強制初期化を指す場合が多い。機器仕様で用語を明確化し、サービスマニュアルとログの語彙を一致させることが運用効率を高める。
デバッグ観点:再現性と計測
“起動時だけ失敗する”不具合は電源ランプ、PLLロック、リセット解除の相対位相で起きやすい。オシロやロジアナでPG/CLK/RSTの波形を同時観測し、保持時間とデアサートの整合を確認する。製造ラインでは境界値(低温/高温、電源ランプ遅延)での加速試験が有効である。
実装チェックリスト
- 閾値/保持時間/解除同期化の仕様化と試験項目化
- RST原因レジスタの読み出しと永続ログ
- WDTキックの責務分割とデッドロック検知
- 外部ボタンのデバウンスとESD保護
- マルチレールのシーケンス図とフェイルセーフ動作
コメント(β版)