reset generator

Gast #660628
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;
Angehängte Dateien:
Gast #660678
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.
#660927
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);

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren