PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 20 Bit Zähler mit Logik



BASTIUniversal
19.06.2006, 14:58
Hallo!
Ich hab mir gedanken gemacht, wie ich am besten ein größeres SRAM ansteuere, und das möglichst schnell.
Z. Zt. soll das SRAM ein 512kx8 großes sein, das bedeutet 19 Adressleitungen. Weil mir das an einem AVR zu viel ist, will ich das ganze
jetzt mit Binär-Zählern aufbauen.
Da ich zu Hause noch über 30 Stück des 74193 (ohne LS, HC oder so) hab mach ich das ganze mit dem. Der 74193 ist ein 4Bit Zähler.
Davon werden 5 Stück hintereinander geschaltet um auf 20 Bit zu kommen.

Auf meinem Breadboard hab ich schon 2 hintereinander geschaltet, was auch recht gut funktioniert (sind gerade nur LED's zum Testen dran).
Im Anhang ist meine Beschaltung...und da wüsste ich gern ob ich das so machen kann oder ob da was dagegen spricht ](*,)

Zur Erklärung:
IC1 (ganz links) bekommt einen Takt von max. 32MHz an den "UP" Eingang, die Nachfolgenden bekommen ihren Takt vom "Carry Out" des vorherigen 74193. Die "Clear" Eingänge werden alle zusammengeschaltet um einen gleichzeitigen Reset machen zu können.
Die Eingänge zum setzen (A,B,C,D) werden mit Masse verbunden, der "Load" und "Down" Eingang werden auf +5V gezogen. Der "Borrow Out" Ausgang bleibt offen.
Die Ausgänge der IC's werden auf eine Pfostenleiste gelegt. Jeder IC bekommt seine 100nF zwischen Vcc und GND, zusätzlich ist noch ein 10µF Elko vorgesehen.

Die Ausgänge der Zähler gehen später an die Adresseingänge eines SRAM. Mit Daten wird das RAM direkt von einem parallelem ADC versorgt (also keine RAM Erweiterung für den AVR oder so).

Hat jemand Tipps oder hab ich was übersehen? Hab bisher noch nix mit reinen Logik-Bausteinen gemacht!

shaun
19.06.2006, 16:20
Du betreibst das IC am Rande seiner Spezifikation mit 32MHz. Bei der Geschwindigkeit musst Du sowieso verdammt mit dem Timing von ADC, Adresszähler und Schreibimpuls fürs RAM aufpassen. Ich brauchte in einer Schaltung mit F-Zählern und 60ns-RAM bei 12MHz schon ein Latch hinter meinem ADC, weil es einfach nicht passen wollte.

BASTIUniversal
19.06.2006, 16:41
Hast du also schonmal sowas in der Art gemacht (also schnellen ADC ins SRAM schreiben lassen und dann langsam auslesen)?

Wenn das ganze System einigermaßen bei mir funktioniert wollte ich sowieso auf schnellere Bausteine umsteigen.
Timing usw. muss ich mir nochmal anschaun.

shaun
19.06.2006, 19:57
Jo, hab ich. Mit 12MHz abgetastete Videodaten von einem TDA8703 in 128kx8 RAMs, um s/w-Schnappschüsse von einer Kamera zu machen (der Vorgänger meines Videodigitalisierers auf http://www.engcyclopedia.de unter Projekte irgendwo vermuschelt). War wie gesagt tricky: Du musst die Zeiten aus dem RAM-Datenblatt genau beachten, vor allem musst Du darauf achten, ob und wie lange Adressen und/oder Daten vor WE->low stabil sein müssen und ob sie mit der steigenden Flanke von WE sofort wieder ungültig werden dürfen usw. Die Zugriffszeit ist nicht mal die halbe Wahrheit. Dazu musst Du natürlich beachten, bei welcher Flanke die Zähler und der Wandler arbeiten, wie lange die Verzögerung ist, bis das Datum gültig ist. Immerhin ist der '193 ein Synchronzähler, das ist schon mal Voraussetzung.

PICture
19.06.2006, 20:34
Hallo BASTIUniversal!

Du kannst ein Adresszähler, der mit 32 MHz Zählen kann, nur aus 74163 bauen, und nur so, wie auf dem Schaltplan im Datenblat vom Texas Instruments (ca. 700kB, Seite 22, Zeichnung 2), dargestellt. Das Datenblatt kannst Du hier laden:

http://www.datasheetarchive.com/

Mit Deinem aus 74193 als "ripple counter" gebauten Zähler kannst Du lediglich mit ein paar MHz rechnen, weil um RAM zu beschreiben müssen alle Adressbits während WR Impulses schon stabil sein.

MfG :)

shaun
20.06.2006, 02:26
Hups, Kommando zurück. Der '193 alleine ist zwar ein Synchronzähler, aber er lässt sich nicht synchron kaskadieren, insofern hat Picture den Nagel auf den Kopf getroffen: mit der Schaltung handelst Du Dir noch ein Timingproblem mehr ein, im Worst Case müssen alle fünf Zähler für 20 bit getaktet werden, heisst also, dass erst nach fünf Durchlaufverzögerungen das Ausgangswort stabil ist. Bäh!

BASTIUniversal
20.06.2006, 16:46
Hallo!
Ich hab mir jetzt mal die Daten des 74193, TDA8703 und vom SRAM (628512-55) angeschaut.

Das ganze sieht eigentlich gar nicht so schlecht aus...:
Der 193 braucht max. 47ns um seine Ausgänge nach einem "High->Low" der Clock auf Low zu bringen (andere Richtung ist mit 38ns etwas schneller).
Der TDA8703 benötigt max. 20ns um die Richtigen Daten nach einem "Low->High" der Clock (was den Beginn der Messung bedeutet) bereitzustellen.
Beim oben genannten SRAM (Best.-Nr von Reichelt entspricht dem Namen) beträgt die Address Set-up Time, Write Recovery Time und Data Hold from Write Time genau 0ns.

Damit sollte eine Geschwindigkeit von ca. 21MHz drin sein, oder (also von Seiten des '193)?

Im Anhang ist ein Timing Diagramm des SRAM. Die Zeiten die entscheidend sind dürften tAS, tWR, tDH sei. Die sind alle laut Datenblatt 0ns.
tWC dürfte die Zeit sein, die für die max. Schreibgeschwindigkeit entscheidend ist, diese beträgt 55ns. Damit kann ich mit max. 18MHz auf das SRAM schreiben.

@shaun:
Du meinst die Zeit die der Zähler benötigt um nach dem 16. Clock "Low->High" den Carry Out Ausgang auch ein "Low->High" machen zu lassen?
Die Zeit beträgt max. 24ns.
Im Worst Case müsste ich 4*24ns (also 96ns, das Carry Out des letzten '193 brauch ich ja nicht) warten. Bedeutet das, dass ich die Geschwindigkeit auf eben diese 96ns verringern muss? Das würden dann nurnoch knapp 10MHz sein!
Für die erste Version müsste das aber immernoch genug sein...kann ich schon am RAM sparen :-$

shaun
20.06.2006, 19:25
Schlimmer, das letzte Bit ist erst garantiert stabil nach 4x Carry-durchreichen (24ns) und dann noch die 47ns für den Zählvorgang des letzten Zählers. Nicht gut, oder?

BASTIUniversal
20.06.2006, 19:43
Naja, dann wär ich bei 7 MHz...das ist dann schon etwas wenig!

Aber ich Bau's trotzdem auf, die Zähler haben mich ja nix gekostet. Die nächste Version (wenn denn alles funktioniert irgendwann) werd ich dann mit 74HCT163 aufbauen.

Danke für die große Hilfe!

hardware.bas
20.10.2018, 13:25
Hallo, zusammen,
um keinen neuen Threed zu eröffnen, mache ich hier weiter.
Realisiert werden soll ein programmierbarer Frequenzteiler
von ca. 40MHz anwärts in unter 1kHz-Schritten.
Ausgegeben sollen nur Rechtecksignale, Sinus nicht nötig.
Die Möglichkeit eines DDS mit nachfolgender Impulsformung
währe zwar interessant, jedoch soll, um verschiedene
Impulsmuster generieren zu können, sollen jedoch die
einzelnen BIT-Ausgänge zugänglich sein.
Deshalb habe ich den Einsatz von 74HCT163 in Erwägung
gezogen, um folgende Bedingungen zu erfüllen;
Synchron Zählen (Teilen), Synchron Laden, Synchron
kaskadierbar. Nun meine Fragen an User, welche sich
damit bereits beschäftigt haben; Kann der 74HCT163
mit mehr, als nur 2 kaskadiert werden (5 oder 6 sollen
es sein), oder gibt es als Alternative auch 8-BIT-
Zähler (oder höher) mit gleichen Leistungsmerkmalen?
Vielen Dank
Micha

Moppi
20.10.2018, 22:22
Ein wiederkehrendes Problem: https://www.roboternetz.de/community/threads/72449-RAM-Baustein?p=646905&viewfull=1#post646905


MfG
Moppi

hardware.bas
21.10.2018, 17:47
Vielen Dank für den Tip.
Es gibt jedoch ein kleines notwendiges Update; 120 MHz Eingangsfrequenz
sind jetzt gefordert
VG Micha

Moppi
21.10.2018, 19:53
Dann wäre das wohl der 74LVC161..

MfG
Moppi

hardware.bas
23.10.2018, 20:57
Nochmals vielen Dank,
es wird sich jetzt auf eine "Mutterfrequenz" von 42 MHz beschränkt,
alles andere wird "hochsimuliert" und es hat sich ein maximales
Teilerverhältnis von 16 bit als ausreichend herausgestellt, so dass
auf Grund der Verfügbarkeit 4x74163 kaskadiert werden sollen.
Ich hoffe, das geht.
VG Micha

- - - Aktualisiert - - -

PS. Bin kurz vorm Bestellmodus von 2 x 74HCT163 und TTL-kompatiblen
66 MHz Quarzoszillator , komme dann auf ein Frequenzraster von fast
genau 1 kHz, sollte doch hinhauen oder? Vielen Dank
Micha

Moppi
23.10.2018, 21:19
Nööö! Warum denn? Frequenz rauf, Frequenz runter ... ;-)

Warum sollen die nicht kaskadiert werden können, auch, wenn es die 163er sind? - Das geht.

Beachte:

M54/74HC161 Binary, Asynchronous Clear
M54/74HC163 Binary, Synchronous Clear

"The function on the M54/74HC162/163 is synchronous
to CLOCK, while the M54/74HC160/161
counters are cleared asynchronously."

Also, Rücksetzen des Counters 74163 ist nur synchron mit dem Takt möglich.



MfG
Moppi

hardware.bas
23.10.2018, 21:39
Im Datasheet konnte trotz mangelhafter Englischkenntnisse zwar
ein UP/DOWN-Beispiel erkannt werden, die Zählrichtung ist mir
jedoch egal, das errechnet ein AVR, welcher mit 16 Output-Pins mit
den Load-Eingangen der beiden /$HCT163 verbunden währe.
Wichtig ist der "jitterfreie" Taktausgang
VG Micha

hardware.bas
05.11.2018, 19:22
Die praktische Realisierung erfolgt nunmehr mit einem
66 MHz Quarzoszillator mittel 4 kaskadierter 74AC163.
Daraus resultiert eine Frequenzauflösung von etwas
über 1 kHz. Die 16 Load-Eingänge werden von
2 Pyte-Ports eines AVR bedient. Der Aufbau hat schon
begonnen, ich hoffe, es funktioniert, oder gibts da Bedenken?
VG Micha

Moppi
06.11.2018, 12:41
Nein, welche Bedenken denn? :) - Kein Schaltplan ...
Wirst sehen ob es funktioniert.
Die Reihenschaltung der ICs ist einfach, das funktioniert auch. Wenn Du sonst die Beschaltung richtig machst, klappt das. Die 66MHz sind ja wohl auch kein Problem für den AC-Typ. Aber Deine 1khz erscheinen mir etwas wenig, weiß nicht, wie Du das gerechnet hast.

MfG

hardware.bas
06.11.2018, 15:57
Vielen Dank, bin ich ja beruhigt, die Realisierung erfolgt nur langsam
in knapper Freizeit. Das Frequenzraster habe ich wie folgt berechnet.
66 MHz / (2 hoch 16) = maximaler Teilerfaktor.
Das Gerät soll dann als Prüfgenerator für Testwecke und als Taktsignal-
quelle für SDR-Empfangsexperimente dienen
VG Micha

Moppi
06.11.2018, 20:59
Ich bin zurzeit gerade krank - fühlte mich heute sehr viel besser, aber nun geht es wieder los... Kann deshalb nicht so ganz klar denken. Aber: Warum willst Du die Frequenz durch die 16Bit des Zählers teilen? Bei 74161 war es so / ist es so, wenn da der Zähltakt stattfindet, zählen alle Stufen hintereinander mit einem Mal durch, ausgelöst durch einen Takt. Das sollte bei dem 163 nicht anders sein, nur das bei dem eben das Löschen der Zähler nur mit einem auftretenden Taktsignal möglich ist (was bei dem 161er nicht so war). Du solltest das mal auf einem Steckbrett aufbauen und mit einem Taster probieren, wegen der genauen Funktion. Vielleicht irre ich mich, weiß nicht, habe gerade dicken Kopf und Nase zu. Das 1 Khz würdest Du alle 65536 Zähltakte erreichen. Meinst Du das so? Ging es nur um den Frequenzteiler?


MfG
Moppi

hardware.bas
10.11.2018, 17:04
Moppi, erstmal gute Besserung an Dich!
Ich hab mich für den 74AC163 entschieden, da dort ALLES synchron
läuft und ich kein Risiko eingehen wollte.
Das mit den FAST 1kHz mit 65536 Zähltakten ist korrekt.
VG Micha

hardware.bas
08.12.2018, 14:28
Wird jetzt mit 4 Stuck 74AC163 erledigt, Eingangsfrequenz ist 66MHz, die 16 Loadpins kommen von einem Atmega162, Display etc ist alles fertig, wenn die 74AC163 kommen, schalte ich
die dann zusammen, wie im Datasheet, wo jedoch nur ein Beispiel mit 2 Stueck dargestellt wird, hoffe es klappt dann auch mit 4, VG Micha

Moppi
08.12.2018, 16:30
Mir ist in der Zwischenzeit so der Sinn durch den Kopf gegangen und da bin ich - schon länger her - drauf gekommen, dass es doch Frequenzteiler extra als IC geben müsste. Also ich habe das bei Dir glaub ich noch nicht richtig verstanden, was Du damit anstellen willst. Ich denke mal, nicht nur die Frequenz teilen.

MfG

hardware.bas
08.12.2018, 20:30
Die 66MHz sollen mit allen Werten von 1 bis 2hoch16 bedarfsgerecht geteilt
werden sollen. Sozusagen ein "Eigenbau-Rechteck-DDS".
Die Auflösung bzw niedrigste Frequenz liegt etwas über 1kHz.
VG Micha