AR# 7595

|

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

説明

Keywords: 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
日付 07/25/2008
ステータス アクティブ
種類 一般
People Also Viewed