Forum: Mikrocontroller und Digitale Elektronik 5 OVM6211-KAMERAS mit einem Cora z7-10 verbinden


von Dannick M. (nickdann27)


Lesenswert?

Hallo zusammen,

ich habe einige Fragen bezüglich der Verbindung von 5 CMOS Kameras 
"OVM6211" mit einem Cora z7-10.

Nach meiner Suche konnte ich feststellen, dass die OVM6211-Kamera eine 
MIPI und eine SCCB Interface unterstützt. Die MIPI wäre von Vorteil, 
weil es eine schnelle Übertragung von einer großen Menge von Daten 
ermöglicht.

Mein Problem ist, dass ich bis jetzt noch keine wirkliche Anleitung oder 
test-Aufbau finden konnte, weder in dem Datenblatt von der "OVM6211" 
noch von dem Cora z7-10, wie sich so eine MIPI verbindung aufbauen 
lässt.

Ich würde mich über Vorschläge oder Vorgehensweise freuen

Liebe Grüße

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das ist der "Vorteil" von MIPI CSI, daß der Kram effektiv undokumentiert 
ist.
Die Spezifikation gibt es bei der MIPI, die rückt sie aber nur an 
Mitglieder 'raus, und Mitglied wird man nur als Hersteller von 
Smartphones & Co. mit entsprechendem Volumen ...

Mit etwas Glück findet man im Netz eine nicht sehr legale Kopie 
irgendeiner Version des Standards.

von Frank K. (fchk)


Lesenswert?

Ist das Cora-Board fix? Warum willst Du das verwenden?

Weswegen ich frage: Die üblichen FPGAs haben keinen Support für den 
D-PHY vom  CSI-2. MIPI hat nämlich das Kunststück fertiggebracht, einen 
PHY zu designen, der sowohl single-ended LVCMOS als auch LVDS 
differentiell ist - nicht gleichzeitg, aber immerhin. Du wirst tricksen 
müssen, um das überhaupt mit Deiner Hardware hinzubekommen. MIt viel 
Erfahrung und Messtechnik im GHz-Bereich ist das möglich. Die Frage ist, 
ob das für DICH möglich ist.

Es gibt bessere Plattformen für sowas:

https://auvidea.eu/j106/
https://auvidea.eu/images/auvidea/products/tx1/J106/J106_6_PPI_Camera.JPG

Wenn Du die Pinbelegung Deiner Kameramodule hast, ist der Hardwareteil 
keine Hürde mehr.

fchk

von Dannick M. (nickdann27)


Lesenswert?

Danke für die schnelle Antwort und die Hilfreichen Vorschläge.

Ich benutze ein cora-Board weil es mir im Rahmen meiner Masterarbeit von 
der Uni zur Verfügung gestellt wurde mit der Begründung, dass es eine 
Ethernet-Verbindung hat für die schnelle Datenübertragung, ein 
ARM-Cortex, womit ich direkt Linux für die Steuerung dadrauf spielen 
kann und weil das ganze Multikamerasystem für ein Echtzeit 
Betriebssystem herstellt werden muss.

Ich konnte bisher feststellen, dass es ein "MIPI CSI Controller von 
Xilinx" gibt, das als IP benutzt werden kann.

Ich recherchiere im Moment, wie ich das mit den Kameras im Betrieb 
nehmen kann.

Hättet ihr bezüglich einige vorschläge?

von Frank K. (fchk)


Lesenswert?

Dannick M. schrieb:

> Ich benutze ein cora-Board weil es mir im Rahmen meiner Masterarbeit von
> der Uni zur Verfügung gestellt wurde mit der Begründung, dass es eine
> Ethernet-Verbindung hat für die schnelle Datenübertragung, ein
> ARM-Cortex, womit ich direkt Linux für die Steuerung dadrauf spielen
> kann und weil das ganze Multikamerasystem für ein Echtzeit
> Betriebssystem herstellt werden muss.

Was ist denn genau das Thema Deiner Masterarbeit? Ist die Realisierung 
der CSI2-Anbindung zentraler Bestandteil des Themas oder nur Mittel zum 
Zweck, um  irgendetwas anderes zu machen?

Die NVidia-Lösung, die ich Dir gezeigt habe, ist einerseits von der 
Rechenleistung des ARMs sehr viel höher (4 oder 6 Kerne mit 1.4 bis 2 
GHz), und Du hast eine dicke GPU für die Bildverarbeitung und weitere 
Hardware fürs Debayering dabei. Debayering müsstest Du bei Deiner Lösung 
selber machen, und auch das ist nicht trivial, wenn es gut sein soll. 
Weißabgleich wird auch ein Thema sein, was Dich verfolgen wird.
Wie gesagt, wenn Du schnell eine funktionierende Lösung haben willst, 
ist das genau der Weg. Dann kannst Du Dich auf Deine eigentliche 
Applikation konzentrieren, wenn das Dein Thema ist.

> Ich konnte bisher feststellen, dass es ein "MIPI CSI Controller von
> Xilinx" gibt, das als IP benutzt werden kann.

Ja, das gibt es. Das kostet aber normalerweise Geld. Hast oder bekommst 
Du das? Bekommst Du auch zugang zu der entsprechenden Messtechnik und 
den MIPI-Standarddokumenten? Wenn nein, dann hast Du ein Problem. Und 
zwar ein ernstes.

Außerdem braucht dieses Paket externe Hardware. Hast Du die? Machst Du 
die?  Kennst Du Dich mit dem Routing von schnellen differentiellen 
Signalen im GHz-Bereich aus? Kannst Du entsprechende Leiterplatten 
fertigen lassen? Wenn nicht, dann hast Du ein weiteres, ernstes Problem. 
Einfach die Kameras mit ein paar Drähten an die Buchsenleisten anklemmen 
funktioniert nicht. Ist Dir das klar?

Ist Dir auch klar, dass die normalen Buchsenleisten im Arduino-Stil 
eigentlich nicht für die Übertragung von schnellen differentiellen 
Signalen gedacht und/oder geeignet sind? Stichwort Signalintegrität.

Im Klartext: Ich rate ausdrücklich von diesem Board ab. Notfalls such 
Dir ein anderes Thema für Deine Masterarbeit.

fchk


>
> Ich recherchiere im Moment, wie ich das mit den Kameras im Betrieb
> nehmen kann.
>
> Hättet ihr bezüglich einige vorschläge?

von Strubi (Gast)


Lesenswert?

Dannick M. schrieb:
> Ich konnte bisher feststellen, dass es ein "MIPI CSI Controller von
> Xilinx" gibt, das als IP benutzt werden kann.
>
> Ich recherchiere im Moment, wie ich das mit den Kameras im Betrieb
> nehmen kann.
>
> Hättet ihr bezüglich einige vorschläge?

Ja, von fünf Kameras erst mal Abstand nehmen. Es ist mit zweien schon 
komplex genug, und die Chance sich dran zu verheizen recht hoch. 
Bemerkungen zu dieser Art didaktischen Ansätze von Seiten der Alma Mater 
lasse ich mal aussen vor, da ich nicht weiss, wieviel Vorarbeit da schon 
rein ging.

Ansonsten wurde oben schon so einiges stichhaltiges dazu gesagt.
Wenn du dich nicht mit den Eigenheiten der gut protektionierten 
MIPI-Technik auseinandersetzen willst, würde ich mir mal die 
CrossLink-Bausteine von Lattice ansehen. Mit geeigneten Tools lassen 
sich die auch simulieren.
Ansonsten wird der Versuch, MIPI in den Xilinx-Käfer reinzukriegen, mit 
diesem Board schon elektrisch ein Reinfall, vom Core ganz abgesehen.

Die Frage ist immer noch, was ist eigentlich das Lernziel (oder schon 
eine Machbarkeitsstudie?).
Dein Sensor ist schon mal ein spezielles Teil, dass eine Uni von OV(!) 
die vollen Infos kriegt, würde mich schon erstaunen.
Wenn Lernziel = Tracking als solches, nimmst du lieber einen klassischen 
Aptina Global-Shutter (MT9V034, o.ä.). und lässt MIPI erst mal aussen 
vor, da gibt es nämlich trotz "Standard" eine Menge Showstopper. Nächste 
Baustelle: Linux/Echtzeit/v4l2, ist man sich an euerm Lehrstuhl im 
Klaren, was da an Expertise notwendig ist, um das sauber zum Rödeln zu 
kriegen?

Täglich grüsst das Murmeltier, und ich sag immer wieder: Keep it simple.

von Dannick M. (nickdann27)


Lesenswert?

Hallo Leute,

wieder vielen Dank erstmal für die Tipps.

Nach langen Recherchen und durch eure Empfehlungen ist mir und mein 
Dozent klar geworden, dass MIPI CSI 2 doch eine harte Baustelle wäre, 
deswegen haben wir uns für ein OV7690 entschieden, was mit einer SCCB 
und DVP Schnittstelle implementiert wird. Mit diser Kamera konnte ich 
schon deutlich mehr Literaturen im Internet finden und durch das 
Datenblatt, was von OV zur Verfügung gestellt wurde konnte ich schon ein 
Plan haben wie die Verbindung zum XillixBoard erfolgen wird.
Im Moment stelle ich erstmal meine PCB Design, wodrauf meine Kameras 
kommen werden und bald geht es los mit der Implementierung des 
Algorithmus für die Bilder Aufnahmen mit Vivado.
Die Bildverarbeitung und die Simulation erfolgt in meinem Projekt mit 
Matlab .
Also ich verwende wirklich den FPGA nur auf Grund seiner 
Geschwindigkeit.
Das Thema für meine Masterarbeit ist: „Entwicklung einer Baugruppe zum 
Betrieb eines Multikamerasystems via Xilinx-PLD“

Für Vorschläge und Tipps bin ich immer sehr Dankbar :)

Viele Grüße

von Kawumm (Gast)


Lesenswert?

Dannick M. schrieb:
> Für Vorschläge und Tipps bin ich immer sehr Dankbar :)

Ja aber ist eigentlich bei dem Thema Deine Aufgabe alles selbst zu 
recherchieren und nicht die des Forums. Du musst i.d.R. alle verwendeten 
Hilfsmittel und Hilfeleistenden in der Arbeit aufführen.

Weil es geht ja scheinbar nicht um die Bildverarbeitung (sprich 
Algorithmen entwickeln o.ä.) sondern tatsächlich um die Hardware, 
Low-Level Kram und die Plattform ansich. Wenn das nur Mittel zum Zweck 
wäre, wärs unkritisch, so aber nicht.

von Frank K. (fchk)


Lesenswert?

Dannick M. schrieb:

> Nach langen Recherchen und durch eure Empfehlungen ist mir und mein
> Dozent klar geworden, dass MIPI CSI 2 doch eine harte Baustelle wäre,
> deswegen haben wir uns für ein OV7690 entschieden, was mit einer SCCB
> und DVP Schnittstelle implementiert wird.

Sehr gut. Das ist machbar.

> Im Moment stelle ich erstmal meine PCB Design, wodrauf meine Kameras
> kommen werden und bald geht es los mit der Implementierung des
> Algorithmus für die Bilder Aufnahmen mit Vivado.

Mache es besser andersrum: Implementiere zuerst den VHDL/Verilog-Teil. 
Wenn das fertig ist und in der Simulation einwandfrei läuft, dann machst 
Du die Hardware. Oder zumindest solltest Du den Auftrag für die 
Leiterplatte so lange zurückhalten.

Die FPGA-Pins sind nämlich nicht alle gleich. Da gibt es Pins, die 
speziell für Taktleitungen gedacht sind, andere haben spezielle Buffer 
oder so, dann gibt es meist verschiedene Bänke, die unterschiedliche 
IO-Standards und Versorgungsspannungen haben können, und zum Schluss 
kann auch noch das interne Routing eine Rolle spielen. Ob das alles so 
zusammen passt, weißt Du erst sicher, wenn Router und Placer ihre Arbeit 
getan haben.

Denke dran, dass Deine Kameras keine 3.3V mögen. Würdest Du ein eigenes 
FPGA-Board machen, würdest Du die Kamerasignale alle in eine Bank legen 
und die mit 2.8V betreiben. Das kannst Du aber bei Deinem Board 
wahrscheinlich nicht. Daher brauchst Du hinreichend schnelle 
Levelshifter. Nimm keine bidirektionalen Levelshifter (außer bei I2C, da 
speziell dafür passende wie PCA9517 oder PCA9306). Empfehlung: 
74AVC1T45/2T45/2T245/4T245/8T245.

fchk

von Strubi (Gast)


Lesenswert?

Frank K. schrieb:
> Denke dran, dass Deine Kameras keine 3.3V mögen. Würdest Du ein eigenes
> FPGA-Board machen, würdest Du die Kamerasignale alle in eine Bank legen
> und die mit 2.8V betreiben. Das kannst Du aber bei Deinem Board

Ich sehe da kein Problem, sind ja (zumindest was Video) angeht 
sensorseitige Ausgänge. Höchstens wenn noch ein Trigger vom FPGA an 
den Sensor muss...

Und die SCCB aka i2c kann man im Paranoia-Mode noch mit mit zwei 
MOSFET-Levelshiftern abhaken.

Ansonsten hätte ich dir das VIP von Lattice mit dem fertigen 
Stereo-Sensor-Board empfohlen. Das ist schon genug komplex und dank der 
schlecht dokumentierten IMX214-Sensoren nervig zu handhaben, aber du 
kannst dich da auf die reine FPGA-Architektur und BV fokussieren. 
Multi-Kamera unter Linux ist - je nach Anwendung - ein Fall für sich und 
führt bei gewissen Echtzeitanforderungen zu einigem Aufwand, da kommt 
auch immer die Frage, ob man das wirklich braucht, und nicht stattdessen 
pragmatisch <n> JPEG-Kameras einsetzt (USB oder Ethernet). Die Bilder 
müssen ja allenfalls auch noch irgendwo hin (wenn auch nur zu 
Debugzwecken).

von Dannick M. (nickdann27)


Lesenswert?

Hi Leute,

erstmal danke für die Tipps.
Leider hat es auch nicht geklappt mit dem 0v7690 , weil Omnivision wohl 
nur in großen Mengen Bildsensoren verkauft und so viel davon brauche ich 
auch nicht für mein Projekt. Aus diesem Grund haben wir uns für ein 
AR0135 CMOS Bildsensor  entschieden, was mit einer LVDS Schnittstelle 
angesteuert wird.

 Ich wollte mir den ArduCAM USB2 Kamera Shield kaufen, um schon was mit 
dem Cora z7-10 ansteuern zu können, aber ich bin mir da noch nicht so 
ganz sicher ob es Sinn macht. Ich suche noch nach einem LVDS Protokoll, 
was in VHDL/HLS beschrieben ist.

Ich möchte erstmal die Software-Seite( VHDL/HLS Algorithmus für die 
Bildverarbeitung, Simulation) abschließen bevor ich mit der 
Hardware-Seite (Platine herstellen, Routing…) anfange, deswegen brauche 
einige Tipps von euch und zwar:

-   was soll ich mir am besten  kaufen , um eine Kamera, die eine LVDS 
Schnittstelle unterstützt mit dem FPGA zu verbinden?
-  Durch meine Recherchen konnte ich den PYTHON 480 finden, der 
unterstützt eine LVDS Schnittstelle. Habt ihr schon damit gearbeitet?

von Frank K. (fchk)


Lesenswert?

Dannick M. schrieb:

> Leider hat es auch nicht geklappt mit dem 0v7690 , weil Omnivision wohl
> nur in großen Mengen Bildsensoren verkauft und so viel davon brauche ich
> auch nicht für mein Projekt.

Das war klar.

> Aus diesem Grund haben wir uns für ein
> AR0135 CMOS Bildsensor  entschieden, was mit einer LVDS Schnittstelle
> angesteuert wird.

FALSCH!

Es gibt den AR0135AT mit SLVS-Interface, und es gibt den AR0135CS, der 
zusätzlich ein normales Parallel CMOS Interface hat - genauso wie die 
OV7690. Wenn Du schlau bist, nimmst Du den AR0135CS.

> ganz sicher ob es Sinn macht. Ich suche noch nach einem LVDS Protokoll,
> was in VHDL/HLS beschrieben ist.

LVDS ist kein Protokoll, sondern ein Standard für die elektrischen 
Eigenschaften einer Schnittstelle. Dein XiLinx-Board könnte prinzipiell 
LVDS, wenn Du mindestens eine Bank auf 2.5V Signalspannung umstellen 
könntest. Kannst Du aber nicht.

Außerdem hast Du hier kein LVDS, sondern SLVS, und das ist nicht 
kompatibel und wird so ohne weiteres auch nicht von Deinem XILINX-FPGA 
unterstützt. Die Pintreiber können es nicht.

fchk

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.