Forum: FPGA, VHDL & Co. sensitivity list


von Alex T. (monstabug)


Lesenswert?

Hallo an Alle,

Kann mit jemand erklären warum bei folgendem process, "sel1" mit in die 
sensitivity list eingetragen wird? Danke!


1
process (clk, sel1)
2
begin
3
   if rising_edge(clk) then
4
      if (sel1='1') then
5
         out1 <= inp;
6
      end if;
7
   end if;
8
end process;

(gefunden auf: 
http://www.lothar-miller.de/s9y/categories/6-Clock-Enable)

von DDK (Gast)


Lesenswert?

Beim kombinatorischen Prozess enthält die sensitivity list ALLE Eingänge 
der kombinatorischen Funktionen.

Bei einem sequentiellen Prozess sind nur Clock- und Kontrollsignale in 
der sensitivity list.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Alex Trinker schrieb:
> Kann mit jemand erklären warum bei folgendem process, "sel1" mit in die
> sensitivity list eingetragen wird?
Ver§&%/$mt! Blöder copy&paste Fehler. Ist korrigiert...  ;-)

Kleiner Tipp: die Sensitivliste ist nur und ausschließlich für die 
Simulation interessant. Die Synthese gibt bestenfalls eine Warnung oder 
gar nur eine Info aus, wenn die nicht stimmt...

von Alex T. (monstabug)


Lesenswert?

Ok, so ganz klar ists mir jetzt nicht ^^

Das mit kombinatorischem/getaktetem process ist doch nur eine 
Konvention, oder? Also würde das Beispiel genau gleich arbeiten würde 
man das "sel1" rausstreichen?

Und was ist mit einem process mit async Reset, der würde dann ja auch 
weder rein getaktet noch rein kombinatprisch sein, oder nicht?

von Alex T. (monstabug)


Lesenswert?

Ah ok, das meintest du mit copy&paste fehler xD

Aber ist es nicht bei den beiden anderen prozessen ebenso überflüssig?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Alex Trinker schrieb:
> Das mit kombinatorischem/getaktetem process ist doch nur eine
> Konvention, oder? Also würde das Beispiel genau gleich arbeiten würde
> man das "sel1" rausstreichen?
Ja, und mehr noch: es ist sogar nur ohne sel1 richtig, denn dieser 
Prozess ist nur auf den clk sensitiv. Mit sel1 wird der Simulator 
unnötig oft bemüht (wobei auch der Simulator das merkt und sel1 
rausoptimiert)...

> Aber ist es nicht bei den beiden anderen prozessen ebenso überflüssig?
Funktionell (Syntheseergebnis) ja, formal aber nicht, der Synthesizer 
würde das Fehlen von sel2 oder sel3 anmeckern (obwohl das Gemeckere 
unnötig wäre)...

von Alex T. (monstabug)


Lesenswert?

Lothar Miller schrieb:
> Funktionell (Syntheseergebnis) ja, formal aber nicht, der Synthesizer
> würde das Fehlen von sel2 oder sel3 anmeckern (obwohl das Gemeckere
> unnötig wäre)...

Weil "sel" in der äußersten if abgefragt wird?

von Christian R. (supachris)


Lesenswert?

Einfach gesagt müssen alle Signale, die eine Änderung im Prozess 
hervorrufen sollen, in die Liste. Im obigen Fall wäre das nur Clk, weil 
ausschließlich bei einer steigenden Flanke an Clk was im Prozess 
passiert.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Ich würde das "sollen" aus dem Text streichen. Dann passt es. Denn die 
Sensitivliste kann nichts steuern, sondern muss ein korrektes Abbild des 
Prozesses sein.

Sonst kommt wieder einer auf die Idee mit der unvollständigen 
Sensitivliste, wo nur die Signale drinstehen, die was ändern "sollen"...

von Christian R. (supachris)


Lesenswert?

Richtig, da merkt man dann erst mal selbst wie schwierig das für einen 
Anfänger sein muss, wenn wir schon manchmal Probleme haben das eindeutig 
zu erklären...

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.