Forum: FPGA, VHDL & Co. Open Kollektor mit CPLD ATF22V10C mit nur einem LE


von Michael D. (nospam2000)


Lesenswert?

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

: Bearbeitet durch User
von MaWin (Gast)


Lesenswert?

Michael D. schrieb:
> einen Open Kollektor Ausgang realisieren, d.h der Ausgang soll entweder
> hochohmig (Z) oder oder 0 sein.

Dir ist aber schon klar, dass das kein Ersatz für einen echten open 
collector ist, bei dem darf nämlich die Spannung am high Z Pin höher 
werden als die (ggf. abgeschsltete) Versorgungsspannung des (CMOS)IC.

Ein externer echter Transistor oder MOSFET könnte das.

von Michael D. (nospam2000)


Lesenswert?

MaWin schrieb:
> die Spannung am high Z Pin höher werden als die (ggf. abgeschsltete)
> Versorgungsspannung des (CMOS)IC.

Die Spannung passt schon, ist alles 5V Logik und immer unter Spannung 
solange das gemeinsame Netzteil eingeschaltet ist.

Es geht um Wired-OR Ausgänge für die beiden Amiga 500/1000 Bussignale 
/OVR und /DTACK.

 Michael

von jo mei (Gast)


Lesenswert?

Geht das nicht?

MY_OUT = 'b'0;
MY_OUT.en = (A # B) & C;

von Michael D. (nospam2000)


Angehängte Dateien:

Lesenswert?

jo mei schrieb:
> Geht das nicht?
> MY_OUT.en = (A # B) & C;

Leider nicht, das führt zu folgendem Fehler:
  "excessive number of product terms: "variable""

Hintergrund ist, dass der OE Zweig keine ODER Verknüpfungen hat, d.h. 
"A&B&C" würde gehen, aber "(A#B)&C" schlägt fehlt.

Siehe oberste Linie "OE" im Bild "Logic Element" im Anhang.

Leider ist das Datenblatt nicht besonders ausführlich an dieser Ecke und 
das Bild ist im Datenblatt sogar unten abgeschnitten.

Ich erhoffe mir mehr Erhellung im Bereich "Logic Option" im Bild "Logic 
Diagram".

  Michael

: Bearbeitet durch User
von jo mei (Gast)


Lesenswert?

Michael D. schrieb:
> Leider nicht, das führt zu folgendem Fehler:

Schaaade, aber mit einem externen Transistor Open Collector
machen dürfte das Problem doch umschiffen, oder?

von Michael D. (nospam2000)


Lesenswert?

jo mei schrieb:

> Schaaade, aber mit einem externen Transistor Open Collector
> machen dürfte das Problem doch umschiffen, oder?

Klar das geht immer.

  Michael

von jo mei (Gast)


Lesenswert?

Michael D. schrieb:
> Hintergrund ist, dass der OE Zweig keine ODER Verknüpfungen hat, d.h.
> "A&B&C" würde gehen, aber "(A#B)&C" schlägt fehlt.

Hatte früher mit GALs zu tun, haben die 22V10 alle die gleichen
Eigenschaften bezüglich interner Verknüpfungen? Oder könnte
z.B. ein GAL22V10 sich günstiger geben?

Leider nur Fragen, keine Lösung ...

Oder ein kleines CPLD von XILINX verwenden, die gibt es (gab es)
auch mit sehr wenig Makrozellen (wenn es denn auch 3.3V sein darf)

... oooops, sehe gerade dass es die XCR3032 auch als XCR5032 gab
(dann mit 5V).

von Michael D. (nospam2000)


Lesenswert?

jo mei schrieb:
> Hatte früher mit GALs zu tun, haben die 22V10 alle die gleichen
> Eigenschaften bezüglich interner Verknüpfungen? Oder könnte
> z.B. ein GAL22V10 sich günstiger geben?

Keine Ahnung wie die sich innerhalb der Familie unterscheiden. Ich habe 
jetzt 40 Stück ATF22V10C bestellt, bei einem Stückpreis von 35,- Cent 
pro Stück konnte ich nicht widerstehen.

> Oder ein kleines CPLD von XILINX verwenden, die gibt es (gab es)
> auch mit sehr wenig Makrozellen (wenn es denn auch 3.3V sein darf)
> ... oooops, sehe gerade dass es die XCR3032 auch als XCR5032 gab
> (dann mit 5V).

Gut zu wissen, was es sonst noch für Alternativen gibt. Eine Übersicht 
zu bekommen, ist nicht einfach. In letzter Zeit verwende ich oft die 
parametrische Suche bei mouser, aber die hat auch ihre Grenzen, da 
einige Eigenschaften nur im Text beschrieben sind und dann eben 
unterschiedlich benannt sind.

Den XCR5032 kennen mouser und Aliexpress überhaupt nicht mehr, bei ebay 
gibt es noch ein paar wenige.

Die nächste Stufe bei mir ist der ALTERA MAX II EPM240T100C5N, danach 
kommen die Cyclone IV und 10. Die Dev-Boards liegen schon da und warten 
nur darauf, dass das ATF22V10C Projekt fertig ist.

Wenn man einen Baustein mal verstanden hat weiß wo dessen Grenzen 
liegen, muss man sich bereits in den nächsten einarbeiten. Leider 
benötigt man meist neue Software Tools und im ungünstigen Fall noch neue 
Programmer.

 Michael

: Bearbeitet durch User
von Johann Klammer (Gast)


Lesenswert?

Nein, die sind alle gleich schlecht. Da musst du irgendwas neueres 
nehmen.

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
Noch kein Account? Hier anmelden.