Forum: FPGA, VHDL & Co. Standard Logic mit ATF750CL-15X realisieren..


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 (C)PLD (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich muss eine Schaltung mit PLD /5V realisieren, Schaltplan angehängt.
Ich hab mir ein Baustein ausgesucht ATF750CL-15X (TSSOP24), denn kann 
ich mit Galep programmieren. Original Schaltung würde nicht auf die 
Platine passen, wäre zu groß deswegen diese PLD-Geschichte...

Ich hab noch nie PLDs programmiert, welchen Compiler kann ich da nehmen, 
am besten irgendwas mit Graphischer Oberfläche, in dem ich die Schaltung 
einfach zeichne, kompiliere und am ende ein FILe hab, denn ich mit Galep 
brennen kann ;-)

wäre meine Schaltung (siehe PDF) mit CPLD oder sogar mit PLD wie zB. 
ATF16V8BQL realisierbar ???

Bedanke mich im Voraus...

: Verschoben durch Moderator
von Christoph db1uq K. (christoph_kessler)


Bewertung
0 lesenswert
nicht lesenswert
Gibts den wirklich noch zu kaufen? Das war doch ein 22V10 mit weiteren 
10 Schattenflipflops. Die Logikmatrix hatte man aber nicht verdoppelt, 
sodass nur noch halb soviele Minterme pro FF zur Verfügung stehen.

Ich hab damals (1995) darin eine State Machine untergebracht, mit 
DataIO-ABEL optimiert und anschliessend in WinCUPL übersetzt, weil es 
dazu einen Programmer gab. Beide Demosoftwareversionen auf Diskette 
installiert.

von Peter D. (peda)


Bewertung
0 lesenswert
nicht lesenswert

von (C)PLD (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Christoph K. schrieb:
> Gibts den wirklich noch zu kaufen?

http://www.digikey.com/product-detail/en/atmel/ATF750CL-15XU/ATF750CL-15XU-ND/1914515

oder kann mir was neues vorschlagen, für 5V halt....

Ich bin jetzt weiter, brauch diesen atmel synario (mit Grapschen Editor)
denn finde ich aber nirgendwo...

von Peter D. (peda)


Bewertung
0 lesenswert
nicht lesenswert
(C)PLD schrieb:
> (mit Grapschen Editor)

Ach komm, die 2 FFs und paar Gatter sind viel schneller als Text 
hingeschrieben.
Den U1B kann man in 2 NANDs umzeichnen.

von (C)PLD (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Peter D. schrieb:
> (C)PLD schrieb:
>> (mit Grapschen Editor)
>
> Ach komm, die 2 FFs und paar Gatter sind viel schneller als Text
> hingeschrieben.
> Den U1B kann man in 2 NANDs umzeichnen.

ja wenn man das nie gemacht hat ist es schwer, ich hab die Schaltung im 
einem uC dsPIC33EV laufen, die funktioniert, leider zulangsam
 while(1)
 {  
 
    temp = PORTA;

    if (temp != temp_alt)
     {
        richtung = ((temp & 1) ^ ((temp_alt>>1)&1));
        temp_alt = temp;
     }

   if (richtung == 0)
    {

    switch(temp) //
             {
             case 0:
                  anfang = 0;
             break;

             case 3:
                  if (anfang == 0) { temp2 = 0;}
             break;

             case 7:
                  temp2 = 4;
                  anfang = 1;
             break;

             default:
             break;
    }

   }
   else
   {
    switch(temp) //
             {
             case 0:
                  if (anfang == 1) {anfang = 0;}
             break;

             case 2:
                  if (anfang == 1) {temp2 = 4;} else {temp2 = 0;}
             break;

             case 7:
                  temp = 3;
                  anfang = 1;
             break;

             default:
             break;
           }

    }

    LATB = temp | temp2;
 }
}

Peter D. schrieb:
> http://www.atmel.com/tools/WINCUPL.aspx

Hab mir jetzt runter geladen...

von (C)PLD (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Also Header hab ich schon mal :-D
Name      Encoder;
Partno    ATF750;
Date      August 2016;
Revision  01;
Designer  ich;
Company   xx;
Assembly  Encoder;
Location  xxx;
Device    v750c;

/* *************** INPUT PINS *********************/
PIN  2  =  A          ; /*                                 */ 
PIN  3  =  B          ; /*                                 */ 
PIN  4 =   C          ; /*                                 */ 

/* *************** OUTPUT PINS *********************/
PIN  23   =   D                     ; 


und wir verbinde ich das alles?!
Zb. PIN  2  =  A   und  PIN  3  =  B  mit U1A FlipFlop

von Peter D. (peda)


Bewertung
0 lesenswert
nicht lesenswert
Ohne Gewähr:
pin 22 = u1a;
pin 21 = u1b;
pin 20 = u6b;

u1a.d = A;
u1a.ck = B;
u6b.d = D;
u6b.ck = B;
u7a = !(u6b & (u1a $ A));
u1b = u1b & u7a
    # !C;
D = u1b & (!C # !u1a);

von (C)PLD (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Peter D. schrieb:
> Ohne Gewähr:pin 22 = u1a;
> pin 21 = u1b;
> pin 20 = u6b;
>
> u1a.d = A;
> u1a.ck = B;
> u6b.d = D;
> u6b.ck = B;
> u7a = !(u6b & (u1a $ A));
> u1b = u1b & u7a
>     # !C;
> D = u1b & (!C # !u1a);

jo danke habe ich jetzt nicht getestet.


Hab jetzt was eigene geschrieben, läßt sich aber nicht kompilieren:
/* *************** INPUT PINS *********************/
pin [2,3,4] = [A,B,Z]; 

/* *************** OUTPUT PINS *********************/
pin [17,18,19,20,21,22,23] = [U3A,U7A,U5A,U1B,U6B,U1A,C]; 
/* pinnode [34,44,31] = [O23Q1,O23Q0,O20Q1];  */


U1A.d = A;
U1A.ck = !B;

U6B.d = C;
U6B.ck = !B;

U5A = A $ U1A;
U7A = !(U5A & U6B);
U3A = !Z # !A;

U1B.ap = Z;
U1B.ar = !U7A;

C = U3A & U1B;

Was mache ich falsch?!

von (C)PLD (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Peter D. schrieb:
> pin 22 = u1a;
> pin 21 = u1b;
> pin 20 = u6b;
>
> u1a.d = A;
> u1a.ck = B;
> u6b.d = D;
> u6b.ck = B;
> u7a = !(u6b & (u1a $ A));
> u1b = u1b & u7a
>     # !C;
> D = u1b & (!C # !u1a);

Hier habe ich aber auch die selben Fehler:
intermediate var not assigned an expression: "variable"

von Johann Klammer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
in Devhelp.pdf:
%V750
V750 Architecture
Mnemonic: V750
PLCC Mnemonic: YES (V750LCC)
DIP Pin Count: 24
Total Product Terms: 171
Extensions: D AR CK OE SP DFB IO

die koennen nur sync preset. ist es das was du willst?
dann muss U1B wenigstens noch eine clock haben...
sonst ein ATF1502 5v version. Die koennen beides...
Wird aber problematisch, wenn beide (AR,AS) gesetzt sind...
Name      Encoder;
Partno    ATF750;
Date      August 2016;
Revision  01;
Designer  ich;
Company   xx;
Assembly  Encoder;
Location  xxx;
Device    v750c;

/* *************** INPUT PINS *********************/
pin [2,3,4] = [A,B,Z]; 

/* *************** OUTPUT PINS *********************/
pin [17,18,19,20,21,22,23] = [U3A,U7A,U5A,U1B,U6B,U1A,C]; 
/* pinnode [34,44,31] = [O23Q1,O23Q0,O20Q1];  */


U1A.d = A;
U1A.ck = !B;

U6B.d = C;
U6B.ck = !B;

U5A = A $ U1A;
U7A = !(U5A & U6B);
U3A = !Z # !A;

U1B.d = U1B;
U1B.ck = !B;
U1B.sp = Z;
U1B.ar = !U7A;

C = U3A & U1B;

cupl -j asdf.pld
compiliert (mit warnung)

von Peter D. (peda)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
(C)PLD schrieb:
> Hier habe ich aber auch die selben Fehler:

Also bei mir compilierts. Die 2 Warnungen kann man ignorieren.

von Christoph db1uq K. (christoph_kessler)


Bewertung
0 lesenswert
nicht lesenswert
Die zwei Flipflops, ein RS-FF und fünf Gatter sollten aber in einen 
22V10 noch reinpassen, dafür braucht es keinen Exoten.
In der Art gab es noch den GAL6001 und GAL6002, also DIL-24 schmal mit 
20 FF statt der üblichen 10.

von (C)PLD (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Peter D. schrieb:
> Also bei mir compilierts. Die 2 Warnungen kann man ignorieren.

ja dein Code kann ich jetzt auch kompilieren, jed File wird auch 
kompiliert...

Was ich aber nicht verstehen, warum bekomme ich hier eine Warnung, und 
kann kein jed-File erstellen:
intermediate var not assigned an expression: U1A_1Q
Device    v750c;

$include TTL.M

/* *************** INPUT PINS *********************/
pin 2 = A; 
pin 3 = B; 
pin 4 = Z; 

/* *************** OUTPUT PINS *********************/
pin 17 = C;
 

TTLSN7474( NC, A, B, NC, U1A_1Q, U1A_n1Q, GND, NC, U6B_1Q, B, C, NC, NC, VCC );
TTLSN7486( A, U1A_1Q, U5A_OUT, NC, NC, NC, GND, NC, NC, NC, NC, NC, NC, VCC );
TTLSN7474( NC, NC, NC, NC, NC, NC, GND, NC, NC, NC, NC, NC, NC, VCC );


TTL.M
$MACRO TTLSN7474 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 P13 P14
P5.d = P2;
P5.ck = !P3;
P5.ar = !P1;
P5.ap = !P4;
P6 = !P2;
P9.d = P12;
P9.ck = !P11;
P9.ar = !P13;
P9.ap = !P10;
P8 = !P12;
$MEND

$MACRO TTLSN7486 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 P13 P14
P3 = P2 $ P1;
P6 = P5 $ P4;
P8 = P9 $ P10;
P11 = P12 $ P13;
$MEND

von Johann Klammer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Weil der U1A_1Q in der luft haengt?

von Peter D. (peda)


Bewertung
0 lesenswert
nicht lesenswert
Du mußt einem D-FF einen Pin oder Pinnode zuweisen.
Ich glaub nicht, daß das mit ar und ap funktioniert.

von (C)PLD (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Peter D. schrieb:
> Ich glaub nicht, daß das mit ar und ap funktioniert.
Hab ich auch festgestellt...

ich habe jetzt RS-FF mit 2 Nands realisiert (wie du vorgeschlagenen 
hast), habe aber trotzdem was anderes raus:
/* *************** INPUT PINS *********************/
pin 2 = A; 
pin 3 = B; 
pin 4 = Z; 

/* *************** OUTPUT PINS *********************/
pin 17 = C;
pin 18 = U3A;
pin 19 = U7A;
pin 20 = U5A;
pin 21 = U8A;
pin 22 = U6B;
pin 23 = U1A; 

U1A.d = A;
U1A.ck = !B;

U6B.d = C;
U6B.ck = !B;

U5A = A $ U1A;
U7A = !(U5A & U6B);
U3A = !Z # !A;

U8A = U7A & U8A # !Z; 

C = U3A & U8A;

muß ich die CK nicht am Anfang Invertieren:
U1A.ck = !B;
U6B.ck = !B;

von Peter D. (peda)


Bewertung
0 lesenswert
nicht lesenswert
(C)PLD schrieb:
> ich habe jetzt RS-FF mit 2 Nands realisiert

Da nimmt man besser einen Logikpin mit Rückführung:
RSFF_OUT = PRESET             /* set, if PRESET = 1 */
         # RSFF_OUT & !RESET; /* hold until RESET = 1 */

von (C)PLD (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wollte nur kurz Feedback geben, es geht jetzt,hab jetzt noch ein wenig 
optimiert:
Device    v750c;



/* *************** INPUT PINS *********************/
pin 2 = A; 
pin 3 = B; 
pin 4 = Z; 

/* *************** OUTPUT PINS *********************/
pin 17 = C;
pin 20 = U8A;
pin 19 = U6B;
pin 18 = U1A; 

U1A.d = A;
U1A.ck = B;

U6B.d = C;
U6B.ck = B;

U8A = !(!Z & !(U8A.io & !((A $ U1A.io) & U6B.io))); 

C = (!Z # !U1A.io) & U8A.io;

Eine Frage hätte ich aber noch, kann ich damit noch 1-2 Counter 
realisieren?!
delay = ca 200ms und eine delay von ca 1ms?

von Christoph db1uq K. (christoph_kessler)


Bewertung
0 lesenswert
nicht lesenswert
Dazu müsste erst mal eine Taktfrequenz existieren, 2 oder 4 kHz wären 
für die 1ms richtig, die 200ms dann durch Teilung, Faktor 200 sind 8 
Teilerstufen, also 8 Flipflops

von Progger (Gast)


Bewertung
0 lesenswert
nicht lesenswert

von (C)PLD (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Christoph K. schrieb:
> Dazu müsste erst mal eine Taktfrequenz existieren, 2 oder 4 kHz wären
> für die 1ms richtig, die 200ms dann durch Teilung, Faktor 200 sind 8
> Teilerstufen, also 8 Flipflops

okay Danke, dann mach ich das mit einem Mikrocontroller (eh vorhanden), 
bin dann flexibler ;-)
delay_ms(1);
delay_ms(200);

:-)

von Christoph db1uq K. (christoph_kessler)


Bewertung
0 lesenswert
nicht lesenswert
>uiuiui!
Samson aus der Sesamstrasse?

Funktioniert eigentlich der Texteditor in Wincupl? Ich habe noch in 
Erinnerung, dass der beim Speichern zuverlässig abstürzte. Man musste 
Wordpad oder ähnliche Bordmittel benutzen.

von (C)PLD (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Christoph K. schrieb:
>>uiuiui!
> Samson aus der Sesamstrasse?
>
> Funktioniert eigentlich der Texteditor in Wincupl? Ich habe noch in
> Erinnerung, dass der beim Speichern zuverlässig abstürzte. Man musste
> Wordpad oder ähnliche Bordmittel benutzen.

Ja gibt immer noch Probleme, hab WIN7 64Bit, passiert folgendes:
stürzt zwar nicht ab, aber kann ab und zu nicht gespeichert werden, 
kommt komische Meldung.

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.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

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