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
>...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
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
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
> 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.
@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
@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
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
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
Es gibt doch für GALS auch die guten alten GAL-Assembler. Die füttert man mit einer Equation-Datei der Art:
1 | Gal16V8 |
2 | Time-stamp: "08.03.09 08:30 AW_GAL_Quad_Split.eqn klaus@wachtler.de" |
3 | Quad-Split |
4 | AnyWare Klaus Wachtler |
5 | |
6 | Clk SELECTA SIGNALA SELECTB SIGNALB SELECTC SIGNALC SELECTD SIGNALD GND |
7 | /E SPLIT1D SPLIT0D SPLIT1C SPLIT0C SPLIT1B SPLIT0B SPLIT1A SPLIT0A VCC |
8 | |
9 | SPLIT0A = /SELECTA * SIGNALA |
10 | |
11 | SPLIT1A = SELECTA * SIGNALA |
12 | |
13 | SPLIT0B = /SELECTB * SIGNALB |
14 | |
15 | SPLIT1B = SELECTB * SIGNALB |
16 | |
17 | SPLIT0C = /SELECTC * SIGNALC |
18 | |
19 | SPLIT1C = SELECTC * SIGNALC |
20 | |
21 | SPLIT0D = /SELECTD * SIGNALD |
22 | |
23 | 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.
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! :-)
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
"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 ;)
"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.
@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
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.
>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.
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
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
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).
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
>Oder sehe ich das falsch?
Das siehst du richtig. Für diesen Teil muss Olaf sich auch noch was
einfallen lassen.
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
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
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:
1 | FIT Generic Device Fitter |
2 | ispLEVER Classic 1.3 Copyright(C), 1992-2005, Lattice Semiconductor Corporation. All rights reserved |
3 | Portions Copyright(c), 1992-1999, Vantis Corporation |
4 | Portions Copyright(C), 1993-1998, Data I/O Corporation |
5 | Portions Copyright(C), 1997-1998, MINC Washington Corporation |
6 | Portions Copyright(C), Alan Phillips, Lancaster University Computer Centre 1992-1998 |
7 | Input file: 'sipletest.tt2' |
8 | Note 4200: Nodes in 'sipletest.tt2' file have been replaced with pins. |
9 | Device 'p16v8' |
10 | Note 4161: Using device architecture type P16V8R. |
11 | Note 4046: Signal N_11 (which has no OE) has been |
12 | assigned to pin 15 (which has pin OE). |
13 | Note 4046: Signal N_8 (which has no OE) has been |
14 | assigned to pin 14 (which has pin OE). |
15 | Note 4046: Signal N_10 (which has no OE) has been |
16 | assigned to pin 13 (which has pin OE). |
17 | Note 4046: Signal OUT_2 (which has no OE) has been |
18 | assigned to pin 12 (which has pin OE). |
19 | Design FITS |
20 | Pin-assigned pla: 'sipletest.tt3' |
21 | |
22 | FIT complete. Time: 1 second. |
23 | |
24 | 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
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
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
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
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
>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
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
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
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
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]
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
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
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?
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
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
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
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
Hi Olaf, meine Anmerkung zu den Oder-Gattern bezog sich auf Helmis Schaltplan :-) Schau dir das Bildchen nochmal genauer an. mfg Harri
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
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]
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.