目次
1 はじめに
FPGA 画像取得の分野では、最も複雑で技術的に最も難しいプロトコルは MIPI プロトコルであるはずです。MIPI デコードの難しさにより、無数の英雄が競争してきたため、ザイリンクスは開発者が使用できる専用の IP コアを正式にリリースする必要があります。 、そうでない場合はハイエンドすぎます。この操作は多くの FPGA 開発者を直接怖がらせ、誰もプレイしなくなります。
この設計は、IMX219 カメラから 1080P 4Line MIPI ビデオを収集する Lattice の LCMXO3LF-6900C-5BG256C 開発ボードに基づいています。IMX219 カメラは特別なカメラ アダプタ ボードです。アダプタ ボードの回路図と PCB ソース ファイルが提供されています。 Altium Designerシリーズが使用可能 ソフトウェアを開くと、ボード上で直接量産することも可能 Lattice FPGAには独自のMIPIデコードソース言語があり、それを直接呼び出してMIPIデコードを完了できる これも独自の利点ですMIPI ビデオのエンコードとデコードにおける Lattice FPGA の MIPI ビデオが FPGA に入った後、D-PHY デシリアライズ後、バイト アラインメント、ライン アラインメント、MIPI CSI パケット デコード、RAW10 からベイヤーへ、ベイヤーから RGB へ、RGB から YUV へ、ビデオ出力補正、最終ビデオ データは Cypress FX3 USB3.0 インターフェイス出力に送信されます。Cypress を使用します。公式 USB3.0 カメラ ホスト コンピュータはビデオを受信して表示します。Lattice FPGA 開発ボードは、アダプタ ボードの回路図と PCB ソース ファイルを提供します。 Altium Designer シリーズ ソフトウェアで開くことができ、ボード上で直接大量生産することもできます。
この記事では、設計スキームについて詳しく説明します。エンジニアリング コードがコンパイルされて渡された後、ボード上でデバッグおよび検証でき、プロジェクトを直接移植できます。学校の学生が卒業設計、卒業プロジェクトを行うのに適しています。医療および軍事産業への応用も可能 他の産業におけるデジタルイメージングおよび画像伝送分野、完全かつスムーズな
エンジニアリングソースコードと技術サポートの提供、
エンジニアリングの入手方法ソース コードとテクニカル サポートは記事の最後にあります。最後まで辛抱強く待ってください。MIPI
プロトコルについては、自分で検索してください。CSDN には多くの偉い人が詳しく説明しているため、ここでは書きませんそれについてもっと詳しく;
2. Lattice FPGA デコード MIPI のパフォーマンスと利点
一言: 素晴らしい、パフォーマンスは次のとおりです。
1: Lattice FPGA は MIPI をデコードします。FPGA には独自の MIPI デコード ソース言語があり、MIPI デコードは直接呼び出しで完了できます。これは、MIPI における Lattice FPGA の独自の利点でもあります。ビデオのエンコードとデコードに対応しており、FPGA は比較的小規模で、ユーザーと開発者が少なく、プロジェクトのソース コードも少ない; 2: 移植性は悪くなく、
Lattice シリーズ FPGA 間で移植可能;
3: 実用性は天井に達しており、移植可能USB カメラのバッチとして使用でき、ソース コードだけでなく回路図と PCB も提供します;
4: 最大 4K 解像度までの MIPI ビデオ デコードをサポートします。
3. ここにあるMIPIコーデックスキーム
現在、私は FPGA ベースの MIPI エンコードおよびデコード ソリューションを豊富に所有していますが、主に純粋な vhdl によって実装された MIPI デコードや、ザイリンクスの公式 IP を呼び出して実装された MIPI デコード (2 ライン MIPI デコードや 4 ライン デコードなど) を含む MIPI デコードを含みます。 4K 解像度の MIPI デコーディングおよび 720P の解像度の MIPI デコーディング、Xilinx プラットフォーム FPGA に基づく MIPI デコーディング、Altera プラットフォーム FPGA に基づく MIPI デコーディング、および Lattice プラットフォーム FPGA に基づく MIPI デコーディングを含む、デコーディングを継続します。国産FPGAよりも先進的なMIPIデコードソリューションの導入を目指す 結局のところ、今後は現在のローカライズされたソリューションが主流になる 今後、より多くのMIPIエンコードDSIソリューションが登場し、FPGAのMIPIエンコード化に向けた取り組みが行われるそしてデコードソリューションは安価です。。。
これに基づいて、私は特別に MIPI コーデック コラムを構築し、すべての MIPI コーデック ブログをコラムにまとめて整理しました. FPGA コーデック MIPI に関するプロジェクトのニーズや学習に興味がある兄弟は、私のコラムにアクセスしてください。 :
クリックするとコラムに直接移動します
4. 詳細設計計画
エンジニアリング設計の構造は次のとおりです。
IMX219 カメラとそのアダプター ボード
IMX219 カメラの 1080P 4Line MIPI ビデオを収集します。IMX219 カメラは特殊なカメラ アダプタ ボードであり、アダプタ ボードの回路図と PCB ソース ファイルを提供します。これは、Altium Designer シリーズ ソフトウェアで開くことができ、直接大量生産することもできます。ボード; IMX219 カメラ アダプタ ボードは次のように Lattice FPGA 開発ボードに挿入されます: 以下は
IMX219 の物理画像と PCB スクリーンショットです;
以下は MIPI 1920x1080 @30FPS です IMX219 によってキャプチャされたフレーム波形出力の開始高速オシロスコープは、ここで見ることができます。IMX219 ハードウェア設計者に問題がない場合は、そこから学ぶことができます。
D-PHY
Lattice FPGA には MIPI デコーディング ソース言語が付属しており、これを直接呼び出して MIPI デコーディングを完了できます。これは、MIPI ビデオ エンコーディングおよびデコーディングにおける Lattice FPGA の独自の利点でもあります。このモジュールは、MIPI デコーディング ソース言語をほぼ直接呼び出します。入力は差動です。 MIPI ビデオ データ、出力はパラレル ビデオ データです。これがソース言語なので、あまり説明する必要はありません。使い方を知っていればよく、理由を知る必要はありません。このモジュールの -level インターフェイスは次のとおりです。
mipi_rx_ddr (alignwd, buf_clk_lp0i, buf_clk_lp0o, buf_clk_lp0t,
buf_clk_lp1i, buf_clk_lp1o, buf_clk_lp1t, clk, clk_lp0, clk_lp1,
clk_s, init, reset, rx_ready, sclk, oclk, buf_data_lp0i, buf_data_lp0o,
buf_data_lp0t, buf_data_lp1i, buf_data_lp1o, buf_data_lp1t, data_lp0,
data_lp1, datain, q)/* synthesis NGD_DRC_MASK=1 */;
input wire alignwd;
input wire buf_clk_lp0o;
input wire buf_clk_lp0t;
input wire buf_clk_lp1o;
input wire buf_clk_lp1t;
input wire clk;
input wire clk_s;
input wire init;
input wire reset;
input wire [3:0] buf_data_lp0o;
input wire [3:0] buf_data_lp0t;
input wire [3:0] buf_data_lp1o;
input wire [3:0] buf_data_lp1t;
input wire [3:0] datain;
output wire buf_clk_lp0i;
output wire buf_clk_lp1i;
output wire rx_ready;
output wire sclk;
output wire oclk;
output wire [3:0] buf_data_lp0i;
output wire [3:0] buf_data_lp1i;
output wire [31:0] q;
inout wire clk_lp0;
inout wire clk_lp1;
inout wire [3:0] data_lp0;
inout wire [3:0] data_lp1;
データアライメント
データ アライメントには、バイト アライメントとライン アライメントが含まれます。
バイト アライメント モジュールは、D-PHY モジュールから生のアライメントされていないビット出力アライメントされたバイトを受け取ります。MIPI レーン上のバイトには定義されたバイト境界がないため、このモジュールはライン上で検索します。常に最初に定数です。バイト 0xB8、検出されると、0xB8 はバイト境界オフセットを決定し、出力を有効に設定し、データ レーンが MIPI LP 状態にあるときに正しいバイトの出力を開始します リセットを維持し、ライン アラインメント モジュールは、複数ラインのバイト アラインメント データを受信し
ますmipi であり、mipi バイト クロックはマルチライン mipi バスのライン整列データを出力します。異なるライン上のデータは異なるオフセットで表示される可能性があるため、モジュールはすべてのラインが有効な出力からライン整列データの出力を開始するまで待機します。ライン バイトは同じタイム スケールで出力されます。このようにして、MIPI ビデオは実際のデータ アラインメントを完了します。
MIPI CSI2
このモジュールの機能は非常に単純で、MIPI プロトコルの制御文字を解析して破棄し、有効なビデオ データを抽出することです。ソース コードのいくつかのスクリーンショットは次のとおりです。
ビデオデータフォーマット変換
ビデオ データ形式変換の順序は次のとおりです: RAW10 からベイヤーへ、ベイヤーから RGB888 へ、RGB888 から YUV422 へ; モニターに出力したい場合は、ベイヤーから RGB888 へ出力するステップだけを行う必要があり、ここで RGB888 の目的を達成します。 YUV422 Cypress FX3 USB3.0 インターフェイス出力を送信するためのものです。各モジュールの上部には詳細な注記があり、その機能は一目で理解できます。例として RGB888 to YUV422 モジュールを取ると、スクリーンショットは次のとおりです。
ビデオ出力補正
このモジュールの機能は、ビデオ データのビット幅を変換し、64 ビット 4 ピクセル クロックの yuv422 データを 2 ピクセル クロックの 32 ビット yuv422 データに変換することであり、これを行う目的は、Cypress FX3 USB3.0 インターフェイスに送信することでもあります。出力;
5. Lattice Diamondプロジェクトの詳細説明
Lattice Diamond は Lattice FPGA 用の開発ツールです。使い方は非常に簡単ですが、中国ではほとんど使用されていません。
開発ボード FPGA モデル: Lattice の LCMXO3LF-6900C-5BG256C;
開発ツール: Lattice Diamond3.12;
入力: IMX219、 4 ライン 1080P 解像度;
出力: Cypress FX3 USB3.0 インターフェイス出力;
プロジェクトのソース コード構造は次のとおりです。
プロジェクトは次のようにコンパイルされています。
統合された回路図のスクリーンショットは次のとおりです。
6. ボードのデバッグと検証
ハードウェア要件:
Lattice FPGA 開発ボード 1 枚、
IMX219 カメラ アダプタ ボード 1 枚、
Cypress FX3 USB3.0 アダプタ ボード 1 枚、
接続、IMX219 カメラ アダプタ ボードが入力として Lattice FPGA 開発ボードに接続されている、Cypress FX3 USB3 .0 アダプタ ボードは、以下の図に示すように、出力として Lattice FPGA 開発ボードに接続されています:
ビデオを受信して表示するには、サイプレスの公式 USB3.0 カメラ ホスト コンピュータを使用します。
7. 福利厚生:技術コード取得
利点: エンジニアリング コードの取得
コードは電子メールで送信するには大きすぎるため、特定のネットワーク ディスクへのリンクによって送信されます
データ取得方法 1: 非公開、または記事の最後にある V 名刺
データ取得方法 2: 記事末尾の公式アカウント、返信 002006
ネットワーク ディスク データは次のとおりです。
データのリストは次のとおりです。