11110000 im Schieberegister rotieren lassen

Gast #6170155
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.
#6170163
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
#6170957
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?
Gast #6172542
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren