www.mikrocontroller.net

Forum: FPGA, VHDL & Co. PIN-Zuweisung für GAL16 in ispLever Classic


Autor: Olaf K. (oki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

dies ist mein erster Beitrag in diesem Forum und ich hoffe auf eure 
Hilfe. Leider hat die Sufu keine Treffer gebracht mit denen ich mein 
Problem lösen konnte. Entweder es gibt dazu noch nichts oder ich habe 
schlicht und ergreifend falsch gesucht. Ich bin zwar nicht neu in der 
Szene der Programmierung, das aber für den Bereich FPGA's.

Ich habe mir ispLever Classic heruntergeladen und das TUT durchgespielt. 
Dabei möchte ich vorerst alles mittels Schema machen, da ABEL für mich 
noch ein Buch mit sieben Sigeln ist. Ich werde das ganze auch nicht so 
oft brauchen, dass es für mich Sinn macht sich da mühsam einzuarbeiten.
Wenn ich das ganze jetzt aber mit einem GAL16 (mein Anwendungsfall) 
mache, dann bekomme ich einfach nicht den Einsprung für die 
PIN-Zuweisung in der Projektverwaltung angezeigt. Wird das nun bei GAL's 
grundsätzlich nicht angezeigt oder mache ich was falsch?

Schon mal Dank und Gruß oki

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>...ABEL...
Wikipedia: Advanced Boolean Equation Language --> Digitaltechnik der 
1980er und 1990er

>...GAL16...
Wikipedia: Generic_Array_Logic --> Seit Mitte der 1990er Jahre werden 
PALs und GALs in neu entwickelten Schaltungen kaum noch eingesetzt...


Mir scheint Du solltest mal einen Zeitsprung von 15 Jahren nach vorne 
machen. Heute verwendet man FPGAs bzw. CPLDs (die sind auch schon 
langsam am Aussterben) und VHDL bzw. Verilog.

Duke

Autor: Olaf K. (oki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin Duke.

Erst mal Dank für deine Antwort. Du magst sicher Recht mit deiner 
Behauptung zum Zeitsprung haben. Leider ist deine Antwort für mich aber 
nicht hilfreich. Neben der Aufgabe mehrere Schaltungen für ein 
Messsystem mit Microkontroller zu entwickeln und einen Prototypen zu 
bauen muss ich noch diverse mathematische Filter und Erfassungsroutinen 
für den Controller, eine USB-Treiberanpassung für den PC sowie ein 
Erfassungs- und Auswerteprogramm unter Windows proggen.
Ich denke, es ist unter diesen Rahmenbedingungen sicher verständlich, 
dass ich in die Programmierung des Logik-Arrays nicht viel Zeit 
investieren möchte. Das vorallem, da die Ansprüche an die Logik nicht 
gerade hoch sind (Takteilung, einige wenige logische Verknüpfungen von 
Eingangssignalen). Aus diesem Grund möchte ich auch Schematic-Editor 
benutzen. In ABEL, VErilog oder VHDL will ich mich da möglichst nicht 
einarbeiten.

OK, wieder zurück zu meiner Frage:

Wie kann ich den Eingangssignalen die entsprechenden PIN's meines GAL 
zuweisen und dass, wenn ich eigentlich nur den Schematic-Editor benutzen 
möchte? Das gilt für ispLever Classic, wobei ich den Constrain-Editor im 
Projektverzeichnis wie im TUT nicht finden kann.

Tja Duke, leider hast du diesen Teil meiner Frage nicht beantwortet. Da 
du dich ja supper mit der Materie auskennst ist es sicher ein leichtes 
für dich mir als Einsteiger diese Frage zu beantworten.

Dank und Gruß oki

Autor: SuperWilly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Olaf,

es gibt doch (auch in ispLEVER Classic) die Möglichkeit über Open -> 
Examples
sich Beispiele anzuschauen. Vielleicht ist je etwas in deiner Richtung
dabei ...

Gruß,
SuperWilly

Autor: Wolfgang M. (womai)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich denke, es ist unter diesen Rahmenbedingungen sicher verständlich,
> dass ich in die Programmierung des Logik-Arrays nicht viel Zeit
> investieren möchte. Das vorallem, da die Ansprüche an die Logik nicht
> gerade hoch sind (Takteilung, einige wenige logische Verknüpfungen von
> Eingangssignalen). Aus diesem Grund möchte ich auch Schematic-Editor
> benutzen. In ABEL, VErilog oder VHDL will ich mich da möglichst nicht
> einarbeiten.

Nimm ein CPLD - die zugehoerige Designsoftware erlaubt auch die 
Schaltungserstellung mittels Schematic, Du musst also nicht VHDL oder 
Verilog lernen. Als CPLD zum Beispiel das Xilinx 9572XL (gibt's im 
hobbyfreundlichen PLCC-Gehaeuse) mit der ISE-Webpack-Designsoftware.

GALs/PALs sind wirklich von vor-vorgestern. Sich damit zu beschaeftigen 
ist verlorene Zeit. CPLDs kann man genauso einfach programmieren.

Autor: Olaf K. (oki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@SuperWilli: Dank auch für deine Antwort. Ja, dass hab ich gemacht. Ein 
Tut mit einem CPLD hat mir den Constrain-Editor in der Projektverwaltung 
angezeigt. Somit bin ich mir schon mal sicher, dass die Classic-Version 
den auch beinhaltet. Da die GAL's frei zuweisbare PINs haben dachte ich 
jetzt, dass ich das einen Fehler gemacht habe und mir der 
Constrain-Editor deshalb nicht angezeigt wird.

@womai: Auch dir herzlichen Dank. Das ich mit meiner Idee nicht auf dem 
neuesten Stand bin scheint wohl Tatsache zu sein. Leider ist es so, dass 
ich absolut neu auf diesem Sektor bin. Ich habe mich in den letzten 
Jahren fast ausschließlich mit Anwendungsprogrammierung für Windows 
unter C und Delphi beschäftigt. Das ich auf GALs gekommen bin liegt 
einfach nur daran, dass hier bei einem Kollegen noch einige rum lagen. 
Der hatte vor längerer Zeit aber auch nur mal in dem Thema 
"rumgeschnuppert".
Duge's Antwort erschien mir etwas von oben herab im Ton einer Belehrung 
und hatte für mich kaum einen Nutzeffekt für mein Problem oder meinen 
Wunsch schnell zu einem guten Ergebnis zu kommen. Leider bin ich bei so 
etwas immer recht empfindlich.
Dein Hinweis mit dem Xilinx hilft mir da schon mehr. Blöder weise habe 
ich auf der mittlerweile fertigen Prozessorplatine schon einen 20-pin 
PLCC-Sockel drauf. Ich schau mal, ob die Xilinx vielleicht pinkompatibel 
sind (große Hoffnung hab ich nicht). Sollte das nicht der Fall sein, so 
werd ich versuchen das noch mit dem GAL hin zu biegen und für das 
nächste Release auf einen CPLD schwenken.

Vielleicht weis ja noch einer wie es mit der Pin-Zuweisung unter 
ispLever funzt.

Dank euch beiden für die Antworten,

Gruß oki

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Olaf K.:

Tut mir leid das die Antwort nicht in Deinem Sinne war, aber mit so 
altem Zeug kenne ich mich auch nicht aus. Da könnte es u.U. sogar 
problematisch werden die Software auf einem aktuellen Betriebssystem 
laufen zu lassen :-/

Duke

Autor: Olaf K. (oki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Duke,

na ja, Asche auf mein Haupt. Ich hatte mir die neueste Version von 
ispLever herunter geladen. Die läuft auch anstandslos auf meinem XP und 
hat ausser einigen eigenartigen Installationspfaden nichts was 
uebermaessig veraltet aussieht. Da ich dort auch die GALs in der 
Bibliothek gefunden hatte hab ich mir nichts schlimmes dabei gedacht. 
Wenn ich etwas empfindlich war, dann sorry dafuer. (Schitt, meine 
Tastatur hat auf einmal auf amerikanisches Leyout umgeschaltet). Ich 
hatte mich halt nur geaergert, dass ich nach 3 Tagen endlich eine 
Antwort hatte, aber nichts verwertbares fuer mich dabei war.

Nichts fuer ungut und trotzdem Dank an Dich, auch fuer deine nochmalige 
Erlaeuterung warum du nicht weiter helfen konntest. Kann ich igendwie 
auch verstehen. Wenn mich jemand nach Turbopascal (C) fragen wuerde, 
dann haette ich wohl auch geantwortet nimm Delphi10 (c#).

Gruss oki

Autor: Harald S. (harri)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Olaf

Olaf K. schrieb:
> Vielleicht weis ja noch einer wie es mit der Pin-Zuweisung unter
> ispLever funzt.

Ich nutze selbst noch isplever Classic und hab mir eben mal die 
Beispiele mit Schematic angesehen. Daraus werde ich aber nicht schlau, 
kann also keine hilfreichen Tips geben.
Ich selbst nutze noch ABEL statt VHDL weil das meiner Meinung nach recht 
nahe an den Logikgleichungen ist. Anhängig von der Komplexität deiner 
Logik kannst du das vieleicht auch nutzen.

Hier mal ein kleines Beispiel von einem OR, einem AND und einem 
Taktteiler mit T-Flipflop:

MODULE toplevel
" Eingänge
IN1     pin 1;
IN2     pin 2;
CLK_IN  pin 3;

" Ausgänge
OUT_AND  pin 4;
OUT_OR   pin 5;
CLK_OUT  pin istype 'reg_t';

Equations
OUT_AND = IN1 & IN2;
OUT_OR  = IN1
        # IN2;
CLK_OUT.clk = CLK_IN;

END


Das ist bestimmt weder schön noch modern noch skalierbar (weil ich alles 
im Toplevel habe statt es in Funktionen aufzuteilen), aber es funzt 
meistens ;-)

Vieleicht könntest du deine Logik mal als normalen Schaltplan (eagle 
oder so) skizzieren, die gewünschten Pins am GAL als Text dazu schreiben 
und hier posten.
Dann könnten wir das mal in ABEL, VHDL oder was sonst noch so akuell ist 
übersetzen und du kannst sehen ob das wirklich so viel komplizierter als 
der Schaltplan ist.

mfg
Harri

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt doch für GALS auch die guten alten GAL-Assembler.
Die füttert man mit einer Equation-Datei der Art:
Gal16V8
Time-stamp: "08.03.09 08:30 AW_GAL_Quad_Split.eqn klaus@wachtler.de"
Quad-Split
AnyWare Klaus Wachtler

Clk  SELECTA  SIGNALA  SELECTB  SIGNALB  SELECTC  SIGNALC  SELECTD  SIGNALD  GND
/E   SPLIT1D  SPLIT0D  SPLIT1C  SPLIT0C  SPLIT1B  SPLIT0B  SPLIT1A  SPLIT0A  VCC

SPLIT0A = /SELECTA * SIGNALA

SPLIT1A =  SELECTA * SIGNALA

SPLIT0B = /SELECTB * SIGNALB

SPLIT1B =  SELECTB * SIGNALB

SPLIT0C = /SELECTC * SIGNALC

SPLIT1C =  SELECTC * SIGNALC

SPLIT0D = /SELECTD * SIGNALD

SPLIT1D =  SELECTD * SIGNALD
, macht mit dem galasm oder sowas eine JED draus und brennt die rein.
Die Pinzuordnung ergibt sich dann daraus, daß die Namen einfach
in der Reihenfolge der Pinnummern (1=Clk, 2=SELECTA, 3=SIGNALA ...)
aufgeführt werden.

Autor: Olaf K. (oki)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Moin Leute!

Sorry, dass ich mich gestern nicht gemeldet habe; einfach nur Stress.

@harri: Dank für deine Code-Snipped. Ja, soweit war ich zum Glück auch 
schon durch gedrungen. Leider habe ich für meine aktuelle Schaltung 
einige Probleme die Equations per Code zu erstellen. Ich habe mal einen 
Screen-Shot meines Schemas in den Anhang gelegt. Ich will es gleich 
vorweg schicken. Unsauberkeiten bezüglich der Schaltungen sind mir 
durchaus bewußt:
- VDD als externes Signal ist sicher Schwachsinn (wußte echt nicht wie 
ich ein High-Potential aus dem GAL heraus generiere)
- Die Schaltung für den Teiler kann man sicher erheblich vereinfachen
Ich habe herausgefunden, dass man mittels Menü "Edit/Attribute/Pin 
Attributes.." ein I/O-Gate auswählen und für das Attribut PIN einen Wert 
eintragen kann. Der erscheint dann in der Box des PINs. Ich hab da 
einfach mal die PIN-Nummer eingetragen. Leider konnte ich nicht prüfen, 
ob man damit den PIN für das Gate festlegen kann. Wenn ich das FitDesign 
kompiliere bekomme ich diverse Fehlermeldungen.

FIT  Generic Device Fitter
ispLEVER Classic 1.3 Copyright(C), 1992-2005, Lattice Semiconductor 
Corporation. All rights reserved
Portions Copyright(c), 1992-1999, Vantis Corporation
Portions Copyright(C), 1993-1998, Data I/O Corporation
Portions Copyright(C), 1997-1998, MINC Washington Corporation
Portions Copyright(C), Alan Phillips, Lancaster University Computer 
Centre 1992-1998
Input file: 'clstakt.tt2'
Note 4200: Nodes in 'clstakt.tt2' file have been replaced with pins.
Device 'p16v8'
Note 4161: Using device architecture type P16V8R.
Note 4063: Signal N_1 cannot be assigned (to pin 12) because
       the register on pin 12 does not have reset.

Note 4046: Signal Q_1 (which has no OE) has been
assigned to pin 17 (which has pin OE).
Note 4046: Signal Q_2 (which has no OE) has been
assigned to pin 16 (which has pin OE).
Note 4046: Signal Q_3 (which has no OE) has been
assigned to pin 15 (which has pin OE).
Note 4046: Signal Q_4 (which has no OE) has been
assigned to pin 14 (which has pin OE).
Note 4046: Signal CLS_clk (which has no OE) has been
assigned to pin 13 (which has pin OE).
Design does NOT fit

FIT complete.  Time: 1 second.

Done: failed with exit code: 0001.

Signal N_1 ist die Verbindung zwischen Q an I37 und Eingang I42. Ich 
denke aber, dass ist eine andere Baustelle. Dazu muss ich sicher einen 
neuen Thread aufmachen.

@Klaus Wachtler: Ja, genau dass wollte ich mir eigentlich ersparen. 
Genau diesen Code verstehe ich aktuell nicht und müsste mich sicher für 
meine Schema richtig tief einarbeiten.

Wie gesagt, FPGA's und deren Programmierung sind eigentlich nicht das 
was ich kann und wofür ich viel Zeit habe. Ihr werder jetzt sicher alle 
wettern, dass man schon etwas Zeit und Gehirnschmalz investieren muss um 
das zu beherschen. Joop, bin ich auch bereit. Ich darf den Zeitfaktor 
aber nicht ignorieren. Ich hoffe, mit eurer Hilfe recht schnell in das 
Thema rein zu kommen.

Wieder mal herzlichen Dank für eure Hilfe und die Zeit die ihr 
investiert. Ich stehe in eurer Schuld.

Gruß oki

PS.: Wenn jemand Zeit hat sich mein Schema im Anhang anzusehen und mir 
zu helfen, große Freude! :-)

Autor: Olaf K. (oki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich hab grad mal ein ganz simples Projekt mit einem D-FlipFlop, zwei 
Eingängen und einem Ausgang erstellt. Das ließ sich sauber kompilieren. 
Meine Idee mit der Pin-Zuweisung über die Attributes (aber nicht PIN 
sondern SymbolAttributes; mein Fehler) wer aber leider erfolglos. Hat 
keine Auswirkung und hat sicher was anderes zu bedeuten.

Ich teste weiter.

Gruß oki

Autor: faustian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"GALs/PALs sind wirklich von vor-vorgestern. Sich damit zu beschaeftigen
ist verlorene Zeit. CPLDs kann man genauso einfach programmieren."


Naja, aus dem Blickwinkel dass man die Dinger eben eh da liegen hat und 
gerne nutzen will ;)

Autor: MaWin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"GALs/PALs sind wirklich von vor-vorgestern. Sich damit zu beschaeftigen
ist verlorene Zeit. CPLDs kann man genauso einfach programmieren."

Das war ja auch nur eine Schwachsinns-Aussage von jemandem, der sich 
damit nicht auskennt.

Ein CPLD ist nichts anderes, als mehrere GALs in einem Gehäuse. Wenn 
jemandem bereits ein Teil davon reicht, und er das kleinere Gehäuse in 
seiner Schaltung zu schätzen weiss, dann ist auch heute ein GAL für ihn 
die vollkommen richtige Wahl, egal was ein womai sagt. Allerdings sollte 
man aus Stromspargründen ein Zeropower-GAL nehmen, bzw. Restbestände von 
ICT PEEL16V8.

Was ebenso veraltet ist wie PROMS und UV-EPROMs sind PALs und PALCEs (es 
sei denn, man braucht sie aus Haltbarkeits-Anforderungen).

Leider weiss ich auch nicht, wie man im schematic ein pin assignment 
macht.

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Olaf K. (oki)

Deine Schaltung ist so nicht umsetzbar. Es kann nur einen Clock in einem 
GAL geben. Du must deinen Zaehler aus den JK FF auf ein Syncrones Design 
umstellen. Die Clock der Internen FF sind alle verbunden.


Gruss Helmi

Autor: Olaf K. (oki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,

Dank für die zahlreichen Antworten. Besonderer Dank an MaWin! Jetzt 
gehts mir wieder besser :-)

@helmi1: Na, da haben wir doch schon mal was. Die Frage ist jetzt nur, 
wie bring ich das auf die Reihe. Mein Signal CLK am I8 ist der externe 
Takt, den ich herunter teilen will. Ob ich den hier CLK nennen darf oder 
es dabei zu Problemen bei der Identifizierung des Clock gibt ist mir 
nicht bekannt. Läßt sich aber sicher einfach beantworten und beheben.
Tja, wie stelle ich denn mein Design auf ein syncrones um? Damit kann 
ich im Moment nichts anfangen. Die zweite Frage für mich ist, warum 
haben die JK's ein Takt-PIN wenn sie eh alle intern auf einen Takt 
verbunden sind. Da fehlt jetzt wohl einfach Wissen bei mir oder ich 
verstehe es nur nicht.

So langsam komme ich mir vor wie der letzte DAU. Gut, dass ich in den 
Programmierforen immer höflich zu den Anfängern war :-) Jetzt bin ich 
selber einer. Hätte ich so nicht gedacht.

Lieben Dank für eure Hilfe und hoffe auf weitere Antworten

Gruß oki

PS: Ach so, dass CPLD's eine interne Sammlung mehrerer GAL's sind wusste 
sogar ich. Außerdem widerstrebt es mir mich mit 100 Pins auf meiner 
Schaltung rumschlagen zu müssen, wenn nur 7 gebraucht werden.

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Die zweite Frage für mich ist, warum
>haben die JK's ein Takt-PIN wenn sie eh alle intern auf einen Takt
>verbunden sind.

Das eine ist der Schaltplaneditor das andere der Logikcompiler. Aufmalen 
kann man alles ob es realisierbar ist ist etwas anders. Bei CPLDs hast 
du mehrere Taktverteilernetze im Chip.

>Tja, wie stelle ich denn mein Design auf ein syncrones um?

Tja etwas wirst du schon an Zeit investieren muessen. Das Kapitel 
Schaltnetze wirst du dir noch mal reinziehen muessen.

Aber ich will ja nicht so sein.
Kurz mal den Gockel gefragt und schon findet man was dazu.

http://de.wikipedia.org/wiki/Synchronz%C3%A4hler

ueberigens sind Zaehler in Abel , vhdl und so einfacher zu beschreiben 
als in einem Schaltplan. Von daher waere es nicht verkehrt vielleicht 
doch etwas Zeit zu investieren.

Autor: Olaf K. (oki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi Helmi1,

das hört sich ja alles richtig gut an. Mit dem Input bezüglich 
Schaltnetze hab ich kein Problem. Das zieh ich mir rein. Danke für den 
Tip. Auch gut wenn man immer wieder mal so schlaues Federvieh trifft. Da 
spart man doch echt Zeit :-)

Ich mach denn mal etwas Grundlagenstudium und melde mich wieder.

Dank und Gruß oki

Autor: Olaf K. (oki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Helmi1,

ich hab mir das mit dem syncronen Zähler mal angeschaut und da viel mir 
soch glatt auf, dass ich so was schon mal vor sehhhhhr langer Zeit im 
Studium hatte. Ist doch erstaunlich, wie flüchtig so'n Gehirn als 
Speicher ist. Ich bau mal meine Schaltung um und schau was dabei raus 
kommt.

Eventuell löst sich in der Zwischenzeit auch mein PIN-Problem oder ich 
finde einen Pin-Kompatiblen Typ zum GAL.

Gruß oki

Autor: Wolfgang M. (womai)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MaWin schrieb:
> "GALs/PALs sind wirklich von vor-vorgestern. Sich damit zu beschaeftigen
> ist verlorene Zeit. CPLDs kann man genauso einfach programmieren."
>
> Das war ja auch nur eine Schwachsinns-Aussage von jemandem, der sich
> damit nicht auskennt.
>
> Ein CPLD ist nichts anderes, als mehrere GALs in einem Gehäuse. Wenn
> jemandem bereits ein Teil davon reicht, und er das kleinere Gehäuse in
> seiner Schaltung zu schätzen weiss, dann ist auch heute ein GAL für ihn
> die vollkommen richtige Wahl, egal was ein womai sagt. Allerdings sollte
> man aus Stromspargründen ein Zeropower-GAL nehmen, bzw. Restbestände von
> ICT PEEL16V8.
>
> Was ebenso veraltet ist wie PROMS und UV-EPROMs sind PALs und PALCEs (es
> sei denn, man braucht sie aus Haltbarkeits-Anforderungen).
>
> Leider weiss ich auch nicht, wie man im schematic ein pin assignment
> macht.

Lieber MaWin,

Mit CPLDs kenne ich mich ganz gut aus. Dir ist aber schon aufgefallen, 
dass die GALs nicht mehr weiterentwickelt werden und ausser von 
Uralt-Software nicht mehr unterstuetzt werden, die CPLDs von z.B. Xilinx 
oder Altera aber nach wie vor weiterentwickelt werden, ebenso wie die 
zugehoerige Designsoftware? Noch besser, wenn Olaf einmal mit einem 
modernen CPLD und der Software dazu umgehen kann, ist es ziemlich 
simpel, spaeter auch mal groessere CPLDS oder auch FPGAs zu 
programmieren - die Software bleibt gleich. Damit ist der Nutzen des 
Gelernten ungleich groesser als wenn er z.B. Abel und eine 
Uralt-Brennsoftware fuer GALs lernt - das kannst Du wegwerfen, wenn das 
naechste Projekt auch nur ein bisschen komplizierter ist und nicht mehr 
in ein oder zwei GALs passt. Die kleinsten CPLDs haben uebrigens weit 
unter 100 pins (schau Dir mal das von mir als Beispiel erwaehnte XL9500 
an), also SOOOO kompliziert oder gross ist das auch nicht.

Dementsprechend bleibe ich bei meiner Aussage. Ich persoenlich stecke 
meinen Lernaufwand aber lieber in etwas, das Zukunft hat. Ich verstehe 
natuerlich, dass es einen reizt, das zu verwenden, was gerade herumliegt 
(und dass sein existierendes Projekt bereits Hardware hat, die ein GAL 
vorsieht, hat Olaf im ersten Posting nicht erwaehnt).

Autor: Harald S. (harri)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo alle zusammen!

Helmut Lenzen schrieb:
> Deine Schaltung ist so nicht umsetzbar. Es kann nur einen Clock in einem
> GAL geben. Du must deinen Zaehler aus den JK FF auf ein Syncrones Design
> umstellen. Die Clock der Internen FF sind alle verbunden.

Aber auch wenn der Zähler auf ein syncrones Design umgebaut ist, bleibt 
oben noch ein D-FF mit separatem Takteingang. Es passt also auch mit 
einem syncronen Zähler nicht in ein GAL.
Oder sehe ich das falsch?

mfg
Harri

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Oder sehe ich das falsch?

Das siehst du richtig. Für diesen Teil muss Olaf sich auch noch was 
einfallen lassen.

Autor: Olaf K. (oki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,

hab in der Zwischenzeit den Zähler auf syncron umgestellt. War natürlich 
mit Fehlermeldung. Logisch, nach dem Hinweis von harri viel mir dass mit 
dem D-FF dann auch auf. Ich mach an der Stelle weiter und ändere das.

Noch mal zum Thema GAL. Ja, ich werde auf neuere Typen wechseln. Da ich 
aber die Platine für den GAL16 layouted und auch schon fertig habe werde 
ich versuchen das aktuelle Thema noch mit dem GAL hin zu bekommen. Da 
ich auf jeden Fall ein Redesign machen muss schwenke ich dann auf einen 
neueren Typ um. Da kann ich dann noch einige Sachen mehr mit rein nehmen 
und ein größeres Pinlayout stört dann nicht. Der Aufwand die aktuelle 
Testplatine neu zu machen ist einfach zu groß.

Wie gesagt, ich arbeite weiter an dem Thema und sag Bescheid.

Apropos: Das Thema PIN-Zuweisung ist weiterhin aktuell. Anregungen dazu 
sind weiterhin sehr willkommen :-)

Gruß oki

Autor: Harald S. (harri)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Olaf

Olaf K. schrieb:
> hab in der Zwischenzeit den Zähler auf syncron umgestellt. War natürlich
> mit Fehlermeldung. Logisch, nach dem Hinweis von harri viel mir dass mit
> dem D-FF dann auch auf. Ich mach an der Stelle weiter und ändere das.

Wenn du einen alternativen Schaltplan mit nur einem gemeinsamen Takt 
vorliegen hast, poste den doch nochmal.

Muss dein durch 14 geteilter Takt eigentlich ein sauberes 50/50 
Tastverhältnis haben oder kann der auch etwas asyncron sein?

mfg
Harri

Autor: Olaf K. (oki)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Moin Harri!

Im Anhang meine Schaltung für den syncronen Zähler. Ich habe den Teil 
für die Verschaltung des Teilerverhältnisses noch nicht umgesetzt, da 
ich erst mal testen wollte, ob sie sich kompilieren lässt. Das geht 
zwar, ich bekomme jedoch folgende Meldungen:
FIT  Generic Device Fitter
ispLEVER Classic 1.3 Copyright(C), 1992-2005, Lattice Semiconductor Corporation. All rights reserved
Portions Copyright(c), 1992-1999, Vantis Corporation
Portions Copyright(C), 1993-1998, Data I/O Corporation
Portions Copyright(C), 1997-1998, MINC Washington Corporation
Portions Copyright(C), Alan Phillips, Lancaster University Computer Centre 1992-1998
Input file: 'sipletest.tt2'
Note 4200: Nodes in 'sipletest.tt2' file have been replaced with pins.
Device 'p16v8'
Note 4161: Using device architecture type P16V8R.
Note 4046: Signal N_11 (which has no OE) has been 
assigned to pin 15 (which has pin OE).
Note 4046: Signal N_8 (which has no OE) has been 
assigned to pin 14 (which has pin OE).
Note 4046: Signal N_10 (which has no OE) has been 
assigned to pin 13 (which has pin OE).
Note 4046: Signal OUT_2 (which has no OE) has been 
assigned to pin 12 (which has pin OE).
Design FITS
Pin-assigned pla: 'sipletest.tt3'

FIT complete.  Time: 1 second.

Done: completed successfully.
Was soll mir das sagen?

Die benannten Signale N_11 ... sind die Verbindungen der Q-Ausgänge der 
FF zu den nachgeschalteten Gattern.

Jetzt zu deiner Frage. Ja, der Takt soll ein sauberes 50/50-Verhältnis 
von High zu Low-Periode besitzen. Soweit ich es gesehen habe ist eine 
Phasenverschiebung zum Main-Takt nicht relevant.

Ach ja, die Verschaltung der Takteingänge habe ich eher intuitiv 
vorgenommen. Ob das jetzt so richtig ist? Ich habe mal unterstellt, dass 
mein Signal CLK an den PIN CLK des GAL muss.

Gruß oki

Autor: Olaf K. (oki)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute!

Mann solls nicht glauben, Montag und trotzdem ist heute mein Tag, oder 
alles läuft unterbewust ab (so Zombi mäßig) und ich kann gar nichts 
dafür. Egal, drei Erfolge (zumindest für mich)!

1. Pin-Zuweisung im Schema gefunden. Das geht so:
Im Schematic-Editor über das Menü "Edit/Attribute/Symbol Attribute..." 
aufrufen. Den erscheinenden Eingabedialog bei Seite packen und das 
entsprechende I/O-Gaste anklicken. Für die Eigenschaft PIN trägt man den 
gewünschten PIN auf den das Gate gelegt werden soll ein. Und jetzt ganz 
wichtig, für die Eigenschaft OptimizeLocally trägt man N ein. Nach 
Bestätigung der Eingabe erscheint in der Kiste des Gates die 
eingetragene PIN-Nummer. Durch die Eigenschaft OptimizeLocally wird 
festgelegt, ob das Programm den PIN (Wert: Y) eigenständig festlegt oder 
die eingetragene PIN-Nummer verwendet werden soll (Wert: N).

2. Belegung des Takteinganges der FF:
Ducht Verwendung des Gates G_CLKBUF ohne PIN-Zuweisung routet das 
Programm das Gate automatisch auf PIN 1 welcher als I/CLK-Pin 
beschrieben ist.

3. Zuweisung des internen High-Signals für Schaltaufgaben:
Leider wusste ich bis Dato nicht, wie ich ein High Signal auf die 
Eingänge der FF bekomme ohne dieses von "außen" zuführen zu müssen. Tja, 
einfach VCC aus der Library Gates. Naja, dachte immer, dass ist Low. So 
kanns einem gehen.

Ich habe folgende Anhänge beigelegt:

Schema.png
ScreenShot des Schemas mit eingeblendetem SymbolAttribute-Dialog für 
mein Gate OUT_1 und gesetzten Werten für die feste Vergabe der 
PIN-Nummer am GAL

test.png
Screen Shot der Simulation des Schaltplanes.

Da muss ich jetzt noch aus den High-Spikes eine ordentliche Signalkurve 
machen. Ohne D-FF mit eigenem Takt wird das nicht so einfach. Die 
High-Signale an OUT_1 setzen eigentlich die Marken für die 
Flankenwechsel um eine Signalkurve mit einer 1/14-Frequenz von CLK_IN zu 
erhalten.

Naja, wird schon.

Damit sind schon mal einige wesentliche Probleme beseitigt.

Gruß oki

Autor: Harri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Olaf,

schön, dass du voran gekommen bist.

Probier mal den oberen Eingang von I10 direkt an Q1 zu legen statt an 
den Ausgang von I11. Wenn ich nicht ganz daneben liegen, müsste Q3 dann 
doch schon einen Takt früher schalten und du hast deine 50/50 an Q3.
Out1 brauchst du dann gar nicht mehr auf ein Pin zu legen.

mfg
Harri

Autor: Olaf K. (oki)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Harri,

so schlecht war die Idee nicht, aber leider kommt dann das dabei raus 
(siehe Anhang). Vielleicht muss ich aber auch den Reset entfernen damit 
es funzt. Leider muss ich jetzt Schluss machen. Ich "übe" morgen weiter.

Gruß oki

Autor: Olaf K. (oki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach, eine Frage noch. Ist ein Latch auch vom internen Takt abhängig? 
Normalerweise besitzt der doch einen Daten- und einen Enable-Eingang. 
Mit einem auf den Dateneingang zurückgekoppelten Ausgang und OUT_1 am 
Enableeingang ließe sich auch ein sauberes Signal mit einem Takt 1/14 
generieren. Meckert aber wieder der Compiler.

Gruß oki

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ist ein Latch auch vom internen Takt abhängig?

Nicht unbedingt

>Normalerweise besitzt der doch einen Daten- und einen Enable-Eingang.
>Mit einem auf den Dateneingang zurückgekoppelten Ausgang und OUT_1 am
>Enableeingang ließe sich auch ein sauberes Signal mit einem Takt 1/14
>generieren. Meckert aber wieder der Compiler.

Mit einem Latch kannst du aber keinen Teiler bauen. Der D-Eingang wird 
ja direkt auf den Q-Ausgang durchgeschaltet solange der Clk=1 ist. Da 
fehlt die Flankentriggerung

Autor: Harri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Olaf,

dann bau dir den I14 doch "doppelt" ein, einmal so wie in deinem Plan 
beschaltet für den Reset nach 14 Takten und einmnal wie von mir 
beschrieben für den geteilten 50/50 Taktausgang.

mfg
Harri

Autor: Olaf K. (oki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin alle zusammen!

Wieder mal lieben Dank für eure Mühe.

@helmi1: Ja, du hast Recht. Mein Fehler. ich meine natürlich die 
Rückkopplung des invertierten Signals des Latch-Ausganges auf den 
Dateneingang. Und ja, mit einem Latch kann man natürlich keinen Teiler 
realisieren. Da war ich sicher nicht korrekt in meiner Beschreibung. Mir 
ging es um mein Signalergebnis in der Datei Test.png aus meiner Antwort 
vom 09.11.2009 12:58 (kann man sich auch die fortlaufende Beitragsnummer 
über jeder Antwort des Threads einblenden lassen?). Mein Signal an OUT_1 
liefert ja eigentlich schon einen Impuls an der richtigen Stelle, an der 
OUT_1 jeweils einen Flankenwechsel vornehmen muss um ein sauberes Signal 
zu erhalten. Damit könnte sozusagen der Latch das Signal an OUT_1 in ein 
sauberes 50/50 Signal formatieren. Schaltung wie folgt:

- jetziges Signal OUT_1 wird auf den E-Eingang des Latch,
- Ausgang des Latch auf Ausgangspin GAL und auf Eingang eines Inverters,
- Ausgang des Inverters auf D-Eingang des Latch.

Funktion:
Ausgang Latch Low; Inverter liefert an D-Eingang Latch High; Spike von 
OUT_1 an E führt zur Übernahme des High an den Ausgang des Latch; 
Inverter legt Low an D-Eingang des Latch; nächster Spike führt zur 
Übernahme des Low an den Ausgang des Latch ....

Tja, hat in der Simulation zwar so gefunzt, wurde aber für das FitDesign 
nur mit Fehlermeldungen compiliert. Ich denke, der GAL behandelt intern 
den E-Eingang wie einen Takteingang.

@Harri: Tja, jetzt hast du mich abgehängt. Ich entferne einfach mal mein 
4AND1 auf den Reset der FF und realisiere deinen Schaltungsvorschlag 
direkt. Ich poste dann, was dabei rauskommt. Den Rest habe ich leider 
noch nicht gerafft. Ist bestimmt noch zu früh :-)

Gruß Olaf

Autor: Harald S. (harri)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Moin!

Olaf K. schrieb:
> @Harri: Tja, jetzt hast du mich abgehängt. Ich entferne einfach mal mein
> 4AND1 auf den Reset der FF und realisiere deinen Schaltungsvorschlag
> direkt. Ich poste dann, was dabei rauskommt. Den Rest habe ich leider
> noch nicht gerafft. Ist bestimmt noch zu früh :-)

Wieso willst du das AND entfernen? Das brauchst du doch, damit er nach 
14 Takten wieder von vorne beginnt.

Ich dachte mir das wo wie im Anhang dargestellt. Also deine Schaltung 
komplett so gelassen und nur das AND und Flipflop oben rechts zusätzlich 
eingebaut.
Ich hab es mal mit Eagle nachgebaut, hab kein ispLever hier am PC. Den 
Takt an allen CLK-Pins hab ich nicht eingezeichnet.

mfg
Harri

Autor: Olaf K. (oki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo harri,

erstmal aller besten Dank für deine Schaltung. Das ist echt nett von 
dir. Ich glaub an einigen Enden bin ich zu weit aus der Geschichte raus. 
Auf Grund deiner Beschreibung hätte ich die Schaltung jetzt nicht so 
schnell zusammengebracht.

Leider ist mein Nachmittag so ziemlich ausgebucht, deshalb wird das mit 
dem Test erst heute Abend was. Sobald ich das getestet habe poste ich 
das Ergebnis.

Dank und Gruß oki

[edit] P.S.: So langsam hast du was gut bei mir :-) [/edit]

Autor: Helmut Lenzen (helmi1)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du einen symetrischen Teiler durch 14 brauchst versuch mal diese 
Schaltung hier. Keine Angst vor den vielen Gattern die sind alle im 16V8 
mit drin.

Anbei siehst du auch die Simulation. Im Prinzip kann man sich Zaehler 
mit beliebigen Zaehlverhalten bauen. So habe ich den Q3 Ausgang so 
ausgelegt das er 7 Takte '1' bleibt und 7 Takte '0' bleibt.


Gruss Helmi

Autor: Olaf K. (oki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo helmi1,

auch dir super Dank! Ich werd deine Schaltungsvariante auch gleich heute 
Abend testen (bin bis 20:00 im Büro; also Zeiiiit :-))

Mal schaun, was es wird.

Gruß oki

Autor: Olaf K. (oki)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Harri,

hab doch schon mal zwischendurch Zeit gefunden. War ja auch nicht viel 
zu ändern. Ergebnisse im Anhang. Leider noch nicht das was ich brauche.

Wie versprochen teste ich nachher auch noch helmi's Variante.

Gruß oki

P.S: Wie kann man einen Dateianhang entfernen?

Autor: Olaf K. (oki)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi helmi,

ich habe jetzt deine Schaltung 4 mal neu gezeichnet in dem Glauben ich 
hab einen Fehler gemacht. Die Wave-Forms sehen immer gleich und nicht so 
wie deine aus. Vielleicht kannst du ja einen Fehler finden. Ich seh das 
Problem nicht :-(

Gruß oki

Autor: Harald S. (harri)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Olaf,

ich seh es :-)
Die Gatter an den Eingängen der Flipflops (mit der gebogenen Linie 
links) sollten or-Gatter sein. Du hast alles komplett mit and-Gattern 
gebaut.

mfg
Harri

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Richtig das muessen OR Gates sein.

Du kannst das ganze aber auch als ABEL-File haben.
Dann kannst du dir deinen Lieblingsteiler selber zusammenstellen

MODULE DIVI14

TITLE 'Counter to 14'


   CLK                      pin ;  "CLOCK Eingang
   Q0,Q1,Q2,Q3        pin istype 'reg_d,buffer';

" Phase States
  S0 = ^b0000;
  S1 = ^b0001;
  S2 = ^b0010;
  S3 = ^b0011;
  S4 = ^b0100;
  S5 = ^b0101;
  S6 = ^b0110;
  S7 = ^b1000;
  S8 = ^b1001;
  S9 = ^b1010;
  S10 = ^b1011;
  S11 = ^b1100;
  S12 = ^b1101;
  S13 = ^b1110;


        OUTPUTS = [Q3,Q2,Q1,Q0];

equations
        OUTPUTS.c = CLK;


state_diagram OUTPUTS
  State S0: goto S1;
  State S1: goto S2;
  State S2: goto S3;
  State S3: goto S4;
  State S4: goto S5;
  State S5: goto S6;
  State S6: goto S7;
  State S7: goto S8;
  State S8: goto S9;
  State S9: goto S10;
  State S10: goto S11;
  State S11: goto S12;
  State S12: goto S13;
  State S13: goto S0;


END

Gruss Helmi

Autor: Olaf K. (oki)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Moin alle zusammen!

@harry: Ups, ja richtig, hab ich im Eifer übersehen. Ich hab jetzt alle 
Gatter auf OR geändert. Leider ist das Ergebnis noch niederschmetternder 
als vorher. Grafiken im Anhang. Ich merke auch, dass ich momentan 
einfach eure Schaltungen übernehme ohne sie wirklich zu durchdenken. Das 
ist nicht gut. Ich werde jetzt noch mal helmi's Code testen. Wenns dann 
auch nicht klappt sollte ich wohl mal wieder dazu über gehen selber zu 
denken.

Melde mich wieder,

Gruß oki

Autor: Harald S. (harri)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Olaf,

meine Anmerkung zu den Oder-Gattern bezog sich auf Helmis Schaltplan :-)
Schau dir das Bildchen nochmal genauer an.

mfg
Harri

Autor: Olaf K. (oki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Harald S. schrieb:
> Hi Olaf,
>
> meine Anmerkung zu den Oder-Gattern bezog sich auf Helmis Schaltplan :-)
> Schau dir das Bildchen nochmal genauer an.
>
> mfg
> Harri

Oh Mann, man hats nicht leicht, aber leicht hats einen.

Mit deiner Schaltung komme ich irgend wie aber nicht klar.

Dank und Gruß oki

Autor: Olaf K. (oki)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
ok, hab den Fehler beseitigt. Aber das ist doch ein 1/7 Teiler? Ich 
schau mal, ob ich den auf 1/14 erweitert bekomme.

Gruß oki

[edit]Ähhm, ne ist ein 1/14 Teiler. Mann sollte doch etwas weiter als 
bis 10 zählen können. :-) So langsam steige ich durch die Schaltung auch 
durch. Gruß oki [/edit]

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.