INOUT
の編集
https://www.am.ics.keio.ac.jp/proj/asap/wiki/?INOUT
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
-- 雛形とするページ --
(no template pages)
[[ASAP Top]] verilogのinout制御はメモリ制御に深くかかわるはず。 そこでここではわかっている範囲の使いかたを紹介します。 まちがっていれば、ばんばん指摘してくださいませ。 FPGA側はデータバスからデータを読み込む時はHi-Zにする。 一方ターゲット側はFPGAがデータバスに書き込みを行っている時に出力がHi-Zでなければいけない。 verilogでは以下のようにかけるはず。 module biDirection( bus, readWrite); inout bus; input readWrite; // 0 = Write, 1 = Read assign bus = (readWrite) ? 1'bz : 1'b1 // readWriteがHighならHi-Z,そうでなれば値を出力 endmodule testベンチは次の感じ。 'timescale 1ns/1ps module biDirection_test; wire bus; reg readWrite; reg bus_register; parameter STEP=10 assign bus = bus_register; initial begin readWrite=1; bus_register=1'b0; #(STEP*10); bus_register=1'bz; readWrite=0; #(STEP*10); bus_register=1'b0; readWrite = 1; #(STEP * 10); $finish; end biDirection BD( .bus( bus), .readWrite( readWrite)); endmodule
タイムスタンプを変更しない
[[ASAP Top]] verilogのinout制御はメモリ制御に深くかかわるはず。 そこでここではわかっている範囲の使いかたを紹介します。 まちがっていれば、ばんばん指摘してくださいませ。 FPGA側はデータバスからデータを読み込む時はHi-Zにする。 一方ターゲット側はFPGAがデータバスに書き込みを行っている時に出力がHi-Zでなければいけない。 verilogでは以下のようにかけるはず。 module biDirection( bus, readWrite); inout bus; input readWrite; // 0 = Write, 1 = Read assign bus = (readWrite) ? 1'bz : 1'b1 // readWriteがHighならHi-Z,そうでなれば値を出力 endmodule testベンチは次の感じ。 'timescale 1ns/1ps module biDirection_test; wire bus; reg readWrite; reg bus_register; parameter STEP=10 assign bus = bus_register; initial begin readWrite=1; bus_register=1'b0; #(STEP*10); bus_register=1'bz; readWrite=0; #(STEP*10); bus_register=1'b0; readWrite = 1; #(STEP * 10); $finish; end biDirection BD( .bus( bus), .readWrite( readWrite)); endmodule
テキスト整形のルールを表示する