Bitmuster finden

Hallo zusammen

Ich habe 32 Datenleitungen, die den Zustand von 32 Sensoren ueber- tragen, und zwar in Form eines High-/Low-Signals (high: Sensor hat angesprochen, low: Sensor hat nicht angesprochen). Nun moechte ich herausfinden, ob

- entweder weniger als 7,

- zwischen 7 und 9,

- zwischen 10 und 12

- oder mehr als 12 Sensoren *in Reihe* gleichzeitig angesprochen haben. Anders formu- liert, ich moechte erkennen, ob die ensprechende Anzahl an Bits in Folge auf 1 gesetzt sind. Den jeweiligen Zustand moechte ich dann ueber zwei Leitungen an die Auswerteelektronik uebertragen, und zwar nach dem Schema

00: weniger als 7 oder beliebige Anzahl aber nicht in Reihe 01: zwischen 7 und 9 10: zwischen 10 und 12 11: mehr als 12 Das ganze soll in Echtzeit geschehen.

Es ist klar, dass das mit einem uC realisierbar ist, allerdings wuerde ich eine reine Hardwareschaltung auf Basis von Logikbau- steinen bevorzugen. Koennte mir jemand ein Bisserl auf die Spruen- ge helfen, wie man sowas am besten realisiert? Ich will keine detailierte Komplettloesung, nur einen Ueberlick. Die Details pfriemel ich mir schon selber raus, ein Bisschen Spass soll ja auch noch dabei sein. :-)

Vielen Dank schonmal und ciao,

Horst

--

                             Horst  Laschinsky
        Universitaet Erlangen-Nuernberg - Physikalisches Institut I
 Erwin-Rommel-Str. 1, Room: 209, 91058 Erlangen - Tel: ++49 9131 85-27062
       http://www.antares.physik.uni-erlangen.de/~htlaschi/index.html
Reply to
Horst Laschinsky
Loading thread data ...

Horst Laschinsky wrote:=20

Echtzeit heitp "schnell genug". Wie sind Deine Anforderungen?

Nimm ein CPLD; Deine Anforderungen sollten sich relativ leicht in der=20 HDL Deiner Wahl abbilden lassen.=20

Oder dachtest Du an ein TTL-Grab? Das wird *gro=DF*.=20

Michael

Reply to
Michael J. Schülke

Nicht sooo schnell. Etwa im Bereich von 10ms.

Das hab ich mir auch schon ueberlegt, aber...

...ich dachte, evtl. gibts bereits fertige Bausteine (TTL oder CMOS ist vorerst egal), die man nur noch "passend zusammenschalten muss". Im wesentlichen braeuchte ich ja nur ein "7-9-fach" AND und ein "10-12-fach" AND, die aber eben die ganzen 32 Bit abdecken...

Aber vermutlich isses wohl doch nicht so einfach und wird auf pro- grammierbare Logik hinauslaufen...

Danke schonmal,

Horst

--
                             Horst  Laschinsky
        Universitaet Erlangen-Nuernberg - Physikalisches Institut I
 Erwin-Rommel-Str. 1, Room: 209, 91058 Erlangen - Tel: ++49 9131 85-27062
       http://www.antares.physik.uni-erlangen.de/~htlaschi/index.html
Reply to
Horst Laschinsky

Basiernd auf 74HCxx dürfte das unerfreulich und unflexibel werden.

Ein 29F040 FLASH in DIL32 und bei 5V betreibbar mit 19 Adresspins und 8 Bit Ausgang erschlägt

32 Bit nicht direkt. Man braucht mehrere. Zumindest ist sowas aber leicht zu fädeln und reagiert fast so schnell wie TTL-Grab.

Wäre die attraktivste Lösung wenn man Geschwindigkeit nicht braucht.

MfG JRD

Reply to
Rafael Deliano

Das müsste doch auch analog gehen. An jeden Eingang eine Diode mit einem Widerstand. Das andere Ende der Widerstande zusammenschalten, den Summenstrom auf einen weiteren Widerstand geben und die Spannung messen, z.B. mit einem Komparator.

Gruß

Stefan Bröring

Reply to
Stefan Brroering

Hm? Ich wuesste jetzt spontan nicht, wie das gehen sollte.

Wenn ich bei jedem Eingang den gleichen Widerstand verwende, liefern

00000000000011111111111100000000 und 00001110011010100110100001100000

den gleichen Summenwiderstand, obwohl ich im ersten Fall 10 und im zweien 00 als Output haben will.

Verwende ich verschiedene Widerstaende, dann fuehren

00000000000011111111111100000000 und 00001111111111110000000000000000

zu verschiedenen Summenwiderstaenden, obwohl ich den gleichen Out- put brauche.

Wie meinst Du das denn genau?

Ciao,

Horst

--
                             Horst  Laschinsky
        Universitaet Erlangen-Nuernberg - Physikalisches Institut I
 Erwin-Rommel-Str. 1, Room: 209, 91058 Erlangen - Tel: ++49 9131 85-27062
       http://www.antares.physik.uni-erlangen.de/~htlaschi/index.html
Reply to
Horst Laschinsky

Hmm, die Idee, die Datenleitungen als Adressbus fuer einen Speicher- chip zu missbrauchen und da den Output abzulegen gefaellt mir. Ich glaube, in die Richtung denk ich mal weiter. Danke!

Ich moechte mir im Wesentlichen die Arbeit ersparen, neben der Hard- auch noch die Software entwickeln zu muessen (auch wenn das bei die- sem Problem zugegebenermassen ziemlich trivial ist).

Ciao,

Horst

--
                             Horst  Laschinsky
        Universitaet Erlangen-Nuernberg - Physikalisches Institut I
 Erwin-Rommel-Str. 1, Room: 209, 91058 Erlangen - Tel: ++49 9131 85-27062
       http://www.antares.physik.uni-erlangen.de/~htlaschi/index.html
Reply to
Horst Laschinsky

Wie bereits gesagt: PLD oder FGPA verwenden.

Eine andere Möglichkeit: In der Art eines R2R-DACs: Jede Datenleitung OC-puffern, in Serie ein Widerstand. Alle zusammenhängen und mit einem weiteren Widerstand mit Vcc verbinden. für die Schwellen Komparatoren verwenden, die die Spannung am Sternpunkt messen.

Obiges ist ungeprüft und bloss eine Idee.

Gruss

Claudius

Reply to
Claudius Zingerli

Stimmt, ich hatte die Frage nicht komplett durchgelesen...

Eine andere Idee wäre, die Bits durch ein Schieberegister zu schieben und die maximale Pulslänge am Ausgang zu messen, z.B. mit Hilfe von Monoflops.

Gruß

Stefan Bröring

Reply to
Stefan Brroering

Wenn die Reaktionszeit wirklich nur 10msec sein muß eignet fast schon Hochspache ( FORTH ; aber wohl auch BASIC-Tiger von Wilke u.ä. ) Als Controller eignet sich auch alles was ca. 2x 8 Bit Ports hat, weil man die Input-Pins rein wegen der EMV über vier 74HC541 auf einen Port multiplexen würde.

Für das FLASH muß man auch ein Programm schreiben das die Bitmuster erzeugt und als monströses Binärfile oder gleich Intel-Hex ausgibt. Ich verwende meist aus Bequemlichkeit für solche Jobs einen Einplatinecomputer der in FORTH programmiert das FLASH direkt beschreibt.

MfG JRD

Reply to
Rafael Deliano

Habe den selben Fehler wie Stefan Bröring gemacht. --> PLD,FPGA

Gruss

Claudius

Reply to
Claudius Zingerli

Sehr elegante Lösung, wenn nicht gerade günstig. 32 Leitungen benötigen einen 2^32 Bit=512MByte grossen Speicher.

Gruss

Claudius

Reply to
Claudius Zingerli

Dann musst du aber _alle_ verschiedenen Kombinationen der Eingangs- signale in den Speicher programmieren. Und bei 32 Eingängen kommt man auf 4 GBit (!) pro Ausgangsleitung. Und mit Standard-CMOS Bausteinen wirds sicher ein Kuchenblech (wenn nicht noch jemand eine geniale Idee hat) -> also doch ein uC Gegen PLD spricht dass du dich (wahrscheinlich?) erst noch in die dessen Programmierung einarbeiten müsstest, d.h. ein uC-Programm geht schneller.

Georg

--
Die Reply-To Adresse ist reply-fähig ;-)
Reply to
Georg Seegerer

Abhängig von der genauen Anforderung hätte ich vermutet, daß man in der ersten Reihe 2-3 FLASH 29F040 benötigt die man in der zweiten Stufe in ein weiteres FLASH füttert das die Daten auf 2 Bit konzentriert.

MfG JRD

Reply to
Rafael Deliano

Hallo Horst,

Direkt entscheidende Logik wuerde recht aufwendig. "Semi-Analog" geht das etwa so: Wenn die Sensoren flattern koennen, landen die 32 Bits erstmal in Latches. Sonst kann man die sparen. Dann klappert ein Ringzaehler alle ab. Eine Integratorschaltung erhoeht bei jedem HIGH Bit die Ladung in einem Kondensator um 1/32 Full Scale. Wenn sie auf eine Null in einem Bit stoesst, wird der Kondensator per FET auf Null entladen und es geht von vorn los, bis das 32.Bit vorbei ist. Danach wird sie auf Null gesetzt und ist bereit fuer die naechste Runde.

Drei Schwellwertschalter "beobachten" die Kondensatorspannung und schalten entsprechend, sobald ein gewuenschter Schwellwert am Kondensator erreicht ist. Der erste z.B. bei 19/64tel des Full Scale Wertes. Klingt kompliziert, ist aber nur ein billiger Vierfach-Komparator Chip oder Opamp mit einigen Widerstaenden. Den vierten kannst Du "untervermieten".

Digital geht das auch: Man laesst einen Zaehler hochlaufen fuer jedes Bit, dass HIGH ist. Sobald eines mit LOW kommt, wird er rueckgesetzt. Drei Magnitude Comparators am Ausgang sehen nach, ob irgendwann einer der gewuenschten Werte erreicht wurde. Das wird gespeichert, logisch in zwei Bit "verknuselt" und ausgegeben.

Welche Loesung vom Aufwand her guenstiger ist, muesste man auszaehlen oder die Dollars hochrechnen. Sorry for some English in there. Sitze im Labor und da ist kein Woerterbuch. Muss den HP4191A reparieren (absolut aetzend!).

Gruesse, Joerg

formatting link

Reply to
Joerg

"Horst Laschinsky" schrieb

Hallo Horst,

Und was hättest du gerne bei mehreren Serien ? ;-)

zb: 7+10+13 + 2*0 dazwischem.

Ich würde die 32bit parallel in ein Schieberegister laden. Dann die Bits durchschieben und den seriellen Ausgang mit dem Takt verknüpfen, damit du auch für hintereinanderliegende 1en einen Takt für den nachfolgenden Zähler hast. Wenn am Ausgang eine 0 auftaucht Zählerstand auswerten und in FF speichern. Dann Zähler zurücksetzen und weiter takten bis alle 32 Bit durchgeschoben sind. Das passt locker in eine bezahlbare CPLD.

Gruß

Hans-Georg

Reply to
Hans-Georg Lehnard

Hallo Rafael,

Rafael Deliano schrieb:

So einfach geht's wohl nicht. Es kann ja sein, dass die Reihe im ersten FLASH beginnt und im zweiten weiterl=E4uft. Dann br=E4uchtest Du aus dem ersten FLASH Signale X Bits am Anfang, X Bits in der Mitte, X Bits am Ende und m=FCsstest das mit den Ergebnissen der anderen FLASHs weiterverkn=FCpfen. Das scheint jedoch m=E4chtig aufwendig zu werden. Nicht so sehr die Hardware, aber ich sehe einen enormen Aufwand, die FLASH-Tabellen zu erstellen. Das wird sich wohl nicht automatisieren lassen. Also ich w=FCrde gar nicht erst weiter in dieser Richtung entwickeln und wirklich einen uc oder CPLD einsetzen. Oder wenns unbedingt in Stein gemei=DFelt sein soll: irgend wie mit Schieberegistern (parallel auf seriell) und Z=E4hlern m=FCsste es wohl auch gehen. Aber na ja, irgend wie nicht mehr zeitgem=E4=DF ;-)

ciao

Marcus

Reply to
Marcus Woletz

Hallo Leute,

Marcus Woletz schrieb: [...]

Ich seh's gerade: jemand anders hatte wohl dieselbe Idee. Sorry.

[...]

ciao

Marcus

Reply to
Marcus Woletz

"Horst Laschinsky" schrieb im Newsbeitrag news: snipped-for-privacy@news.dfncis.de...

Analogtechnik, sozusagen U>7V, U>10V, U>12V

| Stromquelle .... 30 Stueck | +--|>|-- 3 Komparatoren als Fensterdiskriminator | | | GND --R--+--R--+--R--+--R--+--R-- GND | | -|I ..... 30 Stueck |

Du schaltest 32 Widerstaende in Reihe. Jedes Digitalsignal legt (per MOSFET-Schalter) einen Knotenpunkt an Masse. Die laengste Kette ist also die laengste Folge von Widerstaenden, deren Verbindungspunkte NICHT an Masse liegen.

Durch den Strom, den die Stromquellen (Widerstand an einer im Vergleich zur Messpannung hohen Spannung) in die Knoten beitragen, werden die Knotenpunkte an positive Spannung gezogen, dabei liegen BEIDE Enden der Kette an Masse, es gibt also 2 parallelgeschaltete Widerstandsreihenschaltungen. Nun muessen wir nur DEN HOECHSTEN Spannungswert jedes dieser 30 Knoten messen. Dazu kann man Dioden verwenden, wenn die Spannungen ausreichend hoch sind, oder Komparatoren die einen Analogmultiplexer auf den Knotenpunkt mit der hoechsten Spannung auf den Fensterdiskriminator schicken.

Stromquellen | | +-|>|-(-----+ | | +-- hoechste Spannung | +-|>|-+ | | GND--R--+--R--+--R--+--R-- GND

--
Manfred Winterhoff, reply-to invalid, use mawin at gmx dot net
homepage: http://www.geocities.com/mwinterhoff/
de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/
Read 'Art of Electronics' Horowitz/Hill before you ask.
Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.
Reply to
MaWin

Hallo,

Horst Laschinsky schrieb:

Also soo würde ich das (unter der Voraussetung TTL-Grab) nicht angehen.

Ein Schieberegister, parallel in, serial out. Ein Zähler, dessen synchroner Reseteingang an das Serial-Out kommt. Ein paar Komperatoren für den Zählerstand, die ein paar Flip-Flops setzen (Wert > xx) Ein bisschen Ablaufsteuerung noch.

Nach einem Master-Reset (Schieberegister Load + Maxwert-FlipFlop Reset) steht das Endergebnis 32 Takte später im 3-Bit Ausgangsregister mit den Ergebnissen >=7, >=10, >=13. Daraus lassen sich die gewünschten Bedingungen aus je 2 benachbarten Bits ableiten.

Alternativ zum Schieberegister geht auch ein 32 zu 1 Multiplexer, der am Zähler der Ablaufstereung hängt.

Da die Maximalbedingung >12 ist, reicht ein 4-Bit Zähler für die Anzahl der gesetzten Bits.

Mehr als 8-9 Chips braucht man selbst bei TTL-only nicht. Wenn man für Komperatoren und Ausgangsregister ein GAL nimmt, sind es nur noch 4 (Zähler für die Steuerung, 2*74150 oder so, GAL)

Marcel

Reply to
Marcel Müller

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.