mikrocontroller.net

Forum: FPGA, VHDL & Co. 11110000 im Schieberegister rotieren lassen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Franz Ganz (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Beitrag "Re: 11110000 im Schieberegister rotieren lassen"

Hallo Leute, ich habe da eine Problemstellung bei der ihr euch 
hoffentlich auskennt. Ich möchte in einem 8-Bit- Schieberegister 
11110000 im Kreis rotieren lassen, so das immer vier zusammen hängende 
Einzen unterwegs sind. Das Rückkopplungsnetzwerk sollte aus jedem 
Anfangszustand zu diesem 11110000 Bitmuster hinkommen. Drei triviale 
Lösungen verwerfe ich:

1. Taktfrequenz durch 8 teilen und den Eingang des Schieberegisters 
damit füttern.

2. Eine 256 Bit Tabelle in einem EPROM etc.

3. Den vierten Ausgang invertiert auf den Eingang des Schieberegisters 
und hoffen, das das Schieberegister mit 00000000 startet...

Wie kann man so ein Rückkopplungsnetzwerk gestalten?
Sorry dafür, das ich zuerst einen Thread bei uC und digital gestartet 
habe.

von Jörg R. (solar77)


Bewertung
-1 lesenswert
nicht lesenswert
4. Ein 8-Pin Tiny und ein Parallel-In Serial-Out Schieberegister um den 
gewünschten Code einzulesen. Ausgabe erfolgt auf dem 74HC164.

5. Ein uC mit genügend Ein- bzw. Ausgängen.

von Dergute W. (derguteweka)


Bewertung
0 lesenswert
nicht lesenswert
Moin,

Franz Ganz schrieb:
> 2. Eine 256 Bit Tabelle in einem EPROM etc.

Dann nimmste halt diese Tabelle und vereinfachst die soweit moeglich; 
z.b. so:

https://de.wikipedia.org/wiki/Verfahren_nach_Quine_und_McCluskey

Abhaengig davon, nach wievielen Clks dein Schieberegister wieder 
"passen" sollte, wird sich dieser boolsche Ausdruck wahrscheinlich mehr 
oder weniger gut vereinfachen lassen.

Was ist der Sinn des ganzen? Sowas wie Trockenschwimmen?

Gruss
WK

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Bewertung
0 lesenswert
nicht lesenswert
> 5. Ein uC mit genügend Ein- bzw. Ausgängen.
Du bist raus. Das wäre viel zu einfach.

von Lotte (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ben B. schrieb:
>> 5. Ein uC mit genügend Ein- bzw. Ausgängen.
> Du bist raus. Das wäre viel zu einfach.

Vor allem wegen:
> Forum: FPGA, VHDL & Co.

von Franz Ganz (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Habe selber diese Lösung erarbeitet.
Erste Erkenntnis: nur die ersten 4 Bit im Schieberegister sind von 
Bedeutung.
Nur bei folgenden vier Kombinationen wird eine "1" nachgeschoben:

0000
1000
1100
1110

Die Gatter im Anhang.

von Franz Ganz (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Und jetzt wo ich es hochgeladen habe, sehe ich auch noch einen Fehler, 
die unterste D Leitung muss invertiert werden.

von Peter D. (peda)


Bewertung
1 lesenswert
nicht lesenswert
Franz Ganz schrieb:
> Habe selber diese Lösung erarbeitet.

Sparsamer als die Lösung mit dem 74HC93 ist das aber auch nicht.

von Jörg R. (solar77)


Bewertung
0 lesenswert
nicht lesenswert
Franz Ganz schrieb:
> Habe selber diese Lösung erarbeitet.

Da würde mich mal der gesamte Schaltplan interessieren, inkl. Benennung 
der Bauteile.

Aus dem Parallelthread geht hervor dass Du mit dem Muster flexibel sein 
möchtest. Ist dass in deiner Lösung implementiert?

Beitrag "Re: 11110000 im Schieberegister rotieren lassen"

Ich bin nach wie vor bei einem uC. Am besten einer mit genügend Ports, 
um zusätzliche ICs zu vermeiden.

Wozu dient das Ganze?

: Bearbeitet durch User
von vancouver (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Vielleicht stehe ich gerade auf der Leitung, aber was macht dieses Thema 
im FPGA-Forum, wenn es eigentlich um TTL-Bausteine geht?

Im FPGA würde man des Schieberegister rückkoppeln und auf 0x0F resetten, 
etwa so:

logic [7:0] sr;
always_ff @(posedge clk or negedge rstn) begin
   if (!rstn)
      sr <= 8'h0F;
   else
      sr <= {sr, sr[7:1]};
end

von vancouver (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
vancouver schrieb:
> sr <= {sr, sr[7:1]};

sr <= {sr[0], sr[7:1]};

Sorry

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.