mikrocontroller.net

Forum: FPGA, VHDL & Co. reset generator


Autor: Rudi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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;

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: sega (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rudi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Johannes T. (johnsn)
Datum:

Bewertung
0 lesenswert
nicht 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:
EnableRisingEdge <= EnableSync and (not EnableSyncPrevious);

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.