源内CADでオープンコレクタ
2009年9月18日
源内CADには、標準ではオープンコレクタ(オープンドレイン)の回路をシミュレートする機能が無い。自作コンピューターでは、回路簡略化のため、オープンコレクタ(+プルアップ)を多用する可能性が高い。これを源内CADでシミュレートするための仕組みを考えた。
作成した回路は2つ。オープンコレクタ出力部分と、プルアップつき入力部分である。
左の回路は、オープンコレクタ出力部分。入力がLの時、左の3ステートからの出力に従って、Lが出力される。入力がHになった場合、左の3ステートはHを出力した後にハイインピーダンスになる。源内CADの場合(ver 2.05)、3ステートからの出力を複数つなげた場合、最後に変化した出力の内容が信号線に情報として保持されるようである。従って、入力がL→Hと変化した場合、この回路の出力はHになる。オープンコレクタをひとつだけ利用する場合はこれでよいが、実際には2つ以上のものをつなげて利用する(でないと、利用する意味が無い)。そこを制御するのが右側の3ステートで、入力がLの時に、出力側の値がHへ変化してしまった場合に対応している。そういう場合に、もう一度Lに戻す動作を行う。
右の回路は、プルアップ付き入力部分。上部がプルアップに相当する回路であるが、実際にはパワーオンリセットのようなものである。右の部分は、上で説明したL出力を保持する動作と関係する。このL出力保持回路が動作するまでの間、入力が一時的にHになる。これを解消するためのもの。結果として、オープンコレクタ+プルアップの場合の特徴である、シグナルがHになったときに遅延が生ずる性質についても、シミュレートされている。
この回路は源内CAD ver 2.05では意図したように動作するが、他のバージョンではどうなるか分からない。
作成した回路は2つ。オープンコレクタ出力部分と、プルアップつき入力部分である。
左の回路は、オープンコレクタ出力部分。入力がLの時、左の3ステートからの出力に従って、Lが出力される。入力がHになった場合、左の3ステートはHを出力した後にハイインピーダンスになる。源内CADの場合(ver 2.05)、3ステートからの出力を複数つなげた場合、最後に変化した出力の内容が信号線に情報として保持されるようである。従って、入力がL→Hと変化した場合、この回路の出力はHになる。オープンコレクタをひとつだけ利用する場合はこれでよいが、実際には2つ以上のものをつなげて利用する(でないと、利用する意味が無い)。そこを制御するのが右側の3ステートで、入力がLの時に、出力側の値がHへ変化してしまった場合に対応している。そういう場合に、もう一度Lに戻す動作を行う。
右の回路は、プルアップ付き入力部分。上部がプルアップに相当する回路であるが、実際にはパワーオンリセットのようなものである。右の部分は、上で説明したL出力を保持する動作と関係する。このL出力保持回路が動作するまでの間、入力が一時的にHになる。これを解消するためのもの。結果として、オープンコレクタ+プルアップの場合の特徴である、シグナルがHになったときに遅延が生ずる性質についても、シミュレートされている。
この回路は源内CAD ver 2.05では意図したように動作するが、他のバージョンではどうなるか分からない。