Forum: FPGA, VHDL & Co. CPLD + CAN


von Falk S. (Gast)


Lesenswert?

Hallo,

möchte einen CPLD (CoolRunnerII) mit möglichst wenig Aufwand an den
CAN-Bus anschließen. klappt das mit einem SJA1000? Wieviel
Platz(Macrocells) braucht die Ansteuerung auf dem CPLD?

Viele Grüße
Falk S.

von Max Müller (Gast)


Lesenswert?

Das kommt ganz daran an was für ein Prozessor mit dem CoolrunnerII an
den SJA1000 angeschlossen werden soll.

Die meisten Macrozellen würden beim multiplexen des Busses drauf gehen.
Deshalb dafür lieber extern 2 Bausteine verwenden (245 und 241) und
dahinter eine Tri-state logik aufbauen.
Die Steuerleitungen für die Logikchips und für den SJA1000 dann aber im
Coolrunner.

Bei 5V Technik ist der ATF1502 locker ausreichen (32 Zellen)
Bei 3V würde ich den ispMACH4032 empfehlen.

Die Coolrunner sind mir zu buggie.

von Peter D. (peda)


Lesenswert?

@Max,

"Die Coolrunner sind mir zu buggie."

kannst Du dazu näheres sagen ?

Wir setzen die Coolrunner von Anfang an (Philips) ein und hatten bisher
keinerlei Probleme.

Nur der Übergang von 5V auf 3,3V erforderte eine Layoutänderung
(zusätzlicher Spannungsregler).

Sieht ganz lustig aus auf dem Oszi, der Coolrunner sendet 3,3V high und
kriegt aber 5V high, quasi "Tristate" im wörtlichen Sinne.

Peter

von Max Müller (Gast)


Lesenswert?

DIe Layoutänderung hättest du dir sparen können, wenn du einfach die
ATF15xxAS genommen hättest. Dort gibt es für fast alle Varianten
Pinkompatible Ersatztypen. Einzig der Strom ist ein wenig höher als
beim Coolrunner.

Wenn es um den Strom geht, dann sind aber die ispMACH4000Z noch besser.
Zudem können die direkt als Levelshifter genommen werden, da die
Corespannung nicht umbedingt der I/O Spannung entsprechen muß.
Ebenfalls können die I/O Banke verschieden versorgt werden.
Bei 3,3V ist das ganze auch noch 5V Tolerant
So ist z.B. ein der Core und eine I/O Bank mit 3,3V versorgbar und die
eine oder mehr I/O Banke mir 1,8V

Du kannst dann im Chip 1,8V und 5V Signale logisch verknüpfen und
wieder 1,8V, 2,5V oder 3,3V signale ausgeben :-)

Stichwort Buggie:
Schau dir mal die PCN's bzw. die Errata von Xilinx vom letzten Jahr an
;-) Ist ziemlich versteckt und nur angemeldet zu finden!

Ich hatte die erwähnten Fehler (Power-up Verhalten)live im Design.
Durch den notwendigen Spannungsregler für 3,3V war das ganze sehr
empfindlich (3064, aber die anderen haben auch den Serienfehler seit
Philips).
Seit Ende letzen Jahres wurde extra ein Kommentar ins Datenblatt
aufgenommen.
Schau dir mal deine Versorgung 3,3V am Coolrunner beim Einschalten an.
Du wirst eine Einbruch bei ca. 1,4V sehen. Dort wird die Konfiguration
vom EEPROM ins SRAM kopiert. Das ganze war (ist) Buggie und der Chip
scheint teilweise zu funktionieren, aber eben auch teilweise ist die
FUnktion definitive nicht gewährleistet. Es ist sogar so, das erst ein
neuer Power-Down, Power Up Cycle das ganze wieder richten kann. Dieser
Fehler wurde (sollte) im Frühjahr mit der C-Revision  beim 3064 behoben
werden. Doch das ging teilweise Schief, so das bei einem Power Glich
ebenfalls teilweise die Konfiguration verloren gehen kann. Folgen müss
jeder für sich selber abschätzen.
Also nicht wundern, wenn ein Coolrunner Design (mit altem Silizium;
neues kommt erst bis Mitte 2005) ab und zu nicht richtig funktioniert.

Gruß

Max.

P.S. Xlinix macht daraus ziemlich ein Geheimnis und falls man die
richtigen Dokumente findet, wird ausdrücklich darauf hingewiesen,das
das alles nur bei den Coolrunnern so ist. Das ganze entspricht aber bei
ALLEN Xilinx Produkten einem SEU.

von Peter D. (peda)


Lesenswert?

@Max,

vielen Dank für diese Informationen.

Ich habe damit aber bisher keine Probleme gehabt. Die Geräte enthalten
ein normales 5V Schaltnetzteil.
Danach kommt für die 3,3V ein LDO-Spannungsregler (max 250mA) und muß 1
oder 2 Stück XCR3128 versorgen.

Die Idee, bei zukünftigen Problemen den Atmel zu probieren, werde ich
mir merken. Aber warscheinlich wird der dann kein Abel können und der
Code muß umgeschrieben werden.

Eine andere komische Sache beim Umstieg 5V->3,3V war noch, daß die
neuen Typen weniger Produktterme haben. D.h. was früher in den 5064
gepaßt hatte benötigt nun einen 3128.


Peter

von Max Müller (Gast)


Lesenswert?

Das Netzteildesign sah und sieht bei uns ähnlich aus.

Den Fehler haben wir auch zuerst nur bei einem 3064 gefunden.
In einen anderem Design mit einem 3128 hatten wir ein dubioses
Latchup-Phanomen an einem Eingang, der zu Ausgang wurde.

Den systematischen Fehler im Coolrunnerdesign ist aber in allen typen
der XPLA3 Familie enthalten.

Das mit den scheinbar weniger Produkttermen ist mir auch schon
aufgefallen. Das ganze liegt aber an der verschiedenen P-Term
verfügbarkeit bei den Makrozellen.
Gib mal die Pins frei und es wird wieder klappen.

Die Amel haben noch einen zusätzlichen vorteil :-)
Sie haben eine Funktion, die pro Macrozelle zwei Funktionen erlaubt.
Stichwort: Logicdoubling

Die kostenlose Entwicklungsumgebung von Atmel erlaubt nur Cupl und
VHDL. Bei VHDL ist hat das problem, das einzelne Macrozellen schlecht
ausgewählt werden können. Die Pins sind via attribute direkt im VHDL
File einstellbar.

Schau dir  aber auch mal die ispMACH4000 Famile von Lattice an.
Die ist noch ein wenig moderner.

Gruß

Max

von Peter D. (peda)


Lesenswert?

@Max,

die Produktterme sind nicht nur scheinbar weniger, sondern real. Die
alten konnten nämlich Produkttermsharing (21 je Logikblock).

Ich hab alle möglichen Optimierungen versucht, ohne Erfolg.

Selbst im 3128 ist nicht mehr viel Luft. Ich wollte ne kleine
Erweiterung unterbringen, da krachte es schon. Erst nachdem ich einige
Gleichungen optimieren konnte, indem ich die Latchfunktion (.le)
verwendete gings gerade noch so rein (die Latchfunktion spart die zur
Selbsthaltung notwendige Rückführung ein).

Das man tunlichst erst den Fitter ranlassen sollte und erst danach das
Platinenlayout machen darf, habe ich auch schon gemerkt. Es ist nicht
weit her mit der groß beworbenen flexiblen Pinwahl.

Z.B. Adreß- und Datenbusse sollte man auf verschiedene Logikblocks
aufteilen, auch wenn dann die Pins nicht mehr nebeneinander liegen.


Peter

von Henrik (Gast)


Lesenswert?

@Max: Könntest du dieses Sheet mal posten? Ich habe gerade ein Design
mit einem XPLA3256 gemacht, aber noch nicht gefertigt. Dieser sollte
eine recht sichheitsrelevante Aufgabe übernehmen, weil ich dachte, dass
da die Wahrscheinlichkeit einer Fehlfunktion geringer ist als bei einem
MC. Wohl falsch gedacht.

Gruß Henrik

von Max Müller (Gast)


Lesenswert?

Ihr könnt es ja selber lesen.

http://www.xilinx.com/bvdocs/notifications/pcn2004-23.pdf

Für die Errata müsst ihr euch leider bei Xilinx registrieren, da sie
meinen das die Daten vertrauchlich zu behandeln sind.

Das ganze ist dort ziemlich unscheinbar. Aber ich kann euch sagen, das
wegen diesem Fehler bei uns himmel und hölle in bewegung gesetzt wurde
um die Zielhardware zurückzuholen und zu modifizieren.
Xilinx gibt fehler in der Hardware erst zu, wenn Sie wirklich nichtmehr
anders können, obwohl teilweise die Fehler bei ihnen schon bekannt
sind.

Gruß

Max

von Max Müller (Gast)


Lesenswert?

Ach ja wenn ich gerade die anderen Beiträge lese.

Ihr (Peter) wisst, das der MAX7000S auch kompatible zum Coolrunner der
PZ5xxx Familie (Die alte 5V Familie) ist bzw war.
Ich hab am Anfang nach dem Xilinx die 5V Coolrunner abgekündigt hatte
erst auf den MAX7000S gesetzt, der war dann aber zu teuer.
Und wir sind auf den ATF15xxAS umgestiegen.
Das ganze war am Anfang mit Atmel auch ein Kampf, da die
Entwicklungsumgebung ein fertiges VHDL Design nicht fitten wollte
(Systemfehler der Software). Das ging dann so weit, das ich die Altera
SW genommen habe und via Tool von Atmel das Fusefile (Pof-File) direkt
in ein Jedec-File für den ISP-Programmer umgesetzt habe.

Nur so am Rande erwähnt, falls jemand viel Geld übrig hat.

Gruß


Max

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.