2017-05-09 9 views
0

Verilogを使用して2つのピンをアルテラのFPGAに接続しようとしています。fpga Verilogの入力ピンに入力ピンを割り当てる

具体的には、inoutピンをinputピンに接続しています。私はエラーが発生します。

ピン "<名>は、" 複数のドライバ

エラーは、このリンク上で説明されています。

Altera description

これが解決策です:

module multi_driver(inout o, input a, b, en); 

    // Input a directly drives the bidir pin w/o a tri-state condition 
    assign o = a; 

    // If en = 1 below, there will be an electrical conflict in the design. 
    // To avoid this possibility, the Quartus II software issues an error 
    assign o = (en) ? b : 1'bz; 

endmodule 

誰かがラインassign o = (en) ? b : 1'bz;が正確に何を説明してもらえますか?

+2

[Verilog疑問符(?)演算子の可能な複製](http://stackoverflow.com/questions/12336139/verilog-question-mark-operator) –

+0

あなたが言及したコードは解決策ではありませんが、誤ったコードの例: "たとえば、次のデザインが正しく合成されていません"。 – Qiu

答えて

0

assign o = (en) ? b : 1'bz;は、Verilogのトライステートラッチテンプレートです。 enが高い場合、oポートが出力され、その値はbになります。 enがローの場合、o1'bz(つまりハイインピーダンス状態)になります。高インピーダンス状態とは、モジュールの外部から強制されているもの(つまり入力されているもの)の形状をとることを意味します。

あなたが別の信号を強制的に入力しようとした場合assign o = a;en信号に関係なく、信号に複数のドライバがあることを警告します。ピンがハイ・インピーダンス状態のときのみ、モジュールからの信号を接続することができます。

関連する問題