mikrocontroller.net

Forum: FPGA, VHDL & Co. I2C-EEPROM Treiber in VHDL


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibt es irgendwo einen Treiber für ein I2C-EEPROM wie z.B. das 24AA64 in 
VHDL?
http://ww1.microchip.com/downloads/en/devicedoc/21189f.pdf

Ich suche nach eine Minimallösung für das Kopieren des EEPROMs ins 
interne RAM beim StartUp.

Autor: Markus F. (mfro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hier: 
https://www.digikey.com/eewiki/pages/viewpage.action?pageId=10125324 
gibt es einen (nachweislich funktionierenden) i2c Master. Der sollte das 
können.

Autor: Vancouver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Markus F. schrieb:
> i2c Master. Der sollte das
> können.

Das ist aber noch nicht alles. Der I2C-Master ist nur der 
Low-level-Teil. Man braucht noch einen Controller, der die 
Kopieroperation steuert und der zum restlichen Bussystem passt.
Ob es das fertig irgendwo gibt, ist fraglich, dürfte aber andererseits 
kein Hexenwerk sein.

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

Bewertung
0 lesenswert
nicht lesenswert
>Man braucht noch einen Controller,

Ich glaube, ihr denkt zu umständlich. Die Timing Digramme des EEPROMs 
sind so einfach, dass man das ganze wahrscheinlich in 30-40 Luts bekommt 
( Protokoll + Ram Access )

Autor: Vancouver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du das EEPROM immer nur komplett lesen und niemals schreiben 
willst, kannst du den sequential read mode verwenden. Ja, dann wirds 
sehr einfach. Wieviele LUTs man dafür braucht, hängt von der 
Implementierung und vom FPGA ab.

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Markus schrieb:
> Ich glaube, ihr denkt zu umständlich

Eher pragmatisch, eine Soft CPU spart dir eine Menge Zeit und die 
Wiederverwertbarkeit ist höher, insbes. wenn die Projekte komplex 
werden.

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andi schrieb:
> eine Soft CPU spart dir eine Menge Zeit
Naja, es kann aber auch erstmal ein Menge Zeit kosten, so eine Soft-CPU 
richtig zum fliegen zu bekommen...

Duke

Autor: Ale (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... und ? wie ist es gelaufen ?
noch eine möglichkeit ist ein Flash Chip, aber via SPI. Ja, ich weiß 
weder I2C noch EEPROM... aber fertiger Quelltext gibt es z.B. hier:

https://github.com/gtjennings1/HyperBUS/blob/master/riscv32/hardware/spimemio.v

in verilog :)

Autor: Vancouver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit Controller meinte ich keine CPU, sondern eine Statemachine mit dem 
notwenigen Zeugs drumherum. Das sollte in 3-4 Tagen entwickelt sein für 
diesen Anwendungsfall.

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Markus,

Markus schrieb:
> Gibt es irgendwo einen Treiber für ein I2C-EEPROM wie z.B. das 24AA64 in
> VHDL?

Geht es ausschließlich um das kopieren EEPROM->RAM? Wenn ja folgenden 
Vorschlag:
1) I2C Master von OpenCores ziehen (https://opencores.org/projects/i2c)
2) Wegschmeißen des Wishbone Registersatzes, und dann hängst du dich mit 
deiner FSM daran.
3) FSM implementiert Befehlssatz zum Auslesen des EEPROMs
4a) Spezialfälle mit ACK/NCK berücksichtigen, damit sich die FSM nicht 
verhängt, und schon kannst du das ganze kopieren.

Ich hatte mal ein System geschrieben, das den EEPROM in ein paralleles 
IF im FPGA umwandeltet.

Viele Grüße,
Andreas

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wenn ja folgenden Vorschlag:

Danke für den Vorschlag.

Mir geht es darum, möglichst wenig Resourcen des FPGAs zu verbrauchen, 
deshalb denke ich, dass man so was eher "from Scratch" machen muss, 
sonst kommt man nicht auf die optimale Lösung.

Autor: Christoph db1uq K. (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich suche nach eine Minimallösung für das Kopieren des EEPROMs
>ins interne RAM beim StartUp.

nicht in VHDL, sondern mit Mikrocontroller:
https://www.mikrocontroller.net/articles/Low_Cost_FPGA_Konfiguration

Autor: Weltbester FPGA-Pongo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vancouver schrieb:
> Mit Controller meinte ich keine CPU, sondern eine Statemachine mit dem
> notwenigen Zeugs drumherum. Das sollte in 3-4 Tagen entwickelt sein für
> diesen Anwendungsfall.

Braucht nur eine FSM, die eine ADR lädt, eine Schleife, R,W und 
eventuell Sprünge kann.

Sowas gibt es aber auch in den meisten Abteilungen schon, weil alle die 
gleichen Probleme haben.

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.

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