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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Michael D. (nospam2000)


Bewertung
0 lesenswert
nicht 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:
Name     OCTest;
Device   g22v10;
PIN 1 = A;
PIN 2 = B;
PIN 3 = C;
PIN 14 = MY_EN;
PIN 15 = !MY_OUT;
MY_EN = (A # B) & C; /* vereinfachtes Beispiel */
MY_OUT = 'b'1;
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
MY_OUT = (A # B) & C;
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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Geht das nicht?

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

von Michael D. (nospam2000)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht lesenswert
Nein, die sind alle gleich schlecht. Da musst du irgendwas neueres 
nehmen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.