<「PIC32 + ETH-PHY + MAX2 mini」で地デジチューナからTSストリームを取り込み、UDP転送する実験>

(注意)このページに記載されている内容は、研究開発を目的にしたものです。
使用方法によっては、他人の権利を侵害したり、法律に触れる可能性もあります。
各自が十分注意して責任を持ってご使用ください。
特殊な内容ですので、質問には一切お答え出来ません。十分内容を理解の上、作業を開始してください。

ソース&配線ポイント&書き込みファイル(pic32_ts_udp.zip)

地デジチューナーから抜き出した、シリアルのTS信号をMAX2を使用して、パラレルに変換します。
パラレルに変換したデータはMAX2内の16byteバッファにストックされ、16byte分溜まったらPIC32に割り込みを掛けます。
PIC32側では割り込みを契機にして、DMAが起動され、8bit PMP(パラレル・マスター・ポート)により自動的にPIC32のRAMに取り込まれます。

地デジチューナは視聴中のTSストリームのMulti2暗号を解除するために、BCASカードからEMCデータ(解除するためのキー)を読み出します。
PIC32側では、この読み出しているBCASデータをUARTで受け取り、EMCデータを取得します。

TSデータと、BCASデータを取得したPIC32は順次Multi2暗号を解除(速度を稼ぐため、アセンブラにてコーディング)して、UDPパケットを組み立てます。
組み立てたUDPパケットはETH-PHYを使用して、イーサネット上に出力されます。

UDPパケットはWindows PC上で動作する、地デジ視聴用プログラムTVTestのUDPプラグインにて受信され、表示されます。

実際のフローは下記の図のようになっています。

TVTestはMulti2暗号が解除された状態で、受信しますので、PC側にBCASカードは不要です。


<地デジチューナからの配線>

地デジチューナーはAVOXのYDBC-30(ユニデンDT300)を使用します。
引き出す信号は、GND、+3V3、BCAS、TS_CLK、TS_SD、TS_PBVALの計6本です。
(引き出しポイントはアーカイブファイルのdt300_haisenディレクトリの写真を参照ください。)
(PIC32の電源もチューナーから供給しています。)

信号名
(チューナー)
MAX2 mini PIC32
GND CN1-2
+3V3 CN1-1
TS_CLK CN1-26(CLK62)
TS_SD CN2-1(IO61)
TS_PBVAL CN2-2(IO58)
BCAS CN1-5(UART3Rx)


チューナーのケースを削り、ピンフレームを取り付けて引き出します。


<PIC32とMAX2 mini間の配線>

PIC32とMAX2 mini間の配線は、ピンヘッダを使用します。結線しない箇所のピンヘッダのピンは抜き、残したピンの部分だけが結線されます。
PIC32からMAX2をプログラムするためのJTAG、PIC32のPMP(パラレルポート)、割り込み信号などを結線しています。


(写真ではBCAS信号もCN3-25を使用して、MAX2 miniからPIC32へ結線しています)

MAX2 mini PIC32
CN1-1 +3V3 +3V3
CN1-2 GND GND
CN2-4 +3V3 +3V3
CN2-6 GND GND
CN2-11 IO51 PMD7
CN2-12 IO50 PMD6
CN2-13 IO49 PMD5
CN2-14 IO48 PMD4
CN2-15 IO47 PMD3
CN2-16 IO44 PMD2
CN2-17 TDO RG13
CN2-18 TCK RG12
CN2-19 TDI RG14
CN2-20 IO43 PMD1
CN2-21 IO42 PMD0
CN2-22 TMS RA7
CN3-3 IO33 PMWR
CN3-4 IO30 PMRD
CN3-13 IO17 INT0

<MAX2のプログラム>

MAX2にはmax2ディレクトリのcap_sts_svfを書き込みます。PIC32とMAX2 miniを結合した状態で、PCに接続するとUSBローダーが起動します。
この状態で「max2wr cap_sts.svf」を実行します。


<PIC32のプログラム>

PIC32に書き込むプログラムはpic32ディレクトリのudp_test.hexになります。PIC32をPCと接続して、USBローダーを起動します。
この状態で「pic32wr usb_test.hex /J」を実行します。

PIC32のIPアドレスは「192.168.1.12」設定されています。変更する場合は、udp.hを書き換えて、再コンパイルします。
(ターゲットとなるPCのIPアドレスは192.168.1.34に設定されていますが、ターゲット側は固定である必要はありません(後述))


<TVTestとの接続>

TVTestとPIC32はUDPの1234ポートを使用してイーサネット経由で接続されます。
TVTest用のBonDriver_UDP.dllプラグインを使用します。

PIC32は最初に受け取ったイーサネットのARPパケットの送り先をターゲットのIPアドレスに使用します。
このため、PC上でPIC32にpingを打つことで、そのPCでTSストリームを受け取ることが出来ます。
(手順としては、TVTestをUDP:1234で立ち上げ、pingを打ちます。)


これで、PC上で地デジチューナーで受信中の番組を受信することが出来ます。