Morgen! In Verilog gibt es ja mit
1 | assign wire = 1 ? value : 0; |
diese elegante Art in Abhängigkeit eines Signals einem Wire einen Wert zuzuweisen. Gibt es eine solche Möglichkeit auch in VHDL? Vielen Dank schon Mal =)!
|
Forum: FPGA, VHDL & Co. Kurzschreibweise if/else in VHDLMorgen! In Verilog gibt es ja mit
diese elegante Art in Abhängigkeit eines Signals einem Wire einen Wert zuzuweisen. Gibt es eine solche Möglichkeit auch in VHDL? Vielen Dank schon Mal =)! Sorry für Doppelpost, aber ich habs jetzt mal so gemacht:
Da schalte ich also in Abhängigkeit von reset en_seed zwischen 0 und 1. Irgendwelche Einwände? =) > Irgendwelche Einwände? =) Arg Plattformabhängig, das Ganze... :-/ Und wozu eigentlich ein Mux für diese Aufgabe: > in Abhängigkeit von reset en_seed zwischen 0 und 1 Das ginge kürzer so: enseed <= not reset; oder so: enseed <= reset; Ich würde einen MUX als concurrent-Beschreibung schreiben:
Lothar Miller schrieb: > Arg Plattformabhängig, das Ganze... :-/ Jepp... soll aber nur auf nem Virtex5 Board laufen. Also nicht weiter tragisch. > Und wozu eigentlich ein Mux für diese Aufgabe: >> in Abhängigkeit von reset en_seed zwischen 0 und 1 > Das ginge kürzer so: > enseed <= not reset; > oder so: > enseed <= reset; Jo... ist mir auch aufgefallen =) ! Habs auch schon geändert. Wozu den Mux? Ich wollte nen kleines LSFR basteln, bei dem bei reset als seed ne 1 gegeben, sonst aber die Feedback Leitung anliegt. Deswegen hab ich immer noch nen Mux am Eingang des ersten FFs:
Kann man das so machen? Oder läuft man da Gefahr wegen Glitches usw? > Oder läuft man da Gefahr wegen Glitches usw? Klar gibt es bei Kombinatorik (und ein Mux ist das) immer die Gefahr von Glitches. Aber dafür ist bei synchronen Designs der Takt zuständig: rechtzeitig vor dem nächsten Taktimpuls muß das Ergebnis der Kombinatorik stabil sein. > Kann man das so machen? Kann man schon, ist aber sehr sehr unleserlich. Ein paar leserliche LFSR findest du da: http://www.lothar-miller.de/s9y/categories/38-LFSR > Ich wollte nen kleines LSFR basteln, bei dem bei reset als > seed ne 1 gegeben, sonst aber die Feedback Leitung anliegt. Wozu ein Reset bei einem LFSR? Danke für den Link =)! Lothar Miller schrieb: > Wozu ein Reset bei einem LFSR? Mir ist spontan keine bessere Methode eingefallen, wie ich eine seed in den LSFR einpflanze als den globalen Reset dafür zu missbrauchen. > ... den globalen Reset dafür zu missbrauchen. Zum Thema Reset und Xilinx lies mal das Whitepaper WP272... Oder/und auch den Beitrag "Xilinx und die Resets" Danke für den Lesetipp =) ! Werde ich mir definitiv zu Gemüte führen! Also ich hab gerade entweder ein Verständnisproblem, oder das gewählte Polynom ist einfach so (was ich aber nicht verstehe). Ich wollte einen LFSR mit dem Polynom X³+X+1 generieren. Dabei wiederholt sich die Ausgabe immer nach Sieben Takten. Es kommt immer 1101000. Dabei dachte ich, wechselt die Ausgabe zufällig bei diesem Polynom??? Weiß jemand ne Antwort? > Also ich hab gerade entweder ein Verständnisproblem, oder das gewählte > Polynom ist einfach so (was ich aber nicht verstehe). Pauschal: Zeile 42 ist falsch. Oder: wer soll dir ohne Code sagen, was du falsch gemacht hast? > Ich wollte einen LFSR mit dem Polynom X³+X+1 generieren. Also sowas, wie dort in der Mitte der Seite: http://www.newwaveinstruments.com/resources/articles/m_sequence_linear_feedback_shift_register_lfsr.htm Ja, das passt doch: mit 3 FFs kannst du maximal 7 unterschiedliche Zustände kodieren (die 111 kann ja nicht vorkommen). Diese 7 Werte wiederholen sich dann dauernd. Und für mich sehen die Werte zufällig aus: 1101000 --> 110 = 6 101 = 5 010 = 2 100 = 4 000 = 0 001 = 1 011 = 3 Achso... Ich dachte es sind eben die sieben Zustände die zufällig enstehen... Aber anscheinend werden die Zustände einem nach dem anderen abgeklappert und wiederholt... Trotzdem Danke =) ! > Ich dachte es sind eben die sieben Zustände die zufällig enstehen... Die Reihenfolge der 7 Zustände ist zufällig. Wenn du etwas erreichen willst, das über längere Zeit zufällig aussieht, brauchst du ein Polynom mit einem wesentlich längeren Schieberegister. Ein Schiebereigister mit 32 Bits wiederholt sich z.B. erst nach 4294967295 Takten. Der Trick der Polynome ist, dass mit einem geeigneten Polynom jeder der 2^n-1 Zustände während einer Wiederholung genau 1 mal vorkommt. Ein ungeeignetes Polynom lässt Werte aus und/oder voerdoppelt einige... > Aber anscheinend werden die Zustände einem nach dem anderen abgeklappert > und wiederholt... Logisch: an dem Aufbau ist doch überhaupt nichts zufälliges. Es ist ein Schieberegister mit 3 Flipflops. Und bei einem rückgekoppelten Schieberegister wiederholt sich (bestenfalls) irgendwann alles. Schlimmstenfalls erreicht das Ganze einfach einen stabilen Zustand... Nicht direkt zu LFSR sondern zu CRC: http://www.ross.net/crc/download/crc_v3.txt getreu dem Motto: It was hard to write, it should be hard to read :o) Das mit der CRC ist mir ja auch bekannt, bloß hab ich das in dem Zusammenhang mit LFSR noch nicht so gesehn. Danke =)! Jetzt hab ichs auch verstanden! 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.
|
|