Schönen guten Tag,
ich muss in den nächsten Monaten "etwas" mit dem Lattice ispLSI1016e
bauen. Dabei handelt es sich um einen "Programmable Logic Device" (PLD).
Datenblatt liegt ist im Anhang.
Dieses "etwas" ist nicht genau definiert, was heißen soll das mir
theoretisch gesehen die Welt offen steht. Das Projekt sollte lediglich
im Bereich des machbaren sein. Also sollte es die Fähigkeiten eines 18
Jährigen Schüler eines Technischen Gymnasiums nicht übertreffen und auch
mehr als 3 Lattices sollten nicht im Spiel sein.
Hier mal einige Beispiele von Projekten meiner Freunde:
- Einen einarmigen Bandit der zufällig 4 Zahlen generiert
- Ein Codeschloss
- Eine Ampelschaltung einer Kreuzung
- Ein vier-gewinnt Spiel
Nun, da ich die qual der Wahl habe, fällt mir leider überhaupt nichts
ein. Mein Vorschlag, einen Taschenrechner zu bauen, wurde "leider" (eher
zum glück musste ich feststellen) abgelehnt. Und aus diesem Grund wende
ich mich an euch. Wie gesagt wurde mir nichts von meinen Lehrern
vorgegeben. Aber eventuell finden sich hier ein oder mehr Leute die
schon eine ähnlich Aufgabe bewerkstelligen mussten. :) Inspirationen
werden auch gerne gesehen...
Mit freundlich grüßen,
Patrick
Wenn es ganz simpel sein soll, einen elektronischen Würfel.
Ein wenig anspruchsvoller wäre vielleicht ein Wecker
Oder noch anspruchsvoller, vorausgesetzt, du hast noch ein bisschen
Muse, auch Peripherie drumrumzubasteln, wäre vielleicht ein
chromatisches Stimmgerät, wobei ich denke, dass das den Rahmen einer
TG-Arbeit eventuell sprengen könnte.
Also ich fänd nen Wecker ganz nett..
In ein 1016 passt nicht viel rein. Kein Taschenrechner, keine Uhr. Ich
hab mal eine BIOS Fehlercodeanzeige mit 7 Segment decoder damit gebaut,
aber heute haben PCs keine ISA slots mehr. Ein Codeschloss geht, eine
Ampel auch.Aber die Dinger sind schnell, die können einen Datenstrom on
the fly umcodieren, wurde für PlayStation MODchips verwendet,
Macrovision decoder, SPDI/F Bitänderung.
MaWin schrieb:> In ein 1016 passt nicht viel rein
16 GLBs a 18 Inputs und 4 Outputs und maximal 96 Register und er darf
bis zu drei solcher Bausteine verwenden...
soooo wenig ist das auch nicht, finde ich
Mal die Register für ne Uhr betrachtet:
Teiler für Uhrenquarz: 15 Register
Sekundenzähler 0..59 (unsichtbar) : 6 Register
Minutenzähler 0..59 (sichtbar): 6 Register
Stundenzähler 0..23 (sichtbar): 5 Register
Summe Register: 32
Schlumpf schrieb:> Ein wenig anspruchsvoller wäre vielleicht ein WeckerSchlumpf schrieb:> Teiler für Uhrenquarz: 15 Register> Sekundenzähler 0..59 (unsichtbar) : 6 Register> Minutenzähler 0..59 (sichtbar): 6 Register> Stundenzähler 0..23 (sichtbar): 5 Register>> Summe Register: 32
Also wenn ich ehrlich bin, haben wir, soweit ich weiß, noch nicht mit
Register gearbeitet. Vielleicht hätte ich dazu sagen sollen, das wir mit
der Programmiersprache ABEL arbeiten. Sie ist meiner Erachtens sehr
einfach. Wahrheitstabellen, Folge-Zustandsdiagramme,
When...then...else-Bedingungen, Zuweisungen... Hauptsächlich haben wir
mit den Logikgattern (and, or, xor...) und D-FlipFlops gearbeitet.
Aber das mit dem Wecker halte ich persönlich trotzdem für keine
schlechte Idee. Einen Lattice verwende ich als Zähler (oder
Frequenzteiler) der 1Hz zuerst auf 1/60 Hz umwandelt (Also 1 Takt pro
Minute) und dann bis 1.440 zählt (24h*60min). Mit dem anderen kann ich
manuell bis 1.440 Zählen und ein dritter Lattice vergleicht die dann die
Zahlen (bzw. Eingänge) miteinander.
Also, für mich persönlich klingt das nicht schlecht. Aber ich versuch
das erstmal mit einem Logic Simulator (Logisim) zu simulieren.
dein Freund der das vier-gewinnt in ABEL programmieren will ... holla..
viel Spaß.
Ein Zufallsgenerator ist übrigens ohne externe Bauteile auch "quatsch",
genau zufällig passiert hier nix.
Vorschlag:
Kennst du noch Modeleisenbahnen?
Implemenitier ne Blockstellensteuerung, das lässt sich dann auch noch
aufbohren, ist nicht so langweilig wie ne Ampel und lässt sich im
Zweifel gut simulieren
Cheers
Patrick schrieb:> Also wenn ich ehrlich bin, haben wir, soweit ich weiß, noch nicht mit>> Register gearbeitet
Register ist keine "Programmiersprache", sondern Flip-Flops, die im
"Lattice" zur Verfügung stehen.
Hat euch euer Lehrer im Unterricht nicht erklärt, was so ein PLD macht
und wie es aufgebaut ist? Denn das gehört zum Verständnis BEVOR du
anfängst, mit ABEL irgendwas zu beschreiben..
Uiuiui, die alte Kiste gibt es noch?
Mit dem Viech habe ich vor 15 Jahren meine Diplomarbeit gemacht :-)
Franke schrieb:> Ein Zufallsgenerator ist übrigens ohne externe Bauteile auch "quatsch",> genau zufällig passiert hier nix.
Mit einem rückgekoppelten Inverter müsste man auch bei diesem Chip
Erfolg haben, denke ich. Einfach mit dessen Takt bis einige hundert
zählen und dann das unterste Bit mit dem externen Takt abtasten.
Digitaler Rauschgenerator im FPGA
Ich habe im ispLSI1016 (ohne E) einen vierstelligen Frequenzzähler
untergebracht, mit LCD-Anzeige. Ein 1MHz Quarzoszillator war noch dran,
die Wechselspannung mit EXOR für das Display war natürlich auch drin.
Die Anschlüsse waren so verteilt, dass eine einseitige Leiterplatte
ausreichte. Das ganze mit Lattice Synario/Abel als Schematic gemalt.
Durch die Kapazität des Displays gab es eine Spannungsverdopplung nach
Art der ICL7660 Spannungswandler, das führte zu verschmierter
Darstellung. Ein Belastungswiderstand an jedem Anschluß hat das kuriert.
Bei der gewaltigen Stromaufnahme dieser alten CPLDs spielte es auch
keine Rolle mehr.
Die Zählfrequenz ging etwas über 100 MHz mit dem 80 MHz-Typ.
Wenn ich die Unterlagen noch finde, werde ich sie hier reinstellen.
Das ganze sollte in einem Wobbelsender als "Quarzmarke" verwendet werde.
Daher ein "Start"-Eingang, der auf der X-Achse verschiebbar getriggert
wird und ein "Gate out"-Ausgang, der zum Zählen den Wobbelvorgang
anhalten kann.
Schlumpf schrieb:> Teiler für Uhrenquarz: 15 Register> Sekundenzähler 0..59 (unsichtbar) : 6 Register> Minutenzähler 0..59 (sichtbar): 6 Register> Stundenzähler 0..23 (sichtbar): 5 Register
Ich würde dann aber zur einfacheren Darstellung die einzelnen Stellen
der Stunden und Minuten im BCD-Code zählen. Denn um von einer Zahl wie
23 auf die beiden Dezimalstellen für die Anzeige zu kommen, da ist doch
einiges an Aufwand nötig. Damit ergibt sich:
Minutenzähler 0..59 (sichtbar): 8 Register
Stundenzähler 0..23 (sichtbar): 8 Register
Summe Register: 37