TTLレベルとCMOSレベルって何が違うの?

デジタルICから出力される信号レベルには、主にTTLレベルとCMOSレベルがあります。
同じ5Vで動かしていても、CMOSレベルとTTLレベルは区別されます。なんでいちいちレベルが区別されているんでしょうか??

 

 デジタル回路は、入ってきた信号を認識している
そもそも、デジタルとは簡単に言うと「ある」か「ない」か、という世界です。「デジタルは0 or 1」とよく言われますが、まさにその通りです。
デジタル回路は、入ってきた信号をきちんと認識して動作します。‥‥とは言っても判定できるのは「ある」(H)か「ない」(L)かのどちらかなので、無限にある電圧レベルのうち、入力される信号の電圧が「ある」(H)と「ない」(L)で判定が分かれる境目が必ず存在することになります。
TTLとCMOSは、この境目が違うのです。この境目のことを、専門用語でスレッショルドレベルとか閾(しきい)値とかって言います。
ICの規格表などでは、「この電圧以上であれば'H'として認識しますよ」という電圧をVIH 、「この電圧以下であれば'L'として認識しますよ」という電圧をVIL という略称で表していることが多いです。

 

 TTLはスレッショルドレベルが低い
一般的な5V駆動のTTLは、スレッショルドレベルが以下のようになっています。
 VIH (ICが'H'として認識する最低電圧)   だいたい2.0V 
 VIL (ICが'L'として認識する最大電圧)   だいたい0.8V 
要するに、2.0V以上の電圧が入力端子にかかっていれば、ICは確実に「'H'が入力されている」と認識できるわけです。逆に、入力されている電圧が0.8V以下であれば、「'L'が入力されている」と認識します。
それでは、たとえば1.5Vとか中途半端な電圧がかかった場合はいったいどうなるのでしょうか?
規格表にも書いてありませんので、これは何とも言えない領域になってしまいます。周囲の温度とか、電源電圧の微妙なゆらぎによって'H'と判定されたり'L'と判定されたりしてしまいます。
要するに、判定が微妙になるのであまり好ましい状態ではありません。'H'は2.0V以上、'L'は0.8V以下の電圧をきちんと入れてやらないと、せっかく設計した回路がきちんと動かない、ということになってしまいます。
 
「TTLレベル」というのは、TTLのスレッショルドレベルに準拠した信号のことを指します。'H'は2.0V以上、'L'は0.8V以下の電圧レベルであることが最低条件であり、TTLをドライブできるだけの十分な電流供給能力(通常、数mA程度)があることも必要になります。
TTLの出力はもちろんTTLレベル(一部ICを除いて)ですから、'H'レベルでも2.5〜4.5Vくらいと幅が広いです(これは、ICの種類や出力にかかっている負荷によります)。'L'レベルはほとんど0Vになります。

 

 CMOSはスレッショルドレベルが高め
CMOSのスレッショルドレベルは、TTLに比べると少し高めです。
 VIH (ICが'H'として認識する最低電圧)   0.5〜0.7Vdd 
 VIL (ICが'L'として認識する最大電圧)   0.8〜1.5V 
Vddというのは電源電圧です。CMOSは電源電圧の幅がTTLと違って広い(通常3〜6V, 物によっては3〜15V)ので、このような曖昧な表現になっています。また、ICの種類も多く、いろいろなスレッショルドレベルのICがたくさん開発されているので一概には言えませんが、上記のような仕様を満たしているデジタル信号は「CMOSレベル」と呼ばれます。
一般的にCMOSで言えることは、CMOSの出力信号電圧はほぼ0〜Vddまで振り切れるということです。上記のようなスレッショルドレベルの規定は一応決められてはいますが、CMOSは'H'レベルであればほぼVdd、'L'レベルであればほぼ0Vが出力されます。
TTLレベルとCMOSレベルの違いは、たとえば5Vで駆動している場合、TTLだとVIH=2.0Vです。しかし、CMOSの場合はVIH=2.5〜3.5Vくらいになります(何度も言いますがこれはICによります)。

 

 CMOSレベルとTTLレベルを区別している理由
デジタル回路なので、CMOSとTTLを混在させることが多々あります。
しかし、すでに述べた通りCMOSの方がTTLよりもスレッショルドレベルが高いので、そのまま接続すると問題が発生します。
たとえば、TTLが'H'のつもりで2.2Vくらいを出力していたとしても、それを受けるCMOS側は2.5V以上でないと'H'として認識できませんから、'L'と判定してしまいます。どんなにTTLが'H'とか'L'とかをバタバタ出力させていても、CMOSから見るとずーっと'L'です。
このようなことから、きちんとレベルを区別しておかないと、たとえば何かのユニットで「10bitデジタル出力」とか書いてあっても、そこから出力された信号をCMOSで受ければいいのかTTLで受ければいいのか、判らなくなってしまうのです。
ちなみに、TTLレベルをCMOSレベルに変換するバッファICもあります。これはまた別途ということで。
 
* ありがとうございました *
ご意見・ご感想をお待ちしています
[←戻る]

Copyright 2003 TomaToma. Allrights Reserved.
お問い合わせはこちらへ...