ザイリンクスIOBUFの使用法



Usage Xilinx Iobuf



転送元: https://www.cnblogs.com/kevinchase/p/7813664.html

vivadoでは、接続されたピンの信号により、通常、OBUFまたはIBUFが自動的に追加されます。



ただし、入出力タイプのインターフェースの場合、入出力スイッチングには制御信号が必要であり、ユーザーが割り当てる必要があるため、IOBUFはアクティブに追加されません。

IOBUFの標準的な例は、言語テンプレートにあります。



1

3



4

5

6

7

8

9

10

十一

12

13

14

15

// IOBUF: Single-ended Bi-directional Buffer

// All devices

// Xilinx HDL Language Template, version 2017.2

IOBUF #(

.DRIVE(12), // Specify the output drive strength

.IBUF_LOW_PWR('TRUE'), // Low Power - 'TRUE', High Performance = 'FALSE'

.IOSTANDARD('DEFAULT'), // Specify the I/O standard

.SLEW('SLOW') // Specify the output slew rate

) IOBUF_inst (

.O(O), // Buffer output

.IO(IO), // Buffer inout port (connect directly to top-level port)

.I(I), // Buffer input

.T(T) // 3-state enable input, high=input, low=output

)

ここで、inout spi_io [0]と呼ばれる双方向ポートをインスタンス化します。

1

3

4

5

6

7

8

9

10

十一

IOBUF #(

.DRIVE(12), // Specify the output drive strength

.IBUF_LOW_PWR('TRUE'), // Low Power - 'TRUE', High Performance = 'FALSE'

.IOSTANDARD('DEFAULT'), // Specify the I/O standard

.SLEW('SLOW') // Specify the output slew rate

) IOBUF_inst_io0 (

.O(s_din[0]), // IO_pad input. The pin is output to the internal signal through the IBUF buffer

.IO(spi_io[0]), // pad interface/pin

.I(s_dout[0]), // Output to IO_pad. Internal signals are buffered to pins via OBUF

.T(x_writ_read) // When IO_pad needs input, enable OBUF to make it output high configuration.

)

1.プリミティブのO / IはこのBUF用であり、ピン用ではないので注意してください。

.IO()ポートをパッドピンの側面と見なし、

ioに出力する必要のある内部信号は.I()に入力され、OBUFバッファを介して.IO()ピンに出力されます。

.IO()ピンから入力された信号は、IBUFによって.O()の内部信号にバッファリングされます。

入力信号が正しい場合、この時点でOBUFは高インピーダンスzである必要があります。つまり、.T()が有効である必要があります。

したがって、.T()はピン入力のイネーブル条件を満たします。つまり、出力は無効です。ここで読み取られます。

2.プリミティブは、1つの信号の処理のみをサポートします。マルチビットバスを処理している場合は、ループステートメントを使用する必要があります。

1

3

4

5

6

7

genvar i

generate

for(i=0i<8i=i+1)

begin

// iobuf

end

endgenerate