Hallo,
ich möchte mit einem ATF22V10C einen Open Kollektor Ausgang realisieren,
d.h der Ausgang soll entweder hochohmig (Z) oder oder 0 sein.
Mit folgendem CPLD Code funktioniert das auch:
1 | Name OCTest;
|
2 | Device g22v10;
|
3 | PIN 1 = A;
|
4 | PIN 2 = B;
|
5 | PIN 3 = C;
|
6 | PIN 14 = MY_EN;
|
7 | PIN 15 = !MY_OUT;
|
8 | MY_EN = (A # B) & C; /* vereinfachtes Beispiel */
|
9 | MY_OUT = 'b'1;
|
10 | MY_OUT.oe = MY_EN;
|
Leider wird dadurch für MY_EN ein extra Ausgang benötigt.
Kann man es vermeiden 2 Ausgänge für jeden Open Kollektor Ausgang zu
verwenden?
Ich weiß, dass es funktionieren würde, wenn MY_OUT.en kein 'OR' enthält,
d.h. z.B. bei 'MY_OUT.en = A & B', aber ich benötige das 'OR' hier.
Mein Versuch mit folgendem Code
1 | MY_OUT = (A # B) & C;
|
2 | MY_OUT.en = MY_OUT;
|
wird vom Simulator mit dem status "untested" für MY_OUT quittiert.
Im Datenblatt habe ich keine Möglichkeit gefunden das Ausgangssignal
direkt rückzuführen, d.h. es wird wohl immer hinter der "Output Option",
d.h. nach der Verknüpfung mit OE abgegriffen. So kann das natürlich
nicht funktionieren, aber vielleicht gibt es ja eine andere Möglichkeit,
die ich nicht sehe.
Momentan reicht die Anzahl der Pins noch aus, es wird aber bereits eng.
Daher suche ich Optimierungsmöglichkeiten, außerdem will ich was lernen.
Michael