差動IOバッファのインスタンシエート

[] [] []


FPGAIOバッファはLVDSなどの差動信号も使える。RTL記述上は1つの信号のままにしておいても、ピンアサインのときに自動的にP,N2個のピンにアサインされるようであるが、RTL記述の入出力ポートと実際のピン名を11にするには、差動IOバッファをインスタンシエートする

module

  (input din_p

  ,input din_n

  ,output dout_p

  ,output dout_n

  ...);

/* Xilinxの差動IOバッファ */

IBUFDS ibufds_din(.O(din),.I(din_p),.IB(din_n));

OBUFDS obufds_dout(.O(dout_p),.OB(dout_n),.I(dout));

多ビットの場合はビット数分だけインスタンシエートしなければならないので、generate文を使うとよい。

genvar i;

generate for(i=0; i<=7; i=i+1) begin: diff_din

  IBUFDS ibufds_din(.O(din[i]),.I(din_p[i]),.IB(din_n[i]));

end endgenerate

generate文は、たぶん論理合成の前処理としてコードを書き下してるのだと思う。

IBUFDS ibufds_din0(.O(din[0]),.I(din_p[0]),.IB(din_n[0]));

IBUFDS ibufds_din1(.O(din[1]),.I(din_p[1]),.IB(din_n[1]));

...

IBUFDS ibufds_din6(.O(din[6]),.I(din_p[6]),.IB(din_n[6]));

IBUFDS ibufds_din7(.O(din[7]),.I(din_p[7]),.IB(din_n[7]));


[] [] []