Hallo, ich möchte zum ersten Mal einen CPLD einsetzen, um zahlreiche 74-ICs zu ersetzen. Allerdings verstehe ich die Aufteilung in Funktionsblöcke nicht so richtig. Wenn ich etwa einen STD_LOGIC_VECTOR(7 downto 0) habe, sollen/müssen dann alle Signale den Pins innerhalb des gleichen FBs zugewiesen werden? Oder gilt das eher für die Beziehung zwischen Eingangs- und Ausgangssignalen? Also angenommen, ich berechne C <= A and B, sollen dann die Pins von A, B und C im gleichen FB liegen?
Ich würde mich erst mal nicht drum kümmern. Beschreibe Dein 74-er-Grab geeignet in VHDL, simulier das Ganze und wenn es passt synthetisierst Du es. Dann findest Du raus ob es passt oder nicht. Sich um die CPLD-Internas zu kümmern macht erst dann Sinn, wenn Du beim obenstehenden Vorgehen Probleme hast, z.B. wenn Du das Timing nicht zukriegst.
Und wie gehe ich mit unbenutzen Pins um? Zum einen gibt es solche, die gar nicht verbunden sind. Laut Xilinx soll man diese auf Masse legen und mit UPG deklarieren, richtig? Aber was mache ich mit Pins, die an einem Signal hängen, aber intern nicht (mehr) benötigt werden und von ISE herausoptimiert werden? Ich würde nämlich gerne ein paar Pins als "Reserve" halten. Kann man diese einfach ignorieren?
larsp schrieb: > Und wie gehe ich mit unbenutzen Pins um? Beschalte Sie als Ausgang. Oder beschalte sie als Eingang und lege sie auf definiertes Potential. > Laut Xilinx soll man diese auf Masse legen und mit UPG deklarieren Welche denn? Welches CPLD? > Aber was mache ich mit Pins, die an einem Signal hängen, aber intern > nicht (mehr) benötigt werden und von ISE herausoptimiert werden? Was ist denn dann extern an diesem "Signal"? > Ich würde nämlich gerne ein paar Pins als "Reserve" halten. Wie gesagt: definiere unbelegte Pins als Ausgang oder lege sie anderweitig auf definiertes Potential. Auf jeden Fall darf kein Eingang unbeschaltet in der Gegend "herumfloaten". Denn dann fließt u.U. ein Strom durch die Eingangstreiberstufe und das CPLD wird warm. > Kann man diese einfach ignorieren? Nur dann, wenn man weiß, was man tut, und das auch will. Aber idR. ist es sicherer, keine "herausoptimierten" Signale zu haben...
Lothar M. schrieb: > larsp schrieb: >> Und wie gehe ich mit unbenutzen Pins um? >> Laut Xilinx soll man diese auf Masse legen und mit UPG deklarieren > Beschalte Sie als Ausgang. Oder beschalte sie als Eingang und lege sie > auf definiertes Potential. Im Xilinx-Dokument "Bulletproof CPLD Design Practices" steht zu "No floating input pins": "[...] The most flexible [way] is to use "user programmable ground" which is available as a software switch. External attachment to ground is also fine." Das zweite hast Du auch gesagt. Beim ersten steht im 9500XL-Datenblatt "use UPG to deliver low driven output signal to internal input". Das verstehe ich nicht: muß ich die Pins mit irgendwas verbinden, oder sind solche Pins Eingänge die immer '0' liefern? > Wie gesagt: definiere unbelegte Pins als Ausgang oder lege sie > anderweitig auf definiertes Potential. Ich habe Pins, die mit einem (sich ändernden) Signal S verbunden sind, welche aber durch Änderungen am VHDL-Code gar nicht mehr benötigt werden. Meine Frage war nun, ob man das einfach als Eingang lassen kann, ob man den Pin aus dem Code entfernt, oder ob es da was besseres gibt. Ginge UPG? Und wo wir gerade bei Pins sind: In Bulletproof und Datenblatt steht, daß man alle Vcc und GND mit 100nF und 10nF entkoppeln soll. Gilt das auch für Vccio?
larsp schrieb: > Ich habe Pins, die mit einem (sich ändernden) Signal S verbunden sind, > welche aber durch Änderungen am VHDL-Code gar nicht mehr benötigt > werden. Meine Frage war nun, ob man das einfach als Eingang lassen kann, > ob man den Pin aus dem Code entfernt, oder ob es da was besseres gibt. > Ginge UPG? Wenn an diesen Pins irgendwelche externe Signale angeschlossen sind, dann darfst du diese Pins und die angeschlossenen Signale natürlich nicht auf Masse legen. Dann sind diese Pins aber auch nicht undefiniert. > Und wo wir gerade bei Pins sind: In Bulletproof und Datenblatt steht, > daß man alle Vcc und GND mit 100nF und 10nF entkoppeln soll. Gilt das > auch für Vccio? Ja. Je nach Last sogar noch eher. Denn aus dieser Spannung müssen externe Lasten getrieben werden.
larsp schrieb: > Wenn ich etwa einen STD_LOGIC_VECTOR(7 downto 0) habe, sollen/müssen > dann alle Signale den Pins innerhalb des gleichen FBs zugewiesen werden? Wenn du was von Xilinx benutzt: Die tatsächliche Zuordnung von Pins zu den Signalen in deiner Logik machst du mit einem User Constraint File (myproject.ucf). Das ist ein simples Textfile, wo du auch die sonstigen Parameter des Pins (Geschwindigkeit, Logikpegel, Schmitttrigger usw.) festschreiben kannst. Ansonsten kannst du mit der ISE oder Webpack immer noch deinen Chip per Schematics programmieren. Beim Übertragen einer TTL-Schaltung in ein CPLD würde ich dieses als erstes ins Auge fassen. Schließlich hast du ja bereits eine Schaltung, wenngleich auch mit 74xx-Gattern. W.S.
Lothar M. schrieb: >> Und wo wir gerade bei Pins sind: In Bulletproof und Datenblatt steht, >> daß man alle Vcc und GND mit 100nF und 10nF entkoppeln soll. Gilt das >> auch für Vccio? > Ja. Je nach Last sogar noch eher. Denn aus dieser Spannung müssen > externe Lasten getrieben werden. OK, verstehe ich. Aber sind die 10nF wirklich nötig (bei weniger als 5 MHz Takt)? Ich habe hier ein XC9572XL-VQ44 Dev-Board vor mir liegen, das hat nur einen Kondensator pro Vcc/Vccio.
larsp schrieb: > Aber sind die 10nF wirklich nötig (bei weniger als 5 MHz Takt)? Da kommt es nicht auf die Taktfrequenz, sondern nur auf die Flankensteilheit an. In der stecken nämlich die zu puffernden hohen Frequenzen. Und natürlich nützt es nichts, wenn der Kondensator über lange Leiterbahnen angeschlossen oder nur irgendwie in der Nähe sitzt. Der gehört dicht ans IC zwischen Vcc und GND.
larsp schrieb: > OK, verstehe ich. Aber sind die 10nF wirklich nötig (bei weniger als 5 > MHz Takt)? Für die Bemessung von Abblockkondensatoren usw. ist nicht die tatsächliche Taktfrequenz entscheidend, sondern die maximale Flankensteilheit. Viel wichtiger als der konkrete Kapazitätswert sind eine induktivitätsarme Anbindung und die interne Induktivität des Kondensators. Heutzutage gibt es aber auch sehr viele hochkapazitive Kondensatoren in Fliegenschissgehäusen, d.h. 0402, 0201 oder gar noch kleiner. Manche ältere Empfehlung stammt daher ggf. aus einer Zeit, in der 100nF auf jeden Fall 0603 oder gar noch größere Gehäusebauformen bedeutet hätten.
larsp schrieb: > Und wie gehe ich mit unbenutzen Pins um? Wenn Du die im Design nicht brauchst, dann lege sie auf GND, allerdings nur, wenn sich das auch mit der realen Beschaltung verträgt.
Um noch mal zur eigentlichen Frage zurückzukommen: "Unable to map all desired signals into function block, FB8, because too many function block product terms are required. Buffering output signal OUT<6> to allow all signals assigned to this function block to be placed." Ich habe wohl zuviele LOC-Vorgaben gemacht. Aber ist die Meldung des Fitters schlimm? Sollte ich das Signal woanders ausgeben?
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.