Forum: FPGA, VHDL & Co. reset generator


von Rudi (Gast)


Angehängte Dateien:

Lesenswert?

Hallo miteinander,
ich möchte aus einem dauer Enable signal ein reset generieren. Die 
simulation (siehe Anhang) funktioniert soweit, nur bei der sysnthese 
bekomme ich die Fehlermeldung: 'unsupported or non-rtl constructs 
detected in the following modules'. im "Flag_proc" Prozess.
Könnte mir jemand sagen wie ich das korrigieren kann?

Vielen Dank.
Grüsße


library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;


entity ResetGenerator is
    port( clock : in std_logic;
     iEnablePin : in std_logic;
       oResetOn : out std_logic
       );
end entity;

architecture ResetGenerator_arch of ResetGenerator is

signal s_SetReset, s_ResetSet : std_logic;
signal s_count : natural;

begin
    Flag_proc: process(iEnablePin,s_ResetSet)
    begin
        if iEnablePin'event and iEnablePin = '1' and s_ResetSet = '0' 
then
            s_SetReset <= '1';
        else
            s_SetReset <= '0';
        end if;
    end process;

    Rst_proc : process(clock,s_SetReset)
    begin
        if rising_edge(clock) then
            -- oResetOn <= '0';
            s_count <= 0;
            if s_SetReset = '1' then
                for  i in 0 to 2 loop
                   s_count <= s_count+1;
                   oResetOn <= '1';
                end loop;
                s_ResetSet <= '1';
            else
               oResetOn <= '0';
               s_ResetSet <= '0';
            end if;
        end if;
    end process;
end architecture;

von Jan M. (mueschel)


Lesenswert?

Ein enable-Signal ist keine Clock und wird daher auch nicht mit 
iEnablePin'event and iEnablePin = '1' abgefragt. Synchronisiere das 
Signal und nutze es dann direkt als Enable- oder Reset-Signal.

von sega (Gast)


Lesenswert?

gated clock nennt man sowas. Ich würde das trennen:

process (clock, reset, enable=
IF clock event
   -- clocked
   IF if enable
      ...
   END IF;
EDN IF;

-- non clocked
if enable
   ...
end if

von Rudi (Gast)


Lesenswert?

Das Problem das ich über kein Reset-, sondern dieses Enable-Signal 
verfüge und muss daraufhin einen Zustandsautomat und andere Entities 
rücksetzen. Allerdings bleibt dieses Signal die Zeit der Simulation an 
und kann daher nicht als reset benutzt werden.

von Johannes T. (johnsn)


Lesenswert?

Ich würde sowas eher als Clear bezeichnen. In meinen Designs definiere 
ich einen Reset, wenn ich die gesamte Logik wieder in den 
Ausgangszustand versetzen will (etwa nach Power-On Reset). Wenn ich 
während des Betriebs nur einen Teil rücksetzen will, mach ich das mit 
Clear-Signalen.

Ich würde das Enable-Signal einsychnronisieren (sofern asynchron), 
gleichzeitig einen Flankendetektor einbauen und dann auf die steigene 
reagieren.

zB:
1
EnableRisingEdge <= EnableSync and (not EnableSyncPrevious);

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.