Autor |
synchroner Binährzähler für AD Wandler |
|
|
|
|
BID = 21260
Benedikt Inventar
Beiträge: 6241
|
Für einen 40MS/s AD Wandler suche ich einen 16bit Adresszähler. Alle Zähler/Teiler die ich gefunden habe, sind endweder asynchron, zu langsam oder zu aufwendig. (z.B. 74HC4520)
Das beste was ich gefunden habe ist ein 74HC590, der zwar etwas langsam ist, (nicht meher produziert wird) aber ansonsten funktionieren sollte, was er aber nicht macht.
Dieser besitzt ein Ausgangslatch, so dass alle Ausgänge wirklich synchron umschalten.
Wenn ich an den CClk Pin das Taktsignal und an RClk das invertierte Taksignal anlege, dann müsste die Schaltung doch funktionieren ?
CCKEN\ am zweiten Zähler ist mit RCO\ des ersten verbunden.
CCKEN\ des ersten Zählers liegt auf Low, ebenso OE\.
Nach 32768 Impulsen geht QH des zweiten Zählers auf High (was bei meiner Schaltung das Taktsignal unterbricht, und die Aufzeichnung stoppt.) Die gespeicherten Daten sind aber eher Zufallswerte und keinesfalls die Werte vom AD Wandler.
Kann man den WE\ Pin des 32kB SRAMs eigentlich immer auf Low lassen (solange man Daten aufzeichnet), oder sollte ich den auch mit dem Taktsignal takten ?
Uploaded file: SN74HC590A.pdf
|
BID = 21262
dos6510 Stammposter
Avatar auf fremdem Server ! Hochladen oder per Mail an Admin
Beiträge: 357 Wohnort: Raum Stuttgart
|
|
Hi,
dumme Frage: wartest Du das READY vom Wandler ab? Gibt es einen Schaltplan?
DoS |
|
BID = 21264
Benedikt Inventar
Beiträge: 6241
|
Der Wandler hat kein Ready,
es ist ein TDA8703, der für 40MHz ausgelegt ist.
Nachdem 32768 Bytes aufgezeichnet wurden, wird automatisch auf auf den Takt vom PC umgeschaltet, alle Schaltungsteile werden so umgestellt, dass die Daten ausgelesen werden.
Am TDA8703 liegt es nicht: Ich habe einen defekten eingebaut, bei dem ich den Eingang zerstört habe, so dass er einen Eingang-Masse Kurzschluß hat, also nur 00 am Ausgang liefert, sobald OE Low ist. Und selbst hier, sind nicht alle übertragenen Bytes ebenfalls 00 sondern eher zufällig.
An der Taktfrequenz liegt es auch nicht, im Moment habe ich einen 1,8432MHz Quarz eingebaut, da bekomme ich dieselben Fehler.
Uploaded Image: adcsram.gif
|
BID = 21266
Jornbyte Moderator
Beiträge: 7089
|
Du hast beim SRam /CS immer an Masse. /CS sollte aber erst Aktiv (Low) werden, wenn alle Adressen und Daten stabil am Ram anliegen. Das Datenblatt zum Ram gibt Auskunft über die Zeiten, dessen Type hier leider nicht genannt ist.
_________________
mfg Jornbyte
Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.
|
BID = 21285
Benedikt Inventar
Beiträge: 6241
|
Ist das wirklich notwendig ?
Laut Datenblatt ist es egal, ob WE\ oder CE\ zuletzt auf Low geht. Erst wenn CE\ und OE\ oder CE\ und WE\ Low sind, wird das SRAM aktiv.
Was wäre, wenn ich eine Delay Line einbaue, die das Clock Signal um 8*10ns verzögert ?
CClk\ -> 50ns -> RClk\ -> 25ns -> WE\
oder in Worten:
Zähler erhöhen, nach 30ns den Zählerstand parallel an das SRAM legen, anschließend nach 20ns WE\ auf Low.
CE\ liegt immer auf Low. Als SRAM verwende ich verschiedene Cache SRAMs auf 486er und höher wie z.B. IS61C256
Uploaded file: 61C256AH.pdf
|
BID = 21298
Benedikt Inventar
Beiträge: 6241
|
Es scheint wirklich am SRAM Timing zu liegen.
Ich hatte noch einige Softwarefehler. Jetzt läuft alles halb, aber die Grafikfehler (markierte Stelle) zeigen deutlich, dass die Daten mit anderen überschrieben werden (WE andauernd aktiv -> Zufällige Adressen beim Adresswechsel werden beschrieben)
Uploaded Image: adcss.gif
PS: Das ist eigentlich eine saubere Sinuskurve...
[ Diese Nachricht wurde geändert von: Benedikt am 31 Mai 2003 19:22 ]
|
BID = 21330
dos6510 Stammposter
Avatar auf fremdem Server ! Hochladen oder per Mail an Admin
Beiträge: 357 Wohnort: Raum Stuttgart
|
Hi,
ich blicke die Schaltung nicht ganz inkrementierst Du die Zähler und aktivierst gleichzeitig das Ram? Das könnte den Effekt erklären. Dann könnte eine Verzögerung helfen.
ICh hatte mal ein ähnliches Problem, als ich zwei Adresszähler phasenverschoben kaskadiert hatte - den Fehler habe ich ungelogen eine Woche gesucht ... ;-(
DoS
|
BID = 21333
Benedikt Inventar
Beiträge: 6241
|
Den RAM aktiviere ich etwas später, nachdem ich die Adresse verändert habe. Laut Datenblatt benötigt der HC590 20ns. Muss ich nun 40ns warten, da ich 2 HC590 in Reihe geschaltet habe ?
Anschließend warte ich nochmals kurz (>20ns) ehe WE auf Low geht.
Da die fehlerfreien Teile des Kurve etwa 250 Bytes groß sind, vermute ich, dass etwas mit dem Anschluß des zweiten an den ersten HC590 nciht stimmt.
|
BID = 21336
Benedikt Inventar
Beiträge: 6241
|
Hier nochmals ein aktueller Schaltplan mit Beschreibung:
Am Anfang liegt QH des 2. HC590 auf Low -> 74HC158 verbindet 1A-4B mit den Ausgängen 1Y-4Y, d.h. der Takt des Quarzes (1,8MHz im Moment) liegt an Clk des ADC als auch an CClk des HC590. Im Low-High Übergang (wenn ich das Datenblatt richtig verstanden habe), erhöht der Zähler den Zählerstand um eins. Nach 20ns wird der Zählerstand an die Ausgänge übertragen. WE\ liegt die ganze Zeit über auf High. Nach weiteren 20ns wird der Eingang 4A des HC158 High, also der Ausgang 4Y Low. Und dies für die halbe Periodendauer des Taktsignals.
[ Diese Nachricht wurde geändert von: Benedikt am 1 Jun 2003 10:57 ]
|
BID = 21337
Benedikt Inventar
Beiträge: 6241
|
|
BID = 21340
dos6510 Stammposter
Avatar auf fremdem Server ! Hochladen oder per Mail an Admin
Beiträge: 357 Wohnort: Raum Stuttgart
|
Ich kriege leider kein vernünftiges Datenblatt für den 590er zusammen. Du kaskadierst über Pin 9 - ist der invertiert ?
Falls ja, hast Du schonmal eine Phasenverschiebung zwischen den Zählern und dann musst Du genau nachrechnen, wielange Du warten musst.
btw: wenn Du eh nach dem Clk auf die Zähler etwas wartest, brauchst Du doch eigentlich die Latches auch nicht ...
DoS
|
BID = 27632
kollosse Gerade angekommen
Beiträge: 1
|
Hallo,
warum benutzt Du keine CPLD für deine Schaltung.
Wurde die Grafik unter Windows ausgegeben wenn
ja wie lässt sich so etwas programmieren (bin MS-DOS
Assemblerprogrammierer).
Gruß
Johann
|