hero画像
技術コラム
GMSL技術コラム

GMSL2 GUIを使って簡単スクリプト作成

目次

はじめに

GMSL (Gigabit Multimedia Serial Link)はアナログ・デバイセズ社(ADI社)が開発した、主に車載向けに最適な高速・高信頼性のシリアル通信技術で、GMSLのシリアライザおよびデシリアライザ(Ser/Des)IC製品としてラインナップされています。 近年、車載カメラや表示する映像の高解像度化が進んでおり、より高解像度の映像信号を安定して伝送できる技術が求められています。
このようなニーズに応えるため、GMSLもより高速なデータ伝送速度に対応できるよう次世代デバイスが登場しています。
第一世代の「GMSL1」は最大3Gbps、
第二世代の「GMSL2」は最大6Gbps、
第三世代の「GMSL3」は最大12Gbpsと性能が向上しています。

GMSLは高性能で多くの機能があり、複雑な映像アプリケーションでも実現できる反面、レジスタの設定項目が多く、初導入時にハードルとなることがあります。
また、GMSL1とGMSL2ではGMSLの通信方式が変更され、GMSL2のレジスタ数もGMSL1と比較して増加しており、設定に戸惑うケースがあります。

このような問題に対し、ADI社より提供されているGMSLのソフトウェアに搭載されたスクリプト自動生成機能が課題を解決します。
この機能でGMSL2映像伝送部のレジスタ設定を自動生成できます(映像部のみ)。
本記事ではツールの使い方を解説し、設計工数の削減とGMSL2のレジスタ設定方法の理解促進を目指します。
※今回紹介するスクリプト自動生成機能はCSI-2インターフェイスのSer/Desに対応します。

GMSL SerDes Public GUI Softwareの入手

まずはGMSL2の評価用ボードで使用するソフトウェア「GMSL SerDes Public GUI Software」をインストールします。 以下URLでソフトウェアをダウンロードすることができます。

もしくは、GMSL2の製品ページの「ツールおよびシミュレーション」の項目からダウンロードのリンクがありますのでそちらからアクセスしてください。

ソフトウェアのダウンロードページより、「GMSL_SerDes_Public_GUI_V0_1_6_2_Install.zip」をクリックし入手します。
ソフトウェアのダウンロードにはmy Analogのアカウントが必要になりますので、事前に準備、案内に従ってアカウントの作成をしてください。
※記事執筆時、ソフトウェアの最新Ver.は1.6.2です。

MAX96716A 製品ページのソフトウェアリンク図

図1 MAX96716A 製品ページのソフトウェアリンク

GMSL2 ソフトウェアのダウンロードページ

図2 GMSL2 ソフトウェアのダウンロードページ

ダウンロードが完了したら、フォルダに入っている「GMSL_SerDes_Public_GUI_V0_1_6_2_Install.exe」を起動しインストールを開始してください。

これで準備ができました。

今回の構成

「GMSL SerDes Public GUI Software」の機能を使って、今回は次のシンプルな構成でスクリプトを自動生成します。
<仕様>
Serializer:MAX96717
Deserializer:MAX96714
ビデオ信号:MIPI CSI-2, YUV422 8bit, VC0

構成図

図3 構成図

CSI Configuration Toolの使い方

<手順1>

インストールした「GMSL_SerDes_Public_GUI」を起動します。
「Tools」タブ >「 Video Config」にある「CSI Configuration Tool」をクリックします。
※CSI Configuration Toolを使用する場合、ハードウェアは不要です。
ソフトのみで使用することができます。

Configuration Tool 起動図

図4 Configuration Tool 起動

<手順2>使用するDeserializerを選択する。

「CSI Configuration Tool」の「Deserializer」に今回使用する「MAX96714」を選択します。
MAX96714を選択すると「Mode」、「I2C Device Address」が選択できるようになります。

「Mode」はMAX96714のMIPI CSI-2出力構成を選択します。
MAX96714のMIPI CSI-2出力は1 Port x 4laneにしか対応していないため、「1x4」が自動的に選択されています。
Deserializerの中には複数の構成に対応できる品番もあり、その場合は使用したい構成を選びます。

「I2C Device Address」はMAX96714のCFG0端子の処理で初期値が変わります。
今回はMAX96714起動時、I2C Device Addressは「0x50」を選択します。

Deserializerの基本設定入力図

図5 Deserializerの基本設定 入力

<手順3>使用するSerializerを選択する。

DeserializerにMAX96714を選択すると、Serializerの品番を入力できるようになります。
MAX96714はGMSL入力が1chしかないため、GMSL-A Serializerの欄しか表示されません。
複数のGMSL入力を持つDeserializerを選択すると、対応できる数だけGMSL-A/B/C/D Serializerと入力欄が表示されます。

GMSL-A Serializerと接続するため、チェックボックスにチェックをします。
Serializerには「MAX96717」を選択します。
MAX96717の「Mode」は「1x4」にしか対応していないため、「1x4」が自動で入力されます。
Power-up AddressはCFG0端子で決まり、今回は「0x80」を選択します。
もし起動後にMAX96717のDevice Addressを変更押したい場合は「Final Address」から任意のAddressを選択してください。
今回は変更しないため、同じ「0x80」を選択します。

最後に通信方式の選択を行います。

GMSL2はPixel modeとTunneling modeの2種類があり、どちらを使用するか選択しなければいけません。

[Pixel mode]
従来からあるGMSL2の通信方法です。
センサーが付与したCSI-2 CRCはSerializerでのエラーチェックで使用したあと取り除かれます。
その後、SerializerはGMSLのデータに置き換えた際にGMSL CRCを付与してDeserializerに送り、DeserializerでGMSL CRCチェックを行った後、再度CSI-2に変換します。
変換したCSI-2信号を元に新しくCSI-2 CRCを付与しDeserializerは後段のSoCへ送ります。
主に一般的な映像処理ではコチラの方法が使用されます。

GMSL2 Pixel mode図

図6 GMSL2 Pixel mode

[Tunneling mode]
新しく追加されたGMSL2の通信方式です。
センサーが付与したCSI-2 CRCを取り除かず、保持したままGMSL通信を経由して後段のSoCまで送ります。
GMSLのシススムを包括的に監視することができ、センサーの信号とSoCに到達した信号が完全一致しているか確認することができます。
特にADASなどの安全性が求められるアプリケーションで使用されます。

GMSL2 Tunneling mode図

図7 GMSL2 Tunneling mode

今回はPixel modeを選択しますので、Tunnelingのチェックボックスは空欄にします。

これでSerializerとDeserializerの選択ができました。
「Configure」をクリックし、データパスの詳細を設定します。

Serializerの基本設定 入力

図8 Serializerの基本設定 入力

<手順4> MAX96717(Serializer)の映像設定

「Configure」をクリックすると、今回のSerializer / Deserializerの組合せのブロック図が出てきます。

Serializer+Deserializer 構成図

図9 Serializer+Deserializer 構成図

ここからはMAX96717のビデオ入力を設定していきます。

まず「CSI」をクリックすると、MAX96717に入力されるCSI入力を定義できます。
MAX96717のMIPI CSI-2入力はPort-Bしか存在しないため、今回は「Port-B」に「VC(Virtual channel) 0」のデータタイプ(DT)「YUV422 8bit」が入力される場合を例に説明します。
この例ですと、「Add input VC」に「0」、「and DT」に「YUV422_8bit」、「on Port」に「B」を選択します。
また、Serializer内でVCを変更することができるため、VCを変更したい場合は「Remap VC」に任意のVCを選択します。
今回はVC0のCSI-2入力からVCは変更しないため、そのままRemap VCは「0」を選択します。
全ての項目を選択し「Add to Port」をクリックすると、Serializer Inputにビデオ入力が追加されます。
設定が終わったら右上の×をクリックしてCSI Inputリスト作成ウインドウを閉じます。

Serializer  CSI, Inputのリスト作成完了図

図10 Serializer CSI, Inputのリスト作成完了

MIPI CSI-2は1つのインターフェイスで複数の映像信号(ビデオストリーム)を扱うことができます。
今回は1つのビデオ入力を例にしていますが、同様にビデオ入力を定義することで、複数入力のスクリプトの作成にも対応しています。

SVC0~3を多重化した場合のSerializer Inputの例図

図11 VC0~3を多重化した場合のSerializer Inputの例

<手順5> MAX96717(Serializer)のMIPI PHY設定

ここからはMAX96717のMIPI PHYの設定をしていきます。

MIPIのPHYはC-PHYとD-PHYがありますが、MAX96714はD-PHYにしか対応していないため、左上の選択欄で「D-PHY」を選択します。

次にMIPI CSI-2入力のLane数をLane Coutで指定します。
1x4laneを想定しているため、Lane Coutは「4」を選択します。

SerializerはLaneのSwap、データの極性反転に対応しています。
LaneのSwapを行う場合は、各Data LaneのLane Mapブロックの数字を変更することでできます。
Data Laneのアサインが色分けされており、どのようにLane Swapしたのか一目で確認することができます。

センサーやSoCの都合により、極性を反転させたい場合は反転させたいData Laneの「Polarity Inversuion」にチェックを入れます。

最後にData LaneのDeskewが必要な場合は、Deskewの「Enable」にチェックを行います。
1.5Gbps/Laneよりも高い場合はDeskewが必要で、1.5Gbps/Lane以下の場合は必要に応じてチェックしてください。

今回の例では、Lane Swap、極性反転、Deskewは行わず、デフォルトの設定で進めます。
設定が終わったら右上の×をクリックしてMIPI D-PHY Rx Configurationウインドウを閉じます。

SerializerのDPHY設定(デフォルト)図

図12 SerializerのDPHY設定(デフォルト)

極性反転、Lane3とLane1をスワップした例図

図13 極性反転、Lane3とLane1をスワップした例

<手順6> MAX96714(Deserializer)の映像設定

ここからはMAX96714が受信するビデオ信号の設定をしていきます。

「CSI」をクリックし、MAX96717から送られてくるビデオデータをMAX96714が受信して、MAX96714のどのMIPI Portから出力するかを選択します。

「Route Input DT」のドロップダウンをクリックすると、<手順3>で定義したSerializer Inputの項目が出てきます。

今回はビデオデータが一つしかないため、通り道を指定したいビデオ「Route Input DT」に「GMSL-A PortB VC0 YUV422_8bit」を選択します。
このビデオデータをDeserializerのどのPortから出力するかを「to Deserializer Port」で決めます。
MAX96714はPort Aしかないため、「to Deserializer Port」は「A」を選択します。
指定したビデオのVCをDeserializerでは、どのようにするかを「with VC」で決めます。
今回はVC0で受信したビデオデータのVCは変更しないため、「with VC」は「0」を選択します。
もしDeserializer側でVCを変更したい場合は任意のVCを選択します。
次はデータタイプ(DT)を「and DT」で決めます。
通常、データタイプを途中で変更することはありませんので、同じ「YUV422_8bit」を選択します。
最後に「Add to Port」をクリックすると設定完了し、Deserializer Outputに設定した内容がリストとして表示されます。

上記の設定をSerializer側で定義したSerializer Inputのビデオデータに対してそれぞれ設定します。
全てのビデオデータで設定が完了すると、「All input DTs in the DES pipeline are routed.」が黄色から緑色に変わり準備OKです。
設定が終わったら右上の×をクリックしてCSI Output on Deserializerウインドウを閉じます。

Deserializer  CSI, Port割り当て完了図

図14 Deserializer CSI, Port割り当て完了

VC0~3のビデオデータを受信した時の設定例図

図15 VC0~3のビデオデータを受信した時の設定例

<手順7> MAX96714(Deserializer)のMIPI PHY設定

この設定が最後になります。
「DPHY」をクリックすると、MAX96714のMIPI PHYの設定画面が表示されます。
<手順4>MAX96717のMIPI PHY設定と同様のやり方で、MAX96714のMIPI PHY出力を設定します。
Deserializer側はMIPI のCLKレートを選択する必要がありますので、希望するCLKレートを指定します。

DeskewはHigh speed伝送の前に行うInitial Deskewと周期的に行うPeriodic Deskewがありますが、1.5Gbps/Laneよりも高いレートの場合は必要になります。

Copy fromは複数の出力MIPI Portを持っているDeserializerを選択している時に使用できます。
Portのデータをコピーすることができる機能で、例えば、Port Aに割り当てたビデオデータをそのままコピーしてPort Bからも出力するようなことができる設定です。

今回は、MIPI CLKを1000Mbpsとし、それ以外はデフォルトの設定にします。
設定が終わったら右上の×をクリックしてMIPI D-PHY Rx Configurationウインドウを閉じます。

これで設定は全て完了しました。

Deserializer DPHY 設定(MIPI CLK 1000Mbps)図

図16 Deserializer DPHY 設定(MIPI CLK 1000Mbps)

<手順8> スクリプトの生成

「Generate Script」をクリックします。

構成図, Generate Script図

図17 構成図, Generate Script

次に「Export Script」クリックします。
保存場所とファイル名を決めて「保存」をクリックすることで生成したスクリプトが保存されます。

構成図, Generate Script図

図18 Scriptの出力

スクリプトの読み込み

今回設定したスクリプト実際に評価ボードで使用したい場合、まずMAX96717とMAX96714の評価ボードを繋いでGUIに認識させた後、 File タブ>Load(.cpp)Fileから作成したスクリプトファイルを読み込むことで各デバイスに設定値がWriteされます。

作成したスクリプトの読み込み図

図19 作成したスクリプトの読み込み

さいごに

今回はソフトウェアでGMSL2のレジスタ設定を自動生成させる方法について説明しました。

本記事の例ではシンプルなSer/Des構成でしたが、同じやり方でSerializer x4個、Quad Deserializer x1個などの複雑な構成でも自動で生成することが可能です。

自動生成できるのは映像伝送部だけですので、実際のアプリケーションで使用する場合は、FSYNCの生成やGPIOなどを追加で設定する必要はありますが、簡単にスクリプトが作成できるため、設計工数を大幅に削減できます。

「GMSL SerDes Public GUI Software」には他にも便利な機能がありますので、「CSI Configuration Tool」と一緒に活用してみてください。

関連製品情報