QUINE32 Ver.3.2g


ダウンロード

●概要
 Quine-McCluskey法による論理回路の学習用プログラム群
  1. QUINE.EXE  Quine-McCluskey法による論理回路の設計
  2. KARMAP.EXE カルノー図
  3. CANON.EXE  標準形
  4. TRTEXP.EXE 真理値表プリプロセッサ(組み合わせ回路・同期式順序回路)
  5. EXPEXP.EXE 論理式プリプロセッサ(組み合わせ回路、1式毎の処理)
  6. CNTEXP.EXE 同期式カウンタ・プリプロセッサ
  7. EXPSEQ.EXE 順序論理回路のシミュレータ
  8. EXPTRT.EXE 論理式から真理値表の作成(組み合わせ回路・順序回路)
  9. SEQTVW.EXE シーケンス・テキストビューア
  10. SEQHEX.EXE 状態ビット列→16進数コンバータ
  11. EXEC.EXE  ファイルの実行

●動作環境
 Win32コンソールアプリ

●操作方法
○共通事項
 ・変数名は英字1文字(特殊文字が使用できるプログラムもある)
 ・変数の数≦10(学習用のため変数の数が少ない)
 ・最初の空白でない文字が変数名に使用できる文字以外の行はコメント
 ・空行入力は、終了または Don't care
 ・式は1行1式で、後ろにコメントなどは記入できない
 ・論理式の演算子優先順位
  (1) 否定 (NOT): !
  (2) 論理積(AND): * (省略可)
  (3) 論理和(OR) : +
  (4) 排他的論理和 : ^
 ・変数名の大文字は正論理を表わし、小文字は負論理を表わす
  '=' の左辺の変数も区別されるので注意 _
 (例)論理式 Ab、A*b、A!B、A*!B はどれも同じ
 ・フリップフロップ(FF)は、'T'、'D'、'J' で指定する
 ・Don't care がある場合(FFを含む)、負論理の式を求めると、
  正論理の否定になっているとは限らないので注意
 ・コマンドラインの各オプションは大文字と小文字の区別なし
  '{ }'は省略可能を意味する
  オプションに'|'で区切られた選択肢がある場合、最左がデフォルト
  数値オプションのデフォルトは'( )'の中に示す
 ・ファイルからのデータ入力は標準入力(キー入力)と同じ形式
 ・結果は標準出力に出力されるので、必要ならば、リダイレクトやパイプを使う
 ・プリプロセッサは QUINE.EXE または KARMAP.EXE を呼び出す

1.Quine-McCluskey法による論理回路の設計
 QUINE.EXE {-opt} {quifile}
 ・操作(quifile指定がない場合)
  (1) 入力変数の数の入力
  (2) 真理値表の入力
    全ての入力の組み合わせに対して、出力を0、1で入力
    0、1以外や空行は Don't care
  (3) 抽出論理を0、1で入力(Don't care があるときは注意)
 ・結果の表示(quifile指定があり、-vオプションがない場合は(7)のみ)
  (1) 抽出された基本積:入力変数の1の個数により整列
  (2) 簡略化の過程
  (3) 素項(主項)
  (4) Quine 表1:縦に素項,横に基本積
  (5) 必須項
  (6) Quine 表2:必須項とそれを含む基本積を除いた表
  (7) 簡略化された論理式(複数の解がある場合もある.ハミング距離などによる最適化はしていない)

2.カルノー図
 KARMAP.EXE {-opt} {quifile}
 ・操作(quifile指定がない場合)…QUINE.EXEとほぼ同様
  (1) 入力変数の数の入力(4変数以下)
  (2) 真理値表の入力
    全ての入力の組み合わせに対して、出力を0、1で入力
    0、1以外は Don't care
    空行は再入力の場合には前の値、それ以外は Don't care
  (3) 抽出論理を0、1で入力(Don't care があるときは注意)
  (4) 結果の表示後キー入力(quifile指定の有無に関わらない)
    'Q' または ESC : プログラムを終了
    '4' または '6' : 複数の解がある場合、解の選択
    'M' : カルノー図を転置
    'N' : 新しい真理値表の入力(入力変数の数を同じにすると再入力となる)
 ・結果の表示
  (1) カルノー図
  (2) 簡略化された論理式
    カルノー図上に項と同じ色の枠を表示
 ・注意
  (1) 強引にコンソールウィンドウ上にグラフィック表示しているのでフルスクリーン不可
  (2) リダイレクト不可
  (3) コンソールのサイズは80x25、プロパティでフォントサイズを8x16にしていないと、文字とグラフィック表示がずれる

3.標準形
 CANON.EXE {-opt} {quifile}
 ・操作(quifile指定がない場合)…QUINE.EXEと同様
 ・結果の表示
  (1) 主加法標準形(積和標準形)
  (2) 主乗法標準形(和積標準形)
  (3) リード・マラー標準形

4.真理値表プリプロセッサ(組み合わせ回路・同期式順序回路)
 TRTEXP.EXE {-opt} {trtfile}
 ・操作(trtfile指定がない場合)
  (1) フリップフロップ(FF)の種類の入力('N'は組み合わせ回路)
  (2) 入力変数名と出力変数名の入力(1行のみ、大文字小文字の区別なし)
    入力変数名と出力変数名の区切り記号は、':'または'->'
    区切り記号の前後以外の各変数名の間には空白を入れないこと
    入力変数名と出力変数名が同じ場合、状態FFとみなす(組み合わせ回路を除く)
    入力数+状態FF数≦10、出力数+状態FF数≦10
   (例) BAI -> BAO の場合、状態FF=BA、入力=I、出力=O
  (3) 真理値表の入力
    変数名と同様に、必要なだけ入出力を0、1で入力
    0、1以外は Don't care
    空行で終了
    真理値表の未定義の値は'-U'オプションに従う

5.論理式プリプロセッサ(組み合わせ回路、1式毎の処理)
 EXPEXP.EXE {-opt} {expfile|exp...}
 ・操作(expfileまたはexp指定がない場合)
  (1) 論理式の入力
    1式毎に処理
    出力変数名は、'=' の左に指定
    出力変数名は1文字でなくてもよいが、1文字目で正負を判断する
    空行で終了
   (例) F1=(A+b)C、f1=!((A+b)C)

6.同期式カウンタ・プリプロセッサ
 CNTEXP.EXE {-opt} mod
 ・操作
   特になし

7.順序論理回路のシミュレータ
 EXPSEQ.EXE {-opt} {expfile {sqifile}}
 ・操作
  (1) 論理式の入力(expfile指定がない場合)
    各行は次の(a),(b)のいずれかの代入文
    空行で終了
   (a) 変数名 : 式 … 現在の変数の値を用いて式を評価し、その都度変数に値を代入
   (b) 変数名 = 式 … 全ての式の評価が終わってから、変数に値を代入(遅延あり)
    特殊変数名
     '@' … clock。参照のみで、値を代入することはできない
    フリップフロップ(FF)変数(入力に上記の(a)の代入文は使用できない。必ず遅延する)
     変数名      … FFの出力。参照のみで、値を代入することはできない
     変数名_D,_T,_J,_K… FFへのデータ入力
     変数名_C     … 非同期リセット(クリア)入力。1でFFが0
     変数名_P     … 非同期プリセット入力。1でFFが1
     変数名_C@    … 同期リセット(クリア)入力。1でFFが0
     変数名_P@    … 同期プリセット入力。1でFFが1
     変数名_@     … FFのクロック入力。クロックエッジで入力データを読み込む
                 指定なきときはclockが接続されている
     優先順位 :C > P > C@ > P@ > D,T,J,K
  (2) 入力シーケンスの入力(sqifile指定がない場合はexpfileの続き)
    区切り記号の前後以外の各変数名の間および設定値の間には空白を入れないこと
    空行で終了
   (a) 初期値設定(1行のみ、大文字小文字の区別なし)
      変数名 = 初期値
   (例)  ABX = 001
     入力変数およびFFの出力変数以外の変数を設定しても、初期計算で変更されることがある
     初期値設定が不要の時は、空行または '=' 以降なし
     初期値設定が不要の時は、真理値表プリプロセッサ用のファイルが利用できる
   (b) 入力変数名の指定(1行のみ、大文字小文字の区別なし)
   (c) 入力シーケンスを0、1で記述(0以外は1とみなし、don't care は設定できない)し,
     数字以外の区切り記号後,入力保持サイクル数(2以上)を指定(1以下または省略時は-Wオプションに従う)
 ・結果の表示
  (1) 入力変数名と出力変数名の表示
  (2) 入力(clock含む)、FFの出力と組み合わせ回路の出力を':'で区切って0、1で表示
   (入力シーケンスの数)*(input cycle)+1 または (stop cycle)+1 行表示

8.論理式から真理値表の作成(組み合わせ回路・順序回路)
 EXPTRT.EXE {-opt} {expfile}
 ・操作(expfile指定がない場合)
   順序論理回路のシミュレータと同様に論理式を入力
 ・結果の表示
  (1) フリップフロック(FF)の種類の表示
  (2) 以下のように出力表と状態遷移表を計算し、入力とともに表示
    フィードバックがある場合は正確に計算できない
   (a) 入力を種々に変えて、以下を計算
   (b) FFの初期値を種々に変えて、以下を計算
   (c) 出力を何回か繰り返し計算
   (d) クロックを1パルス入れ、FFの状態を何回か繰り返し計算

9.シーケンス・テキストビューア
 SEQTVW.EXE {-opt} {seqfile|trtfile}
 ・操作(seqfileまたはtrtfile指定がない場合)
  (1) 入力変数名と出力変数名の入力(特殊変数名'@'使用可、大文字小文字の区別なし)
    入力変数名と出力変数名の区切り記号は、':'または'->'
    区切り記号の前後以外の各変数名の間には空白を入れないこと
  (2) シーケンスの入力
    変数名と同様に、必要なだけシーケンスを0、1で入力
    空行で終了
 ・結果の表示
   シーケンスの波形を文字で表示

10.状態ビット列→16進数コンバータ
 SEQHEX.EXE {-opt} {seqfile|trtfile}
 ・操作(seqfileまたはtrtfile指定がない場合)
   シーケンス・テキストビューアと同じ
   ただし、1以外は0とみなす
 ・結果の表示
   各行のデータ後ろに、指定された変数の値を組み合わせて16進数で表示

11.ファイルの実行
 EXEC.EXE {-opt} file
 ・操作
   下記の優先順位にしたがってコマンド インタプリタで実行
  (1) ファイル中に、"#!"で始まる行がある場合は、その行を実行
  (2) ファイル中に、tblfileの[ACT]以下に指定されたコメント行を含めば、その行を実行
  (3) tblfileに指定された拡張子を持てば、対応するコマンドを実行
    複数行ある場合は、コマンドを表示するので、番号で選択

●各プログラムの関係
 '[ ]'内はプログラム名。'( )'内はファイル形式。線上の文字はオプション

            +-→[CANON]
            ↑
  +-vq-[CNTEXP]---++-→[KARMAP]     (.sqi)
  ↓        ↓↑            ↓
 (.trt)→[TRTEXP]→(.qui)→[QUINE]→(.exp)→[EXPSEQ]→(.seq)→[SEQTVW]
  ↑        ↑        ↓        ↓↑
  +←--------vq-[EXPEXP]←----------+       [SEQHEX]
  |                 |        (.trtも可)
  +←-----------[EXPTRT]←----------+

●履歴
 Ver.1  90/08 CP/M上のBDS-CからNEC PC-9801のMS-DOS上のMS-Cに移植
 Ver.2  04/06 オプション追加。各種ユーティリティ追加
     Win32コンソールアプリ化(グラフィックを使用しているKARMAPを除く)
 Ver.3  04/07 バグフィックス。8変数→10変数。サンプル追加。
 Ver.3.1 05/03 Quine 表の基本積がわかりにくかったのを修正
 Ver.3.2 05/04 KARMAP(フルスクリーン不可,フォントサイズ8*16のみ)
 Ver.3.2a 06/04 プリプロセッサからKARMAPを呼出し可
 Ver.3.2b 06/07 EXPSEQ, EXPTRT修正.EXEC追加
 Ver.3.2c 08/06 CANON修正
 Ver.3.2d 11/05 EXEC修正
 Ver.3.2e 12/06 EXEC修正
 Ver.3.2e' 13/05 KARMAP(WIN95以外で8*16以外でのフォントサイズ可)
 Ver.3.2f 16/08 EXPSEQ, EXEC修正
 Ver.3.2g 18/08 QUINE, KARMAPで多数の主項選択肢がある場合のメモリアクセスエラー回避

●NEC PC-9801専用
 MS-DOS版はここ
(NEC PC-9801のMS-DOS以外で実行した場合、どうなっても一切責任を負いません)

●回路図
 研究室での勉強会のための論理回路モジュール製作用の回路図はここ



本プログラムをインストールおよび使用することによって発生したいかなる損害等に対しても一切責任を負いません。