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

8.2i CPLD CoolRunnerXPLA3/-II、XC9500 ファミリ - 遅延バッファの生成方法

説明

キーワード : 8.1i, 7.1i, 6.3i, 6.2i, 6.1i, 5.2i, 5.1i, 4.1i, 4.2i, XST, 9500XL, 9500XV, line, ライン

1 つの信号にロジック遅延レベルを追加する方法を教えてください。

ソリューション

1

ロジック遅延のレベルは、デバイスにより異なります。また、すべての CMOS デバイスは低い温度および高い電圧の場合はスピードが速くなるため、遅延はつねに一定であるとは限りません。

1 つの信号にロジック遅延レベルを追加するには、BUF コンポーネントをインスタンシエートし、入力に KEEP 属性を設定します。これは余剰ロジックであるため、合成ツールおよび CPLD フィッタは最適化をしません。KEEP 属性はソース コード (VHDL/Verilog/回路図) で設定しないと、バッファが合成で削除されてしまいます。

遅延が付いた信号は組み合わせ信号なので、インスタンシエートされた最初のバッファでは余分な遅延が追加されず、マクロセルからのパスを明確に記述するだけです。バッファを追加すると、遅延が増加します。
1 遅延バッファと同等の遅延を作成するには、2 倍のバッファが必要です。
2 遅延バッファと同等の遅延を作成するには、3 倍のバッファが必要です。


VHDL

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

library UNISIM;
use UNISIM.VComponents.all;

entity top is
Port ( din : in std_logic;
clk : in std_logic;
dout: out std_logic);
end top;

architecture behavioral of top is

signal dout_node : std_logic ;--define the output-signal of the flip-flop

attribute KEEP : string;
attribute KEEP of dout_node : signal is "TRUE"; --keep buffer from being optimized out

component buf
port( i : in std_logic; o : out std_logic);
end component;

begin

my_buf : buf
port map (
i => dout_node,
o => dout);

process (din, clk)
begin
if (clk'event) and (clk='1') then
dout_node <= din;
end if;
end process;

end behavioral;

2

Verilog

module top(input_a,clk,comb);
input input_a;
input clk;
output comb;

reg input_a_reg;

//synthesis attribute keep of input_a_reg is "true"
BUF mybuf (.I(input_a_reg),.O(comb));

always @(posedge clk)
begin
input_a_reg <= input_a;
end

endmodule

3

ABEL (ABEL XST Verilog フローを使用してください)

MODULE top
clk PIN;
din PIN;
dout PIN;

delay node istype 'keep';

BUF external (I -> O);
U1 functional_block BUF;

EQUATIONS

U1.I = din;
delay = U1.O;

dout := delay;
dout.clk = clk;

END

4

回路図 (XST VHDL フロー)

次の手順に従います。
1. BUF コンポーネントを挿入します。
2. 出力ネットをダブルクリックして [Object Properties] ダイアログ ボックスを表示します。[New] をクリックします。
3. [Attribute Name] のプルダウン メニューから [KEEP] を選択します。その他のフィールドは空欄にして、[OK] をクリックします。
4. 新しく作成した KEEP 属性を選択し、[Edit Traits] ボタンをクリックします。カテゴリには、[VHDL] を選択します。
5. [Write this Attribute] ボタンをオンにすると、下にあるチェックボックスが選択できるようになります。[In an attribute declaration statement] および [In an attribute statement] をオンにします。
6. [OK] をクリックし、[Object Properties] メニューに戻ります。再び [OK] をクリックし、回路図の表示に戻ります。

各 BUF コンポーネントにより、フィッタがロジック遅延のレベルを増加します。
AR# 7595
作成日 08/21/2007
最終更新日 07/25/2008
ステータス アクティブ
タイプ 一般