Hallo,
ich suche einen "speziellen" IC. Eigentlich brauche ich acht und-Gatter,
wobei ein Pin jeweils einen Eingang von allen unds schaltet. Oder anders
ausgedrückt einen 8-Bit Leitungstreiber mit einem gemeinsamen Strobe.
Dabei sollen die Ausgänge nicht hochohmig werden, sondern nur auf 0
gehen.
Hintergrund ist eine SPI Matrixsteuerung. Die SPI-Slaves haben keinen
Chipselect und der Hersteller schlägt vor, die Daten- und die
Clockleitung, zu multiplexen. D.h. es wird immer nur der Slave aktiv
gesteuert, der sowohl Daten, als auch Clock anliegen hat. Ich möchte nun
eine normale SPI-Schnittstelle am MC verwenden und einige GPOs, um die
Slaves auszuwählen. 3zu8 Decoder oder so möchte ich nicht nehmen, da ich
auch z.B. alle Slaves gleichzeitig steuern möchte.
Ich suche also nur einen Baustein, um die GPOs und die Clock/Daten zu
verheiraten.
Bisher habe ich es mit normalen 7408 versucht, aber die sind ziemlich
blöd zu layouten für Busse und ich muss dann auch mit einem Ausgang
wieder acht Gatter besaften...
Danke euch.
Wenn man ihn findet würde die ein 74HCT4068 helfen. Ist aber ein NAND
Ach Mist du willst ja was ganz anders, falsch gelesen. :(
Aber mit einem GAL16V8 würde sowas gehen.
Karl schrieb:> Hintergrund ist eine SPI Matrixsteuerung. Die SPI-Slaves haben keinen> Chipselect und der Hersteller schlägt vor, die Daten- und die> Clockleitung, zu multiplexen.
Wieso nimmst du keinen Multiplexer(z.B.CD40?BE)?
Karl schrieb:> Oder anders> ausgedrückt einen 8-Bit Leitungstreiber mit einem gemeinsamen Strobe.> Dabei sollen die Ausgänge nicht hochohmig werden, sondern nur auf 0> gehen.
Mir fielen spontan sowas wie 74HC245, 74HC541, oder 74HC573 und 74HC574
ein. Manche kann man am Ausgang hochohmig schalten, vielleicht hilft da
ein Pulldown-Widerstandsarray mit 8 Widerständen.
Aber die Bausteinserien 4000 und 7400 haben auch noch weitere.
Jürgen D. schrieb:> Wenn man ihn findet würde die ein 74HCT4068 helfen. Ist aber ein NAND
Ist dank komplementären Ausgängen AND und NAND, ist aber nicht das, was
er sucht. Er sucht 8x 2-Input AND-Gates mit einem gemeinsamem Eingang.
Einen GAL16V8 gibt es wohl nicht mehr, klar könnte ich das mit einem
CPLD oder FPGA machen, es geht aber doch darum die Dinge zu vereinfachen
und nicht noch komplizierter zu machen.
Ein Multiplexer fällt unter die "3zu8 oder so" Kategorie wo ich nicht
alle Leitungen durchschalten kann.
74HC245 und die ganzen anderen Konsorten aus der Reihe sind sind ja
eigentlich alle Leitungstreiber mit Tristate, die normalerweise den
Nachteil haben, dass der EN Eingang negativ ist. Dieser EN wäre ja aber
genau mein Daten-Eingang.
Der einzige solche Typ, mit dem ich bis jetzt halbwegs konform bin ist
der 74HC623, weil der in eine Busrichtung einen positiven Enable hat,
aber ich finde die benötigten Pulldowns nicht so toll. Deswegen suche
ich nach einer besseren Lösung.
Es gab vor 1000 Jahren mal einen 4502, der wäre schon ganz gut, ist aber
1. schon lange nicht mehr erhältlich und wäre 2. auch viel zu langsam
gewesen.
Einen Tiny brennen, der genug Füße hat... Bit-Logik auf Bytebreite geht
doch fix über den Chip, bei maximalem Takt und wenn er sonst nix zu tun
hat. Welche Bandbreite wird denn gebraucht?
Karl schrieb:> Einen GAL16V8 gibt es wohl nicht mehr,
Von Lattice nicht mehr, aber von anderen Herstellern.
> und nicht noch komplizierter zu machen.
Du machst es dir komplizierter indem du GALs nicht verwenden willst.
Simpel schrieb:> Einen Tiny brennen, der genug Füße hat... Bit-Logik auf Bytebreite geht> doch fix über den Chip
Auch schneller wie durch einen 4500er CMOS
Karl schrieb:> Es gab vor 1000 Jahren mal einen 4502, der wäre schon ganz gut, ist aber> 1. schon lange nicht mehr erhältlich und wäre 2. auch viel zu langsam> gewesen.
Wenn der inaktive Pegel H sein darf, dann tuts ein popeliger 1-auf-8
Demultiplexer (aka 3-zu-8 Decoder) wie z.B. 74x138. Das durchzu-
schaltende Signal geht dann an einen der beiden invertierenden
Freigabeeingänge. Alternativ ein 8-auf-1 Analogmultiplexer wie
(CD|74HC)4051 und Pulldown-Widerstände.
XL
Axel Schwenke schrieb:> Wenn der inaktive Pegel H sein darf, dann tuts ein popeliger 1-auf-8> Demultiplexer (aka 3-zu-8 Decoder) wie z.B. 74x138Karl schrieb:> 3zu8 Decoder oder so möchte ich nicht nehmen, da ich> auch z.B. alle Slaves gleichzeitig steuern möchte.
Für inaktiv Low würde es den 74HC238 geben.
Acht Einzelgatter habe ich momentan in der Schaltung, aber genau das
Boardrouting und die Treiberlast sind da die Hindernisse. Ich layoute an
dem Part jetzt schon seit über einem Tag und werde einfach nicht
glücklich damit.
@ Karl (Gast)
>Boardrouting und die Treiberlast sind da die Hindernisse. Ich layoute an>dem Part jetzt schon seit über einem Tag und werde einfach nicht>glücklich damit.
Dann machst du was falsch.
Max H. schrieb:> Axel Schwenke schrieb:>> Wenn der inaktive Pegel H sein darf, dann tuts ein popeliger 1-auf-8>> Demultiplexer (aka 3-zu-8 Decoder) wie z.B. 74x138>> Karl schrieb:>> 3zu8 Decoder oder so möchte ich nicht nehmen, da ich>> auch z.B. alle Slaves gleichzeitig steuern möchte.
Hmm. Das hab ich wohl überlesen. In dem Falle kann es doch gar keine
andere Lösung geben, als 8 Einzelgatter. Dinosaurier-Technik a'la
PAL/GAL wurde schon genannt (und nicht gemocht). Ich frage mich ja, wie
wichtig es ist, auch mehrere Slaves parallel ansteuern zu können. Denn
eigentlich will man das mit SPI gar nicht, weil das in Verbindung mit
dem Rückkanal eine Punkt-zu-Punkt Verbindung ist.
XL
Eigentlich würde ich dir da auch Recht geben, aber in diesem Fall gibt
es keinen MISO, es geht nur in eine Richtung und alle zusammen oder
einzelne Gruppen zusammen (so wie es die Matrix halt erlaubt) dient zum
Reset und um sich bei ein paar Befehlen das ein oder andere Byte zu
sparen.
Der günstigste CPLD kostet ungefähr das, was auch die entsprechenden
Einzelgatter in Summe kosten würden und ich gewinne dadurch noch etwas
Flexibilität, habe aber auch wieder mehr Programmieraufwand.
Für mich ist das nur persönlich ein größerer Schritt, da ich noch nie
mit CPLDs gearbeitet habe (ist auch kein Hexenwerk, klar, aber wieder
eine Baustelle mehr wo es eigentlich weniger werden sollten).
Gibt es da irgendwelche Empfehlungen für einen CPLD, der z.B. besonders
gut mit suboptimalen 4MHz Signalen nach 30cm Flachbandkabel zurecht
kommt?
Karl schrieb:> der Hersteller schlägt vor, die Daten- und die> Clockleitung, zu multiplexen.
Warum die Daten?
Ohne Takt werden keine Daten übernommen.
Karl schrieb:> 3zu8 Decoder oder so möchte ich nicht nehmen, da ich> auch z.B. alle Slaves gleichzeitig steuern möchte.
Dann prüfe erstmal, wie groß die CPU-Last überhaupt ist.
Ein nacheinander Beschreiben sollte keine merkbar zu hohe Last
darstellen.
Peter Dannegger schrieb:> Warum die Daten?> Ohne Takt werden keine Daten übernommen.
Na der Takt in die Spalten und die Daten in die Zeilen. Es reagiert nur
der Baustein, an dem sowohl Daten, als auch Takt anliegen.
Das mit der gleichzeitigen Ansteuerung liegt weniger an der erzeugten
CPU Last, sondern eher an der dann gleichzeitigen Ausführung eines
Befehls.
Thomas R. schrieb:> wozu cpld? den atf16v8 und atf22v10 gibts neu von Atmel
Weil ein einfacher CPLD einen GAL oder PAL nicht nur mehr als ersetzen
kann, sondern auch noch günstiger ist. Den 5M40 von Altera gibt es für
unter unter 1€.
Karl schrieb:> Thomas R. schrieb:> wozu cpld? den atf16v8 und atf22v10 gibts neu von Atmel>> Weil ein einfacher CPLD einen GAL oder PAL nicht nur mehr als ersetzen> kann, sondern auch noch günstiger ist. Den 5M40 von Altera gibt es für> unter unter 1€.
Wir kennen Dein Projekt nicht. Ist es kommerziell, so daß es auf solche
Preisdifferenzen ankommt? Wenn ja, eher CPLD.
Außerdem hast Du weiter oben geschrieben, daß Du von CPLDs (noch) keine
Ahnung hast und dieses Hürde eigentlich etwas scheust. Wie sieht es mit
GALs aus? Hast Du damit Erfahrung? Wenn nein, lieber gleich CPLDs
lernen.
Wenn es dagegen ein Einzelstück, Hobbyprojekt oder Kleinstserie werden
soll, dann könnte auch die Bauform eine Rolle spielen. Die GALs kriegst
Du auch als DIL, den Altera nicht. Und deshalb kannst Du so ein GAL ohne
Adapter in jeden besseren Universalprogrammer stopfen, in den GALEP zum
Beispiel. Der heißt ja schon so, wie lustig :-)
Thomas R. schrieb:> wozu cpld? den atf16v8 und atf22v10 gibts neu von Atmel, dk hat mehr als> 4k stk. davon am lager.
Das sind CPLDs die nach aussen ein PAL emulieren.
>Eigentlich brauche ich acht und-Gatter,>wobei ein Pin jeweils einen Eingang von allen unds schaltet.
.....
>die Daten- und die Clockleitung, zu multiplexen.......
Nimm einfach 2x '138 oder '238 (oder 1x '139), um Clk u Data von 1 aus
8(4) auszuwählen. kostet 0,20eu.
(MUXs sind ja höher in Dichte als reine Gatter,
und wegen dem Bisschen wäre GAL/PLD völlig überflüssig)
Wenn ich alles richtig verstanden habe hast du einen SPI-Master und 4
SPI-Slaves, die du einzeln oder in Gruppen ansteuern willst.
Wie schon vorgeschlagen würde ich ein CPLD nehmen. Wenn du das aber
unbedingt vermeiden willst kannst du auch zum Durchschalten der beiden
Leitungen zu den 4 Slaves Analog Schalter (2*4066 oder was
neueres/besseres) nehmen. Brauchst dann halt 4 Ausgänge an deinem MC zum
Ansteuern.
MCUA schrieb:> Nimm einfach 2x '138 oder '238 (oder 1x '139), um Clk u Data von 1 aus> 8(4) auszuwählen. kostet 0,20eu.
Lies den eröffnungspost ganz:
Karl schrieb:> 3zu8 Decoder oder so möchte ich nicht nehmen, da ich> auch z.B. alle Slaves gleichzeitig steuern möchte.Karl schrieb:> Acht Einzelgatter habe ich momentan in der Schaltung, aber genau das> Boardrouting und die Treiberlast sind da die Hindernisse. Ich layoute an> dem Part jetzt schon seit über einem Tag und werde einfach nicht> glücklich damit.
Hast du es mit diesen Einzelgattern versucht: 74V1G08STR
MCUA schrieb:> und wegen dem Bisschen wäre GAL/PLD völlig überflüssig)
Nicht, wenn man sie (wie ich) noch herum liegen hat und (wie Karl) beim
Routen Platzprobleme kriegt.
> 3zu8 Decoder oder so möchte ich nicht nehmen, da ich> auch z.B. alle Slaves gleichzeitig steuern möchte.
hab ich gelesen.
die Slaves alle par zu steuern würd ich, wegen evtl Probleme, Nicht
machen.
(und wenns so simple ist, dass er die immer par steuern will/kann,
braucht er keine Gatter dazwischen)
Galdrian schrieb:> wie Karl) beim Routen Platzprobleme kriegt.
Da verstehe ich nur nicht: 8 Einzelgatter lassen sich doch allemal
viel einfacher routen als ein CPLD, welches all die Funktionen in
sich vereint.
MCUA schrieb:> die Slaves alle par zu steuern würd ich, wegen evtl Probleme, Nicht> machen.
Er will sie aber parallel ansteuern, dann ist es egal was du machen
würdest.
> (und wenns so simple ist, dass er die immer par steuern will/kann,> braucht er keine Gatter dazwischen
Er will sie einzeln oder gemeinsam ansteuern können...
Karl schrieb:> Na der Takt in die Spalten und die Daten in die Zeilen. Es reagiert nur> der Baustein, an dem sowohl Daten, als auch Takt anliegen.
???
Vielleicht wärs mal an der Zeit, endlich diesen super geheimen Chip zu
nennen, der so ne komische Ansteuerung hat.
>an dem sowohl Daten, als auch Takt anliegen.
Wie sieht das aus, wenn keine Daten anliegen 0 oder 1 oder was?
Keine Daten gibts auf jeden Fall nicht. Da stimmt an Deiner Überlegung
oder Formulierung was nicht.
>Er will sie einzeln oder gemeinsam ansteuern können...
oder er weiss es selbst nicht genau
>Vielleicht wärs mal an der Zeit, endlich diesen super geheimen Chip zu>nennen,
den "Spalten-Zeilen-Tabellen-Chip"
Es handelt sich um "supergeheime" Displays, jedoch 50 Stück. Die Dinger
haben, wie ich schon schrieb, kein CS. Mit keine Daten meine ich einen
dauerhaften 0-Pegel. Wenn ein Slave nur Clock erhält und keine Daten
(dauerhaft 0) reagiert er nicht, ebenso wenn er Daten erhält und keine
Clock. Das ganze ist kein Hobbyprojekt, aber auch keine Großserie.
Ebay-Lösungen scheiden jedenfalls aus. Es geht mir nicht vorrangig um
die billigste Lösung, sondern um die günstigste. Das ganze Gerät enthält
natürlich noch andere Schaltungsteile und da macht es dann schon einen
Unterschied, ob ich hier mal ein GAL und dort ein paar Gatter usw.
verwende, oder gleich einen Rutsch CPLDS.
Ich habe mich somit mit großer Wahrscheinlichkeit für CPLDs entschieden.
Vielen Dank für alle eure Hinweise.
Karl schrieb:> Wenn ein Slave nur Clock erhält und keine Daten> (dauerhaft 0) reagiert er nicht, ebenso wenn er Daten erhält und keine> Clock
Also reicht es doch, nur eine Leitung zu toren. Das halbiert schonmal
den Aufwand.
>Mit keine Daten meine ich einen dauerhaften 0-Pegel.
Konsequent gedacht heißt das aber, daß man nur 1-Pegel als Daten hat,
Daten mit 0-Pegel existiren ja nicht. Also kann man nur 1-Pegel
schreiben.
Hast Du das wirklich richtig verstanden und wiedergegeben?
Das Thema mit der Matrix scheint ja hier für Verwirrung zu sorgen.
SPI ist eine synchrone Datenübertragung, immer bei einer (in meinem Fall
steigenden) Flanke der Clock wird ein Bit von der Datenleitung
eingelesen. Also wie ein Schieberegister. Liegt an einem Baustein die
Clockleitung dauerhaft auf 0, werden keine Daten eingelesen, auch wenn
ich sie auf der Datenleitung anliegen habe. Der Baustein reagiert also
nicht. Liegt die Datenleitung dauerhaft auf 0 und die Clock kommt an,
dann werden ständig 00-Bytes eingelesen. Genau dieser Befehl ist in
diesem speziellen Baustein als NOOP definiert. D.h. darauf reagiert der
Baustein ebenfalls nicht. Ein Display reagiert nur wenn es einen
gültigen Befehl erhält und dazu benötigt es einen Takt und mindestens
ein von 0 verschiedenes Datenbit.
Peter Dannegger schrieb:> Also reicht es doch, nur eine Leitung zu toren. Das halbiert schonmal> den Aufwand.
Um mir eine Matrix zu bauen, könnte ich jetzt natürlich z.B. die Daten
an alle Bausteine anschließen und dann den Takt an alle Bausteine führen
und dann mit einer Matrix-Leitungsanordnung dort multiplizieren (3-fach
UND), aber das wäre in Summe doch ein sehr großer Aufwand. Ich bräuchte
ein Gatter für jedes Display.
Die Matrix-Anordnung funktioniert so, dass z.B. die Taktleitungen in
Zeilen angeordnet sind und die Datenleitungen in Spalten. Mit den UNDs
kann ich jede Takt- oder Datenleitung gaten. An jedem Kreuzungspunkt
sitzt ein SPI Slave. Wie jetzt schon mehrfach beschrieben reagiert der
Slave dann nur, wenn die beiden Leitungen, an denen er sitzt
gleichzeitig aktiv durchgeschaltet sind und somit Clock, bzw. Daten
führen. Alle anderen Slaves in der gleichen Spalte bekommen nur Daten
und alle anderen Slaves in der gleichen Zeile bekommen nur Takt und alle
übrigen Slaves bekommen weder Daten, noch Takt.
Somit brauche ich ein Gatter pro Matrix-Leitung, d.h. bei einer 8x8
Matrix z.B. 16 Gatter mit denen ich maximal 64 Kreuzungspunkte ansteuern
kann.
Karl schrieb:> Es handelt sich um "supergeheime" Displays, jedoch 50 Stück.Karl schrieb:> Somit brauche ich ein Gatter pro Matrix-Leitung, d.h. bei einer 8x8> Matrix z.B. 16 Gatter mit denen ich maximal 64 Kreuzungspunkte ansteuern> kann.
Daß es eine so große Anzahl ist, hat wohl keiner vermutet. Da ist dann
die Matrixverschaltung sparsamer.
Karl schrieb:> Ich habe mich somit mit großer Wahrscheinlichkeit für CPLDs entschieden.
Die genannten XC9572XL 5V oder XC2C64A 3.3V gibt es auch in entsprechend
größeren Packages z.B. LQFP144 sollte also kein Problem sein. Trotzdem
kann man vorab für einen Programmier-Test das Evalboard mit LQFP44
nehmen.
>Wenn ein Slave nur Clock erhält und keine Daten>(dauerhaft 0) reagiert er nicht, ebenso wenn er Daten erhält und keine>Clock.
Unsinn.
Ein Slave erhält immer irgentwas an Daten.
Massgeblich ist (nur) der Clock.
Man braucht also (wenn man nicht alles parall. beschicken will) NIX
anderes zu machen, als den Clk umzuschalten/verteilen.
Dafür ist ein PLD völlig überflüssig.
>Hast Du das wirklich richtig verstanden und wiedergegeben?
Nein, hat er nicht.
>Das Thema mit der Matrix scheint ja hier für Verwirrung zu sorgen.
Ja, aber nur bei dir.
Ich werfe mal einen ADG714 in die Runde (per SPI steuerbarer
8x-Analogswitch, es gibt bestimmt auch noch andere). Davon kannst du je
einen Ausgang an den CLK-Eingang deiner Devices setzen, und die Auswahl
der SPI-Devices geht dann ganz bequem per SPI.
Du musst nur prüfen, ob die Adressierung des ADG714 und deiner Slaves
sich ggf. ins Gehege kommen kann. Der ADG hat nämlich auch keinen /CS,
so weit ich sehe.
Max