Process - noch eine Frage

Gast #388657
Hallo,
eine arcitecture kann so viele process(sensitve list) haben wie man
will,
vielleicht hast du in der sensitve list vergessen deine Signale
anzugeben.

Wenn sich ein Signal aus der sensitve list ändert, wird der Process
duchlaufen.

  chris
Gast #388659
Hi,

hier kurz der Code:

ENTITY DFF is
    Port ( D : in  STD_LOGIC;
           Reset : in  STD_LOGIC;
        Clk: in STD_LOGIC;
           Q : out  STD_LOGIC;
           NQ : out STD_LOGIC);
end  ENTITY  DFF;

architecture Behavioral of DFF is
  signal temp: STD_LOGIC;
begin

  Kill: process (Reset)
  begin
    if(Reset = '0') then
      Q <= '0';
    end if;
  end process Kill;

  Status: process (Clk)
  begin    if (Clk'event and Clk = '1') then
    Q <= D;
    end if;
  end process Status;



--  process (Clk, Reset)
--  begin
--    if ( Reset = '0') then
--      Q <= '0';
--    elsif ( Clk'event and Clk = '1') then
--      Q <= D;
--    end if;
--  end process;

end Behavioral;


Der auskommentierte Code ist eine Zusammenfassung von den beiden
anderen Prozessen, was auch funktioniert.

Sind Status und Kill beide aktiv funktioniert es nicht, kommentiere ich
noch einen der beiden aus funktioniert der andere.

Könnt ihr mir sagen, womit das zu tun haben könnte?


TIM :)
Gast #388661
Moin...

...was eine einfache Angabe der Fehlermeldung übrigens auch erbraht
hätte.

Der auskommentierte Teil ist übrigens die "klasissche" Version des
asynchronen Reset. Nur noch rising_edge(clk) statt clkevent und clk=1
und ab dafür.

--
 SJ
Gast #388662
Hi,

danke für die schnelle Antwort.
Darf ich denn auf ein Signal aus zwei Prozessen schreiben, welches ich
vorher in der Architectur deklariert habe?

TIM :)
#388663
Man darf von 2 Prozessen auf ein Signal schreiben, aber man sollte dies
nur in Testbenches machen.

Bei entities, welche man synthetisieren will, sollte man es nicht
tunlichst nicht.
Du kannst Dir überlegen daß es zu einem Konflikt kommt, wenn der eine
Prozess eine '1' schreiben will, der andere aber eine '0'.
Manche Compiler können den Konflikt auflösen, indem sie die beiden
Werte oder-, bzw. und- verknüpfen.
Normalerweise ist es nicht notwendig, aus 2 Prozessen ein Signal zu
schreiben.
#388664
Hallo Tim,

http://www.carookee.de/forum/VHDL/14/Unterschied_zwischen_Prozee.10877964-0-01105

scheint dasselbe Posting zu sein :-)

> Darf ich denn auf ein Signal aus zwei Prozessen
> schreiben, welches ich vorher in der Architectur
> deklariert habe?

Ja schon. Du musst das Signal aber als resolved
deklarieren. z.B. ist std_logic und std_logic_vector
als resolved definiert.
Normalerweise verwendet man sowas, wenn man Tristate-
Busse beschreiben möchte. (Ich würde es in keinem
anderen Fall verwenden, und bei Tristate auch sehr
"explizit" beschreiben, do dass die Tristatebuffer
vom Rest der Schaltung irgendwie separiert sind.)

Achtung, Du musst selber dafür sorgen, dass das Signal
nur "sinnvoll" getrieben wird, z.B. im einen Prozess
Tristate ist (oder zumindest H, L oder W), während´
der andere darauf schreibt. Wenn nicht, passiert
das, was Du in deinem Beispiel beschreibst ... ;-)

Der Wert des Signals wird über die sogenannte
Resolution Function bestimmt. Hierbei ergibt z.B.
0 und 0,Z,L,H,W = 0, 0 und 1,X,- = X, 0 und U = U,
analog für 1 usw ...
Schau einfach mal in die IEEE std_logic-Library (ist
normalerweise irgendwo unter Soucre Code, IEEE bei
der Installation des Simulators.

> ...was eine einfache Angabe der Fehlermeldung
> übrigens auch erbraht hätte.

Nicht unbedingt. Wenn das Signal als std_logic definiert
ist, dann ist dies aus Sicht von VHDL zulässig (std_logic
ist resolved std_ulogic). Bei std_ulogic oder bit hätte
es ne Fehlermeldung gegeben. Normalerweise bekommt man
während der Synthese auch ne Warning oder ne Note (zumindest
machen manche Synthesetools das so).

Gruss,

Alex
Gast #388665
Hi,

@Klaus Falser: Hast recht, braucht ein bisschen länger um die Logik zu
verstehen. Ist mir aber nun klar wieso es nicht funktionieren kann.

@Alex: Jep ist auch mein Eintrag. Da dort keine aktuelle Nachricht war,
wusste ich nicht wie aktiv das Board noch ist. Hätte sonst nicht doppelt
gepostet. Sorry.


Grüsse,

TIM :)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.