ひでみのアイデア帳 2017-11-18T20:43:26+09:00 urn:uuid:32c34578-c4da-8d90-5f18-1740239359ee 次にやりたいことを忘れないように備忘録 urn:uuid:e2bbb9bd-e3ea-6c1e-f9d5-316549bf514a 次にやりたいことを忘れないように備忘録

SDSoCで回路を生成するとこのような感じになる。

AXI Interconnectの先にアクセス用のモジュールとファンクション用の回路が生成される。

それを合成するとこんな感じに配線される。

フォーカスしているところはAXI InterconnectのAXIバスのところ。

今回はLattePandaからEdgeで書き込んだ。
]]>
2017-11-13T00:06:42+09:00 ひでみ hidemi@sweetcafe/jp <h1>次にやりたいことを忘れないように備忘録</h1> <p>SDSoCで回路を生成するとこのような感じになる。</p> <p><img src="./files/20171113-01.png" alt="" /></p> <p>AXI Interconnectの先にアクセス用のモジュールとファンクション用の回路が生成される。</p> <p>それを合成するとこんな感じに配線される。</p> <p><img src="./files/20171113-02.png" alt="" /></p> <p>フォーカスしているところはAXI InterconnectのAXIバスのところ。</p> <h5>今回はLattePandaからEdgeで書き込んだ。</h5>
ぼちぼちとZYBO Z7でMIPI urn:uuid:75e77aa7-4784-0b88-79b1-26480f2a4571 ぼちぼちとZYBO Z7でMIPI

手動でMIPIのCRC計算も正常であることがわかったので解析はこれでおしまい。

ぼちぼちとRTLを作り始めた。

しかし、LANE0とLANE1でシリアルデータが2bitずれてるんだよね。

まぁ、ロックすることは簡単だから別にいいんだけど、ちょっと、気持ち悪いよなぁ。

ひとまず、MIPIからAXI Streamで出力する回路を作った。

それでDMAなどを合体して盛ってみました。

そしたらこんなブロックになりました。

ついでなのでHDMI出力も盛っています。

まだ、Linux側のドライバを最新Kernelに取り込んでいないので、それができたらMIPIカメラをキャプチャするかな・・・

]]>
2017-11-08T01:00:29+09:00 ひでみ hidemi@sweetcafe/jp <h1>ぼちぼちとZYBO Z7でMIPI</h1> <p>手動でMIPIのCRC計算も正常であることがわかったので解析はこれでおしまい。</p> <p>ぼちぼちとRTLを作り始めた。</p> <p>しかし、LANE0とLANE1でシリアルデータが2bitずれてるんだよね。</p> <p>まぁ、ロックすることは簡単だから別にいいんだけど、ちょっと、気持ち悪いよなぁ。</p> <p>ひとまず、MIPIからAXI Streamで出力する回路を作った。</p> <p>それでDMAなどを合体して盛ってみました。</p> <p>そしたらこんなブロックになりました。</p> <p><img src="./files/20171108-01.png" alt="" /></p> <p>ついでなのでHDMI出力も盛っています。</p> <p>まだ、Linux側のドライバを最新Kernelに取り込んでいないので、それができたらMIPIカメラをキャプチャするかな・・・</p>
まだまだ、続いているMIPI解析 urn:uuid:82279b50-10d7-4857-8747-236e3a8167d0 まだまだ、続いているMIPI解析

ZYBO Z7用のMIPI Rx回路を作成しようとしているんだけど、もう少しマジメに解析してみよう。

昨日まで解析してたのは4 Laneモードでの解析だったみたいで、データを計算するとCRCが合わなかったのだ。

そこでマジメに解析ってことに・・・

40001A60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
40001A70: 00 00 00 00 00 00 00 00 AE B8 00 00 0A D0 00 00 
40001A80: C3 3C 00 00 06 14 00 00 07 14 00 00 07 14 00 00 
40001A90: 07 14 00 00 07 14 00 00 47 14 00 00 07 14 00 00 
40001AA0: 07 15 00 00 07 15 00 00 47 14 00 00 C7 15 00 00 

なぜか、ZYBO Z7では 2 Laneモードの場合、0xAEから始まるデータで取得できるみたい。

データを並べる

Lane 0

07_06_C3_0A_AE_00

Lane 1

14_14_3C_D0_B8_00

ビット列に展開

Lane 0

0000_0111 0000_0110 1100_0011 0000_1010 1010_1110 0000_0000

Lane 1

0001_0100 0001_0100 0011_1100 1011_0000 1011_1000 0000_0000

SoTを探す

下記のイタリックの部分が各LaneのSoTである。

Lane 1のSoTはLane 0より2bit遅く出現する(元はシリアル通信なので)。

Lane 0

0000_0111 0000_0110 1100_0011 0000_1010 1010_1110 0000_0000

Lane 1

0001_0100 0001_0100 0011_1100 1011_0000 1011_1000 0000_0000

SoTを起点にデータを取り直す

Lane 0

0001_1100 0001_1011 0000_1100 0010_1010 1011_1000

Lane 1

0001_0100 0001_0100 0011_1100 1011_0000 1011_1000

Lane 0/1で交互にデータを取ると・・・

2A_D0_0C_3C

こんな感じでこのパターンはRAW 8bitのWidthが0x0CD0で0x3CがECCとなる。

ECCも計算値と間違ってないので、これでOKなのである。

]]>
2017-11-05T23:51:01+09:00 ひでみ hidemi@sweetcafe/jp <h1>まだまだ、続いているMIPI解析</h1> <p>ZYBO Z7用のMIPI Rx回路を作成しようとしているんだけど、もう少しマジメに解析してみよう。</p> <p>昨日まで解析してたのは4 Laneモードでの解析だったみたいで、データを計算するとCRCが合わなかったのだ。</p> <p>そこでマジメに解析ってことに・・・</p> <pre><code class="text">40001A60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40001A70: 00 00 00 00 00 00 00 00 AE B8 00 00 0A D0 00 00 40001A80: C3 3C 00 00 06 14 00 00 07 14 00 00 07 14 00 00 40001A90: 07 14 00 00 07 14 00 00 47 14 00 00 07 14 00 00 40001AA0: 07 15 00 00 07 15 00 00 47 14 00 00 C7 15 00 00 </code></pre> <p>なぜか、ZYBO Z7では 2 Laneモードの場合、0xAEから始まるデータで取得できるみたい。</p> <h2>データを並べる</h2> <h3>Lane 0</h3> <p>07_06_C3_0A_AE_00</p> <h3>Lane 1</h3> <p>14_14_3C_D0_B8_00</p> <h1>ビット列に展開</h1> <h3>Lane 0</h3> <p>0000_0111 0000_0110 1100_0011 0000_1010 1010_1110 0000_0000</p> <h3>Lane 1</h3> <p>0001_0100 0001_0100 0011_1100 1011_0000 1011_1000 0000_0000</p> <h2>SoTを探す</h2> <p>下記のイタリックの部分が各LaneのSoTである。</p> <p>Lane 1のSoTはLane 0より2bit遅く出現する(元はシリアル通信なので)。</p> <h3>Lane 0</h3> <p>0000_0111 0000_0110 1100_0011 0000_1010 10<em>10_1110 00</em>00_0000</p> <h3>Lane 1</h3> <p>0001_0100 0001_0100 0011_1100 1011_0000 <em>1011_1000</em> 0000_0000</p> <h2>SoTを起点にデータを取り直す</h2> <h3>Lane 0</h3> <p>0001_1100 0001_1011 0000_1100 0010_1010 1011_1000</p> <h3>Lane 1</h3> <p>0001_0100 0001_0100 0011_1100 1011_0000 1011_1000</p> <h2>Lane 0/1で交互にデータを取ると・・・</h2> <p>2A_D0_0C_3C</p> <p>こんな感じでこのパターンはRAW 8bitのWidthが0x0CD0で0x3CがECCとなる。</p> <p>ECCも計算値と間違ってないので、これでOKなのである。</p>
ZYBO Z7でPiCAM MIPI解析 urn:uuid:c9f57bbd-39a2-b8e2-8139-2b87262aae89 ZYBO Z7でPiCAM MIPI解析

C93(冬コミ)は当選しました。

いきなり、MIPIとは違う話・・・

金曜日東カ35b「AQUAXIS」になります。

コミケに起しの際は技術書典同様にお立ち寄り頂ければ幸いです。

それは置いといて・・・

ぼちぼちとZYBO Z7でPiCAMのMIPIデータを解析しています。

だいたいの解析は完了?

どこが開始ビットでどんな風にデータを読めばよいかだいたい、解析できました。

ただ、腑に落ちない部分もあって・・・

  • データは6bitずれる
  • Frame StartのByte数が不明
  • RAW 8bit/10bit
  • 不明なデータフレームがある
  • 1Lineのデータの長さがわからない
    • 全てが固定でないような感じ・・・

ここまで解析できたがぼちぼちやってる状態です。

データシート読まずにやってるのも悪いのですが・・・

PiCAM V2(SONY製)

SONY製のPiCAM V2ですが8bitか10bitのRAWデータしか出力しないんですね。

PiCAMが出力するフレームは下記の4つでした。

  • Frame Start
  • Frame End
  • Embedded Data
  • RAW(8bit/10bit)

Frame Start

Frame Startは次のようなビット配列で到着する。

次のはオリジナルキャプチャーモジュールのデータである。

400010B0: 00 00 00 00 E0 80 00 00 02 7B 00 00 FC F5 00 00                       
400010C0: FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 00                       
400010D0: FF FF 00 00 FF FF 00 00 FF FF 00 00 3F 0F 00 00                       

これからMIPI LANE 0/1のデータを抜き出すと

  • LANE 0 = FC02E0
  • LANE 1 = F57BB0

これをビット列にする

  • LANE 0 = 1111_1100 0000_0010 1110_0000
  • LANE 1 = 1111_0101 0111_1011 1011_0000

SoTを見つけ出す(次のイタリックが10111000のコード)

  • LANE 0 = 1111_1100 0000_0010 1110_0000

ここからMIPIのDIを抜き出すと0x00でFrame Startがわかる。

しかし、その直後のデータが0x5Eとかになる。

これの意味がわからない。

たぶん、インクリメントな数値のように思える。

Frame End

まだ、出会ってない(^-^;

Embedded Data

これは何使えば良いのか不明なので無視する。

RAW(8bit/10bit)

フレームレングスが固定でないのが気になるところ。

あとはここさえ解ければ画像に戻せるんだが・・・

]]>
2017-11-03T23:25:57+09:00 ひでみ hidemi@sweetcafe/jp <h1>ZYBO Z7でPiCAM MIPI解析</h1> <p>C93(冬コミ)は当選しました。</p> <p>いきなり、MIPIとは違う話・・・</p> <p><a href="https://webcatalog-free.circle.ms/Circle/13601928">金曜日東カ35b「AQUAXIS」</a>になります。</p> <p>コミケに起しの際は技術書典同様にお立ち寄り頂ければ幸いです。</p> <p>それは置いといて・・・</p> <p>ぼちぼちとZYBO Z7でPiCAMのMIPIデータを解析しています。</p> <h2>だいたいの解析は完了?</h2> <p>どこが開始ビットでどんな風にデータを読めばよいかだいたい、解析できました。</p> <p>ただ、腑に落ちない部分もあって・・・</p> <ul> <li>データは6bitずれる</li> <li>Frame StartのByte数が不明</li> <li>RAW 8bit/10bit</li> <li>不明なデータフレームがある</li> <li>1Lineのデータの長さがわからない <ul> <li>全てが固定でないような感じ・・・</li> </ul></li> </ul> <p>ここまで解析できたがぼちぼちやってる状態です。</p> <p>データシート読まずにやってるのも悪いのですが・・・</p> <h2>PiCAM V2(SONY製)</h2> <p>SONY製のPiCAM V2ですが8bitか10bitのRAWデータしか出力しないんですね。</p> <p>PiCAMが出力するフレームは下記の4つでした。</p> <ul> <li>Frame Start</li> <li>Frame End</li> <li>Embedded Data</li> <li>RAW(8bit/10bit)</li> </ul> <h2>Frame Start</h2> <p>Frame Startは次のようなビット配列で到着する。</p> <p>次のはオリジナルキャプチャーモジュールのデータである。</p> <pre><code class="text">400010B0: 00 00 00 00 E0 80 00 00 02 7B 00 00 FC F5 00 00 400010C0: FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 00 400010D0: FF FF 00 00 FF FF 00 00 FF FF 00 00 3F 0F 00 00 </code></pre> <p>これからMIPI LANE 0/1のデータを抜き出すと</p> <ul> <li>LANE 0 = FC02E0</li> <li>LANE 1 = F57BB0</li> </ul> <p>これをビット列にする</p> <ul> <li>LANE 0 = 1111_1100 0000_0010 1110_0000</li> <li>LANE 1 = 1111_0101 0111_1011 1011_0000</li> </ul> <p>SoTを見つけ出す(次のイタリックが10111000のコード)</p> <ul> <li>LANE 0 = 1111_1100 0000_00<em>10 1110_00</em>00</li> </ul> <p>ここからMIPIのDIを抜き出すと0x00でFrame Startがわかる。</p> <p>しかし、その直後のデータが0x5Eとかになる。</p> <p>これの意味がわからない。</p> <p>たぶん、インクリメントな数値のように思える。</p> <h2>Frame End</h2> <p>まだ、出会ってない(^-^;</p> <h2>Embedded Data</h2> <p>これは何使えば良いのか不明なので無視する。</p> <h2>RAW(8bit/10bit)</h2> <p>フレームレングスが固定でないのが気になるところ。</p> <p>あとはここさえ解ければ画像に戻せるんだが・・・</p>
ZYBO Z7のMIPI信号の解析 urn:uuid:83e42bee-530c-269b-b882-b4d37f546361 ZYBO Z7のMIPI信号の解析

さて、解析できる回路を作ったのでさっそく信号をキャプチャーしてみた。

Webを調べるとMIPIの同期は1011_1000な信号を拾えればOKのようなのだがこれのMSB/LSBはよく分かっていない。

信号をキャプチャーしてみるとこんな感じのデータが取得できる。

400010A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
400010B0: 00 00 00 00 2E B8 00 00 C0 29 00 00 FF FF 00 00
400010C0: FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 00
400010D0: FF FF 00 00 FF FF 00 00 FF 4F 00 00 03 00 00 00
400010E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

データはオリジナルキャプチャーモジュールの作りなので次のようにint型でデータが並んでいる。

それが入力クロックで取得できていることになっている。

bit 信号
[31:20] 未使用
[19:16] LP_LANE1_N, LP_LANE1_P, LP_LANE0_N, LP_LANE0_P
[15:8] MIPI_LANE1
[7:0] MIPI_LANE0

つまり、MIPI_LANE0は次のような順番になっているということです。

0x2E, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03

ビットにするとこんな感じなのかな?

0010_1110_1100_0000_1111_1111...

う〜ん、10Byteぐらいのデータってなんだ?

しかも、1011_1000なデータって見つからんし・・・

他にはこんなデータがあった。

400011F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40001200: 00 00 00 00 00 00 00 00 AE B8 00 00 84 04 00 00
40001210: 42 AA 00 00 95 00 00 00 16 55 00 00 84 55 00 00
40001220: 96 71 00 00 63 5A 00 00 95 11 00 00 56 55 00 00
40001230: 55 5A 00 00 15 07 00 00 40 A5 00 00 95 29 00 00

こっちは長いので本命のデータかもしれない。

夜も更けてきたので今日はここま

さて、本日はC93の当落発表なのでこれで今年最後にもうひと頑張りするかしないかきまるのだ。

]]>
2017-11-02T02:15:19+09:00 ひでみ hidemi@sweetcafe/jp <h1>ZYBO Z7のMIPI信号の解析</h1> <p>さて、解析できる回路を作ったのでさっそく信号をキャプチャーしてみた。</p> <p>Webを調べるとMIPIの同期は1011_1000な信号を拾えればOKのようなのだがこれのMSB/LSBはよく分かっていない。</p> <p>信号をキャプチャーしてみるとこんな感じのデータが取得できる。</p> <pre><code class="text">400010A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 400010B0: 00 00 00 00 2E B8 00 00 C0 29 00 00 FF FF 00 00 400010C0: FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 00 400010D0: FF FF 00 00 FF FF 00 00 FF 4F 00 00 03 00 00 00 400010E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</code></pre> <p>データはオリジナルキャプチャーモジュールの作りなので次のようにint型でデータが並んでいる。</p> <p>それが入力クロックで取得できていることになっている。</p> <table> <thead> <tr> <th>bit</th> <th>信号</th> </tr> </thead> <tbody> <tr> <td>[31:20]</td> <td>未使用</td> </tr> <tr> <td>[19:16]</td> <td>LP_LANE1_N, LP_LANE1_P, LP_LANE0_N, LP_LANE0_P</td> </tr> <tr> <td>[15:8]</td> <td>MIPI_LANE1</td> </tr> <tr> <td>[7:0]</td> <td>MIPI_LANE0</td> </tr> </tbody> </table> <p>つまり、MIPI_LANE0は次のような順番になっているということです。</p> <p>0x2E, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03</p> <p>ビットにするとこんな感じなのかな?</p> <p>0010_1110_1100_0000_1111_1111...</p> <p>う〜ん、10Byteぐらいのデータってなんだ?</p> <p>しかも、1011_1000なデータって見つからんし・・・</p> <p>他にはこんなデータがあった。</p> <pre><code class="text">400011F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40001200: 00 00 00 00 00 00 00 00 AE B8 00 00 84 04 00 00 40001210: 42 AA 00 00 95 00 00 00 16 55 00 00 84 55 00 00 40001220: 96 71 00 00 63 5A 00 00 95 11 00 00 56 55 00 00 40001230: 55 5A 00 00 15 07 00 00 40 A5 00 00 95 29 00 00</code></pre> <p>こっちは長いので本命のデータかもしれない。</p> <p>夜も更けてきたので今日はここま</p> <p>さて、本日はC93の当落発表なのでこれで今年最後にもうひと頑張りするかしないかきまるのだ。</p>