無料ブログ作成サービス JUGEM
スポンサーサイト

一定期間更新がないため広告を表示しています

| スポンサードリンク | - | - | - | pookmark |
チップインプレッション!第一回 TMS320DM648/DM647その2
だいぶ間が開いてしまいましたが、チップインプレッションの第2回目ということで、
引き続きDM647/DM648について。
(1)映像向けペリフェラルペリフェラル(ビデオポート)について
DM647/DM648のビデオポートは型名が3桁のことからも想像されるように、DM642系の
ビデオポートに似ている。DM644xやDM643xのVPSSとは性格が異なる。ここでは
DM647/DM648のビデオポートとDM644xやDM643xのVPSSとを比べながら紹介してみよう。

まず、名前についてだがDM644xやDM643xの映像向けペリフェラルはVPSSと呼ぶ。
これはVideoPortSubSystemの略になっている。対してDM647/DM648は
ビデオポート(VPと略記する)と呼ばれ、DM642のころの名前と同一だ。

VPSSはいろいろなことをH/Wでサポートしている。簡単にあげると
入力側(VPFE):デジタルBT656、YUV、RGB入力
・ベイヤー変換(Bayer→YUV)
・1/4〜4倍までのリサイズ(縦横個別に設定可能)
・Autoホワイトバランス、露出、フォーカス用のフィルタ
出力側(VPBE):デジタルBT656、YUV、RGB出力、アナログ出力
・DAC出力(デバイスによるが最大4ch)NTSC/PAL、SVIDEO、RGB
・OSD機能(Window2枚、OSD2枚、カーソル1枚、バックグランド1枚)
と実に多機能である。

一方VPはというと、16bit幅のデジタルBT656、YUV、RGB入出力ができるものが
5chついている。ポイントは入出力がユーザーの設定で自由に変更できることだ。
VPSSではVPFE、VPBEという名前で、最初から入力、出力が固定である。
DM647/DM648のVPは、たとえば、
1chをBT656で出力に設定。
残り4chをRGBで入力に設定。
として、RGBの映像データを4chそれぞれで受けて、DSPで処理をして
モニタ用にBT656でビデオコーデックに出力、かつJPEGに変換してTCP/IPで
LAN経由でサーバーに送るといったことが可能だ。
また、1つのVPは16bit幅だが、2つのVPを同期させてひとつのVPとして32bitを
入出力させることができる。
逆に、1つのVPを8bitの2つのVPとして分けて、それぞれ別のビデオコーデックへ
接続することもできる。
そのほか、VPではH/WでサポートしていることはVPSSよりは少ないが、
・デジタルBT656、YUV、RGB入出力
・水平方向のみ1/2あるいは2倍のリサイズ
といったものをH/Wで可能だ。
また、VPは内部に5120byteのFIFOを持っている。
レジスタにこのFIFOのスレッショルドを設定する項目があり、スレッショルドに達すると
EDMAなどにイベントを発生させることができる。

DM642のEVMやDM648EVMでは、S/Wでこの機能を使ったVP周りのフレームワークが
サンプルとしてついてくる。このフレームワークのおかげで、ユーザーはVPの
レジスタなどを細かく知る必要はなくなり、このフレームワークが格納、確保した
バッファにある画像データに対して行う処理を集中して開発することが可能だ。

フレームワークの動作はこんな感じ。
VPが映像を受け取ると、VP内部のFIFOに溜まり、スレッショルドに達するとEDMAへ
イベントを発行する。それを受けたEDMAが所定(DDRSDRAM)に確保されたバッファへ
VPのFIFOから転送を行う。これを繰り返す。
お分かりのようにこの処理ではDSPコアの負担はない。すべてVPとEDMAで行われる。
ユーザーはプログラムでは、画像サイズなどの設定をヘッダファイルで行い、
フレームワークの初期化、DDRSDRAMへの画像バッファの確保を行う。
後は、フレームワークが取得した画像バッファへのポインタを得ることができる関数を
使うだけだ。

以上のようにDM647/DM648のVPはDM4桁製品のVPSSよりは多機能ではないが、
多チャンネルで汎用性が高い。
一応VPということで映像を扱うためのペリフェラルだが、RGBを受けるモードでは
単にイネーブル信号がアサートされているときだけデータを受けるというモードなので
ビデオコーデックだけでなく、高速なA/DコンバータやDACを接続することもできるし、
DSP同士をこれでつなぎ、マルチDSPの構成を取った製品もサードパーティから出ている。

VPは入力は最大80MHz、出力は最大110MHzのピクセルクロックで動作させることができる。

以上がビデオポートでした。
ご指摘、ご質問大歓迎です。(いつ反応できるかは保障されませんが、、、てれちゃう





| 了一 | チップインプレッション! | comments(0) | - | pookmark |
チップインプレッション!第一回 TMS320DM648/DM647その1
パソコンでも、車でもファーストインプレッションなどと題してその物を使った感想やポイントを紹介している。半導体にもそんなカテゴリがあっても良いかと思って書いてみる。

まずは、題目のとおり、TIのDSP、TMS320DM648とDM647だ。
このチップはTMS320"DM"648とあるように通称DM型番と呼ばれるカテゴリに属するDSPである。(ちなみにTMS320"C"6416などはCパーツなどと呼ばれる)
DMシリーズはDigital Multimediaに特化したペリフェラルを持つことでCパーツとは異なる性格を持つ。具体的にはビデオポート、EMACなど1チップでアプリケーションを実現できるようなペリフェラルを持つのが特徴だ。リンク先のアプリケーション事例参照
 ところで、今回紹介するTMS320DM648/647と、DM6446、DM6437といった数字部分が4桁のものとは何が異なるのだろうか? そもそもDM型番はDM642/643/641が2002年に発表されたのが始まりだ。この頃はDaVinciテクノロジーといったソリューション名称は冠されず、単にCパーツにDigitalMultimediaに向いたペリフェラルをつけたデバイスという位置づけであったと記憶している。
 このDM642/643/641の後、2005年発表されたのが型名の数字部分が4桁のDM6446/6443であった。DM6446/6443とそれに続くDM643xのDSP群はDM642/643/641とは同じDMシリーズではあるが、ペリフェラルの構成や、ビデオポート(DM644x、DM643xではVPSSと別称している)の内容がかなり異なっている。DMの4桁型番のDSPについてはまた別の機会にインプレッションを書こうと思うので詳細は避けるが、DM642/643/641を使用してきたユーザーがDM4桁型番DSPに移行するのは容易ではない。
 そして、DM648/647が昨年発表された。これはDM642/643/641の正統な後継DSPと言っても良いDSPだ。したがってDM642と比較するとこのDSPの性格を容易につかむことができる。


(1)内部アーキテクチャ(コア編)
DM642はコア(CPU)がC64xコアである。DM648/647はC64x+コアを採用している。
C64x+コアと内部メモリ群はMegaModuleと呼ばれており従来のC64xコアからさらに性能を向上させている。具体的にはコアの性能が新しい命令セットやSPLOOPといった新機能を採用することにより、従来のC64xコアに比べて処理速度で2割増し、コードサイズで2割減の性能を持つ。
 処理速度の向上は主に新しい命令セットの追加の効果による。したがって新しい命令セットを有効に使うことができる処理内容であればC64xコアに比べて2倍の処理速度をたたき出す。コードサイズの削減はSPLOOPやコンパクト命令などの採用の結果だ。C6000シリーズはソフトウェアパイプラインという手法を使って高速に処理を行うため、速度を重視するとコードサイズが大きくなるという特徴を持つ。SPLOOPやコンパクト命令を採用することにより、平均して2割程度、従来のC64xコアに比べてコードサイズを削減させることに成功している。
 またMegaModuleにはC64x+コアのほかにL1、L2という2レベルのキャッシュ構造を持つ。これは従来のC64xコアの構成と同じである。しかしMegaModuleではL1のメモリがC64xコアではキャッシュとしてしか使用できなかったが、これがSRAMとしても設定して使うことができるようになった。そのため、より使用頻度の高いプログラムやデータをL1メモリに配置することで、少ない時間でプログラムやデータにアクセスすることが可能になっている。
 L1がSRAMとしてもコンフィグレーションできるようになったことを受けて、MegaModuleではIDMAという小さなDMAを装備している。これはL1⇔L2間のデータ転送をCPUとは別に行うことができるペリフェラルである。DSPはEDMAというDMAをペリフェラルとして持つが、それとは別のものがこのMegaModule内に入っている。
 そのほかにもメモリ保護機能などいくつかの機能が追加されているが主なところは今述べたあたりになるだろう。ちなみにC64x+コアになっても従来と同様バイナリベースでコード上位互換は保たれている(C64コアで動いていたコードはC64x+でも動作する)



(2)内部アーキテクチャ(内部構成編)
 DM642などC64xコア採用の製品は内部バスとしてEDMAを使う。EDMAはひとつのペリフェラルとして、CPUとは別にデータ転送を行うペリフェラルだが、EDMAがデータ転送を行う以外にも、CPUがMcBSPやEMIFなどへのデータ転送を行ったりする際にもEDMAのバスが使用されていた。
 EDMA自身は物理チャンネルとしては1chで、C64xコアではCPUの半分の周波数で動作する64bit幅のバスである。(この辺のPDFを参照のこと)そのため、DSPの使用状況によってはこの内部バスがボトルネックになる場合もあった。EDMAの転送設定を細切れにするなどといった回避方法が提示されている。
 DM648/647では内部バスアークテクチャにSCRという仕組みが取り入れられている。これは簡単に言うとCPUやHPI、EDMAといったマスタペリフェラル群と、McBSP、EMIFなどといったスレーブペリフェラル群がマトリックス状のバススイッチで接続されたものである。この構成にするとマスタ側とペリフェラル側がそれぞれ異なった相手であれば"同時"にデータ転送を行うことができる。そのためEDMAがEMIFから内部メモリにデータを転送し、CPUがMcBSPからDDRSDRAMへデータを置くといったことを同時に行うことができるようになった。
 SCRではそれぞれのペリフェラルごとに最小データサイズというのを決めている(サイズはデバイスによって異なる)。このため、EDMAなどでわざわざデータ転送の設定をバスアービトレーションしやすいように細切れにするといった配慮をしなくても、SCRがそれぞれのデータ最小単位で転送するので、転送の間隔に隙間があれば、他の転送をそこに挿入するようになった。ユーザーが気をつけねばならない点が緩和されているといってよいだろう。



コアと内部構成で結構たくさん書いてしまった。。
ビデオポートなどのインプレッションは次回ということで勘弁してください。嬉しい

| 了一 | チップインプレッション! | comments(0) | - | pookmark |