-
Thread
Textausgabe mittels SPI an Lattice FPGA
zusammenzumantschen. Da verliert man schnell mal den Überblick! Z.B. ist in diesem Fall die Sensitivliste /absolut unvollständig/! Da gehört alles rein, was eine /Neuberechnung/ des Prozesses nötig macht: pi1_SCLK, s1_SCLK_next, pi1_Enable, pi1_Enable2, s1_Blocked, usw. Aber sicher nicht s1_SCLK_Fall
-
Thread
PIO implementieren: in + out oder inout?
b <= bidir; END IF; END PROCESS; [/vhdl] Falsch ist hier, dass a in der Sensitivliste fehlt --> Simu passt nicht zur Realität. Und unnötig ist ein /bidir/, das sich unabhängig von /oe/ immer auf /b/ auswirkt. Und ebenso unnötig ist ein Prozess für eine if-Abfrage. Darüber hinaus
-
Thread
latch probleme
dem Berechnen des Prozesses kann sich die Variable y geändert haben. Weil die aber nicht in der Sensitivliste steht (bzw. gar nicht stehen kann) wird der Prozess nicht mehr neu berechnet. y ist ein ungetaktetes Speicherelement, mithin ein Latch. Da haben wir das Ding... :-o Das hatten wir schonmal
-
Thread
Fehler im ModelSim aber nicht im Quartus
was man definiert. Es kommt genau das raus, was im Prozess beschrieben ist. Von jeher war die Sensitivliste nur ein Mittel, Simulationrechenzeit einzusparen. Denn sonst hätte jeder Prozess bei jeder Änderung irgeneines signals neu berechnet werden müssen. > Und eine Fehldefinition sollte angemahnt
-
Thread
Fragen zum VHDL Drehgeber Code
und berechnet aus den Eingangswerten ständig neue Ergebnisse. Nur in der Simulation ist die Sensitivliste relevant.
-
Thread
Fehler: Can't find control signal for.
= '1' und CNT_EN = '0' zählt RD_ADR Vollgas runter und RD_BIT_CNT Vollgas hoch. Weil deine Sensitivliste diese beiden Signale nicht enthält, ist die Simulation falsch. Dort mehr zum Thema: http://www.lothar-miller.de/s9y/categories/36-Kombinatorische-Schleife EDIT: vergiss die Kombinatorische Schleife
-
Thread
Process "Check Syntax" failed
compl3 of TR is : begin : verrechnung: process (clk,zahl2, operator) -- sieh dir mal die Sensitivliste an... begin zahl1i <= zahl1; -- da fehlt mindestens zahl1 zahl2i <= zahl2; if (operator = "0000") then -- man darf, um die Lesbarkeit zu erhöhen, z1 (22
-
Thread
VHDL Synthese und Simulation
state auch eine Neuberechnung des Prozesses nötig macht. Weil aber eine Variable nicht in die Sensitivliste genommen werden /kann/, ist die Simulation falsch, denn die Hardware wird sich anders verhalten. Dazu der Klassiker: http://www.mikrocontroller.net/topic/117630 Kurz: verwende *niemals* /speichernde
nacht) Wenn das wirklich ein synchroner Prozess ist, der nur auf clk reagiert, dann ist diese Sensitivliste überdefiniert. BTW: Lange Quelltexte bitte als VHDL Datei anhängen.
-
Thread
FF/Latch Warnung bei LCD Display
2. mit Einrückung lässt sich ein Quelltext toll formatieren 3. INIT_START ist in der obigen Sensitivliste unnötig Hast du mal geschaut, wie Andere das machen? http://www.mikrocontroller.net/topic/134713 http://www.mikrocontroller.net/topic/195365#1914060 http://www.mikrocontroller.net/topic/212063
-
Thread
Frage zur Erstellung eines VHDL - Codes
filtered) [/pre] Dazu wird deine Simulation auch nicht stimmen, denn der Takt fehlt in der Sensitivliste... :-o Christian Knabe schrieb im Beitrag #2723672: [vhdl] if rising_edge(C)and CE='1' then if B='1' or A='1' then Q <= '1'; else Q <= '0'; end if; end if;
-
Thread
Multiplizierer für zwei 3 Bit-Zahlen
muss das Zwischenergebnis z1 eine Variable sein. Alternativ würde es reichen, wenn z1 in die Sensitivliste aufgenommen wird, damit der Prozess nach Zuweisung eines neuen Wertes an z1 noch einmal durchlaufen wird. Alternativ: die Aufgabe einfach ohne Prozess lösen. Und genau so würde ich das machen
-
Thread
VHDL Grundlagen Tonerzeugung
ButtonDebouncer.vhd" von dort: [vhdl] comb : process(clk, rst, Btn, PS) -- überdefinierte Sensitivliste begin case PS is when hold0 => tempq <= "00"; if (Btn = '0') then -- asynchroner Eingang in FSM NS <= ready0; else NS <= PS; [/vhdl] Mal von der zu vollen Sensitivliste abgesehen und auch davon, dass dieser "ButtonDebouncer" sich intern als "ButtonToggle" präsentiert, der an einem prellenden Taster prinzipiell nicht funktioniert: es ist ein absolutes No-Go, einen
-
Thread
Fehler bei Zahlenvergleich in VHDL
(außer der Reset) müssen aus der > Sensitivity List entfernt werden. Und mit einer falschen Sensitivliste ist auch die Simulation sinnlos und unbrauchbar. Chris schrieb im Beitrag #1691976: > Das Stimmt wohl mit der kombinatorischen Schleife. Wohl wahr :-o Sobald du in einem kombinatorischen
-
Thread
Vektorposition im Array auslesen
durcheinander... > Process (CLK, Reset, Char) Da sind m.E. mindestens 2 Signale unnötig in dieser Sensitivliste... > PS: Ich weiß mit Variablen zu arbeiten ist in vhdl totaler Mist. Warum tust du es dann und zudem an gänzlich unnötiger Stelle?
-
Thread
Geteilten Takt weiterverwenden
einem synchronen Prozess (ohne asynchronen Reset) steht lediglich der eine FPGA-Mastertakt in der Sensitivliste. > signal count: integer 0 to 50; Die 50 deutet hier auf den beliebten Off-By-One Fehler hin... > idle <= false; > idle <= true; Das /idle/ hier ist irgendwie unnötig bzw. umständlich,
-
Thread
Anleitung Testbench
zeitgesteuert machen. Du kannst einfach auf die Änderung einen Signals reagieren, indem du es in die Sensitivliste eines Prozesses aufnimmst. > Ich versuche eine AND-Logik mit 3 Eingängen zu realisieren. > Kann man dies so realisieren? Kann man, sieht aber umständlich aus. So insgesamt. Frage: funktioniert
-
Thread
Anfänger braucht Hilfe
(Temperatur, Tempsensor) BEGIN : : IF TagNacht = '1' THEN [/vhdl] TagNacht fehlt in der Sensitivliste.... Was aber viel, viel schlimmer ist: das Design wird im echten Leben nie zuverlässig laufen! Warum behaupte ich das und bin mir sogar noch sicher, dass ich Recht habe? Sieh dir mal das
-
Thread
Latchs bei FSM
Vorteil hat das (all) allerdings unbestritten: es gibt auch in der Simulation keine unvollständige Sensitivlisten mehr. Insgesamt tendiere ich allerdings auch dazu, Kombinatorik nebenläufig zu beschreiben. Nur selten braucht man da wirklich einen Prozess.
-
Thread
VHDL-Fragen
losgelassen wurde. Das einfachste wäre - dachte ich - einen Prozess zu nehmen, und dem in seine Sensitivliste die Eingangssignale der Tasten zu geben: stateLogic : process (RST, EUROEINWURF, WAHLCOLA, WAHLBRUEHE, GELDZURUECK) So dass in einem späteren langen if-Zweig nur noch die steigende
-
Thread
Kombinatorik und Takt trennen?
] > if rising_edge(clk) then > [/vhdl] wenn ein wait im Prozess vorkommt, muss die Sensitivliste leer sein. wenn keins vorkommt, sollte was drinstehen...
-
Thread
Case konstrukt
kombinatorisch machst, dann wird er auf jeden Fall ein > paar Latches anmeckern. Zudem ist die Sensitivliste unvollständig: [vhdl] process (DATA_LOADED, DATA_IN_SIG) begin if DATA_LOADED = '1' then if (MAX_SIG < DATA_IN_SIG) then -- Ja, holla: MAX_SIG fehlt in der Senslist
-
Thread
syntax error bei Lattice Diamond
Das sieht man dann auch an der beliebigen Struktur des Prozesses und seiner unvollständigen Sensitivliste. Sieh mal in dein VHDL Buch: entweder ist ein Prozess synchron oder kombinatorisch. Aber nicht irgendeine vogelwilde Kombination von beiden. BTW: bitte künftig die [ vhdl ] Tags verwenden.
-
Thread
Constant Deklaration
process (rst, rsti, i32khz, zähler) --internes reset mit 3sek delay weitergeben [/vhdl] Die Sensitivliste ist überdefiniert, denn dieser Prozess ist ausschließlich auf den i32khz sensitiv! > i32khz Wieviele Takte hast du denn in deinem Design? jojansen schrieb im Beitrag #3137378: > Damit bekomme
-
Thread
VHDL Text für die Ertönung eines 1 kHz Tons
[vhdl] FOLGEZUSTANDSBERECHNUNG: process (taste,ZUSTAND) [/vhdl] Unvollständige Sensitivliste, B und co fehlen --> fehlerhafte Simulation Aber das ist nicht so schlimm. Schlimm ist der Aufwand, den du treibst. Eine Abfrage auf eine steigende bzw. fallende Flanke geht ganz einfach mit
-
Thread
Schieberegister mit "vollständig gefüllt" Ausgang
= '1') then DATA_OUT <= DATA_OUT_INT; end if; end process; [/vhdl] BTW: Die Sensitivliste in deinem Prozess wäre sowieso überdefiniert: [vhdl] READ_EN : process (CLOCK, RESET, DATA_READ_EN, DATA_OUT_INT) begin if rising_edge(CLOCK) then : [/vhdl] Dieser Prozess hinge nur
-
Thread
Ein- oder Zwei-Prozess-Darstellung für FSM
passiert sowas/ meinte ich, dass es eben nicht gewollt war. Und dann bekommt man eine unvollständige Sensitivliste und die Simulation passt nicht zur Hardware... > Mein Vorschlag mit den Selbstzuweisungen zielt darauf ab das ich die > Erfahrung gemacht habe das die Synthesetools (arbeite bevorzugt mit
-
Thread
Probleme beim Verbinden der Signale zwischen zwei Modulen
eher implizit. Aber: Variablen können im Prozess, in dem sie definiert werden, nicht in der Sensitivliste auftauchen...
-
Thread
Verständnisproblem Signalzuweisung
ja auch address (in der sensitivy list) > im ersten Takt. Nur ist eben die /address/ in der Sensitivliste unnötig und fehl am Platz. Denn wenn du das hier ansiehst: [vhdl] if (clock'event and clock = '1') then data_out <= tmp_ram(to_integer(unsigned(address))); end if; [/vhdl]
-
Thread
Xilinx Spartan 3E: Code geht bei der Translation kaputt
Code hier fehlerfrei ist Wenn die Simulation läuft (und nicht solche seltsamen unvollständigen Sensitivlisten hat, die dann aber der Synthesizer anmeckert), dann ist der Code fehlerfrei. > was könnte sonst den Reset-Wert des Zählers beeinflussen? Wenn du den Zähler eigentlich nie verwendest, wird der
-
Thread
Uhr mit zwei unterschiedlichen Takten
onesec='1') then : end if; : end process; [/vhdl] Dann wäre das mit der Sensitivliste nicht passiert ;-)
-
Thread
Lauflicht mit vorgegbenen Clkgen
Prozess /Counter/ ist eine Mischung aus Kombinatorik und getaktetem Prozess. Zudem ist seine Sensitivliste unvollständig. Da passt die Simulation nie zur Realität... Mo schrieb im Beitrag #5690228: > Die clkgen.vhd sowie die Datei CT.vhd wurde vorgegeben und gesagt, dass > sie verwendet werden
-
Thread
Probleme mit ISim, Prozesse getrieben von Clk-Signal aus Clk-Bus
Probiert doch einfach mal, den kompletten Vektor sig_clocks in die Sensitivliste zu nehmen...
-
Thread
Anodencontroller für LED Matrizen - bitte um Codekritik
#2958014: > dass man den Code auch eleganter schreiben könnte. Man sollte den Reset aus der Sensitivliste rauslassen, weil die Prozesse wegen des synchronen Resets nur auf clk sensitiv sind. (Eine Frage am Rande: ist der Reset /wirklich/ einsynchronisiert?) Falls nicht: Gratulation! Du hast einen
-
Thread
Pinbelegung?!
clk50M'event) then Deine Simulation wird nicht zur Realität passen, weil cnt50M nicht in der Sensitivliste ist, aber /kombinatorisch/ (=ausserhalb des Taktes) abgefragt wird. 3. sieh dir mal den Screenshot an und ersetze das 'c' in den eckigen Klammern durch 'vhdl' 4. > length : in std_logic_vector
-
Thread
Mainboard mit PPC und FPGA als Multiplexer
das Signal /gewaehlte_schnittstelle/ für eine korrekte Simulation auch (und zuallererst) in die Sensitivliste aufnehmen...
-
Thread
VHDL Signal Teilen und in die nächst höhere Adresse schreiben
Markus G. schrieb im Beitrag #6501147: > Ich habe die CLK miteinbezogen Generell wäre so die Sensitivliste unvollständig. > if(rising_edge(Clk) and en_read = '1') then > outputsignal <= ram(to_integer(unsigned(addr2))); > elsif(rising_edge(Clk) and en_write = '1') then Steht das so im Userguide
-
Thread
Modelsym, fragen zum Compilieren / Editor
der Code hübsch gehighlight. Diesen Codeabschnitt (bei dem das Signal /enable/ nicht in die Sensitivliste gehört) ... [vhdl] ausgabe: Process(folgec10, enable) IS BEGIN c10 <= folgec10; END PROCESS ausgabe; [/vhdl] ... kannst du ohne jegliche Funktionseinschränkung und ohne Rüffel vom
-
Thread
Frage zur VHDL Syntax - unsigned(std_logic_vector)
is a non-negative INTEGER. : [/vhdl] > test : process(a) is Dir ist klar, dass diese Sensitivliste nicht vollständig ist?
-
Thread
Einige Fragen zum VHDL
signal_2 <= signal_1; else signal_2 <= signal_1_save; end [/vhdl] weil (wieder mal) die Sensitivliste unvollständig ist :-/ Da müsste nämlich noch signal_1_save mit rein.
-
Thread
Mittelwertfilter
Neuberechnung des Prozesses anstossen sollte, das aber nicht kann, weil Variablen nicht in die Sensitivliste genommen werden können. Siehe dazu den recht lesenswerten http://www.mikrocontroller.net/topic/117630 Mit dem Fazit: Keine Variablen für Anfänger. ;-)
-
Thread
Event Counter funktioniert nur in der Simulation
Realität haben möchte Warum hat dann nicht jeder getaktete Prozess einen Reset-Pfad? Die Sensitivliste dort ist noch zu lang: readout : process (clk, rd, busif, outputbuffer, reset) Das würde reichen: readout : process (clk, reset) Aber prinzipiell ist dieser Prozess eh seltsam, denn
-
Thread
prozesse Verbinden
unnötige clocks in der Sensitivitätsliste mir > alles 'verranzen' Dem Synthesizer ist die Sensitivliste eh' /vollkommen/ schnurz, und die Simulation stört sich nicht an /zu vielen/ Signalen. Sie ist nur dann flasch, wenn relevante signale /fehlen/. Aber idR. ist es vollkommen simpel: in einem
-
Thread
Grundlagen VHDL Synthese - Schulung sinnvoll?
die Procedure. Und dann wird dort alles reingehämmert. Manche dann meinen auch noch, mit der Sensitivliste irgendwas steuern zu können...
-
Thread
Quadrature Decoder kann nicht synthetisiert werden
(=Flipflop) beteiligt ist. Eigentlich muss der Simulator hier rummeckern, weil nichts in der Sensitivliste steht und auch kein /wait/ im Prozess vorkommt.
-
Thread
IEEE.fixed_pkg
http://www.mikrocontroller.net/topic/161722 > Viel hilft viel? Sicher! Nehmen wir mal die Sensitivliste dieses Prozesses: [vhdl] process(clk, ce, din, coef) begin if clk'event and clk='1' then : end if; end process; [/vhdl] Was ist da zuviel drin? Zwei Sachen noch:
-
Thread
[VHDL] Process Sensitivitätsliste ohne if!?
bekommst du? Definiere "normal" und "funktionieren". Das was du da hast ist 1. eine falsche Sensitivliste, weil eigentlich lfsr hineingehört daraus resultierend 2. eine falsche Simulation, weil der Synthesizer lfsr einfach "dazunimmt" und 3. eine kombinatorische Schleife, weil lfsr ohne Takt auf
-
Thread
DCF77-Signal Synchronisation
reset,clk100Hz,DCF77,sec_59_release) > process (reset,DCF77,sec_59) Arg viel Zeug in diesen Sensitivlisten... > if (rising_edge(DCF77)) then Das ist kein Takt, sondern nur ein Signal, das 1. einsynchronisiert und dann 2. auf eine Flanke untersucht werden muss. Kurz: wenn ein Anfänger mehr als
-
Thread
Seltsames Verhalten im Design
des Designs. Ersetze "mehr" duch "ausschließlich". Dann passts. Die Synthese /erweitert/ die Sensitivliste selber und weißt dich dann mit eine Info darauf hin, dass die Simulation nicht zur Hardware passen wird... > Was ich noch zu Prozessen mal fragen will. Ist es besser viele > Funktionen und
-
Thread
Taktverschiebung
Zählerblock nicht ausgeführt. BTW: sig_gen : PROCESS (reset, clkin_ms, enable) Diese Sensitivliste ist überdefiniert. Der Prozess ist nur vom Reset und dem Takt abhängig. Wenn sich der Takt nicht ändert, bewirkt auch eine Änderung von /enable/ nichts. Du hast für meinen Geschmack zuviele
-
Thread
Ein fuer alle mal: Signal <signal> cannot be synthesized, bad synchronous description.
lernst "so kann man es machen!", dann wirst du später noch mal Sorgen damit haben... Diese Sensitivliste ist unvollständig (es fehlen sig_anodos, sw, selsect_cntMSECs10 und save_cnt) und und zudem ist da mittendrin nochmal ein Takt versteckt: [vhdl] process(cntDisp(16)) ------ hier fehlt was