UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 9462

EXEMPLAR、SYNPLIFY - LVPECL または LVDS を HDL でインスタンシエートする方法 (VHDL/Verilog - Virtex-E/Spartan-IIE のみ)

説明

キーワード : Leonardo, Spectrum, Synplicity, Virtex, Virtex-E, VirtexE, LVDS, differential, I/O, IO, standard, 差動, 規格

重要度 : 重要

概要 :
LVPECL または LVDS を HDL でインスタンシエートする方法を示します。

ソリューション

1

次に、V50ECS144 での LVDS I/O のインスタンシエーションおよびロケーション制約の例を示します。

LVPECL I/O 規格を使用するには、バッファをインスタンシエートする際に「LVDS」を「LVPECL」に置き換えます。 (たとえば、「IBUF_LVDS」を「IBUF_LVPECL」に置き換えます。)

LVPECL/LVDS の詳細については、アプリケーション ノート (Xilinx XAPP133) 『Virtex SelectIO リソースの使い方』を参照してください。

メモ :
- これは、どの合成ツールでも使用できる一般的な例です。 Synplify をご使用の場合は、ライブラリ unisim (VHDL) または unisim.v (Verilog) が HDL コード内に含まれていることを確認してください 詳細については、(Xilinx Solution 244) を参照してください。

- FPGA Express では IBUF_LVDS、IBUF_LVPECL、OBUF_LVDS、OBUF_LVPECL、IOBUF_LVDS、IOBUF_LVPECL は有効なプリミティブとして認識されません。 LVDS バッファをインスタンシエートしようとすると、I/O バッファが挿入されて、インプリメンテーション ツールでデザインを実行するときにエラーが発生します。 このフローを使用する場合は、(Xilinx Solution 9849) を参照してください。

- 双方向 LVPECL I/O は現在サポートされていません。 詳細については、(Xilinx Solution 8631) を参照してください。

Synplify 固有の属性については、(Xilinx Solution 1995) を参照してください。

LeonardoSpectrum 固有の属性については、(Xilinx Solution 8074) を参照してください。

VHDL の例
この例には、LVDS 入力、出力、および双方向 I/O が含まれています。

library IEEE;
use IEEE.std_logic_1164.all;
entity LVDSIO is
port (CLK, DATA, Tin : in STD_LOGIC;
IODATA_p, IODATA_n : inout STD_LOGIC;
Q_p, Q_n : out STD_LOGIC
);
end LVDSIO;


architecture BEHAV of LVDSIO is

component IBUF_LVDS is port (I : in STD_LOGIC;
O : out STD_LOGIC);
end component;

component OBUF_LVDS is port (I : in STD_LOGIC;
O : out STD_LOGIC);
end component;

component IOBUF_LVDS is port (I : in STD_LOGIC;
T : in STD_LOGIC;
IO : inout STD_LOGIC;
O : out STD_LOGIC);
end component;

component INV is port (I : in STD_LOGIC;
O : out STD_LOGIC);
end component;

component IBUFG_LVDS is port(I : in STD_LOGIC;
O : out STD_LOGIC);
end component;

component BUFG is port(I : in STD_LOGIC;
O : out STD_LOGIC);
end component;

signal iodata_in : std_logic;
signal iodata_n_out: std_logic;
signal iodata_out: std_logic;
signal DATA_int : std_logic;
signal Q_p_int : std_logic;
signal Q_n_int : std_logic;
signal CLK_int : std_logic;
signal CLK_ibufgout : std_logic;
signal Tin_int : std_logic;

begin
UI1: IBUF_LVDS port map ( I => DATA, O => DATA_int);
UI2: IBUF_LVDS port map (I => Tin, O => Tin_int);
UO_p: OBUF_LVDS port map ( I => Q_p_int, O => Q_p);
UO_n: OBUF_LVDS port map ( I => Q_n_int, O => Q_n);
UIO_p: IOBUF_LVDS port map ( I => iodata_out, T => Tin_int, IO => iodata_p,
O => iodata_in);
UIO_n: IOBUF_LVDS port map ( I => iodata_n_out, T => Tin_int, IO => iodata_n,
O => open);

UINV: INV port map ( I => iodata_out, O => iodata_n_out);
UIBUFG : IBUFG_LVDS port map ( I => CLK, O => CLK_ibufgout);
UBUFG : BUFG port map (I => CLK_ibufgout, O => CLK_int);

My_D_Reg: process (CLK_int, DATA_int)
begin
if (CLK_int'event and CLK_int='1') then
Q_p_int <= DATA_int;
end if;
end process; -- End My_D_Reg

iodata_out <= DATA_int and iodata_in;

Q_n_int <= not Q_p_int;

end BEHAV;

2

Verilog の例
この例には、LVDS 入力、出力、および双方向 I/O が含まれます。

module LVDSIOinst (CLK, DATA, Tin, IODATA_p, IODATA_n, Q_p, Q_n) ;
input CLK, DATA, Tin;
inout IODATA_p, IODATA_n;
output Q_p, Q_n;

wire iodata_in;
wire iodata_n_out;
wire iodata_out;
wire DATA_int;
reg Q_p_int;
wire Q_n_int;
wire CLK_int;
wire CLK_ibufgout;
wire Tin_int;


IBUF_LVDS UI1 ( .I(DATA), .O( DATA_int));
IBUF_LVDS UI2 (.I(Tin), .O (Tin_int));
OBUF_LVDS UO_p ( .I(Q_p_int), .O(Q_p));
OBUF_LVDS UO_n ( .I(Q_n_int), .O(Q_n));
IOBUF_LVDS UIO_p ( .I(iodata_out), .T(Tin_int), .IO(IODATA_p),
.O (iodata_in));
IOBUF_LVDS UIO_n ( .I (iodata_n_out), .T(Tin_int), .IO(IODATA_n),
.O ());

INV UINV ( .I(iodata_out), .O(iodata_n_out));
IBUFG_LVDS UIBUFG ( .I(CLK), .O(CLK_ibufgout));
BUFG UBUFG (.I(CLK_ibufgout), .O(CLK_int));

always @ (posedge CLK_int)
begin
Q_p_int <= DATA_int;
end

assign iodata_out = DATA_int && iodata_in;

assign Q_n_int = ~Q_p_int;

endmodule

3

V50ECS144 をターゲットとした UCF 構文例

NET CLK LOC = A6; #GCLK3
NET DATA LOC = A4; #IO_L0P_YY
NET Q_p LOC = A5; #IO_L1P_YY
NET Q_n LOC = B5; #IO_L1N_YY
NET iodata_p LOC = D8; #IO_L3P_yy
NET iodata_n LOC = C8; #IO_L3N_yy
NET Tin LOC = F13; #IO_L10P
AR# 9462
作成日 08/31/2007
最終更新日 11/23/2010
ステータス アーカイブ
タイプ 一般