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# 9849

3.4 FPGA Express - FPGA Express で LVDS/LVPECL IOSTANDARD を使用する方法について

説明

キーワード : LVDS, IOSTANDARD, VHDL, Verilog, IBUF, OBUF, LVPECL

重要度 : 標準

概要 :
FPGA Express が IBUF_LVDS, IBUF_LVPECL、OBUF_LVDS、OBUF_LVPECL、IOBUF_LVDS、IOBUF_LVPECL を有効なプリミティブとして認識しません。LVDS バッファをインスタンシエートしようとすると、I/O バッファが挿入されて、インプリメンテーション ツールでデザインを実行するときにエラーが発生します。

(ザイリンクス アンサー 8202) を参照してください。

ソリューション

1

VHDL:

LVDS 標準をデザインに正しく取り入れるには様々な方法があります。ここでは、I/O に LVDS を使用した、フリップフロップの VHDL コードの記述例を示します。 ピンの位置の制約は Virtex-E CS144 パッケージのものと対応します。デザイン内で LVDS 標準を使用する際の詳細については、http://support.xilinx.co.jp/partinfo/ds022.pdf の Virtex-E データ シートの中の LVDS デザイン ガイドを参照してください。

(LVPECL 規格を使用する場合は、このコード内で「LVDS」を「LPECL」に置き換えてください。)

library IEEE;
use IEEE.std_logic_1164.all;

entity flip_flop is
port(d: in std_logic;
clk : in std_logic;
q : out std_logic;
q_n : out std_logic);
end flip_flop;

architecture flip_flop_arch of flip_flop is

component IBUF
port(I: in std_logic;
O: out std_logic);
end component;

component OBUF
port(I: in std_logic;
O: out std_logic);
end component;

attribute IOSTANDARD : string;
attribute LOC : string;

attribute IOSTANDARD of u1 : label is "LVDS";
attribute IOSTANDARD of u2 : label is "LVDS";
attribute IOSTANDARD of u3 : label is "LVDS";

----------------------------------------------------------------------------------------------
-- Pin location A5 on the CS144 package represents the 'positive' LVDS pin.
-- Pin location D8 represents the 'positive' LVDS pin.
-- Pin location C8 represents the 'negative' LVDS pin.
----------------------------------------------------------------------------------------------

attribute LOC of u1 : label is "A5";
attribute LOC of u2 : label is "D8";
attribute LOC of u3 : label is "C8";

signal d_lvds, q_lvds, q_lvds_n : std_logic;

begin

u1: IBUF port map (d,d_lvds);
u2: OBUF port map (q_lvds,q);
u3: OBUF port map (q_lvds_n,q_n);

process (clk) begin
if clk'event and clk = '1' then
q_lvds <= d_lvds;
end if;
end process;

q_lvds_n <= not(q_lvds);

end flip_flop_arch;

2

Verilog:

LVDS 標準をデザインに正しく取り入れるには様々な方法があります。ここでは、I/O に LVDS を使用した、フリップフロップの Verilog コードの記述例を示します。 ピンの位置の制約は Virtex-E CS144 パッケージのものと対応します。 デザイン内で LVDS 標準を使用する際の詳細については、http://support.xilinx.co.jp/partinfo/ds022.pdf のVirtex-E データ シートの中の LVDS デザイン ガイドを参照してください。

(LVPECL 規格を使用する場合は、このコード内で「LVDS」を「LPECL」に置き換えてください。)

module flip_flop (d, clk, q, q_n);

*******************************************************************************
Pin location A5 on the CS144 package represents the 'positive' LVDS pin.
Pin location D8 represents the 'positive' LVDS pin.
Pin location C8 represents the 'negative' LVDS pin.
*******************************************************************************

input d;
//synopsys attribute LOC "A5"

input clk;

output q;
//synopsys attribute LOC "D8"

output q_n;
//synopsys attribute LOC "C8"

wire d,clk,d_lvds,q;

reg q_lvds;

IBUF u1 (.I(d), .O(d_lvds));
//synopsys attribute IOSTANDARD "LVDS"

OBUF u2 (.I(q_lvds), .O(q));
//synopsys attribute IOSTANDARD "LVDS"

OBUF u3 (.I(q_lvds_n), .O(q_n));
//synopsys attribute IOSTANDARD "LVDS"

always @(posedge clk) q_lvds=d_lvds;

assign q_lvds_n=~q_lvds;

endmodule

3

UCF:

次に、上記の 2 つの例の中のポート名を使用した UCF ファイルの例を示します。UCF シンタックスを使用する場合は、IOSTANDARD および LOC 属性を HDL を用いて渡す必要はありません。デザイン内で LVDS 標準を使用する際の詳細については、http://support.xilinx.co.jp/partinfo/ds022.pdf のVirtex-E データ シートの中の LVDS デザイン ガイドを参照してください。

(LVPECL 規格を使用する場合は、「LVDS」を「LPECL」に置き換えてください。)

NET "d" LOC = A5; #positive LVDS location
NET "q" LOC = D8; #positive LVDS location
NET "q_n" LOC = C8; #negative LVDS location

NET "d" IOSTANDARD = LVDS;
NET "q" IOSTANDARD = LVDS;
NET "q_n" IOSTANDARD = LVDS;
AR# 9849
作成日 08/31/2007
最終更新日 07/23/2011
ステータス アーカイブ
タイプ 一般