Forum: FPGA, VHDL & Co. ICE40UP5K I2C Hardend VHDL, Überforderung


von Max (Gast)


Lesenswert?

Hallo,

ich bin noch recht neu in der Welt von VHDL.
Ich versuche aktuell ein I2C zum Laufen zu bringen, der mir einen 
Temperatursensor TMP421 ausliest.

Der ICE40UP5K hat 2 interne Hardwaremodule, die zwei Dokumentationen auf 
der Webseite von Lattice habe ich mir schon durchgelesen und bin total 
überfordert.

Hat jemand von euch eventuell ein Beispiel-Code mit dem man zumindest 
mal 1 Byte senden und empfangen kann?

Viele Grüße
Max

von Duke Scarring (Gast)


Lesenswert?

Max schrieb:
> Hat jemand von euch eventuell ein Beispiel-Code mit dem man zumindest
> mal 1 Byte senden und empfangen kann?

Da sollte sich mit Google was finden lassen. Ich würde erstmal nach 
Beispielen schauen, die nicht speziell auf die Hard-IP des ICE40UP5K 
zugeschnitten sind...

Duke

von lexi (Gast)


Lesenswert?

Soweit ich mir erinnerer verwenden die I²C und SPI Hardmacros eine 
vereinfachte Variante des Wishbone Bus als "System Bus". Das direkt in 
Hardware richtig auf die Reihe zu bekommen ist aufwendig (HDL schreiben, 
synthetisieren, aufspielen, testen und von vorne...).

An deiner Stelle würde ich erstmal einen Softcore mit Wishbone-Interface 
in das FPGA packen und den I²C Block da dranhängen. Dann braucht man 
sich nicht mehr um das Protokoll kümmern und kann über z.B. JTAG oder 
UART "einfach mal so" kompilierten C-Code draufladen und damit dann das 
eigentliche Interface vom Modul (I²C Register schreiben/konfigurieren) 
testen.

Wenn das dann läuft und man die Ansteuerung aus "C hinaus" geschafft 
hat, kann man sich Gedanken machen wie man das z.B. als Statemachine in 
reiner Hardware machen könnte.

von Horst (Gast)


Lesenswert?

Er soll erst alles in C probieren um es dann ins VHDL zu packen?

VHDL-I2C-Cores gibt es wie Sand am Meer. Die meisten sind allerdings so 
schrottig, dass man sich besser selbst etwas schreibt.

von Gustl B. (-gb-)


Lesenswert?

Max schrieb:
> Der ICE40UP5K hat 2 interne Hardwaremodule, die zwei Dokumentationen auf
> der Webseite von Lattice habe ich mir schon durchgelesen und bin total
> überfordert.

Du meinst 
FPGA-TN-02010-1-7-iCE40-I2C-and-SPI-Hardened-IP-Usage-Guide.pdf ?
Hast du konkrete Fragen?

: Bearbeitet durch User
von lexi (Gast)


Lesenswert?

> Er soll erst alles in C probieren um es dann ins VHDL zu packen?

So würde ich es machen denke ich.

> VHDL-I2C-Cores gibt es wie Sand am Meer. Die meisten sind allerdings so
> schrottig, dass man sich besser selbst etwas schreibt.

Richtig. Ein I²C-Master ist jetzt auch nicht wirklich groß, aber wenn es 
wirklich um Platz geht, dann ist so ein Hardmacro schon praktisch.

Übrigens, "FPGA-TN-02011-1.6 - Advanced iCE40 I2C and SPI Hardened IP 
Usage Guide" erklärt die einzelnen Kontrollregister und Bits.

von Holger (Gast)


Lesenswert?

Max schrieb:
> Hat jemand von euch eventuell ein Beispiel-Code mit dem man zumindest
> mal 1 Byte senden und empfangen kann?

Auf dem MachXo2 Pico Board ist ein Ref-Design für den EFB & I2C Bus als
source drauf. Mit einem Tep.Sensor ...

Gruss Holger.

von Holger (Gast)


Lesenswert?

Holger schrieb:
> Ref-Design

https://www.latticesemi.com/alpha-mxo2-pico-kit

Runterscollen und unten sind alle Dokus & Ref dazu.

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.