みなさん、こんにちは。テクノシェルパ推進室の赤谷です。
久しぶりのブログ投稿となりますが、どうぞよろしくお願いいたします。
今回はハードウェア設計の基本中の基本であるプルアップ(pullup)、プルダウン(pulldown)抵抗処理について、あえてお話しさせていただきます。
(当社の電気設計受託サービスはコチラ)
少々長くなりますが初心者からベテランまで必見の内容となっておりますので是非最後までご覧ください。
プルアップ(pullup)抵抗、プルダウン(pulldown)抵抗とは?
プルアップ、プルダウン抵抗とは、信号レベルをHighかLowに固定するために用いる抵抗のことです。ここで電源に接続する抵抗をプルアップ抵抗、グランドに接続する抵抗をプルダウン抵抗と呼びます。
これら抵抗を用いた具体的なハードウェア処理方法を以下に示します。
プルアップ(pullup)抵抗処理
プルアップ抵抗処理の具体例を図1に示します。この回路で入力がオープンの場合は、プルアップ抵抗処理によって、入力はHighレベルに固定されます。よって、出力は必ずLowレベルとなります。
図1 入力をプルアップ抵抗処理したインバータ回路
プルダウン(pulldown)抵抗処理
次にプルダウン抵抗処理の具体例を図2に示します。この回路ではプルアップ抵抗処理とは逆で、入力がオープンの場合、Lowレベルに固定され、出力はHighレベルとなります。
図2 入力をプルダウン抵抗処理したインバータ回路
プルアップ(pullup)、プルダウン(pulldown)抵抗処理が必要な理由
これらのプルアップ、プルダウン抵抗処理が必要な理由は主に2つあります。
プルアップ、プルダウン抵抗による信号レベルの固定化
まず1つ目は、図3のインバータ回路のように入力がオープンの場合、入力の電位レベルが定まらず、インバータの出力がHighになるかLowになるかわからない状態となります。入力がたまたまスレッショルド電圧より高い場合は、出力がLowになりますし、入力が低い場合はその逆となります。
図3 入力がオープンのインバータ回路これでは回路がどのように動作するかは“神のみぞ知る”ことになり、製品として都合の悪い方に転ぶと不具合症状として現れます。
よって、図1 や2で示したように入力回路にハードウェア端子処理を施し、入力がオープンの場合も確実に電位を決めてやることが必要となる訳です。
プルアップ、プルダウン抵抗による貫通電流の防止
デジタル回路では多くの場合、入出力回路にCMOS回路が使用されております。ここで入力の電位が電源電圧に対して中間電位付近でふらつくと、PMOS、NMOSの双方がハーフオン状態となり、貫通電流が流れてしまいます。
図4 CMOSの貫通電流のイメージこの貫通電流は余計な電流であるためバッテリー動作する機器ではバッテリーの持ちが悪くなるなどの不具合に至ります。また、最悪の場合、貫通電流でCMOSが壊れる可能性もあるので絶対に避けなければなりません。
プルアップ(pullup)、プルダウン(pulldown)抵抗処理が漏れる理由
「そんなん、知ってるわ!」ってみなさん思ったはずですが、ハードウェアの不具合を調査すると、このプルアップ、プルダウンなどのハードウェア端子処理が漏れていたことが原因である割合が結構多いと感じます。
では、なぜプルアップやプルダウンのような基本的なハードウェア端子処理が設計時に漏れてしまうのか?について私なりの見解をお示しします。
プルアップ、プルダウン抵抗処理が漏れる理由 その1
私が思うワースト1は、接続相手がマイコンの場合です。
一見するとマイコンはHighかLowを出力するのだから入力レベルが不定になることは無いじゃないか?と思うかも知れません。しかし、マイコンのポートはマイコンが起動し(電源が立ち上がりリセット解除された状態)ポートの初期設定を終えるまで入力は不定となります。これは、電源を入れたとたんにマイコンが何かしら出力してしまうと、回路が意図した動作とならないことを防止するためです。
図5 マイコンとの接続例このため、設計者は電源起動時にどのような状態を期待するかによって、プルアップかプルダウンのハードウェア端子処理を追加しなければなりません。
なお、このプルアップかプルダウンはどちらでも良いわけではありません。基本的には電源起動時などは、回路がまだ不安定な状態ですので、後段の回路ブロックがいきなり動きださないようにネゲート(インアクティブ)する方向にハードウェア端子処理を入れます。
例えば、図5の回路で出力を何かしらのデバイスのイネーブル端子(Lowアクティブ)に接続する場合、次のようにハードウェア端子処理を施して電源起動時はディセーブルになるように設計します。
図6 マイコン起動時に接続先デバイスをディセーブルする端子処理このようにマイコン制御する回路の場合、電源起動時の振る舞いに注意して正しくハードウェア端子処理を施す必要があります。
プルアップ、プルダウン抵抗処理が漏れる理由 その2
次にハードウェア処理が漏れてしまうワースト2(あくまで私見ですのであしからず)は、基板間を跨ぐ信号ラインの場合です。
図7は、回路としては図6の回路と同じで問題ないように思いますが、基板間を跨ぐ場合、次のケースについても考慮が必要です。
- 基板Aがオプション設定であり基板Bのみで動作させる場合があるとき
- 基板Aと基板Bで電源の立ち上がりタイミングが異なるとき
- 実装基板の出荷検査などで基板Bのみで動作させるケースがあるとき
図7 基板間を跨ぐ信号の回路例これらのことを考慮するとやはり基板B側にも下記図のようなハードウェア端子処理が必要となります。
図8 基板間を跨ぐ信号ラインのハードウェア端子処理例
プルアップ(pullup)、プルダウン(pulldown)抵抗処理の心得
このようにハードウェア端子処理はあらゆるユースケースを考え、漏れがないように施す必要があります。設計者なら誰でも知っているハードウェア端子処理ですが、これが漏れてしまうのは、ユースケースの洗い出しが不十分だったことに起因する設計ミスとなります。
単純な処理ですが、ベテランのエンジニアでも忙しい時にはユースケースを漏れなく洗い出すのは難しいことや、審査会議のレビューアーも限られた時間の中で指摘できないで漏らしてしまうケースがあるのだと思います。
なぜか回路が上手く動作しないなど、お困りの際は、今回のブログをご参考にしていただけますと幸いです。
当社では、このような設計ミスを排除するため、過去トラをまとめた設計チェックシートを設計や社内レビューの際に活用するようにしております。
また、当社では組織的に品質管理した各種設計サービス(電気設計受託サービス、基板レイアウト設計受託サービスなど)もご提供しておりますので、何かお困りの際はお気軽にご相談ください。
<関連リンク>
WTIメールマガジンの配信(無料)
WTIエンジニアが携わる技術内容や日々の業務に関わる情報などを毎週お届けしているブログ記事は、メールマガジンでも購読できます。ブログのサンプル記事はこちら
WTIメールマガジンの登録・メールアドレス変更・配信停止はこちら