Forum: FPGA, VHDL & Co. Schieberegister mir 2 Richtungen auf einem PAL


von Alexander _. (bastlwastl)


Lesenswert?

Ich soll auf einem PAL ein Schieberegister machen bei dem man Werte
laden und die Schieberichtung wächseln kann.

Ich habe bis jetzt:

"Inputs
Clock pin;
Enab pin;
Load pin;
Reset pin;
Left pin;
SR0 pin;
D8..D1 pin;

"Outputs
SR1..SR8 pin istype 'reg';

Equations
[SR1..SR8].CLK = Clock;
[SR1..SR8].AR = Reset;
[SR1..SR8].OE = Enab;

[SR1..SR8] := !Load & [SR0..SR7]
# Load & [D1..D8];

Wie bekomme ich die Schieberichtungsumkehr hin?

Ich habs schon damit versucht:
[SR1..SR8] := !Load & !Left & [SR0..SR7]
              # Load& !Left & [D1..D8]
                      #Left & [SR7..SR0];

Aber irgendwie habe ich einen Knopf in meiner Lodik.

Weis jemand was ich falsch mache?

mfg Alex

von Mockup (Gast)


Lesenswert?

hi.
kenne mich zwar nicht mit pals aus aber normaler weise ist das so
einmal so wie du hast:
======================
[SR1..SR8] := !Load & [SR1..SR7] (glaube die 0 sollte ne 1 sein, da du
ja sonst 9bit in 8bit schreiben würdest)
und das gegenstück wäre so:
===========================
[SR1..SR8] := [SR2..SR8] & !Load

hoffe das hilft.
mfg

von Alexander _. (bastlwastl)


Lesenswert?

SR0 ist der Pin in die die neuen Daten eingespeist werden.
Wie du es beschrieben hast, würde gar nichts funktionieren.
Es soll ja ein Schieberegister sein.

Solange Left low ist, läuft alles wie es soll.

Wenn ich aber Left auf high setze, dann springen die Daten einfach nur
Symetrisch um das 4. Bit hin und her.

Wenn ich also im Zustand : 01100000b die Richtung mit Left = high = 5V
ändere, springt die Anzeige im Clocktakt zwischen 01100000b und
00001100b hin und her.


mfg Alex

von Mockup (Gast)


Lesenswert?

achso ich hatte gedacht das load zum dateneinspeisen ist.
tschuldigung.

rechts
[SR1 bis SR8] := [SR0 bis SR7]
links
[SR1 bis SR8] := [SR2 bis SR8] & SR0

so wie du das jetzt hast, drehst du das byte ja nur um, srich du
spiegelst es immer.
versuch mal das.
mfg

von Alexander _. (bastlwastl)


Lesenswert?

Danke für deine Hilfe.

Ich werd's gleich mal ausprobieren.

Ein kleiner Hinweis.

Load wird verwendet um neue Daten parallel über [D1..D8]
hereinzuladen.
Die normalen seriellen Daten werden über SR0 eingelesen.

mfg Alex

von Techniker (Gast)


Lesenswert?

Hey, sowas such ich auch gerade als fertiges IC!

Sowas in einem PAL zu realisieren bin i noch garned draufgekommen..

Leider kenne ich mich mit programmierbarer Logik so gut wie fast nicht
aus (ausser ein paar Und und Oder in einem GAL zu proggen).

Funktioniert dein PAL-Proggi?

von Alexander _. (bastlwastl)


Lesenswert?

Tag

Ich kann erst am Freitag ausprobieren ob's funktioniert.

Wenn du schon nach einem fertigen Baustein suchst, dann schau dir mal
die 74LSXXX Familie an.

Da müsste es sowas geben.

Ich hab das Gleiche aber auch schon mit 2 antiparallel veroderten
74LS164 Schieberegistern gemacht.
(Lauflicht)

mfg Alex

von Sepp -. (sepp_o)


Lesenswert?

"Ich habs hinbekommen.
"Hier ist das fertige Programm.

´MODULE SR

TITLE 'Schieberegister'

Declarations

"Inputs

 clk  pin ; "Clk 1
 res  pin ; "S4
 load  pin ;"S2
 sr0  pin ;"S1
 d8..d1  pin ;"Mausklavier
 links pin ;"S3


"Outputs

 sr1..sr8 pin istype 'reg';

Equations

[sr1..sr8].clk = clk;
[sr1..sr8].ar = res;

[sr1..sr7] := !load & !links & [sr0..sr6] # load & !links & [d1..d7] #
links & [sr2..sr8];
sr8 := !load & !links & sr7 # load & !links & d8 # links & sr0;

END
"mfg Sepp

von Alexander _. (bastlwastl)


Lesenswert?

Danke für deinen Beitrag.

Du hast mir sehr weitergeholfen.

mfg Alex

von Techniker (Gast)


Lesenswert?

@Sepp:

Könntest du bitte das JEDEC-File posten und den passenden PAL-Typ
angeben?

von Sepp -. (sepp_o)


Lesenswert?

Ich habs bei nem Kumpel gemacht der ein Übungsboard mit einem Mach4
hat.

Mit einem 22V10 dürfte es aber auch gehen.

Hast du ein Programiergerät?

Wie sieht die benötigte Pinbelegung aus?

Dass möchte ich schon wissen.

Soviel ich weis hat Lattice Demo-Programierprogramme.

mfg Sepp

von Techniker (Gast)


Lesenswert?

Hallo Sepp!

Programmiergerät habe ich (HiLo Systems ALL-07).
Pinbelegung ist mir egal - ich richte mich nach dem PAL.

Im Vorraus schonmal danke!

:-D

von Sepp -. (sepp_o)


Lesenswert?

Hi

Leider ist mein Kumpel jetzt die nächsten paar Wochen auf Urlaub und
ich hab keine Möglichkeit das Jed zu erzeugen.

Mal eine andere Frage.

Wieso erzeugst du dir das JED nicht selbst?

Du kannst dir doch selbst den Code einfach kopieren und das JED selbst
erzeugen.

So lernst du wenigstens mit dem Programiersystem umgehen.

Du kannst ja nicht immer erwarten dass dir irgendwer das passende Jed
erstellt.

Ich denke da vor allem an veränderte Anforderungen.

Ich hab mir mal den 22V10 genauer angeschaut.
Der hat ausreichent I/O's und das Programm passt auch drauf.
Da hast du sogar noch einen Pin für den Enable frei.

mfg Sepp

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.