TOP » プリミティブ » nmos,pmos | cmosプリミティブ |
これは、ロジックセルやアナログIPなどの設計者が、Trレベルで設計した回路を
Verilogシミュレータ用にモデル化する際に用いる基本ゲート、スイッチのことです。
なお、以下のリストは、各項目へのリンクにもなっています。
お好みの方法でご覧ください。・・・ポチッと
Gate | Switch | ||||
---|---|---|---|---|---|
and nand or nor xor xnor |
buf not |
bufif0 bufif1 notif0 notif1 |
pulldown pullup |
nmos pmos rnmos rpmos cmos rcmos |
tran tranif0 tranif1 rtran rtranif0 rtranif1 |
ゲート=Highでnmos TrがOnし、Lowでpmos TrがOnします。
どちらも、TrがOnした状態ではドレインはソースの値を出力し、Offした状態ではHi-Zになります。
簡単ですね。
では、回路図と真理値表にまとめましたので確認してみましょう。
入力値にXやZがあることに気付かれましたか?
ロジックにはないですよね。
なぜ、XやZがあるのでしょう?
理由は簡単。Trレベルの回路には出力ショートがあるからです。
cmos、インバータ、nandなどがその例ですが、
それらはcmosの項で説明します。
では、ゲート(CONTROL)が不定(X)の場合を説明しますね。
不定は、"0 or 1のどちらか"のことなので、
ゲートが不定の場合、ドレイン(OUT)は、
ソースの値 (DATA) or Hi-Z
ということになります。
従って、そのソースの値が、
0ならば、ドレインは0 or Hi-Z
1ならば、ドレインは1 or Hi-Z
Hi-Zならば、ドレインはHi-Z
さらに、そのソースの値が、
不定ならば、ドレインは0 or 1 or Hi-Z
ということになります。
ここで、真理値表にある
Lは、0 or Hi-Zのこと。Hは、1 or Hi-Zのことです。
(それぞれ何の略でしょうね? Lower? Higher?)
また、0 or 1 or Hi-Zは、・・・Xです。・・・さすがに。
これで不定の場合の説明は終わりです。
「ちょっと待ってください。simでL, Hなんて値はみたことがないです。」
確かにsimの出力値としてL, Hなんてないですね。
Xです。失礼しました。
ただシミュレータ自体は、LなX。HなX。という情報を持っています。
(後ほど、simで確認します)
これも出力ショートが許されるプリミティブならではです。
ややこしいですね。
最後にゲートがHi-Zの場合ですが、これだけ少しアナログ的です。
Hi-Zって何でしょう?
そう、中間電位です。
中間電位とは、電源の半分。・・・ではなく。中途半端な電位のこと。なので、
nmosのゲートがOnするかもね〜。
pmosがOffするかもね〜。
という電位です。
それって結局、ゲートがLowかもね〜。Highかもね〜。ということなので、
ゲートが"0 or 1のどちらか"という不定と同じ動作になります。
という訳で、simで確かめてみましょう。
テスト回路
テストベンチ
tb_npmos.zip ・・・ポチッと
sim結果(ModelSim)
[nmos]
[pmos]
ONTROL=0の時、nmosはHi-Z。pmosはDATAを出力。
CONTROL=1の時、nmosはDATAを出力。pmosはHi-Z。
CONTROL=X(赤) or Z(青)の時、
DATA=0は、StL(Lのこと)
DATA=1は、StH(Hのこと)
DATA=Xは、X。
DATA=Zは、Hi-Z。
真理値表と同じ結果になりました。
いかがでしたか?
なお、ModelSimでStLやStHを表示するには、FormatをLiteralにします。
cmosプリミティブ |