マルチメディア処理向けDSP
TMS320C6000活用ハンドブック
日本テキサス・インスツルメンツ株式会社 服部 基保 著
B5変型判 288ページ
CD-ROM付き
定価2,860円(税込)
JAN9784789830706
2007年6月15日発行
大変恐縮ですが,こちらの商品は品切れ絶版となりました.
本書では,Texas Instruments社のマルチメディア処理向けDSP((Digital Signal Processor)「C6000 DSPシリーズ」を題材に,プロセッサ/開発ツール,DSPコア,ペリフェラル,開発の流れなどを,アプリケーション事例もあげながら,解説しています.C6000シリーズは,10ドルを切る単価と多くのペリフェラル搭載を両立させたDSPから,1GHz動作の高性能DSPまでの広いラインナップをもつDSPです.本書付属CD-ROMには,サンプル・プログラム,開発ツール「Code Composer Studio」試用版,日本語マニュアルなども収録しています.
目次
はじめに
第一部 C6000 DSPと開発環境の概要
第1章 これまでのディジタル信号処理とディジタル・シグナル・プロセッサの成り立ち
1-1 ディジタル信号処理とは?
1-2 アナログ回路からディジタル信号処理へ
1-3 積和演算を高速に実行するディジタル・シグナル・プロセッサ
1-4 初期のディジタル・シグナル・プロセッサ(DSP)とは?
1-5 最近のディジタル信号処理は積和演算だけでない!
Column…1-A DSPって何の略?
第2章 TIのディジタル・シグナル・プロセッサとC6000 DSPコアのコンセプト
2-1 用途別に三つのシリーズ ― C2000,C5000,C6000
2-2 C6000 DSPコアの誕生の時代とそのコンセプト
2-3 性能向上の実現方法 ― 並列化とVLIWの採用
2-4 Cコンパイラの生成効率
Column…2-A Cコンパイラの生成効率
第3章 C6000シリーズの歴史と概要
3-1 1990年代のC6000シリーズ
3-2 業界初の1GHz DSP:C6414T/15T/16T
3-3 さまざまなアプリケーションで使われる浮動小数点DSP:C6711/12/13
3-4 画像入出力ポート搭載DSP:DM640/DM641/DM642
3-5 C64xシリーズの廉価版DSP:C6410
3-6 複数使用も容易な1GHz動作のDSP:C6455
3-7 最新浮動小数点DSP:C6720/22/26/27
3-8 ディジタルAVコミュニケーション・プラットホーム:DaVinci
Column…3-A ペリフェラルの略称
Column…3-B 標準規格の略称
Column…3-C C64xコアのDSPなのになぜ,DM型番が付いているのか?
第4章 C6000 DSPの開発環境
4-1 DSPソフトウェア開発用インフラ技術「eXpressDSP」
4-2 統合開発環境Code Composer Studio
4-3 リアルタイムOS:DSP/BIOS
4-4 DSPスタータ・キット
4-5 各種DSP 評価用ボード
4-6 DSPアルゴリズム・スタンダード(xDAIS)
4-7 リファレンス・フレームワーク
4-8 各種ライブラリ
4-9 サード・パーティ・ネットワーク
第二部 C6000 DSPの詳細とハードウェア設計
第5章 C6000 DSPシリーズのコア詳細
5-1 C6000シリーズ:五つのコア
5-2 一般的なプロセッサの動作は?
5-3 VelociTIアーキテクチャ vs. VLIWアーキテクチャ
5-4 C62xコア動作
5-5 C62xコアの命令セットとその特徴
5-6 C64xコアは何が高速に演算できるの?
5-7 C64x+コアはRISCコアと同じ
5-8 C67xコアは倍精度浮動小数点まで演算できる
5-9 C67x+コアは浮動小数点演算能力が向上
5-10 C6000コアの割り込み処理
5-11 C64x+コアの割り込み機能を更新/例外処理も追加:C64xコアの割り込みとの相違点
5-12 C6000 DSPのパイプラインとディレイ・スロット
Column…5-A SUBC命令を使った割り算の実現方法
Column…5-B 固定小数点フォーマット(Qフォーマット)って?
Column…5-C なぜ,浮動小数点デバイスのコアにC67xと7番が付いているのか?
第6章 周辺デバイスと接続するさまざまなペリフェラル
6-1 C6000 DSPはさまざまなペリフェラルを搭載
6-2 メモリ接続用のポートは?:EMIF/AEMIF/DDR2メモリ・コントローラ
6-3 外部メモリ・インターフェース(EMIF)と非同期メモリ・インターフェース(AEMIF)
6-4 DDR2用のインターフェースは専用
6-5 画像/映像のための入出力ポート:Video PortとVPSS
6-6 DM64x DSP搭載ビデオ・ポート
6-7 ビデオ・プロセッシング・サブシステム(VPSS)はリサイザやOSDも可能
6-8 オーディオ用CODECと接続 McBSP/ASP/McASP
6-9 McBSPとASP
6-10 マルチ・チャネル・オーディオ・シリアル・ポート(McASP)
6-11 Ethernet接続 Ethernet MAC/GigaEMAC
6-12 ホストと接続するには? HPI/PCI
6-13 ホスト・ポート・インターフェース(HPI)
6-14 PCIインターフェース
6-15 高速シリアル通信 Rapid IOでのマルチ・プロセッシング
6-16 Rapid IO以外でのマルチ・プロセッシング
6-17 汎用I/Oピンはたくさんある
Column…6-A 色空間RGB とYCbCrについて
Column…6-B PCIバスについて
第7章 C641x/C671x DSPの内部メモリ/キャッシュとEDMA
7-1 キャッシュの概念ができた背景
7-2 C64xコア搭載デバイスはすべて2レベルのキャッシュ方式
7-3 キャッシュが有効に働く場合と働かない場合
7-4 ほかのC6000シリーズのキャッシュについて
7-5 DMAとは?
7-6 C64x EDMAの仕組み
7-8 Quick DMA(QDMA)って?
7-9 EDMAを使った例
7-10 EDMAで一番重要な点:効率良く転送するためには?
7-11 C64x DSPとC671x DSPのEDMAの相違点
第8章 最新DSP:C645x/DM644x/C672x DSPの中身は違う
8-1 C645x/DM644x DSPの中身は,これまでとまったく別物/スイッチ・セントラル・リソース(SCR)
8-2 C64x+コアの周辺:メガ・モジュール
8-3 C645x/DM644x DSP搭載EDMA3
8-4 EDMA3の転送例
8-5 C672x DSPは変則フラット・メモリとスイッチ・セントラル・リソースを採用
8-6 C672x DSPはEDMAの代わりにdMAXを採用
Column…8-A C6000 DSPの型名って規則があるの??
第9章 ハードウェア設計をする上で重要な点
9-1 シグナル・インテグリティ
9-2 コンデンサ/電源も重要
9-3 電源の立ち上がりとRESET
9-4 PLL回路
9-5 重要なピンの処理
9-6 ボード上で開発/デバッグする時のボード処理(JTAGヘッダ)
Column…9-A DSPを用いて開発する前に参照すると便利なリンク集
Column…9-B JTAGとは??
第三部 ソフトウェア開発と最適化
第10章 ソフトウェア開発の流れとCode Composer Studio(CCS)の基本的な機能
10-1 ソフトウェア開発の流れ
10-2 シミュレータ,エミュレータ,DSKの違いの詳細
10-3 CCS Setup
10-4 GEL(General Extension Language)ファイル
10-5 CCSを立ち上げる前に
10-6 プロジェクトを作成する
10-7 C言語プログラムから実行ファイルができあがるまでの流れ
10-8 コンパイルして実行ファイルを作る
10-9 コンパイラ/リンカのオプションと二つのデフォルト・ビルド設定
10-10 Connectし,プログラムをロード/実行する
10-11 任意の位置にプログラムを止める:ソフトウェア・ブレークポイント
10-12 デバッグする
10-13 実行した順番に戻す機能:シミュレータのRewind機能
10-14 もっと高度にDSPコアを停止させるためには?
10-15 CCS3.2以降のブレークポイント・マネージャ
10-16 高度なハードウェア・ブレークポイント:AET(アドバンスト・イベント・トリガ)
10-17 複数のCPUを同時にデバッグするには:パラレル・デバッグ・マネージャ(PDM)
10-18 プログラムの実行時間の計測方法
Column…10-A CCSのHelpはお勧め
Column…10-B エミュレータを使ってCCSが正常に立ち上がらない場合には??
Column…10-C CCSの日本語表示とCode Wrightエディタの機能
Column…10-D リンカのマップ・ファイルとは?
Column…10-E バージョンの違うCコンパイラを使うには??
Column…10-F LoadとGo Mainを毎回したくないとき
Column…10-G 画面の配置はそのまま残したい:ワークスペースのセーブ/ロード
Column…10-H ベンチマーク結果は毎回変わる?
Column…10-I 二つのCCSレイアウト
第11章 簡単にできるプログラム高速化
11-1 C言語プログラムをC6000 DSPへ移植するときの注意事項
11-2 高速化する部分は?
11-3 最適化オプション
11-4 キャッシュON
11-5 データ型キャストによる高速化
11-6 エイリアシングのないコードにして,-mtオプションを付けよう
11-7 ループ部分のデータ依存関係の明確化(const/restrict宣言)
11-8 アラインメントの明確化
11-9 整数の割り算の高速化
11-10 浮動小数点数 float vs. double
11-11 Print文やFile I/Oは遅い
11-12 各種ライブラリを使用する
11-13 ループ部分の高速化アドバイスを行うコンパイラ・コンサルタント機能
Column…11-A CCS3.1以降とCCS3.0以前のnear/farに関するCコンパイラのオプション違い
Column…11-B ファイルごとにコンパイル・オプションが付けられる
Column…11-C Cコンパイラに情報を教えよう
第12章 ループ部分の最適化テクニック
12-1 ソフトウェア・パイプラインとは?
12-2 ソフトウェア・パイプライン化した実際のプログラム構成とその特徴
12-3 C64x+ DSPのSPLOOP命令
12-4 Cコンパイラのソフトウェア・パイプライン作成方法
12-5 ソフトウェア・パイプラインの確認
12-6 ソフトウェア・パイプライン化をしない場合の高速化
12-7 ソフトウェア・パイプライン化を試みたときの情報
12-8 ソフトウェア・パイプライン化を試みたときの高速化
12-9 ソフトウェア・パイプライン化したときのコード・サイズ削減のためのオプション
12-10 ここからは上級編の最適化
12-11 ループ回数は非常に重要!
12-12 ループ中のポインタ計算はシンプルに
12-13 二重ループの考え方
12-14 固定小数点変換
12-15 Intrinsics関数を使ってみよう
12-16 アセンブリ・オプティマイザ
第13章 チップ・サポート・ライブラリを使ってペリフェラルを動作させよう
13-1 チップ・サポート・ライブラリ(CSL)とそのバージョン
13-2 CSLを使ってタイマを動作させよう:CSL使用方法
13-3 CSLを使ったプログラムをコンパイルしてみよう
13-4 CSL使用例:DSPスタータ・キットを使って,音を出してみよう
第14章 DSP/BIOSとは?
14-1 DSP上で動作するリアルタイムOSの必要性
14-2 DSP/BIOSのGUI画面を開いてみよう
14-3 DSP/BIOSでシステムの設定をし,コンパイルしよう
14-4 4種類のスレッドをもつリアルタイム・スケジューラ
14-5 スケジューラの必要性
14-6 HWIを使って,音を出してみよう
14-7 SWI:ソフトウェア割り込みを使用する
14-8 TSK:タスク
14-9 同期の仕組み ― セマフォ
14-10 スケジューラを使ってDSK上で音を出そう
14-11 DSP/BIOS付属のさまざまなリアルタイム解析ツール
14-12 DSP/BIOSのカーネル状態を表示 ― Kernel Object View
14-13 ほかのDSP/BIOSのさまざまな機能
Column…14-A C6000 DSPで動作するほかのOS
Column…14-B DSP/BIOS 5.2では,GUIでの設定とテキストでの設定の両方が可能に
Column…14-C OS用語の意味
Column…14-D DSP/BIOSスケジューラが起動し始めるまでのプログラムの流れ
第15章 システム全体での最適化
15-1 キャッシュ・コヒーレンスの問題
15-2 プログラム/データ配置で性能が変わる
15-3 QDMAを使って,L2キャッシュ・ミスをなくそう
15-4 できるかぎり内部RAMに格納しよう
15-5 HWIルーチンが実行されない ― 割り込みミス
第16章 DSPを起動するコードを作成する方法
16-1 DSPのブート方法
16-2 C6416T-DSKのFlashROMに書き込んでブートさせる方法
16-3 PCI/HPIブートをするときにホストCPUがDSPへ転送するデータを作成する方法
Column…16-A DSKのFlashROMを出荷時の内容に戻すには??
付録A C6000 DSPシリーズでの最新デバイス DM643x/C642x
付録B CD-ROMの使い方
索引
●本書付属のCD-ROMについてのご注意
本書付属のCD-ROMの貸与または改変,複写複製(コピー)はできません.詳しくはこちらをご覧ください.