FPGA/MCU I/Oバッファ規格とドライブ強度の計算

FPGA/MCUのI/Oバッファ規格(LVCMOS/LVTTLなど)とドライブ強度の解説、およびドライブ電流と負荷容量から立ち上がり時間を概算する計算機です。

V
mA
pF
立ち上がり時間(概算)
6.6ns
遷移が周期の10%を超える周波数
15.15MHz
計算履歴
入力欄で Enter を押すと、その時点の値がここに残ります。

計算式

立ち上がり時間(概算): tr ≈ 0.8 × C × V / I [ns]
(V:電源電圧[V]、I:ドライブ電流[mA]、C:負荷容量[pF])
この遷移時間が周期の10%を超える周波数: f ≈ 100 / tr [MHz]

設計のポイント

出力段を理想的な定電流源とみなした、桁感をつかむための簡易モデルです。実際のバッファはスルーレート制御や飽和特性を持つため、データシートの実測値とは数割ずれることがあります。下のガイドでLVCMOS/LVTTLの基礎とベンダごとの設定、ドライブ強度8mA/12mAの使い分けをまとめています。

こんなときに使います

XilinxのIOSTANDARD=LVCMOS33、STM32のGPIO speed、TIやルネサスのMCUのポート駆動能力設定など、ベンダごとに呼び方が違うI/Oバッファの設定に迷ったときに使います。LVCMOS/LVTTLが何を規定しているかドライブ強度(mA)をどう選ぶかをまとめ、ドライブ電流と負荷容量から立ち上がり時間の桁感を計算します。

LVCMOS・LVTTLとは何か

どちらも単一配線(シングルエンド)でGNDを基準に振れる、CMOS出力段のデジタルI/O規格です。両者を分けるのはおおむねしきい値電圧の規定の仕方で、LVCMOSは電源電圧に比例したしきい値(目安としてVIH ≈ 0.7×VCC、VIL ≈ 0.3×VCC 付近)を使うのに対し、LVTTLは電源電圧によらず旧来のTTLに近い固定しきい値(目安としてVIH ≈ 2.0V、VIL ≈ 0.8V 付近)を使います。3.3V動作ではこの2つが数値的に近くなるため、実務では区別なく「LVCMOS/LVTTL互換」とまとめて呼ばれることも多くあります。

どちらもJEDECのJESD8シリーズで電源電圧クラスごとに規定されており、LVCMOS33(3.3V系)、LVCMOS25(2.5V系)、LVCMOS18(1.8V系)、LVCMOS15(1.5V系)、LVCMOS12(1.2V系)のように電圧で呼び分けます。電圧が下がるほどしきい値電圧の絶対的なマージンは狭くなるため、ノイズの多い基板では電圧クラスを不用意に下げないことが重要です。

LVTTLは電源電圧によらず0.8V/2.0Vで固定、LVCMOSは電源電圧に比例してしきい値が下がることを示す比較図

一番の違いはここです。LVTTL(3.3VのLVCMOS33も実務上ほぼ同じ)はTTL由来の固定しきい値(VIL上限0.8V、VIH下限2.0V)を使うため、電源電圧を変えてもこの2つの絶対値は動きません。一方2.5V以下のLVCMOSは電源電圧に比例したしきい値(目安として30%/70%程度)を使うため、電源電圧が下がるとしきい値も一緒に下がります。図の右3本のように、電圧が下がるほどしきい値の帯が下にずれていくのが分かります。

1.8Vや1.2Vの電源では、固定しきい値のVIH下限2.0Vがそもそも電源電圧そのものを超えてしまい、物理的に成立しません。だからこそ低電圧デバイスには「LVTTL」という選択肢自体が存在せず、必ずLVCMOSの電圧クラスで指定します。3.3VでLVTTLとLVCMOS33がほぼ同じ扱いになるのは偶然ではなく、両方ともJEDECのJESD8-Bという同じ規定を参照しているためです。

しきい値や出力レベルの正確な値は使用するデバイスのデータシートに従ってください。ここでの数値は規格の典型的な目安であり、個々のICの保証値ではありません。

同じカテゴリの他の規格

LVCMOS/LVTTL以外にも、用途に応じて選ばれる規格がいろいろあります。おおまかな系統で整理すると次のようになります。

いずれも「シングルエンド/差動」「しきい値が固定か電源比例か」「駆動方式」で分類できます。
系統規格の例特徴
シングルエンド・固定しきい値TTL(5V)/LVTTL(3.3V)TTL由来の固定しきい値(VIL上限0.8V、VIH下限2.0V)。1.8V以下の電源では成立しない。
シングルエンド・比例しきい値LVCMOS33/25/18/15/12/10しきい値が電源電圧のおよそ30%/70%に比例。低電圧デバイスはすべてこちら。FPGA/MCUのIOSTANDARDの主力。
シングルエンド・低振幅バスGTL/GTL+振幅0.8V前後、VREF基準のオープンドレイン。ワイヤードORで多数の受信ICを束ねられる。Pentium Pro世代のFSBやSCSIバスなどで使われたが、現在はほぼ役目を終えた規格。
シングルエンド・基準電圧型(メモリ)SSTL2/SSTL18/SSTL15、HSTLVREF基準でLVCMOSよりさらに低振幅・高速。順にDDR/DDR2/DDR3世代のメモリインタフェースに対応し、HSTLはネットワークICの高速パラレルI/Fなどで使われる。
差動LVDS(TIA/EIA-644)、LVPECL/PECL、CMLいずれも2本の電位差で判定するためGNDのずれやコモンモードノイズに強い。LVDSは省電力な汎用差動、PECL/LVPECLとCMLはクロック分配や光通信など高速クロック系で使われる。
差動・表示/バス向け派生RSDS、mini-LVDS、BLVDSLVDSを特定用途向けに調整した派生規格。RSDS/mini-LVDSは液晶パネルの内部インタフェース、BLVDSはマルチポイントのバス接続に向く。
オープンドレイン・バスプロトコルI2C、1-WireHighを外付けプルアップ任せにする方式。複数デバイスで1本の線を共有できる。しきい値自体はLVCMOS/LVTTLのVIL/VIHに準じることが多い。

この計算機・ガイドが主に扱っているのは、表の一番上と二番目、つまりFPGA/MCUの汎用GPIOで一番よく使われる「シングルエンド・電圧参照型」のLVCMOS/LVTTLです。メモリインタフェースや高速シリアルでは、上の表の他の規格を選ぶことになります。

ベンダごとの呼び方・設定

同じLVCMOS系バッファでも、ベンダによって設定項目の呼び方・粒度が異なります。
ベンダ設定箇所概要
Xilinx(7シリーズ/UltraScale)XDCの IOSTANDARD / DRIVE / SLEWIOSTANDARD=LVCMOS33/25/18/15/12などで電圧クラスを指定。DRIVEで4/8/12/16/24mAのドライブ強度、SLEWでFAST/SLOWのスルーレートをピンごとに選べる。
TI(Sitara/MSPなど)ピンマルチプレクサ(IOMUX)のレジスタデバイスによりドライブ強度を数段階(例:ノーマル/ハイ)で選べるものと、固定のものがある。データシートのI/Oバッファ特性表で確認する。
ルネサス(RX/RA)ポート駆動能力レジスタ(PMR/DSCR等)ピンごとに「ハイドライブ」「標準」を切り替えられるものが多い。ハイドライブに対応するのは専用ピンに限られることが多い。
STM32(ST)GPIOの OSPEEDR(Output speed)XilinxのようなmA単位のドライブ強度選択はなく、Low/Medium/High/Very Highの4段階でスルーレート(内部の駆動能力)を切り替える。電流定格自体はピンごとにほぼ固定(多くは目安として8mA程度、一部の高耐圧・FTピンはこれより高い)。

ベンダ差の実務的な意味

同じ「LVCMOS 3.3V」でも、ベンダによって設定できる項目の粒度が違います。Xilinxのように電流とスルーレートを別々に、しかも数段階で選べるものもあれば、STM32のようにスルーレート(速度)だけを選び、電流自体はほぼ固定というものもあります。データシートを見るときは、「ドライブ強度=mA表記」なのか「スピード=段階表記」なのかをまず確認してください。

ドライブ強度 8mA/12mAはどこから来たのか

現在もFPGAやロジックICのドライブ強度設定に「8mA」「12mA」という値が残っているのは、5V世代のTTLロジック(74シリーズ)の名残です。TTLの出力段は非対称で、Low出力時に電流を吸い込む能力(IOL)は大きい一方、High出力時に電流を吐き出す能力(IOH)はごくわずかで足りました。これはTTL入力段の構造上、Low状態のときだけ相応の電流を必要としたためです。

標準的な74シリーズ(74/74LS系)はIOL ≈ 8mAとして規定され、バス配線1本に複数個のTTL入力とある程度の配線容量がぶら下がってもVOLの規格(0.4〜0.5V以下)を満たせる、実務上ちょうどよい値でした。より重い負荷(バックプレーンや多数の受信ICがぶら下がるバス)向けには、74S/74Fや74ALSなどでIOL 12mA・20mA・24mAといった強化版が用意され、「8/12/16/20/24mA」という刻み方がそのまま業界の共通言語として定着しました。

CMOSロジック(74HC/74AC以降)やFPGA・MCUの出力段はプッシュプルで、High/Lowどちらの方向にもほぼ同じ電流を流せます。それでも設定の選択肢としては、この歴史的な8/12/16/24mAという刻みがそのまま踏襲されています。「何mA駆動できるか」という言い回し自体がTTL時代からの語彙として業界に定着していたため、CMOS時代になってもそのまま生き残った形です。

実務上は「大は小を兼ねる」わけではありません。ドライブ強度を上げるとエッジが速くなり、SSO(同時スイッチングノイズ)やクロストーク、終端していない配線でのオーバーシュート・リンギングが悪化します。必要以上に強いドライブ強度を選ばないことも、EMI対策の一部です。

使い分けの目安

  • 軽負荷・短距離(数pF〜10pF程度、配線長も短い)。4〜8mA、SLEW=SLOWが基本。エッジを必要以上に速くせず、ノイズとEMIを抑えます。汎用GPIO、ボタン、LED制御などはここに入ります。
  • 複数の受信ICがぶら下がるバス、比較的長い配線。12〜16mA程度に上げ、負荷容量が増えても十分な速さでVOH/VOLに到達できるようにします。
  • 高速なクロックや、規定のセットアップ/ホールドを満たす必要がある信号。SLEW=FASTと高めのドライブ強度が必要になりますが、伝送線路として設計されていない配線では反射やリンギングが大きく出ます。特性インピーダンスを合わせ、必要なら直列終端抵抗を入れてください。
  • 電池駆動などで消費電流を抑えたい場合。ドライブ強度を上げるとスイッチング時のピーク電流、ひいては平均消費電力も増えます。負荷が軽い信号は素直に弱いドライブ強度のままにします。

計算機について:ドライブ電流から立ち上がり時間を概算する

出力段を理想的な定電流源とみなし、負荷容量を充電しきるまでの時間を tr ≈ 0.8 × C × V / I で概算します(0.8は10%〜90%遷移を表す係数の簡易近似)。実際のバッファは出力インピーダンスや飽和特性、スルーレート制御回路を持つため、この値はあくまで桁感をつかむためのものです。

計算例:3.3V・8mA駆動で、配線と入力ピンを合わせた負荷容量が20pFのとき、この計算機で立ち上がり時間は約6.6ns。この遷移時間が周期の10%を超えるのは約15.2MHz以上のクロックからで、それより高い周波数で使うならドライブ強度を上げるか負荷容量を減らす必要があります。

同じ負荷でドライブ電流を8mAから16mAに倍増すると、立ち上がり時間はほぼ半分(約3.3ns)になります。式の上ではドライブ強度と遷移時間はほぼ反比例の関係にあります。

よくある質問

LVCMOSとLVTTLはどちらを選べばいいですか?
3.3V動作であれば、しきい値の差は実務上ほぼ無視できます。多くのICはデータシート上「LVTTL/LVCMOS互換」として一括りにしています。1.8V以下の低電圧系ではLVTTLの選択肢自体がないことが多く、LVCMOSの電圧クラスで指定するのが一般的です。
SLEW(スルーレート)とDRIVE(ドライブ強度)は何が違いますか?
DRIVEは主に飽和時に流せる電流の大きさ、SLEWは電圧が変化する速さそのものを制御します。ドライブ強度を上げつつSLEWをSLOWにする、といった組み合わせも可能で、必要な負荷駆動力を確保しながらエッジレートだけ穏やかにする調整に使えます。
STM32にもXilinxのような「8mA/12mA」のドライブ強度設定はありますか?
多くのSTM32ファミリでは、GPIOのドライブ電流そのものを選ぶレジスタはなく、OSPEEDR(出力速度)でLow/Medium/High/Very Highのスルーレートを切り替えます。電流定格はピンごとにほぼ固定です。データシートのI/O構造の章と電気的特性表で、選べるのがどちらのパラメータかを確認してください。
この計算機の立ち上がり時間はデータシートの実測値と合いますか?
合わない前提で、桁感をつかむためのものと考えてください。実際のバッファは定電流源ではなく、出力段の飽和特性やスルーレート制御回路の影響を受けます。正確な値が必要なら、データシートのAC特性(tRISE/tFALLの規定負荷条件)を確認するか、IBISモデルを使ったシミュレーションで確認してください(IBISモデル波形シミュレータも用意しています)。

参考にした規格・資料

  • JEDEC JESD8 シリーズ — 電源電圧クラスごとのLVTTL/LVCMOSしきい値・出力規定。
  • TIA/EIA-644 (LVDS) — 低電圧差動信号の規格。

最終更新: 2026-08-30