コンパレータモジュールの残りのテストだが、動作モードによって、合計4系統の入出力を面倒見なければならない。
モードごとに、トップモジュールをちょっとずつ変更すればよいのだが、どうも面倒くさくて手がつかなかったのだが、コンパレータそのものは既にテストをしているので、細かなアナログ値を与えなくてくてもよいだろうということで、ハイ・インピーダンス、5v,0vと変化させてやればいいだろうということで、簡単なモジュールを作った。これでディジタル出力を擬似アナログ系の入力に接続できる。実際の回路をシミュレーションするときにも役に立つだろう。ポイントは、ifの条件式の===。RTLを書くときは普通使いませんが、これで、値がZかどうかを判断できます。実際の回路では、ハイインピーダンスかどうかを知るのはメンドウですけど、シミュレーションならではです。3ステートバスでハイインピーダンスになっているか否かをチェックする必要がありますので、必須ですね。
Spiceなどのアナログ・シミュレータなら、簡単なのだが、しょせんVerilogでアナログ量を扱おうとするところにムリがあるのは承知の上です(哂ってやってください)。
----
本日の御託
報道によれば、日立がパソコンの製造から撤退するそうだ。
最近,HPのOEMとかもはじめてたので,やばいなーって感じでしたが・・・
「ベーシックマスター」は日本発の「パソコン」だったのですが,伊藤美咲をつかっても,フローラはだめでしたねェ.
ベーシックマスターにはお世話になりましたよ。
-初代。
-ほぼ同じでBasicが実数型になったレベル2。
-初代のROMをレベル2とほぼ同等にしたものと交換したもの。
と使いましたね。カセットテープのインターフェースがついていたのだけれど、Basicのソースをテキストイメージでセーブ(しかも300ボーとかだった思う)するのでめちゃ遅いうえ、ロードの時は、ソースコードが大きくなると、1行分読み込んで、次の入力を受け付けることができる様になる前に、テープからは次の行のデータが来てしまいロードエラーになるしまつ。仕方ないので、「ピー、ヒョロヒョロ」の音を聴きながら、テープレコーダーのポーズボタンを押して、行の切れ目と思われる部分で、1~2秒くらい止めたりしてましたね(笑)。
レベル2は、リレーがついていてテープを止めることが自動でできました(大進歩!)。初代も、PCBにはリレー用のパターンがありましたが、実装されていませんでした。
もっとも、そのうち友人が、中間言語のバイナリのままテープに落とす方法を、秋葉のラジ館にあった日立のショールーム(「マイコンスペース」だっけ?)の兄ちゃんから教わってきて、その後はもっぱらその方法でしたが・・・
(あらら、インデントがぼろぼろ、後で直します)
module isolater(
output reg `ANALOG a_o ,
input d_i
) ;
always@ * begin
if( d_i === 1'bz ) begin
a_o = {64{1'bz}} ;
end // if
else if ( d_i == 1'b1 ) begin
a_o = $realtobits( 5.0 ) ;
end // else if
else begin
a_o = $realtobits( 0.0 ) ;
end // else
end // always
endmodule // isolater