mikrocontroller.net

Forum: FPGA, VHDL & Co. EEprom über LPC ansteuern


Autor: John-eric K. (mockup)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Einen schlnen guten Tag.
Ich versuche gerade einen SST49lf040 über lpc auszulesen und das
ausgelesene über den usb zu serielen zum pc zu senden.
Ich habe alle pin anschlüsse schon 3mal kontrolliert, also kann hier
nicht der Fehler liegen.
im angehängten archiv, ist die vhdl datei + datenblatt des eproms.
so nun zum Problem.
Ich habe den code geschrieben, und mit modelsim simuliert. meiner
meinung stimmt er mit dem datenblatt über ein.
desweiteren habe ich das signal error eingefügt, welches kommen soll,
wenn der eprom den 4bit lpc bus nicht über nimmt.
sprich er ist bidirektional. aber genau hier ligt der fehler.
der eprom übernimmt den bus einfach nicht. und das error signal kommt.

meine pinbelegung des eproms.
=============================
gegen plus: 32,25(beide VDD)
            7,8 für den ausgeschalteten schreibschutz
gegen gnd: 16,28(beide VSS)
            3,4,5,6,30 (GPI pins) nach meinen durchlesen egal was da
            anligt, hauptsache definiert
           29 mode pin. ob lpc oder parrallel, bei gnd lpc
13,14,15,17 der datenbus
2,24 resetpins, habe ich beide zusammengeklemmt.
31 lclk
23 lframe

also die pins zum fpga sind meiner meinung alle richtig.
und die anderen meiner meinung auch.

nun habe ich auf dem board auch noch 7 segment anzeige drauf, und habe
mir so den datenbus rausgeführt, um das zu überprüfen(clk natürlich
langsammer) aber er bleibt immer bei der abfrage ob der bus auf '0'
gezogen ist hängen, weil der eprom ihn nicht übernimmt.
könnte sich das mal einer anschauen.
ich weiß grad nicht mehr weiter.
hoffe ich habe das prblem ausgibig geschildert und eingegrenzt.
schon im vorraus danke.
mfg
MockUp

Autor: John-eric K. (mockup)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat keiner vielleicht eine ahnung woran das liegen könnte?
mfg

Autor: John-eric K. (mockup)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schade das keiner rat hat. ich habe auch schon versucht, die start
adresse zu ändern, habe da noch was im datenblatt gefunden, aber geht
leider auch nicht. naja den halt nicht. mfg

Autor: John-eric K. (mockup)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Habe den code jetzt nochmal umgeschrieben und mit text am rand zur
besseren verständlichkeit geschrieben. habe auch das testbench file,
und  ein bild was modelsim daraus macht erstellt. auf seite 12 im
datenblatt, welches ich im ersten post hochgeladen habe ist beschrieben
wie es aussehen soll.
meiner meinung ist das so vollkommen in ordnung.
aber es geht immer noch nicht.
könnte sich das nicht mal jemand angucken.
ich weiß echt nicht mehr weiter.
der code ist nun auch voll übersichtlich, fals es daran lag.
er bleibt immer bei der übernahme des busses(eprom_lad) hängen.
anscheinend übernimmt ihn der eprom nicht.
du usb-seriel verbindung läuft. habe ich schon getestet.
schon mal danke.
mfg
MockUp

Autor: John-eric K. (mockup)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ach so lad_in2 und enable kann man sich wegdenken, die waren nur zur
simulation gut.
mfg

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kann erstmal nix offensichtliches im VHDL finden, also keine leichte
Aufgabe. Und Datenblatt lesen braucht auch seine Zeit, vielleicht in den
nächsten Tagen.

PS: meint LPC das low pin count interface von intel?

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm womit synthetisierst Du den Code? Mit XST aus dem Xilinx Webpack?
Dann stelle bitte mal das *.syr file hier ein.

Es könnte ein Synthesefehler sein. Gerade bei Code der wie in
C-geschrieben würde, schlägt die Synthese Purzelbäume -> das design
wird unnötig gross und langsam und einige Codeteile werden garnicht
übersetzt. Dem XST ist das nur eine Warning wert :-( .

Aber keine Panik, nichts ist sicher. Lass mal einen Experten da
reinschauen.
Und überlege mal wie man das mit einem counter schreiben kann. Das

a <= a + 1; in fast jedem Case zweig ist gräulich (macht man das so in
C) da hat die synthese sicherlich ein problem. Verwende anstatttdessen
einen counter-beschreibung in einem extra Prozess.

Autor: John-eric K. (mockup)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hy wenigstens einer der es versucht. danke.
also ich benutze das xilinx webpack 8.1.
ab der lpc bus von intel ist weiß ich nicht.
der steht halt im datenblatt drinnen.

also ich habe grad neu synthetisiert und das syr file hängt mit dran.
ich wüste jetzt garnicht wie ich das anders beschreiben sollte.
also du meinst einen counter extra, der den sowas wie ein enable signal
hat zum zählen.
na ich werde mal was versuchen.
wenn ich das aber ohne die abfrage ob der eprom den bus übernommen hat
mache und mit so 1hz laufen lasse, macht er aber die durchgänge die ich
haben will? hm
ich werd sie mal mit einen zähler beschreiben.
schon mal danke

Autor: John-eric K. (mockup)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
mal eine frage, sollte ich die fsm so wie hier aufbauen?
http://esd.cs.ucr.edu/labs/tutorial/fsm.vhd

habe ich jetzt einfach mal gemacht.
hoffe das entspricht was du meinst.
aber gehen tuts immer noch nicht :-(

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#mal eine frage, sollte ich die fsm so wie hier aufbauen?
#http://esd.cs.ucr.edu/labs/tutorial/fsm.vhd

Hm, einen getakteten process für die Zustands -FF und einen
kombinatorsichen prozess für die beiden kombinatorsuchen netzwerke der
Ausganglogig und zustandsübergänge.

Das prinzip ist IO aber der Code ist unnötig vollgestopf (elsif wo else
reicht (?!)).

Diesen Code kann ich später kommentieren ich halte mich erstmal an den
EEPROM Ansteuercode.

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm sind im FPGA immer '1' oder '0':

INFO:Xst:1304 - Contents of register <eprom_rst> in unit <main> never
changes during circuit operation. The register is replaced by logic.
INFO:Xst:1304 - Contents of register <usb_RD_n> in unit <main> never
changes during circuit operation. The register is replaced by logic.
INFO:Xst:1304 - Contents of register <usb_SIWU> in unit <main> never
changes during circuit operation. The register is replaced by logic.

Ist das OK für den EEPROM das der Reset sich nie ändert?

Weiteres frühestens heute abend.

Autor: John-eric K. (mockup)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
ok. der momentane sieht so aus.
ich bekomme jetzt schon 4x (F0)hex empfangen aber danach bricht er ab.
ich glaube auch nicht, das das aus dem eprom kommt,
weil ich die adresse geändert habe und da das gleiche passiert.
mfg

Autor: John-eric K. (mockup)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe mir mal die definitionen von der intel page geladen und werde
den code danach ausrichten. zumindestens versuche ichs :-) mfg

Autor: FPGAküchle (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So, ich habe das main.vhd aus dem rar archive genohmen und "den counter
in extra process geschoben". Jetzt siehts nicht mehr nach C aus und die
Synthese könnte es einfacher haben.

Das wars aber für die Arbeitwoche, vor dem Wochenende kann ich nicht
tiefer in das problem steigen.

Autor: MockUp (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hy schon einmal danke.
ich denke, da gibt es ein problem.
eigentlich wollte ich den process erst starten,
wenn die flanke eines tasters erkannt wurde.
habe den ganzen code noch ein bissle verändert
und die eigentliche fsm auch getacktet.
Ich war dann noch auf der intel seite und habe mir
das datenblatt zu dem lpc bus durchgelesen und noch
einige sachen verändert und überprüft.
zb habe ich bei der busübernahme noch die warte signale
mit rein genommen. ich kann auch schon daten auslesen!!!
das problem ist nur, das es mal nur 49 sind und dann error
kommt und mal 270, jenachdem welche adresse ich nehme.
das habe ich noch nicht ganz verstanden.
da werde ich noch weiter herrum experementieren.
aber trotzdem schon einmal danke.
das mit dem extra process indem der zähler der fsm ist,
werde ich in meinen nähsten projekten berücksichtigen.
im anhang der momentane stand.
mfg
MockUp

Autor: MockUp (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.
Fals es jemanden interessiert, es funktioniert.
anbei der quellcode.

besten dank @FPGAküchle
hat geholfen die statemaschine zu ändern.
mfg

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.