やっぱ最初のお約束はLチカ、それには発振回路が!というわけで、
リングオシレータと呼ばれる回路を設計してみた例です。
※リングオシレータについては、例えば https://www.youtube.com/watch?v=A188CYfuKQ0 などが参考になると思います。(2015/1/15:akita)

設計データ(*.gex)もいっしょに置いておきますので、ぜひ試したり確認したりしてください。

#pcomment
#pcomment(reply)


* インバータの設計 [#e877ac45]

インバータの設計は、WGexの使い方でも紹介しましたが、
先のことを考えて、使いやすいようなレイアウトをつくってみましょう。
よく使われるのは、上にpMOS、下にnMOSを置き、横にずずっと並べられるように
設計するやり方です。

インバータ1個は、こんな感じです。

#ref(./inv.png,20%)
#ref(inv.gex)

* 並べる [#v4eab983]

こいつにちょっと付け加えて、こんな感じにしてみます。

#ref(./RO5_inv.png,20%)
#ref(RO5_inv.gex)

どこが違うかわかりましたか?
ここで追加した部分は、次で効いてきます。

次に、こいつを2個並べてみましょう。
こいつを"RO5_inv.gex"というファイルで保存しておいて、
こいつを「セル呼び出し」で2個、呼び出して並べてみます。

#ref(./RO5_inv2.png,20%)
#ref(RO5_inv2.gex)

1個ずつ、ぴったりくっつくように並べてください。
この方法だと、作った回路をライブラリのように他の回路でも使えて便利ですね。
で、さっきの追加した部分がどんな意味だったか、わかるでしょうか?

ぴったり並べて配置すると、インバータの出力が、隣のインバータの入力に
つながって、しかも上下のVDD/GNDも、くっつくように、サイズをあわせてあるんですね。こりゃ便利。

というわけで、調子に乗って5個(あるいはもっと多く、ただし奇数個)
並べちゃいましょう。

#ref(./RO5.png,20%)
#ref(RO5.gex)

リングオシレータにするためには、最後のインバータの出力を、最初のインバータの入力につなげば、完成です。
この例では、ML2を使って、つないでいます。

* シミュレーション [#r0abaf64]

回路シミュレーションのやり方も、WGexの使い方に書きましたが、
実はリングオシレータなどの発振回路のシミュレーションには、ちょっとしたコツがいります。

まず、配布ファイルの中にあるcex.mdlというファイルを、このファイルと置き換えてください。
これは、回路抽出時に、配線などがもつ容量を(値はけっこう適当ですが)求めるように修正したものです。

#ref(cex.mdl)

回路抽出したRO5.cexに、電源vsを加えて、100nsくらいまでシミュレーションするために
こんな感じの*.spをつくります。

#ref(testRO.sp)

こいつをシミュレーションしてみると、発振していますね!
※ただし配線容量の計算モデルがけっこう適当なので、
実際に作った回路の発振周波数が、このシミュレーションの通りになるかは、
保証できません・・・
ぜひ実際に作って測定して、計算モデルを求めてみたいですね!

#ref(./testRO_sim.png,20%)

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