Frage

Ich stellte diese digitale Logik-Diagramm als Antwort zu eine weitere stackoverflow-Frage.Es beschreibt eine Logik-system, die ist codiert in Verilog oder VHDL und schließlich umgesetzt in einem FPGA.

alt-text http://img145.imageshack.us/img145/5125/bitshifterlogicdiagramkn7.jpg

Die nummerierten Felder in dem Diagramm repräsentieren die bits in einem Feld.Jedes Feld hat K bits und bits für aktuelle und Maske wird von einem computer-system (unter Verwendung eines gesperrten registrieren oder gleichwertig).Die bits in weiter gelesen wird wieder in die gleichen computer system.

Die Lösung, die ich geschrieben funktioniert so lange, wie es ist mindestens ein bit in der Maske Feld, und es ist genau ein bit gesetzt ist, in der aktuelle bit-Feld.Die Idee ist, dass die weiter bit-Feld wird die aktuelle bit-Feld nach dem computer-system durchgeführt hat, eine Aufgabe (eine scheduling-Funktion, in der ursprünglichen Frage).

So, meine Frage ist:Wie würden Sie ändern das system, so dass es korrekt behandelt den speziellen Fall, wo die aktuelle bit-Feld ist alle null (kein bit gesetzt)? Wie es aussieht, wenn alle bits im aktuelle null sind, wird die Ausgabe ebenfalls null sein, egal, was die bits in Maske eingestellt sind.

Ideal ist es, wenn aktuelle ist alle Nullen, die niedrigste gesetzte bit in Maske in weiter.Das system soll auch noch bleiben skalierbar für eine beliebige Anzahl von bits (K), ohne dass Sie exponentiell mehr Logik-Gatter.Der Geist, der die ursprüngliche Frage war, um zu einer Lösung zu kommen, die wäre einfach zu implementieren für eine beliebige Anzahl von bits.

Siehe auch: diese stackoverflow-Frage

War es hilfreich?

Lösung

Für mich, ich würde sagen, der Benutzer des FPGA, müssen Sie eines der bits auf 1 gesetzt bei der Einreise.

Aber wenn das nicht Ihre bevorzugte Lösung, was ist falsch mit die Idee von pre-Fütterung alle die Aktuellen Eingänge zunächst in ein großes Gatter (so dass der Ausgang ist nur dann true, wenn alle Eingänge den Zustand false).Alle Aktuellen Linien auch weiterhin durch, um Ihre UND Toren, mit der Ausnahme, dass Strom[1] wird addiert mit der Leistung unserer NOCH Tor, bevor es zu betreten, UND Tor

So, - Strom[1] true betreten UND die Tor, wenn alle Ströme sind falsch.

Halten in Geist, dass ich verstehe, Boolesche algebra, aber ich habe noch nie gearbeitet raw-hardware - ich vermute, Sie müssen alle Puffer der input-Signale in das UND-Gatter zu gewährleisten richtige timing, aber ich vermute, Sie wissen das besser als ich.

Die folgende Grafik wird Links in den Fall SO behebt Ihr code/pre-Blöcke - der neueste, SO aktualisieren Sie scheint zu haben, stopfte Sie oben (so dass Sie proportional, nicht mit fester Breite, schriftart).Sowieso, eJames' grafische Darstellung ist besser.

Hier ist mein Diagramm mit etwas weniger elegant als deins :-):

               +-------------------+
               |                   |
               |     +----         |
Current[1]-----+------\   \        |
                       |NOR|o--+   |
Current[2-k]---+------/   /    |   |
               |     +----     |   |
               |              +\   /+
               |              | \_/ |
             +---+            |  OR |
              \ /Buffer        \   /
               +                ---
               |                 |
             +---+             +---+
             |2-k|             | 1 |    <- These signals feed 
             +---+             +---+       into your AND gates.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top