Forum: FPGA, VHDL & Co. Nexys3 / CY7C680 / EEPROM Allgemeine Fragen


von Alexander S. (alexanders)


Lesenswert?

Hallo liebe Community,

ich probiere gerade auf dem Nexys3 Board von Digilent den CY7C680
13A umzuprogrammieren.

Ich habe noch nie mit dem CY7C680 gearbeitet und hätte ein paar 
allgemeine Fragen.

Neben dem CY7C680 ist ein kleiner EEPROM (24AA128) verbaut. Diesen 
konnte ich erfolgreich auslesen (Intel HEX) und habe so vermutlich die 
Firmware von Digilent erhalten (man erkennt ein paar Interruptvektoren 
und ein 8051 Assembler kann daraus wieder sinnvolle Befehle machen)

Nun möchte ich den Chip aber für die Datenübertragung nutzen und habe 
mich erst einmal in das Getting Started EZUSB FX2LP (AN66806) 
eingelesen.

Nachdem ich nun eine Programmierung für den 8051 erstellt habe, möchte 
ich diese auf das Board laden. Das funktioniert soweit auch ohne 
Fehlermeldung.

Nun steht in der Getting Started Anleitung, dass ich das Board Reseten 
soll

1. Was soll ich tun ? Der Reset Pin des CY7C680 hängt fest auf VCC und 
wenn ich den Strom entfernen, wird doch mein EEPROM wieder geladen.

Ich hätte meiner Meinung nach nur folgende Möglichkeiten:

1. Ich überschreibe den Inhalt des EEPROMS (mit der Möglichkeit, dass 
ich nie wieder das Digilent Programm drauf bekomme)
2. Ich ziehe den SDA und SCL auf High und verhindere so die Erkennung 
des EEPROMs

Kennt jemand noch eine andere Möglichkeit, das Programm auf dem CY7C680 
zu laden? Am besten ohne Reset, und ohne das der EEPROM überschrieben 
wird.

Mit freundlichen Grüßen

AlexanderS.

von Christian R. (supachris)


Lesenswert?

Ich arbeite ziemlich viel mit dem CY7C68013A, so der volle Name, auch 
bekannt als FX2LP. Prinzipiell kannst du das Programm auch direkt in den 
RAM laden und von dort ausführen, egal, was im EEPROM ist. Wird auch 
beim Bootloader zum Programmieren des EEPROMs so gemacht. Am besten 
lädst du dir mal das komplette Entwicklungspaket von Cypress für den 
Chip herunter, da ist dann auch die CyConsole dabei, damit kannst du 
Programme auf den 8051 laden und starten oder direkt in das EEPROM. Hier 
findest du alle Infos: http://www.cypress.com/?rID=14321 zum Starten 
brauchst du das 51MB Paket ganz oben in der Liste. Da ist auch der KEIL 
Compiler samt Libraries usw. dabei.
Dann ist auf jeden Fall das EZUSB Technical Reference Manual wichtig, 
denn die USB Peripherie des 8051 muss man erst mal durchschauen lernen: 
http://www.cypress.com/?id=193&rtID=117

von Alexander S. (alexanders)


Lesenswert?

Oh, das ist gut zu wissen. Dann kann ich ja in die Richtung weiter 
machen ohne mir Sorgen um mein Digilent Programm machen zu müssen.

Die Toolchain habe ich mir schon heruntergeladen. Ich werde jetzt erst 
mal etwas mit dem GPIF Interface experimentieren.

Mein Hauptziel ist es, eine schnelle Datenübertragung zwischen dem PC 
und meinem Spartan 6 zu realisieren.

Bisher mache ich das über UART (2MBaud) aber ich würde das ganze gerne 
noch etwas beschleunigen.

von Christian R. (supachris)


Lesenswert?

Ich kenn das Board jetzt nicht genau, aber der FX2 ist für sowas ideal. 
Im Slave FIFO Modus ist die Ansteuerung sehr leicht. Aber man muss ein 
paar Sachen beachten:
- 48MHz als IFCLK klappen nicht wirklich, die Setup- und Hold-Zeiten 
sind so blöde, dass man da immer was verletzt und Datenverlust hat.
Wir arbeiten mit 25MHz externem IFCLK, das geht zuverlässig und ohne 
Timing-Fehler wenn wir den Takt 180° verschoben zu den Daten ausgeben.

- Das Packet End ist bissl blöd, und je nach Einstellung für Zero Length 
Packets kanns da auch mal zu leeren Paketen führen.

- Der cyusb.sys Treiber ist Schrott, erzeugt sogar manchmal bluescreens, 
wir arbeiten deshalb mit dem WinUSB Treiber, der funktioniert 
einwandfrei.

Ich hatte hier irgendwo schon mal eine Beispielfirmware für den FX2 
angehängt, musst du mal suchen.

von Alexander S. (alexanders)


Lesenswert?

Irgendwie mag mich dieser Chip nicht so recht. Ich arbeite gerade das
AN66806 durch.

Dort möchte ich dann einen Single Word Write Transaction an ein UART 
Modul in meinem FPGA machen.

Dazu habe ich das Beispiel angepasst und denke auch es ist alles richig. 
Nun zu den zwei Problemen.

Wenn ich uVision 2 das Projekt erstellen lasse, bricht er mit beim 
Usercommand zur Umwandlung von Bin to Hex mit Error 4 ab.

Die erstellte Datei sieht aber trotzdem gut aus (stichprobenartiger 
Vergleich).

Nun spiele ich die HEX Datei in den RAM. Der USB Link resettet sich und 
das Gerät meldet sich neu unter Windows an.

Leider finde ich nun einfach keine Treiber. Die Gerätebeschreibung des 
Gerätes wird auch richtig ausgegeben, nur die PID und VID ist falsch.

Diese ist USB\VID_0547&PID_1002 sollte aber eigentlich (laut Parameter 
in der dscr.a51) USB\VID_4705&PID_0210 sein.

Für diese Kombination finde ich nur einen sehr alten 
Massenspeichergerätetreiber für Windows 98 - 2000.

P.S Auch mit dem orginalen Beispiel der gleiche Fehler

@  Christian R. Danke für deine Mühen. Meinst du zufällig die Firmware 
unter Beitrag "USB-Port auf Spartan 3E für Anwendung nutzen" bzw. diese 
http://www.mikrocontroller.net/attachment/47955/Sync_Bulk.c

Gruß

Alexander S.

von Christian R. (supachris)


Lesenswert?

Ja die meine ich. Und in der assembler Datei sind low und high byte 
immer verdreht drin, daher die falsche VID/PID.

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.