Forum: FPGA, VHDL & Co. WinCUPL Pin Definition?


von Torsten K. (Firma: TOKA) (avantasia)


Lesenswert?

Moin, Moin,

ich benötige bei folgendem Sachverhalt eine kleine Hilfe.

Ich möchte ein Signal als Eingang an 2 PINs eines PALs definieren und 
bekomme bei meinen Versuchen immer eine Fehlermeldung.

Beispielauszug:
1
/* *************** INPUT PINS *********************/
2
Pin 1  = CKIN    ; /*                                 */ 
3
Pin 2   = Q8    ; /*                                 */ 
4
PIN 3   = Q9    ; /*                                 */ 
5
PIN 4   = Q18    ; /*                                 */ 
6
PIN 5   = Q19    ; /*                                 */ 
7
PIN 6  = CKIN    ; /*                                 */
8
...

Hier soll das Signal CKIN an Pin 1 und Pin 6 anliegen. WinCUPL meldet 
mir hierbei immer das die Variable CKIN von Pin 6 schon für Pin 1 
deklariert wurde. Wie muß die Pin Definition aussehen, damit CKIN von 
WinCUPL an beiden Pins toleriert wird?

Kann mir da Bitte jemand auf die Sprünge helfen?

... und ja ich weiß es ist veraltete Technik... also bitte keine 
diesbezüglichen Kommentare.

Dankeschön

von Torsten K. (Firma: TOKA) (avantasia)


Angehängte Dateien:

Lesenswert?

Moin, moin,

ich habe leider immer noch keine Lösung im Internet gefunden, daher wäre 
es nett wenn jemand mit WinCUPL Kenntnissen mir hier einen Tipp geben 
könnte.

Dankeschön...


Update:

dann habe ich noch ein weiteres Problem... (Henne / Ei).

Gemäß dem angehangenem Bild gibt es eine Equation die wie folgt lautet:
1
CKOUTA   =   CKINA & !CKOUTB & !(CKINB & !CKOUTA) ;
2
CKOUTB   =   CKINB & !CKOUTA & !(CKINA & !CKOUTB) ;

das führt aber zu einer Fehlerausgabe "intermediate dependent on itself: 
CKOUTB".

Wie kann ich das umgehen?

Nochmal Danke

: Bearbeitet durch User
von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Ich weiß nicht ob es das in CUPL gibt, manchmal unterscheidet die 
Software zwischen einem Gatter- oder Registerausgang und dem Pin des 
gleichen Namens. "CLKOUT.pin" könnte das heissen.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

https://www.microchip.com/design-centers/programmable-logic/spld-cpld/tools/software/wincupl
im Users Manual auf Seite 2-9 PDF-Seite 21 von 43 steht es:

.IO Extension
The .IO extension is used to select pin feedback when the 
macrocell.(???) This is useful, when a design requires using an I/O pin 
an input and also requires buried logic to be used within the same 
macrocell. It is also useful for implementing bi-directional outputs in 
CUPL.

: Bearbeitet durch User
von Torsten K. (Firma: TOKA) (avantasia)


Lesenswert?

Hallo Christoph,

Danke für Deine Rückmeldung... jetzt muß ich das nur noch verstehen ;-)

Mein obiges Update mit dem 2.Problem habe ich mittlerweile gelöst.

Die Equations sind für 2 PALs geschrieben und so habe ich mir PALASM 
installiert und damit konnte ich die Equation (mit dem Henne / Ei 
Problem) kompilieren. Ich muß das jetzt noch gegen die Original Fusemap 
vergleichen, aber ich denke das wird wohl passen.

Probleme habe ich jetzt nur noch an der Stelle, wo ein und das selber 
Signal an zwei Pins des PALs geführt wird. Ausserdem kennt PALASM wohl 
nicht die Pin Extention ".D" (input of D-type flip-flop), denn da 
bekomme ich ebenfalls eine Fehlermeldung. Jetzt muß ich mal schauen was 
da in PALASM anstatt zu nutzen ist.

Falls Du das aus dem Hut weißt, dann wäre es nett wenn Du es 
kommunizieren würdest.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Ich kenne nur ABEL, CUPL und Verilog, den PALASM habe ich nie benutzt.

In CUPL nehme ich an, müssten die obige Zeilen so aussehen
CKOUTA   =   CKINA & !CKOUTB & !(CKINB & !CKOUTA.IO) ;
CKOUTB   =   CKINB & !CKOUTA & !(CKINA & !CKOUTB.IO) ;

von Torsten K. (Firma: TOKA) (avantasia)


Lesenswert?

Das werde ich in WinCUPL sicher auch nochmal testen.

In PALASM sehen die beiden Zeilen nun so aus.
1
CKOUTA      = CKINA * /CKOUTB * /(CKINB * /CKOUTA);
2
CKOUTB      = CKINB * /CKOUTA * /(CKINA * /CKOUTB);

Das kompiliert jetzt auch... der Fehler warum es in PALASM nicht ging 
war ein Typo... sprich ein falscher Buchstabe ;-(

Zum ersten Fall mit ".D" habe ich auch schon eine Antwort aus dem Manual 
gefunden, der Pin mit seiner Nummer und dem Signalnamen bekommt noch ein 
REG hinterher und schon ist es ein D-Flip-Flop.

Beispiel:
1
PIN  14                 /CK1 REG;

Jetzt habe ich nur noch das Problem, zwei Pins den gleichen Signalnamen 
zuzuordnen...

Danke für Deine bisherigen Antworten.

von Wolfgang L. (smarty9797)


Lesenswert?

> Jetzt habe ich nur noch das Problem, zwei Pins den gleichen Signalnamen
> zuzuordnen...
>
> Danke für Deine bisherigen Antworten.

Vielleicht musst Du das nicht:

Hier http://www.ti.com/lit/ds/symlink/pal16l8am.pdf ist das Datenblatt 
für das verwendete 16R4. Auf Seite 6 im PDF ist die Innenschaltung des 
PAL dargestellt. Der Pin 1 wird nur zur Taktung der Registerausgänge 
verwendet. Er wird nicht in die Logikmatrix geführt.

In der Matrix landet aber der Pin 6. Also würde ich in CUPL diesen bei 
der Definition von CKIN benutzen und Pin 1 komplett weglassen.
Du müsstest übrigens auf Deiner Platine eine Leiterbahn zwischen den 
Pins 1 und 6 haben...

HTH,
Wolfgang

: Bearbeitet durch User
von Torsten K. (Firma: TOKA) (avantasia)


Lesenswert?

Hallo Wolfgang,

Danke für Deine Information. Nun auf der Platine sind Pin 1 und Pin 6 
verbunden. Somit liegt an beiden ein Clocksignal was in der Original 
Equation (siehe Bild weiter oben) als CKIN bezeichnet wurde. Ich bin 
gerade dabei die originalen (oder sagen wir mal im Internet gefundene) 
Fusemaps zu verstehen. Ich habe zunächst mal diese Fusemaps auf die 
jeweiligen Logic Sheets grafisch übertragen und dabei habe ich zu den im 
obigen Bild angegebenen Equations einige Unterschiede gefunden.

Jetzt bin ich gerade dabei zu verstehen was wohl richtig ist, die 
gefundenen Fusemaps (JEDec Dateien) oder die im Bild angegebenen 
Equations. Wie auch immer habe ich dabei auch schon mal das gemeinsame 
Signal CKIN in CKIN0 und CKIN1 aufgeteilt und damit lässt sich meine 
Equation dann auch kompilieren.
Ist ja letztlich auch egal wie ich die benannt habe, da sie physisch 
verbunden sind.

Das in den obigen Equations auftauchende Signal CK0 habe ich anhand der 
Fusemap Datei möglicherweise identifiziert. Ist noch einiges zu tun... 
mal sehen ob ich das hinbekomme. Aber dafür das ich mit PALs oder GALs 
bisher nichts am Hut habe/hatte komme ich glaube ich gut voran.

Gruß Torsten

: Bearbeitet durch User
von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Die alte DOS-Software JEC2EQN.exe kennst du? Die sollte diese alten PALs 
kennen. Das ist auf jeden Fall einfacher , als die Fusemap von Hand 
einzutragen. Der erzeugte Code ist im ABEL-Format, aber das 
unterscheidet sich nur wenig von CUPL.

von Torsten K. (Firma: TOKA) (avantasia)


Angehängte Dateien:

Lesenswert?

Hallo Christoph,

nein, diese alte DOS Software war mir bis jetzt nicht bekannt. Das werde 
ich mal ausprobieren. Das OPALjr 2.1 Paket habe ich mir bereits besorgt, 
da sollte das Programm mit bei sein.

Was ich gemacht habe, ist die vorhandene Fusemap einfach in das Logik 
Diagramm (siehe Bildauszug) des passenden PALs zu zeichnen und dann mit 
den Equation's zum jeweiligen PAL zu vergleichen. Da habe ich schon 
Unterschiede festgestellt. Orange Punkte sind die abweichenden Einträge 
aus der Internet Fusemap.

Ich denke aber das beim ersten PAL die EQU richtig ist und nicht die im 
Internet gefundene Fusemap. Das kann ich nur ausprobieren, wenn ich die 
bestellten PALs bzw. GALs habe. Dann werde ich die PAL Fusemap in eine 
GAL Fusemap konvertieren und dann kann ich testen was nun richtig ist.

Ich lerne zwar gerade etwas veraltete Technik kennen aber das ist okay, 
sofern ich das Stück HW dann beleben kann. ;-)

von Torsten K. (Firma: TOKA) (avantasia)


Lesenswert?

Halo Christoph,

Danke für den Hinweis auf das JED2EQN.EXE Programm... das hilft mir 
schonmal sehr viel weiter, bestätigt aber auch meine bisherige Arbeit 
und die per "HAND" gefundenen Abweichungen.

Na ich werde wohl sehen was letztendlich richtig ist.

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.