今回の質問の内容は「CMOS、インバータ、トランスファーゲート、nチャンネルトランジスタなど適切なものを選んで、半加算器(入力A,B 出力S,C)のトランジスタ結線図を教えてください。」っての。
「トランジスタ結線図」ってのが、いいよね(^^;
しかし論理回路CADのQ&Aでトランジスタ回路を要求するってのも、度胸があるなぁ。
だってさ、論理回路ってのはさ、より複雑な論理を作るために、実現すべき論理とは直接関係の無いトランジスタだの抵抗だの電圧だの電流だのをANDとかORとかFlipFlopとかに隠蔽してしまって、設計者が論理の実現に最大限のパワーを割けるようにしたものだよ。
とまぁ、こんなコトを言ってもしょうがない。
このページの作者は、面白いと思った質問に回答する主義だし、たまにゃnMOSの回路なんて作ってみるのも楽しそうだと感じてまったワケだw
|
ところがギッチョン、源内CADではトランジスタの回路を描けないのであった。
うん、作る回路がデジタル回路でも、トランジスタそのものはアナログ信号を扱えるもの。
だからトランジスタ回路を描いてシミュレーションするには、アナログ回路CADが必要なのであった。
アナログ回路シミュレータと言うと、普通の人が思い浮かべるのが、酸っぱくもないのにSPICEってヤツ。
これチョー有名。名前だけでも覚えておいてソンは無い。
論理回路だけを扱うツモリの人でもねぇ、現実世界とのインタフェースはアナログだからさ、
いずれ使うハメに陥るさ(^^;
んでまぁ、論理回路CADにもイロイロあるように、SPICEもイロイロある。
中には、タダで手に入るSPICEまたはSPICEモドキもある。
まぁ、マジメにSPICE勉強したい人は、CQ出版社からSPICE付きの本が出てるから、買ってナメて見るといいよ。
まず最初は「電子回路シミュレータPSpice入門編」。
トランジスタなら10個、オペアンプなら2個のシミュレーションが出来るシミュレータが付いてて、
お値段は定価1800円。ちょっと高いかな。んでも本の通りやってれば、そこそこ使えるようになるよ。
本気で使いこなしたいなら「電子回路シミュレータSIMetrix/SIMPLIS スペシャルパック」。
トランジスタ20個チョイの回路まで扱える。ただ、お値段が15750円ってのは、ちとキビシいよなぁ。。。
|
んで、今回使ったのは、リニアテクノロジー社の回路デザイン用ツールで「SwitcherCAD」ってヤツ。
世の中便利なもんで、無償で使えるこういうツールが在るんだよねぇ(^^;
リニテクさん、ありがと〜ごぜ〜ますだ。
SwitcherCADの入手方法は、
1) リニアテクノロジー社のページへ行く。
2) 「デザインサポート」のリンクをクリック。
3) 「デザインシミュレーションのページ」へのリンクをクリック。
4) 「LTSpice/SwitcherCAD III」のリンクをクリック。
5) あとは、ページの指示に任せて、ダウンロードしてインストールしましょう。
類似品でMicroCAPっていうアナログシミュレータもあるみたいよ。
検索すればすぐ見つかるから、探してみてちょ。英語のページだけどさ(^^;
|
はてはて、前置き長くなったけど、SwitcherCADで作った、nチャンネルMOSトランジスタで組んだ加算回路が、これ。

なんとトランジスタ26個も使ってる(^^;
- 回路の左端にあるマルは、回路の電源。
- 論理回路シミュレータの場合、電源なんて空気みたいなモンで、論理の実現とは関係ないから、普通回路図に出てこない
アナログ回路シミュレータの場合、電源からの電流の流れをシミュレートするわけだし、電圧の違う複数の電源を使ったりもするから、
回路設計者がちゃんと電源も指定してあげないといけない。
- 左下にある3つのマル、A信号を生成するV1、B信号を生成するV2、C信号を生成するV3は、パルス信号源。
- 論理回路シミュレータの場合、入力信号はコネクタかポートか用意して、好きな波形を入力できるようにするんだけど、
アナログ回路シミュレータの場合は「入力信号を生成する信号源」ってのを使うのさ。
- 真ん中上にあるY10って書いてある線と、右端にあるY1って書いてある線が、この回路の出力
- 源内CADだと、出力信号をコネクタとかポートとかで用意して、シミュレーションではその波形が表示される。
SwitcherCADでは、シミュレーション実行時に見たい信号線を選択することで、特に出力を決めなくても、ドコでも見れる。
論理回路シミュレータでも、内部配線選んでドコの波形でも見れるやつがあるし、
アナログ回路シミュレータでも、回路にプローブとか設置しないと信号を見れないヤツもある。
だからこれは、論理回路シミュレータとアナログ回路シミュレータの本質的な差じゃなくて、単にCADの特性だね。
んでこの回路のシミュレーション結果は、こうなった。
上3つ、V[a]、V[b]、V[c]は、回路図中にある信号源が生成する、回路への入力波形。
下ふたつ、V[y10]とV[y1]が加算回路の出力。V[y10]が10の桁で、V[y1]が1の桁。
入力信号の変化点でグリッジが出てるけど、加算回路として動いてるっしょ。

|
んでもまぁ、トランジスタの回路に慣れない人は、上の回路を見てもピンと来ないだろうなぁ(^^;
というワケで、上のトランジスタの回路の等価回路を、源内CADで作ってみよう(爆)
や〜、普通は逆だよねw 論理回路の等価回路をトランジスタ回路で描いてるのは、良く見るけどさw
トランジスタ回路の等価回路をゲートで作るなんて、初耳w
それでも、「論理を実現する」って意味じゃぁ、ゲートでもトランジスタでも一緒だから、
まぁソレナリに似たような回路は描けちゃうワケだ(^^;
んで作ったのが、↓この回路

上のトランジスタ回路では、各トランジスタにM1〜M25って番号が付いてるからさ、
各ゲートに、対応するトランジスタの番号をつけてある。
この回路なら、源内CADを使いこなしてる人なら読み解けるでしょう(^^;
シミュレーションしてみると、↓こうなる。 さぁトランジスタ回路のシミュレーション結果と、比べてみよう。

いや、笑っちゃったなぁ、これ。グリッジの出方まで、良く似てるw なんだかなぁw
|
まぁ回路を簡単に説明すると、
Y10ってのが10の桁の出力で、これが1になる条件ってのは、A=B=1またはA=C=1またはB=C=1の時。
トランジスタの回路も、ゲートの回路も、この条件をそのまま作ってるダケだよ。
Y1ってのが1の桁の出力で、これが1になる条件ってのは、
(A=1で、かつ、B=C=1またはB=C=0)
または
(B=1で、かつ、A=C=1またはA=C=0)
または
(C=1で、かつ、A=B=1またはA=B=0)
ちょっと条件が難儀だけど、どっちの回路もこの条件を作ってる。
まぁ加算回路の条件式って他にも作れるから、違う条件式を選ぶと回路も違ってくる。
真理値表を書いてトランジスタとの対応を見せてあげると、もっと判り易いかな。
まずY10を作る回路の真理値表って、こんなんだ。
A |
B |
C |
Y10 |
1 |
1 |
× |
1 |
1 |
× |
1 |
1 |
× |
1 |
1 |
1 |
それ以外 |
0 |
「×」ってのは、「1でも0でも構わない」ってこと。
どうなってても良いんだから、×を判定する回路は存在してない。
「1」のトコロには、その信号が「1」になってるかを判定するトランジスタが存在してる。
真理値表の「1」と、トランジスタとの対応を書くと、こんなんなる。
A |
B |
C |
Y10 |
1(M5) |
1(M4) |
× |
1 |
1(M7) |
× |
1(M6) |
1 |
× |
1(M9) |
1(M8) |
1 |
それ以外 |
0 |
同じように、Y1を作る回路は、こんなんなる。
回路にあわせて表組みイジってあるのを、なんとか読み取ってくれw
A |
B |
C |
notA |
notB |
notC |
Y10 |
1(M13) |
1(M12) |
1(M11) |
× |
× |
× |
1 |
× |
× |
1(M15) |
1(M14) |
× |
1(M17) |
1(M18) |
1(M16) |
× |
× |
× |
1 |
× |
× |
1(M20) |
× |
1(M19) |
1(M23) |
1(M22) |
1(M21) |
× |
× |
× |
1 |
× |
× |
× |
1(M25) |
1(M24) |
それ以外 |
0 |
|
ところで。。。。。
最初の問題って、半加算器だったよなぁ、そういえば。。。。
全加算器作っちゃった(^^; |