AR# 3992

FPGA Express - VHDL または Verilog で同期リセットをインプリメントする方法について

説明

キーワード : FPGA Express, Foundation Express, set, reset, SR, SS, counter, セット, リセット, カウンタ

重要度 : 標準

概要 :
同期リセットまたは同期セットがレジスタまたはカウンタの同期エレメントにインプリメントされる場合、FPGA Express で合成すると、次のメッセージが表示されます。

Inferred memory devices in process
in routine jct_vhd line 18 in file
'H:/mydesign/counter.vhd'.
===============================================================================
| Register Name | Type | Width | Bus | AR | AS | SR | SS | ST |
===============================================================================
| COUNT_reg | Flip-flop | 8 | Y | N | N | N | N | N |
===============================================================================

COUNT_reg (width 8)
--------------------
set/reset/toggle: none


同期リセットがレポートされません。

ソリューション

上記のコードを使用すると、同期リセットがレジスタの D 入力 にある AND ゲートでインプリメントされます。詳細は『ライブラリ ガイド』の FDR インプリメンテーションを参照してください。 この方法に問題はありませんが、Xilinx デバイスの特性が使用されていません。

フリップフロップの同期セット/リセット ピンを使用するには、 Synopsys 属性ライブラリを使用してください。
sync_set_reset 属性は、コンストラクト (VHDL) またはコンパイラ命令 (Verilog) のあるシングル ビットの信号に付けられます。

Synopusys 属性は、次のように sync_set_reset 属性を使用するすべての VHDL エンティティの最上位に宣言する必要があります。

library synopsys;
use synopsys.attributes.all;

次に sync_set_reset 属性を各エンティティのリセット信号に付けます。 次は、同期リセットを推測する VHDL コードです。


architecture COUNT_ARCH of COUNTER is

signal COUNT: STD_LOGIC_VECTOR (7 downto 0);
attribute sync_set_reset of RESET: signal is "true";

begin

process (CLK, RESET)
begin
if (CLK'event and CLK='1') then
if (RESET='1') then
COUNT <= "00000000";
else
COUNT <= COUNT + 1;
end if;
end if;
end process;


Verilog ではライブラリを定義する必要はありませんが、 各 Verilog モジュールに対し属性を宣言する必要があります。 次は、同期リセットを推測する Verilog コードです。
//synopsys sync_set_reset "RESET"

always @(posedge CLK)
if (RESET)
COUNT = 8'b00000000;
else
COUNT = COUNT + 1;



FPGA Express のレポートは次のように変更されます。

Inferred memory devices in process
in routine jct_vhd line 18 in file
'H:/mydesign/counter.vhd'.
===============================================================================
| Register Name | Type | Width | Bus | AR | AS | SR | SS | ST |
===============================================================================
| COUNT_reg | Flip-flop | 8 | Y | N | N | Y | N | N |
===============================================================================

COUNT_reg (width 8)
--------------------
Sync-reset: RESET


同期セットでは SET 信号がアクティブの時出力に 0 ではなく 1 を割り当ててください。
AR# 3992
日付 08/11/2003
ステータス アーカイブ
種類 一般