Forum: FPGA, VHDL & Co. Synchronitäts-Probleme mit CPLD?


von Erik (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Forum

Ich habe vor längerer Zeit mit ISE einmal das Blockschalt-Schema im 
Anhang gezeichnet. Das ganze Kompiliert und in ein XC9572 gebrannt. Es 
hat auf Anhieb funktioniert.

Vor ein paar Tagen habe ich ein paar neue XC9872 gekauft versucht 
dasselbe Projekt wieder zu brennen. Das Brennen und auslesen der CPLD 
funktioniert fehlerfrei, die gewünschte Funktion jedoch nicht.

Es muss wohl am Projekt liegen. Irgendwie gibt es kritische 
Laufzeitunterschiede im CPLD. Kann es sein, dass die Daten bei diesem 
einfachen Design intern nicht synchron anliegen und das Probleme 
verursacht?

Wie löse ich das Problem am einfachsten?

Es gibt noch ein weiteres Projekt namens "Ausgang" hat es dort evtl. die 
gleichen Probleme, die vielleicht einmal auftauchen könnten?
Die Datei poste ich beim nächsten Beitrag...

Ich wäre dankbar, wenn sich das jemnand mal anschauen und mir Tipps 
geben könnte.

Soll ich weitere Dateien anhängen?


Ich muss gestehen, ich habe nicht wahnsinnig viel Ahnung vom ISE und 
CPLD's. Ich habe es vor ca. 2 Jahren mal ausprobiert und es hat mit den 
beiden Schaltungen "Eingang" & "Ausgang" auf Anhieb funktioniert, was 
mich damals entzückte. Leider kommen jetzt scheinbar die Probleme...

Gruss, erik

von Erik (Gast)


Angehängte Dateien:

Lesenswert?

Hier noch das Schema des Projektes "Ausgang"

von Falk B. (falk)


Lesenswert?

@  Erik (Gast)

>Vor ein paar Tagen habe ich ein paar neue XC9872 gekauft versucht
>dasselbe Projekt wieder zu brennen. Das Brennen und auslesen der CPLD
>funktioniert fehlerfrei, die gewünschte Funktion jedoch nicht.

Wie äussert sich der Fehler?

>Es muss wohl am Projekt liegen. Irgendwie gibt es kritische
>Laufzeitunterschiede im CPLD. Kann es sein, dass die Daten bei diesem
>einfachen Design intern nicht synchron anliegen und das Probleme
>verursacht?

Nöö, zu 99,99999% ist deine Entwurtfsmethode falsch.

>Wie löse ich das Problem am einfachsten?

Welches Problem? Was geht denn nicht?

Wenn ich dein Projekt Eingang anschaue, dann wird mir schon ein wenig 
mulmig. Da kann man sich ggf. "nette" Glitches auf das GATE Signal 
holen. Merke: Kombinatorische Takte/Gate Signale sind böse.

http://www.mikrocontroller.net/articles/Taktung_FPGA/CPLD

>Es gibt noch ein weiteres Projekt namens "Ausgang" hat es dort evtl. die
>gleichen Probleme, die vielleicht einmal auftauchen könnten?

Nöö, keine Takte bzw. Latchsignale.

>mich damals entzückte. Leider kommen jetzt scheinbar die Probleme...

Jaja, die Leichen im Keller fangen an zu modern . . . ;-)

MFG
Falk

von Erik (Gast)


Lesenswert?

Hallo Falk

Danke für deine schnelle Antwort.

Klar liegt es an meiner Entwurfsmethode, das meinte ich :)

Fehlerbeschreibung "Eingang":

Wenn ich den CPLD ansteuere (Adressen, DDR, CS) kommen falsche Daten. 
Das was in den CPLD rein geht an Daten (Werte am Latch), kommt oft 
falsch raus am Datenbus.

Beim "Ausgang" sind bis jetzt keine Fehler aufgetaucht. Erkennst du dort 
auch Probleme?

von Falk B. (falk)


Lesenswert?

@ Erik (Gast)

>Wenn ich den CPLD ansteuere (Adressen, DDR, CS) kommen falsche Daten.
>Das was in den CPLD rein geht an Daten (Werte am Latch), kommt oft
>falsch raus am Datenbus.

Könnten Glitches sein.

>Beim "Ausgang" sind bis jetzt keine Fehler aufgetaucht. Erkennst du dort
>auch Probleme?

Nein.

MFG
Falk

von Erik (Gast)


Lesenswert?

Danke Falk, dann brauche ich mir beim "Ausgang" keine Sorgen zu machen 
:)

Was würdest du nun tun, wie würdest du den "Eingang" verbessern?
Ich habe deinen verlinkten Artikel studiert, weiss jedoch nicht wie ich 
das umsetzen / berücksichtigen soll.

von Falk B. (falk)


Lesenswert?

@  Erik (Gast)

>Danke Falk, dann brauche ich mir beim "Ausgang" keine Sorgen zu machen
>:)

Ähh Moment. Da hab ich was falsch verstanden!

>Was würdest du nun tun, wie würdest du den "Eingang" verbessern?

DIE macht Probleme? Eingang.pdf? Ich dachte Ausgangg.pdf. Merkwürdig.

>Ich habe deinen verlinkten Artikel studiert, weiss jedoch nicht wie ich
>das umsetzen / berücksichtigen soll.

Bei Ausgang.pdf hätte ich gesagt, dass aus der Dekodierung von CS und 
der Adresse ein CE (clock enable) Signal für die Latches/FlipFlops 
generiert werden muss. Das verbleibende DDR Signal wird dann al 
Takt/Gate enable verwendet.

MFG
Falk

von Fly (Gast)


Lesenswert?

Danke Falk

Jetzt bin ich noch mehr verwirrt. Ich habe primär Probleme mit dem 
"Eingang.pdf".

Kannst du  mir dazu auch noch Tips geben?

von Stefan (Gast)


Lesenswert?

Die Lösung des Problems besteht darin, kombinatorische Verknüpfungen 
mehrerer Signale per Flip-Flop über einen gemeinsamen Takt zu 
synchronisieren.
Ich kenne jetzt das XC9872 zwar nicht, aber FF's sollten in CPLD's 
massenhaft drin sein

von Falk B. (falk)


Lesenswert?

@ Fly (Gast)

>Jetzt bin ich noch mehr verwirrt. Ich habe primär Probleme mit dem
>"Eingang.pdf".

>Kannst du  mir dazu auch noch Tips geben?

Naja, die Schaltung ist so eigentlich OK. Es ist ja nur ein einfacher 
Dekoder. Wenn die Signale am Eingang stabil anliegen, kommt das 
gewünschte Datum auf dem Datenbus raus. Wenn CS, DDR oder die Adressen 
nicht zucken, wenn die CPU dewn Datenbus einliest sollte es da keine 
Probleme geben.

MFG
falk

von Erik (Gast)


Lesenswert?

Danke für Eure Inputs!

Sorry das ich unter 2 Namen poste, ich arbeite an 2 PC's, am einten war 
mein früheriger Name noch eingetragen.

Ich werde mal versuchen genauer herauszufinden woran es liegen könnte 
und etwas experimentieren.
Könnt Ihr mir sagen, wie ich einen Oszillator im CPLD hinkriege? Gibt es 
Funktionen / Tricks, wie man ohne zusätzliche, externe Bauteile einen 
Oszillator hinbekommt?

Grüsse, erik

von Falk B. (falk)


Lesenswert?

@ Erik (Gast)

>Könnt Ihr mir sagen, wie ich einen Oszillator im CPLD hinkriege?

Zuverlässig gar nicht.

> Gibt es
>Funktionen / Tricks, wie man ohne zusätzliche, externe Bauteile einen
>Oszillator hinbekommt?

Nicht wirklich. Ein Ringoszillator ist zwar machbar, aber nicht 
empfehlensswert.

MFG
Falk

von Erik (Gast)


Lesenswert?

Das Problem ist scheinbar "gelöst".
Wie bereits erwähnt, funktionierte das Design ca. 2 Jahre auf ca. 50 
CPLD's. Mit einer neu bestellten Stange XC9572 funktionierte es nicht 
mehr.

Das Design wurde mit ISE 6 oder 7? entwickelt. Nun wurde die neueste ISE 
geladen und installiert, das vorhandene Design importiert, automatisch 
auf das neue ISE aktualisiert, kompiliert und es läuft wieder 
fehlerfrei!

Ich kann es nicht nachvollziehen. Kann es sein, dass die bei der 
Produktion der XC9572 etwas geändert haben?

von Falk B. (falk)


Lesenswert?

@ Erik (Gast)

>Ich kann es nicht nachvollziehen. Kann es sein, dass die bei der
>Produktion der XC9572 etwas geändert haben?

Glaub ich nicht. Hast du auch nicht aus versehen die XL Typen erwischt?

MFG
Falk

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.