Return to Support Page
 homesearchagentssupportask xilinxmap

Answers Database


Foundation XVHDL: Using Global Set/Reset and STARTUP


Record #1376

Product Family:  Software

Product Line:  Metamor

Problem Title:
Foundation XVHDL:  Using Global Set/Reset and STARTUP


Problem Description:

Keywords:  GSR, Startup, Metamor

Versions:  F6.x, F1.3/F1.4

Urgency:  Standard

General Description:

Xilinx FPGAs have a dedicated Global Reset net which, when
asserted, will asynchronously initialize all flip-flops in
the device (set or reset for the XC4000 families; reset only
for the XC3000 and XC5200 families).

**Note that this solution applies to the Metamor XVHDL compiler
only.  If using the Express HDL compiler, Express will
automatically infer the STARTUP block for 4K/5K families if
there is a common reset signal connected to all of the
registers in the design.


Solution 1:

XC3000 Family
-------------
The XC3000 family devices have a dedicated RESET pin (active
low), which is connected to the Global Reset network.
Nothing special needs to be added to your VHDL code in order
to use this RESET capability.

If your design already contains a signal which asynchronously
resets all flip-flops, and you want to replace its function
with the dedicated RESET pin, the 'Xilinx_GSR' attribute may
be used to strip out your reset signal from the Xilinx
netlist.  The flip-flops in the resulting design can only be
reset by driving the RESET pin on the device low.

Refer to the section titled "Examples" for an example of
using the 'Xilinx_GSR' attribute.



Solution 2:

XC4000 and XC5200 Families
--------------------------
The XC4000 and XC5200 family devices allow any signal, either
external or internal, to serve as the global reset signal.

To use this dedicated Global Reset with Foundation VHDL, the
STARTUP symbol must be instantiated in the design, with your
set/reset signal connected to the GSR (XC4000) or GR (XC5200)
pin of the STARTUP symbol.

It is not necessary to include your set/reset signal in the
behavioral descriptions of the flip-flops in the design.  Any
signal that is used to behaviorally set/reset a flip-flop
will not use the dedicated Global Reset network, and that
set/reset signal will be OR'ed with the Global Reset signal
to asynchronously set/reset that flip-flop.


Note:  The STARTUP symbol is not functionally simulatable.

Refer to the section titled "Examples" for an example of
using the STARTUP symbol and the 'Xilinx_GSR' attribute.



Solution 3:

Examples
--------

--********************************************************
--Example of instantiating STARTUP. This example is for an --XC4000 design.  For
 an XC5200 design, replace GSR with GR.

library IEEE;
use IEEE.std_logic_1164.all;

entity USE_GSR is
   port (RESET, IN1, CLK: in std_logic;
	 OUT1: out std_logic);

end USE_GSR;

architecture TEST of USE_GSR is

   component STARTUP
      port (GSR: in std_logic);
   end component;

begin

--Instantiate STARTUP, and map RESET to the Global Reset net
   U1: STARTUP port map (GSR => RESET);

   process (CLK, RESET)
   begin
      if RESET='1' then
	 OUT1 <= '0';
      elsif (CLK'event and CLK='1') then
	 OUT1 <= IN1;
      end if;
   end process;

end TEST;

--*******************************************************
-- Example using an active-low signal to drive the GSR pin
-- of the STARTUP symbol.

library IEEE;
use IEEE.std_logic_1164.all;

entity INV_GSR is
 port (RESET, IN1, CLK: in std_logic;
       OUT1: out std_logic);
end INV_GSR;

architecture ACTIVE_LOW of INV_GSR is

 signal RESETN: std_logic;

 component STARTUP
  port (GSR: in std_logic);
 end component;

begin

RESETN <= not RESET;

U1: STARTUP  port map (GSR => RESETN);

 process (CLK, RESETN)
 begin
    if RESETN = '1' then
       OUT1 <= '0';
    elsif (CLK'event and CLK = '1') then
       OUT1 <= IN1;
    end if;
 end process;

end ACTIVE_LOW;

--*****************************************************
--Example of using XILINX_GSR attribute to remove RESET
--signal from netlist.	Use this for 3K designs, or for
--4K or 5K designs where the STARTUP symbol is on a
--top-level schematic.

library IEEE;
use IEEE.std_logic_1164.all;

entity USE_GSR is
   port (RESET, IN1, CLK: in std_logic;
	 OUT1: out std_logic);

--Declare the Xilinx_GSR attribute and use it to remove the
--RESET signal from the synthesized Xilinx netlist
   attribute Xilinx_GSR:  boolean;
   attribute Xilinx_GSR of RESET: signal is true;

end USE_GSR;

architecture TEST of USE_GSR is

begin

   process (CLK, RESET)
   begin
      if RESET='1' then
	 OUT1 <= '0';
      elsif (CLK'event and CLK='1') then
	 OUT1 <= IN1;
      end if;
   end process;

end TEST;



End of Record #1376

For the latest news, design tips, and patch information on the Xilinx design environment, check out the Xilinx Expert Journals!

© 1998 Xilinx, Inc. All rights reserved
Trademarks and Patents