ADSP-BF533 Blackfin® プロセッサ・
ハードウェア・リファレンス

改訂版 3.0、2004 年 9 月
製品番号82-002005-01

Analog Devices, Inc.
One Technology Way
Norwood, Mass. 02062-9106a著作権情報© 2004 Analog Devices, Inc., ALL RIGHTS RESERVED.
このドキュメントは、Analog Devices, Inc. の書面による事前の明示の同意がない限り、いかなる形式でも複製できません。
Printed in Japan.

免責条項
Analog Devices, Inc. は、予告なく、この製品を変更する権利を保有します。Analog Devices から提供する情報の正確性と信頼性には万全を尽くしています。しかし、Analog Devices は、その使用に対する責任を一切負いません。その使用によって第三者の特許権やその他の権利が侵害された場合でも、同様に責任を負いません。Analog Devices, Inc. の特許権のもとでは、暗示的にも明示的にも、いかなるライセンスも提供しません。

商標と登録商標の通知
Analog Devices のロゴ、Blackfin および Blackfin のロゴ、CROSSCORE、
SHARC、TigerSHARC、VisualDSP++ は、Analog Devices, Inc. の登録商標です。
EZ-KIT Lite は、Analog Devices, Inc. の商標です。
その他すべての商標名と製品名は、それぞれの所有者の商標または登録商
標です。

目次

まえがき
マニュアルの目的 ........................................................................... xxxv
対象となる読者 ............................................................................... xxxv
マニュアルの内容 .......................................................................... xxxvi
マニュアルの最新情報 ......................................................................... xl
テクニカル／カスタマ・サポート ...................................................... xli
対応するプロセッサ ............................................................................ xli
製品情報 ............................................................................................. xlii
MyAnalog.com ............................................................................. xlii
プロセッサ製品情報 ................................................................... xliii
関連資料 ..................................................................................... xliii
オンライン技術資料 .................................................................... xliv
VisualDSP++ 環境からの資料の入手 ..................................... xlv
Windows からの資料の入手 .................................................... xlv
Web サイトからの資料の入手 ................................................ xlvi
印刷物 ......................................................................................... xlvi
VisualDSP++ マニュアル ...................................................... xlvi
ハードウェア・ツール・マニュアル ..................................... xlvii
プロセッサ・マニュアル ....................................................... xlvii
データシート ......................................................................... xlvii

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

iii

目次

DSP 刊行物へのご意見 ......................................................... xlvii
表記規則 .......................................................................................... xlvii
レジスタ図の表記規則 .............................................................. xlviii

はじめに
ペリフェラル ..................................................................................... 1-1
コア・アーキテクチャ ....................................................................... 1-3
メモリ・アーキテクチャ ................................................................... 1-6
内部メモリ ................................................................................... 1-7
外部メモリ ................................................................................... 1-8
I/O メモリ・スペース .................................................................. 1-8
イベント処理 ..................................................................................... 1-9
コア・イベント・コントローラ (CEC) ..................................... 1-10
システム割込みコントローラ (SIC) .......................................... 1-10
DMA サポート ................................................................................. 1-10
外部バス・インターフェース・ユニット ........................................ 1-12
PC133 SDRAM コントローラ ................................................... 1-12
非同期コントローラ ................................................................... 1-12
パラレル・ペリフェラル・インターフェース ................................. 1-13
シリアル・ポート (SPORT) ............................................................ 1-14
シリアル・ペリフェラル・インターフェース (SPI) ポート ............ 1-16
タイマ .............................................................................................. 1-17
UART ポート ................................................................................... 1-18
リアルタイム・クロック ................................................................. 1-19
ウォッチドッグ・タイマ ................................................................. 1-20

iv

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

目次

プログラマブル・フラグ ................................................................. 1-21
クロック信号 ................................................................................... 1-22
ダイナミック・パワー・マネジメント ............................................ 1-23
フル・オン・モード（最大性能）............................................... 1-23
アクティブ・モード（中程度の電力節減） ................................ 1-23
スリープ・モード（高い電力節減）........................................... 1-24
ディープ・スリープ・モード（最高の電力節減）...................... 1-24
休止状態 ..................................................................................... 1-25
電圧レギュレーション ..................................................................... 1-25
ブート・モード ................................................................................ 1-26
命令セットの説明 ............................................................................ 1-27
開発ツール ....................................................................................... 1-28

演算ユニット
データ・フォーマットの使い方 ......................................................... 2-3
ビット列 ....................................................................................... 2-3
符号なし ....................................................................................... 2-4
符号付き数値：2 の補数 .............................................................. 2-4
小数表現：1.15 ............................................................................ 2-4
レジスタ・ファイル ........................................................................... 2-5
データ・レジスタ・ファイル ...................................................... 2-6
アキュムレータ・レジスタ .......................................................... 2-6
ポインタ・レジスタ・ファイル ................................................... 2-7
DAG レジスタ・セット ............................................................... 2-7
レジスタ・ファイル命令のまとめ ............................................... 2-8

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンスv

目次

データ型 .......................................................................................... 2-11
エンディアン性 .......................................................................... 2-13
ALU のデータ型 ........................................................................ 2-13
乗算器のデータ型 ...................................................................... 2-14
シフタのデータ型 ...................................................................... 2-15
演算フォーマットのまとめ ........................................................ 2-15
乗算器の整数／小数フォーマットの使い方 ............................... 2-16乗算器の丸め結果 ...................................................................... 2-19
バイアスのない丸め .............................................................. 2-19
バイアスされた丸め .............................................................. 2-21
切捨て ................................................................................... 2-22
特殊な丸め命令 .......................................................................... 2-23
計算ステータスの使い方 ................................................................. 2-24
ASTAT レジスタ .............................................................................. 2-25
算術論理演算ユニット (ALU) .......................................................... 2-26
ALU 演算 ................................................................................... 2-26
シングル 16 ビット演算 ........................................................ 2-27
デュアル 16 ビット演算 ........................................................ 2-27
クワッド 16 ビット演算 ........................................................ 2-28
シングル 32 ビット演算 ........................................................ 2-29
デュアル 32 ビット演算 ........................................................ 2-30
ALU 命令のまとめ ..................................................................... 2-30
ALU のデータ・フローの詳細 ................................................... 2-35
デュアル 16 ビットのクロス・オプション ........................... 2-37
ALU のステータス信号 ......................................................... 2-37

vi

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

目次

ALU の除算対応機能 ................................................................. 2-38
特殊な SIMD ビデオ ALU 演算 ................................................. 2-38
積和演算器（乗算器）....................................................................... 2-39
乗算器の動作 ............................................................................. 2-39
積和演算器レジスタへの乗算結果の格納 .............................. 2-40
乗算結果の丸めと飽和 .......................................................... 2-40
オーバーフロー時の乗算結果の飽和 ......................................... 2-41
乗算器命令のまとめ ................................................................... 2-41
乗算器命令のオプション ....................................................... 2-43
乗算器のデータ・フローの詳細 ................................................. 2-45
累算なしの乗算 .......................................................................... 2-47
特殊な 32 ビット整数 MAC 命令 ............................................... 2-50
デュアル MAC 演算 ................................................................... 2-50
バレル・シフタ（シフタ）................................................................ 2-51
シフタ演算 ................................................................................. 2-52
2 オペランド・シフト ........................................................... 2-52
即値シフト .................................................................. 2-53
レジスタ・シフト ........................................................ 2-53
3 オペランド・シフト ........................................................... 2-54
即値シフト .................................................................. 2-54
レジスタ・シフト ........................................................ 2-55
ビットのテスト、セット、クリア、トグル .......................... 2-55
フィールド抽出とフィールド置換 ........................................ 2-56
シフタ命令のまとめ ................................................................... 2-56

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

vii

目次

動作モードと状態
ユーザ・モード .................................................................................. 3-3
保護されたリソースと命令 .......................................................... 3-4
保護されたメモリ ........................................................................ 3-5
ユーザ・モードへの入り方 .......................................................... 3-5
リセット時にユーザ・モードに入るためのコード例 ............. 3-5
ユーザ・モードへの復帰命令 ................................................. 3-6
スーパーバイザ・モード ................................................................... 3-7
非 OS 環境 ................................................................................... 3-7
リセットを抜け出るスーパーバイザ・モードのコード例 ...... 3-8
エミュレーション・モード ................................................................ 3-9
アイドル状態 ................................................................................... 3-10
アイドル状態に遷移するためのコード例 .................................. 3-11
リセット状態 ................................................................................... 3-11
システム・リセットとパワーアップ ............................................... 3-13
ハードウェア・リセット ........................................................... 3-14
SYSCR レジスタ ....................................................................... 3-15
ソフトウェア・リセットとウォッチドッグ・タイマ ................ 3-16
SWRST レジスタ ....................................................................... 3-17
コアオンリー・ソフトウェア・リセット .................................. 3-18
コアとシステムのリセット ........................................................ 3-19
ブート方式 ....................................................................................... 3-19

プログラム・シーケンサ
シーケンサ関連のレジスタ ................................................................ 4-3

viii

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

目次

SEQSTAT レジスタ ..................................................................... 4-5
ゼロオーバーヘッド・ループ・レジスタ（LC、LT、LB）......... 4-5
SYSCFG レジスタ ....................................................................... 4-6
命令パイプライン .............................................................................. 4-7
分岐とシーケンス ............................................................................ 4-10
直接のショート・ジャンプとロング・ジャンプ ....................... 4-11
ダイレクト・コール ................................................................... 4-12
間接分岐とコール ...................................................................... 4-12
PC 相対の間接分岐とコール ...................................................... 4-12
条件コード・フラグ ................................................................... 4-13
条件付き分岐 ......................................................................... 4-14
条件付きレジスタ間移動 ....................................................... 4-15
分岐予測 ..................................................................................... 4-15
ループとシーケンス ......................................................................... 4-16
イベントとシーケンス ..................................................................... 4-19
システム割込み処理 ................................................................... 4-22
システム・ペリフェラル割込み ................................................. 4-24
SIC_IWR レジスタ .................................................................... 4-27
SIC_ISR レジスタ ..................................................................... 4-29
SIC_IMASK レジスタ ............................................................... 4-30
システム割込み割当てレジスタ（SIC_IARx）........................... 4-32
コア・イベント・コントローラ・レジスタ ..................................... 4-35
IMASK レジスタ ....................................................................... 4-35
ILAT レジスタ ........................................................................... 4-36
IPEND レジスタ ........................................................................ 4-37

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ix

目次

割込みのグローバルなイネーブル／ディスエーブル ...................... 4-38
イベント・ベクトル・テーブル ...................................................... 4-39
エミュレーション ...................................................................... 4-40
リセット ..................................................................................... 4-41
NMI（マスク不能割込み）......................................................... 4-42
例外 ............................................................................................ 4-42
例外ハンドラの実行中の例外 .................................................... 4-48
ハードウェア・エラー割込み .......................................................... 4-48
コア・タイマ ............................................................................. 4-50
汎用割込み（IVG7 - IVG15) ..................................................... 4-50
割込みの処理 ................................................................................... 4-51
割込みのネスティング ..................................................................... 4-52
ネストされていない割込み ........................................................ 4-53
ネストされた割込み ................................................................... 4-54
ネストされた割込みサービス・ルーチンのプロローグ・コード例 ....................................................... 4-56
ネストされた割込みサービス・ルーチンのエピローグ・コード例 ....................................................... 4-56
ネストされた割込み要求のロギング ..................................... 4-57
例外処理 ..................................................................................... 4-58
例外処理の遅延 ..................................................................... 4-58
例外ハンドラのコード例 ....................................................... 4-59
例外ルーチンのコード例 ....................................................... 4-61
ISR でハードウェア・ループを使用するためのコード例 .... 4-61
その他のユーザビリティ問題 .................................................... 4-62

x

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

目次

優先順位の低いイベントでの RTX、RTN、またはRTE の実行 ........................................................................ 4-62
システム・スタックの割当て ................................................ 4-63
イベント処理における遅延 ........................................................ 4-63

データ・アドレス・ジェネレータ
DAG によるアドレッシング .............................................................. 5-4
フレーム・ポインタとスタック・ポインタ ................................. 5-5
循環バッファのアドレッシング ................................................... 5-6
ビット反転アドレスによるアドレッシング ................................. 5-9
インデックス・レジスタとポインタ・レジスタによる
インデックス・アドレッシング .................................................... 5-10
オートインクリメントとオートデクリメントのアドレッシング ....................................................................... 5-11
スタック・ポインタ・アドレッシングの前更新 ....................... 5-12
即値オフセットによるインデックス・アドレッシング ............. 5-12
後更新アドレッシング ............................................................... 5-12
DAG レジスタとポインタ・レジスタの変更 ................................... 5-13
メモリのアドレス整列 ..................................................................... 5-14
DAG 命令のまとめ .......................................................................... 5-17

メモリ
メモリ・アーキテクチャ ................................................................... 6-1
内部メモリの概要 ........................................................................ 6-5
スクラッチパッド・データ SRAM の概要 .................................. 6-7
L1 命令メモリ .................................................................................... 6-8
IMEM_CONTROL レジスタ ....................................................... 6-8

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

xi

目次

L1 命令 SRAM ........................................................................... 6-11
L1 命令キャッシュ .................................................................... 6-13
キャッシュ・ライン .............................................................. 6-15
キャッシュ・ヒットとキャッシュ・ミス ...................... 6-17
キャッシュ・ライン・フィル ....................................... 6-18
ライン・フィル・バッファ .......................................... 6-18
キャッシュ・ライン置換 .............................................. 6-18
命令キャッシュの管理 .......................................................... 6-20
ラインによる命令キャッシュのロック ......................... 6-20
ウェイによる命令キャッシュのロック ......................... 6-21
命令キャッシュの無効化 .............................................. 6-22
命令テスト・レジスタ ..................................................................... 6-23
ITEST_COMMAND レジスタ .................................................. 6-25
ITEST_DATA1 レジスタ ........................................................... 6-26
ITEST_DATA0 レジスタ ........................................................... 6-27
L1 データ・メモリ .......................................................................... 6-28
DMEM_CONTROL レジスタ ................................................... 6-28
L1 データ SRAM ....................................................................... 6-31
L1 データ・キャッシュ ............................................................. 6-35
キャッシュ可能アドレス空間のマッピング例 ...................... 6-36
データ・キャッシュ・アクセス ............................................ 6-40
キャッシュ書込み方式 .......................................................... 6-42
IPRIO レジスタと書込みバッファの深さ ............................. 6-43
データ・キャッシュ制御命令 ............................................... 6-45

xii

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

目次

データ・キャッシュの無効化 ................................................ 6-46
データ・テスト・レジスタ .............................................................. 6-46
DTEST_COMMAND レジスタ ................................................. 6-47
DTEST_DATA1 レジスタ .......................................................... 6-49
DTEST_DATA0 レジスタ .......................................................... 6-50
外部メモリ ....................................................................................... 6-51
メモリ保護とプロパティ ................................................................. 6-51
メモリ・マネジメント・ユニット ............................................. 6-51
メモリ・ページ .......................................................................... 6-53
メモリ・ページ特性 .............................................................. 6-53
ページ・ディスクリプタ・テーブル ......................................... 6-55
CPLB 管理 ................................................................................. 6-56
MMU アプリケーション ............................................................ 6-57
保護されたメモリ領域の例 ........................................................ 6-60
ICPLB_DATAx レジスタ ........................................................... 6-61
DCPLB_DATAx レジスタ ......................................................... 6-63
DCPLB_ADDRx レジスタ ........................................................ 6-65
ICPLB_ADDRx レジスタ .......................................................... 6-66
DCPLB_STATUS レジスタと ICPLB_STATUS レジスタ ....... 6-67
DCPLB_FAULT_ADDR レジスタとICPLB_FAULT_ADDR レジスタ ........................................... 6-69
メモリ・トランザクション・モデル ............................................... 6-71
ロード／ストア動作 ......................................................................... 6-72
インターロック機能付きパイプライン ...................................... 6-72
ロードとストアの順序付け ........................................................ 6-73

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

xiii

目次

同期命令 ..................................................................................... 6-74
投機的ロード実行 ...................................................................... 6-75
条件付きロード動作 ................................................................... 6-76
メモリの操作 ................................................................................... 6-77
整列 ............................................................................................ 6-77
キャッシュ・コヒーレンシ ........................................................ 6-77
アトミック操作 .......................................................................... 6-78
メモリマップド・レジスタ ........................................................ 6-79
コア MMR のプログラミング・コード例 .................................. 6-79
用語集 .............................................................................................. 6-80

チップ・バス階層
内部インターフェース ....................................................................... 7-2
内部クロック ..................................................................................... 7-2
コアの概要 ......................................................................................... 7-3システムの概要 .................................................................................. 7-4システム・インターフェース ............................................................ 7-4
ペリフェラル・アクセス・バス（PAB）...................................... 7-5
PAB 調停 ................................................................................. 7-6
PAB 性能 ................................................................................. 7-6
PAB エージェント（マスター、スレーブ）............................. 7-6
DMA アクセス・バス（DAB）、DMA コア・バス（DCB）、
DMA 外部バス（DEB）............................................................. 7-7
DAB 調停 ................................................................................ 7-7
DAB、DCB、DEB の性能 ..................................................... 7-9
DAB バス・エージェント（マスター）................................. 7-10

xiv

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

目次

外部アクセス・バス（EAB） ..................................................... 7-11
外部バスの調停 .......................................................................... 7-11
DEB/EAB 性能 .......................................................................... 7-11

ダイナミック・パワー・マネジメント
クロッキング ..................................................................................... 8-1
フェーズ・ロック・ループとクロック制御 ................................. 8-2
PLL の概要 ............................................................................. 8-3
PLL クロック逓倍率 .................................................................... 8-3
コア・クロック／システム・クロックの比率制御 ................. 8-5
PLL レジスタ ............................................................................... 8-6
PLL_DIV レジスタ ................................................................. 8-7
PLL_CTL レジスタ ................................................................. 8-8
PLL_STAT レジスタ ............................................................. 8-10
PLL_LOCKCNT レジスタ .................................................... 8-11
ダイナミック・パワー・マネジメント・コントローラ ................... 8-12動作モード ................................................................................. 8-13
ダイナミック・パワー・マネジメント・コントローラの状態 .. 8-13
フル・オン・モード .............................................................. 8-14
アクティブ・モード .............................................................. 8-14
スリープ・モード .................................................................. 8-15
ディープ・スリープ・モード ................................................ 8-15
休止状態 ................................................................................ 8-16動作モード遷移 .......................................................................... 8-16動作モード遷移のプログラミング ........................................ 8-20

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

xv

目次

PLL プログラミング・シーケンス ............................... 8-20
PLL プログラミング・シーケンスの続行 ..................... 8-22
例 ................................................................................ 8-23
電源電圧の動的制御 ................................................................... 8-25
電源管理 ..................................................................................... 8-26
VR_CTL レジスタ ................................................................. 8-27電圧の変化 ............................................................................ 8-30
コアのパワーダウン（休止状態）.......................................... 8-31

ダイレクト・メモリ・アクセス
DMA レジスタとメモリ DMA レジスタ ........................................... 9-3
DMA MMR の命名規則 ............................................................... 9-5
メモリ DMA レジスタの命名規則 ............................................... 9-7
DMAx_NEXT_DESC_PTR/MDMA_yy_NEXT_DESC_PTR
レジスタ .................................................................................... 9-8
DMAx_START_ADDR/MDMA_yy_START_ADDR レジスタ . 9-10
DMAx_CONFIG/MDMA_yy_CONFIG レジスタ ..................... 9-12
DMAx_X_COUNT/MDMA_yy_X_COUNT レジスタ ............... 9-17
DMAx_X_MODIFY/MDMA_yy_X_MODIFY レジスタ ........... 9-18
DMAx_Y_COUNT/MDMA_yy_Y_COUNT レジスタ ............... 9-20
DMAx_Y_MODIFY/MDMA_yy_Y_MODIFY レジスタ ........... 9-21
DMAx_CURR_DESC_PTR/MDMA_yy_CURR_DESC_PTR
レジスタ .................................................................................. 9-23
DMAx_CURR_ADDR/MDMA_yy_CURR_ADDR レジスタ .... 9-25
DMAx_CURR_X_COUNT/MDMA_yy_CURR_X_COUNT
レジスタ .................................................................................. 9-26

xvi

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

目次

DMAx_CURR_Y_COUNT/MDMA_yy_CURR_Y_COUNT
レジスタ .................................................................................. 9-28
DMAx_PERIPHERAL_MAP/MDMA_yy_PERIPHERAL_MAP
レジスタ .................................................................................. 9-29
DMAx_IRQ_STATUS/MDMA_yy_IRQ_STATUS レジスタ .... 9-32
フレックス・ディスクリプタ構造 ................................................... 9-35
DMA 動作フロー ............................................................................. 9-38
DMA の起動 ............................................................................... 9-40
DMA のリフレッシュ ................................................................ 9-42
DMA 転送を停止するには ......................................................... 9-45
DMA 転送をトリガするには ..................................................... 9-45
2 次元 DMA ..................................................................................... 9-47
例 ............................................................................................... 9-48
2D DMA のその他の例 .............................................................. 9-49
メモリ DMA .................................................................................... 9-50
MDMA 帯域幅 ........................................................................... 9-52
DMA 性能の最適化 .......................................................................... 9-53
優先順位付けとトラフィック制御 ............................................. 9-55
DMA_TC_PER レジスタと DMA_TC_CNT レジスタ ......... 9-57
MDMA 優先順位とスケジューリング ....................................... 9-60
緊急の DMA 転送 ...................................................................... 9-62
DMA のソフトウェア管理 ............................................................... 9-63
ソフトウェアと DMA の同期 .................................................... 9-64
シングル・バッファ DMA 転送 ............................................ 9-66
自動バッファリングによる連続転送 ..................................... 9-67

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

xvii

目次

ディスクリプタ構造 .............................................................. 9-69
ディスクリプタ・キューの管理 ............................................ 9-70
全ディスクリプタでの割込みを使用するディスクリプタ・
キュー ...................................................................... 9-71
最小の割込みを使用するディスクリプタ・キュー ........ 9-72
DMA エラー（アボート）................................................................. 9-74

SPI 互換ポート・コントローラ
インターフェース信号 ..................................................................... 10-4
シリアル・ペリフェラル・インターフェースのクロック信号（SCK）............................................................. 10-4
シリアル・ペリフェラル・インターフェースのスレーブ・
セレクト入力信号 ................................................................... 10-5
マスター出力／スレーブ入力（MOSI）..................................... 10-5
マスター入力／スレーブ出力（MISO）..................................... 10-6
割込み出力 ................................................................................. 10-7
SPI レジスタ ................................................................................... 10-7
SPI_BAUD レジスタ ................................................................. 10-8
SPI_CTL レジスタ .................................................................... 10-9
SPI_FLG レジスタ .................................................................. 10-12
スレーブ・セレクト入力 ..................................................... 10-15
複数のスレーブ SPI システムに対する SPI_FLG のFLS ビットの用途 ............................................................ 10-15
SPI_STAT レジスタ ................................................................ 10-16
SPI_TDBR レジスタ ............................................................... 10-18
SPI_RDBR レジスタ ............................................................... 10-19

xviii

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

目次

SPI_SHADOW レジスタ ......................................................... 10-20
レジスタ機能 ........................................................................... 10-21
SPI 転送フォーマット ................................................................... 10-21
SPI の一般的な動作 ....................................................................... 10-24
クロック信号 ........................................................................... 10-25
マスター・モード動作 ............................................................. 10-26
マスターからの転送開始（転送モード）.................................. 10-27
スレーブ・モード動作 ............................................................. 10-28
転送の準備ができたスレーブ .................................................. 10-29
エラー信号とフラグ ....................................................................... 10-30
モード・フォルト・エラー（MODF）..................................... 10-30
送信エラー（TXE）.................................................................. 10-31
受信エラー（RBSY）................................................................ 10-32
送信競合エラー（TXCOL）...................................................... 10-32
SPI 転送の開始と終了 ................................................................... 10-32
DMA .............................................................................................. 10-35
DMA 機能 ................................................................................ 10-35
マスター・モードの DMA 動作 ............................................... 10-36
スレーブ・モード DMA 動作 .................................................. 10-38
タイミング ..................................................................................... 10-41

パラレル・ペリフェラル・インターフェース
PPI レジスタ ................................................................................... 11-2
PPI_CONTROL レジスタ ......................................................... 11-3
PPI_STATUS レジスタ ............................................................. 11-9
PPI_DELAY レジスタ ............................................................. 11-11

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

xix

目次

PPI_COUNT レジスタ ............................................................ 11-11
PPI_FRAME レジスタ ............................................................ 11-12
ITU-R 656 モード .......................................................................... 11-14
ITU-R 656 の背景 .................................................................... 11-14
ITU-R 656 入力モード ............................................................ 11-18
フィールド全体 ................................................................... 11-19
アクティブ・ビデオ専用 ..................................................... 11-20
垂直ブランキング期間（VBI）専用 ................................... 11-20
ITU-R 656 出力モード ............................................................ 11-21
ITU-R 656 モードでのフレーム同期 ....................................... 11-21
汎用 PPI モード ............................................................................. 11-22
データ入力（RX）モード ........................................................ 11-25
フレーム同期なし ............................................................... 11-25
1 つ、2 つ、または 3 つの外部フレーム同期 ..................... 11-26
2 つまたは 3 つの内部フレーム同期 ................................... 11-27
データ出力（TX）モード ........................................................ 11-28
フレーム同期なし ............................................................... 11-28
1 つまたは 2 つの外部フレーム同期 ................................... 11-29
1 つ、2 つ、または 3 つの内部フレーム同期 ..................... 11-30
GP モードでのフレーム同期 ................................................... 11-30
内部フレーム同期によるモード .......................................... 11-31
外部フレーム同期によるモード .......................................... 11-32
DMA 動作 ...................................................................................... 11-33
データ転送シナリオ ...................................................................... 11-35

xx

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

目次

シリアル・ポート・コントローラ
SPORT の動作 ................................................................................. 12-8
SPORT のディスエーブル ............................................................... 12-9
SPORT モードの設定 .................................................................... 12-10
レジスタの書込みと実効遅延 ........................................................ 12-11
SPORTx_TCR1 レジスタと SPORTx_TCR2 レジスタ ................ 12-12
SPORTx_RCR1 レジスタと SPORTx_RCR2 レジスタ ................ 12-18
データ・ワード・フォーマット ..................................................... 12-23
SPORTx_TX レジスタ ................................................................... 12-23
SPORTx_RX レジスタ .................................................................. 12-26
SPORTx_STAT レジスタ .............................................................. 12-28
SPORT RX、TX、およびエラー割込み .................................. 12-30
PAB エラー .............................................................................. 12-31
SPORTx_TCLKDIV レジスタと SPORTx_RCLKDIV レジスタ . 12-31
SPORTx_TFSDIV レジスタと SPORTx_RFSDIV レジスタ ....... 12-32
クロック周波数とフレーム同期周波数 .......................................... 12-33
最大クロック・レートの制約 .................................................. 12-35
フレーム同期とクロックの例 .............................................. 12-35
ワード長 ......................................................................................... 12-35
ビット順序 ..................................................................................... 12-36
データ型 ......................................................................................... 12-36
圧伸 ................................................................................................ 12-37
クロック信号のオプション ............................................................ 12-37
フレーム同期のオプション ............................................................ 12-38
フレーム付きとフレームなし .................................................. 12-38

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

xxi

目次

内部フレーム同期と外部フレーム同期 .................................... 12-40
アクティブ・ローのフレーム同期とアクティブ・ハイのフレーム同期 ........................................ 12-41
データとフレーム同期のサンプリング・エッジ ..................... 12-41
早期フレーム同期と遅延フレーム同期（通常タイミングと代替タイミング）.................................... 12-43
データ独立の送信フレーム同期 ............................................... 12-45
SPORT とメモリとの間のデータ転送 ........................................... 12-46
ステレオ・シリアル動作 ............................................................... 12-46
マルチチャンネル動作 ................................................................... 12-50
SPORTx_MCMCn レジスタ ................................................... 12-53
マルチチャンネル・イネーブル ............................................... 12-54
マルチチャンネル・モードでのフレーム同期 ......................... 12-56
マルチチャンネル・フレーム .................................................. 12-57
マルチチャンネル・フレーム遅延 ........................................... 12-58
ウィンドウ・サイズ ................................................................. 12-59
ウィンドウ・オフセット ......................................................... 12-59
SPORTx_CHNL レジスタ ....................................................... 12-60
SPORTx_MCMC2 内のその他のマルチチャンネル・フィールド ............................................ 12-61
チャンネル・セレクト・レジスタ ........................................... 12-61
SPORTx_MRCSn レジスタ ................................................ 12-63
SPORTx_MTCSn レジスタ ................................................ 12-65
マルチチャンネル DMA のデータ・パッキング ...................... 12-67
H.100 標準プロトコルのサポート ................................................. 12-68
2X クロック再生コントロール ................................................ 12-69

xxii

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

目次

SPORT ピン／ライン終端 ............................................................. 12-69
タイミング例 ................................................................................. 12-69

UART ポート・コントローラ
シリアル通信 ................................................................................... 13-2
UART コントロール・レジスタとステータス・レジスタ .............. 13-3
UART_LCR レジスタ ................................................................ 13-4
UART_MCR レジスタ ............................................................... 13-5
UART_LSR レジスタ ................................................................ 13-6
UART_THR レジスタ ............................................................... 13-7
UART_RBR レジスタ ................................................................ 13-8
UART_IER レジスタ ................................................................. 13-9
UART_IIR レジスタ ................................................................ 13-11
UART_DLL レジスタと UART_DLH レジスタ ...................... 13-13
UART_SCR レジスタ .............................................................. 13-15
UART_GCTL レジスタ ........................................................... 13-15
非 DMA モード .............................................................................. 13-16
DMA モード .................................................................................. 13-18
ミキシング・モード ....................................................................... 13-19
IrDA サポート ............................................................................... 13-19
IrDA トランスミッタの説明 .................................................... 13-20
IrDA レシーバの説明 ............................................................... 13-21

プログラマブル・フラグ
プログラマブル・フラグ・レジスタ（MMR）................................. 14-5
FIO_DIR レジスタ .................................................................... 14-5

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

xxiii

目次

フラグ値レジスタの概要 ........................................................... 14-6
FIO_FLAG_D レジスタ ............................................................ 14-9
FIO_FLAG_S、FIO_FLAG_C、およびFIO_FLAG_T レジスタ .......................................................... 14-9
FIO_MASKA_D、FIO_MASKA_C、FIO_MASKA_S、
FIO_MASKA_T、FIO_MASKB_D、FIO_MASKB_C、
FIO_MASKB_S、FIO_MASKB_T レジスタ ....................... 14-12
フラグ割込みの生成フロー ................................................. 14-14
FIO_MASKA_D、FIO_MASKA_C、FIO_MASKA_S、
FIO_MASKA_T レジスタ ................................................ 14-16
FIO_MASKB_D、FIO_MASKB_C、FIO_MASKB_S、
FIO_MASKB_T レジスタ ................................................ 14-18
FIO_POLAR レジスタ ............................................................ 14-20
FIO_EDGE レジスタ .............................................................. 14-21
FIO_BOTH レジスタ .............................................................. 14-22
FIO_INEN レジスタ ............................................................... 14-23
性能／スループット ...................................................................... 14-24

タイマ
汎用タイマ ....................................................................................... 15-1
タイマ・レジスタ ............................................................................ 15-4
TIMER_ENABLE レジスタ ...................................................... 15-4
TIMER_DISABLE レジスタ ..................................................... 15-6
TIMER_STATUS レジスタ ....................................................... 15-7
TIMERx_CONFIG レジスタ .................................................... 15-9
TIMERx_COUNTER レジスタ ............................................... 15-11
TIMERx_PERIOD レジスタと TIMERx_WIDTH レジスタ .. 15-12

xxiv

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

目次

タイマの使い方 .............................................................................. 15-16パルス幅変調（PWM_OUT）モード ...................................... 15-18出力パッド・ディスエーブル .............................................. 15-20
単一パルス生成 ................................................................... 15-21
パルス幅変調波形の生成 ..................................................... 15-21
PWM_OUT モードでのタイマの停止 ................................. 15-23
外部的にクロック駆動される PWM_OUT ......................... 15-24
PULSE_HI トグル・モード ............................................... 15-25
パルス幅カウントおよびキャプチャ（WDTH_CAP）モード ..................................... 15-30
オートボー・モード ............................................................ 15-38
外部イベント（EXT_CLK）モード ........................................ 15-40
PPI でのタイマの使い方 .......................................................... 15-41
割込み ...................................................................................... 15-42
不正状態 ................................................................................... 15-44
まとめ ...................................................................................... 15-47
コア・タイマ ................................................................................. 15-49
TCNTL レジスタ ..................................................................... 15-50
TCOUNT レジスタ .................................................................. 15-52
TPERIOD レジスタ ................................................................. 15-53
TSCALE レジスタ ................................................................... 15-54
ウォッチドッグ・タイマ ............................................................... 15-54
ウォッチドッグ・タイマの動作 ............................................... 15-55
WDOG_CNT レジスタ ............................................................ 15-55
WDOG_STAT レジスタ ........................................................... 15-56

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

xxv

目次

WDOG_CTL レジスタ ............................................................. 15-58

リアルタイム・クロック
インターフェース ............................................................................ 16-3
RTC クロックの条件 ....................................................................... 16-4
RTC プログラミング・モデル ......................................................... 16-4
レジスタの書込み ...................................................................... 16-6
書込み遅延 ................................................................................. 16-7
レジスタの読出し ...................................................................... 16-8
ディープ・スリープ ................................................................... 16-8
プリスケーラのイネーブル ........................................................ 16-9
イベント・フラグ ...................................................................... 16-9
割込み ...................................................................................... 16-12
RTC_STAT レジスタ ..................................................................... 16-14
RTC_ICTL レジスタ ..................................................................... 16-16
RTC_ISTAT レジスタ ................................................................... 16-17
RTC_SWCNT レジスタ ................................................................ 16-18
RTC_ALARM レジスタ ................................................................. 16-20
RTC_PREN レジスタ .................................................................... 16-21
状態遷移のまとめ .......................................................................... 16-22

外部バス・インターフェース・ユニット
概要 .................................................................................................. 17-1
ブロック図 ................................................................................. 17-4
内部メモリ・インターフェース ................................................. 17-5
外部メモリ・インターフェース ................................................. 17-6

xxvi

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

目次

EBIU プログラミング・モデル l ............................................... 17-8
エラー検出 ................................................................................. 17-9
非同期メモリ・インターフェース ................................................... 17-9
非同期メモリ・アドレスのデコード ....................................... 17-10
EBIU_AMGCTL レジスタ ...................................................... 17-10
EBIU_AMBCTL0 レジスタと EBIU_AMBCTL1 レジスタ ... 17-12
バス競合の回避 ........................................................................ 17-16
ARDY 入力制御 ................................................................... 17-16
プログラマブルなタイミング特性 ........................................... 17-17
コア命令による非同期アクセス .......................................... 17-18
非同期読出し ............................................................. 17-18
非同期書込み ............................................................. 17-20
ウェイト・ステートの追加 ................................................. 17-22
バイト・イネーブル ............................................................ 17-24
SDRAM コントローラ（SDC）...................................................... 17-24
用語の定義 ............................................................................... 17-25
Bank Activate コマンド ..................................................... 17-25
バースト長 .......................................................................... 17-26
Burst Stop コマンド ........................................................... 17-26
バースト・タイプ ................................................................ 17-26
CAS 遅延（CL） .................................................................. 17-27
CBR（CAS Before RAS）
リフレッシュまたは自動リフレッシュ ............................ 17-27
DQM データ I/O マスク機能 ............................................... 17-27
内部バンク .......................................................................... 17-27

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

xxvii

目次

モード・レジスタ ............................................................... 17-28
ページ・サイズ ................................................................... 17-29
Precharge コマンド ............................................................ 17-29
SDRAM バンク ................................................................... 17-29
Self-Refresh ........................................................................ 17-29
tRAS ................................................................................... 17-30
tRC ...................................................................................... 17-30
tRCD ................................................................................... 17-30
tRFC ................................................................................... 17-31
tRP ...................................................................................... 17-31
tRRD ................................................................................... 17-31
tWR ..................................................................................... 17-31
tXSR ................................................................................... 17-32
利用可能な SDRAM 設定 ........................................................ 17-32
SDRAM システムのブロック図の例 ....................................... 17-33
EBIU_SDGCTL レジスタ ....................................................... 17-34
SDRAM クロック・イネーブルの設定（SCTLE）............. 17-39
Self-Refresh モードへの出入り（SRFS）........................... 17-40
SDRAM バッファ・タイミング・オプションの設定（EBUFE）......................................................................... 17-41
CAS 遅延値の選択（CL）.................................................... 17-42
SDQM 動作 ......................................................................... 17-43
並列リフレッシュ・コマンドの実行 ................................... 17-43
Bank Activate コマンド遅延の選択（TRAS）.................... 17-43
プリチャージ遅延の選択（TRP）........................................ 17-44
Precharge 遅延への書込みの選択（TWR）......................... 17-45

xxviiiADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

目次

EBIU_SDBCTL レジスタ ....................................................... 17-46
EBIU_SDSTAT レジスタ ........................................................ 17-49
EBIU_SDRRC レジスタ .......................................................... 17-50
SDRAM 外部メモリのサイズ .................................................. 17-52
SDRAM アドレスのマッピング ............................................... 17-53
16 ビット幅の SDRAM アドレスの多重化 ......................... 17-53
データ・マスク（SDQM[1:0]）のエンコーディング .............. 17-54
SDC 動作 ................................................................................. 17-55
SDC の設定 .............................................................................. 17-56
SDC コマンド .......................................................................... 17-58
Precharge コマンド ............................................................ 17-59
Bank Activate コマンド ..................................................... 17-60
Load Mode Register コマンド ............................................ 17-60
Read/Write コマンド .......................................................... 17-61
Auto-Refresh コマンド ....................................................... 17-62
Self-Refresh コマンド ......................................................... 17-62
No Operation/Command Inhibit コマンド ........................ 17-63
SDRAM のタイミング仕様 ...................................................... 17-64
SDRAM Performance ............................................................. 17-64
バス要求と許可 .............................................................................. 17-65
動作 .......................................................................................... 17-65

システム設計ピンの説明 ....................................................................................... 18-1
未使用ピンに関する推奨処置 .................................................... 18-1
プロセッサのリセット ..................................................................... 18-1

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

xxix

目次

プロセッサのブート ........................................................................ 18-2
クロックの管理 ................................................................................ 18-4
コア・クロックとシステム・クロックの管理 ........................... 18-4
割込みの設定とサービス ................................................................. 18-4
セマフォ .......................................................................................... 18-5
クエリ・セマフォのコード例 .................................................... 18-6
データ遅延、レイテンシおよびスループット ................................. 18-7
バスの優先順位 ................................................................................ 18-7
外部メモリの設計に関する事項 ...................................................... 18-7
非同期メモリ・インターフェースの例 ...................................... 18-7
16M バイトよりも小さい SDRAM の利用 ................................ 18-8
PLL 遷移時における SDRAM のリフレッシュ管理 ................ 18-10
バス競合の回避 ........................................................................ 18-12高周波数設計に関する考慮事項 .................................................... 18-13
シリアル・ポート上のポイント・ツー・ポイント接続 ........... 18-13
シグナル・インテグリティ ...................................................... 18-14
デカップリング・コンデンサとグラウンド・プレーン ........... 18-15
オシロスコープ・プローブ ...................................................... 18-15
推奨する参考文献 .................................................................... 18-17

Blackfin プロセッサのデバッグ
ウォッチポイント・ユニット .......................................................... 19-2
命令ウォッチポイント ............................................................... 19-5
WPIAn レジスタ ....................................................................... 19-6
WPIACNTn レジスタ ................................................................ 19-7

xxx

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

目次

WPIACTL レジスタ .................................................................. 19-8
データ・アドレス・ウォッチポイント .................................... 19-11
WPDAn レジスタ .................................................................... 19-12
WPDACNTn レジスタ ............................................................ 19-12
WPDACTL レジスタ ............................................................... 19-13
WPSTAT レジスタ ................................................................... 19-15
トレース・ユニット ....................................................................... 19-16
TBUFCTL レジスタ ................................................................ 19-17
TBUFSTAT レジスタ .............................................................. 19-18
TBUF レジスタ ....................................................................... 19-19
メモリで実行トレースを再作成するためのコード ............. 19-20
パフォーマンス・モニタリング・ユニット ................................... 19-21
PFCNTRn レジスタ ................................................................ 19-21
PFCTL レジスタ ...................................................................... 19-22
イベント・モニタ表 ................................................................. 19-24
サイクル・カウンタ ....................................................................... 19-26
CYCLES および CYCLES2 レジスタ ..................................... 19-28
製品識別レジスタ .......................................................................... 19-28
DSPID レジスタ ...................................................................... 19-29

Blackfin プロセッサのコア MMR の割当て
L1 データ・メモリ・コントローラ・レジスタ ................................ A-1
L1 命令メモリ・コントローラ・レジスタ ....................................... A-3
割込みコントローラ・レジスタ ........................................................ A-5
コア・タイマ・レジスタ .................................................................. A-7

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

xxxi

目次

デバッグ、MP、エミュレーション・ユニット・レジスタ .............. A-8
トレース・ユニット・レジスタ ....................................................... A-8
ウォッチポイント・レジスタとパッチ・レジスタ ........................... A-9
パフォーマンス・モニタ・レジスタ .............................................. A-10

システム MMR の割当て
ダイナミック・パワー・マネジメント・レジスタ ........................... B-2
システム・リセットと割込みコントロール・レジスタ ................... B-3
ウォッチドッグ・タイマ・レジスタ ................................................ B-4
リアルタイム・クロック・レジスタ ................................................ B-4
パラレル・ペリフェラル・インターフェース（PPI）レジスタ ...... B-5
UART コントローラ・レジスタ ....................................................... B-5
SPI コントローラ・レジスタ ........................................................... B-6
タイマ・レジスタ ............................................................................. B-7
プログラマブル・フラグ・レジスタ ................................................ B-8
SPORT0 コントローラ・レジスタ ................................................. B-10
SPORT1 コントローラ・レジスタ ................................................. B-11
DMA/ メモリ DMA コントロール・レジスタ ................................ B-13
外部バス・インターフェース・ユニット・レジスタ ..................... B-16

テスト機能
JTAG 規格 ........................................................................................ C-1
バウンダリスキャン・アーキテクチャ ............................................. C-2
命令レジスタ .............................................................................. C-4
パブリック命令 ........................................................................... C-5
EXTEST―バイナリ・コード 00000 ..................................... C-6

xxxii

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

目次

SAMPLE/PRELOAD―バイナリ・コード 10000 ................. C-6
BYPASS―バイナリ・コード 11111 ...................................... C-6
バウンダリスキャン・レジスタ .................................................. C-7

数値フォーマット
符号なしと符号付き：2 の補数フォーマット ................................... D-1
整数と小数 ........................................................................................ D-1
2 進乗算 ............................................................................................ D-5
小数モードと整数モード ............................................................ D-6
ブロック浮動小数点フォーマット .................................................... D-6

用語集

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

xxxiii

目次

xxxiv

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

まえがき

アナログ・デバイセズの Blackfin® プロセッサでシステムを開発していた
だき、まことにありがとうございます。

マニュアルの目的
このマニュアルでは、Blackfin プロセッサのアーキテクチャ情報を提供します。アーキテクャ説明では、機能ブロック、バス、ポートに加えて、サポートされるすべての機能とプロセスも取り上げます。プログラミング情
報に つ い ては、『ADSP-BF53x Blackfin Processor Instruction Set
Reference』を参照してください。タイミング仕様、電気仕様、パッケー
ジ 仕 様 に つ い て は、『ADSP-BF531/ADSP-BF532/ADSP-BF533
Embedded Processor Data Sheet』を参照してください。

対象となる読者
このマニュアルは、アナログ・デバイセズのプロセッサに精通しているプ
ログラマを対象にしており、該当するプロセッサ・アーキテクチャと命令セットに関する実用的な知識がある読者を想定しています。アナログ・デ
バイセズのプロセッサをよく知らないプログラマもこのマニュアルを使用できますが、その場合はターゲット・アーキテクチャについて解説している他の資料（該当するハードウェア・リファレンス・マニュアルやデー
タシートなど）も併用してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

xxxv

マニュアルの内容

マニュアルの内容
このマニュアルは、以下の章で構成されています。
• 第 1章「はじめに」
プロセッサのハイレベルな概要を示します。アーキテクャ説明では、機能ブロック、バス、ポートに加えて、サポートされる機能とプロセスも取り上げます。
• 第 2章「演算ユニット」
算術論理演算ユニット (ALU)、積和演算ユニット (MAC)、シフタ、
ビデオ ALU群について説明します。また、データ・フォーマット、
データ型、レジスタ・ファイルについても説明します。
• 第 3章「動作モードと状態」
プロセッサの 3つの動作モードである、エミュレーション・モード、
スーパーバイザ・モード、ユーザ・モードについて説明します。また、アイドル状態とリセット状態についても説明します。
• 第 4章「プログラム・シーケンサ」
実行される次の命令のアドレスを提供してプログラム・フローを制御する、プログラム・シーケンサの動作について説明します。また、ループ、サブルーチン、ジャンプ、割込み、例外についても説明します。
• 第 5章「データ・アドレス・ジェネレータ」
データ・アドレス・ジェネレータ (DAG)、アドレッシング・モー
ド、DAG レジスタとポインタ・レジスタの変更方法、メモリのア
ドレス・アライメント、DAG 命令について説明します。

xxxvi

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

まえがき• 第 6章「メモリ」
L1 メモリについて説明します。特に、そのメモリ・アーキテクチャ、
メモリ・モデル、メモリ・トランザクション・モデル、メモリマッ
プド・レジスタ (MMR) について詳述します。また、命令、データ、
および Blackfin プロセッサ・コアの一部であるスクラッチパッド・
メモリについても説明します。
• 第 7章「チップ・バス階層」
システム内でのデータ転送も含めて、オンチップ・バスについて説明します。また、システム・メモリ・マップ、主要なシステム・コ
ンポーネント、システム相互接続についても説明します。
• 第 8章「ダイナミック・パワー・マネジメント」
システムのリセット設定とパワーアップ設定、システムのクロッキ
ングと制御、パワーマネジメントについて説明します。
• 第 9章「ダイレクト・メモリ・アクセス」
ペリフェラル DMA コントローラとメモリ DMA コントローラについて説明します。ペリフェラル DMA の節では、DMA アクセスを備えたペリフェラルと内部／外部メモリ・スペースとの間の直接的なブロック・データ転送について説明します。
メモリ DMA の節では、プロセッサのメモリ・スペースとL1 メモ
リ、外部の同期／非同期メモリの間でのメモリ間転送機能について説明します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

xxxviiマニュアルの内容• 第 10章「SPI互換ポート・コントローラ」
SPI 互換 のさま ざまな ペリフェ ラル・デバイ スにI/O インタ ー
フェースを提供する、シリアル・ペリフェラル・インターフェース(SPI) ポートについて説明します。
• 第 11章「パラレル・ペリフェラル・インターフェース」
プロセッサのパラレル・ペリフェラル・インターフェース (PPI) について説明します。PPI は半二重の双方向ポートであり、最高16ビットのデータに対応し、デジタル・ビデオやデータ・コンバータのアプリケーションに使用されます。
• 第 12章「シリアル・ポート・コントローラ」
さまざまなシリアル・ペリフェラル・デバイスにI/Oインターフェー
スを提供する、2つの独立した同期シリアル・ポート・コントロー
ラ（SPORT0 とSPORT1）について説明します。
• 第 13章「UARTポート・コントローラ」
データ・フォーマットのシリアル／パラレル変換を行い、モデム制
御と割込み処理のハードウェアを内蔵する、非同期シリアル・イン
ターフェース LSI (UART) ポートについて説明します。UART では、モード対応機能として半二重のIrDA® SIRプロトコルをサポートします。
• 第 14章「プログラマブル・フラグ」
ピンを入／出力として設定する方法や割込みの生成方法も含めて、プロセッサ内のプログラマブル・フラグ、つまり汎用 I/Oピンについて説明します。

xxxviii

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

まえがき• 第 15 章「タイマ」
3 つのモードに設定できる、3 つの汎用タイマについて説明します。
コア・タイマでは、さまざまなタイミング機能用に周期割込みを生成できます。ウォッチドッグ・タイマでは、Blackfinプロセッサ・
コアへのイベント生成などのソフトウェア・ウォッチドッグ機能を実装できます。
• 第 16 章「リアルタイム・クロック（RTC）」
時刻、アラーム、ストップウォッチ・カウントダウンなど、プロセッサの一連のデジタル・ウォッチ機能について説明します。
• 第 17 章「外部バス・インターフェース・ユニット」
プロセッサの外部バス・インターフェース・ユニットについて説明します。また、非同期メモリ・インターフェース、SDRAM コント
ローラ (SDC)、関連するレジスタ、SDC の設定、コマンドについても説明します。
• 第 18 章「システム設計」
プロセッサをシステム全体の一部として使用する方法について説明します。プロセッサを外部メモリ・チップにインターフェースする方法、バスのタイミング数とレイテンシ数、セマフォ、未使用ピンの取り扱いについても説明します。
• 第 19 章「Blackfin プロセッサのデバッグ」
Blackfin プロセッサのデバッグ機能について説明します。この機能
はソフトウェア・デバッギングに使用でき、オペレーティング・シ
ステムでよく採用されているサービスを補完します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

xxxix

マニュアルの最新情報• 付録 A「Blackfinプロセッサ・コア MMR の割当て」
コア・メモリマップド・レジスタ、そのアドレス、本文へのクロス
リファレンスを一覧にします。
• 付録 B「システム MMRの割当て」
システム・メモリマップド・レジスタ、そのアドレス、本文へのクロスリファレンスを一覧にします。
• 付録 C「テスト機能」
プロセッサのテスト機能について説明します。JTAG 規格、バウン
ダリスキャン・アーキテクチャ、命令レジスタとバウンダリ・レジ
スタ、パブリック命令について説明します。
• 付録 D「数値フォーマット」
16 ビット・データ・フォーマットのさまざまな側面について説明します。また、ソフトウェアでブロック浮動小数点フォーマットを実装する方法についても説明します。
• 付録 G「用語集」
略語を含め、この本で使用されている用語の定義があります。

マニュアルの最新情報
これは『ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス』の第 3 版です。この本の第2 版からの改訂には、誤植や報告された正誤表の訂正が含まれます。

xl

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

まえがきテクニカル／カスタマ・サポート
Blackfin プロセッサのカスタマ・サポートは、以下の方法でご利用になれます。
• Blackfin プロセッサのWeb サイト：
www.analog.com/jp/blackfin• 電子メールでのお問い合わせ：marcom.japan@analog.com• アナログ・デバイセズの正規販売代理店：
www.analog.com/intl/japan/salesdir/index.html

対応するプロセッサ
以下は、VisualDSP++®に対応しているアナログ・デバイセズのプロセッ
サのリストです。
TigerSHARC®（ADSP-TSxxx）プロセッサ
TigerSHARC は、8/16/32 ビットの浮動小数点／固定小数点のプロセッサです。VisualDSP++は、以下の TigerSHARCプロセッサで利用できます。
ADSP-TS101 、ADSP-TS201、ADSP-TS202、ADSP-TS203
SHARC®（ADSP-21xxx）プロセッサ
SHARC は、音声、サウンド、グラフィック、イメージング・アプリケー
ションに使用できる高性能、32 ビット、浮動小数点のプロセッサです。
VisualDSP++ は、以下の SHARC プロセッサで利用できます。
ADSP-21020、ADSP-21060、ADSP-21061、ADSP-21062、ADSP-21065L、
ADSP-21160、ADSP-21161、ADSP-21261、ADSP-21262、ADSP-21266、
ADSP-21267、ADSP-21363、ADSP-21364、ADSP-21365

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

xli

製品情報

Blackfin®（ADSP-BFxxx）プロセッサ
Blackfin は、16ビットの組込みプロセッサです。
VisualDSP++ は、以下の Blackfin プロセッサで利用できます。
ADSP-BF531、ADSP-BF532 （旧 ADSP-21532）、ADSP-BF533、
ADSP-BF535（旧 ADSP-21535）、ADSP-BF561、AD6532、AD90747

製品情報
製品情報については、アナログ・デバイセズ Webサイト、製品の CD-ROM、または印刷刊行物（マニュアル）をご覧ください。
アナログ・デバイセズの Web サイト http://www.analog.com/jp では、アナログ集積回路、アンプ、コンバータ、デジタル・シグナル・プロセッサなど、広範囲の製品情報を提供します。

■ MyAnalog.com
MyAnalog.com は、アナログ・デバイセズの Web サイトが提供する無料の機能です。関心のある製品の最新情報だけを Web ページに表示するようにカスタマイズできます。また、ご自分の興味に一致する Web ページの更 新 情 報 に 関 し て お 知 ら せ メ ー ル を 毎 週 受 け 取 る こ と も で き ま す。
MyAnalog.com から書籍、アプリケーション・ノート、データシート、コード例などを入手することも可能です。
登録
www.myanalog.com で ご 登録 く ださ い。
「Register」を ク リッ ク すれ ば、
MyAnalog.com. をご利用になれます。登録には約5 分かかります。登録することによって、欲しい情報を選択することができます。
すでに登録されているユーザは、ログインしてください。ご使用のユーザ
名がメールのアドレスになります。

xlii

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

まえがき■ プロセッサ製品情報
組込みプロセッサと DSPの詳細については、当社の Webサイト
http://www.analog.com/jp/dspをご覧ください。技術刊行物、データシート、
アプリケーション・ノート、製品概要、製品発表資料にアクセスできます。

■ 関連資料ADSP-BF53x プロセッサ（および関連プロセッサ）に関する以下の資料
は、アナログ・デバイセズの販売代理店にご注文ください。
• VisualDSP++ User’s Guide for 16-Bit Processors• VisualDSP++ C/C++ Compiler and Library Manual for Blackfin
Processors• VisualDSP++ Assembler and Preprocessor Manual for Blackfin
Processors• VisualDSP++ Linker and Utilities Manual for 16-Bit Processors• VisualDSP++ Kernel (VDK) User’s Guide for 16-Bit Processor• VisualDSP++ Component Software Engineering User’s Guidefor 16-Bit Processors• ADSP-BF531/ADSP-BF532/ADSP-BF533 Embedded Processor
Data Sheet• ADSP-BF535 Embedded Processor Data Sheet• ADSP-BF53x Blackfin Processor Instruction Set Reference
すべてのプロセッサおよびツールのマニュアルとデータシートをご所望の場合は、テクニカル・ライブラリの Webサイトをご覧ください。
http://www.analog.com/processors/Japan/resources/technicalLibrary

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

xliii

製品情報

■ オンライン技術資料
オンライン資料には、VisualDSP++Help システム、ソフトウェア・ツー
ル・マニュアル、ハードウェア・ツール・マニュアル、プロセッサ・マ
ニュアル、Dinkum Abridged C++ ライブラリ、Flexible License Manager（FlexLM）ネットワーク・ライセンス・マネージャ・ソフトウェア・ドキュメンテーションがあります。関心のある問題について、VisualDSP++
資料全体の中から簡単に検索できます。大部分のマニュアルを .PDF ファイ
ルで提供しています。
資料のファイルには、以下の種類があります。
ファイル

内容

.CHM

ヘルプ・システムのファイルおよびヘルプ形式のマニュアル。

.HTM または.HTML

Dinkum Abridged C++ ライブラリ、Flexible License Manager（FlexLM）ネット
ワーク・ライセンス・マネージャ・ソフトウェア・ドキュメンテーション。HTML ファ
イルでの表示や印刷には、Internet Explorer 4.0（またはそれ以上）のブラウザが必
要です。

.PDF

ポータブル・ドキュメンテーション・フォーマット（PDF）の VisualDSP++ およびプロセッサのマニュアル。.PDF ファイルの表示や印刷には Adobe Acrobat Reader（4.0 以上）などの PDF リーダーが必要です。

ソフトウェアとともに資料をシステムにインストールしなかった場合は、
VisualDSP++ の CD-ROM からTools のインストールを実行すればいつでもインストールできます。オンラインの資料は、VisualDSP++ 環境、Windows® Explorer、またはアナログ・デバイセズの Web サイトから入手できます。

xliv

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

まえがき

X VisualDSP++ 環境からの資料の入手

以下の手順で、VisualDSP++環境から入手できます。
• ヘルプ・メニューの Contents、Search、Index から VisualDSP++
オンライン・ヘルプにアクセスします。
• コンテキスト・センシティブのユーザ・インターフェース項目からオンライン・ヘルプを開きます。
X Windows からの資料の入手

ユーザの設定したショートカットのほかに、VisualDSP++ オンライン・
ヘルプや Windows から補足資料を開くにはさまざまな方法があります。
ヘルプ・システムのファイル（.CHM）は Help フォルダの中に、.PDF ファ
イルはVisualDSP++インストールCD-ROMのDocs フォルダの中にあります。Docs フォルダには、Dinkum Abridged C++ライブラリとFlexLM ネッ
トワーク・ライセンス・マネージャ・ソフトウェア・ドキュメンテーショ
ンも入っています。
Windows Explorer を使用する場合• vdsp-help.chm ファイル（マスターのヘルプ・システム）をダブル
クリックして、すべての .CHM ファイルにアクセスします。
• VisualDSP++ 資料セットの中の任意のファイルをダブルクリック
します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

xlv

製品情報

Windows のスタート・ボタンを使用する場合• スタート・ボタンからプログラム、Analog Devices、VisualDSP++、
VisualDSP++ Documentation を選択して、VisualDSP++ オンライン・ヘルプにアクセスします。
• スタート・ボタンからプログラム、Analog Devices、VisualDSP++、
Documentation for Printing、書名を選択して、.PDF ファイルを入手します。
X Web サイトからの資料の入手

以下の Webサイトからマニュアルをダウンロードします。
http://www.analog.com/processors/Japan/resources/technicalLibrary

プロセッサ・ファミリーや書名を選択します。マニュアルごとのアーカイ
ブ（.ZIP）ファイルをダウンロードします。WinZip など任意のアーカイ
ブ管理ソフトウェアを使用して、ダウンロードしたファイルを解凍しま
す。

■ 印刷物
資料のご請求に関しましては、フリーダイアル 0120-390769（サンキュー
アナログ）までお問い合わせください。
X VisualDSP++ マニュアル

VisualDSP++ マニュアルは、アナログ・デバイセズのWeb サイトよりダウンロードください。印刷物をご希望の場合は、併設のフリーダイアルまでお問い合わせください。

xlvi

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

まえがき

X ハードウェア・ツール・マニュアル

EX-KIT Lite™ およびIn-Circuit Emulator（ICE）のマニュアルをご希望の場合は、併設のフリーダイアルまでお問い合わせください。
X プロセッサ・マニュアル

ハードウェア・リファレンス・マニュアルと命令セット・リファレンス・
マニュアルは、アナログ・デバイセズの Web サイトよりダウンロードく
ださい。印刷物をご希望の場合は、併設のフリーダイアルまでお問い合わ
せください。
X データシート

すべてのデータシートは、アナログ・デバイセズの Web サイトよりダウンロードが可能です。印刷物をご希望の場合は、併設のフリーダイアルまでお問い合わせください。
X DSP 刊行物へのご意見

当社のマニュアルおよびオンライン・ヘルプについてのご意見・ご提案は、下記アドレスにお寄せください。
marcom.japan@analog.com

表記規則
このマニュアルで使用するテキスト表記規則は、以下のとおりです。
例

説明

SWRSTソフトウェア・ レジスタ名は、大文字と特殊な字体で表記されます。レジスタの記述名は、

リセット・レジスタ

大／小文字を混じえて通常字体で表記されます。

TMROE, RESET

ピン名は、大文字と特殊な字体で表記されます。アクティブ・ロー信号は上線と共に表記されます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

xlvii

表記規則

例

説明

DRx, I[3:0]
SMS[3:0]

本文中のレジスタ名、ビット名、ピン名は、レジスタやピンのグループを表すことがあります。
レジスタ名 (DRx) の小文字 x は、一連のレジスタを示します（たとえば、DR2、
DR1、DR0）。
大カッコ内で数値を区切るコロンは、一連のレジスタやピンを示します（たとえば、I[3:0] では I3、I2、I1、I0 を示し、SMS[3:0] では SMS3、SMS2、
SMS1、SMS0 を示します）。

0xabcd, b#1111

接頭辞 0x は 16 進を示し、接頭辞 b# は 2 進を示します。

L
[

注：

注では、特に重要な情報や関連する問題を示します。

注意：

注意では、プロセッサの動作に影響を与える設計上またはプログラミング上の重要な問題について情報を示します。

L

本書の中では、特定の章の中でのみ、その他の表記規則を使用していることがあります。

■ レジスタ図の表記規則
レジスタ図では、以下の表記規則を使用します。
• レジスタの記述名が先頭に表記され、それに続くカッコ内に名前の短形式が表記されます。
表 P-1.

レジスタ名の短形式

パターン

説明

例

TIMERx_CONFIG

x は複数のペリフェラルを表します。

TIMER0_CONFIGTIMER1_CONFIGTIMER2_CONFIG

SIC_IARnn は、同じペリフェラル内または同じコ SIC_IAR2
ア・コンポーネント内の複数のレジスタ ICPLB_DATA15を表します。

xlviiiADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

まえがき

表 P-1.

レジスタ名の短形式

パターン

説明

例

SPORTx_TCRn

x と n の組合わせは、複数のペリフェラ SPORT0_TCR0
ルと、同じペリフェラル内の複数のレジ SPORT1_TCR1
スタを示します。

MDMA_yy_CONFIG

yy は、デスティネーションまたはソー MDMA_D0_CONFIG
スの、MemDMA ストリーム 0 または 1 MDMA_S0_CONFIG
MDMA_D1_CONFIGを表します。
MDMA_S1_CONFIG• レジスタが Read-Only (RO)、Write-1-to-Set (W1S)、またはWrite-1-to-Clear (W1C) である場合には、この情報は名前の下に表記されます。Read/Write はデフォルトであり、特に表記されません。追加の説明文が続くこともあります。
• レジスタ内に全体的な読出し／書込み表記規則に従わないビットがある場合には、ビット名に続くビット説明にそのことが表記されます。
• ビットに短縮名がある場合には、短縮名がビット説明の最初に表記され、続いてカッコ内に正式名が表記されます。
• MMR 割当ては、レジスタの左側に16進で表示します。複数のアドレスが関係する場合は、レジスタの下の表に示します。
• リセット値は個々のビットに 2進で表記され、レジスタの右側に 16
進で表記されます。
• x とマークされたビットでは、リセット値が未知です。したがって、そのようなビットを含むレジスタのリセット値は、未定義である
か、またはリセット時のピン値に依存します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

xlix

表記規則

• 網掛けされたビットは予約済みです。

L

将来のシステムとの上位互換性を保証するには、特に指定のない限
り、レジスタ内の予約済みビットに対して、読み出した値は書き戻
してください。

図 P-1は、これらの表記規則の例を示します。

l

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

まえがき

タイマ設定レジスタ (TIMERx_CONFIG)

タイマ 0:
0xFFC0 0600

15 14 13 12 11 10
0 0 0 0 0 0

9
0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1 0
0 0

リセット＝ 0x0000

タイマ 1:
0xFFC0 0610

TMODE[1:0]（タイマ・モード）
00 - リセット状態 - 未使用
01 - PWM_OUT モード
10 - WDTH_CAP モード
11 - EXT_CLK モード
PULSE_HI
0 - 負のアクション・パルス
1 - 正のアクション・パルス
PERIOD_CNT（周期カウント）
0 - 幅の最後までカウント
1 - 周期の最後までカウント

タイマ 2:
0xFFC0 0620

ERR_TYP[1:0]（エラー・タイプ）- RO
00 - エラーなし
01 - カウンタ・オーバーフロー・エラー
10 - 周期レジスタ・プログラミング・エラー
11 - パルス幅レジスタ・プログラミング・エラー
EMU_RUN（エミュレーション動作選択）
0 - エミュレーション時にタイマ・カウンタは停止
1 - エミュレーション時にタイマ・カウンタは動作
TOGGLE_HI（PWM_OUT PULSE_HI トグル・モード）
0 - PULSE_HI の有効状態はプログラムされた状態
1 - PULSE_HI の有効状態は周期ごとに交番
CLK_SEL（タイマ・クロック選択）
0 - カウンタにシステム・クロック SCLK を使用
1 - カウンタのクロック駆動に PF1 ピンを使用
OUT_DIS（出力パッド・ディスエーブル）
0 - PWM_OUT モードでパッドをイネーブル
1 - PWM_OUT モードでパッドをディスエーブル

IRQ_ENA（割込み要求イネーブル）
0 - 割込み要求ディスエーブル
1 - 割込み要求イネーブル
TIN_SEL（タイマ入力選択）
0 - TMRx ピンをサンプリング
1 - UART RX ピンをサンプリング

コア・タイマ・カウント・レジスタ (TCOUNT)

0xFFE0 300C

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X X X X X

リセット＝未定義
カウント値 [31:16]

15 14 13 12 11 10
X X X X X X

9
X

8
X

7 6
X X

5
X

4
X

3
X

2
X

1 0
X X
カウント値 [15:0]

図 P-1.

レジスタ図の例

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

li

表記規則

lii

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

第1章

はじめに

ADSP-BF533、ADSP-BF532、ADSP-BF531 プロセッサは、Blackfin プ
ロセッサ・ファミリーの強化されたメンバーであり、以前の Blackfin プロ
セッサに比べて性能と消費電力が大幅に改善されているだけでなく、その使いやすさとコード互換性の長所が継承されています。これら 3つの新プロセッサは、完全にピン互換であり、性能とオンチップ・メモリだけが異なります。したがって、新しい製品開発に伴う多くの危険を軽減できます。
Blackfin プロセッサ・コア・アーキテクチャでは、デュアル MAC 信号処理エンジン、RISC ライクな直交性のあるマイクロプロセッサ命令セット、
柔軟な単一命令複数データ (SIMD) 機能、およびマルチメディア機能を、単一の命令セット・アーキテクチャによって実現しています。
Blackfin 製品はダイナミック・パワー・マネジメントを特長としています。この機能では、動作の電圧と周波数を変更することで、特定のタスクに合わせて消費電力プロファイルを最適化します。

ペリフェラルプロセッサのシステム・ペリフェラルには、以下の要素が含まれます。
• パラレル・ペリフェラル・インターフェース (PPI)• シリアル・ポート (SPORT)• シリアル・ペリフェラル・インターフェース (SPI)• 汎用タイマADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

1-1

ペリフェラル• 非同期シリアル・インターフェース (UART)• リアルタイム・クロック (RTC)• ウォッチドッグ・タイマ• 汎用 I/O（プログラマブル・フラグ）
図 1-1に示すように、これらのペリフェラルは、何本かの高帯域バスを介してコアに接続されます。

ࠗࡌࡦ࠻࡮ࠦࡦ࠻ࡠ࡯࡜㧛ࠦࠕ࡮࠲ࠗࡑ

-7$*࠹ࠬ࠻ߣ
ࠛࡒࡘ࡟࡯࡚ࠪࡦ

"㔚࿶࡟ࠡࡘ࡟࡯࠲

࠙ࠜ࠶࠴࠼࠶ࠣ࡮࠲ࠗࡑ

࡝ࠕ࡞࠲ࠗࡓ࡮ࠢࡠ࠶ࠢ

8$57ࡐ࡯࠻,U'$¸/๮઎ࡔࡕ࡝

008/࠺࡯࠲࡮ࡔࡕ࡝

࠲ࠗࡑ‫ޔࡑࠗ࠲ޔ‬࠲ࠗࡑࠦࠕ㧛ࠪࠬ࠹ࡓ࡮ࡃࠬ࡮ࠗࡦ࠲࡯ࡈࠚ࡯ࠬ
33,*3,2'0$ࠦࡦ࠻ࡠ࡯࡜
ࠪ࡝ࠕ࡞࡮ࡐ࡯࠻ 

ࡉ࡯࠻52063,ࡐ࡯࠻

ᄖㇱࡐ࡯࠻࡮
ࡈ࡜࠶ࠪࡘ‫ޔ‬6'5$0೙ᓮ

図 1-1.

1-2

プロセッサのブロック図ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

はじめに

汎用 I/O、リアルタイム・クロック、タイマ以外のすべてのペリフェラル
は、柔軟な DMA 構造によってサポートされます。外付け SDRAM と非同期メモリを含めて、プロセッサのメモリ・スペース間でのデータ転送には、2つの独立した専用のメモリDMA チャンネルが用意されています。たとえ、すべてのオンチップ・ペリフェラルと外付けペリフェラルにアクティビティが存在する場合でも、複数のオンチップ・バスによってプロ
セッサ・コアの動作継続に十分な帯域幅が提供されます。

コア・アーキテクチャ
図 1-2 に示すように、プロセッサ・コアには、2 つの 16 ビット乗算器、2つの 40 ビット・アキュムレータ、2 つの40 ビット算術論理演算ユニット(ALU)、4 つの 8 ビット・ビデオ ALU、および 1 つの 40ビット・シフタが含まれます。演算ユニットは、レジスタ・ファイルからの 8/16/32 ビット・
データを処理します。
演算レジスタ・ファイルには、8 本の 32 ビット・レジスタが含まれます。
16ビットのオペランド・データに対して演算動作を行うとき、このレジス
タ・ファイルは、16 本の独立した 16ビット・レジスタとして動作します。
演算動作用のすべてのオペランドは、マルチポート・レジスタ・ファイルと命令定数フィールドから得られます。
各 MAC では、サイクルごとに 16 ×16 ビット乗算を実行して、40 ビット
結果に蓄積しておくことができます。符号付き／符号なしのフォーマッ
ト、丸め、飽和が可能です。
ALU では、16ビットまたは32ビットのデータに対して、伝統的な算術／
論理演算セットを実行します。さまざまな信号処理タスクを高速化するために、多くの特殊な命令が組み込まれています。これらの命令には、フィールド抽出やポピュレーショ ン・カウントなどのビット操作、モジュロ 232の乗算、除算プリミティブ、飽和と丸め処理、符号／指数部の検出などが含まれます。ビデオ命令セットには、バイト・アライメントとパッキング
操作、クリッピング機能を持つ 16ビットと8ビットの加算、8ビットの平ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

1-3

コア・アーキテクチャࠕ࠼࡟ࠬṶ▚࡙࠾࠶࠻

SP
FP
P5
P4
P3
P2

I3

L3

B3

M3

I2

L2

B2

M2

I1

L1

B1

M1

I0

L0

B0

M0

DAG0

DAG1

ࠪ࡯ࠤࡦࠨ

P1
P0
ࠕ࡜ࠗࡔࡦ࠻

࠺ࠦ࡯࠼
R7
R6

࡞࡯ࡊ࡮ࡃ࠶ࡈࠔ

R5
R4
R3

16

16
8

8

8

8

೙ᓮ࡙࠾࠶࠻

R2
R1
R0

ࡃ࡟࡞࡮
ࠪࡈ࠲

40
ACC 0

40
ACC 1

࠺࡯࠲Ṷ▚࡙࠾࠶࠻

図 1-2.

プロセッサ・コア・アーキテクチャ

均演算、および 8 ビットの減算／絶対値／アキュムレート (SAA) 演算が含まれます。また、比較／選択命令とベクトル検索命令も用意されています。命令によっては、レジスタ・ペア（演算レジスタの上位 16 ビットと下位16ビット）に対して2つの16ビットALU演算を同時に実行できます。
また、2 番目のALUを使用して、4つの16ビット演算も可能です。
40 ビット・シフタでは、データを保管して、シフト、ローテート、正規化、および抽出の操作を実行できます。

1-4

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

はじめにプログラム・シーケンサでは、命令の整列とデコーディングを含めて、命令の実行フローを制御します。プログラム・フローの制御に関しては、
シーケンサは、PC 相対と間接の条件付きジャンプ（静的分岐予測付き）
およびサブルーチン呼出しをサポートします。ゼロオーバーヘッド・ルー
プ機能に対応するためのハードウェアも提供されています。アーキテク
チャは完全にインターロックされるため、データ依存性を持つ命令の実行時に、パイプラインの影響を意識する必要はありません。
アドレス演算ユニットは、メモリからの同時デュアル・フェッチのために
2 つのアドレスを提供します。このユニットには、4 セットの 32 ビット・インデックス・レジスタ、モディファイ・レジスタ、レングス・レジス
タ、ベース・レジスタ（循環バッファリング用）と 8本の追加 32ビット・
ポインタ・レジスタ（C スタイルのインデックス付きスタック操作用）で構成される、マルチポート・レジスタ・ファイルが含まれています。
Blackfin プロセッサは、階層型メモリ構造と組み合わせた改良ハーバー
ド・アーキテクチャを採用しています。一般に、レベル 1 (L1) メモリは、
ほとんどレイテンシなしでプロセッサの最大速度で動作します。L1 レベ
ルでは、命令メモリは命令だけを保持します。2つのデータ・メモリがデータを保持し、専用のスクラッチパッド・データ・メモリがスタックとロー
カル変数を格納します。
さらに、複数の L1 メモリ・ブロックが提供され、SRAM とキャッシュを混在させたものとして構成できます。メモリ・マネジメント・ユニット(MMU) は、コア上で動作可能な個々のタスクに対してメモリ保護機能を提供して、システム・レジスタを想定外のアクセスから保護できます。
このアーキテクチャは、ユーザ・モード、スーパーバイザ・モード、エミュレーション・モードという 3 つの動作モードを提供します。ユーザ・モードでは、アクセスがシステム・リソースのサブセットに制限されるた
め、ソフトウェア環境を保護できます。スーパーバイザ・モードとエミュ
レーション・モードでは、システム・リソースとコア・リソースに無制限にアクセスできます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

1-5

メモリ・アーキテクチャ

ADSP-BF53x Blackfin プロセッサの命令セットは、最も頻繁に使用される命令を 16 ビットのオペコードで表すように最適化されています。複雑な DSP 命令は、多機能命令として 32 ビットのオペコードにエンコードされます。Blackfin 製品は、限定された多重発行機能を提供することで、32ビット命令を 2つの16ビット命令と並行して発行できます。これによってプログラマは、コア・リソースの多くを単一の命令サイクルで使用できます。
ADSP-BF53x Blackfin プロセッサのアセンブリ言語では、代数構文を使用します。このアーキテクチャは、Cコンパイラでの使用に最適化されています。

メモリ・アーキテクチャ
Blackfin プロセッサのアーキテクチャは32ビット・アドレスを使用して、メモリを 1 つの統一された 4G バイトアドレス・スペースとして構成します。内部メモリ、外部メモリ、I/O コントロール・レジスタを含めてすべてのリソースは、この共通アドレス・スペースの別個のセクションを占有します。このアドレス・スペースのメモリ部分は階層構造で整理されており、きわめて高速で低レイテンシのオンチップ・メモリをキャッシュや
SRAM とし、大容量で低価格であるものの、低性能のオフチップ・メモ
リ・システムと併用することで優れたコスト／性能バランスを実現します。表 1-1 には、ADSP-BF531、ADSP-BF532、ADSP-BF533 プロセッ
サのメモリ比較を示します。
表 1-1.

1-6

メモリ比較

メモリのタイプ

ADSP-BF531

ADSP-BF532

ADSP-BF533

命令 SRAM ／キャッシュ

16K バイト

16K バイト

16K バイト

命令 SRAM

16K バイト

32K バイト

64K バイト

データ SRAM ／キャッシュ

16K バイト

32K バイト

32K バイト

データ SRAM––

32K バイトADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

はじめに

表 1-1.

メモリ比較（続き）

メモリのタイプ

ADSP-BF531

ADSP-BF532

ADSP-BF533

スクラッチパッド

4K バイト

4K バイト

4K バイト合計

84K バイト

116K バイト

148K バイト

L1 メモリ・システムは、コアが使用できる最高性能のプライマリ・メモ
リです。外部バス・インターフェース・ユニット (EBIU) を通じてアクセスされるオフチップ・メモリ・システムは、SDRAM、フラッシュ・メモ
リ、SRAM による拡張メモリを提供し、オプションでは 132M バイトまでの物理メモリにアクセスできます。
メモリ DMA コントローラは、高帯域のデータ転送機能を提供し、内部メ
モリ・スペースと外部メモリ・スペースとの間でコードやデータのブロッ
ク転送を実行できます。

■ 内部メモリ
このプロセッサには、コアへの高帯域アクセスを提供する、3 ブロックのオンチップ・メモリがあります。
• L1命令メモリ：SRAMと4ウェイ・セットアソシエイティブ・キャッ
シュから構成されます。このメモリは、プロセッサの最大速度でアクセスされます。
• L1 データ・メモリ：SRAM または 2ウェイ・セットアソシエイティ
ブ・キャッシュ、あるいはその両方から構成されます。このメモ
リ・ブロックは、プロセッサの最大速度でアクセスされます。
• L1 スクラッチパッド RAM：L1メモリと同じ速度で動作しますが、
データ SRAM としてのみアクセス可能であり、キャッシュ・メモ
リとしては構成できません。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

1-7

メモリ・アーキテクチャ■ 外部メモリ
外部（オフチップ）メモリは、外部バス・インターフェース・ユニット(EBIU) を介してアクセスされます。この 16ビット・インターフェースは、
1 バ ン クの 同 期DRAM(SDRAM) に加 え て、フ ラ ッシ ュ・メモ リ、
EPROM、ROM、SRAM、メモリマップド I/O デバイスなど、4 バンクもの非同期メモリ・デバイスにグルーレスな接続を提供します。
PC133準拠の SDRAMコントローラは、最高 128M バイトの SDRAM に接続できるようにプログラムできます。
非同期メモリ・コントローラは、最高 4 バンクのデバイスを制御するようにプログラムできます。各バンクは、使用されるデバイスのサイズとは無関係に 1M バイトのセグメントを占有するため、これらのバンクは、それぞれに 1Mバイトのメモリがフル実装された場合にのみ連続になります。

■ I/O メモリ・スペース
Blackfin プロセッサは、独立した I/O スペースを用いません。すべてのリ
ソースは、フラットな 32 ビット・アドレス・スペースにマッピングされます。オンチップ I/O デバイスのコントロール・レジスタは、4Gバイト・
アドレス・スペースの最上位近くのアドレスで、メモリマップド・レジス
タ (MMR) にマッピングされます。これらのアドレスは、2 つの小さなブロックに分割されます。一方のブロックには、すべてのコア機能に対するコントロール MMRが含まれています。他方のブロックには、コア外部のオンチップ・ペリフェラルのセットアップと制御に必要なレジスタが含まれています。MMR は、スーパーバイザ・モードでのみアクセスでき、オンチップ・ペリフェラルからは予約済みスペースのように見えます。

1-8

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

はじめにイベント処理このプロセッサのイベント・コントローラは、プロセッサに対するすべての非同期／同期イベントを処理します。プロセッサのイベント処理では、
ネスティングと優先順位付けが可能です。ネスティングによって、複数のイベント・サービス・ルーチンを同時にアクティブにできます。優先順位
付けによって、優先順位の高いイベントの処理は、優先順位の低いイベン
トの処理よりも優先されます。コントローラは、5 種類のイベントに対応します。
• エミュレーション：プロセッサはエミュレーション・モードに入り、JTAG インターフェースを介してプロセッサの指揮／制御が可能になります。
• リセット：プロセッサをリセットします。
• マスク不能割込み (NMI)：このイベントを生成するのは、プロセッ
サへの NMI 入力信号またはソフトウェア・ウォッチドッグ・タイ
マです。NMI イベントは、システムの所定のシャットダウンを開始するためのパワーダウン・インジケータとしてよく使用されます。
• 例外：プログラム・フローに同期します。すなわち、命令が完了する前に、例外が実行されます。例外は、データ整列違反や未定義命令などの条件によって発生します。
• 割込み：プログラム・フローに同期しません。割込みは、入力ピン、タイマ、その他のペリフェラルによって発生します。
各イベントには、戻りアドレスを保持するための関連レジスタと、関連するイベント復帰命令があります。イベントがトリガされると、プロセッサの状態はスーパーバイザ・スタックに保存されます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

1-9

DMA サポート

プロセッサ・イベント・コントローラは、コア・イベント・コントローラ(CEC) とシステム割込みコントローラ (SIC) の 2段で構成されます。CEC
は SICと連携して動作し、すべてのシステム・イベントの優先順位付けと制御を行います。概念上、ペリフェラルからの割込みは SIC に到着し、CEC の汎用割込みに直接転送されます。

■ コア・イベント・コントローラ (CEC)
コア・イベント・コントローラは、専用の割込みイベントと例外イベントに加えて、9つの汎用割込み (IVG15-7) に対応します。これらの汎用割込
みのうち、優先順位の最も低い 2 つの割込み (IVG15-14) をソフトウェア
割込みハンドラ用に予約し、残り 7 つの割込み入力をペリフェラルのサ
ポート用にすることをお勧めします。

■ システム割込みコントローラ (SIC)
システム割込みコントローラは、多数のペリフェラル割込み源から CECの優先順位付けされた汎用割込み入力まで、イベントのマッピングとルー
ティングを可能にします。プロセッサはデフォルト・マッピングを提供しますが、ユーザは割込み割当てレジスタ (IAR) に適切な値を書き込むことによって、割込みイベントのマッピングと優先順位を変更できます。

DMA サポート
このプロセッサには複数の独立した DMAコントローラがあり、コアへの最小のオーバーヘッドでデータの自動転送を実現します。DMA 転送は、
内部メモリとその DMA 対応のペリフェラルとの間で行うことができます。さらに、DMA 対応のペリフェラルと、SDRAM コントローラや非同期メモリ・コントローラなど外部メモリ・インターフェースに接続された
外部デバイスとの間でも、DMA転送を行うことができます。DMA 対応の

1-10

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

はじめに

ペリフェラルには、SPORT、SPI ポート、UART、PPI が含まれます。
個々の DMA 対応のペリフェラルには、少なくとも1つの専用 DMA チャンネルがあります。
DMA コントローラは、1次元 (1D) と2次元 (2D) のDMA 転送をサポートします。DMA 転送の初期化は、レジスタから行うか、あるいはディスク
リプタ・ブロックと呼ばれる一連のパラメータから行います。
2D DMA 機能は、64K エレメント×64K エレメントまでの任意の行／列サ
イズと、+/-32K エレメントまでの任意の行／列ステップ・サイズに対応します。さらに、列ステップ・サイズは行ステップ・サイズよりも小さくできるため、インターリーブされたデータ・ストリームの実装が可能です。
この機能は、実行時にデータをデインターリーブできるビデオ・アプリ
ケーションで特に便利です。
利用可能な DMA の種類には、以下のようなものがあります。
• 完了時に停止する単一のリニア・バッファ• バッファが満杯／断片的に満杯になるたびに割込みを発生する自動リフレッシュ循環バッファ• ディスクリプタのリンク・リストを使用する 1D/2D DMA• 共通ページ内のベース DMA アドレスだけを指定する、ディスクリ
プタのアレイを使用する 2D DMA
専用のペリフェラル DMA チャンネルのほかに、システムのさまざまなメ
モリ間の転送用に独立したメモリ DMA チャンネルも提供されています。
これによって、プロセッサの介入を最小限に抑えながら、外部 SDRAM、
ROM、SRAM、フラッシュ・メモリなど任意のメモリ間でデータのブロッ
ク転送が可能になります。メモリ DMA 転送は、非常に柔軟なディスクリ
プタ・ベースの手法または標準的なレジスタ・ベースのオート・バッファ・メカニズムによって制御できます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

1-11

外部バス・インターフェース・ユニット

外部バス・インターフェース・ユニット
このプロセッサの外部バス・インターフェース・ユニット (EBIU) は、業界標準の多種多様なメモリ・デバイスと接続できます。コントローラは、
SDRAM コントローラと非同期メモリ・コントローラから構成されます。

■ PC133 SDRAM コントローラ
SDRAM コントローラは、シングル・バンクの業界標準のSDRAM デバイ
スまたは DIMMにインターフェースを提供します。このバンクは、PC133
SDRAM 規格に完全に準拠し、16～128M バイトのメモリを内蔵するように構成できます。
一連のプログラマブル・タイミング・パラメータを使用して、低速なメモ
リ・デバイスに対応するように SDRAM バンクを設定できます。デバイス
数を最小限に抑えてシステム・コストを下げるために、メモリ・バンクは16ビット幅になっています。

■ 非同期コントローラ
非同期メモリ・コントローラは、最高 4 つのメモリ・バンクまたは I/O デ
バイスに対して設定可能なインターフェースを提供します。各バンクは、異なるタイミング・パラメータで独立にプログラムできます。これによって、SRAM、ROM、フラッシュ EPROM など多種多様なメモリ・デバイ
スに加え、標準的なメモリの制御線を使用する各種の I/O デバイスとも接続できます。各バンクはプロセッサのアドレス・スペース内で 1Mバイトのウィンドウを占有しますが、フル実装されていない場合にも、これらのバンクはメモリ・コントローラによって連続にされません。一連のメモリやI/Oデバイスとインターフェースをとるためのこれらのバンクは16ビッ
ト幅です。

1-12

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

はじめに

パラレル・ペリフェラル・インターフェース
このプロセッサが提供するパラレル・ペリフェラル・インターフェース(PPI) を使用すれば、パラレルA/D およびD/A コンバータ、ITU-R 601/656
ビデオ・エンコーダ／デコーダ、およびその他の汎用ペリフェラルと直接に接続できます。PPI は、専用の入力クロック・ピン、最高3 本のフレー
ム同期ピン、および最高 16 本のデータ・ピンから構成されます。入力ク
ロックは、システム・クロック・レートの半分までのパラレル・データ・
レートに対応します。
ITU-R 656 モードでは、PPIは、8/10 ビット・データ・エレメントのデー
タ・ストリームを受信して解析します。埋め込まれたプリアンブル制御情
報や同期情報のオンチップ・デコードがサポートされています。
3 つの ITU-R 656モードが用意されています。
• アクティブ・ビデオ専用：PPI は、プリアンブル・シンボルEnd of
Active Video (EAV) と Start of Active Video (SAV) の 間に あ る
データや、垂直ブランキング期間中に存在するデータを読み込みません。このモードでは、制御バイト・シーケンスはメモリに格納されずに、PPI によって取り除かれます。
• 垂直ブランキング専用：PPI は、垂直ブランキング期間 (VBI) ライ
ン上の水平ブランキング情報と制御バイト・シーケンスに加えて、VBI データだけを転送します。
• 全体フィールド：PPI を通じて着信ビットストリーム全体が読み出されます。これには、アクティブ・ビデオ、制御プリアンブル・
シーケンス、水平／垂直ブランキング期間に埋め込まれている補助
データが含まれます。
明示的に対応しているわけではありませんが、ITU-R 656 の出力は、フレーム構造の全体（アクティブ・ビデオ、ブランキング、制御情報を含む）をメモリ内に設定し、フレーム無同期モードでデータを PPI にストリーム出力することによっても実現できます。プロセッサの 2D DMA 機
ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

1-13

シリアル・ポート (SPORT)

能を使用すれば、静的フレーム・バッファ（ブランキング・コードと制御
コード）を一度メモリ内に置いて、フレーム単位でアクティブ・ビデオ情報を更新することで、この転送を容易にできます。
PPI の汎用モードは、多種多様なデータ・キャプチャ・アプリケーションと伝送アプリケーション向けに用意されています。これらのモードは 4つのメイン・カテゴリに分類され、それぞれ PPI_CLK サイクルごとに最高16ビットのデータ転送が可能です。
• 内部的に生成されたフレーム同期によるデータ受信• 外部的に生成されたフレーム同期によるデータ受信• 内部的に生成されたフレーム同期によるデータ送信• 外部的に生成されたフレーム同期によるデータ送信
これらのモードでは、ハードウェア・シグナリングによるビデオ通信に加えて、ADC/DAC接続もサポートします。モードの多くは、複数レベルのフレーム同期をサポートします。必要ならば、フレーム同期のアサーショ
ンとデータの送／受信との間にプログラマブルな遅延を挿入できます。

シリアル・ポート (SPORT)
このプロセッサは、シリアル通信とマルチプロセッサ通信用に 2つのデュ
アル・チャンネル同期シリアル・ポート（SPORT0 と SPORT1）を内蔵しています。SPORT は、以下の機能をサポートします。
• I2S 対応の双方向動作
各 SPORTには 2セットの独立した送／受信ピンがあり、8チャンネ
ルの I2S ステレオ・オーディオが可能になります。

1-14

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

はじめに• バッファ（深さ 8）された送／受信ポート
各ポートには、他のプロセッサ・コンポーネントとの間でデータ・ワードを転送するためのデータ・レジスタと、データ・レジスタとの間でデータをシフト・イン／アウトするためのシフト・レジスタがあります。
• クロッキング
各送／受信ポートは外部シリアル・クロックを使用でき、また、広い範囲で独自に周波数を生成できます。
• ワード長各 SPORT は、長さ 3 ～ 32 ビットのシリアル・データ・ワードを、
MSB ファースト／LSB ファーストのフォーマットで転送できます。
• フレーミング
各送／受信ポートは、データ・ワードごとにフレーム同期信号の有無とは無関係に動作できます。フレーム同期信号の生成は、内部／
外部、アクティブ・ハイ／ロー、2 つのうちいずれかのパルス幅、早期／遅延フレーム同期で行えます。
• ハードウェアでの圧縮伸張
各 SPORT では、ITU勧告G.711 に基づいて、A 則またはµ 則の圧縮
伸張を実行できます。圧縮伸張は遅延を増やすことなく、SPORTの送信チャンネルまたは受信チャンネル、あるいはその両方で選択できます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

1-15

シリアル・ペリフェラル・インターフェース (SPI) ポート• 1 サイクルのオーバーヘッドを持つDMA動作
各 SPORTは、複数バッファのメモリ・データを自動的に送／受信できます。プロセッサは、SPORT とメモリの間で一連の DMA 転送をリンクまたはチェーン実行できます。
• 割込み
各送／受信ポートでは、データ・ワードの転送完了時、または DMA
によってデータ・バッファ全体を転送した後で割込みを生成します。
• マルチチャンネル機能
各 SPORTは、1024 チャンネル中128 チャンネルのウィンドウに対応し、H.100、H.110、MVIP-90、HMVIP の各規格と互換性があります。

シリアル・ペリフェラル・インターフェース(SPI) ポート
このプロセッサは内蔵する SPI互換ポートによって、複数の SPI互換デバ
イスと通信できます。
SPI インターフェースは、データ転送に3 本のピンを使用します。そのうちの 2 本はデータ・ピン、1本はクロック・ピンです。SPIチップ・セレク
ト入力ピンによって、他の SPI デバイスがプロセッサを選択します。7 本の SPIチップ・セレクト出力ピンによって、プロセッサは他の SPI デバイ
スを選択します。SPI セレクト・ピンは再設定されたプログラマブル・フ
ラグ・ピンです。これらのピンを使用すると、SPIポートはマスター／ス
レーブ・モードとマルチマスター環境に対応する、全二重の同期シリアル・インターフェースを提供します。

1-16

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

はじめに

SPI ポートのボーレートとクロック位相／極性はプログラマブルであり、送／受信いずれかのデータストリームに対応するように設定可能な DMA
コントローラが内蔵されています。SPI の DMA コントローラは常に単方向アクセスだけを処理できます。
SPI ポートは、転送時にその2本のシリアル・データ・ラインとの間でデー
タを連続的にシフト・イン／アウトすることによって同時に送／受信します。シリアル・クロック・ラインでは、2 本のシリアル・データ・ライン
上でデータのシフトとサンプリングの同期をとります。

タイマ
このプロセッサには、4つの汎用プログラマブル・タイマ・ユニットがあります。3つのタイマには外部ピンがあります。このピンは、パルス幅変調器 (PWM) やタイマの出力として、タイマをクロック駆動するための入力として、または外部イベントのパルス幅を測定するためのメカニズムとして設定できます。これらのタイマ・ユニットは、PF1 ピンに接続された
外部クロック入力、PPI_CLK ピンへの外部クロック入力、または内部 SCLKに同期することができます。
タイマ・ユニットを UARTと組み合わせて使用すれば、データストリーム
内のパルスの幅を測定して、シリアル・チャンネルにオートボー検出機能を提供できます。
これらのタイマは、プロセッサ・コアへの割込みを生成して、プロセッ
サ・クロックまたは外部信号のカウントに対する同期用の周期イベントを提供できます。
3 つの汎用プログラマブル・タイマに加えて、4 番目のタイマも提供されています。このタイマは内部プロセッサ・クロックによって駆動され、一般にオペレーティング・システムの周期割込みを生成するためのシステ
ム・チック・クロックとして使用されます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

1-17

UART ポート

UART ポート
このプロセッサは PC 標準の UARTと完全互換である、半二重の非同期シ
リアル・インターフェース (UART) ポートを内蔵しています。このUART
ポートは、他のペリフェラルやホストに対して簡略な UART インターフェースを提供し、シリアル・データを DMA 対応の半二重方式で非同期転送します。UART ポートは、5 ～ 8 のデータ・ビット、1 または 2 のス
トップ・ビット、偶数／奇数パリティまたはパリティなしに対応します。
また、次の 2 つの動作モードを提供します。
• プログラム I/O
このプロセッサは、I/O マップUARTレジスタに対して書込み／読出しを行うことにより、データを送／受信します。データは送信と受信でダブル・バッファされています。
• ダイレクト・メモリ・アクセス (DMA)
DMA コントローラは送／受信データを転送します。これによって、メモリとのデータ転送に必要な割込みの回数と頻度が減少します。
UART には 2 つの専用 DMA チャンネルがあり、一方は送信用、他方は受信用です。これらの DMA チャンネルは転送速度が相対的に低いため、大部分の DMAチャンネルよりも低い優先順位になっています。
以下の機能を提供するために、UART ポートのボーレート、シリアル・
データ・フォーマット、エラー・コードの生成とステータス、割込みをプ
ログラムできます。
• 広範囲のビットレート• フレーム当たり 7～ 12ビットのデータ・フォーマット
• 送／受信動作によるプロセッサへのマスク可能割込みの生成

1-18

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

はじめに汎用タイマ機能と組み合わせて、オートボー検出にも対応しています。
UART の機能は、Infrared Data Association (IrDA®) のシリアル赤外線物
理層リンク仕様 (SIR) プロトコルのサポートによって、さらに拡張されます。

リアルタイム・クロック
このプロセッサのリアルタイム・クロック (RTC) は、現在の時刻、ストッ
プウォッチ、アラームなど、強力なデジタル・ウォッチ機能を提供します。RTC は、プロセッサに外付けされた 32.768kHz の水晶発振器によって駆動されます。RTCペリフェラルには専用の電源ピンがあるため、残りのプロセッサ部分が低消費電力状態にあるときでもパワーアップ状態で駆動されます。RTC は、秒、分、時、日のクロック・チックによる割込
み、プログラマブルなストップウォッチ・カウントダウンに基づく割込
み、設定したアラーム時刻での割込みなど、プログラマブルな複数の割込
みオプションを提供します。
32.768kHz の入力クロック周波数は、プリスケーラによって 1Hz信号まで分周されます。タイマのカウンタ機能は、60 秒カウンタ、60分カウンタ、
24時間カウンタ、32768 日カウンタという、4 つのカウンタで構成されます。
アラーム機能がイネーブルにされると、タイマの出力がアラーム・コント
ロール・レジスタ内に設定された値と一致したとき割込みが生成されます。アラームには 2 種類あり、最初のアラームは時刻用、2 番目のアラー
ムは日時用です。
ストップウォッチ機能では、設定した値から分単位の分解能でカウントダ
ウンします。ストップウォッチがイネーブルにされて、カウンタがアン
ダーフローすると、割込みが生成されます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

1-19

ウォッチドッグ・タイマ

他のペリフェラルと同様に、RTC では、RTC ウェイクアップ・イベントの生成と同時に、プロセッサをスリープ・モードやディープ・スリープ・
モードからウェイクアップさせることができます。RTCウェイクアップ・
イベントでは、オンチップ内部電圧レギュレータをパワーダウン状態からウェイクアップさせることもできます。

ウォッチドッグ・タイマ
このプロセッサに内蔵される 32 ビット・タイマを使用すれば、ソフトウェ
ア・ウォッチドッグ機能を実装できます。ソフトウェア・ウォッチドッグ
機能は、タイマがソフトウェアによってリセットされる前に切れた場合に、ハードウェア・リセット、マスク不能割込み (NMI)、または汎用割込みを生成してプロセッサを既知の状態に強制設定することで、システムの可用性を向上させることができます。プログラマはタイマのカウント値を初期化し、該当する割込みをイネーブルにして、タイマをイネーブルにします。その後、ソフトウェアは、カウントが設定値からゼロに到達する前に、カウンタを再設定する必要があります。これによって、外部ノイズやソフトウェア・エラーに起因して、タイマをリセットするはずのソフト
ウェアが停止した場合に、システムが未知の状態にとどまることを防止できます。
ハードウェア・リセットを生成するように設定すると、ウォッチドッグ・
タイマは CPUとペリフェラルの両方をリセットします。リセットの後、ソフトウェアは、ウォッチドッグ・コントロール・レジスタのステータス・
ビットを調べることにより、ハードウェア・リセットの原因はウォッチ
ドッグであったか否かを判断できます。
このタイマは、最大周波数 fSCLK のシステム・クロック (SCLK) によりクロック駆動されます。

1-20

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

はじめにプログラマブル・フラグ
このプロセッサには、16 本の双方向プログラマブル・フラグ (PF) または
汎用 I/O ピン PF[15:0] があります。各ピンは、フラグ・コントロール・レ
ジスタ、ステータス・レジスタ、割込みレジスタを使用して、個別に設定できます。
• フラグ方向コントロール・レジスタ：各 PFx ピンの方向を、入力または出力として指定します。
• フラグ・コントロール・レジスタとステータス・レジスタ：このプ
ロセッサは、“write-1-to-modify”方式を採用しています。この方式では、フラグの任意の組み合わせを 1回の命令で変更し、かつ変更しないフラグのレベルに影響を与えないようにできます。4本のコントロール・レジスタが用意されており、フラグ値をセットする
ときに書き込むレジスタ、フラグ値をクリアするときに書き込むレ
ジスタ、フラグ値をトグルするときに書き込むレジスタ、フラグ値を指定するときに書き込むレジスタがあります。フラグ・ステータ
ス・レジスタを読み出すと、ソフトウェアはフラグの状態を調べることができます。
• フラグ割込みマスク・レジスタ：2本のフラグ割込みマスク・レジ
スタにより、各 PFx ピンがプロセッサへの割込みとして機能するように設定できます。各フラグ値のセットとクリアに使われる 2本のフラグ・コントロール・レジスタと同様に、一方のフラグ割込みマ
スク・レジスタはビットをセットして割込み機能をイネーブルにし、他方のフラグ割込みマスク・レジスタはビットをクリアして割込み機能をディスエーブルにします。入力として定義された PFx ピ
ンはハードウェア割込みを生成するように設定でき、出力 PFx ピンはソフトウェア割込みによりトリガできます。
• フラグ割込み検出レジスタ：2 本のフラグ割込み検出レジスタは、
各 PFx ピンをレベル検出にするかまたはエッジ検出にするかを指定します。さらに、エッジ検出の場合には、信号の立上がりエッジだ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

1-21

クロック信号けを検出するか、あるいは立上がりと立下がりの両エッジを検出す
るかを指定します。一方のレジスタでは検出タイプを指定し、他方のレジスタではエッジ検出で有効とするエッジを指定します。

クロック信号
このプロセッサは、外部水晶発振器、正弦波入力、または外部クロック発
振器から出力されるバッファおよび整形されたクロックによって駆動できます。
この外部クロックは、プロセッサの CLKIN ピンに接続されます。CLKIN 入
力は、通常動作時に停止／変更させたり、仕様周波数未満で動作させることはできません。このクロック信号は TTL 互換の信号である必要があります。
コア・クロック (CCLK) とシステム・ペリフェラル・クロック (SCLK) は、
入力クロック (CLKIN) 信号から取り出されます。オンチップ・フェーズ・
ロック・ループ (PLL) は、ユーザ・プログラマブルな 1 ～63 倍の倍率（指定の最小／最大 VCO 周波数による制限）で CLKIN 信号を逓倍できます。デフォルトの倍率は 10 倍ですが、ソフトウェア命令シーケンスにより変更できます。PLL_DIV レジスタに書込みを行うだけで、実行時に周波数を変更できます。
すべてのオンチップ・ペリフェラルは、システム・クロック (SCLK) によって駆動されます。システム・クロック周波数を設定するには、PLL_DIV レ
ジスタの SSEL[3:0] ビットを使用します。

1-22

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

はじめにダイナミック・パワー・マネジメント
このプロセッサには 4つの動作モードがあり、その性能／消費電力特性は動作モードによって異なります。その上、ダイナミック・パワー・マネジ
メントの制御機能によって、プロセッサ・コアの電源電圧をダイナミックに変更して、さらに消費電力を減らすことができます。各ペリフェラルに対するクロックの制御によっても、消費電力を減らすことができます。

■ フル・オン・モード（最大性能）
フル・オン・モードでは、PLL がイネーブルにされ、しかもバイパスされないため、最大動作周波数で動作できます。これは通常の実行状態であり、最大性能が得られます。プロセッサ・コアとイネーブルにされた全ペリフェラルは最大速度で動作します。

■ アクティブ・モード（中程度の電力節減）
アクティブ・モードでは、PLL はイネーブルにされますが、バイパスされます。PLLがバイパスされるため、プロセッサのコア・クロック (CCLK) とシステム・クロック (SCLK) は入力クロック (CLKIN) 周波数で動作します。
このモードでは、CLKIN 対 VCO の逓倍率を変更できますが、その変更はフル・オン・モードになるまで有効になりません。適切に設定された L1 メ
モリに対して DMAアクセスを使用できます。
アクティブ・モードでは、PLLコントロール・レジスタ (PLL_CTL) を使って PLLをディスエーブルにできます。PLL をディスエーブルにした場合、フル・オン・モードやスリープ・モードに入る前に PLL を再イネーブルにする必要があります。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

1-23

ダイナミック・パワー・マネジメント■ スリープ・モード（高い電力節減）
スリープ・モードでは、プロセッサ・コアへのクロック (CCLK) をディス
エーブルにして消費電力を削減します。ただし、PLL とシステム・クロッ
ク (SCLK) は動作を維持します。一般に、外部イベントまたは RTC の動作
により、プロセッサがウェイクアップします。スリープ・モードでは、割込みがアサートされると、プロセッサは PLL コントロール・レジスタ(PLL_CTL) 内のバイパス・ビット (BYPASS) の値を調べます。バイパスがディスエーブルにされている場合、プロセッサはフル・オン・モードになります。バイパスがイネーブルにされている場合、プロセッサはアクティ
ブ・モードになります。
スリープ・モードは、L1メモリへのシステムDMA アクセスには対応しません。

■ ディープ・スリープ・モード（最高の電力節減）
ディープ・スリープ・モードでは、プロセッサ・コアと同期システム・ク
ロック（CCLK と SCLK）をディスエーブルにすることにより、最高の電力節減を実現します。RTC のような非同期システムは動作を続けますが、内部リソースや外部メモリにはアクセスできません。このパワーダウン・
モードを終了するには、リセット割込みのアサーション、または RTC によって生成される非同期割込みが必要です。ディープ・スリープ・モード
では、RTC 非同期割込みによってプロセッサはアクティブ・モードになります。ディープ・スリープ・モードで RESET がアサートされると、プロセッ
サはフル・オン・モードになります。

1-24

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

はじめに■ 休止状態
最低の消費電力を実現するために、この状態では内部電源（VDDINT）をオフにしたまま I/O 電源（VDDEXT）をオンに保持することができます。これは、厳密には上述の4つのモードのような動作モードではありませんが、動作モードと見なすとわかりやすくなります。

電圧レギュレーション
このプロセッサは、2.25 ～ 3.6V の外部電源から0.8 ～ 1.2V の内部電圧レベルを生成できる電圧レギュレータを内蔵しています。図 1-3 は、パワー・
マネジメント・システムに必要な代表的な外付け部品を示します。このレギュレータは、内部ロジック電圧レベルを制御し、電圧レギュレータ・コ
ントロール・レジスタ (VR_CTL) を使って 50mV単位で設定できます。スタ
ンバイ消費電力を減らすには、内部電圧レギュレータの設定によって供給される I/O電源を保持しながら、プロセッサ・コアへの電力供給を切断できます。この状態では、VDDEXT を依然として印加できるため、外付け
バッファは不要です。このレギュレータは、ユーザ指定によってディス
エーブルにしてバイパスすることもできます。

V DDE XTV DDINTᄖઃߌㇱຠV R OUT [1-0]図 1-3.

電圧レギュレータの回路

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

1-25

ブート・モード

ブート・モード
このプロセッサには、リセット後に内部 L1 命令メモリを自動ロードする
ための2つのメカニズムがあります。外部メモリから実行してブート・シー
ケンスをバイパスするように、3番目のモードも提供されています。
• 16 ビット外部メモリからの実行：実行は、16 ビット・パッキングのアドレス 0x2000 0000 から始まります。このモードでは、ブート
ROM はバイパスされます。すべての設定は、最低デバイス速度（3サイクルのホールド・タイム、15 サイクルの R/W アクセス・タイ
ム、4サイクルのセットアップ）に設定されます。
• 8/16 ビット外部フラッシュ・メモリからのブート：ブートROMメ
モリ・スペースに置かれているフラッシュ・ブート・ルーチンは、
非同期メモリ・バンク 0を使用して設定されます。すべての設定は、
最低デバイス速度（3サイクルのホールド・タイム、15サイクルの
R/Wアクセス・タイム、4サイクルのセットアップ）に設定されます。
• SPI シリアル EEPROM（8/16/24 ビット・アドレス指定）からのブート：SPI は、PF2 出力ピンを使って1つの SPI EEPROM デバイ
スを選択し、有効な 8/16/24 ビット・アドレス指定のEEPROM が検出されるまでアドレス0x00/0x0000/0x000000から連続した読出
しコマンドを発行し、L1 命令メモリの先頭からデータの書込みを開始します。
各ブート・モードでは、外部メモリ・デバイスから 10 バイトのヘッダが最初に読み込まれます1。このヘッダでは、転送バイト数とメモリ・デス
ティネーション・アドレスを指定します。どのブート・シーケンスでも複数のメモリ・ブロックをロードできます。すべてのブロックをロードした
後、プログラム実行は L1命令 SRAM の先頭から開始されます。

1

1-26

Rev.0.3 シリコンより、SPI ホストからのスレーブ・ブートにも対応しています。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

はじめにさらに、アプリケーション・コードによってリセット設定レジスタのビッ
ト 4をセットすれば、ソフトウェア・リセット時に通常のブート・シーケ
ンスをバイパスできます。この場合、プロセッサは L1 命令メモリの先頭に直接ジャンプします。

命令セットの説明
ADSP-BF53x プロセッサ・ファミリーのアセンブリ言語命令セットでは、
コーディングのしやすさと可読性を高めるために代数構文を採用しています。命令は、柔軟かつ高密度にエンコードされた命令セットを提供し、コンパイル後に最小のメモリ・サイズになるように特別に最適化されています。また、この命令セットでは、1つの命令で多くのプロセッサ・コア・
リソースを使用可能にする、フル機能のマルチファンクション命令を提供します。また、マイクロコントローラで使用されている多くの機能との組
み合わせにより、C/C++ のソース・コードをコンパイルする際に非常に効率的です。さらに、このアーキテクチャでは、ユーザ動作モード（アルゴリズム／アプリケーション・コード ) とスーパーバイザ動作モード(O/S
カーネル、デバイス・ドライバ、デバッガ、ISR) をサポートするため、コア・リソースに対する複数レベルのアクセスが可能です。
このアセンブリ言語は、プロセッサの独自のアーキテクチャを利用しており、以下の利点を提供します。
• シームレスに統合された DSP/CPU 機能は、8/16 ビット動作に対して最適化されています。
• 多重発行ロード／ストア改良ハーバード・アーキテクチャによって、2 回の 16 ビット MAC または4 回の 8 ビットALU ＋ 2 回のロー
ド／ストア＋ 1サイクル当たり 2回のポインタ更新に対応します。
• 全レジスタ、I/O、メモリが 4Gバイトの統一されたメモリ・スペー
スにマップされているため、プログラミング・モデルが簡潔です。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

1-27

開発ツール• 任意のビットおよびビット・フィールドの操作、挿入、抽出などのマイクロコントローラ機能。8/16/32 ビットのデータ型に対する整数演算。ユーザ・スタック・ポインタとスーパーバイザ・スタッ
ク・ポインタの分離。
コード密度の強化には、モード切替えやコード分離なしでの 16/32 ビット
命令の混在が含まれます。使用頻度の高い命令は 16 ビットにエンコード
されています。

開発ツール
プロセッサは、アナログ・デバイセズのエミュレータと VisualDSP++® 開発環境を含む、CROSSCORE® ソフトウェアおよびハードウェア開発ツー
ルの完全なセットによりサポートされています。他のアナログ・デバイセ
ズ製品に対応している同じエミュレータ・ハードウェアが、ADSP-BF53xプロセッサ・ファミリーも完全にエミュレートします。
VisualDSP++ プロジェクト管理環境によって、プログラマはアプリケー
ションの開発とデバッグが行えます。この環境には、代数構文に基づいた
使いやすいアセンブラ、アーカイバ（ライブラリアン／ライブラリ・ビル
ダ）、リンカ、ローダー、システム・クロックに忠実な命令レベルのシミュ
レータ、C/C++ コンパイラ、DSP 関数と数学関数を含む C/C++ ランタイ
ム・ライブラリが含まれています。これらのツールのキー・ポイントは、
C/C++ コードの効率です。コンパイラは、C/C++ コードをBlackfin プロ
セ ッ サ・ア セ ン ブ リ に 効 率 良 く 変 換 す る よ う に 開 発 さ れ て い ま す。
Blackfin プロセッサには、コンパイルされた C/C++コードの効率を改善す
るアーキテクチャ上の機能があります。
VisualDSP++ デバッガを使って、C/C++ プログラムとアセンブリ・プロ
グラムをデバッグすると、プログラマは次のことが可能になります。
• C/C++ とアセンブリの混在コードの表示（インターリーブされた
ソース／オブジェクト情報）

1-28

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

はじめに• ブレークポイントの挿入• レジスタ、メモリ、スタックに対する条件付きブレークポイントの設定• 命令実行のトレース• プログラム実行の連続的または統計的なプロファイリングの実行• メモリ内容のフィル、ダンプ、図式プロット• ソース・レベル・デバッグの実行• カスタム・デバッガ・ウィンドウの作成
VisualDSP++ 統合開発環境 (IDE) を使用すれば、ソフトウェア開発の定義と管理が可能になります。そのダイアログ・ボックスとプロパティ・
ページによって、VisualDSP++エディタでのカラー構文強調表示など、すべての開発ツールの設定と管理ができます。これらの機能により、プログ
ラマは次のことが可能になります。
• 開発ツールによる入力の処理方法と出力の生成方法の制御• ツールのコマンドライン・スイッチとの 1対 1の対応の維持
VisualDSP++ カーネル (VDK) は、DSP プログラミングのメモリ制約とタイミング制約に対処するように特別に作成されたスケジューリング管理とリソース管理を備えています。これらの機能を使うと、コードを効率的に開発できるようになり、新しいアプリケーション・コードを開発する際に、ゼロからスタートする必要がなくなります。VDKの機能には、スレッ
ド領域、クリティカル領域、未スケジュール領域、セマフォ、イベント、
デバイス・フラグが含まれています。また、VDK は優先順位ベースのプ
リエンプティブで協調動作的なタイムスライス・スケジューリング・アプ
ローチにも対応しています。さらに、VDK はスケーラブルに設計されており、アプリケーションが特定の機能を使わない場合には、その機能に対するサポート・コードがターゲット・システムから除外されます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

1-29

開発ツールVDKはライブラリであるため、VDKを使用するかどうかは開発者の判断によります。VDKは、VisualDSP++開発環境に統合されていますが、標準のコマンドライン・ツールでも使用できます。VDK開発環境は、システム・
リソースの管理を支援し、VDKベースのさまざまなオブジェクトの生成を自動化し、アプリケーションのデバッグ時にシステム状態を視覚化します。
アナログ・デバイセズのエミュレータでは、プロセッサの IEEE 1149.1
JTAG テスト・アクセス・ポートを使って、エミュレーション時にター
ゲット・ボード・プロセッサの監視と制御を行います。このエミュレータ
ではフルスピードのエミュレーションが可能なため、メモリ、レジスタ、
プロセッサ・スタックの検査と変更が可能です。プロセッサの JTAGイン
ターフェースを使用すると、エミュレータがターゲット・システムのローディングやタイミングに影響を与えない、非侵入型のインサーキット・エ
ミュレーションが保証されます。
アナログ・デバイセズが提供するソフトウェア／ハードウェア開発ツールに加えて、サードパーティがBlackfinプロセッサ・ファミリーに対応する広範囲なツールを提供しています。ハードウェア・ツールには、ADSP-BF533
EZ-KIT Lite™ スタンドアロン評価／開発カードなどがあります。サード
パーティのソフトウェア・ツールには、DSPライブラリ、リアルタイム・オ
ペレーティング・システム、ブロック図設計ツールなどがあります。

1-30

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

第2章

演算ユニットプロセッサの演算ユニットは、DSPおよび一般の制御アルゴリズム用の数値処理を実行します。演算ユニットは、2 つの算術論理演算ユニット(ALU)、2つの積和演算器（乗算器）ユニット、シフタ、一組のビデオ ALUで構成されます。これらのユニットは、データ・レジスタ・ファイルのレジスタからデータを取得します。これらのユニットの計算命令は固定小数
点演算を提供し、各計算命令はどのサイクルでも実行できます。
演算ユニットでは、さまざまなタイプの演算を処理します。ALU では、算術演算と論理演算を実行します。乗算器では乗算を実行し、乗算／加算および乗算／減算演算を実行します。シフタでは、論理シフトと算術シフトを実行し、ビットのパッキングと抽出を実行します。ビデオ ALUでは、特定の 8 ビット・データ・オペランドに対して単一命令複数データ (SIMD)の論理演算を実行します。
演算ユニットに出入りするデータは、それぞれ 32ビット幅の8本のレジスタで構成されるデータ・レジスタ・ファイルを経由します。16 ビット・オ
ペランドを必要とする演算では、レジスタがペアにされて、16本の16ビッ
ト・レジスタが提供されます。
プロセッサのアセンブリ言語は、データ・レジスタ・ファイルへのアクセスを提供します。アセンブリ言語を使用すれば、これらのレジスタとの間でデータをやり取りすると同時に、計算のデータ・フォーマットを指定できます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-1

図 2-1は、この章で取り上げるその他のテーマを示します。各演算ユニッ
トを調べれば、その動作の詳細に加えて、計算命令のまとめも参照できます。演算ユニット、レジスタ・ファイル、データ・バスの詳細を調べれば、計算のための適切なデータ・フローをよく理解できるようになります。次に、プロセッサの高度な並列処理の詳しい説明によって、多機能命
令の利用方法が明らかになります。
図 2-1 に、データ・レジスタ・ファイルと演算ユニット（乗算器、ALU、シフタ）との関連を示します。
ࠕ࠼࡟ࠬṶ▚࡙࠾࠶࠻

SP
FP
P5
P4
P3
P2

I3

L3

B3

M3

I2

L2

B2

M2

I1

L1

B1

M1

I0

L0

B0

M0

DAG0

DAG1

ࠪ࡯ࠤࡦࠨ

P1
P0
ࠕ࡜ࠗࡔࡦ࠻

࠺ࠦ࡯࠼
R7
R6

࡞࡯ࡊ࡮ࡃ࠶ࡈࠔ

R5
R4
R3

16

16
8

8

8

8

೙ᓮ࡙࠾࠶࠻

R2
R1
R0

ࡃ࡟࡞࡮
ࠪࡈ࠲

40
ACC 0

40
ACC 1

࠺࡯࠲Ṷ▚࡙࠾࠶࠻

図 2-1.

2-2

プロセッサ・コア・アーキテクチャ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット

単機能乗算器命令、ALU 命令、シフタ命令は、データ・レジスタ・ファ
イル内のデータ・レジスタに無制限のアクセスができます。多機能演算での制約については、それぞれの演算の節を参照してください。
2 本の追加レジスタ A0と A1 は、40 ビットの累算結果を提供します。これ
らのレジスタは ALU 専用であり、主に積和演算機能に使用されます。
小数と整数などの伝統的な算術演算モードは、命令で直接に指定されます。丸めモードは ASTAT レジスタから設定されます。このレジスタには、計算動作の結果のステータスと条件も記録されます。

データ・フォーマットの使い方
ADSP-BF53x プロセッサは、基本的に 16 ビットの固定小数点マシンです。
大部分の演算では 2 の補数表現を想定していますが、符号なし数値や単純なビット列を想定する演算もあります。命令によっては 32 ビットの整数演算をサポートし、さらに特殊な機能によって 8ビット演算とブロック浮動小数点をサポートすることもあります。各数値フォーマットの詳細については、 付録D「数値フォーマット」を参照してください。
ADSP-BF53x プロセッサ・ファミリーの演算では、符号付き数値は、常に 2の補数フォーマットで表現されます。これらのプロセッサでは、符号付き絶対値、1の補数、2進化 10 進数 (BCD)、ゲタ履きフォーマットを使用しません。

■ ビット列
ビット列フォーマットは最も簡単な2進表記であり、16ビットが1つのビット・パターンとして扱われます。このフォーマットを使用する計算の例
は、論理演算の NOT、AND、OR、XOR です。これらの ALU 演算では、オペランドを符号ビットや 2 進小数点配置のないビット列として扱います。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-3データ・フォーマットの使い方■ 符号なし符号なし 2進数値は正であって、同じ長さの符号付き数値の絶対値のほぼ2 倍の大きさを持つと考えることができます。プロセッサでは、多倍精度
数値の下位ワードを符号なし数値として扱います。

■ 符号付き数値：2 の補数
ADSP-BF53x プロセッサの演算では、「符号付き」という語は 2 の補数値を表します。ADSP-BF53x プロセッサ・ファミリーの演算では、2 の補数演算を想定しています。

■ 小数表現：1.15
ADSP-BF53x プロセッサの演算は、1.15（左に1ビット、右に 15ビット）で表される小数バイナリ・フォーマットでの数値に最適化されています。
1.15 フォーマットでは、1 つの符号ビット（最上位ビット (MSB) ）と15個の小数ビットによって、－ 1～ 0.999969 までの値を表します。
図 2-2 は、1.15 数値の例とそれに等価な10 進値に加えて、1.15 数値でのビットの重みを示します。

1.15ତ౵Ȫ16ૺȫ
0x0001
0x7FFF
0xFFFF0x800020

図 2-2.

2-4

2– 1 2– 2 2– 3൝‫̈́ث‬21ૺ౵
0.000031
0.999969–0.000031–1.000000
2– 4 2– 5

2– 6 2– 7

2 – 8 2 – 9 2 – 10 2 – 11 2 – 12 2 – 13 2 – 14 2 – 15

1.15 数値でのビットの重み

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット

レジスタ・ファイル
プロセッサの演算ユニットには、データ・レジスタ・ファイル、ポイン
タ・レジスタ・ファイル、データ・アドレス・ジェネレータ (DAG) レジ
スタ・セットという、3つのレジスタ・グループがあります。
• データ・レジスタ・ファイルは、演算ユニットのデータ・バスからオペランドを受け取り、計算結果を格納します。
• ポインタ・レジスタ・ファイルには、アドレッシング動作用のポインタがあります。
• DAG レジスタは、DSP 演算用のゼロオーバーヘッド循環バッファを管理する専用レジスタです。
詳細については、第 5 章「データ・アドレス・ジェネレータ」を参照してください。
プロセッサのレジスタ・ファイルを図 2-3 に示します。
データ・レジスタ
R0

R0.H

R0.L

I0

L0

B0

M0

P0

R1

R1.H

R1.L

I1

L1

B1

M1

P1

R2

R2.H

R2.L

I2

L2

B2

M2

P2

I3

L3

B3

M3

P3

R3

R3.H

R3.L

R4

R4.H

R4.L

P4

R5

R5.H

R5.L

P5

R6

R6.H

R6.L

R7

R7.H

R7.L

A0 A0.X

A0.W

A1 A1.X

A1.W

図 2-3.

データ・アドレス・ジェネレータ (DAG) レジスタ

SP
FP

レジスタ・ファイル

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-5

レジスタ・ファイル

L

プロセッサでは、1ワードは 32ビットの長さです。H は 32ビット・レジスタの上位 16 ビットを示し、L は 32 ビット・レジスタの下位
16ビットを示します。たとえば、A0.W には 40ビット A0 レジスタの下位 32ビットが含まれています。A0.L には A0.W の下位16ビットが含まれ、A0.H には A0.W の上位 16ビットが含まれています。

■ データ・レジスタ・ファイル
データ・レジスタ・ファイルは、32ビット幅の 8本のレジスタで構成されます。各レジスタは、独立した 16 ビット・レジスタのペアと見なすこともできます。それぞれは下位ハーフまたは上位ハーフとして表されます。
したがって、32ビット・レジスタ R0 は、2つの独立したレジスタ・ハーフ
R0.L および R0.H と見なすこともできます。
32 ビット幅の3 本のバス（2 本は読出し、1 本は書込み）によって、レジスタ・ファイルは L1 データ・メモリに接続されます。データ・レジスタ・ファイルとデータ・メモリとの間の転送では、各サイクルで最高 4つの16ビット・ワードの有効データを移動できます。

■ アキュムレータ・レジスタ
データ・レジスタ・ファイルに加えて、プロセッサには 2 本の専用の40ビット・アキュムレータ・レジスタがあります。それぞれ、その 16 ビッ
ト下位ハーフ (An.L) または上位ハーフ (An.H) と、その 8 ビット拡張部(An.X) として表すことができます。さらには、下位32 ビットで構成される 32 ビット・レジスタ (An.W)、または完全な 40 ビット結果レジスタ (An)として表すこともできます。

2-6

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット■ ポインタ・レジスタ・ファイル
汎用のアドレス・ポインタ・レジスタは Pレジスタとも呼ばれ、以下の要素で構成されます。
• 6 エントリの Pレジスタ・ファイル P[5:0]• 現在の手続きの駆動レコードのポイントに使用されるフレーム・ポ
インタ (FP)• ランタイム・スタック上で最後に使用された位置のポイントに使用されるスタック・ポインタ (SP) レジスタ。第 3 章「動作モードと状態」のモード依存レジスタを参照。
P レジスタは32ビット幅です。Pレジスタは主にアドレス計算に使用されますが、限定された算術演算セットによって一般の整数演算（たとえば、カウンタの保守）に使用することもできます。しかし、データ・レジスタとは異なり、P レジスタの演算は、算術ステータス (ASTAT) レジスタのス
テータス・フラグに影響を与えません。

■ DAG レジスタ・セット
DSP 命令では、主にアドレス指定用にデータ・アドレス・ジェネレータ
(DAG) レジスタ・セットを使用します。DAG レジスタ・セットは以下のレジスタから構成されます。
• I[3:0] にはインデックス・アドレスが含まれています。
• M[3:0] には変更値が含まれています。
• B[3:0] にはベース・アドレスが含まれています。
• L[3:0] には長さの値が含まれています。
すべての DAG レジスタは、32ビット幅です。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-7

レジスタ・ファイル

I（インデックス）レジスタとB（ベース）レジスタには、常にメモリ内の 8ビット・バイトのアドレスが含まれています。インデックス・レジス
タには実効アドレスが含まれています。M（モディファイ）レジスタには、
インデックス・レジスタの 1つに対して加算／減算されるオフセット値が含まれています。
B レジスタとL（レングス）レジスタでは、循環バッファを定義します。B
レジスタには、バッファの開始アドレスが含まれています。L レジスタには、バイト単位での長さが含まれています。Lレジスタと B レジスタの各ペアには、対応する I レジスタが関連付けられています。たとえば、L0 とB0 は常に I0 に関連付けられています。しかし、任意のM レジスタを任意の I レジスタに関連付けることもできます。たとえば、I0 を M3 によって変更することもできます。詳細については、第 5 章「データ・アドレス・
ジェネレータ」を参照してください。

■ レジスタ・ファイル命令のまとめ
表 2-1 は、レジスタ・ファイル命令を示します。アセンブリ言語構文の詳細については、『ADSP-BF53x Blackfin Processor Instruction Set Reference』
を参照してください。
表 2-1 では、以下の記号の意味に注意してください。
• Allreg は、R[7:0]、P[5:0]、
SP、
FP、
I[3:0]、
M[3:0]、
B[3:0]、L[3:0]、
A0.X、A0.W、A1.X、A1.W、ASTAT、RETS、RETI、RETX、RETN、RETE、
LC[1:0]、LT[1:0]、LB[1:0]、USP、SEQSTAT、SYSCFG、CYCLES、CYCLES2を示します。
• An は、ALU結果レジスタ A0 または A1 を示します。
• Dreg は、データ・レジスタ・ファイルの任意のレジスタを示します。
• Sysreg は、システム・レジスタである ASTAT、SEQSTAT、SYSCFG、
RETI、RETX、RETN、RETE、または RETS、LC[1:0]、LT[1:0]、LB[1:0]、
CYCLES、CYCLES2 を示します。

2-8

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット• Preg は、任意のポインタ・レジスタ、FP、または SP レジスタを示します。
• Dreg_even は、R0、R2、R4、または R6 を示します。
• Dreg_odd は、R1、R3、R5、または R7 を示します。
• DPreg は、データ・レジスタ・ファイルの任意のレジスタまたは任意のポインタ・レジスタ、FP、または SP レジスタを示します。
• Dreg_lo は、データ・レジスタ・ファイルの任意のレジスタの下位
16ビットを示します。
• Dreg_hi は、データ・レジスタ・ファイルの任意のレジスタの上位
16ビットを示します。
• An.L は、アキュムレータ A0.W または A1.W の下位 16 ビットを示します。
• An.H は、アキュムレータ A0.W または A1.W の上位 16 ビットを示します。
• Dreg_byte は、各データ・レジスタの下位8ビットを示します。
• Option (X) は、符号拡張を示します。
• Option (Z) は、ゼロ拡張を示します。
• * は、命令の結果に応じて、フラグがセットまたはクリアされることを示します。
• ** は、フラグがクリアされることを示します。
• – は、影響がないことを示します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-9レジスタ・ファイル

表 2-1.

レジスタ・ファイル命令のまとめ
ASTAT のステータス・フラグ

命令

AZ

AN

AC0
AC0_COPY
AC1

AV0
AVS

AV1
AV1S

CC

V
V_COPYVS

allreg = allreg ; 1

–

–

–

–

–

–

–

An = An ;

–

–

–

–

–

–

–

An = Dreg ;

–

–

–

–

–

–

–

Dreg_even = A0 ;

*

*

–

–

–

–

*

Dreg_odd = A1 ;

*

*

–

–

–

–

*

Dreg_even = A0,
Dreg_odd = A1 ;

*

*

–

–

–

–

*

Dreg_odd = A1,
Dreg_even = A0 ;

*

*

–

–

–

–

*

IF CC DPreg = DPreg ;

–

–

–

–

–

–

–

IF ! CC DPreg = DPreg ;

–

–

–

–

–

–

–

Dreg = Dreg_lo (Z) ;

*

**

**

–

–

–

**/–

Dreg = Dreg_lo (X) ;

*

*

**

–

–

–

**/–

An.X = Dreg_lo ;

–

–

–

–

–

–

–

Dreg_lo = An.X ;

–

–

–

–

–

–

–

An.L = Dreg_lo ;

–

–

–

–

–

–

–

An.H = Dreg_hi ;

–

–

–

–

–

–

–

Dreg_lo = A0 ;

*

*

–

–

–

–

*

Dreg_hi = A1 ;

*

*

–

–

–

–

*

Dreg_hi = A1 ;Dreg_lo = A0 ;

*

*

–

–

–

–

*

Dreg_lo = A0 ;Dreg_hi = A1 ;

*

*

–

–

–

–

*

Dreg = Dreg_byte (Z) ;

*

**

**

–

–

–

**/–

Dreg = Dreg_byte (X) ;

*

*

**

–

–

–

**/–

1

2-10

警告：すべてのレジスタ組合わせが許されるわけではありません。詳細については、『ADSP-BF53x
Blackfin Processor Instruction Set Reference』のレジスタ移動命令の機能説明を参照してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット

データ型
このプロセッサは、32 ビット・ワード、16 ビット・ハーフ・ワード、およびバイト型に対応します。32/16 ビット・ワードは整数または小数とすることができますが、バイトは常に整数です。整数データ型は符号付きまたは符号なしとすることができますが、小数データ型は常に符号付きです。
表 2-3 は、メモリ内、レジスタ・ファイル内、アキュムレータ内に存在するデータのフォーマットを示します。この表では、文字 d は 1 ビットを表し、文字 s は 1つの符号付きビットを表します。
命令によっては、レジスタ内のデータを 32 ビットに符号拡張またはゼロ
拡張することでデータを操作します。
• 符号なしデータをゼロ拡張する命令• 符号付き 16 ビット・ハーフ・ワードと8ビット・バイトを符号拡張する命令
その他の命令では、データを 32ビットの数値として操作します。さらに、
2 つの 16ビット・ハーフ・ワードまたは 4つの8ビット・バイトは、32ビッ
ト値 と し て操 作 でき ま す。詳 細 につ い ては、『ADSP-BF53x Blackfin
Processor Instruction Set Reference』の命令を参照してください。
表 2-2では、以下の記号の意味に注意してください。
• s ＝符号ビット• d ＝データビット• “.”＝慣習による小数点。ただし、実際には数値内に小数点は現われません。
• 斜体は、隣接するビット以外のソースからのデータを意味します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-11

データ型

表 2-2.

データ・フォーマット

フォーマットメモリでの表現32 ビット・レジスタでの表現

32.0 符号なし
ワード

dddd dddd dddd dddd dddd
dddd dddd dddd

dddd dddd dddd dddd dddd dddd dddd dddd

32.0 符号付きワード

sddd dddd dddd dddd dddd
dddd dddd dddd

sddd dddd dddd dddd dddd dddd dddd dddd

16.0 符号なし
ハーフ・ワード

dddd dddd dddd dddd0000 0000 0000 0000 dddd dddd dddd dddd

16.0 符号付き
ハーフ・ワード

sddd dddd dddd dddd

ssss ssss ssss ssss sddd dddd dddd dddd

8.0 符号なし
バイト

dddd dddd0000 0000 0000 0000 0000 0000 dddd dddd

8.0 符号付き
バイト

sddd dddd

ssss ssss ssss ssss ssss ssss sddd dddd

0.16 符号なし
小数.dddd dddd dddd dddd0000 0000 0000 0000 .dddd dddd dddd dddd

1.15 符号付き
小数

s.ddd dddd dddd dddd

ssss ssss ssss ssss s.ddd dddd dddd dddd

0.32 符号なし
小数.dddd dddd dddd dddd dddd
dddd dddd dddd

.dddd dddd dddd dddd dddd dddd dddd
dddd

1.31 符号付き
小数

s.ddd dddd dddd dddd dddd
dddd dddd dddd

s.ddd dddd dddd dddd dddd dddd dddd dddd

パック 8.0 符号
なしバイト

dddd dddd dddd dddd dddd
dddd dddd dddd

dddd dddd dddd dddd dddd dddd dddd dddd

パック 0.16
符号なし小数.dddd dddd dddd dddd .dddd.dddd dddd dddd dddd .dddd dddd dddd

パック 1.15
符号付き小数2-12

dddd dddd dddd

s.ddd dddd dddd dddd s.ddd

dddd dddd dddd

dddd

s.ddd dddd dddd dddd s.ddd dddd dddd

dddd

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット■ エンディアン性
内部メモリと外部メモリは、いずれもリトル・エンディアンのバイト順でアクセスされます。詳細については、6-71 ページの「メモリ・トランザ
クション・モデル」を参照してください。

■ ALU のデータ型
各 ALUでの演算では、符号付き除算プリミティブ (DIVS) を除いて、オペランドと結果を 16/32 ビットのビット列として扱います。ALU の結果ス
テータス・ビットでは、結果を符号付きとして扱い、ステータスをオーバーフロー・フラグ (AV0、AV1) と負フラグ (AN) によって示します。各ALUには専用のスティッキー・オーバーフロー・フラグ AV0S と AV1S があります。これらのビットはいったんセットされると、ASTAT レジスタへの直接書込みによってクリアされるまではセットされたままです。追加の V フラグは、2つのアキュムレータからレジスタ・ファイルへの結果の転送に応じてセットまたはクリアされます。さらに、スティッキー VS ビットは V
ビットによってセットされ、クリアされるまではセットされたままです。
オーバーフロー・ビット (V、VS、AV0、AV0S、AV1、AV1S) のロジックは、2の補数演算をベースにしています。最上位ビット (MSB) の変化がオペランドの符号と演算の性質によって予測できなかった場合には、1 つのビッ
トまたはビット群がセットされます。たとえば、2 つの正数を加算すると正の結果が得られなければなりません。符号ビットの変化はオーバーフ
ローを意味し、対応するオーバーフロー・フラグ AVn がセットされます。
負数と正数を加算すると、負または正の結果が得られますが、オーバーフ
ローは発生しません。
キャリー・ビット (AC0、AC1) のロジックは、符号なし絶対値演算をベースにしています。ビット 16 (MSB) からキャリーが生成された場合には、ビットはセットされます。キャリー・ビット (AC0、AC1) は、マルチワード演算の下位ワード部分に対して最も役立ちます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-13

データ型

ALU の結果によって、ステータス情報が生成されます。ALU ステータスの使い方の詳細については、2-30 ページの「ALU 命令のまとめ」を参照
してください。

■ 乗算器のデータ型
各乗算器からは、結果がビット列で得られます。入力は命令から与えられる情報に基づいて解釈されます。つまり、符号付き×符号付き、符号なし
×符号なし、その組合せ、および丸め演算などです。乗算器からの 32ビッ
トの結果は符号付きと見なされ、A0 または A1レジスタのフル 40 ビット幅にわたって符号拡張されます。
プロセッサは 2つのフォーマット調整モードを提供します。つまり、小数
オペランド（1つの符号ビットと 15個の小数ビットを持つ1.15 フォーマット）用の小数モードと、整数オペランド（16.0 フォーマット）用の整数モードです。
プロセッサが 2 つの 1.15 オペランドを乗算すると、その結果は2.30（2 つの符号ビットと 30 個の小数ビット）の数になります。小数モードの場合、乗算器は、積を 1ビット左に自動的にシフトしてから、その結果を乗算結
果レジスタ (A0、A1) に転送します。このように冗長な符号ビットをシフトすることで、乗算結果は 1.31 フォーマットになり、これは1.15 フォーマッ
トに丸めることができます。結果のフォーマットを 2-18 ページの図 2-4 に示します。
整数モードの場合、左シフトは行われません。たとえば、オペランドが 16.0
フォーマットである場合、32 ビットの乗算結果は 32.0 フォーマットになります。左シフトは不要であり、もし行えば数値表現が変化します。結果のフォーマットを 2-18 ページの図 2-5 に示します。
乗算結果は、アキュムレータを更新するときに、またはレジスタ・ファイ
ル内のデスティネーション・レジスタに転送されるときにステータス情報を生成します。詳細については、2-41 ページの「乗算器命令のまとめ」
を参照してください。

2-14

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット■ シフタのデータ型
シフタでの多くの演算は、符号付き（2の補数）または符号なしであると明示的に示されます。論理シフトでは、符号なし絶対値またはビット列値を想定します。算術シフトでは、2の補数値を想定します。
指数ロジックでは、2 の補数値を想定します。指数ロジックでは2 の補数
小数をベースにした、ブロック浮動小数点にも対応します。
シフト結果によって、ステータス情報が生成されます。シフタ・ステータ
スの使い方の詳細については、2-56 ページの「シフタ命令のまとめ」を参照してください。

■ 演算フォーマットのまとめ
表 2-3、表 2-4、表 2-5、表 2-6 では、計算動作の演算特性をまとめています。
表 2-3.

ALU の演算フォーマット

演算

オペランド・フォーマット

結果フォーマット加算

符号付きまたは符号なし

フラグを解釈

減算

符号付きまたは符号なし

フラグを解釈論理

ビット列

オペランドと同じ

除算

明示的に符号付きまたは符号な
しオペランドと同じ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-15

データ型

表 2-4.

乗算器の小数モード・フォーマット

演算

オペランド・フォーマット

乗算

1.15 の明示的な符号付きまたは 2.30 を 1.31 にシフト
符号なし

乗算／加算

1.15 の明示的な符号付きまたは 2.30 を 1.31 にシフト
符号なし

乗算／減算

1.15 の明示的な符号付きまたは 2.30 を 1.31 にシフト
符号なし

表 2-5.

結果フォーマット

乗算器演算の整数モード・フォーマット

演算

オペランド・フォーマット

乗算

16.0 の明示的な符号付きまたは 32.0、シフトなし
符号なし

乗算／加算

16.0 の明示的な符号付きまたは 32.0、シフトなし
符号なし

乗算／減算

16.0 の明示的な符号付きまたは 32.0、シフトなし
符号なし

表 2-6.

結果フォーマット

シフタ演算のフォーマット

演算

オペランド・フォーマット

結果フォーマット

論理シフト

符号なしバイナリ文字列

オペランドと同じ

算術シフト

符号付き

オペランドと同じ

指数検出

符号付き

オペランドと同じ■ 乗算器の整数／小数フォーマットの使い方
積和演算機能の場合、プロセッサは小数値 (1.15) 用の小数演算と、整数(16.0) 用の整数演算という、2つの選択肢を提供します。
小数演算の場合、32ビットの積出力はフォーマット調整（符号拡張および
1 ビット左シフト）されてから、アキュムレータ A0 または A1 に加算されます。たとえば、積のビット 31 は A0 のビット 32（A0.X のビット 0）と合致

2-16

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット

し、積のビット 0 は A0 のビット1（A0.W のビット 1）と合致します。最下位ビット (LSB) はゼロ詰めされます。乗算結果の小数フォーマットを図2-4に示します。
整数演算の場合、32 ビットの積レジスタはシフトされずに A0 または A1 に加算されます。図 2-5 は、整数モードの結果配置を示します。
小数演算や整数演算では、乗算器の出力積は 40 ビットの加算器／減算器に送られ、そこで A0 または A1 レジスタの現在の内容に対して加算／減算
されて、最終の 40 ビットの結果が得られます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-17

データ型

࠯ࡠ⹣߼

ࠪࡈ࠻࡮ࠕ࠙࠻
P╓ภ‫ޔ‬7ࡆ࠶࠻

ਸ਼▚ེP಴ജ

31 31 31 31 31 31 31 31 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

A0.X

図 2-4.

A0.W

乗算結果の小数フォーマット

P╓ภ‫ޔ‬8ࡆ࠶࠻ਸ਼▚ེP಴ജ

31 31 31 31 31 31 31 31 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0 31 30 29 28 27 26 25 24 23 22 21 20 1 1 1 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

A0.X

図 2-5.

2-18

A0.W

乗算結果の整数フォーマットADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット■ 乗算器の丸め結果
多くの乗算器演算で、プロセッサは乗算結果の丸め（RND オプション）に対応します。丸めは数値の精度を減らすための手段であり、数値の表現か
ら下位レンジのビットを除去し、場合によっては、その前の値をより正確に表現するように数値の残り部分を変更することもあります。たとえば、
元の数値は N ビットの精度を持ちますが、新しい数値はMビットの精度しか持ちません（ここで、N ＞M）。これにより、丸めのプロセスでは、数値から N－ Mビットの精度が除去されます。
RND オプションによってバイアスされた丸めが行われるか、バイアスのな

い丸めが行われるかは、ASTAT レジスタの RND_MOD ビットによって決まります。バイアスのない丸めの場合、RND_MOD ビット＝ 0 に設定します。バ
イアスされた丸めの場合、RND_MOD ビット＝1 に設定します。

L

ほとんどのアルゴリズムでは、バイアスのない丸めが選択されます。

X バイアスのない丸め

収束丸め方式では、元の値に最も近い数値が返されます。元の数値が2つの数値のちょうど中間にある場合には、この方式では最も近い偶数値、つまり 0 のLSB を含む値が返されます。たとえば、3 ビットの 2 の補数小数0.25（2進の 0.01）を最も近い2ビットの 2の補数小数に丸める場合、結果は 0.0 となります。なぜなら、それが 0.5 と 0.0 の偶数値選択だからです。
この方式では、前後の値に基づいて切捨て／切上げが行われるため、バイアスのない丸めと呼ばれます。
バイアスのない丸めでは、ビット 15とビット 16との境界で40ビットの結果を丸めるという ALU の機能を使用します。丸めは命令コードの一部として指定できます。丸めが選択されると、出力レジスタには、丸められた
16 ビットの結果が格納されます。アキュムレータでの丸めは行われません。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-19

データ型

アキュムレータは、バイアスのない丸め方式を使用します。バイアスされた丸めという従来の方式では、加算器チェーンのビット位置 15に1 を加算します。この方法では、正の方向へのかたよりが生じます。なぜなら、
A0.L/A1.L = 0x8000 であるとき、中間値は常に切上げられるからです。
アキュムレータはこの中間点を検出すると、結果出力のビット 16 を 0に設定することによってこのバイアスをなくします。ビット 16 を 0に設定する
ことは、奇数の A0.L/A1.L 値を切り上げ、偶数値を切り下げる効果がある
ため、一様に分散した値を想定すると 0という大きなサンプル・バイアスをもたらします。
以下の例は、x を使用して任意のビット・パターン（オール・ゼロ以外）を表します。図 2-6 の例では、A0 に対する代表的な丸め演算を示します。
この例は、A1 にも適用されます。
ਣ߼ࠄࠇߡ޿ߥ޿୯㧦

X X X X X X X X X X X X X X X X 0 0 1 0 0 1 0 1 1 X X X X X X X X X X X X X X X

1ࠍട▚ߒߡࠠࡖ࡝࡯㧦

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

1

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

ਣ߼ࠄࠇߚ୯㧦

X X X X X X X X X X X X X X X X 0 0 1 0 0 1 1 0 0 X X X X X X X X X X X X X X X

A0.X

図 2-6.

A0.W

代表的なバイアスのない乗算器丸め

図 2-7に示すように、下位15ビットがオール 0であり、ビット 15 が 1（中心値）であるとき、正へのかたよりを避けるための補償が明らかになりま
す。

2-20

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット

図 2-7では、A0 のビット16が 0に設定されます。このアルゴリズムはどの丸め演算でも採用されていますが、次の例の下位 16ビットに示すビット・パターンが存在するときにだけ表面化します。
ਣ߼ࠄࠇߡ޿ߥ޿୯㧦

X X X X X X X X X X X X X X X X 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01ࠍട▚ߒߡࠠࡖ࡝࡯㧦

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

1

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

A0ߩࡆ࠶࠻16㧩1㧦

X X X X X X X X X X X X X X X X 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0ਣ߼ࠄࠇߚ୯㧦

X X X X X X X X X X X X X X X X 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

A0.X

図 2-7.

A0.W

バイアスのない乗算器丸めでの正へのかたよりの回避

X バイアスされた丸め

最近値への丸め方式でも、元の値に最も近い数値が返されます。しかし、元の数値が 2 つの数値のちょうど中間にある場合には、慣習的に常に 2 つのうちの大きな方へ切り上げられます。たとえば、3 ビットの 2 の補数小数 0.25（2進の0.01）を最も近い 2ビットの 2の補数小数に丸めるとき、この方式では 0.5（2 進の 0.1）が返されます。元の小数は 0.5 と0.0（2 進の0.0）のちょうど中間にあるため、この方式では切上げになります。常に切上げが行われるため、この方式はバイアスされた丸めと呼ばれます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-21

データ型

ASTAT レジスタの RND_MOD ビットは、バイアスされた丸めをイネーブルにします。RND_MOD ビットがクリアされると、2-19 ページの「バイアスのない丸め」で説明したように、乗算器命令の RND オプションでは通常のバイ
アスのない丸め演算を使用します。
RND_MOD ビットがセット (＝ 1) されると、プロセッサはバイアスのない丸
めの代わりに、バイアスされた丸めを使用します。バイアスされた丸めモードで動作するとき、A0.L/A1.L を0x8000 に設定したすべての丸め演算
では奇数値だけを切り上げるのではなく、常に切上げを行います。バイア
スされた丸めの例については表 2-7 を参照してください。

表 2-7.

乗算器動作でのバイアスされた丸め

RND 前の A0/A1

バイアスされた RND 結果

バイアスのない RND 結果

0x00 0000 8000

0x00 0001 8000

0x00 0000 0000

0x00 0001 8000

0x00 0002 0000

0x00 0002 0000

0x00 0000 8001

0x00 0001 0001

0x00 0001 0001

0x00 0001 8001

0x00 0002 0001

0x00 0002 0001

0x00 0000 7FFF

0x00 0000 FFFF

0x00 0000 FFFF

0x00 0001 7FFF

0x00 0001 FFFF

0x00 0001 FFFF

バイアスされた丸めが結果に影響を与えるのは、 A0.L/A1.L レジスタが0x8000 を格納している場合だけです。その他の丸め演算はすべて普通に行われます。このモードでは、バイアスされた丸めを使用するビット指定のアルゴリズムを効率的に実装できます（たとえば、Global System for
Mobile Communications (GSM) の音声圧縮ルーチン）。
X 切捨て

数値を表す有意なビットを減らす、もう 1 つの方法として一般的なのは、
N － Mの下位ビットを単にマスクする方法です。このプロセスは切捨てと呼ばれ、比較的大きなバイアスが生じます。丸めに対応しない命令は切捨てを行います。ASTAT の RND_MOD ビットは切捨てに影響を与えません。

2-22

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット■ 特殊な丸め命令
前述のように、ALU はバイアスされた丸めまたはバイアスのない丸めによって、演算結果をデータ・レジスタに直接丸める機能を提供します。また、異なるビット境界で丸める機能も提供します。オプション RND12、RND、RND20 では、それぞれビット12、ビット 16、ビット20 から16 ビット値を抽出して、ASTAT の RND_MOD ビットの状態とは無関係にバイアスされた丸めを実行します。
例：
R3.L = R4 (RND) ;この列では、ビット 16 でバイアスされた丸めを実行し、結果をハーフ・ワードに保管します。
R3.L = R4 + R5 (RND12) ;この列では、2 つの32 ビット数値を加算してビット12 でバイアスされた丸めを実行し、結果をハーフ・ワードに保管します。
R3.L = R4 + R5 (RND20) ;この列では、2 つの32 ビット数値を加算してビット20 でバイアスされた丸めを実行し、結果をハーフ・ワードに保管します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-23

計算ステータスの使い方

計算ステータスの使い方
乗算器、ALU、シフタは、プロセッサの算術ステータス (ASTAT) レジスタ
内のオーバーフロー・フラグやその他のステータス・フラグを更新します。プログラム・シーケンス内の計算からステータス条件を使用するには、命令の実行後に条件付き命令を使用して ASTAT レジスタ内の CC フラグをテストします。この方法では、各命令の結果を監視できます。ASTAT レ
ジスタは 32 ビット・レジスタであり、いくつかのビットは予備です。将来のシステムとの互換性を保証するには、レジスタへの書込み時にこれらの予備ビットから読み出した値を書き戻す必要があります。

2-24

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット

ASTAT レジスタ
図 2-8は算術ステータス (ASTAT) レジスタを示します。プロセッサは、最も新しい ALU 演算、乗算器演算、シフタ演算のステータスを示す、ASTATのステータス・ビットを更新します。
算術ステータス・レジスタ (ASTAT)
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

VS（Dreg のスティッキー・オーバーフロー）

AV0（A0のオーバーフロー）
0 - A0 に書き込まれた最後の結果はオーバーフローしていません
1 - A0 に書き込まれた最後の結果はオーバーフローしました

V のスティッキー版
V（Dregオーバーフロー）
0 - ALU からデータ・レジスタ・ファイルのレジスタに書き込まれた最後の結果は、オーバーフローしていません
1 - 最後の結果はオーバーフローしました

AV0S（A0のスティッキー・
オーバーフロー）
AV0 のスティッキー版

AV1S（A1のスティッキー・オーバーフロー）
AV1 のスティッキー版

15 14 13 12 11 10

9

8

7

6

5

4

3

2

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

リセット＝ 0x0000 0000

AC1（ALU1キャリー）
0 - ALU1 での演算によりキャリーは発生しませんでした
1 - 演算によりキャリーが発生しました

AV1（A1のオーバーフロー）
0 - A1 に書き込まれた最後の結果はオーバーフローしていません
1 - A1 に書き込まれた最後の結果はオーバーフローしました
AZ（ゼロ結果）
0 - 最後の ALU0、ALU1、または
シフタ演算からの結果はゼロではありません
1 - 結果はゼロです

AC0（ALU0 キャリー）
0 - ALU0 での演算によりキャリーは発生しませんでした
1 - 演算によりキャリーが発生しました

AN（負結果）RND_MOD（丸めモード）
0 - バイアスのない丸め
1 - バイアスされた丸め

AC0_COPY

0 - 最後の ALU0、ALU1、またはシフタ演算からの結果は負ではありません
1 - 結果は負です
ビット 12 と同じ
V_COPYAQ（商）ビット 24 と同じ

商ビット

CC（条件コード）
多目的フラグであり、主に算術比較の分解能を保持するために使用されます。また、いくつかのシフタ命令では、ローテー
ト・ビットを保持するために使用します。

図 2-8.

算術ステータス・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-25

算術論理演算ユニット (ALU)

算術論理演算ユニット (ALU)
2 つの ALUは、固定小数点データに対して算術演算と論理演算を実行します。ALU の固定小数点命令は 16/32/40 ビットの固定小数点オペランドに作用し、16/32/40 ビットの固定小数点結果を出力します。ALU 命令には、以下の命令が含まれます。
• レジスタの固定小数点加算と減算• 即値の加算と減算• 乗算結果の累算と減算• 論理 AND、OR、NOT、XOR、ビット単位の XOR、ネゲート• 機能：ABS、MAX、MIN、丸め、除算プリミティブ■ ALU 演算主な ALU 演算は ALU0で行われますが、並列演算の場合には、ALU0 演算のサブセットを実行する ALU1 も使います。
表 2-8 は、各ALUで可能な入力と出力を示します。
表 2-8.

2-26

各 ALU での入力と出力

入力

出力

2 つまたは 4 つの 16 ビット・オペランド

1 つまたは 2 つの 16 ビットの結果

2 つの 32 ビット・オペランド

1 つの 32 ビットの結果

乗算器からの 32 ビットの結果

乗算器からの 32 ビットの結果と 40 ビットの累算結
果との組合わせADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット

2つのALUでの演算を組合わせると、1つの命令で4つの16ビットの結果、
2 つの 32ビットの結果、または2 つの 40ビットの結果が得られることもあります。
X シングル 16 ビット演算

シングル 16 ビット演算では、任意の2 つの 16 ビット・レジスタ・ハーフ
を ALUへの入力として使用できます。加算、減算、または論理演算によって生成される 16ビットの結果は、任意のデスティネーション・レジスタ・
ハーフに保管されます。ALU0 がこの演算に使用されます。
例：
R3.H = R1.H + R2.L (NS) ;この例では、R1.H（R1 の上位ハーフ）の16 ビットの内容を R2.L（R2 の下位ハーフ）の内容に加算し、その結果を飽和なしで R3.H（R3 の上位ハーフ）に保管します。
X デュアル 16 ビット演算

デュアル 16ビット演算では、任意の 2本の 32ビット・レジスタを16 ビット・オペランドのペアと見なして、ALU への入力として使用できます。加算、減算、論理演算によって得られる 2 つの 16ビットの結果は、任意の 32
ビット・デスティネーション・レジスタに保管されます。ALU0がこの演算に使用されます。
例：
R3 = R1 +|– R2 (S) ;この例では、R2.H（R2 の上位ハーフ）の16 ビットの内容を R1.H（R1 の上位ハーフ）の内容に加算し、結果を飽和付きで R3.H（R3 の上位ハーフ）に保管します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-27

算術論理演算ユニット (ALU)

また、R1.L（R1 の下位ハーフ）の内容から R2.L（R2 の下位ハーフ）の 16
ビットの内容を減算し、結果を飽和付きで R3.L（R3 の下位ハーフ）に保管します（2-36 ページの図 2-10 を参照)。
X クワッド 16 ビット演算

クワッド 16ビット演算では、任意の 2本の 32ビット・レジスタを16 ビット・オペランドのペアと見なして ALU0と ALU1 への入力として使用できます。少数の加算演算や減算演算では、2本の任意の 32ビット・デスティ
ネーション・レジスタに保管される 4 つの 16 ビットの結果が得られます。
ALU0 と ALU1の両方がこの演算に使用されます。データ・レジスタ・ファ
イルから演算ユニットまでは 2 本の 32 ビット・データ・パスしかないた
め、ALU0 と ALU1には同じ 2ペアの 16ビット入力が供給されます。命令
構造はデュアル 16 ビット演算の場合と同じであり、2 つのALU に対して
入力オペランドは同じでなければなりません。
例：
R3 = R0 +|+ R1, R2 = R0 –|– R1 (S) ;この例では、次の 4 つの演算を実行します。
• R1.H（R1 の上位ハーフ）の 16ビットの内容を R0.H（R0 の上位ハーフ）の 16 ビットの内容に加算し、その結果を飽和付きで R3.H に保管します。
• R1.L を R0.L に加算し、その結果を飽和付きで R3.L に保管します。
• R0.H（R0 の上位ハーフ）の 16ビットの内容から R1.H（R1 の上位ハーフ）の 16 ビットの内容を減算し、その結果を飽和付きで R2.Hに保管します。
• R0.L から R1.L を減算し、その結果を飽和付きで R2.L に保管します。

2-28

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット

以下の 4命令は、上の命令と等価です。
R3.H = R0.H + R1.H (S) ;R3.L = R0.L + R1.L (S) ;R2.H = R0.H – R1.H (S) ;R2.L = R0.L – R1.L (S) ;X シングル 32 ビット演算

シングル 32ビット演算では、任意の 2本の 32ビット・レジスタを32 ビット・オペランドと見なして、ALU への入力として使用できます。加算、減算、論理演算によって得られる 32 ビットの結果は、任意の32 ビット・デスティネーション・レジスタに保管されます。ALU0がこの演算に使用されます。
データ・レジスタ・ファイルから得られる 32 ビット入力オペランドに加えて、8 本のレジスタ P[5:0]、SP、FP で構成されるポインタ・レジスタ・ファイルとの間でオペランドを入手／保管することができます。

L

命令では、ポインタ・レジスタとデータ・レジスタを混用できません。

例：
R3 = R1 + R2 (NS) ;この例では、R2 の 32ビットの内容を R1 の32ビットの内容に加算し、その結果を飽和なしで R3 に保管します。
R3 = R1 + R2 (S) ;この例では、R1 R1の 32ビットの内容を R2 の 32ビットの内容に加算し、その結果を飽和付きで R3 に保管します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-29

算術論理演算ユニット (ALU)

X デュアル 32 ビット演算

デュアル 32ビット演算では、任意の 2本の 32ビット・レジスタを32 ビット・オペランドのペアと見なして、ALU0 とALU1 への入力として使用できます。加算または減算によって得られる 2つの32 ビットの結果は、2本の 32 ビット・デスティネーション・レジスタに保管されます。ALU0 と
ALU1 はいずれもこの演算に使用されます。データ・レジスタ・ファイルから演算ユニットまでは 2 本の 32 ビット・データ・パスしかないため、
ALU0 と ALU1には同じ 2本の 32ビット入力レジスタが供給されます。
例：
R3 = R1 + R2, R4 = R1 – R2 (NS) ;この例では、R1 の 32ビットの内容に R2 の32ビットの内容を加算し、その結果を飽和なしで R3 に保管します。
また、R1 の 32ビットの内容から R2 の 32ビットの内容を減算し、その結果を飽和なしで R4 に保管します。
この命令の特殊な形式では、入力オペランドとして ALU の40ビット結果レジスタを使用し、A0 レジスタと A1 レジスタの和と差を作成します。
例：
R3 = A0 + A1, R4 = A0 – A1 (S) ;ALU レジスタの和と差の値を飽和付きの 32ビットで結果レジスタに転送します。

■ ALU 命令のまとめ
表 2-9 は ALU 命令を示します。アセンブリ言語構文と、ALU 命令がステー
タス・フラグに与える影響の詳細については、『ADSP-BF53x Blackfin
Processor Instruction Set Reference』を参照してください。

2-30

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット

表 2-9 では、以下の記号の意味に注意してください。
• Dreg は、データ・レジスタ・ファイルの任意のレジスタを示します。
• Preg は、任意のポインタ・レジスタ、FP、または SP レジスタを示します。
• Dreg_lo_hiは、データ・レジスタ・ファイルの任意のレジスタ内の任意の 16ビット・レジスタ・ハーフを示します。
• Dreg_lo は、データ・レジスタ・ファイルの任意のレジスタの下位
16ビットを示します。
• imm7 は、7 ビット幅の符号付き即値を示します。
• An は、ALU結果レジスタの A0 または A1 を示します。
• DIVS は、除算の符号プリミティブを示します。
• DIVQ は、除算の商プリミティブを示します。
• MAX は、ソース・レジスタの最大（つまり正の無限大に最も近い）値を示します。
• MIN は、ソース・レジスタの最小値を示します。
• ABS は、シングル 32 ビット・レジスタの上位／下位ハーフの絶対値を示します。
• RND は、ハーフ・ワードの丸めを示します。
• RND12は、加算／減算の結果の飽和とビット 12での結果の丸めを示します。
• RND20は、加算／減算の結果の飽和とビット 20での結果の丸めを示します。
• SIGNBITS は、数値内の符号ビットの数－ 1を示します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-31

算術論理演算ユニット (ALU)• EXPADJ は、数値内の符号ビットの数－ 1とスレッショールド値のうち、小さい方を示します。
• * は、命令の結果に応じて、フラグがセット／クリアされることを示します。
• ** は、フラグがクリアされることを示します。
• – は、影響がないことを示します。
• d は、AQ に被除数の MSB と除数のMSB との排他的論理和が含まれていることを示します。
表 2-9.

ALU 命令のまとめ
ASTAT のステータス・フラグ

命令

2-32

AZ

AN

AC0
AC0_COPY
AC1

AV0
AV0S

AV1
AV1S

V
V_COPYVS

AQ

Preg = Preg + Preg ;

–

–

–

–

–

–

–

Preg += Preg ;

–

–

–

–

–

–

–

Preg –= Preg ;

–

–

–

–

–

–

–

Dreg = Dreg + Dreg ;

*

*

*

–

–

*

–

Dreg = Dreg – Dreg (S) ;

*

*

*

–

–

*

–

Dreg = Dreg + Dreg,
Dreg = Dreg – Dreg ;

*

*

*

–

–

*

–

Dreg_lo_hi = Dreg_lo_hi +Dreg_lo_hi ;

*

*

*

–

–

*

–

Dreg_lo_hi = Dreg_lo_hi –Dreg_lo_hi (S) ;

*

*

*

–

–

*

–

Dreg = Dreg +|+ Dreg ;

*

*

*

–

–

*

–

Dreg = Dreg +|– Dreg ;

*

*

*

–

–

*

–

Dreg = Dreg –|+ Dreg ;

*

*

*

–

–

*

–

Dreg = Dreg –|– Dreg ;

*

*

*

–

–

*

–

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット

表 2-9.

ALU 命令のまとめ（続き）

命令

ASTAT のステータス・フラグ
AZ

AN

AC0
AC0_COPY
AC1

AV0
AV0S

AV1
AV1S

V
V_COPYVS

AQ

Dreg = Dreg +|+Dreg,
Dreg = Dreg –|– Dreg ;

*

*

–

–

–

*

–

Dreg = Dreg +|– Dreg,
Dreg = Dreg –|+ Dreg ;

*

*

–

–

–

*

–

Dreg = An + An,
Dreg = An – An ;

*

*

*

–

–

*

–

Dreg += imm7 ;

*

*

*

–

–

*

–

Preg += imm7 ;

–

–

–

–

–

–

–

Dreg = ( A0 += A1 ) ;

*

*

*

*

–

*

–

Dreg_lo_hi = ( A0 += A1) ;

*

*

*

*

–

*

–

A0 += A1 ;

*

*

*

*

–

–

–

A0 –= A1 ;

*

*

*

*

–

–

–

DIVS ( Dreg, Dreg ) ;

*

*

*

*

–

–

d

DIVQ ( Dreg, Dreg ) ;

*

*

*

*

–

–

d

Dreg = MAX ( Dreg, Dreg )
(V) ;

*

*

–

–

–

**/–

–

Dreg = MIN ( Dreg, Dreg )
(V) ;

*

*

–

–

–

**/–

–

Dreg = ABS Dreg (V) ;

*

**

–

–

–

*

–

An = ABS An ;

*

**

–

*

*

*

–

An = ABS An,
An = ABS An ;

*

**

–

*

*

*

–

An = –An ;

*

*

*

*

*

*

–

An = –An, An =– An ;

*

*

*

*

*

*

–

An = An (S) ;

*

*

–

*

*

–

–

An = An (S), An = An (S) ;

*

*

–

*

*

–

–

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-33

算術論理演算ユニット (ALU)

表 2-9.

ALU 命令のまとめ（続き）
ASTAT のステータス・フラグ

命令

2-34

AZ

AN

AC0
AC0_COPY
AC1

AV0
AV0S

AV1
AV1S

V
V_COPYVS

AQ

Dreg_lo_hi = Dreg (RND) ;

*

*

–

–

–

*

–

Dreg_lo_hi = Dreg + Dreg
(RND12) ;

*

*

–

–

–

*

–

Dreg_lo_hi = Dreg – Dreg
(RND12) ;

*

*

–

–

–

*

–

Dreg_lo_hi = Dreg + Dreg
(RND20) ;

*

*

–

–

–

*

–

Dreg_lo_hi = Dreg – Dreg
(RND20) ;

*

*

–

–

–

*

–

Dreg_lo = SIGNBITS Dreg ;

–

–

–

–

–

–

–

Dreg_lo = SIGNBITS
Dreg_lo_hi ;

–

–

–

–

–

–

–

Dreg_lo = SIGNBITS An ;

–

–

–

–

–

–

–

Dreg_lo = EXPADJ ( Dreg,
Dreg_lo ) (V) ;

–

–

–

–

–

–

–

Dreg_lo = EXPADJ(Dreg_lo_hi, Dreg_lo);

–

–

–

–

–

–

–

Dreg = Dreg & Dreg ;

*

*

**

–

–

**/–

–

Dreg = ~ Dreg ;

*

*

**

–

–

**/–

–

Dreg = Dreg | Dreg ;

*

*

**

–

–

**/–

–

Dreg = Dreg ^ Dreg ;

*

*

**

–

–

**/–

–

Dreg =– Dreg ;

*

*

*

–

–

*

–

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット■ ALU のデータ・フローの詳細
図 2-9 は、2-2 ページの図 2-1 に示す演算ユニットとデータ・レジスタ・
ファイルの詳細を示します。
メモリへ
ALU

32b
R0

R0.H

R0.L

R1

R1.H

R1.L

R2

R2.H

R2.L

R3

R3.H

R3.L

R4

R4.H

R4.L

R5

R5.H

R5.L

R6

R6.H

R6.L

R7

R7.H

R7.L

32b

32b

オペランド選択オペランド選択

MAC1

MAC0

A1

A0
シフタ

32b
32b

メモリから

図 2-9.

レジスタ・ファイルと ALU

ここでは ALU0について説明します。ALU1 は、ALU0 のサブセットであり、非常に似ています。
各 ALUでは、32 ビットとデュアル16 ビットの演算だけでなく、乗算結果の累算のための 40 ビット加算も実行します。各ALUには、16ビット・オ
ペランドのペアまたは 1 つの32 ビット・オペランドと見なせる32 ビット

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-35

算術論理演算ユニット (ALU)

入力ポートが 2つあります。シングル16ビット演算の場合には、4つの16ビット・オペランドのどれでも ALU への入力に供給される他の16ビット・オペランドと一緒に使用できます。
デュアル 16ビット演算は図 2-10 に示すように、上位ハーフと下位ハーフがペアにされ、加算と減算の 4つの可能な組合わせを提供します。
(A) H + H, L + L(B) H + H, L – L(C) H – H, L + L(D) H – H, L – L

A

B

31

31

Rm

Rm

Rp

Rp

Rn

C

Rn

D

31

31

Rm

Rm

Rp

Rp

Rn

Rn

図 2-10. デュアル 16 ビット ALU 演算

2-36

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット

X デュアル 16 ビットのクロス・オプション

デュアル 16 ビット演算の場合、結果がクロスされることもあります。
「結果をクロスさせる」ことで、計算結果用の結果レジスタでの位置が変化します。通常、上位の計算からの結果は結果レジスタの上位ハーフに置かれ、下位の計算からの結果は結果レジスタの下位ハーフに置かれます。クロス・オプションを使用すれば、上位の結果はデスティネーション・レジ
スタの下位ハーフに置かれ、下位の結果はデスティネーション・レジスタの上位ハーフに置かれます（図 2-11を参照）。これが特に役立つのは、複雑な数値演算や高速フーリエ変換 (FFT) の一部を扱うときです。クロス・オプションは ALU0にのみ適用されます。
31
Rm

Rp

Rn

図 2-11. デュアル 16 ビット ALU 演算用のクロス・オプション
X ALU のステータス信号

各 ALUは、ゼロ (AZ) ステータス、ネガティブ (AN) ステータス、キャリー(ACn) ステータス、スティッキー・オーバーフロー (AVnS) ステータス、イ
ミディエイト・オーバーフロー (AVn) ステータス、商 (AQ) ステータスという、6つのステータス信号を生成します。すべての算術ステータス信号は、

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-37

算術論理演算ユニット (ALU)

サイクルの最後で算術ステータス・レジスタ (ASTAT) にラッチされます。
ALU 命令がステータス・フラグに与える影響については、2-32 ページの
表 2-9 を参照してください。
命令によっては、入力はデータ・レジスタ・ファイル、ポインタ・レジス
タ・ファイル、または演算結果レジスタから得られます。32ビット・オペ
ランドでの演算は、ALU での高精度演算に直接対応します。

■ ALU の除算対応機能
ALU は、2つの特殊な除算プリミティブによる除算に対応します。これらの命令 (DIVS、DIVQ) を使用すると、プログラムは非回復型で条件付き（エラー・チェック）の加算／減算／除算アルゴリズムを実装できます。
除算は、符号付きまたは符号なしとすることができます。しかし、被除数と除数は、両方とも同じ型であることが必要です。除算の使い方の詳細とプログラミング例については『ADSP-BF53x Blackfin Processor Instruction
Set Reference』を参照してください。

■ 特殊な SIMD ビデオ ALU 演算
4 つの 8ビット・ビデオ ALU によって、プロセッサはビデオ情報を効率よく処理できます。各ビデオ ALU命令では 1 ～4 ペアの8 ビット入力を受け取り、1～ 4の 8ビットの結果を返すことができます。入力は、データ・レジスタ・ファイルから 2 つの32 ビット・ワードでビデオ ALU に供給されます。可能な動作には、以下のものが含まれます。
• クワッド 8ビットの加算または減算• クワッド 8ビットの平均• クワッド 8ビットのパックまたはアンパック• クワッド 8ビットの減算－絶対－累算

2-38

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット• バイト整列
これらの命令の動作の詳細については『ADSP-BF53x Blackfin Processor
Instruction Set Reference』を参照してください。

積和演算器（乗算器）
2 つの乗算器（MAC0と MAC1）は、固定小数点の乗算と積和演算を実行します。積和演算は、累積加算または累積減算で使用できます。
乗算器の固定小数点命令は、16 ビットの固定小数点データに用い、32ビッ
トの積を 40 ビットのアキュムレータに対して加算または減算できます。
入力は、小数または整数、符号なしまたは 2の補数として扱われます。乗算器命令には、以下の命令が含まれます。
• 乗算• 加算による積和演算、丸めオプション• 減算による積和演算、丸めオプション• 上記のデュアル・バージョン■ 乗算器の動作
各乗算器には 2つの32ビット入力があり、そこから 2つの 16ビット・オペ
ランドが得られます。シングル積和演算命令の場合、これらのオペランド
はデータ・レジスタ・ファイル内の任意のデータ・レジスタとすることができます。各乗算器は、そのアキュムレータ・レジスタ A1 または A0 内に結果を累算できます。累算結果は、32 ビットまたは40 ビットに飽和させられます。乗算結果は丸めのオプション付きで、16/32 ビットのデスティ
ネーション・レジスタに直接書き込むこともできます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-39積和演算器（乗算器）

両方の入力が整数フォーマットであるか小数フォーマットであるかは、各乗算器命令によって決まります。結果のフォーマットは、入力のフォー
マットと一致します。MAC0 では、両方の入力が符号付きまたは符号なしとして扱われます。MAC1 には、混合モード・オプションがあります。
両方の入力が符号付き小数である場合には、冗長な符号ビットを除去する
ために乗算器は結果を自動的に1ビット左へシフトします。
符号なし小数、
整数、および混合モードでは、符号ビット訂正のためのシフトは行われません。乗算器命令のオプションでは、入力のデータ・フォーマットを指定します。詳細については、2-43 ページの「乗算器命令のオプション」を参照してください。
X 積和演算器レジスタへの乗算結果の格納

2-35 ページの図 2-9 に示すように、各乗算器には専用のアキュムレータ A0
または A1 があります。各アキュムレータ・レジスタは、A0.L/A1.L （ビット 15:0）、A0.H/A1.H（ビット 31:16）、A0.X/A1.X（ビット39:32）という、
3 つのセクションに分けられます。
乗算器がそのアキュムレータ結果レジスタに書込みを行うと、32ビットの結果は結合されたアキュムレータ・レジスタの下位ビットに保管され、MSB はレジスタの上位 8ビット (A0.X/A1.X) に符号拡張されます。
乗算器出力は、A0 レジスタや A1 レジスタでだけではなく、データ・レジ
スタ・ファイル内のさまざまな 16/32 ビット・データ・レジスタにも保管できます。
X 乗算結果の丸めと飽和積和演算では、アキュムレータ・データを飽和させることができ、オプションとしてレジスタやレジスタ・ハーフへの抽出のために丸めることもできます。乗算結果をレジスタやレジスタ・ハーフにだけ保管する場合、飽和と丸めも同様に機能します。丸めと飽和の演算は、次のように機能し
ます。

2-40

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット• 丸めは小数結果にだけ適用されます。ただし、IH オプションの場合には、整数結果への上位ハーフ抽出と丸めに適用されます。
IH オプションの場合、丸めた結果を取得するには、アキュムレータ
（MAC の場合）または乗算結果（乗算の場合）に0x8000 を加算してから 32 ビットに飽和させます。詳細については、2-19 ページの「乗算器の丸め結果」を参照してください。

• オーバーフローやアンダーフローが発生した場合には、飽和演算によって指定の結果レジスタには正または負の最大値が設定されます。詳細については、次の節を参照してください。

■ オーバーフロー時の乗算結果の飽和
ASTAT 内の以下のビットは、乗算器のオーバーフロー・ステータスを示します。
• ビット 16 (AV0) とビット18 (AV1) は、それぞれ A0 アキュムレータとA1 アキュムレータのオーバーフロー条件（結果が32 ビットをオー
バーフローしたかどうか）を記録します。
ビットがクリアされている (＝0) 場合には、オーバーフローやアン
ダーフローは発生していません。ビットがセットされている (＝ 1)場合には、オーバーフローまたはアンダーフローが発生しました。
AV0S ビットと AV1S ビットはスティッキー・ビットです。
• 累算結果をレジスタに抽出する際にオーバーフローが発生した場
合には、ビット 24 (V) とビット 25 (VS) がセットされます。

■ 乗算器命令のまとめ
表 2-10 は乗算器命令を示します。アセンブリ言語構文と乗算器命令がス
テ ー タ ス・フ ラ グ に 与 え る 影 響 の 詳 細 に つ い て は、
『ADSP-BF53x
Blackfin Processor Instruction Set Reference』を参照してください。
ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-41積和演算器（乗算器）

表 2-10 では、以下の記号の意味に注意してください。
• Dreg は、データ・レジスタ・ファイルの任意のレジスタを示します。
• Dreg_lo_hiは、データ・レジスタ・ファイルの任意のレジスタ内の任意の 16ビット・レジスタ・ハーフを示します。
• Dreg_lo は、データ・レジスタ・ファイルの任意のレジスタの下位
16ビットを示します。
• Dreg_hi は、データ・レジスタ・ファイルの任意のレジスタの上位
16ビットを示します。
• An は、MACアキュムレータ・レジスタ A0 または A1 を示します。
• * は、命令の結果に応じて、フラグがセットまたはクリアされることを示します。
• – は、影響がないことを示します。
乗算器命令のオプションを 2-43 ページで説明します。
表 2-10.

乗算器命令のまとめ
ASTAT のステータス・フラグ

命令

2-42

AV0
AV0S

AV1
AV1S

V
V_COPYVS

Dreg_lo = Dreg_lo_hi * Dreg_lo_hi ;

–

–

*

Dreg_hi = Dreg_lo_hi * Dreg_lo_hi ;

–

–

*

Dreg = Dreg_lo_hi * Dreg_lo_hi ;

–

–

*

An = Dreg_lo_hi * Dreg_lo_hi ;

*

*

–

An += Dreg_lo_hi * Dreg_lo_hi ;

*

*

–

An –= Dreg_lo_hi * Dreg_lo_hi ;

*

*

–

Dreg_lo = ( A0 = Dreg_lo_hi * Dreg_lo_hi ) ;

*

*

*

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット

表 2-10.

乗算器命令のまとめ（続き）
ASTAT のステータス・フラグ

命令

AV0
AV0S

AV1
AV1S

V
V_COPYVS

Dreg_lo = ( A0 += Dreg_lo_hi * Dreg_lo_hi ) ;

*

*

*

Dreg_lo = ( A0 –= Dreg_lo_hi * Dreg_lo_hi ) ;

*

*

*

Dreg_hi = ( A1 = Dreg_lo_hi * Dreg_lo_hi ) ;

*

*

*

Dreg_hi = ( A1 += Dreg_lo_hi * Dreg_lo_hi ) ;

*

*

*

Dreg_hi = ( A1 –= Dreg_lo_hi * Dreg_lo_hi ) ;

*

*

*

Dreg = ( An = Dreg_lo_hi * Dreg_lo_hi ) ;

*

*

*

Dreg = ( An += Dreg_lo_hi * Dreg_lo_hi ) ;

*

*

*

Dreg = ( An –= Dreg_lo_hi * Dreg_lo_hi ) ;

*

*

*

Dreg *= Dreg ;

–

–

–

X 乗算器命令のオプション

以下に、乗算器命令のオプションの概要を示します。すべての命令ですべてのオプションを使用できるわけではありません。各命令でのこれらのオプ
ションの使い方については、『ADSP-BF53x Blackfin Processor Instruction
Set Reference』を参照してください。
無指定時

オプションなし。入力データは符号付き小数です。

(IS)

入力データ・オペランドは符号付き整数です。シフト補正は行われません。

(FU)

入力データ・オペランドは符号なし小数です。シフト補正は行われません。

(IU)

入力データ・オペランドは符号なし整数です。シフト補正は行われません。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-43積和演算器（乗算器）(T)

入力データ・オペランドは符号付き小数です。デスティネー
ション・ハーフ・レジスタにコピーするとき、アキュムレー
タの内容の下位16ビットを切り捨てます。

(TFU)

入力データ・オペランドは符号なし小数です。デスティネー
ション・ハーフ・レジスタにコピーするとき、アキュムレー
タの内容の下位16ビットを切り捨てます。

(ISS2)

レジスタへの積和演算の場合：
入力データ・オペランドは符号付き整数です。デスティネー
ション・レジスタにコピーするとき、アキュムレータの内容
はスケーリングされます（1 桁の左シフトによりx2 乗算）。
スケーリングによって 32 ビットを超える符号付き値が得られた場合、数値はその正または負の最大値に飽和します。
ハーフ・レジスタへの積和演算の場合：
下位 16 ビットをデスティネーション・ハーフ・レジスタにコピーするとき、アキュムレータの内容はスケーリングされます。スケーリングによって16ビットを超える符号付き値が得られた場合、数値はその正または負の最大値に飽和します。

(IH)

このオプションは、上位ハーフ・ワード抽出による整数乗算を示します。アキュムレータは32 ビットで飽和し、アキュ
ムレータのビット[31:16] が丸められてから、デスティネー
ション・ハーフ・レジスタにコピーされます。

(W32)

入力データ・オペランドは、32 ビットでアキュムレータ内に拡張ビットを持たない符号付き小数です。必要に応じて、積の左シフト補正が実行されます。このオプションは、32ビット・アキュムレータ用に記述された旧来のGSM 音声ボ
コーダ・アルゴリズムに使用されます。このオプションの場
合にのみ、特殊なケースとして 0x8000 x 0x8000 = 0x7FFFが適用されます。

2-44

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット(M)

演算には混合乗算モードが使用されます。MAC1 バージョンの命令にだけ有効です。左シフト補正なしで、符号付き小数に符号なし小数オペランドを乗算します。オペランド1は符号付き、オペランド2は符号なしです。MAC0 は、デフォル
トで符号付き小数の純粋乗算を実行するか、指定された別のフォーマットで実行します。つまり、MAC0は指定された符
号付き／符号付きの乗算または符号なし／符号なしの乗算を実行します。(M)オプションは単独で使用したり、他の 1つのフォーマット・オプションと組み合わせて使用できます。

■ 乗算器のデータ・フローの詳細
図 2-12は、レジスタ・ファイルと ALU、さらに積和演算器を示します。
メモリへ
ALU

R0

R0.H

R0.L

R1

R1.H

R1.L

R2

R2.H

R2.L

R3

R3.H

R3.L

R4

R4.H

R4.L

R5

R5.H

R5.L

R6

R6.H

R6.L

R7

R7.H

R7.L

32b

32b

32b

オペランド選択オペランド選択

MAC1

MAC0

A1

A0

シフタ

32b
32b

メモリから

図 2-12. レジスタ・ファイルと ALU

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-45積和演算器（乗算器）

各乗算器は 2 つの16 ビット入力を持ち、16 ビット乗算を実行して、結果を 40ビット・アキュムレータに格納したり、16/32 ビットのレジスタに抽出します。MAC 入力では 2 つの 32 ビット・ワードを使用でき、選択可能
な 4つの 16 ビット・オペランドが提供されます。
オペランドの 1つは、1つの32ビット・ワードの下位ハーフまたは上位ハーフから選択する必要があります。もう一方のオペランドは、もう一方の 32
ビット・ワードの下位ハーフまたは上位ハーフから選択する必要があります。したがって、各 MAC には 4 つの可能な入力オペランドの組合わせが供給されます。2つの32ビット・ワードは同じレジスタ情報を含むことができ、オプションによって、同じレジスタの上位ハーフと下位ハーフを 2乗および乗算することができます。図 2-13 は、これらの可能な組合わせを示します。

A

B
31

31

Rm

Rm

Rp

Rp

MAC0

MAC0

39

39

A0

A0

C

D
31

31

Rm

Rm

Rp

Rp
MAC0

MAC0

39

39

A0

A0

図 2-13. MAC 演算の 4 つの可能な組合わせ2-46

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット

32 ビットの積は40 ビットの加算器／減算器に渡されます。そこでは、新
しい積をアキュムレータ結果レジスタの内容に対して加算／減算したり、または新しい積をデータ・レジスタ・ファイルの結果レジスタに直接渡したりできます。結果に関しては、A0 レジスタと A1 レジスタは 40 ビット幅です。これらの各レジスタは、さらに小さな 32/8ビット・レジスタ (A0.W、
A1.W、A0.X,、A1.X) から構成されます。
命令の例：
A0 = R3.L * R4.H ;この命令は、MAC0 積和演算器は乗算を実行して、その結果をアキュムレー
タ・レジスタに格納します。
A1 += R3.H * R4.H ;この命令は、MAC1 積和演算器は乗算を実行して、その結果を A1 アキュム
レータ内の以前の結果に累算します。

■ 累算なしの乗算
乗算器は、累算機能なしでも動作できます。累算が使用されない場合には、結果はデータ・レジスタ・ファイルのレジスタやアキュムレータ・レ
ジスタに直接格納できます。デスティネーション・レジスタは、16ビット
または 32ビットとすることができます。16ビットのデスティネーション・
レジスタが下位ハーフである場合には、MAC0が使用されます。これが上位ハーフである場合には、MAC1 が使用されます。32 ビットのデスティ
ネーション・レジスタの場合には、MAC0または MAC1 が使用されます。
デスティネーション・レジスタが 16 ビットである場合には、乗算器から抽出されるワードは入力のデータ型に依存します。
• 乗算で小数オペランドまたは IH オプションを使用する場合には、結果の上位ハーフが抽出され、16 ビットのデスティネーション・レ
ジスタに格納されます（図 2-14を参照）。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-47積和演算器（乗算器）• 乗算で整数オペランドを使用する場合には、結果の下位ハーフが抽出され、16 ビットのデスティネーション・レジスタに格納されます。これらの抽出では、選択されたデータ型に対して結果として得られる 16ビット・ワードで最も有益な情報を提供します（図 2-15
を参照）。

A0.X

A0.H

A0.L

0000 0000

XXXX XXXX XXXX XXXXXXXX XXXX XXXX XXXX

デスティネーション・
XXXX XXXX XXXX XXXX
レジスタ

XXXX XXXX XXXX XXXX

A0

A1.X

A1.H

A1.L

0000 0000

XXXX XXXX XXXX XXXXXXXX XXXX XXXX XXXX

デスティネーション・
XXXX XXXX XXXX XXXX
レジスタ

XXXX XXXX XXXX XXXX

A1

図 2-14. 小数オペランドの乗算

2-48

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット

たとえば、次の命令では、小数の符号なしオペランドを使用します。
R0.L = R1.L * R2.L (FU) ;この命令では、MAC0 を使用して、乗算結果の上位 16 ビットを丸めと飽和付きで R0 の下位ハーフに保管します。次の命令では、符号なし整数オペ
ランドを使用します。
R0.H = R2.H * R3.H (IU) ;この命令では、MAC1 を使用して、乗算結果の下位 16 ビットを必要な飽和付きで R0 の上位ハーフに保管します。
R0 = R1.L * R2.L ;前の演算では、MAC0 を使用して、オペランド・タイプとは無関係に乗算
結果の 32ビットを飽和付きで R0 に保管します。

A0.X

A0.H

A0.L

0000 0000

XXXX XXXX XXXX XXXXXXXX XXXX XXXX XXXX

デスティネーション・
XXXX XXXX XXXX XXXX
レジスタ

XXXX XXXX XXXX XXXX

A0

A1.X

A1.H

A1.L

0000 0000

XXXX XXXX XXXX XXXXXXXX XXXX XXXX XXXX

デスティネーション・
XXXX XXXX XXXX XXXX
レジスタ

XXXX XXXX XXXX XXXX

A1

図 2-15. 整数オペランドの乗算

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-49積和演算器（乗算器）■ 特殊な 32 ビット整数 MAC 命令
このプロセッサは、32ビットのマルチサイクル MAC 命令に対応します。
Dreg *= Dreg

この単一命令では、2 つの32 ビット整数オペランドを乗算して 32 ビットの整数結果を提供し、入力オペランドの 1つを破壊します。
この命令の実行には複数のサイクルが必要です。また、命令の正確な動作につ い ては、製 品 デー タ シー ト と『ADSP-BF53x Blackfin Processor
Instruction Set Reference』を参照してください。このマクロ機能は割込み可能であり、アキュムレータ・レジスタ A0 および A1 のデータを変更しません。

■ デュアル MAC 演算
このプロセッサには 2 つの16 ビットMAC があります。両方の MAC を同じ演算で使用して、MAC スループットを 2 倍にすることができます。各
MAC ユニットには2 本の同じ32 ビット入力レジスタが提供されるため、それぞれに 16 ビット入力オペランドの 4 つの組合わせが提供されます。
デュアル MAC 演算は、ベクトル演算と呼ばれることがあります。その理由は、プログラムがサンプルのベクトルを 4つの入力オペランドに格納して、ベクトル計算を実行できるからです。
デュアル積和演算命令の例は、次のとおりです。
A1 += R1.H * R2.L, A0 += R1.L * R2.H ;この命令は、2 つの積和演算を表します。
R1 の上位ハーフに R2 の下位ハーフが乗• 1 つ目の演算 (MAC1) では、ぜられ、A1 アキュムレータの内容に加算されます。
R1 の下位ハーフに R2 の上位ハーフが乗• 2 番目の演算 (MAC0) では、ぜられ、A0 の内容に加算されます。

2-50

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット

MAC 演算の結果は、複数の方法でレジスタに書込みできます。つまり、
16 ビット・ハーフのペアとして、32 ビット・レジスタのペアとして、または独立した 16 ビット・ハーフ・レジスタまたは 32ビット・レジスタとして書込みできます。
例：
R3.H = (A1 += R1.H * R2.L), R3.L = (A0 += R1.L * R2.L) ;この命令では、40 ビット・アキュムレータが16 ビット・ハーフ・レジス
タにパックされます。MAC1 からの結果は、デスティネーション・レジス
タの上位ハーフに転送する必要があります。MAC0 からの結果は、同じデスティネーション・レジスタの下位ハーフに転送する必要があります。
アキュムレータから抽出して 16 ビット・デスティネーション・レジスタに保管する適正なビットは、オペランド・タイプによって決まります。
2-47 ページの「累算なしの乗算」を参照してください。
R3 = (A1 += R1.H * R2.L), R2 = (A0 += R1.L * R2.L) ;この命令では、40 ビット・アキュムレータは 2 本の32 ビット・レジスタにパックされます。これらのレジスタは、レジスタ・ペア (R[1:0]、R[3:2]、
R[5:4]、R[7:6]) であることが必要です。
R3.H = (A1 += R1.H * R2.L), A0 += R1.L * R2.L ;この命令は、いずれか一方のアキュムレータだけがレジスタに転送される例です。デスティネーション・レジスタとしては、16ビットまたは32ビットのレジスタを指定できます。

バレル・シフタ（シフタ）
シフタは、16/32/40 ビットの入力にビット単位のシフト機能を提供して、
16/32/40 ビットの出力をもたらします。これらの機能には、算術シフト、
論理シフト、ローテート、さまざまなビット・テスト、セット、パック、

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-51

バレル・シフタ（シフタ）アンパック、および指数検出の機能が含まれます。これらのシフト機能を組み合わせれば、完全な浮動小数点形式などの数値フォーマット制御を実装できます。

■ シフタ演算
シフタ命令 (>>>、>>、<<、ASHIFT、LSHIFT、ROT) は、ベースとなる演算条
件に応じてさまざまな方法で使用できます。ASHIFT 命令と >>> 命令は、算術シフトを表します。LSHIFT 命令、<< 命令、>> 命令は、論理シフトを表します。
算術シフト演算と論理シフト演算は、さらにサブセクションに分けられます。多くの DSP アルゴリズムで見られるような単独または対になった16
ビット数値に作用するように意図された命令では、命令 ASHIFT と LSHIFTを使用できます。一般に、これらは 3オペランド命令です。
コンパイラでよく見られるような 32ビットのレジスタ値に作用し、2つのオペランドを使用するように意図された命令では、>>> 命令と >> 命令を使用できます。
算術シフト命令、論理シフト命令、ローテート命令では、シフト引数をレ
ジスタから取得したり、命令内の即値から直接に取得したりできます。シフタ関連の命令の詳細については、2-56 ページの「シフタ命令のまとめ」
を参照してください。
X 2 オペランド・シフト

2 オペランド・シフト命令は入力レジスタをシフトして、その結果を同じレジスタに保管します。

2-52

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット

即値シフト
即値シフト命令は、入力ビット・パターンを指定のビット数だけ右（ダウン）または左（アップ）にシフトします。即値シフト命令は、命令自身に含まれるデータ値を使用して、シフト動作の量と方向を制御します。
次の例は、入力値がダウンシフトされる場合を示します。
R0 contains 0000 B6A3 ;R0 >>= 0x04 ;結果は次のようになります。
R0 contains 0000 0B6A ;次の例は、入力値がアップシフトされる場合を示します。
R0 contains 0000 B6A3 ;R0 <<= 0x04 ;結果は次のようになります。
R0 contains 000B 6A30 ;レジスタ・シフト
レジスタベースのシフトは、レジスタを使用してシフト値を保持します。
シフト値を得るために 32 ビット・レジスタの全体が使用されます。シフトの大きさが 32以上であるときは、結果は0または－ 1となります。
次の例は、入力値がアップシフトされる場合を示します。
R0 contains 0000 B6A3 ;R2 contains 0000 0004 ;R0 <<= R2 ;ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-53

バレル・シフタ（シフタ）

結果は次のようになります。
R0 contains 000B 6A30 ;X 3 オペランド・シフト

3 オペランド・シフタ命令は入力レジスタをシフトし、その結果をデスティ
ネーション・レジスタに保管します。
即値シフト
即値シフト命令は、命令自身に含まれるデータ値を使用して、シフト動作の量と方向を制御します。
次の例は、入力値がダウンシフトされる場合を示します。
R0 contains 0000 B6A3 ;
R1 = R0 >> 0x04 ;結果は次のようになります。
R1 contains 0000 0B6A ;次の例は、入力値がアップシフトされる場合を示します。
R0.L contains B6A3 ;R1.H = R0.L << 0x04 ;結果は次のようになります。
R1.H contains 6A30 ;2-54

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット

レジスタ・シフト
レジスタベースのシフトは、レジスタを使用してシフト値を保持します。
ASHIFT、LSHIFT、または ROT のシフト値を保持するためにレジスタが使用されるとき、シフト値は常にレジスタ (Rn.L) の下位ハーフにあります。
Rn.L の最下位 6ビットはマスクされ、シフト値として使用されます。
次の例は、入力値がアップシフトされる場合を示します。
R0 contains 0000 B6A3 ;R2.L contains 0004 ;R1 = R0 ASHIFT by R2.L ;結果は次のようになります。
R1 contains 000B 6A30 ;次の例は、入力値がローテートされる場合を示します。条件コード (CC)ビットは 0 に設定されていると想定します。CC の詳細については、4-13
ページの「条件コード・フラグ」を参照してください。
R0 contains ABCD EF12 ;R2.L contains 0004 ;R1 = R0 ROT by R2.L ;結果は次のようになります。
R1 contains BCDE F125 ;なお、CC ビットは、結果のビット 3 に組み込まれています。
X ビットのテスト、セット、クリア、トグル

シフタは、データ・レジスタの特定ビットをテスト、セット、クリア、ト
グルする場合にも使われます。すべての命令には、ソース・レジスタとビット・フィールド値という 2つの引数があります。テスト命令では、ソース・レジスタは変更されません。テスト命令の結果は CC ビットにあります。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-55

バレル・シフタ（シフタ）

次の例は、さまざまな演算を示します。
ビット CLR ( R0, 6 ) ;ビット SET ( R2, 9 ) ;ビット TGL ( R3, 2 ) ;CC = ビット TST ( R3, 0 ) ;X フィールド抽出とフィールド置換

シフタが使用される場合、ソース・フィールドは、32 ビットのデスティ
ネーション・フィールドのどこにでも保管できます。ソース・フィールドの長さは 1 ～ 16 ビットとすることができます。さらに、32 ビットのソー
ス・フィールド内のどこからでも 1～ 16ビット・フィールドを抽出できます。
これらの機能のために2つのレジスタ引数が使用されます。
その一方には、32ビットのデスティネーションまたは32ビットのソースが保持されます。
もう一方には、抽出／置換値、その長さ、ソース内でのその位置が保持されます。

■ シフタ命令のまとめ
表 2-11 は、シフタ命令を示します。アセンブリ言語構文とシフタ命令がス テ ー タ ス・フ ラ グ に 与 え る 影 響 の 詳 細 に つ い て は『ADSP-BF53x
Blackfin Processor Instruction Set Reference』を参照してください。
表 2-11 では、以下の記号の意味に注意してください。
• Dreg は、データ・レジスタ・ファイルの任意のレジスタを示します。
• Dreg_lo は、データ・レジスタ・ファイルの任意のレジスタの下位
16ビットを示します。
• Dreg_hi は、データ・レジスタ・ファイルの任意のレジスタの上位
16ビットを示します。

2-56

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット• * は、命令の結果に応じて、フラグがセットまたはクリアされることを示します。
• * 0は、アキュムレータ AV0 に結果を送信して A0 をセットまたはク
リアする命令のバージョンを示します。
• * 1は、アキュムレータ A1 に結果を送信して AV1 をセットまたはク
リアする命令のバージョンを示します。
• ** は、フラグがクリアされることを示します。
• *** は、CC にはシフトインされた最新の値が含まれていることを示します。
• – は、影響がないことを示します。
表 2-11.

シフタ命令のまとめ

命令

ASTAT のステータス・フラグ
AZ

AN

AC0
AC0_COPY
AC1

AV0
AV0S

AV1
AV1S

CC

V
V_COPYVSBITCLR ( Dreg, uimm5 ) ;

*

*

**

–

–

–

**/–

BITSET ( Dreg, uimm5 ) ;

**

*

**

–

–

–

**/–

BITTGL ( Dreg, uimm5 ) ;

*

*

**

–

–

–

**/–

CC =
BITTST ( Dreg, uimm5 ) ;

–

–

–

–

–

*

–

CC =
!BITTST ( Dreg, uimm5 ) ;

–

–

–

–

–

*

–

Dreg =DEPOSIT ( Dreg, Dreg ) ;

*

*

**

–

–

–

**/–

Dreg =EXTRACT ( Dreg, Dreg ) ;

*

*

**

–

–

–

**/–

BITMUX ( Dreg, Dreg, A0 ) ;

–

–

–

–

–

–

–

Dreg_lo = ONES Dreg ;

–

–

–

–

–

–

–

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-57

バレル・シフタ（シフタ）

表 2-11.

シフタ命令のまとめ（続き）
ASTAT のステータス・フラグ

命令

2-58

AZ

AN

AC0
AC0_COPY
AC1

AV0
AV0S

AV1
AV1S

CC

V
V_COPYVS

Dreg = PACK (Dreg_lo_hi,
Dreg_lo_hi);

–

–

–

–

–

–

–

Dreg >>>= uimm5 ;

*

*

–

–

–

–

**/–

Dreg >>= uimm5 ;

*

*

–

–

–

–

**/–

Dreg <<= uimm5 ;

*

*

–

–

–

–

**/–

Dreg = Dreg >>> uimm5 ;

*

*

–

–

–

–

**/–

Dreg = Dreg >> uimm5 ;

*

*

–

–

–

–

**/–

Dreg = Dreg << uimm5 ;

*

*

–

–

–

–

*

Dreg = Dreg >>> uimm4 (V) ;

*

*

–

–

–

–

**/–

Dreg = Dreg >> uimm4 (V) ;

*

*

–

–

–

–

**/–

Dreg = Dreg << uimm4 (V) ;

*

*

–

–

–

–

*

An = An >>> uimm5 ;

*

*

–

** 0/–** 1/–––

An = An >> uimm5 ;

*

*

–

** 0/–** 1/–––

An = An << uimm5 ;

*

*

–

*0

*1

–

–

Dreg_lo_hi = Dreg_lo_hi >>>uimm4 ;

*

*

–

–

–

–

**/–

Dreg_lo_hi = Dreg_lo_hi >>uimm4 ;

*

*

–

–

–

–

**/–

Dreg_lo_hi = Dreg_lo_hi <<uimm4 ;

*

*

–

–

–

–

*

Dreg >>>= Dreg ;

*

*

–

–

–

–

**/–

Dreg >>= Dreg ;

*

*

–

–

–

–

**/–

Dreg <<= Dreg ;

*

*

–

–

–

–

**/–

Dreg = ASHIFT Dreg BY
Dreg_lo ;

*

*

–

–

–

–

*

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

演算ユニット

表 2-11.

シフタ命令のまとめ（続き）

命令

ASTAT のステータス・フラグ
AZ

AN

AC0
AC0_COPY
AC1

AV0
AV0S

AV1
AV1S

CC

V
V_COPYVS

Dreg = LSHIFT Dreg BY
Dreg_lo ;

*

*

–

–

–

–

**/–

Dreg = ROT Dreg BY imm6 ;

–

–

–

–

–

***

–

Dreg = ASHIFT Dreg BY
Dreg_lo (V) ;

*

*

–

–

–

–

*

Dreg = LSHIFT Dreg BY
Dreg_lo (V) ;

*

*

–

–

–

–

**/–

Dreg_lo_hi = ASHIFT
Dreg_lo_hi BY Dreg_lo ;

*

*

–

–

–

–

*

Dreg_lo_hi = LSHIFT
Dreg_lo_hi BY Dreg_lo ;

*

*

–

–

–

–

**/–

An = An ASHIFT BY Dreg _lo ;

*

*

–

*0

*1

–

–

An = An ROT BY imm6 ;

–

–

–

–

–

***

–

Preg = Preg >> 1 ;

–

–

–

–

–

–

–

Preg = Preg >> 2 ;

–

–

–

–

–

–

–

Preg = Preg << 1 ;

–

–

–

–

–

–

–

Preg = Preg << 2 ;

–

–

–

–

–

–

–

Dreg = ( Dreg + Dreg ) << 1 ;

*

*

*

–

–

–

*

Dreg = ( Dreg + Dreg ) << 2 ;

*

*

*

–

–

–

*

Preg = ( Preg + Preg ) << 1 ;

–

–

–

–

–

–

–

Preg = ( Preg + Preg ) << 2 ;

–

–

–

–

–

–

–

Preg = Preg + ( Preg << 1 ) ;

–

–

–

–

–

–

–

Preg = Preg + ( Preg << 2 ) ;

–

–

–

–

–

–

–

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

2-59

バレル・シフタ（シフタ）

2-60

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

第3章

動作モードと状態

このプロセッサは、次の 3 つのプロセッサ・モードを提供します。
• ユーザ・モード• スーパーバイザ・モード• エミュレーション・モード
エミュレーション・モードとスーパーバイザ・モードは、コア・リソースに無制限にアクセスできます。ユーザ・モードは特定のシステム・リソー
スへのアクセスが制限されるため、ソフトウェア環境を保護することができます。
ユーザ・モードはアプリケーション・プログラム用の領域と見なされます。通常、スーパーバイザ・モードとエミュレーション・モードは、オペレーティング・システムのカーネル・コード用になっています。
プロセッサ・モードはイベント・コントローラによって決定されます。割
込み、マスク不能割込み（NMI）、または例外を処理するとき、プロセッ
サはスーパーバイザ・モードです。エミュレーション・イベントを処理するとき、プロセッサはエミュレーション・モードです。イベントを処理しないときには、プロセッサはユーザ・モードです。
現在のプロセッサ・モードを識別するには、表 3-1 に示すように、IPEND
メモリマップド・レジスタ（MMR）を調べます。

L

プロセッサがユーザ・モードにある間、MMR の読出しはできません。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

3-1

表 3-1.

現在のプロセッサ・モードの識別

イベント

モード

IPEND

割込み

スーパーバイザ≥ 0x10
ただし、IPEND[0]、IPEND[1]、IPEND[2]、IPEND[3]= 0

例外

スーパーバイザ≥ 0x08IPEND[0] = 0、IPEND[1] = 0、IPEND[2] = 0、
IPEND[3] = 1、かつ IPEND[15:4] がオール 0 またはオール 1 の場合、コアは例外イベントを処理して
います。
NMI

スーパーバイザ≥ 0x04IPEND[0] = 0、IPEND[1] = 0、IPEND[2] = 1、かつ IPEND[15:2] がオール 0 またはオール 1 の場合、コアは NMI イベントを処理しています。
リセット

スーパーバイザ= 0x02
リセット状態が終了すると、IPEND には 0x02 が設定され、リセット・ベクトルはスーパーバイザ・モードで動作します。

エミュレーション

エミュレータ= 0x01IPEND[0] = 1 の場合、残りのビット IPEND[15:1]の状態とは無関係に、プロセッサはエミュレーショ
ン・モードです。
なし

ユーザ= 0x00

さらに、このプロセッサは、次の 2つの処理用ではない状態も提供しています。
• アイドル状態• リセット状態
図 3-1は、プロセッサのモードと状態に加えて、それらの間の遷移条件も示しています。

3-2

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

動作モードと状態

IDLE 命令ユーザ
アプリケーション・
レベル・コード
ウェイクアップ
割込み
または例外

IDLE
命令

アイドル

スーパーバイザ

エミュレー
ション・
イベント

RTE

エミュレー
ション・
イベント

割込み

システム・コード、
イベント・ハンドラ

RTI,
RTX, RTN
RTE

RST
アクティブ
RST 非アクティブ
リセット
エミュレーション・イベント (1)エミュレーション（1）通常、リセットを終了するとスーパーバイザ・モードになります。しかし、エミュレーション・ハードウェ
アがリセットを開始した可能性もあります。その場合には、リセットを終了するとエミュレーション・モードになります。

図 3-1.

プロセッサのモードと状態

ユーザ・モード
このプロセッサは、リセット状態やアイドル状態でないとき、および割込
み、NMI、例外、またはエミュレーション・イベントを処理していないときにユーザ・モードにあります。ユーザ・モードは、システム・レジスタへの明示的アクセスを必要としないアプリケーション・レベル・コードの処理に使用されます。制限されたシステム・レジスタにアクセスを試みると例外イベントが発生します。表 3-2 は、ユーザ・モードでアクセスできるレジスタを示します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

3-3ユーザ・モード

表 3-2.

ユーザ・モードでアクセス可能なレジスタ

プロセッサ・レジスタ

レジスタ名

データ・レジスタ

R[7:0], A[1:0]

ポインタ・レジスタP[5:0], SP, FP, I[3:0], M[3:0], L[3:0], B[3:0]

シーケンサとステータス・レジスタ

RETS, LC[1:0], LT[1:0], LB[1:0], ASTAT, CYCLES,CYCLES2■ 保護されたリソースと命令システム・リソースはプロセッサ・レジスタのサブセット、すべての MMR、保護された命令のサブセットから構成されます。これらのシステム MMRとコア MMRは、アドレス0xFFC0 0000 で始まる位置に置かれています。
このメモリ領域はユーザ・モードのアクセスから保護されます。ユーザ・モードで MMR空間にアクセスを試みると例外が発生します。
保護された命令の一覧を表 3-3 に示します。ユーザ・モードから保護された命令の発行を試みると例外イベントが発生します。
表 3-3.

3-4

保護された命令

命令

説明

RTI

割込みからの復帰

RTX

例外からの復帰

RTN

NMI からの復帰

CLI

割込みをディスエーブル

STI

割込みをイネーブル

RAISE

割込み／リセットの強制

RTE

エミュレーションからの復帰
エミュレーション・モード以外で実行された場合にのみ、例外を発生

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

動作モードと状態■ 保護されたメモリ
追加のメモリ位置はユーザ・モードのアクセスから保護できます。キャッ
シュ可能性保護索引バッファ（CPLB）のエントリを作成してイネーブルにできます。詳細については、6-51 ページの「メモリ・マネジメント・ユニット」を参照してください。

■ ユーザ・モードへの入り方
リセット状態を抜け出すと、プロセッサはリセット・イベントを処理しているためにスーパーバイザ・モードになります。リセット状態からユー
ザ・モードに入るには、2つのステップを実行する必要があります。まず、
RETI レジスタに復帰アドレスをロードする必要があります。次に、RTI を発行する必要があります。次のコード例は、リセット時にユーザ・モードに入る方法を示します。
X リセット時にユーザ・モードに入るためのコード例

リスト 3-1 は、リセットからユーザ・モードに入るためのコードを示します。
リスト 3-1. リセットからユーザ・モードに入る
P1.L = START ;/* ユーザ・コードの先頭をポイント */P1.H = START ;RETI = P1 ;RTI ;START :/* リセット・イベントから復帰 *//* ここにユーザ・コードを記述 */ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

3-5ユーザ・モード

X ユーザ・モードへの復帰命令

表 3-4 は、さまざまなプロセッサ・イベント・サービス・ルーチンからのユーザ・モードの呼出しに使用できる、復帰命令のまとめを示します。これらの命令がサービス・ルーチンで使用されるとき、最初に復帰アドレスの値を適切なイベント RETx レジスタに格納する必要があります。割込み
ルーチンの場合、サービス・ルーチンが割込み可能であれば復帰アドレス
はスタックに格納されます。この場合、アドレスを得るには、スタックから RETI に値をポップします。RETI がロードされたら、RTI 命令を発行できます。

L

なお、スタック・ポップはオプションです。RETI レジスタがプッ
シュ／ポップされない場合には、復帰アドレスがスタックに保存されないため、割込みサービス・ルーチンは割込み不可能になります。

このプロセッサは、以下のいずれかのイベントが発生するまで、ユーザ・モードにとどまります。
• 割込み、NMI、または例外イベントによるスーパーバイザ・モードの呼出し。
• エミュレーション・イベントによるエミュレーション・モードの呼出し。
• リセット・イベントによるリセット状態の呼出し。
表 3-4.

3-6

ユーザ・モードへの復帰命令

現在のプロセス動作

使用する復帰命令

実行再開のアドレスを持つレジスタ

割込みサービス・ルーチン

RTI

RETI

例外サービス・ルーチン

RTX

RETX

マ ス ク 不 能 割 込 み サ ー ビ ス・ RTN
ルーチン

RETN

エミュレーション・サービス・ RTE
ルーチン

RETE

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

動作モードと状態

スーパーバイザ・モード
このプロセッサは、スーパーバイザ・モードですべての割込み、NMI、例
外イベントを処理します。
CPLB が設定されてイネーブルにされていない限り、スーパーバイザ・
モードではエミュレーション・リソースを含めて、すべてのプロセッサ・
システム・リソースに無制限にアクセスできます。詳細については、6-51
ページの「メモリ・マネジメント・ユニット」を参照してください。レジスタ・エイリアス USP はユーザ・スタック・ポインタを参照するものであり、スーパーバイザ・モードでのみ使用できます。このレジスタ・エイ
リアスが必要な理由は、スーパーバイザ・モードでの SP はユーザ・スタッ
ク・ポインタではなく、カーネル・スタック・ポインタを参照するからです。
リセット状態からはスーパーバイザ・モードで通常の処理が始まります。
RESET 信号をアサート解除すると、プロセッサはリセット状態からスーパーバイザ・モードに切り替わり、エミュレーション・イベントや復帰命
令によってモードが変更されるまでスーパーバイザ・モードにとどまります。復帰命令が発行される前に、RETI レジスタに有効な復帰アドレスをロードする必要があります。

■ 非 OS 環境
非 OS環境の場合には、アプリケーション・コードはすべてのコア・リソー
スとシステム・リソースにアクセスできるようにスーパーバイザ・モードにとどまる必要があります。RESET がアサート解除されると、プロセッサはリセット・イベントを処理することにより動作を開始します。エミュ
レーションはこの動作を乗っとることができる唯一のイベントです。したがって、優先順位の低いイベントは処理できません。
プロセッサをスーパーバイザ・モードに維持しながら、しかも優先順位の低いイベントの処理を可能にする方法の一つは、優先順位の最も低い割込み（IVG15）を設定および強制する方法です。イベントと割込みの詳細にADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

3-7

スーパーバイザ・モード

ついては、4-19 ページの「イベントとシーケンス」を参照してください。
RAISE 15 命令を使用して優先順位の低い割込みを強制した後、RETI には
IVG15 が発行されるまで実行できるユーザ・コードを指す復帰アドレスをロードできます。RETI がロードされた後、RTI 命令を発行してリセット・
イベントから復帰できます。
IVG15 用の割込みハンドラは、アプリケーション・コードの開始アドレスにジャンプするように設定できます。追加の RTI は必要ありません。結果
として、IPEND[15] がセットされたままであるため、プロセッサはスーパー
バイザ・モードにとどまります。この時点では、プロセッサは優先順位の最も低い割込みを処理しています。これによって、優先順位の高い割込みの処理が保証されます。
X リセットを抜け出るスーパーバイザ・モードのコード例

リセット状態から抜け出したときにスーパーバイザ・モードにとどまるには、リスト 3-2 に示すコードを使用します。
リスト 3-2. リセットを抜け出してスーパーバイザ・モードにとどまる
P0.L = LO(EVT15) ;ント/* イベント・ベクトル・テーブル（EVT）の IVG15 をポイ*/

P0.H = HI(EVT15) ;P1.L = START ;/* ユーザ・コードの先頭をポイント */P1.H = START ;[P0] = P1 ;/* EVT の IVG15 にスタート・コードのアドレスを置く */P0.L = LO(IMASK) ;R0 = [P0] ;3-8

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

動作モードと状態

R1.L = EVT_IVG15 & 0xFFFF ;R0 = R0 | R1 ;[P0] = R0 ;/* 割込みマスク・レジスタのIVG15ビットをセット（イネーブル） */RAISE 15 ;/* IVG15 割込みの呼出し */P0.L = WAIT_HERE ;P0.H = WAIT_HERE ;RETI = P0 ;RTI ;/* RETI に復帰アドレスをロード *//* リセット・イベントからの復帰 */WAIT_HERE :/* IVG15 割込みが処理されるまで、ここで待機 */JUMP WAIT_HERE ;START:/* IVG15 ベクトルをここに記述 */[--SP] = RETI ;*//* 割込みをイネーブルにし、復帰アドレスをスタックに保存

エミュレーション・モード
エミュレーション・モードがイネーブルにされており、次のいずれかの条件が満たされる場合には、プロセッサはエミュレーション・モードに入ります。
• 外部エミュレーション・イベントが発生した• EMUEXCPT 命令が発行された

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

3-9

アイドル状態

このプロセッサは、エミュレーション・サービス・ルーチンが RTE 命令を実行するまでエミュレーション・モードにとどまります。RTE 命令の実行時にペンディング中の割込みがない場合には、プロセッサはユーザ・モー
ドに切り替わります。そうでない場合は、プロセッサはスーパーバイザ・
モードに切り替わって割込みを処理します。

L

エミュレーション・モードは、優先順位の最も高いモードです。そして、プロセッサは、すべてのシステム・リソースに無制限にアクセスできます。

アイドル状態アイドル状態では、すべてのプロセッサ動作が停止します。この状態は、
通常は動作が小康状態にあるときの消費電力を節約するためにユーザの判断で使用します。アイドル状態では処理は行われません。アイドル状態を呼び出すには、IDLE を含む一連の命令を使用します。IDLE 命令は、アイ
ドル状態が要求されたことをプロセッサ・ハードウェアに知らせます。
SSYNC 命令は、コアと外部システムにおける投機的な状態と過渡的な状態をすべてパージします。
プロセッサがアイドル状態を抜け出すのは、SPORT やリアルタイム・ク
ロック（RTC）などのペリフェラルや外部デバイスが処理を必要とする割込みを生成したときです。
リスト 3-3 では、コア割込みがディスエーブルにされ、IDLE 命令が実行されます。ペンディング中のプロセスがすべて完了すると、コアはそのク
ロックをディスエーブルにします。割込みがディスエーブルにされるた
め、アイドル状態を終了させるには WAKEUP 信号をアサートするしか方法がありません。詳細については、4-27 ページの「SIC_IWR レジスタ」を参照してください。
（必須ではありませんが、割込みは WAKEUP 信号と一緒にイネーブルにすることもできます。）

3-10

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

動作モードと状態

WAKEUP 信号がアサートされると、プロセッサがウェイクアップし、STI 命

令が割込みを再びイネーブルにします。

■ アイドル状態に遷移するためのコード例
アイドル状態に遷移するには、リスト 3-3 に示すコードを使用します。
リスト 3-3. アイドル状態への遷移
CLI R0 ;IDLE ;STI R0 ;/* 割込みをディスエーブル *//* パイプラインを空にし、コアを IDLE 状態にする *//* ウェイクアップ後に割込みを再びイネーブルにする */リセット状態
リセット状態では、プロセッサ・ロジックを初期化します。リセット状態
では、アプリケーション・プログラムとオペレーティング・システムは実行されません。また、クロックも停止します。
このプロセッサは、外付けロジックが外部 RESET 信号をアサートする限り、リセット状態にとどまります。アサートが解除されると、プロセッサはリ
セット・シーケンスを完了し、スーパーバイザ・モードに切り替わって、
リセット・イベント・ベクトル内のコードを実行します。
スーパーバイザ・モードまたはエミュレーション・モードのソフトウェア
は、外部 RESET 信号を必要とすることなく、リセット状態を呼び出すことができます。そのためには、RAISE 命令のリセット版を発行します。
ユーザ・モードのアプリケーション・プログラムでは、オペレーティン
グ・システム・カーネルによって提供されるシステム・コールを使用しな
い限り、リセット状態を呼び出すことができません。表 3-5 に、リセット
時のプロセッサの状態をまとめます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

3-11

リセット状態

表 3-5.

リセット時のプロセッサ状態

項目

リセット状態の説明

コア
動作モード

リセット・イベントでのスーパーバイザ・モード、クロックは停止

丸めモード

バイアスのない丸め

サイクル・カウンタ

ディスエーブル、ゼロ

DAG レジスタ（I、L、B、M）

ランダム値（初期化時にクリアが必要）

データ・レジスタとアドレス・ ランダム値（初期化時にクリアが必要）
レジスタ
IPEND、IMASK、ILAT

クリア、
割込みは IPEND ビット 4 でグローバルにディスエーブル

CPLB

ディスエーブルL1 命令メモリ

SRAM（キャッシュ・ディスエーブル）

L1 データ・メモリ

SRAM（キャッシュ・ディスエーブル）

キャッシュ有効性ビット

無効

システム

3-12

ブート方式

リセット時の BMODE ピンの値によって決定

MSEL クロック周波数

リセット値＝ 10

PLL バイパス・モード

ディスエーブル

VCO ／コア・クロック比

リセット値＝ 1

VCO ／システム・クロック比

リセット値＝ 5

ペリフェラル・クロック

ディスエーブルADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

動作モードと状態システム・リセットとパワーアップ
表 3-6 では、5種類のリセットについて説明します。なお、システム・ソ
フトウェア以外のすべてのリセットでコアをリセットします。
表 3-6.

リセット

リセット

ソース

ハードウェア・リセット

RESET ピンはハードウェア・ ダイナミック・パワー・マネジメント・コント
ローラ（DPMC）を含めて、コアとペリフェラ
リセットを発生させます。
ルの両方をリセットします。
SYSCR のノー・ブート・オン・ソフトウェア・リ
セット・ビットをリセットします。詳細について
は、3-15 ページの「SYSCR レジスタ」を参照してください。

システム・ソフト
ウェア・リセット

アドレス 0xFFC0 0100 にあるシステム MMR SWRST の
ビット [2:0] に b#111 を書き込むと、システム・ソフトウェ
ア・リセットが発生します。

結果

RTC（リアルタイム・クロック）ブロックと大部分の DPMC を除いて、ペリフェラルだけをリセットします。DPMC は、SYSCR のノー・ブー
ト・オン・ソフトウェア・リセット・ビットだけをリセットします。コアをリセットしません。
ブート・シーケンスを開始しません。

ウォッチドッグ・ ウォッチドッグ・タイマを適 RTC ブロックと大部分の DPMC を除いて、コア
タイマ・リセット 切 に プ ロ グ ラ ム す る と、 とペリフェラルの両方をリセットします。
ウォッチドッグ・タイマ・リ リセット・ソースがウォッチドッグ・タイマでセットが発生します。
あったかどうかは、ソフトウェア・リセット・レジスタ（SWRST）の読出しによって判定できます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

3-13

システム・リセットとパワーアップ

表 3-6.

リセット（続き）

リセット

ソース

結果

コ ア・ダ ブ ル・ コアがダブル・フォルト状態 RTC ブロックと大部分の DPMC を除いて、コアに入っている場合、システム とペリフェラルの両方をリセットします。
フォルト・
割込みコントローラ割込みマ リセット・ソースがコア・ダブル・フォルトでリセット
スク・レジスタ（SIC_IMASK） あったかどうかは、SWRST レジスタの読出しにのコア・ダブル・フォルト・ よって判定できます。
リセット・マスク・ビットをマ ス ク 解 除 す る こ と で、リセットを発生できます。
コアオンリー・
ソフトウェア・
リセット

このリセットを発生させるに コアだけをリセットします。
は、RAISE1 命令を実行する ペリフェラルは、このリセットを認識しません。
か、または JTAG ポートを通じてエミュレーション・ソフ
トウェアに よってコア のデバッグ・コントロール・レジ
スタ（DBGCTL）のソフトウェ
ア・リセット（SYSRST）ビッ
トを設定します。DBGCTL レ
ジスタは、メモリ・マップから見えません。

■ ハードウェア・リセット
このプロセッサのチップ・リセットは、非同期のリセット・イベントです。ハードウェア・リセットを実行するには、RESET 入力ピンをアサート解除する必要があります。詳細については、『ADSP-BF531/ADSP-BF532/ADSP-BF533 Embedded Processor Data
Sheet』を参照してください。
ハードウェアによるリセットでは、コアとペリフェラルの両方を含むシス
テム全体のリセットが行われます。RESET ピンがアサート解除された後、プロセッサはすべての非同期ペリフェラルがリセットを認識して完了したことを保証します。リセットの後、プロセッサは BMODE 状態によって設定されたブート・モード・シーケンスに移行します。

3-14

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

動作モードと状態

BMODE[1:0] ピンは専用のモード制御ピンです。これらのピンは、他の機能を共有しておらず、VDD または VSS に直接接続することによって永続的に接続できます。ハードウェア・リセットやシステム・ソフトウェア・リセットの後で採用されるブート・モードは、これらのピンと SYSCR の対応
するビットによって設定されます。詳細については、4-41 ページの「リセット」と 4-44 ページの表 4-11「例外の原因となるイベント」を参照してください。

■ SYSCR レジスタ
BMODE[1:0] ピンから検出された値は、RESET ピンのアサート解除時にシス

テム・リセット設定レジスタ（SYSCR）にラッチされます。これらの値は、ハードウェア・リセット・シーケンスの後で、ソフトウェアによるアクセスと変更が可能になります。ソフトウェアでは、ノー・ブート・オン・ソ
フトウェア・リセット・ビットだけを変更できます。
SYSCR からは、さまざまな設定パラメータが適切なデスティネーションに配布されます（図 3-2 を参照）。
システム・リセット設定レジスタ（SYSCR）
X - 状態はハードウェア・リセット時にモード・ピンから初期化

0xFFC0 0104

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
X

ノー・ブート・オン・ソフトウェア・リセット
0 - BMODE を使用してブート・ソースを判定
1 - オンチップ L1 メモリの先頭（BMODE[1:0]＝ b#00 の場合は ASYNC バンク 0 の先頭）から実行を開始

図 3-2.

1 0
X 0

リセット＝ピン値に依存

BMODE[1:0]（ブート・モード）- RO
00 -ブート ROM をバイパス、16 ビット
外部メモリから実行
01 -ブート ROM を使用して 8/16 ビッ
トのフラッシュからロード
10 -マスター（ホスト）による SPI ス
レーブ・モード・ブート
11 -ブート ROM を使用して SPI シリア
ル EEPROM（8/16/24 ビットのアド
レス範囲）からのブート・コードの設定とロードシステム・リセット設定レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

3-15

システム・リセットとパワーアップ■ ソフトウェア・リセットとウォッチドッグ・タイマ
ソフトウェア・リセットを開始するには、3つの方法があります。
• ウォッチドッグ・タイマによる方法（適切に設定された場合）• ソフトウェア・リセット・レジスタのシステム・ソフトウェア・リ
セット・フィールドの設定による方法（3-18 ページの図 3-3 を参照）
• RAISE 1 命令による方法
ウォッチドッグ・タイマは、コアとペリフェラルの両方をリセットします。システム・ソフトウェア・リセットでは、コアのリセットやブート・シーケンスの実行なしにペリフェラルのリセットが行われます。

L

システム・ソフトウェア・リセットは、レベル 1メモリ（キャッシュまたは SRAM）からの実行中に行う必要があります。

L1 命令メモリがキャッシュとして設定されている場合には、システム・ソ
フトウェア・リセット・シーケンスがキャッシュに読み込まれていることを確認してください。
ウォッチドッグまたはシステム・ソフトウェア・リセットが開始された
後、プロセッサはすべての非同期ペリフェラルがリセットを認識および完了していることを確認します。
ウォッチドッグ・タイマによって生成されたリセットの場合、プロセッサはブート・モード・シーケンスに移行します。ブート・モードは、BMODEとノー・ブート・オン・ソフトウェア・リセット制御ビットの状態によって設定されます。
SYSCR のノー・ブート・オン・ソフトウェア・リセット・ビットがクリアされている場合には、リセット・シーケンスは BMODE[1:0] 制御ビットによって決定されます。

3-16

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

動作モードと状態■ SWRST レジスタ
ソフトウェア・リセットを実行するには、ソフトウェア・リセット・レジ
スタ（SWRST）のシステム・ソフトウェア・リセット・フィールドを設定します。ビット 15 は、SWRST が最後に読み出されて以降、ソフトウェア・
リセットが発生したかどうかを示します。ビット 14 とビット13は、ソフ
トウェア・ウォッチドッグ・タイマまたはコア・ダブル・フォルトがソフ
トウェア・リセットを生成したかどうかを示します。ビット [15:13] は読出し専用であり、レジスタの読出し時にクリアされます。ビット [3:0] は読出し／書込みです。
BMODE ピンが b#00 に設定されず、SYSCR のノー・ブート・オン・ソフトウェ
ア・リセット・ビットがセットされた場合、プロセッサはオンチップ L1
メモリの先頭から実行を開始します。この設定では、コアはオンチップ L1
メモリの先頭から命令の取出しを始めます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

3-17

システム・リセットとパワーアップ

BMODE ピンが b#00 に設定されている場合、コアはアドレス 0x2000 0000

（ASYNCバンク 0の先頭）から命令の取出しを始めます。
ソフトウェア・リセット・レジスタ（SWRST）
15 14 13 12 11 10 9
0 0 0 0 0 0 0

0xFFC0 0100

8
0

7
0

6
0

5
0

4
0

3
0

ソフトウェア・リセット・
ステータス - RO
0 - 最後の SWRST 読出し以降、SW リセットなし
1 - 最後の SWRST 読出し以降、SW リセットが発生
ソフトウェア・ウォッチドッグ・
タイマソース - RO
0 - ウォッチドッグによる SW
リセットの生成なし
1 - ウォッチドッグによる SW
リセットの生成あり

2
0

1
0

0
0

リセット＝ 0x0000

システム・ソフトウェア・
リセット
0x0～0x6 - SWリセットなし
0x7 - SW リセットをトリガ
コア・ダブル・フォルト・
リセット・イネーブル
0 -コア・ダブル・フォルトによるリセットなし
1 -コア・ダブル・フォルト
時にリセットを生成

コア・ダブル・フォルト・リセット - RO
0 - ダブル・フォルトによる SW リセットの生成なし
1 - ダブル・フォルトによる SW リセットの生成あり

図 3-3.

ソフトウェア・リセット・レジスタ■ コアオンリー・ソフトウェア・リセット
コアオンリー・ソフトウェア・リセットを実行するには、RAISE 1 命令を実行するか、JTAGポートを通じてエミュレーション・ソフトウェアによりコアのデバッグ・コントロール・レジスタ（DBGCTL）のソフトウェア・
リセット（SYSRST）ビットをセットします。（DBGCTL はメモリ・マップから見えません）。
コアオンリー・ソフトウェア・リセットは、コアの状態にだけ影響を与えます。なお、リセット期間中のシステム動作によっては、システム・リ
ソースが未確定または不安定な状態になることもあります。

3-18

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

動作モードと状態■ コアとシステムのリセットシステムとコアのリセットを行うには、リスト 3-4 に示すコード・シーケ
ンスを使用します。
リスト 3-4. コアとシステムのリセット/* ソフト・リセットを発行 */P0.L = LO(SWRST) ;P0.H = HI(SWRST) ;R0.L = 0x0007 ;W[P0] = R0 ;SSYNC ;/* ソフト・リセットをクリア */P0.L = LO(SWRST) ;P0.H = HI(SWRST) ;R0.L = 0x0000 ;W[P0] = R0 ;SSYNC ;/* コア・リセット - 強制的なリブート */RAISE 1 ;ブート方式
内部ブート ROMに含まれる小さなブート・カーネルは、バイパスしたり、外部メモリ・デバイスからのユーザ・コードのロードに使用できます。詳細については、4-41 ページの表 4-10「リセット・ベクトル・アドレス」
を参照してください。ブート・カーネルはリセット時に BMODE[1:0] ピンの状態を読み出して、ダウンロード・ソースを識別します（4-25 ページ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

3-19ブート方式の表 4-7 を参照）。ブート・モード0では、プロセッサはアドレス 0x2000
0000（ASYNC バンク0）にある16ビット幅の外部メモリから実行するよ
うに設定されています。
ユーザ・コードを外部メモリ・デバイスやホスト・デバイス（SPI スレー
ブ・モード・ブーティングのような場合）からロードするには、いくつかのブート方式があります。これらのモードでは、ブート・カーネルは
BMODE[1:0] ピンの設定値に基づいて、選択されたペリフェラルを設定します。
メモリ・デバイスから読み出されたユーザ・コードは、ブート・モードごとに L1 メモリの開始位置に置かれます。これ以外のセクションは、ロー
ダー・ファイルのヘッダでの指定により、内部メモリに読み出されます。
ブート・カーネルは、L1命令メモリ空間の先頭へのジャンプによってブート・プロセスを終了します。その後、プロセッサはこのアドレスから実行を開始します。

L

シリアル・ペリフェラル・インターフェース（SPI）からブートする場合には、汎用フラグ・ピン 2が SPI チップ・セレクトとして使用されます。適正な動作のためには、このラインが接続される必要があります。

コアオンリー・ソフトウェア・リセットでは、コアからブート ROMに制御が移されます。コアオンリー・ソフトウェア・リセットでは、コアだけがリセットされます。このリセットは、残りのシステムに影響を与えません。ブート ROM カーネルは、ダウンロードの実行を回避するために、SYSCRのノー・ブート・オン・ソフトウェア・リセット条件を検出します。ソフ
トウェア・リセットでこのビットがセットされた場合には、プロセッサは
通常のブート・シーケンスをスキップして L1メモリの先頭にジャンプし、実行を開始します。
ブート・カーネルでは、フラッシュ・ブート・モード（BMODE ＝ 01）に対して以下の条件を想定します。
• 非同期メモリ・バンク（AMB）0イネーブル
3-20

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

動作モードと状態• AMB 0 イネーブル用の16ビット・パッキング• バンク 0 RDY はアクティブ・ハイに設定• バンク 0のホールド・タイム（読出し／書込みのアサート解除～ AOEのアサート解除）＝ 3サイクル• バンク 0の読出し／書込みアクセス・タイム＝15サイクル
SPI マスタ・モード・ブート（BMODE ＝ 11）の場合、ブート・カーネルでは、SPI ボーレートは500kHzであると想定します。8/16/24 ビット・アド
レス指定の SPI シリアルEEPROM に対応します。SPIは、PF2 出力ピンを使用して 1 つのSPI EEPROM デバイスを選択します。SPI コントローラ
は、8/16/24ビット・アドレス指定の有効なEEPROM が検出されるまで、アドレス 0x00、0x0000、0x000000 から連続した読出しコマンドを発行します。その後、L1 命令メモリの先頭へのデータ・クロック入力を開始します。

L

SPI マスタ・モードのブーティング（BMODE ＝ 11）には、MISO ピン
をハイレベルにプルする必要があります。

ブート・モードごとに、最初に外部メモリ・デバイスから 10バイトのヘッ
ダが読み出されます。ヘッダでは、転送されるバイト数とメモリ・デス
ティネーション・アドレスを指定します。すべてのブロックがロードされたら、L1 命令 SRAM の先頭からプログラム実行が始まります。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

3-21

ブート方式

SPI スレーブ・モード・ブート（BMODE ＝ 10）の場合には、図 3-4 に示す
ハードウェア設定が想定されます。

ࡑࠬ࠲

ࠬ࡟࡯ࡉ

ࡎࠬ࠻

$'63%)
$'63%)
$'63%)
6&/.
63,66
0,62
026,
3)[

図 3-4.

SPI スレーブ・ブート・モード

ユーザ定義プログラマブル・フラグ PFx は、Blackfin プロセッサでの出力、およびホスト・デバイスでの入力です。このフラグによって、プロセッサはブート・プロセスの特定セクション中にホスト・デバイスによるデータ送信を阻止できます。このフラグがアサート解除されると、ホストはプロセッサへのバイト送信を続行できます。

3-22

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

第4章

プログラム・シーケンサ

このプロセッサでは、プログラム・シーケンサがプログラム・フローを制御することにより、プロセッサの他の部分で実行される次の命令のアドレ
スが絶えず提供されていきます。チップ内でのプログラム・フローは、ほとんどの場合にリニアであり、プロセッサはプログラム命令を連続的に実行しています。
プログラムが図 4-1に示すように非シーケンシャルなプログラム構造を使用する場合、命令の流れが変化します。非シーケンシャルな構造では、プロセッサは次の順次アドレスにない命令を実行するように指示されます。
このような構造には、以下の要素が含まれます。
• ループ：1つの命令シーケンスが、ゼロ・オーバーヘッドで複数回実行されます。
• サブルーチン： プロセッサは別のメモリ部分にある命令を実行するために、シーケンシャル・フローを一時的に中断します。
• ジャンプ：プログラム・フローは、別のメモリ部分に永久的に移されます。
• 割込みと例外：ランタイム・イベントまたは命令が、サブルーチンの実行をトリガします。
• アイドル：命令によってプロセッサは動作を停止し、割込みが発生するまでその現状を保持します。その後、プロセッサは割込みを処理して、通常の実行を継続します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-1࡝࠾ࠕ࡮ࡈࡠ࡯

࡞࡯ࡊ

ࠫࡖࡦࡊ

ࠕ࠼࡟ࠬ㧦N

๮઎

࡞࡯ࡊ

ࠫࡖࡦࡊ

N+1

๮઎

๮઎

๮઎

N+2

๮઎

๮઎

N+3

๮઎

๮઎

N+4

๮઎

๮઎

๮઎

N+5

๮઎

๮઎

๮઎

ࠨࡉ࡞࡯࠴ࡦ

ഀㄟߺ

ࠕࠗ࠼࡞

ࠦ࡯࡞

IRQ

๮઎
N࿁

๮઎

๮઎

ࠕࠗ࠼࡞

๮઎

๮઎

๮઎

๮઎

๮઎
ࡌࠢ࠻࡞

๮઎

IRQ߹ߚߪ
࠙ࠚࠗࠢࠕ࠶ࡊࠍᓙᯏ

๮઎

…

…

๮઎

๮઎

๮઎

๮઎

๮઎

๮઎

๮઎

๮઎

๮઎

RTS

RTI

๮઎

図 4-1.

プログラム・フローの種類

シーケンサは、次に実行する命令のアドレスを選択することで、これらのプログラム構造の実行を管理します。
フェッチされたアドレスは命令パイプラインに入り、プログラム・カウン
タ（PC）で終わります。パイプラインには、現在のフェッチ、デコード、および実行されている命令の 32 ビットアドレスが含まれています。PC は、

4-2

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ

復帰アドレスを格納する RETn レジスタとペアになります。シーケンサによって生成されるすべてのアドレスは、32ビットのメモリ命令アドレスです。
イベントを管理するため、シーケンサのイベント・コントローラは割込みとイベントの処理を扱い、割込みがマスクされているかどうかを判定し、適切なイベント・ベクトル・アドレスを生成します。
データ・アドレス・ジェネレータ（DAG）は、データ・アドレスの提供に加えて、シーケンサの間接分岐用の命令アドレスも提供できます。
シーケンサは、条件付き命令とループ終了条件を評価します。ループ・レ
ジスタは、ネストされたループを提供します。メモリマップド・レジスタ（MMR）には、割込みサービス・ルーチンの実装に使用される情報が格納されます。

シーケンサ関連のレジスタ
表 4-1 は、シーケンサに関連するプロセッサ内のレジスタを示します。PC
レジスタと SEQSTAT レジスタを除いて、シーケンサ関連のすべてのレジス
タは直接に読出し／書込みが可能です。スタックとの間でレジスタを手動でプッシュ／ポップするには、次の命令を明示的に使用します。
•[––SP] = Rn（プッシュ用）•

Rn = [SP++]（ポップ用）

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-3

シーケンサ関連のレジスタ

表 4-1.

4-4

シーケンサ関連のレジスタ

レジスタ名

説明

SEQSTAT

シーケンサ・ステータス・レジスタ

RETX
RETN
RETI
RETE
RETS

復帰アドレス・レジスタ：4-19 ページの「イベントとシーケンス」を参照
例外復帰
NMI 復帰割込み復帰
エミュレーション復帰
サブルーチン復帰

LC0, LC1
LT0, LT1
LB0, LB1

ゼロオーバーヘッド・ループ・レジスタ：
ループ・カウンタ
ループ先頭
ループ末尾

FP, SP

フレーム・ポインタとスタック・ポインタ：5-5 ページの「フレーム・ポインタとスタック・ポインタ」を参照

SYSCFG

システム設定レジスタ

CYCLES, CYCLES2

サイクル・カウンタ：19-28 ページの「CYCLES およびCYCLES2 レジスタ」を参照

PC

プログラム・カウンタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ■ SEQSTAT レジスタ
シーケンサ・ステータス・レジスタ（SEQSTAT）には、シーケンサの現在の状態についての情報だけでなく、前回のイベントからの診断情報も含まれています。SEQSTAT は読出し専用レジスタであり、スーパーバイザ・モードでのみアクセスできます。
シーケンサ・ステータス・レジスタ（SEQSTAT）
RO
31 30 29 28 27 26
0 0 0 0 0 025 24 23 22 21 20 19 18 17 16
0 0 0 0 0 0 0 0 0 0

リセット＝ 0x0000 0000
HWERRCAUSE[4:2]以下のビット [1:0] の説
明を参照。

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

HWERRCAUSE[1:0]
コアによって生成された前回のハードウェア・エラーの原因を保持します。ハードウェ
ア・エラーは、割込み番号 5（IVHW）を ト リ ガ し ま す。
表 4-13 を参照。
SFTRESET
0 - 前回のコア・リセットは、ソフトウェアによってトリガされたリセットではありませんでした
1 - 前回のコア・リセットは、ハードウェア・パワー
アップ・リセットではなく、ソフトウェアによってトリガされたリセットでした

図 4-2.

2
0

1
0

0
0

EXCAUSE[5:0]
最後に実行された例外の
情 報 を 保 持 し ま す。
表 4-11 を参照。

シーケンサ・ステータス・レジスタ■ ゼロオーバーヘッド・ループ・レジスタ（LC、LT、LB）
ループを実装するには、ソフトウェア命令の代わりに、2組のゼロオーバー
ヘッド・ループ・レジスタでハードウェア・カウンタを使用してループ条件を評価します。評価後に、処理は新しいターゲット・アドレスに分岐します。2組のレジスタには、ループ・カウンタ（LC）、ループ・トップ（LT）、
ループ・ボトム（LB）の各レジスタが組み込まれています。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-5

シーケンサ関連のレジスタ

表 4-2 には、32ビットのループ・レジスタ・セットを示します。
表 4-2.

ループ・レジスタ

レジスタ

説明

機能

LC0, LC1

ループ・カウンタ

ループの残りの繰返し回数を維持しますLT0, LT1

ループ・トップ

ループ内の最初の命令のアドレスを保持します

LB0, LB1

ループ・ボトム

ループの最後の命令のアドレスを保持します■ SYSCFG レジスタ
システム設定レジスタ（SYSCFG）は、プロセッサの設定を制御します。このレジスタは、スーパーバイザ・モードからのみアクセスできます。
システム設定レジスタ（SYSCFG）
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

15 14 13 12 11 10 9
0 0 0 0 0 0 0

80

CCEN（サイクル・カウンタ・イネーブル）
0 - 64 ビットの自走サイクル・カウンタを
ディスエーブル
1 - 64 ビットの自走サイクル・カウンタを
イネーブル

図 4-3.

4-6

7
0

6
0

5
1

4
1

3
0

2
0

1
0

リセット＝ 0x0000 0030

00

SSSTEP（スーパーバイザ・
シングル・ステップ）
セットされると、各命令の実行後にスーパーバイザ例外が発生します。これはユーザ・モードに適用されますが、スーパーバイザ・
モードで割込みを処理するときにも適用されます。コアが例外や優先順位の高いイベントを処理している場合には、これは無視されます。正確な例外タイミングが要求される場合には、このビットをセットした後で CSYNC を使用する必要があります。

システム設定レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ

命令パイプライン
プログラム・シーケンサは、実行中の現在の命令とプロセッサの現在の状態を調べることで次の命令アドレスを決定します。特殊な条件がない限
り、プロセッサは先読みアドレスをインクリメントすることで、メモリから順番に命令を実行します。
表 4-3 に示すように、プロセッサには 10 段の命令パイプラインがあります。
表 4-3.

命令パイプラインの段

パイプライン段

説明

命令フェッチ 1（IF1)

命令メモリのアクセスを開始

命令フェッチ 2（IF2)

中間メモリ・パイプライン

命令フェッチ 3（IF3)

L1 命令メモリのアクセスを完了

命令デコード（DEC）

命令を整列、命令デコードを開始し、ポインタ・レジスタ・ファ
イルにアクセス

アドレス計算（AC）

データ・アドレスと分岐ターゲット・アドレスを計算

実行 1（EX1）

データ・メモリのアクセスを開始

実行 2（EX2）

レジスタ・ファイルの読出し

実行 3（EX3）

データ・メモリのアクセスを完了し、デュアルサイクル命令の実行を開始

実行 4（EX4）

1 サイクル命令を実行

ライト・バック（WB）

データ・レジスタ・ファイルとポインタ・レジスタ・ファイルに状態を書き込み、イベントを処理

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-7

命令パイプライン

図 4-4はパイプラインの図を示します。
命令
命令
アドレス
命令
命令
フェッチ フェッチ フェッチ デコード 計算
1
2
3
命令
アドレス
命令
命令
命令
フェッチ フェッチ フェッチ デコード 計算
312

図 4-4.

Ex1

Ex1

Ex2

Ex3

Ex4

Ex2

Ex3

Ex4

WB

WB

プロセッサのパイプライン

シーケンサは演算をデコードし、命令メモリ・ユニットと命令整列ユニッ
トに配布します。また、パイプライン内での命令のストールと無効化も制御します。シーケンサは、パイプラインが完全にインターロックされることを保証します。したがって、プログラマはパイプラインを管理する必要がありません。
命令のフェッチ／分岐ロジックによって、命令メモリ・ユニット用の 32
ビット・フェッチ・アドレスが生成されます。命令整列ユニットでは、命令デコード段の先頭で命令とその幅情報を返します。
命令タイプ（16/32/64ビット）ごとに、命令整列ユニットでは、整列バッ
ファに有効な命令が十分にあってすべてのサイクルで命令を提供できることを保証します。命令は 16/32/64 ビット幅とすることができるため、命令整列ユニットでは、すべてのサイクルでキャッシュから命令をフェッチする必要はありません。たとえば、一連の 16 ビット命令の場合、命令整
列ユニットでは、4 サイクルに 1 回だけ命令メモリ・ユニットから命令を取得します。整列ロジックでは、整列バッファのステータスに基づいて次の命令アドレスを要求します。フローの変更がない場合には、シーケンサ
は次のサイクルで次のフェッチ・アドレスを生成することで応答します。
シーケンサは、整列ロジックから要求を受け取ったり、フローの変更が行
われたりするまではフェッチ・アドレスを保持します。シーケンサは、常に前のフェッチ・アドレスを 8（次の 8 バイト）だけインクリメントしま

4-8

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ

す。分岐や割込みなど、フローの変更が行われた場合には、シーケンサはその変更を命令メモリ・ユニットに伝達します。これによって、命令整列
ユニット内のデータが無効にされます。
実行ユニットには、2つの16ビット乗算器、2つの 40ビット ALU、2つの40ビット・アキュムレータ、1 つの 40ビット・シフタ、ビデオ・ユニット（8ビットの ALUサポートを追加）、8エントリの 32ビット・データ・レジ
スタ・ファイルが含まれています。
レジスタ・ファイルの読出しは、EX2 パイプライン段で行われます（オペランドの場合）。書込みは WB段で行われます（ストアの場合）。乗算器とビデオ・ユニットは EX3 段でアクティブであり、ALU とシフタは EX4 段
でアクティブです。アキュムレータは、EX4 段の最後で書き込まれます。
非シーケンシャルなプログラム・フローがあると、プロセッサの命令ス
ループットは減少する可能性があります。非シーケンシャルなプログラム
動作には、以下の動作が含まれます。
• ジャンプ• サブルーチン・コールと復帰• 割込みと復帰• ループ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-9

分岐とシーケンス

分岐とシーケンス
分岐とは、シーケンサが提供する非シーケンシャルなプログラム・フローの 1つです。分岐が発生するのは、次の順次アドレス以外の新しい位置で、JUMP 命令や CALL 命令が実行を始めるときです。JUMP 命令と CALL 命令の使
い方 に つい て は、『ADSP-BF53x Blackfin Processor Instruction Set
Reference』を参照してください。以下に簡単に説明します。
• JUMP または CALL 命令は、プログラム・フローを別のメモリ位置に移します。JUMP と CALL との違いとして、CALL では、復帰アドレス
を RETS レジスタに自動的にロードします。復帰アドレスは、CALL
命令の後にある次の順次アドレスです。このプッシュによって、このアドレスは CALL 命令の対応する復帰命令に使用できるようになり、サブルーチンからの容易な復帰を可能にします。
• 復帰命令によって、シーケンサは RETS レジスタに格納されている
復帰アドレスから命令をフェッチします（サブルーチン復帰の場合）。復帰命令には、サブルーチンからの復帰（RTS）、割込みからの復帰（RTI）、例外からの復帰（RTX）、エミュレーションからの復帰（RTE）、マスク不能割込みからの復帰（RTN）のタイプが含まれます。各復帰タイプには、復帰アドレスを保持するための専用のレジスタがあります。
• JUMP 命令は、ASTAT レジスタの CC ビットのステータスに応じて、条件付きにすることができます。これらの命令は即値命令であり、遅延がないこともあります。プログラム・シーケンサは、CC ステータ
ス・ビットを評価して、分岐を実行するかどうかを決定できます。
条件が指定されていない場合には、分岐は常に実行されます。
• 条件付き JUMP 命令では、パイプラインの長さに起因する分岐遅延を減らすために、静的分岐予測を使用します。

4-10

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ

分岐は、直接または間接とすることができます。直接分岐アドレスは、命令ワードによってのみ決定されます（たとえば、JUMP 0x30）。一方、間接分岐では、DAG レジスタの内容からそのアドレスを取得します（たとえば、JUMP(P3)）。
あらゆるタイプの JUMP と CALL は、PC 相対とすることができます。間接
JUMP と CALL は、絶対またはPC 相対とすることができます。

■ 直接のショート・ジャンプとロング・ジャンプ
シーケンサは、ショート・ジャンプとロング・ジャンプの両方を提供します。分岐のターゲットは、命令の位置からの PC 相対アドレス＋オフセッ
トです。ショート・ジャンプの PC 相対オフセットは13ビットの即値であり、2の倍数（ビット 0＝ 0）であることが必要です。この13ビット値は、－ 4096 ～＋ 4094バイトという実効ダイナミック・レンジを提供します。
ロング・ジャンプの PC 相対オフセットは25ビットの即値であり、これも2 の倍数（ビット 0 ＝0）であることが必要です。この 25 ビット値は、－
16,777,216 ～＋16,777,214 バイトという実効ダイナミック・レンジを提供します。
プログラムの作成時に、デスティネーションは現在の PC値から 13ビット
よ り 小 さ な オ フ セ ッ ト で あ る こ と が 判 明 し て い る 場 合 に は、
JUMP.S 0xnnnn 命令を使用できます。デスティネーションが 13 ビットより大きなオフセットを必要とする場合には、JUMP.L 0xnnnnnnn 命令を使用する必要があります。デスティネーションのオフセットが未知であり、開発ツールがオフセットを見積もる必要がある場合には、 JUMP 0xnnnnnnn
命令を使用してください。逆アセンブル時には、この命令は適切な JUMP.S
命令や JUMP.L 命令によって置き換えられます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-11

分岐とシーケンス■ ダイレクト・コール
CALL 命令は分岐命令の 1つであり、CALL 命令が実行されなかった場合に次に実行するはずの命令のアドレスを RETS レジスタにコピーします。直接
CALL 命令には 25 ビットの PC 相対オフセットがあり、2 の倍数（ビット0＝ 0）であることが必要です。この 25 ビット値は、－ 16,777,216 ～＋
16,777,214 バイトの実効ダイナミック・レンジを提供します。

■ 間接分岐とコール
間接 JUMP 命令と CALL 命令は、デスティネーション・アドレスをデータ・
アドレス・ジェネレータ（DAG）のPレジスタから取得します。CALL 命令の場合、RETS レジスタには、CALL 命令がない場合に次に実行するはずの命
令のアドレスがロードされます。
例：
JUMP (P3) ;CALL (P0) ;■ PC 相対の間接分岐とコール
PC 相対の間接 JUMP 命令と CALL 命令は、分岐ターゲットへのオフセットとして P レジスタの内容を使用します。CALL 命令の場合、RETS レジスタには、CALL 命令が実行されなかった場合に次に実行するはずの命令のアドレスがロードされます。
例：
JUMP (PC + P3) ;CALL (PC + P0) ;4-12

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ■ 条件コード・フラグ
このプロセッサには、条件コード（CC）フラグ・ビットがあります。このビットは、分岐の方向を解決するために使用されます。このフラグには、
8 つの方法でアクセスできます。
• 条件付き分岐は CC 内の値によって解決されます。
• データ・レジスタ値は CC にコピーでき、CC 内の値はデータ・レジ
スタにコピーできます。
• ビット TST 命令では CC フラグにアクセスします。
• ステータス・フラグは CC にコピーでき、CC 内の値はステータス・
フラグにコピーできます。
• CC フラグ・ビットには、ポインタ・レジスタ比較の結果を設定できます。
• CC フラグ・ビットには、データ・レジスタ比較の結果を設定できます。
• いくつかのシフタ命令（ローテートや BXOR）では、シフト・オペ
ランド／結果の一部として CC を使用します。
• テスト・アンド・セット命令では、CC ビットのセット／クリアができます。
プログラム・フローの制御には、これらの 8つの方法で CC ビットにアクセスします。分岐は、演算フラグを設定する命令とは明示的に分離されています。CC の値の解釈を指定する命令エンコーディングには1 つのビットが存在します。この解釈は「真で分岐」または「偽で分岐」です。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-13

分岐とシーケンス

比較演算の書式は CC = expr です。ここで expr は、同じタイプのレジスタのペアを必要とします（たとえば、データ・レジスタやポインタ・レジス
タ、または単一レジスタと小さな即値定数）。この小さな即値定数は、符号付き比較では 3ビット（－ 4 ～3）の符号付き数値であり、符号なし比較
では 3 ビット（0～ 7）の符号なし数値です。
CC の値は、等しい（==）
、小さい（<）、小さいか等しい（<=）といった演算子によって決まります。また、32ビット Rレジスタ内のビットがセットされているかどうかをテストする、ビット・テスト演算もあります。
X 条件付き分岐

シーケンサは条件付き分岐に対応しています。条件付き分岐は JUMP 命令であり、その実行は、CC ビットの値に応じて分岐したり、直線的に続行されます。分岐のターゲットは、命令の位置からの PC 相対アドレス＋オフセッ
トです。この PC 相対オフセットは11ビットの即値であり、2の倍数（ビット 0 ＝ 0）であることが必要です。この 11 ビット値は、－1024 ～＋1022
バイトの実効ダイナミック・レンジを提供します。
たとえば、次の命令では CC フラグをテストし、正である場合には、ラベル
dest_address によって識別される位置にジャンプします。
IF CC JUMP dest_address ;4-14

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ

X 条件付きレジスタ間移動

レジスタ間移動は、CC フラグの値が真であるか偽であるか（1または 0）に応じて実行できます。場合によっては、分岐の代わりにこの命令を使用す
ると、分岐に起因するサイクル損失を解消できます。このような条件付き
移動は、SP と FP を含めて任意のR レジスタ間またはP レジスタ間で可能です。
コード例：
IF CC R0 = P0 ;■ 分岐予測シーケンサは条件付き分岐の実行速度を上げるために、静的分岐予測を行います。これらの分岐は、CC ビットの状態に基づいて実行されます。
EX4 段では、シーケンサは実際の CC ビット値を予測値と比較します。値の予測に誤りがあった場合には分岐が修正され、パイプラインの WB段では正しいアドレスを使用できます。
条件付き分岐の分岐遅延は次のとおりです。
• 予測が「分岐しない」であり、実際に分岐しなかった場合：0 CCLKサイクル。
• 予測が「分岐しない」であり、実際に分岐した場合：8 CCLK サイクル。
• 予測が「分岐する」であり、実際に分岐した場合：4 CCLK サイクル。
• 予測が「分岐する」であり、実際に分岐しなかった場合：8 CCLK サ
イクル。
すべての無条件分岐で、パイプラインの AC 段で計算された分岐ターゲッ
ト・アドレスは、EX1 段の先頭で命令フェッチ・アドレス・バスに送られます。すべての無条件分岐には、4 CCLK サイクルの遅延があります。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-15

ループとシーケンス

表 4-4 の例を参照してください。
表 4-4.

分岐予測

命令

説明

If CC JUMP dest (bp)

この命令では CC フラグをテストし、フラグがセットされている場合には、ラベル dest によって識別される位置にジャンプします。
CC フラグがセットされている場合には、分岐は正しく予測され、分岐遅延は減少します。そうでない場合には、分岐の予測に誤りがあり、分岐遅延は増大します。

ループとシーケンス
シーケンサには、ゼロオーバーヘッド・ループのメカニズムがあります。
シーケンサに内蔵される 2 つのループ・ユニットには、それぞれ 3 本のレジスタが含まれています。各ループ・ユニットには、ループ・トップ・レジスタ（LT0、LT1）、ループ・ボトム・レジスタ（LB0、LB1）、ループ・カ
ウント・レジスタ（LC0、LC1）があります。
アドレス X にある命令が実行され、X が LB0 の内容と一致する場合には、次に実行される命令は LT0 内のアドレスからとなります。つまり、PC == LB0の場合、LT0 への暗黙的ジャンプが実行されます。
ループバックが発生するのは、カウントが 2以上であるときだけです。カ
ウントが非ゼロである場合には、カウントは1だけデクリメントされます。
たとえば、2つの繰返しを持つループを想定します。最初に、カウントは2 です。最初のループ終端に到達すると、カウントは 1 にデクリメントされ、2回目の実行のためにプログラム・フローはループの先頭に戻ります。
再びループ終端に到達すると、カウントは 0 にデクリメントされますが、ループの本体はすでに2回実行されたので、ループバックは発生しません。

4-16

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ

2 つのループ・ユニットがあるため、ループ・ユニット1 には、ネストされたループ構造において内側ループとして使用できるように高い優先順
位が割り当てられます。つまり、特定の命令（PC == LB1, LC1 >= 2）でのループ・ユニット 1によるループバックは、たとえアドレスが一致した場
合でも、同じ命令でのループ・ユニット 0 のループバックを防止します。
ループ・ユニット 0がループ・バックを許可されるのは、ループ・カウン
ト 1が空になった後だけです。
LSETUP 命令を使用すれば、ループ・ユニットの 3本のレジスタを一度にす

べてロードできます。各ループ・レジスタは、レジスタ転送によって個々にロードすることもできます。しかし、転送の時点でループ・カウントがゼロ以外（ループがアクティブ）である場合には、かなりのオーバーヘッ
ドが発生します。
次のコード例に示すループは2つの命令を含み、32回の繰返しを行います。
リスト 4-1. ループ例
P5 = 0x20 ;LSETUP ( lp_start, lp_end ) LCO = P5 ;lp_start:
R5 = R0 + R1(ns) || R2 = [P2++] || R3 = [I1++] ;lp_end:R5 = R5 + R2 ;2 つのネストされたループを管理するために、2 組のループ・レジスタが使用されます。
• LC[1:0] – ループ・カウント・レジスタ• LT[1:0] – ループ・トップ・アドレス・レジスタ• LB[1:0] – ループ・ボトム・アドレス・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-17

ループとシーケンス

LSETUP 命令を実行するとき、プログラム・シーケンサはループの最後の命

令のアドレスを LBx にロードし、ループの最初の命令のアドレスを LTx にロードします。ループの先頭アドレスと末尾アドレスは、LSETUP 命令からの PC相対アドレス＋オフセットとして計算されます。いずれの場合にも、
LSETUP 命令の位置にオフセット値が加算されます。
LC0 レジスタと LC1 レジスタは符号なし 32ビット・レジスタであり、それぞれループによる 232 － 1回の繰返しが可能です。

[
表 4-5.

LCx = 0 の場合、ループは無効であり、シングル・パスのコードが実行されます。
ループ・レジスタ

ループの先頭／最終アドレス

ループ開始アドレスの計算に使用する PC 相対オフセット

ループ開始命令の有効範囲

トップ／先頭5 ビットの符号付き即値、2 の倍数であることが必要

LSETUP 命令から 0 ～ 30 バイトの距離

ボトム／最終11 ビットの符号付き即値、2 の倍数であることが必要

LSETUP 命令から 0 ～ 2046 バイトの距離（定義されるループ長は 2046
バイトとすることができる）

このプロセッサは 4 位置の命令ループ・バッファに対応しており、ループ
内での命令フェッチを減らします。ループ・コードに含まれる命令の数が4 つ以下である場合には、命令がローカルに格納されるため、ループの繰返し数とは無関係に命令メモリへのフェッチは不要です。ループ・バッ
ファは、ループ・バッファ内の命令の実行中にフェッチを可能にすること
で、5 つ以上の命令を持つループでの命令フェッチ時間を効果的に解消します。
LSETUP が非ゼロの開始オフセット（lp_start）を指定すると、最初のループバックで 4 サイクルの遅延が発生します。したがって、ゼロ開始オフ
セットが好まれます。

4-18

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ

ループ終端位置で実行される命令についても、プロセッサは何の制約も加えません。その位置でも分岐とコールを使用できます。

イベントとシーケンス
プロセッサのイベント・コントローラは、5 種類の動作やイベントを管理します。
• エミュレーション• リセット• マスク不能割込み（NMI）
• 例外
• 割込み
なお、「イベント」という語は、5 種類すべての動作を表します。イベン
ト・コントローラは、全部で 15種類のイベントを管理します。つまり、エミュレーション、リセット、NMI、例外、および 11 種類の割込みです。
割込みとは、プロセッサの通常の命令フローを変更するイベントであり、プログラム・フローに非同期です。その一方で、例外とは、ソフトウェア
によって開始されるイベントであり、その作用はプログラム・フローに同期します。
イベント・システムはネストされ、優先順位付けされています。したがって、任意の時点で複数のサービス・ルーチンがアクティブになったり、優
先順位の低いイベントが優先順位の高いイベントによって先取りされたりすることがあります。
このプロセッサは、2レベルのイベント制御メカニズムを採用しています。
プロセッサのシステム割込みコントローラ（SIC）は、コア・イベント・
コントローラ（CEC）と連携して、すべてのシステム割込みの優先順位付

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-19

イベントとシーケンス

けと制御を行います。SICは、多くのペリフェラル割込みソースとコアの優先順位付けされた汎用割込み入力とのマッピングを提供します。このマッピングはプログラマブルであり、個々の割込みソースは SICでマスクできます。
CEC では、表 4-6 に示す専用の割込みイベントと例外イベントに加えて、9 つの汎用割込み（IVG7 – IVG15）が可能です。優先順位の最も低い 2つの割込み（IVG14 と IVG15）をソフトウェア割込みハンドラ用に確保し、7つの優先順位付けされた割込み入力（IVG7 – IVG13）でシステムに対応することをお勧めします。表 4-6 を参照してください。
表 4-6.

システムとコア・イベントのマッピング

コア・イベント

4-20

イベント・ソース

コア・イベント名

エミュレーション（最高の優先順位）

EMU

リセット

RST

NMI

NMI

例外

EVX

予備

–

ハードウェア・エラー

IVHW

コア・タイマIVTMR

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ

表 4-6.

システムとコア・イベントのマッピング（続き）

システム割込み

イベント・ソース

コア・イベント名

PLL ウェイクアップ割込み
DMA エラー（汎用）PPI エラー割込み
SPORT0 エラー割込み
SPORT1 エラー割込み
SPI エラー割込み
UART エラー割込み

IVG7

リアルタイム・クロック割込み
DMA0 割込み（PPI）

IVG8

DMA1 割込み（SPORT0 RX）
DMA2 割込み（SPORT0 TX）
DMA3 割込み（SPORT1 RX）
DMA4 割込み（SPORT1 TX）

IVG9

DMA5 割込み（SPI）
DMA6 割込み（UART RX）
DMA7 割込み（UART TX）

IVG10

Timer0、Timer1、Timer2 割込み

IVG11

プログラマブル・フラグ割込み A/B

IVG12

DMA8/9 割込み（メモリ DMAストリーム 0） IVG13
DMA10/11 割込み（メモリ DMA ストリー
ム 1）
ソフトウェア・ウォッチドッグ・タイマ
ソフトウェア割込み 1

IVG14

ソフトウェア割込み 2（最低の優先順位）

IVG15

なお、ここに示すシステム割込みとコア・イベントのマッピングはリセッ
ト時のデフォルト値であり、ソフトウェアで変更できます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-21

イベントとシーケンス■ システム割込み処理
4-24 ページの図 4-5 では、割込み（割込みA）は割込み対応のペリフェラ
ルによって生成されるものとします。
1. SIC_ISR は要求を記録し、アサート済みであってもまだ処理されていない（つまり、割込みサービス・ルーチンがまだ割込みをクリアしていない）システム割込みを監視します。
2. SIC_IWR は、この割込み要求に基づいて、コアをアイドル状態からウェイクアップさせるべきかどうかを確認します。
3. SIC_IMASK は、システム・レベルでペリフェラルからの割込みをマ
スクまたはイネーブルにします。割込み A がマスクされていない場合には、要求はステップ 4 に進みます。
4. SIC_IARx レジスタは、ペリフェラル割込みを小さな汎用コア割込み（IVG7 – IVG15）群にマッピングし、割込み A のコア優先順位を決定します。
5. ILAT は割込み A を、コアによってラッチ済みであってもまだアクティブに処理されていない割込みのログに追加します。
さまざまなコア優先順位のイベントをマスクまたはイネー
6. IMASK は、
ブルにします。割込み A に対応する IVGx イベントがマスクされていない場合には、プロセスはステップ 7 に進みます。
7. 割込み A の割込みサービス・ルーチン（ISR）に対して適切なベク
トルを検索するために、イベント・ベクトル・テーブル（EVT）がアクセスされます。
8. 割込み A のイベント・ベクトルがコア・パイプラインに入ると、適切な IPEND ビットがセットされて、それぞれの ILAT ビットがクリアされます。このように、IPEND では現在処理中の割込みに加えて、すべてのペンディング割込みも追跡します。

4-22

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ

9. 割込み A の割込みサービス・ルーチン（ISR）が実行された場合、RTI 命令は適切な IPEND ビットをクリアします。しかし関連する
SIC_ISR ビットは、割込みサービス・ルーチンが割込み A を生成したメカニズムをクリアしない場合や、割込みの処理プロセスでこのビットをクリアしない場合にはクリアされません。
エミュレーション・イベント、リセット・イベント、NMI イベント、例
外イベントに加えて、ハードウェア・エラー（IVHW）とコア・タイマ（IVTMR）の割込み要求は、ILAT レベルで割込み処理チェーンに入り、シス
テムレベルの割込みレジスタ（SIC_IWR、SIC_ISR、SIC_IMASK、SIC_IARx）
による影響を受けないことに注意してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-23

イベントとシーケンス

複数の割込みソースが 1つのコア割込みを共有する場合には、割込みサー
ビス・ルーチン（ISR）は割込みを生成したペリフェラルを識別する必要があります。その後、ISRはペリフェラルに問い合わせて必要な措置を講じなければならないこともあります。
EMU
RESET
NMI
EVX
IVTMR
IVHW

‫ޟ‬ഀㄟߺA‫ޠ‬ࡍ࡝ࡈࠚ࡜࡞
ഀㄟߺⷐ᳞

ࠪࠬ࠹ࡓ࡮
࠙ࠚࠗࠢ
ࠕ࠶ࡊ
㧔SIC_IWR㧕ࠪࠬ࠹ࡓഀㄟߺࡑࠬࠢ
㧔SIC_IMASK㧕

ࠪࠬ࠹ࡓ
ఝవ㗅૏ߩ
ഀᒰߡ
㧔SIC_IAR0..2㧕

ࠦࠕ࡮
ࠬ࠹࡯࠲ࠬ
㧔ILAT㧕

ࠦࠕഀㄟߺࡑࠬࠢ㧔IMASK㧕

ࠦࠕ࡮
ࠗࡌࡦ࠻࡮
ࡌࠢ࠻࡞࡮
࠹࡯ࡉ࡞
㧔EVT[15:0]㧕

ࠦࠕ࡮ࡍࡦ࠺ࠖࡦࠣ
㧔IPEND㧕

ࠪࠬ࠹ࡓ࡮
ࠬ࠹࡯࠲ࠬ
㧔SIC_ISR㧕

࠳ࠗ࠽ࡒ࠶ࠢ࡮ࡄࡢ࡯࡮
ࡑࡀࠫࡔࡦ࠻࡮ࠦࡦ࠻ࡠ࡯࡜߳

ࠪࠬ࠹ࡓഀㄟߺࠦࡦ࠻ࡠ࡯࡜

ࠦࠕ࡮ࠗࡌࡦ࠻࡮ࠦࡦ࠻ࡠ࡯࡜

ᵈ㧦ࠞ࠶ࠦౝߩฬ೨ߪ‫ޕߔߢ࠲ࠬࠫ࡟࡮࠼ࡊ࠶ࡑ࡝ࡕࡔޔ‬図 4-5.

割込み処理のブロック図■ システム・ペリフェラル割込み
プロセッサ・システムには多数のペリフェラルがあるため、多くのサポー
ト割込みも必要になります。これを表 4-7 に示します。
• ペリフェラル割込みソース• システム割込み割当てレジスタ（SIC_IARx）で使用されるペリフェ
ラル割込み ID（4-32 ページの「システム割込み割当てレジスタ（SIC_IARx）」を参照してください。）

4-24

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ• リセット時に割込みのマッピング先となるコアの汎用割込み• システム割込み割当てレジスタ（SIC_IARx）で使用されるコア割込み
ID（4-32 ページの「システム割込み割当てレジスタ（SIC_IARx）」
を参照してください。
）
表 4-7.

ペリフェラル割込みソースのリセット状態

ペリフェラル割込みソース

ペリフェラル
割込み ID

汎用割込み
コア割込み（リセット時の割当て） ID

PLL ウェイクアップ割込み

0

IVG7

0

DMA エラー（汎用）

1

IVG7

0

PPI エラー割込み

2

IVG7

0

SPORT0 エラー割込み

3

IVG7

0

SPORT1 エラー割込み

4

IVG7

0

SPI エラー割込み

5

IVG7

0

UART エラー割込み

6

IVG7

0

リアルタイム・クロック割込み（アラー 7
ム、秒、分、時、カウントダウン）

IVG8

1

DMA0 割込み（PPI）

8

IVG8

1

DMA1 割込み（SPORT0 RX）

9

IVG9

2

DMA2 割込み（SPORT0 TX）

10

IVG9

2

DMA3 割込み（SPORT1 RX）

11

IVG9

2

DMA4 割込み（SPORT1 TX）

12

IVG9

2

DMA5 割込み（SPI）

13

IVG10

3

DMA6 割込み（UART RX）

14

IVG10

3

DMA7 割込み（UART TX）

15

IVG10

3

タイマ 0 割込み

16

IVG11

4

タイマ 1 割込み

17

IVG11

4

タイマ 2 割込み

18

IVG11

4

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-25

イベントとシーケンス

表 4-7.

ペリフェラル割込みソースのリセット状態（続き）

ペリフェラル割込みソース

ペリフェラル
割込み ID

汎用割込み
コア割込み（リセット時の割当て） ID

PF 割込み A

19

IVG12

5

PF 割込み B

20

IVG12

5

DMA 8/9 割込み（メモリ DMA ストリーム 0)

21

IVG13

6

DMA 10/11 割込み（メモリ DMA ストリーム 1)

22

IVG13

6

ソフトウェア・ウォッチドッグ・
タイマ割込み

23

IVG13

6

予備

24-31

–

–

プロセッサのペリフェラル割込み構造は柔軟です。リセット時のデフォル
トは表 4-7 に示すように、複数のペリフェラル割込みがコア内の 1 つの汎用割込みを共有します。
複数の割込みソースに対応する割込みサービス・ルーチンは、適切なシス
テム・メモリ・マップド・レジスタ（MMR）に問い合わせて割込みを生成したペリフェラルを判定する必要があります。
表 4-7 に示すデフォルト割当てが許容される場合には、割込みの初期化には以下の動作だけが必要です。
• コアのイベント・ベクトル・テーブル（EVT）のベクトル・アドレ
ス・エントリの初期化• IMASK レジスタの初期化• システムが必要とする、SIC_IMASK 内の特定ペリフェラル割込みの
マスク解除

4-26

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ■ SIC_IWR レジスタ
システム割込みウェイクアップイネーブル・レジスタ（SIC_IWR）は、ペリフェラル割込みソースとダイナミック・パワー・マネジメント・コント
ローラ（DPMC）との間のマッピングを提供します。どのペリフェラルでも、アイドル状態のコアをウェイクアップさせて割込みを処理するように設定するには、システム割込みウェイクアップイネーブル・レジスタ（SIC_IWR、4-28 ページの図 4-6 を参照）の適切なビットをイネーブルにします。ペリフェラル割込みソースが SIC_IWR でイネーブルにされ、コアがアイドル状態である場合には、割込みによって DPMC はコア・ウェイク
アップ・シーケンスを実行して割込みを処理します。なお、パワー制御状
態によっては、この動作モードによって割込み処理の遅延が増大することもあります。コアのアイドル状態とパワー・モードの詳細については、第8 章「ダイナミック・パワー・マネジメント」を参照してください。
デフォルトでは、すべての割込みはコアへのウェイクアップ要求を生成します。しかし、アプリケーションによっては、SPORTx送信割込みなどい
くつかのペリフェラルに対して、この機能をディスエーブルにすることが望ましい場合もあります。
コアがアイドル状態でない限り、SIC_IWR レジスタは効果がありません。
このレジスタのビットは、システム割込みマスク（SIC_IMASK）レジスタと割込みステータス（SIC_ISR）レジスタのビットに対応します。
リセット後に、このレジスタのすべての有効ビットに 1が設定され、マスクされていないすべての割込みに対するウェイクアップ機能がイネーブ
ルにされます。割込みをイネーブルにする前に、このレジスタをリセット
初期化シーケンスで設定します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-27

イベントとシーケンス

SIC_IWR レジスタは、いつの時点でも読出し／書込みが可能です。スプリ

アス割込みや割込みの欠落動作を防止するため、このレジスタへの書込み
は、すべてのペリフェラル割込みがディスエーブルにされているときに限定してください。

L

なお、ウェイクアップ機能は、割込みマスク機能から独立しています。割込 み ソー ス が SIC_IWR で イネ ー ブル に され て いて も、
SIC_IMASK でマスクされている場合には、アイドル状態のコアはウェイクアップしますが、割込みは生成しません。

システム割込みウェイクアップイネーブル・レジスタ（SIC_IWR）
すべてのビットで、0 - ウェイクアップ機能がディスエーブル、1 - ウェイクアップ機能がイネーブル
0xFFC0 0124

31 30 29 28 27 26

25 24 23 22 21 20 19 1 8 17 16

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

ソフトウェア・ウォッチドッグ・タイマ・
ウェイクアップ

タイマ 0 ウェイクアップ
タイマ 1 ウェイクアップ
タイマ 2 ウェイクアップ
PFウェイクアップ A
PFウェイクアップ B

メモリ DMA ストリーム 1 ウェイクアップ
メモリ DMAストリーム 0ウェイクアップ

15 14 13 12 11 10 91 1 1 1 1 1 1
DMA7 ウェイクアップ（UART TX）
DMA6ウェイクアップ（UART RX）
DMA5ウェイクアップ（SPI）

リセット＝ 0xFFFF FFFF

8
1

7
1

6
1

5
1

4
1

3
1

2
1

1
1

0
1
PLLウェイクアップ
DMA エラー（汎用）ウェイクアップ
PPI エラー・ウェイクアップ
SPORT0エラー・ウェイクアップ

DMA4ウェイクアップ（SPORT1 TX）

SPORT1エラー・ウェイクアップ

DMA3ウェイクアップ（SPORT1 RX）
DMA2 ウェイクアップ（SPORT0 TX）
DMA1 ウェイクアップ（SPORT0 RX）

SPIエラー・ウェイクアップ

DMA0 ウェイクアップ（PPI）

図 4-6.

4-28

UARTエラー・ウェイクアップ
リアルタイム・クロック・ウェイクアップ

システム割込みウェイクアップイネーブル・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ■ SIC_ISR レジスタ
システム割込みコントローラ（SIC）は、図 4-7 に示すように、読出し専用のステータス・レジスタであるシステム割込みステータス・レジスタ（SIC_ISR）を内蔵しています。このレジスタ内の有効な各ビットは、ペリ
フェラル割込みソースの 1 つに対応します。このビットは、SIC が割込みのアサートを検出するとセットされ、SIC がペリフェラル割込み入力のアサート解除を検出するとクリアされます。なお、プログラマブル・フラグ
非同期入力割込みなどいくつかのペリフェラルでは、割込みサービス・
ルーチンが（通常はシステム MMRへの書込みによって）割込みのクリアを開始してから SIC が割込みのアサート解除を感知するまでに、相当なサイクル数の遅延が経過することもあります。
割込みソースがコアの汎用割込み入力にどうマッピングされるかによりますが、割込みサービス・ルーチンは、複数の割込みステータス・ビットに問い合わせて、割込みのソースを確認しなければならないこともあります。割込みサービス・ルーチンで実行される最初の命令の1つでは、
SIC_ISRを読み出して、入力を共有している複数のペリフェラルがその割込み出力をアサートしたかどうか確認してください。サービス・ルーチンでは、ペンディング中のすべての共有割込みを完全に処理してから RTI を実行してください。RTI では、その割込み入力でのさらなる割込み生成をイネー
ブルにします。

[

割込みのサービス・ルーチンが完了すると、RTI 命令では、IPEND レ
ジスタの適切なビットをクリアします。しかし、サービス・ルーチ
ンが割込みを生成したメカニズムをクリアしない限り、関連する
SIC_ISR ビットはクリアされません。

多くのシステムが必要とする割込み対応のペリフェラルは比較的少ない
ため、各ペリフェラルは、重複しないコア優先順位レベルにマッピングできます。このような設計では、SIC_ISR に問い合わせる必要はほとんどありません。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-29

イベントとシーケンス

SIC_ISR レジスタは、システム割込みマスク・レジスタ（SIC_IMASK）の状態による影響を受けず、いつでも読出しできます。SIC_ISR レジスタへの書込みは、その内容に影響を与えません。
システム割込みステータス・レジスタ（SIC_ISR）
すべてのビットで、0 - アサート解除、1 - アサート

0xFFC0 0120

31 30 29 28 27 26

25 24 23 22 21 20 19 18 17 16

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

リセット＝ 0x0000 0000

ソフトウェア・ウォッチドッグ・タイマ割込み

タイマ 0割込み

メモリ DMAストリーム 1割込み

タイマ 1割込み
タイマ 2 割込み
PF割込み A
PF割込み Bメモリ DMAストリーム 0割込み

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

DMA7割込み（UART TX）
DMA6割込み（UART RX）
DMA5割込み（SPI）

00
PLL ウェイクアップ割込み
DMAエラー（汎用）割込み
PPI エラー割込み
SPORT0 エラー割込み

DMA4割込み（SPORT1 TX）

SPORT1 エラー割込み

DMA3割込み（SPORT1 RX）
DMA2割込み（SPORT0 TX）
DMA1割込み（SPORT0 RX）

SPI エラー割込み

DMA0割込み（PPI）

図 4-7.

UART エラー割込み
リアルタイム・クロック割込み

システム割込みステータス・レジスタ■ SIC_IMASK レジスタ
システム割込みマスク・レジスタ（図 4-8 に示す SIC_IMASK）を使用すれば、ペリフェラル自身でイネーブルにされているかどうかとは無関係に、
システム割込みコントローラ（SIC）で任意のペリフェラル割込みソース
をマスクできます。

4-30

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ

リセットによって、SIC_IMASK の内容にはオール0 が設定され、すべてのペリフェラル割込みがマスクされます。ビット位置に 1を書き込むとマスクがオフになり、割込みがイネーブルにされます。
このレジスタは（スーパーバイザ・モードで）いつでも読出し／書込みが可能ですが、リセット初期化シーケンスで設定してから割込みをイネーブ
ルにしてください。
システム割込みマスク・レジスタ（SIC_IMASK）
すべてのビットで、0 - 割込みをマスク、1 - 割込みをイネーブル

0xFFC0 010C

31 30 29 28 27 26

25 24 23 22 21 20 19 18 17 16

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

リセット＝ 0x0000 0000
タイマ 0割込み
タイマ 1割込み
タイマ 2割込み
PF割込み A
PF割込み B

ソフトウェア・ウォッチドッグ・タイマ割込み
メモリ DMA ストリーム 1割込み
メモリ DMA ストリーム 0割込み

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

DMA7 割込み（UART TX）
DMA6 割込み（UART RX）
DMA5 割込み（SPI）

2
0

1
0

0
0
PLL ウェイクアップ割込み
DMAエラー（汎用）割込み
PPI エラー割込み
SPORT0 エラー割込み

DMA4 割込み（SPORT1 TX）

SPORT1 エラー割込み

DMA3 割込み（SPORT1 RX）
DMA2 割込み（SPORT0 TX）
DMA1 割込み（SPORT0 RX）

SPI エラー割込み

DMA0 割込み（PPI）

図 4-8.

UART エラー割込み
リアルタイム・クロック割込み

システム割込みマスク・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-31

イベントとシーケンス■ システム割込み割当てレジスタ（SIC_IARx）
ペリフェラル割込みの相対的な優先順位を設定するには、ペリフェラル割
込みをコア内の適切な汎用割込みレベルにマッピングします。図 4-9、図4-10、図 4-11 に示すように、このマッピングは、システム割込み割当て
レジスタの設定値によって制御されます。同じ割込みに対して複数の割込
みソースがマッピングされた場合には、それらの割込みソースはハード
ウェアの優先順位付けなしで論理的に OR がとられます。ソフトウェアでは、特定のシステム・アプリケーションの要求に応じて、割込み処理に優
先順位を付けることができます。

L

複数のペリフェラル割込みが割り当てられた汎用割込みの場合、その入力を共有しているペンディング中のすべての割込みをソフト
ウェアが正しく処理できるように特に注意してください。共有される割込みの優先順位付けについては、ソフトウェアの責任となります。

システム割込み割当てレジスタ 0（SIC_IAR0）
31 30 29 28 27 26
0 0 0 1 0 0

0xFFC0 0110

25 24 23 22 21 20 19 18 17 16
0 0 0 0 0 0 0 0 0 0 リセット＝ 0x1000 0000
SPI エラー割込み
IVG 選択

リアルタイム・
クロック割込み
IVG 選択SPORT1エラー割込み
IVG 選択UART エラー割込み
IVG 選択15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

SPORT0エラー割込み
IVG 選択PLL ウェイクアップ割込み
IVG 選択PPI エラー割込み
IVG 選択DMAエラー（汎用）割込み
IVG 選択図 4-9.

4-32

システム割込み割当てレジスタ 0

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ

システム割込み割当てレジスタ 1（SIC_IAR1）
0xFFC0 0114

31 30 29 28 27 26
0 0 1 1 0 0

25 24 23 22 21 20 19 18 17 16
1 1 0 0 1 1 0 0 1 0

DMA7（UART TX）
割込み
IVG 選択

リセット＝ 0x3332 2221
DMA4（SPORT1 TX）割込み
IVG 選択DMA5（SPI）割込み
IVG 選択DMA6（UART RX）割込み
IVG 選択15 14 13 12 11 10
0 0 1 0 0 0

9
1

8
0

7
0

6
0

5
1

4
0

3
0

2
0

1
0

0
1

DMA3（SPORT1 RX）
割込み
IVG 選択DMA0（PPI）割込み
IVG 選択DMA2（SPORT0 TX）割込み
IVG 選択DMA1（SPORT0 RX）割込み
IVG 選択図 4-10. システム割込み割当てレジスタ 1
システム割込み割当てレジスタ 2（SIC_IAR2）0xFFC0 0118

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
0 1 1 0 0 1 1 0 0 1 1 0 0 1 0 1

リセット＝ 0x6665 5444

ソフトウェア・ウォッチドッグ・
タイマ割込みIVG 選択PF B 割込み
IVG 選択メモリ DMA ストリーム 1割込み
IVG 選択メモリ DMA
ストリーム 0割込み
IVG 選択15 14 13 12 11 10 9
0 1 0 1 0 1 0

8
0

7
0

6
1

5
0

4
0

3
0

2
1

1
0

0
0

PF A 割込み
IVG 選択

タイマ 0 割込み
IVG 選択

タイマ 2割込み
IVG 選択

タイマ 1 割込み
IVG 選択図 4-11. システム割込み割当てレジスタ 2

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-33

イベントとシーケンス

これらのレジスタは、スーパーバイザ・モードでいつでも読出し／書込みが可能です。しかし、リセット割込みサービス・ルーチンでこれらのレジスタを設定してから、割込みをイネーブルにすることをお勧めします。ス
プリアス割込みや割込みの欠落動作を防止するため、これらのレジスタへの書込みは、すべてのペリフェラル割込みがディスエーブルにされている
ときに限定してください。
表 4-8 は、ペリ フ ェラ ル を特 定 の IVG 優先 順 位に 設 定す る ため に、
SIC_IARx に書き込む値を定義します。
表 4-8.

4-34

IVG 選択の定義

汎用割込み

SIC_IAR での値

IVG7

0

IVG8

1

IVG9

2

IVG10

3

IVG11

4

IVG12

5

IVG13

6

IVG14

7

IVG15

8

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ

コア・イベント・コントローラ・レジスタ
イベント・コントローラは 3 つのMMR を使用して、ペンディング中のイベント要求を調整します。各 MMR では、下位16 ビットが 16 種類のイベ
ント・レベルに対応します（たとえば、ビット 0は「エミュレータ・モー
ド」に対応します）。レジスタは次のとおりです。
• IMASK — 割込みマスク• ILAT — 割込みラッチ• IPEND — ペンディング中の割込み
これら 3本のレジスタには、スーパーバイザ・モードでのみアクセスできます。

■ IMASK レジスタ
コア割込みマスク・レジスタ（IMASK）は、発生可能な割込みレベルを示します。IMASK レジスタは、スーパーバイザ・モードで読出し／書込みが可能です。ビット [15:5] には有効数字があります。ビット[4:0]は1 にハードコードされており、これらのレベルのイベントは常にイネーブルにされています。IMASK[N] == 1 で ILAT[N] == 1 の場合、高い優先順位がまだ認識されていなければ割込み N が発生します。IMASK[N] == 0 で、割込み N に
よって ILAT[N] がセットされた場合には、割込みは発生せずに、ILAT[N]はセットされたままです。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-35

コア・イベント・コントローラ・レジスタ

コア割込みマスク・レジスタ（IMASK）
すべてのビットで、0 - 割込みをマスク、1 - 割込みをイネーブル

0xFFE0 2104

31 30 29 28 27 26
0 0 0 0 0 025 24 23 22 21 20 19 18 17 16
0 0 0 0 0 0 0 0 0 0

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

IVG15
IVG14
IVG13
IVG12
IVG11
IVG10

4
1

3
1

2
1

1
1

リセット＝ 0x0000 001F

01

IVHW（ハードウェア・エラー）
IVTMR（コア・タイマ）
IVG7
IVG8
IVG9

図 4-12. コア割込みマスク・レジスタ■ ILAT レジスタ
コア割込みラッチ・レジスタ（ILAT）の各ビットは、対応するイベントがラッチされていてもプロセッサにはまだ受け付けられていないことを示します（図 4-13 を参照）。このビットがリセットされてから、対応する
ISR の 最 初の 命 令が 実 行さ れ ます。割 込み が 受け 付 けら れ た時 点 でILAT[N] がクリアされ、同時に IPEND[N] がセットされます。ILAT レジスタ
は、スーパーバイザ・モードで読出し可能です。ILAT への書込みは、（スーパーバイザ・モードで）ビットをクリアするためにだけ使用されます。ILATからビット N をクリアするには、まず IMASK[N] == 0 であることを確認してから、ILAT[N] = 1 を書き込みます。ILAT へのこの書込み機能は、ラッチされた割込み要求を処理せずにクリア（キャンセル）する必要がある場
合に備えて提供されています。
RAISE 命令を使用すれば、
ILAT[15]～ILAT[5]およびILAT[2]またはILAT[1]をセットできます。
ILAT[0] をクリアできるのは、JTAG TRST ピンだけです。

4-36

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ

コア割込みラッチ・レジスタ（ILAT）
ビット 0 のリセット値はエミュレータに依存します。すべてのビットで、0 - 割込みをラッチしない、1 - 割込みをラッチ

0xFFE0 210C

31 30 29 28 27 26
0 0 0 0 0 025 24 23 22 21 20 19 18 17 16
0 0 0 0 0 0 0 0 0 0

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

IVG15
IVG14
IVG13
IVG12
IVG11
IVG10
IVG9

4
0

3
0

2
0

1
0

リセット＝ 0x0000 000X

0X

EMU（エミュレーション）- RO
RST（リセット）- RO
NMI（マスク不能割込み）- RO
EVX（例外）- RO
IVHW（ハードウェア・エラー）
IVTMR（コア・タイマ）
IVG7
IVG8

図 4-13. コア割込みラッチ・レジスタ■ IPEND レジスタ
コア割込みペンディング・レジスタ（IPEND）は、現在ネストされているすべての割込みを監視します（図 4-14を参照）。IPEND の各ビットは、対応する割込みが現在アクティブであるか、いずれかのレベルでネストされていることを示します。このビットは、スーパーバイザ・モードで読出し可能ですが、書込みはできません。イベント・コントローラでは、IPEND[4]ビットを使用して、エントリ時に割込みを一時的にディスエーブルにして割込みサービス・ルーチンに抜け出ることができます。
イベントが処理されると、IPEND の対応するビットがセットされます。
IPEND の最下位ビットが現在セットされていれば、これは現在処理中の割込みを示します。いつの時点でも、IPEND はネストされたすべてのイベン
トの現在のステータスを保持します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-37

割込みのグローバルなイネーブル／ディスエーブル

コア割込みペンディング・レジスタ（IPEND）
RO。ビット 4 以外のすべてのビットで、0 - 割込みのペンディングなし、1 - 割込みはペンディングまたはアクティブ

0xFFE0 2108

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
1

3
0

2
0

1
0

リセット＝ 0x0000 001000EMU（エミュレーション）
RST（リセット）
NMI（マスク不能割込み）
EVX（例外）グローバル割込みディスエーブル
0 - 割込みをグローバルに
イネーブル
1 - 割込みをグローバルにディスエーブル
イベント・コントローラによってのみセット／クリア

IVG15
IVG14
IVG13
IVG12
IVG11
IVG10
IVG9

IVHW（ハードウェア・エラー）
IVTMR（コア・タイマ）
IVG7
IVG8

図 4-14. コア割込みペンディング・レジスタ

割込みのグローバルなイネーブル／ディスエーブル
汎用割込みは、CLI Dreg 命令でグローバルにディスエーブルにでき、STI
Dreg 命令で再びイネーブルにできます。ただし、いずれの命令もスーパー

バイザ・モードでのみ使用できます。リセット・イベント、NMI イベン
ト、エミュレーション・イベント、例外イベントは、グローバルにディス
エーブルにできません。割込みをグローバルにディスエーブルにすると、
IMASK の現在の状態を保存した後で IMASK[15:5] がクリアされます。
『ADSP-BF53x Blackfin Processor Instruction Set Reference』の「External Event Management（外部イベント管理）」の章にある「Enable
Interrupts（割込みイネーブル）」と「Disable Interrupts（割込みディス
エーブル）」を参照してください。

4-38

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ

プログラム・コードの時間条件が厳しすぎて、割込みによる遅延を許容できない場合には、汎用割込みをディスエーブルにしてください。ただし、コード・シーケンスの終了時点で、再びイネーブルにすることを忘れないでください。

イベント・ベクトル・テーブルイベント・ベクトル・テーブル（EVT）は 16 個のエントリを持つハード
ウェア・テーブルであり、それぞれのエントリは 32 ビット幅です。EVTには、可能なコア・イベントごとに 1つのエントリがあります。エントリ
は MMRとしてアクセスされ、各エントリは、リセット時に割込みサービ
ス・ルーチンの対応するベクトル・アドレスによってプログラムできます。イベントが発生すると、そのイベントに対する EVT エントリにある
アドレス位置から命令フェッチが開始されます。
プロセッサ・アーキテクチャによって、各割込みベクトルに重複しないア
ドレスをプログラムできます。つまり、割込みベクトルは、割込みベクトル・テーブルのベース・アドレスからの固定オフセットによって決まるものではありません。この方式では、ベクトル・テーブルから実際の ISR
コードまでのロング・ジャンプを必要としないため、遅延が最小限に抑えられます。
表 4-9 に、イベントを優先順位別に示します。各イベントには、イベント
状態レジスタ ILAT、IMASK、IPEND 内に対応するビットがあります。
表 4-9.

コア・イベント・ベクトル・テーブル

イベント番号

イベント・クラス

名前

MMR 位置注

EVT0

エミュレーション

EMU

0xFFE0 2000

最高優先順位。ベクトル・アドレスは JTAG
によって提供されま
す。

EVT1

リセット

RST

0xFFE0 2004

EVT2

NMI

NMI

0xFFE0 2008

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-39

イベント・ベクトル・テーブル

表 4-9.

コア・イベント・ベクトル・テーブル（続き）

イベント番号

イベント・クラス

名前

MMR 位置

EVT3

例外

EVX

0xFFE0 200C

EVT4

予備

予備

0xFFE0 2010

EVT5

ハードウェア・エラー

IVHW

0xFFE0 2014

EVT6

コア・タイマIVTMR

0xFFE0 2018

EVT7

割込み 7

IVG7

0xFFE0 201C

EVT8

割込み 8

IVG8

0xFFE0 2020

EVT9

割込み 9

IVG9

0xFFE0 2024

EVT10

割込み 10IVG100xFFE0 2028

EVT11

割込み 11IVG11

0xFFE0 202C

EVT12

割込み 12IVG120xFFE0 2030

EVT13

割込み 13IVG13

0xFFE0 2034

EVT14

割込み 14IVG14

0xFFE0 2038

EVT15

割込み 15IVG15

0xFFE0 203C

注

予備ベクトル

最低優先順位■ エミュレーション
エミュレーション・イベントによってプロセッサはエミュレーション・
モードに入り、命令は JTAG インターフェースから読み出されます。これは、コアへの最高優先順位の割込みです。
エミュレーションの詳細については、第 19 章「Blackfin プロセッサのデバッグ」を参照してください。

4-40

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ■ リセット
リセット割込み（RST）を開始するには、RESET ピンを使用したり、ウォッ
チドッグ・タイマの満了を利用します。この位置は、その内容が読出し専用であるという点で他の割込みの位置とは異なります。このアドレスへの書込みはレジスタを変更しますが、リセット時にプロセッサが制御を移す
先は変化しません。リセット時には、プロセッサは常にリセット・ベクト
ル・アドレスに制御を移します。詳細については、3-11 ページの「リセット状態」と 3-19 ページの「ブート方式」を参照してください。
コアにはダブル・フォルトの発生を示す出力があります。これは回復不能な状態です。システムは（SWRST レジスタを利用し）、ダブル・フォルト条件が検出された場合にリセット要求を送信するようにプログラムできます。その後、リセット要求によってコアとペリフェラルのシステム・リ
セットが行われます。
リセット・ベクトルはプロセッサ・システムによって決定され、BMODE[1:0]ピンの状態に応じて、オンチップ・ブート ROMの先頭、または外部非同期メモリの先頭をポイントします。表 4-10 を参照してください。
表 4-10.

リセット・ベクトル・アドレス

ブート・ソース

BMODE[1:0]

実行開始アドレス

ブート ROM をバイパス。16 ビット幅の外部メモリ（非同期バンク 0）から実行。

00

0x2000 0000

ブート ROM を使用して 8/16 ビット・フラッシュか
らブート。

01

0xEF00 0000

予備。

10

0xEF00 0000

ブート ROM を使用して、SPI シリアル EEPROM（8/16/24 ビットのアドレス範囲）からブート・コード

11

0xEF00 0000

を設定およびロード1。
1

Rev.0.3 シリコンより。BMODE[1:0]=10 は、SPI ホストからのスレーブ・ブートとして使われています。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-41

イベント・ベクトル・テーブル

BMODE[1:0] ピンが、フラッシュまたはシリアル EEPROM からのブーティングを示す場合には、リセット・ベクトルは、小さなブートストラップ・
カーネルが存在する内部ブート ROM の先頭をポイントします。ブートス
トラップ・コードは、システム・リセット設定レジスタ（SYSCR）を読み出して BMODE[1:0] ピンの値を決定することで、適切なブート・シーケンスを決定します。ブート ROMの詳細については、3-19 ページの「ブート方式」を参照してください。
BMODE[1:0] ピンがブート ROMのバイパスを示す場合には、リセット・ベ

クトルは外部非同期メモリ領域の先頭をポイントします。このモードでは、内部ブート ROMは使用されません。このメモリ領域からの読出しをサポートするため、外部バス・インターフェース・ユニット（EBIU）は、
ハードウェア・リセットの結果として生じるデフォルトの外部メモリ設定
を使用します。

■ NMI（マスク不能割込み）
NMI エントリは、マスク不能割込み用に予約されています。この割込みは、プロセッサへの NMI 入力信号やウォッチドッグ・タイマによって生成できます。即座のプロセッサ・アテンションを必要とするため、NMI として適切なイベントの例はパワーダウン警告です。

[

例外、NMI、リセット、またはエミュレーション・イベントをすでに処理しているイベント・ハンドラで例外が発生した場合には、ダブル・フォルト条件がトリガされ、例外を引き起こした命令のアド
レスが RETX に書き込まれます。

■ 例外
例外は命令ストリームに同期します。つまり、特定の命令が実行完了時に例外を引き起こします。例外ハンドラが有効になるまでは、原因となる命
令の後の命令は実行されません。

4-42

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ

例外の多くはメモリ関連です。たとえば、非整列アクセスが試みられたり、キャッシュ可能性保護索引バッファ（CPLB）ミスや保護違反が発生したときに例外が発生します。また、不正な命令やレジスタの不正な組合
わせが実行されたときにも例外が発生します。
例外を引き起こした命令は、その例外がサービス・タイプであるかエラー・タイプであるかに応じて、例外イベントが発生する前にコミットする場合とコミットしない場合があります。
サービス・タイプのイベントを引き起こした命令はコミットし、例外を引き起こした命令の後の次の命令は RETX レジスタに書き込まれたアドレスとなります。サービス・タイプの例外の一例はシングル・ステップです。
エラー・タイプのイベントを引き起こした命令はコミットできないため、原因となる命令のアドレスは RETX レジスタに書き込まれたアドレスとなります。エラー・タイプのイベントの一例は CPLB ミスです。

L

通常、RETX レジスタには復帰先の正しいアドレスが格納されています。例外を引き起こした命令を飛ばすには、次のアドレスが単に次の順次アドレスでない場合に注意してください。これが起きるのは、例外を引き起こした命令がループ終端であるときです。その場
合には、次の適切なアドレスはループ先頭となります。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-43

イベント・ベクトル・テーブル

シーケンサ・ステータス・レジスタ（SEQSTAT）の EXCAUSE[5:0] フィールドは例外が発生するたびに書き込まれ、発生した例外のタイプを例外ハン
ドラに知らせます。例外の原因となるイベントの一覧については、表 4-11を参照してください。

[

例外、NMI、リセット、またはエミュレーション・イベントをすでに処理しているイベント・ハンドラで例外が発生した場合には、ダブル・フォルト条件がトリガされ、例外を引き起こした命令のアド
レスが RETX に書き込まれます。

表 4-11.

4-44

例外の原因となるイベント

例外

EXCAUSE[5:0]

4 ビットの m フィールドを持つ例外命令
EXCPT を強制

m フィールド S

命令は4ビットのEXCAUSEを提供します。

シングル・ステップ

0x10

S

プロセッサがシングル・ステップ・モードにあるとき、どの命令も例外を生成します。
主にデバッギングに使用されます。

トレース・バッファの 0x11
フル条件によって引き起こされた例外

S

プロセッサがこの例外を受け取るのは、ト
レース・バッファがオーバーフローしたときです（トレース・ユニット・コントロー
ル・レジスタによってイネーブルにされたときのみ）。

未定義命令

0x21

E

特定のプロセッサ・システムに対して定義されていない命令のエミュレートに使用できます。

不正な命令組合わせ

0x22

E『ADSP-BF53x Blackfin Processor
Instruction Set Reference』の 多 重発 行
ルールの節を参照してください。

タイプ：（E）エラー（S）サービス
注 1 を参照

注／例

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ

表 4-11.

例外の原因となるイベント（続き）

例外

EXCAUSE[5:0]

タイプ：（E）エラー（S）サービス
注 1 を参照

注／例

デ ー タ・ア ク セ ス のCPLB 保護違反

0x23

E

スーパーバイザ・リソースへの読出し／書込み、または不正なデータ・メモリ・アク
セス。スーパーバイザ・リソースとは、スーパーバイザ用に予約されているレジスタと命令であり、スーパーバイザ専用レジスタ、すべての MMR、スーパーバイザ専用命令があります。
（データ・アドレス・ジェネ
レータを使用して2つのMMRに同時にデュアル・アクセスすると、このタイプの例外が発生します。）さらに、このエントリは、禁止されたメモリ・アクセスによって引き起こされた保護違反の通知に使用され、メモリ・マネジメント・ユニット（MMU）のキャッシュ可能性保護索引バッファ（CPLB）によって定義されます。

データ・アクセスの非整列アドレス違反

0x24

E

非整列データ・メモリやデータ・キャッシュのアクセス。

回復不能なイベント

0x25

E

たとえば、前の例外の処理中に生成された例外。

デ ー タ・ア ク セ ス のCPLB ミス0x26

E

データ・アクセスでの CPLB ミスを通知するために MMU によって使用されます。

データ・アクセスの複数 CPLB ヒット

0x27

E

複数の CPLB エントリがデータ・フェッチ・
アドレスに一致します。

エ ミ ュ レ ー シ ョ ン・ 0x28
ウォッチポイントの一致によって引き起こされた例外

E

ウォッチポイントの一致があり、ウォッチ
ポイント命令アドレス・コントロール・レジスタ（WPIACTL）の EMUSW ビットの1 つがセットされます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-45

イベント・ベクトル・テーブル

表 4-11.

例外の原因となるイベント（続き）
EXCAUSE
[5:0]

例外

タイプ：
（E）エラー（S）サービス
注 1 を参照

注／例

命令フェッチの非整列 0x2A
アドレス違反E

非整列な命令のキャッシュ・フェッチ。非整列な命令のフェッチ例外では、RETX で提供される復帰アドレスは原因となる命令のアドレスではなく、非整列なデスティ
ネーション・アドレスです。たとえば、P0に保持されている非整列アドレスへの間接分岐が行われた場合、RETX 内の復帰アド
レスは分岐命令のアドレスではなく、P0 に等しくなります。（なお、この例外は、PC
相対分岐から生成されることはなく、間接分岐からだけ生成されます）。

命令フェッチの CPLB 0x2B
保護違反

E

不正な命令フェッチ・アクセス（メモリ保護違反）。

命令フェッチの CPLB 0x2C
ミス

E

命令フェッチでの CPLB ミス。

命 令 フ ェ ッ チ の 複 数 0x2D
CPLB ヒットE

複数の CPLB エントリが命令フェッチ・ア
ドレスと一致します。

0x2E

E

ユーザ・モードからスーパーバイザのレジ
スタや命令を使用しました。スーパーバイ
ザ・リソースは、スーパーバイザ用に予約されているレジスタや命令であり、スーパーバイザ専用レジスタ、すべての MMR、
スーパーバイザ専用命令が該当します。

スーパーバイザ・
リソースの不正使用

注 1：サービス（S）の場合、復帰アドレスは、例外に続く命令のアドレスです。エラー（E）の場合、復帰アドレスは、例外を引き起こした命令のアドレスです。

4-46

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ

1 つの命令が多重例外を引き起こした場合には、優先順位の最も高い例外だけが発生します。次の表では、例外を優先順位の降順に分類しています。
表 4-12.

優先順位の降順に示した例外

優先順位

例外

EXCAUSE1

回復不能なイベント

0x25

2

命令フェッチで複数の CPLB ヒット

0x2D

3

命令フェッチで非整列アクセス

0x2A

4

命令フェッチで保護違反

0x2B

5

命令フェッチで CPLB ミス

0x2C

6

命令フェッチでアクセス例外

0x29

7

ウォッチポイントの一致

0x28

8

未定義命令

0x21

9

不正な組合わせ0x22

10

保護リソースの不正使用

0x2E

11

DAG0 で複数の CPLB ヒット

0x27

12

DAG0 で非整列アクセス

0x24

13

DAG0 で保護違反

0x23

14

DAG0 で CPLB ミス

0x26

15

DAG1 で非整列アクセス

0x27

16

DAG1 で保護違反

0x24

17

DAG1 Protection Violation

0x23

18

DAG1 で CPLB ミス

0x26

19

EXCPT 命令m フィールド20

シングル・ステップ

0x10

21

トレース・バッファ

0x11

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-47

ハードウェア・エラー割込み■ 例外ハンドラの実行中の例外
例外ハンドラの実行中には、別の例外を生成する命令の発行を避けてください。例外ハンドラ、NMI ハンドラ、リセット・ベクトル、またはエミュ
レータ・モードでのコードの実行中に例外が引き起こされた場合：• 例外を引き起こした命令はコミットされません。その命令からのすべてのライトバックは禁止されます。
• 生成された例外は受け取られません。
• SEQSTAT の EXCAUSE フィールドは、回復不能なイベント・コードで更新されます。
• 原因となる命令のアドレスが RETX に保存されます。なお、プロセッ
サが、たとえば NMI ハンドラを実行していた場合には、RETN レジ
スタは更新されていません。例外を引き起こした命令のアドレス
は、常に RETX に格納されます。
例外ハンドラの実行中に例外が発生したかどうかを判定するには、例外ハ
ンドラの最後にある SEQSTAT を調べて、「回復不能なイベント」（EXCAUSE = 0x25）を示すコードがあるかどうかをチェックします。回復
不能なイベントが発生した場合、レジスタ RETX には例外を引き起こした最も新しい命令のアドレスが保持されています。このメカニズムは、回復ではなく検出を意図したものです。

ハードウェア・エラー割込み
ハードウェア・エラー割込みは、ハードウェア・エラーまたはシステムの誤動作を示します。ハードウェア・エラーが発生するのは、メモリ・バ
ス・コントローラなど、コアの外部にあるロジックがデータ転送（読出し／書込み）を完了することができずに、コアのエラー入力信号をアサートしたときです。このようなハードウェア・エラーは、ハードウェア・エ
ラー割込み（イベント・ベクトル・テーブル（EVT）、ILAT レジスタ、IMASK

4-48

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ

レジスタ、IPEND レジスタの割込み IVHW）を呼び出します。その後、ハードウェア・エラー割込みサービス・ルーチンは、シーケンサ・ステータ
ス・レジスタ（SEQSTAT）内に現れる 5 ビットの HWERRCAUSE フィールドからエラーの原因を読み出し、それに応じて応答できます。
ハードウェア・エラー割込みの生成原因を次に示します。
• バス・パリティ・エラー
• パフォーマンス・モニタのオーバーフローなど、コア内での内部エラー条件• ペリフェラル・エラー• バス・タイムアウト・エラー
表 4-13 に、対応するハードウェア条件を、関連する HWERRCAUSE コードとともに示します。最も新しいエラーのビット・コードは、HWERRCAUSE フィー
ルドに現われます。複数のハードウェア・エラーが同時に発生した場合には、最後のハードウェア・エラーだけが認識および処理できます。コアは、複数のエラー・コードの優先順位付け、パイプライン処理、キュー登録には対応していません。ハードウェア・エラー割込みは、いずれかのエラー条件がアクティブである限り、アクティブ状態を保ちます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-49

ハードウェア・エラー割込み

表 4-13.

ハードウェア・エラー割込みを引き起こすハードウェア条件

ハードウェア条件

HWERRCAUSE（2 進）

HWERRCAUSE（16 進）

注／例

システム MMR
エラー

0b000100x02

エラーが発生するのは、無効なシステ
ム MMR 位置がアクセスされた場合、
32 ビット・レジスタが 16 ビット命令
でアクセスされた場合、または 16 ビッ
ト・レジスタが 32 ビット命令でアクセスされた場合です。

0b00011
外部メモリ・
アドレッシング・
エラー

0x03

パフォーマンス・ 0b10010
モニタのオーバーフロー

0x12

RAISE 5 命令

0b11000

0b18

予備

その他すべてのビット組合わせ

その他すべての値

ソフトウェアが RAISE 5 命令を発行
し て ハ ー ド ウ ェ ア・エ ラ ー 割 込 み（IVHW）を呼び出しました。

■ コア・タイマ
コア・タイム割込み (IVTMR) は、コア・タイマ値がゼロに達したときにトリガされます。第 15 章「タイマ」 を参照してください。

■ 汎用割込み（IVG7 - IVG15)
汎用割込みは、プロセッサによる介在を必要とするイベントに使用されます。たとえば、DMA コントローラがデータ伝送の終了を通知するために使用したり、シリアル通信デバイスが伝送エラーを通知するために使用で
きます。

4-50

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ

ソフトウェアでも、RAISE 命令を使用して汎用割込みをトリガできます。
RAISE 命令は、割込み IVG15-IVG7、IVTMR、IVHW、NMI、RST 用のイベントを強制しますが、例外とエミュレーション（それぞれ、EVX と EMU）用には強制しません。

L

優先順位の最も低い 2つの割込み（IVG15 と IVG14）は、ソフトウェ
ア割込みハンドラ用に確保することをお勧めします。

割込みの処理コア・イベント・コントローラ（CEC）には、イベントごとに1つの割込
みキュー・エレメント（ILAT レジスタ内のビット）があります。割込みの立上がりエッジが検出されると、適切な ILAT ビットがセットされます（2つのコア・クロック・サイクルが必要）。このビットは、それぞれの IPEND
レジスタ・ビットがセットされるとクリアされます。IPEND ビットは、イベント・ベクトルがコア・パイプラインに入ったことを示します。この時
点で CEC は、対応する割込み入力での次の立上がりエッジ・イベントを認識してキューに登録します。汎用割込みの立上がりエッジ遷移からIPEND 出力のアサートまでの最小遅延は、3 つのコア・クロック・サイク
ルです。しかし、コアの動作レベルと状態によっては、遅延が増大することもあります。
割込みの処理タイミングを決定するため、コントローラは、ILAT、IMASK、現在のプロセッサ優先順位レベル内の 3 つの量の論理的なAND をとります。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-51

割込みのネスティング

優先順位の最も高い割込みの処理には、以下のアクションを伴います。
1. イベント・ベクトル・テーブル（EVT）の割込みベクトルは、次のフェッチ・アドレスになります。
割込み時には、現在パイプライン内にある大部分の命令がアボートされます。サービス例外時には、例外を引き起こした命令の後の命令はすべてアボートされます。エラー例外時には、例外を引き起こした命令とそれ以降のすべての命令がアボートされます。
2. 復帰アドレスは、適切なリターン・レジスタに保存されます。
リターン・レジスタは、割込みの場合は RETI、例外の場合は RETX、
NMI の場合は RETN、デバッグ・エミュレーションの場合は RETE となります。復帰アドレスとは、通常のプログラム・フローから実行された最後の命令の後の命令のアドレスです。
3. プロセッサ・モードには、受け取られたイベントのレベルが設定されます。
イベントが NMI、例外、または割込みである場合には、プロセッ
サ・モードはスーパーバイザです。イベントがエミュレーション例
外である場合には、プロセッサ・モードはエミュレーションです。
4. 最初の命令が実行を開始する前に ILAT 内の対応する割込みビットがクリアされ、IPEND 内の対応するビットがセットされます。
RETI 内の復帰アドレスが保存されるまでは、ビット IPEND[4] もす

べての割込みをディスエーブルにするように設定されます。

割込みのネスティング
割込みは、ネスティング付きまたはネスティングなしで処理されます。

4-52

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ■ ネストされていない割込み
割込みがネスティングを必要としない場合には、割込みサービス・ルーチ
ンの実行中にはすべての割込みがディスエーブルにされます。ただし、システムは、エミュレーション、NMI、例外を依然として受け付けます。
システムがネストされた割込みに対応する必要がない場合は、RETI に保持されている復帰アドレスを格納する必要はありません。割込みサービス・ルーチンで使用されるマシン状態の一部だけをスーパーバイザ・スタックに保存する必要があります。ネストされていない割込みサービス・ルーチ
ンから復帰するには、復帰アドレスはすでに RETI レジスタに保持されているため、RTI 命令だけを実行する必要があります。
図 4-15 は、割込みサービス・ルーチンの全体に対して割込みがグローバ
ルにディスエーブルにされている割込み処理の一例を示します。

ߎߩᦼ㑆‫ޔ‬ഀㄟߺߪ࠺ࠖࠬࠛ࡯ࡉ࡞‫ޕ‬ࡄࠗࡊ࡜ࠗࡦᲑ

ࠨࠗࠢ࡞㧦 1

2

3

4

5

6

I0

I1

I2

...

I0

I1

...

I0

...

m

m+1

m+2

m+3

m+4

A3

A4

A5

A6

A7

A3

A4

A5

A6

A3

A4

A5

A3

A4

IF 1

A9

A1 0

IF 2

A8

A9

A1 0

IF 3

A7

A8

A9

DC

A6

A7

A8

...

AC

A5

A6

A7

...

EX1

A4

A5

A6

...

EX2

A3

A4

A5

...

In

EX3

A2

A3

A4

...

In-1

EX4

A1

A2

A3

...

In-2

In-1

In

RTI

A2

...

In-3

In-2

In-1

In

WB

A0

A1

A3
RTI
RTI
RTI

RTI

ࠨࠗࠢ࡞1㧦ഀㄟߺߪ࡜࠶࠴ߐࠇ߹ߔ‫ߩߡߴߔޕ‬น⢻ߥഀㄟߺ࠰࡯ࠬ߇᳿ቯߐࠇ߹ߔ‫ޕ‬
ࠨࠗࠢ࡞2㧦ഀㄟߺߪఝవ㗅૏ઃߌߐࠇ߹ߔ‫ޕ‬
ࠨࠗࠢ࡞3㧦A2ࠃࠅ਄ߩߔߴߡߩ๮઎߇ࠠ࡞ߐࠇ߹ߔ‫ޕ‬A2ߪ‫ޔ‬RTI߹ߚߪCLI๮઎ߢ޽ࠆ႐วߦߪࠠ࡞
ߐࠇ߹ߔ‫ޕ‬ISRߩ㐿ᆎࠕ࠼࡟ࠬߩ࡞࠶ࠢࠕ࠶ࡊ߇ⴕࠊࠇ߹ߔ‫ޕ‬
ࠨࠗࠢ࡞4㧦I0㧔ISRߩవ㗡ߦ޽ࠆ๮઎㧕߇ࡄࠗࡊ࡜ࠗࡦߦ౉ࠅ߹ߔ‫ޕ‬
ࠨࠗࠢ࡞M㧦RTI๮઎߇EX1Ბߦ೔㆐ߔࠆߣ‫ޔ‬ഀㄟߺ߆ࠄߩᓳᏫߦ஻߃ߡ‫ޔ‬๮઎A3߇ࡈࠚ࠶࠴ߐࠇ߹ߔ‫ޕ‬
ࠨࠗࠢ࡞M+4㧦RTI߇WBᲑߦ೔㆐ߒ‫ޔ‬ഀㄟߺࠍౣᐲࠗࡀ࡯ࡉ࡞ߦߒ߹ߔ‫ޕ‬

図 4-15. ネストされていない割込みの処理

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-53

割込みのネスティング■ ネストされた割込み
割込みがネスティングを必要とする場合には、元の割込みサービス・ルー
チン内の割り込まれたポイントへの復帰アドレスを明示的に保存し、その後、ネストされた割込みサービス・ルーチンの実行が完了したときに復元する必要があります。ネスティングをサポートする割込みサービス・ルー
チン内の最初の命令では、現在 RETI に保持されている復帰アドレスをスー
パ ー バ イ ザ・ス タ ッ ク に プ ッ シ ュ し て 保 存 す る 必 要 が あ り ま す（[--SP] = RETI）。これによってグローバル割込みディスエーブル・ビッ
ト IPEND[4] がクリアされ、割込みがイネーブルになります。次に、割込
みサービス・ルーチンによって変更されるすべてのレジスタが、スーパーバイザ・スタックに保存されます。プロセッサ状態は、ユーザ・スタック
ではなく、スーパーバイザ・スタックに格納されます。したがって、RETI
をプッシュする命令（[--SP] = RETI）と RETI にポップする命令（RETI = [SP++]）では、スーパーバイザ・スタックを使用します。

4-54

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ

図 4-16 では、上記の動作を、RETI をスタックにプッシュすることで説明します。割込みは、割込みサービス・ルーチンの実行中に再びイネーブルにできるため、割込みが短期間だけグローバルにディスエーブルにされます。

ߎߩᦼ㑆‫ޔ‬ഀㄟߺߪ࠺ࠖࠬࠛ࡯ࡉ࡞

ߎߩᦼ㑆‫ޔ‬ഀㄟߺߪ࠺ࠖࠬࠛ࡯ࡉ࡞

ࡄࠗࡊ࡜ࠗࡦᲑ

ࠨࠗࠢ࡞㧦 1

2

3

m+4

m+5

A6

A7

A3

A4

A5

A6

A3

A4

A5

A3

A4

...

PUSH

I1

I2

I3

I4

I5

...

PUSH

I1

I2

I3

I4

...

PUSH

I1

I2

I3

...

I1

I2

...

RT I

PUSH

I1

...

POP

RTI

PUSH

...

In
I n-1

POP

RTI

...

In

POP

RTI

A3

...

I n-2

I n-1

In

POP

RTI

A2

...

I n-3

I n-2

I n-1

In

POP

A9

A1 0

IF 3

A7

A8

A9

DC

A6

A7

A8

AC

A5

A6

A7

EX1

A4

A5

A6

EX2

A3

A4

A5

EX3

A2

A3

A4

EX4

A1

A2

WB

A0

A1

PUSH

m

A5

I6

A8

10

m+3

I5

IF 2

9

A4

I4

PUSH

8

m+2

I3

A10

5

A3

7

I2

A9

4

m+1

6
I1

IF 1

A3

ࠨࠗࠢ࡞1㧦ഀㄟߺߪ࡜࠶࠴ߐࠇ߹ߔ‫ߩߡߴߔޕ‬น⢻ߥഀㄟߺ࠰࡯ࠬ߇᳿ቯߐࠇ߹ߔ‫ޕ‬
ࠨࠗࠢ࡞2㧦ഀㄟߺߪఝవ㗅૏ઃߌߐࠇ߹ߔ‫ޕ‬
ࠨࠗࠢ࡞3㧦A2ࠃࠅ਄ߩߔߴߡߩ๮઎߇ࠠ࡞ߐࠇ߹ߔ‫ޕ‬A2ߪ‫ޔ‬RTI߹ߚߪCLI๮઎ߢ޽ࠆ႐วߦߪࠠ࡞ߐࠇ߹ߔ‫ޕ‬
ISRߩ㐿ᆎࠕ࠼࡟ࠬߩ࡞࠶ࠢࠕ࠶ࡊ߇ⴕࠊࠇ߹ߔ‫ޕ‬
ࠨࠗࠢ࡞4㧦I0㧔ISRߩవ㗡ߦ޽ࠆ๮઎㧕߇ࡄࠗࡊ࡜ࠗࡦߦ౉ࠅ߹ߔ‫ޕ‬ߎࠇߪ㧔ࡀࠬ࠹ࠖࡦࠣࠍࠗࡀ࡯ࡉ࡞ߦߔࠆ㧕PUS HRETI๮઎ߢ޽ࠆߣᗐቯߒ߹ߔ‫ޕ‬ࠨࠗࠢ࡞10㧦ࡊ࠶ࠪࡘ߇EX2Ბߦ೔㆐ߔࠆߣ‫ޔ‬ഀㄟߺߪౣ߮ࠗࡀ࡯ࡉ࡞ߦߐࠇ߹ߔ‫ޕ‬
ࠨࠗࠢ࡞M+1㧦POP RETI๮઎߇EX2Ბߦ೔㆐ߔࠆߣ‫ޔ‬ഀㄟߺߪ࠺ࠖࠬࠛ࡯ࡉ࡞ߦߐࠇ߹ߔ‫ޕ‬
ࠨࠗࠢ࡞M+5㧦RTI߇WBᲑߦ೔㆐ߔࠆߣ‫ޔ‬ഀㄟߺߪౣ߮ࠗࡀ࡯ࡉ࡞ߦߐࠇ߹ߔ‫ޕ‬

図 4-16. ネストされた割込みの処理

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-55

RTI

割込みのネスティング

X ネストされた割込みサービス・ルーチンのプロローグ・コード例

リスト 4-2. ネストされた ISR のプロローグ・コード/* ネストされた割込みサービス・ルーチンのプロローグ・コード。
RETI 内の復帰アドレスをスーパーバイザ・スタックにプッシュして、割込みが再開されるようにします。今まで、割込みは中断されていました。*/
ISR:[--SP] = RETI ; /* 割込みをイネーブルにし、復帰アドレスをスタックに保存しま
す */[--SP] = ASTAT ;[--SP] = FP ;[-- SP] = (R7:0, P5:0) ;/* サービス・ルーチンの本体。なお、いずれのプロセッサ・リソース（アキュムレー
タ、DAG、ループ・カウンタ、ループ範囲）も保存されていません。この割込みサービ
ス・ルーチンでは、プロセッサ・リソースを使用しないと想定します。 */X ネストされた割込みサービス・ルーチンのエピローグ・コード例

リスト 4-3. ネストされた ISR のエピローグ・コード/* ネストされた割込みサービス・ルーチンのエピローグ・コード。
ASTAT レジスタ、データ・レジスタ、ポインタ・レジスタを復元します。スーパーバイ
ザ・スタックから RETI にポップすることで、復帰アドレスのロードと RTI との間で割込みが中断されます。 */(R7:0, P5:0) = [SP++] ;FP= [SP++] ;ASTAT = [SP++] ;RETI= [SP++] ;/* RTI を実行して復帰アドレスにジャンプし、割込みを再びイネーブルにし、ユーザ・モードに切り替えます（これが処理中に最後にネストされた割込みである場合）。 */
RTI;

4-56

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ

RTI 命令によって、割込みからの復帰が行われます。復帰アドレスはスタッ

クから RETI レジスタにポップされます。このアクションによって、RETI が復元された時点から RTI が実行を完了するまで割込みは中断されます。割込みの保留によって、それ以降の割込みによる RETI レジスタの破壊を防止します。
次に、RTI 命令では、現在 IPEND でセットされている優先順位の最も高いビットをクリアします。その後、プロセッサは RETI レジスタの値でポイン
トされているアドレスにジャンプし、IPEND[4] をクリアして割込みを再びイネーブルにします。
X ネストされた割込み要求のロギング

システム割込みコントローラ（SIC）は、ペリフェラルからのレベル・センシティブな割込み要求を検出します。コア・イベント・コントローラ（CEC）は、その汎用割込み（IVG7-IVG15）にエッジ・センシティブな検出を提供します。したがって、SICは CECへの同期割込みパルスを生成した後、CEC からの割込み確認通知を待機します。割込みが（適切な IPEND
出力のアサーションによって）コアから確認通知されると、ペリフェラル
割込みがまだアサートされている場合には、SICは CECへの別の同期割込
みパルスを生成します。このように、システムは別の割込みの処理中に発生するペリフェラル割込み要求を紛失しません。
複数の割込みソースを 1つのコア・プロセッサの汎用割込みにマッピング
できます。このため、SICからの複数のパルス・アサーションは、この割込み入力ですでに検出されている割込みイベントに対する割込みの処理
中または処理前に同時に行うことができます。共有割込みの場合、上述のIPEND 割込みアクノレッジ・メカニズムは、すべての共有割込みを再びイネーブルにします。まだアサートされている共有割込みソースがある場合には、SIC によって少なくとも 1 つのパルスが再び生成されます。割込み
ステータス・レジスタでは、共有割込みソースの現在の状態を示します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-57

割込みのネスティング■ 例外処理割込みと例外では、パイプライン内の命令の処理が異なります。
• 割込みが発生すると、パイプライン内のすべての命令がアボートされます。
• 例外が発生すると、パイプライン内の例外を引き起こした命令より後のすべての命令がアボートされます。エラー例外の場合には、例外を引き起こした命令もアボートされます。
例外、NMI、エミュレーション・イベントには専用のリターン・レジスタがあるため、復帰アドレスの保護はオプションです。したがって、例外、
NMI、エミュレーション・イベントに対する PUSH 命令と POP 命令は、割込
みシステムに影響を与えません。
しかし、例外（RTX、RTN、RTE）に対する復帰命令は、IPEND で現在セットされている最下位のビットをクリアします。
X 例外処理の遅延

例外ハンドラは一般に、長いルーチンとなります。なぜなら、複数の例外
原因を見分けて、それに応じた是正処置をとる必要があるためです。ルーチンの長さが増大することで、割込みシステムが事実上中断されることも
あります。

4-58

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ

割込みの長期の保留を回避するには、例外原因を識別する例外ハンドラを作成し、その処理を優先順位の低い割込みに任せます。優先順位の低い割
込みハンドラを設定するには、Force Interrupt / Reset（RAISE）命令を使
用します。

L

例外の処理を優先順位の低い割込み IVGx に任せるとき、システムはIVGx に入ってから、例外を発行したアプリケーションレベル・コードに復帰することを保証しなければなりません。IVGx より優先順位の高いペンディング割込みが発生した場合には、IVGx より前に優先
順位の高い割込みに入ってもかまいません。

X 例外ハンドラのコード例

次に、保留処理付きの例外ルーチン・ハンドラのコードを示します。
リスト 4-4. 保留処理付きの例外ルーチン・ハンドラ/* SEQSTAT の EXCAUSE フィールドを検査して例外原因を確認（最初に R0、P0、P1、
ASTAT の内容をスーパーバイザ SP に保存） */[--SP] = R0 ;[--SP] = P0 ;[--SP] = P1 ;[--SP] = ASTAT ;R0 = SEQSTAT ;/* SEQSTAT の内容をマスクし、EXCAUSE だけを R0 内に残す */R0 <<= 26 ;R0 >>= 26 ;/* ジャンプ・テーブル EVTABLE を使用して、R0 によってポイントされるイベントにジャンプ */
P0 = R0 ;P1 = _EVTABLE ;P0 = P1 + ( P0 << 1 ) ;R0 = W [ P0 ] (Z) ;ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-59

割込みのネスティング

P1 = R0 ;JUMP (PC + P1) ;/* イベントのエントリ・ポイントは次のとおりです。ここで、処理は優先順位の低い
割込み IVG15 に任せられます。また、パラメータの受け渡しも一般にここで行われます。
*/_EVENT1:
RAISE 15 ;JUMP.S _EXIT ;/* IVG14 でのイベントのエントリ */_EVENT2:
RAISE 14 ;JUMP.S _EXIT ;/* 他のイベントのコメント *//* ハンドラの最後で、R0、P0、P1、ASTAT を復元し、復帰する。 */_EXIT:ASTAT = [SP++] ;P1 = [SP++] ;P0 = [SP++] ;R0 = [SP++] ;RTX ;_EVTABLE:. バイト 2 addr_event1;. バイト 2 addr_event2;...
. バイト 2 addr_eventN;/* ジャンプ・テーブル EVTABLE には、イベントごとの 16 ビット・アドレス・オフセットが保持されます。オフセットによって、このコードは位置独立であり、テーブルは小さくなります。
+--------------+| addr_event1| _EVTABLE+--------------+| addr_event2

4-60| _EVTABLE + 2

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ+--------------+
|

. . .

|

+--------------+| addr_eventN| _EVTABLE + 2N+--------------+*/

X 例外ルーチンのコード例

次のコードは、上述のような例外ハンドラとの間でジャンプする割込みルーチンのフレームワーク例を提供します。
リスト 4-5. 例外処理用の割込みルーチン[--SP] = RETI ;/* 復帰アドレスをスタックにプッシュする。 *//* ここにルーチンの本体を置く。*/
RETI = [SP++] ;RTI ;/* 復帰するには、復帰アドレスをポップしてジャンプする。 *//* 割込みから復帰する。 */X ISR でハードウェア・ループを使用するためのコード例

次のコードでは、割込みサービス・ルーチンでハードウェア・ループを使用する際の、保存と復元の最適な方式を示します。
リスト 4-6. ハードウェア・ループによる保存と復元
lhandler:< ここに他のレジスタを保存 >[--SP] = LC0;[--SP] = LB0;/* ループ 0 を保存 */ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-61

割込みのネスティング[--SP] = LT0;
< ここにハンドラ・コード >/* ハンドラがループ 0 を使用する場合には、最後に LC0 ＝ 0 にしておくことをお勧めします。通常、ループが完全に実行されると自然にこうなります。LC0 == 0 の場合、LT0と LB0 の復元は、サイクル数の増加を招きません。LC0 != 0 の場合、以下のポップが発生すると、ポップのたびに 10 サイクルの「再実行」損失を招きます。ポップや LC0 の書込みは、常に損失を招きます。 */LT0 = [SP++];
LB0 = [SP++];
LC0 = [SP++];/* これは「再生」、つまり 10 サイクルの再フェッチを引き起こします。 */< ここに他のレジスタを復元 >RTI;■ その他のユーザビリティ問題
以下の節では、その他のユーザビリティ問題について説明します。
X 優先順位の低いイベントでの RTX、RTN、または RTE の実行

命令 RTX、RTN、RTE は、それぞれ例外、NMI、またはエミュレータ・イベ
ントから復帰するように設計されています。これらの命令は優先順位の低いイベントからの復帰に使用しないでください。割込みからの復帰には
RTI 命令を使用します。正しい命令を使用しないと、思いがけない結果を引き起こすことがあります。
RTX の場合には、
ビット IPEND[3] がクリアされます。RTI の場合には、IPEND

での優先順位の最も高い割込みのビットがクリアされます。

4-62

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ

X システム・スタックの割当て

例外処理用のソフトウェア・スタック・モデルによれば、例外ハンドラがその状態を保存している間は、スーパーバイザ・スタックは例外を生成してはいけません。しかし、スーパーバイザ・スタックが CPLBエントリやSRAMブロックを越えて成長した場合には、実際には例外を生成することもあります。
スーパーバイザ・スタックが例外を生成しない（つまり、例外ハンドラの実行中に、CPLBエントリやSRAM ブロックを越えてオーバーフローしない）ことを保証するには、すべての割込みサービス・ルーチンと例外ハンドラがアクティブ時に占有する最大空間を計算して、その量の SRAM メモ
リを割り当てます。

■ イベント処理における遅延プロセッサ・アーキテクチャによっては、命令が外部メモリから実行され、命令フェッチ動作の進行中に割込みが発生した場合は、現在のフェッチ動作が完了するまで割込みの処理は先送りにされます。プロセッサが300MHz で動作し、100ns のアクセス・タイムで外部メモリからのコードを実行しているとします。命令フェッチ動作での割込みの発生タイミングにもよりますが、割込みサービス・ルーチンはおよそ 30命令クロック・サ
イクルだけ先送りにされることもあります。キャッシュ・ライン・フィル
動作を考慮に入れると、割込みサービス・ルーチンの先送りは数百サイク
ルに及ぶ場合もあります。
優先順位の高い割込みを最小の遅延で処理するためには、プロセッサは高遅延のフィル動作をシステム・レベルで完了できるようにし、割込みサー
ビス・ルーチンは L1メモリから実行するようにします。図 4-17を参照してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-63

割込みのネスティングࠢࡠ࠶ࠢઁߩࡊࡠ࠮࠶ࠨ
ࡈࠚ࠶࠴

๮઎࠺࡯࠲

ഀㄟߺߪߎߎߢ⊒↢ߎߎߢಣℂBlackfinࡊࡠ࠮࠶ࠨ
ࡈࠚ࠶࠴

๮઎࠺࡯࠲

ഀㄟߺߪ
ߎߎߢ⊒↢

ߎߎߢಣℂ

図 4-17. 割込みサービス・ルーチンの処理における遅延の最小化
命令のロード動作で L1命令キャッシュをミスして、高遅延のライン・フィ
ル動作を生成した場合には、割込みが発生しても、割込みはフィルが完了するまで先送りされません。代わりに、プロセッサは割込みサービス・
ルーチンをその新しいコンテキストで実行します。また、キャッシュ・
フィル動作はバックグラウンドで完了します。
なお、プロセッサは元のキャッシュ・ライン・フィル動作の実行で、すでにビジー状態です。したがって、割込みサービス・ルーチンは、L1 キャッシュまたは SRAM メモリ内に存在する必要があり、キャッシュ・ミス、L2
メモリ・アクセス、ペリフェラル・アクセスを引き起こしてはいけません。これらのアクセスの 1 つを必要とする割込みサービス・ルーチンで

4-64

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラム・シーケンサ

ロードまたはストア動作が実行される場合には、元の外部アクセスが実行される間は、割込みサービス・ルーチンが先送りされてから新しいロード
またはストアが開始されます。
ロード動作が完了する前に割込みサービス・ルーチンが実行を完了した場
合には、プロセッサはストールを継続して、フィルの完了を待機します。
これと同じ動作は、低速なデータ・メモリやペリフェラルの読出しを伴うストールの場合にも出現します。
一般に、この動作は低速メモリへの書込みによっては生じません。なぜな
ら、書込みは単一サイクルと見なされ、それ以降の実行のためにすぐに書込みバッファに転送されるからです。
キャッシュとメモリ構造の詳細については、第 6 章「メモリ」を参照してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

4-65

割込みのネスティング

4-66

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

第5章

データ・アドレス・ジェネレータ

データ・アドレス・ジェネレータ（DAG）は、メモリとの間でデータ移動するためのアドレスを生成します。DAG が生成するアドレスによって、プログラムは絶対アドレスの代わりに DAG レジスタを使用して、アドレスを間接的に参照できます。
5-3 ページの図 5-1 に示す DAG アーキテクチャは、データ・アクセス・
ルーチンでのオーバーヘッドを最小限に抑えるいくつかの機能をサポートします。これらの機能には以下のものが含まれます。
• アドレス提供：データ・アクセス時にアドレスを提供します。
• アドレス提供と後更新：データ移動時にアドレスを提供し、格納されたアドレスを次の移動のためにオートインクリメント／オート
デクリメントします。
• オフセット付きでのアドレス提供：元のアドレス・ポインタをインクリメントせずに、オフセット付きでベースからのアドレスを提供します。
• アドレス更新：データ移動を行わずに、格納されたアドレスをインクリメント／デクリメントします。
• ビット反転キャリー・アドレス：格納されたアドレスを反転せずに、データ移動時にビット反転キャリー・アドレスを提供します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

5-1

DAG サブシステムは、2つの DAG 演算ユニット、9本のポインタ・レジス
タ、4 本のインデックス・レジスタ、および関連する 4組のモディファイ・
レジスタとベース・レジスタとレングス・レジスタで構成されます。これ
らのレジスタは、DAGがアドレスの生成に使用する値を保持しています。
レジスタのタイプは次のとおりです。
• インデックス・レジスタ I[3:0]。32 ビットの符号なしインデック
ス・レジスタは、メモリへのアドレス・ポインタを保持します。たとえば、命令 R3 = [I0] では、レジスタ I0 によってポイントされるメモリ位置にあるデータ値をロードします。インデックス・レジ
スタは、16/32ビットのメモリ・アクセスに使用できます。
• モディファイ・レジスタ M[3:0]。32 ビットの符号付きモディファ
イ・レジスタは、レジスタ間移動中にインデックス・レジスタが後更新されるインクリメントまたはステップのサイズを提供します。
たとえば、命令 R0 = [I0 ++ M1] では、DAGに対して次のように指示します。
– アドレスをレジスタ I0 に出力– I0 によってポイントされるメモリ位置の内容を R0 にロード
– I0 の内容を M1 レジスタに含まれる値によって変更• ベース・レジスタ B[3:0] とレングス・レジスタ L[3:0]。32 ビットの符号なしベース・レジスタとレングス・レジスタは、循環バッ
ファのアドレス範囲と開始アドレスを設定します。B、L の各ペアは、たとえば I3、B3、L3 のように、常に対応するI レジスタと結合しています。循環バッファの詳細については、5-6 ページの「循環バッファのアドレッシング」を参照してください。
• ポインタ・レジスタ P[5:0]、FP、USP、SP。32 ビットのポインタ・レジスタは、メモリへのアドレス・ポインタを保持します。P[5:0]
フィールド、FP（フレーム・ポインタ）、SP/USP（スタック・ポイ
ンタ／ユーザ・スタック・ポインタ）は、さまざまな命令で操作および使用することができます。たとえば、命令 R3 = [P0] では、レ5-2

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

データ・アドレス・ジェネレータ

ジスタ P0 によってポイントされるメモリ位置にあるデータ値をレ
ジスタ R3 にロードします。ポインタ・レジスタは循環バッファのアドレッシングに影響を与えません。ポインタ・レジスタは 8/16/32
ビットのメモリ・アクセスに使用できます。モード保護を強化する
ため、USP にはユーザ・モードでアクセスできますが、SP にはスーパーバイザ・モードでのみアクセスできます。

L

L レジスタについては、リニア・アドレッシング用に自動的にゼロに初期化されると想定しないでください。I、M、L、B の各レジス
タには、リセット後にランダムな値が格納されます。使用する I レ
ジスタごとに対応する L レジスタを、リニア・アドレッシングの場
合はゼロに、循環バッファ・アドレッシングの場合はバッファ長に、それぞれプログラムで初期化しなければなりません。

L

すべての DAG レジスタは、個別に初期化する必要があります。Bレ
ジスタを初期化しても、I レジスタは自動的に初期化されません。
データ・アドレス・ジェネレータ（DAG）レジスタ
I0

L0

B0

M0

P0

I1

L1

B1

M1

P1

I2

L2

B2

M2

P2

I3

L3

B3

M3

P3
P4
P5
ユーザSP
スーパーバイザ SP
FP

スーパーバイザ専用レジスタ。ユーザ・モードで読出し／書込みを行うと、例外エラーが発生します。

図 5-1.

プロセッサの DAG レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

5-3

DAG によるアドレッシング

DAG によるアドレッシング
DAG は、値またはレジスタによってインクリメントされるアドレスを生成できます。後更新アドレッシングでは、DAG はI レジスタの値を変更なしで出力します。その後、DAGは Mレジスタまたは即値を I レジスタに加算します。
インデックス・アドレッシングでは、DAG は P レジスタ内の値に小さな
オフセットを加算しますが、この新しい値で P レジスタを更新することはありません。このように、その特定のメモリ・アクセス用のオフセットを提供します。
プロセッサはバイト・アドレス方式です。すべてのデータ・アクセスは
データ・サイズに整列させる必要があります。つまり、32ビットのフェッ
チは 32ビットに合わせる必要がありますが、8 ビットのストアは任意のバ
イトに合わせることができます。使用するデータのタイプに応じて、DAG
レジスタへのインクリメントとデクリメントは、8/16/32 ビットのアクセスに合わせて 1、2、または4 とすることができます。
たとえば、次の命令を考えてみます。
R0 = [ P3++ ];この命令は、P3 の値によってポイントされる32 ビット・ワードをフェッ
チし、それを R0 に格納します。その後、P3 を 4 だけポストインクリメント
し、32ビット・アクセスとの整合性を維持します。
R0.L = W [ I3++ ];この命令は、I3 の値によって指し示される16 ビット・ワードをフェッチし、それをデスティネーション・レジスタの下位ハーフ R0.L に格納します。その後、I3 を 2 だけポストインクリメントし、16ビット・アクセスとの整合性を維持します。
R0 = B [ P3++ ] (Z) ;5-4

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

データ・アドレス・ジェネレータ

この命令では、P3 の値によって指し示される8ビット・ワードをフェッチし、それをデスティネーション・レジスタ R0 に格納します。その後、P3 を
1 だけポストインクリメントして、8 ビット・アクセスとの整合性を維持します。バイト値については、ゼロ拡張したり、32ビットのデータ・レジ
スタに符号拡張したりできます。
インデックス・レジスタを使用する命令では、修飾子として Mレジスタまたは小さな即値（+/-2 または 4）を使用します。ポインタ・レジスタを使用する命令では、修飾子として小さな即値または別の P レジスタを使用します。詳細については、5-18 ページの表 5-3「DAG 命令のまとめ」を参照してください。

■ フレーム・ポインタとスタック・ポインタ
フレーム・ポインタ・レジスタとスタック・ポインタ・レジスタは、多くの点で他の P レジスタ P[5:0] と同じように動作します。これらのレジスタは、たとえば R1 = B[SP] (Z) のように、任意のロード／ストア命令で一般のポインタとして機能できます。しかし、FP と SP にはこれ以外の機能もあります。
スタック・ポインタ・レジスタには、次のレジスタが含まれます。
• ユーザ・スタック・ポインタ（スーパーバイザ・モードでは USP 、
ユーザ・モードでは SP）• スーパーバイザ・スタック・ポインタ（スーパーバイザ・モードでは SP）
ユーザ・スタック・ポインタ・レジスタとスーパーバイザ・スタック・ポ
インタ・レジスタは、レジスタ・エイリアス SP を使用してアクセスされます。その時のプロセッサ動作モードに応じて、これらのレジスタの 1つだ
けがアクティブとなり、SP としてアクセスできます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

5-5

DAG によるアドレッシング• ユーザ・モードは、SP への参照（たとえば、スタック・ポップ
R0 = [ SP++ ] ;）では、有効アドレスとして暗黙的に USP を使用します。
• スーパーバイザ・モードは、SP への同じ参照（たとえば、R0 = [ SP++ ] ;）では、有効アドレスとして暗黙的にスーパーバイザ・スタック・ポインタを使用します。
スーパーバイザ・モードで動作するコードを対象としてユーザ・ス
タック・ポインタを操作するには、レジスタ・エイリアス USP を使用します。スーパーバイザ・モードでは、USP からのレジスタ間移動（たとえば、R0 = USP ;）によって、現在のユーザ・スタック・ポインタは R0 に転送されます。レジスタ・エイリアス USP は、スーパーバイザ・モードでのみ使用できます。
いくつかのロード／ストア命令は、暗黙的に FP と SP を使用します。
• FP インデックス付きのロード／ストア：アドレッシング範囲を 16
ビット・エンコードされたロード／ストア用に拡張します。
• スタックのプッシュ／ポップ命令：複数のレジスタをプッシュ／
ポップする命令を含みます。
• リンク／アンリンク命令：スタック・フレーム空間を制御し、その空間用にフレーム・ポインタ・レジスタ（FP）を管理します。

■ 循環バッファのアドレッシング
DAG は循環バッファのアドレッシングに対応しています。循環バッファとは、DAG が繰り返し段階的に実行するデータを含んでいる一連のアドレスであり、折り返しによって同じアドレス範囲を循環的に繰り返し、段階的な実行ができます。
DAG は、循環バッファのアドレッシング用に 4 種類の DAG レジスタを使用します。循環バッファリングの場合、レジスタは次のように動作します。

5-6

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

データ・アドレス・ジェネレータ

• インデックス（I）レジスタには、DAGがアドレス・バスに出力する値が含まれています。
• モディファイ（M）レジスタには、各メモリ・アクセスの最後にDAG が Iレジスタに加算する後更新量（正または負）が含まれています。
M レジスタと Iレジスタは自由に組合わせて使用できます。更新値
は、Mレジスタの代わりに即値とすることもできます。更新値のサ
イズは、循環バッファの長さ（L レジスタ）以下であることが必要です。
• レングス（L）レジスタは、循環バッファのサイズと、DAG がI レ
ジスタを巡回させるアドレス範囲を設定します。
L は正であり、232 － 1を超える値を持つことはできません。L レジ
スタの値がゼロである場合には、その循環バッファ動作はディスエーブルにされます。
• ベース（B）レジスタ（または B レジスタ）＋ L レジスタは、各ア
クセスの後で DAGが更新された Iレジスタ値と比較する値です。
循環バッファのアドレス指定を行うには、DAG はバッファ値の範囲内で
インデックス・ポインタ（I レジスタ）を段階的に変化させ、アクセスのたびに M レジスタからの正または負の更新値でインデックスを後更新します。
インデックス・ポインタがバッファ範囲を外れた場合には、DAG は値からバッファの長さ（Lレジスタ）を引くか、値にバッファの長さを足して、インデックス・ポインタをバッファ内に折り返します。
DAG が折り返すこの開始アドレスは、バッファのベース・アドレス（Bレジスタ）と呼ばれます。8 ビット・データを含む循環バッファのベース・アドレスの値には何の制約もありません。16/32 ビット・データを含む循
環バッファは、それぞれ 16/32 ビットに整列する必要があります。例外は、
ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

5-7

DAG によるアドレッシング

ビデオ動作用に作成できます。詳細については、5-14 ページの「メモリのアドレス整列」を参照してください。循環バッファリングでは、後更新
アドレッシングを使用します。

㐳ߐ㧩ࡌ࡯ࠬ࡮ࠕ࠼࡟ࠬ㧩;
ୃ㘼ሶ㧩

;



;

;

;

;

;

;

;

;

;

;

;

;

;

;

;

;

;

;

;





;



;

;

;

;

;

;

;

;

;

;

;

;

;

;

;





;

;

;

;$

;$



;$







;


;$

਄ߩᰣߦߪ‫ࠆࠇߐࠬ࠮ࠢࠕߢࠬࡄࡦࡢޔ‬૏⟎ࠍ㗅ߦ␜ߒ߹ߔ‫ߩߎޕ‬㗅ᐨߪ‫ޔ‬એ㒠ߩࡄࠬߢ߽➅ࠅ㄰ߐࠇ߹ߔ‫ޕ‬

図 5-2.

循環バッファ

図 5-2に示すように、バッファへの最初の後更新アクセスで、DAG はI レ
ジスタ値をアドレス・バス上に出力してから、更新値を加算してアドレスを変更します。
• 更新されたインデックス値がバッファ長の範囲内である場合には、DAG はその値をI レジスタに書き込みます。
• 更新されたインデックス値がバッファ長を超える場合には、DAG
は L レジスタ値を引く（正の更新値の場合）または足してから（負の更新値の場合）、更新されたインデックス値を I レジスタに書き込
みます。

5-8

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

データ・アドレス・ジェネレータ

方程式の形では、これらの後更新動作とラップアラウンド動作は、「I+M」
演算では次のようになります。
• M が正：Inew = Iold + M
Iold + M < バッファ・ベース + 長さ（バッファの末尾）の場合
Inew = Iold + M – L
Iold + M ≥ バッファ・ベース + 長さ（バッファの末尾）の場合• M が負：Inew = Iold + M
Iold + M ≥ バッファ・ベース（バッファの先頭）の場合
Inew = Iold + M + L
Iold + M < バッファ・ベース（バッファの先頭）の場合■ ビット反転アドレスによるアドレッシング
いくつかのアルゴリズム（特に高速フーリエ変換（FFT）計算）で正順の結果を得るには、プログラムにビット反転キャリー・アドレッシングが必要になります。これらのアルゴリズムの条件を満たすため、DAG のビッ
ト反転アドレッシング機能では、データ・シーケンスを繰り返し細分割して、このデータをビット反転して格納します。ビット反転アドレッシングの詳 細 に つい て は、『ADSP-BF53x Blackfin Processor Instruction Set
Reference』の Modify-Increment 命令を参照してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

5-9

インデックス・レジスタとポインタ・レジスタによるインデックス・アド
レッシング

インデックス・レジスタとポインタ・レジスタ
によるインデックス・アドレッシング
インデックス・アドレッシングは、インデックス・レジスタまたはポイン
タ・レジスタの値を有効アドレスとして使用します。この命令では、16/32
ビット値をロード／ストアできます。デフォルトは 32ビット転送です。16ビット転送が必要な場合には、ロード／ストアの前に W 指示子を付けます。
例：
R0 = [ I2 ] ;I2 によって指し示されたアドレスから 32 ビット値をロードし、それをデスティネーション・レジスタ R0 にストアします。
R0.H = W [ I2 ] ;I2 によって指し示されたアドレスから 16 ビット値をロードし、それを16ビットのデスティネーション・レジスタ R0.H. にストアします。
[ P1 ] = R0 ;32ビットのストア操作の一例です。
ポインタ・レジスタは、8ビットのロード／ストアに使用できます。
例：
B [ P1++] = R0 ;R0 レジスタからの8ビット値をP1 レジスタによって指し示されたアドレスにストアして、P1 レジスタをインクリメントします。

5-10

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

データ・アドレス・ジェネレータ

■ オートインクリメントとオートデクリメントのアドレッシ
ング
オートインクリメント・アドレッシングは、アクセスの後でポインタ・レ
ジスタとインデックス・レジスタを更新します。インクリメントの量は
ワード・サイズに依存します。32 ビット・ワードのアクセスはポインタが4 だけ更新されます。16 ビット・ワードのアクセスはポインタが2 だけ更新され、8 ビット・ワードのアクセスはポインタが 1 だけ更新されます。
8/16 ビットの読出し動作は、内容がデスティネーション・レジスタに符号拡張またはゼロ拡張されることがあります。ポインタ・レジスタは 8/16/32
ビットのアクセスに使用できますが、インデックス・レジスタは 16/32 ビットのアクセスにだけ使用できます。
例：
R0 = W [ P1++ ] (Z) ;P1 ポインタ・レジスタによって指し示されたアドレスから、32 ビットのデスティネーション・レジスタに 16 ビット・ワードをロードします。その後、ポインタは 2だけインクリメントされ、ワードはゼロ拡張されて32ビットのデスティネーション・レジスタに詰め込まれます。
オートデクリメントの場合も、アクセスの後でアドレスをデクリメントすることで同様に機能します。
例：
R0 = [ I2-- ] ;32ビット値をデスティネーション・レジスタにロードし、インデックス・
レジスタを 4 だけデクリメントします。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

5-11

インデックス・レジスタとポインタ・レジスタによるインデックス・アド
レッシング■ スタック・ポインタ・アドレッシングの前更新
プロセッサでの唯一の前更新命令は、スタック・ポインタ・レジスタ SP を使用します。SP 内のアドレスは 4だけデクリメントされてから、ストア用の有効アドレスとして使用されます。命令 [ --SP ] = R0 ; はスタックのプッシュ動作に使用され、32ビットのワード転送だけに対応します。

■ 即値オフセットによるインデックス・アドレッシング
インデックス・アドレッシングを使用すれば、データ・テーブルのベースを基準にしてプログラムがデータ・テーブルから値を取得できます。ポイ
ンタ・レジスタは、即値フィールドによって変更されてから有効アドレスとして使用されます。ポインタ・レジスタの値は更新されません。

L

最終アドレスが非整列である場合、整列例外がトリガされます。

たとえば、P1 = 0x13 である場合には、[P1 + 0x11] はすべてのアクセスに対して整列されている [0x24] と実質的に等しくなります。

■ 後更新アドレッシング
後更新アドレッシングでは、インデックス・レジスタやポインタ・レジス
タ内の値を有効アドレスとして使用してから、別のレジスタの内容によってそれを変更します。ポインタ・レジスタは他のポインタ・レジスタによって変更されます。インデックス・レジスタはモディファイ・レジスタによって変更されます。後更新アドレッシングでは、デスティネーション
としてのポインタ・レジスタを使えません。また、バイト・アドレッシン
グにも対応していません。
例：
R5 = [ P1++P2 ] ;P1 レジスタによって指し示されるメモリ位置にある 32 ビット値を、R5 レ

ジスタにロードします。
5-12

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

データ・アドレス・ジェネレータ

その後、P2 レジスタの値が P1 レジスタの値に加算されます。
例：
R2 = W [ P4++P5 ] (Z) ;16ビット・ワードをデスティネーション・レジスタ R2 の下位ハーフにロードし、それを 32 ビットにゼロ拡張します。ポインタ P4 の値は、ポインタ
P5 の値によってインクリメントされます。
例：
R2 = [ I2++M1 ] ;32ビット・ワードをデスティネーション・レジスタ R2 にロードします。インデックス・レジスタ I2 の値は、モディファイ・レジスタ M1 の値によって更新されます。

DAG レジスタとポインタ・レジスタの変更
DAG は、アドレスを出力せずにインデックス・レジスタのアドレス値を変更する動作が可能です。アドレス変更と呼ばれるこの動作は、ポインタの維持に役立ちます。
アドレス変更動作は、メモリにアクセスせずに DAG インデックスとポイ
ンタ・レジスタ（I[3:0]、P[5:0]、FP、SP）内のアドレスを変更します。
インデックス・レジスタの対応する B レジスタと L レジスタが循環バッ
ファリング用に設定されている場合には、アドレス変更動作では指定のバッファ・ラップアラウンドを実行します（必要な場合）。
この構文は、後更新アドレッシング（インデックス＋＝修飾子）に似ています。インデックス・レジスタの場合、Mレジスタは修飾子として使用されます。ポインタ・レジスタの場合、別の Pレジスタが修飾子として使用されます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

5-13

メモリのアドレス整列

I1 += M2 ; という例を考えてみます。

この命令では、M2 を I1 に加算し、I1 を新しい値で更新します。

メモリのアドレス整列
プロセッサでは、アクセスされるデータ・サイズに対して適切なメモリ整列の維持が要求されます。例外がディスエーブルにされていない限り、メ
モリ整列の違反によって整列例外が発生します。いくつかの命令（たとえばビデオ ALU 命令の多く）では、データはメモリへの格納時に適切に整列されていないことがあるため、整列例外を自動的にディスエーブルにします。整列例外をディスエーブルにするには、ロード／ストア動作と並列に DISALGNEXPT 命令を発行します。
通常、メモリ・システムは 2つのアドレス整列を必要とします。
• 32ビット・ワードのロード／ストアは 4 バイト境界でアクセスされるため、アドレスの最下位 2ビットは b#00です。
• 16ビット・ワードのロード／ストアは 2 バイト境界でアクセスされるため、アドレスの最下位ビットは b#0 でなければいけません。

5-14

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

データ・アドレス・ジェネレータ

表 5-1 に、アドレッシング・モードで利用可能な転送のタイプと転送サイズを要約します。

L
表 5-1.

DISALGNEXPT 命令の使用に際しては注意が必要です。なぜなら、この命令は、メモリ整列エラーの自動検出を無効にするからです。
DISALGNEXPT 命令は、I レジスタの間接アドレッシングを使用する
非整列ロードにのみ影響を与えます。Pレジスタ・アドレッシングを使用する非整列ロードは、依然として例外を引き起こします。
利用可能な転送のタイプと転送サイズ

アドレッシング・ 利用可能なモード
転送のタイプオート
インクリメントオート
デクリメント間接
インデックスポスト
インクリメント

転送サイズ

データ・
レジスタとのやり取り

ロード：
32 ビット・ワード
16 ビット、ゼロ拡張されたハーフ・ワード
16 ビット、符号拡張されたハーフ・ワード
8 ビット、ゼロ拡張されたバイト
8 ビット、符号拡張されたバイト
ストア：
32 ビット・ワード
16 ビット・ハーフ・ワード
8 ビット・バイト

ポインタ・
レジスタとのやり取り

ロード：
32 ビット・ワード
ストア：
32 ビット・ワード

データ・
レジスタとのやり取り

ロード：
32 ビット・ワード
データ・レジスタ上位ハーフへの 16 ビット・ハーフ・ワード
データ・レジスタ下位ハーフへの 16 ビット・ハーフ・ワード
16 ビット、ゼロ拡張されたハーフ・ワード
16 ビット、符号拡張されたハーフ・ワード
ストア：
32 ビット・ワード
データ・レジスタ上位ハーフからの 16 ビット・ハーフ・ワード
データ・レジスタ下位ハーフからの 16 ビット・ハーフ・ワード

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

5-15

メモリのアドレス整列

表 5-2 に、アドレッシング・モードを要約します。この表では、プロセッ
サがアドレッシング・モードに対応していることをアスタリスク（*）で示しています。
表 5-2.

5-16

アドレッシング・モード
32
ビット・
ワード

16
ビット・
ハーフ・
ワード

8
ビット・
バイト

符号／
ゼロ拡張

データ・
レジスタ

ポインタ・ データ・
レジスタ レジスタ・ハーフ

P オートインク[P0++]

*

*

*

*

*

*

P オートデクリ[P0--]

*

*

*

*

*

*

P 間接
[P0]

*

*

*

*

*

*

P インデックス[P0+im]

*

*

*

*

*

*

FP インデックス[FP+im]***P ポストインク[P0++P1]**

I オートインク[I0++]*

I オートデクリ[I0--]

*

*

*

*

*

*

*

*

*

*

*

I 間接
[I0]

*

*

*

*

I ポストインク[I0++M0]**ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

データ・アドレス・ジェネレータ

DAG 命令のまとめ
表 5-3 に DAG 命令を示します。アセンブリ言語構文の詳細については、『ADSP-BF53x Blackfin Processor Instruction Set Reference』を参照してください。表 5-3 では、以下の記号の意味に注意してください。
• Dreg はデータ・レジスタ・ファイルの任意のレジスタを示します。
• Dreg_lo はデータ・レジスタ・ファイルの任意のレジスタの下位 16ビットを示します。
• Dreg_hi はデータ・レジスタ・ファイルの任意のレジスタの上位16ビットを示します。
• Preg は任意のポインタ・レジスタ、FP、または SP レジスタを示します。
• Ireg は任意の DAG インデックス・レジスタを示します。
• Mreg は任意のDAG モディファイ・レジスタを示します。
• W は 16ビット幅の値を示します。
• B は 8ビット幅の値を示します。
• immA は符号付き、A ビット幅の即値を示します。
• uimmAmB は符号なし、Aビット幅で、B の偶数倍である即値を示します。
• Z はゼロ拡張修飾子を示します。
• X は符号拡張修飾子を示します。
• BREV はビット逆転修飾子を示します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

5-17

DAG 命令のまとめ

これらの命令に適用されるオプションや即値フィールドのサイズについては、『ADSP-BF53x Blackfin Processor Instruction Set Reference』を参照してください。
DAG 命令は、ASTAT ステータス・フラグに影響を与えません。
表 5-3.

DAG 命令のまとめ

命令
Preg = [ Preg ] ;Preg = [ Preg ++ ] ;Preg = [ Preg -- ] ;Preg = [ Preg + uimm6m4 ] ;Preg = [ Preg + uimm17m4 ] ;Preg = [ Preg – uimm17m4 ] ;Preg = [ FP – uimm7m4 ] ;Dreg = [ Preg ] ;Dreg = [ Preg ++ ] ;Dreg = [ Preg -- ] ;Dreg = [ Preg + uimm6m4 ] ;Dreg = [ Preg + uimm17m4 ] ;Dreg = [ Preg – uimm17m4 ] ;Dreg = [ Preg ++ Preg ] ;Dreg = [ FP – uimm7m4 ] ;Dreg = [ Ireg ] ;Dreg = [ Ireg ++ ] ;Dreg = [ Ireg -- ] ;Dreg = [ Ireg ++ Mreg ] ;Dreg =W [ Preg ] (Z) ;Dreg =W [ Preg ++ ] (Z) ;5-18

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

データ・アドレス・ジェネレータ

表 5-3.

DAG 命令のまとめ（続き）

命令
Dreg =W [ Preg -- ] (Z) ;Dreg =W [ Preg + uimm5m2 ] (Z) ;Dreg =W [ Preg + uimm16m2 ] (Z) ;Dreg =W [ Preg – uimm16m2 ] (Z) ;Dreg =W [ Preg ++ Preg ] (Z) ;Dreg = W [ Preg ] (X) ;Dreg = W [ Preg ++] (X) ;Dreg = W [ Preg -- ] (X) ;Dreg =W [ Preg + uimm5m2 ] (X) ;Dreg =W [ Preg + uimm16m2 ] (X) ;Dreg =W [ Preg – uimm16m2 ] (X) ;Dreg =W [ Preg ++ Preg ] (X) ;Dreg_hi = W [ Ireg ] ;Dreg_hi = W [ Ireg ++ ] ;Dreg_hi = W [ Ireg -- ] ;Dreg_hi = W [ Preg ] ;Dreg_hi = W [ Preg ++ Preg ] ;Dreg_lo = W [ Ireg ] ;Dreg_lo = W [ Ireg ++] ;Dreg_lo = W [ Ireg -- ] ;Dreg_lo = W [ Preg ] ;Dreg_lo = W [ Preg ++ Preg ] ;Dreg = B [ Preg ] (Z) ;Dreg = B [ Preg ++ ] (Z) ;Dreg = B [ Preg -- ] (Z) ;Dreg = B [ Preg + uimm15 ] (Z) ;ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

5-19

DAG 命令のまとめ

表 5-3.

DAG 命令のまとめ（続き）

命令
Dreg = B [ Preg – uimm15 ] (Z) ;Dreg = B [ Preg ] (X) ;Dreg = B [ Preg ++ ] (X) ;Dreg = B [ Preg -- ] (X) ;Dreg = B [ Preg + uimm15 ] (X) ;Dreg = B [ Preg – uimm15 ] (X) ;[ Preg ] = Preg ;[ Preg ++ ] = Preg ;[ Preg -- ] = Preg ;[ Preg + uimm6m4 ] = Preg ;[ Preg + uimm17m4 ] = Preg ;[ Preg – uimm17m4 ] = Preg ;[ FP – uimm7m4 ] = Preg ;[ Preg ] = Dreg ;[ Preg ++ ] = Dreg ;[ Preg -- ] = Dreg ;[ Preg + uimm6m4 ] = Dreg ;[ Preg + uimm17m4 ] = Dreg ;[ Preg – uimm17m4 ] = Dreg ;[ Preg ++ Preg ] = Dreg ;[FP – uimm7m4 ] = Dreg ;[ Ireg ] = Dreg ;[ Ireg ++ ] = Dreg ;[ Ireg -- ] = Dreg ;[ Ireg ++ Mreg ] = Dreg ;W [ Ireg ] = Dreg_hi ;5-20

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

データ・アドレス・ジェネレータ

表 5-3.

DAG 命令のまとめ（続き）

命令
W [ Ireg ++ ] = Dreg_hi ;W [ Ireg -- ] = Dreg_hi ;W [ Preg ] = Dreg_hi ;W [ Preg ++ Preg ] = Dreg_hi ;W [ Ireg ] = Dreg_lo ;W [ Ireg ++ ] = Dreg_lo ;W [ Ireg -- ] = Dreg_lo ;W [ Preg ] = Dreg_lo ;W [ Preg ] = Dreg ;W [ Preg ++ ] = Dreg ;W [ Preg -- ] = Dreg ;W [ Preg + uimm5m2 ] = Dreg ;W [ Preg + uimm16m2 ] = Dreg ;W [ Preg – uimm16m2 ] = Dreg ;W [ Preg ++ Preg ] = Dreg_lo ;B [ Preg ] = Dreg ;B [ Preg ++ ] = Dreg ;B [ Preg -- ] = Dreg ;B [ Preg + uimm15 ] = Dreg ;B [ Preg – uimm15 ] = Dreg ;Preg = imm7 (X) ;Preg = imm16 (X) ;Preg += Preg (BREV) ;Ireg += Mreg (BREV) ;Preg = Preg << 2 ;Preg = Preg >> 2 ;ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

5-21

DAG 命令のまとめ

表 5-3.

DAG 命令のまとめ（続き）

命令
Preg = Preg >> 1 ;Preg = Preg + Preg << 1 ;Preg = Preg + Preg << 2 ;Preg –= Preg ;Ireg –= Mreg ;5-22

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

第6章

メモリ

このプロセッサは、階層構造内のメモリ位置に応じてさまざまな性能パラ
メータとサイズ・パラメータを持つ階層型メモリ・モデルに対応しています。レベル 1（L1）メモリはチップ上にあり、レベル 2（L2）メモリ・システムより高速です。レベル 2（L2）メモリはオフチップであり、アクセス遅延が大きくなります。
高速なL1メモリは一般に小さなスクラッチパッド・メモリまたはキャッシュ・メモリであり、コア自身の中にあります。

メモリ・アーキテクチャ
このプロセッサには、オンチップ／オフチップ・メモリとメモリマップド
I/O リソースの組合わせにまたがる4G バイトの統一されたアドレス範囲があります。この範囲のうち、アドレス空間の一部は内部のオンチップ・
リソース専用です。プロセッサは、この内部メモリ空間に以下のメモリを実装します。
• L1 スタティック・ランダム・アクセス・メモリ（SRAM）• 一連のメモリマップド・レジスタ（MMR）• ブート読出し専用メモリ（ROM）
内部 L1 SRAM の一部は、キャッシュとして動作するようにも設定できます。プロセッサは非同期メモリ空間とシンクロナス DRAM（SDRAM）空間を含む、外部メモリ空間もサポートします。これらのメモリ領域とそれをサポートするコントローラの詳細については、第 17 章「外部バス・インターフェース・ユニット」を参照してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-1

メモリ・アーキテクチャ

6-3 ページの図 6-1 は、ADSP-BF533プロセッサのシステム・メモリ・マップの概要を示しています。6-4 ページの図 6-2 は、ADSP-BF532プロセッ
サの情報を示し、6-5 ページの図 6-3 は、ADSP-BF531プロセッサの情報を示します。なお、このアーキテクチャでは、別個の I/O 空間を定義しません。すべてのリソースは、フラットな 32 ビットのアドレス空間を通じてマッピングされます。メモリはバイト・アドレス可能です。
表 6-1 に示すように、ADSP-BF533、ADSP-BF532、ADSP-BF531の各プロセッサでは、さまざまな命令設定とデータ・メモリ設定が可能です。
表 6-1.

メモリ設定

メモリのタイプ

ADSP-BF531

ADSP-BF532

ADSP-BF533

命令 SRAM ／キャッシュ、ウェイまたはラインによってロック可能

16K バイト

16K バイト

16K バイト

命令 SRAM

16K バイト

32K バイト

64K バイト

データ SRAM ／キャッシュ

16K バイト

32K バイト

32K バイト

データ SRAM––

32K バイト

データ・スクラッチパッド SRAM

4K バイト

4K バイト

4K バイト合計

84K バイト

116K バイト

148K バイト

内部メモリ空間の上位部分は、コアとシステムMMRに割り当てられます。
この領域へのアクセスが許可されるのは、プロセッサがスーパーバイザ・
モードまたはエミュレーション・モードにあるときだけです（第 3 章「動作モードと状態」を参照）。
内部メモリ空間の最下位 1K バイトはブート ROMによって占有されます。
選択したブート・オプションに応じて、プロセッサのリセット時にメモリ空間から適切なブート・プログラムが実行されます（3-19 ページの「ブート方式」を参照）。

6-2

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ

外部メモリ・マップでは、4 バンクの非同期メモリ空間と1 バンクのSDRAM メモリを使用できます。各非同期バンクは 1M バイトであり、SDRAM バンクは 128M バイトまでです。

ADSP-BF533ߩࡔࡕ࡝࡮ࡑ࠶ࡊ
0xFFE0 0000
0xFFC0 0000
0xFFB0 1000
0xFFB0 0000
0xFFA1 4000
0xFFA1 0000
0xFFA0 C000
0xFFA0 8000
0xFFA 00000
0xFF90 8000
0xFF90 4000
0xFF90 0000
0xFF80 8000
0xFF80 4000
0xFF80 0000
0xEF00 0000
0x2040 0000
0x2030 0000
0x2020 0000
0x2010 0000
0x2000 0000
0x0800 0000
0x0000 0000

図 6-1.

ࠦࠕMMR
ࠪࠬ࠹ࡓMMR੍஻ࠬࠢ࡜࠶࠴ࡄ࠶࠼SRAM
੍஻๮઎SRAM㧛ࠠࡖ࠶ࠪࡘ๮઎SRAM๮઎SRAM
๮઎ROM
੍஻

ౝㇱࡔࡕ࡝

࠺࡯࠲࡮ࡃࡦࠢB SRAM㧛ࠠࡖ࠶ࠪࡘ࠺࡯࠲࡮ࡃࡦࠢB SRAM
੍஻࠺࡯࠲࡮ࡃࡦࠢA SRAM㧛ࠠࡖ࠶ࠪࡘ࠺࡯࠲࡮ࡃࡦࠢA SRAM੍஻੍஻㕖หᦼࡃࡦࠢ3㕖หᦼࡃࡦࠢ2㕖หᦼࡃࡦࠢ1ᄖㇱࡔࡕ࡝㕖หᦼࡃࡦࠢ0੍஻
SDRAM

ADSP-BF533 のメモリ・マップ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-3

メモリ・アーキテクチャ

ADSP-BF532ߩࡔࡕ࡝࡮ࡑ࠶ࡊ
0xFFE0 0000
0xFFC0 0000
0xFFB0 1000
0xFFB0 0000
0xFFA1 4000
0xFFA1 0000
0xFFA0 C000
0xFFA0 8000
0xFFA 00000
0xFF90 8000
0xFF90 4000
0xFF90 0000
0xFF80 8000
0xFF80 4000
0xFF80 0000
0xEF00 0000
0x2040 0000
0x2030 0000
0x2020 0000
0x2010 0000
0x2000 0000
0x0800 0000
0x0000 0000

図 6-2.

6-4

ࠦࠕMMR
ࠪࠬ࠹ࡓMMR੍஻ࠬࠢ࡜࠶࠴ࡄ࠶࠼SRAM
੍஻๮઎SRAM㧛ࠠࡖ࠶ࠪࡘ๮઎SRAM๮઎SRAM
๮઎ROM
੍஻

ౝㇱࡔࡕ࡝

࠺࡯࠲࡮ࡃࡦࠢB SRAM㧛
ࠠࡖ࠶ࠪࡘ
੍஻
੍஻
࠺࡯࠲࡮ࡃࡦࠢA SRAM㧛
ࠠࡖ࠶ࠪࡘ
੍஻
੍஻
੍஻
㕖หᦼࡃࡦࠢ3㕖หᦼࡃࡦࠢ2㕖หᦼࡃࡦࠢ1ᄖㇱࡔࡕ࡝㕖หᦼࡃࡦࠢ0੍஻
SDRAM

ADSP-BF532 のメモリ・マップ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ

ADSP-BF531ߩࡔࡕ࡝࡮ࡑ࠶ࡊ
0xFFE0 0000
0xFFC0 0000
0xFFB0 1000
0xFFB0 0000
0xFFA1 4000
0xFFA1 0000
0xFFA0 C000
0xFFA0 8000
0xFFA 00000
0xFF90 8000
0xFF90 6000
0xFF90 4000
0xFF90 0000
0xFF80 8000
0xFF80 4000
0xFF80 0000
0xEF00 0000
0x2040 0000
0x2030 0000
0x2020 0000
0x2010 0000
0x2000 0000
0x0800 0000
0x0000 0000

図 6-3.

ࠦࠕMMR
ࠪࠬ࠹ࡓMMR੍஻ࠬࠢ࡜࠶࠴ࡄ࠶࠼SRAM
੍஻๮઎SRAM㧛ࠠࡖ࠶ࠪࡘ
੍஻
๮઎SRAM
๮઎ROM
੍஻

ౝㇱࡔࡕ࡝

੍஻
੍஻
੍஻
੍஻
࠺࡯࠲࡮ࡃࡦࠢA SRAM㧛
ࠠࡖ࠶ࠪࡘ
੍஻
੍஻
੍஻
㕖หᦼࡃࡦࠢ3㕖หᦼࡃࡦࠢ2㕖หᦼࡃࡦࠢ1ᄖㇱࡔࡕ࡝㕖หᦼࡃࡦࠢ0੍஻
SDRAM

ADSP-BF531 のメモリ・マップ■ 内部メモリの概要
L1 メモリ・システムの性能は高帯域と低遅延をもたらします。SRAM は決定論的なアクセス・タイムときわめて高いスループットを提供するた
め、DSP システムでは高速なSRAM をオンチップで提供することによって、伝統的に性能を向上させてきました。
命令キャッシュとデータ・キャッシュ（キャッシュ制御ハードウェア付きの SRAM）の追加によって、高性能と簡単なプログラミング・モデルが得られます。キャッシュによって、L1 メモリとの間でのデータ転送を明示

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-5

メモリ・アーキテクチャ

的に管理する必要がなくなります。メモリ構造に合わせて性能を最適化す
ることなく、短時間でコードをプロセッサに移植したり、プロセッサ向けに開発したりできます。

64
ࠦࠕ࡮
ࡊࡠ࠮࠶ࠨ

ࠦࠕ࡮ࠢࡠ࠶ࠢ㧔CCLK㧕࠼ࡔࠗࡦ

L1ࡔࡕ࡝

32

๮઎

32

࠺࡯࠲ࠍࡠ࡯࠼

32࠺࡯࠲ࠍࡠ࡯࠼
࠺࡯࠲ࠍࠬ࠻ࠕ

ࠪࠬ࠹ࡓ࡮ࠢࡠ࠶ࠢ㧔SCLK㧕࠼ࡔࠗࡦ

DMAࠦࠕ࡮ࡃࠬ
㧔DCB㧕
ᄖㇱ
ࠕࠢ࠮ࠬ࡮
ࡃࠬ㧔EAB㧕

DMAࠦࡦ࠻ࡠ࡯࡜

DMA
ᄖㇱࡃࠬ
㧔DEB㧕
ࡍ࡝ࡈࠚ࡜࡞࡮ࠕࠢ࠮ࠬ࡮
ࡃࠬ㧔PAB㧕

ࡊࡠ
ࠣ࡜ࡓ࡮
ࡈ࡜ࠣ

RTC

࠲ࠗࡑ

࠙ࠜ࠶࠴
࠼࠶ࠣ࡮
࠲ࠗࡑ

EBIU

UART

SPORT

PPI

ᄖㇱࡐ࡯࠻࡮
ࡃࠬ㧔EPB㧕

SPI
16ᄖㇱࡔࡕ࡝࡮࠺ࡃࠗࠬ

DMAࠕࠢ࠮ࠬ࡮ࡃࠬ㧔DAB㧕

図 6-4.

6-6

プロセッサのメモリ・アーキテクチャ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ

L1 メモリは以下のメリットを提供します。
• 改良ハーバード・アーキテクチャにより、クロック・サイクル当たり最高 4つのコア・メモリ・アクセスが可能（1つの64ビット命令
フェッチ、2つの 32 ビット・データ・ロード、1つのパイプライン
型 32 ビット・データ・ストア）• システム DMA、キャッシュ・メンテナンス、コア・アクセスが同時に可能• クリティカルな DSP アルゴリズムと高速なコンテキスト切り替えを実現する、プロセッサ・クロック・レート（CCLK）での SRAM
アクセス
• マイクロコントローラ・コード用の命令オプションとデータ・キャッ
シュ・オプション、優れた高水準言語（HLL）サポート、PREFETCHや FLUSH などのプログラミングしやすいキャッシュ制御命令• メモリ保護

L

L1 メモリは、コア・クロック周波数（CCLK）で動作します。

■ スクラッチパッド・データ SRAM の概要
このプロセッサは、スクラッチパッド・データ SRAM という専用の 4Kバ
イト・バンクを提供します。スクラッチパッドは他の L1 メモリ・バンクの設定と独立しており、キャッシュとして設定したり、DMA のターゲットにしたりすることはできません。一般的なアプリケーションでは、速度が重要視される場合にスクラッチパッド・データ・メモリを使用します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-7

L1 命令メモリ

たとえば、割込み処理中に最速のコンテキスト切替えを実現するには、
ユーザ・スタックとスーパーバイザ・スタックをスクラッチパッド・メモ
リにマッピングしてください。

L
L

L1 メモリは、コア・クロック周波数（CCLK）で動作します。
スクラッチパッド・データ SRAM は、DMA コントローラによってはアクセスできません。

L1 命令メモリ
L1 命令メモリは、専用 SRAM と、SRAM またはキャッシュとして設定できるバンクとの組合わせで構成されています。キャッシュまたは SRAM とすることのできる 16K バイト・バンクの場合、IMEM_CONTROL レジスタの制
御ビットを使用して、L1命令メモリの4 つのサブバンクすべてを次のように構成できます。
• 単純な SRAM
• 4 ウェイのセット・アソシエイティブ命令キャッシュ• 4 つのロックされたウェイを持つキャッシュL

L1 命令メモリは、命令の格納にだけ使用できます。

■ IMEM_CONTROL レジスタ
命令メモリ・コントロール（IMEM_CONTROL）レジスタには、L1 命令メモ
リの制御ビットが含まれています。リセット後のデフォルトでは、キャッシュおよびキャッシュ可能性保護 Lookaside バッファ（CPLB）のアドレ
ス・チェックがディスエーブルにされます（6-13 ページの「L1 命令キャッ
シュ」を参照）。

6-8

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ

LRUPRIORST ビットが1 に設定されると、すべての CPLB_LRUPRIO ビットのキャッシュ状態（6-61 ページの「ICPLB_DATAx レジスタ」を参照）がクリアされます。これによって、キャッシュされたすべてのラインが同時に同じ（低い）重要度に設定されます。キャッシュ置換ポリシーは、まずCPLB_LRUPRIO ビットのキャッシュ状態によって示されるライン重要度をベースにし、次に LRU（最長時間未使用）をベースにします。詳細については、6-20 ページの「ラインによる命令キャッシュのロック」を参照
してください。新しいラインがキャッシュされたときに CPLB_LRUPRIO ビットの状態を格納するには、このビットは 0であることが必要です。
ILOC[3:0] ビットは、コードが手動でキャッシュにロードされた後でだけ有効な機能を提供します。6-21 ページの「ウェイによる命令キャッシュのロック」を参照してください。これらのビットは、キャッシュ置換ポリ
シーから除外するウェイを指定します。これには、キャッシュ置換ポリシーに参加していないウェイに存在するコードをロックする効果があります。IFLUSH 命令を使用すれば、参加していないウェイ内のコードを依然としてキャッシュから除去できます。ILOC[3:0] ビットが0 である場合には、対応するウェイはロックされず、そのウェイはキャッシュ置換ポリシーに参加します。ILOC[3:0] ビットが1 である場合には、対応するウェ
イはロックされ、キャッシュ置換ポリシーに参加しません。
IMC ビットは、
L1命令SRAM の一部を確保してキャッシュとして機能させます。なお、キャッシュとして機能するメモリを確保するだけでは、L2
メモリ・アクセスをキャッシュすることはできません。EN_ICPLB ビットを使用して CPLB をイネーブルにし、CPLB ディスクリプタ（ICPLB_DATAxレジスタと ICPLB_ADDRx レジスタ）で希望するメモリ・ページをキャッシュ使用可能として指定することも必要です。
リセット後のデフォルトでは、命令 CPLBはディスエーブルにされています。ディスエーブルにされている場合、L1 メモリ・インターフェースでは最小限のアドレス・チェックしか行いません。この最小限のチェックでは、以下の領域から命令をフェッチするたびにプロセッサへの例外が生成されます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-9

L1 命令メモリ• 予備（非実装）の L1命令メモリ空間• L1 データ・メモリ空間• MMR 空間
このビットを使用して CPLB をディスエーブルにしてから、CPLB のディ
スクリプタ（レジスタ DCPLB_DATAx と DCPLB_ADDRx）を更新することが必要です。なお、ロード／ストアの順序付けは弱いため（6-73 ページの「ロードとストアの順序付け」を参照）、CSYNC 命令を実行してからCPLB
をディスエーブルにしてください。

Lキャッシュや CPLB をイネーブル／ディスエーブルにする際には、
IMEM_CONTROLへの書込みの直後にSSYNCを実行して正常な動作を保
証します。

L

正常な動作と将来の互換性を保証するため、このレジスタ内のすべての予備ビットは、このレジスタが書き込まれるたびに 0に設定する必要があります。

6-10

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ

L1 命令メモリ・コントロール（IMEM_CONTROL）レジスタ

0xFFE0 1004

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

LRUPRIORST（LRU 優先順位リセット）
0 - LRU 優先順位機能はイネーブル
1 - キャッシュされたすべての LRU 優先順位
ビット（LRUPRIO）はクリア
ILOC[3:0]（キャッシュ・ウェイ・ロック）
0000 - すべてのウェイがロックなし
0001 - ウェイ 0 はロック、ウェイ 1、ウェイ 2、ウェイ 3 はロックなし...
1111 - すべてのウェイがロック

図 6-5.

10

リセット＝ 0x0000 0001

01
ENICPLB（命令 CPLB イネーブル）
0 - CPLB ディスエーブル、最小限のアドレス・チェックのみ
1 - CPLB イネーブル
IMC（L1 命令メモリ設定）
0 - L1 命令メモリの上位 16K バイ
トを SRAM として設定。あらかじめキャッシュとして設定されていた場合には、すべてのキャッシュ・ラインを無効化
1 - L1 命令メモリの上位 16K バイ
トをキャッシュとして設定

L1 命令メモリ・コントロール・レジスタ■ L1 命令 SRAM
プロセッサ・コアは、64ビット幅の命令フェッチ・バスを通じて命令メモ
リを読み出します。このバスからのすべてのアドレスは、64ビットに整列されています。各命令フェッチでは、16/32/64ビット命令の任意の組合わ
せを返すことができます（たとえば、4つの 16ビット命令、2つの16ビッ
ト命令と 1つの 32 ビット命令、または 1つの64ビット命令）。
第 5 章で説明した DAG は、L1 命令メモリに直接アクセスできません。命令メモリ SRAM 空間への DAGリファレンスは、例外を生成します（4-42
ページの「例外」を参照）。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-11

L1 命令メモリ

L1命令SRAMメモリへの書込みアクセスは、
64ビット幅のシステムDMA
ポートを通じて行う必要があります。SRAM はシングル・ポート型サブバ
ンクの集合として実装されるため、命令メモリは実質的にデュアル・ポー
ト型となります。
表 6-2 は、L1命令メモリ・サブバンクのメモリ開始位置を示します。
表 6-2.

6-12

L1 命令メモリ・サブバンク

メモリ・サブバンク

メモリ開始位置ADSP-BF533

メモリ開始位置ADSP-BF532

メモリ開始位置ADSP-BF531

0

0xFFA0 0000

0xFFA0 8000

0xFFA0 8000

1

0xFFA0 1000

0xFFA0 9000

0xFFA0 9000

20xFFA0 2000

0xFFA0 A000

0xFFA0 A000

30xFFA0 3000

0xFFA0 B000

0xFFA0 B000

40xFFA0 4000

0xFFA0 C000

50xFFA0 5000

0xFFA0 D000

60xFFA0 6000

0xFFA0 E000

70xFFA0 7000

0xFFA0 F000

80xFFA0 8000

90xFFA0 9000

100xFFA0 A000

110xFFA0 B000

120xFFA0 C000

130xFFA0 D000

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ

表 6-2.

L1 命令メモリ・サブバンク（続き）

メモリ・サブバンク

メモリ開始位置ADSP-BF533

14

0xFFA0 E000

150xFFA0 F000

メモリ開始位置ADSP-BF532

メモリ開始位置ADSP-BF531

6-14 ページの図 6-6 は、L1 命令メモリのバンク・アーキテクチャを示します。この図に示すように、各 16K バイト・バンクは 4 つの 4K バイト・サブバンクで構成されます。

■ L1 命令キャッシュキャッシュ用語の詳細については、6-80 ページの「用語集」を参照してください。
L1 命令メモリは、16K バイトの 4ウェイ・セット・アソシエイティブ命令
キャッシュを含むようにも構成できます。クリティカルなコード・セク
ションに対する平均アクセス遅延を改善するため、キャッシュの各ウェイ
またはラインは、独立してロックできます。メモリがキャッシュとして設定されている場合、メモリには直接アクセスできません。
キャッシュがイネーブルであるとき、CPLB によってさらにキャッシュ可能として指定されたメモリ・ページだけがキャッシュされます。CPLB がイネーブルであるとき、アクセスされるメモリ位置では、関連するページ
定義が使用可能でなければいけません。さもなければ、CPLB例外が生成されます。CPLBについては、6-51 ページの「メモリ保護とプロパティ」
を参照してください。
6-16 ページの図 6-7 は、Blackfinプロセッサの全体的な命令キャッシュ構
造を示します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-13

L1 命令メモリ๮઎ࡃࡦࠢ&
.%ࠠࡖ࠶ࠪࡘ߹ߚߪ65$0

ࠠࡖ࠶ࠪࡘ࡮ ࠠࡖ࠶ࠪࡘ࡮
࠲ࠣ
࠲ࠣ

.%

࡜ࠗࡦ࡮ࡈࠖ࡞࡮
ࡃ࠶ࡈࠔࡆ࠶࠻

.%'0$ࡃ࠶ࡈࠔ
.%.%ࠠࡖ࠶ࠪࡘ࡮ ࠠࡖ࠶ࠪࡘ࡮
࠲ࠣ
࠲ࠣ

.%

.%

.%

๮઎ࡃࡦࠢ$$'63%).%520$'63%).%520$'63%).%65$0

๮઎ࡃࡦࠢ%
.%65$0

.%$'63%)ߣ
$'63%)ߩߺ

'0$ࡃ࠶ࡈࠔ
.%

.%

.%

.%

.%

.%

.%

.%
$'63%)ߩߺ

'0$ࡃ࠶ࡈࠔ
.%

.%

.%

.%
'&%
ࡔࡕ࡝ᄖㇱ߳

($%๮઎ࡈࠚ࠶࠴ࡆ࠶࠻
005ࠕࠢ࠮ࠬ

図 6-6.

6-14

ࡊࡠ࠮࠶ࠨ࡮ࠦࠕ߳

L1 命令メモリのバンク・アーキテクチャ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ

X キャッシュ・ライン

図 6-7に示すように、キャッシュは、キャッシュ・ラインの集合から構成されます。各キャッシュ・ラインは、タグ・コンポーネントとデータ・コ
ンポーネントで構成されます。
• タグ・コンポーネントは、20 ビットのアドレス・タグ、最長時間
未使用（LRU）ビット、有効ビット、ライン・ロック・ビットを内蔵しています。
• データ・コンポーネントは、命令データの 4 つの 64ビット・ワードで構成されます。
キャッシュ・ラインのタグ・コンポーネントとデータ・コンポーネント
は、それぞれタグ・メモリ・アレイとデータ・メモリ・アレイに格納されています。
アドレス・タグは物理アドレスの上位 18ビットに加えて、ビット11と 10から構成されます。物理アドレスのビット 12 と13 は、アドレス・タグの一部ではありません。これらのビットは、アクセスのターゲットとなる 4K
バイトのメモリ・サブバンクの識別に使用されます。
LRU ビットは LRUアルゴリズムの一部であり、キャッシュ・ミスが発生した場合に置換されるキャッシュ・ラインの決定に使用されます。
有効ビットは、キャッシュ・ラインの状態を示します。キャッシュ・ラインは常に有効または無効です。
• 無効なキャッシュ・ラインでは有効ビットがクリアされて、アドレ
ス―タグの比較演算でそのラインが無視されることを示します。
• 有効なキャッシュ・ラインでは有効ビットがセットされて、そのラ
インにはソース・メモリと整合性のある有効な命令／データが含まれていることを示します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-15

L1 命令メモリ

%,7$''5(66)25/22.83

%<7(/,1(

࠙ࠚࠗ

᦭ല

࠲ࠣ

!

!




᦭ല
!

%<7(/,1(%<7(/,1(ࡃࠗ࠻࡮࡜ࠗࡦ



ࡃࠗ࠻࡮࡜ࠗࡦ
/,1(
ࡃࠗ࠻࡮࡜ࠗࡦ
%<7(/,1(%<7(/,1(࠙ࠚࠗ࠲ࠣ%<7(/,1(%<7(/,1(! %<7(/,1(%<7(/,1(ࡃࠗ࠻࡮࡜ࠗࡦ








ࡃࠗ࠻࡮࡜ࠗࡦ
/,1(
/,1(
ࡃࠗ࠻࡮࡜ࠗࡦ
%<7(/,1(%<7(/,1(
࠲ࠣ
᦭ല
࠙ࠚࠗ
%<7(/,1(%<7(/,1(!
!
%<7(/,1(%<7(/,1(ࡃࠗ࠻࡮࡜ࠗࡦ







 ࡮࡜ࠗࡦ
ࡃࠗ࠻
/,1(
/,1(
ࡃࠗ࠻࡮࡜ࠗࡦ
%<7(/,1(
࠲ࠣ
᦭ല
࠙ࠚࠗ
%<7(/,1(!
!
%<7(/,1(ࡃࠗ࠻࡮࡜ࠗࡦ





 ࡮࡜ࠗࡦ
ࡃࠗ࠻
/,1(
ࡃࠗ࠻࡮࡜ࠗࡦ



࠺࡯࠲
!
08;ࡃࠗ࠻࡮࡜ࠗࡦ
ࡃࠗ࠻࡮࡜ࠗࡦ
ࡃࠗ࠻࡮࡜ࠗࡦ
࡜ࠗࡦ

ฦ࠙ࠚࠗߦ߹ߚ߇ࠆ✂ដߌߐࠇߚࡏ࠶ࠢࠬߪ࠮࠶࠻ࠍ᭴ᚑߒ߹ߔ‫ޕ‬

図 6-7.

6-16

Blackfin プロセッサの命令キャッシュ構造

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ

図 6-8 は、キャッシュ・ラインのタグ・コンポーネントとデータ・コン
ポーネントを示します。
LRUPRIOTAGTAG
LRUPRIO
LRU
V
WD 3

LRU

V

- 20 ビットのアドレス・タグ- ライン・ロッキング用の LRU 優先順位ビット- LRU 状態
- 有効ビット
WD 2

WD 1

WD 0

WD - 64 ビットのデータ・ワード

図 6-8.

キャッシュ・ライン ― タグ部分とデータ部分

キャッシュ・ヒットとキャッシュ・ミス
キャッシュ・ヒットが発生するのは、コアからの命令フェッチ要求のアドレスがキャッシュ内の有効エントリに一致したときです。具体的に、
キャッシュ・ヒットの判定には、命令フェッチ・アドレスの上位 18 ビットとビット 11 および10をキャッシュ・セット内に現在格納されている有効ラインのアドレス・タグと比較します。キャッシュ・セットの選択には、命令フェッチ・アドレスのビット 9 から 5 が使用されます。アドレス―タグ比較演算の結果が一致した場合には、キャッシュ・ヒットが発生します。アドレス―タグ比較演算の結果が一致しない場合には、キャッシュ・
ミスが発生します。
キャッシュ・ミスが発生すると、命令メモリ・ユニットはキャッシュ・ラ
イン・フィル・アクセスを生成して、コアの外部にあるメモリから不足しているキャッシュ・ラインを取り出します。外部メモリ・アクセスのアドレスは、ターゲット命令ワードのアドレスです。キャッシュ・ミスが発生すると、コアは外部メモリからターゲット命令ワードが返されるまで停止
します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-17

L1 命令メモリ

キャッシュ・ライン・フィル
キャッシュ・ライン・フィルは、メモリから 32 バイトのデータを取り出します。この動作が開始されるのは、命令メモリ・ユニットが外部読出し
データ・ポートでライン読出しデータ転送（4 つの 64 ビット・ワードのデータのバースト）を要求したときです。読出し転送のアドレスは、ター
ゲット命令ワードのアドレスです。外部メモリは、命令メモリ・ユニット
からのライン読出し要求に応答するとき、最初にターゲット命令ワードを返します。ターゲット命令ワードが返されてから、次の 3ワードが順次ア
ドレス順にフェッチされます。表 6-3 に示すように、必要ならば、このフェッチは折り返されます。
表 6-3.

キャッシュ・ライン・ワードのフェッチ順

ターゲット・ワード次の 3 ワードのフェッチ順序

WD0

WD0, WD1, WD2, WD3

WD1

WD1, WD2, WD3, WD0

WD2

WD2, WD3, WD0, WD1

WD3

WD3, WD0, WD1, WD2

ライン・フィル・バッファ
新しいキャッシュ・ラインが外部メモリから取り出されると、各 64 ビッ
ト・ワードは 4エントリのライン・フィル・バッファにバッファリングされてから、L1 メモリ内の 4K バイトのメモリ・バンクに書き込まれます。
ライン・フィル・バッファを使用すれば、コアはラインがキャッシュに書き込まれるまで待つことなく、ラインが外部メモリから取り出されると同時に新しいキャッシュ・ラインからのデータにアクセスできます。
キャッシュ・ライン置換
命令メモリ・ユニットがキャッシュとして設定されている場合、命令
フェッチ・アドレスのビット 9 から 5 は、タグ―アドレス比較演算用のキャッシュ・セットを選択するインデックスとして使用されます。タグ―

6-18

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ

アドレス比較演算の結果がキャッシュ・ミスになった場合には、キャッシュ・ライン置換ユニットは選択されたセットの有効ビットと LRU ビッ
トを調べて、新しいキャッシュ・ラインに使用するエントリ（つまり、ウェイ 0、ウェイ 1、ウェイ 2、またはウェイ 3の使用）を決定します。6-16
ページの図 6-7「Blackfin プロセッサの命令キャッシュ構造」を参照してください。
キャッシュ・ライン置換ユニットは、最初に無効なエントリ（つまり、有効ビットがクリアされているエントリ）をチェックします。無効なエント
リが 1 つだけ見つかった場合には、そのエントリが新しいキャッシュ・ラ
インに選択されます。無効なエントリが複数件見つかった場合には、新しいキャッシュ・ライン用の置換エントリは、次の優先順位に基づいて選択されます。
• 最初にウェイ 0• 次にウェイ 1• 次にウェイ 2• 最後にウェイ 3
例：• ウェイ 3が無効で、ウェイ0、1、2が有効である場合には、ウェイ3 が新しいキャッシュ・ラインに選択されます。
• ウェイ 0と 1が無効で、ウェイ2と 3が有効である場合には、ウェイ
0 が新しいキャッシュ・ラインに選択されます。
• ウェイ 2と 3が無効で、ウェイ0と 1が有効である場合には、ウェイ
2 が新しいキャッシュ・ラインに選択されます。
無効なエントリが見つからなかった場合には、キャッシュ置換ロジック
は、LRUアルゴリズムを使用します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-19

L1 命令メモリ

X 命令キャッシュの管理システム DMAコントローラとコアDAG は、命令キャッシュに直接アクセスできません。命令の組合わせとコア MMR の使用によって、命令タグとデータ・アレイを間接的に初期化し、命令キャッシュのテスト、初期化、およびデバッグ用のメカニズムを提供できます。

L

命令キャッシュのコヒーレンシは、明示的に管理する必要があります。これを実現し、命令キャッシュが最新バージョンの修正命令空間をフェッチできるようにするには、必要に応じて命令キャッシュ・ラインのエントリを無効化します。

6-22 ページの「命令キャッシュの無効化」を参照してください。
ラインによる命令キャッシュのロック
ICPLB_DATAx レジスタ（6-51ページの「メモリ保護とプロパティ」を参照）の CPLB_LRUPRIO ビットは、コードを命令キャッシュ内に常駐させて制御を強化するために使用されます。キャッシュ・ラインがフィルされると、このビットの状態はラインのタグとともに格納されます。その後、新しいキャッシュ可能ラインのフェッチ時にすべてのキャッシュ・ウェイが占有された場合に犠牲になるウェイを決定するために、このビットの状態は
LRU（最長時間未使用）ポリシーと組み合わせて使用されます。このビットは、ラインの重要度が「低」であるか「高」であるかを示します。改良LRU ポリシーでは、「高」は「低」に取って代われますが、「低」が「高」に取って代わることはできません。すべてのウェイが「高」によって占有された場合、その他の点ではキャッシュ可能な「低」は依然としてコア用にフェッチされますが、キャッシュはされません。フェッチされた「高」は、まず占有されていないウェイでの置換を試み、次に最長時間未使用の「低」で試み、最後にLRU ポリシーを使用して他の「高」で試みます。
「低」は、占有されていないウェイまたは他の「低」だけを置換でき、その際に
LRU ポリシーを使用します。あらかじめキャッシュされていたすべての

6-20

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ「高」で、その重要度が低下した場合には、IMEM_CONTROL レジスタ（6-8
ページを参照）の LRUPRIRST ビットに書き込むことによって、これらを同時に「低」に変換することもできます。
ウェイによる命令キャッシュのロック
命令キャッシュには、4 つの独立したロック・ビット（ILOC[3:0]）があり、それぞれが命令キャッシュの 4つのウェイを制御します。キャッシュがイネーブルにされると、L1 命令メモリでは4 つのウェイが使用可能になります。特定のウェイのロック・ビットをセットすると、そのウェイは
LRU 置換ポリシーに参加できなくなります。したがって、キャッシュされた命令のウェイがロックされている場合、その命令を除去するには、
IFLUSH 命令を使用するか、またはタグ・アレイの「裏口」MMR支援操作を行うしか方法がありません。
次のシーケンス例は、ウェイ 0のロック方法を示します。
• 対象となるコードがすでに命令キャッシュ内に存在する可能性がある場合には、最初にキャッシュ全体を無効化します（一例として、6-22 ページの「命令キャッシュの無効化」を参照）。
• 必要ならば、割込みをディスエーブルにして、割込みサービス・ルーチン（ISR）がロックされたキャッシュを破壊しないようにします。
• ILOC[3:1] をセットして、キャッシュの他のウェイに対してロックを設定します。これで、命令キャッシュのウェイ 0 だけが新しい
コードで置換できます。
• 対象となるコードを実行します。このコード実行によって走査された終了コードなどのキャッシュ可能なその他の命令も、命令キャッシュに組み込まれます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-21

L1 命令メモリ• クリティカルなコードを終了した時点で ILOC[3:1] をクリアし、ILOC[0] をセットします。
これで、
クリティカルなコード（とILOC[0]をセットした命令）は、ウェイ 0に組み込まれます。
• 必要ならば、割込みを再びイネーブルにします。
キャッシュの 4 つのウェイがすべてロックされている場合には、キャッシュへのそれ以上の割当てはできません。
命令キャッシュの無効化
命令キャッシュは、アドレス単位、キャッシュ・ライン単位、またはキャッシュ全体で無効化できます。IFLUSH 命令は、ライン・アドレスに基づいてキャッシュ・ラインを明示的に無効化できます。命令のターゲット・アド
レスは Pレジスタから生成されます。命令キャッシュは変更された（ダーティな）データを含むべきではないため、キャッシュ・ラインはそのまま無効化されます。
次の例では、P2 レジスタには、有効なメモリ位置のアドレスが含まれています。このアドレスがキャッシュに入れられた場合には、対応するキャッシュ・ラインはこの命令の実行後に無効化されます。
ICACHE 命令の例：
iflush [ p2 ] ;/* P2 がポイントするアドレスを含んでいるキャッシュ・ライ

ンを無効化 */IFLUSH 命令はメモリ・マップ内の特定アドレスを無効化するために使用されるので、この命令を使用してキャッシュのウェイまたはバンク全体を無効化することは現実的ではありません。キャッシュの大きな部分を直接無効化するには、2 番目の手法を使用できます。この2 番目の手法では、各キャッシュ・ラインの無効ビットに無効状態を設定することによって、有効ビットを直接無効化します。この手法を実現するため、別の MMR

6-22

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ（ITEST_COMMAND と ITEST_DATA[1:0]）を使用すれば、すべてのキャッシュ・
エントリに対して直接の読出し／書込みが可能になります。この方法については、次の節で説明します。
命令キャッシュを全面的に無効化するには、3 番目の方法を使用します。
IMEM_CONTROL レジスタ（6-11 ページの図 6-5「L1 命令メモリ・コントロー
ル・レジスタ」を参照）の IMC ビットをクリアすれば、命令キャッシュ内のすべての有効ビットが無効状態に設定されます。IMEM_CONTROL レジスタへの2回目の書込みで IMC ビットをセットすれば、命令メモリは再びキャッシュとして設定されます。なお、SSYNC 命令を実行してからキャッシュを無効化してください。また、これらの動作が終了するたびに、CSYNC 命令を挿入してください。

命令テスト・レジスタ
命令テスト・レジスタを使用すれば、すべての L1 キャッシュ・エントリに対して直接の読出し／書込みが可能になります。これらのレジスタによって、命令タグ・アレイとデータ・アレイの初期化が可能になり、命令
キャッシュをテスト、初期化、およびデバッグするためのメカニズムが提供されます。
命令テスト・コマンド・レジスタ（ITEST_COMMAND）を使用すると、L1
キャッシュのデータ・アレイやタグ・アレイがアクセスされ、データは命令テスト・データ・レジスタ（ITEST_DATA[1:0]）を通じて転送されます。
ITEST_DATAx レジスタには、アクセスによって書き込む 64ビット・データ、またはアクセス中に読み出された 64ビット・データが含まれています。下位 32 ビッ ト は ITEST_DATA[0] レ ジ スタ に 格納 さ れ、上 位 32 ビッ ト はITEST_DATA[1] レジスタに格納されます。タグ・アレイがアクセスされる
ときには ITEST_DATA[0] が使用されます。ITEST レジスタについては、6-25
ページの図 6-9 から説明が始まります。
ITEST レジスタの説明は、以下のようになります。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-23

命令テスト・レジスタ• 6-25 ページの図 6-9「命令テスト・コマンド・レジスタ」• 6-26 ページの図 6-10「命令テスト・データ 1 レジスタ」• 6-27 ページの図 6-11「命令テスト・データ 0 レジスタ」
これらのレジスタへのアクセスは、スーパーバイザ・モードまたはエミュ
レーション・モードでのみ可能です。ITEST レジスタへの書込みに際しては、最初に ITEST_DATAx レジスタに書き込んでから、ITEST_COMMAND レジ
スタに書き込みます。ITEST レジスタからの読出しに際しては順番が逆になります。つまり、最初に ITEST_COMMAND レジスタを読み出してから、ITEST_DATAx レジスタを読み出します。

6-24

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ■ ITEST_COMMAND レジスタ
命令テスト・コマンド・レジスタ（ITEST_COMMAND）への書込みに際しては、L1 キャッシュのデータ・アレイまたはタグ・アレイがアクセスされ、データは命令テスト・データ・レジスタ（ITEST_DATA[1:0]）を通じて転送されます。
命令テスト・コマンド・レジスタ（ITEST_COMMAND）

0xFFE0 1300

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

WAYSEL[1:0]（アクセス・ウェイ）
00 - ウェイ 0 にアクセス
01 - ウェイ 1 にアクセス
10 - ウェイ 2 にアクセス
11 - ウェイ 3 にアクセス（SRAM 内のアドレス・ビット [11:10]）

15 14 13 12 11 10 9
0 0 0 0 0 0 0

SBNK[1:0]（サブバンク・アクセス）
00 - サブバンク 0 にアクセス
01 - サブバンク 1 にアクセス
10 - サブバンク 2 にアクセス
11 - サブバンク 3 にアクセス（SRAM 内のアドレス・ビッ
ト [13:12]）
8
0

7
0

6
0

5
0

4
0

3
0

SET[4:0]（セット・インデックス）
32 セットのうち 1 つを選択
（SRAM 内のアドレス・ビット[9:5]）

図 6-9.

リセット＝ 0x0000 0000

2
0

1
0

0
0
RW（読出し／書込みアクセス）
0 - 読出しアクセス
1 - 書込みアクセス
TAGSELB（アレイ・アクセス）
0 - タグ・アレイにアクセス
1 - データ・アレイにアクセス
DW[1:0]（ダブル・ワード・インデックス）
256ビットのラインに含まれる 4 つの 64 ビット・ダ
ブル・ワードのうち 1 つを選択（SRAM 内のアドレ
ス・ビット [4:3]）

命令テスト・コマンド・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-25

命令テスト・レジスタ■ ITEST_DATA1 レジスタ
命令テスト・データ・レジスタ（ITEST_DATA[1:0]）は、L1 キャッシュのデータ・アレイへのアクセスに使用されます。これらのレジスタには、ア
クセスによって書き込む 64 ビット・データ、またはアクセスによって読み出す 64ビット・データが含まれています。命令テスト・データ1 レジス
タ（ITEST_DATA1）には、上位32ビットが格納されています。
命令テスト・データ 1 レジスタ（ITEST_DATA1）
L1 キャッシュのデータ・アレイとタグ・アレイへのアクセスに使用されます。データ・アレ
イへのアクセスでは、アクセスによって書込み／読出しされる命令データの 64 ビット・ワー
ドの上位 32 ビットが格納されます。6-15 ページの「キャッシュ・ライン」を参照。

0xFFE0 1404

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X X X X X

リセット＝未定義
データ [63:48]

15 14 13 12 11 10 9 8 7 6
X X X X X X X X X X

5 4 3 2 1 0
X X X X X X
データ [47:32]

タグ・アレイへのアクセスでは、すべてのビットが予備です。
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X X X X X

15 14 13 12 11 10 9 8 7 6
X X X X X X X X X X

リセット＝未定義

5 4 3 2 1 0
X X X X X X

図 6-10. 命令テスト・データ 1 レジスタ

6-26

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ■ ITEST_DATA0 レジスタ
命令テスト・データ 0 レジスタ（ITEST_DATA0）には、アクセスによって書込み／読出しされる 64 ビット・データの下位 32ビットが格納されます。
ITEST_DATA0 レジスタは、タグ・アレイへのアクセスにも使用されます。
このレジスタには、キャッシュ・ラインの状態を示す、有効ビットとダー
ティ・ビットも含まれています。
命令テスト・データ 0 レジスタ（ITEST_DATA0）
L1 キャッシュのデータ・アレイとタグ・アレイへのアクセスに使用されます。データ・アレイへのアクセスでは、ア
クセスによって書込み／読出しされる命令データの 64 ビット・ワードの下位 32 ビットが格納されます。6-15 ページの「キャッシュ・ライン」を参照。
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
リセット＝未定義
0xFFE0 1400
X X X X X X X X X X X X X X X X
データ [31:16]
15 14 13 12 11 10 9 8 7 6
X X X X X X X X X X

5 4 3 2 1 0
X X X X X X
データ [15:0]

L1 キャッシュのタグ・アレイへのアクセスに使用されます。アドレス・タグは、物理アドレスの上位 18 ビットと
ビット 11 および 10 から構成されます。6-15 ページの「キャッシュ・ライン」を参照。
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X X X X X

リセット＝未定義
タグ [19:4]
物理アドレス15 14 13 12 11 10 9
X X X X X X X

8
X

7

6
X X

5
X

タグ [3:2]
物理アドレスタグ [1:0]
物理アドレス

4
X

3
X

2 1
X X

0
X
有効
0 - キャッシュ・ラインは有効ではありません
1 - キャッシュ・ラインは有効なデータを含みます
LRUPRIO
0 - LRUPRIO はこのエントリに対してクリアされます。
1 - LRUPRIO はこのエントリに対してセットされます。6-61
ページの「ICPLB_DATAx レ
ジ ス タ」と 6-8 ペ ー ジ の「IMEM_CONTROLレジスタ」
を参照。

図 6-11. 命令テスト・データ 0 レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-27

L1 データ・メモリ

L1 データ・メモリ
L1 データ SRAM ／キャッシュは、シングル・ポート型サブセクションから構築されますが、アクセス衝突の可能性を減らすように構成されています。この構成によって、見掛け上のマルチポート型動作が行われます。衝突がない場合には、以下の L1 データ・トラフィックがシングル・コア・
クロック・サイクルで発生することがあります。
• 2 つの 32ビットDAGロード• 1 つのパイプライン化された32ビットDAG ストア• 1 つの 64ビットDMA IO• 1 つの 64ビット・キャッシュ・フィル／ビクティム・アクセス

L

L1 データ・メモリは、データの格納にだけ使用できます。

■ DMEM_CONTROL レジスタ
データ・メモリ・コントロール・レジスタ（DMEM_CONTROL）には、L1デー
タ・メモリの制御ビットが含まれています。

6-28

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ

データ・メモリ・コントロール・レジスタ（DMEM_CONTROL）

0xFFE0 0004

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15 14 13 12 11 10 9
0 0 0 1 0 0 0

8
0

7
0

6
0

5
0

PORT_PREF1（DAG1ポート・プリファレンス）
0 - DAG1キャッシュ不可能フェッチ
でポート A を使用
1 - DAG1キャッシュ不可能フェッチ
でポート B を使用
PORT_PREF0（DAG0ポート・
プリファレンス）
0 - DAG0 キャッシュ不可能フェッチ
でポート A を使用
1 - DAG0 キャッシュ不可能フェッチ
でポート B を使用
DCBS（L1データ・キャッシュ・バンク選択）
ADSP-BF532 と ADSP-BF533 では、DMC[1:0] ＝ 11 の場合にのみ有効。L1 データ・キャッシュ・バンクの選択にアドレス・
ビット A[14] または A[23] が使用されるかどうかを決定。
0 - アドレス・ビット 14 を使用して、キャッシュ・アクセス用にバンク A または B を選択。アドレスのビット 14 が 1 の場合、L1 データ・メモリのデータ・バンク A を選択。アド
レスのビット 14 が 0 の場合、L1 データ・メモリのデータ・
バンク B を選択。
1 - アドレス・ビット 23 を使用して、キャッシュ・アクセス用にバンク A または B を選択。アドレスのビット 23 が 1 の場合、L1 データ・メモリのデータ・バンク A を選択。アド
レスのビット 23 が 0 の場合、L1 データ・メモリのデータ・
バンク B を選択。
6-36 ページの「キャッシュ可能アドレス空間のマッピング例」
を参照。

4
0

3
0

2
0

1
0

リセット＝ 0x0000 1001

01
ENDCPLB（データ・キャッシュ可能性
保護索引バッファ・イネーブル）
0 - CPLB はディスエーブル。最小限のアドレス・チェックのみ。
1 - CPLB はイネーブル
DMC[1:0]（L1データ・メモリ設定）
ADSP-BF533 の場合：
00 -両 方 の デ ー タ・バ ン ク はSRAM。あ ら か じ め キ ャ ッシュとして設定されている場
合には、すべてのキャッシュ・
ラインを無効化。
01 -予備
10 -データ・バンク A は、下位 16K
バイトの SRAM と上位
16K バイト・キャッシュ。
データ・バンク B は SRAM。
11 -両方のデータ・バンクは、下位 16K バイトの SRAM と上位
16K バイト・キャッシュ。
ADSP-BF532 の場合：
00 -両 方 の デ ー タ・バ ン ク はSRAM。あ ら か じ め キ ャ ッシュとして設定されている場
合には、すべてのキャッシュ・
ラインを無効化。
01 -予備
10 -データ・バンク A はキャッシュ、
データ・バンク B は SRAM
11 -両 方 の デ ー タ・バ ン ク は
キャッシュ
ADSP-BF531 の場合：
00 -データ・バンク A は SRAM。
あらかじめキャッシュとして設定されている場合には、すべてのキャッシュ・ラインを無効化。
01 -予備
10 -データ・バンク A はキャッシュ
11 -予備

図 6-12. L1 データ・メモリ・コントロール・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-29

L1 データ・メモリ

PORT_PREF1 ビットは、DAG1 キャッシュ不可能 L2 フェッチの処理に使用されるデータ・ポートを選択します。キャッシュ可能フェッチは、ター
ゲットとなるキャッシュ・メモリに物理的に関連付けられたデータ・ポートによって常に処理されます。DAG0、DAG1、キャッシュ・トラフィッ
クをさまざまなポートへ向け、L2 メモリへのキューを満杯に保持することで性能を最適化します。
PORT_PREF0 ビットは、DAG0 キャッシュ不可能 L2 フェッチの処理に使用されるデータ・ポートを選択します。キャッシュ可能フェッチは、ター
ゲットとなるキャッシュ・メモリに物理的に関連付けられたデータ・ポートによって常に処理されます。DAG0、DAG1、キャッシュ・トラフィッ
クをさまざまなポートへ向け、L2 メモリへのキューを満杯に保持することで性能を最適化します。

L

デュアルDAG読出しによる最適性能を得るには、DAG0とDAG1は異なるポートに設定してください。たとえば、PORT_PREF0 が 1に設定されている場合には、PORT_PREF1 は 0に設定してください。

DCBS ビットは、どのアドレスが同じセットにエイリアスされるかをいくらか制御できます。このビットを使用すれば、繰り返し使用されるセットの犠牲を回避することで、キャッシュ内に常駐しがちなアドレスに影響を与えることができます。ただし、データ・バンク A とデータ・バンクB の両方がキャッシュとして機能している必要があります（このレジスタのビット DMC[1:0] を 11 に設定）。
ENDCPLB ビットは、データ用に使用される16 個のキャッシュ可能性保護索

引バッファ（CPLB）をイネーブル／ディスエーブルにするために使用されます（6-35 ページの「L1 データ・キャッシュ」を参照）。データCPLB
は、リセット後にデフォルトでディスエーブルにされます。ディスエーブ
ルにされると、L1メモリ・インターフェースによって最小限のアドレス・
チェックだけが実行されます。この最小限のチェックは、プロセッサが以下の動作を行ったときに例外を生成します。
• 存在しない（予備の）L1メモリ空間をアドレス指定

6-30

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ• 非整列のメモリ・アクセスを実行• DAG1 やユーザ・モードを利用してMMR 空間にアクセス
このビットを使用して CPLB をディスエーブルにしてから、CPLB のディ
スクリプタ（レジスタ DCPLB_DATAx と DCPLB_ADDRx）を更新することが必要です。なお、ロード／ストアの順序付けは弱いため（6-73 ページの「ロードとストアの順序付け」を参照）、CSYNC 命令を実行してから CPLB をディスエーブルにしてください。

Lキャッシュや CPLB をイネーブル／ディスエーブルにする際には、
DMEM_CONTROLへの書込みの直後にSSYNCを実行して正常な動作を保証します。

リセット後のデフォルトによって、すべての L1 データ・メモリは SRAM
として機能します。DMC[1:0] ビットを使用すれば、このメモリの一部をキャッシュとして機能するように確保することができます。メモリをキャッシュとして機能するように確保しても、L2 メモリ・アクセスはキャッシュされません。そのためには、CPLBもイネーブルにし（ENDCPLB
ビットを使用）、選択したメモリ・ページを CPLB ディスクリプタ（レジスタ DCPLB_DATAx と DCPLB_ADDRx）でキャッシュ・イネーブルとして指定する必要があります。
リセット後のデフォルトによって、キャッシュと CPLB のアドレス・
チェックはディスエーブルにされます。

L

正常な動作と将来の互換性を保証するため、このレジスタ内のすべての予備ビットは、このレジスタが書き込まれるたびに 0に設定する必要があります。

■ L1 データ SRAM
SRAMへのアクセスは衝突しません。ただし、そのアクセスが同じ 32ビット・ワード極性（アドレス・ビット 2が一致）、同じ 4Kバイト・サブバンク（アドレス・ビット 13と12が一致）、同じ 16Kバイト・ハーフ・バンク

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-31

L1 データ・メモリ（アドレス・ビット 16が一致）、同じバンク（アドレス・ビット 21と20が一致）に対するものである場合を除きます。アドレス衝突が検出されると、アクセスは最初に DAG に対して許可され、次にストア・バッファに対して許可され、最後に DMAとキャッシュ・フィル／ビクティム・トラ
フィックに対して許可されます。十分な DMA 帯域幅を保証するため、
DMA が 16を超える連続したコア・クロック・サイクルの間ブロックされていた場合、または2番目のDMA I/Oがキュー登録されてから最初のDMA
I/O が処理された場合、DMA には最高の優先順位が与えられます。
表 6-4 は、サブバンク構造がメモリにマッピングされる様子を示します。
表 6-4.

L1 データ・メモリ SRAM サブバンクの開始アドレス
ADSP-BF532

ADSP-BF531

データ・バンク A、 0xFF80 0000
サブバンク 0––

データ・バンク A、 0xFF80 1000
サブバンク 1––

データ・バンク A、 0xFF80 2000
サブバンク 2––

データ・バンク A、 0xFF80 3000
サブバンク 3––

データ・バンク A、 0xFF80 4000
サブバンク 40xFF80 4000

0xFF80 4000

データ・バンク A、 0xFF80 5000
サブバンク 50xFF80 5000

0xFF80 5000

データ・バンク A、 0xFF80 6000
サブバンク 6

0xFF80 6000

0xFF80 6000

データ・バンク A、 0xFF80 7000
サブバンク 7

0xFF80 7000

0xFF80 7000

データ・バンク B、 0xFF90 0000
サブバンク 0––

メモリ・バンクと
サブバンク

6-32

ADSP-BF533

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ

表 6-4.

L1 データ・メモリ SRAM サブバンクの開始アドレス（続き）
ADSP-BF532

ADSP-BF531

データ・バンク B、 0xFF90 1000
サブバンク 1––

データ・バンク B、 0xFF90 2000
サブバンク 2––

データ・バンク B、 0xFF90 3000
サブバンク 3––

データ・バンク B、 0xFF90 4000
サブバンク 40xFF90 4000–

データ・バンク B、 0xFF90 5000
サブバンク 5

0xFF90 5000–

データ・バンク B、 0xFF90 6000
サブバンク 6

0xFF90 6000–

データ・バンク B、 0xFF90 7000
サブバンク 7

0xFF90 7000–

メモリ・バンクとサブバンク

ADSP-BF533

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-33

L1 データ・メモリ

図 6-13は、L1データ・メモリのアーキテクチャを示します。

ࠬࠢ࡜࠶࠴ࡄ࠶࠼

65$0

65$0߹ߚߪࠠࡖ࠶ࠪࡘ

,2ࡃ࠶ࡈࠔ

.%

5($'$'63%)ߩߺ

.%

.%

࡜ࠗࡦ࡮
ࡈࠖ࡞࡮ࡃ࠶ࡈࠔ
ࡆ࠶࠻

.%

ࡆ࠶࠻
ࡆ࠶࠻

ࡆ࠶࠻

ࡆ࠶࠻

'0$ࡃ࠶ࡈࠔ

ࡆ࠶࠻

.%

.%

.%

'0$

3257%

ࡆ࠶࠻

ࡆ࠶࠻

࠺࡯࠲࡮ࡃࡦࠢ%$'63%)ߣ$'63%)ߩߺ

.%ࠠࡖ࠶ࠪࡘ࡮ ࠠࡖ࠶ࠪࡘ࡮
࠲ࠣ࠲ࠣࡆࠢ࠹ࠖࡓ࡮
ࡃ࠶ࡈࠔࡆ࠶࠻

.%ࠠࡖ࠶ࠪࡘ࡮ ࠠࡖ࠶ࠪࡘ࡮
࠲ࠣ
࠲ࠣ

:5,7(
5($'

.%

.%

.%

.%

࡜ࠗࡦ࡮
ࡈࠖ࡞࡮ࡃ࠶ࡈࠔ
ࡆ࠶࠻
3257$

ࠠࡖ࠶ࠪࡘ࡮ ࠠࡖ࠶ࠪࡘ࡮
࠲ࠣ
࠲ࠣ

ࡆ࠶࠻
ࡆ࠶࠻
࠺࡯࠲࡮ࡃࡦࠢ$ࡆ࠶࠻

'0$ࡃ࠶ࡈࠔ

ࡆ࠶࠻

.%

.%

.%

ࡆࠢ࠹ࠖࡓ࡮
ࡃ࠶ࡈࠔࡆ࠶࠻

.%

ᦠㄟߺ
ࡃ࠶ࡈࠔ
㨪ࡆ࠶࠻

ࠠࡖ࠶ࠪࡘ࡮ ࠠࡖ࠶ࠪࡘ࡮
࠲ࠣ
࠲ࠣ

:5,7(

'$*/2$''$*/2$''&%
ࡊࡠ࠮࠶ࠨ࡮ࠦࠕ߳

ࠬ࠻ࠕ࡮ࡃ࠶ࡈࠔ
ࡆ࠶࠻

'0$ᄖㇱࡔࡕ࡝߳

($%'$*ࠬ࠻ࠕ

図 6-13. L1 データ・メモリのアーキテクチャ

6-34

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ■ L1 データ・キャッシュキャッシュ用語の定義については、6-80 ページの「用語集」を参照してく
ださい。
データ・キャッシュがイネーブルにされる（DMEM_CONTROL レジスタのビット DMC[1:0] によって制御される）と、16K バイトのデータ・バンクA、または 16K バイトのデータ・バンクA とデータ・バンク B の両方をキャッシュとして機能するように設定できます。ADSP-BF533 では、上位 16Kバイトが使用されます。ADSP-BF531では、データ・バンク A だけが使用できます。4ウェイ・セット・アソシエイティブな命令キャッシュとは異なり、データ・キャッシュは 2 ウェイ・セット・アソシエイティブです。
2 つのバンクが使用可能であり、キャッシュとしてイネーブルにされると、ウェイではなく、新たなセットが作成されます。データ・バンク A とデー
タ・バンク B の両方にキャッシュとして機能するメモリがある場合、
DMEM_CONTROL レジスタの DCBS ビットを使用すれば、キャッシュ・メモリ
のどのバンクですべてのアドレス空間のどのハーフを処理するかを制御できます。DCBS ビットでは、アドレス・ビット 14 または 23 を選択して、キャッシュ・バンク間でのトラフィックを誘導します。これによって、アドレスが同じセットにエイリアスされることをいくらか制御できます。したがって、繰り返し使用されるセットの犠牲を回避することで、キャッシュ内に常駐しがちなアドレスに影響を与えることができます。
キャッシュへのアクセスは、そのアクセスが同じ 4K バイト・サブバンク、
同じハーフ・バンク、同じバンクに対するものである場合を除いて衝突しません。キャッシュの場合、タグの維持に必要なオーバーヘッドのために、マルチポート型動作は SRAM ほど明白ではありません。キャッシュ・
アドレスが衝突すると、アクセスは、最初に DTEST レジスタ・アクセスに許可され、次にストア・バッファに許可され、最後にキャッシュ・フィル
／ビクティム・トラフィックに許可されます。
3 つのキャッシュ・モードを使用できます。
• 読出し専用で、キャッシュ・ライン割当て付きのライトスルー

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-35

L1 データ・メモリ• 読出し／書込みで、キャッシュ・ライン割当て付きのライトスルー• 読出し／書込みで、キャッシュ・ラインを割り当てるライトバック
キャッシュ・モードは、DCPLB ディスクリプタによって選択されます（6-51
ページの「メモリ保護とプロパティ」を参照）。キャッシュ・モードはメ
モリ・ページごとに独立して選択できるため、これらのキャッシュ・モー
ドの任意の組合わせを同時に使用できます。
キャッシュがイネーブルにされている（DMEM_CONTROL レジスタのビット
DMC[1:0] によって制御されている）場合には、データ CPLB もイネーブルにしてください（DMEM_CONTROL レジスタの ENDCPLB ビットによって制御される状態）。キャッシュされるのは、データ CPLB によってキャッシュ可能と指定されたメモリ・ページだけです。データ CPLBがディスエーブルにされた場合のデフォルト動作は、何もキャッシュされません。

[

MMR 空間がデータ CPLB によってキャッシュ可能と設定された
り、L1 SRAM として機能しているデータ・バンクがデータ CPLB
によってキャッシュ可能と設定されたりした場合には、異常な動作につながることがあります。

X キャッシュ可能アドレス空間のマッピング例

次に、キャッシュ可能アドレス空間を 2つのデータ・バンクにマッピングする例を示します。
2 つのバンクがADSP-BF533 または ADSP-BF532 でキャッシュとして設定されているとき、これらのバンクは Blackfinプロセッサのアドレス空間に独立してマッピングできる、2 つの独立した16Kバイトの 2ウェイ・セッ
ト・アソシエイティブ・キャッシュとして動作します。

6-36

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ

2 つのデータ・バンクがキャッシュとして設定されている場合には、
DMEM_CONTROL レジスタの DCBS ビットは、アドレス・ビット A[14] またはA[23] をキャッシュ・セレクタとして指定します。アドレス・ビット A[14]または A[23] は、データ・バンクA によって実装されたキャッシュ、またはデータ・バンク B によって実装されたキャッシュを選択します。
• DCBS = 0 の場合、A[14] はアドレス・インデックスの一部であり、A[14] = 0 であるすべてのアドレスではデータ・バンクB を使用します。A[14] = 1 であるすべてのアドレスでは、データ・バンクAを使用します。
この場合、A[23] は、タグ付きでキャッシュに格納されたアドレス
内の単なる別ビットとして扱われ、キャッシュによるヒット／ミス処理で比較されます。
• DCBS = 1 の場合、A[23] はアドレス・インデックスの一部であり、A[23] = 0 であるすべてのアドレスではデータ・バンクB を使用します。A[23] = 1 であるすべてのアドレスでは、データ・バンクAを使用します。
この場合、A[14] はタグ付きでキャッシュに格納されたアドレス内の単なる別ビットとして扱われ、キャッシュによるヒット／ミス処理で比較されます。
DCBS = 0 または DCBS = 1 を選択した結果は、次のとおりです。

• DCBS = 0 の場合、A[14] はデータ・バンク B の代わりにデータ・バ
ンク A を選択します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-37

L1 データ・メモリ

交互に繰り返す 16K バイト・ページのメモリは、2つのデータ・バンクによって実装された 2 つの 16Kバイト・キャッシュにそれぞれマッピングされます。したがって、次のことがいえます。
最初の 16K バイトのメモリにあるデータは、データ・バン
ク B にだけ格納できます。
次のアドレス範囲（16 ～ 32K バイト）－ 1 にあるデータ
は、データ・バンク A にだけ格納できます。
次の範囲（32 ～ 48K バイト）－ 1 にあるデータは、デー
タ・バンク B に格納されます。
交互マッピングが続きます。
その結果、このキャッシュは、あたかも単一で連続した 2ウェイ・セット・
アソシエイティブな 32K バイト・キャッシュであるかのように動作します。各ウェイは 16K バイト長であり、同じ14 ビットの先頭アドレスを持
つすべてのデータ・エレメントは、2 つまでのエレメントを（各ウェイに1 つ）格納できる重複しないセットにインデックス付けされます。
• DCBS = 1 の場合、A[23] はデータ・バンク B の代わりにデータ・バ
ンク A を選択します。
DCBS = 1 では、システムは2つの独立したキャッシュ（それぞれが2 ウェイ・セット・アソシエイティブな16K バイト・キャッシュ）のように機能します。各バンクは、8Mバイト・ブロックのメモリの交互セットとして機能します。

たとえば、データ・バンク Bでは、最初の 8Mバイトのメモリ・ア
ドレス範囲に対するすべてのデータ・アクセスをキャッシュします。つまり、どの 8M バイト範囲も（16Kバイトの繰返しではなく）

6-38

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ

2 つのライン・エントリを得ようと競います。同様に、データ・バ
ンク A では、8Mバイトより上で16M バイトより下にあるデータをキャッシュします。
たとえば、アプリケーションが最初の 8M バイトのメモリに完全に収まる 1M バイト長のデータ・セットから動作している場合には、そのアプリケーションは実質的にキャッシュの半分、つまりデー
タ・バンク B（2 ウェイ・セット・アソシエイティブな 16K バイ
ト・キャッシュ）によって処理されます。この場合、アプリケー
ションはデータ・バンク A からは何のメリットも得られません。

L

多くのアプリケーションでは、DCBS = 0 での動作が最適です。

しかし、アプリケーションが少なくとも 8M バイト離れた2 つのメモリ空間にある 2つのデータ・セットから動作している場合には、キャッシュとデータのマッピング関係をより綿密に制御できます。たとえば、プログラ
ムが一連のデュアル MAC 演算を実行しており、2つの DAGがどのサイク
ルでもデータにアクセスしている場合には、DAG0 のデータ・セットを 1
つのブロックのメモリに置き、DAG1 のデータ・セットをもう一方のブ
ロックのメモリに置くことで、システムは以下のことを保証できます。
• DAG0 は、そのすべてのアクセスでデータ・バンクA からそのデータを取得します。
• DAG1 は、データ・バンクB からそのデータを取得します。
この配置では、コアはキャッシュ・ライン転送に両方のデータ・バスを使用し、キャッシュとコアの間で最大のデータ帯域幅が得られます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-39

L1 データ・メモリ

図 6-14は、DCBS = 1 の場合のマッピング例を示します。

L

DCBS 選択は動的に変更できます。しかし、データ紛失を防止するには、最初にキャッシュ全体をフラッシュして無効化してください。
࠙ࠚࠗ ࠙ࠚࠗ
0
1

8MB࠺࡯࠲࡮ࡃࡦࠢB
8MB

8MB
࠺࡯࠲࡮ࡃࡦࠢB

8MB
࠙ࠚࠗ ࠙ࠚࠗ
10

図 6-14. DCBS ＝ 1 の場合のデータ・キャッシュ・マッピング
X データ・キャッシュ・アクセス

キャッシュ・コントローラは、DAG からのアドレスをタグ・ビットに基づいてテストします。論理アドレスが L1 キャッシュに存在する場合にはキャッシュ・ヒットが発生し、データは L1 でアクセスされます。論理ア
ドレスが存在しない場合にはキャッシュ・ミスが発生し、メモリ・トラン
ザクションはシステム・インターフェースを介して次のレベルのメモリに渡されます。外部メモリから戻ってくるデータに割り当てられるキャッシュ・タグとデータ空間は、キャッシュ・コントローラの置換ポリシーとライン・インデックスによって決まります。

6-40

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ

データ・キャッシュ・ラインの状態は、無効、排他（有効でクリーン）、
更新（有効でダーティ）のいずれかです。割り当てられたラインを有効なデータがすでに占有し、キャッシュがライトバック・ストレージ用に設定されている場合には、コントローラはキャッシュ・ラインの状態をチェッ
クし、それに応じて処置します。
• ラインの状態が排他（クリーン）である場合には、新しいタグとデータは古いラインに上書きされます。
• ラインの状態が更新（ダーティ）である場合には、キャッシュにはデータの有効なコピーだけが含まれています。
ラインがダーティである場合には、キャッシュの現在の内容が外部メモリにコピーバックされてから、キャッシュに新しいデータが書き込まれます。
プロセッサは、ビクティム・バッファとライン・フィル・バッファを提供します。キャッシュ・ロード・ミスによって、置換の必要なビクティム・
キャッシュ・ラインが生成された場合には、これらのバッファが使用されます。ライン・フィル動作は、外部メモリにまで達します。データ・キャッ
シュは、システムへのライン・フィル要求をクリティカル（または要求された）ワード・ファーストとして実行し、そのデータをキャッシュ・ライ
ンの更新時に待機中の DAG に転送します。つまり、このキャッシュは、ク
リティカル・ワード転送を行います。
データ・キャッシュは、ヒットアンダー・ストア・ミスとヒットアンダー・
プリフェッチ・ミスに対応しています。つまり、書込みミスが発生した
り、キャッシュをミスする（キャッシュ可能領域への）PREFETCH 命令が実行されると、命令パイプラインは、少なくとも 4サイクルのストールを引き起こします。さらに、ライン・フィルが完了する間に、それ以降のロード／ストア命令が L1 キャッシュでヒットすることがあります。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-41

L1 データ・メモリ

十分な優先順位（現在のコンテキストから見て）を持つ割込みは、ストー
ルされたロード命令をキャンセルします。したがって、ロード動作が L1
データ・メモリ・キャッシュをミスし、システム・インターフェースに高遅延のライン・フィル動作を生成した場合には、コアに割込みをかけて、別のコンテキストの処理を開始させることが可能です。キャッシュ・ライ
ンをフィルするためのシステム・アクセスはキャンセルされず、データ・キャッシュが新しいデータで更新されてから、それぞれのデータ・バンク
に対するその後のキャッシュ・ミス動作が処理されます。詳細について
は、4-42 ページの「例外」を参照してください。
X キャッシュ書込み方式

キャッシュ書込みメモリ動作は、ライトスルー方式またはライトバック方式を使用して実現できます。
• ストア動作ごとに、ライトスルー・キャッシュは、キャッシュへの書込み直後に外部メモリへの書込みを開始します。
キャッシュ・ラインがソフトウェアによって明示的にフラッシュされたか置換された場合には、キャッシュ・ラインの内容は、外部メ
モリに書き戻されずに無効化されます。
• ライトバック・キャッシュは、ラインがそのラインを必要とする
ロード動作によって置換されるまでは、外部メモリに書き込みません。
L1 データ・メモリは、各データ・バンク上にフル・キャッシュ・ライン
幅のコピーバック・バッファを採用しています。さらに、L1 データ・メモリ内の 2エントリ書込みバッファでは、キャッシュ禁止またはストアス
ルー保護付きのすべてのストアを受け付けます。SSYNC 命令は、書込みバッ
ファをフラッシュします。

6-42

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ

X IPRIO レジスタと書込みバッファの深さ

割込み優先順位レジスタ（IPRIO）を使用すれば、ポート Aでの書込みバッ
ファのサイズを制御できます（6-34 ページの「L1 データ・メモリのアー
キテクチャ」を参照してください）。
IPRIO[3:0] ビットは、
低優先順位の割込みのウォーターマークを反映する

ようにプログラムできます。割込みが発生して、プロセッサが低優先順位の割込みサービス・ルーチンから高優先順位の割込みサービス・ルーチンに制御を移すと、書込みバッファのサイズは 2 つの 32ビット・ワード深さから 8 つの 32ビット・ワード深さまで増大します。これによって、書込み
バッファが低優先順位の割込みルーチンですでにフィルされていた場合に、割込みサービス・ルーチンは初期ストールなしで書込みを実行およびポストできます。これが最も役立つのは、ポストされた書込みが低速な外部メモリ・デバイスへのものである場合です。高優先順位の割込みサービ
ス・ルーチンから、低優先順位の割込みサービス・ルーチンまたはユー

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-43

L1 データ・メモリ

ザ・モードに戻ると、コアは書込みバッファが必要な書込みを完了して深さ 2の状態に戻るまでストールします。デフォルトでは、書込みバッファは固定された深さ 2 のFIFO です。
割込み優先順位レジスタ（IPRIO）

0xFFE0 2110

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15 14 13 12 11 10
0 0 0 0 0 0

9
0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

リセット＝ 0x0000 0000

0
0
IPRIO_MARK（優先順位ウォーターマーク）
0000 -デフォルト、すべての割
込みは低優先順位0001 -割込み 15 ～ 1 は低優先順
位、割込み 0 は高優先順位と見なす
0010 -割込み 15 ～ 2 は低優先順
位、割込み 1 と 0 は高優
先順位と見なす...
1110 -割込み 15 と 14 は低優先
順位、割込み 13 ～ 0 は
高優先順位と見なす
1111 -割込み 15 は低優先順位、
その他すべては高優先順位と見なす

図 6-15. 割込み優先順位レジスタ

6-44

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ

X データ・キャッシュ制御命令

このプロセッサは、ユーザ・モードとスーパーバイザ・モードでアクセスでき る 3 つの デ ータ・キ ャッ シ ュ制 御 命令 を 定め て いま す。つま り、PREFETCH、FLUSH、FLUSHINV の各命令です。
• PREFETCH（データ・キャッシュ・プリフェッチ）では、L1 キャッシュ内にラインの割当てを試みます。プリフェッチがキャッシュでヒットした場合、または例外を生成するか、キャッシュ禁止領域をアドレス指定した場合には、PREFETCH は NOP のように機能します。
• FLUSH（データ・キャッシュ・フラッシュ）では、データ・キャッ
シュは指定のキャッシュ・ラインと外部メモリを同期させます。
キャッシュされたデータ・ラインがダーティである場合には、この命令はラインを書き出して、データ・キャッシュでそのラインをク
リーンとマークします。指定のデータ・キャッシュ・ラインがすでにクリーンであるか存在しない場合には、FLUSH は NOP のように機能します。
• FLUSHINV（データ・キャッシュ・ラインのフラッシュと無効化）では、データ・キャッシュは FLUSH 命令と同じ機能を実行してから、
キャッシュ内の指定のラインを無効化します。ラインがキャッシュ
内にあってダーティである場合には、キャッシュ・ラインは外部メ
モリに書き出されます。その後、キャッシュ・ライン内のバリッ
ド・ビットがクリアされます。ラインがキャッシュにない場合には、FLUSHINV は NOP のように機能します。
ソフトウェアがシステム・ハードウェアとの同期を必要とする場合には、FLUSH動作が完了したことを確認するために、FLUSH 命令の後に SSYNC 命
令を置きます。これまでのストアがすべてのキューを通じてプッシュされたことを保証するために順序付けが望まれる場合には、FLUSH の前に SSYNC
命令を置きます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-45データ・テスト・レジスタ

X データ・キャッシュの無効化

前の節で説明した FLUSHINV 命令に加えて、フラッシングが必要ない場合には、2 つの方法でデータ・キャッシュを無効化できます。最初の方法では、各キャッシュ・ラインのインバリッド・ビットを無効状態に設定することでバリッド・ビットを直接に無効化します。この方法を実現するた
め、新たな MMR（DTEST_COMMAND と DTEST_DATA[1:0]）によって、すべてのキャッシュ・エントリを直接に読出し／書込みできるようにします。この方法については、次の節で説明します。
データ・キャッシュをまるごと無効化するには、2 番目の方法を使用します。DMEM_CONTROL レジスタ（6-29 ページの図 6-12「L1 データ・メモリ・
コントロール・レジスタ」を参照）の DMC[1:0] ビットをクリアすると、
データ・キャッシュ内のすべてのバリッド・ビットは無効状態に設定されます。DMEM_CONTROL レジスタへの2回目の書込みによって、DMC[1:0] ビッ
トを以前の状態に設定してから、データ・メモリを以前のキャッシュ／SRAM 設定に戻します。SSYNC 命令を実行してからキャッシュを無効化します。また、これらの動作が終了するたびに、CSYNC 命令を挿入してください。

データ・テスト・レジスタ
L1 命令メモリと同様に、L1 データ・メモリにも新たなMMR が含まれており、すべてのキャッシュ・エントリを直接に読出し／書込みできます。
これらのレジスタは、データ・キャッシュをテスト、初期化、デバッグするためのメカニズムを提供します。
データ・テスト・コマンド・レジスタ（DTEST_COMMAND）への書込みの際には、L1 キャッシュのデータ・アレイまたはタグ・アレイがアクセスされ、データはデータ・テスト・データ・レジスタ（DTEST_DATA[1:0]）を通じて転送されます。DTEST_DATA[1:0] レジスタには、書き込まれる 64
ビット・データ、または 64 ビット・データ読出し用のデスティネーショ

6-46

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ

ンが含まれています。下位 32 ビットは DTEST_DATA[0] レジスタに格納され、上位 32ビットは DTEST_DATA[1] レジスタに格納されます。タグ・アレ
イのアクセス時には、DTEST_DATA[0] レジスタが使用されます。

L

DTEST_COMMAND の書込み後には、CSYNC 命令が必要です。

DTEST レジスタについては、以下の図で説明します。

• 6-48 ページの図 6-16「データ・テスト・コマンド・レジスタ」• 6-49 ページの図 6-17「データ・テスト・データ 1 レジスタ」• 6-50 ページの図 6-18「データ・テスト・データ 0 レジスタ」
これらのレジスタへのアクセスは、スーパーバイザ・モードまたはエミュ
レーション・モードでのみ可能です。DTEST レジスタへの書込みに際しては、最初に DTEST_DATA レジスタに書き込んでから、次に DTEST_COMMAND レ
ジスタに書き込みます。

■ DTEST_COMMAND レジスタ
データ・テスト・コマンド・レジスタ（DTEST_COMMAND）への書込みの際には、L1 キャッシュのデータ・アレイまたはタグ・アレイがアクセスされ、データはデータ・テスト・データ・レジスタ（DTEST DATA[1:0]）を通じて転送されます。

L

データ／命令アクセス・ビットによって、DTEST_COMMAND MMR による L1 命令 SRAM への直接アクセスが可能です。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-47データ・テスト・レジスタ

データ・テスト・コマンド・レジスタ（DTEST_COMMAND）

0xFFE0 0300

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X X X X X

アクセス・ウェイ／命令
アドレス・ビット 11
0 - アクセス・ウェイ 0 ／命令ビット 11 ＝ 0
1 - アクセス・ウェイ 1 ／命令ビット 11 ＝ 1
データ／命令アクセス
0 - データにアクセス
1 - 命令にアクセス
データ・バンク・アクセス
ADSP-BF533 の場合：
0 - データ・バンク A ／命令メモリ 0xFFA0 0000 にアクセス
1 - データ・バンク B ／命令メモリ 0xFFA0 8000 にアクセス
ADSP-BF532 の場合：
0 - データ・バンク A にアクセス
1 - データ・バンク B ／命令メモリ 0xFFA0 8000 にアクセス
ADSP-BF531 の場合：
0 - データ・バンク A にアクセス（データ／命令アクセス＝ 0 の場合に有効）
1 - 命令メモリ 0xFFA0 8000（データ／命令アクセス＝ 1 の場合に有効）
15 14 13 12 11 10 9
X X X X X X X

8
X

7 6
X X

5
X

4
X

3
X

2
X

データ・キャッシュ選択／
アドレス・ビット 14
0 - 予備／命令ビット 14 ＝ 0
1 - 選択データ・キャッシュ・バンク／命令ビット
14 ＝ 1
セット・インデックス [5:0]64 セットのうち 1 つを選択

リセット＝未定義

サブバンク・アクセス [1:0]（SRAM ADDR[13:12]）00 - サブバンク 0 にアクセス
01 - サブバンク 1 にアクセス
10 - サブバンク 2 にアクセス
11 - サブバンク 3 にアクセス

1 0
X X

読出し／書込みアクセス
0 - 読出しアクセス
1 - 書込みアクセス
アレイ・アクセス
0 - タグ・アレイにアクセス
1 - データ・アレイにアクセス

ダブル・ワード・インデックス [1:0]
256 ビット・ライン内の 4 つの 64 ビット・
ダブル・ワードの 1 つを選択

図 6-16. データ・テスト・コマンド・レジスタ

6-48

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ■ DTEST_DATA1 レジスタ
データ・テスト・データ・レジスタ（DTEST_DATA[1:0]）には、書き込まれる 64 ビット・データ、または64 ビット・データ読出しのデスティネーションが含まれています。
データ・テスト・データ1レジスタ（DTEST_DATA1）には上位 32 ビットを格納します。
データ・テスト・データ 1 レジスタ（DTEST_DATA1）

0xFFE0 0404

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X X X X X

リセット＝未定義
データ [63:48]

15 14 13 12 11 10 9 8 7 6
X X X X X X X X X X

5 4 3 2 1 0
X X X X X X
データ [47:32]

タグ・アレイへのアクセス時には、すべてのビットが予備です。
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X X X X X

15 14 13 12 11 10 9 8 7 6
X X X X X X X X X X

リセット＝未定義

5 4 3 2 1 0
X X X X X X

図 6-17. データ・テスト・データ 1 レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-49データ・テスト・レジスタ■ DTEST_DATA0 レジスタ
データ・テスト・データ 0 レジスタ（DTEST_DATA0）には、書き込まれる
64ビット・データの下位 32ビット、または64ビット・データ読出しのデ
スティネーションの下位 32ビットが含まれています。DTEST_DATA0 レジス
タは、タグ・アレイへのアクセスにも使用され、キャッシュ・ラインの状態を示すバリッド・ビットとダーティ・ビットを含みます。
データ・テスト・データ 0 レジスタ（DTEST_DATA0）0xFFE0 0400

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X X X X X

リセット＝未定義
データ [31:16]

15 14 13 12 11 10 9 8 7 6
X X X X X X X X X X

5 4 3 2 1 0
X X X X X X
データ [15:0]

L1 キャッシュのタグ・アレイへのアクセスに使用されます。アドレス・タグは、物理アドレスの上位 18 ビットとビット 11 から構成されます。6-15 ページの「キャッシュ・ライン」を参照。
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X X X X X

リセット＝未定義
タグ [19:4]
物理アドレス15 14 13 12 11 10 9
X X X X X X X

8
X

7 6
X X

5
X

4
X

3
X

タグ [3:2]
物理アドレス
タグ
物理アドレスLRU
0 - ウェイ 0 は最長時間未使用です
1 - ウェイ 1 は最長時間未
使用です

2
X

1 0
X X
有効
0 - キャッシュ・ライン無効
1 - キャッシュ・ライン有効
ダーティ
0 - キャッシュ・ラインは、
ソ ー ス・メ モ リ か ら コ
ピーされて以降、変更されていません
1 - キャッシュ・ラインは、
ソ ー ス・メ モ リ か ら コ
ピーされた後で、変更されました

図 6-18. データ・テスト・データ 0 レジスタ

6-50

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ

外部メモリ
外部メモリ空間を 6-3 ページの図 6-1 に示します。メモリ領域の 1 つはSDRAM サポート専用です。SDRAMバンクのサイズは 16～ 128M バイトの範囲でプログラマブルです。バンクの開始アドレスは 0x0000 0000 です。
次の 4 つのバンクはそれぞれ 1M バイトを含み、非同期メモリのサポート専用です。非同期メモリ・バンクの開始アドレスは 0x2000 0000です。

メモリ保護とプロパティ
この節では、メモリ・マネジメント・ユニット（MMU）、メモリ・ペー
ジ、CPLB管理、MMU 管理、CPLB レジスタについて説明します。

■ メモリ・マネジメント・ユニット
Blackfin プロセッサには、ページ・ベースのメモリ・マネジメント・ユニット（MMU）が内蔵されています。このメカニズムでは、メモリ範囲のキャッシュ可能性を制御できるだけでなく、ページ・レベルでの保護特性も管理できます。MMUでは、アクセス権とキャッシュ動作を完全に制御して、タスク間でメモリ・リソースと I/O リソースを極めて柔軟に割り当てることができます。
MMU は、16エントリの 2 つの連想メモリ（CAM）ブロックとして実装されます。各エントリは、キャッシュ可能性保護索引バッファ（CPLB）ディ
スクリプタと呼ばれます。イネーブルにされた場合、MMU 内のすべての有効エントリがフェッチ、ロード、またはストア動作のたびに検査され、要求されたアドレスと CPLB エントリによって記述されたページとの間に一致があるかどうかを判定されます。一致した場合には、ディスクリプ
タ内に含まれるキャッシュ可能性特性と保護特性がメモリ・トランザク
ション用に使用されます（命令の実行サイクルは増えません）。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-51

メモリ保護とプロパティ

L1 メモリは命令メモリとデータ・メモリに分割されるため、CPLB エント
リも命令 CPLBとデータ CPLBの間で分割されます。命令フェッチ要求に対しては 16個の CPLB エントリが使用され、これらは ICPLB と呼ばれます。データ・トランザクションにはさらに 16 個の CPLB エントリが使用され、これらは DCPLB と呼ばれます。ICPLBと DCPLBをイネーブルにするには、それぞれ L1 命令メモリ制御（IMEM_CONTROL）レジスタと L1
データ・メモリ制御（DMEM_CONTROL）レジスタの適切なビットをセットします。これらのレジスタを、それぞれ 6-11 ページの図 6-5 と 6-29 ページの図 6-12 に示します。
各 CPLBエントリは、32 ビット値のペアで構成されます。命令フェッチの場合：• ICPLB_ADDR[n] では、CPLB ディスクリプタによって記述されたページの開始アドレスを定義します。
• ICPLB_DATA[n] では、CPLB ディスクリプタによって記述されたページのプロパティを定義します。
データ操作の場合：• DCPLB_ADDR[m] では、CPLB ディスクリプタによって記述されたページの開始アドレスを定義します。
• DCPLB_DATA[m] では、CPLB ディスクリプタによって記述されたページのプロパティを定義します。
スクラッチパッド・データ・メモリへのデータ・アクセスと、システムおよびコア MMR 空間へのデータ・アクセスには、2 つのデフォルトCPLB
ディスクリプタがあります。これらのデフォルト・ディスクリプタでは上記の空間をキャッシュ不可能と定義するため、これらのメモリ領域に対して新たな CPLBを設定する必要はありません。

L
6-52

この空間に有効な CPLB が設定されている場合には、デフォルトCPLB は無視されます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ■ メモリ・ページ
プロセッサの 4G バイトのアドレス空間は、より小さな範囲のメモリ、つまりメモリ・ページと呼ばれる I/O に分割できます。ページ内のすべてのアドレスは、そのページに定義された特性を共有します。このアーキテク
チャでは、4つの異なるページ・サイズに対応します。
• 1K バイト• 4K バイト• 1Mバイト• 4Mバイト
さまざまなページ・サイズによって、さまざまな種類のメモリと I/Oに合わせて特性のマッピングを整合させる柔軟なメカニズムが提供されます。
X メモリ・ページ特性

各ページは、アドレス・ディスクリプタ・ワード xCPLB_ADDR[n] とプロパ
ティ・ディスクリプタ・ワード xCPLB_DATA[n] から構成される2 ワード・ディスクリプタによって定義されます。アドレス・ディスクリプタ・ワー
ドは、メモリ内のページのベース・アドレスを提供します。ページは、
ページ・サイズの整数倍であるページ境界に合わせる必要があります。たとえば、4Mバイトのページは、4Mバイトで割り切れるアドレスから始める必要があります。一方、1K バイトのページは、どの 1Kバイト境界でも始めることができます。ディスクリプタ内の 2番目のワードは、ページのその他のプロパティや特性を指定します。これらのプロパティには、以下のものが含まれます。
• ページ・サイズ
1K バイト、4K バイト、1Mバイト、4Mバイト

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-53

メモリ保護とプロパティ• キャッシュ可能／キャッシュ不可能
このページへのアクセスは、L1 キャッシュを使用するか、キャッ
シュをバイパスします。
• キャッシュ可能な場合：ライトスルー／ライトバック
データ書込みは、メモリに直接伝搬するか、キャッシュ・ラインが再割当てされるまで延期されます。ライトスルーの場合、読出し専用、または読出し／書込みで割り当てます。
• ダーティ／変更済み
メモリ内のこのページのデータは、CPLBが最後にロードされて以降に変更されました。
• スーパーバイザの書込みアクセス権– スーパーバイザ・モードでは、このページへの書込みをイネーブ
ル／ディスエーブルにします。
– データ・ページのみ。
• ユーザの書込みアクセス権– ユーザ・モードでは、このページへの書込みをイネーブル／ディ
スエーブルにします。
– データ・ページのみ。
• ユーザの読出しアクセス権
ユーザ・モードでは、このページからの読出しをイネーブル／ディ
スエーブルにします。

6-54

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ• バリッド有効な CPLBデータであるかどうかを判定するには、このビットをチェックします。
• ロック
このエントリは MMR 内に保持します。CPLB 置換ポリシーに参加させないでください。

■ ページ・ディスクリプタ・テーブル
CPLB が命令アクセス、データ・アクセス、またはその両方に対してイネーブルにされているとき、メモリ・アクセスでキャッシュを利用するには、MMR ペアで有効な CPLB エントリを使用できることが必要です。
CPLB エントリ用の MMR の保管場所は、命令フェッチの場合は16 個のディスクリプタ、データのロード／ストア動作の場合も 16 個のディスクリプタに限定されています。
小さなメモリ・モデルや簡単なメモリ・モデルでは、これらの 32 個のエントリに収まる一連の CPLB ディスクリプタを定義して、アドレス可能な
全空間をカバーし、置換を不要にすることも可能です。この種の定義は、
静的メモリ・マネジメント・モデルと呼ばれます。
しかし、一般のオペレーティング環境では、アドレス可能なメモリ空間とI/O 空間をカバーするために定義すべきCPLB ディスクリプタの数は、使用可能なオンチップ CPLB MMRに収まりません。このような場合、ページ・ディスクリプタ・テーブルと呼ばれる、メモリベースのデータ構造が使用されます。その中には、潜在的に要求されるすべての CPLB ディスク
リプタを格納できます。ページ・ディスクリプタ・テーブルの具体的な
フォーマットは、Blackfin プロセッサ・アーキテクチャの一部としては定義されていません。メモリ・マネジメント・モデルはオペレーティング・
システムによって異なります。したがって、OS ごとにその条件に合致す

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-55

メモリ保護とプロパティ

るページ・ディスクリプタ・テーブル構造を実装できます。このため、提供される保護のレベルとメモリ管理サポート・ルーチンの性能特性との間で調整を行うことが可能です。

■ CPLB 管理
Blackfin プロセッサが発行したメモリ操作に対して、MMRペア内に有効
な CPLB（キャッシュ可能性保護索引バッファ）ディスクリプタが存在しない場合には、例外が発生して、プロセッサはスーパーバイザ・モードになり、MMU例外ハンドラに制御が移ります（詳細については、4-42 ページの「例外」を参照）。一般に、ハンドラはCPLB 置換ポリシーを実行するオペレーティング・システム（OS）カーネルの一部です。

L

CPLB がイネーブルにされる前に、ページ・ディスクリプタ・テー
ブルとMMU例外ハンドラの両方に対して有効なCPLBディスクリ
プタが所定の位置にある必要があります。これらの CPLB ディスク
リプタについては、ソフトウェアで誤って置換されないように一般にロック・ビットがセットされています。

オンチップ CPLB レジスタ・ペアの 1 つをロードすべき正しい CPLB ディ
スクリプタ・データを見つけるために、ハンドラは障害を起こしたアドレスを使用して、ページ・ディスクリプタ・テーブル構造にインデックス付
けします。すべてのオンチップ・レジスタが有効な CPLB エントリを含んでいる場合には、ハンドラは置換すべきディスクリプタの 1 つを選択し、新しいディスクリプタ情報がロードされます。新しいディスクリプタ・
データを CPLBにロードする前に、以下のビットを使用して、対応するグ
ループの 16個のCPLBをディスエーブルにする必要があります。
• データ・ディスクリプタの場合は、DMEM_CONTROL レジスタのイネー
ブル DCPLB（ENDCPLB）ビット• 命令ディスクリプタの場合は、IMEM_CONTROL レジスタのイネーブル
ICPLB（ENICPLB）ビット

6-56

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ

使用するアルゴリズムと CPLB 置換ポリシーは、システム MMU例外ハンドラの責任になります。このポリシーは、オペレーティング・システムの特性によって規定され、通常は修正 LRU（最長時間未使用）ポリシー、ラウンド・ロビン・スケジューリング方式、または擬似ランダム置換を実装します。
新しい CPLB ディスクリプタがロードされた後、例外ハンドラが復帰し、障害を起こしたメモリ操作が再開されます。この操作では、今度は要求されたアドレスに対して有効な CPLB ディスクリプタが見つかり、正常に続行されるはずです。
1 つの命令が、1回の命令フェッチに加えて、1つまたは2つのデータ・ア
クセスも引き起こすことがあります。このような複数のメモリ操作で、有効なCPLBディスクリプタがMMRペア内に存在しないデータを参照する
可能性があります。この場合、例外は次の順番に優先順位付けおよび処理されます。
• 命令のページ・ミス• DAG0 でのページ・ミス• DAG1 でのページ・ミス■ MMU アプリケーション
メモリ・マネジメントは、Blackfin プロセッサ・アーキテクチャでのオプ
ション機能です。その使用は、特定アプリケーションのシステム条件に基づいています。リセットした時点で、すべての CPLB がディスエーブルにされ、メモリ・マネジメント・ユニット（MMU）は使用されません。
すべての L1 メモリがSRAM として設定された場合には、タスク間または
ユーザ・モードとスーパーバイザ・モードの間でのメモリ空間の保護に対するアプリケーションのニーズに応じて、データと命令の MMU機能はオプションになります。タスク間でメモリを保護するため、オペレーティン
グ・システムは各タスクで使用できる命令やデータのメモリ・ページの個

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-57

メモリ保護とプロパティ

別のテーブルを維持して、関連するタスクの実行時にだけそれらのページをアクセス可能にできます。タスク切替えが発生すると、オペレーティン
グ・システムは、新しいタスクでは使用すべきでない CPLB ディスクリプ
タのオンチップでの無効化を保証できます。また、新しいタスクに適切なディスクリプタをプリロードすることも可能です。
多くのオペレーティング・システムでは、アプリケーション・プログラム
はユーザ・モードで実行され、オペレーティング・システムとそのサービスはスーパーバイザ・モードで実行されます。オペレーティング・システ
ムによって使用されるコードとデータ構造については、実行中のユーザ・
モード・アプリケーションによる不注意な変更から保護すべきです。この保護を実現するには、スーパーバイザ・モードだけでの書込みアクセスを許容する、保護されたメモリ範囲用に CPLB ディスクリプタを定義します。保護されたメモリ領域への書込みがユーザ・モードで試みられた場合には、メモリが変更される前に例外が生成されます。オプションでは、
ユーザ・モード・アプリケーションには、アプリケーションにとって有益なデータ構造に対する読出しアクセスが認められることがあります。変更が予定されていないコードを含むメモリ・ページについては、スーパーバ
イザ・モードの機能でさえ書込みを阻止されることがあります。CPLB エ
ントリはスーパーバイザ・モードでだけ書込みできる MMR であるため、ユーザ・プログラムは、このようにして保護されたリソースにはアクセスできません。
L1 命令メモリまたは L1データ・メモリの一部または全部がキャッシュとして設定されている場合には、対応する CPLB をイネーブルにすることが必要です。命令がメモリ要求を生成し、キャッシュがイネーブルにされると、プロセッサは最初に ICPLB を調べて、要求されたアドレスがキャッシュ可能なアドレス範囲に含まれるかどうかを判定します。MMRペア内に要求されたアドレスに対応する有効な ICPLB エントリが存在しない場
合には、メモリがキャッシュ可能かどうかを判定する有効な ICPLB ディ
スクリプタを取得するために MMU 例外が生成されます。その結果、L1命
令メモリがキャッシュとしてイネーブルにされている場合には、命令を格納するメモリ領域に有効な ICPLB ディスクリプタが定義されている必要

6-58

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリがあります。これらのディスクリプタは、常時 MMR 内に存在するか、MMU 例外ハンドラによって管理されるメモリベースのページ・ディスク
リプタ・テーブルに存在することが必要です。同様に、L1 データ・バン
クの一方または両方がキャッシュとして設定されている場合には、潜在的なすべてのデータ・メモリ範囲は、DCPLB ディスクリプタによってサポートされる必要があります。

Lキャッシュがイネーブルにされる前に、MMU とそれに対応する
データ構造を設定してイネーブルにする必要があります。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-59

メモリ保護とプロパティ■ 保護されたメモリ領域の例
図 6-19 では、命令 CPLB とデータ CPLB 用の基本的な CPLB 割当てのために開始点が提供されています。なお、いくつかの ICPLB とDCPLB には、同じアドレス空間に対して共通のディスクリプタがあります。

๮઎CPLBߩ⸳ቯ
L1๮઎㧦
ࠠࡖ࠶ࠪࡘਇน⢻ߥ1MBࡍ࡯ࠫSDRAM㧦ࠠࡖ࠶ࠪࡘน⢻ߥ
8ߟߩ4MBࡍ࡯ࠫ
ASYNC㧦ࠠࡖ࠶ࠪࡘ
ਇน⢻ߥ1ߟߩ1MBࡍ࡯ࠫ
ASYNC㧦ࠠࡖ࠶ࠪࡘน⢻ߥ
2ߟߩ1MBࡍ࡯ࠫ࠺࡯࠲CPLBߩ⸳ቯSDRAM㧦ࠠࡖ࠶ࠪࡘน⢻ߥ
8ߟߩ4MBࡍ࡯ࠫ
L1࠺࡯࠲㧦ࠠࡖ࠶ࠪࡘਇน⢻ߥ
1ߟߩ4MBࡍ࡯ࠫ

ASYNC㧦ࠠࡖ࠶ࠪࡘ
ਇน⢻ߥ1ߟߩ1MBࡍ࡯ࠫ
ASYNC㧦ࠠࡖ࠶ࠪࡘน⢻ߥ
1ߟߩ1MBࡍ࡯ࠫ

図 6-19. 保護されたメモリ領域の例

6-60

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ■ ICPLB_DATAx レジスタ
図 6-20は、ICPLB データ・レジスタ（ICPLB_DATAx）を示します。

L

正常な動作と将来の互換性を保証するため、このレジスタ内のすべての予備ビットは、このレジスタが書き込まれるたびに 0に設定する必要があります。

ICPLB データ・レジスタ（ICPLB_DATAx）
メモリマップド・
アドレスについては、表 6-5 を参照。

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

リセット＝ 0x0000 0000

PAGE_SIZE[1:0]00 - 1K バイトのページ・サイズ
01 - 4K バイトのページ・サイズ
10 - 1M バイトのページ・サイズ
11 - 4M バイトのページ・サイズ
15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

CPLB_L1_CHBL
このビットは、L1 メモリが SRAMとして設定されるたびにクリア
0 - L1 内でキャッシュ不可能
1 - L1 内でキャッシュ可能
CPLB_LRUPRIO
6-20 ページの「ラインによる命令キャッシュのロック」を参照
0 - 「低」重要度
1 - 「高」重要度

CPLB_VALID
0 - 無効な（ディスエーブル）
CPLB エントリ
1 - 有効な（イネーブル）CPLB
エントリ
CPLB_LOCKCPLB 置換アルゴリズムにおいてソフトウェアで使用可能
0 - ロック解除、CPLB エント
リは置換可能1 - ロック、CPLB エントリは
置換不可
CPLB_USER_RD
0 - ユーザ・モードの読出しア
クセスが保護違反例外を生成
1 - ユーザ・モードの読出しア
クセスが可能図 6-20. ICPLB データ・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-61

メモリ保護とプロパティ

表 6-5.

6-62

ICPLB データ・レジスタのメモリマップド・アドレス

レジスタ名

メモリマップド・アドレスICPLB_DATA00xFFE0 1200ICPLB_DATA10xFFE0 1204

ICPLB_DATA20xFFE0 1208

ICPLB_DATA30xFFE0 120CICPLB_DATA40xFFE0 1210

ICPLB_DATA50xFFE0 1214

ICPLB_DATA60xFFE0 1218

ICPLB_DATA70xFFE0 121CICPLB_DATA80xFFE0 1220

ICPLB_DATA90xFFE0 1224

ICPLB_DATA10

0xFFE0 1228

ICPLB_DATA110xFFE0 122CICPLB_DATA120xFFE0 1230

ICPLB_DATA13

0xFFE0 1234

ICPLB_DATA14

0xFFE0 1238

ICPLB_DATA15

0xFFE0 123C

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ■ DCPLB_DATAx レジスタ
図 6-21は、DCPLB データ・レジスタ（DCPLB_DATAx）を示します。

L

正常な動作と将来の互換性を保証するため、このレジスタ内のすべての予備ビットは、このレジスタが書き込まれるたびに 0に設定する必要があります。

DCPLB データ・レジスタ（DCPLB_DATAx）
メモリマップド・ア
ドレスについては、
表 6-6 を参照。

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

CPLB_L1_AOW
ライトスルーがキャッシュ可能 な 場 合 に だ け 有 効（CPLB_VALID ＝ 1、CPLB_WT＝ 1）
0- 読出し時にだけキャッシュ・ラインを割当て
1 - 読出し／書込み時にキャッシュ・ラインを割当て
CPLB_WT
キャッシュ・モードでだけ動作
0 - ライトバック
1 - ライトスルー
CPLB_L1_CHBL
このビットは、L1 メモリが SRAMとして設定されるときにクリア
0 - L1 内でキャッシュ不可能
1 - L1 内でキャッシュ可能
CPLB_DIRTY
ライトバックがキャッシュ可能な場合にだけ有効（CPLB_VALID ＝ 1、CPLB_WT ＝ 0、CPLB_L1_CHBL ＝ 1）
0 - クリーン
1 - ダーティ
このビットが 0 の場合、このページへのストア・アクセスで保護違反例外が生成されます。このビットの状態は、このレジス
タへの書込みによってだけ変更されます。例外サービス・ルー
チンでは、このビットをセットする必要があります。

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000 0000
PAGE_SIZE[1:0]00 - 1K バイトのページ・サイズ
01 - 4K バイトのページ・サイズ
10 - 1M バイトのページ・サイズ
11 - 4M バイトのページ・サイズ
CPLB_VALID
0 - 無 効 な（デ ィ ス エ ー ブ ル）
CPLB エントリ
1 - 有効な（イネーブル）CPLB
エントリ

CPLB_LOCKCPLB 置換アルゴリズムにおいてソフトウェアで使用可能
0 - ロック解除、CPLB エントリは置換可能
1 - ロック、CPLB エントリは置換不可
CPLB_USER_RD
0 - ユーザ・モードの読出しアクセスが保護違反例外を生成
1 - ユーザ・モードの読出しアクセスが可能
CPLB_USER_WR
0 - ユーザ・モードの書込みアクセスが保護違反例外を生成
1 - ユーザ・モードの書込みアクセスが可能
CPLB_SUPV_WR
0 - スーパーバイザ・モードの書込みア
クセスが保護違反例外を生成
1 - スーパーバイザ・モードの書込みア
クセスが可能図 6-21. DCPLB データ・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-63

メモリ保護とプロパティ

表 6-6.

6-64

DCPLB データ・レジスタのメモリマップド・アドレス

レジスタ名

メモリマップド・アドレス

DCPLB_DATA00xFFE0 0200

DCPLB_DATA10xFFE0 0204

DCPLB_DATA20xFFE0 0208

DCPLB_DATA30xFFE0 020C

DCPLB_DATA40xFFE0 0210

DCPLB_DATA50xFFE0 0214

DCPLB_DATA60xFFE0 0218

DCPLB_DATA70xFFE0 021C

DCPLB_DATA80xFFE0 0220

DCPLB_DATA90xFFE0 0224

DCPLB_DATA10

0xFFE0 0228

DCPLB_DATA110xFFE0 022C

DCPLB_DATA120xFFE0 0230

DCPLB_DATA13

0xFFE0 0234

DCPLB_DATA14

0xFFE0 0238

DCPLB_DATA15

0xFFE0 023C

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ■ DCPLB_ADDRx レジスタ
図 6-22は、DCPLB アドレス・レジスタ（DCPLB_ADDRx）を示します。
DCPLB アドレス・レジスタ（DCPLB_ADDRx）
メ モ リ マ ッ プ ド・
アドレスについては、表 6-7 を参照。

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 X

リセット＝ 0x0000 0000

Match[21:6]用のアドレスの上位
ビット
15 14 13 12 11 10
0 0 0 0 0 0

9
0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

Match[5:0] 用のアドレスの上位
ビット

図 6-22. DCPLB アドレス・レジスタ
表 6-7.

DCPLB アドレス・レジスタのメモリマップド・アドレス

レジスタ名

メモリマップド・アドレス

DCPLB_ADDR00xFFE0 0100

DCPLB_ADDR10xFFE0 0104

DCPLB_ADDR20xFFE0 0108

DCPLB_ADDR30xFFE0 010C

DCPLB_ADDR40xFFE0 0110

DCPLB_ADDR50xFFE0 0114

DCPLB_ADDR60xFFE0 0118

DCPLB_ADDR70xFFE0 011C

DCPLB_ADDR80xFFE0 0120

DCPLB_ADDR90xFFE0 0124

DCPLB_ADDR10

0xFFE0 0128

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-65

メモリ保護とプロパティ

表 6-7.

DCPLB アドレス・レジスタのメモリマップド・アドレス（続き）

レジスタ名

メモリマップド・アドレス

DCPLB_ADDR11

0xFFE0 012C

DCPLB_ADDR120xFFE0 0130

DCPLB_ADDR13

0xFFE0 0134

DCPLB_ADDR14

0xFFE0 0138

DCPLB_ADDR15

0xFFE0 013C

■ ICPLB_ADDRx レジスタ
図 6-23は、ICPLB アドレス・レジスタ（ICPLB_ADDRx）を示します。
ICPLB アドレス・レジスタ（ICPLB_ADDRx）
メモリマップド・
アドレスについては、表 6-8 を参照。

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

リセット＝ 0x0000 0000

Match[21:6] 用のアドレスの上位ビット

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

Match[5:0]用のアドレスの上位ビット

図 6-23. ICPLB アドレス・レジスタ

6-66

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ

表 6-8.

ICPLB アドレス・レジスタのメモリマップド・アドレス

レジスタ名

メモリマップド・アドレスICPLB_ADDR00xFFE0 1100

ICPLB_ADDR10xFFE0 1104

ICPLB_ADDR20xFFE0 1108

ICPLB_ADDR30xFFE0 110CICPLB_ADDR40xFFE0 1110

ICPLB_ADDR50xFFE0 1114

ICPLB_ADDR60xFFE0 1118

ICPLB_ADDR70xFFE0 111CICPLB_ADDR80xFFE0 1120

ICPLB_ADDR90xFFE0 1124

ICPLB_ADDR10

0xFFE0 1128

ICPLB_ADDR11

0xFFE0 112CICPLB_ADDR120xFFE0 1130

ICPLB_ADDR13

0xFFE0 1134

ICPLB_ADDR14

0xFFE0 1138

ICPLB_ADDR15

0xFFE0 113C

■ DCPLB_STATUS レジスタと ICPLB_STATUS レジスタ
DCPLB ステータス・レジスタ（DCPLB_STATUS）とICPLB ステータス・レジスタ（ICPLB_STATUS）内のビットでは、CPLB関連の例外をトリガした
CPLB エントリを識別します。例外サービス・ルーチンでは、CPLBエン
トリを検査することで、障害の原因を推測できます。

L

DCPLB_STATUS レジスタと ICPLB_STATUS レジスタは、障害を起こした例外サービス・ルーチンでだけ有効です。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-67

メモリ保護とプロパティ

DCPLB ステータス・レジスタ（DCPLB_STATUS）内のビット FAULT_DAG、
FAULT_USERSUPV、FAULT_RW は、CPLB関連の例外をトリガしたCPLBエン
トリの識別に使用されます（図 6-24 を参照）。
DCPLB ステータス・レジスタ（DCPLB_STATUS）

0xFFE0 0008

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X 0 X X X

リセット＝未定義

FAULT_ILLADDRFAULT_RW
0 - 読出しアクセス
1 - 書込みアクセス
FAULT_USERSUPV
0 - ユーザ・モードでのアクセス
1 - スーパーバイザ・モードでのアクセス

0 - 障害なし
1 - 存在しないメモリへのアクセス
FAULT_DAG
0 - DAG0 によるアクセス
1 - DAG1 によるアクセス

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

FAULT[15:0]
各ビットは、関連する CPLB エ
ントリのヒット／ミス・ステー
タスを示します図 6-24. DCPLB ステータス・レジスタ
ICPLB ステータス・レジスタ（ICPLB_STATUS）のビット FAULT_USERSUPVは、CPLB関連の例外をトリガしたCPLBエントリの識別に使用されます（図 6-25 を参照）。

6-68

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ

ICPLB ステータス・レジスタ（ICPLB_STATUS）

0xFFE0 1008

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X 0 X X X

FAULT_USERSUPV
0 - ユーザ・モードでのアクセス
1 - スーパーバイザ・モードでのアクセス

FAULT_ILLADDR
0 - 障害なし
1 - 存在しないメモリへのアクセス

15 14 13 12 11 10 9
0 0 0 0 0 0 0

リセット＝未定義

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

FAULT[15:0]
各ビットは、関連する CPLB エ
ントリのヒット／ミス・ステー
タスを示します図 6-25. ICPLB ステータス・レジスタ■ DCPLB_FAULT_ADDRレジスタとICPLB_FAULT_ADDRレジスタ
DCPLB アドレス・レジスタ（DCPLB_FAULT_ADDR）と ICPLB フォールト・
アドレス・レジスタ（ICPLB_FAULT_ADDR）は、それぞれL1 データ・メモ
リまたは L1 命令メモリに障害を引き起こしたアドレスを保持します。図6-26 と図 6-27を参照。

L

DCPLB_FAULT_ADDR レジスタと ICPLB_FAULT_ADDR レジスタは、障害を起こした例外サービス・ルーチンでだけ有効です。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-69

メモリ保護とプロパティ

DCPLB アドレス・レジスタ（DCPLB_FAULT_ADDR）

0xFFE0 000C

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X X X X X

リセット＝未定義

FAULT_ADDR[31:16]
L1 データ・メモリに障害を引き起こしたデータ・アドレス
15 14 13 12 11 10 9
X X X X X X X

8
X

7 6
X X

5
X

4
X

3
X

2
X

1 0
X X

FAULT_ADDR[15:0]
L1 データ・メモリに障害を引き起こしたデータ・アドレス

図 6-26. DCPLB アドレス・レジスタ
ICPLB フォールト・アドレス・レジスタ（ICPLB_FAULT_ADDR）

0xFFE0 100C

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X X X X X

リセット＝未定義

FAULT_ADDR[31:16]
L1 命令メモリに障害を引き起こした命令アドレス
15 14 13 12 11 10 9
X X X X X X X

8
X

7 6
X X

5
X

4
X

3
X

2
X

1 0
X X

FAULT_ADDR[15:0]
L1 命令メモリに障害を引き起こした命令アドレス

図 6-27. ICPLB フォールト・アドレス・レジスタ

6-70

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ

メモリ・トランザクション・モデル
内部と外部の記憶領域は、リトル・エンディアンのバイト順にアクセスされます。図 6-28 は、レジスタ R0 に格納されたデータ・ワードと、アドレ
ス位置 addr のメモリに格納されたデータ・ワードを示します。B0 は、32
ビット・ワードの最下位バイトを表します。
࡟ࠫࠬ࠲ౝߩ࠺࡯࠲
R0

B3ࡔࡕ࡝ౝߩ࠺࡯࠲

B2

B1

B0

B3

B2

B1

B0

addr+3

addr+2

addr+1addr

図 6-28. リトル・エンディアン順に格納されたデータ
図 6-29 は、メモリに格納された16 ビット命令と 32 ビット命令を示します。左側の図は、メモリに格納された 16 ビット命令を示します。命令の最上位バイトは上位アドレスに格納され（addr+1 のバイト B1）、最下位
バイトは下位アドレスに格納されます（addr のバイト B0）。
16ࡆ࠶࠻ߩ๮઎

32ࡆ࠶࠻ߩ๮઎

INST 0
B1
B0

INST 0B3ࡔࡕ࡝ౝߩ16ࡆ࠶࠻๮઎

B2

B0

B1

ࡔࡕ࡝ౝߩ32ࡆ࠶࠻๮઎

B1

B0

B1

B0

B1

B0

B3

B2

addr+3

addr+2

addr+1

addr

addr+3

addr+2

addr+1addr

図 6-29. リトル・エンディアン順に格納された命令
右側の図は、メモリに格納された 32 ビット命令を示します。なお、命令の最上位 16 ビット・ハーフ・ワード（バイト B3 とB2）は下位アドレス（addr+1 と addr）に格納され、最下位ハーフ・ワード（バイト B1 と B0）
は上位アドレス（addr+3 と addr+2）に格納されます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-71

ロード／ストア動作

ロード／ストア動作
Blackfin プロセッサ・アーキテクチャは、ロード／ストア・マシンのRISC概念に対応しています。このマシンは RISC アーキテクチャの特性であり、メモリ操作（ロードとストア）は、メモリ操作のターゲットを使用する算術関数から意図的に分離されています。この分離が行われた理由は、メモ
リ操作、特にオフチップ・メモリや I/O デバイスにアクセスする命令では、完了するまでに複数のサイクルを要することがあり、通常はプロセッサを停止させて、1 サイクル当たり1 命令という命令実行レートを妨げるからです。
ロード動作をそれに関連する算術関数から分離すると、コンパイラやアセ
ンブリ言語プログラマは、ロード命令とその従属する命令との間に関連のない命令を置くことができます。プロセッサがメモリ・システムからのデータ返却を待つ間に、関連のない命令は並行して実行されます。従属する動作がパイプラインの実行段に到達する前に値が返却された場合には、その動作は 1 サイクルで完了します。
書込み動作の場合、たとえデータが外部メモリや I/O 位置に実際に書き込まれるまでに多数のサイクルが実行されとしても、ストア命令は実行されるとすぐに完了したと見なされます。この仕組みによって、プロセッサは
クロック・サイクルごとに 1つの命令を実行できます。このことは、書込みが完了するタイミングと、それ以降の命令が実行されるタイミングとの同期が保証されないことを意味します。さらに、大部分のメモリ操作という観点からは、この同期は重要でないと見なされます。

■ インターロック機能付きパイプライン
命令の実行に際して、Blackfin プロセッサ・アーキテクチャは、インターロック機能付きパイプラインを実装します。ロード命令が実行されるとき、読出し動作のターゲット・レジスタはメモリ・システムから値が返されるまでビジーとマークされます。それ以降の命令が新しい値が供給される前にこのレジスタにアクセスした場合には、メモリ操作が完了するまで

6-72

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ

パイプラインはストールします。このストールによって、たとえ命令はメ
モリ読出しの完了前に実行を開始できる場合でも、ロードによって得られるデータを使用する必要のある命令は、レジスタ内の以前のデータや無効なデータを使用しないことが保証されます。
このメカニズムを利用すれば、プログラマやコンパイラはメモリ読出し動作の完了に実際に必要なサイクル数を知らなくても、ロードと読出しター
ゲットを使用する命令との間にある独立した命令を実行できます。ロードの直後にある命令が同じレジスタを使用する場合には、その命令は値が返されるまでストールします。したがって、プログラマの期待どおりに動作します。しかし、ロードの後で、同じレジスタを使用する命令よりも前に
他の 4 つの命令が置かれた場合には、それらはすべて実行されて、プロセッサの全体的なスループットが向上します。

■ ロードとストアの順序付け
メモリ・アクセス命令とその前後の命令との同期の緩和は、ロードとストアの弱い順序付けと呼ばれます。弱い順序付けとは、メモリ操作の実際の完了のタイミングが、これらのイベントが発生する順序も含めてプログラ
ムのソース・コードに現われる順序とは一致しない可能性があることを意味します。保証されている内容は次のとおりです。
• ロード動作は、それ以降の命令によって戻りデータが使用される前に完了します。
• 前もって書き込まれたデータを使用するロード動作では、更新された値を使用します。
• ストア動作は、最終的には最終目的地に伝搬します。
弱い順序付けによって、メモリ・システムは読出しに対して書込みよりも高い優先順位を付けることができます。この場合、パイプライン内のどこかにキュー登録され、まだ完了していない書込みは、それ以降の読出し動作によって保留されることがあります。そして、読出しは、書込みより前

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-73

ロード／ストア動作に完了することができます。読出し動作にはその完了を待つ従属する動作があるため、読出しには書込みよりも高い優先順位が付けられます。一方、値をメモリに伝搬させるのに多くのサイクルが必要な場合には、プロセッサは書込み動作が完了したものと見なし、書込みはパイプラインをストールさせません。この動作によって、プログラムのソース・コードではプログラム・フロー的に書込みの後で出現する読出しが、実際には書込みの完了より前にその値を返すことがあります。この順序付けは、多くのメモリ命令の動作において性能上の大きな利点を提供します。しかし、副作用として、プログラマには不適切なシステム運用を回避するという負担が生じます。
I/O デバイス・レジスタなどの非メモリ位置からの書込み／読出しに際しては、読出し／書込みの動作が完了する順序が重要になることがあります。たとえば、ステータス・レジスタの読出しは、コントロール・レジス
タへの書込みに依存することがあります。アドレスが同じである場合には、読出しでは、実際の I/Oデバイス・レジスタではなく、書込みバッファ
から値を返すことになり、レジスタにおける読出し／書込みの順序が反転されることがあります。このような効果は、プログラムとペリフェラルの意図した動作に望ましくない副作用をもたらすことがあります。ロード／ストア動作の正確な（強い）順序付けを必要とするコードにおいて、このような効果の発生を防止するには、同期命令（CSYNC または SSYNC）を使用してください。

■ 同期命令I/O デバイスへの設定や制御を目的とする順次書込みのように、ロードとストアの強い順序付けが必要な場合には、コアまたはシステムの同期命令（それぞれ CSYNC または SSYNC）を使用します。
CSYNC 命令では、すべてのペンディング・コア動作が完了し、コア・バッファ（プロセッサ・コアと L1メモリとの間）がフラッシュされてから、次の命令に進むことが保証されます。ペンディング・コア動作には、保留中の割込み、投機的状態（分岐予測など）、または例外を含むことがあります。

6-74

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ

次のコード・シーケンス例で考えてみます。
IF CC JUMP away_from_here
csync;
r0 = [p0];away_from_here:

上記のコード例では、CSYNC 命令によって以下のことが保証されます。
• 条件付き分岐（IF CC JUMP away_from_here）が解決されることで、条件が解決されてプロセッサ・ストア・バッファ内のエントリがフラッシュされるまでは、実行パイプラインにストールが発生します。
• すべての保留中の割込みや例外が処理されてから、CSYNC が完了します。
• ロードは、メモリから投機的にフェッチされません。
SSYNC 命令によって、以前の動作のすべての副作用が L1 メモリと残りのチップとの間のインターフェースを通じて伝搬されることが保証されます。SSYNC 命令では、CSYNC のコア同期機能を実行するだけでなく、L1 メ
モリとシステム領域との間の書込みバッファをフラッシュし、SSYNC が完了する前にアクノレッジを必要とするシステムに対して同期要求を生成します。

■ 投機的ロード実行
メモリからのロード動作は、メモリ値の状態を変更しません。したがって、それ以降のロード命令に対して投機的なメモリ読出し操作を発行しても、望ましくない副作用は生じないのが普通です。条件付き分岐命令の後にロードが続くといった、いくつかのコード・シーケンスでは、条件付き分岐が解決される前にメモリ・システムへの読出し要求を投機的に発行することで性能が向上する場合もあります。次に例を示します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-75

ロード／ストア動作

IF CC JUMP away_from_here
RO = [P2];…
away_from_here:

分岐が行われる場合には、ロードはパイプラインからフラッシュされ、返却のプロセスにある結果は無視できます。逆に分岐が行われない場合には、メモリからは、分岐条件が解決されるまで動作がストールされた場合に比べて早く正しい値が返されます。
しかし、I/O デバイスの場合には、要求された読出しの数に基づいて値を変更するレジスタや FIFO から順次データを返すペリフェラルに対しては、望ましくない副作用を生じることがあります。この効果を回避するには、同期命令（CSYNC または SSYNC）を使用して読出し動作間の正しい動作を保証します。
ストア動作では、投機的にメモリをアクセスすることはありません。なぜなら、これによって命令を実行すべきであったかどうかを判定する前に、メモリ値が変更される可能性があるからです。

■ 条件付きロード動作
同期命令では、すべての投機的状態が解決されてから、ロード命令がメモ
リ参照を開始します。しかし、ロード命令は割込み可能であるため、ロード命令自身が複数のメモリ読出し動作を生成することもあります。同期命
令の完了とロード命令の完了との間に、十分な優先順位を持つ割込みが発生した場合には、シーケンサはロード命令をキャンセルします。割込みの実行後、割込まれたロードは再実行されます。この方法は、割込み遅延を最小限に抑えます。しかし、メモリ読出しサイクルが開始されてからロードがキャンセルされ、その後にロードが再実行された後の 2 番目の読出し動作が続く可能性もあります。多くのメモリ・アクセスでは、同じメモ
リ・アドレスの複数の読出しには副作用がありません。しかし、ペリフェ

6-76

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ

ラル・データ FIFO など、いくつかのメモリマップド・デバイスでは読出しは破壊的です。デバイスが読み出されるたびに FIFO が前進するため、データの回復と再読出しはできません。

L

特定のアドレス位置での読出し／書込み動作の数に状態依存する
メモリマップド・デバイスにアクセスする場合には、割込みをディスエーブルにしてから、ロード／ストア動作を実行します。

メモリの操作
ここでは、メモリ内でのデータの整列と、タスク間でのセマフォをサポートするメモリ操作について説明します。また、MMRレジスタとコア MMRのプログラミング例についても簡単に説明します。

■ 整列
非整列のメモリ操作には、直接対応していません。非整列のメモリ参照
は、非整列アクセス例外イベントを生成します（4-42 ページの「例外」を参照）。しかし、一部のデータストリーム（8ビットのビデオ・データなど）では、メモリ内で正常に非整列であり得ます。整列例外をディスエー
ブルにするには、DISALGNEXCPT 命令を使用します。さらに、クワッド8
ビット・グループ内のいくつかの命令では、整列例外を自動的にディスエーブルにします。

■ キャッシュ・コヒーレンシ
共有データの場合、ソフトウェアは、必要に応じてキャッシュ・コヒーレ
ンシに対応する必要があります。そのためには、FLUSH 命令（6-45 ページの「データ・キャッシュ制御命令」を参照）またはコア MMRを通じての明示的なライン無効化（6-46 ページの「データ・テスト・レジスタ」を参照）、あるいはその両方を使用します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-77

メモリの操作■ アトミック操作
このプロセッサは、単一のアトミック操作 TESTSET を提供します。アトミック操作は、タスク間でセマフォをサポートする過程で割込み不可能なメモリ操作を提供するために使用されます。TESTSET 命令では、間接的にアドレス指定されたメモリ・ハーフ・ワードをロードし、下位バイトがゼロかどうかをテストしてから、他のビットに影響を与えることなく、下位
メモリ・バイトの最上位ビット（MSB）をセットします。そのバイトがもともとゼロである場合には、CC ビットがセットされます。バイトがもと
もと非ゼロである場合には、CC ビットがクリアされます。このメモリ・ト
ランザクションのシーケンスはアトミックです。つまり、ハードウェア・
バス・ロッキングによって、この命令のテスト部分とセット部分との間には他のメモリ操作が発生しないことが保証されます。TESTSET 命令はコアによって割込みできます。この場合には、割込みから復帰した時点でTESTSET 命令が再び実行されます。
TESTSET 命令では、4G バイトのメモリ空間全体をアドレス指定できます。

しかし、オンコア・メモリ（L1またはMMR 空間）をターゲットにしないでください。このメモリへのアトミック・アクセスには対応していません。
メモリ・アーキテクチャでは、たとえアドレスに対する CPLBディスクリ
プタがキャッシュ有効アクセスを示す場合でも、アトミック操作を常にキャッシュ禁止アクセスとして扱います。しかし、メモリのキャッシュ可能領 域 で TESTSET 命令 を 実行 す るこ と はお 勧 めで き ませ ん。これ は、
TESTSET 命令が実行されたとき、メモリのキャッシュ可能位置がコヒーレントであることを保証できないためです。

6-78

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ■ メモリマップド・レジスタ
MMR の予備空間は、メモリ空間の最上位に位置しています（0xFFC00000）。この領域はキャッシュ不可能と定義され、システム MMR（0xFFC00000 ～ 0xFFE0 0000）とコア MMR（0xFFE0 0000 ～0xFFFF FFFF）に分割されます。

L

強い順序付けが必要な場合には、MMR へのストアの後に同期命令を置いてください。詳細については、6-72 ページの「ロード／ス
トア動作」を参照してください。

すべての MMR は、スーパーバイザ・モードでだけアクセスできます。ユー
ザ・モードで MMRにアクセスすると、保護違反例外が発生します。
すべてのコア MMRは、32ビットの整列アクセスを使用して読出し／書込
みされます。しかし、いくつかの MMR では、32ビット未満でしか定義されていません。この場合、未使用のビットは予備です。システム MMRは16ビットの場合があります。
存在しない MMR へのアクセスは、不正アクセス例外を生成します。シス
テムは、読出し専用 MMRへの書込みを無視します。
付録 A に、すべてのコア MMR のまとめを示します。付録B には、すべてのシステム MMR のまとめを示します。

■ コア MMR のプログラミング・コード例
コア MMR は、整列された 32 ビット・ワードとしてだけアクセスできます。MMR への非整列アクセスは例外イベントを生成します。リスト 6-1には、一般的なコア MMRの操作に必要な命令を示します。
リスト 6-1. コア MMR のプログラミング
CLI R0;/*

割込みを停止させ、IMASK を保存 */ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-79

用語集

P0 = MMR_BASE;/*MMR のベースをロードする 32 ビット命令 */R1 = [P0 + TIMER_CONTROL_REG];
BITSET R1, #N;/*

制御レジスタの値を取得 */ビット N をセット */[P0 + TIMER_CONTROL_REG] = R1;/*

制御レジスタを復元 */制御レジスタの書込みを保証 */CSYNC;/*STI R0;/* 割込みをイネーブル */L/*

CLI 命令では、IMASK レジスタの内容を保存し、IMASK をクリアして割込みをディスエーブルにします。STI 命令では、IMASK レジスタの内容を復元して割込みをイネーブルにします。CLI と STI の間にある命令は、割込み不可能です。

用語集
以下の用語は、メモリの説明に使用されます。
インデックス：アレイ・エレメント（たとえば、ライン・インデックス）の選択に使用されるアドレス部分。
ウェイ：ウェイ：N ウェイ・キャッシュ内のライン記憶素子のアレイです（6-16 ページの図 6-7 を参照）。
キャッシュ・ヒット：キャッシュ内の現在有効なエントリに適合するメモ
リ・アクセスです。
キャッシュ・ブロック：キャッシュ・ミスの結果として、メモリの次の階層とキャッシュとの間で転送されるメモリの最小単位です。
キャッシュ・ミス：キャッシュ内のどの有効エントリにも一致しないメモ
リ・アクセスです。
キャッシュ・ライン：キャッシュ・ブロックと同じです。この章では、
キャッシュ・ブロックの代わりにキャッシュ・ラインを使用します。

6-80

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

メモリ

最長時間未使用（LRU）アルゴリズム：キャッシュによって使用される置換アルゴリズムであり、最も長期間にわたって使用されていないラインを最初に置換します。
セット：N ウェイ・キャッシュのウェイに含まれる N ライン保管場所のグループであり、アドレスのインデックス・フィールドによって選択されます（6-16 ページの図 6-7 を参照）。
セット・アソシエイティブ：ライン配置のセット（またはウェイ）数を制限するキャッシュ・アーキテクチャです。
ダーティ／ モディファイ：タグとともに格納される状態ビットであり、データ・キャッシュ・ライン内のデータがソース・メモリからコピーされて以降に変更されたかどうか（したがって、そのソース・メモリ内で更新する必要があるかどうか）を示します。
タグ：キャッシュされたラインが表すメモリ内の特定アドレス・ソースを識別するために、キャッシュされたデータ・ラインと一緒に格納される上位アドレス・ビットです。
置換ポリシー：キャッシュ・ミス時に置換すべきラインを判断するために、プロセッサによって使用される機能です。通常は、LRU アルゴリズ
ムを使用します。
直接マップ：各ラインがキャッシュ内の出現場所を1 つだけ持つというキャッシュ・アーキテクチャであり、1ウェイ・アソシエイティブとも呼ばれます。
排他的、クリーン：データ・キャッシュ・ラインの状態であり、ラインが有効であって、ラインに含まれるデータがソース・メモリ内のデータと一致することを示します。クリーンなキャッシュ・ライン内のデータは、置換される前にソース・メモリに書き込む必要はありません。
ビクティム：メモリに書き込まなければ、キャッシュ・ライン割当て用に空き空間に置換できないダーティなキャッシュ・ライン。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

6-81

用語集

フル・アソシエイティブ：各ラインをキャッシュ内のどこにでも置けるキャッシュ・アーキテクチャです。
無効：キャッシュ・ラインの状態の説明です。キャッシュ・ラインが無効な場合、キャッシュ・ラインの一致は発生しません。
有効：タグとともに格納される状態ビットであり、対応するタグとデータが最新かつ正確であり、メモリ・アクセス要求を満たすために使用できることを示します。
ライトスルー：キャッシュ書込みポリシーの1つであり、ストア・スルーとも呼ばれます。書込みデータは、キャッシュ・ラインとソース・メモリの両方に書き込まれます。変更されたキャッシュ・ラインは、置換時にソース・メモリに書き込まれません。キャッシュ・ラインは、読出し時に割り当てる必要があり、モードによっては書込み時に割り当てることもできます。
ライトバック：キャッシュ書込みポリシーの 1つであり、コピーバックとも呼ばれます。書込みデータは、キャッシュ・ラインにだけ書き込まれます。変更されたキャッシュ・ラインは、キャッシュ・ラインの置換時にだけソース・メモリに書き込まれます。キャッシュ・ラインは、読出しと書込みの両方で割り当てられます。
リトル・エンディアン：Blackfin プロセッサの固有のデータ格納フォー
マットです。ワードとハーフ・ワードは、データ保管場所の最下位バイ
ト・アドレスに最下位バイトを置き、最上位バイト・アドレスに最上位バイトを置いてメモリ（とレジスタ）に格納されます。
レベル 1（L1）メモリ：メモリとコアとの間にメモリ・サブシステムを介在させることなく、コアによって直接アクセスされるメモリです。

6-82

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

第7章

チップ・バス階層

この章では、オンチップ・バス、システム内のデータ移動、およびシステ
ム構造を決定する要因について説明します。また、システム内部チップ・インターフェース、システム相互接続、および関連するシステム・バスについても説明します。
64
ࠦࠕ࡮
ࡊࡠ࠮࠶ࠨ

ࠦࠕ࡮ࠢࡠ࠶ࠢ㧔CCLK㧕࠼ࡔࠗࡦ

L1ࡔࡕ࡝

32

๮઎

32

࠺࡯࠲ࠍࡠ࡯࠼

32࠺࡯࠲ࠍࡠ࡯࠼
࠺࡯࠲ࠍࠬ࠻ࠕ

ࠪࠬ࠹ࡓ࡮ࠢࡠ࠶ࠢ㧔SCLK㧕࠼ࡔࠗࡦ

DMAࠦࠕ࡮ࡃࠬ
㧔DCB㧕
ᄖㇱ
ࠕࠢ࠮ࠬ࡮
ࡃࠬ㧔EAB㧕

DMAࠦࡦ࠻ࡠ࡯࡜

DMA
ᄖㇱࡃࠬ
㧔DEB㧕
ࡍ࡝ࡈࠚ࡜࡞࡮ࠕࠢ࠮ࠬ࡮
ࡃࠬ㧔PAB㧕

ࡊࡠ
ࠣ࡜ࡓ࡮
ࡈ࡜ࠣ

RTC

࠲ࠗࡑ

࠙ࠜ࠶࠴
࠼࠶ࠣ࡮
࠲ࠗࡑ

EBIU

UART

SPORT

PPI

ᄖㇱࡐ࡯࠻࡮
ࡃࠬ㧔EPB㧕

SPI
16ᄖㇱࡔࡕ࡝࡮࠺ࡃࠗࠬ

DMAࠕࠢ࠮ࠬ࡮ࡃࠬ㧔DAB㧕

図 7-1.

プロセッサ・バス階層

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

7-1

内部インターフェース

内部インターフェース
図 7-1は、コア・プロセッサとシステム境界に加えて、その間のインターフェースを示します。

内部クロックコア・プロセッサ・クロック（CCLK）周波数は、CLKIN を基にして自由に設定可能です。CCLK 周波数はフェーズ・ロック・ループ（PLL）出力周波数から分周されます。この分周器比率を設定するには、PLL分周レジスタの CSEL パラメータを使用します。
ペリフェラル・アクセス・バス（PAB）、DMAアクセス・バス（DAB）、
外部アクセス・バス（EAB）、DMAコア・バス（DCB）、DMA 外部バス
（DEB）、外部ポート・バス（EPB）、外部バス・インターフェース・ユ
ニット（EBIU）は、システム・クロック周波数（SCLK ドメイン）で動作します。この分周器比率は、PLL 分周レジスタの SSEL パラメータを使用して設定し、しかもこれらのバスが、コア・クロック周波数以下の速度で『ADSP-BF531/ADSP-BF532/ADSP-BF533 Embedded Processor Data
Sheet』の指定に基づいて動作するように設定しなければいけません。
これらのバスは、消費電力を減らしたり、コア・プロセッサが最適周波数で動作できるようにしたりするために、プログラマブルな周波数の範囲で変更させることもできます。なお、すべての同期ペリフェラルは、そのタイミングを SCLK から取得します。たとえば、UART クロック・レートを決定するには、このクロック周波数をさらに分周します。

7-2

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンスチップ・バス階層

コアの概要
説明のために、レベル 1メモリ（L1）はコアの説明に含めてあります。L1
メモリには、64 ビット命令バスと 2 本の 32 ビット・データ・バスによって、プロセッサ・コアからフル帯域幅でアクセスできます。
図 7-2は、コア・プロセッサと、ペリフェラルや外部メモリ・リソースへのインターフェースを示します。

DSP ID㧔8ࡆ࠶࠻㧕

JTAG

࠺ࡃ࠶ࠣߣJTAGࠗࡦ࠲࡯ࡈࠚ࡯ࠬ

INT
ACK

ࠪࠬ࠹ࡓ࡮ࠢࡠ࠶ࠢ
ߣࡄࡢ࡯ࡑࡀࠫࡔࡦ࠻

ࠗࡌࡦ࠻࡮ࠦࡦ࠻ࡠ࡯࡜࡝࠮࠶࠻࡮ࡌࠢ࠻࡞㔚Ḯ㧛ࠢࡠ࠶ࠢ࡮
ࠦࡦ࠻ࡠ࡯࡜
ࡊࡠ࠮࠶ࠨࡄࡈࠜ࡯ࡑࡦࠬ࡮
ࡕ࠾࠲

L1࠺࡯࠲

DMAࠦࠕ࡮ࡃࠬ
㧔DCB㧕

図 7-2.

DA0

DA1

IAB

IDB

32

SD

32

LD1

LD0

ࠦࠕ࡮࠲ࠗࡑ

32

32

32

32

64

ࡔࡕ࡝࡮
ࡑࡀࠫࡔࡦ࠻࡮
࡙࠾࠶࠻

EAB

ࠦࠕ

L1๮઎

PAB

コアのブロック図ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

7-3

システムの概要

コアは、サイクル当たり 3つまでの同時オフコア・アクセスを生成できます。
プロセッサと L1 メモリとの間のコア・バス構造は、フル・コア周波数で動作し、64ビットまでのデータ・パスを備えています。
命令要求がフィルされるとき、64 ビット読出しには1つの 64ビット命令、または 16/32/64ビット（部分）命令の任意の組合わせを含むことができます。
キャッシュがイネーブルにされると、32バイトのライン・フィル・バース
ト動作に対応するために、4つの 64ビット読出し要求が発行されます。これらの要求は、2 番目以降の各転送が1 つの連続したサイクルでフィルされるようにパイプライン化されます。

システムの概要
システムには、システム割込み、テスト／エミュレーション、クロックおよびパワーマネジメント用のコントローラが内蔵されています。コアとシステムとの間のクロック・ドメイン・トランザクションに対応するために、同期クロック・ドメイン変換が提供されています。

システム・インターフェース
プロセッサ・システムには、以下の要素が内蔵されています。
• ペリフェラル・セット（タイマ、リアルタイム・クロック、プログ
ラマブル・フラグ、UART、SPORT、PPI、ウォッチドッグ・タ
イマ、SPI）• 外部メモリ・コントローラ（EBIU）• DMA コントローラ

7-4

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンスチップ・バス階層• 上記の要素、システム、オプションの外付け（オフチップ）リソー
スを結ぶインターフェース
7-3 ページの図 7-2 を参照してください。
以下の節では、システムとペリフェラルとの間のオンチップ・インターフェースについて説明します。
• ペリフェラル・アクセス・バス（PAB）• DMA アクセス・バス（DAB）• DMA コア・バス（DCB）• DMA 外部バス（DEB）• 外部アクセス・バス（EAB）
外部バス・インターフェース・ユニット（EBIU）は、チップ・ピンのプライマリ・バスです。EBIU については、第 17 章「外部バス・インターフェース・ユニット」を参照してください。

■ ペリフェラル・アクセス・バス（PAB）
プロセッサには専用のペリフェラル・バスがあります。低遅延のペリフェ
ラル・バスはコア・ストールを最小限に維持し、速度が重視されるペリ
フェラルに対して管理しやすい割込み遅延を可能にします。PAB を通じてアクセスされるすべてのペリフェラル・リソースは、プロセッサ・メモ
リ・マップのシステム MMR空間にマッピングされます。コアは、PAB バ
スを通じてシステム MMR空間にアクセスできます。
コア・プロセッサにはバイト・アドレス指定機能がありますが、プログラ
ミング・モデルは、システム MMR への 32ビット（整列）アクセスだけに限定されます。この領域へのバイト・アクセスはできません。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

7-5

システム・インターフェース

X PAB 調停

コアは、このバスでの唯一のマスターです。調停は不要です。
X PAB 性能PAB の場合、主要な性能基準はスループットではなく遅延です。PAB での読出し／書込み転送に対する転送遅延は 2 SCLK サイクルです。
たとえば、コアは PAB スレーブに対してアクセス当たり最高32 ビットで転送できます。コア・クロックをシステム・クロックの周波数の 2 倍で動作させると、システム MMRの最初とそれに続く読出し／書込みアクセス
では 4 コア・クロック（CCLK）の遅延が発生します。
PAB は、SCLK の最大周波数を備えています。
X PAB エージェント（マスター、スレーブ）

プロセッサ・コアは、PAB でのバス動作を管理できます。すべてのペリ
フェラルにはペリフェラル・バス・スレーブ・インターフェースがあるた
め、コアは制御状態とステータス状態にアクセスできます。これらのレジ
スタは、メモリ・マップのシステム MMR 空間にマッピングされます。付
録 B にシステム MMRアドレスを示します。
PAB バス上のスレーブは、次のとおりです。
• イベント・コントローラ• クロックおよびパワーマネジメント・コントローラ• ウォッチドッグ・タイマ• リアルタイム・クロック（RTC）• Timer0、1、2• SPORT0

7-6

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンスチップ・バス階層• SPORT1• SPI• プログラマブル・フラグ• UART• PPI• 非同期メモリ・コントローラ（AMC）• SDRAM コントローラ（SDC）• DMA コントローラ■ DMA アクセス・バス（DAB）、DMA コア・バス（DCB）、
DMA 外部バス（DEB）
DMA 対応のペリフェラルは、DAB バス、DCB バス、DEB バスを使用して、メモリへのコア帯域幅をほとんど低下させることなく、オンチップ／
オフチップ・メモリにアクセスできます。
X DAB 調停

プロセッサ・システムには、メモリDMAコントローラを含めて6つのDMA対応ペリフェラルがあります。これらのデバイスは、12本の DMA チャン
ネルとバス・マスターを利用できます。ペリフェラル DMAコントローラ
は、ペリフェラルと内部／外部メモリとの間でデータを転送できます。メモリ DMA コントローラの読出し／書込みチャンネルは、DAB を通じて
ディスクリプタ・リストにアクセスします。
SRAM として設定された L1 への調停について、DCBはコア・プロセッサよりも高い優先順位を持っています。オフチップ・メモリの場合、EPB へのアクセスについては、コアは（デフォルトで）DEB よりも高い優先順
位を持っています。DAB については、プロセッサにはプログラマブルな
ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

7-7

システム・インターフェース

優先順位調停ポリシーがあります。表 7-1 に、デフォルトの調停優先順位を示します。さらに、EBIU_AMGCTL レジスタの CDPRIO ビットの設定によって、EPB へのすべてのDEB トランザクションに外部メモリへのコア・ア
クセスよりも高い優先順位を持たせることができます。このビットの使用はアプリケーションに依存します。たとえば、長いアクセス・タイムを持つ非同期メモリにマッピングされたペリフェラルをポーリングしている
場合、デフォルトでは、コアは DMA 要求に「勝り」ます。CDPRIO ビットの設定によって、コアは DMA 要求が処理されるまで先送りされます。

7-8

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンスチップ・バス階層

表 7-1.

DAB、DCB、DEB の調停優先順位

DAB、DCB、DEB マスター

デフォルトの調停優先順位

PPI

0 - 最高SPORT0 RCV DMA コントローラ

1

SPORT1 RCV DMA コントローラ

3

SPORT0 XMT DMA コントローラ

2

SPORT1 XMT DMA コントローラ

4

SPI DMA コントローラ

5

UART RCV コントローラ

6

UART XMT コントローラ

7

メモリ DMA0（デスティネーション）コントローラ

8

メモリ DMA0（ソース）コントローラ

9

メモリ DMA1（デスティネーション）コントローラ

10

メモリ DMA1（ソース）コントローラ

11 - 最低X DAB、DCB、DEB の性能

プロセッサの DABでは、16ビットまたは32 ビットのデータ転送をサポー
ト し ま す 。 デ ー タ ・ バ ス は 16 ビ ッ ト 幅 で あ り、 そ の 最 大 周 波 数 は『ADSP-BF531/ADSP-BF532/ADSP-BF533 Embedded Processor Data
Sheet』で指定されています。
DAB には、L1メモリへの専用ポートがあります。コア・アクセスと DMA
アクセスが同じメモリ・バンク（L1では 4K バイト・サイズ）に対するものでない限り、ストールは発生しません。衝突がある場合には、DMA が優先順位の最も高いリクエスタであり、コアがそれに続きます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

7-9

システム・インターフェース

なお、コア・プロセッサによるロック転送（たとえば、TESTSET 命令の実行）では、メモリ・ロックがアサート解除されるまで、アドレス指定されたメモリ・バンクやリソースに対する調停は実質的にディスエーブルにされます。DMA コントローラでは、ロック転送を実行できません。
L1 メモリへのDMA アクセスは、別の DMA チャンネルからすでに開始されているアクセスによってのみストールされることがあります。このようなストールに起因する遅延量は、調停遅延に付加されます。

L

コア・プロセッサと DAB は、EBIU を通じての外部メモリへのアクセスを調停する必要があります。オフチップ・メモリ・デバイスの読出しに必要な遅延に加えて、このような調停遅延が生じるため、DAB スループットが著しく低下して、ペリフェラル・データ・バッ
ファのアンダーフロー／オーバーフローにつながることもあります。メモリ DMA コントローラ以外の DMA ペリフェラルを使用し、DMA アクセスのターゲットを外部メモリとする場合には、具体的なトラフィック・パターンを慎重に解析する必要があります。内部
メモリをターゲットとするアイソクロナス・ペリフェラルには、十分な帯域幅と適切な最大調停遅延が割り当てられていることを確認してください。

X DAB バス・エージェント（マスター）

7-9 ページの表 7-1 に示すように、DMA アクセスのソースになれるすべてのペリフェラルは、このバスのマスターです。1つのアービタが、DABにアクセスするためのプログラマブルな優先順位調停ポリシーを提供します。
複数の DMA マスター・チャンネルが DABをアクティブに要求している場
合、DAB のパイプライン化された設計によってバス使用率はかなり高くなります。バス調停サイクルは、先行する DMAアクセスのデータ・サイ
クルと同時に発生します。

7-10

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンスチップ・バス階層■ 外部アクセス・バス（EAB）
EAB によって、プロセッサ・コアは、オフチップ・メモリに直接アクセスできます。

■ 外部バスの調停
外部ポート・バスの潜在的なマスター間には競合の可能性があるため、このバスのインターフェース・リソースの使用を調停する必要があります。
固定優先順位の調停方式が使用されます。つまり、EABを介するコア・ア
クセスでは、DMA 外部バス（DEB）からのアクセスよりも優先順位が高くなります。

■ DEB/EAB 性能
DEB とEABは、8ビットまたは16ビットのデータ型のシングル・ワード・アクセ
スに対応します。DEBとEABは『ADSP-BF531/ADSP-BF532/ADSP-BF533
Embedded Processor Data Sheet』で指定された最大 SCLK 周波数まで、
PAB や DABと同じ周波数で動作します。
メモリ DMA転送では、同じメモリ位置に対する繰返しアクセスが生じる
ことがあります。メモリ DMA コントローラでは、オンチップ／オフチッ
プ・メモリに同時アクセスする可能性があるため、かなりのスループットを達成できます。オンチップ／オフチップ・メモリ・アクセスのスルー
プット・レートは、2つのアクセスのうち、遅い方によって制限されます。
オンチップ・メモリ間またはオフチップ・メモリ間の転送では、バース
ト・アクセスは同時に発生しません。したがって、転送速度を計算するには、各転送時間と各転送間での追加サイクルを加算します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

7-11

システム・インターフェース

表 7-2 は、多くのタイプの 16ビット・メモリ DMA 転送を示します。この
表では、他の DMA 動作は進行中の動作と衝突していないものと想定します。表の値は理論値です。実際のハードウェアで測定すると、EBIU に接続されているデバイスに関するさまざまな理由によって、これらの値は高くなることがあります。
非 DMAアクセス（たとえば、EABを介するコア・アクセス）では、SDRAM
への 32 ビット・アクセス（書式は R0 = [P0] であり、P0 は SDRAM 内のアドレスをポイント）は、2つの 16 ビット・アクセス（書式は R0 = W[P0++]
であり、P0 は SDRAM 内のアドレスをポイント）を実行する場合よりも常に効率的です。この例では、32ビットのSDRAM 読出しには10 SCLK サ
イクルが必要ですが、2つの 16ビット読出しにはそれぞれ 9 SCLK サイクルが必要です。
表 7-2.

7-12

外部メモリへの DMA アクセスの性能

ソース

デスティネーション

n ワードに対する概略の SCLK（DMA の開始から最後の割込みまで）

16 ビット SDRAM

L1 データ・メモリ

n + 14

L1 データ・メモリ

16 ビット SDRAM

n + 11

16 ビット非同期メモリ

L1 データ・メモリ

xn + 12。ここで x は、待ち状態の数＋
セットアップ／ホールド SCLK サイクル（最小の x ＝ 2）L1 データ・メモリ

16 ビット非同期メモリ

xn + 9。ここで x は、待ち状態の数＋
セットアップ／ホールド SCLK サイクル（最小の x ＝ 2）

16 ビット SDRAM

16 ビット SDRAM

10 + (17n/7)

16 ビット非同期メモリ

16 ビット非同期メモリ

10 + 2xn。ここで x は、待ち状態の数＋セットアップ／ホールド SCLK サイ
クル（最小の x ＝ 2)L1 データ・メモリ

L1 データ・メモリ

2n + 12ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

第8章

ダイナミック・パワー・
マネジメント

この章では、プロセッサのダイナミック・パワー・マネジメント機能について説明します。これには以下の機能が含まれます。
• クロッキング• フェーズ・ロック・ループ（PLL）• ダイナミック・パワー・マネジメント・コントローラ• 動作モード• 電圧制御クロッキングプロセッサへの入力クロックである CLKIN は、オンチップ・フェーズ・ロッ
ク・ループ（PLL）モジュールによる正確な内部クロック逓倍を可能にするため、必要なクロック周波数、デューティ・サイクル、安定性を提供します。通常の動作時には、ユーザは CLKIN の増倍率で PLLをプログラムします。結果として得る逓倍された信号は、電圧制御発信器（VCO）クロッ
クです。その後、ユーザ・プログラマブルな値で VCO クロック信号を分周してコア・クロック（CCLK）を生成します。
VCO 信号をユーザ・プログラマブルな値で分周してシステム・クロック（SCLK）を生成します。この SCLK 信号は、ペリフェラル・アクセス・バス（PAB）、DMA バス（DAB）、外部アドレス・バス（EAB）、外部バス・インターフェース・ユニット（EBIU）をクロック駆動します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

8-1

クロッキングL

これらのバスは、PLL 周波数を 1～15（SCLK ドメイン）で分周した周波数で動作します。PLL 分周レジスタの SSEL パラメータを使用
して、これらのバスが『ADSP-BF531/ADSP-BF532/ADSP-BF533
Embedded Processor Data Sheet』で指定される最大 SCLK レート
以下で動作できる分周器値を選択します。

性能と消費電力を最適化するため、プロセッサでは、コア周波数とシステ
ム・クロック周波数を粗調整で動的に変更できます。微調整では、PLLク
ロック周波数も変更できます。

■ フェーズ・ロック・ループとクロック制御
コアとシステムのクロック生成を行うため、プロセッサでは、プログラマ
ブルなステート・マシン制御を備えたアナログ PLLを使用します。
PLL 設計では、広範なアプリケーションに対応し、性能、柔軟性、消費電力の制御が主要な特長である低価格の汎用プロセッサ、組込みアプリケー
ション、ポータブル・アプリケーションにウェイトを置いています。このようにアプリケーション範囲が広いため、クロック生成回路には広範囲の周波数が要求されます。入力クロックには、水晶、水晶発振器、または外付けシステム・クロック発振器から出力されるバッファされ整形されたク
ロックを使用できます。
PLL では、ダイナミック・パワー・マネジメント・コントローラ（DPMC）
ブロックと対話処理を行って、プロセッサにパワーマネジメント機能を提供します。DPMC の詳細については、8-12 ページの「ダイナミック・パ
ワー・マネジメント・コントローラ」を参照してください。

8-2

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイナミック・パワー・マネジメント

X PLL の概要

PLL は最大 VCO 周波数を生成するために、広範囲な逓倍率を提供して入力
クロック CLKIN の逓倍を行います。この広範な逓倍範囲を達成するため、プロセッサは PLL フィードバック回路のプログラマブル分周器と出力設
定ブロックを組み合わせて使用します。
図 8-1は、PLL回路の概念モデル、設定入力、結果として得られる出力を示します。この図では、VCO は中間クロックであり、そこからコア・クロック（CCLK）とシステム・クロック（SCLK）が得られます。

CLKIN/1߹ߚߪ/2

૏⋧ᬌ಴

࡞࡯ࡊ࡮
ࡈࠖ࡞࠲

VCO

CCLK
ࠢࡠ࠶ࠢ
ಽ๟ߣ
MUX

DF

SCLK

ಽ๟ེ

MSEL[5:0]
BYPASS
SSEL[3:0]
CSEL[1:0]

図 8-1.

PLL のブロック図■ PLL クロック逓倍率
PLL コントロール・レジスタ（PLL_CTL）は PLL の動作を管理します。
PLL_CTL レジスタの詳細については、8-8 ページの「PLL_CTL レジスタ」
を参照してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

8-3

クロッキング

周波数分周（DF）ビットと乗算器選択（MSEL[5:0]）フィールドでは、さまざまな PLLクロック分周器を設定します。
• DF は入力分周器をイネーブルにします• MSEL[5:0] は帰還分周器を制御します
MSEL のリセット値は 0xAです。この値は、ブート・コードで起動時に再設定できます。
表 8-1 は、さまざまな MSEL 設定と DF 設定に対する VCO 増倍率を示します。
この表に示すように、MSEL[5:0] と DF のさまざまな組合わせによって、同じ VCO 周波数を生成できます。特定のアプリケーションでは、1 つの組合
わせで低消費電力を提供したり、VCO 最大周波数を満たします。通常の条件では、一般に DF を 1 に設定すると、低消費電力が得られます。CLKIN、
CCLK、VCO の最大／最小周波数については、『ADSP-BF531/ADSP-BF532/
ADSP-BF533 Embedded Processor Data Sheet』を参照してください。
表 8-1.

8-4

MSEL のエンコーディング

信号名
MSEL[5:0]

VCO 周波数
DF = 0DF = 1

0

64x

32x

1

1x

0.5x

2

2x

1x

N = 3–62

Nx

0.5Nx

63

63x

31.5x

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイナミック・パワー・マネジメント

X コア・クロック／システム・クロックの比率制御

8-5 ページの表 8-2 は、VCO 周波数とコア・クロックとのプログラマブルな関係を示します。8-6 ページの表 8-3 には、VCO 周波数とシステム・クロッ
ク と の 関 係 を 示 し ま す 。 な お、 分 周 器 比 率 を 選 択 し て 、SCLK を『ADSP-BF531/ADSP-BF532/ADSP-BF533 Embedded Processor Data
Sheet』で指定された周波数に制限する必要があります。SCLK は、すべての同期型システム・レベル・ロジックを駆動します。
分周器比率制御ビット CSEL と SSEL は、PLL分周レジスタ（PLL_DIV）にあります。このレジスタについての詳細は、8-7 ページの「PLL_DIV レジ
スタ」を参照してください。付録 B にはレジスタ・アドレスを示します。
CSEL[1:0] のリセット値は0x0 (/1) であり、SSEL[3:0] のリセット値は 0x5です。これらの値は、ブート・コードによって起動時に再度プログラムできます。
CSEL と SSEL の値を動的に変更するには、PLL_DIV に適切な値を書き込みます。なお、コア・クロックの分周器比率は、システム・クロックの分周器比率よりも大きくできません。PLL_DIV レジスタに不正な値がプログラムされた場合には、SCLK 分周器は自動的にコア・クロック分周器以上の値に増やされます。
PLL_DIV レジスタはいつでもプログラム可能であり、アイドル状態に入ることなく、CCLK と SCLK の分周値を変更できます。
表 8-2.

コア・クロック比率

信号名
CSEL[1:0]

分周器比率
VCO/CCLK

周波数比の例（MHz）
VCO
CCLK

00

1

300

300

01

2

600

300

10

4

600

150

11

8

400

50

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

8-5

クロッキング

PLL コントロール・レジスタ（PLL_CTL）内の制御ビット MSEL と DF が一定である限り、PLL はロックされています。
表 8-3.

システム・クロック比率

信号名
SSEL[3:0]

分周器比率
VCO/SCLK

周波数比の例（MHz）
VCO
SCLK

0000

予備

N/A

N/A

0001

1:1

100

100

0010

2:1

200

100

0011

3:1

400

133

0100

4:1

500

125

0101

5:1

600

120

0110

6:1

600

100

N = 7–15

N:1

600

600/N

L

PLL_DIV に新しいSSEL 値を書き込んでクロック比率を変更する場合には、SCLK 周波数の変化によってイネーブル状態のペリフェラルに
データ損失が発生しないように注意してください。

■ PLL レジスタ
PLL へのユーザ・インターフェースには、4本のメモリマップド・レジス
タ（MMR）を使用します。
• PLL 分周レジスタ（PLL_DIV）• PLL コントロール・レジスタ（PLL_CTL）• PLL ステータス・レジスタ（PLL_STAT）• PLL ロック・カウント・レジスタ（PLL_LOCKCNT）

8-6

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイナミック・パワー・マネジメント

これら 4本のレジスタはすべて 16ビットMMRであり、整列された 16ビッ
トの読出し／書込みでアクセスする必要があります。
X PLL_DIV レジスタ

PLL分周レジスタ（PLL_DIV）では、PLL出力クロックを分周してプロセッ
サのコア・クロック（CCLK）とシステム・クロック（SCLK）を生成します。
これらの値は、処理中に独立に変更して、PLL状態を変更せずに消費電力を減らすことができます。唯一の制約として、得られる CCLK 周波数は SCLK
周波数以上であり、SCLK は『ADSP-BF531/ADSP-BF532/ADSP-BF533
Embedded Processor Data Sheet』で指定される許容範囲内に収まることが必要です。CCLK と SCLK の分周値の設定が誤っている場合には、SCLK 値は自動的にコア・クロック以下の値に調整されます。図 8-2は、PLL_DIV レジ
スタのビットを示します。
PLL 分周レジスタ（PLL_DIV）
0xFFC0 0004

15 14 13 12 11 10 9
0 0 0 0 0 0 0

CSEL[1:0]（コア選択）
00 - CCLK = VCO /1
01 - CCLK = VCO / 2
10 - CCLK = VCO / 4
11 - CCLK = VCO / 8

図 8-2.

8
0

7
0

6
0

5
0

4
0

3
0

2
1

1
0

0
1

リセット＝ 0x0005
SSEL[3:0]（システム選択）
0 - 予備
1-15 - SCLK = VCO / X

PLL 分周レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

8-7

クロッキングX PLL_CTL レジスタ

PLL コントロール・レジスタ（PLL_CTL）では、PLLの動作を制御します（図 8-3を参照）。なお、PLL_CTL レジスタへの変更は、すぐに有効にはなりません。一般に、変更を実現するには、まず PLL_CTL レジスタに新しい値を設定し、次に特定の PLL プログラミング・シーケンスを実行する必要があります。8-20 ページの「PLL プログラミング・シーケンス」を参照
してください。
PLL コントロール・レジスタ（PLL_CTL）

0xFFC0 0000

15 14 13 12 11 10 9
0 0 0 1 0 1 0

8
0

7
0

6
0

5
0

4
0

MSEL[5:0]（乗算器選択）CLKIN/VCO 増倍率については、
8-4 ページの表 8-1 を参照
BYPASS
0 - PLL をバイパスしない
1 - PLL をバイパスする
出力遅延
0 - 出力遅延を増やさない
1 - 外部メモリ出力信号に約200ps の遅延を加算

3
0

2
0

1
0

0
0

リセット＝ 0x1400

DF（周波数分周）
0 - PLL に CLKIN を渡す
1 - PLL に CLKIN/2 を渡す
PLL_OFF
0 - PLL への電源をイネーブル
1 - PLLへの電源をディスエーブル
STOPCK（クロック停止）
0 - CCLK オン
1 - CCLK オフ
PDWN（パワーダウン）
0 - すべての内部クロックがオン
1 - すべての内部クロックがオフ

入力遅延
0 - 入力遅延を増やさない
1 - 入力が外部メモリ・インターフェースにラッチされるタイミングに約200psの遅延を加算

図 8-3.

8-8

PLL コントロール・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイナミック・パワー・マネジメント

PLL_CTL レジスタの以下のフィールドは、PLLの制御に使用されます。

• MSEL[5:0] ― 乗算器選択（MSEL）フィールドでは、入力クロック
から VCO クロック（CLKIN から VCO）への乗算器を定義します。
• BYPASS ― このビットはPLL のバイパスに使用されます。BYPASS がセットされると、コア・クロックとペリフェラル・クロックに CLKINが直接渡されます。
• 出力遅延 ― このビットは、外部メモリ出力信号に約 200ps の遅延を加算するために使用されます。このビットをセットすべきかどうか 判 断 す る に は、『ADSP-BF531/ADSP-BF532/ADSP-BF533
Embedded Processor Data Sheet』を参照してください。
• 入力遅延 ― このビットは、入力が外部メモリ・インターフェースにラッチされるタイミングに約 200ps の遅延を加算するために使用されます。このビットをセットすべきかどうか判断するには、『ADSP-BF531/ADSP-BF532/ADSP-BF533 Embedded Processor
Data Sheet』を参照してください。
• PDWN ― パワーダウン（PDWN）ビットは、プロセッサをディープ・
スリープ動作モードにするために使用されます。
動作モードの詳細については、8-13 ページの「動作モード」を参照してください。
• STOPCK ― クロック停止（STOPCK）ビットは、コア・クロック CCLK
をイネーブル／ディスエーブルにするために使用されます。
PLLへの電源をイネーブル／ディスエー• PLL_OFF ― このビットは、ブルにするために使用されます。
• DF ― 周波数分周（DF）ビットは、PLLに対して CLKIN を直接渡す
か、それとも CLKIN/2 を渡すかを決定します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

8-9

クロッキングX PLL_STAT レジスタ

PLL ステータス・レジスタ（PLL_STAT）では、PLL とプロセッサの動作
モードを示します（図 8-4を参照）。動作モードの詳細については、8-13
ページの「動作モード」を参照してください。
PLL ステータス・レジスタ（PLL_STAT）
読出し専用。特に指定のない限り、1 - プロセッサはこのモードで動作。詳細については、
8-13 ページの「動作モード」を参照してください。

0xFFC0 000C

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
1

6
0

5
1

4
0

3
0

2
0

1
1

0
0

リセット＝ 0x00A2

VSTAT（電圧レギュレータ・ステータス）
0 - レギュレータはプログラムされた電圧にありません
1 - レギュレータはプログラムされた電圧にあります

ACTIVE_PLLENABLED

CORE_IDLE

ACTIVE_PLLDISABLED

PLL_LOCKED

DEEP_SLEEPFULL_ONSLEEP

図 8-4.

PLL ステータス・レジスタ

以下のフィールドは、PLL_STAT レジスタで使用されます。
• VSTAT（電圧レギュレータ・ステータス）― このビットは、電圧レ
ギュレータがプログラムされた電圧に達したかどうかを示します。
電圧レベルを変更するとき、PLL を新しい電圧レベルでロックできるようにコアをアイドル動作状態にしておく必要があります。8-20
ページの「PLL プログラミング・シーケンス」を参照してください。
• CORE_IDLE ― このビットは、Blackfin プロセッサ・コアがアイドル状態にされると 1 に設定されます。つまり、IDLE 命令が実行され、コアはウェイクアップ信号を待機します。

8-10

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイナミック・パワー・マネジメント• PLL_LOCKED ― 内部 PLL ロック・カウンタが PLLロック・カウン
ト・レジスタ（PLL_LOCKCNT）で設定された値までインクリメントされると、このフィールドは 1 に設定されます。詳細については、
8-11 ページの「PLL_LOCKCNT レジスタ」を参照してください。
• SLEEP ― プロセッサがスリープ動作モードにあるとき、このフィー
ルドは 1に設定されます。
• DEEP_SLEEP ― プロセッサがディープ・スリープ動作モードにあるとき、このフィールドは 1 に設定されます。
• ACTIVE_PLLDISABLED ― PLLをパワーダウンしてプロセッサがアクティブ動作モードにあるとき、このフィールドは1に設定されます。
• FULL_ON ― プロセッサがフル・オン動作モードにあるとき、このフィールドは 1に設定されます。
• ACTIVE_PLLENABLED ― PLLをパワーアップしてプロセッサがアクティブ動作モードにあるとき、このフィールドは1に設定されます。
X PLL_LOCKCNT レジスタ

PLL のクロック周波数を変更するとき、PLL が安定して新しい周波数にロックされるには時間が必要です。
PLL ロック・カウント・レジスタ（PLL_LOCKCNT）は、プロセッサが PLL_STAT
レジスタの PLL_LOCKED ビットを設定するまでに発生する SCLK サイクル数を定義します。PLLプログラミング・シーケンスを実行するとき、IDLE 命
令の実行と同時に内部 PLL ロック・カウンタはインクリメントを開始します。ロック・カウンタは、SCLK サイクルごとに 1だけインクリメントします。ロック・カウンタが PLL_LOCKCNT レジスタで定義された値までインクリメントすると、PLL_LOCKED ビットが設定されます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

8-11

ダイナミック・パワー・マネジメント・コントローラ

PLL の安定化時間とこのレジスタの設定値については、『ADSP-BF531/
ADSP-BF532/ADSP-BF533 Embedded Processor Data Sheet』を参照してください。動作モードについては、8-13 ページの「動作モード」を参照してください。PLL プログラミング・シーケンスの詳細については、
8-20 ページの「PLL プログラミング・シーケンス」を参照してください。
PLL ロック・カウント・レジスタ（PLL_LOCKCNT）

0xFFC0 0010

15 14 13 12 11 10 9
0 0 0 0 0 0 1

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0200

LOCKCNT
PLL ロック・カウント・タ
イマが満了するまでの
SCLK サイクル数

図 8-5.

PLL ロック・カウント・レジスタ

ダイナミック・パワー・マネジメント・
コントローラダイナミック・パワー・マネジメント・コントローラ（DPMC）は PLLと連携して動作するため、ユーザはプロセッサの性能特性と消費電力を動的に制御できます。DPMC によって提供される以下の機能を使用して、ユーザは性能と電源を制御できます。
• 複数の動作モード ― プロセッサは4つの動作モードで動作し、性能特性と消費電力プロファイルは動作モードによって異なります。
8-13 ページの「動作モード」を参照してください。
• ペリフェラル・クロック ― ペリフェラルがディスエーブルにされると、各ペリフェラルへのクロックは自動的にディスエーブルにさ
れます。

8-12

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイナミック・パワー・マネジメント• 電圧制御 ― プロセッサに内蔵のスイッチング・レギュレータ・コ
ン トロ ー ラは、い くつ か の外 付 け部 品 を利 用 して、外 部 Vdd（VDDEXT）電源から内部電圧レベルを生成できます。
システムのニーズに応じて、電圧レベルを下げて節電を図ることができます。8-27 ページの「VR_CTL レジスタ」を参照してください。

■ 動作モード
プロセッサは 4つの動作モードで動作し、性能と節電の特性は各動作モードによって異なります。表 8-4 に、各モードの動作特性を要約します。
表 8-4.

動作特性

動作モード

節電

PLL
ステータス バイパス

CCLK

SCLK

可能な
DMA
アクセス

フル・オン

なし

イネーブル

いいえ

イネーブル

イネーブル

L1

はい

イネーブル

イネーブル

L1

イネーブル

–

1

アクティブ

中

イネーブル

スリープ

高

イネーブル

いいえ

ディスエー
ブル

ディープ・
スリープ

最高

ディスエー
ブル

–

ディスエー ディスエー –
ブル
ブル

1

このモードでは PLL もディスエーブルにできます。

■ ダイナミック・パワー・マネジメント・コントローラの状態
パワーマネジメント状態は、PLL 制御状態と同義です。DPMC/PLL の状
態を判定するには、PLL ステータス・レジスタを読出します（8-10 ページの「PLL_STAT レジスタ」を参照）。スリープとディープ・スリープ以外の全モードで、コアは命令を実行したり、アイドル・コア状態にあることができます。コアがアイドル状態にある場合には、ウェイクアップさせることができます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

8-13

ダイナミック・パワー・マネジメント・コントローラ

アクティブ以外の全モードで、SCLK 周波数は VCO に対する SSEL で指定した比率によって決まります。スリープ・モードでは、コア・クロックはディスエーブルにされますが、SCLK は指定の SSEL 比率で動作し続けます。
以下の節では、パワーマネジメント・コントローラの機能に関連する
DPMC/PLL 状態の詳細を説明します。
X フル・オン・モード

フル・オン・モードは、最高性能が得られるモードです。このモードでは、PLL はイネーブルにされており、バイパスされません。フル・オン・
モードはプロセッサの通常の実行状態であり、プロセッサとイネーブルにされたすべてのペリフェラルは最高速度で動作します。L1 メモリには
DMA アクセスが可能です。フル・オン・モードからは、8-17 ページの図
8-6「動作モード遷移」に示すように、プロセッサはアクティブ・モード、
スリープ・モード、ディープ・スリープ・モードに直接遷移できます。
X アクティブ・モード

アクティブ・モードでは PLL はイネーブルにされていますが、バイパスされます。PLLがバイパスされるため、プロセッサのコア・クロック（CCLK）とシステム・クロック（SCLK）は入力クロック（CLKIN）周波数で動作します。適切に設定された L1 メモリにはDMAアクセスが可能です。
アクティブ・モードでは、PLL をバイパスするだけでなく、ディスエーブ
ルにすることも可能です。ディスエーブルにされた場合には、フル・オ
ン・モードやスリープ・モードに遷移する前に、PLLを再びイネーブルにする必要があります。
アクティブ・モードからは、プロセッサはフル・オン・モード、スリー
プ・モード、ディープ・スリープ・モードに直接遷移できます。

8-14

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイナミック・パワー・マネジメント

X スリープ・モード

スリープ・モードでは、コア・プロセッサをアイドル状態にすることで消費電力を大幅に低下します。このモードでは CCLK はディスエーブルにされます。しかし SCLK は、MSEL と SSEL のビット設定に基づく速度で動作を続行します。CCLK はディスエーブルにされるため、DMA アクセスはスリー
プ・モードで外部メモリに対してだけ可能です。スリープ・モードから
は、ウェイクアップ・イベントによって、プロセッサは次のいずれかのモードに遷移します。
• アクティブ・モード：PLL_CTL レジスタの BYPASS ビットがセットされている場合• フル・オン・モード：BYPASS ビットがクリアされている場合
X ディープ・スリープ・モード

ディープ・スリープ・モードでは、PLL、CCLK、SCLK をディスエーブルにして最大の節電を図ります。このモードでは、プロセッサ・コアとすべてのペリフェラル（リアルタイム・クロック（RTC）を除く）がディスエー
ブルにされます。このモードでは DMAはサポートされません。
ディープ・スリープ・モードは、RTC 割込みまたはハードウェア・リセッ
ト・イベントによってのみ終了できます。RTC割込みでは、プロセッサはアクティブ・モードに遷移します。ハードウェア・リセットでは、ハード
ウェア・リセット・シーケンスが開始されます。ハードウェア・リセットの詳細については、3-14 ページの「ハードウェア・リセット」を参照してください。
なお、ディープ・スリープ・モードでの RTC 割込みによって、PLL コン
トロール・レジスタ（PLL_CTL）のいくつかのフィールドは自動的にリセットされます。表 8-5 を参照してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

8-15

ダイナミック・パワー・マネジメント・コントローラ

L

ディープ・スリープ動作モードでは、SDRAM へのクロッキングはオフにされます。ディープ・スリープ・モードに入る前に、ソフト
ウェアによって、SDRAM内の重要な情報を不揮発性メモリに保存してください。

表 8-5.

RTC ウェイクアップ割込み後のコントロール・レジスタ値

フィールド

値

PLL_OFF

0

STOPCK

0PDWN

0BYPASS

1

X 休止状態

最低の消費電力を実現するために、この状態では内部電源（VDDINT）をオフにしたまま I/O 電源（VDDEXT）をオンに保持することができます。これは厳密には、上述の4つのモードのような動作モードではありませんが、動作モードと見なせば図 8-6 での説明に役立ちます。この機能は内蔵のスイッチング・レギュレータ・コントローラとペアになっているため、8-31
ページの「コアのパワーダウン（休止状態）」で詳しく説明します。

■ 動作モード遷移
8-17 ページの図 8-6「動作モード遷移」は、動作モードと遷移を示します。この図では、楕円は動作モードを表します。楕円間の矢印は、各モード間で可能な遷移を示します。
各遷移矢印の隣にあるテキストは、遷移が生じるために変更する必要のあ
る PLL コントロール・レジスタ（PLL_CTL）内のフィールドを示します。
たとえば、フル・オン・モードからスリープ・モードへの遷移では、STOPCK8-16

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイナミック・パワー・マネジメント

ビットを 1 に設定し、PDWN ビットを0 に設定する必要があることを示します。モード遷移を生じさせる方法については、8-20 ページの「動作モード遷移のプログラミング」を参照してください。

スリープ

STOPCK = 1 &PDWN = 0

ウェイクアップ＆
BYPASS ＝ 0

STOPCK = 1 &PDWN = 0

ウェイクアップ＆
BYPASS ＝ 1

BYPASS = 0 & PLL_OFF = 0 &STOPCK = 0 & PDWN = 0

アクティブ

フル・オン

BYPASS = 1 & STOPCK = 0 &PDWN = 0

PDWN = 1

FREQ = 00

PDWN = 1

RTC_WAKEUP

ディープ・
スリープ

ハードウェア・リセット

休止
WAKE = 1 &RTC_WAKEUP

リセット

FREQ = 00

WAKE ＝ 1 ＆ハードウェア・リセット

図 8-6.

動作モード遷移ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

8-17

ダイナミック・パワー・マネジメント・コントローラ

図 8-6に示すモード遷移に加えて、PLL はアクティブ動作モードにおいても変更できます。つまり、PLL への電源を印加したり除去したりできます。また、新しいクロックイン対 VCO クロック（CLKIN 対 VCO）逓倍率をプ
ログラムできます。後述しますが、PLL に対するこれらの変更はすぐには有効になりません。動作モード遷移と同様に、これらの変更を有効にするには PLL プログラミング・シーケンスを実行する必要があります（8-20
ページの「PLL プログラミング・シーケンス」を参照）。
• PLL ディスエーブル：アクティブ・モードでバイパスされるだけでなく、PLL への電源も除去できます。
PLL から電源が除去されると、比較的わずかではありますが、節電になります。PLL への電源を除去するには、PLL_CTL レジスタのPLL_OFF ビットをセットしてから、PLL プログラミング・シーケンスを実行します。
• PLL イネーブル：PLL がパワーダウンされている場合、後で実行が必要なときに、再び電源を印加できます。
PLL への電源は、フル・オン動作モードやスリープ動作モードに遷移する前に再び印加する必要があります。PLLに電源を印加するには、PLL_CTL レジスタの PLL_OFF ビットをクリアしてから、PLL プ
ログラミング・シーケンスを実行します。
• アクティブ・モードでの新しい逓倍率：アクティブ・モードでは、
新しいクロックイン対 VCO クロック（CLKIN 対 VCO）逓倍率をプログ
ラムできます。
CLKIN 対 VCO 乗算器の変更はアクティブ・モードでは実現しません

が、フル・オン・モードに遷移する前にアクティブ・モードで PLLを新しい比率にロックすれば、遷移時間が減少します。これは、PLL がすでに新しい比率にロックされているからです。なお、新しい比率にロックするには、PLL をパワーアップしておく必要があり

8-18

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイナミック・パワー・マネジメント

ます。新しい CLKIN 対 VCO 乗算器をプログラムするには、PLL_CTL レ
ジスタに新しい MSEL[5:0] 値または DF 値、あるいはその両方を書き込んでから、PLL プログラミング・シーケンスを実行します。
• フル・オン・モードでの新しい逓倍率：フル・オン・モードでは、逓倍率も変更できます。
この場合、PLL がロックしている間に、PLL 状態は自動的にアクティブ・モードに遷移します。ロッキングの後で、PLL はフル・オン状態に戻ります。新しい CLKIN 対 VCO 乗算器をプログラムするには、PLL_CTL レジスタに新しい MSEL[5:0] 値または DF 値、あるいはその両方を書き込んでから、PLLプログラミング・シーケンスを実行します（8-20 ページを参照）。
表 8-6 に、可能な動作モード遷移を要約します。

[

表 8-6に示す以外のモード遷移を試みると、予測できない動作を招きます。

表 8-6.

可能な動作モード遷移
現在のモード

新しいモード

フル・オン

アクティブ

スリープ

ディープ・
スリープ

フル・オン

–

可能

可能

–

アクティブ

可能

–

可能

可能

スリープ

可能

可能

–

–

ディープ・
スリープ

可能

可能

–

–

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

8-19

ダイナミック・パワー・マネジメント・コントローラ

X 動作モード遷移のプログラミング

動作モードは、PLL コントロール・レジスタ（PLL_CTL）のビット PLL_OFF、
BYPASS、STOPCK、PDWN の状態によって定義されます。しかし、PLL_CTL レ
ジスタのビットを変更するだけでは動作モードや PLL の動作は変更されません。PLL_CTL レジスタへの変更が実現するのは、リスト 8-1 に示す特定のコード・シーケンスを実行した後です。このコード・シーケンスは、
まず、プロセッサを既知のアイドル状態にします。アイドル状態になると、PLLは PLL_CTL レジスタへの変更を認識して実装します。変更が有効になった後、プロセッサは新しい動作モードを含む（プログラムされた場
合）新しい設定で動作します。
PLL プログラミング・シーケンス
PLL コントロール・レジスタ（PLL_CTL）の MSEL または DF に新しい値が割り当てられた場合には、リスト 8-1 に示す命令シーケンスによってそれらの変更が有効になります。PLL プログラミング・シーケンスは、動作状態間を遷移するときにも実行されます。

L

分周器比率ビットCSEL とSSELに対する変更は、動的に行うことができます。この変更には、PLL プログラミング・シーケンスの実行は不要です。

リスト 8-1. PLL プログラミング・シーケンス
CLI R0 ;/* 割込みをディスエーブル *//* パイプラインをフラッシュし、コアをアイドル状態にします */IDLE ;STI R0 ;/* ウェイクアップ後、割込みを再びイネーブル */シーケンス内の最初の 2つの命令は、割込みをディスエーブルにしてコアをアイドル状態にします。割込みマスク（IMASK）は R0 レジスタに保存され、命令パイプラインは停止します。その後、PLL ステート・マシンは
PLL_CTL レジスタの変更をPLLにロードします。

8-20

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイナミック・パワー・マネジメント

PLL_CTL レジスタの変更に新しい CLKIN 対 VCO 乗算器が含まれる場合、または変更によって PLL に電源が再印加される場合には、PLL の再ロックが必要です。再ロックするには、まず PLLロック・カウンタがクリアされてから、SCLK サイクルごとに 1回のインクリメントを開始します。PLL ロッ
ク・カウンタが PLLロック・カウント・レジスタ（PLL_LOCKCNT）にプロ
グラ ム さ れた 値 に到 達 した 後、PLL は PLL ス テ ータ ス・レジ ス タ（PLL_STAT）の PLL_LOCKED ビットをセットし、PLL は PLLウェイクアップ
割込みをアサートします。
PLL_CTL レジスタの設定に応じて、プロセッサは次のいずれかの動作を行います。
• PLL_CTL レジスタがアクティブ動作モードまたはフル・オン動作モー
ドに入るようプログラムされている場合には、8-22 ページの「PLL
プログラミング・シーケンスの続行」で説明するように、PLL がウェイクアップ信号を生成してから、プロセッサはシーケンス内のSTI 命令に進みます。
状態変更によって、アクティブ・モードからフル・オン・モード、
またはフル・オンからアクティブに入ると、PLL 自身が生成する
ウェイクアップ信号を使用して、コアのアイドル状態を終了することができます。このウェイクアップ信号は、PLL自身、または別のペリフェラル、ウォッチドッグなどのタイマ、RTC、およびその他のソースから生成されます。プロセッサをアイドル状態からウェイ
ク ア ッ プ さ せ る イ ベ ン ト の 詳 細 に つ い て は、4-27 ペ ー ジ の「SIC_IWR レジスタ」を参照してください。
• PLL_CTL レジスタがスリープ動作モードに入るようプログラムされている場合には、プロセッサはすぐにスリープ・モードに遷移して、ウェイクアップ信号を待機してから続行します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

8-21

ダイナミック・パワー・マネジメント・コントローラ

ウェイクアップ信号がアサートされると、「PLL プログラミング・
シーケンスの続行」の節で説明するように、命令シーケンスは STI
命令に進み、プロセッサは次のように遷移します。
– PLL_CTL レジスタの BYPASS ビットがセットされている場合
はアクティブ・モード– BYPASS ビットがクリアされている場合はフル・オン・モード• PLL_CTL レジスタがディープ・スリープ動作モードに入るようプログラムされている場合には、プロセッサはすぐにディープ・スリー
プ・モードに遷移し、RTC 割込みまたはハードウェア・リセット
信号を待機します。
– 後述するように、RTC割込みによってプロセッサはアクティ
ブ動作モードに入り、シーケンス内の STI 命令に進みます。
– 3-14 ページの「ハードウェア・リセット」で説明するように、ハードウェア・リセットによってプロセッサはリセッ
ト・シーケンスを実行します。
• 動作モード遷移がプログラムされていない場合には、次の節で説明するように、PLL はウェイクアップ信号を生成し、プロセッサはシーケンス内の STI 命令に進みます。
PLL プログラミング・シーケンスの続行
続いて、8-20 ページのリスト 8-1 に示す命令シーケンスは、STI 命令に進みます。割込みが再びイネーブルにされ、IMASK が復元され、通常のプロ
グラム・フローが再開されます。

L

8-22

スプリアス動作を防止するには、この命令シーケンスの実行中に
DMA を中断してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイナミック・パワー・マネジメント

例
以下のコード例は、さまざまな動作モード遷移を達成する方法を示します。分かりやすくするため、いくつかのセットアップ・コードは除去されており、次のように仮定しています。
• P0 は PLL コントロール・レジスタ（PLL_CTL）をポイントします。
P1 はPLL 分周レジスタをポイントします。
• PLL ウェイクアップ割込みは、ウェイクアップ信号としてイネーブ
ルにされます。
• PLL_CTL の MSEL[5:0] と DF は、それぞれ（b#011111）と（b#0）に設定され、31x という CLKIN 対 VCO 乗算器を表します。
アクティブ・モードからフル・オン・モード
リスト 8-2 に、アクティブ動作モードからフル・オン・モードに遷移するためのコードを示します。
リスト 8-2. アクティブ・モードからフル・オン・モードへの遷移/* 割込みをディスエーブルにし、IMASK を R2 にコピー */CLI R2;

R1.L = 0x3E00;
W[P0] = R1;/* BYPASS ビットをクリア *//* PLL_CTL に書き込む *//* パイプラインをフラッシュし、アイドル状態に入り、PLL のウェイクアッ

IDLE;

プを待機 */STI R2;...

/* PLL のウェイクアップ後、割込みと IMASK を復元 *//* これでプロセッサはフル・オン・モード */ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

8-23

ダイナミック・パワー・マネジメント・コントローラ

フル・オン・モードからアクティブ・モード
リスト 8-3 に、フル・オン動作モードからアクティブ・モードに遷移するためのコードを示します。
リスト 8-3. フル・オン・モードからアクティブ・モードへの遷移/* 割込みをディスエーブルにし、IMASK を R2 にコピー */CLI R2;

R1.L = 0x3F00;
W[P0] = R1;/* BYPASS ビットをセット *//* PLL_CTL に書き込む *//* パイプラインをフラッシュし、アイドル状態に入り、PLL ウェイクアップ

IDLE;
を待機 *//* PLL のウェイクアップ後、割込みと IMASK を復元 */STI R2;...

/* これでプロセッサはアクティブ・モード */フル・オン・モードで、CLKIN 対 VCO 乗算器を 31x から 2x に変更
リスト 8-4 に、フル・オン動作モードで CLKIN 対 VCO 乗算器を31x から 2xに変更するためのコードを示します。
リスト 8-4. CLKIN 対 VCO 乗算器の変更/* 割込みをディスエーブルにし、IMASK を R2 にコピー */CLI R2;

R1.L = 0x0400;
W[P0] = R1;/* VCO 乗算器を 2x に変更 *//* PLL_CTL に書き込む *//* パイプラインをフラッシュし、アイドル状態に入り、PLL のウェイクアッ

IDLE;

プを待機 */STI R2;

8-24/* PLL のウェイクアップ後、割込みと IMASK を復元 */ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイナミック・パワー・マネジメント...

/* プロセッサはフル・オン・モードになり、CLKIN 対 VCO 乗算器は 2x に設定済み */■ 電源電圧の動的制御
クロック周波数制御に加えて、プロセッサはコア・プロセッサを異なる電圧レベルで動作させる機能も提供します。消費電力は電圧の 2乗に比例するため、低い電圧を使用すれば、消費電力の大幅な低減を達成できます。
プロセッサは 3つのパワー・ドメインを使用します。これらのパワー・ド
メインを表 8-7 に示します。各パワー・ドメインには、別個のVDD 電源があります。なお、プロセッサの内部ロジックとプロセッサ I/O の多くは、ある範囲の電圧で動作させることができます。各パワー・ドメインで許容される電圧範囲と消費電力データの詳細については、『ADSP-BF531/
ADSP-BF532/ADSP-BF533 Embedded Processor Data Sheet』を参照してください。
表 8-7.

パワー・ドメイン

パワー・ドメインVDD 範囲RTC 以外のすべての内部ロジック

可変

リアルタイム・クロック I/O と内部ロジック

可変

その他すべての I/O

可変

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

8-25

ダイナミック・パワー・マネジメント・コントローラ■ 電源管理プロセッサに内蔵のスイッチング・レギュレータ・コントローラは、いく
つかの外付けハードウェアを使用して、外付けパワー・トランジスタを備えた外部 VDDEXT 電源から内部電圧レベルを生成できます（図 8-7 を参照）。システムのニーズに応じてこの電圧レベルを減らすことで、節電を図れます。

V DDE XTV DDINTᄖઃߌㇱຠV R OUT [1-0]図 8-7.

[

8-26

プロセッサの電圧レギュレータ
VDDINT 電圧を上げると、外付け FET のスイッチ・オン時間が長くな り ま す。電 源 電 圧 を 下 げ ず に 十 分 な 電 流 を 提 供 す る に は、
VDDEXT 電源に適切な容量性バイパスを設ける必要があります。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイナミック・パワー・マネジメント

X VR_CTL レジスタ

内蔵のコア電圧レギュレータ・コントローラは、VDDINT 電源の内部ロジッ
ク電圧レベルを管理します。電圧レギュレータ・コントロール・レジスタ（VR_CTL）は、レギュレータを制御します（図 8-8を参照）。VR_CTL への書
込みによって、PLL 再ロック・シーケンスが開始されます。
電圧レギュレータ・コントロール・レジスタ（VR_CTL）

0xFFC0 0008

15 14 13 12 11 10 9 8
0 0 0 0 0 0 0 0

7 6
1 1

WAKE（ウェイクアップ・イネーブル）
0 - RTC またはリセット・ウェイクアップをディスエーブル
1 - RTC またはリセット・ウェイクアップをイネーブル
VLEV[3:0]（内部電圧レベル）
エンコーディングについては表 8-8 を参照

図 8-8.

5
0

4
1

3
1

2

00

1 0
1 1

リセット＝ 0x00DB

FREQ[1:0]（電圧周波数）
電圧レギュレータ用発振器のスイッ
チング周波数を制御、エンコーディン
グについては表 8-10 を参照
GAIN[1:0]（電圧レベル・ゲイン）
電圧出力がその最終値に整定するまでの時間を制御、エンコーディングについては表 8-9 を参照

電圧レギュレータ・コントロール・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

8-27

ダイナミック・パワー・マネジメント・コントローラ

VR_CTL レジスタの以下のフィールドは、
内部ロジック電圧レベルの制御に使用されます。
• WAKE ― ウェイクアップ・イネーブル（WAKE）制御ビットを使用す
れば、RTC からの割込み時または RESET# ピンでのローになるエッジで、電圧レギュレータをパワーダウン状態（FREQ=00）からウェ
イクアップさせることができます。
• VLEV[3:0] ― 電圧レベル（VLEV）フィールドでは、公称内部電圧レベルを識別します。適切な VLEV 電圧範囲および関連する電圧許容 偏 差 に つ い て は、『ADSP-BF531/ADSP-BF532/ADSP-BF533
Embedded Processor Data Sheet』を参照してください。
• FREQ[1:0] ― 周波数（FREQ）フィールドでは、電圧レギュレータ
用発振器のスイッチング周波数を制御します。周波数設定を高くす
ると、スイッチング・コンデンサとインダクタの値を小さくできま
すが、より大きな EMI（電磁干渉）が生じる可能性があります。

L

オンボード・レギュレーションをバイパスするには、FREQ フィール
ドに b#00 の値をプログラムし、VROUT ピンをフローティングのままにしておきます。

• GAIN[1:0] ― ゲイン（GAIN）フィールドでは、スイッチング・レ
ギュレータ・ループの内部ループ・ゲインを制御します。このビッ
トでは、電圧出力がその最終値に整定するまでの時間を制御します。一般に、ゲインを高くするとセトリング・タイムは短縮されますが、プロセスでのオーバーシュートは大きくなります。

8-28

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイナミック・パワー・マネジメント

表 8-8 は、VLEV[3:0] の電圧レベル値を示します。
表 8-8.

VLEV のエンコーディング

電圧

予備

0000–0101

予備

0110

.85 ボルト

0111.90 ボルト

1000.95 ボルト1001

1.00 ボルト1010

1.05 ボルト1011

1.10 ボルト1100

1.15 ボルト1101

1.20 ボルト1110

1.25 ボルト1111

1.30 ボルト

表 8-9 は、FREQ[1:0] によって設定されるスイッチング周波数値を示します。
表 8-9.

FREQ のエンコーディング

FREQ

値

00

オンボード・レギュレーションをパワーダウン／
バイパス

01

333kHz10667kHz11

1MHz

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

8-29

ダイナミック・パワー・マネジメント・コントローラ

表 8-10 は、GAIN[1:0] によって設定されるゲイン・レベルを示します。
表 8-10.

GAIN のエンコーディング

GAIN

値

00

5

01

10

10

20

11

50

X 電圧の変化

動作電圧の軽微な変化に対しては、アプリケーション・プログラムによる特別な注意や対策なしに対応できます。電圧許容偏差と許容される変化
レートについては、『ADSP-BF531/ADSP-BF532/ADSP-BF533 Embedded
Processor Data Sheet』を参照してください。

L

大幅な節電のためにプロセッサの動作電圧を減らしたり、大幅な性能向上のために動作電圧を上げたりすると、動作電圧レベルの大きな変更が必要となります。動作電圧を変更しても予測可能な動作を保証するには、プロセッサを既知の安定した状態にしてから、動作電圧を変更してください。

電圧を変更するときには、PLL プログラミング・シーケンスに従った手順をお勧めします。VR_CTL レジスタで電圧レベルを変更した後、プロセッサがアイドル状態に入ると、PLL は自動的にアクティブ・モードに入ります。その時点で電圧レベルが変化し、PLL は新しい電圧に再ロックされます。PLL_LOCKCNT が満了した後、デバイスはフル・オン状態に戻ります。
電圧を変更するときには、PLL 周波数だけを変更する場合よりも大きな
PLL_LOCKCNT 値が必要なことがあります。詳細については『ADSP-BF531/
ADSP-BF532/ADSP-BF533 Embedded Processor Data Sheet』を参照してください。

8-30

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイナミック・パワー・マネジメント

電圧が新しいレベルに変更された後では、コア・クロック周波数（CCLK）などの動作パラメータが新しい動作電圧レベルに対して『ADSP-BF531/
ADSP-BF532/ADSP-BF533 Embedded Processor Data Sheet』で指定された範囲内である限り、プロセッサは任意の動作モードに安全に復帰することができます。
X コアのパワーダウン（休止状態）

プロセッサの内部電源レギュレータを遮断するには、VR_CTL レジスタのFREQ ビットに b#00 を書き込みます。これによって、CCLK と SCLK の両方がディスエーブルにされます。さらに、内部電源電圧（VDDINT）が 0Vに設定されるため、プロセッサからのリーク電流がなくなります。内部電源レ
ギュレータをウェイクアップさせるには、リアルタイム・クロック・ウェ
イクアップを使用するか、RESET ピンをアサートします。
VDDINT が外部から供給されるように内蔵の電源コントローラがバイパスされた場合、コアをパワー・ダウンする唯一の方法は、外部の VDDINT 電
圧源を除去することです。

[

コアがパワー・ダウンされると、VDDINT は 0V に設定されるため、プロセッサの内部状態は維持されません。したがって、内部的に格納された重要な情報（メモリ内容、レジスタ内容など）を不揮発性記憶装置に書き込んでから、電源を切断する必要があります。

VDDINT をパワー・ダウンしても、VDDEXT には影響を与えません。プロ
セッサにはまだ VDDEXT が印加されていますが、特に指定のない限り、外部ピンは 3ステート・レベルに維持されます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

8-31

ダイナミック・パワー・マネジメント・コントローラ

内部電源をパワー・ダウンするには：
1. 必要ならば、SIC_IWR レジスタでウェイクアップに対してリア
ルタイム・クロックがイネーブルにされていることを確認します。
2. VR_CTL に書き込んで、FREQ ビットを b#00 に設定し、WAKE ビット
を 1 に設定します。
3. 次のコード・シーケンスを実行します。
CLI R0 ;IDLE ;

4. アイドル状態に達すると、VDDINT は 0V に遷移します。
5. RTC やリセット割込みによってプロセッサがウェイクアップすると、PLL は再ロックされ、BMODE[1:0] のピン設定によって定義されたブート・シーケンスが有効になります。

[

8-32

プロセッサをウェイクアップさせる前に、VDDINT が 0V への遷移を完了できなかった場合には、好ましくない結果を招くことがあります。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

第9章

ダイレクト・メモリ・アクセス

このプロセッサはダイレクト・メモリ・アクセス（DMA）を使用して、メモリ空間内でデータを転送したり、メモリ空間とペリフェラルとの間でデータを転送したりします。プロセッサは、データ転送動作を指定して通常処理に復帰しますが、完全統合された DMA コントローラは、プロセッ
サ動作とは独立してデータ転送を実行します。
DMA コントローラでは、何種類かのデータ転送を実行できます。
• メモリとメモリの間（MDMA）（9-50 ページの「メモリ DMA」）• メモリとシリアル・ペリフェラル・インターフェース（SPI）の間（第 10 章「SPI 互換ポート・コントローラ」）• メモリとシリアル・ポート（SPORT）の間（第 12 章「シリアル・
ポート・コントローラ」）• メモリと UART ポートの間（第 13 章「UART ポート・コントロー
ラ」）• メモリとパラレル・ペリフェラル・インターフェース（PPI）の間（第 11 章「パラレル・ペリフェラル・インターフェース」）
システムは、メモリ DMA コントローラ（MDMA）など、DMA 対応の6つのペリフェラルを内蔵しています。以下の 12 本の DMA チャンネルによって、これらのデバイスをサポートします。
• PPI 送／受信DMA コントローラ• SPORT0 受信DMAコントローラ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-1

• SPORT0 送信DMAコントローラ• SPORT1 受信DMAコントローラ• SPORT1 送信DMAコントローラ• SPI 送／受信DMA コントローラ• UART 受信 DMAコントローラ• UART 送信 DMAコントローラ• MDMA ストリーム 1送信（デスティネーション）• MDMA ストリーム 1受信（ソース）• MDMA ストリーム 0送信（デスティネーション）• MDMA ストリーム 0受信（ソース）
この章では、DMA 動作の設定方法に加えて、すべての DMA チャンネルに共通の機能についても説明します。特定のペリフェラル機能の詳細については、該当するペリフェラルの章を参照してください。DMA 動作の性能とバス調停については、7-9 ページの「DAB、DCB、DEB の性能」を参照してください。
プロセッサでの DMA 転送は、ディスクリプタ・ベースまたはレジスタ・
ベースとすることができます。ディスクリプタ・ベースの DMA 転送では、
DMA シーケンスを開始するために一連のパラメータをメモリ内に格納する必要があります。この種の転送では、複数の DMAシーケンスを連結できます。ディスクリプタ・ベースの DMA 動作では、現在のシーケンスが完了した後で別の DMA 転送を自動的に設定して開始するようにDMA
チャンネルをプログラムできます。レジスタ・ベースの DMAでは、プロセッサは DMA 転送の開始をDMA コントロール・レジスタに直接プログ
ラムできます。完了時に必要ならば、コントロール・レジスタを元の設定
値で自動的に更新して連続転送を実現できます。

9-2

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

DMA レジスタとメモリ DMA レジスタ
便宜上、この章の説明では DMA レジスタとメモリ DMA レジスタの総称（ペリフェラル固有ではない）名を使用します。
• DMA レジスタの総称名を表 9-1 に示します。
• メモリ DMAレジスタの総称名を9-7 ページの表 9-3 に示します。
DMA レジスタは 3つのカテゴリに分類されます。
• パラメータ・レジスタ（DMAx_CONFIG、DMAx_X_COUNT など）
ディスクリプタ・エレメントから直接ロードできるのは、パラメー
タ・レジスタだけです。ディスクリプタ・エレメントについては、
9-6 ページの表 9-2「命名規則：DMA MMR とディスクリプタ・エ
レメント」を参照してください。

L

DMAx の文字 x は、DMA対応の特定のペリフェラルを表します。たとえば、デフォルトのチャンネル・マッピングを持つ DMA の場合、
DMA6_CONFIG は、UART RX ペリフェラルの DMA_CONFIG レジスタを表します。デフォルトの DMAチャンネル・マッピングについては、
9-31 ページの表 9-16 を参照してください。

• カレント・レジスタ（DMAx_CURR_ADDR、DMAx_CURR_X_COUNT など）• コントロール／ステータス・レジスタ（DMAx_IRQ_STATUS、DMAx_PERIPHERAL_MAP など）
表 9-1 には DMAレジスタの総称名を示します。この表にはレジスタごとに、MMRオフセット、レジスタの簡単な説明、レジスタ種類、リセット
値も示します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-3

DMA レジスタとメモリ DMA レジスタ9-4

表 9-1.

DMA メモリマップド・レジスタの総称名

MMR
オフセット

MMR 総称名

MMR 説明レジスタ種類0x00

NEXT_DESC_PTR

次のディスクリプタへのリンク・ポインタ

パラメータ

0x04

START_ADDR

カレント・バッファの開始アドレス

パラメータ

0x08

DMA_CONFIG

イネーブル・ビットを含む、DMA 設定レ パラメータ
ジスタ

0x0C

予備

予備

0x10

X_COUNT

内側ループ・カウント

0x14

X_MODIFY

内側ループのアドレス・インクリメント、 パラメータ
バイト単位

0x18

Y_COUNT

外側ループ・カウント（2D のみ）

0x1C

Y_MODIFY

外側ループのアドレス・インクリメント、 パラメータ
バイト単位

0x20

CURR_DESC_PTR

現在のディスクリプタ・ポインタ

カレント

0x24

CURR_ADDR

現在の DMA アドレス

カレント

0x28

IRQ_STATUS

割込みステータス・レジスタ：完了ステー コントロール
タス、DMA エラー割込みステータス、チャ ／ステータス
ンネル状態（実行／フェッチ／休止）が含
まれます

0x2C

PERIPHERAL_MAP

ペリフェラルと DMA チャンネルのマッピ コントロール
ング：この DMA チャンネルに関連付ける ／ステータス
ペリフェラルを指定する 4 ビット値が含まれています（MDMA チャンネルでは読出
し専用）

0x30

CURR_X_COUNT

現在のカウント（1D）または行内 X カウ カレント
ント（2D）、X_COUNT からカウント・ダ
ウン

0x34

予備

予備

0x38

CURR_Y_COUNT

現在の行カウント（2D のみ）、Y_COUNT
からカウント・ダウン

0x3C

予備

予備

パラメータ

パラメータ

カレント

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

すべての DMA レジスタは、16ビット・エンティティとしてアクセスできます。しかし、以下のレジスタは、32ビット・レジスタとしてもアクセスできます。
• NEXT_DESC_PTR•START_ADDR•

CURR_DESC_PTR•

CURR_ADDR

L

これら 4本のレジスタが 16ビット・エンティティとしてアクセスされる場合、下位 16 ビットにだけアクセスできます。

■ DMA MMR の命名規則
ディスクリプタ・エレメント名と DMAレジスタ総称名との間には混乱が生じる可能性があるため、この章では、表 9-2 に示す命名規則を使用します。
• 左の列には、DMAエンジンの一般的な動作の説明に使用するMMRの総称名を示します。

L

なお、左の列の総称名は、実際にはプロセッサ内のリソースにマッピングされません。

• 中央の列には特定の MMR名を示します。プロセッサ・リソースには特定の MMR 名だけがマッピングされます。
DMAx の文字 x は、DMAチャンネルの番号を表します。たとえば、
DMA3_IRQ_STATUS は、
DMAチャンネル#3の IRQ_STATUS MMRです。
チャンネル番号は、デフォルトで割り当てたり、プログラムしたりできます。DMAチャンネル番号とデフォルトのペリフェラル・マッ
ピングについては、9-31 ページの表 9-16 を参照してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-5

DMA レジスタとメモリ DMA レジスタ

• 最後の列には、メモリ内の各ディスクリプタ・エレメントに割り当てられるマクロを示します。
最後の列のマクロ名は、DMA エンジンの動作方法を明確にするためにのみ役立ちます。
表 9-2.

9-6

命名規則：DMA MMR とディスクリプタ・エレメント

MMR 総称名

特定の MMR 名（x ＝ DMA チャンネル番号）

メモリ内の対応するディスク
リプタ・エレメントの名前

DMA_CONFIG

DMAx_CONFIGDMACFG

NEXT_DESC_PTR

DMAx_NEXT_DESC_PTR

NDPH（上位 16 ビット）、
NDPL（下位 16 ビット）

START_ADDR

DMAx_START_ADDR

SAH（上位 16 ビット）、
SAL（下位 16 ビット）

X_COUNTDMAx_X_COUNTXCNTY_COUNTDMAx_Y_COUNTYCNTX_MODIFY

DMAx_X_MODIFY

XMOD

Y_MODIFY

DMAx_Y_MODIFYYMOD

CURR_DESC_PTR

DMAx_CURR_DESC_PTR

N/A

CURR_ADDRDMAx_CURR_ADDR

N/A

CURR_X_COUNTDMAx_CURR_X_COUNT

N/A

CURR_Y_COUNTDMAx_CURR_Y_COUNT

N/A

IRQ_STATUS

DMAx_IRQ_STATUS

N/APERIPHERAL_MAP

DMAx_PERIPHERAL_MAP

N/A

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス■ メモリ DMA レジスタの命名規則
メモリ DMA レジスタの名前は、他のDMA レジスタの名前とは少し異なります。メモリ DMA ストリームは別のチャンネルに再割当てできないのに対して、DMA に関連付けられたペリフェラルは、0 ～ 7 の任意のDMAチャンネルにマッピングできます。
表 9-3 は、メモリDMA レジスタの命名規則を示します。各名前では、文字 yy は 4つの値を持つことがあります。
• S0：メモリDMA ソース・ストリーム 0• D0：メモリDMA デスティネーション・ストリーム 0• S1：メモリDMA ソース・ストリーム 1• D1：メモリDMA デスティネーション・ストリーム 1
表 9-3.

メモリ DMA レジスタの命名規則

MMR 総称名

メモリ DMA MMR 名（yy ＝ S0、S1、D0、または D1)

メモリ内の対応するディスク
リプタ・エレメントの名前

DMA_CONFIG

MDMA_yy_CONFIGDMACFG

NEXT_DESC_PTR

MDMA_yy_NEXT_DESC_PTR

NDPH（上位 16 ビット）、
NDPL（下位 16 ビット）

START_ADDR

MDMA_yy_START_ADDR

SAH（上位 16 ビット）、
SAL（下位 16 ビット）

X_COUNT

MDMA_yy_X_COUNTXCNTY_COUNT

MDMA_yy_Y_COUNTYCNTX_MODIFY

MDMA_yy_X_MODIFY

XMOD

Y_MODIFY

MDMA_yy_Y_MODIFYYMOD

CURR_DESC_PTR

MDMA_yy_CURR_DESC_PTR

N/A

CURR_ADDRMDMA_yy_CURR_ADDR

N/A

CURR_X_COUNTMDMA_yy_CURR_X_COUNTN/AADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-7

DMA レジスタとメモリ DMA レジスタ

表 9-3.

メモリ DMA レジスタの命名規則（続き）

MMR 総称名

メモリ DMA MMR 名（yy ＝ S0、S1、D0、または D1)

メモリ内の対応するディスク
リプタ・エレメントの名前

CURR_Y_COUNTMDMA_yy_CURR_Y_COUNT

N/A

IRQ_STATUS

MDMA_yy_IRQ_STATUS

N/APERIPHERAL_MAP

MDMA_yy_PERIPHERAL_MAP

N/A■ DMAx_NEXT_DESC_PTR/MDMA_yy_NEXT_DESC_PTR レジスタ
ネ ク ス ト・デ ィ ス ク リ プ タ・ポ イ ン タ・レ ジ ス タ（DMAx_NEXT_DESC_
PTR/MDMA_yy_NEXT_DESC_PTR）では、現在のディスクリプタ・ブロックによって指定された DMA動作が完了したときに、次のディスクリプタ・ブ
ロックの先頭を探す場所を指定します。このレジスタは、スモールとラージのディスクリプタ・リスト・モードで使用されます。これらのモードでは、ディスクリプタ・フェッチの最初に 32 ビットの NEXT_DESC_PTR レジス
タが CURR_DESC_PTR レジスタにコピーされます。続いて、CURR_DESC_PTR
レジスタは、ディスクリプタ・フェッチ時にディスクリプタの各エレメン
トが読出されるたびにインクリメントされます。

L

スモールとラージのディスクリプタ・リスト・モードでは、DMA
動作を開始する前に NEXT_DESC_PTR レジスタ（CURR_DESC_PTR レジ
スタではありません）を MMRアクセスによって直接プログラムする必要があります。

ディスクリプタ・アレイ・モードでは、ネクスト・ディスクリプタ・ポイ
ンタ・レジスタは無視され、フェッチ動作は CURR_DESC_PTR レジスタによってのみ制御されます。

9-8

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

ネクスト・ディスクリプタ・ポインタ・レジスタ（DMAx_NEXT_DESC_PTR/MDMA_yy_NEXT_DESC_PTR）
チャンネルをイネーブルにする前は R/W、チャンネルをイネーブルにした後は RO
メモリマップ31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
ド・ア ド レ ス については、表 9-4 X X X X X X X X X X X X X X X Xを参照。

15 14 13 12 11 10 9
X X X X X X X

8
X

7 6
X X

5
X

4
X

3
X

2
X

1 0
X X

リセット＝未定義

ネクスト・ディスクリプ
タ・ポインタ [31:16]

ネクスト・ディスクリプ
タ・ポインタ [15:0]

図 9-1.

ネクスト・ディスクリプタ・ポインタ・レジスタ

表 9-4.

ネクスト・ディスクリプタ・ポインタ・レジスタのメモリマップド・アドレス

レジスタ名

メモリマップド・アドレス

DMA0_NEXT_DESC_PTR

0xFFC0 0C00

DMA1_NEXT_DESC_PTR

0xFFC0 0C40

DMA2_NEXT_DESC_PTR

0xFFC0 0C80

DMA3_NEXT_DESC_PTR

0xFFC0 0CC0

DMA4_NEXT_DESC_PTR

0xFFC0 0D00

DMA5_NEXT_DESC_PTR

0xFFC0 0D40

DMA6_NEXT_DESC_PTR

0xFFC0 0D80

DMA7_NEXT_DESC_PTR

0xFFC0 0DC0

MDMA_D0_NEXT_DESC_PTR

0xFFC0 0E00

MDMA_S0_NEXT_DESC_PTR

0xFFC0 0E40

MDMA_D1_NEXT_DESC_PTR

0xFFC0 0E80

MDMA_S1_NEXT_DESC_PTR

0xFFC0 0EC0ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-9

DMA レジスタとメモリ DMA レジスタ

■ DMAx_START_ADDR/MDMA_yy_START_ADDR レジスタ
図 9-2に示すスタート・アドレス・レジスタ（DMAx_START_ADDR/MDMA_yy_
START_ADDR）には、現在 DMAのターゲットになっているデータ・バッファの開始アドレスが含まれています。
スタート・アドレス・レジスタ（DMAx_START_ADDR/MDMA_yy_START_ADDR）
チャンネルをイネーブルにする前は R/W、チャンネルをイネーブルにした後は RO

メモリマップド・
アドレスについては、表 9-5 を参照

31 30 29 28 27 26
X X X X X X

25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X

リセット＝未定義

DMA 開始アドレス [31:16]
15 14 13 12 11 10 9
X X X X X X X

8
X

7 6
X X

5
X

4
X

3
X

2
X

1 0
X X

DMA 開始アドレス[15:0]

図 9-2.

9-10

スタート・アドレス・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

表 9-5.

スタート・アドレス・レジスタのメモリマップド・アドレス

レジスタ名

メモリマップド・アドレス

DMA0_START_ADDR

0xFFC0 0C04

DMA1_START_ADDR

0xFFC0 0C44

DMA2_START_ADDR

0xFFC0 0C84

DMA3_START_ADDR

0xFFC0 0CC4

DMA4_START_ADDR

0xFFC0 0D04

DMA5_START_ADDR

0xFFC0 0D44

DMA6_START_ADDR

0xFFC0 0D84

DMA7_START_ADDR

0xFFC0 0DC4

MDMA_D0_START_ADDR

0xFFC0 0E04

MDMA_S0_START_ADDR

0xFFC0 0E44

MDMA_D1_START_ADDR

0xFFC0 0E84

MDMA_S1_START_ADDR

0xFFC0 0EC4

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-11

DMA レジスタとメモリ DMA レジスタ

■ DMAx_CONFIG/MDMA_yy_CONFIG レジスタ
図 9-3 に示 す DMA 設 定レ ジ スタ（DMAx_CONFIG/MDMA_yy_CONFIG)）は、
DMA のパラメータと動作モードの設定に使用されます。なお、DMAの実
行中に DMA_CONFIG レジスタに書込みを行うと、DMA_EN ビットを 0に設定して書き込んだ場合を除いて、DMAエラーが発生します。
設定レジスタ（DMAx_CONFIG/MDMA_yy_CONFIG）
チャンネルをイネーブルにする前は R/W、チャンネルをイネーブルにした後は RO
メモリマップ15 14 13 12 11 10 9
ド・アドレスにつ い て は、表 0 0 0 0 0 0 0
9-6を参照。

8
0

7
0

6
0

FLOW[2:0]（次の動作）
0x0 - 停止
0x1 - 自動バッファ・モード
0x4 - ディスクリプタ・アレイ
0x6 - ディスクリプタ・リスト（スモール・モデル）
0x7 - ディスクリプタ・リスト（ラージ・モデル）
NDSIZE[3:0]（フレックス・ディスクリプタ・サイズ）
次のディスクリプタのサイズ
0000 -停止モードまたは自動バッファ・モードの場合に必要
0001 ～ 1001 - ディスクリプタ・サイズ
1010 ～ 1111 - 予備
DI_EN（データ割込みイネーブル）
0 - 作業単位の完了で割込みを生成しない
1 - 作業単位の完了でデータ割込みを生成できる
DI_SEL（データ割込みタイミングの選択）
DMA2D ＝ 1 の場合にのみ適用
0 - バッファ全体（外側ループ）の完了後に割り込む
1 - 各行（内側ループ）の完了後に割り込む

図 9-3.

9-12

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

DMA_EN（DMAチャンネル・イネーブル）
0 - DMA チャンネルをディスエーブル
1 - DMA チャンネルを
イネーブル
WNR（DMA方向）
0 - DMA はメモリ読出し（ソース）動作
1 - DMA はメモリ書込み（デスティネーション）動作
WDSIZE[1:0]（転送ワード・サイズ）
00 - 8 ビット転送
01 - 16 ビット転送
10 - 32 ビット転送
11 - 予備
DMA2D（DMA モード）
0 - リニア（1 次元）
1 - 2 次元（2D）RESTART（DMA バッファのクリア）
0 - 作業単位間で DMA FIFO
データを保持1 - 作業単位の開始前に
DMA FIFO を廃棄

設定レジスタADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

表 9-6.

設定レジスタのメモリマップド・アドレス

レジスタ名

メモリマップド・アドレス

DMA0_CONFIG

0xFFC0 0C08

DMA1_CONFIG

0xFFC0 0C48

DMA2_CONFIG

0xFFC0 0C88

DMA3_CONFIG

0xFFC0 0CC8

DMA4_CONFIG

0xFFC0 0D08

DMA5_CONFIG

0xFFC0 0D48

DMA6_CONFIG

0xFFC0 0D88

DMA7_CONFIG

0xFFC0 0DC8

MDMA_D0_CONFIG

0xFFC0 0E08

MDMA_S0_CONFIG

0xFFC0 0E48

MDMA_D1_CONFIG

0xFFC0 0E88

MDMA_S1_CONFIG

0xFFC0 0EC8

DMAx_CONFIG レジスタのフィールドは、
DMA のパラメータと動作モードの設定に使用されます。
• FLOW[2:0]（次の動作）。このフィールドでは、現在の DMA 転送に続く、次の DMA 転送のタイプを指定します。フローのオプション
は次のとおりです。
• 0x0 ― 停止。現在の作業単位が完了すると、割込み通知の後で（選択された場合）DMAチャンネルは自動的に停止します。DMAx_IRQ_STATUS レジスタの DMA_RUN ステータス・ビットは 1 から0 に変化しますが、DMAx_CONFIG レジスタの DMA_EN ビットは変化しません。この状態では、チャンネルは休止します。ペリフェラル割込みは依然として DMAユニットによって除外されます。チャンネルを再開す
るには、DMAx_CONFIG レジスタへの書込みによって、DMA_EN ビット
を 1に設定して次の作業単位を指定します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-13

DMA レジスタとメモリ DMA レジスタ0x1 ― 自動バッファ・モード。このモードでは、メモリ内のディスクリプタは使用されません。その代わりに、ユーザがプログラム
した DMAx MMR 設定に基づいて、DMAが連続循環バッファ方式
で実行されます。作業単位が完了すると、パラメータ・レジスタがカレント・レジスタに再ロードされ、DMAがゼロ・オーバーヘッ
ドですぐに再開されます。自動バッファ・モードを停止するには、
DMAx_CONFIG レジスタの DMA_EN ビットに 0を書き込みます。
0x4 ― ディスクリプタ・アレイ・モード。このモードでは、NDPH
エレメントや NDPL エレメントを含まないメモリからディスクリプ
タをフェッチします。このディスクリプタはネクスト・ディスクリ
プタ・ポインタ・エントリを含まないため、DMAエンジンのデフォ
ルトでは、CURR_DESC_PTR レジスタを使用してディスクリプタを1
ステップずつ実行します。したがって、一群のディスクリプタがアレイのようにメモリ内で互いに続きます。
0x6 ― ディスクリプタ・リスト（スモール・モデル）モード。このモードでは、NDPL を含み NDPH を含まないメモリからディスクリ
プタをフェッチします。したがって、ネクスト・ディスクリプタ・
ポインタ・フィールドの上位 16ビットは、NEXT_DESC_PTR レジスタの上位 16 ビットから取り出されるため、すべてのディスクリプタ
はメモリ内の特定の 64Kページに制限されます。
0x7 ― ディスクリプタ・リスト（ラージ・モデル）モード。このモードでは、NDPH とNDPL を含むメモリからディスクリプタをフェッチします。したがって、メモリ内でのディスクリプタ配置に最大の柔軟性が与えられます。
• NDSIZE[3:0]（フレックス・ディスクリプタ・サイズ）。このフィールドでは、ロードすべきメモリ内のディスクリプタ・エレメントの数を指定します。停止モードや自動バッファ・モードの場合には、

9-14

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

このフィールドは 0 である必要があります。NDSIZE と FLOW で YMODを逸脱するディスクリプタを指定した場合には、DMA エラーが発生します。
• DI_EN（データ割込みイネーブル）。このビットでは、作業単位の完了でデータ割込みの生成を可能にするかどうかを指定します。
• DI_SEL（データ割込みタイミングの選択）。このビットでは、バッファ全体を完了した後、または内側ループの各行を完了した後でのデータ割込みのタイミングを指定します。このビットは、2D DMA
動作でのみ使用されます。
• RESTART（DMAバッファのクリア）。このビットでは、次の作業単位を開始する前に、チャンネルのデータ FIFO に保持された受信データを保持する（RESTART = 0）か、廃棄する（RESTART = 1）かを指定します。受信データが自動的に廃棄されるのは、DMA_EN ビットが 0 から 1 に変化するときであり、通常はチャンネルが最初にイネーブルにされたときです。作業単位が連続データストリームを構成する場合には、一般に受信された FIFO データは作業単位間で保持されるはずです。しかし、新しい作業単位が新しいデータスト
リームを開始する場合には、以前に受信したデータをクリアするた
め、RESTART ビットを 1に設定してください。

L
L

RESTART ビットは、
メモリ書込みDMAチャンネルにのみ適用されます。このビットは、メモリ読出し DMA チャンネルとMDMA チャ
ンネルの場合には留保され、0であることが必要です。

メモリ書込み DMAチャンネルでは、RESTART ビットは DMAx_CONFIG
レジスタへの書込みによって開始された最初の作業単位にのみ影響を与えます。RESTART ビットは、DMA ディスクリプタの DMACFG
エレメントで設定されている場合には効果がありません。

。このビットでは、DMA モードが X_COUNT と• DMA2D（DMA モード）
X_MODIFY だけを伴う（1次元 DMA）のか、Y_COUNT と Y_MODIFY も伴う（2次元 DMA）のかを指定します。
ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-15

DMA レジスタとメモリ DMA レジスタ

• WDSIZE[1:0]（転送ワード・サイズ）。DMA エンジンでは、8/16/32
ビット項目の転送が可能です。各要求／許諾によって 1 つのメモ
リ・アクセスが生じます（ただし、16 ビットのメモリ・ポートや
16 ビットのDMA アクセス・バスを通じて32 ビット・データを転送するには、2つのサイクルが必要です）。DMAアドレス・ポイン
タ・レジスタのインクリメント・サイズ（ストライド）は、転送ユ
ニット・サイズの倍数（8 ビットでは 1、16 ビットでは 2、32 ビッ
トでは 4）である必要があります。
• WNR（DMA 方向）。このビットでは、DMA 方向を指定します。つまり、メモリ読出し（0）またはメモリ書込み（1）です。
• DMA_EN（DMAチャンネル・イネーブル）。このビットでは、特定のDMA チャンネルをイネーブルにするかどうかを指定します。

L

9-16

ペリフェラル DMAチャンネルがイネーブルにされると、ペリフェラルからの割込みは DMA 要求を示します。チャンネルがディスエーブルにされると、DMA ユニットではペリフェラル割込みを無視し、それを割込みコントローラに直接渡します。予想外の結果を回避するには、DMA チャンネルをイネーブルにしてからペリフェ
ラルをイネーブルにし、ペリフェラルをディスエーブルにしてからDMA チャンネルをディスエーブルにしてください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス■ DMAx_X_COUNT/MDMA_yy_X_COUNT レジスタ
2D DMA の場合、図 9-4 に示す内側ループ・カウント・レジスタ（DMAx_
X_COUNT/MDMA_yy_X_COUNT）には内側ループ・カウントが含まれています。
1D DMA の場合には、読み出すエレメントの数を指定します。詳細については、9-47 ページの「2 次元 DMA」を参照してください。X_COUNT での値
0 は、65,536 個のエレメントに対応します。
内側ループ・カウント・レジスタ（DMAx_X_COUNT/MDMA_yy_X_COUNT）
チャンネルをイネーブルにする前は R/W、チャンネルをイネーブルにした後は RO
メモリマップド・
アドレスについて 15 14 13 12 11 10 9は、表 9-7を参照。 X X X X X X X

8
X

7 6
X X

5
X

4
X

3
X

2
X

1 0
X X

リセット＝未定義

X_COUNT[15:0]（内側ループ・カウント）
読み出すエレメントの数（1D）、内側ループ内の行の数（2D）

図 9-4.

内側ループ・カウント・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-17

DMA レジスタとメモリ DMA レジスタ

表 9-7.

内側ループ・カウント・レジスタのメモリマップド・アドレス

レジスタ名

メモリマップド・アドレス

DMA0_X_COUNT

0xFFC0 0C10

DMA1_X_COUNT

0xFFC0 0C50

DMA2_X_COUNT

0xFFC0 0C90

DMA3_X_COUNT

0xFFC0 0CD0

DMA4_X_COUNT

0xFFC0 0D10

DMA5_X_COUNT

0xFFC0 0D50

DMA6_X_COUNT

0xFFC0 0D90

DMA7_X_COUNT

0xFFC0 0DD0

MDMA_D0_X_COUNT

0xFFC0 0E10

MDMA_S0_X_COUNT

0xFFC0 0E50

MDMA_D1_X_COUNT

0xFFC0 0E90

MDMA_S1_X_COUNT

0xFFC0 0ED0

■ DMAx_X_MODIFY/MDMA_yy_X_MODIFY レジスタ
内側ループ・アドレス・インクリメント・レジスタ（DMAx_X_MODIFY/MDMA_
yy_X_MODIFY）には、符号付き、2の補数のバイト・アドレス・インクリメ
ントを含んでいます。1D DMAでは、このインクリメントは、各エレメン
トの転送後に適用されるストライドです。

L

なお、X_MODIFY は、DMA転送サイズとは無関係にバイト単位で指定されます。

2D DMA では、このインクリメントは、各内側ループでの最終エレメント
まで（最終エレメント自身を含まず）内側ループ内の各エレメントを転送した後で適用されます。各内側ループの最終エレメントの後では、代わりに Y_MODIFY レジスタが適用されます（ただし、各作業単位の最後の転送を除きます）。作業単位の最後の転送では、常に X_MODIFY レジスタが適用
されます。

9-18

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

X_MODIFY フィールドは0 に設定できます。この場合、DMA は同じアドレスとの間で繰返し実行されます。これが役立つのは、たとえば、データ・レジスタと外部メモリマップド・ペリフェラルとの間でデータを転送する場合です。
内側ループ・アドレス・インクリメント・レジスタ（DMAx_X_MODIFY/MDMA_yy_X_MODIFY）
チャンネルをイネーブルにする前は R/W、チャンネルをイネーブルにした後は RO
メモリマップド・
ア ド レ ス に つ い 15 14 13 12 11 10 9て は、表 9-8 を 参 X X X X X X X
照。

8
X

7 6
X X

5
X

4
X

3
X

2
X

1 0
X X

リセット＝未定義
X_MODIFY[15:0]（内側ループ・アドレス・
インクリメント）
CURR_X_COUNT のデクリ
メントのたびに取るストライド（バイト単位）

図 9-5.

内側ループ・アドレス・インクリメント・レジスタ

表 9-8.

内側ループ・アドレス・インクリメント・レジスタのメモリマップド・アドレス

レジスタ名

メモリマップド・アドレス

DMA0_X_MODIFY

0xFFC0 0C14

DMA1_X_MODIFY

0xFFC0 0C54

DMA2_X_MODIFY

0xFFC0 0C94

DMA3_X_MODIFY

0xFFC0 0CD4

DMA4_X_MODIFY

0xFFC0 0D14

DMA5_X_MODIFY

0xFFC0 0D54

DMA6_X_MODIFY

0xFFC0 0D94

DMA7_X_MODIFY

0xFFC0 0DD4

MDMA_D0_X_MODIFY

0xFFC0 0E14

MDMA_S0_X_MODIFY

0xFFC0 0E54

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-19

DMA レジスタとメモリ DMA レジスタ

表 9-8.

内側ループ・アドレス・インクリメント・レジスタのメモリマップド・アドレス（続き）

レジスタ名

メモリマップド・アドレス

MDMA_D1_X_MODIFY

0xFFC0 0E94

MDMA_S1_X_MODIFY

0xFFC0 0ED4

■ DMAx_Y_COUNT/MDMA_yy_Y_COUNT レジスタ
2D DMA の場合、外側ループ・カウント・レジスタ（DMAx_Y_COUNT/MDMA_
yy_Y_COUNT）には外側ループ・カウントが含まれています。これは 1D
DMA モードでは使用されません。このレジスタには、2D DMAシーケン
スの外側ループ内の行数が含まれています。詳細については 9-47 ページの「2 次元 DMA」を参照してください。
外側ループ・カウント・レジスタ（DMAx_Y_COUNT/MDMA_yy_Y_COUNT）
チャンネルをイネーブルにする前は R/W、チャンネルをイネーブルにした後は RO
メモリマップド・
アドレスについて 15 14 13 12 11 10 9は、表 9-9 を参照。 X X X X X X X

8
X

7 6
X X

5
X

4
X

3
X

2
X

1 0
X X

リセット＝未定義

Y_COUNT[15:0]（外側ループ・カウント）
2D DMA シーケンスの外側
ループ内の行数

図 9-6.

外側ループ・カウント・レジスタ

表 9-9.

外側ループ・カウント・レジスタのメモリマップド・アドレス

9-20

レジスタ名

メモリマップド・アドレス

DMA0_Y_COUNT

0xFFC0 0C18

DMA1_Y_COUNT

0xFFC0 0C58

DMA2_Y_COUNT

0xFFC0 0C98

DMA3_Y_COUNT

0xFFC0 0CD8

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

表 9-9.

外側ループ・カウント・レジスタのメモリマップド・アドレス

レジスタ名

メモリマップド・アドレス

DMA4_Y_COUNT

0xFFC0 0D18

DMA5_Y_COUNT

0xFFC0 0D58

DMA6_Y_COUNT

0xFFC0 0D98

DMA7_Y_COUNT

0xFFC0 0DD8

MDMA_D0_Y_COUNT

0xFFC0 0E18

MDMA_S0_Y_COUNT

0xFFC0 0E58

MDMA_D1_Y_COUNT

0xFFC0 0E98

MDMA_S1_Y_COUNT

0xFFC0 0ED8

■ DMAx_Y_MODIFY/MDMA_yy_Y_MODIFY レジスタ
外側ループ・アドレス・インクリメント・レジスタ（DMAx_Y_MODIFY/MDMA_
yy_Y_MODIFY）には、符号付き、2 の補数値が含まれています。このバイト・アドレス・インクリメントは、CURR_Y_COUNT レジスタのデクリメントのたびに適用されます（ただし、CURR_Y_COUNT も満了する2D アレイ内の最終項目を除きます）。この値は、1 つの「行」の最終ワードと次の「行」の先頭ワードとのオフセットです。詳細については、9-47 ページの「2 次元 DMA」を参照してください。

L

なお、Y_MODIFY は、DMA転送サイズとは無関係にバイト単位で指定されます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-21

DMA レジスタとメモリ DMA レジスタ

外側ループ・アドレス・インクリメント・レジスタ（DMAx_Y_MODIFY/MDMA_yy_Y_MODIFY）
チャンネルをイネーブルにする前は R/W、チャンネルをイネーブルにした後は RO
メモリマップド・
15 14 13 12 11 10
アドレスについては、表 9-10 を参 X X X X X X
照。

9
X

8
X

7 6
X X

5
X

4
X

3
X

2
X

1 0
X X

リセット＝未定義

Y_MODIFY[15:0]（外側ループ・アドレス・
インクリメント）
CURR_Y_COUNT の デ ク
リメントのたびに取るストライド

図 9-7.

外側ループ・アドレス・インクリメント・レジスタ

表 9-10.

外側ループ・アドレス・インクリメント・レジスタのメモリマップド・アドレス

9-22

レジスタ名

メモリマップド・アドレス

DMA0_Y_MODIFY

0xFFC0 0C1C

DMA1_Y_MODIFY

0xFFC0 0C5C

DMA2_Y_MODIFY

0xFFC0 0C9C

DMA3_Y_MODIFY

0xFFC0 0CDC

DMA4_Y_MODIFY

0xFFC0 0D1C

DMA5_Y_MODIFY

0xFFC0 0D5C

DMA6_Y_MODIFY

0xFFC0 0D9C

DMA7_Y_MODIFY

0xFFC0 0DDC

MDMA_D0_Y_MODIFY

0xFFC0 0E1C

MDMA_S0_Y_MODIFY

0xFFC0 0E5C

MDMA_D1_Y_MODIFY

0xFFC0 0E9C

MDMA_S1_Y_MODIFY

0xFFC0 0EDC

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス■ DMAx_CURR_DESC_PTR/MDMA_yy_CURR_DESC_PTR レジスタ
カ レ ン ト・デ ィ ス ク リ プ タ・ポ イ ン タ・レ ジ ス タ（DMAx_CURR_DESC_
PTR/MDMA_yy_CURR_DESC_PTR）には、次にロードするディスクリプタ・エ
レメントのメモリ・アドレスが含まれています。ディスクリプタ（FLOW ＝4、6、または 7）を伴う FLOW モード設定の場合、このレジスタはDMA 作
業ブロックが開始される前に、ディスクリプタ・エレメントを適切な MMRに 読 み 出 す た め に 使 用 さ れ ま す。デ ィ ス ク リ プ タ・リ ス ト・モ ー ド（FLOW = 6 または 7）の場合、各ディスクリプタのロードの前に、このレジスタは NEXT_DESC_PTR レジスタから初期化されます。その後、各ディス
クリプタ・エレメントが読み出されるたびに、CURR_DESC_PTR レジスタ内のアドレスがインクリメントされます。
ディスクリプタ全体が読み出されると、CURR_DESC_PTR レジスタには次の値が含まれます。
Descriptor Start Address + Descriptor Size (# of elements)（ディスクリプタ開始アドレス + ディスクリプタ・サイズ（エレメントの数））

L

ディスクリプタ・アレイ・モード（FLOW = 4）の場合、DMA 動作を開始する前に、MMR アクセスによってこのレジスタ（NEXT_DESC_PTR レジスタではありません）をプログラムする必要があります。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-23

DMA レジスタとメモリ DMA レジスタ

カレント・ディスクリプタ・ポインタ・レジスタ（DMAx_CURR_DESC_PTR/MDMA_yy_CURR_DESC_PTR）
チャンネルをイネーブルにする前は R/W、チャンネルをイネーブルにした後は RO
メ モ リ マ ッ プ ド・ 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
アドレスについて X X X X X X X X X X X X X X X X
は、表 9-11 を参照。

15 14 13 12 11 10 9
X X X X X X X

8
X

7 6
X X

5
X

4
X

3
X

2
X

1 0
X X

リセット＝未定義

カレント・ディスクリ
プタ・ポインタ [31:16]
次のディスクリプタ・
エレメントのメモリ・アドレスの上位 16 ビット

カレント・ディスクリ
プタ・ポインタ [15:0]
次のディスクリプタ・エ
レメントのメモリ・アド
レスの下位 16 ビット

図 9-8.

カレント・ディスクリプタ・ポインタ・レジスタ

表 9-11.

カレント・ディスクリプタ・ポインタ・レジスタのメモリマップド・アドレス

9-24

レジスタ名

メモリマップド・アドレス

DMA0_CURR_DESC_PTR

0xFFC0 0C20

DMA1_CURR_DESC_PTR

0xFFC0 0C60

DMA2_CURR_DESC_PTR

0xFFC0 0CA0

DMA3_CURR_DESC_PTR

0xFFC0 0CE0

DMA4_CURR_DESC_PTR

0xFFC0 0D20

DMA5_CURR_DESC_PTR

0xFFC0 0D60

DMA6_CURR_DESC_PTR

0xFFC0 0DA0DMA7_CURR_DESC_PTR

0xFFC0 0DE0

MDMA_D0_CURR_DESC_PTR

0xFFC0 0E20

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

表 9-11.

カレント・ディスクリプタ・ポインタ・レジスタのメモリマップド・アドレス（続き）

レジスタ名

メモリマップド・アドレス

MDMA_S0_CURR_DESC_PTR

0xFFC0 0E60

MDMA_D1_CURR_DESC_PTR

0xFFC0 0EA0

MDMA_S1_CURR_DESC_PTR

0xFFC0 0EE0

■ DMAx_CURR_ADDR/MDMA_yy_CURR_ADDR レジスタ
図 9-9 に示すカレント・アドレス・レジスタ（DMAx_CURR_ADDR/MDMA_yy_
CURR_ADDR）には、特定 DMAセッションの現在のDMA転送アドレスが含
まれています。DMA セッションの最初に、CURR_ADDR レジスタは START_ADDR レジスタからロードされ、転送が行われるたびにインクリメントされます。カレント・アドレス・レジスタには 32個のビットが含まれています。
カレント・アドレス・レジスタ（DMAx_CURR_ADDR/MDMA_yy_CURR_ADDR）
チャンネルをイネーブルにする前は R/W、チャンネルをイネーブルにした後は RO
メモリマップド・
31 30 29 28 27 26
アドレスについては、表 9-12を参照。 X X X X X X

25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X

15 14 13 12 11 10 9
X X X X X X X

8
X

7 6
X X

5
X

4
X

3
X

2
X

1 0
X X

リセット＝未定義

カレント・アドレス [31:16]
特定 DMA セッションの現在の DMA 転送アドレスの上位 16 ビットカレント・アドレス [15:0]
特定 DMA セッションの現在の DMA 転送アドレスの下位 16 ビット

図 9-9.

カレント・アドレス・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-25

DMA レジスタとメモリ DMA レジスタ

表 9-12.

カレント・アドレス・レジスタのメモリマップド・アドレス

レジスタ名

メモリマップド・アドレス

DMA0_CURR_ADDR

0xFFC0 0C24

DMA1_CURR_ADDR

0xFFC0 0C64

DMA2_CURR_ADDR

0xFFC0 0CA4

DMA3_CURR_ADDR

0xFFC0 0CE4

DMA4_CURR_ADDR

0xFFC0 0D24

DMA5_CURR_ADDR

0xFFC0 0D64

DMA6_CURR_ADDR

0xFFC0 0DA4

DMA7_CURR_ADDR

0xFFC0 0DE4

MDMA_D0_CURR_ADDR

0xFFC0 0E24

MDMA_S0_CURR_ADDR

0xFFC0 0E64

MDMA_D1_CURR_ADDR

0xFFC0 0EA4

MDMA_S1_CURR_ADDR

0xFFC0 0EE4

■ DMAx_CURR_X_COUNT/MDMA_yy_CURR_X_COUNTレジスタ
カレント内側ループ・カウント・レジスタ（DMAx_CURR_X_COUNT/MDMA_yy_
CURR_X_COUNT）は、各 DMA セッションの最初に X_COUNT レジスタによってロードされ（1D DMAの場合）、各行のDMA の最後にも X_COUNT レ
ジスタによってロードされます（2D DMAの場合）。それ以外の場合には、エレメントが転送されるたびにデクリメントされます。このレジスタでのカウントの満了は、DMA の完了を示します。2D DMAでは、CURR_X_COUNT
レジスタ値が 0になるのは転送全体が完了したときだけです。行間では X_
COUNT レジスタの値と等しくなります。

9-26

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

カレント内側ループ・カウント・レジスタ（DMAx_CURR_X_COUNT/MDMA_yy_CURR_X_COUNT）
チャンネルをイネーブルにする前は R/W、チャンネルをイネーブルにした後は RO
メモリマップド・
アドレスについて は、表 9-13 を参照。

15 14 13 12 11 10 9
X X X X X X X

8
X

7 6
X X

5
X

4
X

3
X

2
X

1 0
X X

リセット＝未定義

CURR_X_COUNT[15:0]（カレント内側ループ・カウント）
各 DMA セッションの最初に（1D DMA）、または各行の最初に（2D DMA）X_COUNT によってロードされます

図 9-10. カレント内側ループ・カウント・レジスタ
表 9-13.

カレント内側ループ・カウント・レジスタのメモリマップド・アドレス

レジスタ名

メモリマップド・アドレス

DMA0_CURR_X_COUNT

0xFFC0 0C30

DMA1_CURR_X_COUNT

0xFFC0 0C70

DMA2_CURR_X_COUNT

0xFFC0 0CB0DMA3_CURR_X_COUNT

0xFFC0 0CF0

DMA4_CURR_X_COUNT

0xFFC0 0D30

DMA5_CURR_X_COUNT

0xFFC0 0D70

DMA6_CURR_X_COUNT

0xFFC0 0DB0

DMA7_CURR_X_COUNT

0xFFC0 0DF0

MDMA_D0_CURR_X_COUNT

0xFFC0 0E30

MDMA_S0_CURR_X_COUNT

0xFFC0 0E70

MDMA_D1_CURR_X_COUNT

0xFFC0 0EB0

MDMA_S1_CURR_X_COUNT

0xFFC0 0EF0

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-27

DMA レジスタとメモリ DMA レジスタ

■ DMAx_CURR_Y_COUNT/MDMA_yy_CURR_Y_COUNT レジスタ
カレント外側ループ・カウント・レジスタ（DMAx_CURR_Y_COUNT/MDMA_yy_
CURR_Y_COUNT）は、各 2D DMA セッションの最初に Y_COUNT レジスタによってロードされます。これは 1D DMA には使用されません。2D DMA
動作中に CURR_X_COUNT レジスタが満了（1から X_COUNT または 1から0に遷移）するたびに、このレジスタはデクリメントされ、行全体の転送の完了を示します。2D DMAセッションが完了した後、CURR_Y_COUNT = 1、CURR_
X_COUNT = 0 になります。
カレント外側ループ・カウント・レジスタ（DMAx_CURR_Y_COUNT/MDMA_yy_CURR_Y_COUNT）
チャンネルをイネーブルにする前は R/W、チャンネルをイネーブルにした後は RO

メモリマップド・
ア ド レ ス に つ い 15 14 13 12 11 10ては、表 9-14を参 X X X X X X
照。

9
X

8
X

7 6
X X

5
X

4
X

3
X

2
X

1 0
X X

リセット＝未定義

CURR_Y_COUNT[15:0]（カレント外側ループ・
カウント）
各 2D DMA セッションの最初に Y_COUNT によってロード、1D DMA では使用されません

図 9-11. カレント外側ループ・カウント・レジスタ

9-28

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

表 9-14.

カレント外側ループ・カウント・レジスタのメモリマップド・アドレス

レジスタ名

メモリマップド・アドレス

DMA0_CURR_Y_COUNT

0xFFC0 0C38

DMA1_CURR_Y_COUNT

0xFFC0 0C78

DMA2_CURR_Y_COUNT

0xFFC0 0CB8

DMA3_CURR_Y_COUNT

0xFFC0 0CF8

DMA4_CURR_Y_COUNT

0xFFC0 0D38

DMA5_CURR_Y_COUNT

0xFFC0 0D78

DMA6_CURR_Y_COUNT

0xFFC0 0DB8

DMA7_CURR_Y_COUNT

0xFFC0 0DF8

MDMA_D0_CURR_Y_COUNT

0xFFC0 0E38

MDMA_S0_CURR_Y_COUNT

0xFFC0 0E78

MDMA_D1_CURR_Y_COUNT

0xFFC0 0EB8

MDMA_S1_CURR_Y_COUNT

0xFFC0 0EF8

■ DMAx_PERIPHERAL_MAP/MDMA_yy_PERIPHERAL_MAP
レジスタ
各 DMAチャンネルのペリフェラル・マップ・レジスタ（DMAx_PERIPHERAL_
MAP/MDMA_yy_PERIPHERAL_MAP）には、以下のビットが含まれています。
• チャンネルを特定のペリフェラルにマッピングするビット。
• チャンネルがペリフェラルDMAチャンネルであるか、メモリDMA
チャンネルであるかを識別するビット。

L

なお、DMA チャンネルとペリフェラルとの間には、1:1のマッピングが存在しなければなりません。ユーザには、複数の DMA チャン
ネルが同じペリフェラルにマッピングされないこと、および複数のペリフェラルが同じDMAポートにマッピングされないことを保証

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-29

DMA レジスタとメモリ DMA レジスタする責任があります。複数のチャンネルが同じペリフェラルにマッピングされた場合には、1つのチャンネルだけが接続されます（最低優先順位のチャンネル）。存在しないペリフェラル（たとえば、
PMAP フィールドの 0xF）がチャンネルにマッピングされた場合には、そのチャンネルはディスエーブルにされます。つまり、DMA
要求は無視され、DMA 許諾は発行されません。また、DMA 要求
は、ペリフェラルから割込みコントローラに転送されません。
2 つのチャンネルの DMA チャンネル優先順位をスワップするには、以下の手順に従ってください。チャンネル 6と7が関係すると想定します。
1. チャンネル 6 と 7 で DMA がディスエーブルにされていることを確認します。
DMA7_PERIPHERAL_MAP に 0x6000
2. DMA6_PERIPHERAL_MAP に 0x7000 を、を書き込みます。

3. チャンネル 6 または 7、あるいはその両方で DMA をイネーブルにします。
ペリフェラル・マップ・レジスタ（DMAx_PERIPHERAL_MAP/MDMA_yy_PERIPHERAL_MAP）
チャンネルをイネーブルにする前は R/W、チャンネルをイネーブルにした後は RO
メモリマップド・アドレスにつ い て は、表9-15 を参照。

15 14 13 12 11 10 9
X X X X X X X

8
X

7 6
X X

5
X

4
X

3
X

PMAP[3:0]（このチャンネルにマッピングされたペリフェラル）0x0 - PPI
0x1 - SPORT0 RX
0x2 - SPORT0 TX
0x3 - SPORT1 RX
0x4 - SPORT1 TX
0x5 - SPI
0x6 - UART RX
0x7 - UART TX

2
X

1 0
X X

リセット：表 9-16を参照
CTYPE（DMA チャンネル・
タイプ）- RO
0 - ペリフェラル DMA
1 - メモリ DMA

図 9-12. ペリフェラル・マップ・レジスタ

9-30

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

表 9-15.

ペリフェラル・マップ・レジスタのメモリマップド・アドレス

レジスタ名

メモリマップド・アドレス

DMA0_PERIPHERAL_MAP

0xFFC0 0C2C

DMA1_PERIPHERAL_MAP

0xFFC0 0C6C

DMA2_PERIPHERAL_MAP

0xFFC0 0CAC

DMA3_PERIPHERAL_MAP

0xFFC0 0CEC

DMA4_PERIPHERAL_MAP

0xFFC0 0D2C

DMA5_PERIPHERAL_MAP

0xFFC0 0D6C

DMA6_PERIPHERAL_MAP

0xFFC0 0DAC

DMA7_PERIPHERAL_MAP

0xFFC0 0DEC

MDMA_D0_PERIPHERAL_MAP

0xFFC0 0E2C

MDMA_S0_PERIPHERAL_MAP

0xFFC0 0E6C

MDMA_D1_PERIPHERAL_MAP

0xFFC0 0EAC

MDMA_S1_PERIPHERAL_MAP

0xFFC0 0EEC

表 9-16 は、DMA 対応のペリフェラルごとに、ペリフェラル・マップのバ
イナリ設定を示します。
表 9-16.

ペリフェラル・マッピング

DMA
チャンネル

デフォルトのペリフェラル・マッピング

デフォルトの PERIPHERAL_
MAP 設定（2 進）

0
PPI（最高優先順位）

b#0000 0000 0000 0000

1

SPORT0 RX

b#0001 0000 0000 0000

2

SPORT0 TX

b#0010 0000 0000 0000

3

SPORT1 RX

b#0011 0000 0000 0000

4SPORT1 TX

b#0100 0000 0000 0000

5

SPI

b#0101 0000 0000 0000

6

UART RXb#0110 0000 0000 0000

備考

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-31

DMA レジスタとメモリ DMA レジスタ

表 9-16.

ペリフェラル・マッピング（続き）

DMA
チャンネル

デフォルトのペリフェラル・マッピング

デフォルトの PERIPHERAL_
MAP 設定（2 進）

7

UART TX

b#0111 0000 0000 0000

8Mem DMA ストリーム 0
デスティネーション

b#0000 0000 0100 0000

再割当て不可9Mem DMA ストリーム 0
ソース

b#0000 0000 0100 0000

再割当て不可10Mem DMA ストリーム 1
デスティネーション

b#0000 0000 0100 0000

再割当て不可11
Mem DMA ストリーム 1（最低優先順位） ソース

b#0000 0000 0100 0000

再割当て不可備考■ DMAx_IRQ_STATUS/MDMA_yy_IRQ_STATUS レジスタ
図 9-13 に示す割込みステータス・レジスタ（DMAx_IRQ_STATUS/MDMA_yy_
IRQ_STATUS）には、DMA チャンネルについて以下の項目を記録するビットが含まれています。
• イネーブルで動作中、イネーブルで停止中、またはディスエーブル。
• データまたは DMAディスクリプタをフェッチしている。
• グローバルなDMA割込みまたはチャンネル割込みがアサートされていることを検出した。
• DMA エラーの発生を記録した。
なお、最後のメモリ・アクセス（読出し／書込み）が完了すると、DMA_
DONE 割込みがアサートされます。

L
9-32

ペリフェラルへのメモリ転送の場合、割込みの発生時にチャンネルの DMA FIFO には 4 つまでのデータ・ワードが存在することがあります。この時点では、次の作業単位をすぐに開始するのが普通です。しかし、アプリケーションが、最後のデータ項目がいつペリ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

フェラルに実際に転送されたかを知る必要がある場合には、アプリ
ケーションは DMA_RUN ビットをテストしたりポーリングできます。
FIFO内に未配信の送信データがある限り、
DMA_RUNビットは1です。

L

メモリ書込み DMAチャンネルの場合、最後の DMA_DONE イベントが通知された後では、DMA_RUN ビットの状態は無意味になります。これは DMA FIFO のステータスを示しません。

L

割込みを使用して DMA 動作の終了を通知したくない MemDMA転送の場合には、トランザクションの完了を判断するために、ソフトウェアで DMA_DONE ビットをポーリングしてください（DMA_RUN ビッ
トではありません）。

割込みステータス・レジスタ（DMAx_IRQ_STATUS/MDMA_yy_IRQ_STATUS）

メモリマップド・アドレスにつ い て は、表9-17を参照。

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

DMA_RUN（DMA チャンネル動作中）- RO
DMA_CONFIG レジスタが書き込まれると、このビットは自動的に 1 に設定されます
0 - このDMAチャンネルはディスエーブルにされているか、イネーブルにされていても休止中です（FLOW モード 0)
1 - このDMAチャンネルはイネーブルで動作中であり、データの転送または DMA ディ
スクリプタのフェッチを行っています
DFETCH（DMA ディスクリプタ・フェッチ）- RO
FLOW モード 4 ～ 7 で DMA_CONFIG レ
ジスタが書き込まれると、このビットは自動的に 1 に設定されます
0 - この DMA チャンネルはディスエーブ
ルにされているか、イネーブルにされていても停止中です（FLOW モード 0)
1 - この DMA チャンネルは、イネーブルにされていて、現在 DMA ディスクリ
プタをフェッチしています

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

DMA_DONE（DMA 完了割込み
ステータス）- W1C
0 - このチャンネルに対して割込みはアサートされていま
せん
1 - DMA 作業単位が完了し、この DMA チャンネルの割込みがアサートされています
DMA_ERR（DMA エラー割込み
ステータス）- W1C
0 - DMA エラーは発生していません
1 - DMA エラーが発生し、グロー
バルな DMA エラー割込みがアサートされています。この
エラーが発生した後、DMA カ
レント・レジスタの内容は指定外になります。コントロー
ル／ステータスおよびパラ
メータ・レジスタは変化しません。

図 9-13. 割込みステータス・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-33

DMA レジスタとメモリ DMA レジスタ

表 9-17.

割込みステータス・レジスタのメモリマップド・アドレス

レジスタ名

メモリマップド・アドレス

DMA0_IRQ_STATUS

0xFFC0 0C28

DMA1_IRQ_STATUS

0xFFC0 0C68

DMA2_IRQ_STATUS

0xFFC0 0CA8

DMA3_IRQ_STATUS

0xFFC0 0CE8

DMA4_IRQ_STATUS

0xFFC0 0D28

DMA5_IRQ_STATUS

0xFFC0 0D68

DMA6_IRQ_STATUS

0xFFC0 0DA8

DMA7_IRQ_STATUS

0xFFC0 0DE8

MDMA_D0_IRQ_STATUS

0xFFC0 0E28

MDMA_S0_IRQ_STATUS

0xFFC0 0E68

MDMA_D1_IRQ_STATUS

0xFFC0 0EA8

MDMA_S1_IRQ_STATUS

0xFFC0 0EE8プロセッサは、3 つの割込みソースによるフレキシブルな割込み制御構造をサポートします。
• データ駆動型割込み（表 9-18 を参照）
• ペリフェラル・エラー割込み• DMA エラー割込み（たとえば、不良ディスクリプタまたはバス・
エラー）
データおよびペリフェラル・エラー割込み、ならびに DMAエラー割込みに対しては、別個の割込み要求（IRQ）レベルが割り当てられます。

9-34

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

表 9-18.

データ駆動型割込み

割込み名

説明

割込みなし

特定の作業単位に対して割込みをディスエーブルにできます。

ペリフェラル割込み

これらはペリフェラル（非 DMA）割込みです。

行完了

行の完了時にDMA割込みが発生できます（CURR_X_COUNT満了）。

バッファ完了

バッファ全体の完了時に DMA 割込みが発生できます（CURR_X_
COUNT と CURR_Y_COUNT の満了）。

すべての DMA チャンネルの論理和（OR）をとって、1つのシステム・レ
ベルの DMA エラー割込みにします。各チャンネルの個々の IRQ_STATUS
ワードを読み出して、DMA エラー割込みを引き起こしたチャンネルを識別できます。

L[

なお、割込みインジケータ DMA_DONE と DMA_ERR は、write-1-to-clear（W1C）です。
ペリフェラルを DMA モードから非 DMA モードへ切り替えるときには、共有の DMA ／割込み要求ラインで想定外の割込みが生成されないよう、モード切替え中は（適切なペリフェラル・レジスタまたは SIC_IMASK によって）ペリフェラルの割込みをディスエーブルにしてください。

フレックス・ディスクリプタ構造
DMA フレックス・ディスクリプタは可変サイズのデータ構造であり、その内容は DMAパラメータ・レジスタにロードされます。ディスクリプタ
内のレジスタのシーケンスは、3 つの類似の変動の中で基本的には固定されていますが、ディスクリプタの長さは完全にプログラマブルです。DMA
チャンネル・レジスタは、作業単位当たり最もよく再ロードされるレジス
タが最下位の MMR アドレスにくるように順序付けされます。ユーザは、
ディスクリプタを使用するかどうか選択できます。ディスクリプタを使用

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-35

フレックス・ディスクリプタ構造

しない場合、ユーザは DMA MMR に直接書込みを行って DMA を起動し、連続動作には自動バッファ・モード、シングル・バッファ動作には停止モードを使用できます。
ディスクリプタを使用するには、ユーザは最下位の MMRアドレスから始めて、ディスクリプタからロードする DMA レジスタの数を DMAx_CONFIG
レジスタの NDSIZE フィールドにプログラムします。ユーザは、1（START_ADDR の下位 16ビット）～9（すべての DMA パラメータ）のエントリから
ディスクリプタ・サイズを選択できます。
ディスクリプタ値シーケンスの 3 つの変動は、ネクスト・ディスクリプタ・
ポインタが組み込まれているかどうかと、その種類（組み込まれている場合）に依存します。
• 組込みなし（ディスクリプタ・アレイ・モード）• ネクスト・ディスクリプタ・ポインタの下位 16 ビット（ディスク
リプタ・リスト、スモール・モデル）• ネクスト・ディスクリプタ・ポインタの全 32 ビット（ディスクリ
プタ・リスト、ラージ・モデル）
ディスクリプタからロードされていない他のすべてのレジスタは以前の値を保持しますが、レジスタ CURR_ADDR、CURR_X_COUNT、CURR_Y_COUNT は、
ディスクリプタ・フェッチと DMA 動作開始との間に再ロードされます。
DMA 設定によっては、チェーン内のディスクリプタを変更できない場合もあります（スモール／ラージ・リスト・モードとアレイ・モード）。これらは、DMA 方向、ワード・サイズ、メモリ空間です（つまり、内部メ
モリと外部メモリとの切り替えです）。
シングル・ディスクリプタ・チェーンでは、さまざまなメモリ空間に存在するデータ・バッファのシーケンスの転送を制御できません。その代わりに、複数のデータ・バッファを同じ空間内のバッファのチェーンにグルー

9-36

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

プ化しますが、それらのチェーンはリンクしません。最初のチェーンを転送し、その最終割込みを待ってから、DMA_CONFIG レジスタへの MMR書込
みによって次のチェーンを開始します。
なお、ユーザは、各チェーンのデータ・バッファを同じメモリ空間に配置しなければなりません。しかし、ディスクリプタ構造自身はどのメモリ空間にも配置でき、1つの空間のディスクリプタから別の空間のディスクリ
プタに制約なしにリンクできます。
表 9-19 は、上述の3 つのモードでのディスクリプタ・エレメントのオフ
セットを示します。なお、表中の名前は、最終的にロードされる実際のMMR ではなく、メモリ内のディスクリプタ・エレメントを示します。
表 9-19.

パラメータ・レジスタとディスクリプタ・オフセット

ディスクリプタ・ ディスクリプタ・
オフセット
アレイ・モード

スモール・ディスクリ
プタ・リスト・モード

ラージ・ディスクリプ
タ・リスト・モード

0x0

SAL

NDPL

NDPL

0x2

SAH

SAL

NDPH

0x4

DMACFG

SAH

SAL

0x6

XCNT

DMACFG

SAH

0x8

XMOD

XCNT

DMACFG

0xA

YCNT

XMOD

XCNT

0xC

YMOD

YCNT

XMOD

YMOD

YCNT

0xE
0x10

YMOD

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-37

DMA 動作フロー

DMA 動作フロー
図 9-14と図 9-15は、DMA フローを示します。
࡙࡯ࠩߪ‫৻ޔ‬ㇱ߹ߚߪోㇱߩ'0$ࡄ࡜ࡔ࡯࠲࡮࡟ࠫࠬ࠲
ߦᦠ߈ㄟࠎߢ߆ࠄ‫'ޔ‬0$B&21),*ߦᦠ߈ㄟ߻

<'0$ࠛ࡜࡯

ਇᱜߥ'0$B&21),*"

1'0$B(1 '0$B(1ࠍ࠹ࠬ࠻

'0$B(1 ',B(1 ߹ߚߪ㧔',B(1 ߅ࠃ߮'0$B'21(B,54 㧕&,54B67$786ߩ'0$B581ࠍ࠮࠶࠻

'0$ߪ஗ᱛ‫ޕ‬,54B67$786ߩ
'0$B581ࠍࠢ࡝ࠕ)/2:㧩߹ߚߪ

)/2:ࠍ࠹ࠬ࠻

$)/2:㧩‫ߪߚ߹ޔޔ‬,54B67$786ߩ')(7&+ࠍ࠮࠶࠻

'0$B&21),*߆ࠄ)/2:‫ޔ‬1'6,=(ࠍ৻ᤨ⊛ߥ࠺ࠖࠬࠢ࡝ࡊ࠲࡮ࡈࠚ࠶࠴࡮ࠞ࠙ࡦ࠲ߦࠦࡇ࡯

)/2:ࠍ࠹ࠬ࠻

)/2: )/2:㧩߹ߚߪ
ࡀࠢࠬ࠻࡮࠺ࠖࠬࠢ࡝ࡊ࠲࡮ࡐࠗࡦ࠲ࠍ
ࠞ࡟ࡦ࠻࡮࠺ࠖࠬࠢ࡝ࡊ࠲࡮ࡐࠗࡦ࠲ߦࠦࡇ࡯

%

図 9-14. DMA フロー ― DMA コントローラから見た場合（1/2）

9-38

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス%

1'6,=(ࠍ࠹ࠬ࠻

1'6,=( ߹ߚߪ1'6,=(!0$;B6,=(

'0$
ࠕࡏ࡯࠻߇
⊒↢

1'6,=(!߅ࠃ߮
1'6,=( 0$;B6,=(
ࠞ࡟ࡦ࠻࡮࠺ࠖࠬࠢ࡝ࡊ࠲࡮
ࡐࠗࡦ࠲ࠍ੺ߒߡ‫ޔ‬࠺ࠖࠬࠢ࡝ࡊ࠲ߩ1'6,=(ࠛ࡟ࡔࡦ࠻ࠍࡄ࡜ࡔ࡯࠲࡮
࡟ࠫࠬ࠲ߦ⺒಴ߔ$)/2:㧩߹ߚߪ

,54B67$786ߩ
')(7&+ࠍࠢ࡝ࠕ'0$ォㅍ߇ᆎ߹ࠅ‫ޔ‬ࠞ࠙ࡦ࠻߇ቢੌ
ߔࠆ߹ߢ⛯ⴕ

',B(1 ࠦࠕߦഀㄟߺࠍㅢ⍮',B(1ࠍ࠹ࠬ࠻

',B(1 &)/2: ,54B67$786ߩ
'0$B'21(ࠍ࠮࠶࠻)/2:ࠍ࠹ࠬ࠻

)/2: :15ࠍ࠹ࠬ࠻

ࡔࡕ࡝⺒಴ߒ
㧔࠰࡯ࠬ㧕

),)2߇ⓨߦߥࠆ߹ߢ࠺࡯࠲
ࠍࡍ࡝ࡈࠚ࡜࡞
ߦォㅍࡔࡕ࡝ᦠㄟߺ㧔࠺ࠬ࠹ࠖࡀ࡯࡚ࠪࡦ㧕'0$ߪ஗ᱛ‫ޕ‬,54B67$786ߩ
'0$B581ࠍࠢ࡝ࠕᦨᄢࠨࠗ࠭ߪ)/2:ߦଐሽ
)/2: ߩ႐ว‫ޔ‬0$;B6,=( )/2: ߩ႐ว‫ޔ‬0$;B6,=( )/2: ߩ႐ว‫ޔ‬0$;B6,=( 

図 9-15. DMA フロー ― DMA コントローラから見た場合（2/2）

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-39

DMA 動作フロー■ DMA の起動
ここでは、DMA を「ゼロから」起動する方法について説明します。これは、FLOW = 0 モードによってDMA が休止した後、DMA を起動する方法と似ています。

[

特定のチャンネルで初めて DMA を起動する前に、すべてのパラ
メータ・レジスタを初期化してください。NEXT_DESC_PTR レジスタと START_ADDR レジスタの上位 16 ビットの初期化には特にご注意ください。これは、選択された FLOW 動作モードによってはアクセスできないこともあるためです。

特定のチャンネルで DMA動作を開始するには、最初に、一部または全部の DMA パラメータ・レジスタに直接書き込む必要があります。最低限、この段階では NEXT_DESC_PTR レジスタ（または FLOW = 4 モードでは CURR_DESC_PTR レジスタ）に書き込む必要がありますが、DMA 動作の全過程にわたって静的である可能性のある他の DMA レジスタ（たとえば、X_
MODIFY、Y_MODIFY）に書き込むこともできます。DMA_CONFIG 内の NDSIZEと FLOW の内容は、メモリ内のディスクリプタ・エレメントからフェッチされたレジスタを（もしあれば）示します。ディスクリプタ・フェッチが（もしあれば）完了した後、DMA_CONFIG に DMA_EN = 1 を書き込んで、DMA動作が開始されます。
DMA_CONFIG が直接書き込まれると、DMAコントローラではこれをチャン

ネルで初めて DMA を起動したりエンジンの停止後（FLOW = 0）にDMAを起動したりするときに発生する、特殊な起動条件として認識します。
ディスクリプタ・フェッチが完了し、DMA_EN = 1 であるとき、DMA_CONFIGに読み出された DMACFG ディスクリプタ・エレメントが制御を引き継ぎます。これ以前の時点では、DMA_CONFIG への直接書込みに制御がありました。つまり、WDSIZE、DI_EN、DI_SEL、RESTART、DMA2D の各フィールドは、メモリから読み出されたディスクリプタ内の DMACFG 値から取得されますが、初めに DMA_CONFIG レジスタに書き込まれたこれらのフィールド値は無視されます。

9-40

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

図 9-14 と図 9-15 に示すように、DMA 設定プロセスの過程は、起動時にDMA_CONFIG の FLOW ビットと NDSIZE ビットによって決まります。FLOW 値では、メモリ内のディスクリプタ・エレメントからカレント・レジスタをさらにロードすべきかどうかが決まります。NDSIZE ビットでは、DMA の起動前にフェッチするディスクリプタ・エレメントの数が決まります。ディスクリプタに組み込まれていない DMAレジスタは、以前の値から変更されません。
FLOW 値でスモールまたはラージのディスクリプタ・リスト・モードを指定する場合には、NEXT_DESC_PTR が CURR_DESC_PTR にコピーされます。その後、メモリから新しいディスクリプタ・エレメントのフェッチが実行され、フェッチのたびにインクリメントされる CURR_DESC_PTR によってインデックス付けされます。NDPL または NDPH、あるいはその両方がディスクリ
プタの一部である場合には、これらの値は NEXT_DESC_PTR にロードされま
すが、カレント・ディスクリプタのフェッチは CURR_DESC_PTR を使用して続行されます。ディスクリプタ・フェッチが完了した後、CURR_DESC_PTR
はディスクリプタの最後を越えてメモリ内の次の 16 ビット・ワードを指し示します。
NDPH も NDPL もディスクリプタの一部でない場合には（つまり、ディスク

リプタ・アレイ・モードで、FLOW = 4）、NDPH/NDPL から CURR_DESC_PTR への転送は発生しません。その代わりに、CURR_DESC_PTR 内の値でディスク
リプタ・フェッチのインデックス付けが始まります。
DMACFG がディスクリプタの一部でない場合には、起動時にMMRアクセス

によって書き込まれた以前の DMA_CONFIG 設定が作業単位の動作を制御します。DMACFG がディスクリプタの一部である場合には、MMRアクセスによってプログラムされた DMA_CONFIG 値がメモリからの最初のディスクリ
プタのロードだけを制御します。それ以降の DMA 作業は、ディスクリプ
タの DMACFG の下位バイトと、ディスクリプタからロードされたパラメー
タ・レジスタによって制御されます。MMRアクセスによってプログラムされた値に含まれるビット DI_EN、DI_SEL、DMA2D、WDSIZE、WNR は無視されます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-41

DMA 動作フロー

IRQ_STATUS レジスタ内のステータス・ビット DMA_RUN と DFETCH は、DMA

チャンネルの状態を示します。DMA_CONFIG への書込み後、DMA_RUN ビットと DFETCH ビットは自動的に 1に設定されます。メモリから最初のディスク
リプタをロードした結果として、データ割込みの通知はありません。
上の手順の後で、カレント・レジスタは適切なディスクリプタ・エレメン
トから自動的にロードされ、以前の内容は次のように上書きされます。
• START_ADDR は CURR_ADDR にコピーされます• X_COUNT は CURR_X_COUNT にコピーされます• Y_COUNT は CURR_Y_COUNT にコピーされます
その後、9-39 ページの図 9-15 に示すように、DMA データ転送動作が始まります。

■ DMA のリフレッシュ
作業単位が完了すると、DMA コントローラは以下の動作を行います。
• メモリとDMAユニットとの間ですべてのデータの転送を完了します。
• DI_EN によってイネーブルにされた場合には、コアへの割込みを通知し、チャンネルの IRQ_STATUS レジスタの DMA_DONE ビットをセットします。
• FLOW = 0（停止）の場合のみ：
チャンネルの DMA FIFO 内のデータがペリフェラルに転送された
後で、IRQ_STATUS の DMA_RUN ビットをクリアして動作を停止させま
す。

9-42

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス• FLOW モード 4、6、7でのフェッチ中に、DMAコントローラは IRQ_STATUS の DFETCH ビットを 1に設定します。この時点で、DMA 動作
は FLOW の値（FLOW = 4、6、または 7）に依存します。
FLOW = 4（ディスクリプタ・アレイ）の場合：
CURR_DESC_PTR の内容を介して新しいディスクリプタをメモリから

DMA レジスタにロードすると同時に、CURR_DESC_PTR をインクリ
メントします。フェッチが開始される前に、ディスクリプタ・サイ
ズは DMA_CONFIG 値の NDSIZE フィールドから得られます。
FLOW = 6（ディスクリプタ・リスト・スモール）の場合：

32ビットの NEXT_DESC_PTR を CURR_DESC_PTR にコピーします。次に、
CURR_DESC_PTR の新しい内容を介してディスクリプタをメモリから
DMA レジスタにフェッチすると同時に、CURR_DESC_PTR をインクリメントします。ロードされる最初のディスクリプタ・エレメント
は NEXT_DESC_PTR の下位 16 ビットの新しい16 ビット値であり、残りのディスクリプタ・エレメントがそれに続きます。NEXT_DESC_PTR の上位 16ビットは、前の値を保持します。これによって、ディスクリプタ・リストのラージ・モデルよりも短く効率的なディスク
リプタがサポートされ、アプリケーションはメモリの同じ 64Kバイ
ト範囲内にチャンネルのディスクリプタを配置できます。
FLOW = 7（ディスクリプタ・リスト・ラージ）の場合：

32ビットの NEXT_DESC_PTR を CURR_DESC_PTR にコピーします。次に、
CURR_DESC_PTR の新しい内容を介してディスクリプタをメモリから
DMA レジスタにフェッチすると同時に、CURR_DESC_PTR をインクリメントします。ロードされる最初のディスクリプタ・エレメント
はフル NEXT_DESC_PTR の新しい 32 ビット値であり、残りのディスク
リプタ・エレメントがそれに続きます。NEXT_DESC_PTR の上位 16

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-43

DMA 動作フロー

ビットは、その前の値とは違うことがあります。これによってサポートされる完全にフレキシブルなディスクリプタ・リストは、内部メモリまたは外部メモリのどこにでも配置できます。
なお、1 つの 64K バイト領域にディスクリプタを持つディスクリ
プタ・チェーンから、その領域の外部にディスクリプタを持つ別のチェーンにリンクする必要がある場合には、1 つのディスクリプタ
だけが FLOW = 7 を使用する必要があります。つまり、64K バイト
範囲を出ているリンクを含むディスクリプタです。同じ 64K バイ
ト領域に置かれている他のすべてのディスクリプタでは、FLOW = 6を使用できます。
• FLOW ＝ 1、4、6、または 7（それぞれ、自動バッファ、ディスクリプ
タ・アレイ、ディスクリプタ・リスト・スモール、ディスクリプ
タ・リスト・ラージ）の場合：
カレント・レジスタを（再）ロードします。
CURR_ADDR は START_ADDR からロード
CURR_X_COUNT は X_COUNT からロード
CURR_Y_COUNT は Y_COUNT からロード
続いて IRQ_STATUS の DFETCH ビットがクリアされてから、図 9-15に示すように、DMA 転送が再開されます。

9-44

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス■ DMA 転送を停止するにはFLOW = 0 モードでは、作業単位の完了後、DMAは自動的に停止します。

DMA の制御にディスクリプタのリストまたはアレイが使用され、どのディスクリプタにも DMACFG エレメントが含まれる場合、チャンネルを適切に停止させるために、最終の DMACFG エレメントでは FLOW = 0 に設定してください。
自動バッファ（FLOW = 1）モードの場合、または DMACFG エレメントを持たないディスクリプタのリストまたはアレイが使用される場合には、DMA_
EN ビットを0にした値を DMAx_CONFIG レジスタにMMR書込みすることで、DMA 転送プロセスを終了させる必要があります。レジスタ全体に 0 を書
き込むと、DMA は常に適切に終了します（DMAのアボートなし）。
チャンネルを再びイネーブルにする前に、低速なメモリ読出し動作（たとえば、低速な外部メモリからの読出し）が開始されていれば、その読出し動作が完了していることを確認します。このような読出しが完了するまで
は、チャンネルを再びイネーブルにしないでください。

■ DMA 転送をトリガするにはFLOW ＝ 0 モードでDMAが停止している場合、内部DMA FIFOの内容が完全に処理されるまでは、DMA 割込みステータス・レジスタの DMA_RUN ビッ
トはセットされたままです。DMA_RUN ビットがクリアされると、DMA 設定
レジスタへの再書込みによって DMA を再起動すると安全です。DMA シー
ケンスは、以前の設定で繰り返されます。
同様に、FLOW ＝ 0 ディスクリプタによって一時的に停止したディスクリプ
タ・ベースの DMA シーケンスは、設定レジスタへの新しい書込みによって続行できます。DMA コントローラがメモリからの DMACFG フィールドのロードによって FLOW ＝ 0 条件を検出した場合には、動作モードがディスク
リプタ・アレイまたはディスクリプタ・リストであっても、ネクスト・
ディスクリプタ・ポインタはすでに更新されています。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-45

DMA 動作フロー

DMA が停止して再起動された場合には、ネクスト・ディスクリプタ・ポ
インタは有効なままです。DMA_RUN ビットがクリアされるとすぐに、ソフ
トウェアは DMA を再起動し、DMAコントローラに次のディスクリプタをフェッチさせることができます。そのために、ソフトウェアは、DMA_EN
ビットをセットして FLOW フィールドと NDSIZE フィールドに適切な値を持つ値を設定レジスタに書き込みます。FLOW が 0x4、0x6、または 0x7 に等しい場合には、次のディスクリプタがフェッチされます。この動作モードでは、設定レジスタをすぐに上書きするために、NDSIZE フィールドは少なくとも DMACFG フィールドまで及ぶ必要があります。
ディスクリプタ・チェーン内のすべての DMACFG フィールドで、FLOW フィー
ルドと NDSIZE フィールドがゼロに設定されている場合には、個々の DMA
シーケンスはソフトウェアによってトリガされるまでは開始されません。
これは、DMA をシステム内の他のイベントと同期させる必要がある場合に便利であり、一般には割込みサービス・ルーチンによって実行されます。次の DMAシーケンスをトリガするには、1回のMMR書込みが必要です。
特に MemDMA チャンネルに適用された場合、このようなシナリオは重要な役割を果たします。通常、MemDMA のタイミングは制御できません。
ディスクリプタのチェーンまたはリングをこのように停止させることによって、DMA トランザクション全体をソフトウェアによって個々にトリガされる要素に分解できます。

L

9-46

MemDMA のソース・チャンネルとデスティネーション・チャンネ
ルは、ディスクリプタ構造内で異なることもあります。しかし、
DMA が停止したときに、ワーク・カウントの合計は一致しなければなりません。MemDMA が停止するたびに、デスティネーショ
ン・チャンネルとソース・チャンネルはちょうど同じワード数の後で、いずれも同じ FLOW ＝ 0 モードを提供するはずです。したがって、これらのチャンネルは後から起動する必要があります。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

2 次元 DMA
2 次元（2D）DMA では、64× 64K エレメントまでの任意の行／列サイズに加えて、± 32K バイトまでの任意の X_MODIFY 値と Y_MODIFY 値を利用できます。さらに、Y_MODIFY は負とすることができるため、インターリーブされたデータストリームを実装できます。X_COUNT 値と Y_COUNT 値では、行と列のサイズを指定します。ここで、X_COUNT は 2 以上である必要があります。
開始アドレスと変更値はバイト単位であり、DMA 転送ワード・サイズ（DMA_CONFIG の WDSIZE[1:0]）の倍数に整列する必要があります。不整列の場合には、DMA エラーが発生します。
X_MODIFY 値は、CURR_X_COUNT レジスタをデクリメントする転送のたびに適用されるバイト・アドレス・インクリメントです。内側ループ・カウン
トが CURR_X_COUNT を 1 から0 にデクリメントして終了した場合には、X_
MODIFY 値は適用されません。ただし、CURR_Y_COUNT が 1 であり、CURR_X_
COUNT が1から0にデクリメントした場合には、最後の転送で適用されます。
Y_MODIFY 値は、CURR_Y_COUNT がデクリメントされるたびに適用されるバ
イト・アドレス・インクリメントです。しかし、外側ループ・カウント（CURR_Y_COUNT）も1から 0にデクリメントして満了するアレイ内の最終項目に対しては、Y_MODIFY 値は適用されません。

最後の転送が完了した後、CURR_Y_COUNT ＝ 1、CURR_X_COUNT = 0、そして CURR_ADDR は最後の項目のアドレス＋ X_MODIFY に等しくなります。な
お、DMA チャンネルが自動的にリフレッシュするようにプログラムされている場合（自動バッファ・モード）、これらのレジスタは最初のデータ転送と同時に X_COUNT、Y_COUNT、START_ADDR からロードされます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-47

2 次元 DMA

■例
例 1：サイズ（N× M）ピクセルのビデオ・フレーム・バッファから、16× 8ブロックのバイトを取り出します。
X_MODIFY = 1
X_COUNT = 16
Y_MODIFY = N–15 （1 つの行の終端から別の行の先頭までのオフセット）
Y_COUNT = 8

上の記述によって、開始アドレスからの以下のアドレス・オフセットが得られます。
0,1,2,...15,
N,N + 1, ... N + 15,
2N, 2N + 1,... 2N + 15, ...
7N, 7N + 1,... 7N + 15,

例 2：（R、G、B ピクセル）×（N × M イメージ・サイズ）バイトのビデ
オ・データストリームを受け取ります。
X_MODIFY = (N * M)
X_COUNT = 3
Y_MODIFY = 1 – 2(N * M) （負）Y_COUNT = (N * M)

上の記述によって、開始アドレスからの以下のアドレス・オフセットが得られます。
0, (N * M), 2(N * M),
1, (N * M) + 1, 2(N * M) + 1,
2, (N * M) + 2, 2(N * M) + 2,...
(N * M) – 1, 2(N * M) – 1, 3(N * M) – 1,

9-48

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス■ 2D DMA のその他の例
フレックス・ディスクリプタで利用できる DMA スタイルには、以下の例が含まれます。
• 完了時に停止する単一のリニア・バッファ（FLOW ＝停止モード）• 1 を超えるストライドを持つリニア・バッファ（X_MODIFY > 1）
• フル・バッファごとに割込みする循環自動リフレッシュ・バッファ• 分数バッファ（たとえば、1/2、1/4）で割込みする類似のバッファ（2D DMA）• 1D DMA、{リンク・ポインタ、32ビット・アドレス}を含む 3ワー
ド・ディスクリプタのリンク・リングによって定義される一連の同
じピンポン・バッファを使用• 1D DMA、{ リンク・ポインタ、32ビット・アドレス、長さ、config}
を 含む 5 ワ ード・デ ィス ク リプ タ のリ ン ク・リ ス トを 使 用（ADSP-2191 スタイル）• 2D DMA、共通データ・ページ内のベース DMAアドレスだけを指定する、1ワード・ディスクリプタのアレイを使用• 2D DMA、すべてを指定する、9ワード・ディスクリプタのリンク・リストを使用ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-49

メモリ DMA

メモリ DMA
ここでは、メモリ DMA（MDMA）コントローラについて説明します。
MDMA コントローラは、さまざまなメモリ空間の中でメモリ間 DMA 転送を実現します。これらには、L1 メモリや外部の同期／非同期メモリを含みます。
各 MDMA コントローラに含まれるDMA FIFO は、L1 または外部アクセス・バス（EAB）との間でのデータ転送に使用される8 ワード× 16 ビットの FIFO ブロックです。一般に、これは外部メモリと内部メモリとの間のデータ転送に使用されます。EAB バスでのブートROM からのDMA にも対応します。この FIFOを使用すれば、2つのL1メモリ位置の間または2 つの外部メモリ位置の間で転送される DMA データを保持できます。
プロセッサは 4本のMDMAチャンネルを提供します。
• 2 本のソース・チャンネル（メモリからの読出し用）• 2 本のデスティネーション・チャンネル（メモリへの書込み用）
各ソース／デスティネーション・チャンネルは「ストリーム」を形成し、
この 2 つのストリームは、DMA優先順位 8～ 11に配線接続されます。
• 優先順位 8：メモリ DMAデスティネーション・ストリーム D0• 優先順位 9：メモリ DMAソース・ストリーム D0• 優先順位 10：メモリDMA デスティネーション・ストリーム D1• 優先順位 11：メモリDMA ソース・ストリーム D1
ラウンド・ロビン・スケジューリングが使用される場合を除いて、メモリ
DMA ストリーム 0 はメモリDMA ストリーム 1 よりも優先順位が高くなります。なお、メモリ書込み用にソース・ストリームをプログラムしたり、メモリ読出し用にデスティネーション・ストリームをプログラムしたりすることは不正な行いとなります。

9-50

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

これらのチャンネルでは、8/16/32 ビットのメモリDMA 転送が可能です
が、MDMA 転送の両端は、同じワード・サイズにプログラムする必要があります。つまり、MDMA 転送ではデータのパックやアンパックを行いません。各読出しは 1 回の書込みにつながります。特定ストリームのMDMA FIFO の両端には、同時に優先順位が与えられます。各ペアは、深
さ 8ワードの 16ビットFIFO を共有します。ソースDMA エンジンは FIFO
をフィルしますが、デスティネーション DMA エンジンはFIFO を空にします。FIFO の深さによって、外部アクセス・バス（EAB）とDMA アク
セス・バス（DAB）のバースト転送は重なり合うことができるため、内部メモリと外部メモリとの間のブロック転送でスループットが大幅に向上します。各 MDMA ペアに操作パラメータを提供する（ソース・チャンネ
ルとデスティネーション・チャンネルに 1つずつ）には、2つの別個のディスクリプタ・ブロックが必要です。
ソースとデスティネーションのDMAエンジンは1つのFIFOバッファを共有するため、ディスクリプタ・ブロックは同じデータ・サイズを持つように設定する必要があります。合計カウントが同じである限り、両端で異なる組合わせのディスクリプタを持つことは可能です。
MDMA 転送動作を開始するには、ソース・ストリーム用とデスティネー
ション・ストリーム用の MMR が、それぞれペリフェラルDMA の場合と似た方法で書き込まれます。

L

なお、ソース・ストリーム用の DMA_CONFIG レジスタには、デスティ
ネーション・ストリーム用の DMA_CONFIG レジスタよりも前に書き込む必要があります。

デスティネーション DMA_CONFIG レジスタが書き込まれると、3 SCLK サイク
ルの遅延の後で MDMA 動作が開始されます。
最初に、いずれの MDMA ストリームがディスクリプタを使用するように選択された場合でも、ディスクリプタはメモリからフェッチされます。デスティネーション・ストリームのディスクリプタは最初にフェッチされます。続いて、メモリから最後のディスクリプタ・ワードが返されてから 4

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-51

メモリ DMASCLK サイクルの遅延の後で（または、メモリ・パイプライン処理によって、最後のディスクリプタ・ワードのフェッチから一般に 8 SCLK サイクルで）、ソース MDMA ストリームはソース・バッファからデータのフェッチを始めます。得られたデータは MDMA ストリームの 8段FIFO に格納されます。続いて、2 SCLK サイクルの遅延の後で、デスティネーションMDMA
ストリームはデスティネーション・メモリ・バッファへのデータ書込みを開始します。

■ MDMA 帯域幅
ソースとデスティネーションが異なるメモリ空間（1 つは内部、1 つは外部）にある場合には、内部と外部のメモリ転送は一般に同時かつ連続であり、内部と外部のメモリ・インターフェースでは 100%のバス使用率が維持されます。この性能は、コア―システムのクロック周波数比率によって影響を受けます。およそ 2.5:1 より低い比率では、同期とパイプライン遅延によって、システム・クロック・ドメインでのバス使用率は低下します。たとえば 2:1 のクロック比率では、DMA は一般にシステム・クロッ
ク・レートの 2/3 で動作します。さらに高いクロック比率では、フル帯域幅が維持されます。
ソースとデスティネーションが同じメモリ空間にある（両方とも内部、または両方とも外部）場合には、MDMA ストリームは、一般にソース・デー
タのバーストを FIFOにプリフェッチしてから自動的に向きを変えて、使用可能なすべてのデータを FIFOからデスティネーション・バッファに配信します。バースト長はトラフィックに依存し、SCLK 単位で3 ＋ DMA でのメモリ遅延
（一般に、内部転送では7、外部転送では6）に等しくなります。

9-52

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

DMA 性能の最適化
DMA システムは、チャンネル当たり最大のスループットと内部バスの最大の使用率を提供すると同時に、メモリ・アクセスに固有の遅延に対処できるように設計されています。
DMA アーキテクチャの重要な特長は、ペリフェラル DMA バス（DMA ア
クセス・バス（DAB））での動作と、DMA とメモリ（DMA コア・バス（DCB）とDMA 外部バス（DEB））との間のバスでの動作を分離することです。各ペリフェラル DMAチャンネルには、DAB バスとメモリ・バスとの間に専用のデータ FIFOがあります。これらの FIFOでは、伝送用にデー
タをメモリから自動的にプリフェッチし、後でのメモリ書込み用に受信データをバッファします。これによって、ペリフェラルにはパイプライン化されたメモリ・アクセスの合計遅延に比べてきわめて低遅延の DMA転送が認められます。したがって、各 DMA チャンネルのリピート間隔（帯域幅）は可能な限り高速になります。
ペリフェラル DMA チャンネルの最大転送速度は、いずれの方向でもチャンネル当たり、2システム・クロック当たりで 16ビット1ワードです。
MDMA チャンネルの最大転送速度はチャンネル当たり、1 システム・ク
ロック（SCLK）当たりで 16ビット 1ワードです。
すべての DMA チャンネルのトラフィックが全体として取得された場合：• ペリフェラルと DMA ユニットとの間の最大転送レートは、システ
ム・クロック当たり 16ビット1転送です。
• DMA ユニットと内部メモリ（L1）との間の最大転送レートは、シ
ステム・クロック当たり 16ビット 1転送です。
• DMA ユニットと外部メモリとの間の最大転送レートは、システム・
クロック当たり 16 ビット 1 転送です。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-53

DMA 性能の最適化

実際の性能を制約する問題点には、以下のものが含まれます。
• 同じメモリへのコア・アクセスで競合する内部または外部メモリへのアクセス。これによって、たとえば、同じ L1 バンクへのアクセス、SDRAM ページのオープン／クローズ、キャッシュ・ラインのフィル中に遅延が発生することがあります。
• DAB バスでの RX から TX への方向転換のたびに、1 SCLK サイクルの遅延を招きます。
• DCB バスでの内部メモリの同じバンクに対する方向転換（たとえば、書込み後の読出し）によって、遅延を招くことがあります。
• DEB バスでの外部メモリに対する方向転換（たとえば、読出し後の書込み）によって、それぞれ複数サイクルの遅延を招くことがあります。
• DMAx_CONFIG、DMAx_IRQSTAT、DMAx_PERIPHERAL_MAP 以外のDMA レ
ジスタへの MMR アクセスでは、転送された16ビット・ワード当た
り 1 サイクルだけ、すべての DMA 動作がストールします。それと対照的に、コントロール／ステータス・レジスタへの MMR アクセ
スでは、ストールや待ち状態は発生しません。
• コントロール／ステータス・レジスタ以外の DMA レジスタからの読出しでは、1 つの PABバス待ち状態を使用し、コアは複数コア・クロックだけ遅れます。
• ディスクリプタ・フェッチでは、メモリからの 16 ビット・ワード
読出し当たり 1 DMAメモリ・サイクルを消費しますが、DABバス
での転送は遅延しません。
• DMA チャンネルの初期化では、DMA 動作が1 サイクルだけストー
ルします。これが発生するのは、DMA_EN が0から 1 に変化したとき、または DMAx_CONFIG レジスタで RESTART ビットが1 に設定されたと
きです。

9-54

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

これらの要因のいくつかは、アプリケーション・ソフトウェアの適切な設計によって最小限に抑えることができます。バンク内やページ内でのデー
タ・バッファの割当てに注意し、クリティカルな DMA動作中にはキャッシュ動作を低く計画することによって、内部メモリと外部メモリの競合を避けるようにソフトウェアを構成することも可能です。さらには、ディスクリプタや自動バッファリングを使用することで、不必要な MMR アクセ
スを最小限に抑えることができます。
過度の方向転換に起因する効率損失（スラッシング）を最小限に抑えるには、次の節で説明するプロセッサのトラフィック制御機能を使用します。

■ 優先順位付けとトラフィック制御
DMA チャンネルは、その優先順位に厳密に基づいてサービスを許可されるのが普通です。チャンネルの優先順位は、単にそのチャンネル番号であり、優先順位の低い番号が最初に許可されます。したがって、高いデー
タ・レートや低い遅延条件を持つペリフェラルは、DMAx_PERIPHERAL_MAP
レジスタを使用して小さい番号の（優先順位の高い）チャンネルに割り当てます。メモリ DMA ストリームは、ペリフェラルよりも常に低い優先順
位ですが、サービスを連続的に要求するので、ペリフェラル DMAによって使用されていないタイム・スロットが MDMA 転送に適用されるようにします。デフォルトでは、複数の MDMA ストリームがイネーブルにされて準備が完了すると、最高優先順位の MDMA ストリームだけが許可されます。しかし、複数の MDMA ストリームが使用可能な帯域幅を共有することが望ましい場合には、一定回数の転送に対して各ストリームを順番に選択するように、MDMA_ROUND_ROBIN_PERIOD をプログラムできます。
プロセッサ DMA には、DAB バス優先順位付けとメモリ・バス（DCB お
よび DEB）優先順位付けという、完全に独立した 2つの同時優先順位付け
プロセスがあります。DAB バスを介してDMAを要求し、転送の処理準備ができたデータ FIFO を持つペリフェラルは、DAB バス・サイクルを求めて互いに競争します。同様に（ただし別個に）、メモリ・サービス（プリフェッチまたはポストライト）を必要とする FIFO を持つチャンネルは、

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-55

DMA 性能の最適化

メモリ・バスへのアクセスを求めて競争します。複数の MDMA ストリー
ムは、1 つのユニットとしてメモリ・アクセスを求めて競争し、メモリ転送が競合しない場合には、ソースとデスティネーションが共に許可されることもあります。このように、内部―外部または外部―内部のメモリ転送
は、フル・システム・クロック・レート（SCLK）で行われることがあります。メモリ競合の例には、同じメモリ空間への同時アクセスと、ディスクリプタの同時フェッチが含まれます。ペリフェラルが DMA を要求していても、その FIFO の準備ができていない（たとえば、送信 FIFO が空、受信 FIFO が満杯）場合には、特殊な処理が行われることもあります。詳細
については、9-62 ページの「緊急の DMA 転送」を参照してください。
DMA リソースの使用を最適化する際に、トラフィック制御は重要なポイントです。トラフィック制御とは、同じ方向の転送を自動的にグループ化することによって、データ・バスでの転送方向の変更頻度に影響を与える
方法の 1 つです。DMA ブロックでは、DMA_TC_PER レジスタと DMA_TC_CNT
レジスタによって制御されるトラフィック制御メカニズムを提供します。
このメカニズムによる最適化では、プロセッサのリアルタイム介入がな
く、DMA 作業単位ストリームに転送バーストをプログラムする必要もありません。トラフィックは、簡単なカウンタによって、3つのバス（DAB、DCB、DEB）ごとに独立して制御できます。さらに、MDMA ストリーム
間で の 転送 の 交 代は、DMA_TC_CNT レジ ス タの MDMA_ROUND_ROBIN_COUNTフィールドで制御できます。9-60 ペー ジの「MDMA 優先 順位 とス ケ
ジューリング」を参照してください。
トラフィック制御機能を使用して、DMA システムは、トラフィック制御
カウンタがタイムアウトするか、トラフィックが自然に停止または方向転換するまでは、これまでの転送と同じ読出し／書込み方向に進む DAB ま
たはメモリ・バスでのデータ転送を優先的に許可します。トラフィック・
カウンタがゼロに達すると、優先権は逆の流れ方向に変更されます。このような方向の優先権は、あたかも逆方向のチャンネルの優先順位が 16 だ
け減少したかのように機能します。

9-56

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

たとえば、チャンネル 3と5 がDAB アクセスを要求していても、低優先順
位のチャンネル 5が「トラフィックと一緒」に進み、高優先順位のチャンネル 3 が「トラフィックと逆」に進む場合には、チャンネル3 の実際の優先順位は 19 になり、その代わりにチャンネル5 が許可されます。次のサイ
クルで、チャンネル 3と 6だけが DAB転送を要求しており、これらの転送要求が共に「トラフィックと逆」であった場合には、これらの実際の優先順位はそれぞれ 19 と 22になります。チャンネルの1 つ（チャンネル 3）が許可されますが、その方向は現在の流れとは逆です。バスの方向転換に必
要な遅延を除いて、バス・サイクルは浪費されません。
このタイプのトラフィック制御は、利用率（効率）を改善するための遅延のトレードオフを表します。トラフィック・タイムアウトを高くすると、各要求がその許可を待つ時間は増大しますが、混雑したシステムにおいては、達成可能な最大帯域幅を大幅に改善（90% 以上）することがよくあります。
優先的な DMA 優先順位付けをディスエーブルにするには、DMA_TC_PER レ
ジスタを 0x0000 にプログラムします。
X DMA_TC_PER レジスタと DMA_TC_CNT レジスタ

DMA トラフィック制御カウンタ周期レジスタ（DMA_TC_PER）とDMA ト
ラフィック制御カウンタ・レジスタ（DMA_TC_CNT）は、他のDMAレジス
タと連携してトラフィック制御を定義します。
MDMA_ROUND_ROBIN_COUNT フィールドは、MDMA ラウンド・ロビン周期に残る現在の転送カウントを示します。DMA_TC_PER が書き込まれたり、別のMDMA ストリームが許可されたり、すべての MDMA ストリームがアイドル状 態 に なっ た りす る たび に、この フ ィー ル ドは MDMA_ROUND_ROBIN_PERIOD に初期化されます。その後、各 MDMA 転送によって0 までカウン
ト・ダウンします。このカウントが 1 から 0 にデクリメントすると、次に使用可能な MDMA ストリームが選択されます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-57

DMA 性能の最適化

DAB_TRAFFIC_COUNT フィールドは、DABトラフィック周期に残る現在のサイクル・カウントを示します。DMA_TC_PER が書き込まれたり、DABバスが方向転換したりアイドル状態になったりするたびに、このフィールドは
DAB_TRAFFIC_PERIOD に初期化されます。その後、各システム・クロック（DMAストールの場合を除く）で DAB_TRAFFIC_PERIOD から0までカウント・
ダウンします。このカウントが非ゼロである間は、同じ方向のDABアクセスは優先的に扱われます。
このカウントが1から0までデクリメントすると、逆方向のDABアクセスが優先的に扱われ、方向転換をもたらします。この
カウントが0で、DABバス・アクセスが発生すると、新しいバーストを始めるために、カウントは DAB_TRAFFIC_PERIOD から再ロードされます。
DEB_TRAFFIC_COUNT フィールドは、DEBトラフィック周期に残る現在のサイクル・カウントを示します。DMA_TC_PER が書き込まれたり、DEBバスが方向転換したりアイドル状態になったりするたびに、このフィールドは
DEB_TRAFFIC_PERIOD に初期化されます。その後、各システム・クロック（DMAストールの場合を除く）で DEB_TRAFFIC_PERIOD から0までカウント・
ダウンします。このカウントが非ゼロである間は、同じ方向のDEBアクセスは優先的に扱われます。
このカウントが1から0までデクリメントすると、逆方向のDEBアクセスが優先的に扱われ、方向転換をもたらします。この
カウントが0で、DEBバス・アクセスが発生すると、新しいバーストを始めるために、カウントは DEB_TRAFFIC_PERIOD から再ロードされます。
DCB_TRAFFIC_COUNT フィールドは、DCB トラフィック周期に残る現在のサイクル・カウントを示します。DMA_TC_PER が書き込まれたり、DCB バス
が方向転換したりアイドル状態になったりするたびに、このフィールドは
DCB_TRAFFIC_PERIOD に初期化されます。その後、各システム・クロック（DMA ストールの場合を除く）で DCB_TRAFFIC_PERIOD から0 までカウン
ト・ダウンします。このカウントが非ゼロである間は、同じ方向の DCB
アクセスは優先的に扱われます。このカウントが 1 から0 までデクリメン
トすると、逆方向の DCB アクセスが優先的に扱われ、方向転換をもたらします。このカウントが 0で、DCB バス・アクセスが発生すると、新しいバーストを始めるために、カウントは DCB_TRAFFIC_PERIOD から再ロード
されます。

9-58

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

DMA トラフィック制御カウンタ周期レジスタ（DMA_TC_PER）

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

MDMA_ROUND_ROBIN_PERIOD[4:0]
MDMA ラウンド・ロビン・バーストの最大長。ゼロでない場合には、許可を受け取る MDMA ストリームは、他のMDMA ストリームを除いて、その数までの DMA 転送を許されます。

リセット＝ 0x0000

DCB_TRAFFIC_PERIOD[3:0]000 -DCB バス転送のグループ化は行われません
その他 -DMA と内部 L1 メモリとの間の DCB バス上で望まれる単方向バーストの長さ
DEB_TRAFFIC_PERIOD[3:0]000 -DEB バス転送のグループ化は行われません
その他 -DMA と外部メモリとの間の DEB バス上で望まれる単方向バーストの
長さ

DAB_TRAFFIC_PERIOD[2:0]000 - DAB バス転送のグループ化は行われません
その他 -DMA とペリフェラルとの間の DAB バス
上で望まれる単方向バーストの長さ

図 9-16. DMA トラフィック制御カウンタ周期レジスタ
DMA トラフィック制御カウンタ・レジスタ（DMA_TC_CNT）RO
15 14 13 12 11 10 9
0 0 0 0 0 0 0

MDMA_ROUND_ROBIN_
COUNT[4:0]
MDMA ラウンド・ロビン周期に残る
現在の転送カウント
DAB_TRAFFIC_COUNT[2:0]
DAB トラフィック周期に残る現在のサイクル・カウント

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

DCB_TRAFFIC_COUNT[3:0]
DCB トラフィック周期に残る
現在のサイクル・カウント
DEB_TRAFFIC_COUNT[3:0]
DEB トラフィック周期に残る
現在のサイクル・カウント

図 9-17. DMA トラフィック制御カウンタ・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-59

DMA 性能の最適化■ MDMA 優先順位とスケジューリング
すべての MDMA 動作は、ペリフェラル DMA 動作よりも低い優先順位を持っています。したがって、MDMAはペリフェラルDMA トラフィックによって使用されないメモリ帯域幅を効果的に使用します。
2 つの MDMAストリーム（S0-D0 と S1-D1）が使用される場合には、ユー
ザは固定ストリーム優先順位またはラウンド・ロビン方式によって帯域幅を割り当てることができます。これは、DMA_TC_PER レジスタの MDMA_ROUND_（9-55
ROBIN_PERIOD フィールドをプログラミングすることで選択されます
ページの「優先順位付けとトラフィック制御」を参照）。
このフィールドが 0に設定された場合には、MDMAは固定優先順位によってスケジュールされます。ストリーム 0 での転送実行の準備が完了するた
びに、MDMA ストリーム 0 は MDMA ストリーム 1 よりも優先順位が高くなります。一般に、MDMA ストリームでは使用可能なすべてのサイクル
でデータを転送できるため、ありとあらゆる MDMA ストリーム 0 の動作が完了するまで、MDMA ストリーム 1 のトラフィックは無期限に遅延させられることがあります。この方式は、低期間であっても遅延に敏感な
データ・バッファを長期間で低優先順位のバックグラウンド転送に割り込
ませて、すぐに移動させる必要のあるシステムで適切な場合があります。
MDMA_ROUND_ROBIN_PERIOD フィールドに 1 <= P <= 31 の範囲の非ゼロ値が設定されている場合には、ラウンド・ロビン・スケジューリング方式が使用されます。2つのMDMAストリームには、P 回までのデータ転送のバー
ストで交互にバス・アクセスが許可されます。この方式は、2 つの転送プ
ロセスが共存する必要があり、それぞれが使用可能な帯域幅の保証された一部分を持つシステムで使用できます。たとえば、1 つのストリームを内部―外部移動用にプログラムし、もう 1 つのストリームを外部―内部移動用にプログラムして、それぞれにほぼ等しいデータ帯域幅を割り当てることができます。

9-60

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

ラウンド・ロビン動作では、任意の時点での MDMA ストリーム選択は「フリー」または「ロック」です。最初、この選択はフリーです。MDMA が使用できるフリー・サイクルで（優先されるペリフェラル DMAアクセス
がないときに）は、MDMA ストリームの一方または両方がアクセスを要求した場合に優先順位の高いストリームが許可され（競合した場合にはストリーム 0）、続いてそのストリームの選択が「ロック」されます。DMA_
TC_CNT レジスタの MDMA_ROUND_ROBIN_COUNT カウンタ・フィールドには
MDMA_ROUND_ROBIN_PERIOD から周期 P がロードされ、MDMA 転送が始まります。カウンタは、データ転送のたび（各データ・ワードがメモリに書き込まれるとき）にデクリメントされます。カウント 1 に対応する転送の後で、この MDMA ストリーム選択は、もう一方のストリームにゼロ・オー
バーヘッドで自動的に渡されます。そして、MDMA_ROUND_ROBIN_COUNT カウ
ンタには、MDMA_ROUND_ROBIN_PERIOD からの周期値 P が再ロードされます。
このサイクルでは、もう一方の MDMA ストリームで転送実行の準備ができている場合には、そのストリーム選択は新しい MDMA ストリームでロックされます。もう一方の MDMA ストリームで転送実行の準備ができていない場合には、転送は実行されず、次のサイクルでストリーム選択はロック解除されて再びフリーになります。
1 つのMDMA ストリームだけがアクティブのときにラウンド・ロビン方式が使用された場合には、P 回の MDMA データ・サイクルごとに1 回のア
イドル・サイクルが発生し、帯域幅は 1/(P+1) だけ若干低下します。しかし、両方の MDMAストリームが使用された場合には、メモリDMA は（たとえば、メモリに対する読出し／書込み方向の逆転に通常伴うオーバー
ヘッド・サイクル以外には）ストリームの交替のための追加オーバーヘッ
ドなしで連続的に動作できます。MDMA ストリームの交替頻度を制限するさまざまなラウンド・ロビン周期値 P を選択することで、最大の転送効率を維持できます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-61

DMA 性能の最適化■ 緊急の DMA 転送
一般に、特定ペリフェラルの DMA 転送は一定の間隔で発生します。通常、この間隔が短いほど、そのペリフェラルに割り当てられる優先順位は高くなります。全ペリフェラルの平均帯域幅が合計帯域幅の大部分を占めない
場合には、全ペリフェラルの要求は必要に応じて許可してください。
ときには、瞬間的な DMA トラフィックが使用可能な帯域幅を超えて、輻
輳を引き起こすこともあります。このようなことが起きるのは、SDRAM
ページ・スワップやキャッシュ・ライン・フィルのために L1 または外部メモリが一時的にストールした場合です。ディスクリプタ・フェッチを行ったり DMAやペリフェラル内のFIFO をフィルするために、1つまたは複数の DMAチャンネルが多数の要求を開始した場合にも輻輳が発生する
ことがあります。
輻輳が持続する場合には、低優先順位の DMA ペリフェラルはデータ不足に陥るかもしれません。たとえペリフェラルの優先順位が低いにしても、ペリフェラルの一定の間隔が終了するまでに必要なデータ転送が行われない場合には、システム障害につながることもあります。この可能性を最小限に抑えるため、DMA ユニットは、データ不足が深刻なペリフェラルを検出し、最高の優先順位で優先的にサービスを許可します。
DMA チャンネルのメモリ・サービス要求は、次の 2 つの条件が満足された場合に「緊急」であると定義されます。
• チャンネルの FIFOで、DABバス転送の準備ができていない（つまり、送信 FIFO が空であるか、受信FIFO が満杯）。
• ペリフェラルは、その DMA 要求ラインをアサートしている。
ディスクリプタ・フェッチは、データ切れのペリフェラルに対する DMA
作業単位チェーンを開始または続行する必要がある場合に緊急であるといえます。MDMA チャンネルからのDMA要求は緊急ではありません。

9-62

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

1 つまたは複数のDMA チャンネルが緊急のメモリ要求を表明すると、2つのイベントが発生します。
• 緊急でないすべてのメモリ要求は、優先順位が 32 だけ減らされることにより、緊急の要求だけが許可されることが保証されます。緊急の要求が複数存在し、それらの間で方向の優先権が観測される場
合には、緊急の要求は互いに競合します。
• 結果として生じるメモリ転送は、ターゲットとするメモリ・システ
ム（L1 または外部）で優先処理とマークされます。そのメモリ・システム内で先行する、以前のすべての不完全なメモリ転送も同様です。したがって、ペリフェラルの緊急の要求に対処できるように、一連の外部メモリ・コア・アクセスには数サイクルの遅延が生じることもあります。
緊急の DMA 転送の優先的な処理は、完全に自動化されています。この機能のために、ユーザ制御は必要ありません。

DMA のソフトウェア管理
DMA と MDMAを管理するソフトウェア・タスクの開発には、いくつかの同期方式と制御方式を使用できます（9-50 ページの「メモリ DMA」も参照）。このようなソフトウェアには、他のソフトウェア・タスクから新しい DMA 転送の要求を受け付け、このような転送を既存の転送キューに統合し、転送が完了すると他のタスクに確実に通知できる機能が要求されます。
プロセッサでは、各 DMAペリフェラルと MDMA ストリームを別個のタスクによって管理したり、他のストリームと共に管理したりできます。各
DMA チャンネルには、直交性のある独立したコントロール・レジスタ、
リソース、割込みがあるため、1つのチャンネルに対する制御方式の選択
は、他のチャンネルでの制御方式の選択に影響を与えません。たとえば、
1 つのペリフェラルではリンクト・ディスクリプタ・リストの割込み駆動

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-63

DMA のソフトウェア管理方式を使用し、別のペリフェラルでは要求駆動型の“一度にバッファ”方
式を同時に使用して、IRQ_STATUS レジスタのポーリングによって同期をとることができます。

■ ソフトウェアと DMA の同期
ソフトウェア DMA 管理の重要な要素は、DMA バッファの完了とソフト
ウェアとの同期です。そのために最も良い方法は、割込み、IRQ_STATUS のポーリング、またはその両方の組合わせです。アドレスやカウントのポー
リングでは、パイプライン長に匹敵する緩い許容誤差内での同期のみを提供できます。
割込みベースの同期方式では、割込みのオーバーラン、つまり割込み処理
における過度の遅延によって、割込みイベントごとに DMA チャンネルの割込みハンドラを呼出しできない状態を回避する必要があります。一般に、システム設計では、チャンネルごとにただ 1つの割込みがスケジュー
ルされる（たとえば、ディスクリプタ・リストの最後で）か、または十分な割込み時間間隔を設定してすべての割込みが処理されることを保証する必要があります。なお、すべての割込みチャンネルには専用の独立した割込みがあるため、さまざまなペリフェラルの割込み間での相互作用は簡
単に管理できます。
レジスタ CURR_ADDR、CURR_DESC_PTR、CURR_X/Y_COUNT のポー リングは、
DMA とデータ処理の同期を正しくとるための方法としては推奨されません。その理由は、DMA FIFO とDMA ／メモリのパイプライン処理によります。カレント・アドレス・レジスタ、ポインタ・レジスタ、カウント・
レジスタでは、対応するメモリ操作の完了に先立っていくつかのサイクルを変更します。このことは、メモリ読出し／書込み命令によって、動作の結果が最初にコアから見える時間として測定されます。たとえば、外部メ
モリへの DMAメモリ書込み動作では、チャンネル AによるDMA 書込みが開始されて、SDRAMは、多くのシステム・クロック・サイクルを費やす
ページ・オープン動作を実行すると想定します。その後、DMA エンジン
は、チャンネル Bによる別の DMA 動作に進むことができます。この DMA

9-64

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

動作は、それ自体では遅延を発生しませんが、チャンネル A による遅い動作の背後にストールされます。チャンネル Bを監視しているソフトウェア
は、CURR_ADDR レジスタの内容を検査しても、チャンネル Bの CURR_ADDR に
よってポイントされるメモリ位置が書き込まれたかどうかを確実に判断できません。
しかし、DMA ／メモリ・パイプラインの長さを考慮した場合、カレント・
アドレス・レジスタ、ポインタ・レジスタ、カウント・レジスタのポーリ
ングでは、ソフトウェアによる DMA の緩い同期を認めることができます。
ペリフェラルDMAチャンネルのDMA FIFOの長さは4つのロケーション（4 つの8/16 ビット・データ・エレメント、または 2 つの 32 ビット・デー
タ・エレメント）であり、MDMA FIFO の場合は 8 つのロケーション（4つの 32ビット・データ・エレメント）です。これらの FIFO が不完全な作業（開始されていても、まだ完了していない読出しを含む）で満たされている場合には、DMA はカレント・アドレス／ポインタ／カウント・レジ
スタを進めません。
さらに、内部メモリへの結合された DMA と L1パイプラインの長さは、およそ 6 つの 8/16 ビット・データ・エレメントです。DMA と外部バス・インターフェース・ユニット（EBIU）パイプラインの長さは、MMR 読出
しから DMA レジスタの更新が見えるポイントから、メモリへのDMA ア
クセスとコア・アクセスが厳密に順序付けされるポイントまで測定した場
合に、およそ 3つのデータ・エレメントです。DMA FIFO長とDMA ／メ
モリ・パイプライン長が加算された場合には、同時に実行中の不完全なメ
モリ操作の最大数を見積もることができます。
（なお、DMA／メモリ・パ
イプラインには他の DMA チャンネルからのトラフィックが含まれることもあるため、これは最大値です）。
たとえば、ペリフェラル DMA チャンネルが 100 データ・エレメントの作業単位を内部メモリに転送しており、その CURR_X_COUNT レジスタが60 個の残りエレメントを示すため、少なくとも最初の 40 エレメントの処理は開始されていると想定します。パイプライン長の合計は 4（PDMA FIFO）

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-65

DMA のソフトウェア管理＋ 6（DMA ／メモリ・パイプライン）の合計、つまり 10 個のデータ・エ
レメントを超えません。したがって、最初の 40－ 10 ＝ 30データ・エレメ
ントの DMA 転送は完了したと判断して安全です。
正確な同期を実現するには、ソフトウェアはカレント・アドレス／ポイン
タ／カウント・レジスタをポーリングするのではなく、割込みを待つか
チャンネルの IRQ_STATUS レジスタを調べて、DMA の完了を確認してくだ
さい。DMA システムが割込みを発行したり、IRQ_STATUS ビットを変更したりした場合には、作業単位の最後のメモリ操作が完了しており、DSP
コードから確実に見えることが保証されます。メモリ読出し DMA では、
最終のメモリ読出しデータはDMAのFIFOに安全に受信されています。メ
モリ書込みDMAでは、DMAユニットはデータが書き込まれたEBIUやL1
メモリからのアクノレッジを受信しています。
以下の例では、ソフトウェアとさまざまなスタイルの DMA との同期をとる方法を示します。
X シングル・バッファ DMA 転送

ペリフェラルの DMA 動作がシングル・バッファの孤立した転送から構成される場合には、同期は簡単です。DMA 動作は、チャンネルのコントロー
ル・レジスタへのソフトウェア書込みによって開始されます。ユーザは、メモリ内のシングル・ディスクリプタを使用するよう選択できます。その場合、ソフトウェアは DMA_CONFIG レジスタと NEXT_DESC_PTR レジスタにだ
け書き込む必要があります。あるいは、ユーザはソフトウェアからすべての MMRレジスタに直接書き込んで、DMA_CONFIG レジスタへの書込みで終わるようにも選択できます。
DMA の完了を通知する最も簡単な方法は、割込みです。これは、DMA_
CONFIG レジスタの DI_EN ビットと、システム割込みコントローラの必要なセットアップによって選択されます。割込みを使用しないほうが望ましい
場合には、ソフトウェアは IRQ_STATUS レジスタを読み出し、DMA_RUN ビットをテストすることによって完了をポーリングできます。このビットがゼロの場合、バッファ転送は完了しています。

9-66

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

X 自動バッファリングによる連続転送

ペリフェラルの DMA データが信号データの安定した周期的なストリームから構成される場合には、DMA 自動バッファリング（FLOW = 1）が有効なオプションであることもあります。ここでは、ループに対してプロセッ
サとDMAのオーバーヘッドがない1次元または2次元のインデックス付けを使用して、メモリ・バッファは循環アドレッシング方式で DMAを送／受信します。同期オプションには、以下のものが含まれます。
• 1D、割込み駆動：ソフトウェアは各バッファの終わりに割込みされます。重要な設計ポイントとして、ソフトウェアは、次の DMA
転送の前にバッファ内の最初の項目を処理しなければならないことです。次の DMA 転送では、最初のバッファ位置はソフトウェア
によって処理される前に上書きされたり再読出しされることがあります。システム設計によって、あらゆる状況でデータ・リピート
周期が割込み遅延よりも長いことが保証される場合には、この方式を使用できることがあります。
• 2D、割込み駆動（ダブル・バッファリング）：DMA バッファは複数のサブバッファに分割され、割込みは各 DMA内側ループの完了時に通知されるよう選択されます（DMA_CONFIG で DI_SEL = 1 に設定）。このようにして、伝統的なダブル・バッファまたは「ピンポン」方式を実装できます。
たとえば、次に示す設定によって、1K ワード・バッファ内の 2 つの 512 ワード・サブバッファを使用して、16 ビットのペリフェラ
ル・データを受信できます。
START_ADDR = バッファのベース・アドレス
DMA_CONFIG = 0x10D7 ( FLOW = 1, DI_EN = 1, DI_SEL = 1,
DMA2D = 1, WDSIZE = 01, WNR = 1, DMA_EN = 1)
X_COUNT = 512
X_MODIFY = 2、16 ビット・データの場合

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-67

DMA のソフトウェア管理

Y_COUNT = 2、2 つのサブバッファの場合
Y_MODIFY = 2、連続的なサブバッファの場合は X_MODIFY と同じ• 2D、ポーリング：割込みオーバーヘッドが受け入れがたくても、アドレス／カウント・レジスタ・ポーリングの緩い同期が許容される場合には、2D マルチバッファ同期方式を使用できます。たとえば、受信データは 16個の 32ビット・エレメントのパケットで処理する必要があるとします。次に示す設定によって、4つの部分から成る
2D DMA バッファを割り当て、4つのサブバッファがそれぞれ 1つのパケットを保持することができます。
START_ADDR = バッファのベース・アドレス
DMA_CONFIG = 0x101B (FLOW = 1, DI_EN = 0,
WDSIZE = 10, WNR = 1, DMA_EN = 1)
X_COUNT = 16

DMA2D = 1,

X_MODIFY = 4、32 ビット・データの場合
Y_COUNT = 4、4 つのサブバッファの場合
Y_MODIFY = 4、連続的なサブバッファの場合は X_MODIFY と同じ
同期コアでは、Y_COUNT を読み出して現在転送中のサブバッファを判定し、1 つのフル・サブバッファにパイプライン処理を担当させることができます。たとえば、Y_COUNT の値が 3 である場合には、サブバッファ 3 が転送中であると想定できますが、サブバッファ 2の一部はまだ受信されていないかもしれません。しかし、ソフト
ウェアは、サブバッファ1 または 0 の処理を安全に進めることができます。
• 1D 非同期FIFO：システムの設計によって、ペリフェラルのデータの処理とデータのDMAレートが定常状態で相互に関連していることが保証され、しかも短期の遅延変動を許容する必要がある場合には、簡単な FIFOを構築することが適切かもしれません。ここでは、
DMA チャンネルは割込みもポーリングもなしで、1D 自動バッ
ファ・モード・アドレッシングを使用してプログラムできます。

9-68

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

X ディスクリプタ構造

簡単な 1D アレイや 2D アレイでないメモリ・データ構造では、DMA ディ
スクリプタを使用してデータを送／受信できます。たとえば、1 パケットのデータをメモリ内の複数の異なる位置から送信する場合（1つの位置からのヘッダ、メモリ・プール・アロケータによって管理される数ブロックのメモリのリストからのペイロード、チェックサムを含んでいる小さなトレーラ）、メモリ領域ごとに別個の DMAディスクリプタを準備して、DMA_
CONFIG での適切な FLOW 設定の選択に基づいて、ディスクリプタをアレイ単位またはリスト単位でグループ化できます。
ソフトウェアは、1つまたは複数のディスクリプタに対する割込み通知を選択することによって、構造の転送の進行と同期をとることができます。
たとえば、ソフトウェアはヘッダのディスクリプタとトレーラのディスクリプタに対する割込み通知を選択できますが、ペイロード・ブロックのディスクリプタに対しては選択できません。
DMA ディスクリプタのリストやアレイを構築する際には、DMA_CONFIG
ディスクリプタ・エレメント内のさまざまなフィールドの意味を再確認する必要があります。特に、以下のことに注意してください。
• DMA_CONFIG の下位バイトでは、現在のディスクリプタによって実行される DMA 転送を指定します（たとえば、割込みイネーブル、
2D モード）。
• DMA_CONFIG の上位バイトでは、チェーン内の次のディスクリプタのフォーマットを指定します。特定のディスクリプタの NDSIZE
フィールドと FLOW フィールドは、ディスクリプタ自身のフォーマッ
トには対応せず、次のディスクリプタへのリンクを指定します（ある場合）。
一方、DMA ユニットが再起動されているときには、DMA チャンネルのDMA_CONFIG レジスタに書き込まれたDMA_CONFIG値の2つのバイトはカレン
ト・ディスクリプタに対応するはずです。最小限、FLOW、NDSIZE、WNR、
DMA_EN の各フィールドは、すべてカレント・ディスクリプタと一致する必ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-69

DMA のソフトウェア管理

要があります。WDSIZE、DI_EN、DI_SEL、RESTART、DMA2D の各フィールド
は、メモリから読み出されたディスクリプタの DMA_CONFIG 値から取得されます（そして、レジスタに最初に書き込まれたフィールド値は無視されます）。
X ディスクリプタ・キューの管理

システム設計者は、他のソフトウェアから DMA 要求を受け付けるDMA
マネージャ機能を作成することもできます。DMAマネージャ・ソフトウェ
アは、新しい作業要求が受信されるタイミングやそれらの要求の内容を前もって知ることはできません。ソフトウェアは、DMA ディスクリプタの循環リンク・リストを使用して、これらの転送を管理できます。なお、各
ディスクリプタの NDPH メンバーと NDPL メンバーは次のディスクリプタを指し示し、最後のディスクリプタは先頭を指し示します。
このディスクリプタ・リストに書き込むコードでは、プロセッサの循環ア
ドレッシング・モードを使用できます（I、L、M、B レジスタ）。したがって、循環構造を管理するために、比較命令や条件付き命令を使用する必要はありません。この場合、各ディスクリプタの NDPH メンバーと NDPL メン
バーは起動時に 1回書き込んで、各ディスクリプタの新しい内容が書き込まれるときには飛ばすこともできます。
ディスクリプタ・キューの同期をとる方法としては、割込みの使用をお勧めします。ディスクリプタ・キューは、少なくとも最後の有効なディスク
リプタでは常に割込みを生成するようにできています。
割込みを使用してディスクリプタ・キューを管理するには、2 つの一般的な方法があります。
• 全ディスクリプタで割込みを生成• 最小の割込み：最後のディスクリプタでのみ生成

9-70

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

全ディスクリプタでの割込みを使用するディスクリプタ・キュー
このシステムでは、DMA マネージャ・ソフトウェアは、すべてのディス
クリプタでの割込みをイネーブルにすることによって、DMA ユニットとの同期をとります。この方式を使用するのは、システム設計によって各割込みイベントが（割込みオーバーランなしで）別々に処理されることを保証できる場合に限ってください。
ディスクリプタ・キューの同期を維持するため、非割込みソフトウェアはキューに追加されたディスクリプタのカウントを保持しますが、割込みハ
ンドラは、キューから取り除かれた完了済みディスクリプタのカウントを保持します。これらのカウントが等しくなるのは、DMA チャンネルがす
べてのディスクリプタを処理した後で休止したときだけです。
新しい作業要求が受信されるたびに、DMA マネージャ・ソフトウェアは
新しいディスクリプタを初期化して、FLOW 値 0で DMA_CONFIG 値を書き込みます。次に、このソフトウェアはディスクリプタ・カウントを比較して、DMA チャンネルが実行中かどうかを判定します。DMAチャンネルが休止
中（カウントが等しい）の場合には、ソフトウェアはそのカウントをインクリメントしてから、新しいディスクリプタの DMA_CONFIG 値をDMA チャ
ンネルの DMA_CONFIG レジスタに書き込むことによってDMAユニットを開始します。
カウントが等しくない場合には、ソフトウェアは最後から 2 番目のディス
クリプタの DMA_CONFIG 値について、その上半分（FLOW と NDSIZE）が新たにキュー登録されたディスクリプタを記述するように変更します。残りのディスクリプタ・データ構造が前もって初期化されている場合には、この操作は DMA チャンネルを混乱させません。しかし、DMA チャンネルによって DMA_CONFIG の新しい値が読み出されたか古い値が読み出されたかを正しく判定するには、ソフトウェアと DMA の同期をとることが必要です。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-71

DMA のソフトウェア管理

この同期動作は、割込みハンドラで実行してください。まず、割込みと同時に、ハンドラはチャンネルの IRQ_STATUS レジスタを読み出してください。DMA_RUN ステータス・ビットがセットされている場合には、そのチャンネルは別のディスクリプタの処理に進んでおり、割込みハンドラはそのカウントをインクリメントして終了できます。しかし、DMA_RUN ステータ
ス・ビットがセットされていない場合には、処理すべきディスクリプタがなくなったか、最後のディスクリプタのキュー登録が遅すぎた（つまり、最後から 2番目のディスクリプタの DMA_CONFIG エレメントの変更は、そのエレメントが DMAユニットに読み出された後で行われた）ために、チャンネルは休止しています。この場合、割込みハンドラは、最後のディスクリプタに適切なDMA_CONFIG 値をDMAチャンネルのDMA_CONFIG レジスタに書き込み、完了したディスクリプタ・カウントをインクリメントし、終了
してください。
システムの割込み遅延が大きく、チャンネルのいずれかの DMA割込みがドロップされる場合にも、やはり、このシステムは機能しなくなることがあります。複数のディスクリプタの割込みを確実に同期させることのできる割込みハンドラは複雑になる必要があり、信頼性の高い動作を保証する
ために複数のMMRアクセスを実行します。このようなシステム環境では、
最小割込み同期方式が好まれます。
最小の割込みを使用するディスクリプタ・キュー
このシステムでは、任意の時点でキュー内で可能な DMA 割込みイベント
は 1 つだけです。このシステム用の DMA 割込みハンドラも、きわめて短くできます。ここではディスクリプタ・キューは「アクティブ」部分と「待機」部分にまとめられ、割込みは、各部分の最後のディスクリプタでのみイネーブルにされます。
新しい DMA要求が処理されるたびに、ソフトウェアの非割込みコードは新しいディスクリプタの内容をフィルして、それをキューの待機部分に追加します。ディスクリプタの DMA_CONFIG ワードでは、FLOW 値がゼロになっているはずです。DMA キューの完了割込みが発生する前に複数の要求が受信された場合には、非割込みコードは後のディスクリプタをキューに登

9-72

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

録します。これにより、キューの待機部分は、DMA ユニットによって処理されているキューのアクティブ部分から切断されます。つまり、最後を除くすべてのアクティブ・ディスクリプタには FLOW 値＞＝4が含まれ、割込みイネーブルは設定されていません。一方、最後のアクティブ・ディス
クリプタには 0 の FLOW が含まれ、割込みイネーブル・ビット DI_EN が 1 に設定されています。また、最後を除くすべての待機ディスクリプタにはFLOW 値＞＝4 が含まれ、割込みイネーブルは設定されていません。一方、最後の待機ディスクリプタには 0 の FLOW が含まれ、割込みイネーブル・ビットは 1 に設定されています。これによって、DMA ユニットは、アクティブ・キュー全体を自動的に処理してから、1つの割込みを発行できます。また、この配置では、1回の DMA_CONFIG レジスタ書込みによって、割込みハンドラ内の待機キューを簡単に起動できます。
新しい待機ディスクリプタをキューに登録した後、非割込みソフトウェア
は、待機キュー内の最初の待機ディスクリプタの起動に使用する希望の
DMA_CONFIG 値（または、待機中のディスクリプタがないことを示す 0）を含んでいるメモリ・メールボックス位置に、その割込みハンドラ向けのメッセージを残すはずです。
綿密な同期対策が講じられる場合を除いて、DMA ユニットによるアク
ティブ・ディスクリプタ・キューの処理が開始された後では、ソフトウェ
アはアクティブ・ディスクリプタ・キューの内容を直接変更しないことが大切です。ディスクリプタ・キューの最も簡単な実装形態では、DMA マ
ネージャ・ソフトウェアはアクティブ・キュー上のディスクリプタを変更しません。その代わりに、DMA マネージャは DMA キュー完了割込みによって、アクティブ・キュー全体の処理が完了したことを知らされるまで待ちます。
DMA キュー完了割込みが受信されると、割込みハンドラは非割込みソフ
トウェアからメールボックスを読み出し、その中の値を DMA チャンネルの DMA_CONFIG レジスタに書き込みます。この 1 回のレジスタ書込みによってキューが再起動され、待機キューは実質的にアクティブ・キューに変換されます。その後、割込みハンドラは非割込みソフトウェアにメッセージ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-73

DMA エラー（アボート）を戻して、アクティブ・キューに受け付けられた最後のディスクリプタの位置を知らせます。一方で、割込みハンドラがそのメールボックスを読み出し、実行すべき作業がないことを示すゼロの DMA_CONFIG 値を見つけた
場合には、非割込みソフトウェアに適切なメッセージ（たとえば、ゼロ）を戻して、キューが停止したことを知らせます。この簡単なハンドラは、
ごくわずかな命令数で記述できるはずです。
新しい DMA作業要求を受け付ける非割込みソフトウェアでは、新しい作業の起動と割込みハンドラの同期をとる必要があります。キューが停止した場合（つまり、割込みソフトウェアからのメールボックスがゼロの場
合）には、非割込みソフトウェアがキューの起動を担当します（最初のディスクリプタの DMA_CONFIG 値を、チャンネルの DMA_CONFIG レジスタに書き込みます）。しかし、キューが停止していない場合には、非割込みソ
フトウェアは DMA_CONFIG レジスタに書き込んではいけません（DMA エ
ラーが発生します）。その代わりに、ディスクリプタを待機キューに登録
して、割込みハンドラに割り当てられたメールボックスを更新してください。

DMA エラー（アボート）
DMA コントローラは、DMA プロセスの異常終了（つまり、アボート）を引き起こす条件にフラグを立てます。この機能は、DMA 関連のプログラ
ミング・エラーを検出する方法の 1つとして、システム開発とデバッグ用のツールとして提供されます。DMA エラー（アボート）は、下記の場合に DMAチャンネル・モジュールによって検出されます。DMAエラーが発生すると、チャンネルはすぐに停止して（DMA_RUN が 0になります）、プリ
フェッチされたデータは廃棄されます。さらに、DMA_ERROR 割込みがアサー
トされます。
DMA コントローラ全体に対してただ 1つの DMA_ERROR 割込みがあり、いず
れかのチャンネルがエラー条件を検出するたびにアサートされます。

9-74

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

DMA_ERROR 割込みハンドラは、チャンネルごとに以下の動作を行う必要があります。
• 各チャンネルの IRQ_STATUS レジスタを読み出して、DMA_ERR ビットがセット（ビット 1）されているチャンネルを探します。
• そのチャンネルでの問題を解決します（たとえば、レジスタ値を修正します）。
• DMA_ERR ビットをクリアします（IRQ_STATUS にビット 1 ＝ 1 を書き込みます）。
以下のエラー条件は、DMA ハードウェアによって検出され、DMA アボー
ト割込みにつながります。
• 設定レジスタに無効な値が含まれています。
- 不正な WDSIZE 値（WDSIZE = b#11)- ビット 15 が 0 に設定されていない- 不正な FLOW 値（FLOW = 2、3、5)- NDSIZE 値が FLOW と一致しない。9-77 ページの表 9-20 を参照。
• チャンネルの実行中に、レジスタ書込みの拒否が発生しました。
DMA_RUN = 1 のとき、書込みできるレジスタは DMA_CONFIG と IRQ_STATUS だけです。
• メモリ・アクセス中にアドレス・アライメント・エラーが発生しました。たとえば、DMA_CONFIG レジスタで WDSIZE = 1（16 ビット）であっても、アドレスの最下位ビット（LSB）が 0と等しくありません。あるいは、 WDSIZE = 2（32 ビット）であっても、アドレスの 2つの LSB が 00と等しくありません。
• メモリ空間の遷移が試みられました（外部―内部、またはその逆）。
たとえば、現在の DMAアドレス（CURR_ADDR）が 0xF000 0000 の境
界を越えました。あるいは、カレント・ディスクリプタ・ポインタ（CURR_DESC_PTR）が 0xF000 0000 の境界を越えました。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-75

DMA エラー（アボート）• メモリ・アクセス・エラーが発生しました。未実装の内部アドレスやキャッシュとして定義された内部アドレスに対してアクセスが試みられたか、または外部アクセスによってエラーが発生しました（外部メモリ・インターフェースによって通知されます）。
DMA ハードウェアによって検出されない禁止状態もあります。このような状態に対しては、DMA アボートは通知されません。
• DMA_CONFIG 方向ビット（WNR）が、マッピングされたペリフェラルの方向と一致しません。
• DMA_CONFIG 方向ビットが、MDMA チャンネルの方向と一致しません。
• DMA_CONFIG ワード・サイズ（WDSIZE）は、マッピングされたペリフェラルによってサポートされていません。
• MDMAストリームのソースとデスティネーションでの DMA_CONFIG
ワード・サイズが等しくありません。
• ディスクリプタ・チェーンは、同じ内部／外部メモリ空間内にない
データ・バッファを示します。
• 2D DMA で、X_COUNT = 1 です。

9-76

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

ダイレクト・メモリ・アクセス

表 9-20.

正当な NDSIZE 値FLOW

NDSIZE

0

0

1

0

4

0 < NDSIZE <= 7

デ ィ ス ク リ プ タ・ア レイ、ディスクリプタ・ポ
インタのフェッチなし

6

0 < NDSIZE <= 8デ ィ ス ク リ プ タ・リ ス
ト、スモール・ディスク
リ プ タ・ポ イ ン タ を
フェッチ

7

0 < NDSIZE <= 9デ ィ ス ク リ プ タ・リ スト、ラージ・ディスクリ
プタ・ポインタをフェッチ

注

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

9-77

DMA エラー（アボート）

9-78

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

第10章 SPI互換ポート・コントローラ

このプロセッサのシリアル・ペリフェラル・インターフェース（SPI）ポートは、SPI互換の多種多様なペリフェラル・デバイスに I/Oインターフェースを提供します。
SPI ポートは、設定可能な一連のオプションによって、他のSPI 互換デバ
イスとのグルーレスなハードウェア・インターフェースを提供します。SPI
は、2 本のデータ・ピン、デバイス・セレクト・ピン、クロック・ピンから構成される、4 線式インターフェースです。SPI は全二重の同期シリアル・インターフェースであり、マスター・モード、スレーブ・モード、マルチマスター環境をサポートします。SPI 互換のペリフェラル・システム
は、プログラマブルなボーレートとクロック位相／極性にも対応します。
SPI は、マルチマスター・シナリオに対応してデータ競合を回避するために、オープン・ドレイン・ドライバを使用します。
SPI 互換インターフェースへのインターフェースに使用できる、SPI 互換の代表的なペリフェラル・デバイスには以下のものが含まれます。
• 他の CPU またはマイクロコントローラ• コーデック• A/D コンバータ• D/A コンバータ• サンプル・レート・コンバータ• SP/DIF または AES/EBUデジタル・オーディオ送受信機

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

10-1• LCD ディスプレイ
• シフト・レジスタ• SPI エミュレーション付きのFPGASPI は、複数のSPI 互換デバイスとの通信を可能にする業界標準の同期シ
リアル・リンクです。SPI ペリフェラルは、2 本のデータ・ピン（MOSI とMISO）、1 本のデバイス・セレクト・ピン（SPISS）、ゲーテッド・クロッ
ク・ピン（SCK）から構成される、同期型の 4線式インターフェースです。
2 本のデータ・ピンによって、他のSPI 互換デバイスへの全二重動作が可能になります。SPI には、プログラマブルなボーレート、クロック位相、
クロック極性も含まれます。
SPI は、他のデバイスとインターフェースをとることによってマルチマス
ター環境で動作でき、マスター・デバイスまたはスレーブ・デバイスとして機能します。マルチマスター環境では、SPIインターフェースは、デー
タ・バス競合を回避するためにオープン・ドレイン出力を使用します。
図 10-1 はSPI のブロック図を示します。このインターフェースは基本的にはシフト・レジスタであり、他の SPI デバイスとの間で、SCK レートで一度に 1 ビットずつ、データビットを連続的に送／受信します。SPI デー
タは、シフト・レジスタを使用して、同時に送／受信されます。SPI 転送が行われるとき、データが送信される（シフト・レジスタから連続的にシフト・アウトされます）と同時に、新しいデータが受信されます（同じシ
フト・レジスタの他端に連続的にシフト・インされます）。SCK は、2本のシリアル・データ・ピンでデータのシフト操作とサンプリングの同期をと
ります。

10-2

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

SPI 互換ポート・コントローラ

MOSI

M

MISO

S

S

M

SCK

SPISS

SPIࠗࡦ࠲࡯ࡈࠚ࡯ࠬ࡮
ࡠࠫ࠶ࠢ

SPIౝㇱ
ࠢࡠ࠶ࠢ
⊒↢ེ
SPI_CTLSPI_STࠪࡈ࠻࡮࡟ࠫࠬ࠲SPI_RDBR
ฃା࡟ࠫࠬ࠲

SPI_TDBR
ㅍା࡟ࠫࠬ࠲16

PAB

SPI IRQ߹ߚߪDMAⷐ᳞ᲑߩFIFO
16

DAB

図 10-1. SPI ブロック図
SPI データ転送中に、1 つの SPI デバイスは SPI リンク・マスターとして機能します。つまり、SPI シリアル・クロックを生成し、SPI デバイス選
択信号（SPISS）をアサートすることによって、データ・フローを制御します。もう 1 つの SPIデバイスはスレーブとして機能し、マスターからの新しいデータをそのシフト・レジスタに受け付けると同時に、その SPI送
信データ・ピンを通じて、要求されたデータをシフト・レジスタから送信します。他のマイクロコントローラやマイクロプロセッサと同様に、複数のプロセッサが交替でマスター・デバイスになることができます。1つのマスター・デバイスは、複数のスレーブに同時にデータをシフトすることもできます（ブロードキャスト・モードと呼ばれます）。しかし、任意の時点で出力を駆動してマスターにデータを書き戻せるのは1つのスレーブだけです。ブロードキャスト・モードは必ず守らねばなりません。このモードでは、マスターからのデータを受信するよう複数のスレーブを選択できますが、データをマスターに送り返すようにできるのは、一度に 1つのスレーブだけです。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

10-3

インターフェース信号

複数のプロセッサがそのSPIポートを介して接続されるマルチマスター環
境やマルチデバイス環境では、すべての MOSI ピン、MISO ピン、SCK ピンが、それぞれ共に接続されています。
マルチスレーブ環境の場合、プロセッサは、SPIスレーブ・デバイスに対する専用の SPI スレーブ・セレクト信号である 7 つのプログラマブル・フ
ラグ PF1 ～ PF7 を利用できます。

L

リセット時に、SPIはディスエーブルにされ、スレーブとして設定されます。

インターフェース信号
以下の節では、SPI信号について説明します。

■ シリアル・ペリフェラル・インターフェースのクロック信号（SCK）
SCK 信号はSPI クロック信号です。この制御信号は、マスターによって駆動され、データの転送レートを制御します。マスターは、さまざまなボー
レートでデータを送信できます。SCK 信号は、送信されるビットごとに1回循環します。これは、デバイスがマスターとして設定されている場合には出力信号であり、デバイスがスレーブとして設定されている場合には入力信号です。
SCK はゲーテッド・クロックであり、データ転送中には転送されるワードの長さの間だけアクティブです。アクティブ・クロック・エッジの数は、
データ・ラインで駆動されたビットの数と同じです。シリアル・ペリフェ
ラル・スレーブ・セレクト入力（SPISS）が非アクティブ（ハイレベル）に駆動された場合には、スレーブ・デバイスはシリアル・クロックを無視し
ます。

10-4

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

SPI 互換ポート・コントローラ

SCK は、MISO ラインと MOSI ラインで駆動されたデータをシフト・アウト／

シフト・インするために使用されます。データは、クロックのアクティ
ブ・エッジで常にシフト・アウトされ、クロックの非アクティブ・エッジ
でサンプリングされます。データを基準にしたクロック極性とクロック位
相は、SPI コントロール・レジスタ (SPI_CTL) で設定可能であり、転送
フォーマットを定義します。

■ シリアル・ペリフェラル・インターフェースのスレーブ・
セレクト入力信号
SPISS 信号は、SPI シリアル・ペリフェラル・スレーブ・セレクト入力信号です。これはアクティブ・ロー信号であり、プロセッサがスレーブ・デ
バイスとして設定されたとき、プロセッサをイネーブルにするために使用されます。この入力専用ピンは、チップ・セレクトのように振る舞い、ス
レーブ・デバイス用にマスター・デバイスによって提供されます。マス
ター・デバイスの場合には、このピンは、マルチマスター環境でのエラー
信号入力として機能できます。マルチマスター・モードで、マスターの
SPISS 入力信号がアサート（ローレベルに駆動）され、SPI_CTL レジスタのPSSE ビットがイネーブルにされた場合には、エラーが発生しています。これは、他のデバイスもマスター・デバイスになろうとしていることを意味します。

L

SPISS 信号は、PF0 ピンと同じピンです。

■ マスター出力／スレーブ入力（MOSI）
MOSI ピンは、マスター出力／スレーブ入力ピンであり、双方向 I/O データ・

ピンの 1つです。プロセッサがマスターとして設定されている場合、MOSI
ピンはデータ送信（出力）ピンになり、出力データを送信します。プロ
セッサがスレーブとして設定されている場合、MOSI ピンはデータ受信（入力）ピンになり、入力データを受信します。SPI 相互接続では、データは、マスターの MOSI 出力ピンからシフト・アウトされ、スレーブの MOSI 入力にシフト・インされます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

10-5インターフェース信号■ マスター入力／スレーブ出力（MISO）
MISO ピンは、マスター入力／スレーブ出力ピンであり、双方向 I/O データ・

ピンの 1つです。プロセッサがマスターとして設定されている場合、MISO
ピンはデータ受信（入力）ピンになり、入力データを受信します。プロ
セッサがスレーブとして設定されている場合、MISO ピンはデータ送信（出力）ピンになり、出力データを送信します。SPI 相互接続では、データは、スレーブの MISO 出力ピンからシフト・アウトされ、マスターの MISO 入力
ピンにシフト・インされます。

L

任意の時点でデータの送信を許されるのは、1 つのスレーブだけです。

図 10-2の SPI設定例では、プロセッサをスレーブ SPI デバイスとして使用する方法を示します。8 ビットのホスト・マイクロコントローラは SPI マ
スターです。

L

プロセッサはその SPI インターフェースを介してブートできるた
め、ユーザのアプリケーション・コードとデータは、実行の前にダウンロードできます。

8ࡆ࠶࠻ߩࡎࠬ࠻࡮
ࡑࠗࠢࡠࠦࡦ࠻ࡠ࡯࡜

Blackfinࡊࡠ࠮࠶ࠨߩ
ࠬ࡟࡯ࡉSPI࠺ࡃࠗࠬ

SCLK

SCLK

S_SEL

SPISS

MOSI

MOSI

MISO

MISO

図 10-2. スレーブ SPI デバイスとしての ADSP-BF533

10-6

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

SPI 互換ポート・コントローラ■ 割込み出力
SPI には、データ割込みとエラー割込みという、2 つの割込み出力信号があります。
SPI データ割込み信号の振る舞いは、SPI コントロール・レジスタの転送開始モード・ビット・フィールド（TIMOD）に依存します。DMA モード（TIMOD = 1X）では、データ割込みは DMA 要求として機能し、DMA FIFO
で書込み（TIMOD = 11）または読出し（TIMOD = 10）の準備ができたときに生成されます。非 DMA モード（TIMOD = 0X）では、データ割込みが生成されるのは、SPI_TDBR で書込み（TIMOD = 01）の準備ができたとき、または SPI_RDBR で読出し（TIMOD = 00）の準備ができたときです。
DMA モードと非 DMA モードのいずれでも、モード・フォルト・エラーが発生すると、マスターで SPI エラー割込みが生成されます。DMA モード
では、アンダーフロー（TIMOD = 11 の場合は TIMOD = 11）またはオーバーフロー（TIMOD = 10 の場合は RBSY）のエラー条件があるときにも、エラー
割込みを生成できます。非 DMA モードでは、アンダーフロー条件とオー
バーフロー条件は、SPI_STAT レジスタのそれぞれ TXE ビットと RBSY ビットをセットしますが、エラー割込みを生成しません。
この割込み出力の詳細については、10-9 ページの「SPI_CTL レジスタ」の TIMOD ビットの説明を参照してください。

SPI レジスタ
SPI ペリフェラルには、ユーザ・アクセス可能な多くのレジスタが含まれています。これらのレジスタのいくつかは、DMA バスを通してもアクセスできます。4 本のレジスタには制御情報とステータス情報が含まれています（SPI_BAUD、SPI_CTL、SPI_FLG、SPI_STAT）。2本のレジスタは送／受
信データのバッファリングに使用されます（SPI_RDBR と SPI_TDBR）。DMA

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

10-7

SPI レジスタ

関連のレジスタの詳細については、第 9 章「ダイレクト・メモリ・アクセ
ス」を参照してください。シフト・レジスタ SFDR は SPI モジュールの内部にあり、直接にアクセスできません。
これらのレジスタのビットを使用して、エラーやその他の条件を通知する
方法については、10-30 ページの「エラー信号とフラグ」を参照してくだ
さい。SPIレジスタとビット機能の詳細については、10-21 ページの「レジスタ機能」を参照してください。

■ SPI_BAUD レジスタ
SPI ボーレート・レジスタ（SPI_BAUD）は、マスター・デバイスのビット
転送速度の設定に使用されます。スレーブとして設定されたとき、このレジスタに書き込まれた値は無視されます。シリアル・クロック周波数は、次の式によって決定されます。
SCK 周波数＝（ペリフェラル・クロック周波数 SCLK）／（2 × SPI_BAUD）

このレジスタに値 0 または1 を書き込むと、シリアル・クロックはディス
エーブルにされます。したがって、最大シリアル・クロック・レートは、
システム・クロック・レートの 4 分の 1です。
SPI ボーレート・レジスタ（SPI_BAUD）

0xFFC0 0514

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

ボーレート
SCLK / (2 ×SPI_BAUD)

図 10-3. SPI ボーレート・レジスタ

10-8

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

SPI 互換ポート・コントローラ

表 10-1 は、SPI_BAUD に対するいくつかのボーレート値を示します。
表 10-1.

SPI マスターのボーレート例

SPI_BAUD の 10 進値

SPI クロック（SCK）の除算係数

100MHz での SCLK の
ボーレート

0

N/A

N/A

1

N/A

N/A

2

4

25MHz

3

6

16.7MHz4

8

12.5MHz

65,535 (0xFFFF)

131,070

763Hz■ SPI_CTL レジスタ
SPI コントロール・レジスタ（SPI_CTL）は、SPI システムを設定し、イネーブルにするために使用されます。このレジスタは、SPIインターフェー
スをイネーブルにし、デバイスをマスターまたはスレーブとして選択し、データ転送フォーマットとワード・サイズを決定するために使用されます。
「ワード」という用語は、SPI_CTL のワード長（SIZE）ビットに応じて、8ビットまたは 16 ビットの単一データ転送を表します。また、ハードウェ
アによって変更できる 2つの特殊なビットもあります（SPE と MSTR）。
TIMOD フィールドは、送／受信バッファに転送を開始させるアクションの指定に使用されます。00に設定された場合、受信バッファが読み出されると SPIポート・トランザクションが開始されます。最初の SPI ポート・ト
ランザクションを開始するために読出しが必要なため、最初の読出しからのデータは捨てる必要があります。01に設定された場合、送信バッファが書き込まれるとトランザクションが開始されます。値 10 では DMA 受信モードが選択され、DMA 受信モードの SPI をイネーブルにして最初のト
ランザクションが開始されます。それ以降の個々のトランザクションは、

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

10-9

SPI レジスタ

SPI_RDBR のDMA 読出しによって開始されます。値 11では DMA 送信モードが選択され、トランザクションは SPI_TDBR の DMA 書込みによって開始されます。
PSSE ビットは、マスターの SPISS 入力をイネーブルにするために使用されます。使用しない場合には、SPISS をディスエーブルにして、チップ・ピ
ンを汎用 I/Oとして解放することができます。
EMISO ビットは、MISO ピンを出力としてイネーブルにします。これが必要となるのは、マスターがさまざまなスレーブに同時に送信したい（ブロードキャスト）環境です。マスターにデータを送信して戻せるのは、1つのスレーブに限られます。マスターが受信を希望するスレーブを除いて、他のすべてのスレーブではこのビットをクリアしてください。
ステータス・レジスタの MODF ビットがセットされているとき、SPE ビットと MSTR ビットはハードウェアによって変更できます。10-30 ページの「モード・フォルト・エラー（MODF）」を参照してください。

10-10

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

SPI 互換ポート・コントローラ

図 10-4に SPI_CTL のビット説明を示します。
SPI コントロール・レジスタ（SPI_CTL）

0xFFC0 0500

15 14 13 12 11 10 9
0 0 0 0 0 1 0

8
0

7
0

6
0

5
0

4
0

SPE（SPIイネーブル）
0 - ディスエーブル
1 - イネーブル
WOM（ライト・オープン・
ドレイン・マスター）
0 - 通常1 - オープン・ドレイン
MSTR（マスター）
SPI モジュールをマスターまたは
スレーブとして設定
0 - スレーブ
1 - マスター
CPOL（クロック極性）
0 - アクティブ・ハイ SCK
1 - アクティブ・ロー SCK
CPHA（クロック位相）
転送フォーマットと動作モードの選択
0 - SCK は最初のデータビットの中央からトグル、スレーブ・セレク
ト・ピンはハードウェアによって制御
1 - SCK は最初のデータビットの先頭からトグル、スレーブ・セレク
ト・ピンはソフトウェアによって制御
LSBF（LSB ファースト）0 - MSB を最初に送／受信
1 - LSB を最初に送／受信

3
0

2
0

1
0

0
0

リセット＝ 0x0400
TIMOD（転送開始モード）
00 -SPI_RDBR の読出しで転送を開始し、
SPI_RDBR が満杯ならば割り込む
01 -SPI_TDBR の書込みで転送を開始し、
SPI_TDBR が空ならば割り込む
10 - SPI_RDBR の DMA 読出しで転送を開始し、SPI DMA FIFO が空でない
限り、さらに DMA 読出しを要求
11 - SPI_TDBR の DMA 書込みで転送を開始し、SPI DMA FIFO が満杯でな
い限り、さらに DMA 書込みを要求
SZ（ゼロ送信）SPI_TDBR が空のとき、ゼロまたは最終ワードを送信
0 - 最終ワードを送信
1 - ゼロを送信
GM（ゲット・モア・データ）
SPI_RDBR が満杯のとき、データを取得するか、着信データを捨てる
0 - 着信データを捨てる
1 - さらにデータを取得し、以前のデー
タに上書きする
PSSE（スレーブ・セレクト・イネーブル）
0 - ディスエーブル
1 - イネーブル
EMISO（MISOのイネーブル）
0 - MISO をディスエーブル
1 - MISO をイネーブル

SIZE（ワードのサイズ）
0 - 8 ビット1 - 16 ビット

図 10-4. SPI コントロール・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

10-11

SPI レジスタ■ SPI_FLG レジスタ
SPI がマスターとしてイネーブルにされた場合、SPI では、SPI フラグ・レジスタ（SPI_FLG）を使用して、個々のスレーブ・セレクト・ラインとして使用される 7つまでの汎用プログラマブル・フラグ・ピンをイネーブ
ルにします。スレーブ・モードでは、SPI_FLG ビットに効果はなく、各 SPI
では、SPISS 入力をスレーブ・セレクトとして使用します。図 10-5 には、
SPI_FLG レジスタの図を示します。
SPI フラグ・レジスタ（SPI_FLG）

0xFFC0 0504

15 14 13 12 11 10 91 1 1 1 1 1 1

8
1

7
0

FLG7（スレーブ・
セレクト値 7）
SPISEL7 値
FLG6（スレーブ・
セレクト値 6）
SPISEL6 値
FLG5（スレーブ・セレクト値 5）
SPISEL5 値
FLG4（スレーブ・セレクト値 4）
SPISEL4 値
FLG3（スレーブ・セレクト値 3）
SPISEL3 値
FLG2（スレーブ・セレクト値 2）
SPISEL2 値
FLG1（スレーブ・セレクト値 1）
SPISEL1 値

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0xFF00
FLS1（スレーブ・セレクト・
イネーブル 1）
0 - SPISEL1 ディスエーブル
1 - SPISEL1 イネーブル
FLS2（スレーブ・セレクト・
イネーブル 2）0 - SPISEL2 ディスエーブル
1 - SPISEL2 イネーブル
FLS3（スレーブ・セレクト・
イネーブル 3）0 - SPISEL3 ディスエーブル
1 - SPISEL3 イネーブル
FLS4（スレーブ・セレクト・
イネーブル 4）0 - SPISEL4 ディスエーブル
1 - SPISEL4 イネーブル
FLS5（スレーブ・セレクト・
イネーブル 5）
0 - SPISEL5 ディスエーブル
1 - SPISEL5 イネーブル
FLS6（スレーブ・セレクト・
イネーブル 6）
0 - SPISEL6 ディスエーブル
1 - SPISEL6 イネーブル
FLS7（スレーブ・セレクト・
イネーブル 7）
0 - SPISEL7 ディスエーブル
1 - SPISEL7 イネーブル

図 10-5. SPI フラグ・レジスタ

10-12

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

SPI 互換ポート・コントローラ

SPI_FLG レジスタは、2組のビットから構成されています。

• スレーブ・セレクト・イネーブル（FLSx）ビット
各 FLSx ビットは、プログラマブル・フラグ（PFx）ピンに対応します。FLSx ビットがセットされると、対応する PFx ピンはスレーブ・セ
レクトとして駆動します。たとえば、SPI_FLG に FLS1 がセットされた
場合には、PF1 がスレーブ・セレクト（SPISEL1）として駆動します。
表 10-2 は、FLSx ビットと対応する PFx ピンとの関連を示します。
FLSx ビットがセットされない場合には、汎用のプログラマブル・フ

ラグ・レジスタ（FIO_DIR など）が対応する PFx ピンの設定と制御を行います。
• スレーブ・セレクト値（FLGx）ビット
PFx ピンがスレーブ・セレクト出力として設定されると、FLGx ビットでは出力に駆動される値を決定できます。SPI_CTL の CPHA ビットがセットされた場合には、出力値は FLGx ビットのソフトウェア
制御によって設定されます。SPI プロトコルを使用すると、転送されるワードとワードの間でスレーブ・セレクト・ラインはアサートされたままでいる（ローレベル）か、アサート解除されることができます。ユーザは、適切な FLGx ビットをセットまたはクリアする必要があります。たとえば、PF3 をスレーブ・セレクトとして駆動するには、SPI_FLG の FLS3 をセットする必要があります。SPI_FLGの FLG3 をクリアすると、PF3 はローレベルに駆動されます。FLG3をセットすると、PF3 はハイレベルに駆動されます。転送と転送の間で FLG3 をセットおよびクリアすることによって、PF3 ピンはハイレベルとローレベルを循環できます。そうでない場合には、PF3
は転送と転送の間でアクティブ（ローレベル）なままです。
CPHA ＝ 0 の場合には、SPI ハードウェアが出力値を設定し、FLGx

ビットは無視されます。SPI プロトコルでは、転送されたワードとADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

10-13

SPI レジスタ

ワードの間でスレーブ・セレクトはアサート解除される必要があります。この場合、SPI ハードウェアがピンを制御します。たとえば、PF3 をスレーブ・セレクト・ピンとして使用するには、SPI_FLGの FLS3 ビットをセットするだけで済みます。SPI ハードウェアが自動的に PF3 ピンを駆動するため、FLG3 ビットに書き込む必要はありません。
表 10-2.

SPI_FLG ビットと PFx ピンとのマッピング

ビット

名前

0

機能

PFx ピン

デフォルト
0

予備

1

FLS1

SPISEL1 イネーブル

PF1

0

2

FLS2

SPISEL2 イネーブル

PF2

0

3

FLS3

SPISEL3 イネーブル

PF3

0

4

FLS4

SPISEL4 イネーブル

PF4

0

5

FLS5

SPISEL5 イネーブル

PF5

0

6

FLS6

SPISEL6 イネーブル

PF6

0

7

FLS7

SPISEL7 イネーブル

PF7

0

8

1

予備

9

FLG1

SPISEL1 値

PF1

1

10

FLG2

SPISEL2 値

PF2

1

11

FLG3

SPISEL3 値

PF3

1

12

FLG4

SPISEL4 値

PF4

1

13

FLG5

SPISEL5 値

PF5

1

14

FLG6

SPISEL6 値

PF6

1

15

FLG7

SPISEL7 値

PF7

1

10-14

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

SPI 互換ポート・コントローラ

X スレーブ・セレクト入力

SPI がスレーブ・モードにある場合には、SPISS はスレーブ・セレクト入力として機能します。マスターとしてイネーブルにされると、SPISS はマルチマスター環境での SPI のエラー検出入力として機能できます。SPI_CTLの PSSE ビットは、この機能をイネーブルにします。PSSE = 1 の場合、SPISS
入力はマスター・モードのエラー入力です。そうでない場合、SPISS は無視されます。
X 複数のスレーブ SPI システムに対する SPI_FLG の FLS ビットの用途
SPI_FLG レジスタの FLSx ビットは、複数のスレーブ SPI 環境で使用されます。たとえば、プロセッサ・マスターを含めてシステム内に 8 つのSPI デ
バイスがある場合には、マスター・プロセッサは、他の 7つのデバイスにまたがって SPI モードのトランザクションをサポートできます。この設定では、このマルチスレーブ環境に必要なマスター・プロセッサはただ 1つです。たとえば、SPI がマスターだとします。プロセッサ・マスター上の7 本のフラグ・ピン（PF1 ～ PF7）は、スレーブ SPI デバイスの各 SPISS ピンに接続できます。この設定では、SPI_FLG の FLSx ビットは3 つのケースで使用できます。
ケース 1 と 2 では、プロセッサはマスターであり、SPI インターフェースを備えた 7つのマイクロコントローラ／ペリフェラルはスレーブです。プ
ロセッサは以下の動作が可能です。
1. ブロードキャスト・モードで、7 つの SPI デバイスすべてに同時に送信できます。ここで、すべての FLSx ビットはセットされています。
2. 一度に 1 つのスレーブ SPI デバイスだけをイネーブルにすること
で、1 つの SPI デバイスから送／受信できます。
ケース 3 では、SPI ポートを介して接続された 8 つのデバイスすべては、他のプロセッサでもかまいません。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

10-15

SPI レジスタ

3. すべてのスレーブもプロセッサである場合、リクエスタは、一度に（他の 6 つのスレーブ・プロセッサの EMISO ビットをクリアしてイネーブルにされた）ただ 1 つのプロセッサからデータを受信して、同時に 7 つのプロセッサすべてにブロードキャスト・データを送信できます。この EMISO 機能は、他のマイクロコントローラでも使用できます。したがって、この機能を組み込んだ他の SPI デバイス
でも、EMISO 機能を使用できます。
図 10-6では、1つのプロセッサがマスターであり、3つのプロセッサ（または他の SPI互換デバイス）がスレーブになっています。

ࠬ࡟࡯ࡉ࡮࠺ࡃࠗࠬ
MISO

SCK

MOSI

SPISS

ࠬ࡟࡯ࡉ࡮࠺ࡃࠗࠬ
MISO

SCK

MOSI

ࠬ࡟࡯ࡉ࡮࠺ࡃࠗࠬ
MISO

SPISS

SCK

MOSI

SPISS

VDD

MISO
PF
PF

SCK

MOSI

ࡑࠬ࠲࡯࡮
࠺ࡃࠗࠬ

SPISS
PF

図 10-6. 単一マスター、複数スレーブ構成■ SPI_STAT レジスタ
SPI ステータス・レジスタ（SPI_STAT）は、SPI転送の完了タイミングや、
送／受信エラーの発生の有無を検出するために使用されます。SPI_STAT レ
ジスタは、いつでも読み出すことができます。
SPI_STAT には、読出し専用ビットと、スティッキー・ビットがあります。

SPI についてだけの情報を提供するビットは、読出し専用です。これらのビットは、ハードウェアによってセット／クリアされます。エラー条件が10-16

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

SPI 互換ポート・コントローラ

発生すると、スティッキー・ビットがセットされます。これらのビットはハードウェアによってセットされ、ソフトウェアによってクリアされる必要があります。スティッキー・ビットをクリアするには、ユーザは SPI_STATの希望するビット位置に 1 を書き込む必要があります。たとえば、TXE ビットがセットされた場合、ユーザは TXE エラー条件をクリアするために
SPI_STAT のビット 2 に 1を書き込む必要があります。これによって、ユー
ザは SPI_STAT の値を変更せずに読み出すことができます。

L

スティッキー・ビットはリセット時にクリアされますが、SPIディ
スエーブル時にはクリアされません。

SPI ステータス・レジスタ（SPI_STAT）

0xFFC0 0508

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
1

リセット＝ 0x0001

TXCOL（送信競合エラー）- W1C
セットされたとき、破損データが送信された可能性があります

SPIF（SPI完了）- RO
SPI シングル・ワード転送が完了したときにセットRXS（RX データ・バッファ・ステータス）- RO
0-空
1 - 満杯

MODF（モード・フォルト・エラー）- W1C
他のデバイスがマスターになろうとしたときに、マスター・デバ
イスでセットRBSY（受信エラー）- W1C
データが受信バッファ満杯の状態で受信されたときにセット
TXS（SPI_TDBR データ・バッファ・ステータス）- RO
0-空
1 - 満杯

TXE（送信エラー）- W1C
SPI_TDBR に新しいデータがないのに伝送が行われたときにセット

図 10-7. SPI ステータス・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

10-17

SPI レジスタ

送信バッファは、書き込まれた後で満杯になります。転送が始まり、シフト・レジスタに送信値がロードされると、このバッファは空になります。
シフト・レジスタ値が受信バッファにロードされると、転送の最後で受信バッファが満杯になります。受信バッファが読み出されると、このバッ
ファは空になります。

L
L

SPI ポートがディスエーブルにされると、SPIF ビットがセットされます。

L

SPI送信用のDMAを使用するとき、DMA_DONE 割込みは、
DMA FIFOが空であることを知らせます。しかし、この時点では、SPI DMA
FIFO 内には送信されるのを待っているデータがまだあるかもしれません。したがって、ソフトウェアでは、SPI_STAT レジスタの TXSが連続する 2 つの読出しの間ローレベルになる（この時点で SPIDMA FIFO は空になります）まで、TXS をポーリングする必要があります。その後 SPIF ビットがローレベルになると、最後のワードは転送されており、別のモードのために SPIをディスエーブル／イ
ネーブルにできます。

DMA モードに入ると同時に、送信バッファと受信バッファは空になります。つまり、DMA モードに入ると同時に、TXS ビットと RXS
ビットは最初にクリアされます。

■ SPI_TDBR レジスタ
SPI 送信データ・バッファ・レジスタ（SPI_TDBR）は、16ビットの読出し／書込みレジスタです。データは、このレジスタにロードされてから送信されます。データ転送の直前に、SPI_TDBR のデータはシフト・データ・レジスタ（SFDR）にロードされます。SPI_TDBR の読出しはいつでも行うことができ、SPI転送を妨げることも開始することもありません。

10-18

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

SPI 互換ポート・コントローラ

DMA の送信動作がイネーブルにされると、DMAエンジンは、データ転送の直前に送信用のデータをこのレジスタにロードします。このモードでは、SPI_TDBR への書込みを行わないでください。というのも、このデータは、送信される DMA データを上書きするからです。
DMA の受信動作がイネーブルにされると、SPI_TDBR の内容が繰り返し送信されます。このモードでは SPI_TDBR への書込みが認められ、このデー
タは送信されます。
ゼロ送信制御ビット（SPI_CTL レジスタの SZ）がセットされている場合には、特定の状況のもとで SPI_TDBR は0 にリセットできます。
転送の実行中に SPI_TDBR への複数の書込みが発生した場合には、最後に書き込まれたデータだけが送信されます。SPI_TDBR に書き込まれた中間の値は送信されません。SPI_TDBR への複数の書込みは可能ですが、お勧めできません。
SPI 送信データ・バッファ・レジスタ（SPI_TDBR）

0xFFC0 050C

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

送信データ・バッファ

図 10-8. SPI 送信データ・バッファ・レジスタ■ SPI_RDBR レジスタ
SPI 受信データ・バッファ・レジスタ（SPI_RDBR）は、16ビットの読出し
専用レジスタです。データ転送の最後に、シフト・レジスタ内のデータがSPI_RDBR にロードされます。DMA 受信動作中に、SPI_RDBR 内のデータは

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

10-19

SPI レジスタ

DMA によって自動的に読み出されます。SPI_RDBR がソフトウェアを介して読み出されると、RXS ビットがクリアされ、SPI 転送を開始できます（TIMOD = 00 の場合）。
SPI 受信データ・バッファ・レジスタ（SPI_RDBR）
RO

0xFFC0 0510

15 14 13 12 11 10
0 0 0 0 0 0

9
0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

受信データ・バッファ

図 10-9. SPI 受信データ・バッファ・レジスタ■ SPI_SHADOW レジスタ
SPI RDBR シャドウ・レジスタ（SPI_SHADOW）は、デバッグ・ソフトウェ
アで使用するために提供されています。このレジスタは、受信データ・
バッファSPI_RDBR とは異なるアドレスにありますが、その内容は SPI_RDBRの内容と同じです。ソフトウェアが SPI_RDBR を読み出すと、SPI_STAT のRXS ビットがクリアされ、SPI転送を開始できます（SPI_CTL の TIMOD = 00の場合）。SPI_SHADOW レジスタが読み出されるときには、このようなハードウェア・アクションは行われません。SPI_SHADOW レジスタは読出し専用です。
SPI RDBR シャドウ・レジスタ（SPI_SHADOW）
RO

0xFFC0 0518

15 14 13 12 11 10
0 0 0 0 0 0

9
0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

SPI_RDBRシャドウ

図 10-10.SPI RDBR シャドウ・レジスタ

10-20

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

SPI 互換ポート・コントローラ■ レジスタ機能
表 10-3 に SPIレジスタの機能をまとめます。
表 10-3.

SPI レジスタのマッピング

レジスタ名

機能

注

SPI_CTL

SPI ポートの制御

SPE ビットと MSTR ビットはハードウェアによっても変更できます（MODF がセットされている場合）

SPI_FLGSPI ポートのフラグ

ビット 0 と 8 は予備

SPI_STATSPI ポートのステータス

SPIF ビットは、SPI_CTL の SPE をクリアしてセットできますSPI_TDBR

SPI ポート送信
データ・バッファ

レジスタの内容は、
ハードウェアによっても変更できます（DMA によって、または SPI_CTL で
SZ ＝ 1 のとき、あるいはその両方の場合）

SPI_RDBR

SPI ポート受信
データ・バッファ

レジスタが読み出されると、ハードウェア・イベ
ントがトリガされます

SPI_BAUD

SPI ポートのボー制御

値 0 または 1 でシリアル・クロックをディスエー
ブルします

SPI_SHADOWSPI ポートのデータ

レジスタの内容は SPI_RDBR と同じですが、読み出されても何の措置もとられません

SPI 転送フォーマットSPI はシリアル・クロック位相と極性の4 つの異なる組合わせをサポートします。これらの組合わせは、SPI_CTL の CPOL ビットと CPHA ビットを使用
して選択されます。
10-23 ページの「CPHA ＝ 0 の場合の SPI 転送プロトコル」と、10-23 ページの「CPHA ＝ 1 の場合の SPI 転送プロトコル」では、CPHA ビットによって定義される 2つの基本転送フォーマットを示します。SCK に関して 2つの波形を示します（1 つは CPOL = 0 の場合、もう1 つは CPOL = 1 の場合）。
SCK ピン、MISO ピン、MOSI ピンは、マスターとスレーブとの間で直結されADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

10-21

SPI 転送フォーマット

ているため、これらの図は、マスターやスレーブのタイミング図と解釈することもできます。MISO 信号はスレーブからの出力であり（スレーブ伝送）、MOSI 信号はマスターからの出力です（マスター伝送）。SCK 信号はマ
スターによって生成され、SPISS 信号はマスターからスレーブへのスレー
ブ・デバイス・セレクト入力です。これらの図は、最上位ビット（MSB）
ファースト（LSBF = 0）による8 ビット転送（SIZE = 0）を表します。
SPI_CTL の SIZE ビットと LSBF ビットは、自由に組み合わせることができます。たとえば、最下位ビット（LSB）ファーストによる 16 ビット転送という設定も可能です。
同じ通信リンクに属するマスター・デバイスとスレーブ・デバイスは、クロック極性とクロック位相を同じ設定にしてください。マスターからの転送フォーマットは、スレーブ・デバイスのさまざまな条件に合わせて調整するため、転送ごとに異なる場合もあります。
CPHA = 0 の場合、スレーブ・セレクト・ライン SPISS は各シリアル転送の間で非アクティブ（ハイレベル）であることが必要です。これは、SPI
ハードウェア・ロジックによって自動的に制御されます。CPHA = 1 の場
合、SPISS は連続した転送の間でアクティブ（ローレベル）のままである
か、非アクティブ（ハイレベル）になることができます。これは、SPI_FLG.
の操作を介して、ソフトウェアによって制御する必要があります。

図 10-11は、CPHA = 0 の場合の SPI転送プロトコルを示します。なお、SCK
はデータ転送の途中でトグル動作を開始し、SIZE = 0、LSBF = 0 です。

10-22

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

SPI 互換ポート・コントローラ

図 10-12は、CPHA = 1 の場合のSPI 転送プロトコルを示します。なお、SCK
はデータ転送の初めにトグル動作を開始し、SIZE = 0、LSBF = 0 です。

ࠢࡠ࠶ࠢ࡮ࠨࠗࠢ࡞⇟ภ

1

2

3

4

5

6

7

8

MSB

6

5

4

3

2

1

LSB

*

6

5

4

3

2

1

LSB

*

SCK
(CPOL = 0)SCK(CPOL = 1)
MOSI㧔ࡑࠬ࠲࡯߆ࠄ㧕*

MISO
㧔ࠬ࡟࡯ࡉ߆ࠄ㧕

MSB

SPISS
㧔ࠬ࡟࡯ࡉ߳㧕

㧔*㧩ᧂቯ⟵㧕

図 10-11. CPHA ＝ 0 の場合の SPI 転送プロトコルࠢࡠ࠶ࠢ࡮ࠨࠗࠢ࡞⇟ภ

1

2

3

4

5

6

7

8

LSB

SCK
(CPOL = 0)SCK(CPOL = 1)
MOSI㧔ࡑࠬ࠲࡯߆ࠄ㧕

*

MSB

6

5

4

3

2

1

MISO
㧔ࠬ࡟࡯ࡉ߆ࠄ㧕

*

MSB

6

5

4

3

2

1

*

LSB

SPISS
㧔ࠬ࡟࡯ࡉ߳㧕

㧔*㧩ᧂቯ⟵㧕

図 10-12.CPHA ＝ 1 の場合の SPI 転送プロトコル

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

10-23

SPI の一般的な動作

SPI の一般的な動作
SPI は、シングル・マスター環境でもマルチマスター環境でも使用できます。いずれの構成でも、MOSI、MISO、SCK の信号は、すべて一緒に接続されます。ブロードキャスト・モードが選択されていない限り、SPI の送信と受信は常に同時にイネーブルにされます。ブロードキャスト・モードでは、複数のスレーブの受信をイネーブルにできますが、ただ 1つのスレーブを送信モードにして MISO ラインを駆動することが必要です。送信も受信も必要ない場合には、単に無視できます。ここでは、クロック信号、マス
ター／スレーブとしての SPI 動作、エラー生成について説明します。
SPI モジュール設定を変更するときには、データ破壊を避けるための対策をとる必要があります。データ転送中に設定を変更してはいけません。ク
ロック極性の変更は、スレーブが選択されていないときにだけ行ってください。これに対する例外は、SPI通信リンクがシングル・マスターとシン
グル・スレーブで構成され、CPHA = 1 であり、スレーブのスレーブ・セレ
クト入力が常にローレベルに接続されている場合です。この場合、スレー
ブは常に選択されており、データ破壊を避けるには、マスター・デバイスとスレーブ・デバイスの両方が設定された後で、スレーブをイネーブルにしてください。
マルチマスターまたはマルチスレーブ SPI システムでは、データ出力ピン（MOSI と MISO）は、オープン・ドレイン出力として振る舞うように設定できます。これによって、ピン・ドライバに対する競合と損傷の可能性を防止できます。このオプションが選択された場合、MOSI ピンと MISO ピンには外付けのプルアップ抵抗が必要です。
このオプションは WOM ビットによって制御されます。WOM がセットされ、SPI がマスターとして設定されると、MOSI で駆動出力されたデータがロジック・ハイであるとき、MOSI ピンは3ステートになります。駆動されたデータがロジック・ローであるとき、MOSI ピンは3 ステートになりません。

10-24

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

SPI 互換ポート・コントローラ

同様に、WOM がセットされ、SPI がスレーブとして設定されると、MISO で駆動出力されたデータがロジック・ハイである場合に、MISO ピンは 3 ス
テートになります。

■ クロック信号
SCK 信号は、データ転送時にはワードの転送期間中にだけアクティブな
ゲーテッド・クロックです。アクティブ・エッジの数は、データ・ライン
で駆動されるビット数に等しくなります。クロック・レートは、SCLK レー
トの 4 分の 1 まで高くできます。マスター・デバイスの場合、クロック・
レートは SPI_BAUD の 16 ビット値によって決定されます。スレーブ・デバ
イスの場合、SPI_BAUD の値は無視されます。SPI デバイスがマスターであるとき、SCK は出力信号です。SPI がスレーブであるとき、SCK は入力信号です。スレーブ・セレクト入力が非アクティブ（ハイレベル）に駆動された場合、スレーブ・デバイスはシリアル・クロックを無視します。
SCK 信号は、MISO ラインと MOSI ラインに駆動されたデータをシフト・アウ
ト／シフト・インするために使用されます。データは、常にクロックの 1
つのエッジ（アクティブ・エッジ）でシフト・アウトされ、クロックの反対側のエッジ（サンプリング・エッジ）でサンプリングされます。データを基準にしたクロック極性とクロック位相は、SPI_CTL にプログラマブル
であり、転送フォーマットを定義します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

10-25

SPI の一般的な動作■ マスター・モード動作
SPI がマスターとして設定され、DMA モードは選択されない場合、インターフェースは次のように動作します。
1. コアは SPI_FLG に書き込んで、1 つまたは複数の SPI フラグ・セ
レクト・ビット（FLSx）をセットします。これによって、マスターの設定中に、希望するスレーブが適切に選択解除されることが保証されます。
2. コアは SPI_BAUD レジスタと SPI_CTL レジスタに書き込んで、デバイスをマスターとしてイネーブルにし、適切なワード長、転送
フォーマット、ボーレート、その他の必要な情報を指定して SPI シ
ステムを設定します。
3. CPHA = 1 の場合、コアは SPI_FLG の 1 つまたは複数の SPI フラグ・ビット（FLGx）をクリアして希望するスレーブをアクティブにします。
4. SPI_CTL の TIMOD ビットは、SPI 転送開始モードを決定します。SPI
リンクでの転送は、コアによる送信データ・バッファ（SPI_TDBR）
へのデータ書込み、または受信データ・バッファ（SPI_RDBR）のデータ読出しと同時に始まります。
5. 続いて SPI は、SCK 上にプログラムされたクロック・パルスを生成
し、MOSI からのデータのシフト・アウトと MISO からのデータのシ
フト・インを同時に行います。シフトの前に、シフト・レジスタに
は SPI_TDBR レジスタの内容がロードされます。転送の最後に、シフト・レジスタの内容は SPI_RDBR にロードされます。
6. 新しいそれぞれの転送開始コマンドを使用し、SPI 転送開始モードに基づいて、SPI はワードの送／受信を続行します。
送信バッファが空のままであるか、受信バッファが満杯のままである場合には、デバイスは SPI_CTL の SZ ビットと GM ビットの状態に基づいて動作します。SZ = 1 で送信バッファが空の場合には、デバイスは MOSI ピンで0を繰り返し送信します。新しい転送開始コマンドごとに 1ワードが送信されます。SZ = 0 で送信バッファが空の場合には、デバイスは送信バッファが10-26

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

SPI 互換ポート・コントローラ

空になる前に送信した最後のワードを繰り返し送信します。GM = 1 で受信バッファが満杯の場合には、デバイスは MISO ピンから新しいデータの受信を続行し、SPI_RDBR バッファ内の古いデータに上書きします。GM = 0 で受
信バッファが満杯の場合には、着信データは捨てられ、SPI_RDBR は更新されません。

■ マスターからの転送開始（転送モード）
デバイスがマスターとしてイネーブルにされると、転送の開始は、SPI_CTLの 2 つの TIMOD ビットによって定義されます。これら2 つのビットとインターフェースのステータスに基づいて、新しい転送は SPI_RDBR の読出し
または SPI_TDBR への書込みと同時に開始されます。これを表 10-4 に要約します。

L

SPI ポートが TIMOD ＝ 01 または TIMOD ＝ 11 でイネーブルにされた場
合には、ハードウェアはすぐに最初の割込みまたは DMA 要求を発行します。

表 10-4.

転送開始

TIMOD

機能

転送開始のタイミング

00

送／受信

以前の転送が完了しSPI_RDBR 受信バッファが満杯の場合、割の読出しと同時に、新しいシン 込みはアクティブ。
グル・ワード転送を開始します。
SPI_RDBRの読出しによって割込みをクリア。

01

送／受信以前の転送が完了し SPI_TDBRへの書込みと同時に、新しいシ
ングル・ワード転送を開始します。

アクション、割込み

送信バッファが空の場合、割込
みはアクティブ。
SPI_TDBR への書込みによって割込みをクリア。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

10-27

SPI の一般的な動作

表 10-4.

転送開始（続き）

TIMOD

機能

転送開始のタイミング

10

DMA での受信

SPI を DMA モード用にイネー SPI DMA FIFO が空でない限
ブルにすると同時に新しいマル り、DMA 読出しを要求します。
チ ワ ー ド 転 送 を 開 始 し ま す。
個 々 の ワ ー ド 転 送 は、
SPI_RDBR の DMA 読出しで始まり、転送が完了するまで続きます。

11

DMA での送信

SPI を DMA モード用にイネー SPI DMA FIFOが満杯でない限ブルにすると同時に新しいマル り、DMA 書込みを要求します。
チ ワ ー ド 転 送 を 開 始 し ま す。
個 々 の ワ ー ド 転 送 は、
SPI_TDBR への DMA 書込みで始まり、転送が完了するまで続きます。

アクション、割込み■ スレーブ・モード動作
デバイスがスレーブとしてイネーブルにされ、DMA モードが選択されていない場合、転送の開始は CPHA の状態に応じて、SPISS 選択信号のアクティブ状態（ローレベル）への遷移によってトリガされるか、クロック（SCK）の最初のアクティブ・エッジによってトリガされます。
以下の手順では、スレーブ・モードでの SPI動作を示します。
1. コアは SPI_CTL に書き込んで、シリアル・リンクのモードを SPI
マスターで設定されたモードと同じになるよう定義します。
2. データ転送の準備をするため、コアは SPI_TDBR に送信されるデー
タを書き込みます。
3. SPISS の立下がりエッジが検出されると、スレーブは SCK のアク
ティブ・エッジでデータの送信を開始し、SCK の非アクティブ・エッ
ジでデータのサンプリングを開始します。

10-28

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

SPI 互換ポート・コントローラ

4. 送／受信は、SPISS が解放されるか、スレーブが正しい数のクロッ
ク・サイクルを受信するまで続行されます。
5. スレーブ・デバイスは、SPISS での新しい立下がりエッジ遷移または SCK のアクティブ・クロック・エッジ、あるいはその両方で送／受信を続行します。
送信バッファが空のままであるか、受信バッファが満杯のままである場
合、デバイスは、SPI_CTL の SZ ビットと GM ビットの状態に基づいて動作します。SZ = 1 で送信バッファが空である場合には、デバイスは MISO ピン
で 0 を繰り返し送信します。SZ = 0 で送信バッファが空である場合には、
送信バッファが空になる前に送信した最後のワードを繰り返し送信しま
す。GM = 1 で受信バッファが満杯の場合には、デバイスは MOSI ピンから
新しいデータの受信を続行し、SPI_RDBR 内の古いデータに上書きします。
GM = 0 で 受信 バ ッフ ァ が満 杯 の場 合 には、着 信デ ー タは 捨 てら れ、
SPI_RDBR は更新されません。

■ 転送の準備ができたスレーブ
デバイスがスレーブとしてイネーブルにされると、デバイスを新しい転送用に準備するには、表 10-5 に示すアクションが要求されます。
表 10-5.

転送準備

TIMOD

機能

アクション、割込み

00

送／受信

受信バッファが満杯のとき、割込みはアクティブ。
SPI_RDBR の読出しで割込みをクリアします。

01

送／受信

送信バッファが空のとき、割込みはアクティブ。
SPI_TDBR への書込みで割込みをクリアします。

10

DMA で受信SPI DMA FIFO が空でない限り、DMA 読出しを要求します。

11

DMA で送信SPI DMA FIFOが満杯でない限り、DMA書込みを要求します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

10-29

エラー信号とフラグ

エラー信号とフラグデバイスのステータスは、SPI_STAT レジスタによって示されます。詳細については、10-16 ページの「SPI_STAT レジスタ」を参照してください。

■ モード・フォルト・エラー（MODF）
マスターとしてイネーブルにされたデバイスの SPISS 入力ピンが、システ
ム内の他のデバイスによってローレベルに駆動されると、SPI_STAT の MODF
ビットがセットされます。この現象が発生するのは、マルチマスター・シ
ステムにおいて、他のデバイスもマスターになろうとしているときです。
この機能をイネーブルにするには、SPI_CTL の PSSE ビットをセットする必
要があります。2 つのドライバ間でのこのような競合は、駆動ピンを損傷させる可能性があります。このエラーが検出されるとすぐに、以下のアクションがとられます。
• SPI_CTL の MSTR 制御ビットがクリアされ、SPI インターフェースはスレーブとして設定されます。
• SPI_CTL の SPE 制御ビットがクリアされ、SPIシステムはディスエー
ブルにされます。
• SPI_STAT の MODF ステータス・ビットがセットされます。
• SPI エラー割込みが生成されます。
これら 4つの条件は、MODF ビットがソフトウェアによってクリアされるまで持続します。MODF ビットがクリアされるまでは、SPI はスレーブとしてさえもイネーブルにできません。MODF がセットされている間は、ユーザはSPE も MSTR もセットできません（ハードウェアによる禁止）
。

10-30

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

SPI 互換ポート・コントローラ

MODF がクリアされると、割込みは非アクティブにされます。SPI をマスターとして再びイネーブルにする前に、SPISS 入力ピンの状態をチェック
して、ピンがハイレベルであることを確認します。そうでない場合には、SPE と MSTR がセットされると、すぐに別のモード・フォルト・エラー条件
が発生します。
SPE と MSTR がクリアされると、SPI データとクロック・ピン・ドライバ（MOSI、MISO、SCK）がディスエーブルにされます。しかし、スレーブ・セ
レクト出力ピンは、プログラマブル・フラグ・レジスタによって再び制御されるようになります。プロセッサがまだこれらのラインを駆動している
場合には、これはスレーブ・セレクト・ラインでの競合につながることがあります。MODF エラーが発生するとスレーブ・セレクト出力ドライバがディスエーブルにされるようにするには、プログラマブル・フラグ・レジ
スタを適切にプログラム設定する必要があります。
MODF 機能をイネーブルにするとき、プログラムでは、スレーブ・セレクト

として使用されるすべての PFx ピンを入力として設定する必要があります。プログラムでこれを行うには、PFx ピンの方向を設定してから、SPIを設定します。これによって、MODF エラーが発生し、スレーブ・セレクト
が PFx ピンとして自動的に再設定されると、スレーブ・セレクト出力ドラ
イバはディスエーブルにされます。

■ 送信エラー（TXE）
送信の条件がすべて満足され、SPI_TDBR 内に新しいデータがない（SPI_TDBR
が空である）場合、SPI_STAT に TXE ビットがセットされます。この場合、送信の内容は SPI_CTL の SZ ビットの状態に依存します。TXE ビットはス
ティッキーです（W1C）。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

10-31

SPI 転送の開始と終了■ 受信エラー（RBSY）
新しい転送が完了しても、SPI_RDBR から以前のデータを読出しできる前であれば、SPI_STAT レジスタの RBSY フラグがセットされます。SPI_RDBR が新たに受信されたデータで更新されるかどうかは、SPI_CTL レジスタの GM
ビットの状態で決まります。RBSY ビットはスティッキーです（W1C）。

■ 送信競合エラー（TXCOL）
SPI_TDBR への書込みがシフト・レジスタのロードと同時に起きると、
SPI_STAT の TXCOL フラグがセットされます。SPI_TDBR への書込みは、ソフ

トウェアまたは DMA を介して可能です。TXCOL ビットは、破損データがシフト・レジスタにロードされ、送信された可能性を示します。この場合、
SPI_TDBR 内のデータは送信された内容と一致しないことがあります。
この
エラーは、適切なソフトウェア制御によって容易に回避できます。TXCOL
ビットはスティッキーです（W1C）。

SPI 転送の開始と終了
SPI 転送の開始と終了は、デバイスの設定がマスターであるかスレーブであるか、CPHA モードが選択されたかどうか、および転送開始モード（TIMOD）
が選択されたかどうかに依存します。CPHA = 0 のマスター SPI では、転送は TIMOD に応じて、SPI_TDBR が書き込まれたとき、または SPI_RDBR が読み出されたときに開始されます。転送の最初に、イネーブルにされたスレー
ブ・セレクト出力はアクティブ（ローレベル）に駆動されます。しかし、SCK 信号は、SCK の最初のサイクルの前半は非アクティブのままです。CPHA= 0 のスレーブでは、転送は SPISS 入力がローレベルになるとすぐに開始
されます。

10-32

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

SPI 互換ポート・コントローラ

CPHA = 1 の場合、スレーブ・デバイスとマスター・デバイスの両方で、転送は SCK の最初のアクティブ・エッジで始まります。マスター・デバイスの場合、転送が完了したと見なされるのは、最後のデータを送信すると同時に最後のデータビットを受信した後です。スレーブ・デバイスの転送
は、SCK の最後のサンプリング・エッジの後で終了します。
RXS ビットでは、受信バッファの読出しのタイミングを定義します。TXS

ビットでは、送信バッファをフィルできるタイミングを定義します。シン
グル・ワード転送の最後には RXS ビットがセットされて、新しいワードの受信と、受信バッファ SPI_RDBR へのラッチが示されます。マスター SPIの場合、RXS は SCK の最後のサンプリング・エッジのすぐ後でセットされます。スレーブ SPI の場合、RXS は CPHA や CPOL とは無関係に、最後の SCK
エッジのすぐ後でセットされます。一般に、遅延は数 SCLK サイクルであり、TIMOD やボーレートとは無関係です。SPI_RDBR が満杯のときに割込みを生成するように設定された場合（TIMOD = 00）、割込みは、RXS がセットされてから 1 SCLK サイクル後にアクティブになります。この割込みに依存しない場合には、RXS ビットをポーリングして転送の終了を検出できます。
他の SPI デバイスとのソフトウェア互換性を維持するため、SPIF ビットもポーリングに使用できます。このビットの振る舞いは、他の市販デバイスとは少し異なる場合があります。スレーブ・デバイスの場合、SPIF は転送開始（CPHA = 0 では SPISS がローレベルになり、CPHA = 1 では SCK の最初のアクティブ・エッジ）のすぐ後でクリアされ、RXS と同時にセットされます。マスター・デバイスの場合、SPIF は CPHA や CPOL とは無関係に、転送開始（TIMOD に応じて、SPI_TDBR の書込みまたは SPI_RDBR の読出しによる）のすぐ後でクリアされ、最後の SCK エッジの 1/2 SCK 周期後にセットされます。
SPIF がセットされるタイミングはボーレートに依存します。一般に、SPIF

は RXS の後でセットされますが、最低のボーレート（SPI_BAUD < 4）のときを除きます。SPIF ビットは、RXS がセットされる前にセットされます。
これは、遅延のために、新しいデータが SPI_RDBR にラッチされる前となりま す。し たが っ て、SPI_BAUD = 2 また は SPI_BAUD = 3 の 場 合に は、

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

10-33

SPI 転送の開始と終了

SPI_RDBR を読み出すため、RXS は SPIF の前にセットする必要があります。

大きな SPI_BAUD 設定の場合には、RXS がセットされてから、SPIF がセットされることが保証されます。
SPI ポートを使用して送信と受信を同時に行う場合、または受信動作と送信動作を頻繁に切り替える場合には、TIMOD ＝ 00 モードが最高の動作オプ
ションの場合もあります。このモードでは、ソフトウェアは、SPI_RDBR レ
ジスタからダミー読出しを実行して、最初の転送を開始します。最初の転送がデータ送信に使用される場合には、ソフトウェアは、送信される値を
SPI_TDBR レジスタに書き込んでから、ダミー読出しを実行してください。
送信される値が任意である場合には、ランダム値ではなくゼロ・データが送信されるように、SZ ビットを設定することをお勧めします。SPI スト
リームの最終ワードを受信するとき、ソフトウェアでは、SPI_RDBR レジス
タ か ら の 読 出 し が 別 の 転 送 を 開 始 し な い よ う に 保 証 し て く だ さ い。
SPI_RDBR の最終の読出しアクセスの前に、SPI ポートをディスエーブルにすることをお勧めします。SPI_SHADOW レジスタを読み出しても、割込み要
求はクリアされないため、十分ではありません。
CPHA ビットをセットしたマスター・モードでは、トランザクションを開始する前に、必要なスレーブ・セレクト信号をソフトウェアで手動アサート
してください。すべてのデータが転送された後、一般に、ソフトウェアは
スレーブ・セレクトを再び解放します。完全な転送のために、SPI スレー
ブ・デバイスがスレーブ・セレクト・ラインのアサートを必要とする場
合、TIMOD ＝ 00 または TIMOD ＝ 10 のモードで動作しているときにだけ SPI
割込みサービス・ルーチンで実行できます。TIMOD ＝ 01 または TIMOD ＝ 11
では、転送がまだ進行中のときに割込みが要求されます。

10-34

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

SPI 互換ポート・コントローラ

DMA
SPI ポートでもダイレクト・メモリ・アクセス（DMA）を使用できます。
DMA の詳細については、9-1 ページの「ダイレクト・メモリ・アクセス」
を参照してください。

■ DMA 機能SPI の1 つの DMAエンジンは、SPI 送信チャンネルまたは受信チャンネルをとして利用できるように設定できますが、両方を同時に利用することはできません。したがって、送信チャンネルとして設定された場合、受信されたデータは基本的に無視されます。
受信チャンネルとして設定された場合、何が送信されるかは無関係です。
DMA アクセス・バス（DAB）でのスループットを向上させるため、16ビット× 4ワードの FIFO（バースト機能なし）が搭載されています。

L

DMA を SPI送信に使用するとき、DMA_DONE 割込みは、DMA FIFOが空であることを示します。しかしこの時点では、SPI DMA FIFO
内には、送信されるのを待つデータがまだあるかもしれません。したがって、SPI_STAT レジスタの TXS が 2 つの連続した読出しの間ローレベルになる（この時点で SPI DMA FIFO は空になります）
まで、ソフトウェアで TXS をポーリングする必要があります。その後 SPIF ビットがローレベルになると、最終ワードは転送されており、SPIを別のモード用にイネーブル／ディスエーブルにできます。

L

SPIポートがディスエーブルにされると、4ワードのFIFOはクリアされます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

10-35

DMA

■ マスター・モードの DMA 動作
DMA エンジンをデータの送信または受信用に設定してマスターとしてイネーブルにすると、SPI インターフェースは、次のように動作します。
1. SPI DMA チャンネルをイネーブルにし、必要な作業単位、アクセス方向、ワード・カウントなどを設定するために、プロセッサ・
コアは適切な DMA レジスタに書き込みます。詳細については、
9-1ページの「ダイレクト・メモリ・アクセス」を参照してください。
2. プロセッサ・コアは、SPI_FLG レジスタに書き込み、1 つまたは複数の SPI フラグ・セレクト・ビット（FLSx）を設定します。
3. プロセッサ・コアは、SPI_BAUD レジスタと SPI_CTL レジスタに書
き込み、適切なワード長、転送フォーマット、ボーレートなどを指定することによって、デバイスをマスターとしてイネーブルにし、SPI システムを設定します。TIMOD フィールドは、「DMA で受信」
（TIMOD = 10）または「DMA で送信」
（TIMOD = 11）のモードを選択するように設定してください。
4. 受信用に設定された場合、SPI のイネーブルと同時に受信転送が開始されます。それ以降の転送は、SPI が SPI_RDBR レジスタからデー
タを読み出すとき、および SPI DMA FIFO に書き込むときに開始されます。続いて SPI は、メモリへの DMA 書込みを要求します。
DMA の許可と同時に、DMA エンジンは SPI DMA FIFO からワー
ドを読み出し、メモリに書き込みます。
送信用に設定された場合、SPI はメモリからの DMA 読出しを要求します。DMA の許可と同時に、DMA エンジンはメモリからワー
ドを読み出し、SPI DMA FIFO に書き込みます。SPI が、SPI DMA
FIFO からのデータを SPI_TDBR レジスタに書き込むと、SPI リン
クでの転送が開始されます。
5. その後 SPI は、SCK 上にプログラムされたクロック・パルスを生成
し、MOSI からのデータのシフト・アウトと MISO からのデータのシ
フト・インを同時に実行します。受信転送の場合、シフト・レジス

10-36

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

SPI 互換ポート・コントローラ

タ内の値は、転送の最後に SPI_RDBR レジスタにロードされます。
送信転送の場合、SPI_TDBR レジスタ内の値は、転送の初めにシフト・レジスタにロードされます。
6. 受信モードでは、SPI DMA FIFO 内にデータがある（FIFO が空でない）限り、SPI はメモリへの DMA 書込みの要求を続行しま
す。DMA エンジンは SPI DMA ワード・カウント・レジスタが 1
から 0 に遷移するまで、SPI DMA FIFO からのワード読出しとメ
モリへの書込みを続行します。SPI は SPI DMA モードがディス
エーブルにされるまで、ワードの受信を続行します。
送信モードでは、SPI DMA FIFO に空領域がある（FIFO が満杯でない）限り、SPI はメモリからの DMA 読出しの要求を続行しま
す。DMA エンジンは SPI DMA ワード・カウント・レジスタが 1
から 0 に遷移するまで、メモリからのワード読出しと SPI DMA
FIFO への書込みを続行します。SPI は SPI DMA FIFO が空になるまで、ワードの送信を続行します。
受信 DMA 動作では、DMAエンジンが受信データストリームについていけない場合、受信バッファは GM ビットの状態に基づいて動作します。GM = 1
で DMA FIFO が満杯の場合には、デバイスは MISO ピンから新しいデータの受信を続行し、SPI_RDBR レジスタ内の古いデータに上書きします。
GM = 0 で DMA FIFOが満杯の場合には、受信データは捨てられ、SPI_RDBR
レジスタは更新されません。受信 DMA の実行中に、送信バッファは空であり TXE はセットされていると見なされます。SZ = 1 の場合、デバイスは
MOSI ピンで 0を繰り返し送信します。SZ = 0 の場合、SPI_TDBR レジスタの内容を繰り返し送信します。このモードでは、TXE アンダーラン条件はエラー割込みを生成できません。
送信 DMA 動作の場合、マスター SPIがワード転送を開始するのは、DMA
FIFO 内にデータがあるときだけです。DMA FIFO が空の場合、SPI は、
DMA エンジンがDMA FIFO に書き込むのを待ってから転送を開始します。送信 DMA モードに設定された場合には、SPI_RDBR レジスタ内のデー
タや RXS ビットと RBSY ビットのステータスを含めて、SPI 受信動作のすべての側面を無視してください。このモードでは、RBSY オーバーラン条件はADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

10-37

DMA

エラー割込みを生成できません。DMA FIFO にデータがない場合、マスター SPI は転送を開始しないため、このモード（マスター DMA TX モード）では TXE アンダーラン条件は発生できません。
アクティブな SPI 送信DMA 動作中は、DMA データへの上書きを防ぐた
め、SPI_TDBR レジスタへの書込みを行わないでください。アクティブな
SPI 受 信 DMA 動 作中 の SPI_TDBR レジ ス タへ の 書込 み は許 さ れま す。
SPI_RDBR レジスタからの読出しはいつでも許されます。
DMA 要求が生成されるのは、DMA FIFO が空でないとき（TIMOD = 10 のとき）、または DMA FIFO が満杯でないとき（TIMOD = 11 のとき）です。
エラー割込みが生成されるのは、RBSY オーバーフロー・エラー条件があるとき（TIMOD = 10 のとき）です。
マスター SPI DMA シーケンスには、複数のDMA 作業単位のバックツー
バック送信または受信、あるいはその両方が伴うことがあります。SPIコ
ントローラでは、最小のコア介入でこのようなシーケンスをサポートします。

■ スレーブ・モード DMA 動作
DMA エンジンをデータの送信または受信用に設定してスレーブとしてイネーブルにされると、転送の開始は CPHA の状態に応じて、SPISS 信号のア
クティブ・ロー状態への遷移によってトリガされたり、SCK の最初のアク
ティブ・エッジによってトリガされたりします。

10-38

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

SPI 互換ポート・コントローラ

以下の手順は、マスター・コマンドに応じて、SPI スレーブでのSPI 受信／送信 DMA シーケンスを示します。
1. プロセッサ・コアでは、適切な DMA レジスタに書き込んで SPI
DMA チャンネルをイネーブルにし、必要な作業単位、アクセス
方向、ワード・カウントなどを設定します。詳細については、9-1
ページの「ダイレクト・メモリ・アクセス」を参照してください。
2. プロセッサ・コアでは、SPI_CTL レジスタに書き込んで、シリアル・
リンクのモードを SPI マスターで設定されたモードと同じに定義します。TIMOD フィールドは、「DMA で受信」（TIMOD = 10）または「DMA で送信」
（TIMOD = 11）のモードを選択するように設定されます。
3. 受信用に設定された場合、スレーブ・セレクト入力がアクティブになると、スレーブはアクティブ SCK エッジでデータの送／受信を開始します。シフト・レジスタ内の値は、転送の最後に SPI_RDBR レ
ジスタにロードされます。SPI は、SPI_RDBR レジスタからデータを読み出して SPI DMA FIFO に書き込むときに、メモリへの DMA
書込みを要求します。DMA の許可と同時に、DMA エンジンは SPIDMA FIFO からワードを読み出し、メモリに書き込みます。
送信用に設定された場合、SPI はメモリからの DMA 読出しを要求します。DMA の許可と同時に、DMA エンジンは、メモリからワー
ドを読み出して SPI DMA FIFO に書き込みます。続いて SPI は、
SPI DMA FIFO からデータを読み出して SPI_TDBR レジスタに書き込み、次の転送の開始を待ちます。スレーブ・セレクト入力がアクティブになると、スレーブはアクティブ SCK エッジでデータの送／受信を開始します。SPI_TDBR レジスタ内の値は、転送の初めにシ
フト・レジスタにロードされます。
4. 受信モードでは、SPI DMA FIFO 内にデータがある（FIFO が空でない）限り、SPI スレーブは、メモリへの DMA 書込みの要求を続行します。DMA エンジンは、SPI DMA ワード・カウント・レ
ジスタが 1 から 0 に遷移するまで、SPI DMA FIFO からのワード
読出しとメモリへの書込みを続行します。SPI スレーブは、スレー
ブ・セレクト入力がアクティブである限り、アクティブ SCK エッジ
でワードの受信を続行します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

10-39

DMA

送信モードでは、SPI DMA FIFO に空領域がある（FIFO が満杯でない）限り、SPI スレーブは、メモリからの DMA 読出しの要求を続行します。DMA エンジンは、SPI DMA ワード・カウント・
レジスタが 1 から 0 に遷移するまで、メモリからのワード読出しと
SPI DMA FIFO への書込みを続行します。SPI スレーブは、スレー
ブ・セレクト入力がアクティブである限り、アクティブ SCK エッジ
でワードの送信を続行します。
受信 DMA 動作では、DMAエンジンが受信データストリームについて行けない場合に、受信バッファは GM ビットの状態に基づいて動作します。
GM = 1 で DMA FIFO が満杯の場合、デバイスは MOSI ピンから新しいデー
タの受信を続行し、SPI_RDBR レジスタ内の古いデータに上書きします。
GM = 0 で DMA FIFO が満杯の場合には、着信データは捨てられ、SPI_RDBR
レジスタは更新されません。受信 DMA の実行中、送信バッファは空であり、TXE はセットされていると見なされます。SZ = 1 の場合には、デバイ
スは、MISO ピンで0 を繰り返し送信します。SZ = 0 の場合には、SPI_TDBR
レジスタの内容を繰り返し送信します。このモードでは、TXE アンダーラ
ン条件はエラー割込みを生成できません。
送信 DMA 動作では、DMAエンジンが送信ストリームについて行けない場
合に、送信ポートは SZ ビットの状態に基づいて動作します。
SZ = 1 でDMAFIFO が空の場合、デバイスは MISO ピンで0を繰り返し送信します。SZ = 0
で DMA FIFOが空の場合には、DMA バッファが空になる前に送信した最後のワードを繰り返し送信します。送信 DMAモードに設定した場合には、
SPI_RDBR レジスタ内のデータ、
RXS ビットと RBSY ビットのステータスなど、
SPI 受信動作のすべての側面を無視してください。このモードでは、RBSY
オーバーラン条件はエラー割込みを生成できません。
アクティブな SPI 送信DMA 動作中はDMA データの上書きを防ぐため、
SPI_TDBR レジスタへの書込みは行わないでください。アクティブなSPI受
信 DMA動作中の SPI_TDBR レジスタへの書込みは可能です。SPI_RDBR レジ
スタからの読出しはいつでも可能です。

10-40

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

SPI 互換ポート・コントローラ

DMA 要求が生成されるのは、DMA FIFO が空でない（TIMOD = 10 である）とき、または DMA FIFO が満杯でない（TIMOD = 11 である）ときです。
エラー割込みが生成されるのは、RBSY オーバーフロー・エラー条件がある（TIMOD = 10 である）とき、または TXE アンダーフロー・エラー条件がある（TIMOD = 11 である）ときです。

タイミング
イネーブル・リード時間（T1）、イネーブル遅延時間（T2）、順次転送遅
延時間（T3）は、それぞれ、常に SCK 周期の 2 分の1 以上であることが必要です。図 10-13を参照してください。連続したワード転送（T4）間の最小時間は 2 SCK 周期です。これは、1つのワードの SCK の最終アクティブ・
エッジから、次のワードの SCK の最初のアクティブ・エッジまで測定します。これは、SPI の設定（CPHA、MSTRなど）とは無関係です。
T1

T2

SCK
(CPOL =1)
PIO_nSPISSIN
㧔ࠬ࡟࡯ࡉߦ㧕T3
T4

図 10-13.SPI のタイミング
CPHA = 0 のマスター・デバイスでは、SCK 周期の少なくとも 2 分の1 の間は、スレーブ・セレクト出力は非アクティブ（ハイレベル）になります。
この場合、T1 とT2は、それぞれ常に SCK 周期の2分の 1に等しくなります。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

10-41

タイミング

10-42

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

第 11 章 パラレル・ペリフェラル・
インターフェース

パラレル・ペリフェラル・インターフェース（PPI）は、16ビットまでのデータに対応できる半二重方式の双方向ポートです。PPI には専用のクロック・ピン、3 本の多重フレーム同期ピン、4 本の専用データ・ピンがあります。PF ピンを再設定することで、12 本までのデータ・ピンを追加使用できます。2 つの 8ビット・データ・サンプルを1つの16ビット・ワー
ドとしてパックできるため、最高のシステム・スループットは 8 ビット・
データで実現します。このような場合、以前のサンプルは 8 つの最下位
ビット（LSB）に置かれます。
PPI_CLK ピンは、SCLK/2 までの外部クロック入力を受け付けることができます。クロックを内部的に供給することはできません。表 11-1 にPPI のピン・インターフェースを示します。
プログラマブル・フラグ・ピンが PPI用に設定された場合、プログラマブ
ル・フラグ MMR 内のそのビット位置は0 として読み返されます。
表 11-1.

PPI ピン

信号名

機能

方向

代替機能

PPI15

データ

双方向

PF4、SPI イネーブル出力

PPI14

データ

双方向

PF5、SPI イネーブル出力

PPI13

データ

双方向

PF6、SPI イネーブル出力

PPI12

データ

双方向

PF7、SPI イネーブル出力

PPI11

データ

双方向

PF8

PPI10

データ

双方向

PF9

PPI9

データ

双方向

PF10

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

11-1

PPI レジスタ

表 11-1.

PPI ピン（続き）

信号名

機能

方向

代替機能

PPI8

データ

双方向

PF11

PPI7

データ

双方向

PF12

PPI6

データ

双方向

PF13

PPI5

データ

双方向

PF14

PPI4

データ

双方向

PF15

PPI3

データ

双方向

N/A

PPI2

データ

双方向

N/A

PPI1

データ

双方向

N/A

PPI0

データ

双方向

N/A

PPI_FS3

フレーム同期 3/
フィールド

双方向

PF3、SPI イネーブル出力

PPI_FS2

フレーム同期 2/
VSYNC

双方向

タイマ 2

PPI_FS1

フレーム同期 1/
HSYNC

双方向

タイマ 1

PPI_CLK

SLCK/2 まで

入力クロックN/A

PPI レジスタ
PPIには、その動作を調整する5本のメモリマップド・レジスタ（MMR）があります。これらのレジスタは、PPIコントロール・レジスタ（PPI_CONTROL）、
PPI ス テー タ ス・レ ジ ス タ（PPI_STATUS）、遅延 カ ウン ト・レジ ス タ（PPI_DELAY）、転送カウント・レジスタ（PPI_COUNT）、ラインズ・パー・
フレーム・レジスタ（PPI_FRAME）です。
以下の節では、これらの MMR の説明とビット図を示します。

11-2

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

パラレル・ペリフェラル・インターフェース■ PPI_CONTROL レジスタ
PPI コントロール・レジスタ（PPI_CONTROL）は、PPI の動作モード、制御信号極性、ポートのデータ幅を設定します。この MMRのビット図については、11-4 ページの図 11-1 を参照してください。
POLC ビットと POLS ビットは、それぞれ PPI_CLK 信号と PPI_FS1/PPI_FS2 信号の選択的な信号反転を可能にします。これによって、幅広い制御信号極性をもつデータ・ソースとレシーバに接続するためのメカニズムが提供されます。通常、リモートのデータ・ソース／レシーバは、設定可能な信号極性も提供します。したがって、POLC ビットと POLS ビットにより、その柔軟性が高まります。
DLEN[2:0] フィールドは、どのモードでも PPI ポートの幅を指定するようにプログラムされます。なお、8～ 16ビットの任意の幅を利用できますが、
9 ビットのポート幅は例外です。DLEN 設定の結果として PPI では使用されない PF ピンは、通常の PF 能力では自由に使用できます。

[

ITU-R 656モードでは、DLEN フィールドに10ビットのポート幅を超えるものを設定しないでください。PPI が新たなピンを確保するため、他のペリフェラルからは使用できなくなります。

SKIP_EN ビットがセットされると、PPI を通じて読み出されるデータ・エ

レメントの選択的なスキッピングがイネーブルにされます。データ・エレ
メントを無視することで、PPI はDMA 帯域幅を節約できます。
SKIP_EN ビットがセットされると、SKIP_EO ビットによって PPIは入力デー

タストリーム内の奇数エレメントまたは偶数エレメントを無視できます。
これが役立つのは、たとえば、カラー・ビデオ信号を YCbCr フォーマット（Cb、Y、Cr、Y、Cb、Y、Cr、Y...）で読み出すときです。エレメン
トを 1 つおきにスキップすることで、PPI はLuma（Y）値またはChroma（CrまたはCb）値だけを読み出すことができます。また、2 つのプロセッ
サを同じ着信ビデオ・ストリームに同期させるときにも役立ちます。1つのプロセッサで Luma 処理を行い、もう1つのプロセッサ（最初のプロセッ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

11-3

PPI レジスタ

PPI コントロール・レジスタ（PPI_CONTROL）
0xFFC0 1000

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

POLS
0 - 0 - PPI_FS1とPPI_FS2
を立上がりエッジのアサートとして扱います
1 - PPI_FS1 と PPI_FS2 を立下がりエッジのアサートとして扱いますPOLC
0 - PPI は PPI_CLK の立上がり
エッジでデータをサンプリン
グし、立下がりエッジでデータを駆動します。
1 - PPI は PPI_CLK の立下がりエッジでデータをサンプリン
グし、立上がりエッジでデータを駆動します。
DLEN[2:0]（データ長）
000 - 8 ビット
001 - 10 ビット
010 - 11 ビット
011 - 12 ビット
100 - 13 ビット
101 - 14 ビット
110 - 15 ビット
111 - 16 ビット
SKIP_EO（スキップ偶数／奇数）
ITU-R656 と GP の入力モードで：0 - 奇数番号のエレメントをスキップ
1 - 偶数番号のエレメントをスキップ
SKIP_EN（スキップ・イネーブル）
ITU-R656 と GP の入力モードで：0 - スキッピングをディスエーブル
1 - スキッピングをイネーブル
PACK_EN（パッキング・モード・イネーブル）
0 - ディスエーブル
1 - 出力モード、アンパッキング・イネーブル
入力モード、パッキング・イネーブル

3
0

2
0

1
0

0
0

リセット＝ 0x0000

PORT_EN（イネーブル）
0 - PPI ディスエーブル
1 - PPI イネーブル
PORT_DIR（方向）0 - PPI は受信モード（入力）1 - PPI は送信モード（出力）XFR_TYPE[1:0]（転送タイプ）
入力モードで：
00 -ITU-R656、アクティブ・フィー
ルド専用
01 -ITU-R656、フィールド全体
10 -ITU-R656、垂直ブランキング専用
11 -非 ITU-R 656 モード
出力モードで：00, 01, 10 - 無同期出力モード
11 -1、2、または 3 つのフレーム同期
による出力モード
PORT_CFG[1:0]（ポート設定）
非 ITU-R 656 入力モードで（PORT_DIR ＝ 0、XFR_TYPE ＝ 11)：00 - 1 つの外部フレーム同期
01 - 2つまたは3つの内部フレーム同期
10 - 2つまたは3つの外部フレーム同期
11 - 0 フレーム同期、トリガ
フレ ー ム同 期に よ る出 力 モー ド で（PORT_DIR ＝ 1、XFR_TYPE ＝ 11）：
00 -1 つのフレーム同期
01 -2 つまたは 3 つのフレーム同期
10 -予備11 -PPI_FS1 ではなく、PPI_FS2 のアサーションに PPI_FS3 を同期。

FLD_SEL（アクティブ・フィールド選択）
ITU-R 656 モードでは、XFR_TYPE ＝ 00 のとき：
0 - フィールド 1
1 - フィールド 1 と 2
外部フレーム同期による RX モードでは、PORT_CFG ＝ 11 のとき：
0 - 外部トリガ
1 - 内部トリガ

図 11-1. PPI コントロール・レジスタ

11-4

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

パラレル・ペリフェラル・インターフェース

サとは SKIP_EO ビットの設定が違います）で Chroma処理を行うことができます。このスキッピング機能は、外部フレーム同期による ITU-R 656
モードと RX モードで有効です。
PACK_EN ビットが意味を持つのは、PPI ポート幅（DLEN[2:0] で選択）が8ビットの場合だけです。DMA バス上の PPI_CLK によって開始されたすべてのイベント（つまり、入力動作または出力動作）では、16ビットのエン
ティティを扱います。つまり、どの PPI_CLK でも 10ビットの入力ポート幅
では、依然として 16ビットの入力ワードが得られます。上位 6ビットは0です。同様に、8 ビットのポート幅でも 16 ビットの入力ワードが得られ、上位 8 ビットはオール 0 です。8 ビット・データの場合には、16 ビット・
ワードごとに 2バイトのデータが存在するように、この情報をパックすると効率が上がるのが普通です。これは PACK_EN ビットの機能です。このビットがセットされると、すべての RX モードに対するパッキングがイネーブルにされます。
次のデータが、DMAを介してPPI に伝送されるとします。
0xCE, 0xFA, 0xFE, 0xCA....
• PACK_EN をセットした場合：
8 ビットのポート幅用に設定されたPPIに読み出されます。
0xCE, 0xFA, 0xFE, 0xCA...

DMA バスに転送されます。
0xFACE, 0xCAFE, ...

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

11-5

PPI レジスタ• PACK_EN をクリアした場合：
PPI に読み出されます。
0xCE, 0xFA, 0xFE, 0xCA, ...

DMA バスに転送されます。
0x00CE, 0x00FA, 0x00FE, 0x00CA, ...

TX モードの場合、PACK_EN をセットすると、バイトのアンパッキングがイネーブルにされます。メモリ内の次のデータが、DMA を介してPPI を通じて転送出力されるとします。
0xFACE CAFE.... （0xFA と 0xCAは、それぞれの16ビット・ワードの 2つの最上位ビット（MSB）です）。

• PACK_EN をセットした場合：
PPI にDMA されます。
0xFACE, 0xCAFE, ...

8 ビットのポート幅用に設定された PPI を通じて転送出力されます（なお、LSB が最初に転送されます）。
0xCE, 0xFA, 0xFE, 0xCA, ...

• PACK_EN をクリアした場合：
PPI にDMA されます。
0xFACE, 0xCAFE, ...

8 ビットのポート幅用に設定された PPI を通じて転送出力されます。
0xCE, 0xFE, ...

11-6

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

パラレル・ペリフェラル・インターフェース

FLD_SEL ビットは、主にITU-R 656 のアクティブ・フィールド専用モードで使用されます。FLD_SEL ビットは、各ビデオ・フレームのフィールド 1にだけ転送するのか、それともフィールド 1 と 2 の両方に転送するのかを決定します。したがって、アクティブ・ビデオのおよそ半数のフィールドにのみ転送することによって、DMA 帯域幅の節約を可能にします。
PORT_CFG[1:0] フィールドは、PPI の動作モードの設定に使用されます。

このフィールドは、ポートのデータ転送方向を設定する PORT_DIR ビットと連携して機能します。後述するように、XFR_TYPE[1:0] フィールドも動作モードの設定に使用されます。PPI の可能な動作モードについては、表11-2 を参照してください。
表 11-2.

PPI の可能な動作モード
PORT_
DIR

PORT_
CFG

XFR_T
YPE

POLC

RX モード、0 フレーム同期、 0
外部トリガ

0

11

11

0または 0または 0
1
1

RX モード、0 フレーム同期、 0
内部トリガ

0

11

11

0または 0または 1
1
1

RXモード、1つの外部フレー
ム同期

1

0

00

11

0または 0または X
1
1

RX モード、2 つまたは 3 つの外部フレーム同期

3

0

10

11

0または 0または X
1
1

RX モード、2 つまたは 3 つの内部フレーム同期

3

0

01

11

0または 0または X
1
1

RX モード、ITU-R 656、ア
クティブ・フィールド専用

組込み

0

XX

00

0または 0
1

0または
1

RX モード、ITU-R 656、垂直ブランキング専用

組込み

0

XX

10

0または 01

X656、 組込み

0

XX

01

0または 0
1

X

0

1

XX

00、01、 0または 0または X
10
1
1

PPI モードRX モー ド、ITU-R
フィールド全体

同期の数

TX モード、0 フレーム同期

POLS

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

FLD_
SEL

11-7

PPI レジスタ

表 11-2.

PPI の可能な動作モード（続き）

PPI モード

同期の
数

PORT_
DIR

PORT_
CFG

XFR_T
YPE

POLC

POLS

FLD_
SEL

TX モード、1 つの内部または外部フレーム同期

1

1

00

11

0または 0または X
1
1

TXモード、2つの外部フレー
ム同期

2

1

01

11

0または 0または X
1
1

TX モード、2 つまたは 3 つの内部フレーム同期、
FS3 を
FS1 のアサーションに同期

3

1

01

11

0または 0または X
1
1

TX モード、2 つまたは 3 つの内部フレーム同期、
FS3 を
FS2 のアサーションに同期

3

1

11

11

0または 0または X
1
1

XFR_TYPE[1:0] フィールドは、PPIのさまざまな動作モードを設定します。
XFR_TYPE[1:0] が PPI_CONTROL の他のビットと連携してPPI の動作モードを決定する詳細については、表 11-2 を参照してください。
PORT_EN ビットがセットされると、PPIの動作をイネーブルにします。

L

11-8

なお、入力ポートとして設定された場合、適切な同期信号が受信されるまでは PPI をイネーブルにしてもデータ転送は開始されません。出力ポートとして設定された場合には、フレーム同期（タイマ・ユニット）がイネーブルにされるとすぐに転送（適切な同期信号を含めて）が始まります。したがって、それまでに、すべてのフレーム同期を設定する必要があります。詳細については 11-30 ページの「GP モードでのフレーム同期」を参照してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

パラレル・ペリフェラル・インターフェース■ PPI_STATUS レジスタ
PPI ステータス・レジスタ（PPI_STATUS）には、PPI の現在の動作状態についての情報を提供するビットが含まれています。

L

読出し時にはレジスタ全体がクリアされます。したがって、ステー
タス・ワードを解析して、セットされたビットを判断する必要があります。

ERR_DET ビットは、ITU-R 656 の制御ワード・プリアンブルでエラーが検出されたかどうかを示すスティッキー・ビットです。このビットは、ITU-R
656 モードでのみ有効です。ERR_DET = 1 の場合には、プリアンブルでエラーが検出されました。ERR_DET = 0 の場合には、プリアンブルでエラーは検出されませんでした。
ERR_NCOR ビットはスティッキーであり、
ITU-R 656 モードでのみ関係します。ERR_NCOR = 0 で ERR_DET = 1 の場合には、発生したすべてのプリアン
ブル・エラーが訂正されました。ERR_NCOR = 1 の場合には、プリアンブル
でエラーは検出されましたが、訂正されませんでした。SIC_IMASK レジス
タでこの条件がマスクされていない限り、この状況では PPI エラー割込みが生成されます。
FT_ERR ビットはスティッキーであり、セットされると、フレーム・トラッ

ク・エラーが発生したことを示します。これは RX モードでのみ有効です。
この条件では、PPI_FRAME にプログラムされたフレーム当たりのライン数
は「フレーム開始検出」条件とは調和しません（11-13 ページの情報メモを参照）。SIC_IMASK レジスタでこの条件がマスクされていない限り、フレーム・トラック・エラーによって PPI エラー割込みが生成されます。
FLD ビットは、F（ITU-R 656モード）または PPI_FS3（他の RX モード）の状態の変化と同時に、セットまたはクリアされます。これは入力モードでのみ有効です。FLD の状態は、F 信号または PPI_FS3 信号の現在の状態を反映します。つまり、FLD ビットは、PPI によって処理されている現在のビデオ・フィールドを常に反映します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

11-9

PPI レジスタOVR ビットはスティッキーであり、セットされると、PPI FIFOがオーバー

フ ロ ー し て そ れ 以 上 の デ ー タ を 受 け 付 け ら れ な い こ と を 示 し ま す。
SIC_IMASK レジスタでこの条件がマスクされていない限り、FIFOオーバー
フロー・エラーによって PPI エラー割込みが生成されます。

L

PPI FIFO は16ビット幅であり、16のエントリがあります。

UNDR ビットはスティッキーであり、セットされると、PPI FIFO がアン
ダーランしてデータ不足であることを示します。SIC_IMASK レジスタでこの条件がマスクされていない限り、FIFO アンダーラン・エラーによって
PPI エラー割込みが生成されます。
PPI ステータス・レジスタ（PPI_STATUS）
読出しクリア0xFFC0 1004

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7 6
0 0

ERR_NCOR（エラー未訂正）
ITU-R 656 モードでのみ使用
0 - 未訂正プリアンブル・
エラーの発生なし
1 - プリアンブル・エラーが検出されましたが、訂正されませんでした
ERR_DET（エラー検出）ITU-R 656 モードでのみ使用
0 - プリアンブル・エラーは検出されませんでした
1 - プリアンブル・エラーが検出されました

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000
FLD（フィールド・インジケータ）
0 - フィールド 1
1 - フィールド 2
FT_ERR（フレーム・トラック・エラー）
0 - 割込みなし
1 - フレーム・トラック・エラー
割込みが発生OVR（FIFO オーバーフロー）
0 - 割込みなし
1 - FIFO オーバーフロー・エラー
割込みが発生UNDR（FIFO アンダーラン）
0 - 割込みなし
1 - FIFO アンダーラン・エラー割込みが発生

図 11-2. PPI ステータス・レジスタ

11-10

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

パラレル・ペリフェラル・インターフェース■ PPI_DELAY レジスタ
遅延カウント・レジスタ（PPI_DELAY）は、0 フレーム同期による ITU-R
656 モードと GP モードを除いて、すべての設定で使用できます。このレジスタには、PPI_FS1 のアサーションからデータの読出しや書込みが開始されるまでに生じる遅延の PPI_CLK サイクル数が含まれています。

L

なお、少なくとも 1 つのフレーム同期を使用する TX モードでは、
PPI_DELAY レジスタで指定された値を越えて、1 サイクルの遅延があります。

遅延カウント・レジスタ（PPI_DELAY）
0xFFC0 100C

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000
PPI_DELAY[15:0]
PPI_FS1 のアサーションからデータのラッチや送信までに生じる遅延のPPI_CLK サイクル数

図 11-3. 遅延カウント・レジスタ■ PPI_COUNT レジスタ
転送カウント・レジスタ（PPI_COUNT）は、繰り返しハードウェア・フレー
ム同期（外部的または内部的に生成）が発生する場合にのみ使用され、
ITU-R 656 モードや 0フレーム同期によるモードでは必要ありません。RX
モードの場合、このレジスタは、ライン当たりで PPI に読み出すサンプル数－ 1 を保持します。TXモードの場合、ライン当たりで PPI を通じて書き込むサンプル数－ 1 を保持します。レジスタ自身は、実際には転送ごとに

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

11-11

PPI レジスタ

デクリメントしません。したがって、新ラインのデータの初めには、このレジスタの値を書き換える必要はありません。たとえば、PPI を通じて 100
個のサンプルを受信または送信するには、PPI_COUNT を 99に設定します。

[

PPI_COUNTにプログラムされたサンプル数と、
PPI_FS1 によって指定された「水平」期間中に予想されるサンプル数とが一致するように注意してください。

転送カウント・レジスタ（PPI_COUNT）
0xFFC0 1008

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

PPI_COUNT[15:0]
RX モードでは、ライン当たり
で PPI に読み出されるサンプル
数－ 1 の値を保持します。TX
モ ー ド で は、ラ イ ン 当 た り でPPI を通じて書き込まれるサン
プル数－ 1 の値を保持します。

図 11-4. 転送カウント・レジスタ■ PPI_FRAME レジスタ
ラインズ・パー・フレーム（PPI_FRAME）レジスタは、2つまたは3 つの外部フレーム同期による TXモードと、2つまたは 3つのフレーム同期によるすべての RX モードで使用されます。このレジスタは、データのフレーム当たりで予想されるライン数を保持します。通常、フレームはビデオの感覚で、奇数フィールドおよび偶数フィールドとして定義されます（フィールド 1 とフィールド2、PPI_FS3 または ITU-R 656 F 信号によって指定）。しかし、2 つのフレーム同期しか使用できない場合には、フレームは、2 つのフレーム同期の同時期のアサーションとすることができます。ライン
は、完全な PPI_FS1 サイクル、つまり完全な ITU-R 656 SAV-EAVサイクルと定義されます。

11-12

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

パラレル・ペリフェラル・インターフェース

PPI_FRAME によって指定されたライン数が転送される前に「フレーム開始

検 出」が 発 生 し た 場 合 に は、フ レ ー ム・ト ラ ッ ク・エ ラ ー が 生 じ て、
PPI_STATUS の FT_ERR ビットがセットされます。しかし、PPIは、PPI_FRAMEにプログラムされた値に自動的に再初期化されて、データ転送が続行されます。PPI は、外部フレーム開始検出条件に合わせて再同期されます。

L

ITU-R 656 モードでは、フレーム開始検出はフィールド・インジ
ケータである Fの立下がりエッジで発生します。これはフィールド
1 の先頭で発生します。

L

3 つの外部フレーム同期による RX モードでは、フレーム開始検出
は、PPI_FS3 がローレベルである間に、PPI_FS2 のアサーションに続いて PPI_FS1 のアサーションが行われるときにおきます。これはフィールド 1 の先頭で発生します。PPI_FS3 は、PPI_FS2 がアサートされる時ではなく、PPI_FS1 がアサートされる場合でのみ、ローレ
ベルである必要があります。また、PPI_FS3 は、PPI がイネーブルになった後の初期のフレームの開始によってのみ、同期動作として使用されます。その後は無視されます。

L

3 つの外部フレーム同期によるRX モードを使用し、必要な同期は2つだけである場合には、PPI を3 フレーム同期動作用に設定し、PPI_FS3 ピンに GND への外部プルダウンを提供します。

ラインズ・パー・フレーム・レジスタ（PPI_FRAME）
0xFFC0 1010

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

PPI_FRAME[15:0]
データのフレーム当たりで予想されるライン数を保持します

図 11-5. ラインズ・パー・フレーム・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

11-13

ITU-R 656 モード

ITU-R 656 モード
PPI は、ITU-R 656 フレームのデータに対して3 つの入力モードを提供します。ここでは、これらのモードについて説明します。PPI はITU-R 656
出力モードには明示的に対応しませんが、PPI をこの状況で使用するための推奨事項も提供します。

■ ITU-R 656 の背景
ITU-R 656 勧告（以前の名前は CCIR-656）に基づいて、デジタル・ビデ
オ・ストリームには、525/60（NTSC）システムと625/50（PAL）システ
ムに対する特性があります（11-15 ページの図 11-6 と 11-16 ページの図11-7 を参照）。プロセッサは、ITU-R 656のビット・パラレル・モードだけを提供します。8ビットと 10ビットのビデオ・エレメント幅に対応します。
このモードでは、水平（H）信号、垂直（V）信号、フィールド（F）信号は制御ワードを形成する一連のバイトの形で、ビデオ・データストリームの組込み部分として送信されます。Start of Active Video（SAV）信号とEnd of Active Video（EAV）信号は、各ラインに読み出されるデータ・エ
レメントの先頭と最後を示します。SAVは Hの 1-0 遷移で発生し、EAV は
H の 0-1 遷移で始まります。ビデオのフィールド全体は、アクティブ・ビ
デオ＋水平ブランキング（EAV とSAV コードとの間のスペース）と垂直
ブランキング（V ＝ 1 であるスペース）で構成されます。ビデオのフィー
ルドは、Fビットの遷移で始まります。
「奇数フィールド」は F ＝0 の値で示され、偶数フィールドは F ＝ 1 の値で示されます。プログレッシブ・ビ

11-14

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

パラレル・ペリフェラル・インターフェース

デオは、フィールド 1とフィールド2 を区別しません。一方、インターレー
ス・ビデオは、各フィールドの 1つおきの行を結合して実際のビデオ・イ
メージを作成するため、各フィールドを一意的に扱う必要があります。

ࠕࠢ࠹ࠖࡉ࡮ࡆ࠺ࠝߩᦨᓟ

EAV
ࠦ࡯࠼
㧔H㧩1㧕
F
F

0
0

0
0
4

X
Y

ࠕࠢ࠹ࠖࡉ࡮ࡆ࠺ࠝߩవ㗡

SAV
ࠦ࡯࠼
㧔H㧩0㧕

᳓ᐔ
ࡉ࡜ࡦࠠࡦࠣ
8
0

1
0

8
0

1
0

268㧔PALߢߪ280ᰴߩ࡜ࠗࡦߩవ㗡

8
0

1
0

F
F

0
0

0
0

X C Y C
Y B
R

4

Y C
B

Y C
R

Y

C Y
R

F
F

࠺ࠫ࠲࡞࡮
ࡆ࠺ࠝ࡮
ࠬ࠻࡝࡯ࡓ

1440

1716㧔PALߢߪ1728)

図 11-6. NTSC（PAL）システム用の ITU-R 656 8 ビット・パラレル・
データ・ストリーム

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

11-15

ITU-R 656 モード

࡜ࠗࡦ⇟ภ
1

࡜ࠗࡦ4

ု⋥ࡉ࡜ࡦࠠࡦࠣ
ࡈࠖ࡯࡞࠼1᳓ᐔࡉ࡜ࡦࠠࡦࠣ

20ࡈࠖ࡯࡞࠼1ࠕࠢ࠹ࠖࡉ࡮ࡆ࠺ࠝ
264

࡜ࠗࡦ266ု⋥ࡉ࡜ࡦࠠࡦࠣ

ࡈࠖ࡯࡞࠼2283

ࡈࠖ࡯࡞࠼2ࠕࠢ࠹ࠖࡉ࡮ࡆ࠺ࠝ

EAV

525

࡜ࠗࡦ3

1

࡜ࠗࡦ1

V

H
(EAV)

H
(SAV)

1-3,
266-282

1

1

1

0

4-19,
264-265

0

1

1

0

20-26300

10283-525

1

0

1

0

F

V

H
(EAV)

H
(SAV)

1-22,
311-312

0

1

1

0

23-310001

0313-335,624-625

1

1

1

0

336-623

1

0

1

0

SAV

ု⋥ࡉ࡜ࡦࠠࡦࠣ

ࡈࠖ࡯࡞࠼1᳓ᐔࡉ࡜ࡦࠠࡦࠣ

23ࡈࠖ࡯࡞࠼1ࠕࠢ࠹ࠖࡉ࡮ࡆ࠺ࠝ
311

࡜ࠗࡦ313ု⋥ࡉ࡜ࡦࠠࡦࠣ
336
ࡈࠖ࡯࡞࠼2ࠕࠢ࠹ࠖࡉ࡮ࡆ࠺ࠝ

ࡈࠖ࡯࡞࠼2624

ု⋥ࡉ࡜ࡦࠠࡦࠣ
625
EAV

F

࡜ࠗࡦ⇟ภ

࡜ࠗࡦ⇟ภ

࡜ࠗࡦ625SAV

図 11-7. ITU-R BT.656-4 用 NTSC/PAL システムの代表的なビデオ・フレーム分割
SAV コードと EAV コードの詳細を表 11-3 に示します。なお、3バイトの定義済みプリアンブル（0xFF、0x00、0x00）に続いて、XYステータス・
ワードがあります。XYステータス・ワードには、F（フィールド）ビット、V（垂直ブランキング）ビット、H（水平ブランキング）ビットに加えて、
1 ビットのエラー検出／訂正用の 4 つの保護ビットも含まれています。な
お、F と V は、EAVシーケンスの一部としてのみ変化が可能です（つまり、H = 0 から H = 1 への遷移）。ビット定義は次のとおりです。
• フィールド 1 に対しては F = 0• フィールド 2 に対しては F = 1

11-16

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

パラレル・ペリフェラル・インターフェース• 垂直ブランキング中は V = 1• 垂直ブランキング中でなければ V = 0• SAV では H = 0• EAV では H = 1•

P3 = V XOR H•

P2 = F XOR H•

P1 = F XOR V•

P0 = F XOR V XOR H

多くのアプリケーションでは、標準の NTSC/PAL フォーマット以外のビ
デオ・ストリーム（たとえば、CIF、QCIF）を採用できます。このため、プロセッサのインターフェースには、さまざまな行長とフィールド長に対応できるだけの十分な柔軟性があります。一般に、着信ビデオの EAV/SAV
コードが適切である限り、PPI ではそれを読み出せます。つまり、CIF イ
メージを「656 対応」にフォーマットできます。この場合、EAV値とSAV
値でラインごとのイメージの範囲を定義し、V コードと F コードを使用して、フィールドとフレームを区切ることができます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

11-17

ITU-R 656 モード

表 11-3.

8/10 ビット ITU-R 656 ビデオ用のコントロール・バイト・
シーケンス
8 ビット・データ

10 ビット・
データ

D9
(MSB)

D8

D7

D6

D5

D4

D3

D2

D1

D0

1

1

1

1

1

1

1

1

1

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

コントロール・ 1
バイト

F

V

H

P3

P2

P1

P0

0

0

プリアンブル■ ITU-R 656 入力モード
図 11-8に、ITU-R 656入力モードでの一般的なデータ移動を示します。この図では、クロック CLK はビデオ・ソースによって提供されるか、システ
ムによって外部から提供されます。

ITU-R 656౉ജࡕ࡯࠼

'656੕឵ߩ
ࡆ࠺ࠝ࡮࠰࡯ࠬ

PPI⚵ㄟߺ೙ᓮߦࠃࠆ
8/10ࡆ࠶࠻࡮࠺࡯࠲

CLK

PPIx

PPI_CLK

図 11-8. ITU-R 656 入力モード

11-18

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

パラレル・ペリフェラル・インターフェース

ITU-R 656 入力に対しては、フィールド全体、アクティブ・ビデオ専用、
垂直ブランキング期間専用という、3 つのサブモードがサポートされます。
図 11-9に、これら 3 つのサブモードを示します。

ࡉ࡜ࡦࠠࡦࠣ

ࡉ࡜ࡦࠠࡦࠣ

ࡉ࡜ࡦࠠࡦࠣ

ࡈࠖ࡯࡞࠼1ࠕࠢ࠹ࠖࡉ࡮ࡆ࠺ࠝ

ࡈࠖ࡯࡞࠼1ࠕࠢ࠹ࠖࡉ࡮ࡆ࠺ࠝ

ࡈࠖ࡯࡞࠼1ࠕࠢ࠹ࠖࡉ࡮ࡆ࠺ࠝ

ࡉ࡜ࡦࠠࡦࠣ

ࡉ࡜ࡦࠠࡦࠣ

ࡉ࡜ࡦࠠࡦࠣ

ࡈࠖ࡯࡞࠼2ࠕࠢ࠹ࠖࡉ࡮ࡆ࠺ࠝ

ࡈࠖ࡯࡞࠼2ࠕࠢ࠹ࠖࡉ࡮ࡆ࠺ࠝ

ࡈࠖ࡯࡞࠼2ࠕࠢ࠹ࠖࡉ࡮ࡆ࠺ࠝ

ࡉ࡜ࡦࠠࡦࠣ

ࡉ࡜ࡦࠠࡦࠣ

ࡉ࡜ࡦࠠࡦࠣ

ࡈࠖ࡯࡞࠼ో૕ࠍㅍା

ࠕࠢ࠹ࠖࡉ࡮ࡆ࠺ࠝߩߺㅍା

ࡉ࡜ࡦࠠࡦࠣߩߺㅍା

図 11-9. ITU-R 656 入力サブモード
X フィールド全体

このモードでは、着信ビットストリームの全体が PPI を通じて読み出されます。これには、アクティブ・ビデオだけではなく、水平／垂直ブランキ
ング期間に組み込まれる補助データやコントロール・バイト・シーケンスも含まれます。データ転送は、フィールド 1への同期が行われた直後に開始されますが、F＝ 0割当てを含む最初の EAV コードは組み込まれていません。

L

PPI をイネーブルにした後で転送される最初のラインには、その最初の 4 バイト・プリアンブルが欠落しています。しかし、それ以降のラインとフレームには、すべての制御コードが完全に備わっています。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

11-19

ITU-R 656 モード

このモードの 1 つの副次的な利点として、「ループバック」機能のイネーブルが挙げられます。この機能では、1 ～ 2 フレームのデータをPPI を通じて読み出し、その後、互換性のあるビデオ表示デバイスに出力できます。もちろん、これには PPI ピンでの多重化が必要になりますが、PPI との間で656データを読出し／書込みできることを確認する便利な方法が提供されます。
X アクティブ・ビデオ専用

このモードが使用されるのは、フィールドのアクティブ・ビデオ部分だけが対象であり、ブランキング期間は対象でない場合です。PPI では、EAVと SAVとの間のすべてのデータだけでなく、V＝ 1の場合に存在するすべてのデータも無視されます（読み出されません）。このモードでは、コントロール・バイト・シーケンスはメモリに格納されず、PPI によって除外されます。フィールド 1 の先頭に同期した後、PPI は SAV を認識するまでは、着信サンプルを無視します。

L

このモードでは、ユーザは PPI_FRAME MMRにフレーム当たりの合計（アクティブ＋垂直ブランキング）ライン数を指定します。

X 垂直ブランキング期間（VBI）専用

このモードでは、V ＝ 1 がコントロール・バイト・シーケンス内にある間だけ、データ転送はアクティブです。これは、ビデオ・ソースが垂直ブランキング期間（VBI）の中央にあることを示し、補助データ伝送に使用されることがあります。ITU-R 656 勧告では、これらの補助データ・パケッ
トのフォーマットを指定しますが、PPI にはパケット自身をデコードする機能はありません。この作業はソフトウェアで行う必要があります。水平ブランキング・データはログに記録され、そこで VBI の行と合流します。
コントロール・バイト・シーケンス情報は、常にログに記録されます。
ユーザは、PPI_FRAME MMR にフレーム当たりの合計ライン数（アクティブ＋垂直ブランキング）を指定します。

11-20

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

パラレル・ペリフェラル・インターフェース

なお、VBI は、各フィールド内で 2 つの領域に分割されます。PPI の立場
からは、この 2 つの別個の領域は1 つの連続的な空間と見なされます。しかし、フレーム同期はフィールド 1の先頭から始まることを忘れないでください。これは、必ずしも垂直ブランキングの先頭に対応するとは限りません。たとえば、525/60 システムでは、フィールド1 の先頭（F ＝ 0）はVBI のライン4 に対応します。

■ ITU-R 656 出力モード
PPI は、ITU-R 656出力ストリームを適切なプリアンブルとブランキング
期間でフレーム化する機能を明示的には提供しません。しかし、0 フレー
ム同期による TX モードは、このプロセスを手動で行うことができます。
基本的に、このモードでは、PPI を通じてメモリからのストリーミング動作を提供します。データと制御コードは、ビデオ・ストリームを送信する
前にメモリ内で設定できます。2D DMA エンジンを使用すれば、これはいろいろな方法で実行できます。たとえば、必要ならば、1ラインのブラン
キング（H ＋ V）をバッファに格納して DMA コントローラによって N 回
送信してから、DMA アクティブ・ビデオに進むことができます。あるいは、1 つのフィールド全体（制御コードとブランキング付き）をバッファ内で静的に設定すると同時に、DMA エンジンは、アクティブ・ビデオ領域だけをフレームごとにバッファに転送することができます。

■ ITU-R 656 モードでのフレーム同期
ITU-R 656 モードでの同期は、常にフィールド・インジケータ Fの立下がりエッジで発生します。これは、フィールド 1の先頭に対応します。したがって、データが PPI に受信されるまでに、2 つまでのフィールドを無視できます（たとえば、PPI―カメラ・チャンネルが確立される前にフィールド 1 が開始された場合）。
ITU-R 656 モードでは、すべての H 信号と V信号がデータストリームに組み込まれているため、PPI_COUNT レジスタは必要ありません。しかし、
PPI_FRAME レジスタは、同期エラーをチェックするために使用されます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

11-21

汎用 PPI モード

ユーザは、この MMRを期待されるライン数にわたって各フレームのビデ
オにプログラムします。PPIでは、フレームの開始からフレーム終了条件（F ＝1から F ＝0 への遷移）がデコードされるまでに発生するEAV―SAVの 遷 移 数 を 記 録 し ま す。こ の 時 点 で、処 理 さ れ た 実 際 の ラ イ ン 数 が
PPI_FRAME 内の値と比較されます。一致しない場合には、PPI_STATUS レジ
スタの FT_ERR ビットがアサートされます。たとえば、SAV 遷移が行われなかった場合には、現在のフィールドには NUM_ROWS – 1 の行しかありま
せん。しかし、次のフレームの先頭で再同期が行われます。
フィールド全体の受信が完了すると、PPI_STATUS レジスタでフィールド・
ステータス・ビットがトグルされます。このようにして、割込みサービ
ス・ルーチン（ISR）は、どのフィールドが読み出されたかを認識できます。

汎用 PPI モード
汎用（GP）PPI モードは、多種多様なデータ・キャプチャ／伝送アプリ
ケーション向けに用意されています。表 11-4 に、これらのモードを要約します。特定のモードで特定の PPI_FSx フレーム同期が使用されていない
場合、ピンは、その多重化された代替プロセッサ機能に使用できる（つまり、タイマ・ピンやフラグ・ピンとして）ことを意味します。これに対する例外として、PPI が 2 フレーム同期モード用に設定されている場合、
PPI_FS3 は、たとえPPI によって使用されていなくても、汎用フラグとして使用できません。
表 11-4.

汎用 PPI モード

GP PPI モード

PPI_FS1
方向

PPI_FS2
方向

PPI_FS3方向

データ方向

RXモード、0フレーム同期、外部トリガ

入力

未使用

未使用

入力

RXモード、0フレーム同期、内部トリガ

未使用

未使用

未使用

入力

RX モード、1 つの外部フレーム同期

入力

未使用

未使用

入力

11-22

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

パラレル・ペリフェラル・インターフェース

表 11-4.

汎用 PPI モード（続き）

GP PPI モード

PPI_FS1
方向

PPI_FS2
方向

PPI_FS3方向

データ方向

RX モード、2 つまたは 3 つの外部フレーム同期

入力

入力

入力

入力

RX モード、2 つまたは 3 つの内部フレーム同期

出力

出力

出力

入力

TX モード、0 フレーム同期

未使用

未使用

未使用

出力

TX モード、1 つの外部フレーム同期

入力

未使用

未使用

出力

TX モード、2 つの外部フレーム同期

入力

入力

出力

出力

TX モード、1 つの内部フレーム同期

出力

未使用

未使用

出力

TX モード、2 つまたは 3 つの内部フレーム同期

出力

出力

出力

出力

図 11-10は、GP モードの一般的なフローを示します。図の上部には、1つの外部フレーム同期による RXモードの例を示します。PPI は、ハードウェ
ア・フレーム同期パルス（PPI_FS1）を受信した後で、PPI_DELAY にプログラムされた PPI_CLK サイクルだけ遅延します。続いて DMA コントローラ
は、PPI_COUNT によって指定されたサンプル数を転送します。この後で、しかも次の PPI_FS1 フレーム同期が到着するまでに到着するすべてのサン
プルは無視され、DMA バスに転送されません。

[

指定された PPI_COUNT のサンプルが読み出される前に次の PPI_FS1
フレーム同期が到着した場合には、サンプル・カウンタは 0 に再初期化されて、再び PPI_COUNT までのカウント・アップを開始します。この場合、DMA チャンネル設定は PPI 転送プロセスとの同期を失うことがあります。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

11-23

汎用 PPI モード

図 11-10の下部に、1つの内部フレーム同期による TX モードの例を示します。PPI_FS1 がアサートされた後、1 PPI_CLK サイクルの遅延があり、続いて PPI_DELAY にプログラムされた PPI_CLK サイクルにわたる遅延があります。次に、DMAコントローラは、PPI_COUNT によって指定されたサンプル数を転送します。次の PPI_FS1 同期とプログラムされた遅延が発生するまでは、これ以上の DMA は行われません。

[

指定されたPPI_COUNTのサンプルが転送される前に、次のPPI_FS1フ
レーム同期が到着した場合、同期が優先されて、新しいライン転送
シーケンスが開始されます。この場合、DMA チャンネル設定は
PPI 転送プロセスとの同期を失うことがあります。
ࡈ࡟࡯ࡓหᦼ
㧔PPI_FS1㧕

ࡊࡠࠣ࡜ࡓㆃᑧ
㧔PPI_DELAY㧕PPI_COUNTήⷞߐࠇࠆࠨࡦࡊ࡞

౉ജ

ࡈ࡟࡯ࡓ
หᦼ
㧔PPI_FS1㧕

1ࠨࠗࠢ࡞ߩㆃᑧࡊࡠࠣ࡜ࡓㆃᑧ
㧔PPI_DELAY㧕PPI_COUNT಴ജ

図 11-10. GP モードの一般的なフロー（PPI_FS1 のポジティブ・アサーションを想定）

11-24

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

パラレル・ペリフェラル・インターフェース■ データ入力（RX）モード
PPI は、いくつかのデータ入力モードをサポートします。これらのモードの違いは、主にデータのフレーム化方法です。モードごとの PPI の設定方法については、11-7 ページの表 11-2 を参照してください。
X フレーム同期なし

これらのモードは、受信データのフレーム化に周期的なフレーム同期が生成されないアプリケーション群をカバーします。データ転送を開始するには 2 つのオプションがあり、いずれも PPI_CONTROL レジスタによって設定されます。
• 外部トリガ：FLD_SEL = 0 で PORT_CFG = b#11 の場合、外部ソース
はトランザクションの開始時に 1 つのフレーム同期（PPI_FS1 に接続）を送信します。
• 内部トリガ：ソフトウェアは、FLD_SEL = 1 および PORT_CFG = b#11
で PORT_EN = 1 に設定してプロセスを開始します。
それ以降のすべてのデータ操作は DMA によって行われます。たとえば、交互に使用される 1K のメモリ・バッファを設定できます。一方が満杯になると、DMAは2 番目のバッファで続行します。それと同時に、別のDMA動作によって、最初のメモリ・バッファは再利用のためにクリアされます。

L

フレーム同期なしの RXモードでのクロック・ドメイン同期のために、モードがイネーブルになってから有効データを受信するまでに
2 PPI_CLK サイクル以上の遅延が生じることがあります。このため、有効データの開始の検出はソフトウェアで管理してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

11-25

汎用 PPI モード

X 1 つ、2 つ、または 3 つの外部フレーム同期

1 同期モードは、A/D コンバータ（ADC）アプリケーション向けに用意されています。図 11-11 の上部に、このモード用の代表的なシステム・セッ
トアップを示します。
A/Dࠦࡦࡃ࡯࠲

PPIࡈ࡟࡯ࡓหᦼ

PPI_FS1࠺࡯࠲

8㨪16ࡆ࠶࠻࡮࠺࡯࠲PPIx
PPI_CLK

CLKࡆ࠺ࠝ࡮࠰࡯ࠬ

PPI

HSYNC

PPI_FS1VSYNC

PPI_FS2FIELD

PPI_FS3DATA

8㨪16ࡆ࠶࠻࡮࠺࡯࠲

CLK

PPIx
PPI_CLK

図 11-11. RX モード、外部フレーム同期
図 11-11の下部に示す 3同期モードは、ITU-R 601 勧告に基づいてハード
ウェア・シグナリング（HSYNC、VSYNC、FIELD）を使用するビデオ・アプ
リケーションに対応します。このモードでのフレーム同期用のマッピング
は、PPI_FS1 = HSYNC、PPI_FS2 = VSYNC、PPI_FS3 = FIELD です。このモードでのフレーム同期の詳細については、11-30 ページの「GP モードでのフレーム同期」を参照してください。
3 同期モードで設定された場合、2 同期モードは、外付け抵抗によって
PPI_FS3 を GND にプルすることで暗黙的に利用できます。

11-26

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

パラレル・ペリフェラル・インターフェース

X 2 つまたは 3 つの内部フレーム同期

このモードは、マスター・プロセッサへのスレーブとする、ビデオ・ソー
スへのインターフェースに役立つことがあります。つまり、プロセッサ
は、PPI_FS1 と PPI_FS2 をアサートしてから PPI にデータを読み出すことによって、ビデオ・ソースからの読出しタイミングを制御します。PPI_FS3
フレーム同期は、どのフィールドが現在転送されているかを示しますが、これは出力であるため、使用しない場合はフローティングのままにしておけます。図 11-12に、このモードのサンプル・アプリケーションを示します。

PPIࠗࡔ࡯ࠫ࡮࠰࡯ࠬ

PPI_FS1HSYNC

PPI_FS2

VSYNC

PPIx

8㨪16ࡆ࠶࠻࡮࠺࡯࠲

PPI_CLK࠺࡯࠲
CLK

図 11-12. RX モード、内部フレーム同期

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

11-27

汎用 PPI モード■ データ出力（TX）モード
PPI は、いくつかのデータ出力モードを提供します。これらのモードの違いは、主にデータのフレーム化方法です。モードごとの PPI の設定方法については、11-7 ページの表 11-2 を参照してください。
X フレーム同期なし

このモードは、DMA コントローラによって指定されたデータ・ブロック
がフレーミングなしで PPI を通じて送信されます。つまり、DMA チャンネルが設定されてイネーブルにされ、PPI が設定されてイネーブルにされると、データ転送は PPI_CLK に同期してすぐに開始されます。このモードについては、図 11-13 を参照してください。

L

このモードでは、PPI のイネーブルと有効データの伝送との間に最大 16 SCLK サイクル（＞ 8 ビット・データの場合）または32 SCLK サイクル（8 ビット・データの場合）の遅延があります。さらに、
DMA は少なくとも 16サンプル（＞ 8ビット・データの場合）または 32サンプル（8 ビット・データの場合）を送信するように設定する必要があります。

PPIx

8㨪16ࡆ࠶࠻࡮࠺࡯࠲

PPI_CLK࡟ࠪ࡯ࡃ
CLK

図 11-13. TX モード、0 フレーム同期

11-28

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

パラレル・ペリフェラル・インターフェース

X 1 つまたは 2 つの外部フレーム同期

これらのモードでは、外付けレシーバは、PPI から送信されたデータをフレーム化することができます。1 同期と 2 同期の両方のモードが利用できます。図 11-14 の上部の図は 1 同期の場合を示し、下部の図は 2 同期モードを示します。

[

外部フレーム同期のアサーションと PPI を通じての有効データの転送出力との間には、1.5 PPI_CLK サイクル＋ PPI_DELAY にプログラムされた値という必須遅延があります。

PPI࠺࡯࠲࡮࡟ࠪ࡯ࡃ

PPI_FS1

FRAMESYNC

PPIx
࠺࡯࠲

8㨪16ࡆ࠶࠻࡮࠺࡯࠲
PPI_CLK

CLK

PPI࠺࡯࠲࡮࡟ࠪ࡯ࡃ
FRAMESYNC1

PPI_FS1

FRAMESYNC2

PPI_FS2࠺࡯࠲

CLK

8㨪16ࡆ࠶࠻࡮࠺࡯࠲PPIx
PPI_CLK

図 11-14. TX モード、1 つまたは 2 つの外部フレーム同期データ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

11-29

汎用 PPI モード

X 1 つ、2 つ、または 3 つの内部フレーム同期

1 同期モードは、単一フレーム同期によるD/A コンバータ（DAC）へのイ
ンターフェース向けに用意されています。11-30 ページの図 11-15 の上部に、このタイプの接続例を示します。
3 同期モードは、図 11-15 の下部に示すように、ビデオやグラフィックス
表示への接続に役立ちます。この場合、2同期モードは、PPI_FS3 を未接続のままにしておくことで暗黙的に利用できます。

D/Aࠦࡦࡃ࡯࠲PPI

FRAMESYNC

PPI_FS1

1ࡈ࡟࡯ࡓ
หᦼ

PPIx

8㨪16ࡆ࠶࠻࡮࠺࡯࠲

࠺࡯࠲
CLK

PPI_CLK

PPI

ࡆ࠺ࠝ⴫␜
HSYNC

PPI_FS1

3ࡈ࡟࡯ࡓ
หᦼ

PPI_FS2VSYNC

PPI_FS3

ࡈࠖ࡯࡞࠼

PPIx

8㨪16ࡆ࠶࠻࡮࠺࡯࠲CLK

PPI_CLK

図 11-15. PPI GP 出力■ GP モードでのフレーム同期
GP モードでのフレーム同期は、内部フレーム同期によるモードと外部フ
レーム同期によるモードでは動作が異なります。

11-30

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

パラレル・ペリフェラル・インターフェース

X 内部フレーム同期によるモード

内部フレーム同期によるモードでは、PPI_FS1 と PPI_FS2 はそれぞれ、タイマ 1 とタイマ2のパルス幅変調（PWM）回路に直接リンクされます。これにより、既存の TIMERx レジスタを使用して、これらの信号に対して任意のパルス幅と周期をプログラムできます。この機能は、広範囲のタイミ
ング・ニーズに対処します。なお、これらの PWM 回路は、通常のタイマ
PWM動作時の SCLK や PF1 によってではなく、PPI_CLK によって駆動されます。設定された PPI モードで PPI_FS2 が使用されない場合には、タイマ2
は機能に制限を受けることなく通常どおりに動作します。PPI_FS3 の状態
は、PPI_FS1 または PPI_FS2、あるいはその両方の状態に完全に依存します。したがって、PPI_FS3 には固有のプログラマビリティはありません。

L

PPI_FS1 や PPI_FS2 に内部フレーム同期モードでの動作をプログラムするには：

1. DMA を PPI 用に設定してイネーブルにします。11-33 ページの「DMA 動作」を参照してください。
2. TIMER1_WIDTH と TIMER1_PERIOD（PPI_FS1 の場合）またはTIMER2_WIDTH と TIMER2_PERIOD（PPI_FS2 の場合）を介して、フレーム同期信号ごとに幅と周期を設定します。
。
3. TIMER1_CONFIG を PWM_OUT モードに設定します（PPI_FS1 の場合）
使用する場合には、TIMER2_CONFIG を PWM_OUT モードに設定します（PPI_FS2 の 場 合）。これ に は、タ イ マご と の CLK_SEL = 1 とTIN_SEL = 1 の設定も含まれます。
PPI_CONTROL に書き込みます。
4. PPIを設定してイネーブルにするため、

5. タイマ 1 やタイマ 2 をイネーブルにするため、TIMER_ENABLE に書
き込みます。

L

PPI とタイマ・ペリフェラルとの間には、適切なフレーム同期極性を保証することが重要です。そのために、PPI_CONTROL[15:14] =b#10 また は b#11 の場 合 は、TIMER1_CONFIG と TIMER2_CONFIG で
PULSE_HI ビットがクリアされていることを確認してください。同ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

11-31

汎用 PPI モード

様に、PPI_CONTROL[15:14] = b#00 または b#01 の場合には、
TIMER1_CONFIG と TIMER2_CONFIG で PULSE_HI ビットをセットしてください。
内部フレーム同期を必要としない別の PPI モードに切り替えるには :1. PPI をディスエーブルにします（PPI_CONTROL を使用）。
。
2. タイマをディスエーブルにします（TIMER_DISABLE を使用）
X 外部フレーム同期によるモード

外部フレーム同期による RX モードでは、PPI_FS1 ピンと PPI_FS2 ピンがエッジ・センシティブ入力になります。このようなモードでは、TMR1 ピンと TMR2 ピンを必要としない目的に対して、タイマ1 とタイマ2 を使用できます。しかし、PPI が PPI_FSx のフレーム同期入力機能に TMRx ピンを使用
している場合には、TMRxピンへのタイマ・アクセスはディスエーブルにされます。PPI_FS2 を要求しないモードの場合、タイマ2 はその機能を制約されず、あたかも PPIが使用されていないかのように動作することができます（つまり、TMR2 ピンはタイマとしても使用可能になります）。タイ
マの設定と使い方の詳細については、第 15 章「タイマ」を参照してくだ
さい。

L

3 つの外部フレーム同期によるRX モードでは、PPI_FS3 がローレベ
ルである間に PPI_FS2 のアサーションに続いて PPI_FS1 のアサーションが行われると、フレーム開始の検出が行われます。これはフィールド 1 の先頭で発生します。PPI_FS3 は、PPI_FS2 がアサートされる時ではなく、PPI_FS1 がアサートされる場合でのみ、ローレ
ベルである必要があります。また、PPI_FS3 は、PPI がイネーブルになった後の初期のフレームの開始によってのみ、同期動作として使用されます。その後は無視されます。

外部フレーム同期による TX モードでは、PPI_FS1 ピンと PPI_FS2 ピンはエッジ・センシティブ入力として扱われます。このモードでは、フレーム
同期に関係するタイマを入力として設定したり、TIMER_ENABLE レジスタに

11-32

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

パラレル・ペリフェラル・インターフェース

よってイネーブルにする必要はありません。さらに、たとえタイマ・ピン
が PPI によって引き継がれた場合でも、実際のタイマ自身は使用できます。この場合、タイムベース（TIMERx_CONFIG の TIN_SEL によって設定）がPPI_CLK である必要はありません。
ただし、使用するタイマのピンが外部フレーム同期に接続されている場合には、TIMERx_CONFIG の OUT_DIS ビットでそのピンをディスエーブルにしてください。このようにすれば、このモードでも PPI 動作に影響を与えることなく、タイマそのものを非 PPI 向けに設定し、使用可能にすることができます。詳細については、第 15 章「タイマ」を参照してください。

DMA 動作
PPI は、プロセッサの DMA エンジンと共に使用する必要があります。こ
こでは、この 2 つの関係を説明します。DMAエンジンの詳細については、
DMA レジスタと DMA 動作の説明も含めて、第 9 章「ダイレクト・メモ
リ・アクセス」を参照してください。
PPI DMA チャンネルは、送信または受信動作用に設定することができ、最大スループットは (PPI_CLK) × (16 ビット / 転送 ) となります。データ長が8 ビットを超えるモードでは、PPI_CLK サイクル当たりただ1 つのエレメントを駆動できるため、パッキングが不可能となって帯域幅が減少します。
最高のスループットは、8 ビット・データと PACK_EN = 1（パッキング・
モード・イネーブル）で達成されます。なお、16 ビットのパッキング・
モードでは、偶数のデータ・エレメントが必要です。
PPI インターフェースを使用するには、PPI の DMA チャンネルを設定する必要があります。行、フレーム、または部分フレームの転送完了と同時に割込みを生成するのは DMA エンジンです。また、PPI を通じて転送されるデータのソース・ポイントやデスティネーション・ポイントを調整す
るのも DMA エンジンです。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

11-33

DMA 動作プロセッサの 2D DMA機能によって、プロセッサは、ラインの最後、1フレームのビデオが転送された後、または DMA エラーの発生時に割込みを受けることができます。実際に、DMAx_XCOUNT MMR と DMAx_YCOUNT MMRの指定によって、フレキシブルなデータ割込みポイントが可能になります。たとえば、DMA レジスタで XMODIFY = YMODIFY = 1 と想定します。
データ・フレームが 320 × 240 バイト（それぞれ 320 バイトの 240 行）を含んでいる場合には、以下の条件が保持されます。
• XCOUNT = 320、YCOUNT = 240、DI_SEL = 1（DMAx_CONFIG 内の DI_SELビット）に設定すると、フレーム全体に対して転送される行ごとに割込みが生じます。
• XCOUNT = 320、YCOUNT = 240、DI_SEL = 0 に設定すると、フレー
ムの完了時（320 バイトの 240行が転送されたとき）にのみ割込みが生じます。
• XCOUNT = 38,400（320× 120）
、YCOUNT = 2、DI_SEL = 1 に設定す
ると、フレームの半分が転送されたときと、フレーム全体が転送されたときに割込みが生じます。

11-34

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

パラレル・ペリフェラル・インターフェース

次に、PPI によるDMA動作の一般的な設定手順を示します。DMA の設定の詳細については、9-1 ページの「ダイレクト・メモリ・アクセス」を参照してください。
1. DMA レジスタを、希望する DMA 動作モードに合わせて適宜設定します。
2. DMA チャンネルの動作をイネーブルにします。
3. 適切な PPI レジスタを設定します。
4. PPI_CONTROL のビット 0 に 1 を書き込んで、PPI をイネーブルにします。

データ転送シナリオ
図 11-16 は、PPI を使用してビデオで転送するための 2 つの方法を示します。これらの図はきわめて一般化されており、的確な PPI モードと設定を考慮した後でのみ（たとえば、フィールド 1のみの転送、奇数および偶数エレメントの転送）、帯域幅の計算を行う必要があります。
図の上部には、一例として、JPEG 圧縮の場合に適切な状況を示します。
ビデオの最初の N 行は、PPI を介して L1 メモリに DMA されます。L1 内
では、圧縮アルゴリズムがデータに作用して、圧縮結果はプロセッサからSPORT を介して送信されます。なお、この方法では、SDRAM アクセスは必要ありません。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

11-35

データ転送シナリオ

図の下部では、MPEG-2 やMPEG-4 など、いっそう複雑な圧縮アルゴリ
ズムを検討します。ここでは、生のビデオが SDRAM に直接転送されます。それとは無関係に、メモリ DMA チャンネルは、中間処理ステージとして SDRAM と L1 メモリとの間でデータ・ブロックを転送します。最後に、圧縮されたビデオが SPORT を介してプロセッサから出力されます。

ࡆ࠺ࠝ࡮࠺࡯࠲
ߣࠦࡦ࠻ࡠ࡯࡞
ࡆ࠺ࠝ࡮
࠰࡯ࠬ

PPI

DMA

L1
ࡔࡕ࡝

DMA

SPORT

࿶❗ߐࠇߚ
ࡆ࠺ࠝ

ࡆ࠺ࠝ࡮
࠰࡯ࠬ

PPI

DMA

SDRAM

DMA

L1
ࡔࡕ࡝

DMA

SPORT

図 11-16. PPI のデータ転送シナリオ

11-36

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

第12章 シリアル・ポート・
コントローラこのプロセッサには、2 つの同じ同期シリアル・ポート、つまり SPORTがあります。SPORT は、さまざまなシリアル・データ通信プロトコルをサポートし、マルチプロセッサ・システムにおいてプロセッサ間を直接に相互接続できます。
シリアル・ポート（SPORT0と SPORT1）は、多種多様なペリフェラル・
シリアル・デバイスに I/Oインターフェースを提供します。SPORTは同期
シリアル・データ転送のみを提供します。プロセッサは、UART を介して非同期の RS-232データ転送を提供します。各 SPORT には送信用のピン・グループ（一次データ、二次データ、クロック、フレーム同期）と、受信用のピン・グループがあります。受信機能と送信機能は別個にプログラムされます。各 SPORT は全二重デバイスであり、双方向に同時にデータ転送が可能です。SPORT は、メモリマップド・レジスタへの書込みによって、ビットレート、フレーム同期、ワード当たりのビット数をプログラム
できます。

L

ここでは、レジスタとピンに対する命名規則として小文字 x で数字を表します。この章では、たとえば、RFSx ピンという名前は RFS0と RFS1 を示します（それぞれ、SPORT0 とSPORT1 に対応）。この章では、LSB は最下位ビットを表し、MSB は最上位ビットを表します。

2 つのSPORT には同じ機能があり、同じようにプログラムされます。各
SPORT には、専用のコントロール・レジスタとデータ・バッファがあります。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-1

SPORT は、フレーム同期パルスを使用して各ワードやパケットの先頭を示します。また、ビット・クロックは、各データビットの先頭をマークします。外部のビット・クロックとフレーム同期は、TXバッファと RX バッ
ファに使用できます。
SPORT は、クロックとフレームの一連の同期オプションによって H.100
をはじめとするさまざまなシリアル通信プロトコルを使用でき、業界標準の多数のデータ・コンバータやコーデックに対してグルーレスなハード
ウェア・インターフェースを提供します。
SPORT は、外部生成されたクロックでは SCLK/2 までのクロック・レート
で動作でき、内部生成されたシリアル・ポート・クロックではシステム・
クロック・レートの 1/2で動作できます。SPORTの外部クロックは、常にSCLK 周波数よりも低い必要があります。独立した送／受信クロックによって、きわめて柔軟なシリアル通信が実現します。
SPORT のクロックとフレーム同期は、システムによって内部的に生成したり、外部ソースから受信したりできます。SPORTは、LSBファーストまたは MSB ファーストの伝送フォーマットで動作でき、3 ～ 32 ビットのワード長を選択できます。選択可能な送信モードに加えて、オプションでは、ハードウェアでの µ則／ A 則圧伸機能も提供されます。SPORTのデー
タは DMA ブロック転送を使用して、オンチップ・メモリとオフチップ・メモリとの間を自動的に転送できます。さらに、各 SPORT は TDM（時分割多重）マルチチャンネル・モードを提供します。
各 SPORTは、以下の機能を提供します。
• 独立した送／受信機能を提供します。
• 長さ 3 ～ 32 ビットのシリアル・データ・ワードを、MSB ファース
トまたは LSB ファーストで転送します。
• I2S シリアル・デバイスにインターフェースするための代替フレー
ミングと制御に加えて、その他のオーディオ・フォーマット（たとえば、左寄せステレオ・シリアル・データ）も提供します。

12-2

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ• FIFO とダブル・バッファ・データ（送／受信機能にはデータ・バッ
ファ・レジスタとシフト・レジスタがあります）によって、SPORTの要求に応える時間が与えられます。
• 各 SPORT に2 本の同期送信データ・ピン、2本の同期受信データ・
ピン、バッファを用意することで、利用できる合計データストリー
ムを倍増させます。
• 送／受信されたワードに対して、µ 則／ A 則のハードウェア圧伸を実行します（詳細については、12-37 ページの「圧伸」を参照）。
• シリアル・クロック信号とフレーム同期信号を広範囲の周波数で内部的に生成したり、外部ソースからクロックとフレーム同期入力を受け付けたりします。
• データ・ワードごとのフレーム同期信号の有無、フレーム信号の内部生成または外部生成、フレーム信号のアクティブ・ハイまたはア
クティブ・ロー、設定可能な 2つのパルス幅とフレーム信号タイミ
ングを選択できます。
• プロセッサ制御のもとで、オンチップ・メモリとの間で割込み駆動型のシングル・ワード転送を行います。
• DMA マスター制御のもとで、メモリとの間でダイレクト・メモリ・
アクセス転送を行います。DMA は、自動バッファ・ベース（同一
転送範囲の繰返し）またはディスクリプタ・ベース（さまざまな
DMA パラメータによる個別の転送または転送範囲の繰返し）とすることができます。
• オンチップ・メモリとの間で DMA 転送を行います。各 SPORT では、データのブロック全体を自動的に送／受信できます。
• 複数のデータ・ブロックにわたって DMA動作のチェイニングが可能です。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-3• TDM インターフェース用のマルチチャンネル・モードがあります。
各 SPORTでは、1024 までの合計チャンネルで構成されるストリー
ムをもとに、128 の連続チャンネル上に時分割多重されたシリア
ル・ビットストリームからデータを選択的に送／受信できます。このモードは、複数プロセッサ用のネットワーク通信方式として役立
ちます。プロセッサが使用できる 128 チャンネルは、0 から 895 ＝（1023 － 128）までの任意のチャンネル位置から始めるように選択できます。なお、マルチチャンネル・セレクト・レジスタと WSIZE
レジスタでは、アクティブ領域内でアクセスできる 128 チャンネルのサブセットを制御します。
表 12-1 には、各 SPORTのピンを示します。
表 12-1.

シリアル・ポート（SPORT）ピン

ピン1

説明

DTxPRI

送信データ・プライマリ

DTxSEC

送信データ・セカンダリ

TSCLKx

送信クロック

TFSx

送信フレーム同期

DRxPRI

受信データ・プライマリ

DRxSEC

受信データ・セカンダリ

RSCLKx

受信クロック

RFSx

受信フレーム同期

1

ピン名の中の小文字 x は、0 または 1（SPORT0 または SPORT1 に対応）の値を表します。

SPORT は、その DRxPRI 入力と DRxSEC 入力でシリアル・データを受信し、その DTxPRI 出力と DTxSEC 出力でシリアル・データを送信します。また、同時に送／受信して全二重動作を実現できます。送信の場合、データビット（DTxPRI と DTxSEC）は送信クロック（TSCLKx）に同期します。受信の場合、データビット（DRxPRI と DRxSEC）は受信クロック（RSCLKx）に同期します。シリアル・クロックは、プロセッサが生成した場合には出力で12-4

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ

あり、クロックが外部生成された場合には入力です。フレーム同期信号
RFSx と TFSx は、シリアル・データ・ワードの先頭またはシリアル・ワー
ドのストリームの先頭を示すために使用されます。
プライマリとセカンダリのデータ・ピンは、シリアル・ポートのデータ・
スループットを増やすための方法を提供します。これらのピンは、完全に独立した SPORT としては動作せずに、別個のデータに対して（クロックとフレーム同期を共有して）同期したスタイルで動作します。プライマ
リ・ピンとセカンダリ・ピンで受信されたデータはメイン・メモリでインターリーブされ、データ・アドレス・ジェネレータ（DAG）ユニットでストライドを設定して取り出すことができます。DAGの詳細については、
第 5 章「データ・アドレス・ジェネレータ」を参照してください。同様に、TX の場合には、データを交互にTX レジスタに書き込んでください。
つまり、プライマリ、セカンダリ、プライマリ、セカンダリといった順です。これは、プロセッサの強力な DAGによって容易に実現されます。
シリアル・クロック信号に加えて、データは、フレーム同期信号によって通知される必要があります。フレーミング信号は、個々のワードの先頭またはワードのブロックの先頭で発生できます。
次の図は、1 つのSPORT の簡略ブロック図です。送信されるデータはペリフェラル・バスを介して、内部のプロセッサ・レジスタから SPORTのSPORTx_TX レジスタに書き込まれます。このデータはオプションでハード
ウェアによって圧縮され、TX シフト・レジスタに自動転送されます。シ
フト・レジスタ内のビットは TSCLKx ピンでのシリアル・クロックに同期
して、MSBファーストまたはLSBファーストで、SPORTの DRxPRI/DRxSEC
ピンからシフト・アウトされます。SPORTの受信部分は RSCLKx ピンでのシリアル・クロックに同期して、DTxPRI/DTxSEC ピンからデータを受け付けます。ワード全体が受信されると、データはオプションで拡張され、SPORTのSPORTx_RXレジスタに自動転送されてからRX FIFOに送られて、プロセッサから使用可能になります。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-5

3$%

'$%

7[࡟ࠫࠬ࠲

5[࡟ࠫࠬ࠲

7[),)2
߹ߚߪ

5[),)2
߹ߚߪ

7[ࡊ࡜ࠗࡑ࡝࡮
7[࠮ࠞࡦ࠳࡝࡮
ࡎ࡯࡞࠼࡮࡟ࠫࠬ࠲ ࡎ࡯࡞࠼࡮࡟ࠫࠬ࠲

࿶િࡂ࡯࠼࠙ࠚࠕ

7[ࡊ࡜ࠗࡑ࡝࡮
ࠪࡈ࠻࡮࡟ࠫࠬ࠲

7[࠮ࠞࡦ࠳࡝࡮
ࠪࡈ࠻࡮࡟ࠫࠬ࠲

'735 ,

'76( &

5[ࡊ࡜ࠗࡑ࡝࡮
5[࠮ࠞࡦ࠳࡝࡮
ࡎ࡯࡞࠼࡮࡟ࠫࠬ࠲ ࡎ࡯࡞࠼࡮࡟ࠫࠬ࠲

ࠪ࡝ࠕ࡞೙ᓮ

࿶િࡂ࡯࠼࠙ࠚࠕ

ౝㇱࠢࡠ࠶ࠢ
⊒↢ེ

7)6

7&/.

5&/ .5)6

5[ࡊ࡜ࠗࡑ࡝࡮
ࠪࡈ࠻࡮࡟ࠫࠬ࠲

5[࠮ࠞࡦ࠳࡝࡮
ࠪࡈ࠻࡮࡟ࠫࠬ࠲

'535 ,

'56(&ᵈ㧦ߔߴߡߩ᏷ᐢߩ⍫ශ࠺࡯࠲࡮ࡄࠬߪ‫ޔ‬6/(1ߦᔕߓߡࡆ࠶࠻᏷ߢߔ‫ޕ‬6/(1㧩㨪ߢߪ‫ޔ‬Ბ),)2ઃ߈ߩࡆ࠶࠻࡮
࠺࡯࠲࡮ࡄࠬ߇૶↪ߐࠇ߹ߔ‫ޕ‬6/(1㧩㨪ߢߪ‫ޔ‬Ბ),)2ઃ߈ߩࡆ࠶࠻࡮࠺࡯࠲࡮ࡄࠬ߇૶↪ߐࠇ߹ߔ‫ޕ‬ᵈ㧦7[࡟ࠫࠬ࠲ߪ7[),)2ߩਅㇱߢ޽ࠅ‫ޔ‬5[࡟ࠫࠬ࠲ߪ5[),)2ߩ਄ㇱߢߔ‫ޕ‬

図 12-1. SPORT のブロック図

12-6

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ

図 12-2は、SPORT の可能なポート接続を示します。なお、シリアル・デバイス Aと Bは共通のフレーム同期とクロックを共有するため、同期している必要があります。シリアル・デバイス C とD についても同様です。

$'63%)
ࠪ࡝ࠕ࡞࡮ࡐ࡯࠻
㧔ࠢࡠ࠶ࠢߣࡈ࡟࡯ࡓหᦼ㧕

63257
7&/.
7)6
5&/.
5)6

ࠪ࡝ࠕ࡞࡮
࠺ࡃࠗࠬ$
㧔ࡊ࡜ࠗࡑ࡝㧕ࠪ࡝ࠕ࡞࡮࠺ࡃࠗࠬ%㧔࠮ࠞࡦ࠳࡝㧕'735,'535,'76(&'56(&

ࠪ࡝ࠕ࡞࡮ࡐ࡯࠻
㧔ࠢࡠ࠶ࠢߣࡈ࡟࡯ࡓหᦼ㧕

63257
7&/.
7)6
5&/.
5)6

ࠪ࡝ࠕ࡞࡮
࠺ࡃࠗࠬ&
㧔ࡊ࡜ࠗࡑ࡝㧕ࠪ࡝ࠕ࡞࡮࠺ࡃࠗࠬ'㧔࠮ࠞࡦ࠳࡝㧕'735,'535,'76(&'56(&

図 12-2. SPORT の接続

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-7

SPORT の動作

図 12-3は、3つの送信チャンネルと 2つの受信チャンネルがプロセッサに接続されたステレオ・シリアル・デバイスの例を示します。

AD1836

ࠬ࠹࡟ࠝ࡮ࠪ࡝ࠕ࡞࡮
࠺ࡃࠗࠬ
DLRCLKDBCLK

ADSP-BF533
SPORT0TCLK0TFS0DSDATA1DSDATA2DSDATA3

RCLK0
RFS0
DT0PRI

ALRCLKABCLK

DR0PRI
DT0SECASDATA1

DR0SECASDATA2
SPORT1
TCLK1
TFS1
RCLK1
RFS1
DT1PRI
DR1PRI
DT1SECDR1SEC

図 12-3. ステレオのシリアル接続

SPORT の動作
ここでは、SPORT の最も一般的な用途の例を挙げて、SPORT の一般的な動作を説明します。SPORT 機能は設定可能であるため、この説明は可能な設定の一例にすぎません。

12-8

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ

SPORT で伝送準備をするには、SPORTの SPORTx_TX レジスタに書き込みます。TFS 信号は、シリアル・データの伝送を開始させます。伝送が始まったら、SPORTx_TX レジスタに書き込まれる各値は、FIFO を通じて内部の送信シフト・レジスタに転送されます。その後、ビットは SPORTx_TCR1 レジ
スタの指定に基づいて、MSB ファーストまたは LSB ファーストで送信されます。各ビットは、TSCLKx の駆動エッジでシフト・アウトされます。
TSCLKx の駆動エッジは、
立上がりまたは立下がりに設定できます。SPORTは TX FIFO に空きがある限り、送信割込みを生成したり、DMA 転送を要求したりします。
SPORT に受信されたビットは、内部の受信レジスタに蓄積されます。完
全なワードが受信されると、そのワードは SPORT FIFO レジスタに書き込まれ、その SPORT 用の受信割込みが生成されるか、DMA 転送が開始されます。DMA ブロック転送が実行される場合には、割込みの生成が異なります。DMA の詳細については、第 9 章「ダイレクト・メモリ・アクセ
ス」を参照してください。

SPORT のディスエーブル
SPORT は、プロセッサ・ハードウェアまたはソフトウェア・リセットによって自動的にディスエーブルにされます。また、SPORT の送信または受信イネーブル・ビット（それぞれ、SPORTx_TCR1 レジスタの TSPEN とSPORTx_RCR1 レジスタの RSPEN）をクリアしても、SPORT を直接ディス
エーブルにできます。SPORT への影響は、それぞれの方法によって異なります。
プロセッサ・リセットでは、SPORTx_TCR1、SPORTx_TCR2、SPORTx_RCR1、
SPORTx_RCR2 レジスタ（TSPEN と RSPEN のイネーブル・ビットを含む）、および TDIVx、RDIVx、SPORTx_TFSDIVx、SPORTx_RFSDIVx のクロックおよびフレーム同期デバイザ・レジスタをクリアして SPORT をディスエーブルにします。進行中の動作はすべてアボートされます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-9

SPORT モードの設定

TSPEN と RSPEN のイネーブル・ビットをクリアすると、SPORT がディスエーブルにされ、すべての進行中の動作がアボートされます。ステータ
ス・ビットもクリアされます。設定ビットは影響を受けずに残り、変更や上書きのためにソフトウェアによって読出しできます。SPORT の出力ク
ロックをディスエーブルにするには、ディスエーブルにする SPORT を設
定します。

L

なお、TSPEN/RSPEN を介して SPORT をディスエーブルにすると、
TFSx/RFSx ピンや TSCLKx/RSCLKx ピンで現在アクティブなパルスが短くなることもあります（これらの信号が内部的に生成されるように設定されている場合）。

SPORT は、SPORTx_TCR1 または SPORTx_RCR1 レジスタでイネーブルにされてから 3シリアル・クロック・サイクル以内に、データの送／受信を開始する用意ができます。この時点からは、シリアル・クロック・サイクルのロスはありません。最初の内部フレーム同期は、SPORT の用意ができてから 1 フレーム同期の遅延後に行われます。外部フレーム同期は、SPORTの用意ができるとすぐに行われます。
SPORT のマルチチャンネル動作をディスエーブルにするときには、まずTXEN をディスエーブルにしてから、RXEN をディスエーブルにします。な
お、再びイネーブルにする前に、TXEN と RXEN の両方をディスエーブルにする必要があります。TXまたはRX だけをディスエーブルにすることは許されません。

SPORT モードの設定
SPORT 設定を行うには、設定レジスタでビット値とフィールド値の設定を行います。各 SPORT は、設定してからイネーブルにする必要があります。SPORT がイネーブルにされると、SPORT 設定レジスタへのそれ以上の書込みは禁止されます（ただし、SPORTx_RCLKDIV、SPORTx_TCLKDIV、マルチチャンネル・モード・チャンネル・セレクト・レジスタを除く）。他

12-10

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラのすべての SPORT 設定レジスタで値を変更するには、SPORTx_TCR1 のTSPEN ま たは SPORTx_RCR1 の RSPEN、あ る いは そ の両 方 をク リ アし て、SPORT をディスエーブルにします。
各 SPORTには、専用のコントロール・レジスタとデータ・バッファがあります。これらのレジスタについては、以下の節で詳しく説明します。特に指定のない限り、SPORT レジスタ内のすべてのコントロール・ビットとステータス・ビットはアクティブ・ハイです。

レジスタの書込みと実効遅延
SPORT がディスエーブルにされる（TSPEN と RSPEN がクリアされる）と、SPORT レジスタの書込みは、書込みが行われた SCLK サイクルの最後に内部的に完了して、レジスタは新しく書き込まれた値を次のサイクルで読み返します。
SPORT の送信（TSPEN セット）または受信（RSPEN セット）がイネーブルにされると、SPORT の対応する設定レジスタ書込みがディスエーブルにされます（ただし、SPORTx_RCLKDIV、SPORTx_TCLKDIV、マルチチャンネ
ル・モード・チャンネル・セレクト・レジスタを除く）。SPORTx_TX レジス
タの書込みは常にイネーブルです。SPORTx_RX、SPORTx_CHNL、SPORTx_STAT
は読出し専用レジスタです。
SPORT がディスエーブルにされている間にSPORT レジスタに書き込んだ場合には、コントロール・ビットやモード・ビットへの変更は一般に、SPORT が再びイネーブルにされたときに有効になります。

L

SPORT がディスエーブルにされている間（TSPEN/RSPEN = 0）、多くの設定レジスタでは変更だけが可能です。変更は、SPORT が再びイネーブルにされた後で有効になります。このルールの唯一の例
外は、TCLKDIV/RCLKDIV レジスタとマルチチャンネル・セレクト・
レジスタです。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-11

SPORTx_TCR1 レジスタと SPORTx_TCR2 レジスタ

SPORTx_TCR1 レジスタと SPORTx_TCR2 レジスタ
各 SPORTの送信部分に対する主なコントロール・レジスタは、送信設定
レジスタ、SPORTx_TCR1、SPORTx_TCR2 です。
送信設定 1レジスタのビット 0（TSPEN）が 1に設定された場合、SPORTの送信がイネーブルにされます。ハード・リセットやソフト・リセット時にはこのビットがクリアされ、すべての SPORT 伝送がディスエーブルにされます。
SPORT の送信がイネーブルにされた場合（TSPEN セット）、対応する
SPORT 設定レジスタの書込みは許されません（ただし、SPORTx_TCLKDIVとマルチチャンネル・モード・チャンネル・セレクト・レジスタを除く）。
禁止されたレジスタへの書込みは無効になります。SPORT がイネーブルにされている間、SPORTx_TCR1 はビット 0（TSPEN）を除いて書き込まれません。次に例を示します。
write (SPORTx_TCR1, 0x0001) ;/* SPORT TX イネーブル */write (SPORTx_TCR1, 0xFF01) ;/* 無視、無効 */write (SPORTx_TCR1, 0xFFF0) ;/* SPORT ディスエーブル、SPORTx_TCR1

はまだ 0x0000 と等しい */12-12

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ

SPORTx 送信設定 1 レジスタ（SPORTx_TCR1）
SPORT0:0xFFC0 0800
SPORT1:0xFFC0 0900

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

TCKFE（クロック立下がり
エッジ選択）
0 - TSCLK の立上がりエッジで
データと内部フレーム同期を駆動。TSCLK の立下がり
エッジで外部フレーム同期
をサンプリング。
1 - TSCLK の立下がりエッジで
データと内部フレーム同期を駆動。TSCLK の立上がり
エッジで外部フレーム同期
をサンプリング。
LATFS（遅延送信フレーム同期）
0 - 早期フレーム同期
1 - 遅延フレーム同期
LTFS（ロー送信フレーム同期選択）
0 - アクティブ・ハイ TFS
1 - アクティブ・ロー TFS
DITFS（データ独立の送信フレー
ム同期選択）
0 - データ依存の TFS 生成
1 - データ独立の TFS 生成

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

TSPEN（送信イネーブル）
0 - 送信ディスエーブル
1 - 送信イネーブル
ITCLK（内部送信クロック選択）
0 - 外部送信クロック選択
1 - 内部送信クロック選択

TDTYPE[1:0]（データ・フォー
マッティング・タイプ選択）
00 - 通常動作
01 - 予備10 - µ 則による圧伸
11 - A 則による圧伸
TLSBIT（送信ビット順序）
0 - MSB ファーストで送信
1 - LSB ファーストで送信
ITFS（内部送信フレーム同期選択）
0 - 外部 TFS を使用
1 - 内部 TFS を使用
TFSR（送信フレーム同期要求選択）
0 - ど の デ ー タ・ワ ー ド に もTFS を必要としません
1 - ど の デ ー タ・ワ ー ド に もTFS を必要とします

図 12-4. SPORTx 送信設定 1 レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-13

SPORTx_TCR1 レジスタと SPORTx_TCR2 レジスタ

SPORTx 送信設定 2 レジスタ（SPORTx_TCR2）
SPORT0:0xFFC0 0804
SPORT1:0xFFC0 0904

15 14 13 12 11 10
0 0 0 0 0 0

9
0

8
0

7
0

6
0

5
0

TRFST（左右の順序）
0 - 左のステレオ・チャンネルが最初
1 - 右のステレオ・チャンネルが最初
TSFSE（送信ステレオ・
フレーム同期イネーブル）
0 - ノーマル・モード
1 - フレーム同期は L/R クロックになります

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000
SLEN[4:0]（SPORT ワード長）
00000 - 不正な値
00001 - 不正な値
シリア ル・ワード 長は、こ のフィールドの値＋ 1 です
TXSE（TxSECイネーブル）
0 - セカンダリ・ディスエーブル
1 - セカンダリ・イネーブル

図 12-5. SPORTx 送信設定 2 レジスタ
送信設定レジスタSPORTx_TCR1 とSPORTx_TCR2 のビットの詳細を示します。
：このビットは、SPORT の送信をイネー• 送信イネーブル（TSPEN）
ブルにする（セットされている場合）かディスエーブルにする（クリアされている場合）かを選択します。
TSPEN をセットすると、SPORT TX 割込みがすぐにアサートされ、TX データ・レジスタが空であり、フィルする必要があることを示します。この方法では、送信データ書込みコードを TX割込みサー
ビス・ルーチン（ISR）に集中化できるため、一般的に望ましいといえます。このため、コードにより ISR を初期化し、TX 割込みの処理準備をしてから TSPEN をセットしてください。
同様に、DMA 転送が使用される場合には、DMAコントロールを正しく設定してから TSPEN をセットしてください。すべての DMA コ
ントロール・レジスタを設定してから、TSPEN をセットしてください。
TSPEN をクリアすると、SPORT はデータ、TSCLK、フレーム同期ピンの駆動を停止します。さらに、SPORT の内部回路もシャットダ

12-14

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ

ウンされます。低消費電力アプリケーションでは、SPORT が使用
されなくなるたびに TSPEN をクリアすることでバッテリ寿命を延ばすことができます。

L

すべての SPORT コントロール・レジスタをプログラムしてから、TSPEN をセットしてください。代表的な SPORT初期化コードでは、該当する場合は DMA コントロールも含めて、最初にすべてのコン
トロール・レジスタを設定します。コードの最後のステップでは、SPORTx_TCR1 に TSPEN を含めて必要なすべてのビットを書き込みます。

• 内部送信クロック選択（ITCLK）：このビットは、TSCLK ピンでの内部送信クロック（セットされている場合）または外部送信クロック（クリアされている場合）を選択します。外部クロックが選択されると、TCLKDIV のMMR 値は使用されません。
• データ・フォーマッティング・タイプ選択：2 つの TDTYPE ビット
は、シングル動作とマルチチャンネル動作に使用されるデータ・
フォーマットを指定します。
• ビット順序選択（TLSBIT）：TLSBIT ビットで、SPORT を通じて送信されるデータ・ワードのビット順序を選択します。
：シリアル・ワード長（SPORTを• シリアル・ワード長選択（SLEN）
通じて送信される各ワードのビット数）は、SLEN フィールドの値に1 を加算して計算されます。
シリアル・ワード長＝ SLEN ＋ 1;
SLEN フィールドには2～31の値を設定できます。
このフィールドには、0 と1 は不正な値です。SLEN フィールドに対する 3 つの一般的な設定は次のようになります。つまり、完全な 16 ビット・ワードを送信するには 15、8ビット・バイトを送信するには7、24ビット・ワードを送信するには 23 です。プロセッサは、DMA または MMR

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-15

SPORTx_TCR1 レジスタと SPORTx_TCR2 レジスタ

書込み命令によって、16/32 ビット値を送信バッファにロードできます。SLEN フィールドでは、これらのビットのうち、シリアル・リ
ンクを通じてレジスタからシフト・アウトするビット数を SPORTに指示します。シリアル・ポートでは、送信バッファからビット[SLEN:0] を転送します。

L

フレーム同期信号は、SLEN によってではなく、SPORTx_TFSDIV レジ
スタと SPORTx_RFSDIV レジスタによって制御されます。送信されるバイトやワードごとにフレーム同期パルスを生成するには、フレーム同期デバイダ・レジスタに適切なフレーム同期デバイダをプログラムする必要があります。SLEN に 7を設定しても、送信されるバイ
トごとにフレーム同期パルスは生成されません。

• 内部送信フレーム同期選択（ITFS）：このビットは、SPORTが内部
TFS を使用する（セットされている場合）か、外部 TFS を使用する（クリアされている場合）かを選択します。
• 送信フレーム同期要求選択（TFSR）：このビットは、SPORTがデー
タ・ワードごとに送信フレーム同期を必要とする（セットされている場合）か、必要としない（クリアされている場合）かを選択します。

L

SPORT の設定中には、TFSR ビットはセットされるのが普通です。
フレーム同期パルスは、各ワードやデータ・パケットの先頭をマークするために使用されます。多くのシステムでは、適切に機能するためにフレーム同期を必要とします。

• データ独立の送信フレーム同期選択（DITFS）：このビットは、内部フレーム同期選択（ITFS = 1）の場合に、SPORT がデータ独立のTFS（選択した間隔での同期）を生成するか、データ依存の TFS（SPORTx_TX にデータが存在するときに同期）を生成するかを選択します。外部フレーム同期が選択された場合には、DITFS ビットは無視されます。
フレーム同期パルスは、データ・ワードの先頭をマークします。

12-16

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ

DITFS がセットされた場合には、SPORTx_TX レジスタへのロードの有無とは無関係に、フレーム同期パルスは時間どおりに発行されます。DITFS が ク リ ア さ れ た 場 合 に は、フ レ ー ム 同 期 パ ル ス はSPORTx_TX データ・レジスタがロードされた場合にのみ生成されます。レシーバが規則正しいフレーム同期パルスを必要とする場合には、DITFS を セ ット し てく だ さい。こ れに よ り、プ ロ セッ サ はSPORTx_TX レジスタに時間どおりにロードし続けます。レシーバが不定期の遅延フレーム同期パルスを許容できる場合には、DITFS をクリアしてください。これにより、SPORT は古いデータの重複送信や破損データの送信（プロセッサが SPORTx_TX レジスタのロードに遅れた場合）を防ぐことができます。
• ロー送信フレーム同期選択（LTFS）：このビットは、アクティブ・
ローの TFS（セットされている場合）またはアクティブ・ハイの TFS（クリアされている場合）を選択します。
：このビットは、遅延フレーム同期• 遅延送信フレーム同期（LATFS）（セットされている場合）または早期フレーム同期（クリアされている場合）を設定します。
• クロックの駆動／サンプル・エッジ選択（TCKFE）：このビットは、
データの駆動、内部生成されたフレーム同期の駆動、外部生成されたフレーム同期のサンプリングのために、SPORTで使用する TCLKx
信号のエッジを選択します。セットされた場合、データと内部生成されたフレーム同期は立下がりエッジで駆動され、外部生成された
フレーム同期は立上がりエッジでサンプリングされます。クリアされた場合、データと内部生成されたフレーム同期は立上がりエッジ
で駆動され、外部生成されたフレーム同期は立下がりエッジでサン
プリングされます。
• TxSec イネーブル（TXSE）：このビットは、シリアル・ポートのセ
カンダリ送信をイネーブルにします（セットされている場合）。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-17

SPORTx_RCR1 レジスタと SPORTx_RCR2 レジスタ

：このビットは、シリア• ステレオ・シリアル・イネーブル（TSFSE）
ル・ポートのステレオ・シリアル動作モードをイネーブルにします（セットされている場合）。デフォルトでは、このビットはクリアされ、通常のクロッキングとフレーム同期がイネーブルになります。
• 左右の順序（TRFST）：このビットがセットされた場合、右のチャンネルがステレオ・シリアル動作モードで最初に送信されます。デ
フォルトでは、このビットはクリアされ、左のチャンネルが最初に送信されます。

SPORTx_RCR1 レジスタと SPORTx_RCR2 レジスタ
各 SPORTの受信部分の主なコントロール・レジスタは、受信設定レジス
タ、SPORTx_RCR1、SPORTx_RCR2 です。
受信設定 1レジスタのビット 0（RSPEN）が 1に設定された場合、SPORTは受信が可能になります。ハード・リセットまたはソフト・リセット時にはこのビットはクリアされ、すべての SPORT 受信がディスエーブルにされます。
SPORTの受信がイネーブルにされる（RSPEN がセットされる）と、対応するSPORT設定レジスタの書込みは許可されません（ただし、SPORTx_RCLKDIVとマルチチャンネル・モード・チャンネル・セレクト・レジスタを除く）。
禁止されたレジスタへの書込みは無効です。SPORT がイネーブルにされている間、SPORTx_RCR1 はビット 0（RSPEN）を除いて書き込まれません。
次に例を示します。
write (SPORTx_RCR1, 0x0001) ;/* PORT RX イネーブル */write (SPORTx_RCR1, 0xFF01) ;/* 無視、無効 */write (SPORTx_RCR1, 0xFFF0) ;/* SPORT ディスエーブル、SPORTx_RCR1 は

まだ 0x0000 と等しい */12-18

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ

SPORTx 受信設定 1 レジスタ（SPORTx_RCR1）
SPORT0:0xFFC0 0820
SPORT1:0xFFC0 0920

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

RCKFE（クロック立下がり
エッジ選択）
0 - RSCLK の立上がりエッジ
で内部フレーム同期を駆動。RSCLK の立下がりエッジでデータと外部フレーム
同期をサンプリング。
1 - RSCLK の立下がりエッジ
で内部フレーム同期を駆動。RSCLK の立上がりエッジでデータと外部フレーム
同期をサンプリング。
LARFS（遅延受信フレーム同期）
0 - 早期フレーム同期
1 - 遅延フレーム同期
LRFS（ロー受信フレーム同期選択）
0 - アクティブ・ハイ RFS
1 - アクティブ・ロー RFS
RFSR（受信フレーム同期要求選択）
0 - どのデータ・ワードでも RFSを必要としません
1 - どのデータ・ワードでも RFSを必要とします

3
0

2
0

1
0

0
0

リセット＝ 0x0000

RSPEN（受信イネーブル）
0 - 受信ディスエーブル
1 - 受信イネーブル
IRCLK（内部受信クロック選択）
0 - 外部受信クロック選択
1 - 内部受信クロック選択

RDTYPE[1:0]（データ・フォー
マッティング・タイプ選択）
00 - ゼロ・フィル
01 - 符号拡張
10 - µ 則を使用する圧伸
11 - A 則を使用する圧伸
RLSBIT（受信ビット順序）
0 - MSB ファーストで受信
1 - LSB ファーストで受信
IRFS（内部受信フレーム同期選択）
0 - 外部 RFS を使用
1 - 内部 RFS を使用

図 12-6. SPORTx の受信設定 1 レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-19

SPORTx_RCR1 レジスタと SPORTx_RCR2 レジスタ

SPORTx 受信設定 2 レジスタ（SPORTx_RCR2）
SPORT0:0xFFC0 0824
SPORT1:0xFFC0 0924

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

RRFST（左右の順序）
0 - 左のステレオ・チャンネルが最初
1 - 右のステレオ・チャンネルが最初
RSFSE（受信ステレオ・
フレーム同期イネーブル）
0 - ノーマル・モード
1 - フレーム同期は L/R クロックになります

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000
SLEN[4:0]（SPORTワード長）
00000 - 不正な値
00001 - 不正な値
シリアル・ワード 長は、このフィールドの値＋ 1 です
RXSE（RxSEC イネーブル）
0 - セカンダリ・ディスエーブル
1 - セカンダリ・イネーブル

図 12-7. SPORTx 受信設定 2 レジスタ
受信設定レジスタ SPORTx_RCR1 と SPORTxRCR2 のビットの詳細を示します。
• 受信イネーブル（RSPEN）：このビットは、SPORT の受信をイネーブルにする（セットされている場合）かディスエーブルにする（クリアされている場合）かを選択します。RSPEN ビットをセットすると SPORT がオンになり、データ受信ピンに加えて、受信ビット・クロックと受信フレーム同期ピンからも（そうプログラムされている場合）データをサンプリングします。
RSPEN をセットすると、SPORTx レシーバがイネーブルにされてSPORTx RX割込みを生成できます。このため、コードでは ISRとDMA コントロール・レジスタを初期化し、RX 割込みを処理する準備ができてから RSPEN をセットしてください。RSPEN をセットすると、DMA 要求も生成されます（DMA がイネーブルで、データが受信された場合）。すべての DMA コントロール・レジスタを設定してか ら、RSPEN をセ ッ トし て くだ さ い。RSPEN を クリ ア する と、SPORT はデータの受信を停止します。また、SPORT の内部受信

12-20

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ

回路もシャットダウンされます。低消費電力アプリケーションでは、SPORT が使用されなくなるたびに RSPEN をクリアすることで、バッテリ寿命を延ばすことができます。

L

すべての SPORT コントロール・レジスタをプログラムしてから、
RSPEN をセットしてください。代表的な SPORT初期化コードでは、該当する場合は DMA コントロールも含めて、最初にすべてのコン
トロール・レジスタを設定します。コードの最後のステップでは、SPORTx_RCR1 に RSPEN を含めて必要なすべてのビットを書き込みます。

• 内部受信クロック選択（IRCLK）：このビットは、内部受信クロック（セットされている場合）または外部受信クロック（クリアされている場合）を選択します。外部クロックが選択されると、RCLKDIVの MMR 値は使用されません。
：2つの RDTYPE• データ・フォーマッティング・タイプ選択（RDTYPE）
ビットは、シングル動作とマルチチャンネル動作に使用される 4つのデータ・フォーマットの 1つを指定します。
• ビット順序選択（RLSBIT）：RLSBIT ビットは、SPORT を通じて受信されるデータ・ワードのビット順序を選択します。
：シリアル・ワード長（SPORTを• シリアル・ワード長選択（SLEN）
通じて受信される各ワードのビット数）は、SLEN フィールドの値に1 を加算して計算されます。SLEN フィールドには 2～ 31の値を設定できます。このフィールドには、0と1は不正な値です。

L

フレーム同期信号は、SLEN によってではなく、SPORTx_TFSDIV レジ
スタと SPORTx_RFSDIV レジスタによって制御されます。送信されるバイトまたはワードごとにフレーム同期パルスを生成するには、フレーム同期デバイダ・レジスタに適切なフレーム同期デバイダをプ
ログラムする必要があります。SLEN に7 を設定しても、送信されるバイトごとにフレーム同期パルスは生成されません。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-21

SPORTx_RCR1 レジスタと SPORTx_RCR2 レジスタ

：このビットは SPORT が内部• 内部受信フレーム同期選択（IRFS）
RFS を使用する（セットされている場合）か、外部 RFS を使用する（クリアされている場合）かを選択します。
• 受信フレーム同期要求選択（RFSR）：このビットは SPORT がどの
データ・ワードにも受信フレーム同期を必要とする（セットされている場合）か、必要としない（クリアされている場合）かを選択します。
：このビットはアクティブ・ロー
• ロー受信フレーム同期選択（LRFS）
RFS（セットされている場合）またはアクティブ・ハイ RFS（クリアされている場合）を選択します。
• 遅延受信フレーム同期（LARFS）：このビットは遅延フレーム同期（セットされている場合）または早期フレーム同期（クリアされている場合）を設定します。
• クロックの駆動／サンプル・エッジ選択（RCKFE）：このビットはデータのサンプリング、外部生成されたフレーム同期のサンプリン
グ、内部生成されたフレーム同期の駆動のために、SPORT で使用
する RSCLK クロック信号のエッジを選択します。セットされた場合、内部生成されたフレーム同期は立下がりエッジで駆動され、データと外部生成されたフレーム同期は立上がりエッジでサンプリングされます。クリアされた場合には、内部生成されたフレーム同期は立上がりエッジで駆動され、データと外部生成されたフレーム同期
は立下がりエッジでサンプリングされます。
• RxSec イネーブル（RXSE）：このビットはシリアル・ポートのセカ
ンダリ受信をイネーブルにします（セットされている場合）。
• ステレオ・シリアル・イネーブル（RSFSE）：このビットは、シリア
ル・ポートのステレオ・シリアル動作モードをイネーブルにします（セットされている場合）。デフォルトでは、このビットはクリアされ、通常のクロッキングとフレーム同期がイネーブルにされます。

12-22

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ：このビットがセットされた場合には、ステレ• 左右の順序（RRFST）
オ・シリアル動作モードで右のチャンネルが最初に受信されます。
デフォルトでは、このビットはクリアされ、左のチャンネルが最初に受信されます。

データ・ワード・フォーマット
SPORT を通じて転送されるデータ・ワードのフォーマットは、送信 SLENと受信 SLEN、RDTYPE、TDTYPE、RLSBIT、および SPORTx_TCR1、SPORTx_TCR2、
SPORTx_RCR1、SPORTx_RCR2 レジスタの TLSBIT ビットの組合わせによって設定されます。

SPORTx_TX レジスタ
SPORTx 送信データ・レジスタ（SPORTx_TX）は、書込み専用のレジスタです。読出しを行うと、ペリフェラル・アクセス・バス（PAB）エラーが発生します。このレジスタへの書込みによって、トランスミッタ FIFOへの書込みが行われます。16ビット幅のFIFOは、ワード長＜＝ 16 では 8段
であり、ワード長＞ 16では 4段です。この FIFO は、プライマリ・データとセカンダリ・データの両方に共通であり、両方のデータを格納します。
図 12-8に、FIFO でのデータ順序を示します。
図に示すように、FIFO 内ではプライマリ・データとセカンダリ・データのインターリービングを保持することが重要です。つまり、FIFO へのPAB/DMA 書込みでは、最初はプライマリ、次にセカンダリという順序に従う必要があります（セカンダリがイネーブルの場合）。DAB/PAB 書込みでは、そのサイズはデータ・ワード長に一致する必要があります。16ビッ
ト以下のワード長では、16 ビット書込みを使用します。16 ビットを超えるワード長では、32 ビット書込みを使用します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-23

SPORTx_TX レジスタࡊ࡜ࠗࡑ࡝ߛߌࠍࠗࡀ࡯ࡉ࡞
࠺࡯࠲㐳㧨㧩ࡆ࠶࠻

35,0$5<:

35,0$5<),)2ౝߦࡢ࡯࠼ߩ
ࡊ࡜ࠗࡑ࡝࡮࠺࡯࠲

35,0$5<35,0$5<::

35,0$5<35,0$5<35,0$5<35,0$5<ࡊ࡜ࠗࡑ࡝ߣ࠮ࠞࡦ࠳࡝ࠍࠗࡀ࡯ࡉ࡞
࠺࡯࠲㐳㧨㧩ࡆ࠶࠻
),)2ౝߦࡢ࡯࠼ߩ
ࡊ࡜ࠗࡑ࡝࡮࠺࡯࠲ߣࡢ࡯࠼ߩ
࠮ࠞࡦ࠳࡝࡮࠺࡯࠲

:
:
:
:
:


ࡊ࡜ࠗࡑ࡝ߛߌࠍࠗࡀ࡯ࡉ࡞
࠺࡯࠲㐳㧪ࡆ࠶࠻

35,0$5<),)2ౝߦ
ࡢ࡯࠼ߩࡊ࡜ࠗࡑ࡝࡮࠺࡯࠲

35,0$5<35,0$5<35,0$5<35,0$5<35,0$5<35,0$5<35,0$5<:/2: ࡊ࡜ࠗࡑ࡝ߣ࠮ࠞࡦ࠳࡝ࠍࠗࡀ࡯ࡉ࡞
࠺࡯࠲㐳㧪ࡆ࠶࠻
:+,*+:/2:),)2ౝߦࡢ࡯࠼ߩ
:+,*+
ࡊ࡜ࠗࡑ࡝࡮࠺࡯࠲ߣࡢ࡯࠼ߩ
:/2:
࠮ࠞࡦ࠳࡝࡮࠺࡯࠲
:+,*+:/2::+,*+

6(&21'$5<:

35,0$5<:::

6(&21'$5<
35,0$5<
6(&21'$5<:

35,0$5<
6(&21'$5<::

35,0$5<:

6(&21'$5<:/2:

6(&21'$5<:+,*+:/2:

35,0$5<35,0$5<
6(&21'$5<
6(&21'$5<
35,0$5<35,0$5<:+,*+:/2::+,*+:/2::+,*+

図 12-8. SPORT 送信 FIFO のデータ順序
送信がイネーブルにされると、FIFO からのデータは、TXSE と SLEN に基づ
いて TX ホールド・レジスタで組み立てられてから、プライマリとセカン
ダリのシフト・レジスタにシフト・インされます。ここからは、データ
は、DTPRI ピンと DTSEC ピンで連続的にシフト・アウトされます。
TSPEN = 1 でTX FIFO に新たなワード用の空きがあるとき、SPORT TX割

込みがアサートされます。SPORT DMAがイネーブルである場合には、この割込みは発生しません。DMA 動作については、第 9 章「ダイレクト・
メモリ・アクセス」を参照してください。
送信フレーム同期が行われ、シリアル・シフト・レジスタに新しいデータがロードされない場合には、SPORTステータス・レジスタで送信アンダー
フロー・ステータス・ビット（TUVF）がセットされます。マルチチャンネ
ル・モード（MCM）では、シリアル・シフト・レジスタがロードされな
いときはいつでも TUVF がセットされ、現在のイネーブルにされたチャンネ
ルで伝送が開始されます。TUVF ステータス・ビットはスティッキーな
Write-1-to-Clear（W1C）ビットであり、シリアル・ポートをディスエー
ブルにしても（TXEN = 0 を書き込む）クリアされます。

12-24

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ

ソフトウェアによってコア・プロセッサが SPORTx_TX 書込みによるフル TX
FIFO への書込みを試みた場合、新しいデータは失われ、FIFO 内のデー
タには上書きは行われません。TOVF ステータス・ビットがセットされ、SPORT エラー割込みがアサートされます。TOVF ビットはスティッキー・
ビットであり、SPORTx_TX のディスエーブルによってのみクリアされます。
コア・プロセッサがこの種のエラーを起こさずに SPORTx_TX レジスタにアクセスできるかどうかを判断するには、まずレジスタのステータスを読み出します。FIFO 内に他のワード用の空きがある場合には、SPORT ス
テータス・レジスタの TXF ビットは0です。
たとえ SPORT がディスエーブルにされていても、SPORTx ステータス・
レジスタの TXF と TOVF のステータス・ビットは、コア・プロセッサからの書込みと同時に更新されます。
SPORTx 送信データ・レジスタ（SPORTx_TX）
SPORT0:0xFFC0 0810
SPORT1:0xFFC0 0910

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

リセット＝ 0x0000 0000

送信データ [31:16]
15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

送信データ [15:0]

図 12-9. SPORTx 送信データ・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-25

SPORTx_RX レジスタ

SPORTx_RX レジスタ
SPORTx 受信データ・レジスタ（SPORTx_RX）は、読出し専用レジスタです。書込みを行うと PAB エラーが発生します。プライマリ・データとセカンダリ・データ用に同じ場所が読み出されます。このレジスタ空間からの読出しによって、受信 FIFO が読み出されます。この 16ビットFIFO は、
受信ワード長＜＝ 16では 8 段、長さ＞ 16ビットでは 4段です。このFIFO
は、プライマリとセカンダリの受信データによって共有されます。データの格納方法は設定ビット SLEN と RXSE の設定値に依存するため、PAB/DMA
読出しを使用する読出しの順序が重要となります。
図 12-10には、FIFO 内のデータ記憶とデータ順序を示します。

ࡊ࡜ࠗࡑ࡝ߩߺࠗࡀ࡯ࡉ࡞
࠺࡯࠲㐳㧨㧩ࡆ࠶࠻
),)2ౝߩ
ࡢ࡯࠼ߩࡊ࡜ࠗࡑ࡝࡮࠺࡯࠲

5[ࡎ࡯࡞࠼࡮࡟ࠫࠬ࠲߆ࠄ

5[ࡎ࡯࡞࠼࡮࡟ࠫࠬ࠲߆ࠄ



35,0$5<:

35,0$5<35,0$5<35,0$5<

:
:
:
:

35,0$5<35,0$5<35,0$5<35,0$5<::ࡊ࡜ࠗࡑ࡝ߣ࠮ࠞࡦ࠳࡝ࠍࠗࡀ࡯ࡉ࡞
࠺࡯࠲㐳㧨㧩ࡆ࠶࠻

6(&21'$5<
35,0$5<
6(&21'$5<),)2ౝߦࡢ࡯࠼ߩ
ࡊ࡜ࠗࡑ࡝࡮࠺࡯࠲ߣ
ࡢ࡯࠼ߩ࠮ࠞࡦ࠳࡝࡮࠺࡯࠲

35,0$5<
6(&21'$5<

:
:
:
:
:

35,0$5<
6(&21'$5<::

35,0$5<::
3$%'$%
ࡃࠬ߳ࡊ࡜ࠗࡑ࡝ߩߺࠗࡀ࡯ࡉ࡞࠺࡯࠲㐳!ࡆ࠶࠻
),)2ౝߦ
ࡢ࡯࠼ߩࡊ࡜ࠗࡑ࡝࡮࠺࡯࠲



3$%'$%
ࡃࠬ߳5[ࡎ࡯࡞࠼࡮࡟ࠫࠬ࠲߆ࠄ

5[ࡎ࡯࡞࠼࡮࡟ࠫࠬ࠲߆ࠄ



35,0$5<35,0$5<35,0$5<35,0$5<35,0$5<35,0$5<35,0$5<35,0$5<ࡊ࡜ࠗࡑ࡝ߣ࠮ࠞࡦ࠳࡝ࠍࠗࡀ࡯ࡉ࡞
࠺࡯࠲㐳㧪ࡆ࠶࠻
:+,*+:/2:),)2ౝߦ
:+,*+
ࡢ࡯࠼ߩ:/2:
ࡊ࡜ࠗࡑ࡝࡮࠺࡯࠲ߣ
:+,*+
ࡢ࡯࠼ߩ࠮ࠞࡦ࠳࡝࡮࠺࡯࠲
:/2::/2::+,*+
3$%'$%
ࡃࠬ߳

6(&21'$5<:/2:

6(&21'$5<:+,*+:/2::+,*+:/2:

35,0$5<35,0$5<
6(&21'$5<
6(&21'$5<
35,0$5<35,0$5<:+,*+:/2::+,*+
3$%'$%
ࡃࠬ߳

図 12-10.SPORT 受信 FIFO のデータ順序

12-26

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ

プライマリ・データとセカンダリ・データ用の FIFO から読み出すとき、最 初 に プ ラ イ マ リ を 読 み 出 し、続 い て セ カ ン ダ リ を 読 み 出 し ま す。
DAB/PAB 読出しのサイズは、データ・ワード長に一致する必要があります。16 ビットまで（16 ビットを含む）のワード長では、16 ビット読出しを使用します。16 ビットを超えるワード長では、32 ビット読出しを使用します。
受信がイネーブルにされると、DRPRI ピンからのデータは RXプライマリ・
シフト・レジスタにロードされ、DRSEC ピンからのデータはRX セカンダ
リ・シフト・レジスタにロードされます。ワードの転送が完了すると、データはそれぞれプライマリ・データ用とセカンダリ・データ用の RX ホー
ルド・レジスタにシフト・インされます。ホールド・レジスタからのデー
タは、RXSE と SLEN に基づいて FIFOに転送されます。
RSPEN = 1 で RX FIFO がワードを受信すると、SPORT RX 割込みが生成されます。コア・プロセッサが FIFO 内のすべてのワードを読み出すと、
RX 割込 み がク リ アさ れ ます。SPORT RX 割 込 みが 設 定さ れ るの は、SPORT RX DMA がディスエーブルにされている場合だけです。そうでな
い場合、FIFOは DMA読出しによって読み出されます。
プログラムによって、コア・プロセッサが空の RX FIFO から読出しを試みた場合には、古いデータが読み出され、SPORTx_STAT レジスタの RUVF フ
ラグがセットされ、SPORT エラー割込みがアサートされます。RUVF ビッ
トはスティッキー・ビットであり、SPORT がディスエーブルにされたときにだけクリアされます。コアがこのエラーを起こさずに RX レジスタに
アク セス でき る かど うか を判 断す るに は、ま ず RX FIFO ステ ータ ス
（SPORTxステータス・レジスタの RXNE）を読み出します。たとえSPORTがディスエーブルにされていても、RUVF ステータス・ビットは更新されます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-27

SPORTx_STAT レジスタ

RX シフト・レジスタで新しいワードが組み立てられ、RX ホールド・レジ
スタがデータをFIFOに移動しなかった場合、SPORTx_STAT レジスタのROVF
ステータス・ビットがセットされます。ホールド・レジスタ内の以前に書き込まれたワードは上書きされます。ROVF ビットはスティッキー・ビット
であり、SPORT RXをディスエーブルにしてのみクリアされます。
SPORTx 受信データ・レジスタ（SPORTx_RX）
SPORT0:0xFFC0 0818
SPORT1:0xFFC0 0918

31 30 29 28 27 26
0 0 0 0 0 025 24 23 22 21 20 19 18 17 16
0 0 0 0 0 0 0 0 0 0

リセット＝ 0x0000 0000

受信データ [31:16]
15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

受信データ [15:0]

図 12-11. SPORTx 受信データ・レジスタ

SPORTx_STAT レジスタ
SPORT ステータス・レジスタ（SPORTx_STAT）を使用すれば、そのステー
タスが満杯であるか空であるかを調べて、SPORT RXまたはTX FIFO へのアクセスが可能かどうかを判断できます。
SPORT ステータス・レジスタの TXF ビットは、TX FIFO 内に空領域があるかどうかを示します。RXNE ステータス・ビットは、RX FIFO 内にワードがあるかどうかを示します。TXHRE ビットは、TXホールド・レジスタが空であるかどうかを示します。
TX シフト・レジスタが空である場合、送信アンダーフロー・ステータス・
ビット（TUVF）は、外部ソースまたは内部ソースから TFS 信号が発生する
たびにセットされます。SPORT 設定レジスタの DITFS 制御ビットをクリアすれば、SPORTx_TX が空になっても TFS の内部生成を抑制できます。TUVF

12-28

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ

ステータス・ビットは、スティッキーな Write-1-to-Clear（W1C）ビットであり、シリアル・ポートをディスエーブルにしても（TXEN = 0 を書き込む）クリアされます。
連続送信（TFSR = 0）では、TX ホールド・レジスタ内に新しいワードがない場合には、送信されたワードの最後で TUVF がセットされます。
満杯の TX FIFO にワードが書き込まれると、TOVF ビットがセットされます。これはスティッキーな W1C ビットであり、TXEN = 0 を書き込んでもクリアされます。たとえ SPORTがディスエーブルにされても、TXF と TOVFの両方が更新されます。
SPORT RX ホールド・レジスタが満杯で、シフト・レジスタに新しい受信ワードが受信されると、SPORT ステータス・レジスタの受信オーバー
フロー・ステータス・ビット（ROVF）がセットされます。これはスティッ
キーな W1C ビットであり、シリアル・ポートをディスエーブルにしても（RXEN = 0 を書き込む）クリアされます。
空の RX FIFO から読出しを試みると、RUVF ビットがセットされます。これはスティッキーな W1C ビットであり、RXEN = 0 の書込みによってもクリアされます。たとえ SPORT はディスエーブルにされても、RUVF ビットは更新されます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-29

SPORTx_STAT レジスタ

SPORTx ステータス・レジスタ（SPORTx_STAT）
SPORT0:0xFFC0 0830
SPORT1:0xFFC0 0930

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
1

5
0

4
0

3
0

TXHRE（送信ホールド・レジスタ・エンプティ）
0 - 空ではありません
1 - 空です
TOVF（スティッキー送信オーバーフロー・ステータス）- W1C
0 - ディスエーブル
1 - イネーブル
TUVF（スティッキー送信アンダーフロー・ステータス）- W1C
0 - ディスエーブル
1 - イネーブル
TXF（送信 FIFO 満杯ステータス）
0 - 満杯ではありません
1 - 満杯です

2
0

1
0

0
0

リセット＝ 0x0040

RXNE（受信 FIFO ノット・
エンプティ・ステータス）
0 - 空です
1 - FIFO 内にデータが存在
RUVF（スティッキー受信アンダー
フロー・ステータス）- W1C
0 - ディスエーブル
1 - イネーブル
ROVF（スティッキー受信オーバー
フロー・ステータス）- W1C
0 - ディスエーブル
1 - イネーブル

図 12-12.SPORTx のステータス・レジスタ■ SPORT RX、TX、およびエラー割込み
RSPEN が イネ ー ブル で、RX FIFO 内に 何 かの ワ ード が 存在 す ると き、SPORT RX 割込みがアサートされます。RX DMA がイネーブルである場
合には、SPORT RX割込みはオフにされ、DMA はRX FIFO を処理します。
TSPEN がイネーブルで、TX FIFO にワード用の空きがあるとき、SPORTTX 割込みがアサートされます。TX DMA がイネーブルである場合には、SPORT TX 割込みはオフにされ、DMA は TX FIFOを処理します。
いずれかのスティッキーなステータス・ビット（ROVF、RUVF、TOVF、TUVF）
がセットされると、SPORT エラー割込みがアサートされます。ROVF ビッ
トと RUVF ビットをクリアするには、RSPEN に 0 を書き込みます。TOVF ビットと TUVF ビットをクリアするには、TSPEN に 0を書き込みます。

12-30

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ■ PAB エラー
SPORT は、不正なレジスタ読出し動作や書込み動作に対して PAB エラー
を生成します。次に例を示します。
• 書込み専用レジスタ（たとえば、SPORT_TX）の読出し• 読出し専用レジスタ（たとえば、SPORT_RX）の書込み• 誤ったサイズによるレジスタの書込み／読出し（たとえば、16ビッ
ト・レジスタの 32 ビット読出し）• 予約されたレジスタ位置へのアクセス

SPORTx_TCLKDIV レジスタとSPORTx_RCLKDIV レジスタ
内部生成されるクロックの周波数は、システム・クロック周波数（SCLK ピン上）と 16 ビットのシリアル・クロック分周率レジスタ（SPORTx 送信
シリアル・クロック・デバイダ・レジスタ、SPORTx_TCLKDIV、SPORTx 受
信シリアル・クロック・デバイダ・レジスタ、SPORTx_RCLKDIV）の値の関数です。
SPORTx 送信シリアル・クロック・デバイダ・レジスタ（SPORTx_TCLKDIV）
SPORT0:0xFFC0 0808
SPORT1:0xFFC0 0908

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

シリアル・クロック分周率[15:0]

図 12-13.SPORTx 送信シリアル・クロック・デバイダ・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-31

SPORTx_TFSDIV レジスタと SPORTx_RFSDIV レジスタ

SPORTx 受信シリアル・クロック・デバイダ・レジスタ（SPORTx_RCLKDIV）
SPORT0:0xFFC0 0828
SPORT1:0xFFC0 0928

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

シリアル・クロック分周率 [15:0]

図 12-14.SPORTx 受信シリアル・クロック・デバイダ・レジスタ

SPORTx_TFSDIV レジスタと SPORTx_RFSDIV
レジスタ
16ビットのSPORTx送信フレーム同期デバイダ・レジスタ（SPORTx_TFSDIV）と SPORTx受信フレーム同期デバイダ・レジスタ（SPORTx_RFSDIV）では、フレーム同期が内部生成される場合に、TFS または RFS パルスを生成するまでにカウントする送／受信クロック・サイクルの数を指定します。このように、フレーム同期を使用して周期的な転送を開始できます。シリア
ル・クロック・サイクルのカウントは、内部／外部生成されたシリアル・
クロックに適用されます。
SPORTx 送信フレーム同期デバイダ・レジスタ（SPORTx_TFSDIV）
SPORT0:0xFFC0 080C
SPORT1:0xFFC0 090C

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

フレーム同期デバイダ[15:0]
TFS パルスを生成するまでにカウントされる送信クロック・
サイクルの数

図 12-15.SPORTx 送信フレーム同期デバイダ・レジスタ

12-32

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ

SPORTx 受信フレーム同期デバイダ・レジスタ（SPORTx_RFSDIV）
SPORT0:0xFFC0 082C
SPORT1:0xFFC0 092C

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

フレーム同期デバイダ [15:0]
RFS パルスを生成するまでにカウントされる受信クロック・
サイクルの数

図 12-16.SPORTx 受信フレーム同期デバイダ・レジスタ

クロック周波数とフレーム同期周波数
内部ソースまたは外部ソースの最大シリアル・クロック周波数は SCLK/2 です。内部生成されるクロックの周波数は、システム・クロック周波数（SCLK）と16ビットのシリアル・クロック分周率レジスタ SPORTx_TCLKDIVと SPORTx_RCLKDIV の値の関数です。
SPORTx_TCLK 周波数 =（SCLK 周波数）/（2 ×（SPORTx_TCLKDIV+1））
SPORTx_RCLK 周波数 =（SCLK 周波数）/（2 ×（SPORTx_RCLKDIV+1））

内部シリアル・クロックがイネーブルである間に、SPORTx_TCLKDIV またはSPORTx_RCLKDIV の値が変更された場合には、TSCLK または RSCLK 周波数の変更は、TFS または RFS の次の前縁に続く TSCLK または RSCLK の駆動エッジの先頭で有効になります。
内部フレーム同期が選択されて（SPORTx_TCR1 レジスタの ITFS ＝ 1 またはSPORTx_RCR1 レジスタの IRFS ＝ 1）フレーム同期が要求されないとき、
SPORTx_TCLKDIV または SPORTx_RCLKDIV の値が変更された場合には、最初のフレーム同期ではクロック・デバイダを更新しません。2番目のフレーム同期では更新が行われます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-33

クロック周波数とフレーム同期周波数

SPORTx_TFSDIV レジスタと SPORTx_RFSDIV レジスタは、フレーム同期が内部生成される場合に、TFS または RFS パルスを生成するまでにカウントされる送／受信クロック・サイクルの数を指定します。これによって、フレーム同期は周期的な転送を開始できます。シリアル・クロック・サイク
ルのカウントは、内部生成／外部生成されたシリアル・クロックに適用されます。
フレーム同期パルス間でのサイクル数の式は、次のとおりです。
フレーム同期アサーション間での送信シリアル・クロックの数＝ TFSDIV+1
フレーム同期アサーション間での受信シリアル・クロックの数＝ RFSDIV+1

シリアル・クロック周波数と希望するフレーム同期周波数が与えられた場
合、TFSDIV や RFSDIV の正しい値を決定するには、次の式を使用します。
SPORTxTFS 周波数＝（TSCLKx 周波数）/（SPORTx_TFSDIV+1）
SPORTxRFS 周波数＝（RSCLKx 周波数）/（SPORTx_RFSDIV+1）

したがって、フレーム同期は（TFSDIV = 0 の場合は送信用に、RFSDIV = 0の場合は受信用に）連続してアクティブになります。しかし、TFSDIV（または RFSDIV）の 値 は、シ リ アル・ワ ー ド長 － 1（SPORTx_TCR2 ま た はSPORTx_RCR2 の SLEN フィールドの値）を下回ってはいけません。さもなけ
れば、外部デバイスが現在の動作をアボートしたり、その他の予測できない結果を招くことがあります。SPORT が使用されていない場合には、
TFSDIV（または RFSDIV）デバイザを使用して、外部クロックを分周したり周期的なパルスや割込みを生成したりするためのカウンタとすることができます。SPORT が機能するためには、この動作モード用にイネーブルにされている必要があります。

12-34

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ■ 最大クロック・レートの制約
外部生成された遅延送信フレーム同期は、データ出力への到着が遅れることもあるため、最大シリアル・クロック速度が制限されることもあります。正確なタイミング仕様については、『ADSP-BF531/ADSP-BF532/ADSP-BF533
Embedded Processor Data Sheet』を参照してください。
X フレーム同期とクロックの例

次のコード例では、クロックとフレーム同期の設定を示します。
r0 = 0x00FF;
p0.l = SPORT0_RFSDIV & 0xFFFF;
p0.h = (SPORT0_RFSDIV >> 16) & 0xFFFF;
w[p0] = r0.l; ssync;
p0.l = SPORT0_TFSDIV & 0xFFFF;
w[p0] = r0.l; ssync;

ワード長
各 SPORT チャンネル（送／受信）では、3 ～ 32 ビットのワード長を独立して扱います。長さが 32 ビット未満で LSB 位置に置かれている場合には、データは SPORT データ・レジスタ内で右寄せされます。ワード長を決定するには、各 SPORT の SPORTx_TCR2 レジスタと SPORTx_RCR2 レジスタのシ
リアル・ワード長（SLEN）フィールドの値を使用して、次の式で計算します。
シリアル・ワード長＝ SLEN + 1[

SLEN 値には、
0 や 1 を設定しないでください。許容される値は 2 ～ 31です。連続動作（現在のワードの最終ビットの直後に、次のワードの先頭ビットが続くとき）は、4 以上のワード・サイズに制限されます（つまり、SLEN ≥ 3）。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-35

ビット順序

ビット順序
シリアル・ワードが MSBファーストで送信されるか LSB ファーストで送
信 さ れ る か は、ビ ッ ト 順 序 に よ っ て 決 ま り ま す。ビ ッ ト 順 序 は、SPORTx_RCR1 レジスタと SPORTx_TCR1 レジスタの RLSBIT ビットと TLSBIT
ビットによって選択されます。RLSBIT（または TLSBIT）＝ 0 の場合、シリアル・ワードは MSB ファーストで受信（または送信）されます。RLSBIT（または TLSBIT）＝ 1 の場合、シリアル・ワードはLSBファーストで受信（または送信）されます。

データ型
SPORTx_TCR1 レジスタの TDTYPE フィールドと、SPORTx_RCR1 レジスタの
RDTYPE フィールドでは、シングル動作とマルチチャンネル動作に対して4つのデータ・フォーマットの 1 つを指定します。表 12-2 を参照してくだ
さい。

表 12-2.

TDTYPE、RDTYPE、データ・フォーマッティング

TDTYPE またはRDTYPESPORTx_TCR1 データ・
フォーマッティング

SPORTx_RCR1 データ・
フォーマッティング

00

通常動作

ゼロ・フィル

01

予備

符号拡張

10

µ 則を使用する圧伸µ 則を使用する圧伸

11A 則を使用する圧伸A 則を使用する圧伸

これらのフォーマットは、SPORTx_RX バッファとSPORTx_TX バッファにロードされるシリアル・データ・ワードに適用されます。SPORTx_TX データ・
ワードでは、有効ビットだけが送信されるため、実際にはゼロ詰めも符号拡張も行われません。

12-36

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ

圧伸
圧伸（COMPAND：COMpressing と exPANDing の短縮形）とは、送信
すべきビット数を最小限に抑えるために、データを対数的にエンコーディ
ングおよびデコーディングするプロセスです。SPORT は、µ 則とA 則という、最も広く使用される 2つの圧伸アルゴリズムを利用します。プロセッ
サは CCITT G.711 仕様に基づいて、データの圧伸を行います。圧伸のタ
イプは SPORTごとに独立して選択できます。
圧伸がイネーブルにされた場合、SPORTx_RX レジスタ内の有効データは受信した 8 つのLSB を16 ビットに符号拡張し、右寄せ、拡張した値になります。SPORTx_TX への書込みによって、16 ビット値が8つの LSB に圧縮され（送信ワードの幅に符号拡張され）、内部送信レジスタに書き込まれます。圧伸規格では 13 ビット（A 則）または14ビット（µ 則）の最大ワード長に対応するだけですが、16 ビットまでのワード長を使用できます。ワー
ド値の絶対値が最大許容値を超える場合、値は正または負の最大値に自動的に圧縮されます。
圧伸動作は、16ビットを超える長さには対応できません。

クロック信号のオプション
各 SPORT には送信クロック信号（TSCLK）と受信クロック信号（RSCLK）
があります。クロック信号は、SPORTx_TCR1 レジスタと SPORTx_RCR1 レジ
スタの TCKFE ビットと RCKFE ビットによって設定されます。シリアル・ク
ロック周波数は、SPORTx_TCLKDIV レジスタと SPORTx_RCLKDIV レジスタで設定されます。

L

送／受信に対して単一のクロックが望ましい場合には、受信クロッ
ク・ピンを送信クロックに接続できます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-37

フレーム同期のオプション

送／受信クロックは独立して内部生成したり、外部ソースから入力したりできます。クロック源は、SPORTx_TCR1 設定レジスタの ITCLK ビットとSPORTx_RCR1 設定レジスタの IRCLK ビットによって決定されます。
IRCLK または ITCLK ＝ 1 の場合、クロック信号はコアによって内部生成され、TSCLK ピン ま たは RSCLK ピン が 出力 で す。ク ロ ック 周 波数 は、SPORTx_RCLKDIV レジスタのシリアル・クロック・デバイザの値によって決定されます。
IRCLK または ITCLK ＝ 0 の場合、クロック信号は TSCLK ピンまたは RSCLK ピ

ンでの入力として受け付けられ、SPORTx_TCLKDIV/SPORTx_RCLKDIV レジス
タのシリアル・クロック・デバイザは無視されます。外部生成されたシリ
アル・クロックは、コア・システム・クロックに同期したり、互いに同期したりする必要はありません。コア・システム・クロックには、RSCLK やTSCLK よりも高い周波数が要求されます。

フレーム同期のオプション
フレーミング信号は、各シリアル・ワード転送の始まりを示します。各
SPORT のフレーミング信号は、TFS（送信フレーム同期）と RFS（受信フレーム同期）です。いろいろなフレーミング・オプションを使用できます。
これらのオプションは、SPORT設定レジスタ（SPORTx_TCR1、SPORTx_TCR2、
SPORTx_RCR1、SPORTx_RCR2）で設定されます。SPORTの TFS 信号と RFS 信
号は独立しており、コントロール・レジスタで別個に設定されます。

■ フレーム付きとフレームなし
SPORT 通信では、オプションで複数のフレーム同期信号を使用できます。
フレーム同期信号が必要かどうかは、TFSR（送信フレーム同期要求選択）と RFSR（受信フレーム同期要求選択）の制御ビットによって決まります。
これらのビットは、SPORTx_TCR1 レジスタと SPORTx_RCR1 レジスタにあり
ます。

12-38

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ

TFSR ＝ 1 または RFSR ＝ 1 の場合、どのデータ・ワードにもフレーム同期信号が必要です。SPORT による連続送信を可能にするには、それぞれの新しいデータ・ワードを SPORTx_TX ホールド・レジスタにロードしてから、以前のワードをシフト・アウトして送信してください。
TFSR ＝ 0 または RFSR ＝ 0 の場合、対応するフレーム同期信号は必要ありません。通信を開始するには 1 つのフレーム同期が必要ですが、最初のビットが転送された後では無視されます。その後、データ・ワードは、フレームなしで連続的に転送されます。

[

フレーム同期を必要としない状態では、フレームなしの連続した
データ・フローを保証するため、割込みや DMA 要求はあまり頻繁に処理されない場合があります。データのアンダーフローやオーバーフローを検出するには、ステータス・ビットを監視したり、SPORT エラー割込みをチェックしたりします。

図 12-17には、以下の特性を持つ、フレーム付きシリアル転送を示します。
• フレーム付きモードとフレームなしモードは、SPORTx_TCR1 レジス
タと SPORTx_RCR1 レジスタの TFSR ビットと RFSR ビットで決まります。
• フレーム付きモードでは、どのワードにもフレーミング信号が必要です。フレームなしモードでは、最初のワード後のフレーミング信号を無視します。
• フレームなしモードは、連続受信に適しています。
• アクティブ・ローまたはアクティブ・ハイのフレーム同期は、SPORTx_TCR1 レジスタと SPORTx_RCR1 レジスタの LTFS ビットと LRFS
ビットで選択されます。
他のタイミング例については、12-69 ページの「タイミング例」を参照してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-39

フレーム同期のオプション

76&/.
25
56&/.

ࡈ࡟࡯ࡓઃ߈
࠺࡯࠲ࡈ࡟࡯ࡓߥߒ
࠺࡯࠲

7)6
25
5)6
%


%


%


%


%


%


%


%


%


%


%


%


%


%


%


%


7)6
25
5)6
'$7$

%


%


%


図 12-17.フレーム付きデータとフレームなしデータ■ 内部フレーム同期と外部フレーム同期
送／受信フレーム同期は、内部的に独立して生成したり、外部ソースから入力したりできます。フレーム同期ソースは、SPORTx_TCR1 レジスタとSPORTx_RCR1 レジスタの ITFS ビットと IRFS ビットによって決まります。
ITFS ＝ 1 または IRFS ＝ 1 の場合、対応するフレーム同期信号は SPORT によって内部生成され、TFS ピンまたは RFS ピンが出力です。フレーム同期
信号の周波数は、SPORTx_TFSDIV レジスタまたは SPORTx_RFSDIV レジスタのフレーム同期デバイザの値によって決まります。
ITFS ＝ 0 または IRFS ＝ 0 の場合、対応するフレーム同期信号は TFS ピンま

たは RFS ピンでの入力として受け付けられ、SPORTx_TFSDIV/SPORTx_RFSDIV
レジスタのフレーム同期デバイザは無視されます。
信号の内部生成／外部生成とは関係なく、すべてのフレーム同期オプションを使用できます。

12-40

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ■ アクティブ・ローのフレーム同期とアクティブ・ハイのフレーム同期
フレーム同期信号は、アクティブ・ハイまたはアクティブ・ロー（つまり、反転）にすることができます。フレーム同期のロジック・レベルは、SPORTx_TCR1 レジスタと SPORTx_RCR1 レジスタの LTFS ビットと LRFS ビット
によって決まります。
• LTFS ＝ 0 または LRFS ＝ 0 の場合、対応するフレーム同期信号はアクティブ・ハイです。
• LTFS ＝ 1 または LRFS ＝ 1 の場合、対応するフレーム同期信号はアクティブ・ローです。
デフォルトでは、アクティブ・ハイのフレーム同期になります。プロセッ
サのリセット後、LTFS ビットと LRFS ビットは 0に初期化されます。

■ データとフレーム同期のサンプリング・エッジ
データとフレーム同期は、SPORT クロック信号の立上がりエッジまたは
立下がりエッジでサンプリングできます。シリアル・データとフレーム同期の駆動エッジとサンプリング・エッジは、SPORTx_TCR1 レジスタと、
SPORTx_RCR1 レジスタの TCKFE ビットと RCKFE ビットによって選択されます。
SPORT トランスミッタでは、SPORTx_TCR1 レジスタで TCKFE = 1 に設定す
ると、データと内部生成されたフレーム同期の駆動に TSCLKx の立下がり
エッジが選択され、外部生成されたフレーム同期のサンプリングに TSCLKxの立上がりエッジが選択されます。TCKFE = 0 に設定すると、データと内部生成されたフレーム同期の駆動に TSCLKx の立上がりエッジが選択され、外部生成されたフレーム同期のサンプリングに TSCLKx の立下がりエッジが選択されます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-41

フレーム同期のオプション

SPORT レシーバでは、SPORTx_RCR1 レジスタで RCKFE = 1 に設定すると、内部生成されたフレーム同期の駆動に RSCLKx の立下がりエッジが選択され、データと外部生成されたフレーム同期のサンプリングに RSCLKx の立上がりエッジが選択されます。RCKFE = 0 に設定すると、内部生成された
フレーム同期の駆動に RSCLKx の立上がりエッジが選択され、データと外部生成されたフレーム同期のサンプリングに RSCLKx の立下がりエッジが選択されます。

[

なお、外部生成されたデータとフレーム同期信号では、サンプリン
グ用に選択されたエッジとは反対のエッジで状態を変更してください。たとえば、外部生成されたフレーム同期をクロックの立上がりエッジでサンプリングする（SPORTx_TCR1 レジスタの TCKFE = 1）には、フレーム同期はクロックの立下がりエッジで駆動する必要があります。

一緒に接続された 2 つのSPORT の送／受信機能は、トランスミッタのTCKFE とレシーバの RCKFE に対して常に同じ値を選択してください。これによって、トランスミッタがデータを駆動するエッジと、レシーバがデー
タをサンプリングするエッジは反対になります。
図 12-18では、同じクロックとフレーム同期を共有するために、
TCKFE = RCKFE = 0 で送／受信が一緒に接続されます。

㚟േ
ࠛ࠶ࠫ

ࠨࡦࡊ࡞࡮
ࠛ࠶ࠫ

TSCLK = RSCLKౝㇱ߹ߚߪᄖㇱ
TFS = RFSౝㇱ߹ߚߪᄖㇱ
DT

B0

B1

B2

B3

DR

B0

B1

B2

B3

図 12-18.TCKFE ＝ RCKFE ＝ 0 で送／受信を接続した例

12-42

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ

図 12-19では、同じクロックとフレーム同期を共有するために、
TCKFE = RCKFE = 1 で送／受信が一緒に接続されます。
㚟േ
ࠛ࠶ࠫ

ࠨࡦࡊ࡞࡮
ࠛ࠶ࠫ

TSCLK㧩RSCLKౝㇱ߹ߚߪᄖㇱ
TFS = RFSౝㇱ߹ߚߪᄖㇱ
DT

B0

B1

B2

B3

DR

B0

B1

B2

B3

図 12-19.TCKFE ＝ RCKFE ＝ 1 で送／受信を接続した例■ 早期フレーム同期と遅延フレーム同期（通常タイミングと代替タイミング）
フレーム同期信号は、各データ・ワードの最初のビットの処理中（遅延）、または最初のビットの直前にあるシリアル・クロック・サイクルの処理中（早期）に発生することができます。このオプションを設定するのは、SPORTx_TCR1レジスタと、
SPORTx_RCR1レジスタのLARFSビットとLATFSビッ
トです。
LATFS = 0 または LARFS = 0 の場合、早期フレーム同期が設定されます。これは通常の動作モードです。このモードでは、送信データ・ワードの最初のビットが使用可能であり、受信データ・ワードの最初のビットはフレー
ム同期がアサートされた後のシリアル・クロック・サイクルでサンプリン
グされ、ワード全体が送信または受信されるまではフレーム同期は再チェックされません。マルチチャンネル動作では、これはマルチチャンネ
ル・フレーム遅延が 1のケースに対応します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-43

フレーム同期のオプション

早期フレーミング・モードでデータ伝送が連続である（つまり、各ワードの最終ビットの直後に次のワードの最初のビットがある）場合には、各ワードの最終ビットの処理中にフレーム同期信号が発生します。早期フ
レーミング・モードでは、内部生成されたフレーム同期は 1クロック・サ
イクルの間アサートされます。連続動作は、4 以上のワード・サイズに限定されます（SLEN ≥ 3）。
LATFS = 1 または LARFS = 1 の場合、遅延フレーム同期が設定されます。これは代替動作モードです。このモードでは、送信データ・ワードの最初のビットが使用可能であり、受信データ・ワードの最初のビットは、フレーム同期がアサートされたのと同じシリアル・クロック・サイクルでサンプリングされます。マルチチャンネル動作では、これはフレーム遅延が 0のケースです。受信データビットはシリアル・クロック・エッジによってサンプリングされますが、フレーム同期信号は各ワードの最初のビットの処
理中にのみチェックされます。遅延フレーミング・モードでは、内部生成されたフレーム同期はデータ・ワードの長さ全体にわたってアサートされたままです。外部生成されたフレーム同期は、最初のビットの処理中にのみチェックされます。
図 12-20は、フレーム信号タイミングの 2つのモードを示します。
• SPORTx_TCR1 または SPORTx_RCR1 レジスタの LATFS または LARFS ビットの場合：早期フレーム同期では LATFS = 0 または LARFS = 0、遅延フレーム同期では LATFS = 1 または LARFS = 1。
• 早期フレーミングでは、フレーム同期はデータに 1サイクルだけ先行します。遅延フレーミングでは、フレーム同期は最初のビットでのみチェックされます。
• データは、MSBファースト（TLSBIT = 0 または RLSBIT = 0）またはLSBファースト（TLSBIT = 1 または RLSBIT = 1）で送信されます。
• フレーム同期とクロックは、内部的または外部的に生成されます。

12-44

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ

他の例については、12-69 ページの「タイミング例」を参照してください。

xSCLK

ㆃᑧ
ࡈ࡟࡯ࡓ
หᦼ
ᣧᦼ
ࡈ࡟࡯ࡓ
หᦼ

࠺࡯࠲

B3

B2

B1

B0

...

図 12-20.通常フレーミングと代替フレーミング■ データ独立の送信フレーム同期
通常、内部生成された送信フレーム同期信号（TFS）が出力されるのは、SPORTx_TX バッファに送信準備のできたデータがある場合だけです。デー
タ独立の送信フレーム同期選択ビット（DITFS）によって、新しいデータの有無とは無関係に TFS 信号の連続生成が可能になります。このオプションは、SPORTx_TCR1 レジスタの DITFS ビットによって設定されます。
DITFS ＝ 0 の場合、内部生成された TFS が出力されるのは、新しいデータ・

ワードが SPORTx_TX バッファにロードされたときだけです。データがSPORTx_TX にロードされると、次の TFS が生成されます。この動作モード
によって、データは使用可能な場合にだけ送信できます。
DITFS ＝ 1 の場合、新しいデータが SPORTx_TX バッファで使用可能かどう

かとは無関係に、内部生成された TFS は、そのプログラムされた間隔で出力されます。TFS がアサートされるたびに、SPORTx_TX 内に存在するデータは再び送信されます。このとき、SPORTx_STAT レジスタの TUVF（送信アン
ダーフロー・ステータス）ビットがセットされ、古いデータが再び送信さ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-45

SPORT とメモリとの間のデータ転送れます。外部生成された TFS が発生したとき、SPORTx_TX バッファに新しいデータがない場合にも、TUVF ステータス・ビットはセットされます。な
お、この動作モードでは、データは指定されたタイミングでのみ送信されます。
内部生成された TFS が使用される場合、転送を開始するには、SPORTx_TX
データ・レジスタに 1回書き込むことが必要です。

SPORT とメモリとの間のデータ転送
送／受信データを SPORT とオンチップ・メモリとの間で転送する方法としては、シングル・ワード転送と DMA ブロック転送という 2 つの方法があります。
SPORT DMAチャンネルがイネーブルにされてない場合、
SPORTは、デー
タ・ワードを受信したりデータ・ワードの送信を必要としたりするたびに割込みを生成します。SPORT DMA は、割込みが生成される前にシリア
ル・データのブロック全体または複数のブロックを送／受信するためのメ
カニズムを提供します。SPORT のDMA コントローラは DMA転送を処理するので、プロセッサ・コアは、データのブロック全体が送／受信されるまでは実行を継続することができます。これにより、割込みサービス・ルーチン（ISR）は、シングル・ワードではなくデータのブロックに作用できるため、オーバーヘッドが著しく減少します。
DMA の詳細については、第 9 章「ダイレクト・メモリ・アクセス」を参照してください。

ステレオ・シリアル動作
SPORT では、よく使用されるI2S フォーマットを含めて、複数のステレ
オ・シリアル・モードをサポートできます。これらのモードを使用するには、SPORT_RCR2 レジスタまたは SPORT_TCR2 レジスタのビットを設定しま

12-46

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ

す。SPORT_RCR2 または SPORT_TCR2 の RSFSE または TSFSE をセットすると、フレーム同期ピンの動作は、I2S や左寄せのステレオ・シリアル・データ
で要求される左右クロックに変更されます。このビットをセットすると、SPORT は LRCLK スタイルの特殊なフレーム同期を生成したり受け付けた
りできるようになります。他のすべての SPORT制御ビットは有効なままであり、適切に設定してください。12-49 ページの図 12-21 と 12-50 ペー
ジの図 12-22 は、ステレオ・シリアル・モード動作のタイミング図を示します。
表 12-3 に、SPORTx_TCR1 と SPORTx_RCR1 のビットを使用して設定できるい
くつかのモードを示します。この表では SPORTの受信側のビットを示しますが、SPORT の送信部分の設定には、対応するビットを使用できます。
標準を変更しなくても、ユーザのニーズに応じてセット／クリアできる制
御フィールドは、「X」で示されています。
表 12-3.

ステレオ・シリアル設定

ビット・フィールド

ステレオ・オーディオ・シリアル方式
I2 S

左寄せ

DSP モード

RSFSE

1

1

0

RRFST

0

0

0

LARFS

0

1

0

LRFS

0

1

0

RFSR

1

1

1

RCKFE

1

0

0

SLEN

2 – 31

2 – 31

2 – 31RLSBIT

00

0

RFSDIV（内部 FS が選択された場合。）

2 – Max

2 – Max

2 – Max

RXSE（RX と TX にはセカンダリ・イネーブルを使用できます。）XX

X

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-47

ステレオ・シリアル動作

なお、0 または1 で示されたビットの多くは、ユーザの好みに応じて変更できます。したがって、この他にも多くの「ほぼ標準」モードのステレ
オ・シリアル動作が生まれます。これらのモードは、わずかに非標準のイ
ンターフェースを持つコーデックとのインターフェースに役立つことがあります。表 12-3 に示す設定値は、よく使用される多くのコーデックへのグルーレスなインターフェースを提供します。
なお、RFSDIV や TFSDIV は、依然として SLEN 以上であることが必要です。
I2S 動作の場合、RFSDIV や TFSDIV は、一般にシリアル・クロック・レートの 1/64です。RSFSE をセットした場合、フレーム同期周期と周波数を計算する式（12-33 ページの「クロック周波数とフレーム同期周波数」を参照）はまだ適用されますが、今では周期の 2 分の1 と周波数の 2 倍を表します。たとえば、RFSDIV または TFSDIV = 31 に設定すると、その場合のLRCLK は 32シリアル・クロック・サイクルごとに遷移し、64 シリアル・ク
ロック・サイクルの期間を持ちます。
LRFS ビットは、「右」チャンネルと見なされるフレーム同期ピンの極性を決定します。したがって、LRFS = 0 に設定すると、RFS ピンまたは TFS ピ
ンでのローレベル信号が左チャンネルであることを示します。これはデフォルトの設定です。
送／受信される最初のワードが左のチャンネルであるか右のチャンネルであるかは、RRFST ビットと TRFST ビットによって決まります。ビットがセットされた場合には、送／受信される最初のワードは右のチャンネルです。デフォルトでは、左のチャンネルのワードを最初に送／受信します。
セカンダリの DRxSEC ピンと DTxSEC ピンは、ステレオ・シリアル・モードと釣り合いのよいシリアル・ポートの便利な拡張機能です。1つの SPORTを使用して、データの複数の I2S ストリームを送／受信できます。なお、
プライマリ・ピンとセカンダリ・ピンは、クロックと LRCLK（フレーム同期）ピンを共有するので同期しています。SPORT の送信側と受信側は同期する必要はありませんが、設計によっては、1つのクロックを共有する

12-48

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ

こともあります。12-8 ページの図 12-3 では、プロセッサとAD1836 コー
デックとの間で複数のステレオ・シリアル接続を行った例を示しています。
7)6ฝߩ࠴ࡖࡦࡀ࡞

Ꮐߩ࠴ࡖࡦࡀ࡞

76&/.['7[35,

06%

/6%

06%

/6%

Ꮐነߖࡕ࡯࠼̆࠴ࡖࡦࡀ࡞ᒰߚࠅ㨪ࡆ࠶࠻
Ꮐߩ࠴ࡖࡦࡀ࡞

7)6

ฝߩ࠴ࡖࡦࡀ࡞

76&/.['7[35,

06%

/6%

06%

/6%

,6ࡕ࡯࠼̆࠴ࡖࡦࡀ࡞ᒰߚࠅ㨪ࡆ࠶࠻

7)6
76&/.['7[35,

06%

/6%

06%

/6%

'63ࡕ࡯࠼̆࠴ࡖࡦࡀ࡞ᒰߚࠅ㨪ࡆ࠶࠻
I6
ᵈ㧦
'63ࡕ࡯࠼ߢߪ࠴ࡖࡦࡀ࡞ࠍ⼂೎ߒ߹ߖࠎ‫ޕ‬7)6ߪ৻⥸ߦI6ߢേ૞ߒ߹ߔ㧔ߚߛߒ'63ࡕ࡯࠼ߢߪI6㧕‫ޕ‬
76&/.[๟ᵄᢙߪ৻⥸ߦ7)6ߢߔ߇‫߽ߢ࠼࡯ࡕ࡮࠻ࠬ࡯ࡃޔ‬േ૞ߢ߈߹ߔ‫ޕ‬

図 12-21.SPORT のステレオ・シリアル・モード、送信

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-49

マルチチャンネル動作5)6ฝߩ࠴ࡖࡦࡀ࡞

Ꮐߩ࠴ࡖࡦࡀ࡞

56&/.['5[35,

06%

/6%

06%

/6%

Ꮐነߖࡕ࡯࠼̆࠴ࡖࡦࡀ࡞ᒰߚࠅ㨪ࡆ࠶࠻
Ꮐߩ࠴ࡖࡦࡀ࡞

5)6

ฝߩ࠴ࡖࡦࡀ࡞

56&/.[
06%'5[35,

/6%

06%

/6%

,6ࡕ࡯࠼̆࠴ࡖࡦࡀ࡞ᒰߚࠅ㨪ࡆ࠶࠻

5)6
56&/.[
06%'5[35,

/6%

06%

/6%

'63ࡕ࡯࠼̆࠴ࡖࡦࡀ࡞ᒰߚࠅ㨪ࡆ࠶࠻
I6
ᵈ㧦
'63ࡕ࡯࠼ߢߪ࠴ࡖࡦࡀ࡞ࠍ⼂೎ߒ߹ߖࠎ‫ޕ‬5)6ߪ৻⥸ߦI6ߢേ૞ߒ߹ߔ㧔ߚߛߒ'63ࡕ࡯࠼ߢߪ[I6㧕‫ޕ‬56&/.[๟ᵄᢙߪ৻⥸ߦ[5)6ߢߔ߇‫߽ߢ࠼࡯ࡕ࡮࠻ࠬ࡯ࡃޔ‬േ૞ߢ߈߹ߔ‫ޕ‬

図 12-22.SPORT のステレオ・シリアル・モード、受信

マルチチャンネル動作
SPORT が提供するマルチチャンネル動作モードによって、SPORTは時分
割多重（TDM）のシリアル・システムで通信できます。マルチチャンネ
ル通信では、シリアル・ビットストリームの各データ・ワードは別個のチャンネルを占有します。各ワードは、次の連続したチャンネルに属します。たとえば、24 ワード・ブロックのデータには、24 チャンネルごとに
1 つのワードが含まれることになります。
SPORT は、特定チャンネル用のワードを自動的に選択しながら、他のワードを無視することができます。送／受信用には 128 までのチャンネルを使用できます。各 SPORT は、任意の 128 チャンネルからデータを選択的に送／受信できます。これらの 128 チャンネルは、合計 1024 のチャンネル

12-50

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ

から任意に選択できます。チャンネルを選択的にイネーブルにするため、
RX と TX で は、同じ128 チャン ネル 領域を 使用 する 必要が あり ます。
SPORT は、各チャンネルで以下の動作を行うことができます。
• データの送信• データの受信• データの送／受信• 何もしない
マルチチャンネル・モードでは、データ圧伸と DMA転送も使用できます。
SPORT がマルチチャンネル・モードにあって非アクティブなタイム・ス
ロットが発生しない限り、SPORT がイネーブルである（SPORTx_TCR1 レ
ジスタの TSPEN ＝ 1）場合には、DTPRI ピンは常に駆動されます（3 ステー
トではありません）。SPORTがマルチチャンネル・モードにあって非アクティブなタイム・スロットが発生しない限り、SPORT がイネーブルでありセカンダリ送信がイネーブルである（SPORTx_TCR2 レジスタの TXSE = 1）
場合には、DTSEC ピンは常に駆動されます（3ステートではありません）。
マルチチャンネル・モードでは、RSCLK は外部から供給したり、SPORTに
よって内部生成したりできます。RSCLK は、送信機能と受信機能の両方に使用されます。SPORT がマルチチャンネル・モードでだけ使用される
場合には、TSCLK を非接続のままにしておきます。RSCLK が外部的／内部的に供給される場合には、レシーバ回路とトランスミッタ回路の両方に内部的に配布されます。

[

SPORTマルチチャンネル送信セレクト・レジスタとSPORTマルチ
チャンネル受信セレクト・レジスタは、SPORTx_TX や SPORTx_RX の動作をマルチチャンネル・モード用にイネーブルにする前にプログラムする必要があります。このことは、「DMA データ・アンパッ
ク・モード」では特に重要です。なぜなら、SPORT FIFO 動作はRSPEN と TSPEN がセットされた直後に始まり、RX と TX の両方がイ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-51

マルチチャンネル動作

ネーブルにされるからです。SPORTx_MCMC2 の MCMEN ビットは、
SPORTx_TX や SPORTx_RX の動作をイネーブルにする前にイネーブルにする必要があります。SPORT のマルチチャンネル動作をディス
エーブルにするには、まず TXEN をディスエーブルにしてから、RXEN
をディスエーブルにします。なお、再びイネーブルにする前に、TXEN と RXEN の両方をディスエーブルにする必要があります。TX
または RX だけをディスエーブルにすることは許されません。
図 12-23は、以下の特性を持つマルチチャンネル転送のタイミング例を示します。
• 同じシリアル・バスを共有する異なるチャンネルでシリアル・デー
タを送／受信する場合には、TDM方式を使用します。
• 送／受信チャンネルを独立に選択できます。
• RFS はフレームの開始を示します。
• TFS は、外部ロジックの「送信データ有効」として使用され、送信チャンネル区間でのみ真です。
• チャンネル 0 と2で受信し、チャンネル 1と 2で送信します。
• マルチチャンネル・フレーム遅延は 1に設定されます。

12-52

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ

他の例については、12-69 ページの「タイミング例」を参照してください。

MFD = 1࠴ࡖࡦࡀ࡞0࠴ࡖࡦࡀ࡞1࠴ࡖࡦࡀ࡞2

ήⷞ

B3

B2

B3

B2

RSCLK
DR

B3

B2

B1

B0

RFS
DT
B3

B2

B1

B0

TFS

図 12-23.マルチチャンネル動作■ SPORTx_MCMCn レジスタ
SPORT ご と に 2 本 の SPORTx マ ルチ チ ャン ネ ル設 定 レジ ス タ（SPORTx_MCMCn）があります。SPORTx_MCMCn レジスタは、SPORT のマル
チチャンネル動作の設定に使用されます。2本のコントロール・レジスタを次に示します。
SPORTx マルチチャンネル設定レジスタ 1（SPORTx_MCMC1）

SPORT0:0xFFC0 0838
SPORT1:0xFFC0 0938

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

WSIZE[3:0]（ウィンドウ・サイズ）
フィールドの値 = [（希望するウィンドウ・サイズ）/ 8 - 1］

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

WOFF[9:0]（ウィンドウ・オフセット）
ウィンドウの先頭を 0 ～ 1023 のチャンネル範囲のどこにでも配置します

図 12-24.SPORTx マルチチャンネル設定レジスタ 1

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-53

マルチチャンネル動作

SPORTx マルチチャンネル設定レジスタ 2（SPORTx_MCMC2）
SPORT0:0xFFC0 083C

15 14 13 12 11 10
0 0 0 0 0 0

9
0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

SPORT1:0xFFC0 093C
MFD[3:0]（マルチチャン
ネル・フレーム遅延）マルチチャンネル・モードでのフレーム同期
パルスと最初のデータビットとの遅延
FSDR（フレーム同期とデータの関係）
0 - 通常1 - 反転、H.100 モード
MCMEN（マルチチャンネル・フレーム・モード・イネーブル）
0 - マルチチャンネル動作ディスエーブル
1 - マルチチャンネル動作イネーブル

MCCRM[1:0]（2X クロック再生モード）
0x -バイパス・モード
10 -4MHz から 2MHz クロックを再生
11 -16MHz から 8MHz クロックを再生
MCDTXPE（マルチチャンネル
DMA 送信パッキング）
0 - ディスエーブル
1 - イネーブル
MCDRXPE（マルチチャンネル
DMA 受信パッキング）
0 - ディスエーブル
1 - イネーブル

図 12-25.SPORTx マルチチャンネル設定レジスタ 2■ マルチチャンネル・イネーブル
SPORTx_MCM2 レジスタの MCMEN ビットをセットすると、マルチチャンネル・

モードがイネーブルにされます。MCMEN = 1 の場合、マルチチャンネル動
作がイネーブルにされます。MCMEN = 0 の場合、すべてのマルチチャンネ
ル動作がディスエーブルにされます。

L
[

12-54

MCMEN ビットをセットすると、SPORT の受信側と送信側の両方で、マルチチャンネル動作がイネーブルにされます。したがって、受信側の SPORT がマルチチャンネル・モードにある場合には、送信側の SPORTもマルチチャンネル・モードにあることが必要です。
マルチチャンネル・モードでは、ステレオ・シリアル・フレーム同期モードや遅延フレーム同期機能をイネーブルにしないでください。これらの機能は、マルチチャンネル・モードと不適合です。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ

表 12-4 は、SPORT がマルチチャンネル・モードにある場合の SPORT設
定レジスタ内のビットの依存関係を示します。
表 12-4.

マルチチャンネル・モード設定

SPORTx_RCR1 またはSPORTx_RCR2

SPORTx_TCR1 またはSPORTx_TCR2

注

RSPEN

TSPEN

両方ともセットまたはクリア

IRCLK

–

独立

–

ITCLK

無視

RDTYPETDTYPE独立

RLSBITTLSBIT

独立

IRFS

–

独立

–

ITFS

無視

RFSR

TFSR

無視

–

DITFS

無視

LRFS

LTFS

独立

LARFS

LATFS

両方とも 0 であることが必要

RCKFE

TCKFE

両方とも同じ値にセットまたはクリア

SLEN

SLEN

両方とも同じ値にセットまたはクリア

RXSE

TXSE

独立

RSFSE

TSFSE

両方とも 0 であることが必要

RRFST

TRFST

無視

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-55

マルチチャンネル動作■ マルチチャンネル・モードでのフレーム同期
マルチチャンネル・システムにおけるすべての送／受信デバイスは、同じタイミング・リファレンスを持つ必要があります。RFS 信号は、このリファ
レンスに使用され、マルチチャンネル・データ・ワードのブロックまたはフレームの先頭を示します。
SPORT でマルチチャンネル・モードがイネーブルにされている場合、ト
ランスミッタとレシーバでは、いずれも RFS をフレーム同期として使用します。このことは、RFS が内部生成されたか外部生成されたかとは無関係です。RFS 信号はチャンネルの同期をとり、各マルチチャンネル・シーケ
ンスを再起動するために使用されます。RFS のアサーションは、チャンネ
ル 0データ・ワードの先頭を示します。
マルチチャンネル・モード設定では、RFS は、SPORT の SPORTx_TX チャン
ネルと SPORTx_RX チャンネルの両方で使用されるため、SPORTx_RCR1 とSPORTx_TCR1、および SPORTx_RCR2 と SPORTx_TCR2 内の対応するビット・ペアは常に同じにプログラムしてください（ただし、RXSE と TXSE のペア、および RDTYPE と TDTYPE のペアについては、例外となることもあります）。こ
れは、たとえ SPORTx_RX 動作がイネーブルにされていない場合でも当てはまります。
マルチチャンネル・モードでは、遅延（代替）フレーム・モードに似た
RFS タイミングには自動的に入ります。MFD が 0 に設定された場合、送信

データ・ワードの最初のビットは使用可能であり、受信データ・ワードの最初のビットは、フレーム同期がアサートされたのと同じシリアル・ク
ロック・サイクルでサンプリングされます。
TFS 信号は、イネーブルにされたワードの伝送中にアクティブである送信

データ有効信号として使用されます。SPORTのデータ送信ピンはタイム・スロットがアクティブでないときに 3 ステートであり、TFS 信号はデータ送信ピンの出力イネーブル信号として機能します。マルチチャンネル・
モードでは、ITFS がクリアされているかどうかとは無関係に、SPORT は
TFS を駆動します。マルチチャンネル・モードでは、TFS ピンは依然として

12-56

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ

LTFS ビットに従います。LTFS がセットされた場合には、送信データ有効信

号はアクティブ・ローになります。つまり、TFS ピンでのローレベル信号
はアクティブ・チャンネルを示します。
最初の RFS が受信され、フレーム転送が始まったら、完全なフレームが転送されるまで、SPORTは他のすべての RFS 信号を無視します。
MFD > 0 の場合には、前のフレームの最後のチャンネルの処理中に RFS が発生することもあります。これは許容され、遅延したチャンネル 0 の開始点が完全なフレームの外側にある限り、フレーム同期は無視されません。

マルチチャンネル・モードでは、RFS 信号はブロックまたはフレームの開始リファレンスとして使用され、その後は、それ以上の RFS 信号を必要とすることなく、ワード転送が連続的に実行されます。したがって、内部生成されたフレーム同期は常にデータ独立です。

■ マルチチャンネル・フレーム
マルチチャンネル・フレームには、ウィンドウ・サイズとウィンドウ・オ
フセットによる指定に基づいて、複数のチャンネルが含まれています。完
全なマルチチャンネル・フレームは、チャンネル 0から始まる1～ 1024のチャンネルで構成されます。SPORT 用に選択されるマルチチャンネル・
フレームの特定チャンネルは、ウィンドウ・オフセット、ウィンドウ・サ
イズ、マルチチャンネル・セレクト・レジスタの組合わせです。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-57

マルチチャンネル動作

RSCLK
FRAME
SYNC
࠴ࡖࡦࡀ࡞
ήⷞߐࠇࠆ࠺࡯࠲

࠺࡯࠲ήⷞߐࠇࠆ࠺࡯࠲ ήⷞߐࠇࠆ࠺࡯࠲

ࡑ࡞࠴࠴ࡖࡦࡀ࡞࡮ࡈ࡟࡯ࡓ
SPx_MCMCREG FIELD:

MFD

න૏㧦

ࡆ࠶࠻

ࡢ࡯࠼

▸࿐㧦

0–15

0–1015࠙ࠖࡦ࠼࠙࡮ࠝࡈ࠮࠶࠻

࠙ࠖࡦ࠼࠙࡮
ࠨࠗ࠭
8ࡢ࡯࠼ߩ୚ᢙ
8–128ᵈ㧦ࡈ࡟࡯ࡓ㐳ߪ‫ࡓ࡯࡟ࡈޔ‬หᦼಽഀ߹ߚߪᄖㇱࡈ࡟࡯ࡓหᦼ๟ᦼߦࠃߞߡ⸳ቯߐࠇ߹ߔ‫ޕ‬

図 12-26.マルチチャンネル・パラメータの関係■ マルチチャンネル・フレーム遅延
SPORTx_MCMC2 の 4 ビット MFD フィールドは、マルチチャンネル・モードでのフレーム同期パルスと最初のデータビットとの間の遅延を指定します。
MFD の値は、遅延のシリアル・クロック・サイクル数です。マルチチャン
ネル・フレーム遅延によって、プロセッサは、さまざまな種類のインターフェース・デバイスを取り扱うことができます。
MFD の値が 0 の場合、フレーム同期は最初のデータビットと同時になります。MFD に許される最大値は15 です。最後のフレームからのデータが受信される前に、新しいフレーム同期が発生することもあります。データのブ
ロックはバック・ツー・バックで発生するからです。

12-58

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ■ ウィンドウ・サイズ
ウィンドウ・サイズ（WSIZE[3:0]）は、マルチチャンネル・セレクト・レ
ジスタでイネーブル／ディスエーブルにできるチャンネル数を定義します。このようなワードの範囲は、アクティブ・ウィンドウと呼ばれます。
チャンネル数は 0 ～15 の範囲の任意の値とすることができ、8を増分とす
る 8 ～ 128 のアクティブ・ウィンドウ・サイズに対応します。デフォルト
値 0 は、8 チャンネルという最小のアクティブ・ウィンドウ・サイズに対応します。WSIZE レジスタからアクティブ・ウィンドウ・サイズを計算す
るには、次の式を使用します。
アクティブ・ウィンドウ内のワード数＝ 8 ×（WSIZE+1）

DMA バッファ・サイズは常に固定されているため、DMA 帯域幅を節約す
るには、小さなウィンドウ・サイズ（たとえば、32ワード）を定義して、小さな DMAバッファ・サイズ（この例では、128 ワードではなく32ワード）を得ることができます。SPORTがイネーブルにされている間は、ウィ
ンドウ・サイズを変更できません。
マルチチャンネル・セレクト・ビットは、イネーブルにされていても、選択されたウィンドウの範囲外になる場合には無視されます。

■ ウィンドウ・オフセット
ウィンドウ・オフセット（WOFF[9:0]）は、アクティブ・ウィンドウの先頭を 1024 のチャンネル範囲のどこに置くかを指定します。値 0 ではオフ
セットを指定しません。最大値は 896 であり、128 チャンネルすべてを使用で きま す。一 例と して、プログ ラム では、ウィ ンド ウ・サ イズ が 8（WSIZE = 0）、オフセットが93（WOFF = 93）のアクティブ・ウィンドウを定義できます。この 8チャンネル・ウィンドウは、93から 100の範囲に存在します。SPORT がイネーブルにされている間は、ウィンドウ・オフ
セットもウィンドウ・サイズも変更できません。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-59

マルチチャンネル動作

ウィンドウ・サイズとウィンドウ・オフセットの組合わせによって、ウィンドウの一部がチャンネル・カウンタの範囲外に置かれる場合には、フレーム内の範囲外チャンネルはいずれもイネーブルにされません。

■ SPORTx_CHNL レジスタ
SPORTx カレント・チャンネル・レジスタ（SPORTx_CHNL）の 10 ビット
CHNL フィールドは、マルチチャンネル動作時に現在処理されているチャンネルを示します。このフィールドは、読出し専用のステータス・インジ
ケータです。CHNL[9:0] フィールドは、各チャンネルが処理されるたびに1 だけインクリメントされます。カウンタは、定義されたウィンドウの上端で停止します。チャンネル・セレクト・レジスタは、各フレーム同期で0 から再開されます。一例として、ウィンドウ・サイズが8、オフセットが 148 の場合には、カウンタは0～ 156の値を表示します。
ウィンドウ・サイズが完了すると、次のフレームの準備のためにチャンネ
ル・カウンタは 0 にリセットされます。RSCLK とプロセッサ・クロックとの間には同期遅延があるため、チャンネル・レジスタ値は近似値となります。処理されているチャンネルよりも進むことはありませんが、遅れることはあります。
SPORTx カレント・チャンネル・レジスタ（SPORTx_CHNL）

RO

SPORT0:0xFFC0 0834
SPORT1:0xFFC0 0934

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

CHNL（カレント・チャンネル・インジケータ）

図 12-27.SPORTx カレント・チャンネル・レジスタ

12-60

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ■ SPORTx_MCMC2 内のその他のマルチチャンネル・フィールド
SPORTx_MCMC2 レジスタの FSDR ビットは、フレーム同期と受信するクロッ

クとの間のタイミング関係を変更します。この変更によって、SPORT はH.100 プロトコルに準拠することができます。
通常（FSDR = 0 の場合）、データは TFS が生成されるのと同じエッジで送信されます。たとえば、TFS での立上がりエッジによって、データは LATFSの設定タイミングに応じて TSCLK の同じ立上がりエッジまたは次の立上がりエッジで送信されます。
フレーム同期／データの関係が使用された場合（FSDR = 1）、フレーム同期はクロックの立下がりエッジで変更されることが予想され、クロックの立上がりエッジでサンプリングされます。このことは、受信されたデータが受信クロックの立下がりエッジでサンプリングされる場合にも当てはまります。

■ チャンネル・セレクト・レジスタ
チャンネルは、長さ 3 ～ 32 ビットのマルチビット・ワードであり、TDM
チャンネルの 1つに属します。マルチチャンネル通信時に送／受信されるワードを選択するため、特定のチャンネルを個々にイネーブル／ディス
エーブルできます。イネーブルにされたチャンネルからのデータ・ワード
は送／受信されますが、ディスエーブルにされたチャンネルのワードは無視されます。使用可能な 1024 のチャンネルのうち、128 までの連続チャンネルを選択できます。個々のチャンネルをイネーブル／ディスエーブルにするには、SPORTx_MRCSn と SPORTx_MTCSn のマルチチャンネル・セレクト・
レジスタが使用されます。SPORTx_MRCSn レジスタではアクティブ受信チャ
ンネルを指定し、SPORTx_MTCSn レジスタではアクティブ送信チャンネルを指定します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-61

マルチチャンネル動作

各マルチチャンネル・セレクト・レジスタは、4 本のレジスタで構成されます。4 本のレジスタのそれぞれには、32 のチャンネルに対応して32 のビットがあります。ビットをセットするとそのチャンネルがイネーブルにされるため、SPORT は複数ワード・ブロックのデータから（受信または送信用に）そのワードを選択します。

0

310
MCS0

0

31 0
MCS1

31 32

31 0
MCS2

63 64

31
MCS3

95 96

127

チャンネル選択 0 ～ 127

図 12-28.マルチチャンネル・セレクト・レジスタ
チャンネル選択ビット 0は、常にアクティブ・ウィンドウの最初のワードに対応します。フレーム内でのチャンネルの絶対位置を決定するには、チャンネル選択位置にウィンドウ・オフセット・ワードを加算します。たとえば、MCS2 のビット7をセットすると、イネーブルにされるアクティブ・ウィンドウのワード 71 が選択されます。MCS1 のビット 2 をセットすると、アクティブ・ウィンドウのワード 34が選択され、以下も同様です。
SPORTx_MTCSn レジスタの特定ビットをセットすると、SPORT は、データ
ス ト リ ー ム の そ の チ ャ ン ネ ル の 位 置 に あ る ワ ー ド を 送 信 し ま す。
SPORTx_MTCSn レジスタのビットをクリアすると、そのチャンネルのタイ
ム・スロットの間、SPORT のデータ送信ピンは 3 ステートになります。
SPORTx_MRCSn レジスタの特定ビットをセットすると、SPORT は、データストリームのそのチャンネルの位置にあるワードを受信します。受信されたワードは、SPORTx_RX バッファにロードされます。SPORTx_MRCSn レジス
タのビットをクリアすると、SPORTはそのデータを無視します。

12-62

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ

圧伸は、すべてのチャンネルに選択したり、どのチャンネルにも選択しなかったりできます。A 則または µ 則の圧伸は、SPORTx_TCR1 レジスタのTDTYPE フィールドと SPORTx_RCR1 レジスタの RDTYPE フィールドで選択され、すべてのアクティブ・チャンネルに適用されます。
（圧伸の詳細については、12-37 ページの「圧伸」を参照してください）。
X SPORTx_MRCSn レジスタ

マルチチャンネル・セレクト・レジスタは、個々のチャンネルをイネーブ
ル／ディスエーブルにするために使用されます。SPORTxマルチチャンネ
ル受信セレクト・レジスタ（SPORTx_MRCSn）は、アクティブ受信チャンネ
ルを指定します。32 ビットのレジスタが4 本あり、128のチャンネルに対応しています。ビットをセットするとそのチャンネルがイネーブルになり、
シリアル・ポートでは、そのワードを複数ワード・ブロックのデータからの受信用に選択します。たとえば、ビット0をセットするとワード0が選択され、ビット12をセットするとワード12が選択され、以下も同様です。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-63マルチチャンネル動作

SPORTx_MRCSn レジスタの特定ビットをセットすると、シリアル・ポートでは、データストリームのそのチャンネルの位置にあるワードを受信します。
受信されたワードは、RXバッファにロードされます。SPORTx_MRCSn レジス
タのビットをクリアすると、シリアル・ポートはデータを無視します。
SPORTx マルチチャンネル受信セレクト・レジスタ（SPORTx_MRCSn）
すべてのビットで、0 ＝チャンネル・ディスエーブル、1 ＝チャンネル・イネーブルであるため、SPORT は、
そのワードを複数のワード・ブロックのデータから選択します。
メモリマップド・アドレスの場合、表 12-5 を参照してください。
3100

レジスタ内のビット番号0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0

リセット＝ 0x0000 0000

31
MRCS0

63

32
0

レジスタ内のビット番号0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0

リセット＝ 0x0000 0000

31
MRCS1

95

レジスタ内のビット番号0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0

リセット＝ 0x0000 0000

127

チャンネル番号

960

レジスタ内のビット番号0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0

リセット＝ 0x0000 0000

31
MRCS3

チャンネル番号

64
0

31
MRCS2

チャンネル番号チャンネル番号

図 12-29.SPORTx マルチチャンネル受信セレクト・レジスタ

12-64

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ

表 12-5.

SPORTx マルチチャンネル受信セレクト・レジスタのメモリマップド・アドレス

レジスタ名

メモリマップド・アドレス

SPORT0_MRCS00xFFC0 0850

SPORT0_MRCS1

0xFFC0 0854

SPORT0_MRCS2

0xFFC0 0858

SPORT0_MRCS3

0xFFC0 085C

SPORT1_MRCS00xFFC0 0950

SPORT1_MRCS1

0xFFC0 0954

SPORT1_MRCS2

0xFFC0 0958

SPORT1_MRCS3

0xFFC0 095C

X SPORTx_MTCSn レジスタ

マルチチャンネル・セレクト・レジスタは、個々のチャンネルをイネーブ
ル／ディスエーブルにするために使用されます。4 本のSPORTx マルチ
チャンネル送信セレクト・レジスタ（SPORTx_MTCSn）は、アクティブ送信
チャンネルを指定します。32ビットのレジスタが4 本あり、128のチャンネルに対応しています。ビットをセットするとそのチャンネルがイネーブ
ルになり、シリアル・ポートでは、そのワードを複数ワード・ブロックのデータからの送信用に選択します。たとえば、ビット 0 をセットするとワード 0 が選択され、ビット12 をセットするとワード12 が選択され、以下も同様です。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-65

マルチチャンネル動作

SPORTx_MTCSn レジスタの特定ビットをセットすると、シリアル・ポートでは、データストリームのそのチャンネルの位置にあるワードを送信します。SPORTx_MTCSn レジスタのビットをクリアすると、シリアル・ポートのデータ送信ピンは、そのチャンネルのタイム・スロットの間、3 ステートになります。
SPORTx マルチチャンネル送信セレクト・レジスタ（SPORTx_MTCSn）
すべてのビットで、0 ＝チャンネル・ディスエーブル、1 ＝チャンネル・イネーブルであるため、SPORT
は、そのワードを複数のワード・ブロックのデータから選択します。
メモリマップド・アドレスの場合、表 12-5 を参照してください。
3100

レジスタ内のビット番号0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0

リセット＝ 0x0000 0000

31
MTCS0

63

32
0

レジスタ内のビット番号0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0

リセット＝ 0x0000 0000

31
MTCS1

95

レジスタ内のビット番号0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0

リセット＝ 0x0000 0000

127

チャンネル番号

960

レジスタ内のビット番号0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0

リセット＝ 0x0000 0000

31
MTCS3

チャンネル番号

64
0

31
MTCS2

チャンネル番号チャンネル番号

図 12-30.SPORTx マルチチャンネル送信セレクト・レジスタ

12-66

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ

表 12-6.

SPORTx マルチチャンネル送信セレクト・レジスタのメモリマップド・アドレス

レジスタ名

メモリマップド・アドレス

SPORT0_MTCS00xFFC0 0840

SPORT0_MTCS1

0xFFC0 0844

SPORT0_MTCS2

0xFFC0 0848

SPORT0_MTCS3

0xFFC0 084C

SPORT1_MTCS00xFFC0 0940

SPORT1_MTCS1

0xFFC0 0944

SPORT1_MTCS2

0xFFC0 0948

SPORT1_MTCS3

0xFFC0 094C

■ マルチチャンネル DMA のデータ・パッキング
マル チ チ ャン ネ ル DMA のデ ー タ・パ ッ キン グ とア ン パッ キ ング は、SPORTx_MCMC2 マルチチャンネル設定レジスタの MCDTXPE ビットと MCDRXPE
ビットによって指定されます。
これらのビットがセットされた場合には、データがパックされることを示
し、SPORTは、DMAバッファに格納されたデータがイネーブルにされたSPORT チャンネルにだけ対応することを期待します。たとえば、MCMフ
レームがイネーブルにされた 10 のチャンネルを含む場合、SPORT は、
DMAバッファがフレームごとに10の連続したワードを含むことを期待します。イネーブルにされるチャンネルの合計数を変更するには、DMA バッ
ファ・サイズを変更する必要があります。また、SPORT がイネーブルにされている間は、再設定は許されません。
これらのビットがクリアされた場合には（デフォルトであり、データがパックされていないことを示します）、SPORT はイネーブルかどうかとは無関係に、DMA バッファがアクティブ・ウィンドウ内のチャンネルごとに 1 ワードを持つことを期待します。したがって、DMA バッファ・サイ
ズは、ウィンドウのサイズに等しくなければなりません。たとえば、チャ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-67

H.100 標準プロトコルのサポート

ンネル 1と 10がイネーブルにされ、ウィンドウ・サイズが16である場合、DMA バッファ・サイズは 16 ワードになる必要があります。送／受信されるデータは、バッファのアドレス 1 と 10に置かれ、DMA バッファ内の残りのワードは無視されます。このモードによって、SPORT がイネーブル
である間には、イネーブルにされるチャンネルの数を変更できますが、いくつか注意が必要です。まず、チャンネル・レジスタを読み出して、アクティブ・ウィンドウが処理中でないことを確認します。チャンネル・カウ
ントが 0の場合、マルチチャンネル・セレクト・レジスタを更新できます。

H.100 標準プロトコルのサポート
プロセッサは、H.100標準プロトコルに対応します。この標準に対応するには、以下の SPORTパラメータを設定する必要があります。
• 外部フレーム同期の設定。外部バス・マスターによって生成される
フレーム同期。
• TFSR/RFSR の設定（フレーム同期が必要）• LTFS/LRFS の設定（アクティブ・ローのフレーム同期）• 外部クロックの設定• MCMEN の設定（マルチチャンネル・モードの選択）• MFD ＝ 0（フレーム同期と最初のデータビットとの間にフレーム遅
延なし）• SLEN ＝ 7（8ビット・ワード）• FSDR ＝ 1（H.100 の設定、1/2 クロック・サイクルの早期フレーム
同期をイネーブル）

12-68

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ■ 2X クロック再生コントロール
SPORT は提供された2X入力クロックからデータレート・クロックを再生できます。これによって、適切な位相関係を持つ 4MHz の着信クロックから 2MHz を再生したり16MHz の着信クロックから8MHz を再生すること
で、MVIP-90（2Mbps データ）とHMVIP（8Mbps データ）の H.100互換
モードを実装できます。適用可能なクロック・モードは、2 ビットのモード信号（SPORTx_MCMC2 レジスタの MCCRM[1:0]）によって選択され、これに は 非 分 割、つ ま り 通 常 動 作 用 の バ イ パ ス・モ ー ド も 含 ま れ ま す。
MCCRM = 00 では非分割、つまりバイパス・モードが選択され（H.100 互換）、MCCRM = 10 では MVIP-90 のクロック分割が選択され（4MHz から
2MHz を抽出）、MCCRM = 11 では HMVIP のクロック分割が選択されます（16MHz から 8MHz を抽出）。

SPORT ピン／ライン終端
プロセッサは、SPORT を含めて、すべての出力ピンで非常に高速なドラ
イバを持っています。データ・ライン、クロック・ライン、フレーム同期
ラインでの接続が 6 インチを超える場合には、ポイント・ツー・ポイント
接続でのストリップ・ラインに対して直列終端の使用を検討してください。低速のシリアル・クロックを使用するときにも、エッジ・レートの関係で、この方法が必要なこともあります。

タイミング例
この章の本文には、いくつかのタイミング例を掲載しています（12-38ページの「フレーム付きとフレームなし」、12-43 ページの「早期フレーム同期と遅延フレーム同期（通常タイミングと代替タイミング）」、12-56 ページの「マルチチャンネル・モードでのフレーム同期」）。ここでは、フレー
ミング・オプションのその他の組合わせを示す例を追加します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-69

タイミング例

これらのタイミング例では信号間の関係を示しますが、プロセッサの実際のタ
イミング・パラメータを示すようには調整されていません。実際のタイミング・
パラメータと値については、『ADSP-BF531/ADSP-BF532/ADSP-BF533
Embedded Processor Data Sheet』を参照してください。
以下の例では、4 ビットのワード長を想定します（SLEN = 3）
。フレーミン。
グ信号はアクティブ・ハイです（LRFS = 0 および LTFS = 0）
図 12-31～図 12-36に、データを受信するためのフレーミングを示します。
図 12-31と図 12-32 は、不連続データ（ワード間に任意の数の TSCLK サイ
クルや RSCLK サイクルが存在）と連続データ（ワード間に TSCLK サイクル
やSCLKサイクルがない）に対する通常のフレーミング・モードを示します。

56&/.
5)6287387

5)6,1387
'5

%

%

%

%

%

%

%

%

63257ࠦࡦ࠻ࡠ࡯࡞࡮࡟ࠫࠬ࠲㧦ౝㇱࡈ࡟࡯ࡒࡦࠣ࡮ࠝࡊ࡚ࠪࡦߣᄖㇱࡈ࡟࡯ࡒࡦࠣ࡮ࠝࡊ࡚ࠪࡦߩਔᣇࠍ␜ߒ߹ߔ‫ޕ‬'5ߪ‫ޔ‬Ꮧᦸߔࠆ⸳ቯߦᔕߓߡ‫'ޔ‬5[35,߹ߚߪ'5[6(&‫ߩߘߪ޿ࠆ޽ޔ‬ਔᣇࠍ⴫ߒ߹ߔ‫ޕ‬

図 12-31.SPORT の受信、通常のフレーミング

12-70

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ

56&/.

5)6287387

5)6,1387

'5

%

%

%

%

%

%

%

%

%

%

63257ࠦࡦ࠻ࡠ࡯࡞࡮࡟ࠫࠬ࠲㧦ౝㇱࡈ࡟࡯ࡒࡦࠣ࡮ࠝࡊ࡚ࠪࡦߣᄖㇱࡈ࡟࡯ࡒࡦࠣ࡮ࠝࡊ࡚ࠪࡦߩਔᣇࠍ␜ߒ߹ߔ‫ޕ‬'5ߪ‫ޔ‬Ꮧᦸߔࠆ⸳ቯߦᔕߓߡ‫'ޔ‬5[35,߹ߚߪ'5[6(&‫ߩߘߪ޿ࠆ޽ޔ‬ਔᣇࠍ⴫ߒ߹ߔ‫ޕ‬

図 12-32.SPORT の連続受信、通常のフレーミング
図 12-33と図 12-34は、代替フレーミング・モードでの不連続受信と連続受信を示します。これら 4つの図では、外部生成されたフレーム同期の入力タイミング条件と、内部生成されたフレーム同期の出力タイミング特性を示します。なお、出力は入力タイミング条件を満たします。したがって、2 つの SPORTチャンネルを使用して、一方の SPORTチャンネルがもう一方の SPORT チャンネルに RFS を提供できます。

56&/.
5)6287387

5)6,1387
'5

%

%

%

%

%

%

%

%

63257ࠦࡦ࠻ࡠ࡯࡞࡮࡟ࠫࠬ࠲㧦ౝㇱࡈ࡟࡯ࡒࡦࠣ࡮ࠝࡊ࡚ࠪࡦߣᄖㇱࡈ࡟࡯ࡒࡦࠣ࡮ࠝࡊ࡚ࠪࡦߩਔᣇࠍ␜ߒ߹ߔ‫ޕ‬'5ߪ‫ޔ‬Ꮧᦸߔࠆ⸳ቯߦᔕߓߡ‫'ޔ‬5[35,߹ߚߪ'5[6(&‫ߩߘߪ޿ࠆ޽ޔ‬ਔᣇࠍ⴫ߒ߹ߔ‫ޕ‬

図 12-33.SPORT の受信、代替フレーミング

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-71

タイミング例

56&/.

5)6287387

5)6,1387

'5

%

%

%

%

%

%

%

%

63257ࠦࡦ࠻ࡠ࡯࡞࡮࡟ࠫࠬ࠲㧦ౝㇱࡈ࡟࡯ࡒࡦࠣ࡮ࠝࡊ࡚ࠪࡦߣᄖㇱࡈ࡟࡯ࡒࡦࠣ࡮ࠝࡊ࡚ࠪࡦߩਔᣇࠍ␜ߒ߹ߔ‫ޕ‬'5ߪ‫ޔ‬Ꮧᦸߔࠆ⸳ቯߦᔕߓߡ‫'ޔ‬5[35,߹ߚߪ'5[6(&‫ߩߘߪ޿ࠆ޽ޔ‬ਔᣇࠍ⴫ߒ߹ߔ‫ޕ‬

図 12-34.SPORT の連続受信、代替フレーミング
図 12-35と図 12-36は、フレームなしモードでの、通常のフレーミングと代替フレーミングによる受信動作を示します。1つのフレーム同期信号は、最初のワードの先頭でのみ発生します。ただし、ノーマル・モードでは最初のビットの 1 RSCLK 前になり、代替モードでは最初のビットと同時になります。このモードは、マルチワード・バースト（連続受信）に適してい
ます。

56&/.
5)6

'5

%

%

%

%

%

%

%

%

%

%

'5ߪ‫ޔ‬Ꮧᦸߔࠆ⸳ቯߦᔕߓߡ‫'ޔ‬5[35,߹ߚߪ'5[6(&‫ߩߘߪ޿ࠆ޽ޔ‬ਔᣇࠍ⴫ߒ߹ߔ‫ޕ‬

図 12-35.SPORT の受信、フレームなしモード、通常のフレーミング

12-72

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ

56&/.
5)6

'5

%

%

%

%

%

%

%

%

%

%

'5ߪ‫ޔ‬Ꮧᦸߔࠆ⸳ቯߦᔕߓߡ‫'ޔ‬5[35,߹ߚߪ'5[6(&‫ߩߘߪ޿ࠆ޽ޔ‬ਔᣇࠍ⴫ߒ߹ߔ‫ޕ‬

図 12-36.SPORT の受信、フレームなしモード、代替フレーミング
図 12-37～図 12-42は、データを送信するためのフレーミングを示します。
これらは図 12-31 ～図 12-36 にとてもよく似ています。
図 12-37 と図 12-38 は、不連続データ（ワード間に任意の数の TSCLK サイ
クルが存在）と連続データ（ワード間に TSCLK サイクルがない）に対する
通常のフレーミング・モードを示します。図 12-39 と図 12-40 は、代替フレーミング・モードでの不連続伝送と連続伝送を示します。すでに受信タ
イミング図で述べたように、RFS 出力は RFS 入力タイミング条件を満たし
ます。

76&/.
7)6287387

7)6,1387

'7

%

%

%

%

%

%

%

%

63257ࠦࡦ࠻ࡠ࡯࡞࡮࡟ࠫࠬ࠲㧦ౝㇱࡈ࡟࡯ࡒࡦࠣ࡮ࠝࡊ࡚ࠪࡦߣᄖㇱࡈ࡟࡯ࡒࡦࠣ࡮ࠝࡊ࡚ࠪࡦߩਔᣇࠍ␜ߒ߹ߔ‫ޕ‬'7ߪ‫ޔ‬Ꮧᦸߔࠆ⸳ቯߦᔕߓߡ‫'ޔ‬7[35,߹ߚߪ'7[6(&‫ߩߘߪ޿ࠆ޽ޔ‬ਔᣇࠍ⴫ߒ߹ߔ‫ޕ‬

図 12-37.SPORT の送信、通常のフレーミング

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-73

タイミング例

76&/.

7)6287387

7)6,1387

75

%

%

%

%

%

%

%

%

%

%

63257ࠦࡦ࠻ࡠ࡯࡞࡮࡟ࠫࠬ࠲㧦ౝㇱࡈ࡟࡯ࡒࡦࠣ࡮ࠝࡊ࡚ࠪࡦߣᄖㇱࡈ࡟࡯ࡒࡦࠣ࡮ࠝࡊ࡚ࠪࡦߩਔᣇࠍ␜ߒ߹ߔ‫ޕ‬'5ߪ‫ޔ‬Ꮧᦸߔࠆ⸳ቯߦᔕߓߡ‫'ޔ‬5[35,߹ߚߪ'5[6(&‫ߩߘߪ޿ࠆ޽ޔ‬ਔᣇࠍ⴫ߒ߹ߔ‫ޕ‬

図 12-38.SPORT の連続送信、通常のフレーミング

76&/.
7)6287387

7)6,1387

'7

%

%

%

%

%

%

%

%

63257ࠦࡦ࠻ࡠ࡯࡞࡮࡟ࠫࠬ࠲㧦ౝㇱࡈ࡟࡯ࡒࡦࠣ࡮ࠝࡊ࡚ࠪࡦߣᄖㇱࡈ࡟࡯ࡒࡦࠣ࡮ࠝࡊ࡚ࠪࡦߩਔᣇࠍ␜ߒ߹ߔ‫ޕ‬'7ߪ‫ޔ‬Ꮧᦸߔࠆ⸳ቯߦᔕߓߡ‫'ޔ‬7[35,߹ߚߪ'7[6(&‫ߩߘߪ޿ࠆ޽ޔ‬ਔᣇࠍ⴫ߒ߹ߔ‫ޕ‬

図 12-39.SPORT の送信、代替フレーミング

12-74

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

シリアル・ポート・コントローラ

76&/.
7)6287387

7)6,1387
75

%

%

%

%

%

%

%

%

63257ࠦࡦ࠻ࡠ࡯࡞࡮࡟ࠫࠬ࠲㧦ౝㇱࡈ࡟࡯ࡒࡦࠣ࡮ࠝࡊ࡚ࠪࡦߣᄖㇱࡈ࡟࡯ࡒࡦࠣ࡮ࠝࡊ࡚ࠪࡦߩਔᣇࠍ␜ߒ߹ߔ‫ޕ‬'5ߪ‫ޔ‬Ꮧᦸߔࠆ⸳ቯߦᔕߓߡ‫'ޔ‬5[35,߹ߚߪ'5[6(&‫ߩߘߪ޿ࠆ޽ޔ‬ਔᣇࠍ⴫ߒ߹ߔ‫ޕ‬

図 12-40.SPORT の連続送信、代替フレーミング
図 12-41と図 12-42は、フレームなしモードにおいて、通常のフレーミン
グと代替フレーミングによる送信動作を示します。1 つのフレーム同期信号は、最初のワードの先頭でのみ発生します。ただし、ノーマル・モード
では最初のビットの 1 TSCLK 前になり、代替モードでは最初のビットと同時になります。
76&/.
7)6

'7

%

%

%

%

%

%

%

%

%

%

'7ߪ‫ޔ‬Ꮧᦸߔࠆ⸳ቯߦᔕߓߡ‫'ޔ‬7[35,߹ߚߪ'7[6(&‫ߩߘߪ޿ࠆ޽ޔ‬ਔᣇࠍ⴫ߒ߹ߔ‫ޕ‬

図 12-41.SPORT の送信、フレームなしモード、通常のフレーミング

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

12-75

タイミング例

76&/.
7)6

'7

%

%

%

%

%

%

%

%

%

%

'7ߪ‫ޔ‬Ꮧᦸߔࠆ⸳ቯߦᔕߓߡ‫'ޔ‬7[35,߹ߚߪ'7[6(&‫ߩߘߪ޿ࠆ޽ޔ‬ਔᣇࠍ⴫ߒ߹ߔ‫ޕ‬

図 12-42.SPORT の送信、フレームなしモード、代替フレーミング

12-76

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

第13章 UARTポート・コントローラ

非同期シリアル・インターフェース LSI（UART）は、PCスタイルの業界
標準 UART と互換性のある全二重ペリフェラルです。UARTは、データ・
フォーマットの直列／並列変換を行います。シリアル通信は、さまざまなワード長、ストップ・ビット、パリティ生成オプションに対応する非同期プロトコルに従います。UART には、割込み処理ハードウェアが組み込まれています。割込みは、12 種類のイベントから生成できます。
UART は、半二重 IrDA®（赤外線通信協会）SIR（9.6/115.2 Kbps レート）
プロトコルに対応します。これはモードを使用する機能です。

L

モデム・ステータス／制御機能は、UARTモジュールでは提供していませんが、汎用 I/O（GPIO）ピンを使用して実装できます。

UART は、TXと RXの DMAマスター・チャンネルを別個に提供するDMA
対応のペリフェラルであり、DMA 動作モードまたはプログラムされた非DMA 動作モードで使用できます。非 DMA モードは、割込みまたはポーリ
ングを使用して、データ・フローをソフトウェア管理することが必要です。DMA 方式は、DMA エンジン自身がデータを転送するので、ソフトウェア介入を最小限に抑えられます。DMA の詳細については、第 9章「ダイレクト・メモリ・アクセス」を参照してください。
UART で使用するハードウェア支援のオートボー検出メカニズムを提供するには、どのペリフェラル・タイマでも使用できます。詳細について
は、第 15 章「タイマ」を参照してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

13-1

シリアル通信

シリアル通信UART は、以下のオプションを持つ非同期シルアル通信プロトコルに従います。
• 5 ～8のデータビット• 1、1 ½、または2 つのストップ・ビット• なし、偶数、または奇数パリティ• ボーレート＝ SCLK/(16 × Divisor)。ここで SCLK はシステム・クロッ
ク周波数、デバイザには 1 ～65536 の値を使用できます。
すべてのデータ・ワードには、1 つのスタート・ビットと少なくとも1 つのストップ・ビットが必要です。したがって、オプションのパリティ・
ビットを付加して、ワード当たり 7～ 12ビットの範囲となります。送／受信される文字フレームのフォーマットは、ライン・コントロール・レジス
タ（UART_LCR）によって制御されます。データは常に最下位ビット（LSB）
ファーストで送／受信されます。
図 13-1は、TX ピンで測定される代表的な物理ビットストリームを示します。

࠺࡯࠲ࡆ࠶࠻

D0ࠬ࠲࡯࠻࡮ࡆ࠶࠻ LSB

D1

D2

D3

D4

ࠬ࠻࠶ࡊ࡮ࡆ࠶࠻

D5

D6

D7

ࡄ࡝࠹ࠖ࡮ࡆ࠶࠻㧔ࠝࡊ࡚ࠪࡦ‫ޔ‬ᄸᢙ߹ߚߪ஧ᢙ㧕

図 13-1. TX ピンでのビットストリーム

13-2

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

UART ポート・コントローラ

UART コントロール・レジスタとステータス・
レジスタ
このプロセッサは、一連の PC スタイルの業界標準コントロール・レジス
タとステータス・レジスタを各 UART に提供します。これらのメモリマッ
プド・レジスタ（MMR）はバイト幅レジスタであり、最上位バイトがゼロ・フィルされたハーフ・ワードとしてマッピングされます。
業界標準のインターフェースに合わせて、複数のレジスタが同じアドレス
位置にマッピングされます。デバイザ・ラッチ・レジスタ（UART_DLH とUART_DLL）は、送信ホールディング・レジスタ（UART_THR）、受信バッ
ファ・レジスタ（UART_RBR）、割込みイネーブル・レジスタ（UART_IER）とアドレスを共有します。規定の時間にアクセス可能なレジスタ・セット
は、ライン・コントロール・レジスタ（UART_LCR）のデバイザ・ラッチ・
アクセス・ビット（DLAB）によって制御されます。これらのレジスタにアクセスするために、ソフトウェアは 16 ビット・ワードのロード／ストア
命令を使用する必要があります。
送／受信チャンネルは、いずれもバッファリングされます。UART_THR レジ
スタは送信シフト・レジスタ（TSR）をバッファし、UART_RBR レジスタは受信シフト・レジスタ（LSR）をバッファします。ソフトウェアは、シフト・レジスタに直接アクセスできません。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

13-3

UART コントロール・レジスタとステータス・レジスタ■ UART_LCR レジスタ
UART ライン・コントロール・レジスタ（UART_LCR）は、送／受信される
文字フレームのフォーマットを制御します。SB ビットは、たとえUART ク
ロックがディスエーブルにされていても機能します。TX ピンは、通常はハイレベルに駆動されるため、UART が使用されない場合には、フラグ出
力ピンとして使用できます。
UART ライン・コントロール・レジスタ（UART_LCR）

0xFFC0 040C

15 14 13 12 11 10
0 0 0 0 0 0

9
0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

DLAB（デバイザ・ラッチ・アクセス）
1 - UART_DLL と UART_DLH へのアクセスを
イネーブル
0 - UART_THR、UART_RBR、UART_IER へのアクセスをイネーブル

WLS[1:0]（ワード長選択）
00 - 5 ビット・ワード
01 - 6 ビット・ワード
10 - 7 ビット・ワード
11 - 8 ビット・ワード

SB（セット・ブレーク）
0 - 強制なし
1 - TX ピンを 0 に強制

STB（ストップ・ビット）
1 - 非 5 ビット・ワード長では 2 つのストップ・ビット、5 ビット・ワー
ド長では1 1/2のストップ・ビット
0 - 1 つのストップ・ビット

STP（スティック・パリティ）
このビットがセットされ PEN ＝ 1 の場合には、パリティを以下の値に強制
EPS ＝ 1 のとき、パリティは 0 として送信されチェックされる
EPS ＝ 0 のとき、パリティ 1 として送信されチェックされるPEN（パリティ・イネーブル）
1 - パリティを送信してチェック
0 - パリティは送信もチェックもされません

EPS（偶数パリティ選択）
1 - 偶数パリティ
0 - PEN ＝ 1 で STP ＝ 0 の場合、奇数パリティ

図 13-2. UART ライン・コントロール・レジスタ

13-4

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

UART ポート・コントローラ■ UART_MCR レジスタ
図 13-3 に示すように、モデム・コントロール・レジスタ（UART_MCR）は
UART ポートを制御します。たとえモデム機能が提供されていない場合でも、モデム・コントロール・レジスタは、ループバック・モードに対応するために使用可能です。
UART モデム・コントロール・レジスタ（UART_MCR）

0xFFC0 0410

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

ループ（ループバック・モード・イネーブル）
TX をハイレベルに強制し、RX を RSR から切り離します

図 13-3. UART モデム・コントロール・レジスタ
ループバック・モードでは、TX ピンがハイレベルに強制され、レシーバの入力は RX ピンから切り離されますが、内部的に送信出力にリダイレク
トされます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

13-5

UART コントロール・レジスタとステータス・レジスタ■ UART_LSR レジスタ
図 13-4に示すように、UART ライン・ステータス・レジスタ（UART_LSR）には、UART ステータス情報が含まれています。
UART ライン・ステータス・レジスタ（UART_LSR）
RO

0xFFC0 0414

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
1

5
1

4
0

3
0

2
0

1
0

0
0

TEMT（TSRおよび UART_THR エンプティ）
0 - 満杯
1 - いずれも空
THRE（THR エンプティ）
0 - THR は空ではありません
1 - THR は空BI（ブレーク割込み）
0 - ブレーク割込みなし
1 - ブレーク割込み。これは、RXが最大ワード長を超えてローレベルに保持されたことを示しますリセット＝ 0x0060
DR（データ・レディ）
0 - 新しいデータなし
1 - UART_RBR が新しいデータを
保持
OE（オーバーラン・エラー）
0 - オーバーランなし
1 - 読出し前に UART_RBR に
上書き
PE（パリティ・エラー）
0 - パリティ・エラーなし
1 - パリティ・エラーFE（フレーミング・エラー）
0 - エラーなし
1 - 無効なストップ・ビット・
エラー

図 13-4. UART ライン・ステータス・レジスタ
UART ライン・ステータス・レジスタ（UART_LSR）が読み出されると、ブ
レーク割込み（BI）、オーバーラン・エラー（OE）、パリティ・エラー（PE）、
フレーミング・エラー（FE）の各ビットがクリアされます。UART 受信
バッファ・レジスタ（UART_RBR）が読み出されると、データ・レディ（DR）
ビットがクリアされます。

L

13-6

これらの読出し動作には破壊的性質があるため、特別な注意が必要です。詳細については、6-75 ページの「投機的ロード実行」と6-76
ページの「条件付きロード動作」を参照してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

UART ポート・コントローラ

THRE ビットは、UART 送信チャンネルで新しいデータの準備ができたこと、およびソフトウェアが UART_THR に書込みできることを示します。
UART_THR への書込みは、THRE ビットをクリアします。このビットは、デー
タが UART_THR から送信シフト・レジスタ（TSR）にコピーされると再びセットされます。TEMT ビットを評価すれば、最近開始された送信動作が完了したかどうかを判断できます。

■ UART_THR レジスタ
UART 送信ホールディング・レジスタ（UART_THR）への書込みによって、送信動作が開始されます。データは内部の送信シフト・レジスタ（TSR）に転送され、そこで必要に応じてスタート・ビット、ストップ・ビット、
パリティ・ビットが付加され、SCLK/(16 × Divisor）と等しいボーレート
でシフト・アウトされます。すべてのデータ・ワードは、スタート・ビッ
トの 1 から0 への遷移で始まります。UART_THR から送信シフト・レジスタへのデータ転送によって、UARTライン・ステータス・レジスタ（UART_LSR）の送信ホールディング・レジスタ・エンプティ（THRE）ステータス・フラ
グがセットされます。
書込み専用の UART_THR レジスタは、読出し専用の UART_RBR レジスタやUART_DLL レジスタと同じアドレスにマッピングされます。
UART_THR にアクセスするには、UART_LCR の DLAB ビットをクリアする必要があります。DLAB
ビットがクリアされると、このアドレスへの書込みは UART_THR レジスタをターゲットにし、このアドレスからの読出しは UART_RBR レジスタを返します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

13-7

UART コントロール・レジスタとステータス・レジスタ

なお、データは最下位ビット（LSB）ファースト（ビット 0）で送／受信され、最上位ビット（MSB）が続きます。
UART 送信ホールディング・レジスタ（UART_THR）
WO
0xFFC0 0400

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

送信ホールド [7:0]

図 13-5. UART 送信ホールディング・レジスタ■ UART_RBR レジスタ
受信動作は送信設定と同じデータ・フォーマットを使用しますが、ストッ
プ・ビットの数は常に 1と想定されます。スタート・ビットの検出後、受信されたワードは、SCLK/(16 ×デバイザ ) のボーレートで受信シフト・レジ
スタ（RSR）にシフト・インされます。ストップ・ビットを含めて、適切なビット数が受信された後、図 13-6 に示すように、データとステータスが更新されて、受信シフト・レジスタは UART 受信バッファ・レジスタ（UART_RBR）に転送されます。受信されたワードが UART_RBR バッファに転送され、適切な同期遅延の後で、データ・レディ（DR）ステータス・フラ
グが更新されます。
ボーレートの 16 倍に等しいサンプリング・クロックによって、データはビットのできるだけ中間点近くでサンプリングされます。内部サンプル・
クロックは非同期受信データレートと正しく一致しないこともあるため、サンプリング・ポイントは各ビットの中心からドリフトします。サンプリ
ング・ポイントは、各スタート・ビットと再び同期がとられます。したがって、エラーはシングル・ワードの長さにわたってのみ累計されます。
受信フィルタでは、サンプリング・クロック周期の 2 倍より小さいスプリ
アス・パルスを除去します。

13-8

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

UART ポート・コントローラ

読出し専用の UART_RBR レジスタは、書込み専用の UART_THR レジスタやUART_DLL レジスタと同じアドレスにマッピングされます。
UART_RBR にアクセスするには、UART_LCR の DLAB ビットをクリアする必要があります。DLAB
ビットがクリアされると、このアドレスへの書込みは UART_THR レジスタをターゲットにし、このアドレスからの読出しは UART_RBR レジスタを返します。
UART 受信バッファ・レジスタ（UART_RBR）
RO
0xFFC0 0400

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

受信バッファ [7:0]

図 13-6. UART 受信バッファ・レジスタ■ UART_IER レジスタ
UART 割込みイネーブル・レジスタ（UART_IER）は、UARTデータ・レジ
スタの空状態または満杯状態のシステム処理に対する要求をイネーブルにするために使用されます。アクションの手段としてポーリングが使用される場合を除いて、このレジスタの ERBFI ビットや ETBEI ビットは一般にセットされます。
システム DMA をイネーブルにせずにこのレジスタを設定すると、UART
は割込みを使用して、プロセッサにデータ在庫状態を通知します。この
モードで適切な動作を実現するには、システム割込みをイネーブルにし、適切な割込み処理ルーチンを用意しておく必要があります。下位互換性のために、UART_IIR は依然として正しい割込みステータスを反映します。

L

DMA がイネーブルであるかどうかとは無関係に、UART は、デー
タ送信、データ受信、ライン・ステータス・イベントを独立して扱うために、3つの独立した割込みチャンネルを備えています。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

13-9

UART コントロール・レジスタとステータス・レジスタシステム DMA をイネーブルにした状態で、UART は、プロセッサとの間でデータを転送するために DMA を使用します。専用の DMA チャンネル
は、受信動作や送信動作に使用できます。ライン・エラー処理は、受信／送信の設定とは完全に独立して設定できます。
UART_IER レジスタは、UART_DLH と同じアドレスにマッピングされます。
UART_IER にアクセスするには、UART_LCR の DLAB ビットをクリアする必要があります。
UART 割込みイネーブル・レジスタ（UART_IER）

0xFFC0 0404

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

ELSI（RX ステータス割込みをイネーブル）
0 - 割込みなし
1 - UART_LSR[4:1] のいずれかがセットされている場合には、ライン・ステータス割込みを生成

00

リセット＝ 0x0000

ERBFI（受信バッファ・フル割
込みをイネーブル）
0 - 割込みなし
1 - UART_LSR の DR ビットがセットされている場合には、RX 割込みを生成
ETBEI（送信バッファ・エンプ
ティ割込みをイネーブル）
0 - 割込みなし
1 - UART_LSR の THRE ビットがセットされている場合には、TX 割込みを生成

図 13-7. UART 割込みイネーブル・レジスタ
UART の DMA をイネーブルにするには、まずシステム DMA コントロー
ル・レジスタを設定してから、UART_IER レジスタで UART の ERBFI 割込み
や ETBEI 割込みをイネーブルにします。これは、割込み要求ラインがDMA
要求ラインの代わりになるためです。これらの要求を受信すると同時に、DMA がイネーブルであるかどうかに応じて、DMA制御ユニットは、ダイ
レクト・メモリ・アクセスを生成するか、UART割込みをシステム割込み
処理ユニットに渡します。しかし、UARTのエラー割込みは、DMA ユニットを完全にバイパスして、システム割込み処理ユニットに直接移されま
す。

13-10

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

UART ポート・コントローラ

UART ライン・ステータス・レジスタ（UART_LSR）の各ビットによって、次のいずれかの条件が発生している場合には、ELSI ビットは、独立した割込みチャンネルでの割込み生成をイネーブルにします。
• 受信オーバーラン・エラー（OE）• 受信パリティ・エラー（PE）• 受信フレーミング・エラー（FE）• ブレーク割込み（BI）
UART_IER レジスタで ETBEI ビットがセットされると、UART モジュールはすぐに割込みまたは DMA 要求を発行します。文字列の伝送を開始するとき、最初の文字に対する特殊な扱いは必要ありません。ETBEI ビットをセットすると、割込みサービス・ルーチンは最初の文字をメモリからロードし、それを通常の方法で UART_THR レジスタに書き込みます。したがって、
文字列伝送が完了した場合には、ETBEI ビットをクリアしてください。

■ UART_IIR レジスタ
旧デバイスとの互換性のために、UART 割込み識別レジスタ（UART_IIR）
は依然として UART割込みステータスを反映します。旧来の動作では、すべての UART割込みソースを 1つの割込みチャンネルにバンドルして、これらすべてを同じソフトウェア・ルーチンで処理することが必要な場合もあります。このためには、システム割込みコントローラ（SIC）を使用して、すべての UART 割込みを同じ割込み優先順位にグローバルに割り当てます。
保留中の割込みビット（NINT）はクリアされると、割込みが保留にされていることを通知します。STATUS フィールドでは、優先順位が最も高い保留
中の割込みを示します。受信ライン・ステータスは最も高い優先順位を持っています。UART_THR エンプティ割込みは、最も低い優先順位を持っています。両方の割込みが通知されている場合には、UART_IIR は 0x06 を示します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

13-11

UART コントロール・レジスタとステータス・レジスタ

UART 割込みが保留にされた場合、割込みサービス・ルーチン（ISR）は
割込みラッチを明示的にクリアする必要があります。次の図では、3つのラッチをクリアする方法を示します。
UART 割込み識別レジスタ（UART_IIR）
RO
0xFFC0 0408

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

STATUS[1:0]00 -予備
01 -UART_THR エンプティ。割込み要求をクリアするには、UART_THRに書き込むか、UART_IIR を読み出します。
10 -受信データ・レディ。割込み要求をクリアするには、UART RBR を読み出します。
11 -受信ライン・ステータス。割込み要求をクリアするには、UART_LSR
を読み出します。

01

リセット＝ 0x0001

NINT（保留中の割込み）
0 - 割込みが保留中
1 - 保留中の割込みなし

図 13-8. UART 割込み識別レジスタ
TX 割込み要求をクリアするには、UART_THR レジスタに新しいデータを書き込むか、UART_IIR レジスタを読み出します。サービス・ルーチンがそれ以上のデータ送信を望まない場合には、UART_IIR レジスタ読出しの特殊な役割に注目してください。
ソフトウェアが伝送を停止させた場合には、UART_IIR レジスタを読み出して割込み要求をリセットする必要があります。UART_IIR レジスタが0x04
または 0x06 を示す（優先順位の高い別の割込みが保留中であることを示す）限り、UART_IIR を読み出しても UART_THR エンプティ・ラッチをクリアできません。

L

13-12

SIC がライン・ステータス割込みまたは受信データ割込みに低い割
込み優先順位を割り当てた場合には、デッドロック条件が発生することもあります。これを回避するには、UART_THR エンプティ・イベ
ントに対して、イネーブルにされた UART 割込みの最低の優先順
位を割り当てます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

UART ポート・コントローラL

これらの読出し動作には破壊的性質があるため、特別な注意が必要です。詳細については、6-75 ページの「投機的ロード実行」と6-76
ページの「条件付きロード動作」を参照してください。

■ UART_DLL レジスタと UART_DLH レジスタ
ビットレートは、システム・クロック（SCLK）と 16 ビット・デバイザによって判定されます。デバイザは、UART デバイザ・ラッチ・ロー・バイ
ト・レジスタ（UART_DLL）と UARTデバイザ・ラッチ・ハイ・バイト・レジスタ（UART_DLH）に分かれています。これらのレジスタは16 ビット・デバイザを形成します。ボークロックは 16 で除算されるため、次のようになります。
ボーレート＝ SCLK /（16 ×デバイザ）
UART_DLL ＝ UART_DLH ＝ 0 の場合、デバイザ＝ 65,536
UART デバイザ・ラッチ・ロー・バイト・レジスタ（UART_DLL）
0xFFC0 0400

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
1

リセット＝ 0x0001

デバイザ・ラッチ・ロー・バイト[7:0]

UART デバイザ・ラッチ・ハイ・バイト・レジスタ（UART_DLH）
0xFFC0 0404

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

デバイザ・ラッチ・ハイ・バイト[15:8]

図 13-9. UART デバイザ・ラッチ・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

13-13

UART コントロール・レジスタとステータス・レジスタ

UART_DLL レジスタは、UART_THR レジスタや UART_RBR レジスタと同じアドレスにマッピングされます。UART_DLH レジスタは、割込みイネーブル・レジスタ（UART_IER）と同じアドレスにマッピングされます。UART デバイ
ザ・ラッチ・レジスタにアクセスするには、その前に UART_LCR の DLAB ビットをセットする必要があります。

L

なお、UART_DLH と UART_DLL によって形成される16 ビット・デバイ
ザは 0x0001 にリセットされるため、デフォルトでは可能な最高のクロック周波数が得られます。UART が使用されない場合には、
UART ク ロ ック を ディ ス エー ブ ルに す ると 節 電に な りま す。
UART_DLH レジスタと UART_DLL レジスタは、UCEN ビットをセットする前または後にソフトウェアによってプログラムできます。

表 13-1 は、多くの標準ボーレートのサポートに必要な除算係数の例を示します。
表 13-1.

100MHz SCLK による UART のボーレート例

ボーレート

DL

実際値

% エラー

2400

2604

2400.15

.006

4800

1302

4800.31

.007

9600

651

9600.61

.006

19200

326

19171.78

.147

38400

163

38343.56

.147

57600

109

57339.45.452

11520054115740.74.4699216007892857.14

3.1196250000

1

6250000

–

L
13-14

SCLK 周波数の選択には注意が必要です。
希望するボーレートの偶数倍では、低エラー率につながることがあります。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

UART ポート・コントローラ■ UART_SCR レジスタ
8 ビットの UART スクラッチ・レジスタ（UART_SCR）の内容は 0x00 にリセットされます。これは、汎用のデータ記憶に使用され、UART ハード
ウェアを制御することはありません。

UART スクラッチ・レジスタ（UART_SCR）
0xFFC0 041C

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000
スクラッチ [7:0]

図 13-10.UART スクラッチ・レジスタ■ UART_GCTL レジスタ
UART グローバル・コントロール・レジスタ（UART_GCTL）には、内部
UART クロック用と、UART の IrDA 動作モード用のイネーブル・ビットがあります。
UCEN ビットは、以前のUART 実装環境には存在しなかったことに注意してください。これは、UARTが使用されない場合に、節電するために採用されました。コードを移植する際には、必ずこのビットをイネーブルにしてください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

13-15

非 DMA モード

IrDA TX 極性変更ビットと IrDA RX 極性変更ビットは、IrDA モードでのみ有効です。2つの強制エラー・ビット FPE と FFE は、テスト目的で用意されています。これらは、特にループバック・モードでのソフトウェア・デバッグに役立ちます。
UART グローバル・コントロール・レジスタ（UART_GCTL）

0xFFC0 0424

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

FFE（送信時にフレーミング・エラーを強制）
1 - エラーを強制
0 - 通常動作UCEN（UARTクロックをイネーブル）
1 - UART クロックをイネーブル
0 - UART クロックをディスエーブル

FPE（送信時にパリティ・エラーを強制）
1 - エラーを強制
0 - 通常動作

IREN（IrDAモードをイネーブル）
1 - IrDA をイネーブル
0 - IrDA をディスエーブル

RPOLC（IrDA RX 極性変更）
1 - シリアル・ラインはアイドル・ハイ
0 - シリアル・ラインはアイドル・ロー

TPOLC（IrDA TX 極性変更）
1 - シリアル・ラインはアイドル・ハイ
0 - シ リア ル・ラ イン は アイ ドル・ロー

図 13-11. UART グローバル・コントロール・レジスタ

非 DMA モード
非 DMAモードでは、UARTはプロセッサ・コアを利用してデータを送／受信します。文字を送信するには、文字を UART_THR にロードします。受信されたデータは、UART_RBR から読み出すことができます。プロセッサ
は、一度に 1 文字を読出し／書込みする必要があります。
データの欠落やシリアル・データストリームの位置合わせ不良を防ぐた
め、UART ライン・ステータス・レジスタ（UART_LSR）は、THRE と DR というハンドシェイキング用の 2つのステータス・フラグを提供します。

13-16

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

UART ポート・コントローラ

THRE フラグは、UART_THR で新しいデータの準備ができたときにセットされ、プロセッサが UART_THR に新しいデータをロードしたときにクリアされます。空でない UART_THR に書込みを行うと、レジスタは新しい値で上書きされ、以前の文字は送信されません。
DR フラグは、UART_RBR で新しいデータが使用可能であることを通知します。プロセッサが UART_RBR から読み出すと、このフラグは自動的にクリアされます。満杯でない UART_RBR に読出しを行うと、これまでに受信された値が返されます。UART_RBR が正しいタイミングで読み出されない場合には、新しく受信されたデータが UART_RBR を上書きし、オーバーラン（OE）
フラグがセットされます。

割込みをディスエーブルにした状態でこれらのステータス・フラグをポーリングすれば、データの転送準備完了を判断できます。なお、ポーリング
はプロセッサに負荷をかけるため、一般にリアルタイムの信号処理環境では使用されません。ソフトウェアは UARTクロックをイネーブルにする前に、UART_THR レジスタに2つまでのワードを書き込むことができます。
UCEN
ビットがセットされるとすぐに、この 2つのワードが送信されます。
あるいは、割込みサービス・ルーチン（ISR）によって、UART の書込み
／読出しを行うこともできます。UART TX、UART RX、UART エラー用に、別個の割込みラインが提供されています。独立した割込みは、UART_IER
レジスタによって個々にイネーブルにできます。
ISR はUART 割込み識別レジスタ（UART_IIR）内のステータス・ビット・フィールドを評価して、信号割込みソースを判断できます。複数のソースが信号を出している場合には、優先順位の最も高いソースがステータス・フィールドに表示されます。割込みは、プロセッサの割込みコントローラ
によって割り当てられ、マスク解除される必要があります。ISRは、割込
みラッチを明示的にクリアする必要があります。13-12 ページの図 13-8 を参照してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

13-17

DMA モード

DMA モード
このモードでは、UART とメモリとの間のデータ転送は、受信（RX）と送信（TX）の別個の DMAチャンネルによって行われます。ソフトウェア
はデータを転送する必要がなく、ディスクリプタ・メカニズムまたは自動
バッファ・モードを通じて適切な転送を設定するだけですみます。
UART DMA チャンネルでは新たなバッファリングは提供されないため、遅延条件は非 DMA モードの場合と同じです。しかし、この遅延は、プロセッサ負荷や割込み優先順位によってではなく、バス・アクティビティと調停メカニズムによって決定されます。詳細については、第 9 章「ダイレクト・メモリ・アクセス」を参照してください。
保留中の割込みのラッチされた要求をクリアするには、DMA 割込みルー
チンは対応する DMA IRQ ステータス・レジスタに明示的に1 を書き込む必要があります。
UART の DMA をイネーブルにするには、まずシステム DMA コントロー
ル・レジスタを設定してから、UART_IER レジスタで UART の ERBFI 割込み
や ETBEI 割込みをイネーブルにします。これは、割込み要求ラインはDMA
要求ラインの代わりになるためです。これらの要求の受信と同時に、DMAがイネーブルにされているかどうかに応じて、DMA 制御ユニットはダイ
レクト・メモリ・アクセスを生成するか、UART割込みをシステム割込み
処理ユニットに渡します。しかし、UART のエラー割込みはDMA ユニットを完全にバイパスして、システム割込み処理ユニットに直接移されます。
UART の DMA では、8ビット動作をサポートします。

13-18

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

UART ポート・コントローラ

ミキシング・モード
非 DMAモードと DMAモードでは、異なる同期メカニズムを使用します。
したがって、非 DMA モードと DMA モードを切り替えるには、その前に、すべてのシリアル通信を完了する必要があります。つまり、非 DMA伝送
から DMA 伝送に切り替える前に、UART_LSR のステータス・ビット THRE とTEMT をテストして、UART_THR と内部送信シフト・レジスタ（TSR）の両方が空であることを確認してください。空でない場合には、プロセッサは、
適切な UART 送信 DMA 設定レジスタ（UART_CONFIG_TX）内の2 ビットのDMA バッファ・ステータス・フィールドがクリアされるまで待機する必要があります。
DMA 動作から非 DMA 動作に切り替える場合には、受信（RX）と送信（TX）の DMA チャンネルがDMA FIFO に含まれるデータも含めて、それらのデータを完全に転送していることを確認します。DMA RX割込みは、
最後のデータ・ワードがメモリに書き込まれた（そして DMA FIFO を離れた）ことを示します。一方、DMA TX 割込みは、最後のデータ・ワード
がメモリを離れた（そして DMA FIFO に入った）ことを示します。プロ
セッサは DMA チャンネルをディスエーブルにする前に、TX チャンネルの
IRQ_STATUS レジスタの DMA_RUN ステータス・ビットがクリアされていることをテストして、TX FIFO が空になるまで待機する必要があります。

IrDA サポート
標準の UART 機能は別として、UART は赤外線通信協会（IrDA）の勧告に基づいて、赤外線信号による半二重シリアル・データ通信にも対応します。IrDA SIR（9.6/115.2 Kbps レート）と呼ばれる物理レイヤは、RZI（return-to-zero-inverted）変調をベースにしています。パルス位置変調は提供していません。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

13-19

IrDA サポート

RZI 変調は 16xのデータレート・クロックを使用し、通常はUART によって送信される NRZ（non-return-to-zero）コードを反転および変調して実現されます。受信側では、16xクロックを使用して、IrDAのパルス・サン
プル・ウィンドウを決定します。このウィンドウから、RZI 変調された
NRZ コードが再生されます。
IrDA のサポートをイネーブルにするには、UARTグローバル・コントロー
ル・レジスタの IREN ビットをセットします。IrDA アプリケーションは、
外付けトランシーバを必要とします。

■ IrDA トランスミッタの説明
UART によって送信される IrDA パルスを生成するには、まずトランス
ミッタの通常の NRZ 出力が反転されます。これにより、0 は 16 UART ク
ロック周期のハイ・パルスとして送信され、1は 16 UARTクロック周期のロー・パルスとして送信されます。その後、パルスの前縁は 6 UART ク
ロック周期だけ遅延します。同様に、パルスの後縁は 8 UART クロック周
期だけ切り捨てられます。このため、元の 0 の最終表現は、16 サイクル
UART クロック周期内のわずか 3/16クロック周期のハイ・パルスとなります。図 13-12に示すように、このパルスはビット時間の中央を中心にしています。最終の IrDA パルスは、オフチップ赤外線ドライバに供給されま
す。

0

1

0

NRZ

෻ォ
7/16

7/16

9/16

9/16

ᦨ⚳ߩ
IrDA
8/16

16/16

16/16

8/16

図 13-12.IrDA の送信パルス

13-20

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

UART ポート・コントローラ

この変調方式は、16の UARTクロック・サイクルのうち3サイクルのハイ
レベル UARTからパルス幅出力が保証されます。
13-14 ページの表 13-1 に示すように、ボーレート・ジェネレータに付随する誤差項は非常に小さく、多くの赤外線トランシーバ仕様の許容誤差内に十分収まります。

■ IrDA レシーバの説明
IrDA のレシーバ機能は、送信機能よりも複雑です。レシーバは、IrDA パ
ルスを識別してノイズを除去しなければなりません。そのためにレシーバ
は、予想されるパルスの中央を中心とする狭いウィンドウで IrDA パルス
を探します。
グリッチ・フィルタ処理を実現するには、最初のパルスが現れてから 16のシステム・クロックをカウントします。カウンタが切れたときにパルスが存在しない場合には、それはグリッチと見なされます。そうでない場
合、それは 0と解釈されます。このように判断する理由は、オンチップ容量クロスカップリングに起因するグリッチは、一般にシステム・クロック
周期の何分の 1も持続しないからです。チップの外部にありトランスミッ
タの一部ではないソースは、適切な遮蔽によって回避できます。この他の唯一のグリッチのソースは、トランスミッタ自身です。プロセッサが仕様を満たすかどうかは、トランスミッタに依存します。トランスミッタが仕様を外れる場合には、予測できない結果が発生することがあります。4ビット・カウンタは、最小のコストで保護レベルを向上させます。なお、シス
テム・クロックはシステムによって変化することがあるため、許容される最長のグリッチは、システム・クロック周波数に逆比例します。
受信サンプリング・ウィンドウは、16xビットタイム・サンプル・クロッ
クでクロック駆動されるカウンタによって決まります。サンプリング・ウィンドウは、スタート・ビットを中心にしてサンプリング・ウィンドウを置くことによって、各スタート・ビットに再同期されます。
受信データの極性は、IRPOL ビットを使用して選択できます。図 13-13 は、各極性タイプの例を示します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

13-21

IrDA サポート

• IRPOL ＝ 0 では、受信データ入力はアイドル 0 であり、各アクティ
ブ 1遷移は UART NRZ値 0に対応すると想定します。
• IRPOL ＝ 1 では、受信データ入力はアイドル 1 であり、各アクティ
ブ 0遷移は UART NRZ値 0に対応すると想定します。

0

1

0

1

IrDAࡄ࡞ࠬ
IR POL㧩1ࠍฃା

IrDAࡄ࡞ࠬ
IR POL㧩0ࠍ
ฃା

8/16

16/16

8/16

16/16

ࠨࡦࡊ࡝ࡦࠣ࡮
࠙ࠖࡦ࠼࠙

ࡄ࡞ࠬᬌ಴
߹ߚߪ಴ജ

ౣ↢ߐࠇߚ
NRZ౉ജ

0

1

図 13-13.IrDA レシーバのパルス検出

13-22

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

第14章 プログラマブル・フラグ

このプロセッサは、16本の双方向プログラマブル・フラグ（PFx）、つまり汎用 I/O ピン PF[15:0] を提供します。各ピンは、フラグ方向レジスタ（FIO_DIR）を使用して、入力または出力として個々に設定できます。出力として設定されると、フラグ・データ・レジスタ（FIO_FLAG_D）に直接書き込むことで、すべての PFx ピンの状態を指定できます。出力として設定されると、フラグ・セット（FIO_FLAG_S）、フラグ・クリア（FIO_FLAG_C）、
フラグ・トグル（FIO_FLAG_T）の各レジスタに書き込まれた状態によって、出力 PFx ピンによって駆動される状態が決まります。ピンの入出力設
定 と は 無 関 係 に、レ ジ ス タ（FIO_FLAG_D、FIO_FLAG_S、FIO_FLAG_C、
FIO_FLAG_T）の読出しによって各ピンの状態が返されます。
各 PFx ピンは、割込みを生成するように設定できます。PFx ピンが入力として設定されると、ピンの状態（ハイまたはロー）、エッジ遷移（ローからハイまたはハイからロー）、または両方のエッジ遷移（ローからハイとハイからロー）に基づいて、割込みを生成できます。入力センシティビ
ティは、フラグ極性レジスタ（FIO_POLAR）、フラグ割込みセンシティビ
ティ・レジスタ（FIO_EDGE）、フラグ・セット・オン・ボス・エッジ・レジスタ（FIO_BOTH）によってビット単位で定義されます。入力極性は、フラグ極性レジスタによってビット単位で定義されます。PFx 入力がイネーブルにされ、PFx ピンが出力として設定されると、ピンの割込みをイネー
ブルにすれば、PFx ピンの設定によって割込みを生成できます。
プロセッサは、PFx ピンに2つの独立した割込みチャンネルを提供します。
これらは、割込み A および割込みB と呼ばれますが、機能は同じです。各
割 込 み チ ャ ン ネ ル に は、フ ラ グ 割 込 み マ ス ク・デ ー タ・レ ジ ス タ（FIO_MASKx_D）、フラグ割込みマスク・セット・レジスタ（FIO_MASKx_S）、

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

14-1

フラグ割込みマスク・クリア・レジスタ（FIO_MASKx_C）、フラグ割込みマ
スク・トグル・レジスタ（FIO_MASKx_T）という、4 本のマスク・レジス
タが関係付けられています。
各 PFx ピンは、これら8 本のレジスタのそれぞれのビットによって表されます。マスク・セット・レジスタのビットに 1 を書き込むと、その PFx ピ
ンに対する割込み生成がイネーブルにされます。一方、マスク・クリア・
レジスタのビットに 1 を書き込むと、その PFx ピンに対する割込み生成がディスエーブルにされます。
割込みマスクをトグルするには、マスク・トグル・レジスタのビットに 1を書き込みます。さらに、マスク・ビットを直接設定するには、マスク・
データ・レジスタに書き込みます。この柔軟なメカニズムによって、各ビットはフラグ割込み A を生成したり、フラグ割込みBを生成したり、フラグ割込み A と Bの両方を生成したり、いずれも生成しないことができます。
PF ピンがシステムで使用されない場合、入力バッファをディスエーブルにして、未使用ピンでは外部プルアップもプルダウンも不要にできます。デ
フォルトでは、入力バッファはディスエーブルにされます。入力バッファ
をイネーブルにするには、フラグ入力イネーブル・レジスタ（FIO_INEN）のビットを使用します。
PFx ピンは、パラレル・ペリフェラル・インターフェース（PPI）、タイマ、

シリアル・ペリフェラル・インターフェース（SPI）によって多重使用されます。表 14-1 は、プログラマブル・フラグ・ピンとその多重化された機能を示します。

14-2

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラマブル・フラグ

表 14-1.

プログラマブル・フラグ・ピンと機能PF ピンを共有するペリフェラル

PF ピン

PPI

SPI

0

スレーブ・セレクト入力(SPISS)1

スレーブ・セレクト・
イネーブル 1 (SPISEL1)

2

スレーブ・セレクト・
イネーブル 2 (SPISEL2)

3

フレーム同期 3

スレーブ・セレクト・
イネーブル 3 (SPISEL3)

4

I/O #15

スレーブ・セレクト・
イネーブル 4 (SPISEL4)

5

I/O #14

スレーブ・セレクト・
イネーブル 5 (SPISEL5)

6

I/O #13

スレーブ・セレクト・
イネーブル 6 (SPISEL6)

7

I/O #12

スレーブ・セレクト・
イネーブル 7 (SPISEL7)

8

I/O #11

9

I/O #10

10

I/O #911

I/O #812

I/O #7

13

I/O #6

14

I/O #515

I/O #4

タイマ 0、1、2

入力クロックADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

14-3

表 14-2 は、PF ピンを共有するペリフェラル機能の使い方について説明します。
表 14-2.

PF ピンを共有するペリフェラル機能の使い方

PF ピン

PF ピンを共有するペリフェラル機能の使い方（ペリフェラルはイネーブルにされていると想定）
PPI

14-4

SPI

0

SPI_CTL の PSSE に「1」を書き込む

1

SPI_FLG の FLS1 に「1」を書き込む

2

SPI_FLG の FLS2 に「1」を書き込む

3

PPI_CTLのPORT_CFGに「01」 SPI_FLG の FLS3 に「1」をを書き込む（PORT_DIR ＝‘1’ 書き込むの場合）
か、
PORT_CFG に「10」を書き込む（PORT_DIR ＝‘0’の場合）

4

PPI_CTL の DLEN に「111」 SPI_FLG の FLS4 に「1」を
を書き込む
書き込む

5

PPI_CTL の DLEN に「110」 SPI_FLG の FLS5 に「1」を
を書き込む
書き込む

6

PPI_CTL の DLEN に「101」 SPI_FLG の FLS6 に「1」を
を書き込む
書き込む

7

PPI_CTL の DLEN に「100」 SPI_FLG の FLS7 に「1」を
を書き込む
書き込む

8

PPI_CTL の DLEN に「011」
を書き込む

9

PPI_CTL の DLEN に「010」
を書き込む

10

PPI_CTL の DLEN に「001」を書き込む

タイマ 0、1、2

TIMERx_CONFIGの CLK_SEL に「1」を書き込む

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラマブル・フラグ

表 14-2.

PF ピンを共有するペリフェラル機能の使い方

PF ピン

PF ピンを共有するペリフェラル機能の使い方（ペリフェラルはイネーブルにされていると想定）
PPI

11

PPI_CTL の DLEN に「001」
を書き込む

12

PPI がイネーブルの場合、常に
イネーブル

13

PPI がイネーブルの場合、常に
イネーブル

14

PPI がイネーブルの場合、常に
イネーブル

15

PPI がイネーブルの場合、常に
イネーブル

SPI

タイマ 0、1、2

詳細については、第 11 章「パラレル・ペリフェラル・インターフェース」、第 10 章「SPI 互換ポート・コントローラ」、第 15 章「タイマ」を参照してください。

プログラマブル・フラグ・レジスタ（MMR）
プログラマブル・フラグ・レジスタは、システムのメモリマップド・レジ
スタ（MMR）の一部です。プログラマブル・フラグ MMR のアドレスを
付録 B に示します。フラグ設定レジスタへのコア・アクセスには、システ
ム・バスを利用します。

■ FIO_DIR レジスタ
フラグ方向レジスタ（FIO_DIR）は読出し／書込みレジスタです。各ビットの位置は、PFx ピンに対応します。ロジック 1では、PFx ピンは出力として設定され、FIO_FLAG_D レジスタに格納された状態が駆動されます。ロ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

14-5

プログラマブル・フラグ・レジスタ（MMR）

ジック 0では、PFx ピンは入力として設定されます。このレジスタのリセッ
ト値は 0x0000 であり、リセットと同時に、すべての PF ピンは入力になります。

L

なお、PFx ピンを入力として使用する場合、フラグ入力イネーブル・
レジスタで対応するビットもセットしてください。

フラグ方向レジスタ（FIO_DIR）
すべてのビットで、0 ＝入力、1 ＝出力
0xFFC0 0730

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

PF15 の方向

PF0の方向PF14 の方向

PF1の方向PF13 の方向

PF2の方向PF12 の方向

PF3の方向PF11 の方向

PF4の方向PF10 の方向

PF5の方向PF9 の方向

PF6の方向PF8 の方向

PF7の方向図 14-1. フラグ方向レジスタ■ フラグ値レジスタの概要
プロセッサには、4本のフラグ値レジスタがあります。
• フラグ・データ・レジスタ（FIO_FLAG_D）• フラグ・セット・レジスタ（FIO_FLAG_S）• フラグ・クリア・レジスタ（FIO_FLAG_C）• フラグ・トグル・ダイレクト・レジスタ (FIO_FLAG_T）

14-6

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラマブル・フラグ

これらのレジスタは、以下の目的で使用されます。
• 入力として定義された PFx ピンの値を感知• 出力として定義された PFx ピンの状態を指定• PFx ピンによって生成された割込みをクリア
各 PFx ピンは、4本のレジスタのそれぞれのビットによって表されます。
フラグ・データ、フラグ・セット、フラグ・クリア、またはフラグ・トグ
ルのいずれかのレジスタを読み出すと、PFx ピンの値が返されます。返された値は、各ピンの極性とセンシティビティの設定に基づいて、出力として定義された PFx ピンの状態と、入力として定義された PFx ピンのセンスを示します。
リセット後のフラグ・データ、フラグ・セット、フラグ・クリア、または
フラグ・トグルの各レジスタを読み出すと、0x0000 が得られます。これ
らのピンは入力ですが、入力バッファはイネーブルにされていないためです。FIO_POLAR、FIO_EDGE、FIO_BOTH レジスタの設定に基づいて、これらのレジスタから読み出した値を解釈する方法については、表 14-3 のガイ
ダンスを参照してください。

L

エッジ・センシティブとして設定されたピンの場合、これらのレジ
スタの 1つからの値“1” の読出しはスティッキーです。つまり、いったんセットされると、ユーザ・コードによってクリアされるまでセットされたままです。レベル・センシティブ・ピンの場合、ピン状態はすべてのサイクルでチェックされるため、ピンでの元のレベルが変化すると読出し値も変化します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

14-7

プログラマブル・フラグ・レジスタ（MMR）

表 14-3.

フラグ値レジスタのピン解釈

FIO_POLARFIO_EDGE

FIO_BOTH

MMR 設定の効果

00X

ハイのピンは 1 として読み出され、ローのピンは 0 として読み出されます。

0

1

0

立上がりエッジが発生した場合、ピンは1 として読み出され、そうでない場合、ピンは 0 として読み出されます。

1

0

X

ローのピンは 1 として読み出され、ハイのピンは 0 として読み出されます。

1

1

0

立下がりエッジが発生した場合、ピンは1 として読み出され、そうでない場合、ピンは 0 として読み出されます。

X

1

1

何らかのエッジが発生した場合、ピンは1 として読み出され、そうでない場合、ピンは 0 として読み出されます。

フラグ・セット、フラグ・クリア、フラグ・トグルの各レジスタの詳細については、
14-9ページの「FIO_FLAG_S、FIO_FLAG_C、およびFIO_FLAG_T
レジスタ」を参照してください。

14-8

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラマブル・フラグ■ FIO_FLAG_D レジスタ
図 14-2 に示すフラグ・データ・レジスタ（FIO_FLAG_D）が書き込まれると、すべての PFx ピンの状態を直接指定します。このレジスタが読み出されると、PFx ピンの値を返します。
フラグ・データ・レジスタ（FIO_FLAG_D）
1 ＝セット、0 ＝クリア
0xFFC0 0700

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

PF15をプログラム

PF0をプログラム

PF14をプログラム

PF1をプログラム

PF13をプログラム

PF2をプログラム

PF12をプログラム

PF3をプログラム

PF11をプログラム

PF4をプログラム

PF10をプログラム

PF5をプログラム

PF9をプログラム

PF6をプログラム

PF8をプログラム

PF7をプログラム

図 14-2. フラグ・データ・レジスタ■ FIO_FLAG_S、FIO_FLAG_C、および FIO_FLAG_T レジスタ
フラグ・セット・レジスタ（FIO_FLAG_S）、フラグ・クリア・レジスタ（FIO_FLAG_C）、フラグ・トグル・レジスタ（FIO_FLAG_T）は、以下の目的で使用されます。
• 各出力 PFx ピンに関係付けられた出力状態をセット、クリア、またはトグルします。
• 各入力 PFx ピンから取り込まれた、ラッチされた割込み状態をクリアします。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

14-9

プログラマブル・フラグ・レジスタ（MMR）

このメカニズムは、これまで行われてきた読出し―修正―書込みメカニズ
ムでの潜在的な問題を回避するために使用されます。これらのレジスタを読み出すと、フラグ・ピン状態が示されます。
図 14-3と図 14-4には、それぞれフラグ・セット・レジスタとフラグ・ク
リア・レジスタを示します。図 14-5 にはフラグ・トグル・レジスタを示します。
フラグ・セット・レジスタ（FIO_FLAG_S）
Write-1-to-set
0xFFC0 0708

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

PF15をセット

PF0 をセットPF14をセット

PF1 をセットPF13をセット

PF2 をセットPF12をセット

PF3 をセット

PF11をセットPF10をセット

PF4 をセットPF9をセットPF6 をセット

PF8をセットPF7 をセット

PF5 をセット

図 14-3. フラグ・セット・レジスタ

14-10

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラマブル・フラグ

フラグ・クリア・レジスタ（FIO_FLAG_C）
Write-1-to-clear
0xFFC0 0704

15 14 13 12 11 10
0 0 0 0 0 0

9
0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

PF15をクリア

PF0をクリア

PF14をクリア

PF1をクリア

PF13をクリア

PF2をクリア

PF12をクリア

PF3をクリア

PF11をクリア

PF4をクリア

PF10をクリア

PF5をクリア

PF9をクリア

PF6をクリア

PF8をクリア

PF7をクリア図 14-4. フラグ・クリア・レジスタ
フラグ・トグル・レジスタ（FIO_FLAG_T）
Write-1-to-toggle
0xFFC0 070C

15 14 13 12 11 10
0 0 0 0 0 0

9
0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

PF15をトグル

PF0をトグル

PF14をトグル

PF1をトグル

PF13をトグル

PF2をトグル

PF12をトグル

PF3をトグル

PF11をトグル

PF4をトグルPF10をトグル

PF5をトグル

PF9をトグル

PF6をトグル

PF8をトグル

PF7をトグル図 14-5. フラグ・トグル・レジスタ
これらのレジスタの動作を示す一例として、PF[0] は出力として設定されていると想定します。フラグ・セット・レジスタに 0x0001 を書き込むと、他の PFx ピンの状態に影響を与えることなく、PF[0] ピンでロジック 1が駆動されます。フラグ・クリア・レジスタに 0x0001を書き込むと、他の PFx
ピンの状態に影響を与えることなく、PF[0] ピンでロジック0 が駆動され

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

14-11

プログラマブル・フラグ・レジスタ（MMR）

ます。フラグ・トグル・レジスタに 0x0001 を書き込むと、PF[0] でのピン状態は、既存のピン状態に応じて、ロジック 0 からロジック 1、またはロジック 1からロジック0に変化します。

L

フラグ・セット、フラグ・クリア、またはフラグ・トグルの各レジ
スタに 0を書き込んでも、フラグ・ピンの値には影響がありません。
したがって、無視されます。

フラグ・セット・レジスタまたはフラグ・クリア・レジスタを読み出すと、以下の値が示されます。
• 出力として定義されローに駆動された PFx ピンでは 0• 出力として定義されハイに駆動された（上の例の PF[0] を含む）ピンでは 1• 入力として定義された PFx ピンの現在のセンス
入力センスは、FIO_POLAR と FIO_EDGE の設定だけではなく、各ピンでのロ
ジック・レベルにも基づいています。

■ FIO_MASKA_D、FIO_MASKA_C、FIO_MASKA_S、
FIO_MASKA_T、FIO_MASKB_D、FIO_MASKB_C、
FIO_MASKB_S、FIO_MASKB_T レジスタ
フラグ・マスク割込みレジスタ（FIO_MASKA_D、FIO_MASKA_C、FIO_MASKA_S、
FIO_MASKA_T、FIO_MASKB_D、FIO_MASKB_C、FIO_MASKB_S、FIO_MASKB_T）は、
write-1-to-set、write-1-to-clear、write-1-to-toggle の各レジスタの相補ペアとして実装されています。この実装によって、読出し―修正―書込みア
クセス（つまり、データ・レジスタによるマスク値の直接指定）を必要とすることなく、PFx ピンのプロセッサ割込み機能をイネーブル／ディス
エーブルにできます。

14-12

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラマブル・フラグ

次に示す 4 本の専用レジスタでは、フラグ割込みA とフラグ割込み B の両方がサポートされます。
• フラグ・マスク割込みデータ・レジスタ• フラグ・マスク割込みセット・レジスタ• フラグ・マスク割込みクリア・レジスタ• フラグ割込みトグル・レジスタ
フラグ割込み Aをサポートするレジスタの図については、14-16 ページの「FIO_MASKA_D、FIO_MASKA_C、FIO_MASKA_S、FIO_MASKA_T
レジスタ」を参照してください。
フラグ割込み Bをサポートするレジスタの図については、14-18 ページの「FIO_MASKB_D、FIO_MASKB_C、FIO_MASKB_S、FIO_MASKB_T
レジスタ」を参照してください。
各 PFx ピンは、8 本のレジスタのそれぞれのビットによって表されます。
表 14-4 は、マスク・セット、マスク・クリア、マスク・トグルの各レジ
スタのビットに 1を書き込むことの効果を示します。
表 14-4.

ビットに 1 を書き込むことの効果

レジスタ

レジスタのビットに 1 を書き込むことの効果

マスク・セット

その PFx ピンに対する割込み生成をイネーブル

マスク・クリア

その PFx ピンに対する割込み生成をディスエーブル

マスク・トグル

割込み生成機能の状態を変更[A&B] のマスク・データ、セット、クリア、またはトグルの各レジスタを読み出すと、現在のマスク [A&B]データの値が返されます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

14-13

プログラマブル・フラグ・レジスタ（MMR）

割込み Aと割込み B は独立して動作します。たとえば、フラグ・マスク割
込み A セット・レジスタのビットに1 を書き込んでも、フラグ割込み B には影響を与えません。この機能によって、PFx ピンはフラグ割込み A を生成したり、フラグ割込み B を生成したり、フラグ割込みA とB の両方を生成したり、いずれも生成しないことが可能になります。

L

なお、フラグ割込みは、その割込みに対するマスク解除されたすべての PF ピンの論理和によって生成されます。たとえば、フラグ割込みAに対して PF[0] と PF[1] の両方がマスク解除されている場合、
PF[0] または PF[1] によってトリガされると、フラグ割込み A が生成されます。

L

立上がりエッジまたは立下がりエッジでトリガされる割込みを使用 す る 場 合、対 応 す る 割 込 み が 処 理 さ れ る た び に、適 切 な
FIO_FLAG_C ビットに1 を書き込むことによって割込み条件をクリアする必要があります。

リセット時に、すべての割込みはマスクされます。
X フラグ割込みの生成フロー

図 14-6は、フラグ割込み A またはフラグ割込みB のイベントを生成できるプロセスを示します。なお、このフローは、ただ 1 つのプログラマブル・
フラグ「FlagN」に対するものです。しかし、フラグ割込みは、その割込みに対してマスク解除されたすべての PFx ピンの論理和によって生成されます。たとえば、フラグ割込み A に対して PF[0] と PF[1] だけがマスク解除されている場合、この割込みは PF[0] または PF[1] によってトリガされたときに生成されます。

14-14

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラマブル・フラグ

㐿ᆎ),2B0$6.$B6ߣ
),2B0$6.$B&ߢ‫ޔ‬)ODJ1ߩഀㄟߺ↢ᚑߪࠗࡀ࡯ࡉ࡞߆㧫),2B0$6.%B6ߣ
),2B0$6.%B&ߢ‫ޔ‬)ODJ1ߩഀㄟߺ↢ᚑߪࠗࡀ࡯ࡉ࡞߆㧫ߪ޿

),2B',5ߢ‫ޔ‬)ODJ1ߪ಴ജߣߒߡ
⸳ቯߐࠇߡ
޿ࠆ߆㧫

ߪ޿

޿޿߃
㧔౉ജ㧕

),2B('*(‫ޔ‬),2B32/$5‫ޔ‬),2B%27+ߩ⸳ቯߦၮߠ޿ߡ‫ޔ‬)ODJ1ߪഀㄟߺ᧦ઙࠍ
↢ᚑߒߡ޿ࠆ߆㧫ߪ޿

),2B',5ߢ‫ޔ‬)ODJ1ߪ಴ജߣߒߡ
⸳ቯߐࠇߡ
޿ࠆ߆㧫

޿޿߃
㧔౉ജ㧕

),2B('*(‫ޔ‬),2B32/$5‫ޔ‬),2B%27+ߩ⸳ቯߦၮߠ޿ߡ‫ޔ‬)ODJ1ߪഀㄟߺ᧦ઙࠍ
↢ᚑߒߡ޿ࠆ߆㧫ߪ޿ߪ޿)ODJ1ߪ
ࡂࠗߦࠕࠨ࡯࠻
ߐࠇߡ޿ࠆ߆㧫ߪ޿ࡈ࡜ࠣഀㄟߺ$߇⊒↢ߪ޿)ODJ1ߪ
ࡂࠗߦࠕࠨ࡯࠻
ߐࠇߡ޿ࠆ߆㧫ߪ޿ࡈ࡜ࠣഀㄟߺ%߇⊒↢

図 14-6. フラグ割込みの生成フロー

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

14-15

プログラマブル・フラグ・レジスタ（MMR）

X FIO_MASKA_D、FIO_MASKA_C、FIO_MASKA_S、

FIO_MASKA_T レジスタ
次の 4 本のレジスタはフラグ割込み A に対応します。詳細については、
14-12 ページを参照してください。
フラグ・マスク割込み A データ・レジスタ（FIO_MASKA_D）
すべてのビットで、1 ＝イネーブル
0xFFC0 0710

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

PF15 割込みマスクを
イネーブル
PF14 割込みマスクを
イネーブル
PF13 割込みマスクをイネーブル

00

リセット＝ 0x0000

PF0割込みマスクをイネーブル
PF1 割込みマスクをイネーブル
PF2 割込みマスクをイネーブル

PF12 割込みマスクをイネーブル

PF3 割込みマスクをイネーブル

PF11 割込みマスクをイネーブル

PF4 割込みマスクをイネーブル

PF10 割込みマスクをイネーブル

PF5 割込みマスクをイネーブル

PF9 割込みマスクをイネーブル

PF6 割込みマスクをイネーブル

PF8 割込みマスクをイネーブル

PF7 割込みマスクをイネーブル

図 14-7. フラグ・マスク割込み A データ・レジスタ
フラグ・マスク割込み A セット・レジスタ（FIO_MASKA_S）
すべてのビットで、1 ＝セット
0xFFC0 0718

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

PF15割込みマスクをセット

PF0割込みマスクをセット

PF14割込みマスクをセット

PF1割込みマスクをセット

PF13割込みマスクをセット

PF2割込みマスクをセット

PF12割込みマスクをセット

PF3割込みマスクをセット

PF11割込みマスクをセット

PF4割込みマスクをセット

PF10割込みマスクをセット

PF5割込みマスクをセット

PF9割込みマスクをセット

PF6割込みマスクをセット

PF8割込みマスクをセット

PF7割込みマスクをセット

図 14-8. フラグ・マスク割込み A セット・レジスタ

14-16

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラマブル・フラグ

フラグ・マスク割込み A クリア・レジスタ（FIO_MASKA_C）
すべてのビットで、1 ＝クリア
15 14 13 12 11 10 9
0 0 0 0 0 0 0

0xFFC0 0714

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

PF15割込みマスクをクリア

PF0割込みマスクをクリア

PF14割込みマスクをクリア

PF1割込みマスクをクリア

PF13割込みマスクをクリア

PF2割込みマスクをクリア

PF12割込みマスクをクリア

PF3割込みマスクをクリア

PF11割込みマスクをクリア

PF4割込みマスクをクリア

PF10割込みマスクをクリア

PF5割込みマスクをクリア

PF9割込みマスクをクリア

PF6割込みマスクをクリア

PF8割込みマスクをクリア

PF6割込みマスクをクリア

図 14-9. フラグ・マスク割込み A クリア・レジスタ
フラグ・マスク割込み A トグル・レジスタ（FIO_MASKA_T）
すべてのビットで、1 ＝トグル

0xFFC0 071C

15 14 13 12 11 10
0 0 0 0 0 0

9
0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

PF15 割込み
マスクをトグルPF14 割込み
マスクをトグル

PF0割込みマスクをトグル

PF13 割込みマスクをトグル

PF2割込みマスクをトグル

PF12 割込みマスクをトグル

PF3割込みマスクをトグル

PF11 割込みマスクをトグル

PF4割込みマスクをトグル

PF10 割込みマスクをトグル

PF5割込みマスクをトグル

PF9 割込みマスクをトグル

PF6割込みマスクをトグル

PF8 割込みマスクをトグル

PF7割込みマスクをトグル

PF1割込みマスクをトグル

図 14-10.フラグ・マスク割込み A トグル・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

14-17

プログラマブル・フラグ・レジスタ（MMR）

X FIO_MASKB_D、FIO_MASKB_C、FIO_MASKB_S、

FIO_MASKB_T レジスタ
次の 4 本のレジスタはフラグ割込み B に対応します。詳細については、
14-12 ページを参照してください。
フラグ・マスク割込み B データ・レジスタ（FIO_MASKB_D）
すべてのビットで、1 ＝イネーブル
0xFFC0 0720

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

PF15割込み
マスクをイネーブル
PF14割込みマスクを
イネーブル

PF0割込みマスクをイネーブル

PF13割込みマスクをイネーブル

PF2割込みマスクをイネーブル

PF12割込みマスクをイネーブル

PF3割込みマスクをイネーブル

PF11割込みマスクをイネーブル

PF4割込みマスクをイネーブル

PF10割込みマスクをイネーブル

PF5割込みマスクをイネーブル

PF9割込みマスクをイネーブル

PF6割込みマスクをイネーブル

PF8割込みマスクをイネーブル

PF7割込みマスクをイネーブル

PF1割込みマスクをイネーブル

図 14-11. フラグ・マスク割込み B データ・レジスタ
フラグ・マスク割込み B セット・レジスタ（FIO_MASKB_S）
すべてのビットで、1 ＝セット
0xFFC0 0728

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

PF15割込みマスクをセット

PF0 割込みマスクをセット

PF14割込みマスクをセット

PF1 割込みマスクをセット

PF13割込みマスクをセット

PF2 割込みマスクをセット

PF12割込みマスクをセット

PF3 割込みマスクをセット

PF11割込みマスクをセット

PF4 割込みマスクをセット

PF10割込みマスクをセット

PF5 割込みマスクをセット

PF9割込みマスクをセット

PF6 割込みマスクをセット

PF8割込みマスクをセット

PF7 割込みマスクをセット

図 14-12.フラグ・マスク割込み B セット・レジスタ

14-18

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラマブル・フラグ

フラグ・マスク割込み B クリア・レジスタ（FIO_MASKB_C）
すべてのビットで、1 ＝クリア
15 14 13 12 11 10 9
0 0 0 0 0 0 0

0xFFC0 0724

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

PF15割込みマスクをクリア

PF0割込みマスクをクリア

PF14割込みマスクをクリア

PF1割込みマスクをクリア

PF13割込みマスクをクリア

PF2割込みマスクをクリア

PF12割込みマスクをクリア

PF3割込みマスクをクリア

PF11割込みマスクをクリア

PF4割込みマスクをクリア

PF10割込みマスクをクリア

PF5割込みマスクをクリア

PF9割込みマスクをクリア

PF6割込みマスクをクリア

PF8割込みマスクをクリア

PF7割込みマスクをクリア

図 14-13.フラグ・マスク割込み B クリア・レジスタ
フラグ・マスク割込み B トグル・レジスタ（FIO_MASKB_T）
すべてのビットで、1 ＝トグル

0xFFC0 072C

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

PF15割込み
マスクをトグルPF14割込み
マスクをトグルPF13割込みマスクをトグル

リセット＝ 0x0000

PF0 割込みマスクをトグル
PF1 割込みマスクをトグル
PF2 割込みマスクをトグル

PF12割込みマスクをトグル

PF3 割込みマスクをトグル

PF11割込みマスクをトグル

PF4 割込みマスクをトグル

PF10割込みマスクをトグル

PF5 割込みマスクをトグル

PF9割込みマスクをトグル

PF6 割込みマスクをトグル

PF8割込みマスクをトグル

PF7 割込みマスクをトグル

図 14-14.フラグ・マスク割込み B トグル・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

14-19

プログラマブル・フラグ・レジスタ（MMR）■ FIO_POLAR レジスタ
フラグ極性レジスタ（FIO_POLAR）は、フラグ入力ソースの極性を設定するために使用されます。アクティブ・ハイまたは立上がりエッジを選択す
るには、このレジスタのビットに 0を設定します。アクティブ・ローまたは立下がりエッジを選択するには、このレジスタのビットに 1を設定します。
このレジスタは、出力として定義されている PFx ピンには影響がありません。このレジスタの内容はリセット時にクリアされ、デフォルトでアクティブ・ハイ極性になります。
フラグ極性レジスタ（FIO_POLAR）
すべてのビットで、0 ＝アクティブ・ハイまたは立上がりエッジ、1 ＝アクティブ・ローまたは立下がりエッジ
0xFFC0 0734

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

PF15 極性

PF0極性

PF14 極性

PF1極性

PF13 極性

PF2極性

PF12 極性

PF3極性

PF11 極性

PF4極性

PF10 極性

PF5極性

PF9 極性

PF6極性

PF8 極性

PF7極性

図 14-15.フラグ極性レジスタ

14-20

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラマブル・フラグ■ FIO_EDGE レジスタ
フラグ割込みセンシティビティ・レジスタ（FIO_EDGE）は、各フラグをレベル・センシティブまたはエッジ・センシティブのソースとして設定するために使用されます。エッジ・センシティブ・モードを使用する場合、シ
ステム・クロック・レートによって短いイベントが捕捉されない状況を防ぐためにエッジ検出回路が使用されます。このレジスタは、出力として定義されている PFx ピンには影響を与えません。
このレジスタの内容はリセット時にクリアされ、デフォルトでレベル・センシティブになります。
フラグ割込みセンシティビティ・レジスタ（FIO_EDGE）
すべてのビットで、0 ＝レベル、1 ＝エッジ
0xFFC0 0738

15 14 13 12 11 10
0 0 0 0 0 0

9
0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

PF15のセンシティビティ

PF0 のセンシティビティ

PF14のセンシティビティ

PF1 のセンシティビティ

PF13のセンシティビティ

PF2 のセンシティビティ

PF12のセンシティビティ

PF3 のセンシティビティ

PF11のセンシティビティ

PF4 のセンシティビティ

PF10のセンシティビティ

PF5 のセンシティビティ

PF9のセンシティビティ

PF6 のセンシティビティ

PF8のセンシティビティ

PF7 のセンシティビティ

図 14-16.フラグ割込みセンシティビティ・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

14-21

プログラマブル・フラグ・レジスタ（MMR）■ FIO_BOTH レジスタ
フラグ・セット・オン・ボス・エッジ・レジスタ（FIO_BOTH）は、立上がりエッジと立下がりエッジの両方で、割込み生成をイネーブルにするために使用されます。
フラグ割込みセンシティビティ・レジスタで特定の PFx ピンがエッジ・センシティブに設定された場合、フラグ・セット・オン・ボス・エッジ・レ
ジスタの PFx ピンのビットを「両エッジ」に設定すると、立上がりエッジと立下がりエッジの両方で割込みが生成されるようになります。このレジ
スタは、レベル・センシティブまたは出力として定義されている PFx ピンには影響を与えません。
フラグ・セット・オン・ボス・エッジ・レジスタ（FIO_BOTH）
すべてのビットで、エッジ・センシティブにイネーブルされた場合、0 ＝単エッジ、1 ＝両エッジ
0xFFC0 073C

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

PF15両エッジ

PF0 両エッジ

PF14両エッジ

PF1 両エッジ

PF13両エッジ

PF2 両エッジ

PF12両エッジ

PF3 両エッジ

PF11両エッジ

PF4 両エッジ

PF10両エッジ

PF5 両エッジ

PF9両エッジPF6 両エッジ

PF8両エッジPF7 両エッジ

図 14-17.フラグ・セット・オン・ボス・エッジ・レジスタ

14-22

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

プログラマブル・フラグ■ FIO_INEN レジスタ
フラグ入力イネーブル・レジスタ（FIO_EDGE）は、入力として使用されているフラグ・ピンでの入力バッファをイネーブルにするために使用されます。特定の PFx ピンがシステムで使用されていないとき、入力バッファを
ディスエーブルにしておくと、プルアップやプルダウンの必要がなくなります。デフォルトでは、入力バッファはディスエーブルにされます。

L

なお、PFx ピンが入力として使用されている場合には、フラグ入力
イネーブル・レジスタの対応するビットをセットしておく必要があります。そうでない場合、フラグ・ピンを変更してもプロセッサによって認識されません。

フラグ入力イネーブル・レジスタ（FIO_INEN）
すべてのビットで、0 ＝入力バッファ・ディスエーブル、1 ＝入力バッファ・イネーブル

0xFFC0 0740

15 14 13 12 11 10
0 0 0 0 0 0

9
0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

PF15入力イネーブル

PF0入力イネーブル

PF14入力イネーブル

PF1入力イネーブル

PF13入力イネーブル

PF2入力イネーブル

PF12入力イネーブル

PF3入力イネーブル

PF11入力イネーブル

PF4入力イネーブル

PF10入力イネーブル

PF5入力イネーブル

PF9入力イネーブル

PF6入力イネーブル

PF8入力イネーブル

PF7入力イネーブル

図 14-18.フラグ入力イネーブル・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

14-23

性能／スループット

性能／スループット
PFx ピンは、システム・クロック（SCLK）に同期します。出力として設定された場合、プログラマブル・フラグはシステム・クロック・サイクルごとに 1 回遷移できます。
入力として設定された場合、全体的なシステム設計では、コアとシステ
ム・クロックとの間の潜在的な遅延を考慮してください。PFx ピンの状態を変更すると、3 SCLK サイクルの遅延が経過してからプロセッサによる検出が可能になります。レベル・センシティブの割込み生成に設定された場
合、フラグがアサートされてからそのプログラム・フローが割り込まれるまでに 4 SCLK サイクルの最小遅延があります。エッジ・センシティブの割込み生成に設定された場合、1 SCLK サイクルの遅延が追加されるため、エッジがアサートされてからコア・プログラム・フローが割り込まれるまでに合計で 5 SCLK サイクルの遅延が生じます。

14-24

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

第15章 タイマ

このプロセッサは、3 つの同一の32 ビット汎用タイマ、コア・タイマ、
ウォッチドッグ・タイマを備えています。
汎用タイマは、次の 3つのいずれのモードにも個々に設定できます。
• パルス幅変調（PWM_OUT）モード• パルス幅カウントおよびキャプチャ（WDTH_CAP）モード• 外部イベント（EXT_CLK）モード
コア・タイマは、さまざまなシステム・タイミング機能に合わせて周期割込みを生成できます。
ウォッチドッグ・タイマを使用すれば、ソフトウェア・ウォッチドッグ機
能を実装できます。ソフトウェア・ウォッチドッグは、タイマがソフト
ウェアによって更新される前に切れた場合に、Blackfinプロセッサ・コアへのイベントを生成することでシステムの可用性を高めることができます。

汎用タイマ
各汎用タイマには、TMRx という 1本の専用の双方向ピンがあります。このピンは、PWM_OUT モードでは出力ピンとして機能し、WDTH_CAP モードとEXT_CLK モードでは入力ピンとして機能します。これらの機能を提供する
ため、各タイマには 4 本のレジスタがあります。範囲と精度については、
タイマ・カウンタ（TIMERx_COUNTER）、タイマ周期（TIMERx_PERIOD）、タ
イマ・パルス幅（TIMERx_WIDTH）の各レジスタは 32ビット幅です。図 15-1
を参照してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-1

汎用タイマ

PABࡃࠬ

32

32

๟ᦼࡃ࠶ࡈࠔ
㧔32ࡆ࠶࠻㧕32᏷ࡃ࠶ࡈࠔ㧔32ࡆ࠶࠻㧕

32

32

TIMERx_PERIOD
㧔32ࡆ࠶࠻㧕

TIMERx_WIDTH
㧔32ࡆ࠶࠻㧕

TIMERx_COUNTER
㧔32ࡆ࠶࠻㧕
ಾࠇࠆ

╬ߒ޿㧫

╬ߒ޿㧫

ࠦࡦ࠻ࡠ࡯࡞࡮ ࠦࡦ࠻ࡠ࡯࡞࡮
ࡠࠫ࠶ࠢ
ࡠࠫ࠶ࠢ
32
㧔⺒಴ߒኾ↪㧕図 15-1. タイマ・ブロック図
各汎用タイマ用のレジスタは、次のとおりです。
• タイマ設定（TIMERx_CONFIG）レジスタ• タイマ・カウンタ（TIMERx_COUNTER）レジスタ• タイマ周期（TIMERx_PERIOD）レジスタ• タイマ・パルス幅（TIMERx_WIDTH）レジスタ
内部的にクロック駆動される場合、クロック源はプロセッサのペリフェラ
ル・クロック（SCLK）です。ペリフェラル・クロックは 133MHz で動作してい る と想 定 し た場 合、タイ マ・カウ ン トの 最 大周 期 は（（232 -1）/
133MHz）＝ 32.2 秒です。

15-2

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

タイマ

タイマ・イネーブル（TIMER_ENABLE）レジスタを使用すれば、3つのタイ
マすべてを同時にイネーブルにできます。レジスタには、タイマごとに 1つ、合計で 3 つの「Write-1-to-set」制御ビットが含まれています。同様に、3つのタイマを同時にまたは独立してディスエーブルにできるように、
タイマ・ディスエーブル（TIMER_DISABLE）レジスタには 3 つの「Write1-to-clear」制御ビットが含まれています。タイマ・イネーブル・レジス
タまたはタイマ・ディスエーブル・レジスタをリードバックすれば、タイマのイネーブル・ステータスをチェックできます。1は、対応するタイマがイネーブルにされていることを示します。タイマは、TIMENx ビットがセットされた 3 SCLK サイクル後でカウントを開始します。
タイマ・ステータス（TIMER_STATUS）レジスタには、タイマごとの割込み
ラッチ・ビット（TIMILx）とオーバーフロー／エラー・インジケータ・
ビット（TOVF_ERRx）が含まれています。これらのスティッキー・ビット
はタイマ・ハードウェアによってセットされ、ソフトウェアによってポーリングされることがあります。これらのビットは、ビットに 1を書き込む
ことによって、ソフトウェアで明示的にクリアする必要があります。
タイマの割込みをイネーブルにするには、タイマの設定（TIMERx_CONFIG）
レジスタで IRQ_ENA ビットをセットし、IMASK レジスタと SIC_IMASK レジス
タの対応するビットをセットして、タイマの割込みをマスク解除します。
IRQ_ENA ビットをクリアした状態では、タイマは、そのタイマ割込みラッチ（TIMILx）ビットをセットしません。タイマ割込みを認めることなく
TIMILx ビットをポーリングするため、タイマの割込みがマスクされた状態のままでプログラムは IRQ_ENA ビットをセットできます。
割込みの再発行を防ぐには、割込みをイネーブルにした状態で、割込みサービス・ルーチン（ISR）が RTI 命令の前に TIMILx ラッチをクリアする
ようにします。外部クロック（EXT_CLK）モードの場合、タイマ・イベン
トを確実に捕捉するには、割込みルーチンの先頭でラッチをリセットしてください。タイマ割込みをイネーブルにするには、適切なタイマ設定（TIMERx_CONFIG）レジスタで IRQ_ENA ビットをセットします。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-3タイマ・レジスタ

タイマ・レジスタ
タイマ・ペリフェラル・モジュールは、汎用のタイマ機能を提供します。
このモジュールは、3 つの同一のタイマ・ユニットで構成されます。
各タイマは、4 本のレジスタを提供します。
• TIMERx_CONFIG[15:0]―タイマ設定レジスタ• TIMERx_WIDTH[31:0]―タイマ・パルス幅レジスタ• TIMERx_PERIOD[31:0]―タイマ周期レジスタ• TIMERx_COUNTER[31:0]―タイマ・カウンタ・レジスタ
3 つのタイマでは、3本のレジスタが共有されます。
• TIMER_ENABLE[15:0]―タイマ・イネーブル・レジスタ• TIMER_DISABLE[15:0]―タイマ・ディスエーブル・レジスタ• TIMER_STATUS[15:0]―タイマ・ステータス・レジスタ
アクセスのサイズが強化されます。タイマ設定レジスタへの 32ビット・ア
クセスや、タイマ・パルス幅、タイマ周期、またはタイマ・カウンタ・レ
ジスタへの 16 ビット・アクセスは、メモリマップド・レジスタ（MMR）
エラーにつながります。タイマ・イネーブル、タイマ・ディスエーブル、
タイマ・ステータスの各レジスタには、16 ビットと 32 ビットの両方のア
クセスが可能です。32ビット読出しでは、上位ワードはオール0を返します。

■ TIMER_ENABLE レジスタ
タイマ・イネーブル・レジスタ（TIMER_ENABLE）を使用すれば、3 つのタ
イマすべてを同時にイネーブルにし、完全に同期して実行させることができます。各タイマには、1つの W1S制御ビットがあります。1を書き込む

15-4

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

タイマと、対応するタイマがイネーブルになりますが、0 を書き込んでも効果はありません。3つのビットは、個々にセットしたり、任意の組合わせでセットしたりできます。タイマ・イネーブル・レジスタを読み出すと、対応するタイマのイネーブル・ステータスが示されます。1は、タイマがイネーブルにされていることを示します。未使用ビットを読み出すと 0が返されます。
タイマ・イネーブル・レジスタ（TIMER_ENABLE）

0xFFC0 0640

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1 0
0 0

リセット＝ 0x0000
TIMEN0（タイマ 0イネーブル）
1 - タイマをイネーブル
イネーブルの場合、1 として読み出されるTIMEN1（タイマ 1イネーブル）
1 - タイマをイネーブル
イネーブルの場合、1 として読み出されるTIMEN2（タイマ 2イネーブル）
1 - タイマをイネーブル
イネーブルの場合、1 として読み出される図 15-2. タイマ・イネーブル・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-5タイマ・レジスタ■ TIMER_DISABLE レジスタ
タイマ・ディスエーブル・レジスタ（TIMER_DISABLE）を使用すれば、3つのタイマすべてを同時にディスエーブルにできます。各タイマには、1つの W1C制御ビットがあります。1を書き込むと、対応するタイマがディス
エーブルになります。0 を書き込んでも効果はありません。3 つのビットは、個々にクリアしたり、任意の組合わせでクリアしたりできます。タイ
マ・ディスエーブル・レジスタの読出しでは、タイマ・イネーブル・レジ
スタの読出しと同じ値が返されます。1 は、タイマがイネーブルにされていることを示します。未使用ビットを読み出すと 0が返されます。
タイマ・ディスエーブル・レジスタ（TIMER_DISABLE）

0xFFC0 0644

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1 0
0 0

リセット＝ 0x0000
TIMDIS0（タイマ 0ディスエーブル）
1 - タイマをディスエーブル
このタイマがイネーブルの場合、1として読み出される
TIMDIS1（タイマ 1ディスエーブル）
1 - タイマをディスエーブル
このタイマがイネーブルの場合、1として読み出される
TIMDIS2（タイマ 2ディスエーブル）
1 - タイマをディスエーブル
このタイマがイネーブルの場合、1として読み出される

図 15-3. タイマ・ディスエーブル・レジスタ
PWM_OUT モードでは、TIMER_DISABLE に 1を書き込んでも、対応するタイマ
はすぐには停止しません。むしろ、タイマは動作を継続して、現在の周期（PERIOD_CNT = 1 の場合）またはパルス（PERIOD_CNT = 0 の場合）の最後
できれいに停止します。必要ならば、プロセッサは、まず TIMER_DISABLEの対応するビットに 1 を書き込んでから、TIMER_STATUS の対応する TRUNx
ビットに 1 を書き込むことで、PWM_OUT モードにあるタイマをすぐに停止させることができます。15-23 ページの「PWM_OUT モードでのタイマの停止」を参照してください。

15-6

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

タイマ

WDTH_CAP モードと EXT_CLK モードでは、TIMER_DISABLE に 1を書き込むと、対応するタイマはすぐに停止します。

■ TIMER_STATUS レジスタ
タイマ・ステータス・レジスタ（TIMER_STATUS）は、3つのタイマすべてのステータスを示し、1 回の読出しで3 つのタイマすべてのステータスをチェックするために使用されます。ステータス・ビットは、スティッキー
で W1Cです。TRUNx ビットは、自分自身をクリアすることができ、PWM_OUT
モードのタイマが周期の最後で停止するときにその動作を行います。ス
テータス・レジスタの読出しアクセス時には、すべての予備ビットや未使用ビットは 0 を返します。
各タイマが生成するユニークな割込み要求信号は、TIMERx_CONFIG レジス
タの対応する IRQ_ENA ビットによってゲートされます。共有されるタイマ・ステータス・レジスタ（TIMER_STATUS）はこれらの割込みをラッチするた
め、ユーザはユニークな割込み信号を参照することなく、割込みソースを判断できます（たとえば、3 つのタイマすべてに同じ割込み優先順位が割り当てられた場合）。割込みビットはスティッキーであり、割込みが再発
行されないことを保証するには、割込みサービス・ルーチン（ISR）によってクリアする必要があります。
割込み要求を示すために、TIMILx ビットはタイマ設定レジスタの IRQ_ENA
ビットと連携して機能します。割込み条件またはエラーが発生し、IRQ_ENA
がセットされた場合には、TIMILx ビットがセットされ、コアへの割込みがアサートされます。この割込みは、システム割込みコントローラによってマスクされることがあります。割込み条件またはエラーが発生し、IRQ_ENA
がクリアされた場合には、TIMILx ビットはセットされず、割込みはアサー
トされません。TIMILx がすでにセットされており、IRQ_ENA に0 が書き込まれた場合には、TIMILx はセットされたままであり、割込みはアサートされたままです。15-43 ページの図 15-24 を参照してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-7タイマ・レジスタ

TRUNx ビットの読出し値は、全モードでタイマ・スレーブ・イネーブル・ス

テータスを反映します。つまり、セットされた TRUNx は実行中を示し、クリアされた TRUNx は停止を示します。
TIMER_ENABLE レジスタと TIMER_DISABLE レ
ジスタの TIMENx ビットや TIMDISx ビットの読出し値は、タイマがイネーブ
ルであるかどうかを反映します。一方、TRUNx ビットは、タイマが実際にTIMENx
実行中かどうかを示します。WDTH_CAP モードとEXT_CLK モードでは、と TRUNx からの読出しは常に同じ値を返します。
TIMER_DISABLE レジスタへの W1C 操作は、全モードで対応するタイマを

ディスエーブルにします。PWM_OUT モードでは、ディスエーブルにされた
タイマは現在の周期（PERIOD_CNT = 1）またはパルス（PERIOD_CNT = 0）が完了するまで動作を継続します。この最終周期では、TIMENx ビットは 0を返しますが、TRUNx ビットはまだ1 として読み出されます。15-17 ページの図 15-10 を参照してください。この状態でのみ、TRUNx はW1C ビットになります。タイマをディスエーブルにしたこの最終周期では、TRUNx に 1を書き込むと TRUNx がクリアされ、タイマ・カウンタが現在のサイクルの最後に到達するのを待つことなく、タイマはすぐに停止します。
TRUNx ビットへの書込みは、他のモードでは影響がなく、タイマがイネーブルにされていない場合にも影響がありません。PWM_OUT モードで TRUNx
ビットに 1を書き込んでも、最初にディスエーブルにされなかったタイマには影響がありません。

15-8

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

タイマ

タイマ・ステータス・レジスタ（TIMER_STATUS）

0xFFC0 0648

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

TRUN2（タイマ 2
スレーブ・イネーブル・
ステータス）W1C
1 = PWM_OUT モードではタイマをすぐに停止
TRUN1（タイマ 1 スレーブ・イネーブル・ステータス）W1C
1 = PWM_OUT モードではタイマをすぐに停止
TRUN0（タイマ 0 スレーブ・イネーブル・ステータス）W1C
1 = PWM_OUT モードではタイマをすぐに停止
TOVF_ERR2（タイマ 2カウンタ・
オーバーフロー）W1C
エラーまたはオーバーフローが発生したことを示します
TOVF_ERR1（タイマ 1カウンタ・
オーバーフロー）W1C
エラーまたはオーバーフローが発生したことを示します

4
0

3
0

2
0

1 0
0 0

リセット＝ 0x0000
TIMIL0（タイマ 0割込み）
W1C
IRQ_ENA がセットされているとき、割込み要求を示します
TIMIL1（タイマ 1割込み）
W1C
IRQ_ENA がセットされているとき、割込み要求を示します
TIMIL2（タイマ 2割込み）
W1C
IRQ_ENA がセットされているとき、割込み要求を示します
TOVF_ERR0（タイマ 0カウンタ・
オーバーフロー）W1C
エラーまたはオーバーフ
ローが発生したことを示します

図 15-4. タイマ・ステータス・レジスタ■ TIMERx_CONFIG レジスタ
各タイマの動作モードは、そのタイマ設定レジスタ（TIMERx_CONFIG）によって指定されます。TIMERx_CONFIG レジスタに書込みできるのは、タイマが動作中でないときに限られます。PWM_OUT モードでタイマをディス
エーブルにした後、TIMERx_CONFIG を再プログラムする前に、
TIMER_STATUSの TRUNx ビットをチェックしてタイマが動作を停止したことを確認します。TIMERx_CONFIG レジスタは、いつでも読出しできます。ERR_TYP フィー
ルドは読出し専用です。このフィールドは、リセット時とタイマがイネーブルにされたときにクリアされます。TOVF_ERRx がセットされるたびに、
ERR_TYP[1:0] には検出されたエラーのタイプを識別するコードがロードされます。この値は、次のエラーが発生するかタイマ・イネーブルが発生

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-9タイマ・レジスタするまで保持されます。エラー条件の概要については、15-45 ページの表
15-1 を参照してください。TIMERx_CONFIG レジスタは TMRx ピンの動作も制御します。このピンは、OUT_DIS ビットがクリアされると、PWM_OUT モード（TMODE = 01）で出力になります。
タイマ設定レジスタ（TIMERx_CONFIG）

タイマ 0:
0xFFC0 0600

15 14 13 12 11 10 9
0 0 0 0 0 0 0

80

タイマ 1:
0xFFC0 0610
タイマ 2:
0xFFC0 0620

ERR_TYP[1:0]（エラー・タイプ）- RO
00 - エラーなし
01 - カウンタ・オーバーフロー・エラー
10 - 周期レジスタ・プログラミング・エラー
11 - パルス幅レジスタ・プログラミング・エラー
EMU_RUN（エミュレーション動作選択）
0 - エミュレーション時にタイマ・カウンタは停止
1 - エミュレーション時にタイマ・カウンタは動作
TOGGLE_HI（PWM_OUT PULSE_HI トグル・モード）
0 - PULSE_HI の有効状態はプログラムされた状態です
1 - PULSE_HI の有効状態は各周期で交番します
CLK_SEL（タイマ・クロック選択）
PPI を内部フレーム同期ありの GP 出力モードで動作させるとき、このビットを 1 に設定する必要があります
0 - カウンタにシステム・クロック SCLK を使用
1 - カウンタのクロック駆動に PWM_CLK を使用

7
0

6
0

5
0

4
0

3
0

2
0

1 0
0 0

リセット＝ 0x0000
TMODE[1:0]（タイマ・モード）
00 - リセット状態 - 未使用
01 - PWM_OUT モード
10 - WDTH_CAP モード
11 - EXT_CLK モード
PULSE_HI
0 - 負アクション・パルス
1 - 正アクション・パルス
PERIOD_CNT（周期カウント）
0 - 幅の最後までカウント
1 - 周期の最後までカウント
IRQ_ENA（割込み要求イネーブル）
0 - 割込み要求ディスエーブル
1 - 割込み要求イネーブル
TIN_SEL（タイマ入力選択）
0 - TMRx ピンまたは PF1 ピン
をサンプリング
1 - UART RX ピンまたは
PPI_CLK ピンをサンプリ
ング
OUT_DIS（出力パッド・ディスエーブル）
0 - PWM_OUT モードでパッドをイネーブル
1 - PWM_OUT モードでパッドをディスエーブル

図 15-5. タイマ設定レジスタ

15-10

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

タイマ■ TIMERx_COUNTER レジスタ
これらの読出し専用レジスタは、ディスエーブルにされたときにその状態を保持します。イネーブルにされると、タイマ・カウンタ・レジスタ（TIMERx_COUNTER）は設定とモードに基づいて、ハードウェアによって再び初期化されます。タイマ・カウンタ・レジスタは、タイマが動作中かど
うかとは無関係にいつでも読出しでき、コヒーレントな 32 ビット値を返します。インクリメント・カウンタは動作モードに応じて、SCLK、TMRx ピン、プログラマブル・フラグ・ピン PF1、またはパラレル・ポート・クロッ
ク PPI_CLK という、4つの異なるソースによってクロック駆動できます。
プロセッサ・コアが外部エミュレータ・デバッガによってアクセスされて
い る 間、す べ て の コ ー ド 実 行 は 停 止 し ま す。デ フ ォ ル ト で は、
TIMERx_COUNTER もエミュレーション・アクセス中にはカウントを停止して、ソフトウェアとの同期を維持します。停止中には、カウントは進みません。PWM_OUT モードでは、TMRx ピンの波形が「伸ばされます」。WDTH_CAP
モードでは、測定値は正しくありません。EXT_CLK モードでは、TMRx での入力イベントが捕捉されないこともあります。エミュレーションの停止中には、レジスタの読出し／書込み、以前にアサートされた割込み（クリア
されていない場合）、WDTH_CAP モードでの TIMERx_PERIOD と TIMERx_WIDTHのロードなど、その他すべてのタイマ機能はアクティブのままです。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-11タイマ・レジスタ

アプリケーションによっては、エミュレーションを停止したプロセッサ・コアとは非同期に、タイマにカウントを継続してほしい場合があります。
この動作をイネーブルにするには、TIMERx_CONFIG のEMU_RUN ビットをセットします。
タイマ・カウンタ・レジスタ（TIMERx_COUNTER）
タイマ 0:
0xFFC0 0604

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

タイマ 1:
0xFFC0 0614
タイマ 2:
0xFFC0 0624

リセット＝ 0x0000 0001

タイマ・カウンタ [31:16]
15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
1

タイマ・カウンタ [15:0]

図 15-6. タイマ・カウンタ・レジスタ■ TIMERx_PERIOD レジスタと TIMERx_WIDTH レジスタL

タイマがイネーブルで動作中であり、ソフトウェアがタイマ周期レ
ジスタとタイマ・パルス幅レジスタに新しい値を書き込んだ場合、その書込みはバッファリングされ、現在の周期の最後までレジスタは更新されません（タイマ・カウンタ・レジスタがタイマ周期レジ
スタと等しいとき）。

タ イ マ 周 期 レ ジ ス タ（TIMERx_PERIOD）と タ イ マ・パ ル ス 幅 レ ジ ス タ（TIMERx_WIDTH）の使い方は、タイマのモードによって変化します。
• パルス幅変調モード（PWM_OUT）では、タイマ周期とタイマ・パル
ス幅（デューティ・サイクル）のレジスタ値が同時に変化するため、タイマ周期とタイマ・パルス幅のレジスタ値は「オンザフライ」で更新できます。

15-12

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

タイマ• パルス幅および周期キャプチャ・モード（WDTH_CAP）では、タイマ
周期とタイマ・パルス幅のバッファ値は、適切なタイミングでキャプチャされます。その後、タイマ周期レジスタとタイマ・パルス幅
レジスタは、それぞれのバッファから同時に更新されます。このモードでは、両方のレジスタが読出し専用です。
• 外部イベント・キャプチャ・モード（EXT_CLK）では、タイマ周期
レジスタは書込み可能であり、「オンザフライ」で更新できます。
タイマ・パルス幅レジスタは使用されません。
タイマ周期レジスタやタイマ・パルス幅レジスタに新しい値が書き込まれない場合には、以前の周期からの値が再利用されます。32ビットのタイマ
周期レジスタとタイマ・パルス幅レジスタへの書込みはアトミックです。
上位ワードに書き込むには、下位ワードにも書き込むことが必要です。
タイマ周期レジスタやタイマ・パルス幅レジスタに書き込まれた値は、必ずバッファ・レジスタに格納されます。タイマ周期レジスタやタイマ・パルス幅レジスタからの読出しは、常に周期やパルス幅の現在のアクティブ
値を返します。書き込まれた値は、アクティブになるまでは読み出されません。タイマがイネーブルにされると、現在の周期の最後にタイマ周期レ
ジスタとタイマ・パルス幅レジスタがそれぞれのバッファから更新されるまで、書き込まれた値はアクティブになりません。15-2 ページの図 15-1
を参照してください。
タイマがディスエーブルにされると、バッファ・レジスタへの書込みは、すぐにタイマ周期レジスタやタイマ・パルス幅レジスタにコピーされ、最初のタイマ周期で使用できるよう準備されます。たとえば、タイマがイ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-13タイマ・レジスタ

ネーブルにされた後、最初の 3つのタイマ周期ごとに別の設定値を使用するために、タイマ周期レジスタやタイマ・パルス幅レジスタの値を変更す
るには、次の手順に従ってください。
1. レジスタ値の最初のグループをプログラムします。
2. タイマをイネーブルにします。
3. レジスタ値の 2 番目のグループをすぐにプログラムします。
4. 最初のタイマ割込みを待ちます。
5. レジスタ値の 3 番目のグループをプログラムします。
タイマ割込みが受信されると、それぞれの新しい設定値がプログラムされ
ます。

[

15-14

非常に小さな周期（10 カウント未満）の PWM_OUT モードでは、バッファ・レジスタからの更新と更新の間には、タイマ周期レジスタとタイマ・パルス幅レジスタの両方に書き込む時間が不足することもあります。次の周期では、1 つの古い値と 1 つの新しい値を使用する可能性があります。パルス幅＞＝周期のエラーを防止するには、値を減らすときにタイマ・パルス幅レジスタに書き込んでからタイ
マ周期レジスタに書き込み、値を増やすときにタイマ周期レジスタに書き込んでからタイマ・パルス幅レジスタに書き込んでください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

タイマ

タイマ周期レジスタ（TIMERx_PERIOD）

タイマ 0:
0xFFC0 0608
タイマ 1:
0xFFC0 0618
タイマ 2:
0xFFC0 0628

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

リセット＝ 0x0000 0000

タイマ周期 [31:16]
15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

タイマ周期 [15:0]

図 15-7. タイマ周期レジスタ
タイマ幅レジスタ（TIMERx_WIDTH）
タイマ 0:
0xFFC0 060C
タイマ 1:
0xFFC0 061C
タイマ 2:
0xFFC0 062C

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

リセット＝ 0x0000 0000

タイマ幅 [31:16]
15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

タイマ幅 [15:0]

図 15-8. タイマ幅レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-15

タイマの使い方

タイマの使い方
個々のタイマをイネーブルにするには、TIMER_ENABLE レジスタでそのタイマの TIMEN ビットをセットします。個々のタイマをディスエーブルにするには、TIMER_DISABLE レジスタでそのタイマの TIMDIS ビットをセットします。3つのタイマすべてを同時にイネーブルにするには、TIMER_ENABLE レ
ジスタで 3つの TIMEN ビットをすべてセットします。
タイマをイネーブルにする前に、対応するタイマ設定（TIMERx_CONFIG）
レジスタを必ずプログラムしてください。このレジスタでは、タイマの動作モード、TMRx ピンの極性、タイマ割込み動作を定義します。タイマの実
行中には、動作モードを変更しないでください。
タイマのイネーブル／ディスエーブル・タイミングの例を図 15-9、図15-10、図 15-11 に示します。

15-16

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンスタイマ࠲ࠗࡑ࡮ࠗࡀ࡯ࡉ࡞ߩ࠲ࠗࡒࡦࠣ଀㧔PWM_OUTࡕ࡯࠼‫ޔ‬PERIOD_CNT㧩1㧕SCLK
TIMERx_PERIOD

4

4

4

TIMERx_WIDTH

1

1

1

TIMERx_COUNTER

X

1

2

3

4

1

2

3

TIMENx
TRUNx
TMRx, PULSE_HI = 0
TMRx, PULSE_HI = 1
TIMER_ENABLE߳ߩW1S

図 15-9. タイマ・イネーブルのタイミング࠲ࠗࡑ࡮࠺ࠖࠬࠛ࡯ࡉ࡞ߩ࠲ࠗࡒࡦࠣ଀㧔PWM_OUTࡕ࡯࠼‫ޔ‬PERIOD_CNT㧩1㧕SCLK
TIMERx_PERIOD

7

7

7

TIMERx_WIDTH

5

5

5

TIMERx_COUNTER

7

1

2

3

4

5

6

7

TIMENx
TRUNx
TMRx, PULSE_HI = 0
TMRx, PULSE_HI = 1
TIMER_DISABLE߳ߩW1S

図 15-10.タイマ・ディスエーブルのタイミング

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-17

タイマの使い方࠲ࠗࡑ࡮ࠗࡀ࡯ࡉ࡞ߣ⥄േ࠺ࠖࠬࠛ࡯ࡉ࡞ߩ࠲ࠗࡒࡦࠣ଀
㧔PWM_OUTࡕ࡯࠼‫ޔ‬PERIOD_CNT㧩0㧕SCLK

TIMERx_WIDTHTIMERx_COUNTER

3
X

1

2

3

TIMENx
TRUNx
TMRx, PULSE_HI = 0
TMRx, PULSE_HI = 1

TIMER_ENABLE߳ߩW1S

図 15-11. タイマ・イネーブルと自動ディスエーブルのタイミング
タイマがディスエーブルにされた場合、タイマ・カウンタ・レジスタはその状態を保持します。タイマが再びイネーブルにされた場合、タイマ・カ
ウンタは動作モードに基づいて再び初期化されます。タイマ・カウンタ・レジスタは読出し専用です。ソフトウェアでは、タイマ・カウンタ値を直接に上書きしたりプリセットしたりできません。

■ パルス幅変調（PWM_OUT）モード
タイマ設定（TIMERx_CONFIG）レジスタで TMODE フィールドを b#01に設定
すると、PWM_OUT モードがイネーブルにされます。PWM_OUT モードでは、タイマの TMRx ピンは出力です。この出力をディスエーブルにするには、タイ
マ設定レジスタで OUT_DIS ビットをセットします。

15-18

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

タイマ

PWM_OUT モードでは、ビット PULSE_HI、PERIOD_CNT、IRQ_ENA、OUT_DIS、
CLK_SEL、EMU_RUN、TOGGLE_HI がそれぞれ独立して機能します。これらのビットは、個々にセットしたり、任意に組み合わせてセットしたりできます。し か し、一部 の 組合 わ せは 使 用で き ませ ん（PERIOD_CNT = 0 や
OUT_DIS = 1 での TOGGLE_HI = 1 など）。

࠺࡯࠲࡮ࡃࠬ

TIMERx_PERIODPPI_CL1

PF1

0

PWM_CLK

TIN_SELKSCLK

1TIMERx_WIDTH

ࠢࡠ࠶ࠢ

0

CLK_SELTIMERx_COUNTER

࡝࠮࠶࠻

╬ߒ޿㧫
ߪ޿

╬ߒ޿㧫
TIMER_ENABLE

ߪ޿

ࠕࠨ࡯࠻

PULSE_HITOGGLE_HI
OUT_DIS1ഀㄟߺࠕࠨ࡯࠻⸃㒰PWMOUT
ࡠࠫ࠶ࠢ

TMRx

0

PERIOD_CNT

図 15-12.タイマのフロー図、PWM_OUT モード

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-19

タイマの使い方

タイマがイネーブルにされると、タイマ・カウンタ・レジスタには開始値がロードされます。CLK_SEL = 0 の場合、タイマ・カウンタは0x1 から開始します。CLK_SEL = 1 の場合、EXT_CLK モードのようにタイマ・カウンタ
は 0x0にリセットされます。タイマは、タイマ周期レジスタの値までカウ
ント・アップします。CLK_SEL の設定がどちらであっても、タイマ・カウ
ンタがタイマ周期に等しくなると、タイマ・カウンタは次のクロックで0x1 にリセットされます。
PWM_OUT モードでは、タイマが 1 つのパルスを生成するか多くのパルスを生成するかは、PERIOD_CNT ビットによって制御されます。PERIOD_CNT がクリアされると（PWM_OUT 単一パルス・モード）、タイマは TIMERx_WIDTH レ
ジスタを使用し、1 つのアサート・エッジと 1 つのアサート解除エッジを
生 成 し て か ら、割 込 み を 生 成 し（イ ネ ー ブ ル の 場 合）停 止 し ま す。
PERIOD_CNT がセットされると（PWM_OUT 連続パルス・モード）、タイマは
TIMERx_PERIOD レジスタと TIMERx_WIDTH レジスタを使用して、反復のある（そしておそらく変調された）波形を生成します。タイマは各周期の最後に割込みを生成し（イネーブルの場合）、ディスエーブルにされた後でのみ停 止 しま す。PERIOD_CNT ＝ 0 の 設定 で は幅 の 最後 ま でカ ウ ント し、
PERIOD_CNT ＝ 1 の設定では周期の最後までカウントします。

L

動作モードによっては、TIMERx_PERIOD レジスタと TIMERx_WIDTH レ
ジスタは読出し専用です。これらのレジスタに書き込む前に、
TIMERx_CONFIG レジスタの TMODE フィールドに b#01 を設定してください。

X 出力パッド・ディスエーブル
PWM_OUT モードで出力ピンをディスエーブルにするには、タイマ設定レジ

スタ で OUT_DIS ビ ッ トを セ ット し ます。こ れ によ っ て、PULSE_HI や
TOGGLE_HI の設定とは無関係に、TMRx ピンは 3 ステートになります。これによって、出力信号が使用されていないときに消費電力を削減できます。

15-20

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

タイマ

X 単一パルス生成
PERIOD_CNT ビットがクリアされている場合、PWM_OUT モードは TMRx ピン上に単一パルスを生成します。このモードは、正確な遅延を実現するためにも使用できます。パルス幅はタイマ・パルス幅レジスタによって定義され、タイマ周期レジスタは使用されません。
パルスの最後に、タイマ割込みラッチ・ビット TIMILx がセットされ、タイマは自動的に停止します。PULSE_HI ビットがセットされた場合には、
TMRx ピン上にアクティブ・ハイ・パルスが生成されます。PULSE_HI がセットされない場合には、パルスはアクティブ・ローです。
X パルス幅変調波形の生成
PERIOD_CNT ビットがセットされている場合、内部的にクロック駆動されたタイマは、明確な周期とデューティ・サイクルを持つ矩形信号を生成します。このモードは、リアルタイム信号処理のための周期割込みも生成します。
32 ビットのタイマ周期（TIMERx_PERIOD）レジスタとタイマ・パルス幅（TIMERx_WIDTH）レジスタは、タイマ・カウント周期とパルス幅変調された出力パルス幅の値によってプログラムされます。
タイマがこのモードでイネーブルにされると、タイマ・カウンタがタイ
マ・パルス幅レジスタの値に等しくなるたびに TMRx ピンはアサート解除された状態にされ、周期が終了する（またはタイマが開始される）とピンは再びアサートされます。
TMRx ピンのアサーション・センスを制御するため、対応する TIMERx_CONFIG

レジスタの PULSE_HI ビットが使用されます。ロー・アサーション・レベ
ルの場合には、このビットをクリアします。ハイ・アサーション・レベルの場合には、このビットをセットします。タイマが PWM_OUT モードでディスエーブルにされると、TMRx ピンはアサート解除されたレベルに駆動されます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-21

タイマの使い方

イネーブルである場合、タイマ割込みは各周期の最後に生成されます。割
込みサービス・ルーチン（ISR）は、割込みラッチ・ビット（TIMILx）をクリアする必要があり、周期や幅の値を変更することもあります。パルス
幅変調（PWM）アプリケーションでは、ソフトウェアはタイマの実行中に、周期とパルス幅の値を更新する必要があります。ソフトウェアが周期
レジスタまたはパルス幅レジスタを更新すると、新しい値は周期が終了するまで特殊なバッファ・レジスタによって保持されます。その後、新しい周期とパルス幅の値は同時にアクティブになります。古い値が使用されている間に、新しいタイマ周期レジスタとタイマ・パルス幅レジスタの値が書き込まれます。タイマ・カウンタの値が現在のタイマ周期値に等しくな
ると、新しい値がロードされて使用されます。タイマ周期レジスタとタイ
マ・パルス幅レジスタからの読出しは、周期が終了するまで古い値を返します。
PWM_OUT モードでは、TOVF_ERRx ステータス・ビットはエラー条件を示します。スタートアップ時に TIMERx_PERIOD = 0 または TIMERx_PERIOD = 1 である場合、またはタイマ・カウンタ・レジスタがロール・オーバーした場
合には、TOVF_ERRx ビットがセットされます。また、タイマ・パルス幅レ
ジスタがタイマ周期レジスタ以上である場合には、タイマ・カウンタ・レ
ジスタがロール・オーバーしたときにもセットされます。TOVF_ERRx ビットがセットされると、ERR_TYP ビットがセットされます。
TMRx 出力ピンで最大周波数を生成するには、周期値を2 に、パルス幅を1に設定します。これによって TMRx は各 SCLK クロックをトグルさせ、50%のデューティ・サイクルが得られます。周期には 2 ～（232 － 1）までの任意の値をプログラムできます。パルス幅には 1 ～（周期－ 1）までの任意の値をプログラムできます。PERIOD_CNT ＝ 0 の場合、パルス幅には 1 ～（232 － 1）までの任意の値をプログラムできます。
TIMERx_WIDTH 値が TIMERx_PERIOD 値に等しい場合には、ハードウェアはエラーを報告します。しかしこれは 100% のデューティ・サイクルを持つ
PWM パターンを実装するためには依然として有効な動作です。そうする
場合、一般にソフトウェアは TOVL_ERRx フラグを無視する必要があります。

15-22

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

タイマ

周期値を超えるパルス幅値はお勧めできません。同様に、TIMERx_WIDTH ＝0 も有効な動作ではありません。0%のデューティ・サイクルには対応していません。
X PWM_OUT モードでのタイマの停止

あら ゆ る 形式 の PWM_OUT モ ード で、タイ マ は、デ ィ スエ ー ブル 動 作（TIMER_DISABLE へのW1C）を「停止は保留中」条件として扱います。ディスエーブルにされると、タイマは現在の波形を自動的に完了してから、きれいに停止します。これによって、現在のパルスの切り捨てと TMRx ピンでの望ましくない PWM パターンを防止できます。プロセッサがタイマの実
行停止を確認するには、TIMER_STATUS レジスタの対応する TRUNx ビットをポーリングして 0 を読み出すか、または最後の割込みを待機します（イネーブルの場合）。なお、タイマが停止して TRUNx が0 として読み出されるまでは、タイマの再設定はできません（TIMERx_CONFIG に新しい値を書き込むことができません）。
PWM_OUT の単一パルス・モード（PERIOD_CNT = 0）では、TIMER_DISABLE に書き込んでタイマを停止させる必要はありません。パルスの最後に、タイマは自動的に停止し、TIMER_ENABLE（と TIMER_DISABLE）の対応するビッ
トはクリアされ、対応する TRUNx ビットはクリアされます。15-18 ページの図 15-11 を参照してください。複数のパルスを生成するには、TIMER_ENABLEに1を書き込み、タイマの停止を待ってから、TIMER_ENABLE にさらに1を書き込みます。
必要ならば、プロセッサは、タイマを PWM_OUT モードにしてすぐに停止させることができます。それには、まず TIMER_DISABLE の対応するビットに1 を書き込んでから、TIMER_STATUS の対応する TRUNx ビットに 1 を書き込みます。これによってタイマは停止し、保留中の停止が現在の周期の最後

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-23

タイマの使い方（PERIOD_CNT = 1）や現在のパルス幅の最後（PERIOD_CNT = 0）を待機しているかどうかとは無関係です。この機能を使用すれば、エラー回復シー
ケンスの処理中に、タイマの直接制御を回復できることがあります。

[

この機能は注意してご使用ください。TMRx ピンで生成された PWM
パターンが破損する可能性もあります。

PWM_OUT の連続パルス・モード（PERIOD_CNT = 1）では、各タイマは、各周期の最後にその TIMENx ビットをサンプリングします。TIMENx がローレベルの場合、タイマは最初の周期の最後にきれいに停止します。これは（TRUNx へのW1Cを除いて）、ディスエーブルにされてから現在の周期の最後までに再びイネーブルにされたタイマは何も起きなかったかのように実行を続けることを意味します。一般に、ソフトウェアは PWM_OUT タイマ
をディスエーブルにしてから、タイマが停止するまで待つようにします。
PERIOD_CNT = 0 の場合、タイマは最初のパルスの最後に必ず停止します。

X 外部的にクロック駆動される PWM_OUT

デフォルトでは、タイマは SCLK によって内部的にクロック駆動されます。
あるいは、タイマ設定（TIMERx_CONFIG）レジスタの CLK_SEL ビットがセットされている場合には、タイマは PWM_CLK によってクロック駆動されます。
PWM_CLK は、通常は PF1 ピンから入力されますが、タイマが PPI と連携するように設定されている場合には、PPI_CLK ピンから得られることもあります。タイマは設定に応じて、PWM_CLK 入力でさまざまな信号を受信することがあります。PERIOD_CNT ビットでの選択に基づいて、PWM_OUT モードは
パルス幅変調波形を生成したり、TIMERx_WIDTH レジスタによって定義されたパルス幅を持つ単一パルスを生成します。
CLK_SEL がセットされると、カウンタはスタートアップ時に0x0 にリセッ

トされ、PWM_CLK の各立上がりエッジでインクリメントされます。TMRx ピ
ンは、PWM_CLK の立上がりエッジで遷移します。PWM_CLK の立下がりエッジを選択する方法はありません。このモードでは、PULSE_HI ビットは生成されたパルスの極性だけを制御します。タイマ割込みは、TMRx ピンでの対応
するエッジの少し前で発生することがあります（割込みは SCLK エッジで発

15-24

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

タイマ

生し、ピンは後の PWM_CLK エッジで遷移します）。新しい周期とパルス幅の値は、割込みが発生したらすぐにプログラムすると依然として安全です。周期が終了した後、カウンタは 0x1の値にロール・オーバーします。
PWM_CLK クロック波形は、50%のデューティ・サイクルを持つ必要はありませんが、最小の PWM_CLK クロック・ロー時間は 1 SCLK 周期であり、最小の PWM_CLK クロック・ハイ時間は 1 SCLK 周期です。これは、最大の PWM_CLK
クロック周波数が SCLK/2 であることを意味します。
PF1 が入力ピンとして機能するとき、
PF1 ピンはタイマをクロック駆動するだけです。いずれかのタイマが、CLK_SEL = 1 および TIN_SEL ＝ 0 で PWM_OUT
モードにあるとき、FIO_DIR レジスタの PF1 ビットは無視され、PF1 は入力にされます。
X PULSE_HI トグル・モード＝ 1 に よ る PWM_OUT モ ー ドで 生 成さ れ た波 形 は通 常、
TIMERx_WIDTH レジスタによって固定されたアサーション時間とプログラ
マブルなアサート解除時間を持っています。2 つのタイマが同じ周期設定
によって同期して動作しているとき、図 15-13に示すように、パルスはア
サート側のエッジに合わせられます。
PERIOD_CNT

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-25

タイマの使い方๟ᦼ1
TOGGLE_HI = 0
PULSE_HI = 1

TMR0ࠕࠢ࠹ࠖࡉ࡮ࡂࠗTOGGLE_HI = 0
PULSE_HI = 1

TMR1ࠕࠢ࠹ࠖࡉ࡮ࡂࠗTOGGLE_HI = 0
PULSE_HI = 1

TMR2
ࠕࠢ࠹ࠖࡉ࡮
ࡂࠗ
࠲ࠗࡑ࡮
ࠗࡀ࡯ࡉ࡞

図 15-13.アサート側エッジに合わせられたパルスを持つタイマ
TOGGLE_HI モードでは、生成された出力波形のアサート側エッジとアサー

ト解除側エッジのタイミングを制御できます。2つのタイマ出力のアサー
ト側エッジ間での位相はプログラマブルです。PULSE_HI ビットの有効状態
はすべての周期で反転します。隣接するアクティブ・ローとアクティブ・
ハイのパルスはひとまとめにされて、完全に任意の矩形波形の半分を 2つ生み出します。有効な波形は、PULSE_HI がセットされている場合は依然としてアクティブ・ハイであり、PULSE_HI がクリアされている場合はアクティブ・ローです。モードが PWM_OUT で PERIOD_CNT ＝ 1 の場合を除いて、
TOGGLE_HI の値には効果がありません。
TOGGLE_HI モードでは、PULSE_HI がセットされると、アクティブ・ロー・

パルスは、1番目、3番目、およびすべての奇数番号周期で生成されます。
そしてアクティブ・ハイ・パルスは、2 番目、4 番目、およびすべての偶数番号周期で生成されます。PULSE_HI がクリアされると、アクティブ・ハ
イ・パルスは、1番目、3 番目、およびすべての奇数番号周期で生成され、アクティブ・ロー・パルスは、2 番目、4 番目、およびすべての偶数番号周期で生成されます。

15-26

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

タイマ

1 つの周期の最後でアサート解除された状態は、次の周期の先頭でアサートされた状態と一致するため、カウント＝パルス幅の場合にのみ出力波形は遷移します。最終的に、2つのカウンタ周期ごとに繰り返し、最初の周期の最後（または 2番目の周期の先頭）を中心とする出力波形パルスとなります。
図 15-14 は、同じ周期設定で動作する3 つのタイマによる例を示します。
ソフトウェアが実行時に PWM設定を変更しない場合、デューティ・サイ
クルは 50% です。TIMERx_WIDTH レジスタの値は、信号間での位相を制御
します。

ᵄᒻ๟ᦼ1
࠲ࠗࡑ
๟ᦼ1
TOGGLE_HI = 1
PULSE_HI = 1

࠲ࠗࡑ
๟ᦼ2

ᵄᒻ๟ᦼ2
࠲ࠗࡑ
๟ᦼ3

࠲ࠗࡑ
๟ᦼ4

TMR0
ࠕࠢ࠹ࠖࡉ࡮ ࠕࠢ࠹ࠖࡉ࡮ ࠕࠢ࠹ࠖࡉ࡮ ࠕࠢ࠹ࠖࡉ࡮
ࡂࠗ
ࡂࠗ
ࡠ࡯
ࡠ࡯

TOGGLE_HI = 1
PULSE_HI = 1

TMR1ࠕࠢ࠹ࠖࡉ࡮ ࠕࠢ࠹ࠖࡉ࡮ ࠕࠢ࠹ࠖࡉ࡮ ࠕࠢ࠹ࠖࡉ࡮
ࡂࠗ
ࡂࠗ
ࡠ࡯
ࡠ࡯

TOGGLE_HI = 1
PULSE_HI = 1

TMR2
ࠕࠢ࠹ࠖࡉ࡮ ࠕࠢ࠹ࠖࡉ࡮ ࠕࠢ࠹ࠖࡉ࡮ ࠕࠢ࠹ࠖࡉ࡮
ࡠ࡯
ࡂࠗ
ࡂࠗ
ࡠ࡯
࠲ࠗࡑ࡮
ࠗࡀ࡯ࡉ࡞

図 15-14.同じ周期設定を持つ 3 つのタイマ
同様に、2 つのタイマを使用し、パルスを中心に合わせてタイマの 1 つの信号極性を反転することによって、重なりのないクロックを生成できます（図 15-15 を参照）。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-27

タイマの使い方

ᵄᒻ๟ᦼ1
࠲ࠗࡑ
๟ᦼ1
TOGGLE_HI = 1
PULSE_HI = 0

࠲ࠗࡑ
๟ᦼ2

ᵄᒻ๟ᦼ2
࠲ࠗࡑ
๟ᦼ3

࠲ࠗࡑ
๟ᦼ4

TMR0
ࠕࠢ࠹ࠖࡉ࡮ ࠕࠢ࠹ࠖࡉ࡮ ࠕࠢ࠹ࠖࡉ࡮ ࠕࠢ࠹ࠖࡉ࡮
ࡂࠗ
ࡠ࡯
ࡂࠗ
ࡠ࡯

TOGGLE_HI = 1
PULSE_HI = 1

TMR1ࠕࠢ࠹ࠖࡉ࡮ ࠕࠢ࠹ࠖࡉ࡮ ࠕࠢ࠹ࠖࡉ࡮ ࠕࠢ࠹ࠖࡉ࡮
ࡠ࡯
ࡂࠗ
ࡠ࡯
ࡂࠗ
࠲ࠗࡑ࡮
ࠗࡀ࡯ࡉ࡞

図 15-15.重なりのないクロックを持つ 2 つのタイマ
TOGGLE_HI ＝ 0 の場合、ソフトウェアは波形周期ごとに 1回、タイマ周期レ

ジスタとタイマ・パルス幅レジスタを更新します。TOGGLE_HI = 1 の場合、
ソフトウェアは波形周期ごとに 2 回、半分の大きさの値によってタイマ周
期レジスタとタイマ・パルス幅レジスタを更新します。奇数番号の周期では、中央揃えされたパルスを得るために、幅 ではなく（周期－幅）をタイ
マ・パルス幅レジスタに書き込みます。
たとえば、TOGGLE_HI = 0 の場合の擬似コードが次のとおりだとします。
int period, width ;for (;;) {period = generate_period(...) ;width = generate_width(...) ;waitfor (interrupt) ;write(TIMERx_PERIOD, period) ;write(TIMERx_WIDTH, width) ;
}

15-28

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

タイマ

TOGGLE_HI ＝ 1 の場合、擬似コードは次のようになります。
int period, width ;int per1, per2, wid1, wid2 ;for (;;){

period = generate_period(...) ;width = generate_width(...) ;per1 = period/2 ;wid1 = width/2 ;per2 = period/2 ;wid2 = width/2 ;waitfor (interrupt) ;write(TIMERx_PERIOD, per1) ;write(TIMERx_WIDTH, per1 - wid1) ;waitfor (interrupt) ;write(TIMERx_PERIOD, per2) ;write(TIMERx_WIDTH, wid2) ;}この例に示すように、生成されるパルスは対称である必要はありません（wid1 と wid2 が等しい必要はありません）。生成されるパルスの位相を調整するため、周期はオフセットできます（per1 と per2 が等しい必要はありません）。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-29

タイマの使い方

タイマ・スレーブ・イネーブル・ビット（TIMER_STATUS レジスタの TRUNxビット）は、TOGGLE_HI モードで偶数番号の周期の最後にのみ更新されます。TIMER_DISABLE に1が書き込まれると、カウンタ周期の現在のペア（1つの波形周期）は、タイマがディスエーブルにされる前に完了します。
TOGGLE_HI ＝ 0 では、次の場合にエラーが報告されます。
TIMERx_WIDTH >= TIMERx_PERIOD、TIMERx_PERIOD ＝ 0、またはTIMERx_PERIOD ＝ 1■ パルス幅カウントおよびキャプチャ（WDTH_CAP）モード
WDTH_CAP モードでは、TMRx ピンは入力ピンです。外部から印加される矩形波形の周期とパルス幅を確認するために、内部的にクロック駆動されるタイマが使用されます。このモードをイネーブルにするには、TIMERx_CONFIG（タイマ設定レジスタ）の TMODE フィールドにb#10 を設定します。
このモードでイネーブルにされると、タイマは TIMERx_COUNTER レジスタのカウントを 0x0000 0001 にリセットし、TMRx ピンで前縁を検出してからカウントを開始します。
タイマは最初の前縁を検出すると、インクリメントを開始します。波形の後縁を検出すると、タイマは TIMERx_COUNTER レジスタの現在の 32 ビット
値を幅バッファ・レジスタにキャプチャします。次の前縁で、タイマは
TIMERx_COUNTER レジスタの現在の32 ビット値を周期バッファ・レジスタに転送します。カウント・レジスタは再び 0x0000 0001 にリセットされ、タイマはディスエーブルにされるまでカウントとキャプチャを継続します。
このモードでは、ソフトウェアは波形のパルス幅とパルス周期の両方を測定できます。TMRx ピンの前縁と後縁の定義を制御するため、TIMERx_CONFIG レ
ジスタの PULSE_HI ビットがセットまたはクリアされます。PULSE_HI ビットがクリアされた場合、測定は立下がりエッジによって開始され、タイマ・カ
ウンタ・レジスタは立上がりエッジでタイマ・パルス幅バッファ・レジスタ

15-30

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンスタイマ࠺࡯࠲࡮ࡃࠬ

TIMERx_PERIODSCLKTIMERx_WIDTHTIMERx_COUNTER࡝࠮࠶࠻PULSE_HIPULSE_HI

TMRx

TMRx

ᓟ✼ᬌ಴

೨✼ᬌ಴
TIMER_ENABLE

TOVF_ERRPERIOD_CNTഀㄟߺࡠࠫ࠶ࠢ

ഀㄟߺ

図 15-16.タイマのフロー図、WDTH_CAP モードにキャプチャされ、タイマ周期は次の立下がりエッジでキャプチャされます。PULSE_HI ビットがセットされると、測定は立上がりエッジで開始され、タイマ・カウンタ・レジスタは立下がりエッジでタイマ・パルス幅バッファ・レジスタにキャプチャされ、タイマ周期は次の立上がりエッジでキャプチャ
されます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-31

タイマの使い方

WDTH_CAP モードでは、次の 3つのイベントは常に 1 つの単位として同時に発生します。
1. TIMERx_PERIOD レジスタは、周期バッファ・レジスタをもとに更新されます。
2. TIMERx_WIDTH レジスタは、幅バッファ・レジスタをもとに更新されます。
3. タイマ割込みラッチ・ビット（TIMILx）はセットされます（イネーブルの場合）が、エラーを生成しません。
このトランザクション群が実行される時点は、TIMERx_CONFIG レジスタのPERIOD_CNT ビットによって制御されます。総合して、これら 3つのイベン
トは測定報告と呼ばれます。測定報告では、タイマ・カウンタ・オーバー
フロー・エラー・ラッチ・ビット（TOVF_ERRx）はセットされません。測定報告は、入力信号周期ごとに多くて 1回行われます。
現在のタイマ・カウンタ値は、入力信号の後縁と前縁でそれぞれ常に幅
バッファ・レジスタと周期バッファ・レジスタにコピーされますが、これらの値はソフトウェアからは見えません。測定報告イベントは、キャプチャされた値を目に見えるレジスタにサンプリングし、タイマ割込みを設定してTIMERx_PERIOD とTIMERx_WIDTHで読出しの準備ができたことを通知します。PERIOD_CNT ビットがセットされると、測定報告は、周期バッファ・レ ジ ス タ が（前 縁 で）そ の 値 を キ ャ プ チ ャ し た 直 後 に 行 わ れ ま す。
PERIOD_CNT ビットがクリアされると、測定報告は、幅バッファ・レジスタが（後縁で）その値をキャプチャした直後に行われます。
PERIOD_CNT ビットがセットされ、前縁が発生した場合（図 15-17 を参照）には、TIMERx_PERIOD レジスタと TIMERx_WIDTH レジスタは、終わったばかりの周期で測定されたパルス周期とパルス幅を報告します。PERIOD_CNT
ビッ ト がク リ ア され、後 縁が 発 生し た 場合（図 15-18 を 参 照）に は、

15-32

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

タイマ

TIMERx_WIDTH レジスタは、
終わったばかりのパルスで測定されたパルス幅を報告しますが、TIMERx_PERIOD レジスタは、前の周期の最後で測定されたパルス周期を報告します。
SCLK

TMRx, PULSE_HI = 0

TMRx, PULSE_HI = 1

TIMERx_COUNTER
X

1

2

3

4

1

2

3

4

5

6

7

8

1

TIMERx_PERIOD BUFFER
X

4

0

8

TIMERx_WIDTH BUFFER
X

0

2

3

TIMERx_PERIOD
X

0

4

8

2

3

TIMERx_WIDTH
X

0

TIMILx

TOVF_ERRxTIMENx

ࠞ࠙ࡦ࠻ࠍ
㐿ᆎ

᷹ቯႎ๔

᷹ቯႎ๔

ᵈ㧦◲ଢൻࠍߪ߆ࠅ‫ޔ‬TMRxࠛ࠶ࠫߣࡃ࠶ࡈࠔ࡮࡟ࠫࠬ࠲ᦝᣂߣߩ㑆ߩหᦼㆃᑧߪ␜ߒ߹ߖࠎ‫ޕ‬

図 15-17.周期キャプチャ測定報告のタイミング例（WDTH_CAP モード、
PERIOD_CNT ＝ 1）

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-33

タイマの使い方

SCLK

TMRx, PULSE_HI = 0

TMRx, PULSE_HI = 1

TIMERx_COUNTER
1

X

2

3

4

5

6

7

8

1

2

3

4

1

2

3

TIMERx_PERIOD BUFFER
X

8

0

4

TIMERx_WIDTH BUFFER
X

0

3

1

2

0

8

4

3

1

2

TIMERx_PERIODX

0

TIMERx_WIDTH
X

0

TIMILx

TOVF_ERRxTIMENx

ࠞ࠙ࡦ࠻ࠍ
㐿ᆎ

᷹ቯႎ๔

᷹ቯႎ๔

᷹ቯႎ๔

ᵈ㧦◲ଢൻࠍߪ߆ࠅ‫ޔ‬TMRxࠛ࠶ࠫߣࡃ࠶ࡈࠔ࡮࡟ࠫࠬ࠲ᦝᣂߣߩ㑆ߩหᦼㆃᑧߪ␜ߒ߹ߖࠎ‫ޕ‬

図 15-18.幅キャプチャ測定報告のタイミング例（WDTH_CAP モード、
PERIOD_CNT ＝ 0）
PERIOD_CNT ビットがクリアされ、最初の後縁が発生した場合、最初の測定

報告では最初の周期値がまだ測定されていないため、周期値は有効ではありません。図 15-18 に示すように、この場合の TIMERx_PERIOD 値を読み出
すと 0 が返されます。1つの前縁と 1つの後縁だけを持つ波形のパルス幅を測定するには、PERIOD_CNT ＝ 0 に設定します。ここで PERIOD_CNT ＝ 1 の場

15-34

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

タイマ

合には、周期値が周期バッファ・レジスタにキャプチャされません。代わりに、カウンタ範囲を超えてカウンタがラップすると、エラー報告割込みが生 成 さ れま す（イネ ー ブル の 場合）。こ の 場合、TIMERx_WIDTH とTIMERx_PERIOD は両方とも0 を示します（これは、幅バッファ・レジスタにキャプチャされた値を TIMERx_WIDTH にコピーする測定報告が行われなかったためです）。図 15-19 の最初の割込みを参照してください。

L

上述のPERIOD_CNT＝0モードを使用して単一パルスの幅を測定する
とき、測定間隔を終了させる割込みを受け取った後で、タイマを
ディスエーブルにすることをお勧めします。必要ならば、別の測定を準備するために、タイマを適宜再イネーブルにできます。この手順によって、タイマが幅測定の後で自走したり、タイマ・カウントのオーバーフローによって生成されたエラーを記録したりすることを防止できます。

前縁がないときにタイマ・カウンタ・レジスタが0xFFFF FFFF から0 にラップした場合、タイマ割込みが生成されます（イネーブルの場合）。その時点で、TIMER_STATUS レジスタの TOVF_ERRx ビットと TIMERx_CONFIG レジ
スタの ERR_TYP ビットがセットされ、カウンタの範囲を超える周期によるカ
ウントのオーバーフローを示します。これはエラー報告と呼ばれます。タイマが WDTH_CAP モードで割込みを生成した場合、その原因は、エラーが発生した（エラー報告）か、新しい測定の読出し準備ができている（測定報告）かのいずれかです。ただし、同時に両方が発生することはありません。
エラーが通知されたとき、TIMERx_PERIOD レジスタと TIMERx_WIDTH レジス
タは更新されません。詳細については、図 15-19と図 15-20を参照してくだ
さい。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-35

タイマの使い方

SCLK

TMRx, PULSE_HI = 0

TMRx, PULSE_HI = 1

TIMERx_COUNTER
X

1

2

3

0xFFFF 0xFFFF 0xFFFF 0xFFFF
FFFC
FFFD
FFFE
FFFF

0

1

2

3

4

5

TIMERx_PERIOD BUFFER
X

4

0

0

TIMERx_WIDTH BUFFER
X

0

2

2

TIMERx_PERIOD
X

0

0

4

0

2

TIMERx_WIDTH
X

0

TIMILx

TOVF_ERRxTIMENx

ࠞ࠙ࡦ࠻ࠍ
㐿ᆎ

ࠛ࡜࡯
ႎ๔

᷹ቯႎ๔

ᵈ㧦◲ଢൻࠍߪ߆ࠅ‫ޔ‬TMRxࠛ࠶ࠫߣࡃ࠶ࡈࠔ࡮࡟ࠫࠬ࠲ᦝᣂߣߩ㑆ߩหᦼㆃᑧߪ␜ߒ߹ߖࠎ‫ޕ‬

図 15-19.周 期オーバーフローに続く周期キャプチ ャのタイミング例（WDTH_CAP モード、PERIOD_CNT ＝ 1）

15-36

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

タイマ

SCLK

TMRx, PULSE_HI =0

TMRx, PULSE_HI =1

TIMERx_COUNTER
X

1

0xFFFF 0xFFFF 0xFFFF 0xFFFF
FFFC FFFD
FFFE
FFFF

23

0

1

2

3

4

1

2

TIMERx_PERIOD BUFFER
X

4

0

0

TIMERx_WIDTH BUFFER
0

3

3

0

0

0

0

3

3

X
TIMERx_PERIODXTIMERx_WIDTHX
TIMILx
TOVF_ERRxTIMENx

ࠞ࠙ࡦ࠻ࠍ
㐿ᆎ

᷹ቯႎ๔

ࠛ࡜࡯ႎ๔

ᵈ㧦◲ଢൻࠍߪ߆ࠅ‫ޔ‬TMRxࠛ࠶ࠫߣࡃ࠶ࡈࠔ࡮࡟ࠫࠬ࠲ᦝᣂߣߩ㑆ߩหᦼㆃᑧߪ␜ߒ߹ߖࠎ‫ޕ‬

図 15-20.幅 キ ャ プ チ ャ に 続 く 周 期 オ ー バ ー フ ロ ー の タ イ ミ ン グ 例（WDTH_CAP モード、PERIOD_CNT ＝ 0）
TIMILx と TOVF_ERRx はいずれもスティッキー・ビットであり、ソフトウェ

アで明示的にクリアする必要があります。タイマがオーバーフローし
PERIOD_CNT = 1 の場合には、
TIMERx_PERIOD レジスタも TIMERx_WIDTH レジ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-37

タイマの使い方

スタも更新されませんでした。タイマがオーバーフローし PERIOD_CNT = 0の場合には、前の測定報告で後縁が検出された場合に限り、TIMERx_PERIOD
レジスタと TIMERx_WIDTH レジスタが更新されました。
ソフトウェアは、測定報告割込み間でのエラー報告割込みの数をカウント
して、0xFFFF FFFFより長い入力信号周期を測定できます。各エラー報
告割込みは、周期に対する合計に 232 SCLK のフル・カウントを加算します
が、幅は曖昧です。たとえば、図 15-19 では、周期は 0x1 0000 0004 ですが、パルス幅は 0x0 0000 0002 または 0x1 0000 0002 とすることができます。
TMRx ピンに印加される波形は、50%のデューティ・サイクルを持つ必要はありませんが、最小の TMRx ロー時間は 1 SCLK 周期であり、最小の TMRx ハ
イ時間は 1 SCLK 周期です。これは、最大の TMRx 入力周波数が 50%のデュー
ティ・サイクルを持つ SCLK/2 であることを意味します。これらの条件のもとで、WDTH_CAP モード・タイマは、周期 = 2 とパルス幅 = 1 を測定します。
X オートボー・モード

3 つのタイマのうちの 1 つは、非同期シリアル・インターフェース LSI（UART）にオートボー検出機能を提供します。TIMERx_CONFIG レジスタのタイマ入力選択（TIN_SEL）ビットによって、タイマは WDTH_CAP モード用にイネーブルにされると、TMRx ピンの代わりに UART ポート受信データ（RX）ピンをサンプリングします。

[

オートボー検出が完了するまでは、UART をイネーブルにしないでください。

ソフトウェア・ルーチンは、シリアル・ストリーム・ビット・セルのパルス幅を検出できます。タイマのサンプル・ベースは UART 動作と同期 ―すべてフェーズ・ロック・ループ（PLL）クロックから取得 ― しているため、パルス幅を使用して UARTのボーレート・デバイダを計算できます。
デバイザ＝（（TIMERx_WIDTH）/（16 ×キャプチャされた UART ビット数））

15-38

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

タイマ

タイマ・カウントの数、つまりキャプチャされる信号の分解能を増やすには、単にシングル・ビットのパルス幅を測定するのではなく、対象となるパルスをより多くのビットに拡大することをお勧めします。図 15-21 に示
すように、オートボー検出には一般に NULL 文字（ASCII 0x00）が使用
されます。

S

1

2

3

4

5

6

7

஗ᱛ

ࡈ࡟࡯ࡓ᏷

図 15-21.オートボー検出文字 0x00
図 15-21 のフレーム例には、8 つのデータビットと1 つのスタート・ビッ
トが含まれているため、次の式を適用します。
デバイザ＝ TIMERx_WIDTH /（16 × 9）

実際のUART RX信号には非対称な立下がり／立上がりエッジが含まれることもあり、サンプリング・ロジック・レベルは信号電圧範囲のちょうど中央にはありません。高いビットレートでは、このようなパルス幅ベースのオートボー検出は、アナログ信号コンディショニングを追加しなければ
適切な結果を返せないことがあります。信号周期の測定はこの問題の回避につながるため、強くお勧めします。
たとえば、オートボー検出バイトとして ASCII 文字「@」（40h）を事前定義し、その後の 2 つの立下がりエッジ間で周期を測定します。図 15-22 に示すように、スタート・ビットの立下がりエッジとビット 6 の後の立下がりエッジとの間で周期を測定します。この周期には 8 つのビットが含まれるため、次の式を適用します。
デバイザ＝ TIMERx_PERIOD /（16 × 8）

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-39

タイマの使い方

S

1

2

3

4

5

6

7

஗ᱛ

๟ᦼ

図 15-22.オートボー検出文字 0x40

■ 外部イベント（EXT_CLK）モード
EXT_CLK モードでは、TMRx ピンは入力です。タイマは、外部ソースによってクロック駆動されるカウンタとして機能します。外部ソースは、システ
ム・クロックに非同期にすることもできます。TIMERx_COUNTER の現在のカウントは、検出された前縁イベントの数を表します。このモードをイネー
ブルにするには、TIMERx_CONFIG レジスタの TMODE フィールドにb#11 を設定します。TIMERx_PERIOD レジスタは、最大のタイマ外部カウントの値によってプログラムされます。
TMRx ピンに印加される波形は、50%のデューティ・サイクルを持つ必要はありません。しかし、最小の TMRx ロー時間は 1 SCLK 周期であり、最小のTMRx ハイ時間は 1 SCLK 周期です。これは、最大の TMRx 入力周波数が SCLK/2

であることを意味します。
周期には 1～（232 － 1）の任意の値をプログラムできます。
タイマがイネーブルにされた後、タイマ・カウンタ・レジスタは 0x0にリセットされ、TMRx ピンでの最初の前縁を待ちます。このエッジでは、タイ
マ・カウンタ・レジスタは値 0x1 にインクリメントされます。その後の前縁のたびに、カウント・レジスタはインクリメントされます。周期値に到達した後、TIMILx ビットがセットされ、割込みが生成されます。次の前縁では、タイマ・カウンタ・レジスタには再び 0x1がロードされます。タイ
マは、ディスエーブルにされるまでカウントを継続します。PULSE_HI ビッ
トでは、前縁が立上がりであるか（PULSE_HI がセット）、立下がりであるか（PULSE_HI がクリア）を決定します。

15-40

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンスタイマ࠺࡯࠲࡮ࡃࠬ

TIMERx_PERIOD
TRES

╬ߒ޿㧫

TIMERx_COUNTERࠢࡠ࠶ࠢPULSE_HI

೨✼ᬌ಴

TMRx

Y
ഀㄟߺ
TIMER_ENABLE

図 15-23.タイマのフロー図、EXT_CLK モード
このモードでは、設定ビット TIN_SEL と PERIOD_CNT には効果がありません。タイマ・カウンタ・レジスタが 0xFFFF FFFF から 0にラップした場
合、あるいはスタートアップ時またはタイマ・カウンタ・レジスタのロー
ル・オーバー（カウント＝周期からカウント＝ 0x1 に）時に周期 =0 である場合には、TOVF_ERRx ビットと ERR_TYP ビットがセットされます。タイマ・パルス幅レジスタは未使用です。

■ PPI でのタイマの使い方
特定の PPI モード用のフレーム同期信号を生成するために、タイマが2つまで使用されます。PPI で使用するタイマの詳しい設定方法については、
PPI に関して記載した 11-30 ページの「GP モードでのフレーム同期」を参照してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-41

タイマの使い方■ 割込み
3 つのタイマは、それぞれ1 つの割込みを生成できます。得られた3 つの割込み信号は、優先順位付けとマスキングのために、システム割込みコント
ローラ・ブロックに転送されます。タイマ・ステータス (TIMER_STATUS)
レジスタがタイマ割込みをラッチすることで、ソフトウェアは割込みソースを判定することができます。これらのビットは W1C であり、割込みの再発行を防止するには、RTI の前にクリアする必要があります。
割込み生成をイネーブルにするには、IRQ_ENA ビットをセットし、システ
ム割込みマスク・レジスタ（SIC_IMASK）で割込みソースをマスク解除します。割込み生成なしに TIMILx ビットをポーリングするには IRQ_ENA を
セットしますが、割込みはマスクされたままにしておきます。IRQ_ENA に
よってイネーブルにされた場合、エラー条件によって割込み要求も生成されます。
システム割込みコントローラは、柔軟な割込み処理を可能にします。すべてのタイマは、同じ割込みチャンネルを共有することも共有しないこともできるため、1 つの割込みルーチンが複数のタイマを処理することもあります。PWMモードでは、より多くのタイマが同じ周期設定で動作し、割込み要求を同時に発行することができます。この場合、サービス・ルーチ
ンは、TIMER_STATUS レジスタに 0x07 を書き込むことによって、すべての
TIMILx ラッチ・ビットを同時にクリアできます。
割込みがイネーブルである場合には、RTI 命令が実行される前に、割込みサービス・ルーチン（ISR）が TIMERx_STATUS レジスタの TIMILx ビットをクリアするようにしてください。これによって、割込みの再発行を防止できます。システム・レジスタへの書込みには遅延が生じることを忘れないでください。ごく少数の命令で TIMILx クリア・コマンドを RTI 命令から分離している場合には、追加の SSYNC 命令が挿入されることもあります。
EXT_CLK モードでは、タイマ・イベントを確実に捕捉するために、割込みサービス・ルーチン（ISR）の先頭で TIMERx_STATUS レジスタの TIMILx
ビットをリセットします。

15-42

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンスタイマࠞ࠙ࡦ࠻㧩᏷ਇᱜߥTIMERX_WIDTHࠞ࠙ࡦ࠻㧩๟ᦼਇᱜߥ
TIMERX_PERIODᓟ✼ࠞ࠙ࡦ࠲࡮ࠝ࡯ࡃ࡯ࡈࡠ࡯೨✼PERIOD_CNT

TMODE

PWM_OUT

WDTH_CAP

EXT_CLK

TMODE

10

10

PWM_OUT

WDTH_CAP

EXT_CLKഀㄟߺࠗࡌࡦ࠻

ࠛ࡜࡯࡮ࠗࡌࡦ࠻

IRQ_ENA࠮࠶࠻࠮࠶࠻

TOVF_ERRx

TIMILx

RST

RST

࠲ࠗࡑ
IRQx

ࠪࠬ࠹ࡓ
ഀㄟߺ
ࠦࡦ࠻ࡠ࡯࡜

ࡊࡠ࠮࠶ࠨ࡮ࠦࠕ࡝࠮࠶࠻

TIMER_STATUS߳ߩ
MMRᦠㄟߺ

TIMILxᦠㄟߺ࠺࡯࠲

TOVF_ERRxᦠㄟߺ࠺࡯࠲

図 15-24.タイマ割込み構造

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-43

タイマの使い方■ 不正状態
表 15-1 では、以下の定義が使用されています。
• スタートアップ：TIMER_ENABLE への書込みによってタイマがイネーブルにされた後、タイマ・カウンタが動作している最初のクロック周期です。
• ロールオーバー：現在のカウントが TIMERx_PERIOD の値と一致し、カウンタに値 1が再ロードされるときです。
• オーバーフロー：タイマ・カウンタは、0xFFFF FFFF という可能な最大カウント値を保持していたとき、ロールオーバーする代わりにインクリメントされました。カウンタには、次の大きな値を表すだけの十分な範囲がないため、誤って 0x0000 0000 という新しい値をロードします。
• 変化なし：新しいエラーはありません。
• ERR_TYP が変化なし：以前に報告されたエラー・コード、またはこのタイマがイネーブルにされて以降にエラーがな
かった場合には 00 が表示されます。
• TOVF_ERR が変化なし：このタイマがイネーブルにされて以降にエラーがなかった場合、またはソフトウェアが W1Cを実行して以前のエラーをクリアした場合には 0 が読み出されます。前のエラーがソフトウェアによってアクノレッジされていない場合には、TOVF_ERR は 1が読み出されます。
ソフトウェアでは、TOVF_ERR を読み出してエラーをチェックしてください。TOVF_ERR がセットされている場合には、ソフトウェアは ERR_TYP を読み出して詳細を得ることができます。エラーが検出されたら、ソフトウェ
アで 1 を書き込んで TOVF_ERR をクリアし、エラーをアクノレッジしてくだ
さい。

15-44

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

タイマ

TIMERx_PERIOD が～で TIMERx_WIDTH
次の表は、「～モードの～イベントでは、が～の場合、ERR_TYP は～であり TOVF_ERR は～です」と読むことができます。

[

スタートアップ・エラー条件は、タイマの起動を妨げません。同様に、オーバーフローやロールオーバーのエラー条件は、タイマを停止させません。不正なケースでは、TMRx ピンは望ましくない動作をすることがあります。

表 15-1.
モード

不正状態の概要
イベント

TIMERx_PERIODP W M _ O U T, スタートアップ == 0
PERIOD_（TIMERx_WI== 1
CNT = 1
DTH について

TIMERx_WIDTH

ERR_TYP

TOVF_ERR

任意

b#10

セット

任意

b#10

セット

は境界条件テストを実行しませ
ん）

>= 2

任意

変化なし

変化なし

ロールオーバー

== 0

任意

b#10

セット

== 1

任意

b#11

セット

>= 2

== 0

b#11

セット

>= 2

< TIMERx_PERIOD

変化なし

変化なし

>= 2

>= TIMERx_PERIOD

b#11

セット

任意

任意

b#01

セット

オーバー
フロー、
TIMERx_PERI
OD==0 など別のエラーもない
限り不可能

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-45

タイマの使い方

表 15-1.

不正状態の概要（続き）

モード

イベント

P W M _ O U T, スタートアップ
PERIOD_
CNT = 0TIMERx_PERIODTIMERx_WIDTH

ERR_TYP

TOVF_ERR

任意

== 0

b#01

セット

このケースは、スタートアップ時には検出されませんが、カウンタがその範囲全体までカウントするとオーバーフロー・エラーにつながります。
任意

WDTH_CAP

EXT_CLK

変化なし

変化なし

ロールオーバー

このモードではロールオーバーは不可能です。

オーバー
フロー、
TIMERx_WID
TH==0 など 別のエラーもない
限り不可能

任意

スタートアップ

このモードでは、TIMERx_PERIOD と TIMERx_WIDTH は読出し専用、エラーは不可能。

ロールオーバー

このモードでは、TIMERx_PERIOD と TIMERx_WIDTH は読出し専用、エラーは不可能。

オーバーフロー

任意

任意

b#01

セット

スタートアップ

== 0

任意

b#10

セット

>= 1

任意

変化なし

変化なし

== 0

任意

b#10

セット

>= 1

任意

変化なし

変化なし

任意

任意

b#01

セット

ロールオーバー

オーバー
フロー、
TIMERx_WID
TH==0 など 別のエラーもない
限り不可能

15-46

>= 1

任意

b#01

セット

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

タイマ

■ まとめ
表 15-2 は、各タイマ・モードでの制御ビットとレジスタの使い方を要約します。
表 15-2.

制御ビットとレジスタの使い方一覧表

ビット／レジスタ

PWM_OUT モード

WDTH_CAP モード

EXT_CLK モード

TIMER_ENABLE

1 - タイマをイネーブル
0 - 効果なし

1 - タイマをイネーブル 1 - タイマをイネーブル
0 - 効果なし
0 - 効果なし

TIMER_DISABLE

1 - 周期の最後でタイマをディスエーブル
0 - 効果なし

1 - タイマをディスエー 1 - タイマをディスエー
ブルブル
0 - 効果なし
0 - 効果なし

TMODE

b#01

b#10

b#11

PULSE_HI

1 - ハイレベル幅を生成
0 - ローレベル幅を生成

1 - ハイレベル幅を測定
0 - ローレベル幅を測定

1 - 立上がりエッジをカウント
0 - 立下がりエッジをカウント

PERIOD_CNT

1 - PWM を生成
0 - 単一幅パルス

1 - 周期測定後の割込み 未使用
0 - 幅測定後の割込み

IRQ_ENA

1 - 割込みをイネーブル
0 - 割込みをディスエー
ブル

1 - 割込みをイネーブル 1 - 割込みをイネーブル
0 - 割込みをディスエー 0 - 割込みをディスエー
ブル
ブル

TIN_SEL

CLK_SEL に依存：

1 - RX 入力を選択
0 - TMRx 入力を選択

未使用

CLK_SEL ＝ 1 の場合、
1 - PPI_CLK をカウント
0 - PF1 クロックをカウント
CLK_SEL ＝ 0 の場合、
未使用
OUT_DIS

1 - TMRx ピンをディス 未使用
エーブル
0 - TMRx ピンをイネー
ブル

未使用

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-47

タイマの使い方

表 15-2.

制御ビットとレジスタの使い方一覧表（続き）

ビット／レジスタ

PWM_OUT モード

CLK_SEL

1 - PWM_CLK がタ イ 未使用
マをクロック駆動
0 - SCLK がタイマをク
ロック駆動

未使用

TOGGLE_HI

1 - 2 つのカウンタ周期 未使用
ごとに 1 つの波形周期
0 - 1 つのカウンタ周期ごとに 1 つの波形周期

未使用

ERR_TYP

適宜、b#00、b#01、適宜、b#00 または b#01
b#10、
またはb#11を報告 を報告

適宜、b#00、b#01、
または b#10 を報告

EMU_RUN

0 - エミュレーション時に停止
1 - エミュレーション時にカウント

0 - エミュレーション時に停止
1 - エミュレーション時にカウント

0 - エミュレーション時に停止
1 - エミュレーション時にカウント

TMR ピン

OUT_DIS に依存：
1 - 3 ステート
0 - 出力TIN_SEL に依存：
1 - 未使用
0 - 入力入力

周期

R/W：周期値

RO：周期値R/W：周期値

幅

R/W：幅値

RO：幅値

未使用

カウンタ

RO：SCLK またはPWM_CLK で
カウント・アップ

RO：SCLK でカウント・ RO：イベントでアップ
カウント・アップ

TRUNx

読出し：タイマ・
スレーブ・イネーブル・
ステータス
書込み：
1 - ディスエーブルの場合、タイマを停止
0 - 効果なし

読出し：タイマ・
スレーブ・イネーブル・
ステータス
書込み：
1 - 効果なし
0 - 効果なし

15-48

WDTH_CAP モード

EXT_CLK モード

読出し：タイマ・
スレーブ・イネーブル・
ステータス
書込み：
1 - 効果なし
0 - 効果なし

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

タイマ

表 15-2.

制御ビットとレジスタの使い方一覧表（続き）

ビット／レジスタ

PWM_OUT モード

WDTH_CAP モード

EXT_CLK モード

TOVF_ERR

周期＝ 0 または 1 の場合、スタートアップまたはロールオーバー時にセット
幅＞＝周期の場合、ロー
ルオーバー時にセット
カウンタがラップした
場合にセット

カウンタがラップした
場合にセット

カウンタがラップした
場合にセット、あるいは周期＝ 0 の場合には、スタートアップまたは
ロールオーバー時にセット

IRQ

IRQ_ENA に依存：
1 - TOVF_ERRがセットされた場合、カウンタが周期と等しくPERIOD_CNT ＝ 1 の場合、またはカウンタが幅と等しくPERIOD_CNT ＝ 0 の場合にセット
0 - セットされません

IRQ_ENA に依存：
1 - TOVF_ERR がセットされた場合、カウン
タが周期をキャプチャ
し PERIOD_CNT ＝ 1の場合、またはカウン
タが幅をキャプチャしPERIOD_CNT ＝ 0 の場合にセット
0 - セットされません

IRQ_ENA に依存：
1 - カウンタが周期に等しいか TOVF_ERR がセットされた場合にセット
0 - セットされません

コア・タイマコア・タイマは、周期割込みを生成できるプログラマブルなインターバ
ル・タイマです。コア・タイマは、コア・クロック（CCLK）レートで動作します。タイマには、4本のコア・メモリマップド・レジスタ（MMR）、、タイマ・カウント・レジスタ
タイマ・コントロール・レジスタ（TCNTL）（TCOUNT）、タイマ周期レジスタ（TPERIOD）、タイマ・スケール・レジスタ（TSCALE）が含まれます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-49

コア・タイマ図 15-25は、コア・タイマのブロック図を示します。

ࠦࠕMMRࡃࠬCCLK

TPERIOD࠲ࠗࡑ࡮ࠗࡀ࡯ࡉ࡞
߅ࠃ߮ࡊ࡝ࠬࠤ࡯࡞࡮
ࡠࠫ࠶ࠢ

TINT

TCNTL

TMREN

TSCALEࠞ࠙ࡦ࠻࡮࡟ࠫࠬ࠲࡮
ࡠ࡯࠼࡮ࡠࠫ࠶ࠢ

DEC

࠲ࠗࡑഀㄟߺ
TCOUNT࠯ࡠ

図 15-25.コア・タイマのブロック図■ TCNTL レジスタ
コア・タイマ・コントロール・レジスタ（TCNTL）の TMREN ビットをセッ
トしてタイマがイネーブルにされると、TCOUNT レジスタは TSCALE ＋ 1個のクロック・サイクルごとに 1回デクリメントされます。TCOUNT レジスタの値が 0 になると割込みが生成され、TCNTL レジスタの TINT ビットがセットされます。TCNTL レジスタの TAUTORLD ビットがセットされた場合には、TCOUNT レジスタには TPERIOD レジスタの内容が再ロードされ、再びカウントが始まります。

15-50

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

タイマ

コア・タイマを低消費電力モードにするには、TCNTL レジスタの TMPWR ビッ
トをクリアします。タイマを使用する前に、TMPWR ビットをセットしてください。これによって、タイマ・ユニットにクロックが復元されます。
TMPWR がセットされると、
TCNTL レジスタの TMREN ビットをセットしてコア・タイマをイネーブルにできます。

[

TMPWR ＝ 0 のときに TMREN がセットされた場合、ハードウェアの動作は不定です。

コア・タイマ・コントロール・レジスタ（TCNTL）
0xFFE0 3000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X X X X X

15 14 13 12 11 10 9
X X X X X X X

8
X

7 6
X X

5
X

4
X

3
0

2
0

1
0

TINT - W1C
スティッキーなステータス・ビット
0 - タイマは割込みを生成していません
1 - タイマは割込みを生成しました
TAUTORLD
0 - 自動再ロード機能をディスエーブル。TCOUNT がゼロになると、タイマは割込みを生成して停止します
1 - 自動再ロード機能をイネーブル。TCOUNT がゼロになりタイマが割込みを生成すると、TCOUNT には TPERIOD の内容が自動的に再ロードされ、タイマはカウントを継続します

リセット＝未定義

0
0

TMPWR
0 - タイマを低消費電力モードにします
1 - アクティブ状態。タイマは、
TMREN ビットを使用してイ
ネーブルにできます
TMREN
TMPWR ＝ 1 の場合にのみ有効です
0 - タイマをディスエーブル
1 - タイマをイネーブル

図 15-26.コア・タイマ・コントロール・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-51

コア・タイマ■ TCOUNT レジスタ
コア・タイマ・カウント・レジスタ（TCOUNT）は、TSCALE ＋ 1個のクロッ
ク・サイクルごとに 1 回デクリメントされます。TCOUNT の値が 0 になると割込みが生成され、TCNTL レジスタの TINT ビットがセットされます。
コア・タイマ・カウント・レジスタ（TCOUNT）

0xFFE0 300C

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X X X X X

リセット＝未定義
カウント値 [31:16]

15 14 13 12 11 10 9
X X X X X X X

8
X

7 6
X X

5
X

4
X

3
X

2
X

1 0
X X
カウント値 [15:0]

図 15-27.コア・タイマ・カウント・レジスタ

15-52

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

タイマ■ TPERIOD レジスタ
自動再ロードがイネーブルにされると、TCOUNT が 0になるたびに、TCOUNT
レジスタにはコア・タイマ周期レジスタ（TPERIOD）の値が再ロードされます。
TPERIOD レジスタの値を確実なものにするために、どちらのレジスタへの最初の書き込みも双方のレジスタを初期化します。最初のカウント値に異なる値を望む場合は、データを TPERIOD へ書き込んだ後に TCOUNT へ書き込みを行ってください。
コア・タイマ周期レジスタ（TPERIOD）

0xFFE0 3004

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X X X X X

リセット＝未定義
周期値 [31:16]

15 14 13 12 11 10 9
X X X X X X X

8
X

7 6
X X

5
X

4
X

3
X

2
X

1 0
X X
周期値 [15:0]

図 15-28.コア・タイマ周期レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-53

ウォッチドッグ・タイマ■ TSCALE レジスタ
コア・タイマ・スケール・レジスタ（TSCALE）には、TCOUNT のデクリメン
ト間隔となるサイクル数よりも 1 少ないスケーリング値が格納されます。
たとえば、TSCALE レジスタの値が0 の場合、カウンタ・レジスタは、ク
ロック・サイクルごとに 1 回デクリメントされます。TSCALE が1 の場合には、カウンタは 2サイクルごとに 1回デクリメントされます。
コア・タイマ・スケール・レジスタ（TSCALE）
0xFFE0 3008

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X X X X X

15 14 13 12 11 10 9
X X X X X X X

8
X

7 6
X X

5
X

4
X

3
X

2
X

リセット＝未定義

1 0
X X
スケール値

図 15-29.コア・タイマ・スケール・レジスタ

ウォッチドッグ・タイマ
このプロセッサには、ソフトウェア・ウォッチドッグ機能の実装に使用できる 32 ビットのタイマがあります。ソフトウェア・ウォッチドッグ機能
では、タイマがソフトウェアによる更新前に切れた場合にプロセッサ・コ
アへのイベントを生成することによって、システムの信頼性を高めることができます。ウォッチドッグ・タイマのプログラム方法に応じて生成されるイベントは、リセット、マスク不可能割込み、または汎用割込みとする
ことができます。ウォッチドッグ・タイマは、システム・クロック（SCLK）
によってクロック駆動されます。

15-54

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

タイマ■ ウォッチドッグ・タイマの動作
ウォッチドッグ・タイマを使用するには：
1. ウォッチドッグ・カウント・レジスタ（WDOG_CNT）にカウント値を書き込んで、ウォッチドッグ・タイマのカウント値を設定します。なお、ウォッチドッグ・タイマがイネーブルにされていない
間に WDOG_CNT レジスタにロードしても、WDOG_STAT レジスタにプリロードされます。
2. ウォッチドッグ・コントロール・レジスタ（WDOG_CTL）では、タイ
ムアウト時に生成されるイベントを選択します。
3. WDOG_CTL でウォッチドッグ・タイマをイネーブルにします。これによってウォッチドッグ・タイマはカウント・ダウンを開始し、WDOG_STAT レジスタの値をデクリメントします。WDOG_STAT が 0 になると、プログラムされたイベントが生成されます。イベントの生成を禁止するには、ソフトウェアは、WDOG_STAT に（任意の値で）書込みを実行して WDOG_CNT から WDOG_STAT にカウント値を再ロードするか、またはウォッチドッグ・タイマが切れる前に WDG_CTL で
ウォッチドッグ・タイマをディスエーブルにする必要があります。

■ WDOG_CNT レジスタ
ウォッチドッグ・カウント・レジスタ（WDOG_CNT）は、32 ビットの符号なしカウント値を保持します。WDOG_CNT レジスタには、32 ビットの読出
し／書込みだけでアクセスする必要があります。
ウォッチドッグ・カウント・レジスタは、プログラマブルなカウント値を保持します。ウォッチドッグ・カウント・レジスタへの有効な書込みによっても、ウォッチドッグ・カウンタはプリロードされます。安全を考慮
して、ウォッチドッグ・カウント・レジスタを更新できるのは、ウォッチ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-55

ウォッチドッグ・タイマ

ドッグ・タイマがディスエーブルにされているときだけです。タイマがイ
ネーブルにされている間にウォッチドッグ・カウント・レジスタに書き込
んでも、このレジスタの内容は変更されません。
ウォッチドッグ・カウント・レジスタ（WDOG_CNT）

0xFFC0 0204

31 30 29 28 27 26
0 0 0 0 0 025 24 23 22 21 20 19 18 17 16
0 0 0 0 0 0 0 0 0 0

リセット＝ 0x0000 0000
ウォッチドッグ・カウント[31:16]15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0
ウォッチドッグ・カウント[15:0]

図 15-30.ウォッチドッグ・カウント・レジスタ■ WDOG_STAT レジスタ32 ビットのウォッチドッグ・ステータス・レジスタ（WDOG_STAT）には、
ウォッチドッグ・タイマの現在のカウント値が含まれています。WDOG_STATへの読出しによって、現在のカウント値が返されます。ウォッチドッグ・
タイマがイネーブルにされると、WDOG_STAT は、各 SCLK サイクルで 1 だけ
デクリメントされます。WDOG_STAT が0 になると、ウォッチドッグ・タイ
マ は カ ウ ン ト を 停 止 し、ウ ォ ッ チ ド ッ グ・コ ン ト ロ ー ル・レ ジ ス タ（WDOG_CTL）で選択されたイベントが生成されます。
値は、WDOG_STAT に直接格納することはできませんが、代わりに WDOG_CNT
からコピーされます。これには、次の 2つの動作があります。
• ウォッチドッグ・タイマがディスエーブルにされている場合、
WDOG_CNTレジスタに書き込むとWDOG_STATレジスタにプリロードさ
れます。

15-56

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

タイマ• ウォッチドッグ・タイマがイネーブルにされている場合、WDOG_STAT
レジスタに書き込むと WDOG_CNT の値がロードされます。
プロセッサが WDOG_STAT に（任意の値の）書込みを実行すると、WDOG_CNTの値が WDOG_STAT にコピーされます。一般に、ソフトウェアは初期化時にWDOG_CNT の値を設定し、ウォッチドッグ・タイマが切れるまでに周期的にWDOG_STAT に書き込みます。これによって、ウォッチドッグ・タイマには
WDOG_CNT からの値が再ロードされ、選択されたイベントの生成が防止されます。
WDOG_STAT レジスタは、32 ビット、符号なしのシステム・メモリマップ

ド・レジスタであり、32 ビットの読出しと書込みでアクセスされる必要が
あります。
ユーザが、
（SCLK * カウント）レジスタ・サイクルまでにカウンタを再ロードしない場合には、ウォッチドッグ割込みまたはリセットが生成され、ウォッチドッグ・コントロール・レジスタの TRO ビットがセットされます。
その場合、カウンタはデクリメントを停止し、ゼロにとどまります。
カウンタにゼロをロードしてカウンタがイネーブルにされた場合には、ウォッチドッグ・コントロール・レジスタの TRO ビットがすぐにセットされ、カウンタはゼロにとどまり、デクリメントされません。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-57

ウォッチドッグ・タイマ

ウォッチドッグ・ステータス・レジスタ（WDOG_STAT）

0xFFC0 0208

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

リセット＝ 0x0000 0000
ウォッチドッグ・ステータス[31:16]15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0
ウォッチドッグ・ステータス[15:0]

図 15-31.ウォッチドッグ・ステータス・レジスタ■ WDOG_CTL レジスタ
ウォッチドッグ・コントロール・レジスタ（WDOG_CTL）は、ウォッチドッ
グ・タイマの制御に使用される、16ビットのシステム・メモリマップド・レジスタです。
ICTL[1:0] フィールドは、ウォッチドッグ・タイマが切れたときに生成されるイベントの選択に使用されます。なお、汎用割込みオプションが選択された場合には、システム割込みマスク・レジスタ（SIC_IMASK）は、その割込みをマスク解除するように適切に設定してください。ウォッチドッ
グ・イベントの生成がディスエーブルにされている場合には、ウォッチ
ドッグ・タイマは前述のように動作します。ただし、ウォッチドッグ・タ
イマが切れたときにイベントは生成されません。
TMR_EN[7:0] フィールドは、ウォッチドッグ・タイマをイネーブル／ディ

スエーブルにするために使用されます。このフィールドにディスエーブル
値以外の値を書き込むと、ウォッチドッグ・タイマがイネーブルにされます。このマルチビット・ディスエーブル・キーは、ウォッチドッグ・タイ
マが間違ってディスエーブルにされる可能性を最小限に抑えます。

15-58

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

タイマ

タイマがロール・オーバーしたかどうかをソフトウェアで確認するには、
ウォッチドッグ・コントロール・レジスタの TRO ステータス・ビットを調べます。これは、ウォッチドッグ・タイマ・カウントが 0 になるたびにセットされるスティッキー・ビットであり、ウォッチドッグ・タイマを無効にし、このビットに 1を書き込むことによってのみクリアされます。
ウォッチドッグ・コントロール・レジスタ（WDOG_CTL）

0xFFC0 0200

15 14 13 12 11 10 9
0 0 0 0 1 0 1

TRO - W1C
0 - ウォッチドッグ・タイマは切れていません
1 - ウォッチドッグ・タイマは切れました

8
0

7
1

6
1

5
0

4
1

3
0

2
0

1
0

0
0

リセット＝ 0x0AD0
ICTL[1:0]
00 -リセット・イベントを生成
01 -NMI を生成
10 -GP 割込みを生成
11 -イベント生成をディスエー
ブル
TMR_EN[7:0]0xAD -カウンタはディスエーブ
ル
その他すべての値 - カウンタは
イネーブル

図 15-32.ウォッチドッグ・コントロール・レジスタ

L

なお、プロセッサがエミュレーション・モードにあるとき、ウォッ
チドッグ・タイマ・カウンタは、たとえイネーブルにされていてもデクリメントされません。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

15-59

ウォッチドッグ・タイマ

15-60

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

第16章 リアルタイム・クロック

リアルタイム・クロック（RTC）は、時刻、アラーム、ストップウォッ
チ・カウントダウンなど、一連のデジタル・ウォッチ機能をプロセッサに提供します。これは一般に、リアルタイム・ウォッチまたはライフ・カウ
ンタの実装に使用されます。ライフ・カウンタでは、システムが最後にリセットされてからの経過時間をカウントします。
RTC ウォッチ機能は、プロセッサの外部にある 32.768kHz 水晶発振器によってクロック駆動されます。RTCは専用の電源ピンを使用し、リセットには左右されません。このため、たとえ残りのプロセッサ部分がパワーダウンされた場合でも、RTCは機能を維持することができます。
RTC 入力クロックは、バイパス可能なプリスケーラによって 1Hz 信号まで分周されます。バイパスされた場合、RTC は32.768kHz の水晶発振器
周波数でクロック駆動されます。通常動作では、プリスケーラはイネーブ
ルにされています。
RTC の主な機能は、正確な日数と時刻を維持することです。そのために、RTC では 4つのカウンタを使用します。
• 60秒カウンタ• 60分カウンタ• 24時間カウンタ• 32768 日カウンタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

16-1

RTC は、1 秒間に 1 回、60 秒カウンタをインクリメントします。他の3 つのカウンタについては、適切な場合にインクリメントします。32768 日カ
ウンタは、毎日真夜中（0時 0分 0秒）にインクリメントされます。割込みは定期的に（毎秒、毎分、毎時、または毎日）発行できます。これらの割込みは、それぞれ独立して制御できます。
RTC は、RTCアラーム・レジスタ（RTC_ALARM）によってプログラムされた 2 つのアラーム機能を提供します。その 1 つは時刻アラームです（時、分、秒）。アラーム割込みがイネーブルの場合、RTC は毎日の指定された時間に割込みを生成します。もう 1 つのアラーム機能では、アプリケー
ションは時間だけでなく、日も指定できます。日アラーム割込みがイネー
ブルの場合、RTC は指定された日時に割込みを生成します。このアラーム
割込みと日アラーム割込みは、独立してイネーブル／ディスエーブルにできます。
RTC は、カウントダウン・タイマとして機能するストップウォッチ機能を提供します。アプリケーションは、RTC ストップウォッチ・カウント・レ
ジスタ（RTC_SWCNT）に2 番目のカウントをプログラムできます。ストップウォッチ割込みがイネーブルで、指定の秒数が経過したとき、RTCは割込みを生成します。

16-2

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

リアルタイム・クロック

RTC_PREN
24ᤨ㑆ࠗࡌࡦ࠻

ᣣᢙࠞ࠙ࡦ࠲

ᤨᢙࠗࡌࡦ࠻

ᤨᢙࠞ࠙ࡦ࠲

9Y9ಽᢙࠞ࠙ࡦ࠲

Y

╬ߒ޿㧫

1Hz
࠴࠶ࠢ

ࡊ࡝ࠬࠤ࡯࡞࡮
ࠞ࠙ࡦ࠲
RTXI
32.768 kHz

1
0

6
Y

╬ߒ޿㧫

5

⑽ᢙࠗࡌࡦ࠻

⑽ᢙࠞ࠙ࡦ࠲

6

5
Y

╬ߒ޿㧫

ಽᢙࠗࡌࡦ࠻

6╬ߒ޿㧫

6
RTC_SWCNTࠍᦠ߈ㄟ߻

RTC_ALARM࡟ࠫࠬ࠲ᣣࠕ࡜࡯ࡓ࡮
ࠗࡌࡦ࠻ࠬ࠻࠶ࡊ࠙ࠜ࠶࠴࡮
ࠞ࠙ࡦ࠲

ࠕ࡜࡯ࡓ࡮
ࠗࡌࡦ࠻

ࠬ࠻࠶ࡊ
࠙ࠜ࠶࠴࡮
ࠗࡀ࡯ࡉ࡞

16

0ߣ
╬ߒ޿㧫

࠮࠶࠻

RST

Y

ࠬ࠻࠶ࡊ࠙ࠜ࠶࠴࡮ࠗࡌࡦ࠻

図 16-1. RTC ブロック図

インターフェース
RTC の外部インターフェースは 2本のクロック・ピンで構成され、外付け部品と共に RTC の基準クロック回路を形成します。RTC は、ペリフェラ
ル・アクセス・バス（PAB）を通じてプロセッサ・システムと内部的にインターフェースをとり、割込みインターフェースを通じて SIC（システム
割込みコントローラ）にインターフェースをとります。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

16-3

RTC クロックの条件

RTC には専用の電源ピンがあり、コア電源がオフにされた場合も含めて、クロック機能に電力を常時供給しています。

RTC クロックの条件
RTC タイマは、プロセッサの外部にある 32.768kHz 水晶発振器によってクロック駆動されます。RTC システム・メモリマップド・レジスタ（MMR）
は、この水晶発振器によってクロック駆動されます。プリスケーラがディスエーブルにされると、RTC MMR は 32.768kHz の水晶発振器周波数でクロック駆動されます。プリスケーラがイネーブルにされると、RTC
MMR は1Hz のレートでクロック駆動されます。
ソフトウェアから RTC カウンタをディスエーブルにする方法はありません。特定のシステムが RTC 機能を必要としない場合には、ハードウェアのタイオフ（tie-off）によってディスエーブルにできます。RTXI ピンを
EGND に接続（tie）し、RTCVDD ピンを EVDD に接続し、RTXO ピンを無接続のままにしておきます。さらに、RTC_PREN に0 を書き込むと、若干の節電になります。

RTC プログラミング・モデル
RTC プログラミング・モデルは、一連のシステムMMR から構成されます。ソフトウェアは RTC を設定し、これらのレジスタへの読出し／書込
みを通じて RTC のステータスを決定できます。RTC 割込みコントロール・レジスタ（RTC_ICTL）と RTC 割込みステータス・レジスタ（RTC_ISTAT）
は、RTC割込み管理機能を提供します。
なお、ソフトウェアは、RTCのカウント機能をディスエーブルにできません。しかし、すべての RTC割込みは、ディスエーブルにする（つまり、マスクする）ことができます。リセット時には、すべての割込みがディス
エーブルにされます。RTC の状態は、システムMMRステータス・レジス
タによっていつでも読み出すことができます。

16-4

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

リアルタイム・クロック

16-3 ページの図 16-1 に示す、主なリアルタイム・クロック機能は、独立した RTC Vdd 電源によって電力を供給されるレジスタとカウンタから構成されます。このロジックはリセットされません。RTC Vdd が最初にパワーオンされたときには、このロジックは不明の状態で立ち上がります。

1Hz࠴࠶ࠢREG

RTC VDDߦࠃߞߡ㔚ജଏ⛎ߐࠇ߹ߔ
1Hz࠴࠶ࠢߦࠃߞߡࠢࡠ࠶ࠢ㚟േߐࠇ߹ߔ
ౝㇱVDDߦࠃߞߡ㔚ജଏ⛎ߐࠇ߹ߔ
SCLKߦࠃߞߡࠢࡠ࠶ࠢ㚟േߐࠇ߹ߔ

N

REGᦠㄟߺ଻ᜬਛ

N

REG⺒಴ߒࠪࡖ࠼࠙

16/32
RST

REGᦠㄟߺ
଻⇐ਛ

RTC_ISTAT

16/32

16

16

REG߳ߩ
MMRᦠㄟߺ
PAB࠮࠶࠻

5ᦠㄟߺ଻⇐ਛࠬ࠹࡯࠲ࠬ

┙ਅ߇ࠅ
ࠛ࠶ࠫᬌ಴

ᦠㄟߺቢੌࠗࡌࡦ࠻

図 16-2. RTC レジスタのアーキテクチャ
RTC には、プロセッサ・コアやその他のペリフェラルと同じ内部 Vdd によって電力供給されるロジックも含まれています。このロジックには、若干の制御機能、PAB 書込みデータ用の保持レジスタ、RTC Vdd から電力供給される5本のレジスタのそれぞれに対してプリフェッチされるPAB読

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

16-5

RTC プログラミング・モデル

出しデータ・シャドウ・レジスタが含まれています。このロジックは、他のペリフェラルと同じシステム・リセットによってリセットされ、同じ
SCLK によってクロック駆動されます。
16-5 ページの図 16-2 は、RTC Vdd によって電力供給される RTC MMR、それに対応して内部 Vdd によって電力供給される書込み保持レジスタ、および読出しシャドウ・レジスタ間の接続を示します。この図で、「REG」
は、RTC_STAT、RTC_ALARM、RTC_SWCNT、RTC_ICTL、RTC_PREN の各レジスタを意味します。RTC_ISTAT レジスタは、PABにだけ接続されます。
1Hz RTCクロックの立上がりエッジは「1Hzチック」です。ソフトウェア
は、秒数イベント・フラグのセットを待つか、秒数割込みを待つ（イネーブルの場合）ことによって、この1Hzチックに同期することができます。

■ レジスタの書込み
RTC 割込みステータス・レジスタ（RTC_ISTAT）以外のすべての RTC MMRへの書込みは、書込み保持レジスタに保存されてから、RTC の 1Hzクロックに同期されます。RTC_ISTAT の書込み保留中ステータス・ビットは、書込みの進捗を示します。書込み保留中ステータス・ビットは、書込みが開始されるとセットされ、すべての書込みが完了するとクリアされます。書
込み保留中ステータス・ビットの立下がりエッジでは、RTC_ISTAT の書込
み完了フラグがセットされます。このフラグは、割込みを起こすように
RTC_ICTL で設定できます。ソフトウェアは、1つの RTC MMR への書込み
完了を待ってから別の RTC MMR に書き込む必要はありません。実行中の書込みがある場合には、書込み保留中ステータス・ビットがセットされます。書込み完了フラグがセットされるのは、すべての書込みが完了したときだけです。

[

ペリフェラルのリセット時に実行中の書込みはアボートされます。
すべての RTC 書込みが完了するまでは、SCLK を停止させたり（ディープ・スリープ・モードに入ります）、内部 Vdd 電源を切断したりしないでください。

16-6

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

リアルタイム・クロック[

同じレジスタに書き込む際には、前の書込みの完了を待ってからにしてください。前の書込みが完了していない場合には、同じレジス
タへの後からの書込みは無視されます。

[

書き込まれたレジスタを、書込み完了フラグがセットされる前に読み出すと、古い値が返されます。読出し／書込みを行う前に、書込
み保留中ステータス・ビットを必ずチェックしてください。

■ 書込み遅延
RTC MMR への書込みは、1Hz のRTC クロックに同期されます。時刻を設定するときには、RTC MMR に書き込む際の遅延は考慮しないでください。リアルタイム・クロックを設定する最も正確な方法としては、秒数（1Hz）イベント・フラグを監視するか、またはこのイベントに対する割込みをプログラムしてから、割込みサービス・ルーチン（ISR）でRTC ス
テータス・レジスタ（RTC_STAT）に現在の時刻を書き込みます。新しい値
は、インクリメンタに先行して挿入されます。ハードウェアは書き込まれる値に 1秒を加算し（数、時、日には適切な桁上げを行って）、インクリメントされた値を次の 1Hz チックでロードして、その時点における時刻を表します。
任意の時点でポストされた書込みは、1Hzクロックに適切に同期されます。
書込みは1Hzクロックの立上がりエッジで完了します。1Hzチックの直前にポストされた書込みは、1秒後の1Hzチックまでは完了しないことがあります。1Hzチック後の最初の990msでポストされた書込みは、次の1Hzチッ
クで完了します。しかし最も簡単で、最も予測可能かつお勧めの方法としては、秒数割込みまたはイベントの直後に RTC_STAT、RTC_ALARM、RTC_SWCNT、
RTC_ICTL、または RTC_PREN への書込みだけをポストします。これら5本のレジスタは、同じ秒で書込みできる場合もあります。
RTC_ISTAT レジスタの W1Cビットは、すぐに有効になります。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

16-7

RTC プログラミング・モデル■ レジスタの読出し
RTC MMR の読出しに際しては、値は読出しシャドウ・レジスタから得られるため、遅延はありません。これらのシャドウは、その秒に対する RTC
割込みやイベント・フラグがアサートされるまでに、更新されて読出しの準備が行われます。SCLK の始動後に内部Vdd ロジックがその初期化シーケ
ンスを完了すると、同期上の理由から RTC MMR の読出しが危険となる時
点はありません。RTC MMRはコヒーレントな値を常に返しますが、それらの値は不明の場合もあります。

■ ディープ・スリープ
ダイナミック・パワー・マネジメント・コントローラ（DPMC）の状態がディープ・スリープである場合、システム内のすべてのクロック（RTXI と
RTC 1Hz チックを除く）は停止します。この状態で、RTC Vdd カウンタ
はインクリメントを続行します。内部 Vdd シャドウ・レジスタは更新されませんが、読み出すこともできません。
ディープ・スリープ状態では、RTC_ISTAT の全ビットがクリアされます。
ディープ・スリープ中に発生するイベントは、RTC_ISTAT に記録されません。内部 Vdd RTC コントロール・ロジックは、SCLK が再起動してから 1
RTXI 周期（30.52µs）内に仮想 1Hz チックを生成します。これによって、すべてのシャドウ・レジスタに最新の値がロードされ、秒数イベント・フ
ラグがセットされます。他のイベント・フラグもセットされる場合があります。RTCイベントまたはハードウェア・リセットによって、システムがディープ・スリープ状態からウェイクアップすると、その秒（その秒のみ）の間に発生したすべての RTC イベントは、RTC_ISTAT で報告されます。
システムがディープ・スリープ状態からウェイクアップしたとき、ソフト
ウェアは、RTC_ISTAT のビットを W1C する必要はありません。すべてのW1C ビットは、すでにハードウェアによってクリアされています。RTCの内部 Vdd ロジックがそのリスタート・シーケンスを完了すると、秒数イ

16-8

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

リアルタイム・クロック

ベント・フラグがセットされます。ソフトウェアでは、秒数イベント・フ
ラグがセットされるまで待ってから、RTCレジスタの読出し／書込みを始めてください。

■ プリスケーラのイネーブル
RTC プリスケーラ・イネーブル・レジスタ（RTC_PREN）の1 つのアクティ
ブ・ビットは、同期パスを使用して書き込まれます。ビットのクリアは、
32.768kHz のクロックに同期します。この高速な同期によって、モジュー
ルは、書込みの完了をまる 1秒待つことなく、高速モードに入ることができます（プリスケーラをバイパス）。ただし、プリスケーラをイネーブルにして、モジュールがすでに実行中であった場合には、まる 1秒の待機が必要になります。
RTC_PREN ビットをセットすると、1Hz クロックの最初の立上がりエッジ

は、プリスケーラがイネーブルにされてから 32.768kHz クロックの 1 ～ 2
サイクル後で発生します。プリスケール・カウンタをイネーブル／ディス
エーブルにしても、書込み完了ステータス／割込みはいつものように機能します。新しい RTC クロック・レートは、書込み完了ステータスがセットされる前に有効になります。

■ イベント・フラグ[

パワーアップ時のレジスタ内の値が不定なため、各レジスタに正しい値が書き込まれる前にイベント・フラグがセットされることがあります。1Hz クロック・エッジを使用しているため、RTC_STAT への書込みと RTC_ALARM への書込みの間にまる 1 秒の開きが生じることがあります。リセット後の RTC_ALARM の値が RTC_STAT に書き込
ま れた 値 と同 じ であ る 場合 に は、こ れ によ っ て、RTC_STAT と
RTC_ALARM とが有効になるまで 1 秒の遅延が新たに生じることにな
ります。これらのレジスタでの書込みが完了するのを待ってから、それらの値に関係付けられたフラグや割込みを使用します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

16-9

RTC プログラミング・モデル

次に示すのは、フラグと、それらが有効になる条件の一覧です。
• 秒（1Hz）イベント・フラグ
1Hz クロックの立上がりエッジと、シャドウ・レジスタがディー
プ・スリープからウェイクアップして更新された後に、常にセットされます。これは、RTC 1Hz クロックが動作している限り有効です。このフラグや割込みは、他のフラグを検証するために使用します。
• 書込み完了
常に有効です。
• 書込み保留中ステータス常に有効です。
• 分イベント・フラグ
RTC_STAT の秒フィールドが有効になった後でのみ有効です。このフラグ値を使用したり割込みをイネーブルにしたりする前に、書込
み完了と書込み保留中ステータスのフラグやそれらの割込みを使用して RTC_STAT 値を検査します。
• 時イベント・フラグ
RTC_STAT の分フィールドが有効になった後でのみ有効です。このフラグ値を使用したり割込みをイネーブルにしたりする前に、書込
み完了と書込み保留中ステータスのフラグやそれらの割込みを使用して RTC_STAT 値を検証します。

16-10

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

リアルタイム・クロック• 24時間イベント・フラグ
RTC_STAT の時フィールドが有効になった後でのみ有効です。このフラグ値を使用したり割込みをイネーブルにしたりする前に、書込
み完了と書込み保留中ステータスのフラグやそれらの割込みを使用して RTC_STAT 値を検証します。
• ストップウォッチ・イベント・フラグ
RTC_SWCNT レジスタが有効になった後でのみ有効です。このフラグ値を使用したり割込みをイネーブルにしたりする前に、書込み完了と書込み保留中ステータスのフラグやそれらの割込みを使用して
RTC_SWCNT 値を検証します。
• アラーム・イベント・フラグ
RTC_STATレジスタとRTC_ALARMレジスタが有効になった後でのみ有効です。このフラグ値を使用したり割込みをイネーブルにしたりする前に、書込み完了と書込み保留中ステータスのフラグやそれらの割込みを使用して、RTC_STAT 値と RTC_ALARM 値を検証します。
• 日アラーム・イベント・フラグ
アラームと同じです。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

16-11

RTC プログラミング・モデル

同じ秒の最初に一緒にポストされた書込みは、次の 1Hz チックで一緒に有効になります。次のシーケンスは安全であり、前の状態からのスプリアス
割込みにつながることはありません。
1. 1Hz チックだけ待ちます。
2. 1 を書き込んで、アラーム、日アラーム、ストップウォッチ、インターバルごとの RTC_ISTAT フラグをクリアします。
3. RTC_STAT、RTC_ALARM、RTC_SWCNT 用の新しい値を書き込みます。
4. アラーム、日アラーム、ストップウォッチ、インターバルごとの割込みをイネーブルにして、RTC_ICTL の新しい値を書き込みます。
5. 1Hz チックだけ待ちます。
6. これで新しい値は同時に有効になりました。

■ 割込み
RTC では、以下を含めて、いくつかのプログラマブルなインターバルで割込みを提供できます。
• 毎秒
• 毎分
• 毎時
• 毎日
• プログラマブルな値からのカウントダウン時• 毎日特定の時刻• 特定の日時

16-12

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

リアルタイム・クロック

RTC は、任意の 1Hzレジスタ（RTC_STAT、RTC_ALARM、RTC_SWCNT、RTC_ICTL、
RTC_PREN）へのすべての保留中書込みの完了時に割込みを提供するようにプログラムできます。割込みは、RTC 割込みコントロール・レジスタ（RTC_ICTL）を使用して、個々にイネーブル／ディスエーブルできます。
割込みステータスは、RTC割込みステータス・レジスタ（RTC_ISTAT）を読み出すことで判断できます。
RTC 割込みは、RTC_ISTAT レジスタにラッチされたイベントが RTC_ICTL レ
ジスタでイネーブルにされるたびに設定されます。保留中の RTC 割込み
は、RTC_ISTAT 内のイネーブルにされセットされたすべてのビットがクリアされるたびに、または保留中のイベントに対応する RTC_ICTL 内のすべてのビットがクリアされるときにクリアされます。
16-14 ページの図 16-3 に示すように、RTC は、スリープ状態からのウェ
イクアップとイベント処理用に、プロセッサ・コアへの割込み要求（IRQ）
を生成します。RTC は、ディープ・スリープからのウェイクアップや内部
Vdd のパワーオフ状態からのウェイクアップに対して、別個の信号を生成します。ディープ・スリープ・ウェイクアップ信号は、RTC_ICTL でイネー
ブルにされた RTC インターバル・イベントが発生したとき、1Hz チック
でアサートされます。ディープ・スリープ・ウェイクアップ信号のアサー
ションによって、プロセッサのコア・クロック（CCLK）とシステム・ク
ロック（SCLK）が再起動されます。イネーブルにされたイベントが RTC
ディープ・スリープ・ウェイクアップ信号をアサートする場合にも、SCLKが再起動されたら RTC IRQ がアサートされます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

16-13

RTC_STAT レジスタᣣ‫ᤨޔ⑽ޔᤨޔ‬㑆‫ޔ‬
ࠬ࠻࠶ࡊ
ಽ‫ޔ‬
࠙ࠜ࠶࠴
ࠕ࡜࡯ࡓ‫ޔ‬ࠗࡌࡦ࠻ࡄࡢ࡯ࠝࡈ߆ࠄ࠙ࠚࠗࠢ

57&B,&7/㔚࿶࡟ࠡࡘ࡟࡯࠲



+]
࠴࠶ࠢ



57&9''ߦࠃߞߡ㔚ജଏ⛎ߐࠇ߹ߔ
ౝㇱ9''ߦࠃߞߡ
㔚ജଏ⛎ߐࠇ߹ߔ

ᄖㇱ9''ߦࠃߞߡ
㔚ജଏ⛎ߐࠇ߹ߔ

ᦠㄟߺ
ቢੌ
ࠗࡌࡦ࠻



57&B,67$7

࠺ࠖ࡯ࡊ࡮ࠬ࡝࡯ࡊ߆ࠄ
࠙ࠚࠗࠢ

3//,&7/⺒಴ߒࠪࡖ࠼࠙ ᦠㄟߺቢੌ
ࠗࡀ࡯ࡉ࡞





57&
,54

ࠪࠬ࠹ࡓ
ഀㄟߺ
ࠦࡦ࠻ࡠ࡯࡜

ࡊࡠ࠮࠶ࠨ࡮
ࠦࠕ

図 16-3. RTC の割込み構造

RTC_STAT レジスタ
RTC ステータス・レジスタ（RTC_STAT）は、現在の時刻を読出し／書込
みするために使用されます。読出しによって返される 32 ビット値は、日、時、分、および秒カウンタの現在の状態を常に反映しています。読出し／
書込みは、32 ビット・トランザクションであることが必要です。16 ビット・トランザクションの場合には、MMRエラーにつながります。読出し
では、一貫性のある 32 ビット値が常に返されます。時、分、および秒のフィールドは、一般に実際の時刻に合わせて設定されます。日カウンタの値は、毎日の真夜中にインクリメントされ、前回変更されて以降に経過し16-14

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

リアルタイム・クロック

た日数を記録します。この値は、特定の暦日には対応しません。15ビットの日カウンタは、オーバーフローするまでに 89 年と260 日または261 日（うるう年による）の範囲を提供します。
1Hz チック後に、RTC_STAT に現在の時刻をプログラムします。次の 1Hz
チックで、RTC_STAT は、新しい、インクリメントされた値を取得します。
次に例を示します。
1. 1Hz チックだけ待ちます。
2. RTC_STAT を読み出し、10:45:30 を取得します。
3. RTC_STAT に現在の時刻、13:10:59 を書き込みます。
4. RTC_STAT を読み出すと、まだ古い時刻 10:45:30 を取得します。
5. 1Hz チックだけ待ちます。
6. RTC_STAT を読み出すと、新しい現在の時刻 13:11:00 を取得します。
RTC ステータス・レジスタ（RTC_STAT）

0xFFC0 0300

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X X X X X

リセット＝未定義
時 [4](0 ～ 23)日カウンタ [14:0](0 ～ 32767)

15 14 13 12 11 10 9
X X X X X X X

8
X

7 6
X X

5
X

4
X

3
X

2
X

1 0
X X
秒 [5:0](0 ～ 59)
分 [5:0](0 ～ 59)
時 [3:0](0 ～ 23)

図 16-4. RTC ステータス・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

16-15

RTC_ICTL レジスタ

RTC_ICTL レジスタ8 つの RTC 割込 み イベ ン トは、RTC 割込 み コン ト ロー ル・レジ ス タ（RTC_ICTL）によって、個々にマスクしたりイネーブルにしたりできます。
秒割込みは、各 1Hz クロック・チックで生成されます（イネーブルの場合）。分割込みは、秒カウンタを 59から 0に進める 1Hz クロック・チック
で生成されます。時割込みは、分カウンタを 59から0に進める 1Hzクロック・チックで生成されます。24 時間割込みは、時刻を真夜中（00:00:00）に進める 1Hz クロック・チックで、24 時間に一度発生します。これらの割込みは、いずれもプロセッサへのウェイクアップ要求を生成できます（イネーブルの場合）。実装されたすべてのビットは、読出し／書込みです。

[

16-16

このレジスタは、リセット時に部分的にのみクリアされるため、イ
ベントによっては初めからイネーブルであるように思われることがあります。しかし、PLL への RTC ウェイクアップと RTC 割込
みは特殊な処理が行われ、RTC_ICTL レジスタへの最初の書込みが完了するまではマスクされます（ローに強制されます）。したがって、たとえ RTC_ICTL のいくつかのビットが非ゼロとして読み出されても、すべての割込みは、あたかもシステム・リセット時にディスエーブルにされた（RTC_ICTL の全ビットがゼロである）かのよ
うに振る舞います。リセットの直後に RTC 割込みが必要ない場合

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

リアルタイム・クロックには、後からの読出し―修正―書込みアクセスが意図したとおりに機能するように、RTC_ICTL に 0x0000 を書き込むことをお勧めします。
RTC 割込みコントロール・レジスタ（RTC_ICTL）
0 - 割込みディスエーブル、1 - 割込みイネーブル
0xFFC0 0304

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
X

5
X

4
X

3
X

2
X

1 0
X X

リセット＝ 0x00XX

書込み完了割込み
イネーブル

ストップウォッチ割込みイ
ネーブル

日アラーム割込みイネーブル（日、時、分、秒）

アラーム割込みイネーブル（時、分、秒）

24時間割込みイネーブル

秒（1Hz）割込み
イネーブル

時割込みイネーブル

分割込みイネーブル

図 16-5. RTC 割込みコントロール・レジスタ

RTC_ISTAT レジスタ
RTC 割込みステータス・レジスタ（RTC_ISTAT）は、すべての RTC 割込みのステータスを提供します。これらのビットはスティッキーです。各ビットは、対応するイベントによってセットされると、このレジスタへのソフ
トウェア書込みによってクリアされるまでセットされたままです。イベン
ト・フラグは常にセットされており、RTC_ICTL の割込みイネーブル・ビッ
トによってマスクされません。値は、それぞれのビット位置に 1を書き込
むことによってクリアされます。ただし、書込み保留中ステータス・ビッ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

16-17

RTC_SWCNT レジスタ

トは読出し専用です。レジスタのビットに 0を書き込んでも、効果はありません。このレジスタは、リセット時とディープ・スリープ時にクリアされます。
RTC 割込みステータス・レジスタ（RTC_ISTAT）
ビット 14 以外の全ビットは、Write-1-to-Clear です

0xFFC0 0308

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

書込み完了
0 - 書込み（ある場合）はまだ完了していません
1 - すべての保留中書込みが完了
書込み保留中ステータス（RO）
0 - 保留中の書込みなし
1 - 少なくとも 1 つの書込みが保留中
日アラーム・イベント・フラグ
0 - イベントなし
1 - イベントが発生
24時間イベント・フラグ
0 - イベントなし
1 - イベントが発生

3
0

2
0

1
0

0
0

リセット＝ 0x0000

ストップウォッチ・
イベント・フラグ
0 - イベントなし
1 - イベントが発生
アラーム・イベント・フラグ
0 - イベントなし
1 - イベントが発生
秒（1Hz）イベント・フラグ
0 - イベントなし
1 - イベントが発生
分イベント・フラグ
0 - イベントなし
1 - イベントが発生
時イベント・フラグ
0 - イベントなし
1 - イベントが発生

図 16-6. RTC 割込みステータス・レジスタ

RTC_SWCNT レジスタ
RTC ストップウォッチ・カウント・レジスタ（RTC_SWCNT）には、ストップウォッチのカウントダウン値が含まれています。ストップウォッチは、プログラムされた値から秒数をカウント・ダウンし、カウントが 0 になると割込みを生成します（イネーブルの場合）。カウンタは、この時点でカウントを停止し、RTC_SWCNT に新しい値が書き込まれるまではカウントを再開しません。カウンタは、いったん動作すると、新しい値で上書きされ

16-18

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

リアルタイム・クロック

ることがあります。これによって、ストップウォッチは、1 秒の精度を持
つウォッチドッグ・タイマとして使用できます。動作中のストップウォッ
チに 0 を書き込むと、ストップウォッチは停止し、早期に割込みが生じます。ストップウォッチ・イベント・フラグは、以下のいずれかの条件が発生したとき、1Hz チックでセットされます。
• ストップウォッチ・カウンタが 0x0000までデクリメントする• RTC_SWCNT への 0x0000 の書込みが完了し、ストップウォッチが動作していた（現在のストップウォッチ・カウントは 0より大でした）• RTC_SWCNT への 0x0000 の書込みが完了し、ストップウォッチが停止しました（現在のストップウォッチ・カウントは 0でした）
レジスタには、0～（216 － 1）秒の任意の値をプログラムできます。これは 18時間、12分、15秒の範囲です。
一般に、ソフトウェアは 1Hzチックだけ待ってから、RTC_SWCNT を書き込みます。1 秒後に、RTC_SWCNT は新しい値に変化し、デクリメントを開始します。レジスタの書込みではほぼ 1 秒を占有するので、値 N を書き込んでからストップウォッチ割込みまでの時間は約 N + 1 秒です。正確な遅延を生成するには、ソフトウェアは N – 1 を書き込んでほぼ N 秒の遅延を得ることで補正できます。これは、ストップウォッチでは 1秒の遅延を達成できないことを意味します。1Hz チックの直後に値1を書き込むと、ほぼ2 秒後のストップウォッチ割込みにつながります。1 秒待つには、ソフトウェアでは次の 1Hz チックを待つことになります。
RTC ストップウォッチ・カウント・レジスタはリセットされません。最初のパワーアップ後、このレジスタは動作していることがあります。ストップウォッチが使用されない場合、これに 0を書き込んで停止させれば、若干の節電になります。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

16-19

RTC_ALARM レジスタ

RTC ストップウォッチ・カウント・レジスタ（RTC_SWCNT）

0xFFC0 030C

15 14 13 12 11 10 9
X X X X X X X

8
X

7 6
X X

5
X

4
X

3
X

2
X

1 0
X X

リセット＝未定義

ストップウォッチ・カウント（0 ～ 65,535）

図 16-7. RTC ストップウォッチ・カウント・レジスタ

RTC_ALARM レジスタ
RTC アラーム・レジスタ（RTC_ALARM）は、アラーム割込みが発生する時
刻（時、分、秒単位）として、ソフトウェアによってプログラムされます。読出し／書込みはいつでも行えます。アラーム割込みは、時、分、秒のフィールドが RTC ステータス・レジスタのフィールドと最初に一致す
るたびに発生します。日割込みは、日、時、分、秒のフィールドが RTC
ステータス・レジスタのフィールドと最初に一致するたびに発生します。
RTC アラーム・レジスタ（RTC_ALARM）
0xFFC0 0310

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X X X X X

リセット＝未定義

時 [4]（0 ～ 23）
日 [14:0]（0 ～ 32767）
15 14 13 12 11 10 9
X X X X X X X

8
X

7 6
X X

5
X

4
X

3
X

2
X

1 0
X X
秒 [5:0]（0 ～ 59）
分 [5:0]（0 ～ 59）
時 [3:0]（0 ～ 23）

図 16-8. RTC アラーム・レジスタ
16-20

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

リアルタイム・クロック

RTC_PREN レジスタ
RTC プリスケーラ・イネーブル・レジスタ（RTC_PREN）には、1つのアク
ティブ・ビットがあります。このビットがセットされると、プリスケーラ
がイネーブルにされ、RTC は1Hz の周波数で動作します。このビットがク リ ア さ れ る と、プ リ ス ケ ー ラ は デ ィ ス エ ー ブ ル に さ れ、RTC は32.768kHz の水晶発振器周波数で動作します。
RTC が適切なレートで動作するには、ソフトウェアは最初のパワーアップ
後にプリスケーラ・イネーブル・ビットをセットする必要があります。
RTC_PREN に書き込み、書込み完了イベントを待ってから、他のレジスタを
プログラミングします。プロセッサがブートするたびに、RTC_PREN に 1を書き込むと安全です。最初はビットがセットされますが、状態は変更されないため、それに続く書込みは効果がありません。

[のビットをクリアしてプリスケーラをディスエーブルにするには、前もって、RTC MMR への書込みが進行中でないことを必ず確認してください。通常動作時には、このビットのセットとクリアによって高速モードと低速モードを切り替えないでください。カウンタによるリアルタイムの正確なトラッキングが乱される原因となります。このような潜在的なエラーを回避するには、ス
タートアップ時に RTC_PREN によって RTC を初期化し、通常動作時にはプリスケーラの状態を動的に変更しないでください。

RTC_PREN

プリスケーラをイネーブルにしない状態での実行は、主にテスト・モード
として提供されています。すべての機能が 32,768 倍の速度で動作します。
普通のソフトウェアでは、RTC_PREN に0 をプログラムすることはありません。そうする唯一の理由は、1Hzチックは予想されるように、RTC_PREN の

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

16-21状態遷移のまとめ

0 →1 遷移の数 RTXI サイクル後で発生するため、1Hz チックをより正確な
外部イベントに同期することです。100µs以内の同期を達成するには、次のシーケンスに従ってください。
1. RTC_PREN に 0 を書き込みます。
2. 書込みの完了を待ちます。
3. 外部イベントを待ちます。
4. RTC_PREN に 1 を書き込みます。
5. 書込みの完了を待ちます。
6. RTC_STAT に時刻を再プログラムします。
プリスケーラ・イネーブル・レジスタ（RTC_PREN）

0xFFC0 0314

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
X

リセット＝未定義

プリスケーラ・イネーブル（PREN）

図 16-9. プリスケーラ・イネーブル・レジスタ

状態遷移のまとめ表 16-1 は、各 RTC MMRがシステム状態によってどう影響を受けるかを示します。フェーズ・ロック・ループ（PLL）の状態（リセット、フル・オン、アクティブ、スリープ、ディープ・スリープ）は、第 8 章「ダイナミック・パワー・マネジメント」で定義されています。「無電源」とは、プロセッサのどの電源ピンもエネルギー源に接続されていないことを意味します。
「オフ」とは、プロセッサ・コア、ペリフェラル、メモリが電力供給されていない（内部 Vdd がオフになっている）ことを意味しますが、RTC は依然として電力供給されて動作しています。外部 Vdd は依然として電力供給されていることがあります。「書込みどおり」と記述されたレジ

16-22

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

リアルタイム・クロック

スタは、ソフトウェアがレジスタに書き込んだ最後の値を保持しています。RTC Vdd 電源が印加されて以降、レジスタが書き込まれていない場
合、状態は不明です（RTC_STAT、RTC_ALARM、RTC_SWCNT の全ビット、および RTC_ISTAT、RTC_PREN、RTC_ICTL の一部のビットの場合）。
表 16-1.

RTC MMR に対する状態の影響

RTC
Vdd

IVdd

システム状
態

RTC_ICTL

RTC_ISTAT

RTC_STATRTC_SWCNTRTC_ALARM
RTC_PREN

オフ

オフ

無電源

X

X

X

X

オン

オン

リセット

書込みどおり0

カウント

書込みどおり

オン

オン

フル・オン

書込みどおりイベント

カウント

書込みどおり

オン

オン

スリープ

書込みどおりイベント

カウント

書込みどおり

オン

オン

アクティブ

書込みどおりイベント

カウント

書込みどおりオンオン

デ ィ ー プ・ 書込みどおり
スリープ

0

カウント

書込みどおり

オン

オフ

オフ

X

カウント

書込みどおり書込みどおり表 16-2 に、さまざまなシステム状態遷移イベントにおける、RTC に関するソフトウェアの責任を要約します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

16-23状態遷移のまとめ

表 16-2.

RTC システム状態遷移イベント

以下のイベントで：

以下のシーケンスを実行：

無電源からのパワーオン

RTC_PREN ＝ 1 を書き込みます。
書込み完了を待ちます。
RTC_STAT に現在の時刻を書き込みます。
必要ならば、RTC_ALARM に書き込みます。
RTC_SWCNT に書き込みます。
RTC_ISTAT に書き込んで保留中の RTCイベントをクリアします。
RTC_ICTL に書き込んで、希望する RTC 割込みをイネーブルにするか、すべての RTC 割込みをディスエーブルにします。

リセット後のフル・オン
または
パワーオフからパワーオン後のフル・オン

秒イベントを待つか、RTC_PREN ＝ 1 を書き込んで書込み完了を待ちます。
RTC_ISTAT に書き込んで保留中の RTCイベントをクリアします。
RTC_ICTL に書き込んで、希望する RTC 割込みをイネーブルにするか、すべての RTC 割込みをディスエーブルにします。
必要に応じて RTC MMR を読み出します。

ディープ・スリープからのウェイク

秒イベント・フラグのセットを待ちます。
RTC_ISTAT に書き込んで RTC ディープ・スリープ・ウェ
イクアップをアクノレッジします。
必要に応じて RTC MMR を読み出します。
これで PLL 状態はアクティブです。必要に応じてフル・オンに遷移します。

スリープからのウェイク

RTC からのウェイクアップの場合、秒イベント・フラグがセットされます。この場合、RTC_ISTAT に書き込んでRTC ウェイクアップ IRQ をアクノレッジします。
必ず、必要に応じて RTC MMR を読み出します。

スリープになる前に

RTC によるウェイクアップが望ましい場合：
必要に応じて RTC_ALARM や RTC_SWCNT に書き込んで、ウェイクアップ・イベントをスケジュールします。
RTC_ICTL に書き込んで、ウェイクアップ用の希望する
RTC 割込みソースをイネーブルにします。
書込み完了を待ちます。
システム割込みウェイクアップ・イネーブル・レジスタ（SIC_IWR）で、ウェイクアップ用の RTC をイネーブルに
します。

16-24

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

リアルタイム・クロック

表 16-2.

RTC システム状態遷移イベント（続き）

以下のイベントで：

以下のシーケンスを実行：

ディープ・スリープになる前に必要に応じて RTC_ALARM や RTC_SWCNT に書き込んで、ウェイクアップ・イベントをスケジュールします。
RTC_ICTL に書き込んで、ディープ・スリープ・ウェイク
アップ用の希望する RTC イベント・ソースをイネーブルにします。
書込み完了を待ちます。

オフになる前に必要に応じて RTC_ALARM や RTC_SWCNT に書き込んで、ウェイクアップ・イベントをスケジュールします。
RTC_ICTL に書き込んで、パワーアップ・ウェイクアップ
用の希望する RTC イベント・ソースをイネーブルにします。
書込み完了を待ちます。
電圧レギュレータ・コントロール・レジスタ（VR_CTL）のウェイク・ビットをセットします。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

16-25状態遷移のまとめ

16-26

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

第17章 外部バス・インターフェース・
ユニット

外部バス・インターフェース・ユニット（EBIU）は、外部メモリへのグ
ルーレス・インターフェースを提供します。このプロセッサは、シンクロ
ナス DRAM（SDRAM）に対応しており、PC100 と PC133 の SDRAM 規格に準拠します。EBIUでは、SRAM、ROM、FIFO、フラッシュ・メモ
リ、ASIC/FPGA 設計などの非同期インターフェースも提供します。

概要
EBIU は、コアやDMAチャンネルからの外部メモリ要求を処理します。要求の優先順位は、外部バス・コントローラによって決定されます。要求がEBIU SDRAM コントローラによって処理されるか、EBIU 非同期メモリ・
コントローラによって処理されるかは、要求のアドレスによって決まります。
EBIU は、システム・クロック（SCLK）によってクロック駆動されます。
プロセッサにインターフェースされたすべての同期メモリは、SCLK 周波数で動作します。コア周波数と SCLK 周波数との比率は、フェーズ・ロック・
ループ（PLL）システム・メモリマップド・レジスタ（MMR）を使用してプログラムすることができます。詳細については、8-5 ページの「コア・クロック／システム・クロックの比率制御」を参照してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-1

概要

17-3 ページの図 17-1 は外部メモリ空間を示します。SDRAM専用にメモリ領域が 1つ用意されています。SDRAM インターフェースのタイミングと SDRAM領域のサイズはプログラマムすることができます。SDRAMメ
モリ空間のサイズは 16～128M バイトの範囲にすることができます。

L

16Mバイト未満のSDRAMへの接続方法については、
18-8ページの「16M バイトよりも小さいSDRAM の利用」を参照してください。

SDRAM メモリ空間の開始アドレスは 0x0000 0000です。SDRAM メモリ
空間の最後からアドレス 0x2000 0000 までの領域は予備になっています。
次の 4 つの領域は、非同期メモリのサポート専用です。さまざまなメモリ・デバイスに対応するために、各非同期メモリ領域は個別にプログラムできます。各領域には、EBIU からの専用のメモリ・セレクト出力ピンがあります。
次の領域は、予備のメモリ空間です。この領域を参照しても、外部バス・
トランザクションは生成されません。書込みは外部メモリ値に影響を与えず、読出しは未定義の値を返します。EBIUは、内部バス上にエラー応答を生成します。これによって、コア・アクセスに対するハードウェア例外が生成されたり、オプションでは DMAチャンネルから割込みが生成され
ます。

17-2

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット

ᄖㇱࡔࡕ࡝࡮ࡑ࠶ࡊ
[(())))))੍஻[))))㕖หᦼࡔࡕ࡝࡮ࡃࡦࠢ㧔0E\WH㧕[
㕖หᦼࡔࡕ࡝࡮ࡃࡦࠢ㧔0E\WH㧕[
㕖หᦼࡔࡕ࡝࡮ࡃࡦࠢ㧔0E\WH㧕[
㕖หᦼࡔࡕ࡝࡮ࡃࡦࠢ㧔0E\WH㧕[

੍஻

6'5$0ࡔࡕ࡝࡮ࡃࡦࠢ
㧔㨪0E\WH㧕[
ᵈ㧦਄ߩ࿑ߢߪ‫੍ޔ‬஻ࠝࡈ࠴࠶ࡊ࡮ࡔࡕ࡝㗔ၞߦ࡜ࡌ࡞߇ઃߌߡ޽ࠅ߹ߔ‫ޕ‬ߘߩઁߔߴߡߩࠝࡈ࠴࠶ࡊ࡮ࠪࠬ࠹ࡓ࡮࡝࠰࡯ࠬߪ‫ߩࡓ࠹ࠬࠪߣࠕࠦޔ‬ਔᣇߢࠕࠢ࠮ࠬน⢻ߢߔ‫ޕ‬

図 17-1. 外部メモリ・マップ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-3

概要

■ ブロック図
図 17-2は、EBIU とそのインターフェースの概念ブロック図を示します。
上線付きで示される信号名はアクティブ・ロー信号です。
一度にアクセスできるのは 1 つの外部メモリ・デバイスに限られるため、メモリ・タイプごとのコントロール・ピン、アドレス・ピン、データ・ピ
ンはこのデバイス側で多重化されています。非同期メモリ・コントローラ（AMC）と SDRAM コントローラ（SDC）は、共有されるピン・リソースを効果的に共用します。

DEB

PAB

㕖หᦼࡔࡕ࡝࡮
ࠦࡦ࠻ࡠ࡯࡜
㧔AMC㧕

SDRAM
ࠦࡦ࠻ࡠ࡯࡜
㧔SDC㧕

࠺ࡃࠗࠬ࡮ࡄ࠶࠼

EAB

ᄖㇱࡃࠬ࡮ࠦࡦ࠻ࡠ࡯࡜㧔EBC㧕EBIUDATA [15:0]
ADDR [19:1]
ABE [1:0]/SDQM [1:0]
AMS [3:0]
ARDY
AOE
ARE
AWE
SMS
CLKOUT
SCKE
SA10
SRAS
SCAS
SWE
BR
BG
BGH

図 17-2. 外部バス・インターフェース・ユニット（EBIU）

17-4

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット■ 内部メモリ・インターフェース
EBIU は、プロセッサ内部にある3つのバスのスレーブとして機能します。
• 外部アクセス・バス（EAB）：コアからの外部バス要求のために、
コア・メモリ・マネジメント・ユニットによって管理されます。
• DMA 外部バス（DEB）：DMA チャンネルからの外部バス要求のために、DMA コントローラによって管理されます。
• ペリフェラル・アクセス・バス（PAB）：コアからのシステム MMR
要求のために、コアによって管理されます。
これらは EBIU やパッド・レジスタと同様に、SCLK によってクロック駆動
される同期インターフェースです。EAB は、非同期外部メモリとシンク
ロナス DRAM 外部メモリへのアクセスを提供します。外部アクセスは、
EBIU のアクセスに使用される内部アドレスに応じて、非同期メモリ・コ
ントローラ（AMC）または SDRAM コントローラ（SDC）によって制御されます。AMC と SDCは外部ピンに対して同じインターフェースを共有するため、アクセスは直列化され、EAB からの要求に基づいて調停する必要があります。
3 番目のバス（PAB）は、EBIU のステータス・レジスタとメモリマップ
ド・コントロール・レジスタへのアクセスにのみ使用されます。PAB は、
AMC と SDC に対して別個に接続され、EAB バスとの調停は不要であり、EAB バスからアクセス・サイクルを受け取る必要もありません。
外部バス・コントローラ（EBC）ロジックは、EABバスやDEBバスから来る外部メモリに対するアクセス要求を調停する必要があります。EBCロ
ジックはバス選択に基づいて、読出し／書込み要求を適切なメモリ・コン
トローラに転送します。パッド・ロジックでは、AMC と SDC が共有リ
ソースへのアクセスを求めて競合します。この競合は、EBC アービタによって規定された順序により、パイプライン方式で解決されます。多くの状況では、コアからのトランザクションは DMA アクセスよりも優先され

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-5

概要

ます。しかし、DMAコントローラがトランザクションの過度のバックアップを検出した場合には、その優先順位を一時的にコアよりも上にするよう要求できます。

■ 外部メモリ・インターフェース
AMC と SDCでは、外部インターフェース・アドレス、データ・ピン、およびいくつかの制御信号を共有します。以下のピンは共有されます。
• ADDR[19:1]、アドレス・バス• データ [15:0]、データ・バス• ABE[1:0]/SDQM[1:0]、AMC バイト・イネーブル／ SDCデータ・マ
スク• BR、 BG、BGH、外部バス・アクセス制御信号
他の信号は、2 つのコントローラ間で多重化されません。
以下の表は、各インターフェースに関係付けられた信号を示します。
表 17-1.

17-6

非同期メモリ・インターフェース信号パッド

ピン・タイプ 1

説明

DATA[15:0]

I/O

外部データ・バス

ADDR[19:1]

O

外部アドレス・バス

AMS[3:0]

O

非同期メモリ・セレクト

AWE

O

非同期メモリ書込みイネーブル

ARE

O

非同期メモリ読出しイネーブル

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット

表 17-1.

非同期メモリ・インターフェース信号パッド

ピン・タイプ 1

説明

AOE

O

非同期メモリ出力イネーブル
多くの場合、AOE ピンは、外部メモリマップド非
同期デバイスの OE ピンに接続してください。実際のシステムで使用するインターフェース信号を決定する、AOE 信号と ARE 信号との間のタイミ
ン グ 情 報 に つ い て は、
『ADSP-BF531/
ADSP-BF532/ADSP-BF533 Embedded Processor
Data Sheet』を参照してください。

ARDY

I

非同期メモリ・レディ応答
これは同期入力です

ABE[1:0]/SDQM[1:0]O

バイト・イネーブル

1

ピン・タイプ：I ＝入力、O ＝出力

表 17-2.

SDRAM インターフェース信号パッド

ピン・タイプ1

説明

DATA[15:0]

I/O

外部データ・バス

ADDR[19:18],
ADDR[16:1]

O

外部アドレス・バス
SDRAM アドレス・ピンに接続します。バンク・アド
レスは ADDR[19:18] で出力され、SDRAM BA[1:0]ピンに接続してください。

SRAS

O

SDRAM 行アドレス・ストローブ・ピン
SDRAM の RAS ピンに接続します。

SCAS

O

SDRAM 列アドレス・ストローブ・ピン
SDRAM の CAS ピンに接続します。

SWE

O

SDRAM 書込みイネーブル・ピン
SDRAM の WE ピンに接続します。

ABE[1:0]/
SDQM[1:0]O

SDRAM データ・マスク・ピン
SDRAM の DQM ピンに接続します。

SMSO

SDRAM 用に設定された外部メモリ・バンクのメモ
リ・セレクト・ピン
SDRAM の CS（チップ・セレクト）ピンに接続します。アクティブ・ロー。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-7

概要

表 17-2.

SDRAM インターフェース信号（続き）

パッド

ピン・タイプ1

説明

SA10

O

SDRAM A10 ピン
AMC がバスを使用している間、SDRAM インターフェースは、このピンを使用してリフレッシュを可能にします。SDRAM の A[10] ピンに接続します。

SCKE

O

SDRAM クロック・イネーブル・ピン
SDRAM の CKE ピンに接続します。

CLKOUTOSDRAM クロック出力ピン
システム・クロック周波数で切り替えます。SDRAMの CLK ピンに接続します。

1

ピン・タイプ：I ＝入力、O ＝出力■ EBIU プログラミング・モデル l
ここでは、EBIUのプログラミング・モデルについて説明します。このモデルは、EBIU のプログラムに使用される、システム・メモリマップド・レジスタをベースにしています。
EBIU には、6本のコントロール・レジスタと 1本のステータス・レジスタがあります。
• 非同期メモリ・グローバル・コントロール・レジスタ（EBIU_AMGCTL）• 非同期メモリ・バンク・コントロール 0レジスタ（EBIU_AMBCTL0）• 非同期メモリ・バンク・コントロール 1レジスタ（EBIU_AMBCTL1）• SDRAMメモリ・グローバル・コントロール・レジスタ（EBIU_SDGCTL）• SDRAM メモリ・バンク・コントロール・レジスタ（EBIU_SDBCTL）• SDRAM 更新レート・コントロール・レジスタ（EBIU_SDRRC）• SDRAM コントロール・ステータス・レジスタ（EBIU_SDSTAT）

17-8

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット

これらのレジスタについては、この章の AMC とSDC の節で詳しく説明します。

■ エラー検出0x0000 0000～0xEEFF FFFFという範囲をアドレス指定するバス動作については、たとえそのバス動作が予備メモリやディスエーブルされた機能をアドレス指定するものであっても、EBIU は応答します。応答に際して、
EBIU はバス動作を完了（バス・マスタによって指定された適切な数のア
クノレッジをアサート）して、以下のエラー条件に対するバス・エラー信号をアサートします。
• 予備のオフチップ・メモリ空間へのアクセス• ディスエーブルにされた外部メモリ・バンクへのアクセス• SDRAM メモリ・バンクの未実装領域へのアクセス
コアが誤ったバス動作を要求した場合、EBIU からのバス・エラー応答はコア内部の HWE 割込みに割り当てられます（この割込みは、コアでマスクすることができます）。DMAマスターが誤ったバス動作を要求した場合には、バス・エラーはそのコントローラでキャプチャされ、オプションでコ
アへの割込みを生成できます。

非同期メモリ・インターフェース
非同期メモリ・インターフェースによって、さまざまなメモリ・タイプとペリフェラル・タイプに対するグルーレス・インターフェースが可能になります。これらには、SRAM、ROM、EPROM、フラッシュ・メモリ、
FPGA/ASIC 回路が含まれます。4 つの非同期メモリ領域がサポートされます。表 17-3 に示すように、それぞれに専用のメモリ・セレクト信号が関係付けられています。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-9

非同期メモリ・インターフェース

表 17-3.

非同期メモリ・バンクのアドレス範囲

メモリ・バンク選択

開始アドレス

終了アドレスAMS[3]

2030 0000

203F FFFF

AMS[2]

2020 0000

202F FFFF

AMS[1]

2010 0000

201F FFFF

AMS[0]

2000 0000

200F FFFF■ 非同期メモリ・アドレスのデコード
各非同期メモリ・バンクに割り当てられるアドレス範囲は 1Mバイトで固定されています。しかし、有効に設定したメモリ・バンク全体にメモリを配置する必要はありません。複数のメモリ・バンクにまたがる非常に大きなメモリ構造に対応する必要のある SDRAM メモリとは異なり、ここに格納されるコードやデータは、比較的簡単にコードやデータの構造を利用できる非同期メモリ・バンクの 1つに収まるよう制約されます。

L

なお、部分的に実装された AMC バンクの未実装メモリへのアクセスは、バス・エラーにはつながらず、有効な AMC アドレスのエイ
リアスになります。

非同期メモリ信号は、17-6 ページの表 17-1 で定義されます。これらのピ
ンのタイミングはプログラム可能であり、さまざまな速度のデバイスへの柔軟なインターフェースが可能です。インターフェース例については、第18 章「システム設計」を参照してください。

■ EBIU_AMGCTL レジスタ
非同期メモリ・グローバル・コントロール・レジスタ（EBIU_AMGCTL）では、コントローラ全体の設定を行います。このレジスタには、バンク・イ
ネーブルやその他の情報が含まれています。AMC が使用中である間は、
このレジスタをプログラムしないでください。外部メモリマップド非同期

17-10

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット

デ バ イ ス に ア ク セ ス す る た め に プ ロ セ ッ サ を 設 定 す る 際 に は、
EBIU_AMGCTL レジスタは、他のコントロール・レジスタの後に書き込んでください。
非同期メモリ・グローバル・コントロール・レジスタ（EBIU_AMGCTL）

0xFFC0 0A00

15 14 13 12 11 10 9
0 0 0 0 0 0 0

CDPRIO
0 - 外部アクセスの場合、コアはDMA
より優先されます
1 - 外部アクセスの場合、DMA はコ
アより優先されます
詳細については、第 7 章「チップ・バス階層」を参照してください。

8
0

7
1

6
1

5
1

4
1

3
0

2
0

1
1

0
0

リセット＝ 0x00F2

AMCKEN
0 - 非同期メモリ領域アクセスの
CLKOUT をディスエーブル
1 - 非同期メモリ領域アクセスの
CLKOUT をイネーブル
AMBEN[2:0]
非同期メモリ・バンクをイネーブル
000 -すべてのバンクがディスエーブ
ル
001 -バンク 0 がイネーブル
010 -バンク0とバンク1がイネーブル
011 -バンク 0、バンク 1、バンク 2 がイネーブル
1xx -すべてのバンク（バンク 0、バンク 1、バンク 2、バンク 3）がイ
ネーブル

図 17-3. 非同期メモリ・グローバル・コントロール・レジスタ
ディスエーブルにされた非同期メモリ・バンクにバス動作がアクセスした
場合には、EBIUは転送にアクノレッジを返し、要求側のバスでエラー信号をアサートして応答します。このエラー信号は、要求側のバス・マスタに送り返されます。これによって、コアが要求を出した転送の場合、コアへのハードウェア例外が生成されます。DMA が管理する要求の場合、エラーは各ステータス・レジスタで捕捉されます。バンクにメモリがフル実装されていない場合、おそらくメモリはバンク内の複数のアドレス領域に
エイリアスされます。EBIUはこのエイリアシング条件を検出しないため、
エラー応答はアサートされません。
クロックを必要とする外部デバイスの場合、CLKOUT をイネーブルにするには、EBIU_AMGCTL レジスタの AMCKEN ビットをセットします。CLKOUT を使用
しないシステムでは、AMCKEN ビットに 0を設定します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-11

非同期メモリ・インターフェース■ EBIU_AMBCTL0 レジスタと EBIU_AMBCTL1 レジスタ
EBIU 非同期メモリ・コントローラには、2 本の非同期メモリ・バンク・コントロール・レジスタ（EBIU_AMBCTL0 と EBIU_AMBCTL1）があります。これらのレジスタには、セットアップ、ストローブ、ホールド・タイム用のカウンタのビット、メモリのタイプとサイズを決定するビット、および
ARDY の使い方を設定するビットが含まれています。AMC が使用中である
場合、これらのレジスタをプログラムしないでください。
AMC のタイミング特性は、以下の 4 つのパラメータを使用してプログラムできます。
• セットアップ：メモリ・サイクルの先頭（AMS[x] ロー）と、読出し
イネーブル・アサーション（ARE ロー）または書込みイネーブル・
アサーション（AWE ロー）との間の時間• 読出しアクセス：読出しイネーブル・アサーション（ARE ロー）とアサート解除（ARE ハイ）との間の時間• 書込みアクセス：書込みイネーブル・アサーション（AWE ロー）とアサート解除（AWE ハイ）との間の時間• ホールド：読出しイネーブル・アサート解除（ARE ハイ）または書込みイネーブル・アサート解除（AWE ハイ）と、メモリ・サイクルの最後（AMS[x] ハイ）との間の時間

17-12

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット

これらのパラメータは、それぞれ EBIU クロック・サイクルを単位としてプログラムできます。さらに、これらのパラメータには最小値があります。
• セットアップ ≥ 1サイクル• 読出しアクセス ≥ 1サイクル• 書込みアクセス ≥ 1サイクル• ホールド ≥ 0サイクル

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-13

非同期メモリ・インターフェース

非同期メモリ・バンク・コントロール 0 レジスタ（EBIU_AMBCTL0）0xFFC0 0A04

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0

B1WAT[3:0]
バンク 1 書込みアクセス時間（AWE がアサート状態で保持されるサイクル数）
0000 - 利用できません
0001 ～ 1111 - 1 ～ 15 サイクル
B1RAT[3:0]
バンク 1 読出しアクセス時間（ARE がアサート状態で保持されるサイクル数）
0000 - 利用できません
0001 ～ 1111 - 1 ～ 15 サイクル
B1HT[1:0]
バンク 1 ホールド・タイム（AWE または ARE がアサート解除されてから、AOE がアサート解除されるまでのサイクル数）
00 - 0 サイクル
01 - 1 サイクル
10 - 2 サイクル
11 - 3 サイクル
B1ST[1:0]
バンク 1 セットアップ・タイム（AOE のアサート後、AWE または ARE がアサートされるまでのサイクル数）
00 - 4 サイクル
01 - 1 サイクル
10 - 2 サイクル
11 - 3 サイクル
15 14 13 12 11 10 9 8 7 6 5 4 3 2
1 1 1 1 1 1 1 1 1 1 0 0 0 0
B0WAT[3:0]
バンク 0 書込みアクセス時間（AWE がアサート状態で保持されるサイクル数）
0000 - 利用できません
0001 ～ 1111 - 1 ～ 15 サイクル
B0RAT[3:0]
バンク 0 読出しアクセス時間（ARE がアサート状態で保持されるサイクル数）
0000 - 利用できません
0001 ～ 1111 - 1 ～ 15 サイクル
B0HT[1:0]
バンク 0 ホールド・タイム（AWE または ARE がアサート解除されてから、AOE がアサート解除されるまでのサイクル数）
00 - 0 サイクル
01 - 1 サイクル
10 - 2 サイクル
11 - 3 サイクル
B0ST[1:0]
バンク 0 セットアップ・タイム（AOE のアサート後、AWE またはARE がアサートされるまでのサイクル数）
00 - 4 サイクル
01 - 1 サイクル
10 - 2 サイクル
11 - 3 サイクル

リセット＝ 0xFFC2 FFC2

B1RDYEN
バンク 1 ARDY イネーブル
0 - このメモリ・バンクへのアクセ
スでは ARDY を無視します
1 - アクセス時間のカウントダウ
ン後、ARDY の状態を使用してアクセスの完了を判断します
B1RDYPOL
バンク 1 ARDY 極性
0 - ARDY のローレベルがサンプリングされた場合、トランザク
ションは完了します
1 - ARDYのハイレベルがサンプリン
グされた場合、遷移は完了します
B1TT[1:0]
バンク 1 メモリ遷移時間（このバンクへの読出しアクセスの後、このバンクへの書込みアクセスまたは
別のバンクへの読出しアクセスの前に挿入されるサイクル数）
00 - バンク遷移に 4 サイクル
01 - バンク遷移に 1 サイクル
10 - バンク遷移に 2 サイクル
11 - バンク遷移に 3 サイクル
1
1

0
0
B0RDYEN
バンク 0 ARDY イネーブル
0 - このメモリ・バンクへのアクセ
スでは ARDY を無視します
1 - アクセス時間のカウントダウ
ン後、ARDY の状態を使用してアクセスの完了を判断します
B0RDYPOL
バンク 0 ARDY 極性
0 - ARDY のローレベルがサンプリングされた場合、トランザク
ションは完了します
1 - ARDY のハイレベルがサンプリングされた場合、遷移は完了します
B0TT[1:0]
バンク 0 メモリ遷移時間（このバンクへの読出しアクセスの後、このバンクへの書込みアクセスまたは
別のバンクへの読出しアクセスの前に挿入されるサイクル数）
00 - バンク遷移に 4 サイクル
01 - バンク遷移に 1 サイクル
10 - バンク遷移に 2 サイクル
11 - バンク遷移に 3 サイクル

図 17-4. 非同期メモリ・バンク・コントロール 0 レジスタ

17-14

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット

非同期メモリ・バンク・コントロール 1 レジスタ（EBIU_AMBCTL1）
0xFFC0 0A08

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0

B3WAT[3:0]
バンク 3 書込みアクセス時間（AWE がアサート状態で保持されるサイクル数）
0000 - 利用できません
0001 ～ 1111 - 1 ～ 15 サイクル
B3RAT[3:0]
バンク 3 読出しアクセス時間（ARE がアサート状態で保持されるサイクル数）
0000 - 利用できません
0001 ～ 1111 - 1 ～ 15 サイクル
B3HT[1:0]
バンク 3 ホールド・タイム（AWE または ARE がアサート解除
されてから、AOE がアサート解除されるまでのサイクル数）
00 - 0 サイクル
01 - 1 サイクル
10 - 2 サイクル
11 - 3 サイクル
B3ST[1:0]
バンク 3 セットアップ・タイム（AOE のアサート後、AWE またはARE がアサートされるまでのサイクル数）
00 - 4 サイクル
01 - 1 サイクル
10 - 2 サイクル
11 - 3 サイクル
15 14 13 12 11 10 9 8 7 6 5 4
1 1 1 1 1 1 1 1 1 1 0 0
B2WAT[3:0]
バンク 2 書込みアクセス時間（AWE がアサート状態で保持されるサイクル数）
0000 - 利用できません
0001 ～ 1111 - 1 ～ 15 サイクル
B2RAT[3:0]
バンク 2 読出しアクセス時間（ARE がアサート状態で保持されるサイクル数）
0000 - 利用できません
0001 ～ 11111 - 1 ～ 15 サイクル
B2HT[1:0]
バンク 2 ホールド・タイム（AWE または ARE がアサート解除
されてから、AOE がアサート解除されるまでのサイクル数）
00 - 0 サイクル
01 - 1 サイクル
10 - 2 サイクル
11 - 3 サイクル
B2ST[1:0]
バンク 2 セットアップ・タイム（AOE のアサート後、AWE またはARE がアサートされるまでのサイクル数）
00 - 4 サイクル
01 - 1 サイクル
10 - 2 サイクル
11 - 3 サイクル

3
0

2
0

1
1

リセット＝ 0xFFC2 FFC2

B3RDYEN
バンク 3 ARDY イネーブル
0 - このメモリ・バンクへのアクセ
スでは ARDY を無視します
1 - アクセス時間のカウントダウ
ン後、ARDY の状態を使用してアクセスの完了を判断します
B3RDYPOL
バンク 3 ARDY 極性
0 - ARDY のローレベルがサンプリングされた場合、トランザク
ションは完了します
1 - ARDYのハイレベルがサンプリン
グされた場合、遷移は完了します
B3TT[1:0]
バンク 3 メモリ遷移時間（このバンクへの読出しアクセスの後、このバンクへの書込みアクセスまたは
別のバンクへの読出しアクセスの前に挿入されるサイクル数）
00 - バンク遷移に 4 サイクル
01 - バンク遷移に 1 サイクル
10 - バンク遷移に 2 サイクル
11 - バンク遷移に 3 サイクル
00
B2RDYEN
バンク 2 ARDY イネーブル
0 - このメモリ・バンクへのアクセ
スでは ARDY を無視します
1 - アクセス時間のカウントダウ
ン後、ARDY の状態を使用してアクセスの完了を判断します
B2RDYPOL
バンク 2 ARDY 極性
0 - ARDY のローレベルがサンプリングされた場合、トランザク
ションは完了します
1 - ARDY のハイレベルがサンプリングされた場合、遷移は完了します
B2TT[1:0]
バンク 2 メモリ遷移時間（このバンクへの読出しアクセスの後、このバンクへの書込みアクセスまたは
別のバンクへの読出しアクセスの前に挿入されるサイクル数）
00 - バンク遷移に 4 サイクル
01 - バンク遷移に 1 サイクル
10 - バンク遷移に 2 サイクル
11 - バンク遷移に 3 サイクル

図 17-5. 非同期メモリ・バンク・コントロール 1 レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-15

非同期メモリ・インターフェース■ バス競合の回避
3 ステートのデータ・バスは、システム内の複数のデバイスによって共有されるため、競合を回避するように注意してください。競合が生じると、消費電力が過大になり、デバイス障害につながることもあります。競合が発生するのは、1 つのデバイスがバスを解放しようとし、もう1 つのデバイスが確保しようとしている時です。最初のデバイスは 3ステートになるのが遅く、2 番目のデバイスはすばやく駆動される場合、これらのデバイスは競合します。
競合が起こり得るケースは 2つあります。最初のケースは、読出しの後に同じメモリ空間への書込みが続く場合です。この場合、データ・バス・ド
ライバは、読出しによってアドレス指定されたメモリ・デバイスのドライ
バと競合する可能性があります。2 番目のケースは、2 つの異なるメモリ空間からのバック・ツー・バック読出しです。この場合、2 つの読出しによってアドレス指定された 2 つのメモリ・デバイスは、2 つの読出し動作
間の遷移時に競合する可能性があります。
競合を回避するには、非同期メモリ・バンク・コントロール・レジスタ
で、ターンアラウンド時間（バンク遷移時間）を適切にプログラムしてください。この機能によって、ソフトウェアは、この種のアクセス間のク
ロック・サイクル数をバンクごとに設定できます。EBIUは、遷移の発生のために最小限 1サイクルを提供します。
X ARDY 入力制御

各バンクは、読出し／書込みアクセス・タイマがカウントダウンした後で
ARDY 入力をサンプリングするようにプログラムしたり、またはこの入力信号を無視するようにプログラムしたりできます。サンプル・ウィンドウでイネーブルおよびディスエーブルにされる場合には、ARDY を使用して、必要に応じてアクセス時間を拡張できます。なお、ARDY は同期してサンプリ
ングされます。したがって、以下のことがいえます。

17-16

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット• プロセッサに対する ARDY のアサーションとアサート解除は、デー
タシートのセットアップ・タイムとホールド・タイムを満たす必要があります。これらの同期仕様を満たさない場合には、内部的に準安定性の動作をもたらすことがあります。ARDY の同期遷移を保証す
るには、プロセッサの CLKOUT 信号を使用してください。
• ARDY ピンは、内部バンク・カウンタが 0 になる前に、サイクル上の
外部インターフェースで安定している（アサートまたはアサート解
除される）必要があります。つまり、AWE または ARE のスケジュール
された立上がりエッジの前に、複数の CLKOUT サイクルが必要です。
これによって、アクセスが拡張されるかどうか決定されます。
• ARDY のアサーションによってトランザクションが拡張されたら、そのトランザクションは、ARDY のアサートがサンプリングされた後のサイクルで完了します。
ARDY の極性は、バンクごとにプログラム可能です。ARDY は、ARDY イネーブ

ルがアサートされているバンクに対してアクセスが始まるまではサンプリングされません。したがって、ARDY はデフォルトで駆動される必要はありません。詳細については、17-22 ページの「ウェイト・ステートの追加」を参照してください。

■ プログラマブルなタイミング特性
ここでは、EBIUのプログラマブルなタイミング特性について説明します。
タイミング関係は、AMC のプログラミング、コアからの開始であるかメ
モリ DMA（MemDMA）からの開始であるか、およびトランザクションの順序（読出しの後に読出しが続く、読出しの後に書込みが続く、など）に依存します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-17

非同期メモリ・インターフェース

X コア命令による非同期アクセス

次のタイプのコア命令によって外部メモリ・アクセスが発生することがあります。
R0.L = W[P0++] ; /* 外部メモリからの読出し。ここで、P0 は外部メモリ内の場
所を指します */または：W[P0++] = R0.L ; /* 外部メモリへの書込み */非同期読出し図 17-6は、非同期読出しバス・サイクルを示します。タイミングは、セッ
トアップ＝ 2 サイクル、読出しアクセス＝ 2 サイクル、ホールド＝1 サイ
クル、遷移時間＝ 1 サイクルでプログラムされています。

17-18

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット

非同期読出しバス・サイクルは、次のように行われます。
1. セットアップ周期の初めに、AMS[x]、アドレス・バス、ABE[1:0] が有効になり、AOE がアサートされます。
2. 読出しアクセス周期の初めで 2 セットアップ・サイクル後に、AREがアサートされます。
3. ホールド周期の初めに、読出しデータは EBIU クロックの立上がりエッジでサンプリングされます。この立上がりエッジの後、ARE
ピンはアサート解除されます。
4. ホールド周期の最後では、このバス・サイクルの後に同じにメモリ
空間への別の非同期読出しが続く場合を除いて、AOE はアサート解
除されます。また、次のサイクルが同じメモリ・バンクに対するものである場合を除いて、AMS[x] もアサート解除されます。
5. 同じメモリ・バンクの別の読出しが内部的にキュー登録される場合を除いて、AMC は、プログラムされたメモリ遷移時間サイクル数を付加します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-19

非同期メモリ・インターフェース࠺࡯࠲ߩ࡜࠶࠴
࠮࠶࠻ࠕ࠶ࡊ

⺒಴ߒࠕࠢ࠮ࠬ

ࡎ࡯࡞࠼ ㆫ⒖ᤨ㑆

2ࠨࠗࠢ࡞

2ࠨࠗࠢ࡞

1ࠨࠗࠢ࡞ 1ࠨࠗࠢ࡞

CLKOUTAMS [X]

ABE [1:0]

ADDR[19:1]

࠺࡯࠲[15:0]

BE

ࠕ࠼࡟ࠬ

⺒಴ߒ

AOE

ARE

AWE

図 17-6. 非同期読出しバス・サイクル
非同期書込み図 17-7 は、非同期書込みバス・サイクルの後に同じバンクへの非同期読出しサイクルが続く場合を示します。タイミングは、セットアップ＝ 2サイクル、書込みアクセス＝ 2サイクル、読出しアクセス＝3サイクル、ホー
ルド＝ 1サイクル、遷移時間＝ 1サイクルでプログラムされています。

17-20

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット

非同期書込みバス・サイクルは次のように行われます。
1. セットアップ周期の初めに、 AMS[x]、アドレス・バス、データ・
バス、ABE[1:0] が有効になります。
2. 書込みアクセス周期の初めに、AWE がアサートされます。
3. ホールド周期の初めに、AWE がアサート解除されます。
非同期読出しバス・サイクルは次のように行われます。
1. セットアップ周期の初めに、AMS[x]、アドレス・バス、ABE[1:0] が有効になり、AOE がアサートされます。
2. 読出しアクセス周期の初めに、ARE がアサートされます。
3. ホールド周期の初めに、読出しデータは EBIU クロックの立上がりエッジでサンプリングされます。ARE 信号は、この立上がりエッジの後でアサート解除されます。
4. ホールド周期の最後では、このバス・サイクルの後に同じメモリ空間への別の非同期読出しが続く場合を除いて、AOE がアサート解除されます。また、次のサイクルが同じメモリ・バンクに対するものである場合を除いて、AMS[x] もアサート解除されます。
5. 同じメモリ・バンクの別の読出しが内部的にキュー登録される場合を除いて、AMC はプログラムされたメモリ遷移時間サイクル数を付加します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-21

非同期メモリ・インターフェース࠺࡯࠲ߩ࡜࠶࠴
࠮࠶࠻ࠕ࠶ࡊ

ᦠㄟߺࠕࠢ࠮ࠬ

ࡎ࡯࡞࠼࠮࠶࠻ࠕ࠶ࡊ

⺒಴ߒࠕࠢ࠮ࠬ

ࡎ࡯࡞࠼ ㆫ⒖ᤨ㑆

2ࠨࠗࠢ࡞

2ࠨࠗࠢ࡞

1ࠨࠗࠢ࡞

2ࠨࠗࠢ࡞

3ࠨࠗࠢ࡞

1ࠨࠗࠢ࡞ 1ࠨࠗࠢ࡞

CLKOUTAMS [X]

ABE [1:0]

BE1

BE2

ADDR[19:1]

A1

A2

࠺࡯࠲[15:0]

D1

D2

AOE

ARE

AWE

図 17-7. 非同期書込みと読出しのバス・サイクル
X ウェイト・ステートの追加
ARDY ピンは、ウェイト・ステートの挿入に使用されます。入力は、EBIU

内部クロックに同期してサンプリングされます。EBIU はプログラムされたストローブ周期の終わりより前のクロック・サイクルで、ARDY のサンプ
リングを開始します。ARDY のデアサートがサンプリングされた場合には、アクセス周期が拡張されます。これ以降、ARDY ピンは各クロック・エッジ
でサンプリングされます。読出しデータは、ARDY のアサートがサンプリン
グされた後のクロック・エッジでラッチされます。ARDY のアサートがサン

17-22

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット

プリングされた後、読出しまたは書込みイネーブルは、1クロック・サイ
クルの間アサートに保たれます。この動作の一例を図 17-8 に示します。ここでは、セットアップ＝ 2 サイクル、読出しアクセス＝ 4 サイクル、ホー
ルド＝ 1サイクルです。なお、ARDY 入力を利用するには、読出しアクセス
周期は最小の 2サイクルにプログラムする必要があります。
࠮࠶࠻ࠕ࠶ࡊ

ࡊࡠࠣ࡜ࡓߐࠇߚ⺒಴ߒࠕࠢ࠮ࠬ

ࠕࠢ࠮ࠬߩ᜛ᒛ

ࡎ࡯࡞࠼

2ࠨࠗࠢ࡞

4ࠨࠗࠢ࡞

3ࠨࠗࠢ࡞

1ࠨࠗࠢ࡞

Ḱ஻ቢੌ ࠨࡦࡊ࡝ࡦࠣ

࠺࡯࠲ߩ࡜࠶࠴

CLKOUTAMS [X]

ABE [1:0]

BE

ADDR[19:1]

ࠕ࠼࡟ࠬ࠺࡯࠲[15:0]

⺒಴ߒD

EAD

AOE

ARE

AWE

ARDY

図 17-8. ARDY を使用した待ち状態の挿入

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-23

SDRAM コントローラ（SDC）

X バイト・イネーブル
ABE[1:0] ピンは、すべての非同期読出しと16 ビット非同期書込みの処理

中、両方ともローレベルです。16ビット・メモリの上位バイトに非同期書込みが行われるとき、ABE1 ＝ 0、ABE0 ＝ 1 です。16ビット・メモリの下位バ
イトに非同期書込みが行われるとき、ABE1 ＝ 1、ABE0 ＝ 0 です。

SDRAM コントローラ（SDC）
SDRAM コントローラ（SDC）によって、プロセッサは、『ADSP-BF531/
ADSP-BF532/ADSP-BF533 Embedded Processor Data Sheet』で指定された最大周波数で、シンクロナス DRAM（SDRAM）との間でデータを転送できます。プロセッサは、× 4、×8、× 16構成を含む64～512 M ビットの標準 SDRAM から成る 1 つの外部バンクとのグルーレス・インターフェースを提供します。SDRAM の最大合計容量は128M バイトです。このバンクは、SMS メモリ・セレクト・ピンによって制御されます。このインターフェースには、大きなメモリ・アレイの容量性負荷に対処するために、プロセッサと SDRAM との間に追加バッファを提供するタイミング・
オプションが備わっています。
SDRAM クロック出力 CLKOUT の立上がりエッジで、すべての入力がサンプリングされ、すべての出力が有効です。
EBIU SDC は、標準のSDRAM とのグルーレス・インターフェースを提供します。SDRAM コントローラには以下の機能があります。
• × 4、×8、× 16の設定で、64M ビット、128M ビット、256M ビット、512M ビットのSDRAM を提供します。
• 外部 SDRAM で 128M バイトまでの SDRAM を提供します。
• 512 バイト、1Kバイト、2K バイト、4K バイトの SDRAM ページ・
サイズを提供します。

17-24

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット• SDRAM 内の4つの内部バンクを提供します。
• プログラマブルなリフレッシュ・カウンタを使用して、SDRAMの必要な更新レートとさまざまなクロック周波数とを調整します。
• プロセッサと SDRAM との間の追加バッファを提供するために、複数のタイミング・オプションを提供します。
• 独立したピン（SA10）を使用することで、非同期メモリ・コント
ローラが EBIU ポートを制御している間に、SDC はSDRAM をプリチャージして、Auto-Refreshコマンドや Self-Refresh コマンドを発行できます。
• 標準 SDRAM のセルフリフレッシュと、モバイル SDRAM のパー
シャル・アレイ・セルフリフレッシュを提供します。
• 2 つの SDRAM パワーアップ・オプションを提供します。
• インターリーブされた SDRAM バンク・アクセスを提供します。

■ 用語の定義
以下に、この章で使用する用語の定義を示します。
X Bank Activate コマンド

Bank Activate コマンドによって、SDRAM は（行アドレスによって指定される）行内に（バンク・アドレスによって指定される）内部バンクを開きます。SDRAMに対してBank Activateコマンドが発行されると、SDRAM
は専用バンク内に新しい行アドレスを開きます。開いている内部バンクと行内のメモリは、開いているページと呼ばれます。Bank Activate コマン
ドは、読出しコマンドや書込みコマンドの前に適用する必要があります。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-25

SDRAM コントローラ（SDC）

X バースト長

SDRAM デバイスが 1 つの書込みコマンドまたは読出しコマンドを検出した後、それぞれ格納または配信するワード数は、バースト長によって決まります。バースト長を選択するには、SDRAM のパワーアップ・シーケン
ス中に、SDRAM のモード・レジスタ内の特定ビットに書き込みます。

L

SDRAM へのバースト時には、SDC はバースト長＝1 モードだけが可能ですが、SDC は、読出しまたは書込みコマンドをすべてのサイクルで適用し、データへのアクセスを続けます。したがって、実際のバースト長は 1 よりずっと大きくなります。つまり、バースト
長＝ 1 を設定しても、性能スループットは低下しません。

X Burst Stop コマンド

Burst Stop コマンドは、バースト読出し／書込みの動作を終了または中断するための方法の 1 つです。

L

SDRAM のバースト長は常に 1 になるよう固定されているため、SDC はBurst Stop コマンドに対応しません。

X バースト・タイプ

SDRAM が読出しコマンドを検出した後でバースト・データを配信するア
ドレス順、および書込みコマンドを検出した後でバースト・データを格納するアドレス順は、バースト・タイプによって決まります。バースト・タ
イプは、SDRAM のパワーアップ・シーケンス中にSDRAM でプログラム
されます。

L

17-26

SDRAMのバースト長は常に1になるようプログラムされているため、バースト・タイプは重要ではありません。しかし、SDRAMのパワーアップ・シーケンス中には、SDC はバースト・タイプを常に sequential-accesses-only（順次アクセスのみ）に設定します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット

X CAS 遅延（CL）

列アドレス・ストローブ（CAS）遅延は、SDRAM が読出しコマンドを検出してからデータをその出力ピンに提供するまでのクロック・サイクル単位での遅延です。CAS 遅延は、パワーアップ・シーケンス中にSDRAM
モード・レジスタでプログラムされます。
CAS 遅延の値は、SDRAM のスピード・グレードとアプリケーションのク
ロック周波数によって決まります。SDC は、2 または 3クロック・サイク
ルの CAS 遅延に対応できます。選択された CAS 遅延値は、SDRAM のパ
ワーアップ・シーケンスよりも前に、SDRAM メモリ・グローバル・コン
トロール・レジスタ（EBIU_SDGCTL）にプログラムする必要があります。
17-34 ページの「EBIU_SDGCTL レジスタ」を参照してください。
X CBR（CAS Before RAS）リフレッシュまたは自動リフレッシュ

SDC リフレッシュ・カウンタがタイム・アウトすると、SDC は SDRAMの 4 つ の バン ク すべ て にプ リ チャ ー ジし て から、そ れら の バン ク にAuto-Refresh コマンドを発行します。これにより、SDRAM は内部CBR
リフレッシュ・サイクルを生成します。内部リフレッシュが完了すると、4 つの内部SDRAM バンクすべてがプリチャージされます。
X DQM データ I/O マスク機能
SDQM[1:0] ピンは、SDRAMへの8/16ビット書込みでのバイト・マスク機

能を提供します。DQM ピンは、プリチャージや特定の書込み動作中に、SDRAM の出力バッファをブロックするために使用されます。読出しサイ
クルでは、SDQM[1:0] ピンはデータのマスクに使用されません。
X 内部バンク

SDRAM には複数の内部メモリ・バンクがあります。SDCは、内部バンク
間のインターリーブされたアクセスを提供します。バンク・アドレスは、
行アドレスの一部と考えることができます。SDC では、インターフェー

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-27

SDRAM コントローラ（SDC）

スをとるすべての SDRAM には4 つの内部バンクがあると想定し、アクティブにされた各バンクは、ユニークな行アドレスを持つことができます。
X モード・レジスタ

SDRAM デバイスに含まれる内部設定レジスタによって、SDRAM デバイ
スの機能を指定できます。パワーアップ後、SDRAM メモリ空間に読出しや書 込 みを 実 行 する 前 に、ア プ リケ ー ショ ン は SDC をト リ ガし て、
SDRAM のモード・レジスタを書き込む必要があります。SDRAM のモード・レジスタの書込みをトリガするには、SDRAM メモリ・グローバル・
コントロール・レジスタ（EBIU_SDGCTL）の PSSE ビットに 1 を書き込んでから、SDRAM アドレス空間への読出しまたは書込み転送を発行します。
最初の読出しまたは書込みによって、SDRAM パワーアップ・シーケンスの実行がトリガされ、SDRAM のモード・レジスタには、EBIU_SDGCTL レ
ジスタからの CAS遅延がプログラムされます。SDRAM に対するこの最初の読出しまたは書込みは、完了に多くのサイクルを必要とします。

L

大部分のアプリケーションで、SDRAM パワーアップ・シーケンスとモード・レジスタの書込みは一度だけ行う必要があります。パ
ワーアップ・シーケンスが完了したら、モード・レジスタへの変更が必要な場合を除いて、PSSE ビットを再びセットすべきではありません。この場合には、18-10 ページの「PLL遷移時における SDRAMのリフレッシュ管理」を参照してください。

低消費電力 SDRAM デバイスにも、拡張モード・レジスタが含まれている
場合があります。EBIU では、EBIU_SDGCTL レジスタの EMREN ビットによって、パワーアップ時に拡張モード・レジスタのプログラミングが可能です。

17-28

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット

X ページ・サイズ

ページ・サイズとは、同じ行アドレスを持ち、別の行をアクティブにすることなく、連続した読出しまたは書込みコマンドでアクセスできるメモリ量です。16ビットのSDRAM バンクの場合、ページ・サイズを計算するには、次の式を使用します。
• 16ビットの SDRAMバンク：ページ・サイズ＝ 2(CAW + 1)
ここで、CAW は SDRAM の列アドレス幅に1 を足した値です。なぜなら、
SDRAM バンクは16 ビット幅であるからです（1 アドレス・ビット＝ 2 バ
イト）。
X Precharge コマンド

Precharge コマンドは、アクティブ・ページ内の特定の内部バンク、またはページ内のすべての内部バンクを閉じます。
X SDRAM バンク

SDRAM バンクは、16M バイト、32M バイト、64M バイト、または128M
バイトに設定することができ、SMS ピンによって選択されるメモリ領域です。

L「SDRAM 内部バンク」は SDRAM の内部にあり、バンク・アドレス
によって選択されます。一方、「SDRAM バンク」つまり「外部バンク」は、SMS ピンによってイネーブルにされます。両者を混同しないでください。

X Self-Refresh

SDRAM がSelf-Refresh モードにある場合、SDRAM の内部タイマは、外部の制御入力なしで Auto-Refresh サイクルを定期的に開始します。SDC
は、SDRAMをこの低消費電力モードにするために、Self-Refreshコマン
ドを含む一連のコマンドを発行する必要があり、Self-Refreshモードを終ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-29

SDRAM コントローラ（SDC）

了 す る た め に、別 の 一 連 の コ マ ン ド を 発 行 す る 必 要 が あ り ま す。
Self-Refresh モードへの切り替えはSDRAM メモリ・グローバル・コント
ロール・レジスタ（EBIU_SDGCTL）で設定可能であり、SDRAM アドレス
空間へのアクセスによって、SDC はSDRAM をSelf-Refresh モードから終了させます。17-40 ページの「Self-Refresh モードへの出入り（SRFS）」
を参照してください。
X tRASBank Activate コマンドを発行してからPrecharge コマンドを発行するまで、およびSelf-RefreshコマンドとSelf-Refreshの終了との間に必要な遅延です。SDRAMメモリ・グローバル・コントロール・レジスタ（EBIU_SDGCTL）の TRAS ビット・フィールドは4ビット幅で、1～ 15クロック・サイクル長にプログラムできます。17-43 ページの「Bank Activate コマンド遅延の選択（TRAS）」を参照してください。
X tRC

同じ SDRAM 内部バンクに対して、Bank Activate コマンドを連続して発行するために必要な遅延です。この遅延は、直接にプログラムできません。tRC 遅延は、TRAS と TRP のフィールドをプログラミングすることによって tRAS + tRP ≥ tRC になるようにする必要があります。
X tRCD

Bank Activate コマンドを発行してから、最初の Read またはWrite コマン
ドの開始までに必要な遅延です。SDRAM メモリ・グローバル・コント
ロール・レジスタ（EBIU_SDGCTL）の TRCD ビット・フィールドは3 ビット
幅で、1 ～7クロック・サイクル長になるようにプログラムできます。

17-30

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット

X tRFC

Auto-Refreshコマンドを発行してからBank Activateコマンドを発行する
までと、Auto-Refresh コマンドを連続して発行するために必要な遅延です。この遅延は直接にプログラムされず、tRC に等しいと考えられます。
tRC 遅延は、TRAS と TRP のフィールドをプログラミングすることによって
tRAS + tRP ≥ tRC になるようにする必要があります。
X tRP

Precharge コマンドを発行してから、以下の操作までに必要な遅延です。
• Bank Activate コマンドの発行• Auto-Refresh コマンドの発行• Self-Refresh コマンドの発行
SDRAM メモリ・グローバル・コントロール・レジスタ（EBIU_SDGCTL）の
TRP ビット・フィールドは 3ビット幅で、1～ 7クロック・サイクル長になるようにプログラムできます。17-44 ページの「プリチャージ遅延の選択（TRP）」を参照してください。
X tRRD

Bank A Activate コマンドの発行とBank B Activate コマンドの発行との間に必要な遅延です。この遅延は直接のプログラムができず、tRCD ＋ 1とされています。
X tWR

Write コマンド（書込みデータの駆動）とPrecharge コマンドとの間に必要な遅延です。SDRAM メモリ・グローバル・コントロール・レジスタ（EBIU_SDGCTL）の TWR ビット・フィールドは 2 ビット幅で、1 ～ 3 クロッ
ク・サイクル長になるようにプログラムできます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-31

SDRAM コントローラ（SDC）

X tXSR

Self-Refresh モードを終了してから Auto-Refresh コマンドを発行するまでに必要な遅延です。この遅延は直接にプログラムされず、tRC に等しいと考えられます。tRC 遅延は、TRAS と TRP のフィールドをプログラミングすることによって tRAS + tRP ≥ tRC になるようにする必要があります。

■ 利用可能な SDRAM 設定
次の表は、可能なすべてのバンク・サイズ、バンク幅、SDC にグルーレスにインターフェースできる個別 SDRAM 部品の設定を示します。
表 17-4.

利用可能な SDRAM ディスクリート部品設定

バンク・サイズ（M バイト）

バンク幅
（ビット）

16

SDRAM
サイズ
（M ビット）

設定

チップ数

16

32

2M × 4 × 4 バンク

4

16

16

64

2M × 8 × 4 バンク

2

16

16

128

2M × 16 × 4 バンク

1

32

16

64

4M × 4 × 4 バンク

4

32

16

128

4M × 8 × 4 バンク

2

32

16

256

4M × 16 × 4 バンク

1

64

16

128

8M × 4 × 4 バンク

4

64

16

256

8M × 8 × 4 バンク

2

64

16

512

8M × 16 × 4 バンク

1

128

16

256

16M × 4 × 4 バンク

4

128

16

512

16M × 8 × 4 バンク

2

128

16

1024

16M × 16 × 4 バンク

1

17-32

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット■ SDRAM システムのブロック図の例
図 17-9 は、SDRAM インターフェースのブロック図を示します。この例
で、SDRAM インターフェースは2 つの 64Mビット（x8）SDRAM デバイ
スに接続されて、16M バイトのメモリから成る 1つの外部バンクを形成します。2 つのSDRAM デバイスは、同一のアドレスおよび制御バスに接続されます。

SDRAM 1ADSP-BF533
SWE
SCAS
SRAS
SMS
ADDR[19]
ADDR[18]SA10
ADDR[12,10:1]
SCKE
CLKOUT
SDQM[0]
SDQM[1]

WE
CAS
RAS
CS
A13[BS1 ]A12[BS0 ]A[10]A[11,9:0]
CKE

DQ[7:0]

CLK
DQM
࠺࡯࠲[7:0]࠺࡯࠲[15:0]
࠺࡯࠲[15:8]

SDRAM 2
WE
CAS
RAS
CS
A13[BS1 ]DQ[7:0]A12[BS0 ]A[10]A[11,9:0]
CKE
CLK
DQM

図 17-9. 16M バイト SDRAM システムの例

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-33

SDRAM コントローラ（SDC）■ EBIU_SDGCTL レジスタ
SDRAM メモリ・グローバル・コントロール・レジスタ（EBIU_SDGCTL）には、SDRAMアクセスのタイミングと設定に関連するすべてのプログラマ
ブルなパラメータが含まれています。図 17-10 は、EBIU_SDGCTL レジスタのビット定義を示します。

17-34

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット

SDRAM メモリ・グローバル・コントロール・レジスタ（EBIU_SDGCTL）
0xFFC0 0A10

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0

TRCD[2:1]（SCLKサイクル単位）
SDRAM tRCD
000 - 予備
001 ～ 111 - 1 ～ 7 サイクル
TWR[1:0]
SDRAM tWR（SCLK サイクル単位）
00 - 予備
01 ～ 11 - 1 ～ 3 サイクル
PUPSD
パワーアップ開始遅延
0 - 最初のPrechargeコマンドの前に新たな遅延の追加なし
1 - 最初の Precharge コマンドの前に 15 SCLK サイクルの遅延
PSM

CDDBG
バス許可時のコントロール・ディス
エーブル
0 - バス許可時に SDRAM コント
ロールの駆動を継続します
1 - バス許可時に SDRAM コント
ロールを 3 ステートにします
TCSR
拡張モード・レジスタでの温度補償
セルフリフレッシュ値
0 - 45 ℃
1 - 85 ℃
EMREN
拡張モード・レジスタ・イネーブル
0 - ディスエーブル
1 - イネーブル
FBBRW
高速なバックツーバック読出し―書込み
0 - ディスエーブル
1 - イネーブル
EBUFE
ア ドレ ス とコ ント ロー ル の外 部バ ッフ ァリ ン グ用
SDRAM タイミング
0 - 外部バッファ・タイミング・ディスエーブル
1 - 外部バッファ・タイミング・イネーブル
SRFS
SDRAM セルフリフレッシュ・イネーブル
0 - セルフリフレッシュをディスエーブル
1 - 非アクティブ時にセルフリフレッシュをイネーブル
15 14 13 12 11 10 9
1 0 0 0 1 0 0

TRCD
SDRAM tRCD（SCLK サイクル単位）
000 - 予備
001 ～ 111 - 1 ～ 7 サイクル
TRP[2:0]
SDRAM tRP（SCLK サイクル単位）
000 - 効果なし
001 ～ 111 - 1 ～ 7 サイクル
TRAS[3:0]
SDRAM tRAS（SCLK サイクル単位）
0000 - 効果なし
0001 ～ 1111 - 1 ～ 15 サイクル

80

リセット＝ 0xE008 8849

SDRAM パワーアップ・シーケンス
0 - プリチャージ、8 CBR リフレッ
シュ・サイクル、モード・レジ
スタ設定
1 - プリチャージ、モード・レジス
タ設定、8 CBR リフレッシュ・
サイクル
PSSE
SDRAM パワーアップ・シーケンス
開始イネーブル。常に 0 を示します
0 - 効果なし
1 - 次のSDRAMアクセスでSDRAM
パワーアップ・シーケンスをイ
ネーブル
7
0

6
1

5
0

4
0

3
1

2
0

1
0

0
1
SCTLE
CLKOUT、SRAS、SCAS、SWE、SDQM[1:0] をイネーブル
0 - ディスエーブル
1 - 使用可能ですCL[1:0]SDRAM CAS 遅延
00–01 - 予備
10 - 2 サイクル
11 - 3 サイクル
PASR[1:0]
拡張モード・レジスタでのパーシャ
ル・アレイ・セルフリフレッシュ
00 - 4バンクすべてのリフレッシュ
01 - 内部バンク0、1のリフレッシュ
10 - 内部バンク 0 だけのリフレッシュ
11 - 予備

図 17-10.SDRAM メモリ・グローバル・コントロール・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-35

SDRAM コントローラ（SDC）

SCTLE ビットは、SDC をイネーブル／ディスエーブルにするために使用されます。SCTLE がディスエーブルにされた場合には、SDRAM アドレス空間へのアクセスによって内部バス・エラーが生成され、外部からのアクセスは行われません。詳細については、17-9 ページの「エラー検出」を参照してください。SCTLE がディスエーブルにされると、すべての SDC制御
ピンは非アクティブ状態になり、SDRAM クロックは動作しません。SCTLE
ビットは、SDC 動作用にイネーブルにする必要があり、デフォルトではリセット時にイネーブルにされます。
CAS 遅延（CL）、SDRAM tRAS タイミング（TRAS）、SDRAM tRP タイミング（TRP）、SDRAM tRCD タイミング（TRCD）、SDRAM tWR タイミング（TWR）の各ビットは、使用するSDRAM のタイミング仕様とシステム・ク
ロック周波数に基づいてプログラムしてください。
PSM ビットと PSSE ビットは、SDRAMパワーアップ（初期化）シーケンスを指定およびトリガするために連携して働きます。PSM ビットが1 に設定された場合、SDCは Precharge Allコマンドを実行し、続いてLoad Mode
Register コマンドを実行し、さらに 8つの Auto-Refresh サイクルを実行します。PSM ビットがクリアされた場合、SDC は Precharge All コマンドを実行し、続いて 8つの Auto-Refresh サイクルを実行し、さらにLoad Mode
Register コマンドを実行します。SDC がSDRAM パワーアップ・シーケンスを実行する前に、次の 2 つのイベントを行う必要があります。
• SDRAM パワーアップ・シーケンスをイネーブルにするため、PSSE
ビットを 1に設定する必要があります。
• SDRAM パワーアップ・シーケンスが行えるように、SDC に対して外部バスを許可するため、イネーブルにされた SDRAM アドレス
空間への読出し／書込みアクセスを行う必要があります。

17-36

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット

SDRAM パワーアップ・シーケンスが行われると、その直後に、SDRAM
パワーアップ・シーケンスのトリガに使用された SDRAM への読出し／書込み転送が続きます。なお、SDRAM パワーアップ・シーケンスの完了には多くのサイクルを要するため、SDRAM へのこの最初のアクセスには遅延があります。

L

SDC パワーアップ・シーケンスを実行する前に、SDRAM 仕様に基づいて、SDRAM が安定した電力を受け取り、適切な時間だけクロック駆動されることを確認します。

パワーアップ・スタート遅延（PUPSD）ビットは、オプションでパワーアッ
プ・スタート・シーケンスを 15 SCLK サイクルだけ遅延させます。これは、外部 SDRAM を共有するマルチプロセッサ・システムに役立ちます。パワーアップの前にバスが他のプロセッサに対してあらかじめ許可されており、バス所有権を切り替えるときに Self-Refresh モードが使用された場
合には、SDRAM の終了セルフリフレッシュ時間（tXSR）を満たすために
PUPSD ビットを使用して、セルフリフレッシュからパワーアップ・シーケ
ンスでの最初のPrechargeコマンドまでに十分な非アクティブ期間を保証できます。
SRFS ビットが1 に設定されると、Self-Refresh モードがトリガされます。

SDC がいずれかのアクティブな転送を完了すると、SDC は一連のコマンドを実行して SDRAM を Self-Refreshモードにします。イネーブルにされた SDRAM バン ク への 次 のア ク セス に よっ て、SDC は SDRAM を
Self-Refreshから抜け出させてアクセスを実行させるためのコマンドを実行します。SRFS ビットの詳細については、17-40 ページの「Self-Refreshモードへの出入り（SRFS）」を参照してください。
EBUFE ビットは、外部バッファ・タイミングをイネーブル／ディスエーブ

ルにするために使用されます。SDRAM コントロール入力の駆動にバッ
ファ付き SDRAM モジュールまたはディスクリート・レジスタ・バッファが使用される場合、EBUFE を1 に設定してください。この設定を使用すると、読出しアクセスと書込みアクセスに 1サイクルのデータ・バッファリ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-37

SDRAM コントローラ（SDC）

ングが追加されます。EBUFE ビットの詳細については、17-41 ページの「SDRAM バッファ・タイミング・オプションの設定（EBUFE）」を参照
してください。
FBBRW ビットは、SDRAM 読出しの後に続けて書込みを連続したサイクルでの実行を可能にします。多くのシステムでは、これは不可能です。なぜなら、SDRAMデータ・ピンのターン・オフ時間が長すぎて、プロセッサからの後続の書込みとのバス競合が発生するからです。このビットが 0の場合、直後に書込みアクセスが続く読出しアクセス間に 1 つのクロック・サイクルが挿入されます。
EMREN ビットは、スタートアップ時に拡張モード・レジスタのプログラミ

ングを可能にします。拡張モード・レジスタは、特定のモバイル低消費電
力 SDRAMにおいて、SDRAM 消費電力の制御に使用されます。EMREN ビットがイネーブルにされた場合、TCSR ビットと PASR[1:0] ビットは、拡張
モー ド・レ ジス タ に書 き 込ま れ る値 を 制御 し ます。PASR ビ ット は、
Self-Refresh時にリフレッシュされるSDRAM内部バンクの数を決定しま
す。TCSR ビットは、システムにとって最悪ケースの温度範囲をSDRAMに通知することで、Self-Refresh時に必要なSDRAM 内部バンクのリフレッ
シュ頻度を示します。
外部メモリ・インターフェースが外部コントローラに許可されているとき、CDDBG ビットはSDRAM コントロール信号のイネーブル／ディスエー
ブルに使用されます。このビットが 1に設定される場合、バス許可がアクティブのとき、制御信号は 3 ステート状態になります。そうでない場合、これらの信号は許可時に駆動し続けられます。このビットがセットされ、外部バスが許可された場合には、すべての SDRAM 内部バンクは外部コン
トローラによって変更されたと考えられます。このことは、外部バスの制御が再確立された後では、使用の前に各バンクでプリチャージが必要なことを意味します。このピンによって影響される制御信号は、SRAS、SCAS、
SWE、SMS、SA10、SCKE、CLKOUT です。
なお、このレジスタ内のすべての予備ビットには、常に 0を書き込む必要があります。

17-38

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット

X SDRAM クロック・イネーブルの設定（SCTLE）
SCTLE ビットによって、ソフトウェアはすべてのSDRAM 制御ピンをディスエーブルにできます。これらのピンは、SDQM[3:0]、SCAS、SRAS、SWE、
SCKE、CLKOUT です。
• SCTLE = 0
すべての SDRAM 制御ピンをディスエーブルにします（制御ピンはネゲート、CLKOUT ローレベル）• SCTLE = 1
すべての SDRAM 制御ピンをイネーブルにします（CLKOUT トグル）
なお、CLKOUT 機能は、AMC とも共有されます。たとえ SCTLE がディスエー
ブルにされていても、CLKOUT は AMC の CLKOUT イネーブル（EBIU_AMGCTL
レジスタの AMCKEN ）によって独立してイネーブルできます。
システムが SDRAM を使用しない場合には、SCTLE は0 に設定してください。
SCTLE が0 である間に、SDRAM アドレス空間へのアクセスが発生した場

合には、アクセスによって内部バス・エラーが生成され、外部からのアクセスは行われません。詳細については、17-9 ページの「エラー検出」を参照してください。綿密なソフトウェア制御によって SCTLE ビットをSelf-Refresh モードと組み合わせて使用すれば、さらに消費電力を下げることができます。しかし、SDRAM への Auto-Refresh コマンドの生成にSDC が必要な場合には、SCTLE を常時イネーブルにしておく必要があります。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-39

SDRAM コントローラ（SDC）

X Self-Refresh モードへの出入り（SRFS）

SDC は、SDRAM Self-Refreshモードを提供します。Self-Refresh モード
では、SDRAM が外部制御なしでリフレッシュ動作を内部的に実行することで、SDRAM の消費電力を減らします。
EBIU_SDGCTL の SRFS ビットは、Self-Refresh モードの開始をイネーブルにします。
• SRFS = 0
Self-Refresh モードをディスエーブルにします• SRFS = 1
Self-Refresh モードをイネーブルにします
SRFS が 1 に設定された場合、SDC がアイドル状態に入ると、必要ならば

Precharge コマンドを発行してから、Self-Refresh コマンドを発行します。
内部アクセスが保留中の場合、SDC は、保留中の SDRAM アクセスとそれ以降の保留中のアクセス要求を完了するまで、Self-Refresh コマンドの発行を遅延させます。詳細については、17-58 ページの「SDC コマンド」を参照してください。
SDRAM デバイスが Self-Refresh モードに入ると、SDRAMコントローラ
は、SDRAM コントロー ル・ステ ータス・レジスタ（EBIU_SDSTAT）のSDSRA ビットをアサートします。
SDRAM デバイスは、SDCがコアまたは DMA のアクセス要求を受信した
ときにだけ Self-Refresh モードを終了します。アクセス要求の前に SRFS
ビットがクリアされた場合には、SDC はアクティブのままでいます。しかし、SRFS ビットがまだセットされている場合には、保留中のアクセスがなくなるとすぐに SDC はセルフリフレッシュに再び入ります。

17-40

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット

なお、SRFS ビットが 1に設定されると、SDCは保留中のアクセスを完了す
る時に Self-Refresh モードに入ります。Self-Refresh モードへのエントリをキャンセルする方法はありません。
X SDRAM バッファ・タイミング・オプションの設定（EBUFE）

システム全体のタイミング条件を満たすため、並列に接続された複数の
SDRAM デバイスを使用するシステムは、プロセッサと複数のSDRAMデ
バイスとの間にバッファリングを必要とする場合があります。一般に、このバッファリングはレジスタとドライバから構成されます。
このようなタイミング条件を満たし、中間登録を可能にするため、SDCはSDRAM アドレスと制御信号のパイプライン処理を提供します。
EBIU_SDGCTL レジスタの EBUFE ビットは、このモードをイネーブルにします。
• EBUFE = 0
外部バッファ・タイミングをディスエーブルにします• EBUFE = 1
外部バッファ・タイミングをイネーブルにします
EBUFE = 1 の場合、SDRAM コントローラは書込みアクセスでデータを1サイクルだけ遅延させ、外部バッファ・レジスタによるアドレスと制御のラッチを可能にします。読出しアクセスで、SDRAM コントローラは、外部バッファ・レジスタによって追加される 1サイクルの遅延に対処するため、1 サイクル後でデータをサンプリングします。外部バッファ・タイミ
ングがイネーブルにされると、すべてのアクセスの遅延は 1 サイクルだけ増やされます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-41

SDRAM コントローラ（SDC）

X CAS 遅延値の選択（CL）

CAS 遅延値は、SDRAM がRead コマンドを検出してから、その出力ピン
でデータを提供するまでの遅延をクロック・サイクル数で定義します。
CAS 遅延は、書込みサイクルには適用されません。
SDRAM メモリ・グローバル・コントロール・レジスタ（EBIU_SDGCTL）の
CL ビットでは、CAS 遅延値を選択します。
• CL = 00
予備• CL = 01
予備• CL = 10
2 クロック・サイクル• CL = 11
3 クロック・サイクル
一般に、CAS遅延の値は動作周波数によって決定されます。この値の設定の詳細については、SDRAM デバイスのマニュアルを参照してください。

17-42

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット

X SDQM 動作
SDQM[1:0]（データ I/O マスク）ピンによって、SDC はバイト転送時にバイトをマスクすることができます。書込みサイクルの場合、データ・マス
クの遅延は 0 サイクルであるため、対応する SDQM[x] ピンのローレベルがサンプリングされるとデータ書込みが許可され、SDQM[x] ピンのハイレベ
ルがサンプリングされるとデータ書込みがブロックされます。なお、これらはバイト単位で行われます。
X 並列リフレッシュ・コマンドの実行

SDCにはAuto-Refreshコマンドと非同期メモリ・アクセスとの並列実行を可能にする、独立したアドレス・ピン（SA10）があります。このピンによって、SDC はSDRAM にPrecharge コマンドを発行してから、Auto-Refresh
コマンドを発行することができます。さらに、SA10 ピンによって、SDCは非同期メモリ・アクセスと並列に、Self-Refreshモードに出入りすることができます。
SA10 ピンは、SDRAM の A10 ピンに直結してください（ADDR[10] ピンには接続しません）。Prechargeコマンドの処理中、SA10 は Precharge Allを実行すべきことを示すために使用されます。Bank Activateコマンドの処理
中に、SA10 は内部行アドレス・ビットを出力します。このビットは、A10
SDRAM 入力に多重化してください。ReadコマンドとWrite コマンドの処
理中、SA10 はSDRAM の自動プリチャージ機能をディスエーブルにするために使用されます。
X Bank Activate コマンド遅延の選択（TRAS）

tRAS 値（Bank Activate コマンド遅延）は、SDC が Bank Activate コマン
ドを発行してから Precharge コマンドを発行するまでに必要な遅延をク
ロック・サイクル数で定義します。SDRAM も、少なくとも tRAS によって指定される期間は、Self-Refresh モードにとどまる必要があります。tRP
値と tRAS 値は、tRFC、tRC、および tXSR の値を定義します。詳細について
は、17-30 ページを参照してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-43

SDRAM コントローラ（SDC）

tRAS パラメータによって、プロセッサはシステムのSDRAM デバイスのタイミング条件に適合できます。
SDRAM メモリ・グローバル・コントロール・レジスタ（EBIU_SDGCTL）のTRAS ビットは、tRAS 値を選択します。1～15クロック・サイクルの任意の値を選択できます。次に例を示します。
• TRAS = 0000
効果なし
• TRAS = 0001
1 クロック・サイクル• TRAS = 0010
2 クロック・サイクル• TRAS = 1111
15クロック・サイクル
この値の設定の詳細については、SDRAM デバイスのマニュアルを参照してください。
X プリチャージ遅延の選択（TRP）

tRP 値（Precharge 遅延）は、SDC がPrecharge コマンドを発行してからBank Activate コマンドを発行するまでに必要な遅延をクロック・サイク
ル数で定義します。この tRP は、Precharge と Auto-Refreshとの間、および Precharge と Self-Refresh との間に必要な時間も指定します。tRP 値とtRAS 値は、tRFC、tRC、および tXSR の値を定義します。

17-44

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット

このパラメータによって、アプリケーションは SDRAM のタイミング条件に対処できます。
SDRAM メモリ・グローバル・コントロール・レジスタ（EBIU_SDGCTL）の
TRP ビットは、tRP 値を選択します。1 ～ 7 クロック・サイクルの任意の値を選択できます。次に例を示します。
• TRP = 000
効果なし• TRP = 001
1 クロック・サイクル• TRP = 010
2 クロック・サイクル• TRP = 111
7 クロック・サイクル
X Precharge 遅延への書込みの選択（TWR）

tWR 値は、SDCが Write コマンド（書込みデータを駆動）を発行してからPrecharge コマンドを発行するまでに必要な遅延をクロック・サイクル数
で定義します。
このパラメータによって、アプリケーションは SDRAM のタイミング条件に対処できます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-45

SDRAM コントローラ（SDC）

SDRAM メモリ・グローバル・コントロール・レジスタ（EBIU_SDGCTL）のTWR ビットは、tWR 値を選択します。1～ 3クロック・サイクルの任意の値を選択できます。次に例を示します。
• TWR = 00
予備
• TWR = 01
1 クロック・サイクル• TWR = 10
2 クロック・サイクル• TWR = 11
3 クロック・サイクル■ EBIU_SDBCTL レジスタ
SDRAM メモリ・バンク・コントロール・レジスタ（EBIU_SDBCTL）には、
外部バンク固有のプログラマブルなパラメータがあります。これらによって、ソフトウェアは SDRAM のいくつかのパラメータを制御できます。外部バンクは SDRAM のさまざまなサイズに合わせて設定でき、SDRAMメ
モリ・グローバル・コントロール・レジスタ（EBIU_SDGCTL）で定義されたアクセス・タイミング・パラメータを使用します。EBIU_SDBCTL レジス
タはパワーアップの前にプログラムし、SDC がアイドル状態のときにだけ変更してください。

17-46

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット

SDRAM メモリ・バンク・コントロール・レジスタ（EBIU_SDBCTL）
0xFFC0 0A14

15 14 13 12 11 10 9
0 0 0 0 0 0 0

8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

リセット＝ 0x0000

EBE
SDRAM 外部バンク・イネーブル
0 - ディスエーブル
1 - イネーブル
EBSZ
SDRAM 外部バンク・サイズ
00 - 16M バイト
01 - 32M バイト
10 - 64M バイト
11 - 128M バイト
EBCAW
SDRAM 外部バンク列アドレス幅
00 - 8 ビット
01 - 9 ビット
10 - 10 ビット
11 - 11 ビット

図 17-11. SDRAM メモリ・バンク・コントロール・レジスタ
EBIU_SDBCTL レジスタは、SDRAM バンク・インターフェースの設定情報を格納します。EBIU は、×4、×8、× 16の設定を持つ 64M ビット、128M
ビット、256M ビット、512M ビットのSDRAM デバイスに対応します。
17-32 ページの表 17-4 は、SDRAM 集積度とI/O 幅を、利用可能な EBSZ エ
ンコーディングにマッピングします。バンク開始アドレスのデコードの詳細については、17-52 ページの「SDRAM 外部メモリのサイズ」を参照してください。
SDC は、EBCAW パラメータから内部SDRAMのページ・サイズを決定します。512B、1K バイト、2K バイト、4K バイトのページ・サイズがサポートされます。17-48 ページの表 17-5 は、ページ・サイズと、内部アドレス（IA[31:0]、コアや DMAから見たもの）の行、バンク、列、バイト・アド
レスへの分解を示します。列アドレスとバイト・アドレスを組み合わせて、ページ内のアドレスが構成されます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-47

SDRAM コントローラ（SDC）

EBIU_SDBCTL レジスタの EBE ビットは、外部 SDRAM バンクのイネーブル／ディスエーブルに使用されます。SDRAM がディスエーブルにされた場
合には、SDRAMアドレス空間へのアクセスは内部バス・エラーを生成し、外部からのアクセスは行われません。詳細については、17-9 ページの「エラー検出」を参照してください。
表 17-5.

内部アドレス・マッピング

バンク・
アドレス

行アドレス

列アドレス

バイト・
アドレス

128

11

4

IA[26:25]

IA[24:12]

A[11:1]

IA[0]

16

128

10

2

IA[26:25]

IA[24:11]

IA[10:1]

IA[0]

16

128

9

1

1A[26:25]

IA[24:10]

IA[9:1]

IA[0]

16

128

8

.5

IA[26:25]

IA[24:9]

IA[8:1]

IA[0]

16

64

11

4

IA[25:24]

IA[23:12]

IA[11:1]

IA[0]

16

64

10

2

IA[25:24]

IA[23:11]

IA[10:1]

IA[0]

16

64

9

1

IA[25:24]

IA[23:10]

IA[9:1]

IA[0]

16

64

8

.5

IA[25:24]

IA[23:9]

IA[8:1]

IA[0]

16

32

11

4

IA[24:23]

IA[22:12]

IA[11:1]

IA[0]

16

32

10

2

IA[24:23]

IA[22:11]

IA[10:1]

IA[0]

16

32

9

1

IA[24:23]

IA[22:10]

IA[9:1]

IA[0]

16

32

8

.5

IA[24:23]

IA[22:9]

IA[8:1]

IA[0]

16

16

11

4

IA[23:22]

IA[21:12]

IA[11:1]

IA[0]

16

16

10

2

IA[23:22]

IA[21:11]

IA[10:1]

IA[0]

16

16

9

1

IA[23:22]

IA[21:10]

IA[9:1]

IA[0]

16

16

8

.5

IA[23:22]

IA[21:9]

IA[8:1]

IA[0]

17-48

ページ・サイズ（K バイト）バンク・サイズ（M バイト）16

列アドレス幅
（CAW）

バンク幅
（ビット）

ページ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット

L

16Mバイト未満のSDRAMへの接続方法については、
18-8ページの「16M バイトよりも小さいSDRAM の利用」を参照してください。

■ EBIU_SDSTAT レジスタ
SDRAM コントロール・ステータス・レジスタ（EBIU_SDSTAT）は、SDCの状態に関する情報を提供します。この情報を使用すれば、SDC 制御パラメータを変更しても安全なタイミングを判定できます。あるいは、これをデバッグ用に使用することも可能です。このレジスタの SDEASE ビット
はスティッキーです。このビットがセットされたら、これをクリアするには、ソフトウェアでこのビットに明示的に 1 を書き込む必要があります。
他のステータス・ビットについては、書込みは効果がなく、SDC によってのみ更新されます。この SDC MMRは 16ビット幅です。
SDRAM コントロール・ステータス・レジスタ（EBIU_SDSTAT）
0xFFC0 0A1C

15 14 13 12 11 10
0 0 0 0 0 0

9
0

8
0

7
0

6
0

5
0

BGSTAT
バス許可ステータス
0 - バスは許可されません
1 - バスは許可されます
SDEASE - W1C
SDRAM EAB スティッキー・エラー・ステータス。このビットをクリアするには、1 を書き込みます
0 - エラー検出なし
1 - EAB アクセスがエラーを生成
SDRS
0 - 次の SDRAM アクセスでパワーアップしません（SDRAM はすでにパワーアップ
しています）
1 - SDRAM がイネーブルにされている場合、次の SDRAM アクセスでパワーアップし
ます

4
0

3
1

2
0

1
0

0
0

リセット＝ 0x0008

SDCI
SDRAM コントローラ・
アイドル
0 - SDC はアクセスや
Auto-Refresh の実行でビジーです
1 - SDC はアイドルです
SDSRA
SDRAMセルフリフレッシュ・
アクティブ
0 - SDRAMはセルフリフレッ
シュ・モードではありません
1 - SDRAMはセルフリフレッ
シュ・モードです
SDPUA
SDRAM パワーアップ・
アクティブ
0 - SDCはパワーアップ・シー
ケンスにありません
1 - SDCはパワーアップ・シー
ケンスにあります

図 17-12.SDRAM コントロール・ステータス・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-49

SDRAM コントローラ（SDC）■ EBIU_SDRRC レジスタ
SDRAMリフレッシュ・レート・コントロール・レジスタ（EBIU_SDRRC）は、
Auto-Refresh のタイミングを指定するための柔軟なメカニズムを提供します。SDRAM に供給されるクロックは変動することがあるため、SDC
は、プログラマブルなリフレッシュ・カウンタを提供します。このカウンタの周期は、このレジスタの RDIV フィールドにプログラムされた値をベースにしています。このカウンタは、供給されるクロック・レートと SDRAM
デバイスの必要な更新レートを調整します。
リフレッシュ・カウンタの隣接するタイムアウト間の遅延（SDRAM ク
ロック・サイクル単位で）の設定は、RDIV フィールドに書き込む必要があります。リフレッシュ・カウンタのタイムアウトは、すべての外部 SDRAM
デバイスに対して Auto-Refresh コマンドをトリガします。SDRAM パワー
アップ・シーケンスがトリガされる前に、RDIV 値を EBIU_SDRRC レジスタに書き込みます。この値は、SDC がアイドル状態のときにだけ変更してください。
SDRAM リフレッシュ・レート・コントロール・レジスタ（EBIU_SDRRC）
0xFFC0 0A18

15 14 13 12 11 10 9
0 0 0 0 1 0 0

8
0

7
0

6
0

5
0

4
1

3
1

2
0

1
1

0
0

リセット＝ 0x081A

RDIV

図 17-13.SDRAM リフレッシュ・レート・コントロール・レジスタ
EBIU_SDRRC レジスタに書き込む値を計算するには、次の式を使用します。
RDIV = ((fSCLK × tREF) / NRA) – (tRAS + tRP)

ここで、
• fSCLK ＝ SDRAM クロック周波数（システム・クロック周波数）

17-50

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット• tREF ＝ SDRAMリフレッシュ周期• NRA ＝ SDRAM 内の行アドレス数（SDRAM 全体をリフレッシュするためのリフレッシュ・サイクル）• tRAS ＝クロック・サイクル数で表した、Activeから Precharge までの時間（SDRAM メモリ・グローバル・コントロール・レジスタのTRAS）• tRP ＝クロック・サイクル数で表した、RASから Precharge までの時間（SDRAM メモリ・グローバル・コントロール・レジスタの TRP）
この式は、必要なリフレッシュ間のクロック・サイクル数を計算し、同じ
内部バンクに対する Bank Activate コマンド間の必要な遅延（tRC ＝ tRAS
+ tRP）を減算します。tRC 値が減算されることによって、SDRAM サイク
ルがアクティブである間にリフレッシュのタイムアウトが発生した場合、
SDRAM の更新レート仕様が満たされることが保証されます。式の結果
は、常に整数に切り捨てます。
次に 示 す のは、133MHz のク ロ ック を 備え た シス テ ムで の 代表 的 な
SDRAM に対する RDIV の計算例です。
fSCLK = 133 MHz
tREF = 64 ms
NRA = 4096 行アドレス
tRAS = 2
tRP = 2RDIV の式は次のように得られます。
RDIV = ( (133 x 106 x 64 x 10-3) / 4096) – (2 + 2) = 2074クロック・サイクル

これは、RDIV が 0x81A（16進）であり、SDRAM リフレッシュ・レート・
コントロール・レジスタに 0x081Aを書き込むべきことを意味します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-51

SDRAM コントローラ（SDC）

なお、SDRAM コントローラがイネーブルにされている場合には、RDIV には非ゼロ値をプログラムする必要があります。RDIV ＝ 0 の場合、SDRAM
コントローラの動作は利用できず、望ましくない動作を招くことがあります。RDIV の値は、0x001 ～ 0xFFFの範囲とすることができます。

L

SDRAM を使用する場合、PLL 周波数の変更プロセスの詳細については、18-10 ページの「PLL 遷移時における SDRAM のリフレッ
シュ管理」を参照してください。

■ SDRAM 外部メモリのサイズ
プロセッサによってアドレス指定される外部 SDRAM メモリの合計量は、
EBIU_SDBCTL レジスタの EBSZ ビットによって制御されます（表17-6 を参照）。EBSZ 値で示される範囲を超えてのアクセスは、内部バス・エラーにつながり、アクセスは行われません。詳細については、17-9 ページの「エラー検出」を参照してください。
表 17-6.

バンク・サイズのエンコーディング

EBSZ

バンク・サイズ（M バイト）有効な SDRAM アドレス00

160x0000 0000 – 0x00FF FFFF

01

32

0x0000 0000 – 0x01FF FFFF

1064

0x0000 0000 – 0x03FF FFFF

11

128

0x0000 0000 – 0x07FF FFFF

17-52

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット■ SDRAM アドレスのマッピング
SDRAM にアクセスするため、SDC は内部にある 32 ビットの非多重化ア
ドレスを、SDRAM デバイスの行アドレス、列アドレス、バンク・アドレ
ス、バイト・データ・マスクに多重化します。図 17-14 を参照してください。最下位ビットはバイト・データ・マスクにマッピングされ、次のビッ
トは列アドレスにマッピングされ、その次のビットは行アドレスにマッピングされ、最後の 2ビットはバンク・アドレスにマッピングされます。このマッピングは、SDRAM メモリ・バンク・コントロール・レジスタにプ
ログラムされた EBSZ と EBCAW のパラメータをベースにしています。
31

26

0
内部の 32 ビット・アドレス
バンク・
アドレス

行アドレス

列アドレス

バイト・
マスク

図 17-14.多重化された SDRAM アドレッシング方式
X 16 ビット幅の SDRAM アドレスの多重化

次の表は、アドレス・ピンと SDRAM デバイス・ピンとの接続を示します。
表 17-7.

16 ビット・バンク用の SDRAM アドレス接続

外部アドレス・ピン

SDRAM アドレス・ピン

ADDR[19]BA[1]

ADDR[18]BA[0]ADDR[16]A[15]ADDR[15]A[14]ADDR[14]A[13]ADDR[13]A[12]ADDR[12]A[11]ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-53

SDRAM コントローラ（SDC）

表 17-7.

16 ビット・バンク用の SDRAM アドレス接続（続き）

外部アドレス・ピン

SDRAM アドレス・ピン

SA[10]A[10]

ADDR[10]A[9]ADDR[9]A[8]ADDR[8]A[7]ADDR[7]A[6]ADDR[6]A[5]ADDR[5]A[4]ADDR[4]A[3]ADDR[3]A[2]ADDR[2]A[1]ADDR[1]

A[0]■ データ・マスク（SDQM[1:0]）のエンコーディング
SDRAM への書込み転送中、SDQM[1:0] ピンはアクセスされないバイトへの書込みをマスクするために使用されます。17-55 ページの表 17-8 は、内部転送アドレス・ビット IA[0] と転送サイズに基づいて、16 ビット幅
SDRAM 用の SDQM[1:0] のエンコーディングを示します。
SDRAM バンクへの読出し転送中、読出しは転送サイズとは無関係に、常にバンク内の全バイトについて行われます。つまり、16ビット SDRAMバ
ンクの場合、SDQM[1:0] はオール 0です。

17-54

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット

SDQM[1:0] ピンがハイレベルとなる唯一のケースは、SDRAM への書込み

転送中にバイトがマスクされた場合です。それ以外の場合、SDQM[1:0] ピ
ンはローレベルに保持されます。
表 17-8.

書込み中の SDQM[1:0] のエンコーディング

内部アドレス
IA[0]内部転送サイズ
バイト

2 バイト

4 バイト

0

SDQM[1] = 1
SDQM[0] = 0

SDQM[1] = 0
SDQM[0] = 0

SDQM[1] = 0
SDQM[0] = 0

1

SDQM[1] = 0
SDQM[0] = 1■ SDC 動作
SDC では、読出し／書込み動作にバースト長＝1を使用します。ページ・ミスが発生するたびに、SDCは Prechargeコマンドを実行し、続いて Bank
Activate コマンドを実行してから、Read または Write コマンドを実行します。ページ・ヒットがあった場合には、Prechargeコマンドを必要とする
ことなく、Read または Write コマンドをすぐに出すことができます。
SDRAM Read コマンドの場合、Readコマンドの開始からSDRAM のデー
タが使用可能になるまでには、CAS 遅延に等しい遅延があります。この遅延は、任意の単一読出し転送には常に存在します。2 回目以降の読出しには遅延はありません。
プログラマブルなリフレッシュ・カウンタが提供されます。このカウンタ
は、使用するクロック周波数に基づいて、必要な更新レートでバックグラ
ウンドのAuto-Refreshサイクルを生成するようにプログラムできます。リフレッシュ・カウンタの周期は、SDRAM リフレッシュ・レート・コント
ロール・レジスタの RDIV フィールドで指定されます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-55

SDRAM コントローラ（SDC）

Auto-RefreshコマンドをどのAMCアクセスとも並列に実行できるようにするため、独立した A10 ピン（SA10）が提供されています。Auto-Refresh
コマンドを発行する前に、すべての SDRAM 内部バンクがプリチャージされます。
内部にある 32ビットの非多重化アドレスは、行アドレス、列アドレス、バンク選択アドレス、データ・マスクに多重化されます。16ビット幅 SDRAMのビット 0は、データ・マスクの生成に使用されます。次に低いビットは列アドレスにマッピングされ、次のビットは行アドレスにマッピングされ、最後の 2ビットは内部バンク・アドレスにマッピングされます。このマッピングは、SDRAM メモリ・バンク・コントロール・レジスタにプログラムされた EBCAW と EBSZ の値に基づいています。

■ SDC の設定
プロセッサのハードウェア／ソフトウェア・リセット後に、SDCクロックがイネーブルにされます。しかし、SDCは、これ以外にも設定および初期化する必要があります。SDCをプログラミングしてパワーアップ・シーケンスを実行する前に、SDRAMによって指定される適切な時間にわたって電力が安定した後、SDRAMへのクロックをイネーブルにしてください。SDRAM用にSDC を設定してSDRAM パワーアップ・シーケンスを開始するには、
SDRAM リフレッシュ・レート・コントロール・レジスタ（EBIU_SDRRC）、
SDRAMメモリ・バンク・コントロール・レジスタ（EBIU_SDBCTL）、SDRAM
メモリ・グローバル・コントロール・レジスタ（EBIU_SDGCTL）に書き込
み、SDRAMアドレス空間への転送を開始する必要があります。SDRAM
コントロール・ステータス・レジスタの SDRS ビットをチェックすれば、SDC の現在の状態を判定できます。このビットがセットされている場合、
SDRAM パワーアップ・シーケンスは開始されていません。
SDRAM更新レートを設定するには、EBIU_SDRRC レジスタの RDIV フィール
ドに書き込んでください。

17-56

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット

使用する SDRAM メモリ設定とサイズ（EBCAW と EBSZ）を記述し、外部バンク（EBE）をイネーブルにするには、EBIU_SDBCTL レジスタに書き込んでください。なお、SDRAMパワーアップ・シーケンスが開始されるまでは、
EBE ビットの状態とは無関係に、SDRAM アドレス空間へのアクセスは内部バス・エラーを生成し、外部からのアクセスは行われません。詳細については、17-9 ページの「エラー検出」を参照してください。SDRAM パ
ワーアップ・シーケンスが完了した後、外部バンクがディスエーブルにされている場合には、外部バンクへの転送はハードウェア・エラー割込みを招き、SDRAM 転送は行われません。
EBIU_SDGCTL レジスタは、以下の目的で書き込まれます。

• SDRAM サイクル・タイミング・オプションを設定する（CL、TRAS、
TRP、TRCD、TWR、EBUFE）• SDRAM クロックをイネーブルにする（SCTLE）• SDRAM パワーアップ・シーケンスの開始を選択してイネーブルにする（PSM、PSSE）
なお、SCTLE がディスエーブルにされている場合、SDRAM アドレス空間
へのアクセスは内部バス・エラーを生成し、外部からのアクセスは行われません。詳細については、17-9 ページの「エラー検出」を参照してくだ
さい。
EBIU_SDGCTL レジスタの PSSE ビットが 1 に設定され、イネーブルにされた

SDRAM アドレス空間に転送が行われると、SDC は SDRAM パワーアップ・シーケンスを開始します。厳密なシーケンスは、EBIU_SDGCTL レジス
タの PSM ビットによって決定されます。SDRAMパワーアップ・シーケンスのトリガに使用される転送は、読出しまたは書込みとすることができます。この転送は、SDRAMパワーアップ・シーケンスが完了したときに行われます。この最初の転送では、SDRAM パワーアップ・シーケンスを行う必要があるため、完了までに多くのサイクルを必要とします。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-57

SDRAM コントローラ（SDC）■ SDC コマンド
ここでは、SDCが SDRAMインターフェースの管理に使用するコマンドをそれぞれ説明します。これらのコマンドは、メモリ読出しまたはメモリ書込みと同時に、自動的に開始されます。SDRAM インターフェース用のオンチップ・コントローラで使用される、さまざまなコマンドのまとめは次のとおりです。
• Precharge All：すべてのバンクをプリチャージします。
• Single Precharge：1つのバンクをプリチャージします。
• Bank Activate：要求された SDRAM 内部バンク内のページをアクティブにします。
• Load Mode Register：パワーアップ・シーケンス中に SDRAMの動作パラメータを初期化します。
• Load Extended Mode Register：パワーアップ・シーケンス中にモ
バイル SDRAM の動作パラメータを初期化します。
• Read/Write• Auto-Refresh：SDRAMは、CAS before RAS リフレッシュを実行します。
• Self-Refresh：SDRAM をセルフリフレッシュ・モードにします。
このモードでは、SDRAM はパワーダウンし、そのリフレッシュ動
作を内部的に制御します。
• NOP/Command Inhibit：無動作

17-58

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット

次の表には、SDC コマンド処理中のSDRAMピンの状態を示します。
表 17-9.

SDC コマンド処理中のピン状態

コマンド

SMS

SCAS

SRAS

SWE

SCKE

SA10

Precharge All

ロー
レベル

ハイレベル

ローレベル

ローレベル

ハイレベル

ハイレベル

SinglePrecharge

ロー
レベル

ハイレベル

ローレベル

ローレベル

ハイレベル

ローレベル

Bank Activate

ロー
レベル

ハイレベル

ローレベル

ハイレベル

ハイレベル

Load Mode
Register

ロー
レベル

ローレベル

ローレベル

ローレベル

ハイレベル

Load Extended ロー
Mode Register レベル

ロー
レベル

ロー
レベル

ロー
レベル

ハイレベル

ロー
レベル

Read

ロー
レベル

ローレベル

ハイレベル

ハイレベル

ハイレベル

ローレベル

Write

ロー
レベル

ローレベル

ハイレベル

ローレベル

ハイレベル

ローレベル

Auto-Refresh

ロー
レベル

ローレベル

ローレベル

ハイレベル

ハイレベル

Self-Refresh

ロー
レベル

ローレベル

ローレベル

ハイレベル

ローレベル

NOP

ロー
レベル

ハイレベル

ハイレベル

ハイレベル

ハイレベル

Command
Inhibit

ハイ
レベル

ハイレベル

ハイレベル

ハイレベル

ハイレベル

X Precharge コマンド

Precharge All コ マン ド によ っ て、す べ ての 内 部バ ン クを 同 時に プ リ
チャージしてから自動リフレッシュができます。特定の内部 SDRAM バン
クにおける読出し／書込み時のページ・ミスについては、SDC はそのバンクへの Single Prechargeコマンドを使用します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-59

SDRAM コントローラ（SDC）

X Bank Activate コマンド

Bank Activate コマンドは、次のデータ・アクセスが別のページにある場合に必要です。SDCは、Prechargeコマンドの後に続けて Bank Activate
コマンドを実行して、希望する SDRAM 内部バンク内のページをアクティ
ブにします。

L

SDC はバンクのインターリーブに対応します（同時に最大4 つの内部 SDRAMバンクをオープンします）。これにより、有効ページ・サイズは 4になります。アドレス・マッピングで各内部バンクの開始アドレスを示します。

L

バンクのインターリーブは、同じページ内でストールなしに 4つの内部 SDRAM バンクをスイッチすることによって行われます。

X Load Mode Register コマンド

Load Mode Register コマンドは、SDRAM 動作パラメータを初期化します。このコマンドは、SDRAM パワーアップ・シーケンスの一部です。
Load Mode Registerコマンドでは、SDRAMのアドレス・バスをデータ入力として使用します。パワーアップ・シーケンスを開始するには、SDRAM
メモリ・グローバル・コントロール・レジスタ（EBIU_SDGCTL）の PSSE
ビットに 1を書き込み、SDRAM アドレス空間内のイネーブルにされた任意のアドレスに書込みまたは読出しを行ってパワーアップ・シーケンスを
トリガします。パワーアップ・シーケンスの厳密な順序は、EBIU_SDGCTL
レジスタの PSM ビットによって決定されます。
Load Mode Registerコマンドでは、以下のパラメータを初期化します。
• バースト長＝ 1、ビット2～ 0、常に0• ラップ・タイプ＝順次、ビット 3、常に 0• Ltmode ＝遅延モード（CAS 遅延）、ビット 6～4、EBIU_SDGCTL レ
ジスタでプログラム可能

17-60

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット• ビット 14～7、常に 0
Load Mode Registerコマンドの実行中、未使用のアドレス・ピンは0に設定されます。Load Mode Registerコマンドの後に続く 2クロック・サイク
ル中に、SDCは NOPコマンドだけを発行します。
拡張モード・レジスタを内蔵する低消費電力のモバイル SDRAM において、EBIU_SDGCTL レジスタの EMREN ビットがセットされている場合には、パワーアップ・シーケンス中にこのレジスタがプログラムされます。
拡張モード・レジスタは、以下のパラメータで初期化されます。
• パーシャル・アレイ・セルフリフレッシュ、ビット 2 ～ 0、ビット
2 は常に0、ビット1 ～0は EBIU_SDGCTL でプログラマブル• 温度補償セルフリフレッシュ、ビット 4～ 3、ビット3は常に1、ビット 4は EBIU_SDGCTL でプログラマブル• ビット 12～5、常に 0、ビット 13は常に1
X Read/Write コマンド

Read/Write コマンドは、次の読出し／書込みアクセスが現在のアクティ
ブ・ページにある場合に実行されます。Readコマンドの処理中に、SDRAM
は列アドレスをラッチします。Activate コマンドとRead コマンドとの間の遅延は、tRCD パラメータによって決定されます。データは、CAS 遅延が満たされた後で SDRAM から入手できます。
Write コマンドでは、SDRAM は列アドレスをラッチします。書込みデー
タも同じサイクルで有効です。Activateコマンドと Writeコマンドとの間の遅延は、tRCD パラメータによって決定されます。
SDC は、SDRAM の自動プリチャージ機能を使用しません。この機能は、Read またはWrite コマンドの処理中に、SA10 をハイレベルでアサートすることによってイネーブルにされます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-61

SDRAM コントローラ（SDC）

X Auto-Refresh コマンド

Auto-Refresh コマンドが出されると、SDRAM はリフレッシュ・アドレ
ス・カウンタを内部的にインクリメントし、そのアドレスに対して CAS
before RAS（CBR）リフレッシュを内部的に実行します。SDC リフレッ
シュ・カウンタがタイム・アウトした後、SDC はAuto-Refresh コマンドを生成します。SDRAM タイミング仕様で指定されたtREF 期間内にすべてのアドレスがリフレッシュされるように、SDRAM 更新レート・コント
ロール・レジスタの RDIV 値を設定する必要があります。このコマンドは、
イネーブルされているかどうかとは無関係に外部バンクに発行されます（SDRAMメモリ・グローバル・コントロール・レジスタの EBE）。
Auto-Refresh
コマンドを実行する前に、SDCは外部バンクに対して Precharge Allコマ
ンドを実行します。次の Activate コマンドは、tRFC 仕様（tRFC = tRAS +tRP）が満たされるまでは出されません。
Auto-Refresh コマンドは、パワーアップ・シーケンスの一部として SDC
によっても発行され、Self-Refreshモードの終了後にも発行されます。
X Self-Refresh コマンド

Self-Refresh コマンドによって、リフレッシュ動作は外部制御なしで、SDRAM によって内部的に実行されます。つまり、SDRAM が Self-Refresh
モー ド にあ る 間 は、SDC は Auto-Refresh サ イ クル を 生成 し ませ ん。
Self-Refresh コマンドを実行する前に、すべての内部バンクはプリチャー
ジされます。Self-Refreshモードをイネーブルにするには、SDRAM メモ
リ・グローバル・コントロール・レジスタ（EBIU_SDGCTL）の SRFS ビットに 1を書き込みます。Self-Refreshコマンドを発行した後、SDC は SCKE を
ローレベルに駆動します。これによって、SDRAM はパワーダウン・モー
ドになります（SCKE ＝ 0、SRAS/SMS/SCAS/SWE ＝ 1）。Self-Refreshモードを終了する前に、SDCは SCKE をアサートします。SDRAMは、少なくとも tRASの期 間、そ して SDRAM 空 間 への 内 部ア ク セス が 行わ れ るま で は
Self-Refresh モードにとどまります。内部アクセスが行われて、SDC がSDRAM をSelf-Refresh モードから終了させると、SDCは tXSR 仕様（tRFC

17-62

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット= tRAS + tRP）を満たすように待機してから、Auto-Refresh コマンドを発行します。Auto-Refreshコマンドの後、SDCは tRFC 仕様（tXSR = tRAS +tRP）を満たすように待機してから、SDRAM にSelf-Refresh モードを終了させた転送に対する Activate コマンドを実行します。したがって、
Self-Refresh モードにある間に転送が SDCによって受信されてから、その転送に対して Activate コマンドが行われるまでの遅延は、2 ×（tRAS +tRP）となります。
なお、Self-Refresh モード中には、CLKOUT は SDCによってディスエーブルにされません。しかし、ソフトウェアは EBIU_SDGCTL の SCTLE ビットをク
リアすることで、クロックをディスエーブルにできます。アプリケーショ
ン・ソフトウェアでは、コントローラに Self-Refresh モードを終了させる
SDRAM アドレス空間への転送の前に、適用可能なすべてのクロック・タ
イミング仕様が満たされることを保証してください。SCTLE ビットがクリアされているときに、SDRAM アドレス空間への転送が発生した場合には、内部バス・エラーが生成され、アクセスは外部的に行われず、SDRAM
は Self-Refresh モードに残されます。詳細については、17-9 ページの「エラー検出」を参照してください。
X No Operation/Command Inhibit コマンド

SDRAM への無動作（NOP）コマンドは、現在進行中の動作に影響を与えません。Command Inhibit コマンドは、NOP コマンドと同じです。しかし、SDRAMはチップ選択されません。SDC がSDRAM にアクティブにアクセスしており、効果のないコマンドを追加挿入する必要がある場合、NOP コマンドが出されます。SDC がSDRAM にアクセスしていない場合、
Command Inhibit コマンドが出されます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-63

SDRAM コントローラ（SDC）■ SDRAM のタイミング仕様
さまざまな SDRAM ベンダーの主要なタイミング条件とパワーアップ・
シーケンスに対応するため、SDCは、tRAS、tRP、tRCD、tWR、およびパ
ワーアップ・シーケンス・モードが設定可能になっています（詳細については、17-34 ページの「EBIU_SDGCTL レジスタ」を参照）。CAS遅延
は、動作周波数に基づいて、EBIU_SDGCTL レジスタでプログラムしてください。（詳細については、SDRAM ベンダーのデータシートを参照してください。
）
この他のパラメータについては、SDC では次のように想定します。
• バンク・サイクル時間：tRC = tRAS + tRP• リフレッシュ・サイクル時間：tRFC = tRAS + tRP• セルフリフレッシュ終了時間：tXSR = tRAS + tRP• Load Mode Register からActivate までの時間：tMRD また tRSC ＝ 3
クロック・サイクル• ページ・ミスの損失＝ tRP + tRCD

■ SDRAM Performance
7-12 ページの表 7-2 は、16ビット幅 SDRAM へのコアまたは DMA の読出
し／書込みアクセスに対する、データ・スループット・レートを示します。この例で、すべてのサイクルは SCLK サイクルであり、次の SCLK 周波数と SDRAM パラメータが使用されると想定します。
• SCLK 周波数＝ 133MHz• CAS 遅延＝2サイクル（CL = 2）
• SDRAM バッファリングなし（EBUFE = 0）
• RAS プリチャージ（tRP）＝ 2サイクル（TRP = 2）
17-64

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

外部バス・インターフェース・ユニット• RAS から CAS 遅延（tRCD）＝ 2 サイクル（TRCD = 2）
• アクティブ・コマンド時間（tRAS）＝5サイクル（TRAS = 5）
外部バッファ・タイミング（SDRAM メモリ・グローバル・コントロー
ル・レジスタの EBUFE = 1）または CAS 遅延＝3（SDRAM メモリ・グロー
バル・コントロール・レジスタの CL = 11）、あるいはその両方が使用された場合、すべてのアクセスで、選択された機能ごとに 1サイクルだけ余分に必要となります。

バス要求と許可
プロセッサは、データとアドレス・バスの制御を外部デバイスに明け渡すことができます。プロセッサがそのメモリ・インターフェースを 3 ステー
トにすることで、外部コントローラは、非同期または同期の外部メモリ・
パーツにアクセスできます。

■ 動作
外部デバイスがバスへのアクセスを必要とするとき、バス要求（BR）信号をアサートします。BR 信号は、EAB要求と調停されます。保留中の内部要求がない場合には、外部バス要求は許可されます。プロセッサは、次のよ
うにしてバス許可を実行します。
• データ・バス、アドレス・バス、非同期メモリ制御信号を 3 ステー
トにします。同期メモリ制御信号は、オプションで 3 ステートにできます。
• バス許可（BG）信号をアサートします。
バスが外部デバイスに許可され、外部メモリに対して命令フェッチやデー
タ読出し／書込み要求が行われた場合、プロセッサはプログラム実行を停止させることがあります。外部デバイスが BR を解放すると、プロセッサはBG をアサート解除して、停止したポイントから実行を続行します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

17-65

バス要求と許可

プロセッサは、別の外部ポート・アクセスを開始する準備ができたときに
BGH ピンをアサートしますが、バスはすでに許可されているので、プロセッ
サは阻止されます。
バスが許可された場合、SDSTAT レジスタの BGSTAT ビットはセットされます。外部バス許可によって遅延の生じるトランザクションの開始を回避するために、プロセッサはこのビットを使用してバス・ステータスをチェッ
クします。

17-66

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

第18章 システム設計

この章には、ユーザが Blackfin プロセッサをベースとするシステムを開発する際に役立つハードウェア、ソフトウェアおよびシステム設計に関する情報を記載しています。システム内に実装される設計オプションは、コスト、性能、およびシステム要件に応じて異なります。多くの場合、この章で取り上げる設計に関する事項は、本マニュアルの他の節で詳細に説明されています。このようなケースに該当する場合には、この章で説明を繰り返すのではなく、該当する節を参照するよう示しています。

ピンの説明
160 ピン PBGA パッケージのピン番号を含めて、ピンに関する詳細については、『ADSP-BF531/ADSP-BF532/ADSP-BF533 Embedded Processor
Data Sheet』を参照してください。

■ 未使用ピンに関する推奨処置
ピ ン の 詳 細 に つ い て は、『ADSP-BF531/ADSP-BF532/ADSP-BF533
Embedded Processor Data Sheet』を参照してください。

プロセッサのリセット
RESET ピンを使用して設定するハードウェア・リセット・モードに加えて、このプロセッサはいくつかのソフトウェア・リセット・モードも提供します。各種のモードに関する詳細については、3-13 ページの「システム・リ
セットとパワーアップ」を参照してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

18-1

プロセッサのブート

リセット後のプロセッサの状態については、3-11 ページの「リセット状態」で説明しています。

プロセッサのブート
各種の方法でプロセッサをブートできます。その方法として、外部 16ビッ
ト・メモリからの実行、8ビットのフラッシュ・メモリからコードをロードするように設定された ROM からのブート、またはシリアルROM（8ビット、16 ビット、または 24 ビットのアドレス範囲）からのブートがあります。このブート・モードに関する詳細については、3-19 ページの「ブート方式」を参照してください。
図 18-1と図 18-2は、それぞれ8 ビットと16 ビットのブーティングに必要とされる接続を図示しています。8ビットと 16ビットの両方のペリフェラ
ルに対して、同じ方法でアドレス接続が行われる点に注意してください。
バイト幅メモリを使用する場合にアクセスできるのは、各 16 ビット・ワー
ドの下位バイトのみに限られます。
例えば、コア読出し動作の場合には、以下のようになります。
R0 = W[P0] (Z) ;//P0 は16 ビットのアライメントされた ASYNC メモリ位置をポイントします8 ビット・デバイスから読み出された実際の値は、R0 の下位8 ビットのみに含まれます。
コア書込み動作の場合には、以下のようになります。
W[P0] = R0.L ;//P0 は 16 ビットのアライメントされた ASYNC メモリ位置をポイントします

8 ビット・デバイスに書き込まれる 8 ビット値が、R0 の下位バイトに最初にロードされることが必要です。

18-2

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

システム設計

8ࡆ࠶࠻SRAM߹ߚߪࡈ࡜࠶ࠪࡘ

ADSP-BF533
ADSP-BF532
ADSP-BF531
AMS [X]AMS [X]

AOE

OE

AWE

R/W OR WR

ABE [1:0]

BE[1:0ADDR[N+1:1]

A[N:0]DATA[7:0]

D[7:0]ARE
ARDY

図 18-1. 8 ビット SRAM またはフラッシュとのインターフェース

ADSP-BF533
ADSP-BF532
ADSP-BF531
AMS [X]

16ࡆ࠶࠻SRAM߹ߚߪࡈ࡜࠶ࠪࡘ
AMS [X]

AOE

OE

AWE

R/W OR WR

ABE [1:0]

BE[1:0 ]ADDR[N+1:1]

A[N:0]DATA[15:0]

D[15:0]ARE
ARDY

図 18-2. 16 ビット SRAM またはフラッシュとのインターフェース

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

18-3

クロックの管理

クロックの管理
システムは水晶発振子を使用するか、または外部の水晶発振子から供給されるバッファされた成形クロックを使用して、クロック入力を駆動することができます。外部クロックは、プロセッサの CLKIN ピンに接続します。
通常の動作時に規定値よりも低い周波数で CLKIN を停止、変更、または動作させることはできません。プロセッサはクロック入力（CLKIN）を使用
して、オンチップ・クロックを生成します。これらのクロックには、コ
ア・クロック（CCLK）とペリフェラル・クロック（SCLK）が含まれます。

■ コア・クロックとシステム・クロックの管理
プロセッサは CLKIN ピン上に供給されるクロック入力を逓倍することによって、PLL の VCO クロックを生成します。この VCO クロックが分周されて、コア・クロック（CCLK）とシステム・クロック（SCLK）が生成されます。コア・クロックは、PLL_DIV レジスタの CSEL ビットの設定でプログラミングされる分周比に基づいて生成されます。システム・クロックは、
PLL_DIV レジスタの SSEL ビットの設定でプログラミングされる分周比に基づいて生成されます。CCLK と SCLK の各周波数を設定および変更する方法に関する詳細については、第 8 章「ダイナミック・パワー・マネジメント」を参照してください。

割込みの設定とサービス各種の割込みを利用できます。これには、コア割込みとペリフェラル割込
みの両方が含まれています。プロセッサは、デフォルトのコア優先順位を
システム・レベルの割込みに割当てます。ただし、システム割込み割当て
レジスタ（SIC_IARx）を使用して、これらのシステム割込みのマッピング
変更を行うことが可能です。この詳細については、4-32ページの「システ
ム割込み割当てレジスタ（SIC_IARx）」を参照してください。

18-4

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

システム設計

プロセッサ・コアは、ネストされた割込みとネストされない割込みを提供します。各種モードのサービス・イベントに関する説明については、4-52
ページの「割込みのネスティング」を参照してください。

セマフォ
セマフォは、同じシステム内部で実行される複数のプロセッサまたはプロセス／スレッド間の通信に対応するメカニズムを提供します。セマフォ
は、リソースの共有を調整する目的に利用されます。例えば、ある 1つのプロセスが 1 つの特定リソースを使用しているときに、別のプロセスがその同じリソースの利用を要求する場合、最初のプロセスが該当リソースの使用をすでに完了していることを通知するまで、そのプロセスは待機しなければなりません。このシグナリングがセマフォによって達成されます。
セマフォのコヒーレンシは、テストおよびセットバイト（アトミック）命令（TESTSET）の使用によって保証されます。TESTSET 命令は、以下の機能を実行します。
• P レジスタによってポイントされたメモリ位置にハーフ・ワードをロードします。Pレジスタのアライメントは、ハーフ・ワードの境界で実行される必要があります。
• 値がゼロに等しい場合に、CC を設定します。
• 値をその最初の場所に戻して保存します（ただし、下位バイトの最上位ビット（MSB）は1に設定されます）。
TESTSET によってトリガされるイベントは、アトミック・オペレーションです。アドレスが指定されるメモリに対応するバスが取り込まれ、このバスはストア・オペレーションが完了するまで解放されません。マルチス
レッド・システムでは、セマフォの整合性を維持するために、TESTSET 命
令が必要です。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

18-5

セマフォ

ストア・オペレーションがストアまたは書込みバッファを通して確実にフラッシュされることを保証するために、セマフォを解放した直後に SSYNC
命令を発行してください。
TESTSET 命令を利用して、バイナリ・セマフォを実装するか、またはその他の任意タイプの除外メソッドを実装することができます。TESTSET 命令
は、マルチサイクルのバス・ロック・メカニズムに対して要求されるシス
テム・レベルの条件をサポートします。
プロセッサは、TESTSET 命令の使用を外部メモリ領域のみに制限します。
この領域以外のメモリ・マップ・エリアに対して TESTSET 命令を使用すると、挙動の信頼性が損なわれる結果になる可能性があります。

■ クエリ・セマフォのコード例
リスト 18-1 は、共有リソースが使用できるかをチェックするクエリ・セ
マフォのコード例を記載しています。
リスト 18-1. クエリ・セマフォ/* クエリー・セマフォ。その値が非ゼロの場合に、「ビジー」であることを示します。
ビジー状態が解除されるまで（またはスレッドのスケジュール変更が行われるまで ―以下の注を参照）待ってください。P0 はセマフォのアドレスを保持します */QUERY:TESTSET ( P0 ) ;IF !CC JUMP QUERY ;/* この時点で現在のスレッドに対してセマフォが許可され、[P0] のセマフォの値が非ゼロであるため、競合している他のすべてのスレッドが後回しにされます。現在のスレッ
ドは thread_id をセマフォの場所に書き込み、現在のリソース所有者を示すことができます */R0.L = THREAD_ID ;B[P0] = R0 ;18-6

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

システム設計/* 共有リソースを用いた実行が完了した時点で、ゼロ・バイトを [P0] に書き込みます*/
R0 = 0 ;B[P0] = R0 ;SSYNC ;/* 注：QUERY ループでビジー・アイドリングを使用するのではなく、オペレーティン
グ・システム・コールを使用して、現在のスレッドのスケジュール変更を行うことができます */

データ遅延、レイテンシおよびスループット
DMA および外部メモリ・バスのレイテンシと性能の見積り評価に関する
詳細については、第 7 章「チップ・バス階層」を参照してください。

バスの優先順位
各種の内部バス間における優先順位に関する説明については、第7章「チップ・バス階層」を参照してください。

外部メモリの設計に関する事項
この節では、外部メモリの設計に関する事項について説明します。

■ 非同期メモリ・インターフェースの例
この節では、16 ビット幅のSRAM とのグルーレス接続を紹介します。このインターフェースでは、ARDY を外部からアサートする必要がありません。その理由は、メモリのアクセス時間を確定化するうえで、内部の待ち状態カウンタが十分に対応するためです。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

18-7

外部メモリの設計に関する事項

16ビット・メモリをサポートするために必要とされるシステムの相互接続を図 18-3に示します。

SRAM

ADSP-BF533
ADSP-BF532
ADSP-BF531
AMS[X]

CE

AOE

OE

AWE

R/W

ABE [1:0]

B[1:0]ADDR[N + 1:2]

A[N:1]ADDR[1]DATA[15:0]

A[0]D[15:0]ARE
ARDY

図 18-3. 16 ビット SRAM とのインターフェース■ 16M バイトよりも小さい SDRAM の利用
ADSP-BF531/ADSP-BF532/ADSP-BF533 では、16M バイトよりも小さ
い SDRAMを使用することが可能です。ただし、その際には結果としてメ
モリ・マップが変更される方法を理解する必要があります。2M バイトのSDRAM（512K × 16 ビット×2 バンク）が外部メモリ・インターフェー
スにマッピングされる例を図 18-4 に示します。この例では、各バンクあたり11個の行アドレスと8個の列アドレスが割当てられています。
表 17-5を参考にすると、8個の列アドレスが割当てられたデバイスで利用可能な
最低のバンク・サイズ（16M バイト）は、2本のバンク・アドレス・ライン（IA[23:22]）と13 本の行アドレス・ライン（IA[21:9]）で構成されます。したがって、例示する SDRAM との接続時には、1 本のプロセッサ・
バンク・アドレス・ラインと 2本の行アドレス・ラインが使用されません。

18-8

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

システム設計

そのために、プロセッサの外部メモリ・マップでエイリアシングが引き起
こされ、これが原因で SDRAMがプロセッサのメモリ・スペースの非連続的領域にマッピングされる結果になります。
図 18-4に示す表を参考にして、表の各行が 219 バイト、すなわち 512Kバイトに相当することを確認してください。このような方法により、2M バ
イト SDRAMのマッピングは、図の左側のメモリ・マッピングで示すように Blackfinメモリで非連続的となります。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

18-9

外部メモリの設計に関する事項଀㧦.ࡆ࠶࠻ࡃࡦࠢ
㧔ฦࡃࡦࠢ޽ߚࠅ୘ߩⴕࠕ࠼࡟ࠬߣ
୘ߩ೉ࠕ࠼࡟ࠬ㧕ߢ᭴ᚑߐࠇࠆ
0ࡃࠗ࠻6'5$0

ࡃࡦࠢ࡮
ࠕ࠼࡟ࠬ

,$ ,$ %ODFNILQߩࡔࡕ࡝࡮ࡑ࠶ࡊ

0ࡃࠗ࠻

0ࡃࠗ࠻
[

ⴕࠕ࠼࡟ࠬ

,$

,$

,$

,$

,$



































































































































































;

;

;

;

೑↪ߢ߈ߥ޿୯ߩ⚵ߺวࠊߖߪ‫ߌ߆✂ޔ‬ઃ߈ߢ⴫⸥ߒߡ޿߹ߔ‫ޕ‬

図 18-4. 容量の小さい SDRAM の使用■ PLL 遷移時における SDRAM のリフレッシュ管理
プロセッサの SDRAM のリフレッシュ・レートは SCLK の周波数に基づくので、SDRAM を設定した後で SCLK の周波数を下げると、リフレッシュ・
レートの設定が不適切になり、そのために SDRAM に保存されるデータが損なわれる可能性があります。ただし、SDRAMを設定した後で SCLK の周
波数を高くする場合には、プロセッサが不必要に高い速度でメモリをリフレッシュするだけにとどめられるので、結果として SDRAM の利用効率が低下するのみに過ぎません。

18-10

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

システム設計

SDRAM を使用するシステムで、PLL の VCO 周波数を変更するための推奨
手順は、以下のとおりです。
1. SSYNC 命令を発行して、現在実行中のメモリ動作がすべて完了していることを確認します。
2. EBIU_SDGCTL の SRFS ビットに 1 を書き込んで、SDRAM を自己リフレッシュ・モードに設定します。
3. 希望する PLL プログラミング・シーケンスを実行します（詳細については、第 8 章「ダイナミック・パワー・マネジメント」を参照してください）。
4. PLLが新しい VCO 周波数にセトリングしたことを示すウェイクアッ
プが発生した後で、SDRAM のリフレッシュ・レート・コントロー
ル・レジスタ（EBIU_SDRRC）で新しい SCLK 周波数に適した値を設定して、そのプログラミング変更を実行します。
SDRAM の自己リフレッ
5. EBIU_SDGCTL の SRFS ビットをクリアして、
シュ・モード設定を解除します。SDRAM モード・レジスタを変更する必要がある場合には、変更する値を EBIU_SDGCTL にも同様に書き込んで、PSSE ビットが設定されていることを確認してください。
VCO 周波数を実際に変更するのではなく、PLL_DIV の SSEL ビットを使用して SCLK 周波数を変更するときには、以下のステップに従ってください。
1. SSYNC 命令を発行して、現在実行中のメモリ動作がすべて完了していることを確認します。
2. EBIU_SDGCTL の SRFS ビットに 1 を書き込んで、SDRAM を自己リフレッシュ・モードに設定します。
3. 希望の値を SSEL ビットに書込みます。
4. SDRAM のリフレッシュ・レート・コントロール・レジスタ（EBIU_SDRRC）
で新しい SCLK 周波数に適した値を設定して、そのプログラミング
変更を実行します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

18-11

外部メモリの設計に関する事項

SDRAM の自己リフレッ
5. EBIU_SDGCTL の SRFS ビットをクリアして、
シュ・モード設定を解除します。SDRAM モード・レジスタを変更する必要がある場合には、変更する値を EBIU_SDGCTL にも同様に書き込んで、PSSE ビットが設定されていることを確認してください。
SCLK をもっと高い値に変更する場合、厳密にはステップ2 と 4は必要ありませんが、SCLK を下げるときには、この各ステップを必ず実行しなければならない点に注意してください。
SDRAM のリフレッシュに関する詳細については、第 17 章「SDRAM コ
ントローラ（SDC）」の「外部バス・インターフェース・ユニット」を参照してください。

■ バス競合の回避
3 ステートのデータ・バスは、システム内部の数多くのデバイスによって共有されるので、競合を回避するように注意してください。競合が起こると、消費電力が過剰に増加し、デバイスの動作不良が発生する可能性があります。競合は、1 つのデバイスのバス接続が切断されようとしているときに別のデバイスのバス接続が行われると、その間に発生します。最初のデバイスが低速で 3 ステートの状態に入るときに、2 番目のデバイスが高速に駆動する場合、この 2 個のデバイスのバス競合が発生します。
競合の発生には、2つのケースがあります。最初のケースは、同じメモリ・
スペースで読出し動作が行われた後で、書込み動作が行われる場合です。
このケースでは、データ・バス・ドライバが、読出し動作によってアドレシングされたメモリ・デバイスのドライバと競合する可能性があります。
2 番目のケースは、2 つの異なるメモリ・スペースから連続的に読出し動作が実行される場合です。このケースでは、最初の読出し動作が終了して次の読出し動作が開始されるまでの間に、2 回の読出し動作でアドレシン
グされる 2個のメモリ・デバイスが競合する可能性があります。

18-12

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

システム設計

この競合を回避するために、非同期メモリ・バンク・コントロール・レジ
スタでターンアラウンド時間（バンク遷移時間）を適切にプログラミング
してください。この機能性により、このようなタイプのアクセス間クロッ
ク・サイクル数をソフトウェアにより各バンク単位で設定することができます。外部バス・インターフェース・ユニット（EBIU）は、最低限1 サ
イクルで遷移を発生するように設定します。

高周波数設計に関する考慮事項
プロセッサは非常に高速のクロック周波数による動作が可能であるため、回路基板の設計とレイアウトを行う際には、シグナル・インテグリティとノイズの問題を考慮に入れることが必要です。以下の各節では、これらの考慮すべき事項について説明し、信号処理システムの設計とデバッグを実施する際に利用する各種の技法を提案します。

■ シリアル・ポート上のポイント・ツー・ポイント接続
シリアル・ポートは低速で動作しますが、その場合でも出力ドライバは
エッジ・レートが高速であるために、伝送距離が比較的長いときには、ドライバに信号源終端が要求される場合があります。
ポイント・ツー・ポイント接続用のピンの近くに、1本の直列終端抵抗を追加してください。シリアル・ポートを使用するアプリケーションでは通常、距離が6インチを超えるときに、この終端方式が利用されます。伝送ラインの終端に関する推奨方法の詳細については、18-17 ページの「推奨する参考文献」を参照してください。さらに、出力ドライバの立上がり時間と立下がり 時 間 の デ ー タ に 関 し て は、
『ADSP-BF531/ADSP-BF532/ADSP-BF533
Embedded Processor Data Sheet』を参照してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

18-13

高周波数設計に関する考慮事項■ シグナル・インテグリティ
高速信号にかかる容量性負荷を可能な限り低減してください。バスの負荷については、待ち状態で動作するデバイス（たとえば、DRAM）に対してバッファを使用する方法で低減できます。この方法によって、ゼロ待ち状
態のデバイスに接続される信号の容量が低減されるので、これらの信号のスイッチ動作が高速化されると同時に、ノイズが起因して発生する電流ス
パイクが低く抑えられます。
信号の配線長（インダクタンス）を可能な限り短くして、リンギングを低く抑えることも必要です。外部メモリや読出し、書込み、およびアクノ
レッジの各ストローブなどの特定信号に対しても、細心の注意を払ってください。
シグナル・インテグリティを推進する上でのその他の推奨および提案事項
は、以下のとおりです。
• クロストークを低減するために、プリント回路基板（PCB）上に 1
枚以上のグラウンド・プレーンを使用してください。その際には、各グラウンド・プレーン間に数多くのビアを必ず使用します。これらのプレーンを PCB の中央の位置に配置してください。
• クロック、ストローブ、バス要求などの重要度の高い信号をグラウ
ンド・プレーンに隣接する信号層に配置し、これらの信号をその他の重要度の低い信号と引き離し、この各信号が直角に交差するようにレイアウトして、クロストークを低く抑えるようにしてください。
• クロストークを低減し、さらにインピーダンスと遅延の制御を改善できるようにするために、伝送ラインのインピーダンスを低く抑える設計を行います。

18-14

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

システム設計• 回路基板を実験的にレイアウトし、反射の問題からクロストークとノイズの問題を切り離してください。その方法として、パルス発生器から信号配線を駆動し、その他の部品と信号が受動的であるときに、反射の問題を調べてください。

■ デカップリング・コンデンサとグラウンド・プレーン
グラウンドと電源にグラウンド・プレーンを使用することが必要です。図18-5 に示すように、パッケージの VDDEXT と VDDINT の各ピンの非常に近い
個所にコンデンサを外付けしてください。その際には、短く幅の広いパターン配線を使用します。コンデンサのグラウンド接続端をプロセッサのパッケージ・フットプリント内部のグラウンド・プレーン（ボード裏面のグラウンド・プレーンの真下）に直接的に接続してください。フットプリ
ントの外部に接続しないでください。表面実装型のコンデンサはその直列インダクタンス値が低いので、このタイプのコンデンサの利用を推奨します。
可能な限り短いパターン配線を使用して、電源プレーンを電源ピンに直接接続してください。グラウンド・プレーンの効果が低下しないようにする
ために、ビアやパターン配線の処理の際に、グラウンド・プレーンに数多
くの穴あけを行ってはいけません。これに加えて、容量の大きいタンタ
ル・コンデンサをいくつかボード上に実装することも必要です。

L

設計には、バイパス・コンデンサを使用するか、またはバイパス・コンデンサとタンタル・コンデンサを組み合わせて使用することもできます。回路基板の設計に際しては、グラウンド・プレーンを通過するフィードスルーを最小限に抑えるように努めてください。

■ オシロスコープ・プローブ
高速計測を実施するときには、「差込み」タイプまたはこれと同様の短い（＜ 0.5インチ）グラウンド・クリップをオシロスコープ・プローブの先端部に必ず装着してください。このプローブは、負荷容量が 3pF以下の低容ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

18-15高周波数設計に関する考慮事項

量の能動プローブとします。グラウンドのリード線が 4インチの標準的なグラウンド・クリップを使用すると、表示されるトレース上にリンギングが確認され、過度のオーバーシュートとアンダーシュートが信号上に発生することが考えられます。信号を高い精度で表示するには、1GHz 以上のサンプリング・オシロスコープが必要です。

18-16

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

システム設計a

B
ADS P-B F533

ࠤ࡯ࠬ1㧦ㇱຠࠍታⵝߒߥ޿ࡏ࡯࠼㕙㧔ⵣ㕙㧕ߩࡄ࠶ࠤ࡯ࠫߩ⌀ਅߦ‫࡮ࠬࡄࠗࡃޔ‬ࠦࡦ࠺ࡦࠨࠍታⵝ

ࠤ࡯ࠬ2㧦ㇱຠࠍታⵝߔࠆࡏ࡯࠼㕙㧔਄㕙㧕ߩࡄ࠶ࠤ࡯ࠫ๟ㄝߦ‫࡮ࠬࡄࠗࡃޔ‬ࠦࡦ࠺ࡦࠨࠍታⵝ

図 18-5. バイパス・コンデンサの配置■ 推奨する参考文献
さらなる詳細については、High-Speed Digital Design: A Handbook ofBlack Magic（高速デジタル設計：ブラックマジック・ハンドブック）、Johnson & Graham、Prentice Hall, Inc.、ISBN 0-13-395724-1を参照してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

18-17高周波数設計に関する考慮事項

このハンドブックは、最新の高周波数デジタル回路設計で遭遇する諸問題を取り扱う技術資料です。これは、実務的なアイデアを網羅した優れた情報源です。このハンドブックに掲載される題目として、以下の項目が含まれています。
• ロジック・ゲートの高速特性• 計測技術• 伝送ライン• グラウンド・プレーンおよび層のスタッキング
• 終端
• ビア
• 電源システム• コネクタ• リボン・ケーブル• クロックの分配• クロック発振器

18-18

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

第 19 章 Blackfin プロセッサのデバッグ

Blackfin プロセッサのデバッグ機能は、ソフトウェアのデバッギングに利用されます。この機能はさらに、オペレーティング・システム（OS）のカーネルで見られる場合のあるいくつかのサービスの補完も行います。この機能性はプロセッサのハードウェアに実装され、複数のレベルにグルー
プ化されます。
利用可能なデバッグ機能の要約を表19-1 に示します。
表 19-1.

Blackfin デバッグ機能

デバッグ機能説明

ウォッチポイント

アドレス範囲、および条件が満たされた場合にプロセッサを停止す
るよう、その条件を指定します。

トレース履歴プログラム・カウンタ最後の 16 の不連続値をオンチップのトレー
ス・バッファに格納します。

サイクル・カウント

すべてのコード・プロファイリング機能に対応する機能性を提供します。

性能モニタリング

非割込み方式による内部リソースのモニタと計測を可能にします。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

19-1

ウォッチポイント・ユニット

ウォッチポイント・ユニット
ウォッチポイント・ユニットは、命令バスとデータ・バス両方のアドレスをモニタすることによって、プログラムの挙動性をチェックするためのいくつかのメカニズムを提供します。このユニットは特定のアドレスが一致する回数をカウントした後で、このカウントに基づいてイベントをスケ
ジュール化します。
これに加えて、ウォッチポイント・ユニットから提供される情報はコードの最適化に役立ちます。このユニットはさらに、コードのパッチングによる実行ファイルの保持を容易にします。
ウォッチポイント・ユニットには、スーパーバイザとエミュレータの各モード時にアクセス可能な以下のメモリマップド・レジスタ（MMR）が内蔵されています。
• ウォッチポイント・ステータス・レジスタ（WPSTAT）• 6 個の命令ウォッチポイント・アドレス・レジスタ（WPIA[5:0]）• 6 個の命令ウォッチポイント・アドレス・カウント・レジスタ（WPIACNT[5:0]）• 命 令 ウ ォ ッ チ ポ イ ン ト・ア ド レ ス・コ ン ト ロ ー ル・レ ジ ス タ（WPIACTL）• 2 個のデータ・ウォッチポイント・アドレス・レジスタ（WPDA[1:0]）• 2 個のデータ・ウォッチポイント・アドレス・カウント・レジスタ（WPDACNT[1:0]）• データ・ウォッチポイント・アドレス・コントロール・レジスタ（WPDACTL）
以下の 2つの動作によって、命令ウォッチポイントが実行されます。

19-2

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

Blackfin プロセッサのデバッグ• 6 個の命令ウォッチポイント・アドレス・レジスタ WPIA[5:0] の値
が、命令バス上のアドレスと比較されます。
• アドレスが一致するごとに、命令ウォッチポイント・アドレス・カ
ウント・レジスタ WPIACNT[5:0] の該当するカウント値がデクリメントされます。
6 個の命令ウォッチポイント・アドレス・レジスタは、さらに3 つの範囲の命令アドレス範囲ウォッチポイントにグループ化されます。その範囲は
WPIA0 ～ WPIA1、WPIA2 ～ WPIA3、WPIA4 ～ WPIA5 の各アドレスによって識別
されます。

L

WPIA0、WPIA1、WPIA2、WPIA3、WPIA4、WPIA5 に格納されるアドレス

範囲は、以下の条件を満足する必要があります。
WPIA0 <= WPIA1
WPIA2 <= WPIA3
WPIA4 <= WPIA5

以下の 2つの動作によって、データ・ウォッチポイントが実行されます。
• 2 個のデータ・ウォッチポイント・アドレス・レジスタ WPDA[1:0]の値が、データ・バス上のアドレスと比較されます。
• アドレスが一致するごとに、データ・ウォッチポイント・アドレ
ス・カウント・レジスタ WPDACNT[1:0] の該当するカウント値がデクリメントされます。
2 個のデータ・ウォッチポイント・アドレス・レジスタは、さらに 1 つのデータ・アドレス範囲ウォッチポイント WPDA[1:0] にグループ化されます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

19-3

ウォッチポイント・ユニット

命令およびデータ・カウント値レジスタには、ウォッチポイントが一致しなければならない回数から1を差し引いたデータがロードされることが必要です。カウント値がゼロに達した後でウォッチポイントが一致すると、
例外またはエミュレーション・イベントがトリガされる結果になります。

L

イベントが発生した後で、カウント値を再初期化する必要がある点に注意してください。

命令ウォッチポイントとデータ・ウォッチポイントを組み合わせて、イベントをトリガすることも可能です。WPIACTL レジスタの WPAND ビットを 1に設定すれば、命令アドレス・ウォッチポイントが一致し、これと同時に
データ・アドレス・ウォッチポイントが一致するときに限り、イベントがトリガされます。WPAND ビットを0 に設定すると、イネーブルにされたウォッチポイントまたはウォッチポイント範囲のどれかが一致するときに、イベントがトリガされます。
ウォッチポイント・ユニットをイネーブルにするには、WPIACTL レジスタの WPPWR ビットの設定が必要です。WPPWR ビットを 1 に設定する場合には、
WPIACTL と WPDACTL の各 MMR で特定のイネーブル・ビットを使用して、個々のウォッチポイントおよびウォッチポイント範囲をイネーブルにすることが可能です。WPPWR ビットを 0 に設定すると、すべてのウォッチポ
イント・アクティビティがディスエーブルになります。

19-4

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

Blackfin プロセッサのデバッグ■ 命令ウォッチポイント
すべての命令ウォッチポイントは、表 19-2 に示すように WPIACTL レジス
タの 3 つのビットによって制御されます。
表 19-2.

WPIACTL 制御ビット

ビット名

説明

EMUSWx

命令アドレスが一致するときに、エミュレーション・イベントまたは例外イベントのどちらを発生させるかを決定します。

WPICNTENx

アドレスの一致回数をカウントする 16 ビット・カウンタをイネーブ
ルにします。このカウンタをディスエーブルにすると、一致が検出されるたびにイベントが発生します。

WPIAENx

アドレスのウォッチポイント・アクティビティをイネーブルにします。

2 つのウォッチポイントの関連付けによって、1 つのウォッチポイント範囲が形成される場合には、表 19-3 に示すように2 つの追加ビットが使用されます。
表 19-3.

WPIACTL ウォッチポイント範囲制御ビット

ビット名

説明

WPIRENxy

1 つのウォッチポイント範囲を形成するために関連付けられる 2 つのウォッチポイントを指定します。

WPIRINVxy

識別される範囲内または範囲外のどちらのアドレスによってイベントを発生させるかを決定します。

コードのパッチングにより、ソフトウェアで既存のコード・セクションを
新しいコードに置き換えることができます。ウォッチポイント・レジスタを使用して、既存コードの開始アドレスで例外をトリガします。その後、例外ルーチンが、新しいコードを含むメモリ位置の方向に移動します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

19-5

ウォッチポイント・ユニット

プロセッサ上でコード・パッチングを実行するときには、既存コードの開始アドレスを WPIAn レジスタのどれか1つに書込み、該当する EMUSWx ビッ
トを設定することで、例外がトリガされます。例外サービス・ルーチンで
WPSTAT レジスタが読み出され、例外をトリガしたウォッチポイントが確認されます。次に、新しいコードの開始アドレスを RETX レジスタに書き込むと、例外から新しいコードにコードが返されます。コード・パッチングには例外メカニズムが使用されるので、優先順位が同じであるか、またはもっと高いイベント・サービス・ルーチン（例外、NMI、およびリセットの各ルーチン）をパッチングすることはできません。
WPSTAT MMRに書込みを行うと、スティッキーなステータス・ビットがす

べてクリアされます。書き込まれたデータ値は無視されます。

■ WPIAn レジスタ
ウォッチポイント・ユニットをイネーブルにすると、命令ウォッチポイン
ト・アドレス・レジスタ（WPIAn）の値が命令バス上のアドレスと比較されます。アドレスが一致するごとに、命令ウォッチポイント・アドレス・
カウント・レジスタ（WPIACNTn）の該当するカウント値がデクリメントされます。
命令ウォッチポイント・アドレス・レジスタ WPIA[5:0] を図 19-1に示しま
す。

19-6

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

Blackfin プロセッサのデバッグ

命令ウォッチポイント・アドレス・レジスタ（WPIAn）

メモリマップド・アドレ
スについては、表 19-4 を参照してください。

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X X X X X

リセット＝未定義

WPIA（命令アドレス）[30:15]
15 14 13 12 11 10 9
X X X X X X X

8
X

7 6
X X

5
X

4
X

3
X

2
X

1 0
X X

WPIA（命令アドレス）[14:0]

図 19-1. 命令ウォッチポイント・アドレス・レジスタ
表 19-4.

命令ウォッチポイント・アドレス・レジスタのメモリマップド・
アドレス

レジスタ名

メモリマップド・アドレス

WPIA0

0xFFE0 7040

WPIA1

0xFFE0 7044

WPIA2

0xFFE0 7048

WPIA30xFFE0 704C

WPIA40xFFE0 7050

WPIA50xFFE0 7054

■ WPIACNTn レジスタ
ウォッチポイント・ユニットをイネーブルにすると、アドレスまたはアドレス・バスが WPIAn レジスタの値と一致するごとに、命令ウォッチポイン
ト・アドレス・カウント・レジスタ（WPIACNT[5:0]）のカウント値がデクリメントされます。イベントをトリガする前に、ウォッチポイントが一致しなければならない回数から1を差し引いた値をWPIACNTn レジスタにロードしてください（図 19-2を参照）。プログラミングされたカウント値を経過すると、その後で WPIACNTn レジスタは 0x0000 にデクリメントします。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

19-7

ウォッチポイント・ユニット

命令ウォッチポイント・アドレス・カウント・レジスタ（WPIACNTn）
メモリマップド・アドレ
スについては、表 19-5 を参照してください。

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X X X X X
15 14 13 12 11 10 9
X X X X X X X

8
X

7 6
X X

5
X

4
X

3
X

2
X

リセット＝未定義

1 0
X X

WPIACNT（カウント値）[15:0]

図 19-2. 命令ウォッチポイント・アドレス・カウント・レジスタ
表 19-5.

命令ウォッチポイント・アドレス・カウント・レジスタのメモリマップド・アドレス

レジスタ名

メモリマップド・アドレス

WPIACNT00xFFE0 7080

WPIACNT1

0xFFE0 7084

WPIACNT2

0xFFE0 7088

WPIACNT30xFFE0 708C

WPIACNT4

0xFFE0 7090

WPIACNT5

0xFFE0 7094

■ WPIACTL レジスタ
命令ウォッチポイント・アドレス・コントロール・レジスタ（WPIACTL）の 3つのビットを使用して、各命令ウォッチポイントを制御します。このレジスタの上位ハーフのビット構成を図 19-3 で説明しています。19-10
ページの図 19-4 では、このレジスタの下位ハーフのビット構成を説明しています。このレジスタのビットに関する詳細については、19-5 ページの「命令ウォッチポイント」を参照してください。

L
19-8

WPPWR ビットを設定しない限り、
WPIACTL レジスタのビットの設定効

果はありません。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

Blackfin プロセッサのデバッグ

命令ウォッチポイント・アドレス・コントロール・レジスタ（WPIACTL）
範囲比較で IA は命令アドレスを示します。

0xFFE0 7000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X 0 0 X 0 X

WPAND
0 - ウォッチポイントをイネーブルにすると、例外またはエミュレーション・イベントがトリガされます1 - 命令アドレス・ウォッチポイントをイネー
ブルにすると同時に、データ・アドレス・
ウォッチポイントをイネーブルにすると、例外またはエミュレーション・イベントがトリガされます
EMUSW50 - WPIA5 が一致するときに、例外イベントが発生
1 - WPIA5 が一致するときに、エミュレーショ
ン・イベントが発生
EMUSW40 - WPIA4（または範囲 45）が一致するときに、
例外イベントが発生
1 - WPIA4（または範囲 45）が一致するときに、
エミュレーション・イベントが発生
WPICNTEN5
0 - ウォッチポイント命令アドレス・カウンタ 5 を
ディスエーブル
1 - ウォッチポイント命令アドレス・カウンタ 5 を
イネーブル
WPICNTEN4
範囲比較がイネーブルの場合に、このビットでカウンタを範囲 45 に対してイネーブルにします
0 - ウォッチポイント命令アドレス・カウンタ 4 を
ディスエーブル
1 - ウォッチポイント命令アドレス・カウンタ 4 を
イネーブル

リセット＝未定義
EMUSW30 - WPIA3 が一致するときに、例
外イベントが発生
1 - WPIA3 が一致するときに、エミュレーション・イベントが発生
WPIREN45
0 - 範囲比較をディスエーブル
1 - 範囲比較をイネーブル（開始アドレス＝ WPIA4、
終了アド
レス＝ WPIA5）WPIRINV45WPIREN45 ＝ 1 のときに有効
0 - 範囲内比較：WPIA4 < IA < ＝
WPIA5
1 - 範囲外比較：IA < ＝ WPIA4∥ IA > WPIA5WPIAEN4WPIREN45 ＝ 0 のときに有効
0 - 命令アドレス・ウォッチポイ
ントWPIA4をディスエーブル
1 - 命令アドレス・ウォッチポイ
ント WPIA4 をイネーブル
WPIAEN5WPIREN45 ＝ 0 のときに有効
0 - 命令アドレス・ウォッチポイ
ントWPIA5をディスエーブル
1 - 命令アドレス・ウォッチポイ
ント WPIA5 をイネーブル

図 19-3. 命令ウォッチポイント・アドレス・コントロール・レジスタ（WPIACTL）[31:16]

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

19-9

ウォッチポイント・ユニット

命令ウォッチポイント・アドレス・コントロール・レジスタ（WPIACTL）
範囲比較で IA は命令アドレスを示します。
0xFFE0 7000

15 14 13 12 11 10 9
X X X 0 0 X 0EMUSW20 - WPIA2（または範囲 23）が一致するときに、例外
イベントが発生
1 - WPIA2（または範囲 23）
が 一 致 す る と き に、エミュレーション・イベン
トが発生
WPICNTEN3
0 - ウォッチポイント命令アドレ
ス・カウンタ3をディスエーブル
1 - ウォッチポイント命令アドレ
ス・カウンタ 3 をイネーブル
WPICNTEN2
範囲比較がイネーブルの場合に、このビットでカウンタを範囲 23 に対して
イネーブルにします
0 - ウォッチポイント命令アドレス・
カウンタ 2 をディスエーブル
1 - ウォッチポイント命令アドレス・
カウンタ 2 をイネーブル
WPIAEN3WPIREN23 ＝ 0 のときに有効
0 - 命 令 ア ド レ ス・ウ ォ ッ チ ポ イ ン ト
WPIA3 をディスエーブル
1 - 命 令 ア ド レ ス・ウ ォ ッ チ ポ イ ン ト
WPIA3 をイネーブル
WPIAEN2WPIREN23 ＝ 0 のときに有効
0 - 命令アドレス・ウォッチポイント WPIA2をディスエーブル
1 - 命令アドレス・ウォッチポイント WPIA2をイネーブルWPIRINV23
WPIREN23 ＝ 1 のときに有効
0 - 範囲内比較：WPIA2 < IA < ＝ WPIA3
1 - 範囲外比較：IA <＝WPIA2∥IA > WPIA3WPIREN23
0 - 範囲比較をディスエーブル
1 - 範囲比較をイネーブル（開始アドレス＝
WPIA2、終了アドレス＝ WPIA3）
EMUSW1
0 - WPIA1 が一致するときに、例外イベン
トが発生
1 - WPIA1 が一致するときに、エミュレー
ション・イベントが発生

8
X

7 6
X X

5
X

4
0

3
0

2
X

1
0

0
0

リセット＝未定義
WPPWR
0 - ウォッチポイント・ユニット
をディスエーブル
1 - ウォッチポイント・ユニット
をイネーブルWPIREN01
0 - 範囲比較をディスエーブル
1 - 範囲比較をイネーブル（開始アドレス＝ WPIA0、終了アド
レス＝ WPIA1）WPIRINV01
WPIREN01 ＝ 1 のときに有効
0 - 範囲内比較：WPIA0 < IA < ＝
WPIA1
1 - 範囲外比較：IA < ＝ WPIA0 ∥IA > WPIA1WPIAEN0WPIREN01 ＝ 0 のときに有効
0 - 命令アドレス・ウォッチポイ
ントWPIA0をディスエーブル
1 - 命令アドレス・ウォッチポイ
ント WPIA0 をイネーブル
WPIAEN1WPIREN01 ＝ 0 のときに有効
0 - 命令アドレス・ウォッチポイ
ントWPIA1をディスエーブル
1 - 命令アドレス・ウォッチポイ
ント WPIA1 をイネーブル
WPICNTEN0
範囲比較がイネーブルの場合に、このビットでカウンタを範囲 01 に対してイネーブルにします
0 - ウォッチポイント命令アドレ
ス・カウンタ 0 をディスエーブル
1 - ウォッチポイント命令アドレ
ス・カウンタ 0 をイネーブル
WPICNTEN1
0 - ウォッチポイント命令アドレ
ス・カウンタ1をディスエーブル
1 - ウォッチポイント命令アドレ
ス・カウンタ 1 をイネーブル
EMUSW00 - WPIA0（または範囲 01）が一致するときに、例外イベントが発生
1 - WPIA0（または範囲 01）が一致するときに、エミュレーション・
イベントが発生

図 19-4. 命令ウォッチポイント・アドレス・コントロール・レジスタ（WPIACTL）[15:0]

19-10

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

Blackfin プロセッサのデバッグ■ データ・アドレス・ウォッチポイント
すべてのデータ・ウォッチポイントは、表 19-6 に示すように WPDACTL レ
ジスタの 4つのビットによって制御されます。
表 19-6.

データ・アドレス・ウォッチポイント

ビット名

説明

WPDACCn

読出しまたは書込みアクセスのどちらに一致を適用するかを決定します。

WPDSRCn

ユニットによってモニタされる DAG を決定します。

WPDCNTENn

アドレスの一致回数をカウントするカウンタをイネーブルにします。このカウンタをディスエーブルにすると、一致が検出されるたびにイベントが発生します。

WPDAENn

アドレスのウォッチポイント・アクティビティをイネーブルにします。

2 つのウォッチポイントの関連付けによって、1 つのウォッチポイント範囲が形成される場合には、2つの追加ビットが使用されます。表 19-7 を参照してください。
表 19-7.

WPDACTL ウォッチポイント制御ビット

ビット名

説明

WPDREN01

1 つのウォッチポイント範囲を形成するために関連付けられる 2 つのウォッチ
ポイントを指定します。

WPDRINV01

識別される範囲内または範囲外のどちらのアドレスによってイベントを発生させるかを決定します。

L

データ・アドレス・ウォッチポイントは、常にエミュレーション・
イベントをトリガします。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

19-11

ウォッチポイント・ユニット■ WPDAn レジスタ
ウォッチポイント・ユニットをイネーブルにすると、データ・ウォッチポ
イント・アドレス・レジスタ（WPDAn）の値がデータ・バス上のアドレスと比較されます。アドレスが一致するごとに、データ・ウォッチポイン
ト・アドレス・カウント・レジスタ（WPDACNTn）の該当するカウント値がデクリメントされます。
データ・ウォッチポイント・アドレス・レジスタ WPDA[1:0] を図 19-5 に示します。
データ・ウォッチポイント・アドレス・レジスタ（WPDAn）
WPDA0: 0xFFE0 7140
WPDA1: 0xFFE0 7144

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X X X X X

リセット＝未定義

WPDA（データ・アドレス）[31:16]

15 14 13 12 11 10 9
X X X X X X X

8
X

7 6
X X

5
X

4
X

3
X

2
X

1 0
X X

WPDA（データ・アドレス）[15:0]

図 19-5. データ・ウォッチポイント・アドレス・レジスタ■ WPDACNTn レジスタ
ウォッチポイント・ユニットをイネーブルにすると、アドレスまたはアドレス・バスが WPDAn レジスタの値と一致するごとに、データ・ウォッチポ
イント・アドレス・カウント値レジスタ（WPDACNTn）のカウント値がデクリメントされます。イベントをトリガする前に、ウォッチポイントが一致しなければならない回数から1を差し引いた値をWPDACNTn レジスタにロードしてください。プログラミングされたカウント値を経過すると、その後

19-12

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

Blackfin プロセッサのデバッグ

で WPDACNTn レジスタは 0x0000 にデクリメントします。データ・ウォッチ
ポイント・アドレス・カウント値レジスタ WPDACNT[1:0] を図 19-6 に示します。
データ・ウォッチポイント・アドレス・カウント値レジスタ（WPDACNTn）
WPDACNT0:0xFFE0 7180
WPDACNT1:
0xFFE0 7184

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X X X X X

15 14 13 12 11 10 9
X X X X X X X

8
X

7 6
X X

5
X

4
X

3
X

2
X

リセット＝未定義

1 0
X X

WPDACNT（カウント値）[15:0]

図 19-6. データ・ウォッチポイント・アドレス・カウント値レジスタ■ WPDACTL レジスタ
データ・ウォッチポイント・アドレス・コントロール・レジスタ（WPDACTL）のビットに関する詳細については、19-11 ページの「データ・アドレス・
ウォッチポイント」を参照してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

19-13

ウォッチポイント・ユニット

データ・ウォッチポイント・アドレス・コントロール・レジスタ（WPDACTL）

0xFFE0 7100

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X X X X X
15 14 13 12 11 10 9
X X X X X X X

8
X

7 6
X X

WPDACC1[1:0]00 -予備01 -書 込 み ア ク セ ス 時 に の み、
WPDA1 が一致
10 -読 出 し ア ク セ ス 時 に の み、
WPDA1 が一致
11 -読出しまたは書込みアクセス時のいずれかに、WPDA1が一致
WPDSRC1[1:0]00 -予備
01 -DAG0 のアドレスを WPDA1 でウォッチ
10 -DAG1 のアドレスを WPDA1 でウォッチ
11 -DAG0 または DAG1 のアドレスを
WPDA1 でウォッチ
WPDACC0[1:0]00 -予備01 -書込みアクセス時にのみ、WPDA0 またはWPDA0 ～ WPDA1 範囲が一致
10 -読出しアクセス時にのみ、WPDA0 またはWPDA0 ～ WPDA1 範囲が一致
11 -読出しアクセス時または書込みアクセス時のいずれかに、WPDA0 または WPDA0 ～ WPDA1
範囲が一致
WPDSRC0[1:0]00 -予備
01 -DAG0 のアドレスを WPDA0 または WPDA0 ～WPDA1 範囲でウォッチ
10 -DAG1 のアドレスを WPDA0 または WPDA0 ～WPDA1 範囲でウォッチ
11 -DAG0 または DAG1 のアドレスを WPDA0 またはWPDA0 ～ WPDA1 範囲でウォッチ

5
X

4
X

3
0

2
0

リセット＝未定義

1 0
X 0
WPDREN01
0 - 範囲比較をディスエーブル
1 - 範囲比較をイネーブル（開始ア
ドレス＝ WPDA0、終了アドレ
ス＝ WPDA1）WPDRINV01
0 - 範囲内比較：WPDA0～WPDA1の範囲内
1 - 範囲外比較：WPDA0～WPDA1の範囲外
WPDAEN0WPDREN01 ＝ 0 のときに有効
0 - データ・アドレス・ウォッチポ
イントWPDA0をディスエーブル
1 - データ・アドレス・ウォッチポ
イント WPDA0 をイネーブル
WPDAEN1WPDREN01 ＝ 0 のときに有効
0 - データ・アドレス・ウォッチポ
イントWPDA1をディスエーブル
1 - データ・アドレス・ウォッチポ
イント WPDA1 をイネーブル
WPDCNTEN0
範囲比較がイネーブルの場合に、このビットでカウンタを範囲 01 に対してイネーブルにします
0 - ウォッチポイント・データ・アド
レス・カウンタ0をディスエーブル
1 - ウォッチポイント・データ・ア
ドレス・カウンタ0をイネーブル
WPDCNTEN1
0 - ウォッチポイント・データ・ア
ドレス・カウンタ 1 をディス
エーブル
1 - ウォッチポイント・データ・ア
ドレス・カウンタ 1 をイネーブル

図 19-7. データ・ウォッチポイント・アドレス・コントロール・レジスタ

19-14

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

Blackfin プロセッサのデバッグ■ WPSTAT レジスタ
ウォッチポイント・ステータス・レジスタ（WPSTAT）は、ウォッチポイン
トのステータスをモニタします。このレジスタの読出しおよび書込み動作を実行できるのは、スーパーバイザまたはエミュレータ・モード時のみに限られます。ウォッチポイントまたはウォッチポイント範囲が一致すると
きに、このレジスタはウォッチポイントのソースを反映します。WPSTAT レ
ジスタのステータス・ビットはスティッキーであるため、値に関係なくこのレジスタに書込みを行うと、ステータス・ビットのすべてがクリアされます。
図 19-8にウォッチポイント・ステータス・レジスタを示します。
ウォッチポイント・ステータス・レジスタ（WPSTAT）
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
0xFFE0 7200

X

X X

X

X

X

X

X

X X

X

X

X

X

X X

15 14 13 12 11 10
X X X X X X

9
X

8
X

7 6
0 0

5
0

4
0

3
0

2
0

1 0
0 0

リセット＝未定義

STATDA1

STATIA0

0 - WPDA1 が一致しません
1 - WPDA1 が一致します
STATDA0

0 - WPIA0 と WPIA0 ～ WPIA1
範囲のどちらも一致しません
1 - WPIA0 が一致するか、または WPIA0 ～ WPIA1 範囲が一致します
STATIA1
0 - WPIA1 が一致しません
1 - WPIA1 が一致します
STATIA2

0 - WPDA0 と WPDA0 ～ WPDA1
範囲のどちらも一致しません
1 - WPDA0 が一致するか、または
WPDA0 ～ WPDA1 範囲が一致
します
STATIA5
0 - WPIA5 が一致しません
1 - WPIA5 が一致します
STATIA4
0 - WPIA4 と WPIA4 ～ WPIA5 範
囲のどちらも一致しません
1 - WPIA4 が一致するか、または
WPIA4 ～ WPIA5 範囲が一致します

0 - WPIA2 と WPIA2 ～ WPIA3
範囲のどちらも一 致しません
1 - WPIA2 が一致するか、または WPIA2 ～ WPIA3 範囲が一致します
STATIA3
0 - WPIA3 が一致しません
1 - WPIA3 が一致します

図 19-8. ウォッチポイント・ステータス・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

19-15

トレース・ユニット

トレース・ユニット
トレース・ユニットには、プログラム・シーケンサによって取り込まれるプログラム・フローのうち最も新しい 16 の変更に関する履歴がストアされます。このような履歴の追跡により、ユーザはプログラム・シーケンサの最新のパスを再作成することができます。
トレース・バッファをイネーブルにして、その満杯時に例外を発生するように設定できます。例外に関連付けられる例外サービス・ルーチンが、ト
レース・バッファのエントリをメモリに保存します。したがって、トレース・バッファがイネーブルに設定された後以降のプログラム・シーケンサのパス全体を再作成することが可能です。
ゼロ・オーバーヘッド・ループによるプログラム・フローの変更は、ト
レース・バッファにストアされません。ゼロ・オーバーヘッド・ループ内で停止されるデバッギング・コードについては、LC0 と LC1 のループ・カ
ウント・レジスタで繰返しカウントを実行できます。
最後のエントリ、または最後 2つのエントリの 1つと一致するプログラム・
フロー変更の記録を省略するように、トレース・バッファを設定することが可能です。記録からこれらのエントリのいずれか 1つを省略すると、プ
ログラム内のループによるトレース・バッファのオーバーフローが防止されます。ゼロ・オーバーヘッド・ループはトレース・バッファに記録されないので、この機能を利用して、4段までネスティングされるループからのトレースのオーバーフローを防止することができます。
トレース・バッファ・レジスタ（TBUF）はその読出し動作時に、最大で16までのエントリが含まれるトレース・ユニット・スタックから先頭の値を返します。各エントリには、一組の分岐元および分岐先アドレスが含まれます。TBUF からの読出し動作時には、分岐先アドレスを先頭として最も新しいエントリが最初に返されます。その次の読出しで、分岐元アドレスが返されます。

19-16

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

Blackfin プロセッサのデバッグ

TBUF に格納される有効エントリの数は、TBUFCNT レジスタの TBUFSTATフィールドに保持されます。1 回の読出し動作が実行されるたびに、
TBUFCNT はデクリメントします。各エントリは 2 個のデータに相当するので、TBUFCNT の読出しを合計 2 回行うと、TBUF レジスタは空き状態になり
ます。

L
L

トレース・バッファの最後のエントリ 2つのうち、いずれかと同じ不連続性は記録されません。
トレース・バッファからの読出しは破壊的動作であるため、コードの割込み不能セクションで TBUF の読出しを実行することを推奨します。

シングル・レベルの圧縮が実行されている場合には、分岐先アドレスの最下位ビット（LSB）が設定される点に注意してください。2 レベルの圧縮が実行されている場合には、分岐元アドレスの LSBが設定されます。

■ TBUFCTL レジスタ
トレース・バッファ・コントロール・レジスタ（TBUFCTL）の 2 つの制御ビットを使用して、トレース・ユニットをイネーブルにします。最初に、
TBUFPWR ビットを設定してトレース・ユニットをアクティブにする必要があります。TBUFPWR = 1 の場合に TBUFEN を 1 に設定すれば、トレース・ユ
ニットがイネーブルになります。
トレース・バッファ・コントロール・レジスタ（TBUFCTL）を図 19-9 で説明します。TBUFOVF = 1 の場合、トレース・ユニットは例外、NMI、およびリセットの各ルーチンの不連続性を記録しません。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

19-17

トレース・ユニット

トレース・バッファ・コントロール・レジスタ（TBUFCTL）

0xFFE0 6000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X X X X X
15 14 13 12 11 10 9 8
X X X X X X X X

7 6
X X

5
X

4
0

3
0

2
0

1
0

リセット＝未定義

00
TBUFPWR
0 - トレース・バッファがオフ
1 - トレース・バッファがアクティブ
TBUFEN
0 - トレース・バッファを
ディスエーブル
1 - トレース・バッファをイ
ネーブル
TBUFOVF
0 - オーバーフローを無視
1 - ト レ ー ス・バ ッ フ ァ のオーバーフローにより、
例外イベントが発生

CMPLP[1:0]00 -圧縮をディスエーブル。
すべての不連続性を記録
01 -シングル・レベルのループを圧縮
10 -2 レベルのループを圧縮

図 19-9. トレース・バッファ・コントロール・レジスタ■ TBUFSTAT レジスタ
トレース・バッファ・ステータス・レジスタ（TBUFSTAT）を図 19-10 に示します。TBUF からの 2 回の読出しが実行されるたびに、TBUFCNT が 1 だけ
デクリメントします。
トレース・バッファ・ステータス・レジスタ（TBUFSTAT）

0xFFE0 6004

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X X X X X

15 14 13 12 11 10 9
X X X X X X X

8
X

7 6
X X

5
X

4
0

3
0

2
0

1
0

リセット＝未定義

00

TBUFCNT[4:0]
トレース・バッファに格納される有効な不連続性の数

図 19-10.トレース・バッファ・ステータス・レジスタ

19-18

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

Blackfin プロセッサのデバッグ■ TBUF レジスタ
トレース・バッファ・レジスタ（TBUF）を図 19-11 に示します。最初の読出しで、最新の分岐先アドレスが返されます。2 回目の読出しで、最新の分岐元アドレスが返されます。
トレース・バッファ・レジスタ（TBUF）

0xFFE0 6100

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X X X X X

リセット＝未定義

TBUF[31:16]
トレース・バッファのすべてのエントリにエイリアスされます
15 14 13 12 11 10 9
X X X X X X X

8
X

7 6
X X

5
X

4
X

3
X

2
X

1 0
X X

TBUF[15:0]

図 19-11. トレース・バッファ・レジスタ
トレース・ユニットは、以下の場合にプログラム・フローの変更を記録しません。
• エミュレータ・モード• 例外または優先順位の高いサービス・ルーチン（TBUFOVF＝1の場合）
例外サービス・ルーチンの場合には、プログラム・フローの不連続性を TBUF から読出し、リスト 19-1 に示すコードによってこれをメモリに保存できます。

Lの読出し中は、新しい不連続性が記録されることのないように、トレース・バッファを必ずディスエーブルにしてください。
TBUF

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

19-19

トレース・ユニット

X メモリで実行トレースを再作成するためのコード

リスト 19-1 には、メモリで実行トレース全体を再作成するためのコードを記載しています。
リスト 19-1. メモリにおける実行トレースの再作成[--sp] = (r7:7, p5:2); /* このルーチンで使用されたレジスタを保存します */p5 = 32;/* TBUF を空き状態にするためには、32 回の読み出しが必要です *//* ポインタはソフトウェア・トレース・バッファのヘッダ（最初の場

p2.l = buf;

所）をポイントします *//* ヘッダには、その後のトレース・ダンプに利用できる最初の空き状

p2.h = buf;

態のバッファ位置がストアされます *//* 利用可能な最初の空き状態のバッファ位置をバッファ・ヘッダか

p4 = [p2++];
ら取得します */p3.l = TBUF & 0xffff;
p3.h = TBUF >> 16;/* TBUF の下位 16 ビット *//* TBUF の上位 16 ビット */lsetup(loop1_start, loop1_end) lc0 = p5;
loop1_start: r7 = [p3];/* TBUF からの読み出し */loop1_end: [p4++] = r7;/* メモリへの書き込みとインクリメント */[p2] = p4;/* 次に利用可能なバッファ位置をポイントするポインタが buf のヘッダに保存されます */(r7:7, p5:3) = [sp++];19-20/* 保存されたレジスタを復元します */ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

Blackfin プロセッサのデバッグ

パフォーマンス・モニタリング・ユニット
2 個の 32ビット・カウンタであるパフォーマンス・モニタ・カウンタ・レ
ジスタ（PFCNTR[1:0]）とパフォーマンス・コントロール・レジスタ（PFCTL）
は、パフォーマンス・モニタリング期間中におけるプロセッサ・コア・ユ
ニット内部からのイベントの発生回数をカウントします。これらのレジス
タは、チップ上の各種リソース間の負荷分散の程度を示すフィードバック
情報を提供するので、予測および実際の利用率の比較と解析を行うことができます。さらに、予測ミスやホールド・サイクルなどのイベントをモニタすることも可能です。

■ PFCNTRn レジスタ
パフォーマンス・モニタ・カウンタ・レジスタ PFCNTR[1:0] を図 19-12 に示します。PFCNTR0 レジスタには、パフォーマンス・カウンタ0 のカウン
ト値が格納されます。PFCNTR1 レジスタには、パフォーマンス・カウンタ
1 のカウント値が格納されます。

パフォーマンス・モニタ・カウンタ・レジスタ（PFCNTRn）

PRCNTR0:0xFFE0 8100
PRCNTR1:
0xFFE0 8104

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X X X X X

リセット＝未定義

PFCNTRx[31:16]
15 14 13 12 11 10 9
X X X X X X X

8
X

7 6
X X

5
X

4
X

3
X

2
X

1 0
X X

PFCNTRx[15:0]

図 19-12.パフォーマンス・モニタ・カウンタ・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

19-21

パフォーマンス・モニタリング・ユニット■ PFCTL レジスタ
パフォーマンス・モニタリング・ユニットをイネーブルにするには、図19-13 に示すようにパフォーマンス・モニタ・コントロール・レジスタ（PFCTL）の PFPWR ビットを設定します。このユニットをイネーブルにした
時点で、個々のカウント・イネーブル・ビット（PFCENn）が有効になります。ユーザ・モード、スーパーバイザ・モード、またはこの両方のモード
で PFCENx ビットを使用して、パフォーマンス・モニタをイネーブルまたはディスエーブルにしてください。トリガするイベントのタイプを選択するときには、PEMUSWx ビットを使用してください。

19-22

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

Blackfin プロセッサのデバッグ

パフォーマンス・モニタ・コントロール・レジスタ（PFCTL）

0xFFE0 8000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X X X X X

リセット＝未定義

PFCNT1PFMON1[7:0]

0 - アサートされるサイクル数をカウント
1 - 立上がりエッジのみをカウント
PFCNT00 - アサートされるサイクル数をカウント
1 - 立上がりエッジのみをカウント

19-24 ページのイベント・モニタ
表を参照

15 14 13 12 11 10 9
X X X X X X X

8
X

7 6
X X

5
X

4
0

3
0

2
0

1
0

0
0
PFPWR

PFCEN1[1:0]
00 -パフォーマンス・モニタ
1 をディスエーブル
01 -ユー ザ・モ ー ド 時に のみ、パフォーマンス・モ
ニタ 1 をイネーブル
10 -スーパーバイザ・モード
時にのみ、パフォーマ
ンス・モニタ 1 をイネー
ブル
11 -ユー ザ・モ ー ド とス ー
パーバイザ・モードの両方のモード時に、パフォーマンス・モニタ
1 をイネーブル
PEMUSW1
0 - パフォーマンス・カウンタ PFCNTR1 のカウント・ダウンにより、例外イベントを発生
1 - パフォーマンス・カウンタ PFCNTR1 のカウント・ダウンにより、エミュレーショ
ン・イベントを発生
PFMON0[7:0]
19-24 ページのイベント・モニタ表を参照

0 - パフォーマンス・モニタを
ディスエーブル
1 - パフォーマンス・モニタを
イネーブル
PEMUSW0
0 - パフォーマンス・カウンタ
PFCNTR0 のカウント・ダ
ウンにより、例外イベント
を発生
1 - パフォーマンス・カウンタ
PFCNTR0 のカウント・ダ
ウ ンによ り、エミ ュレー
ション・イベントを発生
PFCEN0[1:0]
00 -パフォーマンス・モニタ 0
をディスエーブル
01 -ユーザ・モード時にのみ、
パフォーマンス・モニタ 0をイネーブル
10 -スーパーバイザ・モード時にのみ、パフォーマンス・
モニタ 0 をイネーブル
11 -ユーザ・モードとスーパー
バイザ・モードの両方のモード時に、パフォーマ
ンス・モニタ 0 をイネーブル

図 19-13.パフォーマンス・モニタ・コントロール・レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

19-23

パフォーマンス・モニタリング・ユニット■ イベント・モニタ表
表 19-8 には、パフォーマンス・モニタ・カウンタ・レジスタ（PFMON0 ま
たは PFMON1）をインクリメントするイベントをまとめて記載しています。
表 19-8.

イベント・モニタ表

PFMONx フィールド

カウント値をインクリメントするイベント

0x00

ループ 0 の繰返し0x01

ループ 1 の繰返し

0x02

ループ・バッファ 0 が最適化されません。

0x03

ループ・バッファ 1 が最適化されません。

0x04

PC 不変の分岐（トレース・バッファをイネーブルにすることが要求されます。19-17 ページの「TBUFCTL レジスタ」を参照）

0x06

条件付き分岐0x09

コール、リターン、分岐を含み、割込みを含まないトータル分岐（トレース・バッファをイネーブルにすることが要求されます。19-17 ページの「TBUFCTL レジスタ」を参照）

0x0A

CSYNC、SSYNC によるストール

0x0B

EXCPT 命令

0x0C

CSYNC、SSYNC 命令

0x0D

コミットされた命令

0x0E

割込みの取り込み

0x0F

ミスアライメントのアドレス違反例外

0x10

DAG レジスタ上での書込み後の読出し動作の危険性によるストール・サイ
クル

0x13

コンピュータ上での RAW データ・ハザードによるストール・サイクル

0x80

DMA の衝突によるコード・メモリ・フェッチの延期（各イベントあたり最低 2 カウント）

19-24

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

Blackfin プロセッサのデバッグ

表 19-8.

イベント・モニタ表（続き）

PFMONx フィールド

カウント値をインクリメントするイベント

0x81

コード・メモリ TAG のストール（キャッシュ・ミス、または FlushI オペ
レーション、各 FlushI あたり 3 カウント）。コード・メモリのストールによって、プロセッサのストールが発生するのは、命令アセンブリ・ユニットの FIFO が空き状態のときのみに限られる点に注意してください。

0x82

コード・メモリ・フィルのストール（キャッシュ可能またはキャッシュ不能）。コード・メモリのストールによって、プロセッサのストールが発生す
るのは、命令アセンブリ・ユニットの FIFO が空き状態のときのみに限られる点に注意してください。

0x83

コード・メモリの 64 ビット・ワードがプロセッサの命令アセンブリ・ユニッ
トに転送された

0x90

メモリに対するプロセッサのストール

0x91

プロセッサのストールによって隠されない、プロセッサに対するデータ・メ
モリのストール

0x92

データ・メモリのストア・バッファの満杯ストール

0x93

優先順位の高いコードから低いコードへの遷移による、データ・メモリの書込みバッファの満杯ストール

0x94

プロセッサからコミットされたデータの欠落によるデータ・メモリのスト
ア・バッファのフォワード・ストール

0x95

データ・メモリのフィル・バッファのストール

0x96

データ・メモリ・アレイまたは TAG の衝突ストール（DAG 対 DAG 間、または DMA 対 DAG 間）

0x97

データ・メモリ・アレイの衝突ストール（DAG 対 DAG 間、または DMA 対
DAG 間）

0x98

データ・メモリのストール

0x99

プロセッサに送信されるデータ・メモリのストール

0x9A

バンク A に対するデータ・メモリ・キャッシュ・フィルの実行完了

0x9B

バンク B に対するデータ・メモリ・キャッシュ・フィルの実行完了

0x9C

バンク A から転送されるデータ・メモリ・キャッシュ・ビクティム

0x9D

バンク B から転送されるデータ・メモリ・キャッシュ・ビクティム

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

19-25

サイクル・カウンタ

表 19-8.

イベント・モニタ表（続き）

PFMONx フィールド

カウント値をインクリメントするイベント

0x9E

データ・メモリ・キャッシュの高優先度フィル要求

0x9F

データ・メモリ・キャッシュの低優先度フィル要求

サイクル・カウンタ
サイクル・カウンタは、プログラム実行中の CCLK サイクルをカウントします。プロセッサがユーザまたはスーパーバイザのモードに入っている期間
中に、実行、待ち状態、割込み、イベントを含むすべてのサイクルがカウントされますが、エミュレータ・モード時にはサイクル・カウンタはカウ
ント動作を停止します。
サイクル・カウンタは 64 ビットであり、1サイクルごとにインクリメント
します。カウント値は、CYCLES と CYCLES2 の 2個の 32ビット・レジスタにストアされます。最下位 32 ビット（LSB）が CYCLES にストアされます。
最上位 32ビット（MSB）が CYCLES2 にストアされます。

L

読出しデータの一貫性を保証するために、最初の CYCLES の値の読出
し時に、その時点の CYCLES2 レジスタの値がシャドーレジスタに書き込まれます。次の CYCLES2 からの読出しは、シャドーレジスタから行われます。

ユーザ・モード時には、この 2 個のレジスタからの読出しが可能ですが、書込みは実行できません。スーパーバイザとエミュレータの各モード時には、これらのレジスタは読出し／書込みレジスタとして使用できます。
サイクル・カウンタをイネーブルにするには、SYSCFG レジスタの CCEN ビットを設定します。コードの数をベンチマークするために、サイクル・カウンタを使用する方法を以下の例に示します。
R2 = 0;CYCLES = R2;

19-26

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

Blackfin プロセッサのデバッグ

CYCLES2 = R2;
R2 = SYSCFG;
ビット SET(R2,1);
SYSCFG = R2;/* ベンチマークとするコードをこの行位置に挿入します */R2 = SYSCFG;
ビット CLR(R2,1);
SYSCFG = R2;

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

19-27

製品識別レジスタ■ CYCLES および CYCLES2 レジスタ
実行サイクル・カウント・レジスタ（CYCLES および CYCLES2）を図 19-14に示します。この 64 ビット・カウンタは、各 CCLK サイクルごとにインクリメントします。CYCLES レジスタには、サイクル・カウンタの64ビット・カウント値のうち最下位 32 ビットが格納されます。最上位 32 ビットは
CYCLES2 に格納されます。

L

CYCLES および CYCLES2 レジスタはシステムMMR ではなく、システ

ム・レジスタです。システム・レジスタの詳細なリストについて
は、2-8 ページを参照してください。

実行サイクル・カウント・レジスタ（CYCLES および CYCLES2）
ユーザ・モード時には RO、スーパーバイザとエミュレータの各モード時には RW です。
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
X X X X X X X X X X X X X X X X

リセット＝未定義

CYCLES / CYCLES2[31:16]

15 14 13 12 11 10

9

8

7

6

5

4

3

2

1

0

X

X

X

X X

X

X

X

X

X

X

X X

X

X

X

CYCLES / CYCLES2[15:0]

図 19-14.実行サイクル・カウント・レジスタ

製品識別レジスタ
32 ビットの DSP デバイス ID レジスタ（DSPID）は、コアの識別および改訂フィールドを含むコア MMR です。

19-28

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

Blackfin プロセッサのデバッグ■ DSPID レジスタ
図 19-15に示す DSPデバイス ID レジスタ（DSPID）は読出し専用レジスタ
であり、コアの一部として使用されます。

DSP デバイス ID レジスタ（DSPID）
RO

0xFFE0 5000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
1 1 1 0 0 1 0 1 0 0 0 0 0 1 0 0

Analog Devices, Inc. [7:0]

15 14 13 12 11 10 9
0 0 0 0 0 0 0

リセット＝未定義

主要なアーキテクチャ変更
[7:0]
8
0

7
0

6
0

5
0

4
0

3
0

2
0

1
0

0
0

実装 [15:0]

図 19-15.DSP デバイス ID レジスタ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

19-29

製品識別レジスタ

19-30

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

BlackfinプロセッサのコアMMRの割当て

付録A

Blackfin プロセッサのメモリマップド・レジスタ（MMR）は、アドレス
範囲 0xFFE0 0000～ 0xFFFF FFFFにあります。

L

すべてのコア MMRは、32ビットの読出し／書込みアクセスによってアクセスされる必要があります。

この付録では、コア MMR アドレスとレジスタ名を一覧にします。MMRの詳細については、「参照先」列に示すページを参照してください。このマニュアルの PDF版では、「参照先」列にあるリファレンスをクリックして、MMRの補足情報にジャンプしてください。

L1 データ・メモリ・コントローラ・レジスタ
L1 データ・メモリ・コントローラ・レジスタ（0xFFE0 0000 ～0xFFE00404）
表 A-1.

L1 データ・メモリ・コントローラ・レジスタ

メモリマップド・
アドレス

レジスタ名

参照先

0xFFE0 0004

DMEM_CONTROL

6-28 ページの「DMEM_CONTROL レジスタ」

0xFFE0 0008

DCPLB_STATUS

6-67 ページの「DCPLB_STATUS レジスタとICPLB_STATUS レジスタ」

0xFFE0 000CDCPLB_FAULT_ADDR

6-69 ページの「DCPLB_FAULT_ADDR レジ
スタと ICPLB_FAULT_ADDR レジスタ」

0xFFE0 0100

DCPLB_ADDR0

6-65 ページの「DCPLB_ADDRx レジスタ」

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

A-1

L1 データ・メモリ・コントローラ・レジスタ

表 A-1.

A-2

L1 データ・メモリ・コントローラ・レジスタ（続き）

メモリマップド・
アドレス

レジスタ名

参照先

0xFFE0 0104

DCPLB_ADDR1

6-65 ページの「DCPLB_ADDRx レジスタ」

0xFFE0 0108

DCPLB_ADDR2

6-65 ページの「DCPLB_ADDRx レジスタ」

0xFFE0 010C

DCPLB_ADDR3

6-65 ページの「DCPLB_ADDRx レジスタ」

0xFFE0 0110

DCPLB_ADDR4

6-65 ページの「DCPLB_ADDRx レジスタ」

0xFFE0 0114

DCPLB_ADDR5

6-65 ページの「DCPLB_ADDRx レジスタ」

0xFFE0 0118

DCPLB_ADDR6

6-65 ページの「DCPLB_ADDRx レジスタ」

0xFFE0 011C

DCPLB_ADDR7

6-65 ページの「DCPLB_ADDRx レジスタ」

0xFFE0 0120

DCPLB_ADDR8

6-65 ページの「DCPLB_ADDRx レジスタ」

0xFFE0 0124

DCPLB_ADDR9

6-65 ページの「DCPLB_ADDRx レジスタ」

0xFFE0 0128

DCPLB_ADDR10

6-65 ページの「DCPLB_ADDRx レジスタ」

0xFFE0 012C

DCPLB_ADDR11

6-65 ページの「DCPLB_ADDRx レジスタ」

0xFFE0 0130

DCPLB_ADDR12

6-65 ページの「DCPLB_ADDRx レジスタ」

0xFFE0 0134

DCPLB_ADDR13

6-65 ページの「DCPLB_ADDRx レジスタ」

0xFFE0 0138

DCPLB_ADDR14

6-65 ページの「DCPLB_ADDRx レジスタ」

0xFFE0 013C

DCPLB_ADDR15

6-65 ページの「DCPLB_ADDRx レジスタ」

0xFFE0 0200

DCPLB_DATA0

6-63 ページの「DCPLB_DATAx レジスタ」

0xFFE0 0204

DCPLB_DATA1

6-63 ページの「DCPLB_DATAx レジスタ」

0 xFFE0 0208

DCPLB_DATA2

6-63 ページの「DCPLB_DATAx レジスタ」

0xFFE0 020C

DCPLB_DATA3

6-63 ページの「DCPLB_DATAx レジスタ」

0xFFE0 0210

DCPLB_DATA4

6-63 ページの「DCPLB_DATAx レジスタ」

0xFFE0 0214

DCPLB_DATA5

6-63 ページの「DCPLB_DATAx レジスタ」

0xFFE0 0218

DCPLB_DATA6

6-63 ページの「DCPLB_DATAx レジスタ」

0xFFE0 021C

DCPLB_DATA7

6-63 ページの「DCPLB_DATAx レジスタ」

0xFFE0 0220

DCPLB_DATA8

6-63 ページの「DCPLB_DATAx レジスタ」

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

Blackfin プロセッサのコア MMR の割当て

表 A-1.

L1 データ・メモリ・コントローラ・レジスタ（続き）

メモリマップド・
アドレス

レジスタ名

参照先

0xFFE0 0224

DCPLB_DATA9

6-63 ページの「DCPLB_DATAx レジスタ」

0xFFE0 0228

DCPLB_DATA10

6-63 ページの「DCPLB_DATAx レジスタ」

0xFFE0 022C

DCPLB_DATA11

6-63 ページの「DCPLB_DATAx レジスタ」

0xFFE0 0230

DCPLB_DATA12

6-63 ページの「DCPLB_DATAx レジスタ」

0xFFE0 0234

DCPLB_DATA13

6-63 ページの「DCPLB_DATAx レジスタ」

0xFFE0 0238

DCPLB_DATA14

6-63 ページの「DCPLB_DATAx レジスタ」

0xFFE0 023C

DCPLB_DATA15

6-63 ページの「DCPLB_DATAx レジスタ」

0xFFE0 0300

DTEST_COMMAND

6-47 ページの「DTEST_COMMAND レジス
タ」

0xFFE0 0400

DTEST_DATA06-50 ページの「DTEST_DATA0 レジスタ」

0xFFE0 0404

DTEST_DATA1

6-49 ページの「DTEST_DATA1 レジスタ」

L1 命令メモリ・コントローラ・レジスタ
L1 命令メモリ・コントローラ・レジスタ（0xFFE0 1004 ～0xFFE0 1404）
表 A-2.

L1 命令メモリ・コントローラ・レジスタ

メモリマップド・
アドレス

レジスタ名

参照先

0xFFE0 1004

IMEM_CONTROL

6-8 ページの「IMEM_CONTROL レジスタ」

0xFFE0 1008

ICPLB_STATUS

6-67 ページの「DCPLB_STATUS レジスタとICPLB_STATUS レジスタ」

0xFFE0 100CICPLB_FAULT_ADDR

6-69 ページの「DCPLB_FAULT_ADDR レジ
スタと ICPLB_FAULT_ADDR レジスタ」

0xFFE0 1100

ICPLB_ADDR0

6-66 ページの「ICPLB_ADDRx レジスタ」

0xFFE0 1104

ICPLB_ADDR1

6-66 ページの「ICPLB_ADDRx レジスタ」

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

A-3

L1 命令メモリ・コントローラ・レジスタ

表 A-2.

A-4

L1 命令メモリ・コントローラ・レジスタ（続き）

メモリマップド・
アドレス

レジスタ名

参照先

0xFFE0 1108

ICPLB_ADDR2

6-66 ページの「ICPLB_ADDRx レジスタ」

0xFFE0 110CICPLB_ADDR3

6-66 ページの「ICPLB_ADDRx レジスタ」

0xFFE0 1110

ICPLB_ADDR4

6-66 ページの「ICPLB_ADDRx レジスタ」

0xFFE0 1114

ICPLB_ADDR5

6-66 ページの「ICPLB_ADDRx レジスタ」

0xFFE0 1118

ICPLB_ADDR6

6-66 ページの「ICPLB_ADDRx レジスタ」

0xFFE0 111CICPLB_ADDR7

6-66 ページの「ICPLB_ADDRx レジスタ」

0xFFE0 1120

ICPLB_ADDR8

6-66 ページの「ICPLB_ADDRx レジスタ」

0xFFE0 1124

ICPLB_ADDR9

6-66 ページの「ICPLB_ADDRx レジスタ」

0xFFE0 1128

ICPLB_ADDR10

6-66 ページの「ICPLB_ADDRx レジスタ」

0xFFE0 112CICPLB_ADDR11

6-66 ページの「ICPLB_ADDRx レジスタ」

0xFFE0 1130

ICPLB_ADDR12

6-66 ページの「ICPLB_ADDRx レジスタ」

0xFFE0 1134

ICPLB_ADDR13

6-66 ページの「ICPLB_ADDRx レジスタ」

0xFFE0 1138

ICPLB_ADDR14

6-66 ページの「ICPLB_ADDRx レジスタ」

0xFFE0 113CICPLB_ADDR15

6-66 ページの「ICPLB_ADDRx レジスタ」

0xFFE0 1200ICPLB_DATA06-61 ページの「ICPLB_DATAx レジスタ」

0xFFE0 1204

ICPLB_DATA1

6-61 ページの「ICPLB_DATAx レジスタ」

0xFFE0 1208

ICPLB_DATA2

6-61 ページの「ICPLB_DATAx レジスタ」

0xFFE0 120CICPLB_DATA3

6-61 ページの「ICPLB_DATAx レジスタ」

0xFFE0 1210

ICPLB_DATA4

6-61 ページの「ICPLB_DATAx レジスタ」

0xFFE0 1214

ICPLB_DATA5

6-61 ページの「ICPLB_DATAx レジスタ」

0xFFE0 1218

ICPLB_DATA6

6-61 ページの「ICPLB_DATAx レジスタ」

0xFFE0 121CICPLB_DATA7

6-61 ページの「ICPLB_DATAx レジスタ」

0xFFE0 1220

ICPLB_DATA8

6-61 ページの「ICPLB_DATAx レジスタ」

0xFFE0 1224

ICPLB_DATA9

6-61 ページの「ICPLB_DATAx レジスタ」

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

Blackfin プロセッサのコア MMR の割当て

表 A-2.

L1 命令メモリ・コントローラ・レジスタ（続き）

メモリマップド・
アドレス

レジスタ名

参照先

0xFFE0 1228

ICPLB_DATA10

6-61 ページの「ICPLB_DATAx レジスタ」

0xFFE0 122CICPLB_DATA11

6-61 ページの「ICPLB_DATAx レジスタ」

0xFFE0 1230

ICPLB_DATA12

6-61 ページの「ICPLB_DATAx レジスタ」

0xFFE0 1234

ICPLB_DATA13

6-61 ページの「ICPLB_DATAx レジスタ」

0xFFE0 1238

ICPLB_DATA14

6-61 ページの「ICPLB_DATAx レジスタ」

0xFFE0 123CICPLB_DATA15

6-61 ページの「ICPLB_DATAx レジスタ」

0xFFE0 1300

ITEST_COMMAND

6-25 ページの「ITEST_COMMAND レジスタ」

0XFFE0 1400

ITEST_DATA0

6-27 ページの「ITEST_DATA0 レジスタ」

0XFFE0 1404

ITEST_DATA1

6-26 ページの「ITEST_DATA1 レジスタ」

割込みコントローラ・レジスタ
割込みコントローラ・レジスタ（0xFFE0 2000～ 0xFFE0 2110）
表 A-3.

割込みコントローラ・レジスタ

メモリマップド・
アドレス

レジスタ名

参照先

0xFFE0 2000

EVT0
(EMU)

4-39 ページの「コア・イベント・ベクトル・
テーブル」

0xFFE0 2004

EVT1
(RST)

4-39 ページの「コア・イベント・ベクトル・
テーブル」

0xFFE0 2008

EVT2
(NMI)

4-39 ページの「コア・イベント・ベクトル・
テーブル」

0xFFE0 200C

EVT3
(EVX)

4-39 ページの「コア・イベント・ベクトル・
テーブル」

0xFFE0 2010

EVT4

4-39 ページの「コア・イベント・ベクトル・
テーブル」

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

A-5

割込みコントローラ・レジスタ

表 A-3.

A-6

割込みコントローラ・レジスタ（続き）

メモリマップド・
アドレス

レジスタ名

参照先

0xFFE0 2014

EVT5
(IVHW)

4-39 ページの「コア・イベント・ベクトル・
テーブル」

0xFFE0 2018

EVT6
(TMR)

4-39 ページの「コア・イベント・ベクトル・
テーブル」

0xFFE0 201C

EVT7
(IVG7)

4-39 ページの「コア・イベント・ベクトル・
テーブル」

0xFFE0 2020

EVT8
(IVG8)

4-39 ページの「コア・イベント・ベクトル・
テーブル」

0xFFE0 2024

EVT9
(IVG9)

4-39 ページの「コア・イベント・ベクトル・
テーブル」

0xFFE0 2028

EVT10
(IVG10)4-39 ページの「コア・イベント・ベクトル・
テーブル」

0xFFE0 202C

EVT11
(IVG11)

4-39 ページの「コア・イベント・ベクトル・
テーブル」

0xFFE0 2030

EVT12
(IVG12)4-39 ページの「コア・イベント・ベクトル・
テーブル」

0xFFE0 2034

EVT13
(IVG13)4-39 ページの「コア・イベント・ベクトル・
テーブル」

0xFFE0 2038

EVT14
(IVG14)4-39 ページの「コア・イベント・ベクトル・
テーブル」

0xFFE0 203C

EVT15
(IVG15)

4-39 ページの「コア・イベント・ベクトル・
テーブル」

0xFFE0 2100

EVT_OVERRIDE

0xFFE0 2104

IMASK

4-35 ページの「IMASK レジスタ」

0xFFE0 2108

IPEND

4-37 ページの「IPEND レジスタ」

0xFFE0 2110

IPRIO

6-43 ページの「IPRIO レジスタと書込みバッ
ファの深さ」ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

Blackfin プロセッサのコア MMR の割当て

表 A-3.

割込みコントローラ・レジスタ（続き）

メモリマップド・
アドレス

レジスタ名

参照先

0xFFE0 210C

ILAT

4-36 ページの「ILAT レジスタ」

0XFFE0 2110

IPRIO

6-43 ページの「IPRIO レジスタと書込みバッ
ファの深さ」

コア・タイマ・レジスタ
コア・タイマ・レジスタ（0xFFE0 3000 ～ 0xFFE0 300C）
表 A-4.

コア・タイマ・レジスタ

メモリマップド・
アドレス

レジスタ名

参照先

0xFFE0 3000

TCNTL

15-50 ページの「TCNTL レジスタ」

0xFFE0 3004

TPERIOD

15-53 ページの「TPERIOD レジスタ」

0xFFE0 3008

TSCALE

15-54 ページの「TSCALE レジスタ」

0xFFE0 300C

TCOUNT

15-52 ページの「TCOUNT レジスタ」

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

A-7デバッグ、MP、エミュレーション・ユニット・レジスタ

デバッグ、MP、エミュレーション・ユニット・レジスタ
デバッグ、MP、エミュレーション・ユニット・レジスタ（0xFFE0 5000
～ 0xFFE0 5008）
表 A-5.

デバッグ・レジスタとエミュレーション・ユニット・レジスタ

メモリマップド・
アドレス

レジスタ名

参照先

0xFFE0 5000

DSPID

19-29 ページの「DSPID レジスタ」

トレース・ユニット・レジスタ
トレース・ユニット・レジスタ（0xFFE0 6000 ～ 0xFFE0 6100）
表 A-6.

A-8

トレース・ユニット・レジスタ

メモリマップド・
アドレス

レジスタ名

参照先

0xFFE0 6000

TBUFCTL

19-17 ページの「TBUFCTL レジスタ」

0xFFE0 6004

TBUFSTAT

19-18 ページの「TBUFSTAT レジスタ」

0xFFE0 6100

TBUF

19-19 ページの「TBUF レジスタ」

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

Blackfin プロセッサのコア MMR の割当て

ウォッチポイント・レジスタとパッチ・レジスタ
ウォッチポイント・レジスタとパッチ・レジスタ（0xFFE0 7000 ～0xFFE0
7200）
表 A-7.

ウォッチポイント・レジスタとパッチ・レジスタ

メモリマップド・
アドレス

レジスタ名

参照先

0xFFE0 7000

WPIACTL

19-8 ページの「WPIACTL レジスタ」

0xFFE0 7040

WPIA0

19-6 ページの「WPIAn レジスタ」

0xFFE0 7044

WPIA1

19-6 ページの「WPIAn レジスタ」

0xFFE0 7048

WPIA2

19-6 ページの「WPIAn レジスタ」

0xFFE0 704C

WPIA3

19-6 ページの「WPIAn レジスタ」

0xFFE0 7050

WPIA4

19-6 ページの「WPIAn レジスタ」

0xFFE0 7054

WPIA5

19-6 ページの「WPIAn レジスタ」

0xFFE0 7080

WPIACNT0

19-7 ページの「WPIACNTn レジスタ」

0xFFE0 7084

WPIACNT1

19-7 ページの「WPIACNTn レジスタ」

0xFFE0 7088

WPIACNT2

19-7 ページの「WPIACNTn レジスタ」

0xFFE0 708C

WPIACNT3

19-7 ページの「WPIACNTn レジスタ」

0xFFE0 7090

WPIACNT4

19-7 ページの「WPIACNTn レジスタ」

0xFFE0 7094

WPIACNT5

19-7 ページの「WPIACNTn レジスタ」

0xFFE0 7100

WPDACTL

19-13 ページの「WPDACTL レジスタ」

0xFFE0 7140

WPDA0

19-12 ページの「WPDAn レジスタ」

0xFFE0 7144

WPDA1

19-12 ページの「WPDAn レジスタ」

0xFFE0 7180

WPDACNT0

19-12 ページの「WPDACNTn レジスタ」

0xFFE0 7184

WPDACNT1

19-12 ページの「WPDACNTn レジスタ」

0xFFE0 7200

WPSTAT

19-15 ページの「WPSTAT レジスタ」

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

A-9パフォーマンス・モニタ・レジスタ

パフォーマンス・モニタ・レジスタ
パフォーマンス・モニタ・レジスタ（0xFFE0 8000 ～ 0xFFE0 8104）
表 A-8.

パフォーマンス・モニタ・レジスタ

メモリマップド・
アドレス

レジスタ名

参照先

0xFFE0 8000

PFCTL

19-22 ページの「PFCTL レジスタ」

0xFFE0 8100

PFCNTR0

19-21 ページの「PFCNTRn レジスタ」

0xFFE0 8104

PFCNTR1

19-21 ページの「PFCNTRn レジスタ」

A-10

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

付録B

システムMMRの割当て

ここでは、システム・メモリマップド・レジスタ（MMR）の一般的な情報を提供します。
• システム MMR のアドレス範囲は 0xFFC0 0000～ 0xFFDF FFFFです。
• すべてのシステム MMR は、16 ビット幅または 32 ビット幅です。
16 ビット幅の MMR は、16 ビットの読出し／書込み動作でアクセスされる必要があります。32 ビット幅の MMR は、32 ビットの読出し／書込み動作でアクセスされる必要があります。16ビット・ア
クセスが必要か 32 ビット・アクセスが必要かを判断するには、
MMR の説明をチェックしてください。
• この付録で定義されていないすべてのシステム MMR空間は、内部使用専用に予約されています。
この付録では、MMR アドレスとレジスタ名を一覧にします。MMR の詳
細については、「参照先」列に示すページを参照してください。このマニュアルの PDF 版では、「参照先」列にあるリファレンスをクリックして、MMR の補足情報にジャンプしてください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

B-1

ダイナミック・パワー・マネジメント・レジスタ

ダイナミック・パワー・マネジメント・レジスタ
ダイナミック・パワー・マネジメント・レジスタ（0xFFC0 0000 ～0xFFC000FF）
表 B-1.

B-2

ダイナミック・パワー・マネジメント・レジスタ

メモリマップド・
アドレス

レジスタ名

参照先

0xFFC0 0000

PLL_CTL

8-8 ページの「PLL_CTL レジスタ」

0xFFC0 0004

PLL_DIV

8-7 ページの「PLL_DIV レジスタ」

0xFFC0 0008

VR_CTL

8-27 ページの「VR_CTL レジスタ」

0xFFC0 000C

PLL_STAT

8-10 ページの「PLL_STAT レジスタ」

0xFFC0 0010

PLL_LOCKCNT

8-11 ページの「PLL_LOCKCNT レジスタ」

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

システム MMR の割当てシステム・リセットと割込みコントロール・レジスタシステム・リセットと割込みコントローラ・レジスタ（0xFFC0 0100 ～0xFFC001FF）
表 B-2.

システム割込みコントローラ・レジスタ

メモリマップド・
アドレス

レジスタ名

参照先

0xFFC0 0100

SWRST

3-17 ページの「SWRST レジスタ」

0xFFC0 0104

SYSCR

3-15 ページの「SYSCR レジスタ」

0xFFC0 010C

SIC_IMASK

4-30 ページの「SIC_IMASK レジスタ」

0xFFC0 0110

SIC_IAR04-32 ページの「システム割込み割当てレジスタ（SIC_IARx）」

0xFFC0 0114

SIC_IAR14-32 ページの「システム割込み割当てレジスタ（SIC_IARx）」

0xFFC0 0118

SIC_IAR2

4-32 ページの「システム割込み割当てレジスタ（SIC_IARx）」

0xFFC0 0120

SIC_ISR

4-29 ページの「SIC_ISR レジスタ」

0xFFC0 0124

SIC_IWR

4-27 ページの「SIC_IWR レジスタ」

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

B-3

ウォッチドッグ・タイマ・レジスタ

ウォッチドッグ・タイマ・レジスタ
ウォッチドッグ・タイマ・レジスタ（0xFFC0 0200 ～ 0xFFC0 02FF）
表 B-3.

ウォッチドッグ・タイマ・レジスタ

メモリマップド・
アドレス

レジスタ名

参照先

0xFFC0 0200

WDOG_CTL

15-58 ページの「WDOG_CTL レジスタ」

0xFFC0 0204

WDOG_CNT

15-55 ページの「WDOG_CNT レジスタ」

0xFFC0 0208

WDOG_STAT

15-56 ページの「WDOG_STAT レジスタ」

リアルタイム・クロック・レジスタ
リアルタイム・クロック・レジスタ（0xFFC0 0300 ～ 0xFFC0 03FF）
表 B-4.

B-4

リアルタイム・クロック・レジスタ

メモリマップド・
アドレス

レジスタ名

参照先

0xFFC0 0300

RTC_STAT

16-14 ページの「RTC_STAT レジスタ」

0xFFC0 0304

RTC_ICTL

16-16 ページの「RTC_ICTL レジスタ」

0xFFC0 0308

RTC_ISTAT

16-17 ページの「RTC_ISTAT レジスタ」

0xFFC0 030C

RTC_SWCNT

16-18 ページの「RTC_SWCNT レジスタ」

0xFFC0 0310

RTC_ALARM

16-20 ページの「RTC_ALARM レジスタ」

0xFFC0 0314

RTC_PREN

16-21 ページの「RTC_PREN レジスタ」

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

システム MMR の割当て

パラレル・ペリフェラル・インターフェース（PPI）レジスタ
パラレル・ペリフェラル・インターフェース（PPI）レジスタ（0xFFC0 1000
～ 0xFFC0 10FF）
表 B-5.

パラレル・ペリフェラル・インターフェース（PPI）レジスタ

メモリマップド・
アドレス

レジスタ名

参照先

0xFFC0 1000

PPI_CONTROL

11-3 ページの「PPI_CONTROL レジスタ」

0xFFC0 1004

PPI_STATUS

11-9 ページの「PPI_STATUS レジスタ」

0xFFC0 1008

PPI_COUNT

11-11 ページの「PPI_COUNT レジスタ」

0xFFC0 100C

PPI_DELAY

11-11 ページの「PPI_DELAY レジスタ」

0xFFC0 1010

PPI_FRAME

11-12 ページの「PPI_FRAME レジスタ」

UART コントローラ・レジスタ
UART コントローラ・レジスタ（0xFFC0 0400 ～0xFFC0 04FF）
表 B-6.

UART コントローラ・レジスタ

メモリマップド・
アドレス

レジスタ名

参照先

0xFFC0 0400

UART_THR

13-7 ページの「UART_THR レジスタ」

0xFFC0 0400

UART_RBR

13-8 ページの「UART_RBR レジスタ」

0xFFC0 0400

UART_DLL

13-13 ページの「UART_DLL レジスタとUART_DLH レジスタ」

0xFFC0 0404

UART_DLH

13-13 ページの「UART_DLL レジスタとUART_DLH レジスタ」

0xFFC0 0404

UART_IER

13-9 ページの「UART_IER レジスタ」

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

B-5

SPI コントローラ・レジスタ

表 B-6.

UART コントローラ・レジスタ（続き）

メモリマップド・
アドレス

レジスタ名

参照先

0xFFC0 0408

UART_IIR

13-11 ページの「UART_IIR レジスタ」

0xFFC0 040C

UART_LCR

13-4 ページの「UART_LCR レジスタ」

0xFFC0 0410

UART_MCR

13-5 ページの「UART_MCR レジスタ」

0xFFC0 0414

UART_LSR

13-6 ページの「UART_LSR レジスタ」

0xFFC0 041C

UART_SCR

13-15 ページの「UART_SCR レジスタ」

0xFFC0 0424

UART_GCTL

13-15 ページの「UART_GCTL レジスタ」

SPI コントローラ・レジスタ
SPI コントローラ・レジスタ（0xFFC0 0500 ～0xFFC0 05FF）
表 B-7.

B-6

SPI コントローラ・レジスタ

メモリマップド・
アドレス

レジスタ名

参照先

0xFFC0 0500

SPI_CTL

10-9 ページの「SPI_CTL レジスタ」

0xFFC0 0504

SPI_FLG

10-12 ページの「SPI_FLG レジスタ」

0xFFC0 0508

SPI_STAT

10-16 ページの「SPI_STAT レジスタ」

0xFFC0 050C

SPI_TDBR

10-18 ページの「SPI_TDBR レジスタ」

0xFFC0 0510

SPI_RDBR

10-19 ページの「SPI_RDBR レジスタ」

0xFFC0 0514

SPI_BAUD

10-8 ページの「SPI_BAUD レジスタ」

0xFFC0 0518

SPI_SHADOW

10-20 ページの「SPI_SHADOW レジスタ」

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

システム MMR の割当て

タイマ・レジスタ
タイマ・レジスタ（0xFFC0 0600 ～ 0xFFC0 06FF）
表 B-8.

タイマ・レジスタ

メモリマップド・
アドレス

レジスタ名

参照先

0xFFC0 0600

TIMER0_CONFIG

15-9 ページの「TIMERx_CONFIG レジスタ」

0xFFC0 0604

TIMER0_COUNTER

15-11 ページの「TIMERx_COUNTER レジスタ」

0xFFC0 0608

TIMER0_PERIOD

15-12 ページの「TIMERx_PERIOD レジスタとTIMERx_WIDTH レジスタ」

0xFFC0 060C

TIMER0_WIDTH

15-12 ページの「TIMERx_PERIOD レジスタとTIMERx_WIDTH レジスタ」

0xFFC0 0610

TIMER1_CONFIG

15-9 ページの「TIMERx_CONFIG レジスタ」

0xFFC0 0614

TIMER1_COUNTER

15-11 ページの「TIMERx_COUNTER レジスタ」

0xFFC0 0618

TIMER1_PERIOD

15-12 ページの「TIMERx_PERIOD レジスタとTIMERx_WIDTH レジスタ」

0xFFC0 061C

TIMER1_WIDTH

15-12 ページの「TIMERx_PERIOD レジスタとTIMERx_WIDTH レジスタ」

0xFFC0 0620

TIMER2_CONFIG

15-9 ページの「TIMERx_CONFIG レジスタ」

0xFFC0 0624

TIMER2_COUNTER

15-11 ページの「TIMERx_COUNTER レジスタ」

0xFFC0 0628

TIMER2_PERIOD

15-12 ページの「TIMERx_PERIOD レジスタとTIMERx_WIDTH レジスタ」

0xFFC0 062C

TIMER2_WIDTH

15-12 ページの「TIMERx_PERIOD レジスタとTIMERx_WIDTH レジスタ」

0xFFC0 0640

TIMER_ENABLE

15-4 ページの「TIMER_ENABLE レジスタ」

0xFFC0 0644

TIMER_DISABLE

15-6 ページの「TIMER_DISABLE レジスタ」

0xFFC0 0648

TIMER_STATUS

15-7 ページの「TIMER_STATUS レジスタ」

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

B-7

プログラマブル・フラグ・レジスタ

プログラマブル・フラグ・レジスタ
プログラマブル・フラグ・レジスタ（0xFFC0 0700 ～ 0xFFC0 07FF）
表 B-9.

B-8

プログラマブル・フラグ・レジスタ

メモリマップド・
アドレス

レジスタ名

参照先

0xFFC0 0700

FIO_FLAG_D

14-9 ページの「FIO_FLAG_D レジスタ」

0xFFC0 0704

FIO_FLAG_C

14-9 ページの「FIO_FLAG_S、FIO_FLAG_C、および FIO_FLAG_T レジスタ」

0xFFC0 0708

FIO_FLAG_S

14-9 ページの「FIO_FLAG_S、FIO_FLAG_C、および FIO_FLAG_T レジスタ」

0xFFC0 070C

FIO_FLAG_T

14-9 ページの「FIO_FLAG_S、FIO_FLAG_C、および FIO_FLAG_T レジスタ」

0xFFC0 0710

FIO_MASKA_D

14-12 ページの「FIO_MASKA_D、
FIO_MASKA_C、FIO_MASKA_S、
FIO_MASKA_T、FIO_MASKB_D、
FIO_MASKB_C、FIO_MASKB_S、
FIO_MASKB_T レジスタ」

0xFFC0 0714

FIO_MASKA_C

14-12 ページの「FIO_MASKA_D、
FIO_MASKA_C、FIO_MASKA_S、
FIO_MASKA_T、FIO_MASKB_D、
FIO_MASKB_C、FIO_MASKB_S、
FIO_MASKB_T レジスタ」

0xFFC0 0718

FIO_MASKA_S

14-12 ページの「FIO_MASKA_D、
FIO_MASKA_C、FIO_MASKA_S、
FIO_MASKA_T、FIO_MASKB_D、
FIO_MASKB_C、FIO_MASKB_S、
FIO_MASKB_T レジスタ」

0xFFC0 071C

FIO_MASKA_T

14-12 ページの「FIO_MASKA_D、
FIO_MASKA_C、FIO_MASKA_S、
FIO_MASKA_T、FIO_MASKB_D、
FIO_MASKB_C、FIO_MASKB_S、
FIO_MASKB_T レジスタ」

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

システム MMR の割当て

表 B-9.

プログラマブル・フラグ・レジスタ（続き）

メモリマップド・
アドレス

レジスタ名

参照先

0xFFC0 0720

FIO_MASKB_D

14-12 ページの「FIO_MASKA_D、
FIO_MASKA_C、FIO_MASKA_S、
FIO_MASKA_T、FIO_MASKB_D、
FIO_MASKB_C、FIO_MASKB_S、
FIO_MASKB_T レジスタ」

0xFFC0 0724

FIO_MASKB_C

14-12 ページの「FIO_MASKA_D、
FIO_MASKA_C、FIO_MASKA_S、
FIO_MASKA_T、FIO_MASKB_D、
FIO_MASKB_C、FIO_MASKB_S、
FIO_MASKB_T レジスタ」

0xFFC0 0728

FIO_MASKB_S

14-12 ページの「FIO_MASKA_D、
FIO_MASKA_C、FIO_MASKA_S、
FIO_MASKA_T、FIO_MASKB_D、
FIO_MASKB_C、FIO_MASKB_S、
FIO_MASKB_T レジスタ」

0xFFC0 072C

FIO_MASKB_T

14-12 ページの「FIO_MASKA_D、
FIO_MASKA_C、FIO_MASKA_S、
FIO_MASKA_T、FIO_MASKB_D、
FIO_MASKB_C、FIO_MASKB_S、
FIO_MASKB_T レジスタ」

0xFFC0 0730

FIO_DIR

14-5 ページの「FIO_DIR レジスタ」

0xFFC0 0734

FIO_POLAR

14-20 ページの「FIO_POLAR レジスタ」

0xFFC0 0738

FIO_EDGE

14-21 ページの「FIO_EDGE レジスタ」

0xFFC0 073C

FIO_BOTH

14-22 ページの「FIO_BOTH レジスタ」

0xFFC0 0740

FIO_INEN

14-23 ページの「FIO_INEN レジスタ」

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

B-9

SPORT0 コントローラ・レジスタ

SPORT0 コントローラ・レジスタ
SPORT0 コントローラ・レジスタ（0xFFC0 0800 ～ 0xFFC0 08FF）
表 B-10. SPORT0 コントローラ・レジスタ
メモリマップド・
アドレス

レジスタ名

参照先

0xFFC0 0800

SPORT0_TCR1

12-12 ページの「SPORTx_TCR1 レジスタとSPORTx_TCR2 レジスタ」

0xFFC0 0804

SPORT0_TCR2

12-12 ページの「SPORTx_TCR1 レジスタとSPORTx_TCR2 レジスタ」

0xFFC0 0808

SPORT0_TCLKDIV

12-31 ページの「SPORTx_TCLKDIV レジスタと SPORTx_RCLKDIV レジスタ」

0xFFC0 080C

SPORT0_TFSDIV

12-32 ページの「SPORTx_TFSDIV レジスタとSPORTx_RFSDIV レジスタ」

0xFFC0 0810

SPORT0_TX

12-23 ページの「SPORTx_TX レジスタ」

0xFFC0 0818

SPORT0_RX

12-26 ページの「SPORTx_RX レジスタ」

0xFFC0 0820

SPORT0_RCR1

12-18 ページの「SPORTx_RCR1 レジスタとSPORTx_RCR2 レジスタ」

0xFFC0 0824

SPORT0_RCR2

12-18 ページの「SPORTx_RCR1 レジスタとSPORTx_RCR2 レジスタ」

0xFFC0 0828

SPORT0_RCLKDIV

12-31 ページの「SPORTx_TCLKDIV レジスタと SPORTx_RCLKDIV レジスタ」

0xFFC0 082C

SPORT0_RFSDIV

12-32 ページの「SPORTx_TFSDIV レジスタとSPORTx_RFSDIV レジスタ」

0xFFC0 0830

SPORT0_STAT

12-28 ページの「SPORTx_STAT レジスタ」

0xFFC0 0834

SPORT0_CHNL

12-60 ページの「SPORTx_CHNL レジスタ」

0xFFC0 0838

SPORT0_MCMC1

12-53 ページの「SPORTx_MCMCn レジスタ」

0xFFC0 083C

SPORT0_MCMC2

12-53 ページの「SPORTx_MCMCn レジスタ」

0xFFC0 0840

SPORT0_MTCS0

12-65 ページの「SPORTx_MTCSn レジスタ」

0xFFC0 0844

SPORT0_MTCS1

12-65 ページの「SPORTx_MTCSn レジスタ」

B-10

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

システム MMR の割当て

表 B-10. SPORT0 コントローラ・レジスタ（続き）
メモリマップド・
アドレス

レジスタ名

参照先

0xFFC0 0848

SPORT0_MTCS2

12-65 ページの「SPORTx_MTCSn レジスタ」

0xFFC0 084C

SPORT0_MTCS3

12-65 ページの「SPORTx_MTCSn レジスタ」

0xFFC0 0850

SPORT0_MRCS0

12-63 ページの「SPORTx_MRCSn レジスタ」

0xFFC0 0854

SPORT0_MRCS1

12-63 ページの「SPORTx_MRCSn レジスタ」

0xFFC0 0858

SPORT0_MRCS2

12-63 ページの「SPORTx_MRCSn レジスタ」

0xFFC0 085C

SPORT0_MRCS3

12-63 ページの「SPORTx_MRCSn レジスタ」

SPORT1 コントローラ・レジスタ
SPORT1 コントローラ・レジスタ（0xFFC0 0900 ～ 0xFFC0 09FF）
表 B-11. SPORT1 コントローラ・レジスタ
メモリマップド・
アドレス

レジスタ名

参照先

0xFFC0 0900

SPORT1_TCR1

12-12 ページの「SPORTx_TCR1 レジスタとSPORTx_TCR2 レジスタ」

0xFFC0 0904

SPORT1_TCR2

12-12 ページの「SPORTx_TCR1 レジスタとSPORTx_TCR2 レジスタ」

0xFFC0 0908

SPORT1_TCLKDIV

12-31 ページの「SPORTx_TCLKDIV レジスタと SPORTx_RCLKDIV レジスタ」

0xFFC0 090C

SPORT1_TFSDIV

12-32 ページの「SPORTx_TFSDIV レジスタとSPORTx_RFSDIV レジスタ」

0xFFC0 0910

SPORT1_TX

12-23 ページの「SPORTx_TX レジスタ」

0xFFC0 0918

SPORT1_RX

12-26 ページの「SPORTx_RX レジスタ」

0xFFC0 0920

SPORT1_RCR1

12-18 ページの「SPORTx_RCR1 レジスタとSPORTx_RCR2 レジスタ」

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

B-11

SPORT1 コントローラ・レジスタ

表 B-11. SPORT1 コントローラ・レジスタ（続き）
メモリマップド・
アドレス

レジスタ名

参照先

0xFFC0 0924

SPORT1_RCR2

12-18 ページの「SPORTx_RCR1 レジスタとSPORTx_RCR2 レジスタ」

0xFFC0 0928

SPORT1_RCLKDIV

12-31 ページの「SPORTx_TCLKDIV レジスタと SPORTx_RCLKDIV レジスタ」

0xFFC0 092C

SPORT1_RFSDIV

12-32 ページの「SPORTx_TFSDIV レジスタとSPORTx_RFSDIV レジスタ」

0xFFC0 0930

SPORT1_STAT

12-28 ページの「SPORTx_STAT レジスタ」

0xFFC0 0934

SPORT1_CHNL

12-60 ページの「SPORTx_CHNL レジスタ」

0xFFC0 0938

SPORT1_MCMC1

12-53 ページの「SPORTx_MCMCn レジスタ」

0xFFC0 093C

SPORT1_MCMC2

12-53 ページの「SPORTx_MCMCn レジスタ」

0xFFC0 0940

SPORT1_MTCS0

12-65 ページの「SPORTx_MTCSn レジスタ」

0xFFC0 0944

SPORT1_MTCS1

12-65 ページの「SPORTx_MTCSn レジスタ」

0xFFC0 0948

SPORT1_MTCS2

12-65 ページの「SPORTx_MTCSn レジスタ」

0xFFC0 094C

SPORT1_MTCS3

12-65 ページの「SPORTx_MTCSn レジスタ」

0xFFC0 0950

SPORT1_MRCS0

12-63 ページの「SPORTx_MRCSn レジスタ」

0xFFC0 0954

SPORT1_MRCS1

12-63 ページの「SPORTx_MRCSn レジスタ」

0xFFC0 0958

SPORT1_MRCS2

12-63 ページの「SPORTx_MRCSn レジスタ」

0xFFC0 095C

SPORT1_MRCS3

12-63 ページの「SPORTx_MRCSn レジスタ」

B-12

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

システム MMR の割当て

DMA/ メモリ DMA コントロール・レジスタ
DMA コントロール・レジスタ（0xFFC0 0B00 ～0xFFC0 0FFF）
表 B-12. DMA トラフィック・コントロール・レジスタ
メモリマップド・
アドレス

レジスタ名

参照先

0xFFC0 0B0C

DMA_TC_PER

9-57 ページの「DMA_TC_PER レジスタとDMA_TC_CNT レジスタ」

0xFFC0 0B10

DMA_TC_CNT

9-57 ページの「DMA_TC_PER レジスタとDMA_TC_CNT レジスタ」

各 DMAチャンネルには、そのDMA チャンネルに関連付けられたベース・
アドレスからの固定オフセットを持つ同一の MMR セットがあるため、
表 B-13と表 B-14に示すMMR情報を参照すると便利です。表 B-13には、各 DMA チャンネルのベース・アドレスとチャンネルを識別するレジスタ
接頭辞を示します。表 B-14 には、レジスタ接尾辞とベース・アドレスからのそのオフセットを示します。
たとえば、DMA チャンネル 0のY_MODIFY レジスタは DMA0_Y_MODIFY と呼ばれ、そのアドレスは 0xFFC0 0C1C です。同様に、メモリ DMA スト
リーム 0 のソース・カレント・アドレス・レジスタは MDMA_S0_CURR_ADDRと呼ばれ、そのアドレスは 0xFFC0 0E64 です。
表 B-13. DMA チャンネルのベース・アドレス
DMA チャンネル
識別マーク

MMR ベース・アドレス

レジスタ接頭辞

00xFFC0 0C00

DMA0_

1

0xFFC0 0C40

DMA1_

2

0xFFC0 0C80

DMA2_

3

0xFFC0 0CC0DMA3_ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

B-13

DMA/ メモリ DMA コントロール・レジスタ

表 B-13. DMA チャンネルのベース・アドレス（続き）
DMA チャンネル
識別マーク

MMR ベース・アドレス

レジスタ接頭辞

40xFFC0 0D00

DMA4_

5

0xFFC0 0D40

DMA5_

6

0xFFC0 0D80

DMA6_

7

0xFFC0 0DC0

DMA7_Mem DMA
ストリーム 0
デスティネーション

0xFFCO 0E00

MDMA_D0_

Mem DMA
ストリーム 0 ソース

0xFFC0 0E40

MDMA_S0_

Mem DMA
ストリーム 1 ソース

0xFFCO 0E80

MDMA_D1_

Mem DMA
ストリーム 1 ソース

0xFFC0 0EC0

MDMA_S1_

表 B-14. DMA レジスタの接尾辞とオフセット
レジスタ接頭辞

ベースからのオフセット

参照先

NEXT_DESC_PTR

0x00

9-8 ページの「DMAx_NEXT_DESC_PTR/MDMA_yy_NEXT_DESC_P
TR レジスタ」

START_ADDR

0x04

9-10 ページの「DMAx_START_ADDR/MDMA_yy_START_ADDR レジ
スタ」

CONFIG

0x08

9-12 ページの「DMAx_CONFIG/MDMA_yy_CONFIG レ
ジスタ」

X_COUNT

0x10

9-17 ページの「DMAx_X_COUNT/MDMA_yy_X_COUNT
レジスタ」

X_MODIFY

0x14

9-18 ページの「DMAx_X_MODIFY/MDMA_yy_X_MODIFY レジスタ」

B-14

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

システム MMR の割当て

表 B-14. DMA レジスタの接尾辞とオフセット（続き）
レジスタ接頭辞

ベースからのオフセット

参照先

Y_COUNT

0x18

9-20 ページの「DMAx_Y_COUNT/MDMA_yy_Y_COUNT
レジスタ」

Y_MODIFY

0x1C

9-21 ページの「DMAx_Y_MODIFY/MDMA_yy_Y_MODIFY レジスタ」

CURR_DESC_PTR

0x20

9-23 ページの「DMAx_CURR_DESC_PTR/MDMA_yy_CURR_DESC_P
TR レジスタ」

CURR_ADDR

0x24

9-25 ページの「DMAx_CURR_ADDR/MDMA_yy_CURR_ADDR レジス
タ」

IRQ_STATUS

0x28

9-32 ページの「DMAx_IRQ_STATUS/MDMA_yy_IRQ_STATUS レジス
タ」

PERIPHERAL_MA
P

0x2C

9-29 ページの「DMAx_PERIPHERAL_MAP/MDMA_yy_PERIPHERA
L_MAP レジスタ」

CURR_X_COUNT

0x30

9-26 ページの「DMAx_CURR_X_COUNT/MDMA_yy_CURR_X_COUNTレジスタ」

CURR_Y_COUNT

0x38

9-28 ページの「DMAx_CURR_Y_COUNT/MDMA_yy_CURR_Y_COUNTレジスタ」

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

B-15

外部バス・インターフェース・ユニット・レジスタ

外部バス・インターフェース・ユニット・レジスタ
外部バス・インターフェース・ユニット・レジスタ（0xFFC0 0A00 ～0xFFC0 0AFF）
表 B-15. 外部バス・インターフェース・ユニット・レジスタ
メモリマップド・
アドレス

レジスタ名

参照先

0xFFC0 0A00

EBIU_AMGCTL

17-10 ページの「EBIU_AMGCTL レジスタ」

0xFFC0 0A04

EBIU_AMBCTL0

17-12 ページの「EBIU_AMBCTL0 レジスタとEBIU_AMBCTL1 レジスタ」

0xFFC0 0A08

EBIU_AMBCTL1

17-12 ページの「EBIU_AMBCTL0 レジスタとEBIU_AMBCTL1 レジスタ」

0xFFC0 0A10

EBIU_SDGCTL

17-34 ページの「EBIU_SDGCTL レジスタ」

0xFFC0 0A14

EBIU_SDBCTL

17-46 ページの「EBIU_SDBCTL レジスタ」

0xFFC0 0A18

EBIU_SDRRC

17-50 ページの「EBIU_SDRRC レジスタ」

0xFFC0 0A1C

EBIU_SDSTAT

17-49 ページの「EBIU_SDSTAT レジスタ」

B-16

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

付録C

テスト機能

この章では、プロセッサのテスト機能について説明します。

JTAG 規格プロセッサは、JTAG（Joint Test Action Group）規格とも呼ばれるIEEE
1149.1 規格と完全な互換性があります。
JTAG 規格では、組み立てられたプリント回路ボードのテスト、メンテナ
ンス、サポートを支援するよう構築できる回路を定義します。この回路に内蔵される標準インターフェースを通じて、命令とテスト・データの通信が可能です。バウンダリスキャン・レジスタなど、一連のテスト機能が定義されており、部品は、プリント回路ボードのテストを支援するように設計された最小の命令セットに対応できます。
この規格で定義するテスト・ロジックを集積回路に組み込むと、以下に対して標準化された手法が提供されます。
• プリント回路ボード上で組み立てられた集積回路間の相互接続のテスト• 集積回路自身のテスト• 通常の部品動作時に行う、回路動作の観察または変更
テスト・ロジックは、バウンダリスキャン・レジスタやその他のビルディ
ング・ブロックから構成されます。テスト・ロジックは、テスト・アクセ
ス・ポート（TAP）を通じてアクセスされます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

C-1

バウンダリスキャン・アーキテクチャ

JTAG 規 格の 詳 細に つ いて は、『IEEE Standard Test Access Port andBoundary-Scan Architecture』（ISBN 1-55937-350-4）を参照してください。

バウンダリスキャン・アーキテクチャ
バウンダリスキャン・テスト・ロジックは、以下の要素から構成されます。
• 5 本のピンで構成されるTAP（表 C-1 を参照)
• テスト・レジスタを通じてすべてのイベントの順序付けを制御する
TAP コントローラ• 5 ビットの命令コードを解釈して、希望のテスト動作を実行するテスト・モードを選択する命令レジスタ（IR）• JTAG 規格によって定義される複数のデータ・レジスタ
表 C-1.

C-2

テスト・アクセス・ポート・ピン

ピン名

入力／出力

説明

TDI

入力

テスト・データ入力

TMS入力

テスト・モード選択

TCK

入力

テスト・クロック

TRST

入力

テスト・リセット

TDO

出力

テスト・データ出力

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

テスト機能TAP コントローラは、16ステートの同期式有限ステート・マシンであり、TCK ピンと TMS ピンによって制御されます。図中の各ステートへの遷移は、
TCK の立上がりエッジで発生し、TMS ピンのステート（ここでは、ロジック
1 またはロジック0）によって定義されます。動作の詳細については、JTAG
規格を参照してください。
図 C-1には、TAPコントローラのステート図を示します。

Test-Logic_Reset
1

0
Run-Test/Idle

1

1

Select-DR-Scan

0

0

0

1

1
Capture-DR

Capture-IR

0

0

0

1

1
1

1

Exit1-IR

Exit1-DR
0

0

0

Pause-DR

0

Pause-IR

1

1

0

0

Exit2-DR

Exit2-IR1

1

Update-DR
10

Shift-IR

Shift-DR

図 C-1.

1

Select-IR-Scan

Update-IR010TAP コントローラのステート図

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

C-3

バウンダリスキャン・アーキテクチャ

注：TAP• 5 TCK サイクルの後で TMS がハイレベルに保持されている場合、コントローラは Test-Logic-Reset ステートに入ります。
• TRST が非同期にアサートされている場合、TAP コントローラは
Test-Logic-Reset ステートに入ります。
• 外部システム・リセットは、TAP コントローラのステートに影響を与えることはなく、TAP コントローラのステートも、外部シス
テム・リセットに影響を与えることはありません。

■ 命令レジスタ
命令レジスタは 5ビット幅であり、32 個までのバウンダリスキャン命令に対応します。
命令レジスタは、パブリック命令とプライベート命令の両方を保持しま
す。JTAG 規格では、いくつかのパブリック命令が必須であり、その他のパブリック命令はオプションです。プライベート命令は、メーカー使用のために予約されています。
表 C-2 のバイナリ・デコード列には、パブリック命令のデコードを一覧にします。レジスタ列には、シリアル・スキャン・パスを一覧にします。
表 C-2.

パブリック JTAG スキャン命令のデコード

命令名

バイナリ・デコード
01234

レジスタ

EXTEST00000

バウンダリスキャン

SAMPLE/PRELOAD

10000

バウンダリスキャン

BYPASS

11111

バイパス

図 C-2には、表 C-2 で示されるパスに対する命令ビットのスキャン順序を
示します。

C-4

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

テスト機能バウンダリスキャン・レジスタ
N-2

2

N-1

1

N

0
バイパス・レジスタ

TDI

1

TDO

31

0
30

1

0

4

1

3
2
JTAG 命令レジスタ

図 C-2.

シリアル・スキャン・パス

■ パブリック命令
次の節では、パブリックな JTAG スキャン命令について説明します。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

C-5

バウンダリスキャン・アーキテクチャ

X EXTEST―バイナリ・コード 00000
EXTEST 命令では、TDI ピンと TDO ピンとの間を接続するバウンダリスキャ

ン・レジスタを選択します。この命令によって、デバイスの外部で内蔵回路のテストができます。
EXTEST 命令によって、内部データをバウンダリ出力に駆動したり、外部

データをバウンダリ入力でキャプチャしたりできます。

[

バウンダリ出力がオーバードライブされたり、バウンダリ入力で信号が受信されたりした場合に、内部ロジックを保護するには、プロセッサの出力ピンでは他にデータを駆動するものがないことを確認してください。

X SAMPLE/PRELOAD―バイナリ・コード 10000
SAMPLE/PRELOAD 命令では2つの機能を実行し、TDI と TDO との間を接続する

バウンダリスキャン・レジスタを選択します。この命令による内部ロジッ
クへの影響はありません。
命令の SAMPLE 部分によって、バウンダリスキャン・セルで入力と出力のスナップショットをキャプチャできます。データは、TCK の立上がりエッジでサンプリングされます。
命令の PRELOAD 部分によって、データはデバイス・ピンにロードでき、
EXTEST 命令によってボード上に駆動できます。データは TCK の立下がり
エッジでピンにプリロードされます。
X BYPASS―バイナリ・コード 11111
BYPASS 命令では、TDI と TDO に接続されるバイパス・レジスタを選択します。この命令による内部ロジックへの影響はありません。TDI と TDO との間ではデータ反転が行われてはいけません。

C-6

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

テスト機能■ バウンダリスキャン・レジスタ
バウンダリスキャン・レジスタは、EXTEST 命令と SAMPLE/PRELOAD 命令によって選択されます。これらの命令によって、プロセッサのピンを制御し、ボードレベル・テスト用にサンプリングできます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

C-7バウンダリスキャン・アーキテクチャ

C-8

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

付録D

数値フォーマット

ADSP-BF53x Blackfin ファ ミ リー の プロ セ ッサ は、ハー ド ウェ ア で
8/16/32/40 ビットの固定小数点データに対応します。演算ユニット内の特殊機構によって、ソフトウェアで他のフォーマットにも対応できます。この付録では、これらのデータ・フォーマットのさまざまな側面を説明します。また、ソフトウェアでブロック浮動小数点フォーマットを実装する方法についても説明します。

符号なしと符号付き：2 の補数フォーマット
符号なし整数値は正であり、ビットに符号情報は含まれません。したがって、符号なし整数の値は通常の 2進法で解釈されます。多倍長数の最下位
ワードは、符号なし数値として扱われます。
ADSP-BF53x Blackfin ファミリーによって対応される符号付き数値は、2の補数フォーマットです。符号付き絶対値、1の補数、BCD、および n増しフォーマットは対応されません。

整数と小数
ADSP-BF53x Blackfin ファミリーは、小数と整数の両方のデータ・フォー
マットに対応します。整数では、小数点は LSB の右側にあり、すべての絶対値ビットは 1以上の重みを持つと想定されます。このフォーマットを図D-1 に示します。なお、2 の補数フォーマットでは、符号ビットは負の重みを持っています。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

D-1

整数と小数

符号付き整数
ビット

15

14

13

重み

- (215)

214

213

...

2

1

0

22

21

20

符号ビット
小数点
符号なし整数
ビット

15

14

13

重み

215

214

213

...

2

1

0

22

21

20

符号ビット
小数点

図 D-1.

整数フォーマット

小数フォーマットでは、仮想小数点は数値の中に置かれ、絶対値ビットの一部または全部は 1 より小さな重みを持ちます。図 D-2 に示すフォーマッ
トでは、仮想小数点は 3つのLSBの左側に置かれ、ビットはこの図に示された重みを持ちます。
Blackfin プロセッサ・ファミリーのネイティブ・フォーマットは、符号付
き小数 1.M フォーマットと符号なし小数0.N フォーマットです。ここで、N はデータ・ワード内のビット数であり、M＝ N －1です。
フォーマットの記述に使用される表記は、ピリオド（.）で区切られた 2つの数値から構成されます。最初の数値は小数点の左側にあるビット数であり、2 番目の数値は小数点の右側にあるビット数です。たとえば、16.0
フォーマットは整数フォーマットであり、すべてのビットは小数点の左側にあります。図 D-2のフォーマットは 13.3 です。

D-2

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

数値フォーマット

符号付き小数（13.3）
ビット

15

14

13

重み

- (212)

211

210

...

4

3

2

1

0

21

20

2-1

2-2

2-3

符号ビット
小数点

符号なし小数（13.3）
ビット

15

14

13

重み

212

211

210

...

4

3

2

1

0

21

20

2-1

2-2

2-3

符号ビット
小数点

図 D-2.

小数フォーマットの例

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

D-3整数と小数

表 D-1は、16ビットによる小数フォーマットで表現できる、符号付き数値の範囲を示します。
表 D-1.

D-4

小数フォーマットとその範囲

フォー
マット

10 進での正の最大値
小数
整数
ビットの ビットの （0x7FFF）数
数

10 進での負の最大値（0x8000）

10 進での 1 LSB の値（0x0001）

1.15

1

15

0.999969482421875–1.0

0.000030517578125

2.14

2

14

1.999938964843750–2.0

0.000061035156250

3.13

3

13

3.999877929687500–4.0

0.000122070312500

4.12

4

12

7.999755859375000–8.0

0.000244140625000

5.11

5

11

15.999511718750000–16.0

0.000488281250000

6.10

6

10

31.999023437500000–32.0

0.000976562500000

7.9

7

9

63.998046875000000–64.0

0.001953125000000

8.8

8

8

127.996093750000000–128.00.003906250000000

9.7

9

7

255.992187500000000–256.00.007812500000000

10.6

10

6

511.984375000000000–512.00.015625000000000

11.5

11

5

1023.968750000000000–1024.0

0.031250000000000

12.4

12

4

2047.937500000000000–2048.0

0.062500000000000

13.3

13

3

4095.875000000000000–4096.0

0.125000000000000

14.2

14

2

8191.750000000000000–8192.0

0.250000000000000

15.1

15

1

16383.500000000000000–16384.0

0.500000000000000

16.0

16

0

32767.000000000000000–32768.0

1.000000000000000

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

数値フォーマット

2 進乗算
加算と減算では、両方のオペランドを同じフォーマット（符号付きまたは符号なし、小数点は同じ位置）にする必要があり、結果のフォーマットは入力フォーマットと同じです。入力は符号付きであっても符号なしであっても、加算と減算は同じように実行されます。
しかし、乗算では、入力はさまざまなフォーマットを持つことができ、結果は入力のフォーマットに依存します。ADSP-BF53x Blackfin ファミリーのアセンブリ言語では、入力として、両方とも符号付き、両方とも符
号なし、またはそのいずれか（混合モード）を指定できます。結果における小数点の位置は、各入力の小数点の位置から得られます。これを図 D-3に示します。2つの 16 ビット数値の積は 32 ビット数値です。入力のフォー
マットが M.N と P.Q である場合には、積のフォーマットは（M＋ P）.（N＋ Q）となります。たとえば、2 つの 13.3 数値の積は 26.6 数値です。2 つの 1.15数値の積は2.30数値です。

一般規則

4 ビットの例

16 ビットの例

M.N

1.111 (1.3 フォーマット )

5.3

x P.Q

x 11.11 (2.2 フォーマット )
1111
1111
1111
1111

x 5.3

(M + P).(N + Q)

111.00001 (3.5 フォーマット = (1 + 2).(2 + 3) )図 D-3.

10.6
1.15
x 1.152.30

乗算結果のフォーマットADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

D-5

ブロック浮動小数点フォーマット

■ 小数モードと整数モード
2 つの 2の補数値の積には、2つの符号ビットがあります。これらのビットの 1 つは冗長であるため、結果全体を1 ビット左にシフトできます。さら
に、入力の 1つが1.15 数値であった場合には、左シフトによって、結果はもう一方の入力と同じフォーマットを持つことになります（16ビットの追加精度）。たとえば、1.15数値と 5.11数値を乗算すると、6.26 数値が得られます。これを 1ビット左にシフトすると、結果は 5.27 数値、つまり5.11
数値に 16個の LSBを加えたものになります。
ADSP-BF53x Blackfin ファミリーで提供される手段（符号付き小数モード）によって、乗算器の結果は、必ず 1ビット左にシフトされてから、結果レジスタに書き込まれます。このため、両方のオペランドが符号付きである場合の余分な符号ビットは削除され、正しくフォーマットされた結果が得られます。
両方のオペランドが 1.15 フォーマットであるとき、結果は2.30 です（30個の小数ビット）。左シフトによって乗算器の結果は 1.31になり、これは
1.15 に丸めることができます。したがって、符号付き小数データ・フォー
マットを使用する場合には、1.15 フォーマットを使用すると最も便利です。
データ・フォーマットの詳細については、2-12ページの表 2-2に示される
データ・フォーマットを参照してください。

ブロック浮動小数点フォーマット
ブロック浮動小数点フォーマットを利用すると、固定小数点プロセッサは浮動小数点演算に要求されるオーバーヘッドなしで、浮動小数点フォー
マットという広いダイナミック・レンジの一部を得ることができます。しかし、ブロック浮動小数点フォーマットを維持するには、追加のプログラ
ミングが必要となります。

D-6

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

数値フォーマット

浮動小数点数に含まれる指数は、実際の値における小数点の位置を示します。ブロック浮動小数点フォーマットでは、一連（ブロック）のデータ値が共通の指数を共有します。1ブロックの固定小数点値をブロック浮動小
数点フォーマットに変換するには、各値を同じ量だけ左にシフトし、そのシフト値をブロック指数として格納します。
一般に、ブロック浮動小数点フォーマットを使用すれば、無視できる MSB
をシフト・アウトして、各値で利用可能な精度を増やすことができます。
また、データ値がオーバーフローする可能性をなくすこともできます。図D-4 を参照してください。この例では、3 つのデータ・サンプルのそれぞれには、2つ以上の無視できる冗長な符号ビットがあります。各データ値
はオーバーフローする前に、この 2 ビット（2 桁）だけ成長することができます。これらのビットはガード・ビットと呼ばれます。
2 つのガード・ビット

0x0FFF = 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
0x1FFF = 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1
0x07FF = 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1

符号ビット

2 つのガード・ビットへのビット成長を検出するには、SB ＝－ 2 に設定します

図 D-4.

ガード・ビットを持つデータあるプロセスで、どの値も 2つのガード・ビットを超えて成長しないことがわかっている場合には、そのプロセスはデータの損失なしに実行できます。しかし、その後で、次のプロセスの前にブロックを調整してガード・ビットを置き換える必要があります。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

D-7

ブロック浮動小数点フォーマット

図 D-5 は、処理後で調整前のデータを示します。ブロック浮動小数点の調整は、次のように行われます。
• SIGN ビット S 命令の出力は SB であり、SB は EXPADJ 命令で引数として使用されると想定します（これらの命令の使い方と構文については『ADSP-BF53x Blackfin Processor Instruction Set Reference 』を参照してください）。最初に、SB の値は＋2であり、2つのガード・ビットに対応しています。処理中に、結果として得られる各データ
値は、EXPADJ 命令によって検査されます。この命令は、冗長な符号ビットの数をカウントし、冗長な符号ビットの数が 2 より少ない場
合には SB を調整します。この例では、処理後には SB ＝＋1であり、2 つのガード・ビットを維持するためにデータのブロックを1 ビッ
ト右にシフトする必要があることを示しています。
• 処理後に SB が 0であった場合には、ブロックを 2ビット右にシフトする必要があります。いずれの場合も、シフトを反映するためにブロック指数が更新されます。

D-8

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

数値フォーマット

1. ビット成長のチェック
1 つのガード・ビット

EXPADJ命令では、指数部をチェッ
クして、SB を調整します

0x1FFF = 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1

指数＝＋ 2、SB ＝＋ 2

0x3FFF = 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1

指数＝＋ 1、SB ＝＋ 1

0x07FF = 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1

指数＝＋ 4、SB ＝＋ 1

符号ビット

2. ガード・ビット維持のため右へシフト
2 つのガード・ビット

0x0FFF = 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
0x1FFF = 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1
0x03FF = 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1

符号ビット

図 D-5.

ブロック浮動小数点の調整

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

D-9

ブロック浮動小数点フォーマット

D-10

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

付録G

用語集

ALU
算術／論理演算ユニットを参照してください。
AMC（非同期メモリ・コントローラ）
SRAM、ROM、フラッシュなど、複数のバンクの非同期メモリをサポートする設定可能なメモリ・コントローラであり、各バンクはさまざまなタ
イミング・パラメータで独立してプログラムできます。
Bank Activate コマンド
Bank Activateコマンドによって、SDRAMは（行アドレスによって指定される）行内に（バンク・アドレスによって指定される）内部バンクを開きます。SDRAMに対してBank Activateコマンドが発行されると、SDRAM
は専用のバンク内に新しい行アドレスを開きます。開いている内部バンクと行内のメモリは、開いているページと呼ばれます。Bank Activate コマ
ンドは、読出しコマンドや書込みコマンドの前に適用する必要があります。
Burst Stop コマンド
Burst Stop コマンドは、バースト読出しまたは書込みの動作を終了させる
方法の 1つです。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

G-1

CAM（コンテント・アドレッサブル・メモリ）
アソシエイティブ・メモリとも呼ばれます。記憶の各ビットとの比較ロジックを内蔵するメモリ・デバイスです。データ値は、メモリ内のすべてのワードにブロードキャストされます。そのデータは格納された値と比較され、一致する値にはフラグが立てられます。
CAS（列アドレス・ストローブ）
列アドレス・ラインが有効であることを示すために、SDC からDRAM デ
バイスに送信される信号です。
CAS 遅延（tAA、tCAC、CL）
列アドレス・ストローブ（CAS）遅延は、SDRAM が読出しコマンドを検出してから、データをその出力ピンに提供するまでの、クロック・サイク
ル単位での遅延です。
CBR（CAS Before RAS）メモリ・リフレッシュ
DRAM デバイスには、リフレッシュ行アドレス用のビルトイン・カウン
タがあります。RAS をアクティブにする前に、CAS をアクティブにする
ことによって、このカウンタは、アドレス入力の代わりに行アドレスを供給するよう選択されます。
CEC
コア・イベント・コントローラを参照してください。
CPLB
キャッシュ可能性保護索引バッファを参照してください。
DAB
DMA アクセス・バスを参照してください。

G-2

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

用語集

DAG
データ・アドレス・ジェネレータを参照してください。
DCB
DMA コア・バスを参照してください。
DEB
DMA 外部バスを参照してください。
DFT（Design For Testability＝テスト性を配慮した設計）
デジタル・システムの設計者がシステムのテスト性を保証するために役立
つ、一連の技法です。
Direct Memory Access（DMA）
システム・デバイスとメモリとの間でデータを転送する方法の1つであり、データはプロセッサを介さずに、DMAポートを通じて転送されます。
DMA
Direct Memory Access を参照してください。
DMA アクセス・バス（DAB）
DMA チャンネルがペリフェラルによってアクセスされる手段を提供する
バスです。
DMA 外部バス（DEB）
DMA チャンネルがオフチップ・メモリにアクセスするための手段を提供するバスです。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

G-3

DMA コア・バス（DCB）
DMA チャンネルがオンチップ・メモリにアクセスするための手段を提供するバスです。
DMA チェーン
複数の DMA シーケンスのリンクまたはチェーンです。チェーンされた
DMA では、現在の DMA が完了して次の DMA シーケンスが自動的に初期化されるときに、I/Oプロセッサは次の DMA ディスクリプタをDMA パラ
メータ・レジスタにロードします。
DMA ディスクリプタ・レジスタ
Direct Memory Access（DMA）プロセスのための初期化情報を保持するレジスタです。
DPMC（ダイナミック・パワー・マネジメント・コントローラ）
プロセッサの制御ブロックの 1 つであり、これによってユーザは、プロセッサの性能特性と消費電力を動的に制御できます。
DQM データI/O マスク機能
SDQM[1:0] ピンは、SDRAM への 8 ビット書込みでバイト・マスク機能を提供します。
DRAM（ダイナミックRAM）
半導体メモリの一種であり、データは、コンデンサとトランジスタで構成されるセル・アレイに電荷として格納されます。これらのセルは、行と列で構成される格子内のチップ上に配置されます。コンデンサは徐々に放電
して、セルはその情報を失っていくため、セル・アレイを定期的にリフレッシュする必要があります。

G-4

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

用語集

DSP
デジタル・シグナル・プロセッサを参照してください。
EAB
外部アクセス・バスを参照してください。
EBC
外部バス・コントローラを参照してください。
EBIU
外部バス・インターフェース・ユニットを参照してください。
EPB
外部ポート・バスを参照してください。
EPROM（消去可能プログラマブル読出し専用メモリ）
半導体メモリの一種であり、データは外部電源なしでほぼ無期限に電荷を保持する、分離された（「フローティング」）トランジスタ・ゲートに電荷として格納されます。EPROMは、フローティング・ゲートに電荷を「注入」することによってプログラムされます。これは、比較的高電圧（通常は 12 ～25V）を必要とするプロセスです。パッケージ内の石英ガラスの窓を通じてチップの表面に紫外線が照射されると、フローティング・ゲー
トが放電されるため、チップの再プログラムが可能になります。
EVT（イベント・ベクトル・テーブル）
メモリに格納されているテーブルであり、16 個の32 ビット・エントリを含んでいます。各エントリには、割込みサービス・ルーチン（ISR）用のベクトル・アドレスが含まれています。イベントが発生すると、対応する
EVT エントリ内のアドレス位置から命令のフェッチが開始されます。ISRを参照してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

G-5

FFT（高速フーリエ変換）
一連の離散的データ値のフーリエ変換を計算するアルゴリズムです。FFT
では、データ・ポイントの有限な集合（たとえば、リアルワールドの信号の定期的なサンプリング）を、その成分周波数によって表現します。あるいは逆に、FFT では、周波数データから信号を復元します。FFTを使用す
れば、2 つの多項式を乗算することもできます。
FIFO（先入れ先出し）
ハードウェア・バッファまたはデータ構造の 1つであり、アイテムは格納された順に取り出されます。
HLL（高水準言語）
アセンブリ言語を超えるレベルの抽象化を提供するプログラミング言語であり、通常は英語に似たステートメントを使用して、各コマンドやス
テートメントは複数のマシン命令に対応します。
IDLE
この命令を実行すると、プロセッサは動作を停止して、割込みが発生するまで現在の状態を保持します。その後、プロセッサは割込みを処理してから、通常の実行を続行します。
IrDA（Infrared Data Association ＝赤外線通信協会）
赤外線スペクトルを使用するデバイスの品質と相互運用性を保証するための規格を制定した非営利の業界団体です。
ISR（割込みサービス・ルーチン）
特定の割込みが発生したときに実行されるソフトウェアです。下位メモリに格納されたテーブルには、ポインタ（ベクトルとも呼ばれます）が含まれています。このポインタによって、プロセッサは対応する ISRを処理します。EVT を参照してください。

G-6

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

用語集

JTAG（Joint Test Action Group）
電子デバイスをテストするためのテスト・アクセス・ポート用の IEEE
1149.1 規格を定義する、IEEE 標準化作業部会です。
JTAG ポートチャンネルやポートの 1 つであり、システム・テスト用の IEEE 規格である 1149.1 JTAG規格に対応します。この規格は、システム内の各コンポー
ネントの I/O ステータスを連続的にスキャンする方法を定義します。
LIFO（後入れ先出し）
データ構造の 1つであり、最後に格納されたアイテムが次に取り出されるアイテムとなります。
LRU
最長時間未使用アルゴリズムを参照してください。
LSB
最下位ビットを参照してください。
MAC（積和）2 つの数値を乗算してから、3 番目の数値を加算して結果を得る数値演算です。積和演算器を参照してください。
MMR（メモリマップド・レジスタ）
プロセッサによってあたかもレジスタであるかのように使用される、メイ
ン・メモリ内の位置です。
MMU
メモリ・マネジメント・ユニットを参照してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

G-7

MSB（最上位ビット）
2 進数の通常の表現において最初または左端のビットであり、最大の重み（2（n－ 1））を持つ2進数のビットです。
NMI（マスク不能割込み）
別の割込みによって無効にできない、優先順位の高い割込みです。
NRZ（非ゼロ復帰）
2 進符号化方式の 1つであり、1は信号の変化によって表され、0は変化がないことによって表されます。符号化されたビット間では、基準（ゼロ）電圧に戻りません。この方法では、クロック信号が不要になります。
NRZI（非ゼロ復帰逆転）
2 進符号化方式の 1つであり、0は信号の変化によって表され、1は変化がないことによって表されます。符号化されたビット間では、基準（ゼロ）電圧に戻りません。この方法では、クロック信号が不要になります。
PAB
ペリフェラル・アクセス・バスを参照してください。
PC（プログラム・カウンタ）
次に実行される命令のアドレスを含むレジスタです。
PF（プログラマブル・フラグ）
汎用の I/Oピンです。各 PFピンは、入力ピンまたは出力ピンとして個々に設定でき、さらには、割込みを生成するようにも設定できます。
PLL
フェーズ・ロック・ループを参照してください。

G-8

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

用語集Prechargeコマンド
Precharge コマンドでは、アクティブ・ページ内の特定の内部バンク、またはページ内のすべての内部バンクを閉じます。
PWM（パルス幅変調）
これは Pulse Duration Modulation（PDM）とも呼ばれ、パルスの持続時
間が変調電圧によって変更されるパルス変調方式です。
RAS（行アドレス・ストローブ）
行アドレス・ラインが有効であることを示すために、SDC からDRAM デ
バイスに送信される信号です。
ROM（読出し専用メモリ）
固定した内容で製造されたデータ記憶デバイスです。この用語は一般に、不揮発性半導体メモリを表すために使用されます。
RTC
リアルタイム・クロックを参照してください。
RZ（ゼロ復帰変調）
2 進符号化方式の1つであり、どのビットでも 2 つの信号パルスが使用されます。0 は低電圧レベルから高電圧レベルへの変化によって表され、1 は高電圧レベルから低電圧レベルへの変化によって表されます。符号化されたビット間では、基準（ゼロ）電圧への復帰が行われます。
RZI（ゼロ復帰逆転変調）
2 進符号化方式の1つであり、どのビットでも 2 つの信号パルスが使用されます。1 は低電圧レベルから高電圧レベルへの変化によって表され、0 は
高電圧レベルから低電圧レベルへの変化によって表されます。符号化されたビット間では、基準（ゼロ）電圧への復帰が行われます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

G-9

SDC（SDRAM コントローラ）
SDRAM で構成される同期メモリのバンクをサポートする、設定可能なメ
モリ・コントローラです。
SDRAM（Synchronous Dynamic Random Access Memory）
DRAM の一形態であり、他の制御信号と共にクロック信号を含んでいます。このクロック信号によって、SDRAM デバイスは、一連の連続ビットをクロック同期出力する「バースト」アクセス・モードに対応できます。
SDRAM バンク
外部メモリの領域であり、16M バイト、32 M バイト、64 Mバイト、または 128 M バイトに設定することができ、SMS ピンによって選択されます。
Self-Refresh
SDRAM が Self-Refresh モードにある場合、SDRAMの内部タイマは外部の制御入力なしで、Auto-Refresh サイクルを定期的に開始します。SDC
は SDRAMを低消費電力モードにするために、Self-Refresh コマンドを含む一連のコマンドを発行する必要があり、Self-Refreshモードを終了する
ために、別の一連のコマンドを発行する必要があります。Self-Refreshモードへの切り替えは SDRAM メモリ・グローバル・コントロール・レジスタ（EBIU_SDGCTL）でプログラムされ、SDRAM アドレス空間へのアクセスに
よって、SDC は SDRAM を Self-Refresh モードから終了させます。17-40
ページの「Self-Refreshモードへの出入り（SRFS）」を参照してください。
Serial Peripheral Interface（SPI）
集積回路の接続に使用する同期シリアル・プロトコルです。

G-10

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

用語集

SIC（システム割込みコントローラ）
プロセッサの 2 レベル・イベント制御メカニズムの一部です。SIC は、コア・イベント・コントローラ（CEC）と連携して、すべてのシステム割込
みの優先順位付けと制御を行います。SIC は、コアの優先順位付けされた
汎用割込み入力とペリフェラル割込みソースとの間のマッピングを提供します。
SIMD（Single Instruction, Multiple Data）
並列コンピュータ・アーキテクチャの 1 つであり、1 つの命令で、複数のデータ・オペランドが同時に処理されます。
SP（スタック・ポインタ）
スタックの先頭を指すレジスタです。
SPI
シリアル・ペリフェラル・インターフェースを参照してください。
SRAM
スタティック RAMを参照してください。
TAP（テスト・アクセス・ポート）
JTAG ポートを参照してください。
TDM
時分割多重を参照してください。
UART
非同期シリアル・インターフェース LSIを参照してください。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

G-11

W1C
Write-1-to-Clear を参照してください。
W1S
Write-1-to-Set を参照してください。
Write-1-to-Clear（W1C）ビット
1 を書き込むことによってクリア（＝ 0）できる制御ビットまたはステー
タス・ビットです。
Write-1-to-Set（W1S）ビット
1 を書き込むことによってセットされる制御ビットまたはステータス・
ビットです。0 を書き込んでもクリアできません。
アイソクロナス
データを一定の時間制約のもとで配信する必要のあるプロセスです。
圧伸（圧縮／伸張）。送信すべきビット数を最小限に抑えるため、データを対数的にエンコードおよびデコードするプロセスです。
後更新アドレッシング
データ転送時に DAG がアドレスを提供し、命令が実行された後で自動イ
ンクリメントするプロセスです。
インデックス
アレイ要素（たとえば、ライン・インデックス）の選択に使用されるアドレス部分です。

G-12

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

用語集

インデックス・レジスタ
アドレスを保持し、メモリへのポインタとして機能する DAG レジスタです。
ウェイ

N ウェイ・キャッシュ内のライン記憶要素のアレイです。
エッジ・センシティブ割込み
CLKIN の立上がりエッジでサンプリングしたとき、入力信号が 1 つのサイ

クルでハイレベル（非アクティブ）、次のサイクルでローレベル（アクティブ）かどうかをプロセッサが検出する信号または割込み。
エンディアン・フォーマット
マルチバイト番号におけるバイトの順序。
外部アクセス・バス（EAB）
外部メモリにアクセスするために、コア・メモリ・マネジメント・ユニッ
トによって管理されるバスです。
外部バス・インターフェース・ユニット（EBIU）
外部メモリへのグルーレスなインターフェースを提供するコンポーネン
トです。EBIU は、コアやDMA チャンネルからの外部メモリに対する要求を処理します。
外部バス・コントローラ（EBC）
外部アクセス・バス（EAB）とDMA外部バス（DEB）との間を調停する
コンポーネントであり、1 サイクル当たり多くても 1 つのリクエスタが許可されます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

G-13外部ポートチャンネルまたはポートの 1つであり、プロセッサの内部アドレス・バスとデータ・バスをチップ外に拡張して、オフチップ・メモリとペリフェラ
ルにプロセッサのインターフェースを提供します。
外部ポート・バス（EPB）
EBIU の出力を外部デバイスに接続するバスです。
間接分岐
実行時に評価される、データ・アドレス・ジェネレータからの動的アドレスを使用する Jump命令やCall/Return命令です。
キャッシュ可能性保護索引バッファ（CPLB）
コア・メモリ・マップのアクセス特性を記述する記憶領域です。
キャッシュ・タグ
キャッシュされたラインが表す、メモリ内の特定アドレス・ソースを識別するために、キャッシュされたデータ・ラインと一緒に格納される上位ア
ドレス・ビットです。
キャッシュ・ヒット
キャッシュ内の有効な存在するエントリによって満足されたメモリ・アク
セスです。
キャッシュ・ブロックキャッシュ・ミスの結果として、キャッシュと次のレベルのメモリとの間で転送されるメモリの最小単位です。

G-14

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

用語集キャッシュ・ミスキャッシュ内のどの有効なエントリにも一致しないメモリ・アクセスです。
キャッシュ・ライン
キャッシュ・ブロックと同じです。このドキュメントでは、キャッシュ・
ブロックの代わりにキャッシュ・ラインが使用されます。
グルーレス
外部ハードウェアが不要です。
コア
コアは、CPU、L1 メモリ、イベント・コントローラ、コア・タイマ、性能モニタリング・レジスタという機能ブロックから構成されます。
コア・イベント・コントローラ（CEC）
CEC は、システム割込みコントローラ（SIC）と連携して、すべてのシス
テム割込みの優先順位付けと制御を行います。CECでは、SICから転送された割込みと汎用割込みを処理します。
最下位ビット（LSB）
2 進数の通常の表現において最後または右端のビットであり、1 の数を指定する 2進数のビットです。
最長時間未使用アルゴリズム
キャッシュで使用される置換アルゴリズムであり、最も長期間にわたって使用されていないラインを最初に置き換えます。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

G-15算術／論理演算ユニット（ALU）
算術機能、比較機能、および論理機能を実行するプロセッサ・コンポーネ
ントです。
システム
システムには、ペリフェラル・セット（タイマ、リアルタイム・クロッ
ク、プログラマブル・フラグ、UART、SPORT、PPI、SPI）、外部メモ
リ・コントローラ（EBIU）、メモリDMA コントローラ、ならびにこれらのペリフェラル間のインターフェース、オプションの外部（オフチップ）
リソースが含まれます。
システム・クロック（SCLK）
PLL 内のプログラマブルな分周器比率によって決定される周波数でク
ロック・パルスを配信するコンポーネントです。
システム割込みコントローラ（SIC）
ペリフェラル割込みソースから、コア・イベント・コントローラ（CEC）の優先順位付けされた汎用割込み入力にイベントをマッピングおよびルーティングするコンポーネントです。
シフタ
論理シフトと算術シフトを実行する演算ユニットです。
時分割多重（TDM）
別個の信号を 1つのチャンネルで送信するための方式です。送信時間はセグメントに分解され、各セグメントは 1つの要素を伝達します。各ワードは連続する次のチャンネルに属するため、たとえば、24ワードのデータ・ブロックには、24つのチャンネルごとに1 ワードが格納されています。

G-16

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

用語集

ジャンプ
プログラムの流れをプログラム・メモリの別の部分に永続的に移すことです。
循環アドレッシング
DAG が一連のレジスタを「ラップ」したり1ステップずつ反復実行するプ
ロセスです。
条件付き分岐定義された条件に基づいて実行される、Jump 命令や Call/Return 命令です。
乗算器
演算ユニットの 1つであり、固定小数点の乗算を行い、固定小数点の乗算／加算と乗算／減算の演算を実行します。
シリアル・ポート（SPORT）
プロセッサ上の高速な同期入出力デバイスです。プロセッサで使用する 2
つの同期シリアル・ポートは、多種多様なデジタルおよびミックスド・シ
グナル・ペリフェラル・デバイスに対して安価なインターフェースを提供
します。
スタック
後入れ先出し（LIFO）順にアクセスされるアイテムを格納するためのデータ構造です。データ・アイテムがスタックに追加されるとき、アイテムは「プッシュ」されると言います。データ・アイテムがスタックから取り出されるとき、アイテムは「ポップ」されると言います。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

G-17

スタティック RAM（SRAM）
定期的なリフレッシュ操作を必要としない、非常に高速な読出し／書込み
メモリです。
精度
数値の記憶フォーマットにおいて、2進小数点の後にあるビット数です。
セット

N ウェイ・キャッシュのウェイにおける N ライン格納位置のグループであり、アドレスのインデックス・フィールドによって選択されます。
セット・アソシエイティブ
ライン配置を複数のセット（またはウェイ）に限定するキャッシュ・アー
キテクチャです。
ダイレクト・マップ方式
キャッシュ内での各ラインの出現場所が固定されているキャッシュ・アー
キテクチャです。1ウェイ・アソシエイティブとも呼ばれます。
多機能計算
複数の計算命令の並列実行です。これらの命令は、1 つのサイクルで完了
し、演算ユニットの並列演算とメモリ・アクセスを組み合わせます。複数の演算は、あたかも対応する単機能計算に含まれているかのように実行されます。
ダーティ、変更済み
タグとともに格納される状態ビットであり、データ・キャッシュ・ライン
内のデータが、ソース・メモリからコピーされて以降に変更されたかどうか、したがって、そのソース・メモリ内で更新する必要があるかどうかを
示します。

G-18

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

用語集

遅延
メモリ・アクセスのための正しい場所を見つけ出し、そこへのアクセスを準備するためのオーバヘッド時間です。
直交
独立しているという特性です。直交命令セットを使用すれば、レジスタを参照する命令ではどのレジスタでも使用できます。
直接分岐プログラム・ラベルなどの実行時に変化しない絶対アドレスを使用した
り、PC相対アドレスを使用したりするJump命令やCall/Return命令です。
ディスクリプタ・ブロック、DMA
一連の DMA シーケンスを記述するために、DMAコントローラによって使用される一連のパラメータです。
ディスクリプタ・ロード、DMA
DMA コントローラがデータ・メモリから DMA ディスクリプタをダウンロードし、DMA パラメータ・レジスタを自動的に初期化するプロセスです。
デジタル・シグナル・プロセッサ（DSP）
デジタル形式に変換されたアナログ情報の高速操作用に指定された集積回路です。
データ・アドレス・ジェネレータ（DAG）
データがメモリとレジスタの間で転送されるときにメモリ・アドレスを提供する処理コンポーネントです。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

G-19データ・レジスタ（Dreg）
演算ユニット内に置かれているレジスタであり、乗算器演算、ALU 演算、またはシフタ演算のオペランドと結果を保持します。
データ・レジスタ・ファイル
一連のデータ・レジスタであり、データを演算ユニットとメモリとの間で転送し、オペランドのローカル・ストレージを提供します。
内部メモリ・バンク
1 つの SDRAMには、複数の内部メモリ・バンクがあります。各内部バン
クは、同時にアクティブ（オープン）とすることができます。
SDC では、インターフェースをとるすべてのSDRAMには 4 つの内部バンクがあるものと想定します。
入力クロックフェーズ・ロック・ループ（PLL）モジュールによる正確な内部クロック逓倍を可能にするため、タイミング信号の安定したストリームを生成して、周波数、デューティ・サイクル、および安定性を提供するデバイスです。
排他的、クリーン
データ・キャッシュ・ラインの状態であり、そのラインが有効であること、およびラインに含まれているデータがソース・メモリ内のデータと一致することを示します。クリーンなキャッシュ・ライン内のデータは、置き換えの前にソース・メモリに書き込む必要はありません。

G-20

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

用語集

バースト・タイプ
SDRAM が読出しコマンドを検出した後でバースト・データを配信するア
ドレス順、または書込みコマンドを検出した後でバースト・データを格納するアドレス順は、バースト・タイプによって決まります。バースト・タ
イプは、SDRAM のパワーアップ・シーケンス中にSDRAM でプログラム
されます。
バースト長
SDRAM デバイスが、1 つの書込みコマンドまたは読出しコマンドを検出した後、それぞれ格納または配信するワード数はバースト長によって決まります。バースト長を選択するには、SDRAM のパワーアップ・シーケン
ス中に SDRAM のモード・レジスタ内の特定ビットに書き込みます。
ハーバード・アーキテクチャ
プログラムとデータの保管に別個のバスを使用するプロセッサ・メモリ・
アーキテクチャです。2本のバスによって、プロセッサはデータ・ワードと命令ワードを同時にフェッチできます。
ビクティム
ダーティ・キャッシュ・ラインであり、これを置き換えてキャッシュ・ラ
イン割当て用の領域を解放するには、その前にメモリに書き込む必要があります。
ビット反転アドレッシング
データ・アドレス・ジェネレータ（DAG）が、格納されたアドレスを反転せずに、データ移動時にビット反転されたアドレスを提供するアドレッ
シング・モードです。
非同期シリアル・インターフェース LSI（UART）
非同期シリアル通信に必要な送受信回路を含むモジュールです。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

G-21

フェーズ・ロック・ループ（PLL）
低周波数の入力クロック信号から最高速度のマスター・クロックを生成す
るオンチップ周波数合成器です。
フォン・ノイマン・アーキテクチャ
ほとんどの非DSPマイクロプロセッサで使用されるアーキテクチャです。
このアーキテクチャでは、メモリ・アクセスのために 1 つのアドレスとデータ・バスを使用します。
ブート・メモリ空間
パワーアップ後、またはソフトウェア・リセット後に、すぐに実行されるプログラムに指定される内部メモリ空間です。
フラッシュ・メモリ
単一トランジスタ・セルの消去可能メモリの一種であり、消去はブロック単位で、あるいはチップ全体に対してのみ行うことができます。
フル・アソシエイティブ
各ラインをキャッシュ内のどこにでも置けるキャッシュ・アーキテクチャです。
ページ・サイズ
同じ行アドレスを持ち、別の行をアクティブにすることなく、連続した読出しコマンドまたは書込みコマンドでアクセスできるメモリの量です。
ベース・アドレス
循環バッファの開始アドレスです。

G-22

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

用語集

ベース・レジスタ
循環バッファの開始アドレスを含んでいるデータ・アドレス・ジェネレー
タ（DAG）レジスタです。
ペリフェラルコアの一部として組み込まれていない機能ブロックであり、一般にはシス
テム・レベル動作のサポートに使用されます。
ペリフェラル・アクセス・バス（PAB）
EBIUのメモリマップド・レジスタにアクセスを提供するためのバスです。
飽和（ALU 飽和モード）
正のすべての固定小数点オーバーフローが正の最大固定小数点数を返し、負のすべてのオーバーフローが負の最大数を返す状態です。
前更新アドレッシング
データ転送時に DAG がアドレスを提供し、命令が実行される前に自動イ
ンクリメントするプロセスです。
無効キャッシュ・ラインの状態を表します。キャッシュ・ラインが無効であれ
ば、キャッシュ・ラインの一致は起こりません。
メモリ・マネジメント・ユニット（MMU）
キャッシュ可能性保護索引バッファ（CPLB）を使用することで、メモリの保護と選択的なキャッシュをサポートするプロセッサのコンポーネン
トです。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

G-23

モディファイ・アドレッシング
DAG が、値またはレジスタの内容によってインクリメントされるアドレスを生成するプロセスです。
モディファイ・レジスタ
レジスタ転送時にインデックス・レジスタがプリモディファイまたはポス
トモディファイされる、インクリメントまたはステップのサイズを提供する DAG レジスタです。
モード・レジスタ
SDRAM デバイスに含まれる内部設定レジスタであり、SDRAM デバイスの機能を指定できます。
有効
タグとともに格納される状態ビットであり、対応するタグとデータが最新で正しく、メモリ・アクセス要求を満足させるために使用できることを示します。
ライト・スルーキャッシュ書込みポリシーの 1つであり、ストア・スルーとも呼ばれます。
書込みデータは、キャッシュ・ラインとソース・メモリの両方に書き込まれます。変更されたキャッシュ・ラインは、置き換えられるときにソース・メモリに 書き込まれません。
ライト・バックキャッシュ書込みポリシーの 1 つであり、コピーバックとも呼ばれます。
書込みデータは、キャッシュ・ラインにだけ書き込まれます。変更された
キャッシュ・ラインがソース・メモリに書き込まれるのは、キャッシュ・
ラインを置き換えるときだけです。

G-24

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

用語集

リアルタイム・クロック（RTC）
時刻、アラーム、およびストップウォッチ・カウントダウン機能など、プロセッサのデジタル・ウォッチ機能用のタイミング・パルスを生成するコ
ンポーネントです。
リトル・エンディアン
プロセッサのネイティブなデータ格納フォーマットです。ワードとハーフ・ワードは、最下位バイトをデータ記憶場所の最下位バイト・アドレスに置き、最上位バイトを最上位バイト・アドレスに置いた状態でメモリ（とレジスタ）に格納されます。
ループ
複数回実行される命令群です。
レベル 1（L1）メモリ
メモリとコアの間に介在するメモリ・サブシステムなしで、コアによって直接アクセスされるメモリです。
レベル 2（L2）メモリ
コアから 1 レベル以上隔たったメモリです。L2 メモリにはL1 メモリより大きな容量がありますが、アクセスに要する遅延は増えます。
レベル・センシティブ割込み
信号や割込みの 1 つであり、CLKIN の立上りエッジでサンプリングされたときに、入力信号がロー（アクティブ）である場合にプロセッサによって検出されます。
レングス・レジスタ
循環バッファでのアドレスの範囲を設定する DAGレジスタです。

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

G-25

割込み
通常の処理を中断し、割込みサービス・ルーチン（ISR）を通じて制御の流れを一時的に変えるイベントです。ISR を参照してください。

G-26

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

I

索引

記号
µ 則圧伸 , 12-2, 12-37, 12-63
数字
16 ビット SDRAM バンク , 17-53
16 ビット演算 , 2-27, 2-37
2 進乗算 , D-5
2 進数値 , 2-4
2 の補数フォーマット , D-1
32 ビット演算 , 2-29, 2-30
A
ACTIVE_PLLDISABLED ビット ,8-11
ACTIVE_PLLENABLED ビット ,8-11
AC（アドレス計算）, 4-7
ADSP-BF535 プロセッサ
レジスタの表記規則 , P-xlviii
ALU, 1-3, 2-1, 2-26 ～ 2-39
演算 , 2-13, 2-26 ～ 2-30
演算フォーマット , 2-15
機能 , 2-26
ステータス , 2-24
ステータス信号 , 2-37
データ型 , 2-13

データ・フロー , 2-35
入力と出力 , 2-26
命令 , 2-26, 2-30, 2-38
AMC, 17-4
EBIU ブロック図 , 17-4
タイミングのパラメータ , 17-12
AMCKEN ビット , 17-11
AMS, 17-10
AND、論理 , 2-26
ARDY ピン , 17-16, 17-22
ASIC/FPGA 設計 , 17-1
ASTAT（算術ステータスレジスタ）,
2-25
ASYNC メモリ・バンク , 17-3
Auto-Refresh
コマンド , 17-62
タイミング , 17-50
A 則圧伸 , 12-2, 12-37, 12-63
B
Bank Activate コマンド , 17-25,
17-60
遅延の選択 , 17-43
BI ビット , 13-6
Blackfin プロセッサ・ファミリーI/O メモリ・スペース , 1-8
コア・アーキテクチャ , 1-1

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引-1

索引

ダイナミック・パワー・マネジ
メント , 1-1
ネイティブ・フォーマット ,D-2
命令セット , 1-6
メモリ・アーキテクチャ , 1-6
BMODE
状態 , 3-14
ビット , 3-15
ピン , 4-42
Burst Stop コマンド , 17-26
BYPASS フィールド , 8-9
BYPASS 命令 , C-6
B（ベース）レジスタ , 5-7
B レジスタ（ベース）, 2-8, 5-2,
5-7

CEC, 1-10
CHNL ビット , 12-60
CLKIN 対 VCO、乗算器の変更 ,8-21
CLKIN（入力クロック）, 8-1,
8-3
CLK_SEL ビット , 15-20
CL フィールド , 17-36, 17-42
Command Inhibit コマンド ,17-63
CORE_IDLE ビット , 8-10
CSYNC, 6-75
CYCLES および CYCLES2（実行サイクル・カウント・レジ
スタ）, 19-28
D

C
CALL 命令 , 4-10, 4-12
レンジ , 4-12
CAS Before RAS, 17-27
CAS 遅延 , 17-27
CAS 遅延値
選択 , 17-42
CAW, 17-48
CBR リフレッシュ , 17-27
CCIR-656.ITU-R 656 を参照
CCITT G.711 仕様 , 12-37
CCLK（コア・クロック）, 8-5
ディスエーブルにする , 8-31
動作モード別のステータス ,8-13
CC ビット , 4-10, 4-13
CDDBG ビット , 17-38

索引 -2

DAB（DMA アクセス・バス）,
9-58
性能 , 7-9
遅延 , 7-10
調停 , 7-7
バス・エージェント（マスター）, 7-10
DAB_TRAFFIC_COUNT フィー
ルド , 9-58
DAG0 で CPLB ミス , 4-47
DAG0 で非整列アクセス , 4-47
DAG0 で複数の CPLB ヒット ,4-47
DAG0 で保護違反 , 4-47
DAG1CPLB ミス , 4-47
DAG1 で非整列アクセス , 4-47

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引

DAG1 で複数の CPLB ヒット ,4-47
DAG1 で保護違反 , 4-47
DAG. データ・アドレス・ジェネ
レータ（DAG）を参照
DBGCTL（デバッグ・コント
ロール・レジスタ）, 3-18
DCB（DMA コア・バス）, 7-7,
9-58
調停 , 7-7
DCBS（L1 データ・キャッシュ・
バンク選択）ビット , 6-37
DCBS ビット , 6-30
DCB_TRAFFIC_COUNT フィー
ルド , 9-58
DCB_TRAFFIC_PERIOD フィー
ルド , 9-58
DCPLB_ADDRx（DCPLB アド
レス・レジスタ）, 6-65
DCPLB_DATAx（DCPLB デー
タ・レジスタ）, 6-63
DCPLB_FAULT_ADDR（DCPLB フォールト・アドレ
ス・レジスタ）, 6-69
DCPLB_STATUS（DCPLB ス
テータス・レジスタ）, 6-68
DCPLB アドレス・レジスタ（DCPLB_ADDRx）, 6-65
DCPLB ステータス・レジスタ（DCPLB_STATUS）, 6-68
DCPLB データ・レジスタ（DCPLB_DATAx）, 6-63

DCPLB フォールト・アドレス・レジスタ（DCPLB_FAULT_ADDR）,
6-69
DEB（DMA 外部バス）, 7-7,9-58
周波数 , 7-11
性能 , 7-11
調停 , 7-7
DEB_TRAFFIC_COUNT フィー
ルド , 9-58
DEB_TRAFFIC_PERIOD フィー
ルド , 9-58
DEC（命令デコード）, 4-7
DEEP_SLEEP ビット , 8-11DF（周波数分周）, 8-4
DF ビット , 8-4, 8-9
DI_EN ビット , 9-15
DISALGNEXPT 命令 , 5-14, 5-15
DI_SEL ビット , 9-15
DITFS ビット , 12-16, 12-28,
12-45
DIVQ 命令 , 2-38
DIVS 命令 , 2-38
DLAB ビット , 13-9, 13-10
DLEN フィールド , 11-3
DMA, 9-1 ～ 9-76
1D 非同期 FIFO, 9-68
1D、割込み駆動 , 9-67
2D、ポーリング , 9-68
2D、割込み駆動 , 9-67
2 次元（2D）, 9-47 ～ 9-49
DMA エラー割込み , 9-35
DMA 対応のペリフェラル , 9-1

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引 -3

索引

PPI との , 11-33
SPI スレーブ , 10-38
SPI 送信用の , 10-18
SPI データ送信 , 10-19
SPI マスター , 10-36
エラー , 9-74
概要 , 1-10
起動 , 9-40
検出されないエラー , 9-76
自動バッファ・モード , 9-36,
9-44
自動バッファリングによる連続転送 , 9-67
シリアル・ポート・ブロック転送 , 12-46
シングル・バッファ転送 , 9-66
性能の制約 , 9-54
ソフトウェア管理 , 9-63
ダブル・バッファ方式 , 9-67
チャンネル , 9-53
チャンネルと制御方式 , 9-63
チャンネル・レジスタ , 9-35
停止 , 9-45
ディスクリプタ・アレイ , 9-43
ディスクリプタ・エレメント ,9-6
ディスクリプタ・キューの管理 ,9-70
ディスクリプタ構造 , 9-69
ディスクリプタ・リスト , 9-43
転送のトリガ , 9-45と PPI との同期 , 11-23と SPI, 10-35 ～ 10-41

索引 -4と SPORT, 12-3と UART, 13-10, 13-18
同期 , 9-63 ～ 9-74
動作フロー , 9-38
バッファ・サイズ、マルチチャ
ンネル SPORT, 12-68
フレックス・ディスクリプタ構
造 , 9-35
フロー図 , 9-38
方向 , 9-16
メモリ DMA, 9-50 ～ 9-52
メモリ DMA ストリーム , 9-50
優先順位付けとトラフィック制
御 , 9-55 ～ 9-57
リフレッシュ , 9-42
レジスタのポーリング , 9-64
レジスタの命名規則 , 9-5
DMA2D ビット , 9-15
DMA_EN ビット , 9-16
DMA_ERROR 割込み , 9-74
DMA_TC_CNT（DMA トラ
フィック制御カウンタ・レジ
スタ）, 9-57
DMA_TC_PER（DMA トラ
フィック制御カウンタ周期レジスタ）, 9-57
DMA_TRAFFIC_PERIOD
フィールド , 9-58
DMAx_CONFIG（DMA 設定レジスタ）, 9-12
DMAx_CURR_ADDR（カレント・アドレス・レジスタ）,
9-25

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引

DMAx_CURR_DESC_PTR（カレント・ディスクリプタ・ポ
インタ・レジスタ）, 9-23
DMAx_CURR_X_COUNT（カレント内側ループ・カウント・レジスタ）, 9-26
DMAx_CURR_Y_COUNT（カレント外側ループ・カウント・レジスタ）, 9-28
DMAx_IRQ_STATUS（割込みス
テータス・レジスタ）, 9-32
DMAx_NEXT_DESC_PTR（ネクスト・ディスクリプタ・ポ
インタ・レジスタ）, 9-8
DMAx_PERIPHERAL_MAP（ペリフェラル・マップ・レジスタ）, 9-29
DMAx_START_ADDR（スタート・アドレス・レジスタ）,
9-10
DMAx_X_COUNT（内側ループ・カウント・レジスタ）,
9-17
DMAx_X_MODIFY（内側ループ・アドレス・インクリメン
ト・レジスタ）, 9-18
DMAx_Y_COUNT（外側ループ・カウント・レジスタ）,
9-20
DMAx_Y_MODIFY（外側ループ・アドレス・インクリメン
ト・レジスタ）, 9-21
DMA エラー割込み , 9-34
DMA 外部バス .DEB を参照
DMA キュー完了割込み , 9-73

DMA コア・バス .DCB を参照
DMA コントローラ , 9-1
DMA 性能の最適化 , 9-53 ～ 9-63
DMA 設定レジスタ(DMAx_CONFIG）, 9-12
(MDMA_yy_CONFIG）, 9-12
DMA 転送、緊急の , 9-62
DMA 転送のトリガ , 9-45
DMA トラフィック制御カウンタ
周期レジスタ（DMA_TC_PER）, 9-57
DMA トラフィック制御カウン
タ・レジスタ（DMA_TC_CNT）, 9-57
DMA のソフトウェア管理 , 9-63
DMA バス .DAB を参照
DMA レジスタのポーリング ,9-64
DMC のフィールド , 6-31
DMEM_CONTROL（データ・メ
モリ・コントロール・レジスタ）, 6-28, 6-52
DPMC（ダイナミック・パワー・
マネジメント・コントローラ）, 8-2, 8-12 ～ 8-32
DQM データ I/O マスク機能 ,17-27
DQM ピン , 17-27
DRxPRI SPORT 入力 , 12-4
DRxSEC SPORT 入力 , 12-4
DR ビット , 13-6
DR フラグ , 13-17
DSPID（DSP デバイス ID レジスタ）, 19-29

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引 -5

索引

DSP デバイス ID レジスタ
（DSPID）, 19-29
DTEST_COMMAND（データ・
テスト・コマンド・レジスタ）, 6-47
DTEST_DATAx（データ・テス
ト・データ・レジスタ）,
6-49
DTxPRI SPORT 出力 , 12-4
DTxSEC SPORT 出力 , 12-4E
EAB（外部アクセス・バス）,
7-11
周波数 , 7-11
性能 , 7-11
調停 , 7-11と EBIU, 17-5
EBCAW フィールド , 17-47
EBE ビット , 17-48, 17-57
EBIU, 1-12, 17-1 ～ 17-66
概要 , 17-1
クロッキング , 8-1
クロック , 17-1
コントロール・レジスタ , 17-8
ステータス・レジスタ , 17-8
スレーブとして , 17-5
バイト・イネーブル , 17-24
バス・エラー , 17-9
非同期インターフェースを利用可能 , 17-1
プログラマブルなタイミング特性 , 17-17ブロック図 , 17-4

索引 -6

要求の優先順位 , 17-1
利用可能な SDRAM デバイス ,17-47
EBIU_AMBCTL0（非同期メモ
リ・バンク・コントロール 0
レジスタ）, 17-12
EBIU_AMBCTL1（非同期メモ
リ・バンク・コントロール 1
レジスタ）, 17-12
EBIU_AMGCTL（非同期メモ
リ・グローバル・コントロー
ル・レジスタ）, 17-10
EBIU_SDBCTL（SDRAM メモ
リ・バンク・コントロール・レジスタ）, 17-46
EBIU_SDGCTL（メモリ・グ
ローバル・コントロール・レジスタ）, 17-34
EBIU_SDRRC（SDRAM リフ
レッシュ・レート・コント
ロール・レジスタ）, 17-50
EBIU_SDSTAT（SDRAM コン
トロール・ステータス・レジ
スタ）, 17-49
EBIU 非同期メモリ・コントロー
ラの読出しアクセス , 17-12
EBSZ フィールド , 17-52
EBUFE ビット , 17-37
設定 , 17-41
ELSI ビット , 13-11
EMISO ビット , 10-10
EMREN ビット , 17-38
ENDCPLB ビット , 6-30
EPROM, 1-8

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引

ERBFI ビット , 13-9
ERR_DET ビット , 11-9
ERR_NCOR ビット , 11-9
ERR_TYP フィールド , 15-9
ETBEI ビット , 13-9
EVT（イベント・ベクトル・テーブル）, 4-39
EX1（実行 1）, 4-7
EX2（実行 2）, 4-7
EX3（実行 3）, 4-7
EX4（実行 4）, 4-7
EXCPT 命令 , 4-47
EXT_CLK モード , 15-40 ～15-41
EXTEST 命令 , C-6F
FBBRW ビット , 17-38
FE ビット , 13-6
FFE ビット , 13-16
FIFO, 17-1
FIO_BOTH（フラグ・セット・オン・ボス・エッジ・レジス
タ）, 14-22
FIO_DIR（フラグ方向レジスタ）,
14-5
FIO_EDGE（フラグ割込みセン
シティビティ・レジスタ）,
14-21
FIO_FLAG_C（フラグ・クリ
ア・レジスタ）, 14-9
FIO_FLAG_D（フラグ・デー
タ・レジスタ）, 14-9

FIO_FLAG_S（フラグ・セット・レジスタ）, 14-9
FIO_FLAG_T（フラグ・トグル・レジスタ）, 14-11
FIO_INEN（フラグ入力イネーブ
ル・レジスタ）, 14-23
FIO_MASKA_C（フラグ・マス
ク割込み A クリア・レジスタ）, 14-12, 14-16, 14-17
FIO_MASKA_D（フラグ・マス
ク割込み A データ・レジス
タ）, 14-16
FIO_MASKA_S（フラグ・マス
ク割込み A セット・レジスタ）, 14-12, 14-16
FIO_MASKA_T（フラグ・マス
ク割込み A トグル・レジスタ）, 14-16
FIO_MASKB_C（フラグ・マス
ク割込み B クリア・レジスタ）, 14-12
FIO_MASKB_D（フラグ・マス
ク割込み B データ・レジス
タ）, 14-18
FIO_MASKB_S（フラグ・マス
ク割込み B セット・レジスタ）, 14-12
FIO_MASKB_T（フラグ・マス
ク割込み B トグル・レジスタ）, 14-19
FIO_POLAR（フラグ極性レジスタ）, 14-20
FLD_SEL ビット , 11-7
FLD ビット , 11-9

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引 -7

索引

FLGx ビット , 10-13
FLOW フィールド , 9-13, 9-69
FLSx ビット , 10-13
FLUSHINV 命令 , 6-45
FLUSH 命令 , 6-45
FPE ビット , 13-16
FREQ フィールド , 8-28, 8-29
FSDR ビット , 12-61
FT_ERR ビット , 11-9, 11-13
FULL_ON ビット , 8-11
F 信号 , 11-9
G
GAIN フィールド , 8-28, 8-30
GM ビット , 10-29
GSM 音声ボコーダ・アルゴリズ
ム , 2-44
GSM の音声圧縮ルーチン , 2-22
H
H.100, 12-2, 12-61, 12-68
HMVIP, 12-69
HWE（ハードウェア・エラー割込み）, 4-48, 4-49
I
I2S シリアル・デバイス , 12-2
ICPLB_ADDRx（ICPLB アドレ
ス・レジスタ）, 6-66
ICPLB_DATAx（ICPLB デー
タ・レジスタ）, 6-61
ICPLB_FAULT_ADDR（ICPLB
フォールト・アドレス・レジスタ）, 6-69
索引 -8

ICPLB_STATUS（ICPLB ス
テータス・レジスタ）, 6-68
ICPLB アドレス・レジスタ（ICPLB_ADDRx）, 6-66
ICPLB ステータス・レジスタ（ICPLB_STATUS）, 6-68
ICPLB データ・レジスタ（ICPLB_DATAx）, 6-61
ICPLB フォールト・アドレス・レジスタ（ICPLB_FAULT_ADDR）,
6-69
ICTL フィールド , 15-58
IEEE 1149.1 規格 JTAG 規格を参照
IF1（命令フェッチ 1）, 4-7
IF2（命令フェッチ 2）, 4-7
IF3（命令フェッチ 3）, 4-7
ILAT（コア割込みラッチ・レジスタ）, 4-36
IMASK（コア割込みマスク・レジスタ）, 4-35
IMEM_CONTROL（命令メモ
リ・コントロール・レジスタ）, 6-8, 6-52
I/O ピン、汎用 , 14-1
I/O メモリ・スペース , 1-8
IPEND（コア割込みペンディン
グ・レジスタ）, 3-1, 4-37
IPRIO（割込み優先順位レジスタ）, 6-43
IRCLK ビット , 12-21
IrDA, 13-15
SIR プロトコル , 13-1

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引

トランスミッタ , 13-20
レシーバ , 13-21
IREN ビット , 13-20
IRFS ビット , 12-22, 12-40
IRPOL ビット , 13-21
ISR と複数の割込みソース , 4-24
ITCLK ビット , 12-15
ITEST_COMMAND（命令テス
ト・コマンド・レジスタ）,
6-25
ITEST_DATAx（命令テスト・
データ・レジスタ）, 6-26
ITEST レジスタ , 6-24
ITFS ビット , 12-16, 12-40, 12-56
ITU-R 601/656, 1-13
ITU-R 656 モード , 11-7, 11-9,
11-14
出力 , 11-21と DLEN フィールド , 11-3
フレーム開始検出 , 11-13
フレーム同期 , 11-21
IVHW 割込み , 4-49
I レジスタ（インデックス）, 2-8
J
JPEG 圧縮、PPI, 11-35
JTAG
規格 , C-1, C-3, C-4
ポート , 3-18
JUMP 命令 , 4-10
条件付き , 4-10
レンジ , 4-11

L
L1 データ SRAM, 6-31
L1 メモリ . レベル 1（L1）メモ
リ , 6-1
レベル 1（L1）命令メモリも参照
LARFS ビット , 12-22
LATFS ビット , 12-17, 12-43
LB（ループ・ボトム・レジスタ）,
4-5
LC（ループ・カウンタ・レジス
タ）, 4-5
Level 2（L2）メモリ , 6-1
Load Mode Register コマンド ,17-60
LRFS ビット , 12-22, 12-39,
12-41
LTFS ビット , 12-17, 12-39,
12-41
LT（ループ・トップ・レジスタ）,
4-5
L レジスタ（レングス）, 2-8
M
MAC（積和演算器）, 2-39 ～2-51
32 ビットのマルチサイクル命
令 , 2-50
デュアル演算 , 2-50
累算なしの乗算も参照
MCMEN ビット , 12-54
MDMA_ROUND_ROBIN_COU
NT フィールド , 9-57, 9-61

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引 -9

索引

MDMA_ROUND_ROBIN_PERI
OD フィールド , 9-57, 9-60,
9-61
MDMA_yy_CONFIG（DMA 設
定レジスタ）, 9-12
MDMA_yy_CURR_ADDR（カレント・アドレス・レジスタ）,
9-25
MDMA_yy_CURR_DESC_PTR（カレント・ディスクリプタ・
ポインタ・レジスタ）, 9-23
MDMA_yy_CURR_X_COUNT（カレント内側ループ・カウ
ント・レジスタ）, 9-26
MDMA_yy_CURR_Y_COUNT（カレント外側ループ・カウ
ント・レジスタ）, 9-28
MDMA_yy_IRQ_STATUS（割込みステータス・レジスタ）,
9-32
MDMA_yy_NEXT_DESC_PTR（ネクスト・ディスクリプタ・
ポインタ・レジスタ）, 9-8
MDMA_yy_PERIPHERAL_MAP（ペリフェラル・マップ・レジスタ）, 9-29
MDMA_yy_START_ADDR（スタート・アドレス・レジスタ）, 9-10
MDMA_yy_X_COUNT（内側ループ・カウント・レジスタ）, 9-17

索引 -10

MDMA_yy_X_MODIFY（内側ループ・アドレス・インクリ
メント・レジスタ）, 9-18
MDMA_yy_Y_COUNT（外側ループ・カウント・レジスタ）, 9-20
MDMA_yy_Y_MODIFY（外側ループ・アドレス・インクリ
メント・レジスタ）, 9-21
MFD フィールド , 12-58
MISO ピン , 10-4, 10-5, 10-6,
10-21, 10-24, 10-25, 10-29
MMU（メモリ・マネジメント・ユニット）, 1-5
MODF ビット , 10-30
MOSI ピン , 10-4, 10-5, 10-21,
10-24, 10-25, 10-29
MPEG 圧縮、PPI, 11-36
MSEL（乗算器選択）フィールド ,8-9
MSTR ビット , 10-10
MVIP-90, 12-69
M レジスタ（モディファイ）, 2-8
N
NDSIZE[3:0] フィールド , 9-14
NDSIZE フィールド
適切な値 , 9-46
NINT ビット , 13-11
NMI, 4-42
No Operation コマンド , 17-63
NOP コマンド , 17-63
NOT、論理 , 2-26

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引O
OE ビット , 13-6
OR、論理 , 2-26
OVR ビット , 11-10
P
PAB（ペリフェラル・アクセス・バス）, 7-5
SPORT が生成するエラー ,12-31
クロッキング , 8-1
性能 , 7-6
調停 , 7-6と EBIU, 17-5
バス・エージェント（マスター、スレーブ）, 7-6
PACK_EN ビット , 11-5
PC100 SDRAM 規格 , 17-1
PC133 SDRAM 規格 , 17-1
PC133 SDRAM コントローラ ,1-12
PC 相対オフセット , 4-12
PDWN ビット , 8-9
PEMUSWx ビット , 19-22
PERIOD_CNT ビット , 15-20
PE ビット , 13-6
PFCNTRn（パフォーマンス・モ
ニタ・カウンタ・レジスタ）,
19-21
PFCTL（パフォーマンス・モニ
タ・コントロール・レジスタ）, 19-22
PFx ピン , 10-13, 10-14
PF ピン、PPI と共有 , 11-1

PF. プログラマブル・フラグを参照PLL, 8-1 ～ 8-32
BYPASS ビット , 8-15, 8-22
CCLK の派生 , 8-3
DMA アクセス , 8-14, 8-15,
8-22
PDWN ビット , 8-17
PLL_LOCKED ビット , 8-21
PLL_OFF ビット , 8-18
PLL ステータス（表）, 8-13
PLL プログラミング・シーケン
ス中の処理 , 8-20
PLL への電源の印加 , 8-18
PLL への電源の除去 , 8-18
RTC 割込み , 8-15, 8-22
SCLK の派生 , 8-1, 8-3
SDRAM へのクロッキング ,8-16
STOPCK ビット , 8-16
アクティブ・モード , 8-14
アクティブ・モードにおける変更 , 8-18
アクティブ・モードに入るプロ
グラムの効果 , 8-21
新しい逓倍率 , 8-18
イネーブル , 8-18
イネーブルにされているが、バイパスされている , 8-14
ウェイクアップ信号 , 8-21
カウンタのクロック駆動 , 8-11
クロック周波数、変更 , 8-11
クロック逓倍率 , 8-3
クロック分周 , 8-4

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引 -11

索引

コアのパワーダウン , 8-31
コード例、アクティブ・モード
からフル・オン・モード ,8-23
コード例、クロック逓倍率の変更 , 8-24
コード例、フル・オン・モード
からアクティブ・モード ,8-24
最高性能が得られるモード ,8-14
周波数分周（DF）ビット , 8-4
乗算器選択（MSEL）フィール
ド , 8-4
スリープ・モード , 8-15, 8-21
制御ビット , 8-5, 8-6, 8-28
設計 , 8-2
遷移 , 18-10
ダイナミック・パワー・マネジ
メント・コントローラ（DPMC）, 8-12
ディープ・スリープ・モードに入るプログラムの効果 , 8-22
ディスエーブル , 8-18電圧制御 , 8-13, 8-30
動作モード遷移 , 8-20
動作モード遷移（図）, 8-19
動作モード、動作特性 , 8-13
動作モード別の節電（表）,8-13
パワー・ドメイン , 8-25
フル・オン・モードに入るプロ
グラムの効果 , 8-21
プログラミング・シーケンス ,索引 -128-20ブロック図 , 8-3
変更、DF または MSEL への変
更を有効にする , 8-20
変更後の再ロック , 8-21
ロック・カウンタ , 8-11
PLL_CTL（PLL コントロール・レジスタ）, 8-8
PLL_DIV（PLL 分周レジスタ）,
8-7
PLL_LOCKCNT（PLL ロック・
カウント・レジスタ）, 8-11
PLL_LOCKED ビット , 8-11
PLL_OFF ビット , 8-9
PLL_STAT（PLL ステータス・レジスタ）, 8-10
PLL コントロール・レジスタ（PLL_CTL）, 8-8
PLL ステータス・レジスタ（PLL_STAT）, 8-10
PLL 分周レジスタ（PLL_DIV）,
8-7
POLC ビット , 11-3
POLS ビット , 11-3
PORT_CFG フィールド , 11-7
PORT_DIR ビット , 11-7
PORT_EN ビット , 11-8
PORT_PREF0 ビット , 6-30
PORT_PREF1 ビット , 6-30
PPI, 11-1 ～ 11-36
DMA 動作 , 11-33
FIFO, 11-10
GP モード、フレーム同期 ,11-30

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引

ITU-R 656 モード , 11-14,
11-21
MMR, 11-2
アクティブ・ビデオ専用モード ,11-20
イネーブル , 11-8
エッジ・センシティブ入力 ,11-32
開始までに生じる遅延 , 11-11
クロック入力 , 11-1
サンプル数 , 11-11
出力、1 同期モード , 11-28
垂直ブランキング期間専用モード , 11-20
制御信号極性 , 11-3
タイマ・ピン , 11-32
タイマ・ペリフェラルとのフレーム同期極性 , 11-31
データ出力モード , 11-28 ～11-30
データ転送開始時 , 11-8
データ入力モード , 11-25 ～11-27
データ幅 , 11-3と DMA との同期 , 11-23
動作モード , 11-3, 11-7と汎用タイマ , 15-41
汎用モード , 11-22
ビデオ処理 , 11-14
ビデオ・データ転送 , 11-35
ピン , 11-1
フィールド全体モード , 11-19
フレーム当たりのライン数 ,11-12
フレーム開始検出 , 11-13

フレーム同期 with ITU-R 656,
11-21
フレーム・トラック・エラー ,
11-9, 11-13
ポート幅 , 11-5
PPI_CLK 信号 , 11-3
PPI_CONTROL（PPI コント
ロール・レジスタ）, 11-3
PPI_COUNT（転送カウント・レジスタ）, 11-11
PPI_DELAY（遅延カウント・レジスタ）, 11-11
PPI_FRAME（ラインズ・パー・
フレーム・レジスタ）, 11-12
PPI_FS1 信号 , 11-3
PPI_FS2 信号 , 11-3
PPI_FS3 信号 , 11-9
PPI_STATUS（PPI ステータス・レジスタ）, 11-9
PPI コントロール・レジスタ（PPI_CONTROL）, 11-3
PPI ステータス・レジスタ（PPI_STATUS）, 11-9
PPI のデータ出力モード , 11-28～ 11-30
PPI のデータ入力モード , 11-25～ 11-27PRCENx ビット , 19-22
Precharge コマンド , 17-29,
17-59
Precharge 遅延への書込みの選択 ,17-45
PREFETCH 命令 , 6-45
PSM ビット , 17-36, 17-57
PSSE ビット , 10-10, 17-36

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引 -13

索引

PULSE_HI トグル・モード ,15-25
PULSE_HI ビット , 15-21
PUPSD ビット , 17-37
PWM_OUT モード , 15-18 ～15-30
PULSE_HI トグル・モード ,15-25
外部からのクロック駆動 , 15-24
タイマの停止 , 15-23
R
RBSY フラグ , 10-32
RCKFE ビット , 12-22
RDIV
フィールド , 17-50, 17-55,
17-56
フィールド、値を求める式 ,17-50
RDTYPE フィールド , 12-21
Read/Write コマンド , 17-61
RESET 信号 , 3-11
RESTART ビット , 9-15
RETS レジスタ , 4-12
RETx レジスタ , 3-6
RFSR ビット , 12-22, 12-38
RFS ピン , 12-38, 12-56
RND_MOD ビット , 2-19, 2-22
ROM, 1-8, 17-1
ROVF ビット , 12-28, 12-29
RPOLC ビット , 13-16
RRFST ビット , 12-23
RSCLKx ピン , 12-37

索引 -14RSFSE ビット , 12-22
RSPEN ビット , 12-9, 12-18,
12-20
RST（リセット割込み）, 4-41
RTC, 1-19, 16-1 ～ 16-23
アラーム機能 , 16-2
インターフェース , 16-3
カウンタ , 16-1
クロックの条件 , 16-4状態遷移 , 16-22
ストップウォッチ機能 , 16-2
デジタル・ウォッチ機能 , 16-1
プリスケーラ , 16-1
プログラミング・モデル , 16-4
割込み構造 , 16-13
RTC_ALARM（RTC アラーム・レジスタ）, 16-20
RTC_ICTL（RTC 割込みコント
ロール・レジスタ）, 16-16
RTC_ISTAT（RTC 割込みステー
タス・レジスタ）, 16-17
RTC_PREN（RTC プリスケー
ラ・イネーブル・レジスタ）,
16-21
RTC_STAT（RTC ステータス・レジスタ）, 16-14
RTC_SWCNT（RTC ストップ
ウォッチ・カウント・レジスタ）, 16-18
RTC アラーム・レジスタ（RTC_ALARM）, 16-20
RTC ステータス・レジスタ（RTC_STAT）, 16-14

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引

RTC ストップウォッチ・カウン
ト・レジスタ（RTC_SWCNT）, 16-18
RTC プリスケーラ・イネーブル・レジスタ（RTC_PREN）,
16-21
RTC 割込みコントロール・レジ
スタ（RTC_ICTL）, 16-16
RTC 割込みステータス・レジス
タ（RTC_ISTAT）, 16-17
RTE（エミュレーションからの復帰）命令 , 4-10
RTI 命令の使用 , 4-62
RTI（割込みからの復帰）命令 ,4-10, 4-62
RTN（マスク不能割込みからの復帰）命令 , 4-10
RTS（サブルーチンからの復帰）
命令 , 4-10
RTX（例外からの復帰）命令 ,4-10
RUVF ビット , 12-27, 12-29
RXSE ビット , 12-22
RXS ビット , 10-33
RX ホールド・レジスタ , 12-27
RZI 変調 , 13-20
S
SA10 ピン , 17-43
SAMPLE/PRELOAD 命令 , C-6
SB ビット , 13-4
SCK 信号 , 10-4, 10-22, 10-25,
10-32
SCLK, 8-5

EBIU, 17-1
周波数 , 8-14周波数の変更 , 18-11
生成 , 8-1
ディスエーブルにする , 8-31
動作モード別のステータス（表）, 8-13
SCTLE ビット , 17-36, 17-39
SDC, 17-4 ～ 17-65
グルーレス・インターフェース
機能 , 17-24
コマンド , 17-58
設定 , 17-56
動作 , 17-55
部品の設定 , 17-32
SDC コマンド処理中のピン状態（表）, 17-59
SDEASE ビット , 17-49
SDQM ピン , 17-43, 17-55
SDRAM, 1-8
16M バイトよりも小さい , 18-8
A10 ピン , 17-43
PLL 遷移時におけるリフレッ
シュ , 18-10
Read コマンド遅延 , 17-55
アドレスのマッピング , 17-53
インターフェースのコマンド ,17-58
開始アドレス , 17-2
外部 SDRAM を共有 , 17-37
外部メモリ , 6-1, 17-52
構成 , 17-24
サイズの設定 , 17-46
自己リフレッシュ , 17-62

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引 -15

索引

性能 , 17-64
タイミング仕様 , 17-64
遅延 , 17-37
動作パラメータ、初期化 , 17-60
無動作コマンド , 17-63
バッファ・タイミング・オプ
ション（EBUFE）、設定 ,17-41
パワーアップ・シーケンス ,17-36
バンク , 6-51, 17-29
バンクのサイズ , 17-2
ブロック図 , 17-33
メモリ・バンク , 17-3
予備 , 17-2
読出し／書込み , 17-61
読出し転送 , 17-54
リフレッシュ・レート , 18-10
利用可能なサイズ , 6-51, 17-24
SDRAM インターフェース信号（表）, 17-7
SDRAM クロック、設定 , 17-39
SDRAM コントローラ、SDC を参照
SDRAM コントロール・ステータ
ス・レジスタ（EBIU_SDSTAT）, 17-49
SDRAM の A10 ピン , 17-43
SDRAM バンクへの読出し転送 ,17-54
SDRAM メモリ・グローバル・コ
ントロール・レジスタ（EBIU_SDGCTL）, 17-34

索引 -16SDRAM メモリ・バンク・コント
ロール・レジスタ（EBIU_SDBCTL）, 17-46
SDRAM リフレッシュ・レート・
コントロール・レジスタ（EBIU_SDRRC）, 17-50
SDRAM 利用可能な SDRAM
ディスクリート部品設定（表）, 17-32
SDRS ビット , 17-56
Self-Refresh コマンド , 17-62
Self-Refresh モード , 17-29
開始 , 17-40
終了 , 17-40
SEQSTAT（シーケンサ・ステー
タス・レジスタ）, 4-4, 4-5
SIC, 1-10, 4-29
SIC_IAR0（システム割込み割当てレジスタ 0）, 4-32
SIC_IARx（システム割込み割当てレジスタ）, 4-32
SIC_IMASK（システム割込みマ
スク・レジスタ）, 4-30
SIC_ISR（システム割込みステー
タス・レジスタ）, 4-29
SIC_IWR（システム割込みウェ
イクアップイネーブル・レジスタ）, 4-27
SIMD ビデオ ALU 演算 , 2-38
SIZE ビット , 10-9
SKIP_EN ビット , 11-3
SKIP_EO ビット , 11-3
SLEEP ビット , 8-11
SLEN フィールド , 12-15, 12-21
制約 , 12-35

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引

ワード長の式 , 12-35
SPE ビット , 10-10
SPI, 10-1 ～ 10-41
DMA の使用 , 10-18
SCK 信号 , 10-4
SPI_FLG を PFx ピンにマッピ
ング , 10-14
一般的な動作 , 10-24 ～ 10-29
インターフェース信号 , 10-4 ～10-7
エラー信号 , 10-30 ～ 10-32
エラー割込み , 10-7
クロック位相 , 10-21, 10-22,
10-25
クロック極性 , 10-21, 10-25
クロック信号 , 10-4, 10-25
互換のペリフェラル , 10-1
受信エラー , 10-32
スレーブ・セレクト機能 , 10-13
スレーブ・デバイス , 10-6
スレーブの転送準備 , 10-29
スレーブ・モード , 10-1, 10-28
スレーブ・モード DMA 動作 ,10-38
スレーブ・モード・ブーティン
グ , 3-20, 3-22
送／受信エラー , 10-16
送信エラー , 10-31
送信競合エラー , 10-32
送信と受信の切替え , 10-34
タイミング , 10-41
データ転送 , 10-3
データ破壊、避ける , 10-24

データ割込み , 10-7
転送開始コマンド , 10-26
転送完了タイミングの検出 ,
10-16
転送の開始と終了 , 10-32
転送フォーマット , 10-21 ～10-23
転送モード , 10-27と DMA, 10-35 ～ 10-41
複数のスレーブ・システム ,10-15
ブロック図 , 10-2
ポート , 1-16
マスター・モード , 10-3, 10-26
マスター・モード DMA 動作 ,10-36
マスタ・モード・ブーティング ,3-21
マルチマスター環境 , 10-2
モード・フォルト・エラー ,10-30
リセットの効果 , 10-4
レジスタ、表 , 10-21
ワード長 , 10-9割込み出力 , 10-7
SPI_BAUD（SPI ボーレート・レジスタ）, 10-8, 10-21
SPI_BAUD の値 , 10-9
SPI_CTL（SPI コントロール・レジスタ）, 10-9, 10-21
SPI_FLG（SPI フラグ・レジス
タ）, 10-12, 10-21
SPIF ビット , 10-33

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引 -17索引

SPI_RDBR（SPI 受信データ・
バッファ・レジスタ）, 10-19,
10-21
SPI RDBR シャドウ・レジスタ（SPI_SHADOW）, 10-20,
10-21
SPI_SHADOW（SPI RDBR シャ
ドウ・レジスタ）, 10-20,
10-21
SPISS 信号 , 10-5, 10-15, 10-22
SPI_STAT（SPI ステータス・レジスタ）, 10-16, 10-21
SPI_TDBR（SPI 送信データ・
バッファ・レジスタ）, 10-18,
10-21
SPI コントロール・レジスタ（SPI_CTL）, 10-9, 10-21
SPI 受信データ・バッファ・レジ
スタ（SPI_RDBR）, 10-19,
10-21
SPI ステータス・レジスタ（SPI_STAT）, 10-16, 10-21
SPI スレーブ・セレクト , 10-13
SPI 送信データ・バッファ・レジ
スタ（SPI_TDBR）, 10-18,
10-21
SPI フラグ・レジスタ（SPI_FLG）, 10-12, 10-21
SPI ボーレート・レジスタ（SPI_BAUD）, 10-8, 10-21
SPI マスターからの転送開始 ,10-27
SPORT, 1-14, 12-1 ～ 12-75
DMA のデータ・パッキング ,索引 -1812-67
H.100 標準プロトコル , 12-68
PAB エラー , 12-31
RX ホールド・レジスタ , 12-27
TX ホールド・レジスタ , 12-24
TX 割込み , 12-24
アクティブ・ローのフレーム同期とアクティブ・ハイのフレーム同期 , 12-41
圧伸 , 12-37
一般的な動作 , 12-8
イネーブル時の遅延 , 12-10
イネーブル／ディスエーブル ,12-9ウィンドウ・オフセット , 12-59
クロック , 12-37
クロック再生コントロール ,12-69
クロック周波数 , 12-2, 12-31,
12-33
クロック周波数の制約 , 12-35
サンプリング , 12-41
終端 , 12-69
受信 FIFO, 12-26
受信機能と送信機能 , 12-1
受信クロック信号 , 12-37
受信ワード長 , 12-27
初期化コード , 12-21
シングル・ワード転送 , 12-46
ステレオ・シリアル接続 , 12-8
ステレオ・シリアル・フレーム
同期モード , 12-54
設定 , 12-10
送／受信に対する単一のクロッ

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引ク , 12-37
送信クロック信号 , 12-37
送信データ・レジスタ , 12-23
送信ワード長 , 12-23
タイミング , 12-69
遅延フレーム同期 , 12-54
チャンネル , 12-50
ディスエーブル , 12-10
データ・アンパッキング、マル
チチャンネル DMA, 12-67
データ・パッキング、マルチチャンネル DMA, 12-67
データ・フォーマット , 12-36
データ・ワード・フォーマット ,12-23
データをメモリに転送 , 12-46と DMA ブロック転送 , 12-2
内部フレーム同期と外部フレー
ム同期 , 12-40
ビット順序の選択 , 12-36
標準プロトコルのサポート ,12-68
ピン , 12-1, 12-4
フレーミング信号 , 12-38
フレーム付きシリアル転送 ,12-39
フレーム付きとフレームなし ,12-38
フレーム同期 , 12-40, 12-43
フレーム同期周波数 , 12-33
フレーム同期パルス , 12-2
ポイント・ツー・ポイント接続 ,18-13
ポート接続 , 12-7

マルチチャンネル動作 , 12-50～ 12-68
マルチチャンネルフレーム ,12-57
マルチチャンネル・モードのイ
ネーブル , 12-54
短くなったアクティブなパルス ,12-10
モード , 12-10
レジスタの書込み , 12-11
ワード長 , 12-35
SPORT RX 割込み , 12-27, 12-30
SPORT TX 割込み , 12-30
SPORTx_CHNL（SPORTx カレ
ント・チャンネル・レジスタ）, 12-60
SPORTx_MCMCn（SPORTx マ
ルチチャンネル設定レジスタ）, 12-53
SPORTx_MRCSn（SPORTx マ
ルチチャンネル受信セレク
ト・レジスタ）, 12-63
SPORTx_MTCSn（SPORTx マ
ルチチャンネル送信セレク
ト・レジスタ）, 12-65
SPORTx_RCLKDIV（SPORTx
受信シリアル・クロック・デバイダ・レジスタ）, 12-31
SPORTx_RCR1（受信設定レジスタ）, 12-18
SPORTx_RCR2（SPORTx 受信設定レジスタ）, 12-20
SPORTx_RCR2（受信設定レジスタ）, 12-18

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引 -19

索引

SPORTx_RFSDIV（SPORTx 受
信フレーム同期デバイダ・レ
ジスタ）, 12-32
SPORTx_RX（SPORTx 受信
データ・レジスタ）, 12-26
SPORTx_STAT（SPORTx ス
テータス・レジスタ）, 12-28
SPORTx_TCLKDIV（SPORTx
送信シリアル・クロック・デバイダ・レジスタ）, 12-31
SPORTx_TCR1（送信設定レジスタ）, 12-12
SPORTx_TCR2（送信設定レジスタ）, 12-12
SPORTx_TFSDIV（SPORTx 送
信フレーム同期デバイダ・レ
ジスタ）, 12-32
SPORTx_TX（SPORTx 送信デー
タ・レジスタ）, 12-23
SPORTx カレント・チャンネル・
レジスタ（SPORTx_CHNL）,
12-60
SPORTx 受信シリアル・クロッ
ク・デバイダ・レジスタ（SPORTx_RCLKDIV）,
12-31
SPORTx 受信設定 2 レジスタ
（SPORTx_RCR2）, 12-20
SPORTx 受信データ・レジスタ（SPORTx_RX）, 12-26
SPORTx 受信フレーム同期デバ
イダ・レジスタ（SPORTx_RFSDIV）, 12-32

索引 -20

SPORTx 受信レジスタ（SPORTx_RX）, 12-56
SPORTx ステータス・レジスタ（SPORTx_STAT）, 12-28
SPORTx 送信シリアル・クロッ
ク・デバイダ・レジスタ（SPORTx_TCLKDIV）,
12-31
SPORTx 送信データ・レジスタ（SPORTx_TX）, 12-23
SPORTx 送信フレーム同期デバ
イダ・レジスタ（SPORTx_TFSDIV）, 12-32
SPORTx 送信レジスタ（SPORTx_TX）, 12-45,
12-56
SPORTx マルチチャンネル受信
セレクト・レジスタ（SPORTx_MRCSn）, 12-61,
12-62, 12-63
SPORTx マルチチャンネル設定
レジスタ（SPORTx_MCMCn）, 12-53
SPORTx マルチチャンネル送信
セレクト・レジスタ（SPORTx_MTCSn）, 12-61,
12-65
SPORT エラー割込み , 12-30
SPORT マルチチャンネル送信セ
レクト・レジスタ（SPORTx_MTCSn）, 12-62
SRAM, 1-8, 17-1
L1 データ , 6-31
L1 命令アクセス , 6-12

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引

インターフェース , 18-7
スクラッチパッド , 6-7
SRFS ビット , 17-37, 17-40
SSEL ビット , 7-2
STATUS フィールド , 13-11
STI, 6-80, 8-22
STOPCK フィールド , 8-9
SWRST（ソフトウェア・リセッ
ト・レジスタ）, 3-17
SYNC, 6-75
SYSCFG（システム設定レジスタ）, 4-6
SYSCR（システム・リセット設
定レジスタ）, 3-15
SZ ビット , 10-29
T
TAP（テスト・アクセス・ポート）, C-1, C-2
コントローラ , C-2, C-3
TAP レジスタ
バイパス , C-6
バウンダリスキャン , C-7
命令 , C-2, C-4
TAUTORLD ビット , 15-50
TBUFCTL（トレース・バッ
ファ・コントロール・レジスタ）, 19-17
TBUFSTAT（トレース・バッ
ファ・ステータス・レジスタ）, 19-18
TBUF（トレース・バッファ・レ
ジスタ）, 19-19
TCKFE ビット , 12-17, 12-41

TCNTL（コア・タイマ・コント
ロール・レジスタ）, 15-50
TCOUNT（コア・タイマ・カウ
ント・レジスタ）, 15-52
TDM インターフェース , 12-4
TDM マルチチャンネル・モード ,12-2
TDTYPE ビット , 12-15
TEMT ビット , 13-7
Test-Logic-Reset ステート , C-4
TESTSET 命令 , 6-78, 7-10, 18-5
TFSR ビット , 12-16, 12-38
TFS 信号 , 12-56
TFS ピン , 12-45
THRE ビット , 13-7
THRE フラグ , 13-7, 13-17
TIMDISx ビット , 15-8
TIMENx ビット , 15-3
TIMER_DISABLE（タイマ・ディスエーブル・レジスタ）,
15-6
TIMER_ENABLE（タイマ・イ
ネーブル・レジスタ）, 15-4
TIMER_STATUS（タイマ・ス
テータス・レジスタ）, 15-7
TIMERx_CONFIG（タイマ設定レジスタ）, 15-9
TIMERx_COUNTER（タイマ・カウンタ・レジスタ）, 15-11
TIMERx_PERIOD（タイマ周期レジスタ）, 15-12
TIMERx_WIDTH（タイマ幅レジスタ）, 15-12
TIMILx ビット , 15-7

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引 -21

索引

TIMOD フィールド , 10-7, 10-9,
10-27
TIN_SEL ビット , 15-38
TINT ビット , 15-50
TLSBIT ビット , 12-15
TMODE フィールド , 15-18
TMPWR ビット , 15-51
TMREN ビット , 15-50
TMR_EN フィールド , 15-58
TMRx ピン , 15-1
TOVF_ERRx ビット , 15-9
TOVF ビット , 12-25, 12-29
TPERIOD（コア・タイマ周期レジスタ）, 15-53
TPOLC ビット , 13-16
tRAS, 17-30
TRAS フィールド , 17-30, 17-31,
17-32, 17-36, 17-44
tRC, 17-30
tRCD, 17-30
TRCD フィールド , 17-30, 17-36
tRFC, 17-31
TRFST ビット , 12-18
tRP, 17-31
TRP フィールド , 17-30, 17-31,
17-32, 17-36, 17-45
tRRD, 17-31
TRUNx ビット , 15-7, 15-8
TSCALE（コア・タイマ・スケー
ル・レジスタ）, 15-54
TSFSE ビット , 12-18
TSPEN ビット , 12-9, 12-12,
12-14

索引 -22

TUVF ビット , 12-24, 12-28,
12-46
tWR, 17-31
TWR フィールド , 17-31, 17-36,
17-46
TXCOL フラグ , 10-32
TXE ビット , 10-31
TXF ビット , 12-25, 12-28
TXSE ビット , 12-17
tXSR, 17-32
TXS ビット , 10-33
TX ホールド・レジスタ , 12-24
U
UART, 13-1 ～ 13-21
DMA から非 DMA への切替え ,13-19
DMA チャンネル , 13-18
DMA チャンネルの遅延条件 ,13-18
DMA モード , 13-18
IrDA サポート , 13-19
IrDA トランスミッタ , 13-20
IrDA の送信パルス , 13-21
IrDA レシーバ , 13-21
オートボー検出 , 15-38
グリッチ・フィルタ処理 , 13-21
クロック周波数 , 7-2
サンプリング・クロック周期 ,13-8
サンプリング・ポイント , 13-8
受信サンプリング・ウィンドウ ,
13-21
タイマ , 13-1

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引

データ・ワード , 13-7
デバイザ , 13-13
デバイザのリセット , 13-14とシステム DMA, 13-10
非 DMA モード , 13-16
非同期シリアル・インターフェース・ポート , 1-18
標準 , 13-1
ボーレート , 13-7, 13-8
ボーレート例 , 13-14
ミキシング・モード , 13-19
割込み条件 , 13-11
割込みチャンネル , 13-9
割込み優先順位の割当て , 13-12
割込みラッチのクリア , 13-12
UART_DLH（UART デバイザ・
ラッチ・レジスタ）, 13-13
UART_DLL（UART デバイザ・
ラッチ・レジスタ）, 13-13
UART_GCTL（UART グローバ
ル・コントロール・レジスタ）, 13-15
UART_IER（UART 割込みイ
ネーブル・レジスタ）, 13-9
UART_IIR（UART 割込み識別レジスタ）, 13-11
UART_LCR（UART ライン・コントロール・レジスタ）,
13-4
UART_LSR（UART ライン・ス
テータス・レジスタ）, 13-6
UART_RBR（UART 受信バッ
ファ・レジスタ）, 13-8

UART_SCR（UART スクラッ
チ・レジスタ）, 13-15
UART_THR（UART 送信ホール
ディング・レジスタ）, 13-7
UART_TSR（UART 送信シフ
ト・レジスタ）, 13-7
UART グローバル・コントロー
ル・レジスタ（UART_GCTL）, 13-15
UART 受信バッファ・レジスタ（UART_RBR）, 13-8
UART スクラッチ・レジスタ（UART_SCR）, 13-15
UART 送信シフト・レジスタ（UART_TSR）, 13-7
UART 送信ホールディング・レ
ジスタ（UART_THR）, 13-7
UART デバイザ・ラッチ・レジ
スタ(UART_DLH）, 13-13(UART_DLL）, 13-13
UART ライン・コントロール・レジスタ（UART_LCR）,
13-4
UART ライン・ステータス・レ
ジスタ（UART_LSR）, 13-6
UART 割込みイネーブル・レジ
スタ（UART_IER）, 13-9
UART 割込み識別レジスタ（UART_IIR）, 13-11
UCEN ビット , 13-14, 13-15
UNDR ビット , 11-10

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引 -23

索引

V
VCO 周波数の変更 , 18-11
VLEV フィールド , 8-28, 8-29
VR_CTL（電圧レギュレータ・コ
ントロール・レジスタ）,
8-27
VSTAT ビット , 8-10
W
WAKEUP 信号 , 3-11, 8-21
WAKE ビット , 8-28
WB（ライト・バック）, 4-7
WDOG_CNT（ウォッチドッグ・
カウント・レジスタ）, 15-55
WDOG_CTL（ウォッチドッグ・
コントロール・レジスタ）,
15-58
WDOG_STAT（ウォッチドッ
グ・ステータス・レジスタ）,
15-56
WDSIZE[1:0] フィールド , 9-16
WDTH_CAP モード , 15-30 ～15-39
WNR ビット , 9-16
WOFF フィールド , 12-59
WOM ビット , 10-24
WPDACNTn（データ・ウォッチ
ポイント・アドレス・カウン
ト値レジスタ）, 19-12
WPDACTL（データ・ウォッチ
ポイント・アドレス・コント
ロール・レジスタ）, 19-13

索引 -24

WPDAn（データ・ウォッチポイ
ント・アドレス・レジスタ）,
19-12
WPIACNTn（命令ウォッチポイ
ント・アドレス・カウント・レジスタ）, 19-7
WPIACTL（命令ウォッチポイン
ト・アドレス・コントロー
ル・レジスタ）, 19-8
WPIAn（命令ウォッチポイント・
アドレス・レジスタ）, 19-6
WPPWR ビット , 19-8
WPSTAT（ウォッチポイント・
ステータス・レジスタ）,
19-15
WSIZE フィールド , 12-59
X
XFR_TYPE フィールド , 11-7
XOR、論理 , 2-26
Y
YCrCb フォーマット , 11-3
あアーキテクチャ、プロセッサ・コ
ア , 2-2
開いているページ , 17-25
アイドル状態 , 3-10, 4-1
商ステータス , 2-37
アキュムレータ結果レジスタ
A[1: 0], 2-39, 2-6, 2-47
アクセスのサイズ、タイマ・レジ
スタ , 15-4

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引アクティブ・ディスクリプタ・
キューと DMA 同期 , 9-73
アクティブ・ビデオ専用モード、
PPI, 11-20
アクティブ・モード , 1-23, 8-14
アクティブ・ロー／ハイのフレー
ム同期、シリアル・ポート ,12-41
アセンブリ言語 , 2-1
圧伸 , 12-51, 12-63
定義 , 12-37
マルチチャンネル動作 , 12-63
利用可能な長さ , 12-37
後更新 , 5-1
アトミック操作 , 6-78
アドレス計算（AC）, 4-7
アドレス更新 , 5-1
アドレス―タグ比較演算 , 6-17
アドレス提供 , 5-1
アドレス提供と後更新 , 5-1, 5-4,
5-8, 5-12
アドレスのマッピング、SDRAM,
17-53
アドレス・バス , 17-65
アドレス・ポインタ・レジスタ、
ポインタ・レジスタを参照
アドレッシング
オートデクリメント
モード , 5-16
利用可能な転送（表）, 5-15
アナログ・デバイセズ製品情報 ,P-xlii
アボート、DMA, 9-74
アラーム、RTC, 16-2

アンダーフロー、データ , 12-39
いイネーブル
汎用タイマ , 15-4, 15-16
イベント
処理における遅延 , 4-63
定義 , 4-19
ネストされた , 4-37
例外 , 4-42
イベント・コントローラ , 3-1,
4-19
MMRs, 4-35
シーケンサ , 4-3
イベント処理 , 1-9, 4-19
イベントの処理 , 4-3
イベント・ベクトル・テーブル（EVT）, 4-39
イベント・モニタ , 19-24
イミディエイト・オーバーフ
ロー・ステータス , 2-37
インターフェース
RTC, 16-3
オンチップ , 7-5
外部メモリ , 17-6システム , 7-4
内部 , 7-2
内部メモリ , 17-5
インターリービング
SPORT FIFO のデータの ,12-23
SPORT データ , 12-5
インダクタンス（配線長）, 18-14
インデックス , 5-1

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引 -25

索引

インデックス・アドレッシング ,5-10
即値オフセットによる , 5-12
インデックス（定義）, 6-80
インデックス・レジスタ (I[3:0]）,
5-2
インデックス・レジスタ（I[3:0]）,2-8, 5-7うウェイ
1 ウェイ・アソシエイティブ（直接マップ）, 6-81
キャッシュ・ライン置換の優先
順位 , 6-19
定義 , 6-80
ウェイト・ステート、追加 ,17-22
ウォッチドッグ・カウント・レジ
スタ（WDOG_CNT）, 15-55
ウォッチドッグ・コントロール・レジスタ（WDOG_CTL）,
15-58
ウォッチドッグ・ステータス・レジスタ（WDOG_STAT）,
15-56
ウォッチドッグ・タイマ , 15-54～ 15-59
機能 , 1-20
動作 , 15-55
ウォッチドッグ・タイマ・リセッ
ト , 3-13, 3-16

索引 -26

ウォッチポイント・ステータス・
レジスタ（WPSTAT）,
19-15
ウォッチポイントの一致 , 4-47
ウォッチポイント・ユニット ,19-2 ～ 19-15
WPIACTL ウォッチポイント範囲 , 19-5
データ・アドレス・ウォッチポ
イント , 19-11
命令ウォッチポイント , 19-5
命令ウォッチポイントとデー
タ・ウォッチポイントの組合
わせ , 19-4
メモリマップド・レジスタ ,19-2
内側ループ・アドレス・インクリ
メント・レジスタ(DMAx_X_MODIFY）, 9-18
(MDMA_yy_X_MODIFY）,
9-18
内側ループ・カウント・レジスタ(DMAx_X_COUNT）, 9-17
(MDMA_yy_X_COUNT）, 9-17
えエミュレーション・イベント ,4-40
エミュレーションからの復帰（RTE）命令 , 4-10
エミュレーションとタイマ・カウ
ンタ , 15-11
エミュレーション・モード , 1-5,
3-9, 4-40

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引

エラー
DMA, 9-74
DMA ハードウェアによって検出されない , 9-76
原因となるハードウェア条件 ,4-49
コア内 , 4-49
データの非整列 , 6-77
ハードウェア , 4-48
バス・タイムアウト , 4-49
バス・パリティ , 4-49
複数ハードウェア , 4-49
ペリフェラル , 4-49
エラー信号、SPI, 10-30 ～ 10-32
演算フォーマットのまとめ , 2-15
～ 2-16
演算ユニット , 2-1 ～ 2-59
エンディアン性 , 2-13
エンディアン・フォーマット
データと命令の格納 , 6-71
おオートインクリメント・アドレッ
シング , 5-11
オートデクリメント・アドレッシ
ング , 5-11
オートボー検出 , 13-1, 15-38
オートボーと汎用タイマ , 15-38
オーバーフロー、乗算結果の飽和 ,2-41
オーバーフロー、データ , 12-39
オーバーフロー・フラグ , 2-13
オープン・ドレイン出力 , 10-24

オープン・ドレイン・ドライバ ,10-1
オシロスコープ・プローブ ,18-15
オフセット付きでのアドレス提供 ,5-1
オフチップ・メモリ , 1-8
音声圧縮ルーチン , 2-22
オンチップ・メモリ , 1-7
か
階層型メモリ構造 , 1-5
外部 , 1-8
外部 SDRAM メモリ , 17-52
外部アクセス・バス .EAB を参照
外部イベント・モード.EXT_CLK モードを参照
回復不能なイベント , 4-47
外部バス・インターフェース・ユ
ニット、EBIU を参照
外部バッファ・タイミング ,17-65
外部メモリ , 1-8, 6-51
インターフェース , 17-6
設計に関する事項 , 18-7
外部メモリ・インターフェース ,17-6
外部メモリ・マップ（図）, 17-3
回路ボードのテスト , C-1, C-6
カウンタ
RTC, 16-1
サイクル , 4-4, 19-26
書込みアクセス、EBIU 非同期メ
モリ・コントローラの , 17-12

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引 -27

索引

書込み中の SDQM[1:0] のエン
コーディング（表）, 17-55
書込みバッファの深さ , 6-43
書込み、非同期 , 17-20
カスタマ・サポート , P-xli
カレント・アドレス・レジスタ(DMAx_CURR_ADDR）, 9-25
(MDMA_yy_CURR_ADDR）,
9-25
カレント内側ループ・カウント・レジスタ(DMAx_CURR_X_COUNT）,
9-26(MDMA_yy_CURR_X_COUNT）,
9-26
カレント外側ループ・カウント・レジスタ(DMAx_CURR_Y_COUNT）,
9-28(MDMA_yy_CURR_Y_COUNT）,
9-28
カレント・ディスクリプタ・ポイ
ンタ・レジスタ(DMAx_CURR_DESC_PTR）,
9-23(MDMA_yy_CURR_DESC_PT
R）, 9-23
間接 , 5-1
関連資料 , P-xliii, P-xlvii
きキャッシュキャッシュ・ラインの有効性 ,索引 -28

6-15
コヒーレンシ対応 , 6-77
データ・バンクへのマッピング ,6-36
キャッシュ可能性保護 Lookaside
バッファ（CPLB）, 6-13,
6-51, 6-52
キャッシュ禁止アクセス , 6-78
キャッシュ・ヒット
アドレス―タグ比較 , 6-17
定義 , 6-17, 6-80
データ・キャッシュ・アクセス ,6-40
キャッシュ・ブロック（定義）,6-80キャッシュ・ミス
置換ポリシー , 6-21
定義 , 6-40, 6-80
キャッシュ・ライン
コンポーネント , 6-15
状態 , 6-41
定義 , 6-80
キャリー・ステータス , 2-37
休止状態 , 1-25, 8-16, 8-31
行アドレス , 17-48
競合、バス、回避 , 17-16
強制割込み／リセット（RAISE）
命令 , 3-11
共有される割込み , 4-32
共有割込み , 4-57
極性、プログラマブル・フラグ ,14-20
切捨て , 2-22

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引

く
クエリ・セマフォ , 18-6
グラウンド・プレーン , 18-14
クリーン（定義）, 6-81
グリッチ・フィルタ処理、
UART, 13-21
グルーレス接続 , 18-7
クロス・オプション , 2-37
クロストーク , 18-14
クロッキング , 8-1 ～ 8-12
クロック
EBIU, 17-1
RTC, 16-4
SPORT の周波数 , 12-31
管理 , 18-4
設定 , 12-35
タイプ , 18-4
汎用タイマのクロック源 , 15-2
クロック位相、SPI, 10-21, 10-22
クロック極性、SPI, 10-21
クロック周波数
SPORT, 12-2
コア・タイマ , 15-49
クロック信号、SPI, 10-4
クロック入力（CLKIN）ピン ,18-4
クロック分周率レジスタ , 12-31
クワッド 16 ビット演算 , 2-28
け
計算ステータス , 2-24
計算命令 , 2-1

こコア
アーキテクチャ , 1-3 ～ 1-6, 2-2
コア・クロック / システム・ク
ロックの比率制御 , 8-5
ダブル・フォルト条件 , 4-41
ダブル・フォルト・リセット ,3-14
パワーダウン , 8-31
フラグ設定へのアクセス , 14-5
コア・イベント
EVT, 4-39
MMR 位置 , 4-39
コア・イベント・コントローラ（CEC）, 1-10, 4-19
コア・イベントの MMR 位置 ,4-39
コア・イベント・ベクトル・テー
ブル（表）, 4-39
コアオンリー・ソフトウェア・リ
セット , 3-14, 3-18, 3-20
コア・クロック（CCLK）, 8-5
コア・タイマ , 15-49 ～ 15-54
スケーリング , 15-54
ブロック図 , 15-50
コア・タイマ・カウント・レジス
タ（TCOUNT）, 15-52
コア・タイマ・コントロール・レジスタ（TCNTL）, 15-50
コア・タイマ周期レジスタ（TPERIOD）, 15-53
コア・タイマ・スケール・レジス
タ（TSCALE）, 15-54
コアのパワーダウン , 8-31

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引 -29索引

コア命令、非同期アクセス ,17-18
コア割込みペンディング・レジス
タ（IPEND）, 3-1, 4-37
コア割込みマスク・レジスタ（IMASK）, 4-35
コア割込みラッチ・レジスタ（ILAT）, 4-36
高周波数設計に関する考慮事項 ,18-13
構成
L1 命令メモリ , 6-13
SDRAM, 17-24
高速フーリエ変換 , 2-37, 5-9
コードのパッチング , 19-5
コード例
ISR でハードウェア・ループを使用 , 4-61
MMR のベースをロードする ,6-80
PLL の変更 , 8-20
アクティブ・モードからフル・オン・モード , 8-23
実行トレースの再作成 , 19-20
制御レジスタの復元 , 6-80
ネストされた ISR のエピロー
グ・コード , 4-56
ネストされた ISR のプロロー
グ・コード , 4-56
フル・オン・モードからアク
ティブ・モード , 8-24
ループ , 4-17
例外ハンドラ , 4-59
例外ルーチン , 4-61
割込みのイネーブルとディス
索引 -30エーブル , 6-79
コマンド
Auto-Refresh, 17-50, 17-62
Bank Activate, 17-25, 17-43,
17-60
Burst Stop, 17-26
Command Inhibit, 17-63
Load Mode Register, 17-60
No Operation, 17-63
Precharge, 17-29, 17-44, 17-59
Read/Write, 17-61
SDC, 17-58
Self-Refresh, 17-62
転送開始 , 10-26
並列リフレッシュ , 17-43
コンデンサ , 18-15
コンテント・アドレッサブル・メ
モリ（CAM）, 6-51
コントロール・レジスタ
EBIU, 17-8
データ・メモリ , 6-28
命令メモリ , 6-8
さ
最近値への丸め , 2-19, 2-21
サイクル・カウンタ , 4-4, 19-26,
19-28
最長時間未使用（LRU）アルゴ
リズム（定義）, 6-81
最適化、DMA 性能の , 9-53 ～9-63
サブルーチン , 4-1
サブルーチンからの復帰（RTS）
命令 , 4-10

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引

サポート、テクニカル／カスタマ ,P-xli
算術演算 , 2-26
算術シフト , 2-1, 2-15
算術シフト（ASHIFT）命令 ,2-51
算術ステータスレジスタ（ASTAT）, 2-25
算術論理演算ユニット（ALU）
命令 , 2-30
算術論理演算ユニット、ALU を参照
サンプリング・エッジ、SPORT,
12-41
サンプリング・クロック周期、
UART, 13-8
サンプリング・ポイント、
UART, 13-8
しシーケンサ , 4-8
シーケンサ・ステータス・レジス
タ（SEQSTAT）, 4-4, 4-5
シーケンサ・レジスタ , 3-4
シグナル・インテグリティ ,18-14
システム・クロック（SCLK）,
8-1
システム・スタックの割当て ,4-63
システム・スタック、割当ての推
奨 , 4-63
システム設計 , 18-1 ～ 18-18高周波数設計に関する考慮事項 ,18-13
推奨および提案事項 , 18-14
推奨する参考文献 , 18-17
ポイント・ツー・ポイント接続 ,
18-13
システム設定レジスタ（SYSCFG）, 4-6システム・ソフトウェア・リセッ
ト , 3-13, 3-16システムとコア・イベントのマッ
ピング（表）, 4-20
システム内部インターフェース ,7-1
システム・リセット設定レジスタ（SYSCR）, 3-15
システム割込み , 4-19
システム割込みウェイクアップイ
ネーブル・レジスタ（SIC_IWR）, 4-27
システム割込みコントローラ（SIC）, 1-10, 4-19
システム割込み処理 , 4-22
システム割込みステータス・レジ
スタ（SIC_ISR）, 4-29
システム割込みマスク・レジスタ（SIC_IMASK）, 4-30
システム割込み割当てレジスタ 0（SIC_IAR0）, 4-32
システム割込み割当てレジスタ（SIC_IARx）, 4-32
実行 1（EX1）, 4-7
実行 2（EX2）, 4-7
実行 3（EX3）, 4-7
実行 4（EX4）, 4-7

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引 -31

索引

実行サイクル・カウント・レジス
タ（CYCLES およびCYCLES2）, 19-28
実行ユニット、コンポーネント ,
4-9
シフタ , 1-3, 2-1, 2-51 ～ 2-59
2 オペランド・シフト , 2-52
3 オペランド・シフト , 2-54
演算 , 2-52
演算フォーマット , 2-16
ステータス・フラグ , 2-56
即値シフト , 2-53, 2-54
データ型 , 2-15
命令 , 2-56
レジスタ・シフト , 2-53, 2-55
シフト , 2-1
時分割多重（TDM）モード ,12-50
SPORT、マルチチャンネル動作も参照
ジャンプ , 4-1
終端、SPORT ピン / ライン ,12-69
周波数、DEB, 7-11
周波数、EAB, 7-11
周波数、クロックとフレーム同期 ,12-33
受信 FIFO、SPORT, 12-26
受信エラー、SPI, 10-32
受信設定レジスタ（SPORTx_RCR1、
SPORTx_RCR2）, 12-18
出力、PPI、1 同期モード , 11-28
出力遅延ビット , 8-9

索引 -32出力として設定された PF ピン ,14-1
出力パッド・ディスエーブル、タイマ , 15-20
循環アドレッシング , 9-70
循環バッファ , 5-2
循環バッファのアドレッシング ,5-6
ラップアラウンド , 5-9
レジスタ , 5-6
順序付け
強弱 , 6-73
ロードとストア , 6-73
使用可能な帯域幅を超える DMA
トラフィック , 9-62
条件コード（CC）フラグ・ビッ
ト , 4-13
条件付き
JUMP 命令 , 4-10
分岐 , 4-14
分岐遅延 , 4-15
条件付き分岐 , 6-75
条件付き命令 , 2-24, 4-3
乗算器 , 2-1
アキュムレータ結果レジスタ
A[1: 0], 2-39, 2-40演算の整数モード・フォーマット , 2-16
結果 , 2-40, 2-41, 2-46
小数モード・フォーマット ,2-16
ステータス , 2-24
ステータス・ビット , 2-41
データ型 , 2-14

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引

動作 , 2-39
入力用オペランド , 2-39
飽和 , 2-41
丸め , 2-41
命令 , 2-41
命令のオプション , 2-43
乗算器選択（MSEL）フィールド ,8-4
乗算結果の小数フォーマット ,2-17
乗算結果の整数フォーマット ,2-17
小数、乗算 , 2-49
小数データ・フォーマット , D-1
小数点 , D-1, D-2
小数表現 , 2-4
小数モード , 2-14, D-6
状態遷移、RTC, 16-22
消費電力 , 8-25
ショート・ジャンプ（JUMP.S）
命令 , 4-11
除算プリミティブ（DIVS、
DIVQ）, 2-13, 2-38
シリアル・クロック周波数 , 10-8
シリアル・スキャン・パス , C-4
シリアル・データ転送 , 12-1
シリアル・ペリフェラル・イン
ターフェース（SPI）.SPI を参照
シリアル・ポート .SPORT を参照
シルアル通信 , 13-2
シングル 16 ビット演算 , 2-27
シングル・ステップ例外 , 4-47

す垂直ブランキング期間専用モー
ド、PPI, 11-20
数値
2 進 , 2-4
2 の補数 , 2-4
小数表現 , 2-4
データ・フォーマット , 2-12
符号なし , 2-4
数値フォーマット , D-1 ～ D-9
2 進乗算 , D-5
2 の補数 , D-1
整数モード , D-6
ブロック浮動小数点 , D-6
スーパーバイザ・スタック・ポイ
ンタ・レジスタ , 5-5
スーパーバイザ・モード , 1-5, 3-7
スキャン・パス , C-4
スクラッチパッド SRAM, 6-7
スケーリング、コア・タイマの ,15-54
スケジューリング、メモリ DMA,
9-60
スタート・アドレス・レジスタ(DMAx_START_ADDR）, 9-10
(MDMA_yy_START_ADDR）,
9-10
スタック , 4-3
スタック・ポインタ（SP）, 4-4
スタック・ポインタ（SP）・レジ
スタ , 5-5
スタック・ポインタ・アドレッシ
ングの前更新 , 5-12

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引 -33

索引

スティッキー・オーバーフロー・
ステータス , 2-37
ステータス信号 , 2-37
ステレオ・シリアル・データ ,12-2
ステレオ・シリアル・デバイス、
SPORT 接続 , 12-8
ステレオ・シリアル・フレーム同期モード , 12-54
ストア動作 , 6-72
ストアの順序付け , 6-73
ストール
パイプライン , 6-72
命令 , 4-8
ストップウォッチ機能、RTC,
16-2
ストリーム、メモリ DMA, 9-50
スリープ・モード , 1-24, 8-15
スループットDAB, 7-10
SPORT, 12-5
SRAM が提供する , 6-5
インターロック機能付きパイプ
ラインによる , 6-72
プログラマブル・フラグ , 14-24
スループット、DMA システムからの , 9-53
スレーブ
EBIU, 17-5
PAB, 7-6
スレーブ SPI デバイス , 10-6
スレーブ・セレクト、SPI, 10-13

索引 -34

せ制御ビットの一覧表、汎用タイマ ,15-47
制御レジスタ
復元 , 6-80
整数、乗算 , 2-49
整数データ・フォーマット , D-1
整数モード , 2-14, D-6
性能
DAB, 7-9
DEB, 7-11
DMA, 9-54
EAB, 7-11
PAB, 7-6
SDRAM, 17-64
プログラマブル・フラグ , 14-24
メモリ DMA, 9-52
メモリ DMA 転送 , 7-11
性能の最適化、DMA, 9-53 ～
9-63
製品識別レジスタ , 19-28
整列例外 , 6-77
設定
L1 SRAM, 6-1
SDC, 17-56
SDRAM クロック・イネーブル ,17-39
SPORT, 12-10
セット・アソシエイティブ（定義）, 6-81
セットアップEBIU 非同期メモリ・コント
ローラの , 17-12
セット（定義）, 6-81

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引

セマフォ , 18-5
クエリ , 18-6
コード例 , 18-6
ゼロオーバーヘッド・ループ・レ
ジスタ , 4-5
ゼロ拡張データ , 2-11
ゼロ・ステータス , 2-37
遷移
動作モード , 8-16, 8-20
センシティビティ、プログラマブ
ル・フラグ , 14-21
全二重 , 12-1, 12-4
SPI, 10-1
そ早期フレーム同期 , 12-43
送信エラー、SPI, 10-31
送信競合エラー、SPI, 10-32
送信クロック、シリアル（TSCLKx）ピン , 12-37
送信設定レジスタ（SPORTx_TCR1 and
SPORTx_TCR2）, 12-12
送信フレーム同期（TFS）ピン ,12-38
ソース・チャンネル、メモリ
DMA, 9-50
外側ループ・アドレス・インクリ
メント・レジスタ(DMAx_Y_MODIFY）, 9-21
(MDMA_yy_Y_MODIFY）,
9-21
外側ループ・カウント・レジスタ(DMAx_Y_COUNT）, 9-20
(MDMA_yy_Y_COUNT）, 9-20

ソフトウェア・ウォッチドッグ・
タイマ , 1-20, 15-54
ソフトウェア・リセット・レジス
タ（SWRST）, 3-17
ソフトウェア割込みハンドラ ,4-20
たダーティ（定義）, 6-81
帯域幅とメモリ DMA 動作 , 9-60
代替タイミング、シリアル・ポー
ト , 12-43
代替フレーム同期モード , 12-44
ダイナミック・パワー・マネジメ
ント , 1-1, 1-23, 8-1 ～ 8-32
ダイナミック・パワー・マネジメ
ント・コントローラ（DPMC）, 8-2, 8-12 ～ 8-32
タイマ , 1-17, 15-1 ～ 15-59
EXT_CLK モード , 15-40 ～15-41
PWM_OUT モード , 15-18 ～15-30
UART, 13-1
WDTH_CAP モード , 15-30 ～15-39
ウォッチドッグ , 1-20, 15-54 ～15-59
コア , 15-49 ～ 15-54
汎用 , 15-1 ～ 15-47
タイマ・イネーブル・レジスタ（TIMER_ENABLE）, 15-4
タイマ・カウンタ・レジスタ（TIMERx_COUNTER）,
15-11

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引 -35索引

タイマ周期レジスタ（TIMERx_PERIOD）, 15-12
タイマ・ステータス・レジスタ（TIMER_STATUS）, 15-7
タイマ設定レジスタ（TIMERx_CONFIG）, 15-9
タイマ・ディスエーブル・レジス
タ（TIMER_DISABLE）,
15-6
タイマ幅レジスタ（TIMERx_WIDTH）, 15-12
タイミング
Auto-Refresh, 17-50
SDRAM 仕様 , 17-64
SPI, 10-41
外部バッファ , 17-65
ペリフェラル , 7-2
タイミング例、SPORT の , 12-69
ダイレクト・メモリ・アクセス、
DMA を参照
タグ（定義）, 6-81
多重化された SDRAM アドレッ
シング方式（図）, 17-53
多重例外、1 つの命令による ,4-47
ダブル・フォルト条件 , 4-41
単一パルス生成、タイマ , 15-21
ち遅延
CAS 値の設定 , 17-42
DAB, 7-10
SDRAM, 17-37
SDRAM Read コマンド , 17-55

索引 -36

イベント処理 , 4-63
プログラマブル・フラグ , 14-24
割込みの処理時 , 4-51
遅延カウント・レジスタ（PPI_DELAY）, 11-11
遅延フレーム同期 , 12-43, 12-54
置換ポリシー , 6-40
定義 , 6-81
チャンネル
シリアル・セレクト・オフセッ
ト , 12-61
シリアル・ポート TDM, 12-61
定義、シリアル , 12-61
調停
DAB, 7-7
DCB, 7-7
DEB, 7-7
EAB, 7-11
遅延 , 7-10
直接マップ（定義）, 6-81
つ通常タイミング、シリアル・ポー
ト , 12-43
通常フレーム同期モード , 12-43
強い順序付けが必要 , 6-79てディープ・スリープ・モード ,1-24, 8-15
ディスエーブル
PLL, 8-18
RTC プリスケーラ , 16-21
汎用タイマ , 15-6, 15-16

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引

割込み、グローバル , 4-38
ディスクリプタ・キュー
管理 , 9-70
同期 , 9-70
ディスクリプタ構造、DMA, 9-69
データ I/O マスク・ピン , 17-43
データ SRAM
L1, 6-31
データ・アドレス・ジェネレータ
（DAG）, 5-1 ～ 5-22
アドレッシング・モード , 5-16
分岐用命令アドレスの提供 , 4-3
命令 , 5-17
例外 , 4-47
レジスタ , 2-5, 2-7
レジスタの変更 , 5-13
データ・ウォッチポイント・アド
レス・カウント値レジスタ（WPDACNTn）, 19-12
データ・ウォッチポイント・アド
レス・コントロール・レジス
タ（WPDACTL）, 19-13
データ・ウォッチポイント・アド
レス・レジスタ（WPDAn）,
19-12
データ格納フォーマット , 6-82
データ型 , 2-11 ～ 2-23
データ・キャッシュ制御命令 ,6-45
データ駆動型割込み , 9-34
データ操作、CPLB, 6-52
データ・テスト・コマンド・レジ
スタ（DTEST_COMMAND）,
6-47

データ・テスト・データ・レジス
タ（DTEST_DATAx）, 6-49
データ・テスト・レジスタ , 6-46
～ 6-50
データ転送
DMA, 7-9, 9-1
SPI, 10-3
データ・レジスタ・ファイル ,2-6
データのアンダーフロー , 12-39
データのオーバーフロー , 12-39
データのサンプリング、シリアル ,12-41
データの転送、シリアル・ポート ,12-46
データの転送、シリアル・ポートの動作 , 12-46
データ破壊、SPI で避ける ,10-24
データ・バス , 17-65
データ・フォーマット , 2-3 ～2-4, 2-11, 2-12
2 進乗算 , D-5
SPORT, 12-36
データ・マスクのエンコーディン
グ , 17-54
データ・メモリ、L1, 6-28 ～6-46
データ・メモリ・コントロール・
レジスタ（DMEM_CONTROL）, 6-28,
6-52
データ・レジスタ , 2-5, 3-4

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引 -37

索引

データ・レジスタ・ファイル ,2-5, 2-6
データ・ワード
UART, 13-7
シリアル・データ・フォーマット , 12-23
テクニカル・サポートお問い合わ
せ先 , P-xli
デスティネーション・チャンネ
ル、メモリ DMA, 9-50
テスト・アクセス・ポート（TAP）, C-1, C-2
コントローラ , C-2, C-3
テスト機能 , C-1 ～ C-7
テスト・クロック（TCK）, C-6
デバイザ、UART, 13-13
デバイザのリセット、UART,
13-14
デバッグ機能 , 19-1
デバッグ・コントロール・レジス
タ（DBGCTL）, 3-18
デュアル 16 ビット演算 , 2-27
電圧 , 8-25
制御 , 8-13
動的制御 , 8-25
変更 , 8-30
電圧制御発信器（VCO）, 8-3
電圧レギュレータ , 1-25
電圧レギュレータ・コントロー
ル・レジスタ（VR_CTL）,
8-27
転送開始コマンド , 10-26
転送カウント・レジスタ（PPI_COUNT）, 11-11

索引 -38転送速度
ペリフェラル DMA チャンネル ,9-53
メモリ DMA チャンネル , 9-53
伝送フォーマット
SPORT, 12-2と同期
DMA の , 9-63 ～ 9-74
ディスクリプタ・キューの ,
9-70
割込みベースの方式 , 9-64
同期シリアル・データ転送 , 12-1
投機的ロード実行 , 6-75
動作モード , 3-1 ～ 3-22, 8-13
PPI, 11-7
アクティブ , 1-23, 8-14
休止状態 , 1-25, 8-16
スリープ , 1-24, 8-15
遷移 , 8-16
ディープ・スリープ , 1-24, 8-15
フル・オン , 1-23, 8-14動作モード遷移 , 8-20
読者、対象 , P-xxxv
トラフィック制御、DMA, 9-55
～ 9-57
トレース・バッファ
読出し , 19-17
トレース・バッファ・コントロー
ル・レジスタ（TBUFCTL）,
19-17

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引

トレース・バッファ・ステータ
ス・レジスタ（TBUFSTAT）,
19-18
トレース・バッファ例外 , 4-47
トレース・バッファ・レジスタ（TBUF）, 19-19
トレース・ユニット , 19-16 ～19-19
な内部アドレス・マッピング（表）,17-48
内部／外部フレーム同期 . フレー
ム同期を参照内部電源レギュレータ、遮断 ,8-31
内部バンク , 17-27
内部メモリ , 1-7, 6-5
インターフェース , 17-5波形の生成、パルス幅変調 ,15-21に入力クロック（CLKIN）, 8-1
入力遅延ビット , 8-9
入力と出力 , 2-26
ねネガティブ・ステータス , 2-37
ネクスト・ディスクリプタ・ポイ
ンタ・レジスタ(DMAx_NEXT_DESC_PTR）,
9-8(MDMA_yy_NEXT_DESC_PT

R）, 9-8
ネストされた ISR
エピローグ・コード例 , 4-56
プロローグ・コード例 , 4-56
ネストされた割込み , 4-37, 4-54
ロギング , 4-57
ネストされた割込みの処理（図）,4-55
ネストされた割込みのロギング ,4-57
ネストされていない割込み , 4-53
ネストされていない割込みの処理（図）, 4-53
はバースト・タイプ , 17-26
バースト長 , 17-26, 17-55
ハードウェア・エラー、複数 ,4-49
ハードウェア・エラー割込み（HWE）, 4-48
原因 , 4-49
ハードウェア・エラー割込みを引き起こすハードウェア条件（表）, 4-50
ハードウェア・リセット , 3-13
ハーバード・アーキテクチャ ,6-7
バイアスされた丸め , 2-19
バイアスのない丸め , 2-19
排他的（定義）, 6-81
バイト・アドレス , 17-48
バイト・イネーブル , 17-24
バイト順 , 2-13

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引 -39索引

バイナリ・デコード , C-4
バイパス・モード , 3-19
バイパス・レジスタ , C-6
パイプライン
インターロック機能付き , 6-72
図 , 4-8
長さ , 9-65
命令 , 4-2, 4-7
割込み発生時の命令 , 4-58
パイプライン処理、SDC による ,17-41
バウンダリスキャン・アーキテク
チャ , C-2
バウンダリスキャン・レジスタ ,C-7
バス
DAB、DCB、DEB、EAB、PAB も参照
オンチップ , 7-2
階層 , 7-2と DMA, 9-53
負荷 , 18-14
ペリフェラル , 7-5
優先順位付けと DMA, 9-55
バス・エージェント
DAB, 7-10
PAB, 7-6
バス・エラー、EBIU, 17-9
バス競合の回避 , 17-16, 18-12
バス要求と許可 , 17-65
パッキング、シリアル・ポート ,
12-67
バッファ
キャッシュ可能性保護

索引 -40

Lookaside バッファ（CPLB）,
6-13, 6-51, 6-52
タイミング、外部 , 17-65
バッファへの後更新アクセス ,5-8
パフォーマンス・モニタ・カウン
タ・レジスタ（PFCNTRn）,
19-21
パフォーマンス・モニタ・コント
ロール・レジスタ（PFCTL）,
19-22
パフォーマンス・モニタリング・ユニット , 19-21
パブリック命令 , C-4, C-5
パラレル・ペリフェラル・イン
ターフェース（PPI）.PPI を参照
バリッド・ビット
クリア , 6-45
パルス幅カウントおよびキャプ
チャ・モード .WDTH_CAP
モードを参照パルス幅変調モード .PWM_OUT
モードを参照バレル・シフタ、シフタを参照
パワーアップ , 17-28
シーケンス , 17-60, 17-64
パワーアップ・シーケンス、
SDRAM, 17-36
パワーダウン警告、NMI として ,4-42
パワー・ドメイン , 8-25
パワー・マネジメント , 1-23, 8-1～ 8-32ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引

範囲
符号付き数値の , D-4
バンク・アドレス , 17-48
バンク・サイズ , 17-32, 17-48
バンク・サイズのエンコーディン
グ（表）, 17-52
バンク幅 , 17-32, 17-48
汎用 I/O（GPIO）
ピン , 14-1
汎用タイマ , 15-1 ～ 15-47
PULSE_HI トグル・モード ,15-25
PWM_OUT モードでの停止 ,15-23
イネーブル , 15-4, 15-16
オートボー・モード , 15-38
クロック源 , 15-2
出力パッド・ディスエーブル ,15-20
制御ビットの一覧表 , 15-47
単一パルス生成 , 15-21
ディスエーブル , 15-6, 15-16と PPI, 15-41
同時にイネーブル , 15-3波形の生成 , 15-21
モード , 15-1
レジスタ , 15-2
レジスタへのアクセスのサイズ ,15-4
割込み , 15-3, 15-7, 15-22, 15-42
汎用モード、PPI, 11-22
汎用割込み , 4-20, 4-51
複数のペリフェラル割込みのある , 4-32

ひ非 OS 環境 , 3-7
ビクティム（定義）, 6-81
非シーケンシャルなプログラム構造 , 4-1
非シーケンシャルなプログラム動
作 , 4-9非整列のメモリ操作 , 6-77
未実装メモリ , 17-10
ビット順序、選択 , 12-36
ビット操作
ビット・クリア , 2-55
ビット・セット , 2-55
ビット・テスト , 2-55
ビット・トグル , 2-55
ビット反転 , 5-1
ビット反転アドレッシング , 5-9
ビット反転キャリー・アドレス ,5-1
ビデオ ALU
演算 , 2-38
命令 , 5-14
ビデオ・データ転送
PPI による , 11-35
非同期アクセス、コアによる ,17-18
非同期インターフェースを利用可
能 , 17-1
非同期書込み , 17-20
非同期コントローラ , 1-12
非同期シリアル・インターフェース（UART）ポート , 1-18
非同期シルアル通信 , 13-2
非同期メモリ , 17-2, 17-9

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引 -41

索引

非同期メモリ・グローバル・コン
トロール・レジスタ（EBIU_AMGCTL）, 17-10
非同期メモリ・コ ントローラ.AMC を参照
非同期メモリ・バンク・コント
ロール・レジスタ（EBIU_AMBCTLx）, 17-12
非同期メモリ・バンクのアドレス
範囲（表）, 17-10
非同期読出し , 17-18
表記規則 , P-xlvii
ピン , 18-1
SPORT, 12-4
ピン終端、SPORT, 12-69
ふフィールド全体モード、PPI,
11-19
ブート , 18-2
ブート ROM
ユーザ・コードの読出し , 3-20
ブート・カーネル , 3-20
ブート・モード , 1-26
フェッチ・アドレス , 4-8
インクリメント , 4-8
フェッチされたアドレス , 4-2
複数のスレーブ SPI システム ,10-15
複数の割込みソース , 4-24, 4-57
輻輳、DMA チャンネル上の ,9-62
符号拡張データ , 2-11
符号付き数値 , 2-3, D-1

索引 -42

範囲 , D-4
符号なし数値 , 2-4
データ・フォーマット , 2-12
符号なし整数 , D-1
不正な組合わせ , 4-47
復帰アドレス , 4-3
CALL 命令の , 4-10
復帰アドレス・レジスタ , 4-4
復帰命令 , 4-10
プッシュ、マニュアル , 4-3
プライベート命令 , C-4
フラグ、オーバーフロー , 2-13
フラグ極性レジスタ（FIO_POLAR）, 14-20
フラグ・クリア・レジスタ（FIO_FLAG_C）, 14-9
フラグ設定レジスタへのコア・ア
クセス , 14-5
フラグ・セット・オン・ボス・
エッジ・レジスタ（FIO_BOTH）, 14-22
フラグ・セット・レジスタ（FIO_FLAG_S）, 14-9
フラグ値レジスタ , 14-6
フラグ・データ・レジスタ（FIO_FLAG_D）, 14-9
フラグ・トグル・レジスタ（FIO_FLAG_T）, 14-9
フラグ入力イネーブル・レジスタ（FIO_INEN）, 14-23
フラグ、プログラマブル . プログ
ラマブル・フラグを参照
フラグ方向レジスタ（FIO_DIR）,
14-5

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引

フラグ・マスク割込み A クリア・レジスタ（FIO_MASKA_C）,
14-12
フラグ・マスク割込み A セット・レジスタ（FIO_MASKA_S）,
14-12
フラグ・マスク割込み A データ・レジスタ（FIO_MASKA_D）,
14-16
フラグ・マスク割込み A トグル・
レジスタ（FIO_MASKA_T）,
14-16
フラグ・マスク割込み B クリア・レジスタ（FIO_MASKB_C）,
14-12
フラグ・マスク割込み B セット・レジスタ（FIO_MASKB_S）,
14-12
フラグ・マスク割込み B データ・レジスタ（FIO_MASKB_D）,
14-18
フラグ・マスク割込み B トグル・
レジスタ（FIO_MASKB_T）,
14-19
フラグ・マスク割込みレジスタ ,14-12
フラグ、割込み生成 , 14-1, 14-14
フラグ割込みセンシティビティ・
レジスタ（FIO_EDGE）,
14-21
フラッシュ・メモリ , 1-8, 17-1
プリスケーラ、RTC, 16-1
ディスエーブル , 16-21
プリチャージ遅延、選択 , 17-44

フル・オン・モード , 1-23, 8-14
フレーム開始検出、PPI, 11-13
フレーム付きシリアル転送、特性 ,12-39
フレーム付き／フレームなし、シリアル・データ , 12-38
フレーム付き／フレームなしデー
タ , 12-38
フレーム同期 , 12-2
GP モードでの PPI, 11-30
SPORT のオプション , 12-38
アクティブ・ハイ／ロー , 12-41
外部／内部 , 12-40
サンプリング・エッジ , 12-41
設定 , 12-35
早期 , 12-43
早期／遅延 , 12-43
遅延 , 12-43と SPORT, 12-3
内部 , 12-33
内部生成された , 12-32
マルチチャンネル・モード ,12-56
フレーム同期極性、PPI とタイマ ,11-31
フレーム同期信号の制御 , 12-16,
12-21
フレーム同期パルス
生成時 , 12-16の使用 , 12-16
フレーム・トラック・エラー ,
11-9, 11-13
フレーム・ポインタ（FP）, 4-4

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引 -43

索引

フレーム・ポインタ（FP）・レジ
スタ , 5-5
フレックス・ディスクリプタ ,9-49
フレックス・ディスクリプタ構造 ,9-35
ブロードキャスト・モード , 10-3,
10-15, 10-24
プローブ、オシロスコープ ,18-15
付録 , P-xl
プログラマブルなタイミング特性、EBIU, 17-17
プログラマブル・フラグ , 1-21,
14-1 ～ 14-24
エッジ・センシティブ , 14-21
極性 , 14-20システム MMR, 14-5
スループット , 14-24
スレーブ・セレクト , 10-13
遅延 , 14-24
ピン、割込み , 14-1
レベル・センシティブ , 14-21
プログラマブル・フラグ・ピン、
PPI 用 , 11-1
プログラミング・モデル
EBIU, 17-8
キャッシュ・メモリ , 6-5
プログラム・カウンタ（PC）,
4-2
プログラム・カウンタ・レジスタ（PC）
PC 相対オフセット , 4-11
PC 相対の間接 JUMP 命令と索引 -44

CALL 命令 , 4-12
プログラム構造、非シーケンシャ
ル , 4-1
プログラム・シーケンサ , 4-1 ～4-65
プログラム・フロー , 4-1
プロセッサ・コア・アーキテク
チャ , 2-2
プロセッサ状態
アイドル , 3-10
リセット , 3-11
プロセッサのブロック図 , 1-2プロセッサ・モード
IPEND を調べる , 3-1
エミュレーション , 3-9
決定 , 3-1
識別 , 3-2
図 , 3-3
スーパーバイザ , 3-7
ユーザ , 3-3
ブロック図
EBIU, 17-4
PLL, 8-3
RTC, 16-2
SDRAM, 17-33
SPI, 10-2
SPORT, 12-5
コア , 7-3
コア・タイマ , 15-49, 15-50
バス階層 , 7-2プロセッサ , 1-2
割込み処理 , 4-24
ブロック浮動小数点フォーマット ,D-6

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引

分岐 , 4-10
分岐、条件付き , 4-14
分岐ターゲット , 4-12
分岐遅延 , 4-10
条件付き分岐 , 4-15
無条件分岐 , 4-15
分岐予測 , 4-15
へ
並列リフレッシュ・コマンド ,17-43
ページ・サイズ , 17-29, 17-48
ベース・レジスタ（B[3:0]）, 5-7,
2-8, 5-2
ペリフェラル , 1-1 ～ 1-3
IVG 優先順位に設定 , 4-34
SPI 互換の , 10-1
タイミング , 7-2
割込みソース , 4-29
割込みを生成 , 4-22
ペリフェラル DMA スタート・ア
ドレス・レジスタ , 9-10
ペリフェラル DMA チャンネル ,9-53
ペリフェラル・エラー割込み ,9-34
ペリフェラル・シリアル・デバイ
スに I/O インターフェースを
提供 , 12-1
ペリフェラル・バス .PAB を参照
ペリフェラル・マップ・レジスタ(DMAx_PERIPHERAL_MAP）,
9-29(MDMA_yy_PERIPHERAL_M

AP）, 9-29
ペリフェラル割込み , 4-20
相対的な優先順位 , 4-32
ソースのマスク , 4-30
ほポインタ・レジスタ , 2-7, 3-4
ポインタ・レジスタの変更 , 5-13
ポインタ・レジスタ・ファイル ,2-5
ポイント・ツー・ポイント接続 ,
18-13
ポート接続
SPORT, 12-7
ポート幅、PPI, 11-5
ホールド、EBIU 非同期メモリ・
コントローラの , 17-12
ボーレート、UART, 13-7, 13-8,
13-14
ボーレート値、SPI, 10-9
保護された命令 , 3-4
保護されたリソース , 3-4
保護リソースの不正使用 , 4-47
ポストインクリメント , 5-1
ポップ、マニュアル , 4-3
ま前更新 , 5-1
前更新命令 , 5-12
マスク不能割込み , 4-42
マスク不能割込みからの復帰（RTN）命令 , 4-10
マスター
DAB, 7-10

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引 -45

索引

PAB, 7-6
マニュアル
最新情報 , P-xl
読者 , P-xxxv
内容 , P-xxxvi
マニュアル、関連資料 , P-xliii
マルチチャンネル動作、SPORT,
12-50 ～ 12-68
マルチチャンネルフレーム ,12-57
マルチチャンネルフレーム遅延フィールド , 12-58
マルチチャンネル・モード ,12-50
SPORT, 12-56
イネーブル／ディスエーブル ,12-54
フレーム同期 , 12-56
マルチマスター環境
SPI, 10-2
丸め
最近値 , 2-19
バイアスされた , 2-19, 2-21
バイアスのない , 2-19
命令 , 2-19, 2-23
み未定義命令 , 4-47
む
無効化
命令キャッシュの , 6-22

索引 -46

無効なキャッシュ・ライン（定義）, 6-82
無条件分岐
分岐ターゲット・アドレス ,4-15
分岐遅延 , 4-15
無条件分岐の分岐ターゲット・ア
ドレス , 4-15
め命令
ALU, 2-30, 2-32
DAG, 5-17, 5-18
インターロック機能付きパイプ
ライン , 6-72
シフタ , 2-56
条件付き , 2-24, 4-3
乗算器 , 2-41
ストール , 4-8
同期 , 6-74
幅 , 4-8
保護された , 3-4
無効化 , 4-8
命令セット , 1-27
メモリに格納された , 6-71
レジスタ・ファイル , 2-8
ロード／ストア , 6-72
割込み発生時のパイプライン内 ,4-58
命令アドレス , 4-3
命令ウォッチポイント , 19-5
命令ウォッチポイント・アドレ
ス・カウント・レジスタ（WPIACNTn）, 19-6, 19-7

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引

命令ウォッチポイント・アドレ
ス・コントロール・レジスタ（WPIACTL）, 19-8
命令ウォッチポイント・アドレ
ス・レジスタ（WPIAn）,
19-6
命令キャッシュ
管理 , 6-20 ～ 6-23
コヒーレンシ , 6-20
無効化 , 6-22
命令整列ユニット , 4-8
命令セット , 1-6, 1-27
命令デコード（DEC）, 4-7
命令テスト・コマンド・レジスタ（ITEST_COMMAND）, 6-25
命令テスト・データ・レジスタ（ITEST_DATAx）, 6-26
命令テスト・レジスタ , 6-23 ～
6-27
命令の処理、パイプライン内の命
令 , 4-58
命令の幅 , 4-8
命令の無効化 , 4-8
命令パイプライン , 4-2, 4-7
命令パイプラインの段（表）, 4-7
命令ビットのスキャン順序 , C-4
命令フェッチ , 6-52
命令フェッチ 1（IF1）, 4-7
命令フェッチ 2（IF2）, 4-7
命令フェッチ 3（IF3）, 4-7
命令フェッチ時間ループ , 4-18
命令フェッチで CPLB ミス , 4-47
命令フェッチでアクセス例外 ,4-47

命令フェッチで非整列アクセス ,4-47
命令フェッチで複数の CPLB
ヒット , 4-47
命令フェッチで保護違反 , 4-47
命令メモリ・コントロール・レジ
スタ（IMEM_CONTROL）,
6-8, 6-52
命令メモリ・ユニット , 4-8
命令ループ・バッファ , 4-18
命令レジスタ , C-2, C-4
メモリ , 1-8
L1 データ , 6-28 ～ 6-46
L1 データ SRAM, 6-31
L1 命令メモリ・サブバンクの開始位置 , 6-12
SPORT との間でデータを転送 ,
12-46アーキテクチャ , 1-6, 6-1 ～ 6-8
アドレス整列 , 5-14
オフチップ , 1-8
外部 , 1-8, 6-51
外部 SDRAM, 17-52
外部メモリ , 17-6
管理 , 6-51
キャッシュ , 6-1
設定 , 6-2
トランザクション・モデル ,6-71
内部 , 1-7
内部バンク , 17-27
非整列の操作 , 6-77
未実装 , 17-10
非同期インターフェース , 18-7

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引 -47

非同期領域 , 17-2
ページ・ディスクリプタ・テー
ブル , 6-55
保護された , 3-5
保護とプロパティ , 6-51 ～ 6-69
マップ , 6-3
命令を格納する方法 , 6-71
用語集 , 6-80 ～ 6-82
メモリ DMA, 9-50 ～ 9-52
スケジューリング , 9-60
帯域幅 , 9-52
チャンネル , 9-50
転送性能 , 7-11
転送動作、開始 , 9-51
優先順位 , 9-60
レジスタの命名規則 , 9-7
ワード・サイズ , 9-51
メモリ操作の整列 , 6-77
メモリ・ページ , 6-53
特性 , 6-53
メモリ・マップ
外部（図）, 17-3
メモリマップド・レジスタ（MMR）, 6-79 ～ 6-80
メモリ・マネジメント・ユニット（MMU）, 1-5, 6-51
もモード
SPI スレーブ , 10-1, 10-28
SPI マスター , 10-3, 10-26
UART DMA, 13-18
UART 非 DMA, 13-16
エミュレーション , 1-5, 4-40

索引 -48

シリアル・ポート , 12-10
スーパーバイザ , 1-5
動作 , 1-5
バイパス , 3-19
汎用タイマの , 15-1
ブート , 1-26, 3-20
ブロードキャスト , 10-3, 10-15,
10-24
マルチチャンネル , 12-50
ユーザ , 1-5
モード・フォルト・エラー , 10-7,
10-30
モード・レジスタ , 17-28
モディファイ , 5-1
モディファイ・アドレッシング ,5-4
モディファイ（定義）, 6-81
モディファイ・レジスタ（M[3:0]）, 2-8, 5-2, 5-7
ゆ有効（定義）, 6-82
有効ビット
機能 , 6-15
キャッシュ・ラインの置換の ,6-19
図 , 6-27
命令キャッシュの無効化の ,6-22
ユーザ・スタック・ポインタ（USP）, 3-7, 5-6
ユーザ・スタック・ポインタ（USP）・レジスタ , 5-5
ユーザ・モード , 1-5

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

アクセス可能なレジスタ , 3-3
入り方 , 3-5
復帰 , 3-6
保護された命令 , 3-4
優先順位
ペリフェラル DMA 動作 , 9-60
メモリ DMA 動作 , 9-60
優先順位付けDMA, 9-55 ～ 9-57
優先順位の降順に示した例外（表）, 4-47
よ容量性負荷 , 17-24, 18-14
予備の SDRAM, 17-2
読み出しアクセス、EBIU 非同期
メモリ・コントローラの ,17-12
読出し、非同期 , 17-18
らライトスルー（定義）, 6-82
ライト・バック（WB）, 4-7
ライトバック（定義）, 6-82
ライン終端、SPORT, 12-69
ラインズ・パー・フレーム（PPI_FRAME）レジスタ ,11-12
ラウンド・ロビン・スケジューリ
ング、メモリ DMA, 9-60
ラッチされた割込み要求 , 4-36
ラップアラウンド・バッファ ,5-9り
リアルタイム・クロック . RTC を参照
リセット
SPI への効果 , 10-4
ウォッチドッグ・タイマ , 3-13,
3-16
コアオンリー・ソフトウェア ,3-14, 3-18, 3-20
コア・ダブル・フォルト , 3-14
システム・ソフトウェア , 3-13,
3-16
初期化シーケンス
割込みのプログラム , 4-31
ハードウェア , 3-13, 8-15
メモリ設定の効果 , 6-30
リセット状態 , 3-11
リセット・ベクトル , 4-42
リセット・ベクトル・アドレス（表）, 4-41
リセット・モード , 18-1
リセット割込み（RST）, 4-41
リソースの共有、セマフォによる ,18-5
リソース、保護された , 3-4
リトル・エンディアン（定義）,6-82
リフレッシュ、並列 , 17-43
リフレッシュ・レート、SDRAM,
18-10
利用可能な SDRAM デバイス ,17-47

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引-49

る
累算なしの乗算 , 2-47
ループ , 4-1
終了条件 , 4-3
条件、評価 , 4-5
トップ・アドレス、ボトム・ア
ドレス , 4-18
バッファ , 4-18
無効 , 4-18
命令フェッチ時間 , 4-18
レジスタ , 4-4, 4-6
ループ・カウンタ・レジスタ（LC）, 4-5
ループ条件の評価 , 4-5
ループ・トップ・レジスタ（LT）,
4-5
ループ・ボトム・レジスタ（LB）,
4-5
れ
例外 , 4-1
イベント , 4-42
原因となるイベント , 4-44
多重 , 4-47
遅延 , 4-58
パイプライン内の命令の処理 ,4-58
ハンドラ、実行 , 4-48
例外ハンドラの実行中 , 4-48
例外イベント , 3-4
例外からの復帰（RTX）命令 ,4-10
例外処理の遅延 , 4-58
例外ルーチン、コード例 , 4-61

索引 -50レジスタ
コア , A-1 ～ A-10
システム , B-1 ～ B-16
製品識別 , 19-28
表記規則 , P-xlviii
メモリマップド、コア , A-1 ～A-10
ユーザ・モードでアクセス可能 ,3-4
レジスタ間移動 , 4-15
レジスタ・ファイル , 2-5 ～ 2-10
レジスタ・ファイル命令 , 2-8
レジスタ命令、条件付分岐 , 4-10
列アドレス
ストローブ遅延 , 17-27
列アドレス , 17-48
レベル 1（L1）データ・メモリ ,6-1, 6-28 ～ 6-46
サブバンク , 6-32
トラフィック , 6-28
レベル 1（L1）命令メモリ , 6-1,
6-8 ～ 6-23
DAG リファレンスの例外 , 6-11
構成 , 6-13
構造 , 6-13
サブバンク , 6-12
サブバンク構造 , 6-8
命令キャッシュ , 6-13
レベル 1（L1）メモリ , 1-5, 6-1,
6-7
レベル 1（L1）命令メモリも参照レベル 2（L2）メモリも参照
アドレス整列 , 6-11

ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

スクラッチパッド・データ
SRAM, 6-7
定義 , 6-82
レベル 1（L1）データ・メモリ ,6-1
レングス・レジスタ（L[3:0]）,2-8, 5-2, 5-7
レンジ
CALL 命令 , 4-12
JUMP 命令 , 4-11
条件付き分岐 , 4-14
ろロード／ストア命令 , 5-5
ロード、投機的実行 , 6-75
ロード動作 , 6-72
ロードの順序付け , 6-73
ロック転送、DMA, 7-10
ロング・ジャンプ（JUMP.L）命
令 , 4-11
論理演算 , 2-26
論理シフト , 2-1, 2-15
論理シフト（LSHIFT）命令 ,
2-51
わ
ワード長
SPI, 10-9
SPORT, 12-35
SPORT 受信データ , 12-27
SPORT 伝送 , 12-2
SPORT を通じて送信されるデータの , 12-23
ワード（定義）, 2-6

割込み , 4-1
DMA エラー , 9-35
DMA キュー完了 , 9-73
PF ピン , 14-1
RTC, 16-13
SPI エラー , 10-7
SPORT RX, 12-27, 12-30
SPORT TX, 12-24, 12-30
SPORT エラー , 12-30
UART の優先順位の割当て ,13-12
イネーブルとディスエーブル ,6-79
共有される , 4-32
グローバルなイネーブル／ディ
スエーブル , 4-38
システムの制御 , 4-19
処理 , 4-3, 4-22, 4-51
設定とサービス , 18-4
ソース、ペリフェラル , 4-29
タイマ , 15-7
定義 , 4-19
ディスクリプタ・キューの処理に使用 , 9-70
ネストされた , 4-37, 4-54
ネストされていない , 4-53
ハードウェア・エラー , 4-48
汎用 , 4-20, 4-51
汎用タイマ , 15-3, 15-22, 15-42
複数のソース , 4-24
プロセッサ , 14-12
ペリフェラル , 4-20
ペリフェラルにより生成 , 4-22
割込みのウォーターマーク ,ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス

索引-51

6-43
割込みイネーブル（STI）命令 ,6-80, 8-22
割込みイネーブル、グローバル ,4-38
割込みからの復帰（RTI）命令 ,4-10
割込みサービス・ルーチン
割込みのソースを確認 , 4-29
割込み出力、SPI, 10-7
割込み条件、UART, 13-11
割込みステータス・レジスタ(DMAx_IRQ_STATUS）, 9-32
(MDMA_yy_IRQ_STATUS）,
9-32
割込みチャンネル、UART, 13-9
割込みディスエーブル（CLI）命
令 , 6-80
割込みのグローバルなイネーブル／ディスエーブル , 4-38
割込みの処理 , 4-51
割込みハンドラと DMA 同期 , 9-72
割込み優先順位レジスタ（IPRIO）, 6-43

索引 -52ADSP-BF533 Blackfin プロセッサ・ハードウェア・リファレンス