Forum: Mikrocontroller und Digitale Elektronik 32 bit mit 74HCT165 schieben


von Florian (Gast)


Lesenswert?

Hallo Leute,

bevor ich hier einen dummen Fehler begehe, frage ich doch einfach einmal 
nach.

Ich habe vor, 32 bit aus einem (8 bit)-Flash-Baustein mittels 74HCT165 
seriell rauszuschieben. Ich würde einen Zähler nehmen, der die Adresse 
vom Flash hochzählt und diesen mit dem gleichen Takt wie den 74HCT165 
takten wollen. Es stellt sich nun die Frage nach den Timings.

Wenn ich die Zählerausgänge 3-4 an die Adressleitungen des Flashs hänge 
und das Laden des Schieberegisters dann triggere, wenn die 
Adressleitungen 0-2 alle low sind, frage ich mich, ob mir danach der 
erste Schiebepuls nicht verloren geht, denn es würde ja quasi 
gleichzeitig der Taktpuls und die PL-Leitung ansteigen (bzw. die 
PL-Leitung aufgrund der Laufzeit des notwendigen Gatters (vermutlich 
zwei Gatter des 74HCT10 verschachtelt) sogar später ansteigen). Das wird 
doch vermutlich nicht gut gehen.

Eine Idee könnte doch sein, die Zählerausgänge quasi um 1 zu 
verschieben, d.h. 4-5 an Flash, so dass man den 'halben' Takt an Ausgang 
0 noch für den Trigger nehmen könnte.

Gibt es vielleicht von Eurer Seite aus pfiffige Ideen dazu?

Gruß,

Florian

von Jaq (Gast)


Lesenswert?

Zum Einen wuerde ich den 165 durch den 595 ersetzen, zum Anderen koennte 
man sich ueberlegen
1)auf einen Simulator damit
2)in ein CPLD damit
Als Zaehler den 592 verwenden.
Ein Controller ist nicht beim Projekt dabei ?

von Jaq (Gast)


Lesenswert?

Bei diskreter Logik : Wenn die Schieberegister auf steigend schieben, 
koennte man auf fallend zaehlen.

von Sebastian (Gast)


Lesenswert?

wieso seriell rausschieben???

im prinzip hast du doch 4x8(32bit).. da könntest du 4 latches nehmen, 
welche du mit ein bisschen diskreter logik ansteuerst.

adresse

000
001
010
011
100
101
110
111

die bits 0 und 1 sind entscheiden

latch 0 wenn 00
latch 1 wenn 01
latch 2 wenn 10
latch 3 wenn 11

so kannst du das durch den gesamten speicher des flashs machen...

von Florian (Gast)


Lesenswert?

@Jaq:
595 hat einen seriellen Eingang, ich brauche aber einen parallelen.

Ein Controller ist für die Anwendung leider zu langsam (es sei denn, man 
investiert genug dafür).

@Sebastian:
Das wichtigste ist in der Tat das serielle Rausschieben. Es geht um eine 
Art PWM --- nur eben mit 32 bit.

Ein CPLD könnte die Lösung sein, dennoch wäre ich auch an einer 
diskreten Lösung interessiert.

Das Grundproblem mit dem Schieberegister ist in meinen Augen, dass beim 
Laden schon das entspr. Bit anliegt und daher das Laden quasi 
gleichzeitig mit dem Umschalten der Adresse laufen muss. Vermutlich muss 
ich einen zweiten Zähler für die Flash-Adresse verwenden, der quasi 
einen halben Takt voreilt.

von Zacc (Gast)


Lesenswert?

Das 595 is seriell zu parallel, das 597 ist parallel zu seriell.

von Sebastian (Gast)


Lesenswert?

32bit pwm!? okay!

jetzt verstehe ichs. grübel

von Sebastian (Gast)


Lesenswert?

welche frequenz schwebt dir denn vor?

müsstest ja quasi

takt1 high incr zähler (daten1 liegen an)
      low  lädt /PL    (daten1 sind im ersten register)
takt2 high incr zähler (daten2 liegen an) & Erster takt deiner pwm
      low  lädt /PL    (daten2 sind im ersten register)
takt3 high incr zähler (daten3 liegen an) & zweiter takt deiner pwm
      low  lädt /PL    (daten3 sind im ersten register)

nun folgen 29 takte shiften

takt1 high incr zähler (daten1 liegen an) & Letzter takt deiner pwm
      low  lädt /PL    (daten1 sind im ersten register)

viel spass mit ttl!!

von Sebastian (Gast)


Lesenswert?

ist machbar. mit 2 binärzählern und ein paar logischen verknüpfungen. 
der eine zählt den flash/eeprom. und der andere zählt bis 32..
dann kommst du mit einem takt ganz gut hin, glaube ich

von Thomas S. (Gast)


Lesenswert?

Wie schnell soll das ganze denn überhaupt sein ?

von Florian (Gast)


Lesenswert?

Wenn ich mal von 20.000 Wiederholungen pro Sekunde ausgehe, wäre das ein 
Bit-Takt von 640 kHz. Ein PIC mit 12 MHz getaktet war leider deutlich zu 
langsam. Ich habe in der Zwischenzeit Datenblätter gewälzt und wenn ich 
mich nicht vertue, sollte ein ATmega16 mit 16 MHz eigentlich genug Dampf 
haben, da die Befehle wohl teilweise in einen Taktzyklus abgefertigt 
werden. Beim PIC hatte m.W. jeder Befehl 12 Takte, so dass man dann auf 
1 MIPS kam. Das war ein wenig zu knapp für 640 kHz. Mit fast 16 MIPS vom 
ATmega16 sollte das dann aber reichen. Habe hier noch einen rumliegen 
und werde mal ein Layout basteln . Vielleicht habe ich ja Glück.

von Freunde (Gast)


Lesenswert?

geht doch ganz einfach, man nehme..

von Lukas (Gast)


Lesenswert?

und wie weiter bitte?

von Andreas K. (oldcoolman)


Lesenswert?

könnte man nicht vor dem schiebetakteingang eine kleine
genau kalkulierte Zeitverzögerung einbauen.
74122 mit sehr kleinem c ? oder ein paar gatter hintereinander?

Gruß Andi

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.