汎用ディジタル回路シミュレータ。
Rubyで書かれています。
Andap (2005/02/22) | andap050222.zip | 13KB |
andap <circuit-file> [input-file] [output-file]
input-file が省略された場合、入力は1.0のインパルス入力で44100回分出力されます。
input-file は以下のようなのを想定しています。
output-file が省略された場合、出力は標準出力になります。
下の図のような回路はこのように定義できます。
# Low-pass filter Alpha = 0.1 MUL1 = INPUT * Alpha ADD1 = MUL1 + MUL2 DLY1 = DLY( ADD1 ) MUL2 = DLY1 * ( 1.0 - Alpha ) OUTPUT = ADD1
'#' から改行までは Andap では解釈しません。所謂コメントです。
通常は素子1つについて記述します。
識別子 = 計算式
例:
# 加算器 A = C + B # 乗算器 A = 0.5 * B # 遅延器 A = DLY( B )
識別子として使えるのは[0-9A-Za-z_]+です。整数も識別子として使えます。これは panda との互換性の為なので、新たに回路を定義するときは使わない方が良いかと思います。
整数は識別子なので数値自体を記述するときは、実数の形(1.23等)で記述します。
= の後には Ruby の記述が殆ど書けるとおもいますが、あまり変なことは書かない方が良いでしょう。
識別子を定数的に使うことも出来ます。
A = 0.5 B = A * C
遅延器は
識別子 = DLY( 識別子 )
と記述します。遅延器を記述するときは他の計算式は記述できません。
特殊識別子として
INPUT OUTPUT
があります。
他、細かいことは中のテキストを見てください。