Forum: FPGA, VHDL & Co. ispLSI 1032E Programmieren über JTAG geht nicht


von Steffen S. (bitmaster)


Lesenswert?

Hallo,
ich möchte die ispLSI1032E über JTAG programmieren.
Die IC wird problemlos per JTAG-Scan richtig erkannt.
Beim Programmieren kommt folgender Fehler:
1
Check configuration setup: Start.
2
ISP Chain Verification. No Errors.
3
Check configuration setup: Successful.
4
Device1 1032E: Erase,Program,Verify
5
HDR  0
6
TDR  0
7
SDR 8   TDI(FF)
8
Expected  TDO(0D)
9
Expected MASK(FF)
10
Received  TDO(06)
11
Bits Error 0004: Expected: 1 Received: 0
12
Bits Error 0002: Expected: 0 Received: 1
13
Bits Error 0001: Expected: 1 Received: 0
14
Execution time: 00 min : 00 sec
15
16
Failed in Function READ_ID (see log file for more details)

Die Device-ID sollte 0D sein ist aber 06.
Evtl. fehlt da ein Bit: (0x06 << 1 )| 1 = 0x0D ??
Getestet mit ispVM Sytem und Diamond Programmer,
gleiches Ergebnis.

Evtl. hat jemand eine Idee was da falsch läuft....

Steffen

von Duke Scarring (Gast)


Lesenswert?

Steffen S. schrieb:
> Die Device-ID sollte 0D sein ist aber 06.
> Evtl. fehlt da ein Bit: (0x06 << 1 )| 1 = 0x0D ??
> Getestet mit ispVM Sytem und Diamond Programmer,
> gleiches Ergebnis.
Oder es wurde ein Taktimpuls zuviel bzw. zuwenig erkannt.

> Evtl. hat jemand eine Idee was da falsch läuft....
Ich würde mit dem Oszilloskop die Signalqualität prüfen...

Duke

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Vielleicht ist es ein Nachfolgetyp mit anderer Kennung
http://www.latticesemi.com/~/media/LatticeSemi/Documents/DataSheets/ispLSI/ispLSI1032EDataSheet.PDF?la=en
da steht schräg drüber "neuen Typ ispLSI1032EA verwenden"
Ich fürchte, die Kennung steht nicht im Datenblatt, aber vielleicht im 
Boundary-scan-File.
http://bsdl.info/download.htm?sid=b7a5e55ec84fc80c88ca59b002289d77

   -- IDCODE Definition

   attribute IDCODE_REGISTER of ispLSI1032EA: entity is
   "0000" &                                       -- version
   "0000001100101110" &                           -- part number (032E)
   "00000100001" &                                -- manufacturer's 
identity
   "1" ;                                          -- required by 1149.1

   -- USERCODE Definition

   attribute USERCODE_REGISTER of ispLSI1032EA: entity is
   "11111111111111111111111111111111";

IDCODE:   00000000001100101110000001000011
0x0032E043

naja da sollte man sich erst mal einlesen

: Bearbeitet durch User
von Steffen S. (bitmaster)


Lesenswert?

Die Signale sind sauber (5 cm Verbindung zum FT2232H).
Die ispLSI ist eine 1032E, keine 1032EA.
Test mit 2 ispLSI 1016 -> gleiches Problem.
Test mit ispLSI 2064VE -> funktioniert.

Ich vermute die alten ispLSI lassen sich nicht mit FT2232H ansprechen(?)

von Christoph db1uq K. (christoph_kessler)


Angehängte Dateien:

Lesenswert?

Hier habe ich noch das alte Windows-Download.exe von Lattice, das hat am 
Druckerport noch unter XP funktioniert. Das Interface bestand aus ein 
paar Vorwiderständen zur Strombegrenzung und einem Tristate-Buffer.
Beitrag "Re: ISPLS2032 Programmieren"
da ist die Schaltung

: Bearbeitet durch User
von Christoph db1uq K. (christoph_kessler)


Angehängte Dateien:

Lesenswert?

Ich sehe gerade, ohne das .sdn-File startet es nicht (mit Wine unter 
Ubuntu - vermutlich läuft es so nicht wirklich)

von Steffen S. (bitmaster)


Lesenswert?

Christoph K. schrieb:
> Hier habe ich noch das alte Windows-Download.exe von Lattice, das hat am
Mit den alten Sachen vom isp-Starter Kit will ich nicht anfangen...


ich habe mal in der IODD.svp rumprobiert:
1
function READ_ID {
2
  int32 TotalLength = 0;
3
  TotalLength = ID_Length+(TOTAL_TID_LENGTH)+(TOTAL_HID_LENGTH);
4
  STATE ispIDLE;
5
  SDR_VERIFY  TotalLength  TDI (#1^TotalLength)
6
              TDO  ((#1^(TOTAL_TID_LENGTH))@IDTDI[1]@(#1^(TOTAL_HID_LENGTH)))
7
              MASK ((#0^(TOTAL_TID_LENGTH))@DEVICE_ID_MASK@(#0^(TOTAL_HID_LENGTH)));
8
}
wenn man eine von den Längen erhöht kam sogar die richtige ID.
Kann aber mit dem Script nicht wirklich was anfangen: #0^ ????

Ansonsten lass ich es lieber und nehme andere CPLD's.

von Frickler (Gast)


Lesenswert?

@Steffen, probier mal einen 10n am ENABLE Pin.

von Frickler (Gast)


Lesenswert?

Habe es wieder gefunden...

www.latticesemi.com/view_document?document_id=143

Auf seite 4 Figure 5 und auf Site 6 Punkt 2.

"2. For older Lattice ISP devices, a 0.01µF decoupling capacitor is 
required on ispEN/ENABLE of the target board."

Ich benutze zwar noch einen LPT, aber auch da ist ohne 10n kein 
Programmieren möglich bei den alten PLDs. Seitdem kommt der 10n immer 
gleich mit aufs Board unmittelbar am ispEN Pin.

von Steffen S. (bitmaster)


Angehängte Dateien:

Lesenswert?

Ich verwende ein FT2232H-Modul als Programmieradpater. Ein Parallelport 
steht  hier nicht zur Verfügung.
ispEN liegt per Draht auf Masse da dieses Signal nicht angesteuert wird.
Komisch ist nun, dass der Scan Chain das CPLD richtig erkennt aber der 
Befehl "Display ID" nicht funktioniert (s.o.).

Ich habe auf einem alten XP-Rechner mit Parallelport das auch nochmal 
ausprobiert. Dort funktioniert alles.

von Frickler (Gast)


Lesenswert?

Schade, da bin ich mit meinem Latein auch am ende. :(

von Rudolph (Gast)


Lesenswert?

Steffen S. schrieb:
> Ich habe auf einem alten XP-Rechner mit Parallelport das auch nochmal
> ausprobiert. Dort funktioniert alles.

Läuft da die gleiche Programmversion wie auf dem anderen Rechner?

Steffen S. schrieb:
> Komisch ist nun, dass der Scan Chain das CPLD richtig erkennt aber der
> Befehl "Display ID" nicht funktioniert (s.o.).

Fragt "Display ID" denn tatsächlich den IDCODE ab, oder irgendeine 
andere ID? "SDR 8   TDI(FF)" ist ja ein bisschen kurz für den IDCODE...

von Steffen S. (bitmaster)



Lesenswert?

Rudolph schrieb:
> Läuft da die gleiche Programmversion wie auf dem anderen Rechner?
ja, die gleiche ISPVMSystem.
Nun auch nochmal unter Windows 7 32-Bit probiert: gleiches Problem

>
> Fragt "Display ID" denn tatsächlich den IDCODE ab, oder irgendeine
> andere ID? "SDR 8   TDI(FF)" ist ja ein bisschen kurz für den IDCODE...

Ist die ID von Scan Chain die gleiche wie bei Display ID?
Die ID's sind hier nur 8-Bit breit.

Noch eine Korrektur:
Die ispLSI1000er haben kein JTAG sondern verwenden die propri-
etary Lattice ISP State Machine.

Ich habe das Get ID Timing aufgezeichnet.
Gleiches Ergebnis bei Scan Chain und READ ID.
Leider kann ich das Ergebnis nicht richtig verstehen:
1. Mode=1, 7 Takte -> ID wird in das Shift-Register eingeschrieben (LOAD 
ID)
2. Mode=0, b0 von der ID liegt an SDO
3. nur ein (?) Takt, b1 von der ID liegt an SDO (ShiftID)

Warum nur 1 Takt?

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.