-
Thread
Sensitivity List
machen, aber ob das so einfach ist...? Die Synthesizer machen das schon lange: du kannst eine unvollständige oder komplett falsche Sensitivliste hinschreiben, dann macht dich der Synthesizer freundlich drauf aufmerksam, dass die Liste unvollständig ist und deshalb die Simulation nicht mehr zur Hardware
Miller schrieb im Beitrag #4133369: > Die Synthesizer machen das schon lange: du kannst eine unvollständige > oder komplett falsche Sensitivliste hinschreiben, dann macht dich der > Synthesizer freundlich drauf aufmerksam, dass die Liste unvollständig > ist und deshalb die Simulation nicht mehr zur
-
Thread
VHDL falling edge bewirkt rising edge
Simultionsergebnis das > Hardwareergebnis vorstellen kann?(wenn man kein Oszi hat) Wenn die Sensitivliste der beteiligten Prozesse richtig beschrieben ist, dann sieht das normalerweise GLEICH aus. Einen Schritt zurück: Das Problem hier ist eigentlich eine unvollständige Sensitivliste! Denn
end if; end process; [/vhdl] BTW: Ich verwende zur konsequenten Verhinderung von unvollständigen Sensitivlisten gern die Prozessschreibweise /ohne/ Sensitivliste: http://www.lothar-miller.de/s9y/archives/16-Takt-im-Prozess.html Dann passiert das oben Beschriebene /garantiert/ nicht.
-
Thread
[isim] Probleme mit Testbench
ZUSTANDS_TYP := INIT; [/vhdl] Zusammengefasst sind 2 grundlegende Fehler in deinem Code: 1. die unvollständige Sensitivliste 2. der nicht initialisierte Zähler
Änderungen aus dem http://www.mikrocontroller.net/topic/217258#2167070 eingebaut: > 1. die unvollständige Sensitivliste SN: process(ZUSTAND, ANFORDERUNG_NS, ANFORDERUNG_HS, BLINK_S, COUNT) > 2. der nicht initialisierte Zähler signal COUNT : std_logic_vector(4 downto 0) := "00000"; Und nach ein
-
Thread
Sinn der Sensitivity List?
man mal ein Beispiel einer trickreichen Nutzung einer > snesitivity list geben, Ich kenne unvollständige Sensitivlisten eigentlich auch nur als Quelle von Problemen: http://www.mikrocontroller.net/topic/117630#1057329 http://www.mikrocontroller.net/topic/146640#1366176
anzustoßen. > > Dann hau doch mal ein reines 'SIMULATIONS'-Beispiel raus, wo man eine > unvollständige Sensitivity List benötigt :-) Wieso reines Simulationsmodell? Ein FF ist ein klassisches Beispiel für einen Prozess mit einer unvollständigen Sensitivity List. [VHDL] process(Clk, Reset
-
Thread
Outputsignal bleibt gleich
gegateten kombinatorischen Schleifen dann gern als Latch. Ich hol mal den Prozess mit der unvollständigen Sensitivliste extra raus und kürze ihn etwas ein: [vhdl] output_logic : process(present_state) begin if (present_state = state_go) then case WIDTH is --definitions
Lothar M. schrieb im Beitrag #4971091: > Ich hol mal den Prozess mit der unvollständigen Sensitivliste extra raus > und kürze ihn etwas ein Deshalb hatte ich mir angwohnt, (nahezu) *alles* als getakteten Prozess zu schreiben ... Dann muss ich mir auch keine Gedanken um die Sensitivity-Liste
-
Thread
VHDL: Sinn der Sensitivity List
Simulator-Variante gibt es ein Compile-Häkchen für die Option "Synthesis Check". Dadurch werden unvollständige Sensitivitätslisten aufgedeckt. Gruß, SuperWilly
Und danach für /result/ nochmal. Das wird er aber nicht, weil diese beiden Signale in der Sensitivliste fehlen. Klarer Fall von unvollständiger Sensitivliste. Und schon wieder verhält sich die simulation anders als die Realität... Bei einem kombinatorischen Prozess gehört jedes Signal, das eine
-
Thread
Initialisierung LCD-Display
jetzt (ohne Witz) eine asynchrone FSM. Die funktioniert nur in der Simulation... Denn die Sensitivliste ist schon wieder unvollständig: [vhdl] when s3 => if zaehler4 = 6 then ort <= ort + 1 ; [/vhdl] /ort/ fehlt in der Liste.... Es bringt aber nichts, das reinzumachen
macht er aber laut meiner Simulation nicht Sag ich doch. Die Simulation ist falsch, weil die Sensitivliste unvollständig ist: /ort/ fehlt. Zur vereinfachten Darstellung: [vhdl] signal cnt : unsigned (3 downto 0) := "0000"; process (clk) begin cnt <= cnt+1; end process; [/vhdl] /Simulier
-
Thread
VHDL CODE ASYNCHRONER RESET-EINGANG?
Wichtig zu wissen: Die Sensitivliste benötigt ausschließlich der Simulator! D.h. der Prozess wird in der Simulation gestartet, wenn sich ein Eintrag der Sensitivliste ändert. Hier wird ein asynchroner Reset simuliert und synthetisiert
[/vhdl] Hier verhalten sich Simulation und generierte Hardware unterschiedlich! Denn die Sensitivliste ist unvollständig, es wird aber weiterhin ein asynchroner Reset synthetisiert. [vhdl] process (clk) -- process for register function begin if reset='0' then q <= (others => '0'
-
Thread
VHDL Grundlagenverständnis
sagen wir so: es lenkt ab. Denn der eigentliche Trick beim Prozess mit dem Signal /test/ ist die unvollständige Sensitivliste: es fehlt das Signal /test/. Also ist zwar der Prozess syntaktisch richtig, aber die Sensitivliste falsch. Und dadurch können sich seltsame Effekte ergeben. Siehe den http://www.mikrocontroller.net
innerhalb eines Processes ein Signal verwendest welches außerhalb angelegt wurde und nicht in der Sensitivliste steht so darf es nur links von einer Zuweisung stehen im Process. Wenn es rechts einer Zuweisung steht muss es in der Sensitivliste erscheinen ansonsten gibt es eine Fehlermeldung beim compilieren
-
Thread
cachemodul, Simulation ok, aber auch bereit für die Synthese?
wait until rising_edge(clock); [/vhdl] Dir ist hoffentlich klar, dass die nicht vorhandene Sensitivliste unvollständig ist? Dort müsste reset rein... Kann dein Synthesizer diesen Konstrukt eigentlich umsetzen? Hast du das mal probiert? Oder braucht der für einen asynchronen Reset die traditionelle
> Ist hier den sicher, dass der Reset im Simulator ausgelöst wird? Müsste > hier nicht eine Sensitivliste mit dem Resetsignal sein (clock natürlich > nicht)? Ein Prozess, der ein wait-Statement enthält, kann/darf keine Sensitivliste haben.
-
Thread
Process wird kontinuierlich durchloffen - Altium LiveDesign Board
vhdl] Process(usignal) BEGIN if(test = '1') then if (reset='0') then [/vhdl] Diese Sensitivliste ist unvollständig --> die Simulation passt nicht zur Realität... :-o > Nach einigem Stöbern habe ich auch herausgefunden, dass die Sensitive > list bei der Synthese nicht relevant ist. (
> Diese Sensitivliste ist unvollständig --> die Simulation passt nicht zur > Realität... :-o Das ist mir klar, ich hatten den Reset auch zunächst in der sensitive list, habe dann ein wenig rumgespielt (deswegen
-
Thread
Sensitvity-Liste angeblich unvollständig
ModelSIM compiliert das file mit den warnings, dass die internen Signale nicht in der Liste stehen. Warum ist das so? clk_proc : process(sen_clock, value) begin if rising_edge(sen_clock) then value <= std_logic_vector(unsigned(pixel (9 downto 2)) * unsigned(line(9 downto 2)) + unsigned(dmc)); end if; calc <= value (12 downto 0); end process; liegt das an dem calc? Dort greift er auf value zurück, das müsste ihm doch reichen, oder?
-
Thread
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...
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
-
Thread
Sensitivity list wird ignoriert
selber drauf kommen können das die Synthese automatisch die fehlenden Signale einfügt. Ist ja in unvollständigen bedingten Verzweigungen auch der Fall das automatisch Register eingefügt werden, warum dann nicht auch anderweitig nachhelfen <: Danke nochmals.
> Ist ja in unvollständigen bedingten Verzweigungen auch der Fall > das automatisch Register eingefügt werden, Schlimmer: es werden Latches eingefügt. Aber wenigstens gibt es dafür eine Warnung... :-/
-
Thread
flankenerkennung für externen takt
Zielsystem? Ist das ein FPGA oder CPLD? BTW: die Simulation ist /garantiert/ falsch, denn die Sensitivliste ist unvollständig. Wenn du schon einen asynchronen Reset beschribst, dann muß der auch mit rein: process(RESET,CLK) ... > Also ich hab ein Systemtakt von 66MHZ und ein externer takt von 3kHz
glitchfrei? Gruss, S. PS: > BTW: die Simulation ist garantiert falsch, denn die Sensitivliste ist > unvollständig. Wenn du schon einen asynchronen Reset beschribst, dann > muß der auch mit rein: > process(RESET,CLK) ... Hmmm, ist das nicht ein synchroner Reset in dem Beispiel, und
-
Thread
Lockerer Counter auf VHDL
den Prozess neu, wenn sich der Zustand eines der Signale ändert. Ein fehlendes Signal in der Sensitivliste ergibt unbedingt eine falsche Simulation. Die Synthese gibt bei einer unvollständigen Sensitivliste eine Warnung/Info aus und fügt das Signal selbständig ein.
hatten wir schon ein paar mal: http://www.mikrocontroller.net/search?query=sensitivity+list+unvollständige http://www.mikrocontroller.net/search?query=sensitivliste+unvollständige Und Xilinx (und andere auch) hat da auch Probleme z.B. mit Variablen in Prozessen und der zugehörigen Sensitiv-Liste
-
Thread
DE0nano VHDL VGA Controller
hat dein Synthesizer für diesen Prozess ausgegeben? Irgendwas mit "Simulation ist falsch, weil Sensitivliste unvollständig"? Und eines muss dir klar werden: der /hs/ ist KEIN Takt, der mit rising_edge() oder falling_edge() oder 'event verwendet werden darf!!! Und noch eins: du brauchst hier /garantiert
angehängt. Allerdings wird die Simulation immer noch /falsch/ (und damit nutzlos) sein, weil die Sensitivliste /unvollständig/ ist. Das wieht man wegen der kuriosen Schreibweise "getaktetA-kombinatorisch-getaktetB-kombinatorisch" aber sehr schlecht...
-
Thread
Finite-State-Machine stürzt ab
über welches wir ja noch vor kurzem in einem anderen Thread gesprochen hatten. > In dieser Sensitivliste steht also viel zuviel Zeug. Das ist zwar "nur" ein Schönheitsfehler, zeigt aber ein leichtes Unverständnis auf. Genau genommen waren in den Sensitivlisten bis vor Kurzem nur die Clock-Signale
dass du siehst, was da rein gehört und was nicht. Vorneweg: nur die Simulation braucht die Sensitivliste! Und dann müssen in der Sensitivliste alle die Signale sein, die eine Neuberechnung des Prozesses nötig machen. In einem komplett synchronen Prozess ist das nur der Takt, denn nur wenn sich der
-
Thread
ISE erzeugt immerwieder andere JED Datei
Vergleicher) --> der kleinste Glitch kann takten [/vhdl] Und da fällt mir gerade noch was auf: deine Sensitivliste ist unvollständig, die Simulation ist falsch, da müsste eigentlich noch QD19 rein... Denk mal drüber nach. Und viel schlimmer: du hast einen asynchronen (Bäh), kombinatorischen (Bäbäh) Reset
Lothar Miller schrieb im Beitrag #2125680: > Und da fällt mir gerade noch was auf: deine Sensitivliste ist > unvollständig, die Simulation ist falsch, da müsste eigentlich noch QD19 > rein... > Denk mal drüber nach. Gut mach ich mal :) und werd das ganze mal überarbeiten. > Wenn schon, dann
-
Thread
Verilog Sensitivitätsliste
sieht man am IF Statement. Das ist bei VHDL auch nicht anderes. Wenn man versteht, dass die Sensitivliste in Verilog eigentlich ein Wait for Statement ist, kann man sich eine equivalente Beschreibung auch in VHDL ausdenken. Geht auch im Simulator, aber der Synthesizer erkennt nicht mehr dass es auf
statt zum Beispiel zu schreiben always@(posedge clk or reset). > Wenn man versteht, dass die Sensitivliste in Verilog eigentlich ein Wait > for Statement ist, kann man sich eine equivalente Beschreibung auch in > VHDL ausdenken. Wenn es ein wait statement ist, wäre meine Auffassung, dass auf die
-
Thread
VGA-Signal -Übertragungsprobleme.
beide zusammen! Und dann noch der http://www.mikrocontroller.net/topic/161722 Flasche Sensitivliste: [vhdl] test : process (clk) -- clk wird nicht gebraucht begin if taster= '1' then -- taster fehlt in der sensitivliste ledtest1<='0'; else ledtest1<='1'; end if; end process test; [/vhdl] Unvollständige Sensitivlisten: [vhdl] HCounter : process (clk) begin if reset = '0' then -- reset fehlt in der Sensitivliste! Hcount <= (others=> '0'); ledtest2<='1'; elsif (
-
Thread
4bit ladbarer Zähler
werden Mal abgesehen davon, dass dein Quelltext (immer noch) unschön formatiert ist, ist die Sensitivliste unvollständig. Eine Änderung von load bewirkt bei der Simulation daher nichts: [vhdl] count: process(clk,reset) begin -- hier fehlt load [/vhdl] Damit beschreibst du einen /asynchron/ setz
Ich hab nur mit ModelSim simuliert. Du kannst ohne weiteres dein Design (nach Erweiterung der Sensitivliste um das fehlende /load/) simulieren. Aber in der Hardware wird dann an die asynchronen Set- und Reset-Eingänge der FF Kombinatorik eingebaut. Und Kombinatorik im asynchronen Resetpfad (genauso wie
-
Thread
Verständinsfrage bezüflich State Machine Testbench
Kombinatorische-Schleifen.html > und in der Simulation macht er den Schritt nur einmal und das wars. Dann ist deine Sensitivliste unvollständig. > Ich hoffe ihr könnt mir den Knoten auflösen. Du /musst/ *alle* Signale, die eine Neuberechunng des Prozesses nötig machen, in die Sensitivliste aufnehmen. Also alle Signale, die rechts von := oder <= oder in einer if- oder case-Abfrage stehen. Und wenn du deine Sensitivliste dann vervollständigt hast, dann kommt die kombinatorische schleife auch im Simulator zutage... ;-) Mampf F. schrieb im Beitrag #5181475: > Tipp von mir: Man kommt fast immer mit Prozessen aus
-
Thread
Nicht-Spezifische Latch-Warnung
signale die sich ändern müssen in die Sensitivity list, sonst wirds ein > latch. Falsch. In die Sensitivliste müssen alle die Signale, die eine /Änderung/ eines andere Wertes bewirken. Dann berechnet der /Simulator/ bei einer Änderung des Wertes in der Sensitivliste die Ergebnisse des Prozesses neu. Der Synthese (die oben die Warnung erzeugt) schert sich einen feuchten Kehrricht um eine unvollständige Sensitivliste. Sie erweitert diese Leiste einfach eigenständig. Mit der Sensitivliste kann also das Verhalten des FPGAs in keiner Weise gesteuert werden.
-
Thread
Probleme VGA-Controller
Timing-Problem aus. Und was sagt die Simulation? Die Simulation wird übrigens flasch sein, denn die Sensitivliste ist unvollständig! Man mischt nicht (wie von Fpga Kuechle schon angemerkt) Kombinatorik und getaktete Abläufe in einen Megamonsterprozess hinein! [vhdl] process(clk, reset) is begin
then ---- Hoppla, da kommt noch was! ... -- counter_h fehlt in der Sensitivliste end if; if counter_v<3 then -- counter_v fehlt in der Sensitivliste ... end if; .... [/vhdl] Auch interessant: was sagt das Oszilloskop? Hast du brauchbare
-
Thread
Clock-Signallaufzeit
von eben diesem Prozess. Die _cs Signale werden außerdem nur gelesen und stehen in den jew. Sensitivlisten. So weit, so bekannt. SIG1_cs bis SIG100_cs stellen sehr viele FFs dar, die prinzipiell alle gleichzeitig über taktflankengesteuerte FFs mit ihren _ns Werten beschrieben werden, aufgrund ihrer
Daniel R. schrieb im Beitrag #3752839: > zu schreiben, aber nicht: Ja klar: hier ist die Sensitivliste falsch, weil unvollständig. Wir hatten das schon im https://www.mikrocontroller.net/topic/117630#1058849 > denn hier passiert die Zuweisung an tmp nebenläufig oder anders gesehen > am "Ende
-
Thread
Was ist der Unterschied zwischen Process und Guarded Block in VHDL?
". Sondern ein Prozess wird vom Simulator "neu berechnet", wenn sich eines der Signale in der Sensitivliste ändert. Den Synthesizer interessiert die Sensitivliste nicht die kleinste Bohne. Mit ein wenig Glück sagt er nur, dass sie unvollständig ist und deshalb die Simulation nicht zur Hardware passen
-
Thread
VHDL InOut Ports
Ports angepasst werden müssen) und seine Simulation sicherer machen (den (Eingangs-)Record in die Sensitivliste und gut is). Der Anfänger lernt so aber gar nicht, was eine /unvollständige/ Sensitivliste bewirken kann. Wehe, wenn er dann mal ein "altes" Design in die Finger bekommt und ändern muss. Und er
-
Thread
Frequenzteiler im Zähler implementieren
[vhdl] : : -- state register for the count value P_REG : process (CLK,ARESETN) ---- Sensitivliste unvollständig!!! begin --- böse Sache, das hier: alle 3 Signale LOAD, PRE und TC fehlen in der Sensitivliste if ((LOAD = '1') and (PRE <= "11000")) then WiretoTC <= TC ; end if; -- zudem
-
Thread
PWM Signal erzeugen
. Folgendes Misverständnis sehe ich: [vhdl] process (reset,clk) begin -- Sesitivity-List unvollständig, -- weil "and clk'event" fehlt, -- müsste inp für eine korrekte Simulation mit aufgenommen werden if (reset='1') then outp <= '0'; elsif (clk='1') then -- hier
sich ganz anders. Für eine korrekte Simulation der /falschen/ Beschreibung fehlt "inp" in der Sensitivliste... Mit einem [vhdl]wait until clk='1';[/vhdl] wird das nie passieren, weil es keine Sensitivliste gibt.
-
Thread
verschiedene Teile von std_Ulogic_vector aus mehreren Processen zuweisen
Meldungen/Warnungen/Info genau das gleiche wie bei std_logic. Die Synthese ignoriert ja auch die Sensitivlist. Ist nur ne Vermutung aber könnte das ein relevanter Punkt bei diesem speziellem Beispiel sein? Ein Signal das in einem Prozess bedingungslos zugewiesen wird würde ich persönlich nicht in die Sensitivlist
nichts, wenn ich schreibe .... Seeehr merkwürdig das Ganze! Ich bleibe bei der Meinung das die Sensitivlist ungeschickt ist. Grüße Erik
-
Thread
SPI-Slave für FPGA sendet keine Daten
daraus synthetisiert wird... :-o So einen kombiniert kombinatorisch synchronen Prozess mit unvollständigen Sensitivlisten, mit eigenartigen Clock-Enables und kombinatorischen Resets (Stichwort Glitches) bekommt in der Realität kein Mensch niemals zuverlässig zum Laufen. Das könnte bestenfalls als
synthetisiert wird... :-o > > So einen kombiniert kombinatorisch synchronen Prozess mit > unvollständigen Sensitivlisten, mit eigenartigen Clock-Enables und > kombinatorischen Resets (Stichwort Glitches) bekommt in der Realität > kein Mensch niemals zuverlässig zum Laufen. > > Das könnte bestenfalls
-
Thread
Statemachine springt in falsche "states" warum?
aus der Sensivitätsliste entfernt Das juckt den Synthesizer natürlich überhaupt nichts. Die Sensitivliste ist nur und ausschließlich für die Simulation interessant.... Eine unvollständige Sensitivliste sorgt nur dafür, dass die Simulation falsch ist und nicht zur erzeugten Hardware passt.
mit dem input Pin versucht und hier lief es wieder > nicht. Wie Lothar schon schrieb, die Sensitivliste wird von der Synthese schlicht ignoriert. Wenn aber das Ändern eines NICHT aktivierten Externen Resets in einen nicht aktiven intern Reset eine Änderung deines Designs bringt, dann würde ich
-
Thread
Zählen bei Ereignis
glaube ich das gerne. Aber gilt das wirklich auch für > das synthetisierte Ergebnis? Nein! Die Sensitivliste ist ausschließlich für den Simulator. Der Synthesizer gibt nur eine Info aus, dass bei unvollständiger Sensitivliste die Simulation nicht mehr zum Syntheseergebnis passt. > Wenn dem so wäre
-
Thread
Eingang abtasten und per Uart ausgeben
braucht. Mario schrieb im Beitrag #5317649: > data_outpout_process : process (CLK) Diese Sensitivliste ist unvollständig. Die Simulation wird nicht zur Realität passen, denn die Sensitivliste ist nur für die Simulation interessant. Oder andersrum: der Synthesizer schert sich einen feuchten Kehrricht
-
Thread
LED Dimmer Projekt
im Beitrag #3314075: > Und dann simuliere das ganze mal. Die Simulation ist falsch, denn die Sensitivliste ist unvollständig, weil BTN und dimm fehlen. Blöderweise kannst du aber eine Variable nicht in die Sensitivliste aufnehmen... Aber ich würde auch mal einfach sagen, dass man diese Aufgabe tadellos
-
Thread
VHDL Impulszähler spinnt
nicht noch irgendwelcher kombinatorischer Klimbim, von dem ohnehin keines der Signale in der Sensitivliste auftaucht. Eine derart unvollständige Sensitivliste sorgt zuverlässig dafür, dass die Simulation nicht zur Hardware passt. Der Synthesizer sagt dir das auch, wenn du die Infos und Warnungen mal
-
Thread
Denkfehler beim Einsatz von Variablen?
nicht zu bestimmen, da fehlt > zuviel. Wenn der Prozess die Stelle nicht durchläuft (e.g. > unvollständige Sensitivityliste oder waits), wird auch nichts > zugewiesen. Die Zuweisung erfolgt ja, nur für mein Dafürfinden einen Takt zu spät. A wird in diesem Prozess mit Hilfe von zahlreichen anderen
eine Zuweisung an die Variable B nötig macht. Blöderweise kann man aber keine Variablen in eine Sensitivliste eintragen. Aber halb so schlimm: das passiert anderen auch... http://www.mikrocontroller.net/topic/117630#1057329
-
Thread
Division von 2 Vektoren
der Simulation, richtig? Übliche Ursache für eigenartiges Verhalten in der simulation: die Sensitivliste eines kombinatorischen Prozesses ist unvollständig. [vhdl] Process(z) [/vhdl] Hier gehört das temA und y auch mit rein, denn beim Zustand 9 hängt das Ergebnis auch von diesen beiden Werten
Ja genau, das stelle ich durch die Simulation fest! Die Erweiterung der Sensitivliste hat leider nichts gebracht. Zusätzlich bei der Division mit Rest (z.B. 1000 durch 3) ergibt sich das falsche Ergebnis, das sich ständig je 10. Takt zwischen 166dec(0010100110 ist eigentlich 333dec
-
Thread
Fehler Meldung
funktioniert das oben beschriebene Konstrukt wunderbar. Der Eintritt in den process wird überdie Sensitivliste gesteuert. Bei jeder Änderung eines der Sensitivlist-Signale wird der Prozess bearbeitet. Siehe dazu Simulationstherorie. Wie sieht's jetzt aber beim Synthetisieren aus? Ich bin da auch
das ist soweit richtig aber unvollständig. beim allersten Takt ist bei der FF Variante unbestimmt. es wird vor dem ersten takt der Initwert des FF haben, ein zweites FF das den Wert des gebufferten AND übernimmt, kann (je nach Initwert
-
Thread
Frage zur DDFS von Lothar Miller
Sign_Quadrant ändert was am Ergebnis des Prozesses, -- deshalb MUSS es in die Sensitivliste! when "10" => ... Data_sin2 <= Result_sin2; -- genauso Result_sin2 und später Result_sin1 [/vhdl] Eine unvollständige Sensitivliste... Nach deren Korrektur
-
Thread
Multiplizierer einsparen
Tom schrieb im Beitrag #3286324: > process(CLK160MHz,YA) Die Sensitivliste ist unvollständig. Es fehlen A1 und A2. > begin > case CLK160MHz is > when '0' => A <= A1 ; > when others => A <= A2; > end case; > > case CLK160MHz is > when
schrieb im Beitrag #3286334: > Tom schrieb im Beitrag #3286324: >> process(CLK160MHz,YA) > Die Sensitivliste ist unvollständig. Es fehlen A1 und A2. > >> begin >> case CLK160MHz is >> when '0' => A <= A1 ; >> when others => A <= A2; >> end case; >> >> case CLK160MHz is >> when
-
Thread
Seltsame (Neben-)Effekte in der Simulation
Diese beiden Beschreibungen verhalten sich exakt identisch. Eine Sensitivliste ist quasi eine andere Schreibweise für ein /wait until/. Das /wait until/ hat den Vorteil, dass es keine /unvollständige/ Sensitivliste geben kann. Siehe z.B. http://www.lothar-miller.de/s9y
-
Thread
Process in VHDL, wie funktioniert das genau??
synthetisierte Hardware, > sehe ich es jetzt richtig? Ja. Für die Simulation ist eine korrekte Sensitivliste unbedingt nötig. Wenn du mal diese Beschreibung nimmst: [vhdl] entity AND_OR_XOR is port (A,B,CLK : in bit; Z_OR, Z_AND, Z_XOR : out bit); end AND_OR_XOR; architecture
von CLK ändert sich das Ergebnis. Die /Synthese/ wird dir aber nur ein paar Infos zum Thema "unvollständige Sensitivliste" ausgeben und dann die nötigen 3 Gatter erzeugen. Fazit: Simulation falsch... :-o
-
Thread
PWM Signal von uC überprüfen und weitergeben
Scarring schrieb im Beitrag #6548187: > Auf den ersten Blick sieht das ok aus. Abgesehen von der unvollständigen Sensitivliste des kombinatorischen Prozesses... ;-) Da müssten nämlich alle 6 PWM_x_y_UC Signale auch mit rein. Derzeit wird zwar funktionierende Hadware erzeugt, aber die Simulation passt nicht dazu. Alternativ könnte man das ohne Prozess und ohne fehlerhafte Sensitivliste einfach nebenläufig machen: [vhdl] : : A4 <= fault_all; uC_fault <= Y1; PWM_T_U <= PWM_T_U_UC when uC_Fault='0' else '0'; PWM_T_V <= PWM_T_V_UC when uC_Fault='0' else '0'; PWM_T_W
-
Thread
[Fehlersuche] Ansteuerung eines 1-Wire Sensors
dass sowas von der Simulation nicht sicher erkannt wird. "Irgendwie" kann das mit der passenden Sensitivliste nämlich sogar funktionieren...
Lothar Miller schrieb im Beitrag #2419842: > "Irgendwie" kann das mit der passenden Sensitivliste nämlich sogar > funktionieren... Ja, darauf bin ich auch schonmal reingefallen. Aber hier hatte ich mir den Code noch garnicht angeguckt. Duke
-
Thread
in VHDL 50MHz auf 2 Mhz runterteilen?
diesen Zähler dann in dem getakteten Prozess... Ja, und nur dort. Und sieh dir wie gesagt die Sensitivlisten nochmal an, sonst ist deine Simulation (und nur die interessiert sich dafür) schlicht falsch!
6 bis Bit 4 an AMPEL_N "gibt". Warum nicht? Was tut er denn? Wie schon erwähnt ist deine Sensitivliste unvollständig: [vhdl] UE_SN: process (ZAEHLER,ZUSTAND,FU_ANF_SET, H_ZAHL, N_ZAHL) -- hier fehlt noch AUSGANG, denn eine ÄNDERUNG von AUSGANG müsste auch AMPEL_H, AMPEL_N... ändern [/vhdl]
-
Thread
Drehgeber (rotary encoder) - VHDL
rotary_a, rotary_b) > begin > wait untill rising_edge(clk); Ein WAIT zusammen mit einer Sensitivliste geht nicht... > > rot_ab <= rotary_a & rotary_b; Aus Versehen Glück gehabt: wenigstens 1 Flipflops zum Einsynchronisieren... > 1. Ich habe in der Sensitivitätsliste rotary_a und rotary_b
da alle Signale, die eine Auswirkung auf andere Signale haben. Die Synthese erweitert eine unvollständige Sensitivliste von allein und gibt dir bestenfalls eine Info, dass das Syntheseergebnis nicht zur Simulation passt... :-o > 2. Lothar du hast bei dir noch den Prozess: > -- Eintakten der asynchronen
-
Thread
GHDL Problem
Wie oben schon mal angefragt: Vlt. eine unvollstaendige sensitivity Liste? Daraus resultierend ein Latch?
läuft es aber nicht in der Hardware. Die Sensitivlisten habe ich schon überprüft. Duke zu SUMP Leider bekomme ich das java programm nicht zum Laufen. ;-< Caused by: java.lang.ClassNotFoundException: org.sump.analyzer.Loader at java.net.URLClassLoader
-
Thread
Ampelsteuerung mit einen Zustandsautomaten mit 2 Prozess-Aufbau
Sensitivitätsliste > begin > case main_state is -- timer VA FA Die Sensitivliste in deinem Code ist überaus lückenhaft. Du solltest den Rat im Kommentar beherzigen. > Quartus schlägt mir Fehler aus doch egal was ich gemacht habe es hat > nicht funktioniert. Du hast das
übrigens ein paar Mal auf. Und ein paar Mal ist es auch korrekt geschrieben. Dann noch die unvollständige Sensitivliste vervollständigt und ein paar Kleinigkeiten mit fehlenden ' und dann läuft die Synthese und die Simulation durch. Aber Obacht: es gibt eine Warnung "WARNING:Xst:737 - Found 8-bit