Forum: FPGA, VHDL & Co. Intuitive Baustein-Abschätzung


von Sebastian B. (Gast)


Lesenswert?

Hallo,

so nachdem ich meine ersten zwei größeren Projekte VHDL-Technisch in
den Griff bekommen habe muss ich mir langsam einen Kopf über die
benötigte Logik machen.

Ich habe meine Projekte einfach immer in den Spartan3 vom Starterkit
geladen. Zum Beispiel benötigt mein Pulsgenerator %5 von den
vorhandenen Flip-Flop-Slices. Mit anderen Worten der FPGA ist so gut
wie leer.

Eigentlich habe ich gehoft, dass ich  den Pulsgenerator in ein CPLD
klopfen kann. Aber selbst der XC95288 reicht ganz knapp nicht aus. Am
liebsten wäre mir gewesen einen ca. 44-pinnigen CPLD zu benutzen. Die
Platine kann ich selber ätzen und auch bestücken....

Wie ihr bestimmt schon erkannt habt, mir fehlt noch absolut das Gefühl
wie viel ich an Logik benötige, bzw was in z.B. einen XC9536 reinpaßt.

Bitte schreibt jetzt nicht der XC9536 besitzt 36 marcocells...

Lieber wäre mir was Ihr so realisiert habts in einem Baustein.

Es geht mir wirklich nur um eine intuitive Abschätzung.

Vielen Dank,
Sebastian B.

von Uwe Bonnes (Gast)


Lesenswert?

Wenn Du jedes Register mit Namen kennst, dann reicht ein CPLD :-)

von Frank (Gast)


Lesenswert?

Das mit der Intuition hängt stark mit deinem Kenntnisstand zusammen. Da
nutzt es dir auch nix, wenn ein Crack der Materie dir sagt er hat
Projekt X mit diesem oder jenem Bauteil hinbekommen. Wenn es sich um
ein knappes Projekt hadelt, dann kannst du unter Umständen jahrelang
dein Glück versuchen eh du auf den passenden Gedanken kommst um sowas
auch mit diesem Teil hinzubekommen. Erst wenn deine eigene Erfahrung
und dein Wissen dir eine eigene Intuition zukommen lässt, hast du was
davon.

bye

Frank

von Sebastian B. (Gast)


Angehängte Dateien:

Lesenswert?

Naja, also ich habe mal ein wenig rumexperimentiert mit meinen ersten
VHDL Codes. Zum Beispiel ein einfacher 8 Bit Counter, mit
vorgeschalteten 4Bit-Frequenzteiler (siehe Anhang) verbraucht 1/3 der
gesamten Resourcen des XC9536. Wenn ich jetzt noch den Freqeunzteiler
auf auf 20Bit erhöhe, damit ich auch was auf dem Testboard erkennen
kann (1Mhz Quarz) dann ist der CPLD XC9536 voll.
Also ich habe das Gefühl, dass ein so kleiner CPLD hauptsächlich als
7400 7401 Ersatz gedacht ist. Komplexere Entwürfe passen wohl nur noch
in die sehr,sehr großen CPLDs.
FPGAs scheinen um ein vielfaches größer als CPLDs zu sein.

von Uwe Bonnes (Gast)


Lesenswert?

Sebastian, Du hast gerade die Abschaetzung gemacht!
Ein 8-bit Counter braucht 8 Register, der 4 Bit Teiler braucht 4
Register macht zusammen 12 Register, das ist 1/3 der verfuegbaren 36
Register.

von Michael F. (grisu901)


Lesenswert?

Man kann auch ordentliche Sachen in einen kleinen Käfer packen. Ich hab
da z.B. mit der Umwandlung zweier serieller Datenströme in zweimal SPI
zu tun gehabt. Lastete Anfangs ein 64 Makrozellen Lattice CPLD voll aus
und hat nach meiner Optimierung in er 32er gepaßt. Man kennt aber danach
jede Makrozelle beim Namen ;-)

Die Funktionen der Schaltung ware:
- Erkennung einer eindeutigen 16-Bit Folge in einem seriellen
Datenstrom
- Abwarten der ersten 256 Rahemsynchronisationen, bevor CPLD richtig
aktiv wird
- Ausblenden bestimmter Positionen innerhalb der Datenströme über 7 Bit
Zähler
- Erzeugung der Slave-Select Signale für zweimal SPI abhängig von der
Position innerhalb der Datenströme
- Erzeugung eines Signals, daß für den nachgeschalteten Controller
Daten kommen
- Pegelwandlung für 3 Signale
- Kleinkram


Wenn man es geschickt programmiert, kann man staunen, was alles in ein
CPLD paßt. Als 74er Ersatz würde ich dann eher ein GAL nehmen.

FPGAs sind übrigens nicht nur (normalerweise) größer, als CPLDs,
sondern eigentlich ganz was anderes und deshalb nur schwer mit CPLDs zu
vergleichen.

von FPGAküchle (Gast)


Lesenswert?

CPLD: Platz abschätzung:
-Im gegensatz zum FPGA bestimmt die größe der logik die Anzahl der
Pins, nicht unbedingt wieviel Pins du wirklich brauchst. grund dafür
ist das feste verhältnis von Pinanzahl zu macrozellen (logikressource).
Dieses verhältnis (Pin: makrozelle) ist je nach typ entweder 1:1 oder
1:2.

-Die anzahl der makrozellen richtet sich hauptsächlich nach der Anzahl
der FF. jede makrozelle hat 1 oder zwei FF. Zähle die FF und du hast
eine gute Näherung für die Anzahl der nötigen Makrozellen.

-die Anzahl der FF richtet sich nach der
 -Anzahl und Codierung (binary,one hot,gray) des Zustäde der FSM
 -anzahl der registerbits
 -Tiefe der Schieberegister
 -Breite der counter

Im gegensatz zu FPGA's ist bei CPLD's auf wenig FF zu optimieren.
Also z.B bei FSM Codierungen nicht one-hot wie für FPGA's sondern
binary verwenden. So brauchst doe für z.B. 12 states 4 statt 12 FF.

-Vorsichtshalber sollte man nach einer solchen Abschätzung der
Makrozellenanzahl den wert um ein Drittel vergrößern. (falls man sich
verzählt hat.


-Für CPLD's sind oft andere Strukturen kleiner als für FPGA's. So
 habe ich ein design mit FF mit synchronen Reset/set (optimal klein für
FPGA) auf asynchronen Set/reset umgeschrieben. Damit ist es kleiner im
CPLD.

-Falls das design zu gross wird, hilft es gelegentlich interne
verbindungen nach draussen zu legen. Also zwei FF in unterschiedlichen
Makrozellen nicht über die interen Switchmatrix zu verbinden, sondern
der Ausgang des einen FF und den Eingang des anderen auf Pins zu legen
und auf dem PCB zu verbinden.


-> Summary: -am besten erst das design schreiben und auf platz
optimieren, dann CPLD ordern. Ansonsten einen CPLD mit (viel) mehr Pins
einplanen. falls dann doch ein kleinerer ausreicht, diesen auf das
möglich kompatible PCB löten. Da die Footprints oft unterschiedlich
sind für unterschiedliche große CPLD's, muss man oft mit
verschachtelten (Konzentrischen) footprints arbeiten. Also innen die
Pads für den kleinsten CPLD, außen die für den größten.


1) Pinanzahl als letztes festlegen

von Sebastian B. (Gast)


Lesenswert?

Danke für Eure Antworten.

Ich musste noch etwas Hardwarebeschreibung nachblättern. Aber jetzt bin
ich doch schon wieder viel, viel schlauer.

Sebastian B. (neuerdings, da Sebastian schon öfters vergeben ist)

von FPGAküchle (Gast)


Lesenswert?

Grad bei Xilinx gefunden:

http://www.xilinx.com/bvdocs/appnotes/xapp444.pdf

Application note zu "CPLD Tricks und Kniffe"

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.