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
日付 07/23/2011
ステータス アーカイブ
種類 一般