こんにちは、NetVision技術部の今野です。

今回は、ジェネレータボード用ソフトに追加されている PLLSetting というツールを紹介します。

PLLSettingは、SVOGeneratorやNVFilePlayerなどで使用する
ピクセルクロック設定 や MIPIデータレート設定 を追加・編集するためのソフトウェアです。

PLLSettingでできること

PLLSettingでは、入力した周波数に対して、ボード内部で使用するPLL関連のレジスタ設定値を計算し、
既存ソフトで選択可能な設定として追加できます。

現在、主に以下の設定に対応しています。

  • SVL-03タイプ データレート設定
  • SVO-03-MIPI データレート設定
  • SVP-01タイプ PCLK設定
  • SVO-03タイプ PCLK設定

たとえば、SVO-06-CSIやSVP-01-GENをご利用の場合、Board Setting画面で選択する以下のような項目に、任意の設定値を追加できます。

具体的には、次のような要望に対応するためのツールです。

  • TimingGenに表示されるビデオクロック・ピクセルクロックの選択肢を追加したい
  • 任意のピクセルクロックで映像を出力したい
  • 特定のMIPIデータレートを設定候補として追加したい

これまで個別対応が必要だった設定を、お客様側でも柔軟に追加できるようにすることを目的としています。

なぜ専用ツールが必要なのか

一見すると、ピクセルクロックやデータレートは、任意の周波数をそのまま入力できればよいように見えるかもしれません。

しかし実際には、ボード内部のPLLや分周器の設定値を組み合わせることで、目的の周波数に近いクロックを生成しています。

例えばSVP-01タイプのPCLK設定では、基準クロックをもとに、複数の逓倍値・分周値を組み合わせて出力周波数を決定します。

FREQ [MHz] = 20 × (a × c) / (b × d × e)
ここで使用する
a, b, c, d, e
は自由な値ではなく、それぞれ設定可能な範囲があります。
また、PLL内部の動作周波数にも制約があるため、単純に目的の周波数から逆算すればよい、というものではありません。

そのため、任意の周波数を指定した場合には、以下のような処理が必要になります。

・設定可能な範囲内で
a, b, c, d, e
の組み合わせを探索する
・PLL内部の動作条件を満たしているか確認する
・目的の周波数に完全一致する組み合わせがあるか確認する
・完全一致しない場合は、最も近い周波数となる組み合わせを選ぶ

PLLSettingでは、このような制約条件を満たす組み合わせを自動で探索し、指定された周波数に対して適切なレジスタ設定値を生成しています。

アプリケーションとしての工夫

PLLSettingで行っている計算は、条件によっては数秒程度かかる場合があります。

計算中にUIの描画が止まってしまうと、アプリケーションが固まったように見えてしまいます。
そのため、PLLSettingではWPFとMVVM構成を採用し、計算処理とUI描画を分離しています。

これにより、設定値の探索処理を行いながらも、入力操作や画面表示の応答性を保てるようにしています。

元々このソフトは社内の開発・デバッグ用途で作成されたものですが、
お客様からいただく「任意のクロック設定を追加したい」という要望にも対応できるため、社外向けにもリリースされることになりました。

今後の展望

現状のPLLSettingは、TimingGen系ソフトとは独立したツールとして提供されています。

一方で、将来的にはPLLSettingの機能を取り込む形で、映像タイミング設定用ソフト全体をより使いやすく刷新していく予定です。

その一例として、MIPI DSI出力用ボードであるSVO-06-DSIでは、タイミング図の形式で値を入力し、
出力設定を作成できるソフトをすでに提供しています。

このソフトはTimingGenSVO06DSIから起動でき、内部ではPLLSettingと同様のクロック計算機能を利用しています。
フレームレートや解像度に応じて必要なクロック設定を自動計算し、より直感的に映像タイミングを作成できるようになっています。

最後に

ネットビジョンでは、ソフトウェアのエンジニアも募集しています。

USB通信を行うドライバ、ライブラリ、上位アプリケーションの開発経験がある方はもちろん、
PLLSettingでも使用しているWPFやMVVMなどの知識・実装経験がある方も歓迎しています。

ご質問等はお気軽に お問合せフォーム よりご連絡ください。