2012年6月12日火曜日

QUCS難しい

回路シミュレータというものに慣れていないということを措くとして、いまひとつ直感的に示すことができなかったという反省がある。

いきなり授業でQUCSを使わせてみたのだが、実際に回路を組んで測定するのと較べてどのぐらいわかりやすかったか、というところに課題が残った。

ただ、優秀な学生がいろいろと発見してくれて手助けしてくれたので、学ぶことは多かった(それでいいのかという問題はあるけれども)。

難しい印象を受けるのは、結果が表や図の形でしか示すことができないこと。iOS版のiCircuitというアプリは電流をダッシュラインの移動で表したり、LEDが光るような表示の変化があったり、スイッチをタップで操作できたりと動きがあるのだが、QUCSはあくまで静的なので、実物を見る(といっても配線に手こずることは目に見えているのでどちらが楽かという判断はできないのだが)のとは違うという点で期待を裏切ってしまう。思考して図や表から動きを想像できる受講者(現職教員の受講者など)はそれなりに感動していたので、訓練の問題といえるかもしれない。

今回はWindowsで動かしてみたのだが、MinGWを要求する時点でやや強引な移植という印象を受けた。一方で、MacではQt3に依存しているためコンパイルが通らないなど、それはそれで問題がある。MacPortsにqucsは入っているけれどもi386バイナリを前提とするようで、現状、依存関係にあるひとつが+universalでなく、コンパイルエラーになる。

だが、プロジェクトサイトのnewsを見ていたら、最新ではないがMac版のバイナリ配布があったのでここに引用しておく。

デジタル回路解析に必要なFreeHDLはこちら。0.0.7で、事実上の最新(ソースコードのページには0.0.8のリンクがあるが、その先は404になるので引っ込められているような気がする)。QUCS本体は0.0.15でひとつ前のバージョンだがこちら。Qtもbundleに含まれているようだ。ソースレベルではqt4対応ブランチがあるがコンパイルが通らなかった。日本語フォントは、Windowsの場合、名前の末尾に「UI」がつくものにしないとメトリックがオーバーフローしてひどいめにあうのだが、Mac版は大丈夫なようだ。とりあえずIPAフォントでだいたい問題なく表示されている(ベースラインがやや高いような気がするが)。

ただし、GNUのlibtoolに依存したビルド環境なので、FreeHDLの設定がMacPortsとコンフリクトする。QUCSの一部もコンフリクトする。いずれもシェルスクリプトなので、絶対パスを指定するとか環境変数を内部で設定するとか、個別にlibtoolを呼び出すとか、デジタルシミュレーションを実行する際のVHDLコンパイルが成功するまでには各所の手直しが必要(エラーダイアログに行番号が出るので、そこを手当てする)。また、Guileを呼び出すSchemeで書かれたコードも存在するのでGuileのインストールも必要。Guileを呼び出す部分も絶対パスに直してやる。と、いろいろやるのだが結局、pkg-configがMacPortsと衝突するので、FreeHDL 0.0.7のtarballをとってきて、普通に./configure --prefix=/opt/local して自分でmake installしたものに手を入れるのが手っ取り早いと思う。

このあたり、いろんな意味でLinux前提の結構やっつけコードという印象がないでもない。

(追記2012/06/18:MacPortsを入れていない場合はバイナリインストールから簡単に行ける。次のエントリ参照)

一応FreeHDLまで連携できてデジタル回路のシミュレーションができたので画像を載せる。単なるAND回路なのだけれど、出力先をどう処理するのがいいのかわからないので、適当に分周回路につないでおいた(受動素子を入れるとシミュレータが動かないので)。

i1が下の位、i2が上の位、o1が出力
一応AND演算になっている