HP200LXで論理回路シミュレーションを。

HP200LXでアナログ回路シミュレーションはPSpice CQ版(CQ出o社)にて出来ます。
そこで、論理回路シミュレーションもHP200LXで出来ないか、やってみました。
シミュレーションには、エディタでネットリストを作成し、
LSIC86試食版やTurbo Cでコンパイルして、実行ファイルを作成し、
データを入出力する方法を取ります。
C言語で直接書いてもいいのですが、A氏作成のLCT.EXEを使うと
ネットリストからC言語に変換出来て、労力がかなり楽になります。(A氏に感謝)
A氏のLSシリーズをHCシリーズに変更しました。(HC.H参照)
結果として、F/F(フリップフロップ回路)のクロック,リセットやディレイに
難があり、使い方の特徴のために小規模回路用と思われます。
コンパイラによっても結果が違い、FreeBSDのgccや
Macintoshのcode warrior,ポケコンPC-G850Sでは、
出力が著しく異なりましたが、HP200LXではsimulationできます。
コンピュータと言えども、検算は必要です。
ちなみにVC++のコンソールではsimulation出来ました。

排他的論理和

LSI-C86試食版にてコンパイルして使います。

lcc EOR.C
EOR2.EXE < IN2.DAT > EOR2.OUT

EOR2.C
IN2.DAT
EOR2.OUT

全加算器

LSI-C86試食版にてコンパイルして使います。

lcc FA.C
FA.EXE < IN3.DAT > FA.OUT

FA.C
IN3.DAT
FA.OUT

HCシリーズを使った例

バス調停回路の一部です。
Turbo Cにてコンパイルして使います。
LSI-C86試食版ではメモリオーバーになってしまい、コンパイルできません。
GATES.H,HC.H,USEUC.HはARBT.Cからインクルードして使うので、
同じフォルダに入れてコンパイルします。

tcc ARBT.C
ARBT.EXE < ARBT.DAT > ARBT.OUT

GATES.H
HC.H
USEHC.H
ARBT.C
ARBT.DAT
ARBT.OUT

F/Fをリセット出来なかった例

Turbo Cにてコンパイルして使います。
LSI-C86試食版ではメモリオーバーになってしまい、コンパイルできません。

tcc ODM.C
ODM.EXE < ODM.PAT > ODM.OUT

ODM.LCD:LCT.EXE用ネットリスト
GATES.H
ODM.C
ODM.PAT
ODM.OUT

F/FのRDXをゲートで作ったネガティブエッジD-F/FタイプのRDXNEDFF
(GATES.HにあるNEDFFのリセット等を変更)に変えると、
Q='1'の所が出て来て、色々やりましたがどうしてもリセット出来ませんでした。
RDXNEDFF(ゲート)で正常動作(正常リセット)出来れば、
RDX(クロックドTBUF)でもリセット及びデータのラッチが出来ると思われます。
なお、実物のICでは動作しました。

(参考)
HP200LXとは、直接は関係ないですが検算のために、
verilogのテストパターンとネットリストと出力結果を示します。動きました。
t_odm.v
odm.v
odm.o
ちなみに、故障シミュレーションの検出率は75%位でした。


トップページへ


メールはこちらまで

@NIFTY ID:RXS02316@nifty.com