#pcomment(reply)

(2015/1/30:akita)

スタンダードセルやコンパレータなど、いろいろ部品がそろってきましたので、こいつらを組み合わせて、もう少し大きな回路をつくってみましょう。

アナログ回路でそこそこお手軽につくれるもの、といえば、発振回路で定番の「555」があります。
(「555」については、このあたりの説明が詳しいです→ http://www.marutsu.co.jp/pc/static/large_order/led_ic555 )

この555の中身を見ると、意外とシンプルで、次のものがあればできそうです。
- コンパレータ
- SR-FF (中身は2入力NOR×2個)
- nMOSトランジスタ(放電用)
- 抵抗

コンパレータは[[../コンパレータ]]でつくりました。

SR-FFは、[[../スタンダードセル]]でつくった2入力NORゲートをつかえばできそうです。

nMOSトランジスタは最初につくりましたね。

抵抗は、あさぎさんの[[../抵抗]]あたりを参考にすればつくれそうです。

というわけで部品はほぼそろったようなものなので、あとはこれらをつなげばOKですね。部品をつなぐだけですから、ブレッドボード上の配線とたいした差はありません。

というわけで、まずはnMOSトランジスタ(外付けの大きなキャパシタを放電するので大きめに・・・)と抵抗をつくっておきます。抵抗は、あさぎさんの[[../抵抗]]の作り方よりももっとシンプルに、細長いPolyだけにしています。

#ref(R5k.gex)

これで部品がそろったので、あとは並べて、ML1/ML2でつないでいきます。金属配線ML1/ML2がブレッドボードのワイヤ、みたいな感じですね。

#ref(./555.png,10%)

#ref(555.gex)

なおシミュレーションしてみたところ、cmp.gexのコンパレータの出力は、ちょっと立ち上がりが緩やかなため、発振回路が発振しない、という現象がありました。そこでコンパレータの出力にインバータを2段つなげて、出力の立ち上がり/立ち下がりを急峻にしています。(インバータ2段なので、値はもとと変わらない)

既につくった以下のセルを呼び出していますので、これらを同じフォルダに入れておきます。

#ref(cmp.gex)
#ref(nor2.gex)
#ref(inv1.gex)

※cmp.gexは、[[../コンパレータ]]で作ったものに少し手を入れています(出力端子にML2をおいただけ)。nor2.gexとinv.gexは[[../スタンダードセル]]でつくったものと同じです。

これをシミュレーションしてみましょう。
ただしWGexの回路抽出では、抵抗を抽出することができません。
(今回のPolyで結んだところは、抵抗0Ωでつながっている=ショートしているとみなされます)
そこでレイアウト図では抵抗をはずしておいて、「抵抗がつながるはずのところ」に、抽出後のネットリストに手動で抵抗を入れます。
以下の555.spでは、r1, r2, r3が、レイアウト上ではPolyの抵抗がつながるはずのところ、です。仮にそれぞれ5kΩをつないでいます。

これに加えて、555を発振回路として使うため、VDD-DIS間に抵抗Ra(この例では1kΩ)、DIS-TH/TRG間に抵抗Rb(この例では10kΩ)、TH/TRG-GND間にキャパシタCa(この例では1uF)をつないでいます。(ちなみにTHとTRGをつなぐため、1Ωの抵抗rsでつないでいます。0Ωでもいいかも)

#ref(555.sp)

555の発振回路の発振周波数f[Hz]は、「f = 1.44 / (RA + 2RB)CA」で与えられますから、今回のRa/Rb/Caだと、f=68[Hz]、つまり周期は15[ms]くらいになるはずです。

コンデンサCaの両端電圧が0V、という初期条件をあたえてシミュレーションするとこんな感じになります。(緑がTRG/TH、青がDIS、赤が出力Q)

#ref(./555sim.png,10%)

赤の周期を見ると、だいたい15[ms]になっててOKそうですね。

というわけで、こんな調子で、部品をつくったら、ブレッドボード上でつないでいくみたいな感じで、それらをつないで、どんどん大きな回路をつくっていけると楽しそうですね。

ファイルはいつもの通り、GitHubにおいておきます。https://github.com/akita11/mklsi/tree/master/555

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS