Forum: FPGA, VHDL & Co. SPI Master Configuration Interface für iCE 40 (Lattice)


von Bernd G. (Gast)


Lesenswert?

Ich versuche herauszufinden, wie ich den Konfigurationsfile vom 
Lattice-Programmer in den SPI-Flash bekomme.
In der Application Note TN1248 von Lattice ist zwar ausführlich 
beschrieben, wie der Flash mit dem iCE 40 zusammenarbeitet, aber leider 
nicht, wie ich die Daten vom Programmer in den Flash bekomme.
Schlicht gesagt - ich vermisse ein Schaltbildchen mit den Anschlüssen 
für den Programmer.
Der Stromlauf vom Board "Blinky 40" hilft mir auch nicht weiter, da dort
vom USB-Prozessor programmiert wird.
Weiß jemand näheres? Hat das schon jemand gemacht?

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

@Bernd G. schrieb

> Ich versuche herauszufinden, wie ich den Konfigurationsfile vom
> Lattice-Programmer in den SPI-Flash bekomme.
Hier ist das genau beschrieben mit dem Download
und den Lattice iCE40 Features.
SPI-FlashROM ATMEL Typ: M25P10 ..
Link:
http://www.latticesemi.com/documents/iCEcube2_userguide.pdf

Gruss Holger.
Viel Erfolg mit der neuen SiliconBlue  IDE.


PS.
Ich sende noch die Schaltbilder dazu.
Hint_1:

Das Lattice iCE blinky Board wird mit dem neuen AT90USB2 u.
via SPI-FlashROM ATMEL Typ: M25P10  geladen.
  AT90USB2-->   USB-SSB PIN 14 --> Pin 49 _SSB  (iCE40-SSB)
  AT90USB2-->   USB-SSB PIN 15 --> Pin 48 _S'CLK(iCE40-SSB)
#############################################################

Hint_2:
Title: MachXO2 Speed Seminar - Module 4: Wishbone Bus and Other Demos
https://www.youtube.com/watch?v=2KXQTb1-Rec&list=UUQGp6u4dMHW5iLchBWuOqTQ&index=2

##############################################################

von Bernd G. (Gast)


Lesenswert?

Hallo Holger,

vielen Dank für deine Bemühungen. Den ersten Link hatte ich mir bis dato 
noch nicht einerverleibt.
Wie der Programmer zu bedienen ist, konnte ich klären.
Ich habe mich missverständlich ausgedrückt - es geht mir um die von dir 
angekündigten Schaltbilder.

Meine Aufgabe ist folgende: ich will den Schaltkreis in-circuit mit dem
Programmierkabel HW-USBN-2A von Lattice preogrammieren.
Die ersten Baugruppen sollen noch mit dem M25Pxx laufen, bis diese dann 
beim Anwender stabil fu8nktionieren. Danach soll der NVCM des iCE 40 
direkt programmiert werden.
Um das Ganze idiotensicher zu erledigen, habe ich nach der für beide 
Anwendungsfälle geeigneten Konfigurationsschaltung gesucht. Ich bin 
lediglich auf die Blinky 40-Schaltung gestoßen. Wenn ich bisher alles 
richtig interpretiere, müsste ich bei Blinky die vier Widerstände zum 
USB-Prozessor auslöten, die Stiftleiste einlöten und hätte dann den 
Zugriff für die Programmierung über das Lattice-Kabel.
Eine Programmierung des NVCM ist hierbei offenbar nicht möglich, was bei 
dem Board auch einleuchtend wäre, weil man ja hier nichts unbeabsichtigt 
unbrauchbar machen möchte.

Was bei Xilinx in epischer Breite dargestellt wurde, ist bei Lattice 
leider nur sehr kurz gefasst.

Vielen Dank - Bernd

von Holger H. (holger-h-hennef) Benutzerseite


Angehängte Dateien:

Lesenswert?

Anhang:
HW_USB_2A_iCE.PNG

@Bernd G. schrieb
> Wenn ich bisher alles
> richtig interpretiere, müsste ich bei Blinky die vier Widerstände zum
> USB-Prozessor auslöten, die Stiftleiste einlöten und hätte dann den
> Zugriff für die Programmierung über das HW-USBN-2A JTAG Lattice-Kabel.
Die Schaltung kann man sich aus dem Bild ableiten.
Nee ... so einfach ist das bei diesem Blinky Board nicht.
Du must zuerst mal Zugriff auf das JTAG PORT mit allen notwendigen
speziellen Pinnen für den iCE 40 Chip haben.
Siehe Bild
und vergleiche das mal mit dem MachXO2 JTAG Pinning.
z.B ispEN/PROG fällt das aus der Reihe.
TMS wird nicht verwendet, aber dafuer TRST/DONE ..exotisch..
#######################################################################
Verg.
iCEman65 Evaluation Kits
http://www.latticesemi.com/products/developmenthardware/developmentkits/iceman65evaluationkits.cfm
Tip:
Versuch mal auf deinem Board die Test-Pads zu finden, für das JTAG.
Die müssen in der Produktion das Board via JTAG Boundary scan testen.
IDDQ testing etc.
##################################################################
So hast du eine einmalige modifikation für ein OTP Device via
JTAG-->'Prog-Mode ->(NVCM).
Zitat:
www.siliconbluetech.com
 However, iCE devices also have a
 Non-Volatile Configuration Memory (NVCM) component.
 When this (NVCM) memory is programmed, via eg. JTAG
 the iCE devices will automatically load the
 configuration from its own internal memory during power-up,
 allowing the device to operate as a true
 Application Specific Integrated Circuit (ASIC).
bingo> You made a OTP Device.

Viel Erfolg mit dem Project.
Gruss Holger.

von Klaus (Gast)


Lesenswert?

Sag mal Bernd, verstehst du das wirre Zeug von Holger? Ich bin damit als 
geistig gesunder Mensch leider überfordert... :-/

von Bernd G. (Gast)


Lesenswert?

> Du must zuerst mal Zugriff auf das JTAG PORT mit allen notwendigen
> speziellen Pinnen für den iCE 40 Chip haben.

Das ist kein Problem: R6, R7, R8 und R10 auslöten, Stecker J11 auflöten 
und Drähte anschließen (nach Tabelle 2 der UG48 - "Flywire Conversion 
Reference").
Ein Vergleich mit dem MachXO2-Pinning greift hier nicht, da der iCe40 
keinen JTAG-Port, sondern nur den SPI-Port hat.
Das mit dem NVCM ist mir auch klar - einmal programmiert und das war es 
dann.
Das soll mich gegen den Chinesen und andere Neugierige absichern.

Was unklar ist: die Verschaltung SPI-Port des iCE40 mit dem Flash und 
dem Programmieranschluss dergestalt, dass ich wahlweise den Flash oder 
den NVCM programmieren kann. Ich habe das jetzt aus dem Blinky 
herausgezeichnet und versuche es zu verstehen.
Deshalb meine Frage, ob das schon jemand gemacht hat, was leider 
offenbar nicht der Fall ist.

> Sag mal Bernd, verstehst du das wirre Zeug von Holger? Ich bin damit als
> geistig gesunder Mensch leider überfordert... :-/

Wieso wirr? Ist doch alles komplett klaro. In meinem richtigen Leben 
mache ich viel schlimmere Sachen.

von Holger H. (holger-h-hennef) Benutzerseite


Angehängte Dateien:

Lesenswert?

Anhang Bilder:
iCE_cfg_Prog_Ports_1.PNG
iCEProg_1.PNG
Nee .. Da sind zwei Ports (SPI) und hidden ("JTAG").
(In der Doku Rev.History steht JTAG Port Doku. removed).
bingo>

Für dein JTAG OTP Vorhaben ist dieser Link:
http://www.latticesemi.com/products/developmenthardware/desktopprogrammer.cfm
Zitat:
 The iCEprog Desktop Programmer
##############################...
 supports programming of the "OTP fuses" of
 Lattice iCE products (NVCM programming).
bingo>

von Holger H. (holger-h-hennef) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hier ist das Bild.
Gruss Holger.

von Bernd G. (Gast)


Lesenswert?

@Holger

Vielen Dank für deine Bemühungen, aber mir geht es wie gesagt darum:

> Was unklar ist: die Verschaltung SPI-Port des iCE40 mit dem Flash und
> dem Programmieranschluss dergestalt, dass ich wahlweise den Flash oder
> den NVCM programmieren kann.

Ein Stromlaufplan also, bestehend aus Stecker für Programmieranschluss, 
iCE40 und Flash. Dazu sagt Lattice leider genau gar nichts.

Der Anschluss des modifizierten Blinky an den Programmer hat bisher 
nichts gebracht, zumindest der Versuch den Flash zu lesen war erfolglos.
Die Geschichte mit dem iCE40 scheint noch sehr frisch zu sein. 
Siliconblue hatte mit dem iCE 65 wohl auch einen Haufen 
Anlaufschwierigkeiten.
Der Blinky40 lässt sich über die Lattice-PGM-Software ebenfalls nicht 
ansprechen, nur über die Digilent-Adept-Version.

Fazit: ich lasse das mit dem iCE40 erst einmal sein und realisiere die 
Geräte wie geplant mit dem MachXO2, was leider eine Kleinigkeit teuerer 
ist.

Ich schätze, dass es noch ein Jahr braucht, ehe der iCE40 unfallfrei in 
die Diamond-Entwicklungsumgebung implementiert ist und dann geht es 
weiter.

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.