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

Exemplar、Synplify - 電源投入時に FPGA でフリップフロップを初期化する方法 (VHDL/Verilog)

説明

キーワード : preset, set, initialize, flip-flop, flip, flop, FF, VHDL, Exemplar, register, Synplicity, Express, Exemplar init, Synplify init, プリセット, セット, 初期化, フリップフロップ, レジスタ

重要度 : 標準

概要 :
電源投入時に FPGA でフリップフロップを初期化する方法について (VHDL/Verilog)

(注 : このアンサーは XC4000 デバイスのみに適用されます。)

ソリューション

1

動作中にユーザー セットが必要な場合、HDL コードでプリセット/リセット フリップフロップを記述し、セット信号に接続する ROCBUF をインスタンシエートします。 ザイリンクス ツールは、インプリメンテーション中に ROCBUF を自動的に削除します。

ROCBUF の詳細については、(ザイリンクス アンサー #4686) を参照してください。

VHDL の例 :

library IEEE;
use IEEE.std_logic_1164.all;

entity d_register is
port (CLK : in std_logic;
RESET : in std_logic;
D0: in std_logic;
D1: in std_logic;
Q0 : out std_logic;
Q1 : out std_logic);

end d_register;

architecture XILINX of d_register is
signal RESET_int : std_logic;

component ROCBUF is port (I : in STD_LOGIC;
O : out STD_LOGIC);
end component;


begin

U1: ROCBUF port map (I => RESET, O => RESET_int);

process (CLK, RESET_int)
begin
if RESET_int = '1' then
Q0 <= '0';
Q1 <= '1';

elsif rising_edge(CLK) then
Q0 <= D0;
Q1 <= D1;
end if;
end process;

end XILINX;

2

Verilog の例 :

* 注 : Synplify の場合、次のように ROCBUF に blackbox 属性を設定します。

module ROCBUF (I, O); //synthesis syn_black_box
input I;
output O;
endmodule
*/

module rocbuf_example (reset, clk, d0, d1, q0, q1) ;
input reset;
input clk ;
input d0;
input d1;
output q0 ;
output q1 ;
reg q0, q1;
wire reset_int;

ROCBUF u1 (.I(reset), .O(reset_int));

always @ (posedge clk or posedge reset_int) begin
if (reset_int) begin
q0 = 1'b0;
q1 = 1'b1;
end
else
begin
q0 = d0;
q1 = d1;
end
end
endmodule

module ROCBUF (I, O);
input I;
output O;
endmodule
AR# 4488
作成日 08/31/2007
最終更新日 04/24/2007
ステータス アーカイブ
タイプ 一般