-         

+ Antworten
Ergebnis 1 bis 9 von 9

Thema: 20 Bit Zähler mit Logik

  1. #1
    Moderator Roboter Genie
    Registriert seit
    26.08.2004
    Beiträge
    1.228

    20 Bit Zähler mit Logik

    Anzeige

    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!
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken z_hler_154.jpg  

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    17.04.2006
    Beiträge
    2.193
    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.

  3. #3
    Moderator Roboter Genie
    Registriert seit
    26.08.2004
    Beiträge
    1.228
    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.

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    17.04.2006
    Beiträge
    2.193
    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.

  5. #5
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    65
    Beiträge
    10.924
    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

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    17.04.2006
    Beiträge
    2.193
    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!

  7. #7
    Moderator Roboter Genie
    Registriert seit
    26.08.2004
    Beiträge
    1.228
    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
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken sram.jpg  

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    17.04.2006
    Beiträge
    2.193
    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?

  9. #9
    Moderator Roboter Genie
    Registriert seit
    26.08.2004
    Beiträge
    1.228
    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!

+ Antworten

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •