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

EXEMPLAR 1999.1x - HDL 属性を使用した I/O 標準 (IOSTANDARD 属性) のポートへのコンフィギュレーション方法 (VHDL/Verilog)

説明

キーワード : PCI_33_GTL, I/O, IO standards, buffers, TCL script, LVDS, LVPECL, IOSTANDARD, 標準, バッファ, スクリプト

重要度 : 標準

概要 :
特定の I/O 標準をデザインに使用する場合の Exemplar の TCL スクリプト (コマンド ライン) または HDL コードを使用した I/O 標準のバッファの使用方法

ソリューション

1

非差動 I/O 標準の TCL スクリプトを使用するには、最上位ポートの名前を認知していないと、コマンド ラインまたはスクリプトから属性を使用できません。

例 :
次は、data_in という最上位ポート名が含まれる例です。

set part v50ecs144

- Virtex の場合 xcv ライブラリ、Virtex-E の場合 xcve を使用 :
load_library xcve


- VHDL/Verilog ファイルの読み込み :
read d_register.v

- data_in ポートに PAD 属性を設定 :
PAD IBUF_PCI_33_GTL data_in

optimize -target xcve
auto_write ff_example.edf

2

VHDL 属性を使用した LVDS I/O 標準の使用
- LVPECL を使用するには、LVDS を LVPECL に変更します。
- この例で TCL スクリプトを使用するには、コードから PAD 属性を削除し、これを TCL ファイルで設定します。

例 :
次は、入力、出力、双方向 I/O の例です。

library IEEE, exemplar;
use IEEE.std_logic_1164.all;
use exemplar.exemplar_1164.all;

entity LVDSIO_att is
port (CLK, DATA, Tin : in STD_LOGIC;
IODATA_p, IODATA_n : inout STD_LOGIC;
Q_p, Q_n : buffer STD_LOGIC
);
attribute pad: string;
attribute pad of clk : signal is "IBUFG_LVDS";
attribute pad of DATA: signal is "IBUF_LVDS";
attribute pad of Tin : signal is "IBUF_LVDS";
attribute pad of Q_p : signal is "OBUF_LVDS";
attribute pad of Q_n : signal is "OBUF_LVDS";
attribute pad of IODATA_p: signal is "IOBUF_LVDS";
attribute pad of IODATA_n: signal is "OBUFT_LVDS";
attribute buffer_sig of clk: signal is "BUFG";
end LVDSIO_att;


architecture BEHAV of LVDSIO_att is
signal iodata_in: std_logic;
signal iodata_out : std_logic;
signal iodata_n_out: std_logic;

begin
My_D_Reg: process (CLK, DATA)
begin
if (CLK'event and CLK='1') then
Q_p <= DATA;
end if;
end process; -- End My_D_Reg

Q_n <= not Q_p;
iodata_out <= DATA and iodata_in;
iodata_in <= iodata_p;
iodata_n_out <= not iodata_out;

io_p:process (Tin)
begin
if (Tin = '0') then
iodata_p <= iodata_out;
else
iodata_p <= 'Z';
end if;
end process;

io_n:process (Tin)
begin
if (Tin = '0') then
iodata_n <= iodata_n_out;
else
iodata_n <= 'Z';
end if;
end process;
end BEHAV;

3

Verilog 属性を使用した LVDS I/O 標準の使用
- LVPECL を使用するには、LVDS を LVPECL に変更します。
- この例で TCL スクリプトを使用するには、コードから PAD 属性を削除し、これを TCL ファイルで設定します。

例 :
次は、入力、出力、双方向 I/O の例です。

module LVDSIO_att (CLK, DATA, Tin, IODATA_p, IODATA_n, Q_p, Q_n);
input CLK; // exemplar attribute CLK PAD IBUFG_LVDS
/* I want to add another attribute for CLK to infer BUFG */

input DATA; //exemplar attribute DATA PAD IBUF_LVDS
input Tin; // exemplar attribute Tin PAD IBUF_LVDS
inout IODATA_p; // exemplar attribute IODATA_p PAD IOBUF_LVDS
inout IODATA_n; //exemplar attribute IODATA_n PAD OBUFT_LVDS
output Q_p; //exemplar attribute Q_p PAD OBUF_LVDS
output Q_n; // exemplar attribute Q_n PAD OBUF_LVDS

wire iodata_in;
wire iodata_out;
wire iodata_n_out;
reg Q_p;

always @(posedge CLK)
begin
Q_p <= DATA;
end

assign Q_n = ~Q_p;
assign iodata_out = DATA && iodata_in;
assign iodata_in = IODATA_p;
assign iodata_n_out = ~iodata_out;

assign IODATA_p = (Tin== 1'b0)? iodata_out: 1'bZ;
assign IODATA_n = (Tin == 1'b0)? iodata_n_out: 1'bZ;

endmodule
AR# 8074
作成日 11/16/1999
最終更新日 04/24/2007
ステータス アーカイブ
タイプ 一般