-
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
latch bei synthese mit bedingter zuweisung
alle Signale, die eine Neuberechnung des Prozesses für die Simulation nötig machen. KURZ: die Sensitivliste ist nur für die Simulation interessant. ABER: wenn die Sensitivliste nicht korrekt ist, stimmt auch die Simulation nicht! mchii schrieb im Beitrag #2236375: > hm der code erzeugt noch immer
-
Thread
Array von Record in Sensitivitätsliste
HansPeter schrieb im Beitrag #3948025: > jedoch meckert ISE bei der Synthese Die Sensitivliste ist für die Synthese schnurzegal. Da kannst du irgendwas reinschreiben und trotzdem kommt das Selbe raus... > jedoch meckert ISE bei der Synthese, dass nicht alle Signale in der > Sensitivitätsliste
> sens liste stand. Der eigentliche Witz ist doch, dass /der Simulator/ den Record in der Sensitivliste schon richtig behandelt. Und /der Synthesizer/ die Liste gar nicht verwendet...
-
Thread
Bei steigender und fallender Flanke unterschiedlich Schaltzeiten
Flankenabfrage Genau wie der Zähler nur in der Simulation tut... ;-) Im realen Leben ist die Sensitivliste des Zählers falsch. Oder es fehlt im Prozess eine Abfrage auf die Flanke. Deshalb zählt der auch mit jeder Taktflanke. Solche Flipflops gibts im realen Leben nicht... Dazu das hier: http://www.lothar-miller.de
#6243509: > Genau wie der Zähler nur in der Simulation tut... ;-) > Im realen Leben ist die Sensitivliste des Zählers falsch. Oder es fehlt > im Prozess eine Abfrage auf die Flanke. Deshalb zählt der auch mit jeder > Taktflanke. Solche Flipflops gibts im realen Leben nicht... > Dazu das hier: >
-
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
Ganze Zahl in Ziffern zerlegen
> Das wait until rising_edge(clk); verstehe ich nicht. Ein Prozess braucht entweder eine Sensitivliste oder eine wait-Anweisung. Es gibt also 2 Arten, einen (synthetisierbaren) Prozess zu beschreiben: 1.) Lehrbuchgemäß mit [vhdl] process (clk) begin if rising_edge(clk) then : end
Sch...lags kaputt... :-/ Nachtrag: >>> 2.) Mit einem wait until ist natürlich keine Sensitivliste nötig bzw. erlaubt: [vhdl] process begin wait until rising_edge(clk); : end process; [/vhdl]
-
Thread
Signale und Variablen: Unklarheit bei Zuordnung
nötig machen würde, wird dieser Prozess /nicht/ neu berechnet, weil die Variable nicht in die Sensitivliste aufgenommen werden kann! Das führt dann wieder zum Klassiker im http://www.mikrocontroller.net/topic/117630#1057329
nötig machen > würde, wird dieser Prozess nicht neu berechnet, weil die Variable > nicht in die Sensitivliste aufgenommen werden kann! Und genau das zeigt recht deutlich, dass Variablen eigentlich nur ein kleines syntaktisches Feature von VHDL sind, um sowas if komplizierte_berechnung(a,b,c,d)
-
Thread
VHDL: case-Anwendung ohne clk
nichts!!! Der /Prozess/ wird vom Simulator wie üblich /neu berechnet/, wenn sich ein Signal der Sensitivliste des Prozesses ändert. Und deshalb müssen da alle Signale y1..y7 noch mit rein! Dem Synthesizer ist das schnurzegal, der erweitert die Liste einfach für sich selber. Und dann passen Simulation
da". Richtig in Hardware. Und was da ist, ist automatisch aktiv. Nur im Simulator muss mit der Sensitivliste eine Neuberechnung ausgelöst werden.
-
Thread
Registerspeicher
das Problem ist. Was willst du erreichen? Multiplexer werden anders beschrieben... Diese Sensitivliste ist in 2 Richtungen sehr extrem verdächtig: [vhdl] p1:process(DEC_OUT,CLK,ADR_W,D_IN,RST,CLK1,CLK2,CLK3,CLK4,CLK5,CLK6,CLK7,CLK8,CLK9,CLK10,CLK11,CLK12,CLK13,CLK14,CLK15,CLK16,CLK17,CLK18,CLK19
auftritt? Und jetzt zu dem hier: [vhdl] P1 : process(CLK,EN,D,RST) --- überbestimmte Sensitivliste: D ist unnötig, und EN eigentlich auch... begin if (CLK'event and CLK = '1' and EN ='1') then -- ungewöhnliche Beschreibung eines Clock-Enables Q <= D; end if;
-
Thread
Ultraschallsensor HC-SR04 mit FPGA
nicht '1' ist, wird distance auf '0' gesetzt. Uebrigens brauchst du im letzten Process in der sensitivliste clk nicht angeben, da dieses signal im process gar nicht auftauch. der
fröhlich, in der Realität ist der immer 0... Das Problem: die Realität schert sich nicht um die Sensitivliste. Der Prozess wird also "dauernd" ausgeführt. Und nur genau bei einer Taktflanke (Dauer=0) ändert sich die /distance/ möglicherweise auf 1, um sofort wieder auf 0 zurückgesetzt zu werden. Der Zähler
-
Thread
VGA Textmode - 22% Logikgatter
weil so ein Konstrukt für den /Simulator/ (der bekanntermaßen auf einen Signalwechsel in der Sensitivliste anspringt) funktioniert. Aber die Synthese ignoriert die Sensitivliste und macht gnadenlos Latches und (viel, viel schlimmer!!!) kombinatorische Schleifen daraus... http://www.lothar-miller.de
-
Thread
Lattice Radiant crash
'event erwartet. Was du mit dem' event erreichen willst, das macht im Grunde ja schon die Sensitivliste. Und in der Hardware werden da sowieso nur Drähte weiter verbunden. Jörg W. schrieb im Beitrag #6301501: > sowie die Schleife statt des manuellen Entrollens drin ist, knallt mir > Radiant
Aber gut, es war ja in der Diskussion eigentlich schon klar, dass das Nennen von v in der Sensitivliste völlig ausreicht, und dass ohnehin aus dem Ganzen eine kombinatorische Logik wird. Insofern generiert LSE auch mit dem v'event praktisch das gleiche RTL wie ohne. > Und in der Hardware werden
-
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
I/O Port so OK?
Das muß nicht alles in 1 Prozess, dann passiert es auch nicht, dass unnötige Signale in der Sensitivliste auftauchen (data)... Die Richtungsumschaltung machst du besser concurrent: [vhdl] signal din : STD_LOGIC_VECTOR (7 downto 0); signal dout : STD_LOGIC_VECTOR (7 downto 0); : : -- Schreiben
Das muß nicht alles in 1 Prozess, dann passiert es auch nicht, dass > unnötige Signale in der Sensitivliste auftauchen (data)... Hatte ich sogar anfangs versucht, wurde aber durch "multiple drivers" Fehler frustriert. > Die Richtungsumschaltung machst du besser concurrent: > [vhdl] > signal din
-
Thread
VHDL Grundlagen
chris schrieb im Beitrag #5129315: > Wo liegt der Denkfehler? Die Sensitivliste ist NUR und AUSSCHLIEßLICH für die Simulation relevant. > sollte die LED eigentlich doppelt so schnell blinken Tut sie auch, wenn du das Design simulierst. >> IF(clk'EVENT AND clk = '1')
Prozess: LED <= '0' when pwmValue > pwmCounter else '1'; Fazit: aus 8 Zeilen mitsamt falscher Sensitivliste ist 1 Zeile geworden. Und zum Thema std_logic_unsigned sieh dir den https://www.mikrocontroller.net/topic/161722 inklusive der darin angeführten Links an.
-
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
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
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
VHDL Problem mit 2 Programmen
ncht ausgeführt, sondern ist in der Hardware /immer/ da. Er besteht aus Logik und Flipflops. Die Sensitivliste ist nur und ausschließlich für den Simulator: der berechnet den Prozess neu, wenn sich ein Wert in der Sensitivliste ändert. > Als erstes brauche ich einen Taktteiler, da mein Oszillator 4MHz
-
Thread
Problem bei AC97-Codec Ansteuerung (LM4550)
elsif ac97_bitclk'event and ac97_bitclk = '1' then [/vhdl] Was fehlt da wohl alles in der Sensitivliste? Benjamin K. schrieb im Beitrag #2597398: > deine Antwort klang so vielversprechend, jedoch bekommme ich mit > "00000000000000000000" und "00000000000000000100" immer noch keinen > lauteren
is when reset => led1 <= '1'; [/vhdl] clk ist in der Sensitivliste nicht nötig, weil er im Prozess gar nicht verwendet wird. Korrekterweise müsste aber /current_state/ da rein. Aber: zum Glück macht das der Synthesizer automatisch... ;-) Nur: die Hardware
-
Thread
PWM Signal von uC überprüfen und weitergeben
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
Merkwürdige Quartus Optimierung
ist die Variable überflüssig. Das Hauptproblem mit Variablen ist, dass du sie nicht in die Sensitivliste eines Prozesses aufnehmen kannst. Deine /Simulation/ stimmt dann evtl. nicht mehr mit der Realität überein... > Eine etwas vereinfachtere Darstellung war, man solle sich Variablen wie > ein
da geht das problemlos, das muss ich zugeben... ;-) Denn da muss die Variable ja nicht in die Sensitivliste. Aber wenn dann mal ein kombinatorischer Prozess auch mit den beliebten und bis dahin bewährten Variablen aufgesetzt wird, dann hat man schwuppdiwuppundhastdunichtgesehen ein Latch oder gar eine
-
Thread
Zähler: Variationen im process
in die Sensivity > List gleich für einen asynchronen Reset sorgt. Ich sehe da nirgends eine Sensitivliste! Ein "wait until rising_edge(clk);" macht viel, viel mehr als wenn du einfach nur clk in eine Sensitivliste eintragen würdest. Sieh dir einfach mal den Code an, der hinter rising_edge() steckt
-
Thread
Quartus II Optimierung von Gattern deaktivieren
Welt, wird die Portierbarkeit leiden. Hier kommt noch dazu, dass D eigentlich nicht in die Sensitivliste gehört: [vhdl] architecture Behavioral of D_FlipFlop is begin process(CLK, PRE, CLR, D) begin if(CLR = '1') then Q <= '0'; elsif (PRE = '1') then Q<='1'; elsif
Lothar M. schrieb im Beitrag #5647287: > Hier kommt noch dazu, dass D eigentlich nicht in die Sensitivliste > gehört: Genaugenommen doch. Wenn CLR und PRE 0 sind und CLK 1, ändert sich Q mit jeder Änderung von D. Ohne D in der Liste sieht es in der Simulation sonst wirklich aus, als wäre es getaktet
-
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
VHDL Eingang einen Wert zuweisen
moppel schrieb im Beitrag #3684030: > FSM : process (din, send, clk, rst) In dieser Sensitivliste reicht der CLK und der asynchrone RST...
: > moppel schrieb im Beitrag #3684030: >> FSM : process (din, send, clk, rst) > In dieser Sensitivliste reicht der CLK und der asynchrone RST... und der asynchrone reset ist nicht sauber beschrieben, richtig ist: [vhdl] process(clk,arst) begin if arst = '1' then --- elsif rising_edge
-
Thread
Fehlermeldung: ERROR - BN126 : is missing a driver.
welchem Ergebnis?) sicher mit einer Überschreitung der Iterationsanzahl quittiert, wenn denn die /Sensitivliste/ des Prozesses vollständig wäre. Aber leider fehlen dort input_clk und out_tmp... > Wenn ich die Zeilen 119-125 auskommentiere fällt der Fehler weg. Das Design wird wegen der kombinatorischen
der Prozess beginnt wenn > ein Signal zur Phasenverschiebung gegeben wird. Man kann über die Sensitivliste /nicht/ das Verhalten des Synthesizers steuern. Man kann damit lediglich das Verhalten des Simulators steuern. Blöd nur, dass dann die Simulation nicht mehr zur Realität passt... blackandpink
-
Thread
VHDL Signal oder variable für 32bit Zähler
> Wert erreich wurde geschieht dies bei Variablen ja sofort. Alles, was in 1 Prozess (mit Sensitivliste) zwischen dem Anfang und dem Ende steht, passiert sofort und gleichzeitig. Bei Prozessen ohne Sensitivliste passiert alles gleichzeitig beim jeweils nächsten wait. Und zwar jeweils unabhängig davon
-
Thread
ISE übersetzt irgend wie nur Mist
Beispiel leer sein sowohl für > sim als auch syn. Sie /muss/ leer sein, denn ein Prozess mit Sensitivliste ist nicht anderes, als der einfachste vorstellbare Prozess mit nur einem einzigen "wait until"... Eine Sensitivliste ist also nur ein (einziges) "wait until" ganz am Anfang eines Prozesses.
-
Thread
FPGA als digitaler Oszillator?
archives/42-Kombinatorische-Schleifen.html Und die Simulation ist wieder falsch, weil die Sensitivlisten falsch sind. Einen schnellen Oszillator kannst du als Ringoszillator aufbauen: http://www.lothar-miller.de/s9y/archives/90-Ringoszillator.html Aber ich würde dir raten: probiers einfach
Bemerkung in der Klammer kannst du streichen. Der Synthesizer wird eine Info ausgeben, dass er die Sensitivliste stillschweigend um das fehlende Signal CLK erweitert hat und deshalb die Simulation nicht mehr zur Realität passt. Letztlich bedeutet das für die umgesetzte Hardware: "not CLK" wird immer und
-
Thread
Anfängerfrage Submodule einbinden
übrigens auch eingerückt werden könnte) wird der Takt nicht verwendet. Dafür fehlt /lr_dir/ in der Sensitivliste. Fazit: die Simulation ist falsch. BTW: was ist das für eine kuriose Aufgabe? Das ist in VHDL eigentlich ein Dreizeiler... [vhdl] yout <= a(6 downto 0) & '0' when lr_dir='1' else '0'
man sich schön bildlich vorstellen... Aber wichtiger ist doch: was /muss/ wirklich rein in die Sensitivliste? Dort muss das rein, was eine Neuberechung /nötig/ macht, nicht das was nicht /wünschenswert/ und /angenehm/ wäre. Un das sind alle Eingangssignale, deren Änderung das Ergebnis ändern können. Denn
-
Thread
ENTITY und COMPONENT in VHDL
nicht so drin ist. Außer "in modernem VHDL darf man COMPONENTs weglassen" und "ALL darf in die Sensitivliste". Bleibt die Frage: Ist Verilog da besser? Vom Stil her ähnelt es eher C (kürzer und dreckiger; mehr Pistolen für die eigenen Knie). Bernhard R. schrieb im Beitrag #4759762: > VHDL klar
müsste man dazu eben Verilog können. ;-) In dem verlinkten Thread stand auch drin, dass die Sensitivliste nur für die Simulation relevant ist. Das hatte ich auch noch nicht so auf dem Schirm... danke dafür. Ich ziehe mal für mich die Schlussfolgerung, dass es die Silberkugel nicht gibt und man wenigstens
-
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
Probleme mit einfachem VHDL-Modul
kombinatorische Schleife": ein Zähler ohne Takt. Nein, es reicht nicht aus, wenn der Takt in der Sensitivliste steht. Diese Liste wird /aussschliesslich/ von der Simulation verwendet! > Wie kann ich Einglänge (testClock) hart auf GND oder VCC setzen??? http://www.lothar-miller.de/s9y/archives/81-Xilinx-ISE-Step-by-Step.html
kombinatorische Schleife": ein Zähler ohne Takt. Nein, es reicht nicht > aus, wenn der Takt in der Sensitivliste steht. Diese Liste wird > /aussschliesslich/ von der Simulation verwendet! Das war mir neu. Wird einem auch nicht gelehrt und steht auch in keinem der Bücher die ich bisher gelesen habe. Oder
-
Thread
Test Bench Takt erstellen
enthalten ist, Naja. Naja, das ist VHDL... Ein Prozess hat entweder (mindestens) 1 /wait/ oder eine Sensitivliste. Fabian Hoemcke schrieb im Beitrag #2436006: > Erst, so scheint es, machen die alles richtig und setzten auf Pascal > und nicht wie sonst üblich eines der Millionen Basic-Derivate. Diese
ist, Naja. > Naja, das ist VHDL... > Ein Prozess hat entweder (mindestens) 1 /wait/ oder eine Sensitivliste. > > Fabian Hoemcke schrieb im Beitrag #2436006: >> Erst, so scheint es, machen die alles richtig und setzten auf Pascal >> und nicht wie sonst üblich eines der Millionen Basic-Derivate.
-
Thread
Counterwert speichern bevor Reset
Beschreibung! Niemals! > process (inp,clk) --Lothar Miller Nein, das stimmt nicht. Ich hätte in die Sensitivliste nicht das unnötige Signal /inp/ aufgenommen... Fellap schrieb im Beitrag #3448347: > ich habe einen Counter und Eingangssignal. Wenn das Eingangssignal high > ist, soll der Counterwert zu
Prozesses *für die Simulation* wichtig ist. Die Synthese schert sich einen feuchten Kehrricht um die Sensitivliste... > Angezeigt werden soll aber nur Meter und Zentimeter auf > 7Segementanzeigen mittels Lothars Millers Vector -> BCD Converter Ja, ist doch kein Problem: wandle alle Stellen des Vektors
-
Thread
SPI-Slave für FPGA sendet keine Daten
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 Prüfungsaufgabe
... :-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 Prüfungsaufgabe
-
Thread
VHDL Einsteigerfragen
end if; if counter >= 10000 then --- wieder asynchron, aber counter fehlt in der Sensitivliste --> Simulation falsch!!! --- zudem: asynchroner kombinatorischer Reset --> Glitches setzen den gesamten oder Teile vom Zähler zurück counter <=
Prozesses sieht anders aus. 2. die Simulation ist falsch, weil /counter/ und /duty_cycle/ in der Sensitivliste fehlen. 3. die Sache mit dem Multiplizierer solltest du besser so lösen: [vhdl] case ASI_ASIC_IN_DUTY is when "01" => duty_cycle <=3300; when "10" => duty_cycle <
-
Thread
Frage zur Lernkurve VHDL vs. Verilog
eines statischen Signals reagiert, sondern auf /jede/ Änderung. Die "unintuitive" Takterei in der Sensitivliste und Nichttakterei im getakteten Prozess ist zumindest befremdlich. Man kann erst anhand der Sensitivliste entscheiden, ob das jetzt ein kombinatorischer oder ein getakteter Prozess ist. Klar findet
-
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
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 latch for signal
-
Thread
CPU in VHDL designen
process begin if(CLK'Event and CLK='0') then [/vhdl] Prozesse brauchen entweder eine Sensitivliste oder z.B. ein "wait until rising_edge(clk);" Das wird dir der Synthesizer aber noch mitteilen. [vhdl] process begin if(CLK'Event and CLK='0') then if(CMD = b"0000") then
hübsche nebenläufige Konstrukte (auf Englisch: concurrent assignments), die ganz ohne Prozess und Sensitivliste eine Kombinatorik beschreiben können. Martin S. schrieb im Beitrag #5157945: > 'buffer' auch besser vermeiden Buffer sind eigentlich ein Kündigungsgrund, wenn sie lediglich zur Unterstützung
-
Thread
Probleme beim synthetisieren -> Timing constraints?
das (wenn möglich) auch nur noch so. Und Kombinatorik am liebsten nebenläufig. Dann stimmt die Sensitivliste auch automatisch. > + der Code wird lesbarer, weil eine Einrückungsebene wegfällt Der Code wird auch für "Laien" (aka. "Programmierer") lesbar. Denn wenn da als erste Zeile ein "wait until rising_edge(clk);" steht, dann steht /explizit/ da, was die Sensitivliste /implizit/ macht. Die Professoren meiner betreuten Studenten und Abschlussarbeitschriebenden akzeptieren die "Eleganz" dieses Ansatzes dann auch irgendwann. Steht halt immer noch nicht in den
-
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
VHDL Denken-wie?
die Prozesse mehrmals berechnen, weil sich durch einen anderen Prozess eines der Signale in der Sensitivliste eines bereits berechneten Prozesses ändert.
zu machen, meldet er keinen Fehler. [/ironie off] Denk doch einfach so: /du/ brauchst die Sensitivlisten nicht, aber der Simulator /braucht/ sie. Und wenn du da eine diesbezügliche Meldung vom Simulator oder vom Synthesizer bekommst, dann sollte dir das zu Denken geben. Denn offenbar versteht da einer
-
Thread
PDP11 KL11 SLU in altem CPLD?
-IO.html Aber der verlinkte Code sieht sowieso ein wenig, naja, "laienhaft" aus, denn die Sensitivlisten sind allesamt falsch: sie enthalten zu viele Signale. :-o Das ist für mich ein ernstes Warnzeichen... > Wie kann ich das selber ausprobieren Neues Projekt --> neues VHDL-Modul --> dort hinein
. > Aber der verlinkte Code sieht sowieso ein wenig, naja, "laienhaft" aus, > denn die Sensitivlisten sind allesamt falsch: sie enthalten zu viele > Signale. :-o > Das ist für mich ein ernstes Warnzeichen... Ich-->Schwein-->Uhrwerk. > >> Wie kann ich das selber ausprobieren > Neues Projekt
-
Thread
VHDL Freeware (LGPL) Synthese Werkzeug
www.mikrocontroller.net/topic/117630 Das Hauptproblem mit den Variablen ist, dass sie NICHT in der Sensitivliste eines Prozesses auftauchen können. Und das deshalb die Simulation anders ist als das Syntheseergebnis! Ohne jede Fehlermeldung! Etwas Schlimmeres kann es fast nicht geben... Georg A. schrieb
-
Thread
effizienterer VHDL Counter
Output the current count q <= std_logic_vector(to_unsigned(cnt,6)); [/vhdl] BTW: deine Sensitivliste ist nicht vollständig: aclr fehlt. Und die Kommentare sind fragwürdig: [vhdl] -- Increment the counter if counting is enabled cnt := cnt - 1; [/vhdl] "minus eins" ist ein Decrement
-
Thread
pixel bewegen bei vga-ansteuerung
verwende die numeric_std statt der std_logic_arith und der std_logic_unsigned... Hier ist die Sensitivliste falsch: [vhdl] process(clk_50) begin if(clk_25 'Event and clk_25 = '1')then [/vhdl] Der Prozess ist eigentlich nur auf clk_25 sensitiv. Aber das jetzt noch nicht ändern, denn so werden keine
clk_25 <= '0'; end if; end if; end process; process(clk_50) -- jetzt passt die Sensitivliste begin if(clk_50 'Event and clk_50 = '1') then -- im ganzen Design der selbe Takt!! if clk_25='1' then -- das ist ein Clock-Enable ...dein Code [/vhdl] Martin Braun schrieb im Beitrag
-
Thread
Gray Code und Zweierkomplement Addition
Mo schrieb im Beitrag #5779531: > Woran liegt das Deine Sensitivliste ist falsch. Da gehört nicht O rein, sondern y. Und das ganze nennt sich "Delta-Cycle" Problem, denn auch die Zuweisung "y<=O" findet nur dann statt, wenn "O" sich ändert. Gleichzeitig wird dann
-
Thread
Was ist falsch ?=) (kurz)
gabs schrieb im Beitrag #1922423: > process(controlBit) Zudem fehlen in der Sensitivliste die Signale a und b...
-
Thread
Binär zu BCD wandlung
www.lothar-miller.de/s9y/categories/36-Kombinatorische-Schleife Und zudem ist die Simulation falsch, weil die Sensitivliste nicht vollständig ist: http://www.lothar-miller.de/s9y/archives/16-Takt-im-Prozess.html > Ich sag nur eins: der Double-Dabble Algorithmus Das ist genau der shift-add-3 Algorithmus (aus meinem