Forum: FPGA, VHDL & Co. 2D-Kamera VHDL Simulationsmodel


von P. K. (pek)


Lesenswert?

Hallo zusammen

Da ich für mein Kameramodul (AR0134) kein VHDL-Model gefunden habe und
es nicht selbst schreiben möchte (sonst verifiziere ich mich selbst),
suche ein generisches VHDL-Kamera-Simulationsmodel mit N-bit-parallelem
I/F (DCK, SF, SL, D[N-1:0]) für die FPGA-Interface-Entwicklung.
Idealerweise mit ein paar Konstanten parametrisierbar auf den jeweils
benutzten 2D-Kamera-Sensor und interpretierbarem Dateninhalt (Testbild).

Weiss jemand eine Quelle?

von Kest (Gast)


Lesenswert?

du möchtest dich selber nicht verifizieren, aber jemanden anders? ;-)

Im ernst, sowas schreibt man selber -- geht viel schneller und aus dem 
Datenblatt des Moduls kannst Du die richtigen Parameter nehmen.

von P. K. (pek)


Lesenswert?

Kest schrieb:
> Im ernst, sowas schreibt man selber

Naja, das wäre dann die Fallback-Lösung.

Natürlich mit dem Pferdefuss, dass ein genereller Denkfehler, in Modell 
und I/F eingefügt, durchaus passable Simulationsresultate liefern 
kann, weshalb ich erst mal checke ob schon irgendwo was unabhängiges 
existiert.

von Dito (Gast)


Lesenswert?

P. K. schrieb:
> Hallo zusammen
>
> Da ich für mein Kameramodul (AR0134) kein VHDL-Model gefunden habe und
> es nicht selbst schreiben möchte (sonst verifiziere ich mich selbst),
> suche ein generisches VHDL-Kamera-Simulationsmodel mit N-bit-parallelem
> I/F (DCK, SF, SL, D[N-1:0]) für die FPGA-Interface-Entwicklung.
> Idealerweise mit ein paar Konstanten parametrisierbar auf den jeweils
> benutzten 2D-Kamera-Sensor und interpretierbarem Dateninhalt (Testbild).
>
> Weiss jemand eine Quelle?

Ich könnte fast wetten das Du nichts finden wirst:
Zu speziell, wenn schon der Hersteller des Modules nichts liefern 
(kann/will) wer sonst?

Ggfs. gibt es aber irgendwo ein Evalboard an dem man sich mittels 
Logic-Analyzer (vorzugsweise PC Basiert) dranhängen kann und die Daten 
in ein File sampelt und anschließend von dort in einer Testbench 
"abspielt"?

Das hätte dann auch den Vorteil das Du ggfs. die physikalischen 
Gegebenheiten eines realen Sensors (HotPixel, weak Pixel) in Datenform 
vorliegen haben könntest...

Gruß

Dito

von Lars R. (lrs)


Lesenswert?

Hallo,

P. K. schrieb:
> Da ich für mein Kameramodul (AR0134)

Welches? Selbst gebaut?

> kein VHDL-Model gefunden habe und
> es nicht selbst schreiben möchte (sonst verifiziere ich mich selbst),
> suche ein generisches VHDL-Kamera-Simulationsmodel mit N-bit-parallelem
> I/F (DCK, SF, SL, D[N-1:0]) für die FPGA-Interface-Entwicklung.

Das ist typischerweise das geringste Problem. Man sieht es auch schnell 
und kann es relativ schnell beheben, falls bei diesem parallelen 
Interface etwas nicht wie erwartet funktioniert.

von P. K. (pek)


Lesenswert?

Lars R. schrieb:
> Welches? Selbst gebaut?
Ja, selbst gebaut (zumindest bis zum Schema). Liegt leider noch nicht 
auf dem Tisch, sonst würde ich mich nicht mit Modellen rumschlagen, 
sondern direkt den Chip ansteuern.

von J. S. (engineer) Benutzerseite


Angehängte Dateien:

Lesenswert?

Wie aufwändig soll es denn werden? Nur generisches Sensortiming oder 
auch auch physikalisch, elektrisch korrekt? Eigentlich reicht dafür ein 
reines trigger-Modell im Simulator, das entsprechend extrem eingestellt 
wird.

Nur, bei konkreten Vorausentwicklungen im ASIC-Bereich, wo beide 
Baustellen, nämlich der Sensor und der FPGA offen sind, geht man da in 
details - gfs auch in hardware.

Ich habe da mal was angedacht, um die Renderanimationen, die ich in 
Cinema mache, teilweise in Echtzeit aus dem FPGA kommen zu lassen, 
inklusive Zoomfahrten, Linseneffekte aber auch die typischen Defekte von 
Sensoren inklusive Rauschen, um Bildverarbeitung testen zu können.

Bin gerade dabei, das für HDMI flott zu machen (in der ersten Version 
kann es nur schnöde 800x600 mit Zoom für die Sensorpixel). Auch binning 
und Unschärfe ist bei entsprechend großem und schnellem FPGA möglich.

von Martin S. (strubi)


Lesenswert?

Moin,

ich hätte nen Core für sowas. Ist quasi ein virtueller Sensor, wo du die 
Sensorentimings (Front/Back porch, Line Valid/Frame Valid resp. Sync 
signale frei einstellst, mit verschiedenen Testbildmodi). Die 
Cosimulations-Variante kannst du per Python und Netzwerk-FIFO mit Daten 
füttern und die verarbeiteten Daten entsprechend auslesen. In der 
Hardware benötigst du eine CPU und etwas an RAM, falls du wahlfrei Daten 
generieren willst. Gibt dazu einen fertigen Videogenerator SoC für 
Synthese in VHDL.
Steckt aber einiges Hirnschmalz in der Sache und benötigt eine 
entsprechend virtuelle Maschine für die Simulation (Linux Container), so 
komplett supportfrei ist die Geschichte nicht, und kostet 
dementsprechend etwas an Schotter, um es an das Problem anzupassen.
Wenn Du die Verifikation selber machen willst, würde ich auch Kests Rat 
folgen. Was du selber kennst, kannst du auch optimal debuggen.
Falls Du komplett die Verifikation "outsourcen" willst, würde das ein 
grösseres Projekt werden.

Gruss,

- Strubi

von P. K. (pek)


Lesenswert?

Im Hinblick, dass ich das I/F für ein FPGA entwickle und das Kameraboard 
im Oktober auf dem Tisch liegt, ist es wahrscheinlich das sinnvollste, 
wenn ich da ein primitives "works-for-me"-VHDL-Modell selbermache um 
vorbereitend simulieren zu können. Ich plane dann halt etwas mehr Zeit 
für die Inbetriebnahme ein, um die Feinheiten mit dem Kameramodul 1:1 zu 
debuggen.

So oder so: Vielen Dank für die Anregungen!

von Lars R. (lrs)


Lesenswert?

Soweit ich es verstanden habe, geht es um die Ansteuerung eines Sensors 
mit parallelem Interface und 50-70MHz. Die von Jürgen S. und Martin S. 
geschrieben Dinge sind beeindruckend, haben aber mit der 
Modell-/Simulations-gestützten Ansteuerung eines solchen Sensors 
überhaupt nichts zu tun.

Für ein solche "einfaches" Interface benötigt man dies ohnehin nicht. 
Typischweise entstehen eventuelle Schwierigkeiten bei Dingen, die man 
falsch verstanden hat, übersehen hat, oder gar nicht wissen konnte.

@P.K.: Ich habe Dir eine PN geschickt. Nur falls Du Sie nicht bekommen 
hast: Würdest Du mir bitte eine schicken?

: Bearbeitet durch User
von strubi (Gast)


Lesenswert?

Lars R. schrieb:
> Soweit ich es verstanden habe, geht es um die Ansteuerung eines Sensors
> mit parallelem Interface und 50-70MHz. Die von Jürgen S. und Martin S.
> geschrieben Dinge sind beeindruckend, haben aber mit der
> Modell-/Simulations-gestützten Ansteuerung eines solchen Sensors
> überhaupt nichts zu tun.

Haben sie doch. Für div. Aptina-sensoren gibt es entspr. Profile mit 
exaktem timing. Kann sogar i2c Register emulieren. Das ist der Gag am 
virtuellen Sensor.

von Lars R. (lrs)


Lesenswert?

strubi schrieb:
> Lars R. schrieb:
>> Soweit ich es verstanden habe, geht es um die Ansteuerung eines Sensors
>> mit parallelem Interface und 50-70MHz. Die von Jürgen S. und Martin S.
>> geschrieben Dinge sind beeindruckend, haben aber mit der
>> Modell-/Simulations-gestützten Ansteuerung eines solchen Sensors
>> überhaupt nichts zu tun.
>
> Haben sie doch. Für div. Aptina-sensoren gibt es entspr. Profile mit
> exaktem timing. Kann sogar i2c Register emulieren. Das ist der Gag am
> virtuellen Sensor.

Das ist wirklich hübsch aber nicht relevant. Das Problem bei diesem 
Ansatz ist, dass eine Ansteuerung, die am echten Sensor nicht das 
vorhergesagte Ergebnis liefert, ebenso am Modell nicht das erhoffte 
Verhalten zeigt; und zwar für möglichst fast "alle" Fälle. Dabei hängt 
dies ggf. auch noch von der Beschaltung des Bildsensors ab. Wie "schlau" 
ist das Modell? simuliert es die analogen Vorgänge und die 
Funktionalität von nicht dokumentierten oder schwammig und knapp 
beschriebenen Registereinträgen?...
Andererseits sollte das Modell aber keinen Fehler liefern, wenn es mit 
dem Bildsensor (dann doch) problemlos und stabil läuft.

Das Timing von einem 14-bit parallen Interface ist doch überhaupt nicht 
die Schwierigkeit. Beim Bildsensor kommt es auf ganz andere Dinge an.

: Bearbeitet durch User
von J. S. (engineer) Benutzerseite


Lesenswert?

Ich stimme teilweise zu. Um die Auslese eines Bildes zu validieren, 
braucht es zunächst weder ein physikalisches timing noch ein Bild. Es 
reicht eine reine Logiksimulation. Allerding ist diese auch mehr oder 
weniger trivial, weil sich ein händisch erzeugtes Modell einfach durch 
Zählen validieren liesse, um es sicher zu machen. Es würde auch im 
Fehlerfall kein Problem entstehen, wenn sich später bei Anlieferung des 
realen Chips eine diesbezügliche Diskrepanz ergäbe: Es würde einfach ein 
Wert angepasst und fertig.

Bildverarbeitung im FPGA bedeutet aber nicht immer nur einfach, die 
Daten durchzulassen und weiterzureichen, sondern sie vorzuverarbeiten 
und eine Anpassung der Signalverarbeitung erfordert konkrete Testbilder. 
Und da lassen sich selbst bei schon vorhandenem Sensor nicht so einfach 
alle Szenarien darstellen, die man haben möchte, ganz zu schweigen von 
einer Entwicklung von Software, die die Entwicklung des Sensors 
begleitet, wie das heute oft der Fall ist. Auch lässt sich aus 
Zeitgründen Vieles nicht in der Simulation machen, wie z.B. 3D-Rauschen 
etc.

Hinzu kommt, daß oft auch ein elektrisches Timing getestet werden soll, 
um z.B. Laufzeiten auf Leiterbahnen und die Exemplarstreuung von Chips 
zu untersuchen. Bei meinem Core lässt sich nicht nur das Sensortiming 
variabel einstellen, sondern auch das elektrische.

von strubi (Gast)


Lesenswert?

Wenn existierende Sensoren emuliert werden sollen, macht das keinen 
Sinn, in die Details der Registerbugs zu gehn. Und dem TO geht es 
offenbar nicht um das Neudesign des Sensors...
Gerade Rauschen oder Artefakte lassen sich gut per Cosimulation 
erschlagen. Elektr. Kram interessiert nicht, das ist auch eher für 
ibis/spice. Auch wenn sich das im Prinzip ins hdl-modell einschleifen 
lässt.
Solange sich HW und Sim gleich verhalten, tut's das. Und wenn der 
Videogen mehr Stress als der Sensor erzeugen kann, hat man ne gute 
Robustness für die Schaltung gezeigt.

Klassiker: Auflösung im lfd. Betrieb ändern..

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

Soll hier ein Kameramodell oder nur ein Sensormodell her? Eine Kamera 
mit ihren vielfältigen Optionen und Einstellmöglichkieten simuliert kein 
Mensch mit VHDL. Vor allem keine Register. Was soll das bringen?

Und Sensormodelle bekommt man gewöhnlich vom Hersteller. Die müssen ja 
auch etwas zum Simulieren haben, wenn sie selbigen entwerfen. Das sind 
heute alles integrierte Sensortechnologien mit ASICs drauf. Die werden 
vorher 100mal hin und her- simuliert, bevor es in den Prozess geht.

von Strubi (Gast)


Lesenswert?

Weltbester FPGA-Pongo schrieb im Beitrag #4681096:
> Und Sensormodelle bekommt man gewöhnlich vom Hersteller. Die müssen ja
> auch etwas zum Simulieren haben, wenn sie selbigen entwerfen. Das sind
> heute alles integrierte Sensortechnologien mit ASICs drauf. Die werden
> vorher 100mal hin und her- simuliert, bevor es in den Prozess geht.

Ich habe noch keinen Hersteller gefunden, der irgendwas von seinen 
Pixel-Modellen hergäbe, abgesehen schon mal von den $$$-Tools, die man 
dafür bräuchte...
Die Komplettsimulation gibt's m.W. eh nicht. Was die 100mal anbetrifft, 
bin ich bei einigen Digitalsections auch skeptisch, da gibts doch ein 
paar Sensoren (die mit den 68xx-Cores), die recht buggy sind. Siehe 
obiger Klassiker mit der Auflösung.
Gerade deswegen lohnt es sich, seine eigene Verifikationskette 
aufzubauen. Sprich: Man kommt kaum drum herum.

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

Wenn ein Hersteller unbedingt Sensoren verkaufen will und der Endkunde 
groß genug ist, dann kann man da auch was bekommen, denn vorhanden sein 
muss das in jedem Fall. Ist mehr ein rechtliches Thema.

von J. S. (engineer) Benutzerseite


Lesenswert?

Ein Modoll, das die Analogoptionen abbildet wird man nicht bekommen. 
Wird aber auch nicht unbedingt nötig sein, meine ich. Das Digitale 
Verhalten ist schon ein Gewinn. Immerhin gäbe es mit einem solchem 
Modell die Chance, der Hersteller nachzuweisen, dass sein Sensor nicht 
in der Spec ist, wenn der daraufhin entwickelte Code nicht funzt :-)

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.