<「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上で地デジチューナーで受信中の番組を受信することが出来ます。