Über einen Parallelport kann man ja mit einem Port-Zugriff 13 Bits (D0-D7 und S3-S7, ein 16-Bit-Zugriff genügt) einlesen, aber nicht sehr schnell, so das ich einen leicht zu bauenden, oder auch fertigen, 13-Bit-Zähler mit Gray-Code suche. Bisher konnte ich nur einen für 3 Bit finden: https://books.google.de/books?id=Q66bBgAAQBAJ&pg=PA231&lpg=PA231&dq=gray-z%C3%A4hler&source=bl&ots=wlLzRpCtOk&sig=yOdOJEznRWSYT66FRLXjDWbkyEc&hl=de&sa=X&ved=0ahUKEwj_oaS51PnTAhUGfFAKHYwXDhsQ6AEIUDAJ#v=onepage&q=gray-z%C3%A4hler&f=false Wo findet man einen Schaltplan für einen einfachen mit 13 Bit, oder wo gibt es die fertig?
Erwin M. schrieb: > Wo findet man einen Schaltplan für einen einfachen mit 13 Bit, oder wo > gibt es die fertig? Das kommt drauf an, wie schnell er sein soll. Von uC über Logikgrab bis FPGA sind verschiedene Lösungen denkbar.
p.s. Auch kommt es auf den Code drauf an. Gray-Code beschreibt eine ganze Klasse von Codes. Willst du einen bestimmten zählen oder bist du da offen? https://en.wikipedia.org/wiki/Gray_code#Special_types_of_Gray_codes
Wolfgang schrieb: > Erwin M. schrieb: >> Wo findet man einen Schaltplan für einen einfachen mit 13 Bit, oder wo >> gibt es die fertig? > > Das kommt drauf an, wie schnell er sein soll. Von uC über Logikgrab bis > FPGA sind verschiedene Lösungen denkbar. Erstmal brauche ich einen langsamen für Haushaltanwendungen wie Pulse von einem Schalter, Reed-Relais, Bewegungsmelder oder Geigerzähler zählen. Für schnellere Anwendungen wie Frequenzzählen wäre einer bis 250 MHz sinnvoll.
:
Bearbeitet durch User
Wolfgang schrieb: > p.s. > > Auch kommt es auf den Code drauf an. Gray-Code beschreibt eine ganze > Klasse von Codes. Willst du einen bestimmten zählen oder bist du da > offen? > https://en.wikipedia.org/wiki/Gray_code#Special_types_of_Gray_codes Das ist nebensächlich; ich brauche einen mit dem von 0 bis 8191 gezählt wird. Die Umrechnung wird ohnehin in Software gemacht.
Dafür brauchst du doch keinen Greycode. Graycode kommt z.B. aus einem Winkelcodierer. Greycode wird eigentlich verwendet um Störungen bei der Parallelen Bitübertragung zu verhindern.
Erwin M. schrieb: > Das ist nebensächlich; ich brauche einen mit dem von 0 bis 8191 gezählt > wird. Die Umrechnung wird ohnehin in Software gemacht. Welchen Vorteil siehst du darin, dass aufeinanderfolgende Zählerstände einen Hammingabstand von genau 1 haben? Was spricht gegen einen gewöhnlichen Binärzähler?
Erwin M. schrieb: > Die Umrechnung wird ohnehin in Software gemacht Dann brauchst Du ja gar keinen Zähler oder sowas, nur die 13 Abtaster! Erwin M. schrieb: > ich brauche einen mit dem von 0 bis 8191 gezählt > wird. Und wie ablesen? Optisch? Selbstgemacht? Selbst wenn Du jeden Millimeter einen Wechsel hast, wird der über 8 Meter lang! Wolfgang schrieb: > Was spricht gegen einen > gewöhnlichen Binärzähler? Eben, damit's keine Doppeldeutigkeit gibt. Stell Dir den Papierstreifen vor, mit 13 Bits... Erwin, sag uns was Du machen willst; Dein Vorhaben ist wieder VIIIEEEL einfacher zu lösen, wenn Du offen für andere Lösungen bist! Gruss Chregu
Christian M. schrieb: > Erwin M. schrieb: >> Die Umrechnung wird ohnehin in Software gemacht > > Dann brauchst Du ja gar keinen Zähler oder sowas, nur die 13 Abtaster Unsinn; es soll nicht rumgefummelt werden sondern gezählt werden, über den Parallelport.
Häääh schrieb: > Du brauchst keinen Greycode. Vielleicht doch, wenn es darum geht, die Daten ohne Nutzung eines Data-Valid Signal heil über den Parallelport zu bekommen. Einfachster Weg wäre ein Binärzähler mit einem direkt adressierten EEPROM dahinter, dass für die Konvertierung in den gewünschten Gray-Code verantwortlich zeichnet.
Häääh schrieb: > Dafür brauchst du doch keinen Greycode. > > Greycode wird eigentlich > verwendet um Störungen bei der Parallelen Bitübertragung zu verhindern. Ja, deshalb brauche ich den, damit die 13 Ausgangsbits eines Zählers asynchron eingelesen werden.
Erwin M. schrieb: > Erstmal brauche ich einen langsamen für Haushaltanwendungen wie Pulse > von einem Schalter, Reed-Relais, Bewegungsmelder oder Geigerzähler > zählen. Erwin M. schrieb: > Ja, deshalb brauche ich den, damit die 13 Ausgangsbits eines Zählers > asynchron eingelesen werden. Welchen Zähler verwendest du? Zeig mal.
Häääh schrieb: > Erwin M. schrieb: >> Erstmal brauche ich einen langsamen für Haushaltanwendungen wie Pulse >> von einem Schalter, Reed-Relais, Bewegungsmelder oder Geigerzähler >> zählen. > > Erwin M. schrieb: >> Ja, deshalb brauche ich den, damit die 13 Ausgangsbits eines Zählers >> asynchron eingelesen werden. > > Welchen Zähler verwendest du? Zeig mal. Bisher keinen, deshalb suche ich ja einen.
Erwin M. schrieb: > Erstmal brauche ich einen langsamen für Haushaltanwendungen wie Pulse > von einem Schalter, Reed-Relais, Bewegungsmelder oder Geigerzähler > zählen. Dafür brauchst du keinen Gray-Code. Der Rest der Welt zählt sowas binär. > Für schnellere Anwendungen wie Frequenzzählen > wäre einer bis 250 MHz sinnvoll. Auch hierfür ist ein Gray-Code Unsinn, aber wenn du es trotzdem willst, kommst du mit Logikgrab oder Controller nicht weiter. Du brauchst einen FPGA, da ist das relativ einfach. Aber verabschiede dich von 5V-Signalen (teilweise auch schon von 3V3-Signalen), denn die gibt's da nicht mehr. ...noch ist doch garnicht Freitag?
Erwin M. schrieb: > Häääh schrieb: >> Dafür brauchst du doch keinen Greycode. >> >> Greycode wird eigentlich >> verwendet um Störungen bei der Parallelen Bitübertragung zu verhindern. > > Ja, deshalb brauche ich den, damit die 13 Ausgangsbits eines Zählers > asynchron eingelesen werden. Dann nimm einen normalen Binärzähler und häng ein Latch dahinter, das auf der Flanke die Daten übernimmt, auf der Zähler nicht zählt. Wenn du die Daten so langsam ausliest, daß während der Auslesung ein voller Zählzyklus (inkl. Latchen) ablaufen kann, dann brächte dir ein Grey-Code auch nichts mehr. Ansonsten: Mehrfach auslesen; Daten nur verwerten, wenn Übereinstimmung bei aufeinanderfolgenden Lesevorgängen vorliegt. Spart dir überflüssige Hardware. Und schnell genug für diese "Softwareentprellung" muß der Rechner eh sein, da du ansonsten mit den Daten ja gar nichts anfangen könntest (die Verarbeitung kostet ja auch Zeit).
Ralf D. schrieb: > Erwin M. schrieb: >> Häääh schrieb: >>> Dafür brauchst du doch keinen Greycode. >>> >>> Greycode wird eigentlich >>> verwendet um Störungen bei der Parallelen Bitübertragung zu verhindern. >> >> Ja, deshalb brauche ich den, damit die 13 Ausgangsbits eines Zählers >> asynchron eingelesen werden. > > Dann nimm einen normalen Binärzähler und häng ein Latch dahinter, das > auf der Flanke die Daten übernimmt, auf der Zähler nicht zählt. Ja, das wäre eine brauchbare Lösung, mit wenig Aufwand, danke für den Tip. Ein alternativer Aufbau wäre der nach https://patentimages.storage.googleapis.com/US8421891B2/US08421891-20130416-D00003.png Beschrieben in einem US-Patent: https://www.google.com/patents/US8421891 Aber für einen Zähler mit 13 Bit bräuchte man dazu ein Und-Gatter mit 13 Eingängen! Das gibt es wohl nicht fertig und selbst wenn, wäre es wohl langsam.
Graycode kann man mit einem zusätzlichen EXOR-Gatetr pro Zählerbit erzeugen. http://www.hsg-kl.de/faecher/inf/digital/gray/index.php Allerdings muss man davon ausgehen, dass die EXOR-Ausgänge Glitches enthalten falls man einem asynchronen Zähler verwendet. Da man aber nie weiß welches Bit falsch abgetatstet wurde hilft auch der Graycode nicht den Fehler im Ergebnis zu verbessern. Wenn z. B: das höchste Bit falsch ist, dann hat man trotz Gray-Code 50% Fehler. Sie sicherste Lösung wäre so oft abzutasten bis zwei hintereinanderfolgende 13bit Werte gleich sind. Diese Mehrfachabtastung muss natürlich schneller sein als die erwartete Änderungsgeschwindigkeit des Zählers.
:
Bearbeitet durch User
Erwin M. schrieb: > ein Und-Gatter mit 13 Eingängen! Das gibt es wohl nicht fertig... Zumindest als NAND gibt es das 74133 mit 13 Eingängen.
> Zumindest als NAND gibt es das 74133 mit 13 Eingängen.
Und die sind nicht langsamer als ein NAND-Gatter mit 8 Eingängen!
(7430)
Besorg Dir mal das Buch "Handbuch integrierte Schaltkreise" von Kühn/Schmied Verlag Technik Berlin. Dort werden die einzelnen Zählervcodecs u.a. auch der Graycode beschrieben und an Beispielen erklärt. Im Buch ist ein 4Bit Grayzähler als Schaltbeispiel dargestellt. Realisiert werden solche speziellen Zähler i.d.R. mit JK-FF + Logikgatter. Ja und zu Zeiten des genannten Buches waren das TTL-Gatter. Für das Prinzip ist dies aber egal, man kann das ja auch auf moderne Techniken übertragen. Im übrigen spricht im Privatbereich nichts dagegen, das eine oder andere mit klassischen Konzepten zu lösen, auch wenn viele hier im Forum da anderer Meinung sind. Für das Verständnis sind diese klassischen Lösungen oftmals besser geeignet, auch wenn es Bauteilgräber sind.
> Da man aber nie weiß welches Bit falsch abgetatstet wurde hilft auch der > Graycode nicht den Fehler im Ergebnis zu verbessern. Wenn z. B: das > höchste Bit falsch ist, dann hat man trotz Gray-Code 50% Fehler. Nein, das ist bei einem Graycode eben nicht so. Bei einem fehlerhaften Bit ist der Fehler dort immer 1 (oder -1).
Häääh schrieb: > Dafür brauchst du doch keinen Greycode. > ... > Greycode wird eigentlich verwendet ... Häääh schrieb: > Du brauchst keinen Greycode. Ralf D. schrieb: > dann brächte dir ein Grey-Code auch nichts mehr. Da mag man sich gegen den Code sträuben, wie man will. Trotzdem wird deshalb kein Grau-Code draus. Der Namensgeber hieß Frank Gray. https://de.wikipedia.org/wiki/Gray-Code https://de.wikipedia.org/wiki/Frank_Gray_(Physiker)
Noch ein kleiner Nachtrag: Meine erste Antwort war vielleicht etwas unglücklich formuliert. Bei einem Graycode ändert sich zwischen zwei benachbarten Zuständen immer nur 1 Bit. Je nachdem welchen Zustand dieses bei der Abtastung hat, wird Zustand (n-1) oder Zustand (n) erkannt. Je nach Zählrichtung ist der maximale Fehler dann -1 (Vorwärtszählen) oder +1 (Rückwärtszählen). Da sich immer nur 1 Bit ändert, können keine undefinierten "Zwischenzustände" auftreten. Die Bits, die sich bei diesem Zustandswechsel nicht ändern, werden dabei nicht berücksichtigt. Würde ich hier ein Bit ändern, hängt der Fehler vom Zustand der restlichen Bits ab, eine feste Wertigkeit der Bits wie beim Binärcode gibt es beim Graycode nicht. Jörg
Erwin M. schrieb: > Über einen Parallelport kann man ja mit einem Port-Zugriff 13 Bits > (D0-D7 und S3-S7, ein 16-Bit-Zugriff genügt) einlesen Wir sind aber nicht mehr im Jahr 1981. PCs haben kaum noch einen LPT-Port und unter W10 kann man den auch nicht mehr so einfach einlesen, mit 250MHz schonmal gar nicht. Heutzutage liest man Daten über UART, USB oder Ethernet ein. Erwin M. schrieb: > Erstmal brauche ich einen langsamen für Haushaltanwendungen wie Pulse > von einem Schalter, Reed-Relais, Bewegungsmelder oder Geigerzähler > zählen. Da reicht ein ATtiny2313, der zählt (bis 10MHz) und sendet es über die UART zum PC. Da auch COM-Anschlüsse selten sind, zum RS232-USB-Adapter. Erwin M. schrieb: > Für schnellere Anwendungen wie Frequenzzählen wäre einer bis 250 MHz > sinnvoll. Dann fügt man einen entsprechenden Vorteiler hinzu. Standard Logik geht aber nur bis 170MHz (74VHC393).
:
Bearbeitet durch User
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.