Forum: FPGA, VHDL & Co. Xilinx Coolrunner CPLD


von Carl (Gast)


Angehängte Dateien:

Lesenswert?

Gerade eben habe ich ein Xilinx CPLD-Board mit dem XC2C256 in meiner 
Sammlung gefunden, dass ich vergessen hatte:

https://store.digilentinc.com/coolrunner-ii-cpld-starter-board-limited-time/

Jetzt frage ich mich gerade, was ich Nützliches damit tun könnte. Wenn 
ich es richtig sehe, hat es nur 256 Macrozellen mit je einem FF. Im 
Vergleich zu einem FPGA scheint mir das ziemlich wenig.
Das Beispielprogramm kann aber das 7 Segmentdisplay mit Minuten und 
Sekundenanzeige steuern, sowie parallel einen Text auf einem 
angesteckten LCD ausgeben, aber dann sind 70% der Blöcke benutzt.

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

Carl schrieb:
> Jetzt frage ich mich gerade, was ich Nützliches damit tun könnte.

Wenn du nicht ad hoc selber eine Idee hast, dann kannst du es vermutlich 
nicht nutzen.

Ich wüsste, was ich damit bauen würde.

von Carl (Gast)


Lesenswert?

>Ich wüsste, was ich damit bauen würde.

Das bezweifle ich.

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

Warum? Normalerweise hat man 1000 Ideen und nur zu wenig Zeit.

Das Sinnvollste scheint mir eine I2C-Messwert-Erfassung mit wechselnder 
Anzeige und Weitergabe der Werte an einen PC, der damit automatisiert 
mehrere I2C-Sensoren (oder auch SPIs) auslesen kann.

Ich würde sagen 2 I2C-Busse, 1 x SPI und 1x UART. Das kann man immer 
brauchen.

von Peter Petersson (Gast)


Lesenswert?

Wir haben damit einen Geschwindigkeitsmesser mit zwei Lichtschranken 
realisiert, damals im 2. Semester.

von Ale (Gast)


Lesenswert?

Ich würde den Nibbler drin bauen. Damals habe ich es für den 95144 
angepasst, in 256 Macrozellen soll es locker noch ein paar Stack 
Register mehr haben können.

von 🍅🍅 🍅. (tomate)


Lesenswert?

Früher hat man Geräte mit PALs und GALs gebaut, die sogar funktioniert 
haben. Und die Dinger waren noch um einiges beschränkter als ein 
XC2C256.

von Thomas W. (diddl)


Lesenswert?

Als die ersten CPU Boards komplexer wurden, haben CPLD ganze TTL Gräber 
weg rationalisiert.


Heute kann man damit Retro Computer wie den VC-20 mit (für damals) 
Unmengen von Speicher ausstatten. Zb. den VC20 mit dem Fe-3


VC-20 :: 3,5KB RAM, 20K ROM

VC-20 + FE3 :: +512KB RAM +512KB EEprom +2GB SD karte




Link: https://de.wikipedia.org/wiki/Final_Expansion

von Carl (Gast)


Lesenswert?

Ale schrieb
>Ich würde den Nibbler drin bauen. Damals habe ich es für den 95144
>angepasst, in 256 Macrozellen soll es locker noch ein paar Stack
>Register mehr haben können.

Einen Prozessor mit dem Board zu machen, wäre ein lustige Idee. Auf dem 
Board gibt es auch ein 4MBit Serial Flash, welches über SPI angebunden 
ist. Ob man das auch verwenden könnte?

von W.S. (Gast)


Lesenswert?

Carl schrieb:
> Jetzt frage ich mich gerade, was ich Nützliches damit tun könnte. Wenn
> ich es richtig sehe, hat es nur 256 Macrozellen mit je einem FF. Im
> Vergleich zu einem FPGA scheint mir das ziemlich wenig.

Aber dafür hat man vor jedem FF einen fetten Block, wo sowas wie 
36fach-AND's drinstecken. Bei den LUT's im FPGA hast du traditionell nur 
4 Eingänge.

CPLD's sind eben durch die großen AND's geradezu prädestiniert für große 
und schnelle Synchronzähler. Die kleineren Coolrunner können damit bis 
in den Bereich über 700 MHz kommen, was für ein FPGA illusorisch ist - 
es sei denn, man macht darinnen nur Ripple-Zähler.

Ich hab mit CPLD's schon Grafikdisplay-Ansteuerungen, Frequenzzähler 
(s.o.), DDS-Generatoren und eben auch "Glue"-Logik gebaut. Mit 256 
Makrozellen kann man mit sowas erstaunlich viel machen.

W.S.

von Frank B. (frankman)


Lesenswert?

Verzweifelter Hilferuf!

Hallo zusammen, ich kapere gerade diesen etwas älteren Thread. Ich habe 
in recht vermurkstes Projekt mit dem XC2C512 Coolrunner und bin - als 
kompletter Coolrunner Anfänger - leider komplett am Ende mit meinem 
Latein.

Ich habe ein extrem merkwürdiges Verhalten, was meine Eingänge betrifft 
und bin leider nicht in der Lage, das irgendwie hinzubiegen.

Gibt es vielleicht hier jemanden, der sich sehr gut bzw. extrem gut mit 
den Coolrunner Chips auskennt, und mir vielleicht helfen kann?

Da es eilig ist und nicht als "Hobbyprojekt" läuft, würde ich mich sehr 
über eine Nachricht - gerne auch mit Nennung eines Stundensatzes - 
freuen.


Im speziellen benötige ich Hilfe bei:
Inbetriebnahme der ISE.
Organisation von einem bestehenden Projekt.
Erstellen von Constraints, im speziellen IOSTANDARD.
Kurze Einweisung Debuggen, Syntese und Flashen des ganzen.

Weitergehende Details kann ich hier leider nicht öffentlich machen.
Ich würde alles entsprechend über Mail oder PM abhandeln.

Vielen Dank schon einmal im voraus.
Viele Grüße
Frank

von wendelsberg (Gast)


Lesenswert?

Frank B. schrieb:
> Im speziellen benötige ich Hilfe bei:
> Inbetriebnahme der ISE.
> Organisation von einem bestehenden Projekt.
> Erstellen von Constraints, im speziellen IOSTANDARD.
> Kurze Einweisung Debuggen, Syntese und Flashen des ganzen.
>
> Weitergehende Details kann ich hier leider nicht öffentlich machen.
> Ich würde alles entsprechend über Mail oder PM abhandeln.

Also kommerziell.
Da solltest Du Dich auf 4-stellige Tagessaetze einrichten.

wendelsberg

von Gerhard H. (ghf)


Lesenswert?

Was mich bei Coolrunnern neulich genervt hat, war, dass defaultmäßig 
überall Keeper an den Eingängen vorgesehen waren. Hat dazu geführt, dass 
das Einlesen von ein paar Schaltern nach GND mit programmierten Pullups 
sich ausgesprochen merkwürdig verhalten hat. Mit externen 1K-PullUps war
dann alles in Ordnung. Nein, keine Warnung wie bei 2V5 und 3V3 in einer 
Bank.

Dieses "feature" lässt sich irgendwo ausschalten; nein, nicht im user 
constraints file. Irgendwo bei den Optionen für den Kompilationsschritt.

Die IO-Konfiguration mache ich jetzt komplett im VHDL-File, dann habe 
ich alles was ich brauche in einer Datei. So viel ist in einem 
Coolrunner sowieso nicht drinnen.
Jetzt geht's auch mit den eingebauten PullUps, ohne die Brutalo-1K.

Man kann auch 1000 Signale einem einigen Pin zuweisen, das ist der ISE 
egal. Aber ansonsten bekommt man dermaßen viele sinnlose ISE-warnings, 
dass man eigentlich kaum mehr hinsieht.

Gruß,
Gerhard

: Bearbeitet durch User
von Gut Gekaut ist halb gekackt (Gast)


Lesenswert?

Gerhard H. schrieb:
> Dieses "feature" lässt sich irgendwo ausschalten; nein, nicht im user
> constraints file. Irgendwo bei den Optionen für den Kompilationsschritt.

Zu faul oder zu blöde, die doc für die Software zu lesen ?!?!

https://www.xilinx.com/support/documentation/sw_manuals/xilinx14_2/devref.pdf 
p. 282

cpldfit -terminate [float|keeper|pullup]

Aber was will man auch von Einem erwarten, der beim fit von 
"Kompilieren" labert ...

von Gut Gekaut ist halb gekackt (Gast)


Lesenswert?

Gerhard H. schrieb:
> Die IO-Konfiguration mache ich jetzt komplett im VHDL-File, dann habe
> ich alles was ich brauche in einer Datei.

Nein, hast Du nicht. Es gibt immer noch prios beim Verarbeiten der 
Settings, wenn an den anderen regulären Stelle (bspw .pcf, .ucf, 
commandline-optionen, etc.) was anderes steht.
https://www.xilinx.com/support/documentation/sw_manuals/xilinx11/cgd.pdf 
p. 29+

>Aber ansonsten bekommt man dermaßen viele sinnlose ISE-warnings,
>dass man eigentlich kaum mehr hinsieht.

Selber Schuld. Und man sollte nicht wie beim C-Kompilieren auf die 
compile-warnings starren, sondern sich die Reportfiles wie *.rpt 
durchlesen. Da steht welches pin-Eigenschafte final configuriert werden.

von Gerhard H. (ghf)


Lesenswert?

Gut Gekaut ist halb gekackt schrieb:
> Gerhard H. schrieb:
>> Die IO-Konfiguration mache ich jetzt komplett im VHDL-File, dann habe
>> ich alles was ich brauche in einer Datei.
>
> Nein, hast Du nicht. Es gibt immer noch prios beim Verarbeiten der
> Settings, wenn an den anderen regulären Stelle (bspw .pcf, .ucf,
> commandline-optionen, etc.) was anderes steht.
> https://www.xilinx.com/support/documentation/sw_manuals/xilinx11/cgd.pdf
> p. 29+
>
>>Aber ansonsten bekommt man dermaßen viele sinnlose ISE-warnings,
>>dass man eigentlich kaum mehr hinsieht.
>
> Selber Schuld. Und man sollte nicht wie beim C-Kompilieren auf die
> compile-warnings starren, sondern sich die Reportfiles wie *.rpt
> durchlesen. Da steht welches pin-Eigenschafte final configuriert werden.

Was für ein gequirltes Gekautes.

Wenn der Compiler mit den gewählten Voreinstellungen das spezifizierte 
Verhalten nicht implementieren kann, dann hat der das als error zu 
melden und nicht clamheimlich was anderes zu bauen und als Erfolg zu 
melden. Ein Geständnis auf dem Grundbuchamt von Alpha Centauri zu 
hinterlegen zählt nicht.

Und Ihr Benutzername ist sehr passend gewählt.

: Bearbeitet durch User
von Gut Gekaut ist halb gekackt (Gast)


Lesenswert?

Gerhard H. schrieb:
> Wenn der Compiler mit den gewählten Voreinstellungen das spezifizierte
> Verhalten nicht implementieren kann, dann hat der das als error zu
> melden und nicht clamheimlich was anderes zu bauen und als Erfolg zu
> melden.

Aber es ist eben ein kein compiler sondern eine kette verschiedener 
tools, aka toolchain. Und eben keine direkte Hochsprache -> Mnemonic 
Translation sondern eine unterspezifizierte Optimierungsaufgabe mit 
Randbedingungen aka constraints ... und das was hinten rauskommt ist 
auch kein dummes executables das einach so durch load and run geprüft 
werden kann ...

> Ein Geständnis auf dem Grundbuchamt von Alpha Centauri zu
> hinterlegen zählt nicht.

Nein der report liegt nicht hinter einer Tür mit dem Schild "Beware of 
the leopard" sondern im output-verzeichniss wie in der doc beschrieben. 
Sogar "human readable", aber wenn der Wille fehlt und man statt doc 
lieber im Hitchhiker Guide blättert ....

>Und Ihr Benutzername ist sehr passend gewählt.

Na dann fang mal an die docs durchzukauen, dann kannst du deinem 
"compiler" auch mal was verdauungsgerechtversetzt und musst Dich nicht 
durch dessen angesäuertem Gekotze quälen ... SCNR

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.