2023年1月4日水曜日

ロジック信号のレベル変換について

 昨今、ICの低電圧化が進んでいることから、昔のようにロジックIC=電源は5V、
ということは無くなってしまいました。
これはロジックICに限らず、マイコンにも言える話で、
最近リリースされるマイコンでは、電源電圧3.3Vという物が増えてきました。

これらが電圧を気にせず使えるのなら、特にどうということもないわけですが、
実際には大抵の場合、信号の電圧レベルを意識する必要が有ります。

そこで必要となるのがレベル変換器となるわけですが、
そう頻繁に使う代物でもないと思うので、簡単な基礎的知識を書いてみます。

まずレベル変換器は大別して3種類に分けられます。

①プルアップ抵抗&オープンコレクタ素子

これは、H -> Lの遷移のみを半導体素子でドライブし、
L -> Hの遷移はプルアップ抵抗任せというもの。
半導体素子の耐圧を超えない範囲で、任意の電圧レベルに変換可能です。

この方式の歴史は古く、有名なICとして74LS07が有ります。
このICの出力端子は30Vまでの耐圧を持っているので、
TTLレベルの信号を24Vの信号に変換することも可能です。

②プルアップ抵抗&ダイオード

これはL -> Hの遷移はプルアップ抵抗任せという点では①と同じですが、
H -> Lの遷移時、Lに引っ張るのはレベル変換器に接続されたデバイスです。
逆流を防ぐ意味で、ダイオード相当のものが挿入されますが、
実際にはFETが使用されます。

昨今話題になったFETとプルアップ抵抗を組み合わせた相互レベル変換回路もこの応用です。







 

また、この方式を使ったレベル変換ICもメーカーから出ており、
これらはバススイッチ等と呼ばれています。
製品例: 東芝TC7MPB9307

この方式は割りとお手軽なのですが、要注意点も有ります。
1つ目としてLに引っ張るのがデバイス自身という点。

デバイスがLに引っ張るのは当たり前じゃないかと言われそうですが、
例えばマイコンと74HC17を繋いだ際、マイコンがLに引っ張るのは74HC17まで信号線です。
その先の信号線をLに引っ張るのは74HC17の役目。

ところが、バススイッチを使った場合は、全信号をマイコンが引っ張ることになるのです。

PICマイコンであれば20mA位まで電流を引っ張れるので、
問題になることは少ないと思いますが、
もっと電流ドライブ能力の少ないデバイスを使う場合は、気にする必要があるかと。

2つ目としては、Hに引っ張るのがプルアップ抵抗という点。
一般的にプルアップ抵抗は10KΩや47KΩという値を使うケースが多いかと。
しかしこの回路のプルアップでは、そんな高抵抗だと立ち上がりが非常に遅くなります。
立ち上がり時間を高速にしたい場合には、470Ωや1KΩといった、
低抵抗を使う必要があります。
すると、システムの消費電力が増加するのみならず、
1つ目に述べたデバイスの電流ドライブ能力に注意する必要が出てきます。

お手軽なように見えて、ちょっとやっかいな代物なのです。

③専用ロジックIC

異電圧レベル間の繋ぐ為のロジックICというのが存在します。
テキサスインスツルメンツであれば、SN74LVCC4245AやSN74LVC1T45といった製品です。
これらは2つの電源系統と各々に対応したロジック入出力端子を持っています。
いわゆる74ロジックICの仲間ですから、速度は十分に速いです。
見かけ上の論理はバッファとして動作するので、信号伝達は単方向になります。
一時期と比べ、製品の種類が淘汰されてしまった感が有り、
入手性も昔より悪化してる感じがします。
しかしながら、②の方式のように電流ドライブ能力を気にする必要がないことから、
低消費電力の機器には もっとも向いてると思われます。

差動信号線のパターン設計の話

 皆様、あけましておめでとうございます。
惰眠を貪っている間に新年が来ていたコナンです。

今年最初のネタは差動信号線のパターン設計について。

新年早々、USBが載った基板を設計することになったのですが、
USBの信号線は差動ラインでございます。
なので差動信号線としてインピーダンスマッチングしたパターンを引く必要があるわけですが・・・

そこで、文献やら各種計算サイトを調べてみると、各々で結構な差が有るんですね。
時間とお金が有るなら、実測用の基板を作って、実際のインピーダンスを測ってみる、
なんて手もありそうですが、さすがに私には無理。

そんな最中、これはアテになりそうと感じたのが、Kicad付属の計算ツール。








これが実際に先日設計した基板の値です。

この計算ツールで感心した点は、2本の信号線が同相か逆相かで、
それぞれの値を算出できること。

USBの信号線は差動信号なので逆相信号ということなります。
なのでこのツールだとZdiffの値になりますので、
Zodd×2という計算になるそうな。

上記の表だとZoddは 57.7662Ωなので、2倍すると115.5324Ω。
USB信号線インピーダンスは90Ωが規定値らしいので、まぁ許容値かと。
90Ωに対して約30%もプラスじゃないか!という指摘が出そうですが、
そもそも115.5324Ωという値が合ってるのか?という話もあるので、
あまり深く突き詰めても意味が無いと判断したわけです。

ちなみになぜ計算値に疑念が有るのかという話ですが、大きく2つ。

1つ目は計算式について。
どういう理論に基づくかによって計算式が変わるようなので、
こちらではその点に付いて追いかけられませぬ。

2つ目は与えるパラメーターについて
上記の表を見て頂ければ解るとおり、ツールに対して与えるパラメーターは結構多いです。
しかしほとんどはデフォルト値を使っています。
私の方で入力したのは基板厚、パターン厚、パターン間距離、パターン幅くらい。
これ以外の値を正確に出そうとすると、実物の基板解析が必要になるので現実的に無理。

というわけで、計算値は あくまで参考値という扱いにしかならないのです。