論理回路シミュレータ Ast

JIS記号で論理回路を描いて、その動作をシミュレートできます。

"Microsoft Visual C++ 2010 Express"
と
"Microsoft Visual Studio Community 2015"
で作成しました。

"ファイル→新規"で回路図を消去できます。
"ファイル→開く"で回路図をロードできます。
"ファイル→上書き保存"でデータを上書き保存できます。
"ファイル→名前を付けて保存"で指定したファイル名でデータを保存できます。
Astは回路を拡張子"log"のファイルに格納します。

"ファイル→SVG出力"でSVG(Scalable Vector Graphics)形式で回路図を出力できます。
ラスタ形式の回路図が必要な場合はスクリーンショット(Alt+プリントスクリーンキー)の機能を使ってください。

"ファイル→終了"でAstの実行を終了します

"編集→範囲指定"で切取やコピーをする範囲を指定できます。
"編集→貼付"で切り取ったりコピーしたりしたデータを貼り付けられます。
"編集→切取"で指定された範囲の回路図を切り取れます。
"編集→コピー"で指定された範囲の回路図をコピーできます。
"編集→範囲を削除"で指定された範囲の回路図を削除できます。
データを一時的に保持するために実行ファイルと同じフォルダに"FileUsedByEditingOfAst.log"が作られます。

"表示"で方眼の表示・非表示を切り替えられます。

"移動と値の変更"を選択するとドラッグして回路図をスクロールさせたり、
設置した入力の数字をクリックすることによってその値を反転できます。

"注釈"で回路図に文字列を書き込めます。

保存した回路図を"モジュール"→"設置"でそのままモジュールとして使用できます。
モジュール内の入出力端子の向きと位置がモジュールの端子の位置に反映されます。テンプレートは右クリックで時計回りに90度回転します。
逆に"モジュール"→"展開"選択後モジュールをクリックするとそのモジュール内部の回路を展開して保存できます。
モジュールの階層が深くなりすぎるとデータのサイズが大きくなりすぎたり、動作が極端に遅くなったりします。

"端子設置"で入力と出力を設置できます。テンプレートは右クリックで時計回りに90度回転します。

"導線設置"で導線を引けます。
導線がループしているときには導線が青色になります。
ショートしている場合は節が赤色になります。
導線に入力がない場合節が緑色になります。

"演算設置"で各種論理ゲートを設置できます。"入力数変更"でNOTゲート以外のゲートの入力数を指定できます。テンプレートは右クリックで時計回りに90度回転します。

"バス"で複数の導線をまとめて扱う機能を使えます。

"削除"で端子、導線、モジュール、論理ゲート、注釈を消せます。
端子は三本の線が交わっている点をクリックすることで消えます。
導線は線の始点と終点の二点間をドラッグすることで消えます。
論理ゲートとモジュールとバス入力とバス出力は枠の中央のあたりをクリックすることで消えます。

"クロック入力"はクロックを自動入力する機能です。
クロックを入力する入力端子を指定してください。
任意の出力が変化したときにクロックを停止させることもできます。
高速モードではCPU使用率が100%になり、入力端子の値の変更が出来なくなります。

"ヘルプ→Astについて"でバージョンなどが確認できます。

マウスのホイールあるいは"PageUp","PageDown"キーで方眼の間隔を変えられます。


このソフトはGPLのオープンソースソフトです。

Windows7とWindows10で動作確認しています。

アンインストールするにはフォルダごと削除してください。

サンプルの「直列伝送」「直列加算」「乗算」「除算」は値を設定した後メニューの「クロック入力」で左側を"Clock"右側を"Fin"にして実行してください。


2016/05/01
現在、自動実行機能はシミュレータ上のクロック半周期毎に描画しなおしているので非常に遅いです。
C++の高速性が全く生かされていません。この機能の高速化が現在の課題です。
その改良を行う前に現段階での不具合を発見・修正したいのでVectorに公開しました。

2016/05/26
論理演算の処理を別スレッドにして描画処理を間引く高速モードを付けました。
不具合をできるだけ修正した後にVectorで公開したいと思っています。

2016/06/02
複数の導線がまとまったもの(バス)を扱う機能を付ける前にVer0.6としてVectorに公開しました。

2016/06/22
ショートカット・アクセラレータを付け、描画の位置や大きさを改良してVer0.7としてVectorに公開しました。(バスを扱う機能は未だに未実装)

2016/07/09
"範囲を削除"を使うとそれまでにコピーされていたデータが消えてしまう問題を修正(Ver0.71)
バスを扱う機能は現時点の不具合を修正してから付けます。

2016/07/17
モジュールの端子名の描画位置微調整(Ver0.72)

2016/07/25
バスを扱う機能あらかた完成
描画ごとにモジュールのコピーをしていたバグを修正

2016/08/01
Ver0.8としてVectorに公開

2016/08/04
Ver0.81
モジュールの入力にバス出力の出力の情報が伝達されない問題を修正

2016/09/17
ファイルフォーマットが更新されるたびに古いファイルフォーマットのファイルが扱えなくなってしまう問題がありました。
バージョン0.8以降のファイルの読み込みは互換性を保てるようにします。

2016/11/05
"Microsoft Visual C++ 2010"がインストールされていないコンピュータで
本プログラムが"MSVCP100D.dll"が存在していないために起動できないという問題を修正しました。
Ver0.82

2017/04/19
モジュールの枠が端子名で隠されてしまう問題を修正
方眼を消去可能に
"PageUp","PageDown"キーで拡大縮小
Ver0.83

2017/07/24
新規に設置されるゲートの入力数の扱いを改良
ステータスバーに表示される情報の追加
モジュールを任意の方向に向けて設置可能に
Ver0.84

岡　道雄
http://hp.vector.co.jp/authors/VA060227/
http://www.geocities.jp/oka_mitio/
oka_mitio@yahoo.co.jp
バグを発見されたり、ご意見などありましたらメールでおねがいします。