Hallo, ich hab mal wieder ein Problem. Ich bin grad am Bauen eines Speicheroszis und sehe nun schon erste Erfolge (siehe Bild). Das Problem sind jedoch diese wundersamen Spitzen, die alle 64 Werte auftreten und genau eine Abtastung breit sind. Also ein digitales Problem denk ich mal. Das andere Rauschen liegt wohl daran, dass das ganze zurzeit auf einem Steckbrett stattfindet. Kann mir da jemand helfen? Danke schon mal. PS: Kann mir jemand sagen, wie ich hier mehrere Bilder einfügen kann, dann kommt auch ein Schaltplan.
und hier der nicht ganz komplette Schaltplan. Als ADC kommt ein ADS 830E zum Einsatz.
Wirklich 4040N also altes Metal-Gate CMOS? Oder bloss kein passenden HC-Symbol gefunden? Ansonsten ist das ein bischen zu unvollständig. Offene MOS-Inputs sind ja nicht so gut, aber so ist's schwer nachzuvollziehen, wer ist offen und wer geheim. Am Speicherchip fehlt zu viel - CE/OE und G/DIR vom Treiber sind auch nicht ganz unwichtig.
Hast Du mal ins Datenblatt vom 4040 reingesehen? Das ist ein Ripple-Counter, d.h. zwischen Clock und den einzelnen Q-Stufen geht mehr und mehr Zeit ins Land, knapp 20nsec von Qi zu Qi+1. Bei hohen Frequenzen ist für die Adressen ein synchroner Counter nötig.
Hallo, da schaltet immer irgendwas voll gegen Masse, aber da das so kurz ist könnte man das mit nem Kondensator in den Griff bekommen, was aber die Auflösung verschlechtert. Oder vielleicht die Bausteine besser puffern.
Deutlicher: Bei IC2 dauert's vom P1(Clock) bis Q11 grob 220nsec (gemäss Motorola Datasheet vom HC4040). Das kann so nicht funktionieren. IC2 durch beispielsweise 2xHC590 ersetzen. Dann hat man auch genug Adressleitungen für ein grösseres RAM.
Entschuldigung für den unvollständigen Schaltplan. Ich bin jemand, der lieber bastelt als dokumentiert. Aber da ist nichts geheim. Am Speicher ist CE fest auf Masse gelegt, OE wird vom AVR zum Auslesen des Speichers gesteuert. Am Treiber ist DIR fest auf high gelegt und G, also CE, wird wieder vom AVR gesteuert, da der ADS 830E keine Tristate- Ausgänge besitzt. Der 4040 ist natürlich ein HC. Weil er asynchron arbeitet, kann es schon sein, dass dort etwas schief läuft. Es ist immer dort ein Peak, wenn 7 oder mehr Bits gleichzeitig umschalten.
den HC590 hab ich mir auch schon angesehen, aber der brauch 2 Takte. Wie muss ich den denn beschalten, dass der ohne weiteres in die vorhandene Schaltung eingefügt werden kann?
Apropos RAM - was ist das eigentlich für ein Teil? Vom Bild her ein 600mil Typ, also Richtung 6116. Die sind meiner Erinnerung nach ein bischen zu langsam für 16MHz. Sinnvoller scheint mir hier das Recycling eines Cache-SRAMs wie man sie auf alten 486- oder Pentium-Boards findet. Auf letzteren sassen meist 16-32KB Typen mit ~15nsec. Zwar meist mit 3,3V betrieben aber 5V werden sie wohl auch verdauen. Aber gut abpuffern, diese Biester sind durstig!
solche Cache-RAMS hab ich auch da, aber leider im SOJ-Gehäuse. Auf dem Steckbrett reicht zum Testen ein 6116 mit 70ns Zugriffszeit. Das ist eh ein Maximalwert den der Hersteller garantiert. Ein bisschen schneller gehts schon.
(1) RCK=SCK. Dann ist der Zähler dem Register immer uns eins voraus und das erste Sample nach dem Trigger landet im Wald. Das dürfte aber kaum stören. Kaskadierung mit RCO(1) => CCKEN(2). (2) RCK ist das Komplement von SCK, d.h. zählen wenn WE runter und speichern wenn WE rauf (so ungefähr). Die maximal möglich Frequenz ist dann niedriger, aber garantiert immer noch weit über 16MHz.
Die im SOJ sind dann wohl neuere, pipelined SRAMs. Geht auch, ändert aber das Verhalten der Schaltung.
so werd ichs mal probieren, hab noch welche gefunden. das erste Sample landet nicht im Wald. Es wird endlich an die Stelle 0 im Speicher geschrieben. Beim 4040 war das in der Schaltung nicht der Fall.
> Es wird endlich an die Stelle 0 im Speicher > geschrieben. Kann man softwareseitig so einrichten, stimmt. Muss man nur erst löschen dann einmal durchtakten, bevor gesampelt wird. Dann stimmt's.
Naja, das erste Sample ist so ohnehin für die Katz. Da der Takt asynchron gegatet wird (IC6A/IC4), ist der erste Taktpuls je nach Lage alles zwischen ok und unbrauchbar. Eigentlich sollte das Triggersignal erst einmal auf den Sample-Takt synchronisiert werden, bevor es auf die Schaltung losgelassen wird. Oder auch gleich 2mal zwecks Vermeidung der Metastabilität. Dann ist's bloss Essig mit dem etwas trickreichen Trigger-Gating via Tristate.
"Weil er asynchron arbeitet,kann es schon sein, dass dort etwas schief läuft. Es ist immer dort ein Peak, wenn 7 oder mehr Bits gleichzeitig umschalten." Klar, ist wohl die Laufzeit im Ripple-Counter 4040 als Adreßzähler. Deshalb am besten einen synchronen Zähler verwenden. Wie ist eigentlich das Bild vom gesampelten Signal entstanden? Ich meine wie/womit ist es softwareseitig verarbeitet worden? Gruß
Verzeiht mir, aber ich kann noch nicht so ganz folgen: wo sitzt denn der AD-Wandler überhaupt? Also der 4040 zählt die Adresse hoch und speichert zu jeder Adresse den Wandlerwert in einem Ram. (wo ist das?) Und der avr kann dann hingehen und die Samples aus dem Ram auslesen. Korrekt? Womit und wie wird denn am Ram umgeschaltet, ob Samples aus dem AD reingeschrieben werden, oder der avr hingeht und lesend drauf zugreift? Ich bin gerade sehr verwirrt und wäre echt froh wenn mich einer erhellt. Das lässt mir jetzt keine Ruhe...
@Chris Das Bild ist ganz einfach entstanden. Ich hab mir die Werte an ein Terminalprogramm schicken lassen und hab sie dann einfach in Excel eingefügt. Ein richtiges kleines Osziprogrammchen muss ich mir noch schreiben. @noob Der ADC hat seine Datenleitungen an den freien Pins des 74HC245 und seine Taktleitung ist ADC_CLK. Der HC245 trennt den ADC vom Bus, damit die Werte dann vom AVR aus dem Speicher gelesen werden können. Der Speicher wird einmal etwas verzögert vom Takt auf schreiben gesetzt (WE) und zum Auslesen vom AVR auf lesen (OE) gesetzt. Ich hoffe ich kann bald einen vollständigen Schaltplan anbieten.
jetzt hab ich den 4040 durch zwei HC590 ersetzt. Die ganze Kennlinie ist jetzt sauberer. Leider komme ich jetzt nur noch bis 8MHz.
Wie getaktet? Der HC590 taktet auf der positiven Flange, der 4040 auf der negativen.
bei 8MHz sieht das Ganze dann so aus. Bei 16MHz kommen etwa 60 Werte totaler Müll und dann nur noch 00.
@ A.K. den HC590 hab ich an den anderen Ausgang des HC251 geklemmt, so dass gleichzeitig der ADC angeschoben wird und die Adresse weitergeschaltet wird. Natürlich mit der Verzögerung des NAND dazwischen.
Wundern tut mich eher, dass es vorher bei 16MHz rudimentär funktionierte. Immerhin verlangt dem 6116 in der 70nsec Version nach einem WE Puls vom min 40nsec (evtl. je nach Hersteller verschieden, hier IDT). In dieser Schaltung sind's bei 16MHz bestenfalls 30nsec, von der WE-Delay-Line noch ggf. noch weiter reduziert. Ausserdem will er auch die Adressen 65nsec vor dem Ende vom Schreibzyklus. Auch das ist wohl nicht gewährleistet.
Frag mich auch, was da los ist, eigentlich hab ich nur den Adresszähler ausgetauscht. Der HC590 sollte doch eigentlich schneller arbeiten als der HC4040. Scheint aber doch eher umgekehrt zu sein.
> Der HC590 sollte doch eigentlich schneller arbeiten als > der HC4040. Scheint aber doch eher umgekehrt zu sein. Bei diesem Timing ist zu schnell genauso verkehrt. Kaum eine Timing-Anforderung vom 6116 wird eingehalten.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.