Forum: FPGA, VHDL & Co. verständnisfrage i2c bzw generell sequenzieller ablauf mit


von Sssssss (Gast)


Lesenswert?

Hi!

Ich arbeite mich jetzt seit 2 Wochen in vdhl und FPGAs (spartan3) ein
und hab noch nicht wirklich viel Ahnung von vhdl.
Hab zwar mal ne VL gehört wo das grob angerissen wurde,
fand es damals aber stinklangweilig und hab mich gefragt wozu man das
jemals braucht g

Jetzt wo ich das ganze praktisch anwende finde ich das schlichtweg
genial :)

Mein Testaufbau funktioniert bis jetzt wunderbar:
- externes sram zeitmultiplex (verhält sich wie ein dual port asram)
- vga output liest mit 25mhz aus sram und zeigt es auf vga monitor
- simulierte cmos Kamera schreibt mit 25mhz ins sram

Meine simulierte Kamera besteht aus einer vhdl Komponente
die sich genauso verhält wie nachher die kamera, sie schreibt
zum testen einfach animierte bunte streifenmuster ins sram.

Jetzt möchte ich die Cam dranhängen, stehe aber vor dem Problem dass
ich sie beim einschalten per i2c Konfigurieren muss/will.
Eine Statemachine für einen i2c master sollte kein Problem sein.

Ich frag mich nun aber wie ich in vhdl etwas wie:
i2c_write_address(0x00, 0xAB);
i2c_write_address(0x00, 0x12);
i2c_write_address(0x00, 0x34);
...
nacheinander aufrufe.

Meine Idee wäre jetzt der i2c statemachine einen 8bit daten und adress
input
und ein start_write input sowie ein write_done output zu verpassen.

Und dann ein grosses switch/case gebilde was nach und nach alle daten
setzt.
Zum beispiel was wie
process(write_done)
begin
if rising_edge(write_done) then
  if (not_finished) then


Wenn ich jetzt die oben genannte Reihenfolge
schreiben will sieht das aber sehr unelegant bzw groß
aus (sind bis zu 20/30 register).

Gibt es da eine elegante Möglichkeit ? Hat evtl jemand nen
Codeschnipsel wo ich mal gucken kann wie man sowas sequentielles
generell macht ?

von Sssssss (Gast)


Lesenswert?

yeah mein erster doppelpost ...
bzw ausversehen auf strg+enter gekommen beim tippen :-X

Diesen thread nicht beachten!

hier ist der richtige:
http://www.mikrocontroller.net/forum/read-9-258131.html?reload=yes#258131

sorry ;)

von Sssssss (Gast)


Lesenswert?

hmm ok da hat jmd den anderen thread gelöscht g
Also bitte doch hier posten 8)

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.