本ドキュメントはCypress (サイプレス) 製品に関する情報が記載されております。 富士通半導体デバイス CM71-10111-6 CONTROLLER MANUAL FR60 32 ビット・マイクロコントローラ MB91307 Series ハードウェアマニュアル FR60 32 ビット・マイクロコントローラ MB91307 Series ハードウェアマニュアル 富士通株式会社 はじめに ■ 本書の目的と対象読者 富士通半導体製品につきまして , 平素より格別のご愛顧を賜り厚くお礼申し上げます。 MB91307 シリーズは , 32 ビット高性能 RISC CPU を使用し , 高性能 / 高速な CPU 処理 が要求される組込み制御用に各種 I/O リソースやバス制御機構を内蔵した , 標準シング ルチップマイクロコントローラです。32 ビット CPU がアクセスする広大なアドレス空 間をサポートするために , 外部バスアクセスが基本となっていますが , CPU の命令実行 高速化のために1Kバイトの命令キャッシュメモリと大容量のRAMを内蔵しています。 DVD プレーヤ , ナビゲーションシステム , 高性能 FAX, プリンタ制御等 , 高性能な CPU 処理パワーが要求される組込み用途に最適な仕様となっています。 MB91307 シリーズは , FR30/40 CPU をベースにバスアクセスの強化を行い , より高速で の使用に対応した FR60 です。 本書は , 実際に MB91307 シリーズを使用して製品を開発される技術者を対象に , MB91307 シリーズの機能や動作について解説したものです。本書を一読ください。 なお , 各種命令の詳細については , 『インストラクションマニュアル』をご参照くださ い。 ■ 商標 FR は , FUJITSU RISC controller の略で , 富士通株式会社の製品です。 ■ ライセンス 本製品には , お客様が Philips 社の定めた I2C 標準仕様書に従う I2C システムの中で使 用されることを条件に , Philips 社 I2C 特許がライセンスされております。 Purchase of FUJITSU Ltd, I2C components conveys a license under the Philips I2C Patent Right to use, these components in an I2C system provided that the system conforms to the I2C Standard Specification as defined by Philips. i ■ 本書の全体構成 本書は , 以下に示す 15 の章および付録から構成されています。 第 1 章 概要 この章では , MB91307 シリーズの特長 , ブロックダイヤグラム , 機能概要など全体 を知るための基本的なことについて説明します。 第 2 章 デバイスの取扱いについて MB91307 シリーズの取扱いに関して , 端子処理のしかたや , 電源の取扱いの注意な どについて説明します。 第 3 章 CPU および制御部 この章では , MB91307 シリーズの機能を知るために , アーキテクチャ, 仕様 , 命令な どの基本的なことについて説明します。 第 4 章 外部バスインタフェース この章では , 外部バスインタフェースの基本事項 , レジスタ構成 / 機能 , 外部バスの 動作および外部バスの各種タイミングについて説明します。 第 5 章 I/O ポート この章では , I/O ポートの概要およびレジスタ構成 / 機能について説明します 第 6 章 16 ビットリロードタイマ この章では , 16 ビットリロードタイマの概要 , レジスタの構成 / 機能および 16 ビッ トリロードタイマの動作について説明します。 第 7 章 U-TIMER この章では , U-TIMER の概要 , レジスタの構成 / 機能および U-TIMER の動作につ いて説明します。 第 8 章 外部割込み /NMI 制御部 この章では , 外部割込み /NMI 制御部の概要 , レジスタの構成 / 機能および外部割込 み /NMI 制御部の動作について説明します。 第 9 章 遅延割込みモジュール この章では , 遅延割込みモジュールのレジスタ構成および機能について説明しま す。 第 10 章 割込みコントローラ この章では , 割込みコントローラの概要 , レジスタ構成 / 機能 , 割込みコントローラ の動作およびホールドリクエスト取下げ要求機能の使用例について説明します。 第 11 章 A/D コンバータ この章では , A/D コンバータの概要 , レジスタの構成 / 機能および A/D コンバータ の動作について説明します。 第 12 章 UART この章では , UART の概要 , レジスタの構成 / 機能および UART の動作について説 明します。 第 13 章 I2C インタフェース この章では , I2C インタフェースの概要 , レジスタの構成 / 機能および I2C インタ フェースの動作について説明します。 ii 第 14 章 DMA コントローラ (DMAC) この章では , DMAC の概要 , レジスタの構成 / 機能および DMAC の動作について説 明します。 第 15 章 ビットサーチモジュール この章では , ビットサーチモジュールの概要 , レジスタの構成 / 機能およびビット サーチモジュールの動作について説明します。 付 録 付録として, I/Oマップ , 割込みベクタ, CPUステートでの端子状態 , リトルエンディ アン領域を利用するときの注意事項および命令一覧について , 本文に記載できな かった細かいことや , プログラミングするときに参照することがらを記載していま す。 • • • • • • 本資料の記載内容は , 予告なしに変更することがありますので , ご用命の際は当社営業担当部門にご確認 ください。 本資料に記載された動作概要や応用回路例は , 半導体デバイスの標準的な動作や使い方を示したもので , 実際に使用する機器での動作を保証するものではありません。従いまして , これらを使用するにあたって はお客様の責任において機器の設計を行ってください。これらの使用に起因する損害などについては , 当 社はその責任を負いません。 本資料に記載された動作概要・回路図を含む技術情報は , 当社もしくは第三者の特許権 , 著作権等の知的 財産権やその他の権利の使用権または実施権の許諾を意味するものではありません。また , これらの使用 について , 第三者の知的財産権やその他の権利の実施ができることの保証を行うものではありません。従 いまして , これらの使用に起因する第三者の知的財産権やその他の権利の侵害について , 当社はその責任 を負いません。 本資料に記載された製品は , 通常の産業用 , 一般事務用 , パーソナル用 , 家庭用などの一般的用途に使用 されることを意図して設計・製造されています。極めて高度な安全性が要求され , 仮に当該安全性が確保 されない場合 , 社会的に重大な影響を与えかつ直接生命・身体に対する重大な危険性を伴う用途 ( 原子力 施設における核反応制御 , 航空機自動飛行制御 , 航空交通管制 , 大量輸送システムにおける運行制御 , 生 命維持のための医療機器 , 兵器システムにおけるミサイル発射制御をいう ) , ならびに極めて高い信頼性 が要求される用途 ( 海底中継器 , 宇宙衛星をいう ) に使用されるよう設計・製造されたものではありませ ん。したがって , これらの用途にご使用をお考えのお客様は , 必ず事前に当社営業担当部門までご相談く ださい。ご相談なく使用されたことにより発生した損害などについては , 責任を負いかねますのでご了承 ください。 半導体デバイスはある確率で故障が発生します。当社半導体デバイスが故障しても , 結果的に人身事故 , 火災事故 , 社会的な損害を生じさせないよう , お客様は , 装置の冗長設計 , 延焼対策設計 , 過電流防止対策 設計 , 誤動作防止設計などの安全設計をお願いします。 本資料に記載された製品が ,「外国為替および外国貿易法」に基づき規制されている貨物または技術に該 当する場合には , 本製品を輸出するに際して , 同法に基づく許可が必要となります。 Copyright© 2001-2006 FUJITSU LIMITED All rights reserved iii 本書の読み方 ■ 本書の記述形式 以下に , 本書で使用する主要な用語に関しての説明を示します。 用語 意 味 I-bus 内部インストラクション用の 32 ビット幅のバスです。FR ファミリは , 内部ハーバードアーキテクチャを採用しているため , 命令とデータは独 立したバスです。I-bus には , バスコンバータが接続されます。 D-bus 内部 32 ビット幅のデータバスです。D-bus には , 内部リソースが接続さ れます。 F-bus 内部命令 , データがマルチプレクスされたプリンストンバスです。ス イッチを通して I-bus と D-bus に接続されます。F-bus には ,ROM,RAM 等の内蔵リソースが接続されます。 X-bus 外部インタフェースバスです。X-bus には外部インタフェースモジュー ルが接続されます。外部データバスは , データと命令がマルチプレクス されます。 R-bus 内部 16 ビット幅のデータバスです。R-bus は , アダプタを通して F-bus に接続されます。R-bus には , 各種 I/O, クロック発生部 , 割込みコント ローラが接続されます。 R-bus は 16 ビット幅でかつアドレス , データがマルチプレクスされるた め ,CPU がこれらのリソースにアクセスする場合 , 複数サイクルの時間 が掛かります。 E-unit 演算実行ユニットです。 CLKP システムクロックです。R-bus につながる各内蔵リソースに対してク ロック発生部から出力されるクロックです。最速で原発振と同周期です が , クロック発生部 DIVR0 レジスタの B3 ∼ B0 で 1,1/2,1/3,1/4,1/5,1/6, 1/7,…1/16( または ,1/2,1/4,1/6…1/32) に分周されたクロックとなります CLKB システムクロックです。R-bus, X-bus 以外のバスに接続されるリソース と CPU の動作クロックです。最速で原発振と同周期ですが , クロック 発生部 DIVR0 レジスタの P3 ∼ P0 で 1,1/2,1/3,1/4,1/5,1/6,1/7,…1/16 ( または ,1/2,1/4,1/6…1/32) に分周されたクロックとなります。 CLKT システムクロックです。X-bus に接続される外部バスインタフェースの 動作クロックです。最速で原発信と同周期ですが , クロック発生部 DIVR1 レジスタの T3 ∼ T0 で , 1,1/2,1/3,1/4,1/5,1/6,1/7,…1/16( または , 1/2,1/4,1/6…1/32) に分周されたクロックとなります。 iv 目次 第1章 1.1 1.2 1.3 1.4 1.5 1.6 第2章 2.1 2.2 第3章 概要 ............................................................................................................ 1 MB91307 シリーズの特長 ...................................................................................................... 2 ブロックダイヤグラム............................................................................................................ 6 外形寸法図.............................................................................................................................. 7 端子配列 ................................................................................................................................. 8 端子機能一覧 ........................................................................................................................ 10 入出力回路形式 .................................................................................................................... 19 デバイスの取扱いについて ...................................................................... 23 デバイス取扱い上の注意 ...................................................................................................... 24 電源に関する取扱い上の注意 ............................................................................................... 34 CPU および制御部 ................................................................................... 37 3.1 メモリ空間............................................................................................................................ 38 3.2 内部アーキテクチャ ............................................................................................................. 42 3.3 命令キャッシュ .................................................................................................................... 47 3.3.1 命令キャッシュの構成 ............................................................................................... 48 3.3.2 制御レジスタの構成 ................................................................................................... 51 3.3.3 命令キャッシュの状態と設定..................................................................................... 55 3.3.4 命令キャッシュを使用する場合の設定方法 ............................................................... 56 3.4 専用レジスタ ........................................................................................................................ 59 3.4.1 プログラムステータスレジスタ (PS) ......................................................................... 62 3.5 汎用レジスタ ........................................................................................................................ 66 3.6 データ構造............................................................................................................................ 67 3.7 ワードアライメント ............................................................................................................. 68 3.8 メモリマップ ........................................................................................................................ 69 3.9 分岐命令 ............................................................................................................................... 70 3.9.1 遅延スロット付き分岐命令の動作.............................................................................. 71 3.9.2 遅延スロットなし分岐命令の動作.............................................................................. 73 3.10 EIT ( 例外 , 割込み , トラップ )............................................................................................. 74 3.10.1 EIT の割込みレベル.................................................................................................... 75 3.10.2 割込み制御レジスタ (ICR).......................................................................................... 77 3.10.3 システムスタックポインタ (SSP).............................................................................. 78 3.10.4 テーブルベースレジスタ (TBR) ................................................................................. 79 3.10.5 多重 EIT 処理.............................................................................................................. 83 3.10.6 EIT の動作 .................................................................................................................. 86 3.11 リセット ( デバイスの初期化 ) ............................................................................................. 90 3.11.1 リセットレベル .......................................................................................................... 91 3.11.2 リセット要因 .............................................................................................................. 92 3.11.3 リセットシーケンス ................................................................................................... 94 3.11.4 発振安定待ち時間....................................................................................................... 96 3.11.5 リセット動作モード ................................................................................................... 98 3.12 クロック発生制御 ............................................................................................................... 100 3.12.1 PLL 制御 ................................................................................................................... 101 3.12.2 発振安定待ち /PLL ロック待ち時間.......................................................................... 103 v 3.12.3 クロック分配 ............................................................................................................ 106 3.12.4 クロック分周 ............................................................................................................ 108 3.12.5 クロック発生制御部のブロックダイヤグラム.......................................................... 109 3.12.6 クロック発生制御部のレジスタ ............................................................................... 110 3.12.7 クロック制御部が持つ周辺回路 ............................................................................... 130 3.13 デバイス状態制御 ............................................................................................................... 133 3.13.1 デバイス状態と各遷移 ............................................................................................. 134 3.13.2 低消費電力モード..................................................................................................... 137 3.14 動作モード.......................................................................................................................... 143 第4章 外部バスインタフェース........................................................................ 147 4.1 外部バスインタフェースの概要 ......................................................................................... 148 4.2 外部バスインタフェースのレジスタ .................................................................................. 153 4.2.1 領域選択レジスタ 0 ∼ 7 (ASR0 ∼ ASR7)............................................................... 154 4.2.2 領域構成レジスタ 0 ∼ 7 (ACR0 ∼ ACR7) .............................................................. 156 4.2.3 領域ウェイトレジスタ (AWR0 ∼ AWR7) ................................................................ 163 4.2.4 DMAC 用 I/O ウェイトレジスタ (IOWR0 ∼ IOWR2)............................................... 169 4.2.5 チップセレクトイネーブルレジスタ (CSER)........................................................... 172 4.2.6 キャッシュイネーブルレジスタ (CHER).................................................................. 174 4.2.7 端子 / タイミングコントロールレジスタ (TCR)....................................................... 175 4.3 チップセレクト領域の設定例 ............................................................................................. 178 4.4 エンディアンとバスアクセス ............................................................................................. 180 4.4.1 ビッグエンディアンのバスアクセス ........................................................................ 181 4.4.2 リトルエンディアンのバスアクセス ........................................................................ 186 4.4.3 ビッグエンディアンとリトルエンディアンの外部アクセスの比較 ......................... 190 4.5 通常バスインタフェースの動作 ......................................................................................... 194 4.5.1 基本タイミング ........................................................................................................ 195 4.5.2 WE+ バイト制御タイプの動作 ................................................................................. 196 4.5.3 読出し→書込み動作 ................................................................................................. 198 4.5.4 書込み→書込み動作 ................................................................................................. 199 4.5.5 自動ウェイトサイクル ............................................................................................. 200 4.5.6 外部ウェイトサイクル ............................................................................................. 201 4.5.7 同期書込みイネーブル出力 ...................................................................................... 202 4.5.8 CS 遅延設定 ............................................................................................................. 204 4.5.9 CS → RD/WE セットアップおよび RD/WE → CS ホールド設定 ............................ 205 4.5.10 DMA フライバイ転送 (I/O →メモリ ) ....................................................................... 206 4.5.11 DMA フライバイ転送 ( メモリ→ I/O) ....................................................................... 207 4.6 バーストアクセスの動作 .................................................................................................... 208 4.7 アドレス / データマルチプレクスインタフェース ............................................................. 210 4.8 プリフェッチ動作 ............................................................................................................... 213 4.9 DMA アクセス動作 ............................................................................................................. 217 4.9.1 DMA フライバイ転送 (I/O →メモリ ) ....................................................................... 218 4.9.2 DMA フライバイ転送 ( メモリ→ I/O) ....................................................................... 220 4.9.3 2 サイクル転送 ( 内部 RAM →外部 I/O, RAM) ......................................................... 222 4.9.4 2 サイクル転送 ( 外部→ I/O) .................................................................................... 223 4.9.5 2 サイクル転送 (I/O →外部 ) .................................................................................... 224 4.10 バスアービトレーション .................................................................................................... 225 4.11 レジスタの設定手順 ........................................................................................................... 227 4.12 外部バスインタフェースの使用上の注意 ........................................................................... 228 vi 第5章 5.1 5.2 I/O ポート............................................................................................... 229 I/O ポートの概要 ................................................................................................................ 230 I/O ポートのレジスタ ......................................................................................................... 232 第6章 16 ビットリロードタイマ ...................................................................... 241 6.1 16 ビットリロードタイマの概要 ........................................................................................ 242 6.2 16 ビットリロードタイマのレジスタ................................................................................. 244 6.2.1 コントロールステータスレジスタ (TMCSR) ........................................................... 245 6.2.2 16 ビットタイマレジスタ (TMR) ............................................................................. 248 6.2.3 16 ビットリロードレジスタ (TMRLR) ..................................................................... 249 6.3 16 ビットリロードタイマの動作 ........................................................................................ 250 6.4 カウンタの動作状態 ........................................................................................................... 254 6.5 16 ビットリロードタイマの使用上の注意.......................................................................... 255 第7章 7.1 7.2 7.3 U-TIMER ................................................................................................ 257 U-TIMER の概要 ................................................................................................................. 258 U-TIMER のレジスタ.......................................................................................................... 259 U-TIMER の動作 ................................................................................................................. 263 第8章 外部割込み /NMI 制御部 ......................................................................... 265 8.1 外部割込み /NMI 制御部の概要........................................................................................... 266 8.2 外部割込み /NMI 制御部のレジスタ.................................................................................... 267 8.2.1 外部割込み許可レジスタ (ENIR) .............................................................................. 268 8.2.2 外部割込み要因レジスタ (EIRR) .............................................................................. 269 8.2.3 外部割込み要求レベル設定レジスタ (ELVR) ........................................................... 270 8.3 外部割込み /NMI 制御部の動作........................................................................................... 271 第9章 9.1 9.2 9.3 遅延割込みモジュール ........................................................................... 275 遅延割込みモジュールの概要 ............................................................................................. 276 遅延割込みモジュールのレジスタ...................................................................................... 277 遅延割込みモジュールの動作 ............................................................................................. 278 第 10 章 割込みコントローラ............................................................................... 279 10.1 割込みコントローラの概要................................................................................................. 280 10.2 割込みコントローラのレジスタ ......................................................................................... 282 10.2.1 割込み制御レジスタ (ICR)........................................................................................ 284 10.2.2 ホールドリクエスト取下げ要求レベル設定レジスタ (HRCL).................................. 286 10.3 割込みコントローラの動作................................................................................................. 287 10.4 ホールドリクエスト取下げ要求機能 (HRCR) の使用例 ..................................................... 293 第 11 章 A/D コンバータ ...................................................................................... 295 11.1 A/D コンバータの概要 ........................................................................................................ 296 11.2 A/D コンバータのレジスタ................................................................................................. 298 11.2.1 A/D 制御ステータスレジスタ (ADCS)...................................................................... 299 11.2.2 データレジスタ (ADCR)........................................................................................... 305 11.3 A/D コンバータの動作 ........................................................................................................ 306 11.4 変換データ保護機能 ........................................................................................................... 308 11.5 A/D コンバータ使用上の注意 ............................................................................................. 310 vii 第 12 章 UART ..................................................................................................... 311 12.1 UART の概要 ...................................................................................................................... 312 12.2 UART のレジスタ ............................................................................................................... 314 12.2.1 シリアルモードレジスタ (SMR)............................................................................... 315 12.2.2 シリアルコントロールレジスタ (SCR) .................................................................... 317 12.2.3 シリアルインプットデータレジスタ (SIDR) / シリアルアウトプットデータレジスタ (SODR)....................................................... 320 12.2.4 シリアルステータスレジスタ (SSR) ........................................................................ 321 12.2.5 DRCL レジスタ ........................................................................................................ 324 12.3 UART の動作 ...................................................................................................................... 325 12.3.1 非同期 ( 調歩同期 ) モード ....................................................................................... 327 12.3.2 CLK 同期モード........................................................................................................ 329 12.3.3 割込み発生およびフラグのセットタイミング.......................................................... 331 12.4 UART の使用例................................................................................................................... 334 12.5 ボーレートと U-TIMER のリロード値の設定例 ................................................................. 336 第 13 章 I2C インタフェース ................................................................................ 337 13.1 I2C インタフェースの概要.................................................................................................. 338 13.2 I2C インタフェースのレジスタ .......................................................................................... 340 13.2.1 バスステータスレジスタ (IBSR) .............................................................................. 342 13.2.2 バスコントロールレジスタ (IBCR) .......................................................................... 345 13.2.3 クロックコントロールレジスタ (ICCR) ................................................................... 354 13.2.4 10 ビットスレーブアドレスレジスタ (ITBA) ........................................................... 356 13.2.5 10 ビットスレーブアドレスマスクレジスタ (ITMK)................................................ 357 13.2.6 7 ビットスレーブアドレスレジスタ (ISBA) ............................................................. 359 13.2.7 7 ビットスレーブアドレスマスクレジスタ (ISMK).................................................. 360 13.2.8 データレジスタ (IADR) ............................................................................................ 362 13.2.9 クロックディセーブルレジスタ (IDBL).................................................................... 363 2C インタフェースの動作.................................................................................................. 364 13.3 I 13.4 動作フローチャート ........................................................................................................... 369 第 14 章 DMA コントローラ (DMAC) .................................................................. 373 14.1 DMA コントローラ (DMAC) の概要 ................................................................................... 374 14.2 DMA コントローラ (DMAC) のレジスタ ............................................................................ 376 14.2.1 コントロール / ステータスレジスタ A (DMACA0 ∼ DMACA4)............................... 378 14.2.2 コントロール / ステータスレジスタ B (DMACB0 ∼ DMACB4)............................... 383 14.2.3 転送元 / 転送先アドレス設定レジスタ (DMASA0 ∼ DMASA4/DMADA0 ∼ DMADA4)........................................................ 389 14.2.4 DMAC 全体制御レジスタ (DMACR)......................................................................... 391 14.2.5 その他の機能 ............................................................................................................ 393 14.3 DMA コントローラ (DMAC) の動作 ................................................................................... 394 14.3.1 転送要求の設定 ........................................................................................................ 397 14.3.2 転送シーケンス ........................................................................................................ 398 14.3.3 DMA 転送全般 .......................................................................................................... 402 14.3.4 アドレッシングモード ............................................................................................. 404 14.3.5 データの種類 ............................................................................................................ 405 14.3.6 転送回数制御 ............................................................................................................ 406 14.3.7 CPU 制御.................................................................................................................. 407 14.3.8 ホールド調停 ............................................................................................................ 408 viii 14.3.9 開始∼終了 / 停止までの動作.................................................................................... 409 14.3.10 DMAC 割込み制御 .................................................................................................... 412 14.3.11 チャネル選択と制御 ................................................................................................. 413 14.3.12 外部端子と内部動作タイミングに関する補足.......................................................... 415 14.4 動作フローチャート ........................................................................................................... 419 14.5 データバス.......................................................................................................................... 422 14.6 DMA 外部インタフェース .................................................................................................. 425 14.6.1 DMA 外部インタフェースの動作例 ( 簡易波形 ) ...................................................... 426 14.6.2 DREQx 端子の入力タイミング ................................................................................ 428 14.6.3 DACK (DEOP) の FR30 互換モード......................................................................... 430 第 15 章 ビットサーチモジュール........................................................................ 433 15.1 ビットサーチモジュールの概要 ......................................................................................... 434 15.2 ビットサーチモジュールのレジスタ .................................................................................. 435 15.3 ビットサーチモジュールの動作 ......................................................................................... 437 付録 付録 A 付録 B 付録 C 付録 D D.1 D.2 D.3 D.4 付録 E E.1 ............................................................................................................... 441 I/O マップ ...................................................................................................................... 442 割込みベクタ ................................................................................................................. 450 各 CPU ステートにおける端子状態 .............................................................................. 453 リトルエンディアン領域を利用する際の注意事項 ....................................................... 458 C コンパイラ (fcc911) .................................................................................................. 459 アセンブラ (fasm911)................................................................................................... 462 リンカ (flnk911) ............................................................................................................ 464 デバッガ (sim911, eml911, mon911)............................................................................ 465 命令一覧 ........................................................................................................................ 466 FR ファミリの命令一覧表 ............................................................................................ 470 ix x 本版での主な変更内容 ページ 変更内容(詳細は本文を参照してください。) 24 ● 水晶発振回路について に文を追加 25 ● ビットサーチモジュール を変更(BDSC レジスタ→ BSDC レジスタ) 26 ● 低消費電力モード を変更 29 ● DMA 転送要因選択について (MB91306R/307R のみ ) を追加 59 3.4 専用レジスタ の要約を修正(テーブルベースレジスタ(TBC)→テーブルベー スレジスタ (TBR)) 75 表 3.10-1 EIT の割込みレベル を変更(割込み要因 , 注意事項 を追加) 80 ∼ 82 表 3.10-4 ベクタテーブル を変更(RN 列を削除) 114 [ ビット 5] HIZ (HIZ mode) を変更("0" に初期化→ "1" に初期化) 116 <注意事項> を変更 118 <注意事項> を追加 143 143 152 157 図 3.14-1 動作モード を変更 (外部 ROM 内部 RAM 外部バス→内部 ROM 外部バス) ● バスモード 1 ( 内部 ROM 外部バスモード ) を変更(内部 RAM →内部 ROM) 図 4.1-2 外部バスインタフェースのレジスタ一覧 を変更 (IOWR2 → IOWR1) (CSER → CHER) (CSER →予約) <注意事項> を追加 169 ■ DMAC 用 I/O ウェイトレジスタ (IOWR0 ∼ IOWR2) の構成 を変更 (IOWR0 ∼ 3 → IOWR0 ∼ IOWR2) (DMAC 0 ∼ 3 → DMAC 0 ∼ 2) 169 図 4.2-4 DMAC 用 I/O ウェイトレジスタ (IOWR0 ∼ IOWR2) の構成 を変更 (IOWR0 ∼ 3 → IOWR0 ∼ IOWR2) (IOWR3 のビット構成図 を削除) (0000 0688H → 0000 0678H) (0000 0689H → 0000 0679H) (0000 068aH → 0000 067AH) 169 ∼ 170 ■ DMAC 用 I/O ウェイトレジスタ (IOWR0 ∼ IOWR2) のビット機能 を変更 (ビット 7, ビット 6, ビット 5, ビット 4 の記述を削除) (チャネル 0 ∼ 3 → ch0 ∼ ch2) (RYE3 を削除) (HLD3 を削除) 197 二つ目の・を変更(注意事項を参照→「4.12 外部バスインタフェースの使用上の注 意」を参照) 220 ■ DMA フライバイ転送 ( メモリ→ I/O) を変更(IOWR0 ∼ 3 → IOWR0 ∼ IOWR2) xi ページ 変更内容(詳細は本文を参照してください。) 220 図 4.9-2 DMA フライバイ転送 ( メモリ→ I/O) のタイミングチャート を変更 (*1 の説明を追加) (*2 の説明を追加) 222 図 4.9-3 2 サイクル転送 ( 内部 RAM →外部 I/O, RAM) のタイミングチャート を変更 (基本サイクル の説明を追加) 223 図 4.9-4 2 サイクル転送 ( 外部→ I/O) のタイミングチャート を変更(基本サイクル の説明を追加) 224 図 4.9-5 2 サイクル転送 (I/O →外部 ) のタイミングチャート を変更(基本サイクル の説明を追加) 227 ■ レジスタの設定手順 (2) の 2) と (3) の 3) に文を追加 235, 239 253 267 表 5.2-1 ポート機能レジスタ (PFR) の機能 を変更 (*1 を削除) (*1 の説明文を削除) ● その他の動作 に文を追加 図 8.2-1 外部割込み /NMI 制御部のレジスタ一覧 を変更(要求レベル設定レジスタ (ELVR)→外部割込み要求レベル設定レジスタ (ELVR)) 268 レジスタ名を変更(割込み許可レジスタ (ENIR) →外部割込み許可レジスタ (ENIR)) 271 ■ 外部割込みの動作手順 に手順を追加 272 287 ∼ 290 292 297, 298 ■ 外部割込み要求レベル の用語を変更 (要因保持回路→外部割込み要因レジスタ) (要因 F/F →外部割込み要因レジスタ) 表 10.3-1 割込み要因と割込み番号 , 割込みレベルの関係 を変更(RN 列を削除) ■ 割込み要因の解除 を削除 レジスタ名を変更(AD 制御レジスタ (ADCS) → A/D 制御ステータスレジスタ (ADCS)) 301 表 11.2-1 A/D 変換起動要因の設定内容 を変更(タイマでの起動→リロードタイマで の起動) 304 <注意事項> を追加 305 図 11.2-3 データレジスタ (ADCR) のビット構成 のアドレスを変更(000038H → 000078H) 305 図 11.2-3 データレジスタ (ADCR) のビット構成 の初期値を変更(0 → X) 314 図 12.2-1 UART のレジスタ一覧 を変更 (シリアルインプットレジスタ→シリアルインプットデータレジスタ) (シリアルアウトプットレジスタ→シリアルアウトプットデータレジスタ) 348 <注意事項> に文を追加 353 図 13.2-6 AL ビット =1 時に割込みが発生するタイミング図 を変更(SDA 端子の線) 354 <注意事項> を変更 374 ■ 主要機能 を変更(ch.0 ∼ ch.1 間で順位回転が可能→優先順位回転) 380 表 14.2-1 転送要求の要因設定 に * と説明を追加 xii ページ 変更内容(詳細は本文を参照してください。) 397 <注意事項> に・項目を追加 404 <注意事項> を変更(終了コードに関する項目を参照してください→「表 14.2-6 終 了コードの内容」を参照してください) 409 ■ 転送要求の受付けと転送 に文を追加 411 ● 周辺回路よりの転送停止要求の発生 を変更 (各周辺回路の仕様を参照→「12.2.5 DRCL レジスタ」を参照) 443, 444 付表 A-1 I/O マップ の以下のレジスタについて、アクセス単位を変更 (HRCL,SSR,SIDR/SODR,SMR,IBCR,ITMK,ICCR) 444, 445 付表 A-1 I/O マップ のレジスタを変更 (DMACB0 → DMACB1) (DMACB0 → DMACB2) (DMACB0 → DMACB3) (DMACB0 → DMACB4) (ICHRC → ICHCR) 450 ∼ 452 付表 B-1 割込みベクタ を変更(RN 列を削除) 483 付表 E-21 リソース命令 に<注意事項> を追加 484 <注意事項> を変更 xiii xiv 第1章 概要 この章では , MB91307 シリーズの特長 , ブロック ダイヤグラム , 機能概要など全体を知るための基本 的なことがらについて説明します。 1.1 MB91307 シリーズの特長 1.2 ブロックダイヤグラム 1.3 外形寸法図 1.4 端子配列 1.5 端子機能一覧 1.6 入出力回路形式 1 第 1 章 概要 1.1 MB91307 シリーズの特長 MB91307 シリーズは , 32 ビット高性能 RISC CPU を使用し , 高性能 / 高速な CPU 処理が要求される組込み制御用に各種 I/O リソースやバス制御機構を内蔵した , 標準 シングルチップマイクロコントローラです。32 ビット CPU がアクセスする広大な アドレス空間をサポートするために , 外部バスアクセスが基本となっていますが , CPU の命令実行高速化のために 1K バイトの命令キャッシュメモリと大容量の RAM を内蔵しています。 DVD プレーヤ , ナビゲーションシステム , 高性能 FAX, プリンタ制御等 , 高性能な CPU 処理パワーが要求される組込み用途に最適な仕様となっています。 本品種は , FR30/40 CPU をベースにバスアクセスの強化を行い , より高速での使用 に対応した FR60 です。 ■ FR CPU • 32 ビット RISC, ロード / ストアアーキテクチャ , パイプライン 5 段 • 動作周波数 66MHz [PLL 使用 : 原発振 16.5MHz] • 16 ビット固定長命令 ( 基本命令 ) , 1 命令 /1 サイクル • メモリ-メモリ間転送, ビット処理, バレルシフト等の命令:組込み用途に適した命令 • 関数入口 / 出口命令 , レジスタ内容のマルチロードストア命令 : 高級言語対応命令 • レジスタインタロック機能 : アセンブラ記述の容易化 • 乗算器の内蔵 / 命令レベルでのサポート - 符号付き 32 ビット乗算 :5 サイクル - 符号付き 16 ビット乗算 :3 サイクル • 割込み (PC, PS の退避 ) :6 サイクル , 16 プライオリティレベル • ハーバードアーキテクチャにより , プログラムアクセスとデータアクセスを同時に 実行可能 • CPU 内の 4 ワードのキューにより , 命令の先取り機能を追加 • 4G バイトの広大なメモリ空間をリニアにアクセス可能 ■ バスインタフェース • 動作周波数は最大 33MHz • 25 ビットアドレスフル出力可能 (32M バイト空間 ) • 8 ビット , 16 ビットデータ出力 • プリフェッチバッファ搭載 • 未使用データ / アドレス端子は汎用入出力ポートとして使用可能 • 最小 64K バイト単位で設定可能な完全独立な 8 領域のチップセレクト出力が可能 • 各種メモリに対するインタフェースのサポート - SRAM, ROM/Flash 2 第 1 章 概要 - ページモード Flash ROM, ページモード ROM インタフェース - バーストモード Flash ROM ( バースト長 1, 2, 4, 8 選択 ) • 基本バスサイクル :2 サイクル • 領域ごとにプログラマブルでウェイト挿入可能な自動ウェイトサイクル発生機構 • RDY 入力による外部ウェイトサイクル • DMA は独立した I/O 用ウェイト制御が可能なフライバイ転送をサポート ■ 内蔵 RAM • 128K バイト (MB91307B/R), 64K バイト (MB91306R) の容量の RAM を搭載 • 内蔵 RAM はデータのほか , 命令コードを書き込むことにより , 命令用 RAM として 使用することが可能 ■ 命令キャッシュ • 1K バイトの容量 • 2 way set associative • 4 ワード (16 バイト ) / セット • ロック機能によりプログラム常駐化可能 • 命令キャッシュとして使用しない部分は , 一部 RAM として使用可能 ■ DMAC (DMA Controller) • 5 チャネル ( 外部→外部は 3 チャネル ) • 3 つの転送要因 ( 外部端子 / 内部ペリフェラル / ソフトウェア ) • アドレッシングモード 32 ビットフルアドレス指定 ( 増加 / 減少 / 固定 ) • 転送モード ( デマンド転送 / バースト転送 / ステップ転送 / ブロック転送 ) • フライバイ転送サポート ( 外部 I/O と外部メモリ間は 3 チャネル ) • 転送データサイズは 8/16/32 ビットから選択可能 ■ ビットサーチモジュール (REALOS 使用 ) • 1 ワード中の MSB から最初の "1"/"0" の変化ビット位置をサーチ ■ リロードタイマ (REALOS 用 1 チャネルを含む ) • 16 ビットタイマ :3 チャネル • 内部クロックは :2/8/32 分周から選択可能 ■ UART • 全二重ダブルバッファ • 3 チャネル • パリティあり / なし選択可能 • 非同期 ( 調歩同期 ) , CLK 同期通信の選択可能 3 第 1 章 概要 • 専用ボーレート用タイマ内蔵 • 外部クロックを転送クロックとして使用可能 • 豊富なエラー検出機能あり ( パリティ , フレーム , オーバラン ) ■ I2C インタフェース • マスタ / スレーブ送受信 • クロック同期化機能 • 転送方向検出機能 • バスエラー検出機能 • 標準モード ( 最大 100Kbps) / 高速モード ( 最大 400Kbps) に対応 • アービトレーション機能 • スレーブアドレス / ゼネラルコールアドレス検出機能 • スタートコンディションの繰り返し発生および検出機能 • 10 ビット /7 ビットスレーブアドレス ■ 割込みコントローラ • 外部割込みは合計 9 本 ( マスク不可割込み端子 (NMI ) 1 本と通常割込み端子 (INT7 ∼ INT0) 8 本 ) • 内部ペリフェラルからの割込み • マスク不可割込み以外は , 優先レベルをプログラマブルに設定可能 (16 レベル ) • STOP 時の Wake Up 用として使用可能 ■ A/D コンバータ • 10 ビット分解能 , 4 チャネル • 逐次比較変換型 ( 変換時間 : 約 5.4µs:CLKP=33MHz のとき ) • 変換モード ( 単発変換モード , 連続変換モード ) • 起動要因 ( ソフトウェア / 外部トリガ / タイマ出力信号 ) ■ その他のインターバルタイマ • 16 ビットタイマ :3 チャネル (U-TIMER) • ウォッチドッグタイマ ■ I/O ポート • 最大 69 ポート ■ その他の特長 • クロックソースとして発振回路を内蔵し , PLL 逓倍も選択可能 • リセット端子として INIT を用意 • その他 , ウォッチドッグタイマリセット , ソフトウェアリセットあり 4 第 1 章 概要 • 低消費電力モードとして , ストップモードとスリープモードをサポート • ギア機能 • タイムベースタイマ内蔵 • パッケージ LQFP-120 (FPT-120P-M21) :MB91307B, MB91306R, MB91307R PGA135 : MB91V307R (MB91307B, MB91306R, MB91307R 共通エバ品 ) • CMOS テクノロジ 0.25µm : MB91307B, MB91V307R, 0.18µm : MB91306R, MB91307R • 電源電圧 MB91307B, MB91V307R:3.3V ± 0.3V ( 内蔵レギュレータ 3.3V → 2.5V) MB91306R, MB91307R :3.3V ± 0.3V, 1.8V ± 0.15V 2 電源 ■ MB91307 シリーズ MB91307B MB91306R/MB91307R プロセス CMOS 0.25µm CMOS 0.18µm 電源電圧 3.3V ± 0.3V 降圧回路内蔵 単電源 3.3V ± 0.3V, 1.8V ± 0.15V 2 電源 ハードウェアスタンバイ機能 あり なし 5 第 1 章 概要 1.2 ブロックダイヤグラム 図 1.2-1 に , MB91307 シリーズのブロックダイヤグラムを示します。 ■ ブロックダイヤグラム 図 1.2-1 ブロックダイヤグラム FR CPU Core 32 32 I$ 1KB ビットサーチ RAM * Bus コンバータ DMAC 5ch 32 32 ←→ 16 アダプタ 外部メモリI/F 16 クロック 制御 UART 3ch U-TIMER 3ch I2C 1ch 割込み コントローラ 外部割込み リロード タイマ 3ch *: 内蔵 RAM 128K バイト: MB91307B/R 64K バイト: MB91306R 6 A/D 4ch ポート 第 1 章 概要 外形寸法図 1.3 MB91307 シリーズには , 1 種類のパッケージが用意されています。 ■ FPT-120P-M21 の外形寸法図 図 1.3-1 FPT-120P-M21 の外形寸法図 プラスチック・LQFP, 120 ピン (FPT-120P-M21) リードピッチ 0.50mm パッケージ幅× パッケージ長さ 16.0×16.0mm リード形状 ガルウィング 封止方法 プラスチックモールド 取付け高さ 1.70mm MAX 質量 0.88g コード(参考) P-LFQFP120-16×16-0.50 プラスチック・LQFP, 120 ピン (FPT-120P-M21 ) 注 1)* 印寸法はレジン残りを含む。 レンジ残りは、片側 +0.25(.010)MAX。 注 2)端子幅および端子厚さはメッキ厚を含む。 注 3)端子幅はタイバ切断残りを含まず。 18.00±0.20(.709±.008)SQ +0.40 * 16.00 –0.10 .630 +.016 –.004 SQ 90 61 91 60 0.08(.003) Details of "A" part +0.20 1.50 –0.10 +.008 (Mounting height) .059 –.004 INDEX 0~8° 120 LEAD No. 1 30 0.50(.020) C "A" 31 2002 FUJITSU LIMITED F120033S-c-4-4 0.22±0.05 (.009±.002) 0.08(.003) M 0.145 .006 +0.05 –0.03 +.002 –.001 0.60±0.15 (.024±.006) 0.10±0.05 (.004±.002) (Stand off) 0.25(.010) 単位:mm (inches) 注意:括弧内の値は参考値です。 7 第 1 章 概要 端子配列 1.4 MB91307 シリーズの端子配列を示します。 ■ 端子配列図 図 1.4-1, 図 1.4-2 に端子配列図を示します。 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 PA2/CS2 PA1/CS1 CS0 PB7/IORD PB6/IOWR VCC X0 X1 VSS PB5/DEOP1 PB4/DACK1 PB3/DREQ1 PB2/DEOP0 PB1/DACK0 PB0/DREQ0 MD2 MD1 MD0 PG2/DEOP2 PG1/DACK2 PG0/DREQ2 PH7/SCL PH6/SDA PH5/TOT2 PH4/TOT1 * PH3/TOT0 * VSS PH2/SC2 PH1/SO2 PH0/SI2 図 1.4-1 MB91307B の端子配列図 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 MB91307B (TOP VIEW) P26/D22 P27/D23 D24 D25 D26 D27 D28 D29 D30 D31 VSS A00 A01 A02 A03 A04 A05 A06 A07 VCC A08 A09 A10 A11 A12 A13 A14 A15 VSS P60/A16 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 PA3/CS3 PA4/CS4 PA5/CS5 C PA6/CS6 PA7/CS7 P80/RDY P81/BGRNT P82/BRQ RD UUB/WR0 P85/ULB/WR1 NMI HST VSS INIT P90/SYSCLK P91 P92/MCLK P93 P94/LBA/AS P95/BAA P96 P97/WE P20/D16 P21/D17 P22/D18 P23/D19 P24/D20 P25/D21 *:イニシャルとリセット時"L"出力です。 8 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 PI5/SC1 PI4/SO1 PI3/SI1 PI2/SC0 PI1/SO0 PI0/SI0 VCC PJ7/INT7/ATG PJ6/INT6/TIN2 PJ5/INT5/TIN1 PJ4/INT4/TIN0 PJ3/INT3 PJ2/INT2 PJ1/INT1 PJ0/INT0 AN3 AN2 AN1 AN0 AVSS/AVRL AVRH AVCC A24/P70 A23/P67 A22/P66 A21/P65 A20/P64 A19/P63 A18/P62 A17/P61 第 1 章 概要 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 PA2/CS2 PA1/CS1 CS0 PB7/IORD PB6/IOWR VCC X0 X1 VSS PB5/DEOP1 PB4/DACK1 PB3/DREQ1 PB2/DEOP0 PB1/DACK0 PB0/DREQ0 MD2 MD1 MD0 PG2/DEOP2 PG1/DACK2 PG0/DREQ2 PH7/SCL PH6/SDA PH5/TOT2 PH4/TOT1 * PH3/TOT0 * VSS PH2/SC2 PH1/SO2 PH0/SI2 図 1.4-2 MB91306R/MB91307R の端子配列図 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 MB91306R MB91307R (TOP VIEW) 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 PI5/SC1 PI4/SO1 PI3/SI1 PI2/SC0 PI1/SO0 PI0/SI0 VCC PJ7/INT7/ATG PJ6/INT6/TIN2 PJ5/INT5/TIN1 PJ4/INT4/TIN0 PJ3/INT3 PJ2/INT2 PJ1/INT1 PJ0/INT0 AN3 AN2 AN1 AN0 AVSS/AVRL AVRH AVCC A24/P70 A23/P67 A22/P66 A21/P65 A20/P64 A19/P63 A18/P62 A17/P61 P26/D22 P27/D23 D24 D25 D26 D27 D28 D29 D30 D31 VSS A00 A01 A02 A03 A04 A05 A06 A07 VCC A08 A09 A10 A11 A12 A13 A14 A15 VSS P60/A16 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 PA3/CS3 PA4/CS4 PA5/CS5 VCCI PA6/CS6 PA7/CS7 P80/RDY P81/BGRNT P82/BRQ RD UUB/WR0 P85/ULB/WR1 NMI VCCI VSS INIT P90/SYSCLK P91 P92/MCLK P93 P94/LBA/AS P95/BAA P96 P97/WE P20/D16 P21/D17 P22/D18 P23/D19 P24/D20 P25/D21 *:イニシャルとリセット時"L"出力です。 VCC:3.3V系,VCCI:1.8V系の電源です。 9 第 1 章 概要 端子機能一覧 1.5 MB91307 シリーズの端子機能を説明します。 ■ 端子機能説明 表 1.5-1 に , MB91307 シリーズの端子機能を示します。 表 1.5-1 端子機能表 (1 / 9) 端子番号 端子名 入出力 回路形式 85 ∼ 92 D16 ∼ D23 C P20 ∼ P27 機能 外部データバスのビット 16 ∼ビット 23 外部バス 16 ビットモードのときのみ有効となります。 外部バス 8 ビットモードのときはポートとして使用でき ます。 93 ∼ 100 D24 ∼ D31 C 外部データバスのビット 24 ∼ビット 31 102 ∼ 109 A00 ∼ A07 F 外部アドレス出力のビット 0 ∼ビット 7 111 ∼ 118 A08 ∼ A15 F 外部アドレス出力のビット 8 ∼ビット 15 120, 1 ∼ 7 A16 ∼ A23 F 外部アドレス出力のビット 16 ∼ビット 23 P60 ∼ P67 8 A24 設定によりポートとして使用できます。 F P70 設定によりポートとして使用できます。 12 ∼ 15 AN0 ∼ AN3 D A/D コンバータ用のアナログ入力端子です。 16 ∼ 19 INT0 ∼ INT3 I [INT0 ∼ INT3] 外部割込み入力です。対応する外部割込 みを許可している間は , この入力を随時使用しています ので , 意図的に行う以外は , ほかの機能による出力を停 止させておく必要があります。 PJ0 ∼ PJ3 20 ∼ 22 TIN0 ∼ TIN2 INT4 ∼ INT6 PJ4 ∼ PJ6 10 外部アドレス出力のビット 24 [PJ0 ∼ PJ3] 汎用入出力ポートです。 I [TIN0 ∼ TIN2] リロードタイマ入力です。対応するタイ マ入力を許可している間は , この入力を随時使用してい ますので意図的に行う以外は , ほかの機能による出力を 停止させておく必要があります。 [INT4 ∼ INT6] 外部割込み入力です。対応する外部割込 みを許可している間は , この入力を随時使用しています ので意図的に行う以外は , ほかの機能による出力を停止 させておく必要があります。 [PJ4 ∼ PJ6] 汎用入出力ポートです。 第 1 章 概要 表 1.5-1 端子機能表 (2 / 9) 端子番号 端子名 入出力 回路形式 23 ATG I INT7 SI0 [PJ7] 汎用入出力ポートです。 F PI0 26 SO0 SC0 F SI1 F SO1 F SC1 PI5 [SI1] UART1 のデータ入力です。UART1 が入力動作をし ている間は , この入力を随時使用していますので意図的 に行う以外はほかの機能による出力を停止させておく必 要があります。 [PI3] 汎用入出力ポートです。 F PI4 30 [SC0] UART0 のクロック入出力です。クロック出力は UART0 のクロック出力指定が許可のときに有効になり ます。 [PI2] 汎用入出力ポートです。この機能は UART0 のク ロック出力機能が禁止のときに有効になります。 PI3 29 [SO0] UART0 のデータ出力です。この機能は UART0 の データ出力指定が許可のときに有効になります。 [PI1] 汎用入出力ポートです。この機能は UART0 のデー タ出力機能が禁止のときに有効になります。 PI2 28 [SI0] UART0 のデータ入力です。UART0 が入力動作をし ている間は , この入力を随時使用していますので意図的 に行う以外は , ほかの機能による出力を停止させておく 必要があります。 [PI0] 汎用入出力ポートです。 PI1 27 [ATG ] A/D コンバータ外部トリガ入力です。A/D の起動 要因として選択した場合は , この入力を随時使用してい ますので意図的に行う以外は , ほかの機能による出力を 停止させておく必要があります。 [INT7] 外部割込み入力です。対応する外部割込みを許可 している間は , この入力を随時使用していますので意図 的に行う以外は , ほかの機能による出力を停止させてお く必要があります。 PJ7 25 機能 [SO1] UART1 のデータ出力です。この機能は UART1 の データ出力指定が許可のときに有効になります。 [PI4] 汎用入出力ポートです。この機能は UART1 のデー タ出力機能が禁止のときに有効になります。 F [SC1] UART1 のクロック入出力です。クロック出力は UART1 のクロック出力指定が許可のときに有効になり ます。 [PI5] 汎用入出力ポートです。この機能は UART1 のク ロック出力機能が禁止のときに有効になります。 11 第 1 章 概要 表 1.5-1 端子機能表 (3 / 9) 端子番号 端子名 入出力 回路形式 31 SI2 F PH0 32 SO2 SC2 F PH3 [SO2] UART2 のデータ出力です。この機能は UART2 の データ出力指定が許可のときに有効になります。 [PH1] 汎用入出力ポートです。この機能は UART2 の データ出力機能が禁止のときに有効になります。 F PH2 35 [SI2] UART2 のデータ入力です。UART2 が入力動作をし ている間は , この入力を随時使用していますので意図的 に行う以外はほかの機能による出力を停止させておく必 要があります。 [PH0] 汎用入出力ポートです。 PH1 33 機能 [SC2] UART2 のクロック入出力です。クロック出力は UART2 のクロック出力指定が許可のときに有効になり ます。 [PH2] 汎用入出力ポートです。この機能は UART2 のク ロック出力機能が禁止のときに有効になります。 C [TOT0] タイマ出力ポートです。この機能はタイマ出力 許可のときに有効になります。 [PH3] 汎用入出力ポートです。この端子はリセット時 "L" 出力です。 36 PH4 C [TOT1] タイマ出力ポートです。この機能はタイマ出力 許可のときに有効になります。 [PH4] 汎用入出力ポートです。この端子はリセット時 "L" 出力です。 37 PH5 C [TOT2] タイマ出力ポートです。この機能はタイマ出力 許可のときに有効になります。 [PH5] 汎用入出力ポートです。 38 SDA Q PH6 39 SCL PH7 12 [SDA] I2C バス用入出力端子です。この機能は I2C が動 作許可のときに有効となります。I2C バスを使用すると きはポート出力を Hi-Z にしておく必要があります。I2C バス使用時はオープンドレイン端子です。 [PH6] 汎用入出力ポートです。 Q [SCL] I2C バス用入出力端子です。この機能は I2C が動 作許可のときに有効となります。I2C バスを使用すると きはポート出力を Hi-Z にしておく必要があります。I2C バス使用時はオープンドレイン端子です。 [PH7] 汎用入出力ポートです。 第 1 章 概要 表 1.5-1 端子機能表 (4 / 9) 端子番号 端子名 入出力 回路形式 40 DREQ2 F PG0 41 DACK2 43 ∼ 45 DEOP2 [DREQ2] DMA 外部転送要求入力です。DMA の起動要 因として選択した場合はこの入力を随時使用しています ので , 意図的に行う以外はほかの機能による出力を停止 させておく必要があります。 [PG0] 汎用入出力ポートです。 F PG1 42 機能 [DACK2] DMA 外部転送要求受付け出力です。この機能 は DMA の転送要求受付け出力指定が許可のときに有効 になります。 [PG1] 汎用入出力ポートです。この機能は DMA の転送 要求受付け出力指定が禁止のときに有効になります。 F [DEOP2] DMA 外部転送終了出力です。この機能は DMA の外部転送終了出力指定が許可のときに有効になりま す。 DSTP2 [DSTP2] DMA 外部転送停止入力です。この機能は DMA の外部転送停止入力指定が許可のときに有効になりま す。 PG2 [PG2] 汎用入出力ポートです。この機能は DMA の外部 転送終了出力指定 , 外部転送停止入力指定が禁止のとき に有効になります。 MD2 ∼ MD0 G モード端子 2 ∼ 0 です。これらの端子の設定により基本 動作モードを設定します。VCC または VSS に接続してく ださい。 46 DREQ0 F PB0 47 DACK0 PB1 [DREQ0] DMA 外部転送要求入力です。DMA の起動要 因として選択した場合はこの入力を随時使用しています ので , 意図的に行う以外はほかの機能による出力を停止 させておく必要があります。 [PB0] 汎用入出力ポートです。 F [DACK0] DMA 外部転送要求受付け出力です。この機能 は DMA の転送要求受付け出力指定が許可のときに有効 になります。 [PB1] 汎用入出力ポートです。この機能は DMA の転送 要求受付け出力指定が禁止のときに有効になります。 13 第 1 章 概要 表 1.5-1 端子機能表 (5 / 9) 端子番号 端子名 入出力 回路形式 48 DEOP0 F 49 [DSTP0] DMA 外部転送停止入力です。この機能は DMA の外部転送停止入力指定が許可のときに有効になりま す。 PB2 [PB2] 汎用入出力ポートです。この機能は DMA の外部 転送終了出力指定 , 外部転送停止入力指定が禁止のとき に有効になります。 DREQ1 F DACK1 DEOP1 F [DACK1] DMA 外部転送要求受付け出力です。この機能 は DMA の転送要求受付け出力指定が許可のときに有効 になります。 [PB4] 汎用入出力ポートです。この機能は DMA の転送 要求受付け出力指定が禁止のときに有効になります。 F [DEOP1] DMA 外部転送終了出力です。この機能は DMA の外部転送終了出力指定が許可のときに有効になりま す。 DSTP1 [DSTP1] DMA 外部転送停止入力です。この機能は DMA の外部転送停止入力指定が許可のときに有効になりま す。 PB5 [PB5] 汎用入出力ポートです。この機能は DMA の外部 転送終了出力指定 , 外部転送停止入力指定が禁止のとき に有効になります。 53 X1 54 X0 56 IOWR PB6 14 [DREQ1] DMA 外部転送要求入力です。DMA の起動要 因として選択した場合はこの入力を随時使用しています ので , 意図的に行う以外はほかの機能による出力を停止 させておく必要があります。 [PB3] 汎用入出力ポートです。 PB4 51 [DEOP2] DMA 外部転送終了出力です。この機能は DMA の外部転送終了出力指定が許可のときに有効になりま す。 DSTP0 PB3 50 機能 A クロック ( 発振 ) 出力です。 クロック ( 発振 ) 入力です。 F [IOWR] DMA フライバイ転送時の書込みストローブ出力 です。この機能は DMA フライバイ転送書込みストロー ブ出力指定が許可のときに有効になります。 [PB6] 汎用入出力ポートです。この機能は DMA フライ バイ転送書込みストローブ出力指定が禁止のときに有効 になります。 第 1 章 概要 表 1.5-1 端子機能表 (6 / 9) 端子番号 端子名 57 入出力 回路形式 F IORD PB7 58 CS0 CS1 F CS2 F CS3 F CS4 F CS5 F [CS4] チップセレクト 4 出力です。この機能はチップセ レクト 4 出力指定が許可のときに有効になります。 [PA4] 汎用入出力ポートです。この機能はチップセレク ト 4 出力指定が禁止のときに有効になります。 F PA5 64 [CS3] チップセレクト 3 出力です。この機能はチップセ レクト 3 出力指定が許可のときに有効になります。 [PA3] 汎用入出力ポートです。この機能はチップセレク ト 3 出力指定が禁止のときに有効になります。 PA4 63 [CS2] チップセレクト 2 出力です。この機能はチップセ レクト 2 出力指定が許可のときに有効になります。 [PA2] 汎用入出力ポートです。この機能はチップセレク ト 2 出力指定が禁止のときに有効になります。 PA3 62 [CS1] チップセレクト 1 出力です。この機能はチップセ レクト 1 出力指定が許可のときに有効になります。 [PA1] 汎用入出力ポートです。この機能はチップセレク ト 1 出力指定が禁止のときに有効になります。 PA2 61 [CS0] チップセレクト 1 出力です。この機能はチップセ レクト 0 出力指定が許可のときに有効になります。 [PA1] 汎用入出力ポートです。この機能はチップセレク ト 1 出力指定が禁止のときに有効になります。 PA1 60 [IORD] DMA フライバイ転送時の読出しストローブ出力 です。この機能は DMA フライバイ転送読出しストロー ブ出力指定が許可のときに有効になります。 [PB7] 汎用入出力ポートです。この機能は DMA フライ バイ転送読出しストローブ出力指定が禁止のときに有効 になります。 PA1 59 機能 [CS5] チップセレクト 5 出力です。この機能はチップセ レクト 5 出力指定が許可のときに有効になります。 [PA5] 汎用入出力ポートです。この機能はチップセレク ト 5 出力指定が禁止のときに有効になります。 C − VCCI − (MB91307B) [C] 内蔵レギュレータのパスコン端子です。 「第 2 章 デバイスの取扱いについて」を確認してくださ い。 (MB91306R, MB91307R) [VCCI] 内部電源端子です。 (1.8V 系電源 ) 15 第 1 章 概要 表 1.5-1 端子機能表 (7 / 9) 端子番号 端子名 入出力 回路形式 65 CS6 F PA6 66 CS7 RDY F BGRNT C BRQ [RDY] 外部レディ入力です。この機能は外部レディ入力 指定が許可のときに有効になります。 [P80] 汎用入出力ポートです。この機能は外部レディ入 力指定が禁止のときに有効になります。 F P81 69 [CS7] チップセレクト 7 出力です。この機能はチップセ レクト 7 出力指定が許可のときに有効になります。 [PA7] 汎用入出力ポートです。この機能はチップセレク ト 7 出力指定が禁止のときに有効になります。 P80 68 [CS6] チップセレクト 6 出力です。この機能はチップセ レクト 6 出力指定が許可のときに有効になります。 [PA6] 汎用入出力ポートです。この機能はチップセレク ト 6 出力指定が禁止のときに有効になります。 PA7 67 機能 [BGRNT ] 外部バス開放受付け出力です。外部バスを開 放したときに L を出力します。出力指定が許可のときに 有効になります。 [P81] 汎用入出力ポートです。この機能は外部バス開放 受付け指定が禁止のときに有効になります。 P P82 [BRQ] 外部バス開放要求入力です。外部バスを開放した いときに "1" を入力します。入力指定が許可のときに有 効になります。 [P82] 汎用入出力ポートです。この機能は外部バス開放 要求指定が禁止のときに有効になります。 70 RD M 外部バス読出しストローブ出力です。 71 WR0 UUB F 外部バス書込みストローブ出力です。[UUB ] 16 ビット SRAM 入出力マスクイネーブル上位側です。外部バスを SRAM に設定したときに有効になります (WE /P97 が書 込みストローブになります ) 。 72 WR1 ULB P85 F 外部バス書込みストローブ出力です。[ULB ] 16 ビット SRAM 入出力マスクイネーブル上位側です。外部バスを SRAM に設定したときに有効になります ( WE/P97 が書 込みストローブになります ) 。 [P85] 汎用入出力ポートです。イネーブル出力設定を禁 止にしたときに有効になります。 73 NMI H NMI 要求入力です。 74 HST H (MB91307B) ハードウェアスタンバイ入力です。 VCCI - (MB91307R) 内部電源端子です (1.8V 系電源 ) 。 INIT B 外部リセット入力です。 76 16 第 1 章 概要 表 1.5-1 端子機能表 (8 / 9) 端子番号 端子名 入出力 回路形式 77 SYSCLK F P90 機能 [SYSCLK] システムクロック出力です。この機能はシス テムクロック出力指定が許可のときに有効になります。 外部バス動作周波数と同じクロックを出力します。ス トップモード , ハードウェアスタンバイモード時にク ロック出力が停止します。 [P90] 汎用入出力ポートです。この機能はシステムク ロック出力指定が禁止のときに有効になります。 78 P91 F [P91] 汎用入出力ポートです。 79 MCLK F [MCLK] メモリ用クロック出力です。スリープモード , ストップモード , ハードウェアスタンバイモード時にク ロック出力が停止します。 P92 [P92] 汎用入出力ポートです。この機能はクロック出力 指定が禁止のときに有効になります。 80 P93 F [P93] 汎用入出力ポートです。 81 AS F [AS ] アドレスストローブ出力です。この機能はアドレ スストローブ出力指定が許可のときに有効になります。 82 LBA [LBA] バースト Flash ROM アドレスロード出力です。こ の機能はアドレスロード出力指定が許可のときに有効に なります。 P94 [P94] 汎用入出力ポートです。この機能はアドレスロー ド出力 , アドレスストローブ出力指定が禁止のときに有 効になります。 BAA [BAA] バースト Flash ROM アドレスアドバンス出力で す。この機能はアドレスアドバンス出力指定が許可のと きに有効になります。 P95 83 P96 84 WE − F − P97 [P95] 汎用入出力ポートです。この機能はアドレスアド バンス出力 , コラムアドレスストローブ出力指定が禁止 のときに有効になります。 [P96] 汎用入出力ポートです。この機能はコラムアドレ スストローブ出力指定が禁止のときに有効になります。 [WE ] 16 ビット SRAM 用書込みストローブ出力です。 この機能は書込みストローブ出力指定が許可のときに有 効になります。 [P97] 汎用入出力ポートです。この機能は書込みスト ローブ出力指定が禁止のときに有効になります。 9 AVCC − A/D コンバータ用電源 10 AVRH − A/D コンバータ用電源 11 AVSS/AVRL − A/D コンバータ用電源 (GND) 17 第 1 章 概要 表 1.5-1 端子機能表 (9 / 9) 端子番号 端子名 入出力 回路形式 24, 55, 110 VCC − 電源端子 (3.3 系 ) 34, 52, 75, 101 VSS − 電源端子 (GND) 18 機能 第 1 章 概要 1.6 入出力回路形式 入出力回路形式を示します。 ■ 入出力回路形式 表 1.6-1 入出力回路形式 (1 / 4) 分類 回 路 形 式 備 A 考 ・発振帰還抵抗 約 1MΩ X1 クロック入力 XO スタンバイ制御 B ・CMOS ヒステリシス入力 プルアップ抵抗付き (25 kΩ) デジタル入力 C ・CMOS レベル入出力 スタンバイ制御あり デジタル出力 デジタル出力 デジタル入力 スタンバイ制御 19 第 1 章 概要 表 1.6-1 入出力回路形式 (2 / 4) 分類 回 路 形 式 備 D 考 ・アナログ入力 スイッチ付き アナログ入力 制御 F デジタル出力 ・CMOS レベル出力 ・CMOS レベルヒステリシ ス入力 スタンバイ制御あり デジタル出力 デジタル入力 スタンバイ制御 G ・CMOS レベル入力 スタンバイ制御なし デジタル入力 20 第 1 章 概要 表 1.6-1 入出力回路形式 (3 / 4) 分類 回 路 形 式 備 H 考 ・CMOS レベルヒステリシ ス入力 スタンバイ制御なし デジタル入力 I デジタル出力 ・CMOS レベル出力 ・CMOS レベルヒステリシ ス入力 スタンバイ制御なし デジタル出力 デジタル入力 M ・CMOS レベル出力 デジタル出力 デジタル出力 21 第 1 章 概要 表 1.6-1 入出力回路形式 (4 / 4) 分類 回 路 形 式 備 P デジタル出力 考 ・CMOS レベル入出力 スタンバイ制御あり プルダウン抵抗付き (25 kΩ) デジタル出力 制御 デジタル入力 スタンバイ制御 Q ・オープンドレイン出力 CMOS レベルヒステリシ ス入力 スタンバイ制御あり オープンドレイン制御 デジタル出力 デジタル入力 スタンバイ制御 22 第2章 デバイスの取扱いについて この章では , MB91307 シリーズの取扱い上の注意 について説明します。 2.1 デバイス取扱い上の注意 2.2 電源に関する取扱い上の注意 23 第 2 章 デバイスの取扱いについて 2.1 デバイス取扱い上の注意 ラッチアップ防止および端子処理について説明します。 ■ ラッチアップ防止 CMOS IC では入力端子や出力端子に VCC より高い電圧や VSS より低い電圧を印加した 場合または VCC ∼ VSS 間に定格を超える電圧を印加した場合に , ラッチアップ現象を 生じることがあります。ラッチアップが生じると電源電流が激増し , 素子の熱破壊に至 ることがありますので , 使用に際しては最大定格を超えることのないよう十分に注意 してください。 ■ 端子処理 以下に , 各種端子の処理と水晶発振回路の注意事項について説明します。 ● 未使用入力端子 使用していない入力端子を開放のままにしておくと , 誤動作の原因となることがあり ます。プルアップまたはプルダウンなどの処理をしてください。 ● 電源端子 VCC, VSS 端子が複数ある場合 , デバイス設計上はラッチアップなどの誤動作を防止す るためにデバイス内部で同電位にすべきものどうしを接続してありますが , 不要輻射 の低減 , グランドレベルの上昇によるストローブ信号の誤動作の防止および総出力電 流規格を遵守などのために , 必ずそれらすべてを外部で電源およびグランドに接続し てください。また , 電流供給源からできるかぎり低インピーダンスで本デバイスの VCC, VSS に接続するような配慮してください。 さらに , 本デバイスの近くで , VCC と VSS の間に 0.1µF 程度のセラミックコンデンサを バイパスコンデンサとして接続することをお勧めいたします。 ● モード端子 (MD0 ∼ MD2) これらの端子は , VCC または VSS に直接接続して使用してください。ノイズにより誤っ てテストモードに入ることを防ぐために , プリント板上の各モード端子と VCC または VSS 間のパターン長をできる限り短くし, これらを低インピーダンスで接続するように してください。 ● 水晶発振回路について X0, X1 端子の近辺のノイズは , 本デバイスを誤動作させる原因となります。X0 と X1 および水晶発振子 ( またはセラミック発振子 ), さらにグランドへのバイパスコンデン サはできるかぎり近くに配置するようにプリント板を設計してください。 また , X0, X1 端子の回りをグランドで囲むようなプリント板アートワークは安定した 動作を期待できますので , 強くお勧めいたします。 各量産品において,ご使用される発振子メーカに発振評価依頼をしてください。 ● NC 端子端子処理について NC 端子は , 必ず開放にして使用してください。 24 第 2 章 デバイスの取扱いについて ● 外部クロックについて 外部クロックを使用する際には , 原則として X0 端子 , また X1 端子には X0 と逆相のク ロックを同時に供給してください。ただし , STOP モード ( 発振停止モード ) を併用す る場合は , STOP モード時に X1 端子が "H" レベル出力で停止しますので , 出力どうし の衝突をさけるために , 外部に 1 kΩ 程度の抵抗を入れるようにしてください。 図 2.1-1 に , 外部クロック使用例について示します。 図 2.1-1 外部クロック使用例 ( 通常の場合 ) X0 X1 MB91307シリーズ [STOP モード ( 発振停止モード ) 使用時には X1 端子に抵抗を入れてくださ い。] 最大入力周波数は , データシートを参照してください。 ● PLL クロックモード動作中の注意について 本マイコンで PLL クロックを選択しているときに発振子が外れたり , あるいはクロッ ク入力が停止した場合 , 本マイコンは PLL 内部の自動発振回路の自走周波数で動作を 継続し続ける場合があります。この動作は保証外の動作です。 ● ポート 6, ポート 7 使用時の注意事項 外部バスインタフェースのアドレス出力と兼用になっているP60/A15∼P70/A24をポー トとして使用した場合 , ほかのアドレス出力の端子変化の瞬間グリッジがのります。端 子に抵抗 , 容量等と付けていただきグリッジを押さえていただく必要があります。 ■ 使用上の注意 ● クロック制御部 INIT 端子への "L" レベル入力時には , 発振安定待ち時間を確保してください。 ● ビットサーチモジュール BSD0, BSD1, BSDC レジスタはワードアクセスのみです。 ● プリフェッチ リトルエンディアンに設定した領域に対して , プリフェッチを許可する場合 , 該当する 領域へのアクセスは , ワード (32 ビット ) 長アクセス限定としてください。 → バイト / ハーフワードアクセスでは , 正しくアクセスできません。 ● 外バスの設定 本品種は , 外バス 33MHz の保証となっています。 外バスは , 将来性を考え 66MHz 対応の機能を備えているため , 初期値はベースクロッ ク (PLL の設定値で決定 ) と同率比となります。 DIVR1 ( 外バス基本クロック分周設定レジスタ ) を初期値のまま , ベースクロックを 66MHz に設定すると , 外バスも 66MHz になります。ベースクロックを変更する際には , 外バスが33MHzを超えないように設定したのち, ベースクロックを変更してください。 25 第 2 章 デバイスの取扱いについて ● MCLK と SYSCLK MCLK は , SLEEP/STOP モード時停止し , SYSCLK は , STOP モード時のみ停止すると いう違いがあります。用途に応じ使い分けてください。 ● I2C 入出力端子 本品種の SDA, SCL 端子は , "H" 出力しないように Pch トランジスタをオフした疑似 オープンドレイン端子です。そのため VCC 側にダイオードが付与された回路形式にな りますので , 通信電圧は本品種の 3.3V 系電源に合わせてください (3.3V 系電圧にプル アップする ) 。 ● 兼用ポートの機能切換え PORT と兼用端子の切換えは , PFR ( ポートファンクションレジスタ ) で行います。た だし , バス端子は外バスの設定により切り替わります。 ● プルアップコントロール 外バス端子として使用する端子に対してプルアップ抵抗をつけると交流規格を保証で きません。 また , プルアップ抵抗を設定してある PORT であっても , Hi-Z=1 のストップモード , ハードウェアスタンバイ時は無効となります。 ● I/O ポート ポートへのアクセスはバイトアクセスのみです。 ● 低消費電力モード • スタンバイモードに入れる場合は, 同期スタンバイモード(TBCR:タイムベースカウ ンタ制御レジスタビット 8 SYNCS ビットにて設定します ) を使用した上で , 以下の シーケンスを必ず使用してください。 (LDI #value_of_standby, R0) (LDI #_STCR, R12) STB R0, @R12 ; スタンバイ制御レジスタ (STCR) への書込み LDUB @R12, R0 ; 同期スタンバイのための STCR リード LDUB @R12, R0 ; もう一度 STCR をダミーリード NOP ;タイミング調整用の NOP × 5 NOP NOP NOP NOP • モニタデバッガを使用される場合は , 以下のことを行わないでください。 - 上記命令列に対するブレークポイントの設定 - 上記命令列に対するステップ実行 ● RAM 上の命令実行について RAM に命令コードを配置する場合は ,0005_FFF8H ∼ 0005_FFFFH の最終アドレス 8 バ イトには配置しないでください ( 命令コード配置禁止領域 ) 。 26 第 2 章 デバイスの取扱いについて ● 電源 ON 時の電流 (MB91V307B, MB91V307R のみ ) INIT = 0 の状態で電源 ON にすると , 約 300mA の電源電流が流れます。 INIT = 1 にすることで過電流はながれなくなり , INIT 以降 =0 にしても過電流はながれ ません。 ● ウオッチドッグタイマ機能について 本品種が備えているウオッチドッグタイマ機能は , プログラムが一定時間内にリセッ ト延期動作を行うことを監視し , プログラムの暴走によりリセット延期動作が行われ なかったときに , CPU をリセットするための機能です。そのため , 一度ウオッチドッグ タイマ機能を有効にすると , リセットを掛けるまで動作を続けます。 例外として , CPU のプログラム実行が停止する条件では自動的にリセット延期を行い ます。この例外にあてはまる条件については , ウオッチドッグタイマの機能説明の項を 参照してください。 なお , システムの暴走により上記状態となってしまった場合 , ウオッチドッグリセット が発生しない可能性があります。その場合 , 外部 INIT 端子よりリセット (INIT) をかけ てください。 ■ 制限事項 ● リトルエンディアン プリフェッチ許可領域では , リトルエンディアンに設定しないでください。 →正しくアクセスできません。 ● TCR (Terminal and timing Control Register, 0x00000683) TCR は , 書込み専用レジスタです。したがって , ビット操作命令ではアクセスしないで ください。 TCR レジスタの BREN ビットの取扱いについて , ビット 7:BREN ビットに 1 を書いて ある状態から , 0 をライトしてバス共有を禁止したい場合 , 必ず以下の手順で行ってく ださい。この手順に従わない場合 , デバイスがハングアップする場合があります。 ①ポート 8 機能レジスタ PFR8 のビット 2:BRQE ビットに 0 をライトする。 ② TCR レジスタのビット 7:BREN ビットに 0 をライトする。 ● RD /WD → CS ホールド延長サイクル 通常メモリ /IO アクセスタイプ設定 (ACR レジスタの TYPE3 ∼ TYPE0=0xxx) を行った 領域にて , RD /WD → CS ホールド延長サイクルを「あり」に設定 (AWR レジスタの ビット 0=1 に設定 ) しているにもかかわらず , 動作 / 設定の組み合わせによっては , ホー ルド延長サイクルが挿入されない場合があります。 ホールド延長サイクルが挿入されない条件は , 以下の条件です。 • RD /WD → CS ホールド延長サイクルを「あり」に設定していること。 (AWR レジスタのビット 0:W00=1 に設定 ) • 通常メモリ /IO アクセスタイプ設定領域であること。 (ACR レジスタのビット 3 ∼ビット 0:TYPE3 ∼ TYPE0=0xxx) 27 第 2 章 デバイスの取扱いについて <注意事項> MB91307 シリーズでは , このタイプしか設定できません。 • アドレス→ CS 遅延サイクルを「なし」に設定していること。 (AWR レジスタのビット 2:W02=0 に設定 ) • ライトリカバリサイクルを「0 サイクル」以外 ( リカバリあり ) に設定していること。 (AWR レジスタのビット 5, ビット 4:W05, W04=00 以外に設定 ) ( 例 : 外部バス 16 ビット幅領域に対し word ライトを行った場合の最初 のライト ) • 上記設定下において , その設定領域に対し , バス幅より大きいデータサイズでのラ イトアクセスを行った場合 , 複数に分割されたライトアクセスの最後のサイクル以 外のサイクルにて , RD /WD → CS ホールド延長サイクルが挿入されず , ホールド不 足が発生します。 <注意事項> リードサイクルでは問題は発生しません。 この機能を使用する場合は , 以下のいずれかの設定をしてください。 • アドレス→ CS 遅延サイクルを「あり」に設定する。 (AWR レジスタのビット 2:W02=1 に設定 ) • ライトリカバリサイクルを「0 サイクル」に設定する。 (AWR レジスタのビット 5, ビット 4:W05, W04=00 に設定 ) ● 符号付き除算命令 (DIV0S) DIV0S 命令の直前の命令が , メモリアクセスを行う命令の場合 , 正しい計算結果が得ら れない場合があります。また , DIV0S 命令と DIV1 命令が 4 バイトアラインで連続して いない場合 , 正しい計算結果が得られない場合があります。 発生条件は , 以下のいずれかとなります。 • DIV0S 命令の直前がメモリアクセスを行う命令の場合。 <注意事項> 該当するメモリアクセスを行う命令 ( 計 58 命令 ) ST Ri, @- R15 ST Rs, @- R15 STB Ri, @Rj STB Ri, @ (R13, Rj) STB Ri, @ (R14, disp8) LDUB @Rj, Ri LDUH @ (R13, Rj) , Ri LDUB @ (R13, Rj) , Ri DMOVH @dir9, R13 DMOVB @dir8, R13 LDUH @ (R14, disp9) , Ri LDUB @ (R14, disp8) , Ri ANDH Rj, @Ri ANDB Rj, @Ri EORB Rj, @Ri DMOV @R13+, @dir10 DMOVB @R13+, @dir8 DMOV @dir10, @R13+ DMOVB @dir8, @R13+ DMOV @R15+, @dir10 28 ST PS, @- R15 DMOVB R13, @dir8 LD @ (R13, Rj) , Ri DMOV @dir10, R13 LD @ (R14, disp10) , Ri AND Rj, @Ri ORB Rj, @Ri DMOVH @R13+, @dir9 DMOVH @dir9, @R13+ DMOV @dir10, @- R15 第 2 章 デバイスの取扱いについて • DIV0S 命令と DIV1 命令が 4 バイトアラインされていない場合で , トレースモード としてフルトレースモードを指定した場合。 • DIV0S 命令と DIV1 命令が 4 バイトアラインされていても , DIV1 命令にブレークポ イントを設定した場合で , D-bus DMA 転送を行うか , トレースモードとしてフルト レースモードを指定した場合。 本注意事項を回避するために , 下記のようにしてください。 (1) DIV0S 命令の前には , 必ず上記メモリアクセスを行う命令を置かないでください。 (2) D-bus DMA 転送およびフルトレースモードを設定しないでください。 また , 上記 (1) の条件を回避するコードを出力する場合は , コンパイラオプションとし て - @ div0s 1 を指定してください。 SOFTUNE コンパイラ: - SOFTUNE V3 をご使用の場合 :SOFTUNE コンパイラ V30L07R07 以降 - SOFTUNE V5 をご使用の場合 :SOFTUNE コンパイラ V50L04 以降 - SOFTUNE V6 をご使用の場合 :SOFTUNE コンパイラ V60L01 以降 ● DMA ディマンド転送 スリープ中のディマンド転送が 1 回しか行われず , 以降先に進みません。また , 通常動 作時のディマンド転送においては , 転送効率の低下としてみえることがあります。 この動作は , ディマンド転送以外 (DREQ のエッジ検出モード等 ) では発生しません。 発生条件は , 次のとおりです。 • スリープ中に DMAC のディマンド転送を行った場合 - 転送を 1 回行った後 , DREQ が継続して入力されているにもかかわらず以降の転 送が進まない。 - なんらかの要因でスリープより復帰し, DMA転送以外の外部バス動作が発生する と , 以降の転送が再開される。 • 通常動作中に DMAC のディマンド転送を行った場合 - 転送を 1 回行った後 , DMA 転送以外の外部バスアクセスが発生するまでは , 以降 の転送が進まない。 - キャッシュヒットの連続 , ないし内部 ROM 動作中など , 外部バスアクセスが行わ れない場合 , ディマンド転送が進まなくなる。 • プリフェッチによる外部アクセスでは , ディマンド転送は復活しません。 本注意事項を回避するために , 次のようにしてください。 • スリープ中に DMAC ディマンド転送を使用しない。 • DMAC ディマンド転送中にスリープを使用しない。 ● DMA 転送要因選択について (MB91306R/307R のみ ) DMA 転送要因選択として下記の設定を行った場合 , 起動要因がクリアされません。 使用しないようにお願い致します。 29 第 2 章 デバイスの取扱いについて DMA コントロール / ステータスレジスタ DMACA0 ∼ DMACA4 内 1S4 ∼ 0 ビット ( 転送要因選択 ) 10110 外部割込み 0 10111 外部割込み 1 11000 リロードタイマ 0 11001 リロードタイマ 1 11010 リロードタイマ 2 11011 外部割込み 2 11100 外部割込み 3 11101 外部割込み 4 11110 外部割込み 5 ● R15 を使用した RMW 命令 下記の命令を実行した場合 , R15 として SSP, USP* の値が使われず , 結果として誤った 値をメモリへ書き込んでしまいます。以下の命令は , コンパイラでは発生されません。 AND R15, @Rj ANDH R15, @Rj ANDB R15, @Rj OR R15, @Rj ORH R15, @Rj ORB R15, @Rj EOR R15, @Rj EORH R15, @Rj EORB R15, @Rj XCHB @Rj, R15 *: R15 は実体がなく , プログラムから R15 をアクセスした場合 , PS レジスタの "S" フ ラグの状態によって , SSP あるいは USP がアクセスされます。 本注意事項を回避するために , 次のようにしてください。 • 上記10命令をアセンブラで記述される場合は, R15以外の汎用レジスタを指定する。 ● PS レジスタに関する注意事項 一部の命令で PS レジスタを先行処理しているため , 下記の例外動作により , デバッガ ご使用時に割込み処理ルーチンでブレークしたり , PS レジスタ内のフラグの表示内容 が更新されたりする場合があります。いずれの場合も , EIT から復帰後以降に , 正しく 再処理を行うように設計されていますので , EIT 前後の動作は仕様どおりの処理を行い ます。 1. DIVOU/DIVOS 命令の直前の命令で , (a) ユーザ割込み・NMI を受け付けた場合 , (b) ステップ実行を行った場合 , (c) データイベントまたはエミュレータメニューにてブ レークした場合 , 以下のような動作を行う場合があります。 (1) D0,D1 フラグが , 先行して更新されます。 (2 ) EIT 処理ルーチン ( ユーザ割込み・NMI, またはエミュレータ ) を実行します。 (3) EIT から復帰後 , DIVOU/DIVOS 命令が実行され , D0,D1 フラグが (1) と同じ値 に更新されます。 2. ユーザ割込み・NMI 要因が発生している状態で , 割込みを許可するために ORCCR/ STILM/MOV Ri,PS の各命令が実行されると , 以下のような動作を行います。 (1) PS レジスタが , 先行して更新されます。 (2) EIT 処理ルーチン ( ユーザ割込み・NMI, またはエミュレータ ) を実行します。 30 第 2 章 デバイスの取扱いについて (3) EIT から復帰後 , 上記命令が実行され , PS レジスタが (1) と同じ値に更新されま す。 ● I-bus メモリに関する注意 RETI 命令直前で , 命令キャッシュの制御レジスタおよび命令 RAM へのデータアクセ スを行わないでください。 ■ デバッガ関連の注意事項 ● RETI 命令のステップ実行 ステップ実行する際 , 割込みが頻繁に発生する環境下では , 該当割込み処理ルーチンだ けを繰り返して実行いたします。その結果 , メインルーチンや割込みレベルの低いプロ グラムの実行が行われなくなります。 ( 例えば , タイムベースタイマの割込みを許可していた場合 , RETI をステップ実行する と , 必ずタイムベースのルーチンの先頭でブレークすることになります。) 該当割込み処理ルーチンのデバッグが不要になった段階で , 該当割込みを禁止してく ださい。または , RETI 命令をステップ実行しないようにしてください。 ● ブレーク機能 1. ハードウェアブレーク ( イベントブレーク含む ) の対象アドレスが現在のシステム スタックポインタのアドレスや , スタックポインタを含む領域に設定されていると , ユーザプログラムに実際のデータアクセス命令がないにもかかわらず , 1 命令実行 後にブレークしてしまいます。 回避するために , システムスタックポインタのアドレスを含む領域に対する ( ワー ド ) アクセスを , ハードウェアブレーク ( イベントブレーク含む ) の対象に設定しな いでください。 2. メモリから分岐先アドレスを読み込む命令と分岐命令の間に , ウェイトが発生する 命令を実行すると , 本来命令アライメントエラーが発生しないところで命令アライ メントエラーが発生し ICE がブレークし (CPU 異常ブレーク ) 命令実行が停止しま す。 また , 上記の現象が発生するタイミングでは , 分岐先アドレスに命令ブレークを設 定しても , ブレークしない場合があります。 例: LD @R1, R0 ; read F-bus RAM LD @R2, R3 ; read F-bus RAM CALL @R0 ; 不要なアライメントエラーが発生 , あるいはブレークしない 可能性があります。 上記制限事項については , 次のようにしてください。 誤ったアライメントエラーの発生に関しましては , デバッガの機能設定にてアライメ ントエラーの機能を OFF にしてご使用ください。 正しくブレークしない件に関しましては , デバッガの機能設定にて , 使用ブレークを ハードウェアブレークではなく , ソフトウェアブレーク使用の設定にしてご使用くだ さい。 31 第 2 章 デバイスの取扱いについて ● トレースモード デバッグ時のトレースモードを , 内蔵 FIFO を出力バッファとした「フルトレースモー ド」に設定した場合 , 電流が増加したり , D-bus DMA アクセスがロストする場合があ ります。 発生条件は , 次のとおりです。 • フルトレースモード中に , D-bus への DMA 転送またはスタンバイを使用した場合 本注意事項を回避するために , 次のようにしてください。 • 内部トレースモードを使用する。 ● アライメントエラー ( エミュレータデバッガ ) 命令アライメントエラーブレークを許可していた場合 , メモリから分岐先アドレスを 読み込む命令と分岐命令の間にウェイトが発生する命令を実行すると , 本来命令アラ イメントエラーが発生しないところで命令アライメントエラーが発生し , ICE がブ レークし命令実行が停止します。その際 , unknown break factor や CPU 異常ブレーク , といったメッセージが表示されます。 また , 上記現象が発生するタイミングでは , 分岐先アドレスに命令ブレークを設定して も , ブレークしない場合があります。 発生条件として , 以下の 3 種類の命令が連続実行された場合です。 ①ウェイトが発生する下記 LD/DMOV 命令 ( 分岐先アドレスをリード ) LD @Rj, Ri LDUH @Rj, RI LD @ (R13, Rj) , Ri LDUH @ (R13, Rj) , Ri LDUB @ (R13, Rj) , Ri LD @ (R14, disp10) , Ri LDUH @ (R14, disp9) , Ri LDUB @ (R14, disp8) , Ri LD @R15+, Ri LD @R15+, Rs LD @R15+, PS DMOV @dir10, R13 DMOVH @dir9, R13 DMOVB @dir8, R13 ②ウェイトが発生する命令 (F-bus RAM や外部メモリへのリードなど ) ③ JMP @Ri, JMP:D @Ri, CALL @Ri, CALL:D @Ri, RET, RET:D の分岐命令 例: LD @R1, R0 ;read F-bus RAM LD @R2, R3 ;read F-bus RAM CALL @R0 本注意事項を回避するために , 次のようにしてください。 命令アライメントエラーブレークを許可していた場合 , メモリから分岐先アドレスを 読み込む命令と分岐命令の間にウェイトが発生する命令を実行すると , 本来命令アラ イメントエラーが発生しないところで命令アライメントエラーが発生し, ICEがブレー クし , 命令実行が停止します。その際 , unknown break factor や CPU 異常ブレーク , と いったメッセージが表示されます。 また , 上記現象が発生するタイミングでは , 分岐先アドレスに命令ブレークを設定して も , ブレークしない場合があります。 回避方法として , それぞれ , 以下の対応をお願いします。 ①誤ったアライメントエラーの発生については , デバッガの機能設定にてアライメン トエラーの機能をオフにしてご使用ください。 ②正しくブレークしない件については , 分岐先アドレスを避けてブレークポイントを 設定してください。 32 第 2 章 デバイスの取扱いについて ● ソフトウェアブレーク (INTE 命令 ) とユーザ割込み /NMI 同時発生 INTE 命令とユーザ割込み ( ユーザ NMI を含む ) を同時に受け付けると , エミュレータ デバッガにて , 以下の現象が発生します。 • ユーザが設定したブレークポイントでないところを示して停止する。 ( ユーザ割込み /NMI 処理ルーチンの先頭を示して停止する。) • 停止後の再実行が正しく行われない。 本現象が発生した場合は , ソフトウェアブレークではなく , ハードウェアブレークをご 使用ください。また , モニタデバッガをご使用の場合は , 該当箇所にブレークを設定し ないようにしてください。 ● オペランドブレーク DSU のオペランドブレークとして設定している領域にスタックポインタがあると , 誤 動作の原因となります。 システムスタックポインタのアドレスを含む領域に対するアクセスを , データイベン トブレークの対象にしないでください。 33 第 2 章 デバイスの取扱いについて 2.2 電源に関する取扱い上の注意 電源投入時の端子の扱いや処理など , 電源に関する注意事項について説明します。 ■ 電源投入時の処理 電源投入直後は , 必ず INIT 端子で設定初期化リセット (INIT) をかけてください。 また , 電源投入直後は , 発振回路の発振安定待ち時間を確保するため , INIT 端子への "L"レベル入力を発振回路の要求する安定待ち時間の間持続してください( INIT端子に よる INIT では , 発振安定待ち時間の設定は最小値に初期化されています ) 。 ■ 電源投入時の原発振入力の処理 電源投入時は , 必ず発振安定待ち時間が解除されるまでの間 , クロックを入力してくださ い。 ■ 電源投入時のハードウェアスタンバイ (MB91307B,MB91V307B のみ ) 電源投入直後からハードウェアスタンバイ要求が発生している場合 , INIT 端子による 設定初期化リセット (INIT) が優先されますが , その後 INIT 端子による設定初期化リ セット (INIT) が解除されてハードウェアスタンバイ状態に遷移した場合 , 発振安定待 ち時間の設定は最大値に初期化され , ハードウェアスタンバイ要求が解除された後の 発振安定待ち時間は最大値となります。 ■ 内蔵 DC-DC レギュレータ 本品種は , レギュレータを内蔵しています。VCC 端子に 3.3V を供給し , C 端子にはレ ギュレータ用に 0.1µF 程度のパスコンを必ず入れてください。 また , A/D コンバータには別途 3.3V 電源が必要です。 3.3 V VCC C AVCC AVRH AVSS/AVRL VSS 0.1 µF GND ■ 電源投入 / 切断時の注意事項 (MB91306R, MB91307R) VCCI ( 内部電源 1.8V 系 ) と VCC ( 外部端子電源 3.3V 系 ) の電源投入 / 切断時の注意事項 VCCI ( 内部 ) が切断されている条件で VCC ( 外部 ) のみを継続的 (1 分間を目安 ) に印 加することは , LSI の信頼性上の問題がありますので避けてください。 VCC ( 外部 ) を OFF 状態から ON 状態に復帰させる際には , 電源ノイズなどの影響によ り , 回路の内部状態が保持できない場合があります。 34 投入時 VCCI ( 内部 ) ⇒ VCC ( 外部 ) ⇒ 信号 切断時 信号 ⇒ VCC ( 外部 ) ⇒ VCCI ( 内部 ) 第 2 章 デバイスの取扱いについて ■ STOP モード使用時の注意 本品種に内蔵されているレギュレータは , STOP モード時に停止します。STOP 中に内 部のリーク電流 (ICCH) の増加や , 通常動作中にノイズに起因する誤動作 , または電源 の異常などによってレギュレータが停止した場合などに , 内部の 2.5V 電源が動作保証 電圧以下に低下してしまうことがあります。このため , 内蔵レギュレータを使用して STOP モードを使用する場合には , 必ず外部から 3.3V 電源が低下しないように電源を 補助してください。また , そのような状態になった場合でも , リセットの入力により内 蔵レギュレータを再起動させることができます。 この場合には , 発振安定待ち時間リセットを "L" レベルにしてください。 3.3 V VCC 2.4 kΩ 7.6 kΩ C 0.1μF VSS GND 35 第 2 章 デバイスの取扱いについて 36 第3章 CPU および制御部 この章では , MB91307 シリーズの機能を知るため に , アーキテクチャ , 仕様 , 命令などの基本的なこ とがらについて説明します。 3.1 メモリ空間 3.2 内部アーキテクチャ 3.3 命令キャッシュ 3.4 専用レジスタ 3.5 汎用レジスタ 3.6 データ構造 3.7 ワードアライメント 3.8 メモリマップ 3.9 分岐命令 3.10 EIT ( 例外 , 割込み , トラップ ) 3.11 リセット ( デバイスの初期化 ) 3.12 クロック発生制御 3.13 デバイス状態制御 3.14 動作モード 37 第 3 章 CPU および制御部 3.1 メモリ空間 MB91307 シリーズの論理アドレス空間は 4G バイト (232 番地 ) あり , CPU はリニ アにアクセスを行います。 ■ メモリマップ 図 3.1-1 に , 本品種のメモリ空間を示します。 図 3.1-1 メモリマップ MB91307B/R 内ROM外バスモード MB91306R 内ROM外バスモード MB91307B/R MB91306R 外バスモード I/O I/O 0000 0000H 0000 0000H I/O 0000 0400H 0000 0400H I/O I/O I/O 0001 0000H ダイレクト アドレッシング領域 I/Oマップ参照 0001 0000H アクセス禁止 アクセス禁止 アクセス禁止 0004 0000H 0004 0000H 内蔵RAM64KB 0005 0000H 内蔵RAM128KB 0006 0000H 外部領域 アクセス禁止 0006 0000H アクセス禁止 0010 0000H 0010 0000H 外部領域 外部領域 外部領域 FFFF FFFFH ● ダイレクトアドレッシング領域 アドレス空間の下記の領域は , I/O 用に使用されます。 この領域をダイレクトアドレッシング領域とよび , 命令中で直接オペランドのアドレ スを指定できます。 ダイレクトアドレッシング領域は , アクセスするデータのサイズにより , 以下のように 異なります。 38 • バイトデータアクセス :000H ∼ 0FFH • ハーフワードデータアクセス :000H ∼ 1FFH • ワードデータアクセス :000H ∼ 3FFH 第 3 章 CPU および制御部 ■ メモリ空間内の内蔵 RAM 領域 MB91307 シリーズは , 内蔵 RAM を 128K バイト搭載しています。 この RAM を有効にするためには , モードベクタ値を内部 ROM 外部バスモード (ROMA=1) にしておく必要があります。 本品種での使用上の注意点を , 以下に列記します。 • リセットベクタは , 000F_FFFCH 固定です。 • MB91307 シリーズの場合 , 128K バイト RAM 領域は , 0004_0000H ∼ 0005_FFFFH に 配置されます。領域 0006_0000H ∼ 000F_FFFFH はアクセス禁止です。 • RAM を使用する場合は , モードベクタで内部 ROM 外部バスモードにしてください。 内部 ROM 外部バスモードにすると , 内蔵 RAM 領域は使用できますが , ベクタ領域 000F_FFxxH が内部領域になり外部にアクセスできなくなりますので , 以下の説明を 参照して使用してください。 • RAM に命令コードを配置する場合は , 0005_FFFF8H ∼ 0005_FFFFH の最終アドレス 8 バイトには配置しないでください ( 命令コード配置禁止領域 ) 。 図 3.1-2 に , リセット解除後およびモード設定後のメモリマップを示します。モード設 定後に , 内蔵 RAM 領域が有効になります。 図 3.1-2 内蔵 RAM 領域の配置 モード設定後 内ROM外バスモード リセット解除後 0000 0000H MB91307B/R MB91306R I/O ダイレクト アドレッシング領域 I/O I/O I/O I/Oマップ参照 I/O I/O アクセス禁止 アクセス禁止 0000 0400H 0001 0000H アクセス禁止 0004 0000H 0005 0000H 内蔵RAM64KB 外部領域 内蔵RAM128KB 外部領域 アクセス禁止 外部領域 外部領域 0006 0000H アクセス禁止 0010 0000H 外部領域 FFFF FFFFH 39 第 3 章 CPU および制御部 ■ ユーザプログラムの初期化 内蔵 RAM の使用方法を , 例を示して説明します。 MB91306R の場合は , 内蔵 RAM 領域が違うだけで設定は同じです。 ● ハードウェア設計条件 図 3.1-3 ハードウェアの接続 MB91307シリーズ 普通の設計 CS0 外部ROM A19~A1 • 1M バイトの外部 ROM を 0010_0000H から配置した場合を想定します。 リンカでプログラムをここへ配置します ( このアドレス以外でも以下の説明への適 用は可 ) 。 • アドレスは A19 ∼ A1 (1M バイト ) を ROM に接続してあり , それ以上のアドレスは CS0 を用いることとします。 • モード端子 (MD2, MD1, MD0) は外部 ROM モードベクタに設定します。 • リセットベクタは 001F_FFFCH に記載します。同様に , モードベクタは 001F_FFF8H に記載します。 ● リセット解除直後 図 3.1-4 リセット解除直後のアドレスマップ 0000 0000H MB91307シリーズ 0000 0400H CS0 外部ROM 外部ROM FFFF FFFFH ROMの1MBの空間が アドレスマップ上 繰り返して見える。 • リセット解除後 , CPU は , 000F_FFF8H からモードベクタを , 000F_FFFCH からリセッ トベクタを取り込もうとしますが , 外部 ROM モードベクタの設定になっているた め外部へ取りにいきます。ところが CS0 の初期値により , 外部空間は 1M バイトの 外部 ROM が繰り返して見える状態になっているので , モードベクタ , リセットベク タそのものは , 外部 ROM の 001F_FFF8H および 001F_FFFCH に記憶されているもの 40 第 3 章 CPU および制御部 をそれぞれ取り込むことになります。 • 分岐先はリンカによって 001X_XXXXH のいずれかに入るようになっているので , 以 降のプログラム実行はこのあたりで行われます。 ● ユーザプログラム初期化ステップ 図 3.1-5 初期化ステップ 1 のアドレスマップ 0000 0000H 0004 0000H MB91307シリーズ 内部RAM 0006 0000H CS0 外部ROM 0010 0000H 外部ROM 001F FFFFH FFFF FFFFH ROMの1MBの空間 がアドレスマップの 1MBと一致する。 割込みテーブル (TBR) を 001F_FFXXH に設定し , その後各種の初期化を行います。 この過程で chip select も設定しますが , このとき CS0 のアドレスを 001X_XXXXH で有 効になるように設定します。設定の前後では CS0 のデコード結果は変わらないので , CPU は外部 ROM 上のプログラムをそのまま実行し続けます。 41 第 3 章 CPU および制御部 3.2 内部アーキテクチャ MB91307 シリーズは , RISC アーキテクチャを採用すると同時に , 組込み用途に向 け , 高機能命令を導入した高性能コアです。 ■ 特長 • RISC アーキテクチャの採用 基本命令 :1 命令 1 サイクル • 32 ビットアーキテクチャ 汎用レジスタ :32 ビット× 16 本 • 4G バイトのリニアなメモリ空間 • 乗算器の搭載 - 32 ビット× 32 ビット乗算 :5 サイクル - 16 ビット× 16 ビット乗算 :3 サイクル • 割込み処理機能の強化 - 高速応答速度 :6 サイクル - 多重割込みのサポート - レベルマスク機能 :16 レベル • I/O 操作用命令の強化 - メモリ - メモリ転送命令 - ビット処理命令 • 高いコード効率 基本命令語長 :16 ビット • 低消費電力 スリープモード / ストップモード • ギア機能 42 第 3 章 CPU および制御部 ■ 内部アーキテクチャ MB91307 シリーズの CPU は , 命令バスとデータバスが独立したハーバードアーキテク チャ構造を採用しています。命令バス (I-bus) にはオンチップの命令キャッシュが接続 されています。32 ビット←→ 16 ビットバスコンバータはバス (F-bus) に接続され , CPU と周辺リソースとのインタフェースを実現します。ハーバード←→プリンストンバス コンバータは I-bus, D-bus 双方に接続され , CPU とバスコントローラとのインタフェー スを実現します。 図 3.2-1 に , 内部アーキテクチャの接続図を示します。 図 3.2-1 内部アーキテクチャ FRex CPU D-bus I-bus I address 32 I data 32 命令キャッシュ D address 32 D data 32 ハーバード プリンストン バスコンバータ F Address 32 F Data 32 RAM 32ビット 16ビット バスコンバータ 16 R-bus 周辺リソース F-bus バスコントローラ 43 第 3 章 CPU および制御部 ● CPU CPU は , 32 ビット RISC の MB91307 シリーズのアーキテクチャをコンパクトにインプ リメントしたものです。 1 サイクルあたり 1 命令を実行するため , 5 段階の命令パイプライン方式を採用してい ます。パイプラインは , 以下のステージから構成されています。 • 命令フェッチ (IF) : 命令アドレスを出力し , 命令をフェッチします。 • 命令デコード (ID) : フェッチした命令をデコードします。レジスタの読出しも行 います。 • 実行 (EX) : 演算を実行します。 • メモリアクセス (MA) : メモリに対するロードまたはストアのアクセスを 行います。 • ライトバック (WB) : 演算結果 ( またはロードされたメモリデータ ) をレジスタに 書き込みます。 図 3.2-2 命令パイプライン CLK 命令1 WB 命令2 MA WB 命令3 EX MA WB 命令4 ID EX MA WB 命令5 IF ID EX MA WB IF ID EX MA 命令6 WB 命令は , 順不同で実行されることはありません。すなわち , 命令 A が命令 B の前にパ イプラインに入ると , 命令 A は必ず命令 B の前に書込みバックステージに達します。 命令の実行は , 原則として 1 サイクルあたり 1 命令の速度で行われます。ただし , メモ リウェイトを伴ったロードストア命令 , 遅延スロットを持たない分岐命令および複数 サイクル命令では , 命令の実行に複数のサイクルが必要となります。また , 命令の供給 が遅い場合も命令の実行速度が低下します。 ● 命令キャッシュ オンチップの命令キャッシュにより , 外部高速メモリとそれに関連する制御ロジック のコストを発生することなく高性能なシステムを構築することができます。外部バス の速度が遅い場合にも , CPU への命令供給を高速に行うことができます。命令キャッ シュの詳細については , 「3.3 命令キャッシュ」で説明します。 44 第 3 章 CPU および制御部 ● 32 ビット←→ 16 ビットバスコンバータ 32 ビット幅でアクセスされる F-bus と , 16 ビット幅でアクセスされる R-bus とのイン タフェースをとり , CPU から内蔵周辺回路へのデータアクセスを実現します。 CPU から 32 ビット幅のアクセスがあった場合 , このバスコンバータがそれを 2 回の 16 ビット幅アクセスに変換して R-bus へアクセスします。内蔵周辺回路の一部には , アク セス幅に関して制限のあるものがあります。 ● ハーバード←→プリンストンバスコンバータ CPU の命令アクセスとデータアクセスの整合をとり , 外部バスとのスムーズなインタ フェースを実現します。 CPU は , 命令バスとデータバスが独立したハーバードアーキテクチャ構造です。一方 , 外部バスの制御を行うバスコントローラは , 単一バスのプリンストンアーキテクチャ 構造です。このバスコンバータは , CPU の命令アクセスとデータアクセスに優先順位 をつけ , バスコントローラへのアクセスを制御します。この働きにより , 外部へのバス アクセス順位が常に最適化されたものになります。 ■ 命令概要 MB91307 シリーズは , 一般的な RISC の命令体系に加え , 組込み用途に最適化された論 理演算とビット操作およびダイレクトアドレッシング命令をサポートしています。各 命令は , 16 ビット長 ( 一部の命令は 32 ビット長 , 48 ビット長 ) ですので , 優れたメモ リ使用効率を持ちます。命令セットの一覧は , 付録を参照してください。 命令セットは , 以下の機能グループに分けることができます。 • 算術演算 • ロードとストア • 分岐 • 論理演算とビット操作 • ダイレクトアドレッシング • その他 ● 算術演算 算術演算命令には , 標準の算術演算命令 ( 加算 , 減算 , 比較 ) およびシフト命令 ( 論理シ フト , 算術演算シフト ) があります。加算命令と減算命令については , 多ワード長演算 で使用するキャリ付き演算や , アドレス計算に便利なフラグ値を変化させない演算も 可能です。 さらに , 32 ビット× 32 ビット , 16 ビット× 16 ビットの乗算命令と , 32 ビット÷ 32 ビットのステップ除算命令があります。 また , レジスタに即値をセットする即値転送命令や , レジスタ間転送命令も備えていま す。 算術演算命令は , すべて CPU 内の汎用レジスタおよび乗除算レジスタを用いて演算し ます。 45 第 3 章 CPU および制御部 ● ロードとストア ロードとストアは , 外部メモリに対して読出しと書込みを行う命令です。 また , チップ内の周辺回路 (I/O) への読出しと書込みにも使用されます。 ロードとストアは , バイト , ハーフワード , ワードの 3 種類のアクセス長を持ちます。 また , 一般的なレジスタ間接のメモリアドレッシングに加え , 一部の命令については ディスプレースメント付きレジスタ間接やレジスタインクリメント / デクリメント付 きレジスタ間接のメモリアドレッシングも可能です。 ● 分岐 分岐グループは , 分岐 , コール , 割込みおよび復帰の命令です。分岐命令は , 遅延スロッ トを持つものと持たないものがあり , 用途に応じて最適化することができます。分岐命 令の詳細については「3.9 分岐命令」で説明します。 ● 論理演算とビット操作 論理演算命令は, 汎用レジスタ間, または汎用レジスタとメモリ (およびI/O) 間でAND, OR, EOR の論理演算を行うことが可能です。また , ビット操作命令はメモリ ( および I/O) の内容を直接操作することができます。メモリアドレッシングは , 一般的なレジスタ間 接アドレッシングです。 ● ダイレクトアドレッシング ダイレクトアドレッシング命令は , I/O と汎用レジスタ間または I/O とメモリ間のアク セスに使用する命令です。I/O のアドレスをレジスタ間接ではなく命令中で直接指定す ることにより , 高速 , 高効率にアクセスすることができます。一部の命令については , レジスタインクリメント / デクリメント付きレジスタ間接のメモリアドレッシングも 可能です。 ● その他 PS レジスタ内のフラグ設定 , スタック操作 , 符号 / ゼロ拡張等を行う命令です。また , 高級言語対応の関数入口 / 出口 , レジスタマルチロード / ストア命令も備えています。 46 第 3 章 CPU および制御部 3.3 命令キャッシュ 命令キャッシュの詳細を説明します。 ■ 概要 命令キャッシュは , 一時記憶メモリです。命令コードを外部の低速メモリからアクセス する場合 , 一度アクセスしたコードを内部に保持する役目を果たし , 2 回目以降のアク セス速度を速めるために使用します。 命令キャッシュデータ RAM は , RAM モードに設定することにより , ソフトウェアで 直接読出しアクセスおよび書込みアクセスができるようになります。また , 命令キャッ シュを 1 度 ON にしてから OFF にする場合には , 必ず「3.3.4 命令キャッシュを使用す る場合の設定方法」の注意事項に記載されているサブルーチンを使用してください。 ■ 命令キャッシュのキャッシュ可能領域 • 命令キャッシュは , 外部バス空間のみをキャッシュ可能とします。 • DMA転送で外部メモリの内容が更新されたとしても, 命令キャッシュの内容とのコ ヒーレンシはとりません。 このような場合は命令キャッシュをフラッシュすることで , コヒーレンシを保って ください。 • チップセレクトの領域ごとに非キャッシュ領域に設定することができます。この場 合でもキャッシュオフに比べて 1 サイクルのペナルティを受けます (「第 4 章 外部 インタフェース」のチップセレクトの記述を参照 ) 。 47 第 3 章 CPU および制御部 命令キャッシュの構成 3.3.1 命令キャッシュの構成について説明します。 ■ 概略仕様 命令キャッシュの概略仕様は , 以下のとおりです。 • FR の基本命令長 :2 バイト • ブロックの配置方式 :2 ウェイセットアソシアティブ方式。 • ブロック :1 ウェイは 32 ブロック構成。 1 ブロックは 16 バイト (=4 サブブロック ) 1 サブブロックは 4 バイト (=1 バスアクセス単位 ) ■ 命令キャッシュの構成 図 3.3-1 に , 命令キャッシュの構成を示します。 図 3.3-1 命令キャッシュの構成 4バイト ウェイ1 キャッシュタグ 32 ブロック ・ ・ ・ 4バイト 4バイト 4バイト 13 12 11 4バイト 11 サブブロック 3 サブブロック 2 サブブロック 1 サブブロック 0 ブロック 0 ・ ・ ・ ・ ・ ・ キャッシュタグ サブブロック 3 サブブロック 2 サブブロック 1 サブブロック 0 ブロック31 キャッシュタグ サブブロック 3 サブブロック 2 サブブロック 1 サブブロック 0 ブロック 0 ウェイ2 32 ブロック ・ ・ ・ キャッシュタグ 48 ・ ・ ・ ・ ・ ・ サブブロック 3 サブブロック 2 サブブロック 1 サブブロック 0 ブロック31 第 3 章 CPU および制御部 ■ 命令キャッシュタグ 図 3.3-2 に , 命令キャッシュタグの構成を示します。 図 3.3-2 命令キャッシュタグの構成 ウェイ1 31 09 08 アドレスタグ 空き 07 06 05 04 03 02 01 00 SBV3 SBV2 SBV1 SBV0 TAGV 空き LRU ETLK 01 00 サブブロックバリッド TAGバリッド LRU エントリロック ウェイ2 31 09 08 アドレスタグ 空き 07 06 05 04 03 SBV3 SBV2 SBV1 SBV0 TAGV サブブロックバリッド 02 空き ETLK TAGバリッド エントリロック 以下に , 命令キャッシュタグの各ビットの機能を説明します。 [ ビット 31 ∼ビット 9] アドレスタグ アドレスタグには , 対応するブロックにキャッシュされている命令のメモリアドレ スの上位 23 ビットが格納されています。ブロック i のサブブロック k に格納されて いる命令データのメモリアドレス IA は , IA= アドレスタグ× 211+i × 24+k × 22 となります。 CPU からアクセス要求された命令アドレスの一致を検査するために使用します。タ グ検査の結果に従い , 以下の動作をします。 • 要求された命令データがキャッシュ内に存在するとき ( ヒット ) キャッシュから CPU へサイクル内にデータを転送します。 • 要求された命令データがキャッシュ内に存在しないとき ( ミス ) 外部アクセスで取得されたデータを CPU とキャッシュが同時に取得します。 49 第 3 章 CPU および制御部 [ ビット 7 ∼ビット 4] サブブロックバリッド サブブロックバリッドを "1" に設定したとき , 対応するサブブロックにタグで示さ れたアドレスの実行命令データがエントリされています。サブブロックには , 通常 2 命令が格納されます ( 即値転送命令を除く ) 。 [ ビット 3] TAG バリッドビット アドレスタグの値が有効かどうかを示します。このビットが 0 のときは , サブバリッ ドビットに無関係に, このブロックはインバリッド状態になります (フラッシュ時) 。 [ ビット 1] LRU ( ウェイ 1 のみ ) ウェイ 1 の命令キャッシュタグにのみ存在します。選択されたセットについて , 最 後にアクセスしたエントリがウェイ1/ウェイ2のどちらであるかを示します。 LRU=1 のときはウェイ 1 の , LRU=0 のときはウェイ 2 のセットのエントリが最後にアクセ スしたことを示します。 [ ビット 0] エントリロック タグに相当するブロック内の全エントリをキャッシュにロックします。ETLK=1 の ときにロック状態で , キャッシュミス時にエントリは更新されません。ただし , 無 効なサブブロックは更新されます。ウェイ 1, ウェイ 2 ともにエントリロックされて いるときにキャッシュミスした場合は , キャッシュミス判定の 1 サイクルをロスし た後 , 外部メモリをアクセスします。 <注意事項> RETI 命令直前で , 命令キャッシュの制御レジスタおよび命令キャッシュの RAM へのデー タアクセスを行わないでください。 50 第 3 章 CPU および制御部 3.3.2 制御レジスタの構成 制御レジスタには , キャッシュサイズレジスタ (ISIZE) と , 命令キャッシュコント ロールレジスタ (ICHCR) があります。 これらのレジスタの機能について説明します。 ■ キャッシュサイズレジスタ (ISIZE) のビット構成 図 3.3-3 に , キャッシュサイズレジスタ (ISIZE) のビット構成を示します。 図 3.3-3 キャッシュサイズレジスタ (ISIZE) のビット構成 ビット 7 6 5 4 3 2 アドレス : 00000307H ― ― ― ― ― ― ― ― ― ― ― ― 1 0 SIZE1 SIZE0 R/W 初期値 ------00B R/W 以下に , キャッシュサイズレジスタ (ISIZE) の各ビットの機能を説明します。 [ ビット 1, ビット 0] SIZE1, SIZE0 これらのビットは , 命令キャッシュの容量を設定するビットです。設定により キャッシュサイズと IRAM 容量 , RAM モード時のアドレスマップが図 3.3-4 に示す ように変化します。キャッシュ容量を変更した場合は , 必ずフラッシュおよびエン トリロック解除を行ってからキャッシュを ON にしてください。 表 3.3-1 キャッシュサイズレジスタ SIZE1 SIZE0 0 0 1K バイト 0 1 設定禁止 1 0 設定禁止 1 1 設定禁止 容量 51 第 3 章 CPU および制御部 図 3.3-4 CACHE-3 RAM のアドレスマップ Address 00010000 00010200 00010400 00010600 00010800 ・・・・ 00014000 00014200 00014400 00014600 00014800 ・・・・ 00018000 00018200 00018400 00018600 00018800 ・・・・ 0001C000 0001C200 0001C400 0001C600 0001C800 ・・・・ 00020000 Cache 1K RAM off TAG0 Cache 1K RAM on - ・・・・ TAG1 ・・・・ ・・・・ way0 ・・・・ $RAM0 ・・・・ way1 ・・・・ $RAM1 ・・・・ ・・・・ TAG RAM 00010000 00010004 00010008 0001000C 00010010 00010014 00010020 52 <-00x番地のエントリー <-00xのミラー <-01x番地のエントリー <-01xのミラー $RAM 00012000 00012004 00012008 0001200C 00012010 00012014 000番地の命令(SBV0) 004番地の命令(SBV1) 008番地の命令(SBV2) 00C番地の命令(SBV3) 010番地の命令(SBV0) 014番地の命令(SBV1) 018番地の命令(SBV2) 01C番地の命令(SBV3) 第 3 章 CPU および制御部 ■ 命令キャッシュコントロールレジスタ (ICHCR) 命令キャッシュコントロールレジスタ (ICHCR:I-CacHe Control Register) は, 命令キャッ シュの動作を制御します。 ICHCR への書込みは , 以降 3 サイクル以内にフェッチされる命令のキャッシュ動作に 影響を与えません。 図 3.3-5 に , 命令キャッシュコントロールレジスタ (ICHCR) のビット構成を示します。 図 3.3-5 命令キャッシュコントロールレジスタ (ICHCR) のビット構成 ビット 7 6 アドレス : 000003E7H RAM ― R/W ― 5 4 3 2 1 0 初期値 GBLK ALFL EOLK ELKR FLSH ENAB 0-000000B R/W R/W R/W R/W R/W R/W 以下に , 命令キャッシュコントロールレジスタ (ICHCR) の各ビットの機能を説明しま す。 [ ビット 7] RAM (RAM モード ) このビットが "1" のとき , RAM モードとして動作します。 RAM モード時は , ENAB ビットが "0" で命令キャッシュをオフにしてください。 [ ビット 5] GBLK ( グローバルロック ) このビットは , すべてのカレントエントリを命令キャッシュにロックします。 GBLK=1 のとき , 命令キャッシュ内の有効なエントリはミス時に更新されません。 ただし , 無効なサブブロックは更新されます。その際の命令データフェッチ動作は , ロックしていないときと同様です。 [ ビット 4] ALFL ( オートロックフェイル ) すでにロックしているエントリをさらにロックしようとすると , このビット (ALFL) が "1" にセットされます。エントリオートロック中のエントリの更新が , す でにロックされているエントリに対して行われようとしたとき , ユーザの意図に反 して , 新たなエントリが命令キャッシュ中にロックされません。このようなプログ ラムのデバッグのために参照します。 "0" 書込みでクリアされます。 [ ビット 3] EOLK ( エントリオートロック ) このビットは , 命令キャッシュ内の各エントリに対して , オートロッキングの有効・ 無効を切り換えます。このビット (EOLK) が "1" のときにアクセス ( ミス時のみ ) さ れたエントリは , 命令キャッシュタグ内のエントリロックビットがハードウェアで "1" にセットされることにより , ロックされます。ロックされたエントリは以後 , 命 令キャッシュミス時の更新の対象になりません。ただし , 無効なサブブロックは更 新されます。 確実にロックするためには , 一度フラッシュした後 , このビットをセッ トしてください。 [ ビット 2] ELKR ( エントリロック解除 ) このビットは , すべての命令キャッシュタグ中にあるエントリロックビットのクリ アを指定します。このビット (ELKR) が "1" にセットされた次のサイクルで , すべて のキャッシュタグ中のエントリロックビットが "0" にクリアされます。ただし , こ のビットの内容が保持されるのは 1 クロックサイクルのみであり , 2 クロックサイ 53 第 3 章 CPU および制御部 クル以降は "0" にクリアされます。 [ ビット 1] FLSH ( フラッシュ ) このビットは , 命令キャッシュのフラッシュを指定します。このビット (FLSH) を "1" にすると , 命令キャッシュの内容がフラッシュされます。ただし , このビットの 内容が保持されるのは 1 クロックサイクルのみであり , 2 クロックサイクル以降は "0" にクリアされます。 [ ビット 0] ENAB ( イネーブル ) 命令キャッシュのイネーブル / ディセーブルを切り換えます。このビット (ENAB) が "0" のときディセーブル状態で , CPU からの命令アクセスは , 命令キャッシュを 介さずに外部に対して直接行われます。ディセーブル状態では , 命令キャッシュの 内容は保存されます。 54 第 3 章 CPU および制御部 3.3.3 命令キャッシュの状態と設定 命令キャッシュの各動作モードにおける状態と , 命令キャッシュの設定方法につい て説明します。 ■ 各動作モードにおける命令キャッシュの状態 各動作モードにおける命令キャッシュの状態を , 表 3.3-2 に示します。 ディセーブル , フラッシュの状態は , ビット操作命令等でそのビットだけ変化させた場 合の状態を示しています。 表 3.3-2 各動作モード時の命令キャッシュの状態 キャッシュメモリ アドレスタグ リセット直後 内容は不定 内容は不定 サブブロック バリッドビット 内容は不定 タ LRU グ エントリロック ビット 内容は不定 TAG バリッドビット 内容は不定 通常モード RAM グローバルロック 制 御 レ ジ ス タ 内容は不定 オートロック フェイル エントリ オートロック エントリロック解除 イネーブル アンロック フェイルなし アンロック 解除なし ディセーブル フラッシュしない フラッシュ ディセーブル 直前の状態を保持ディ セーブル中書換え不可 直前の状態を保持ディ セーブル中書換え不可 直前の状態を保持ディ セーブル中書換え不可 直前の状態を保持ディ セーブル中書換え不可 直前の状態を保持ディ セーブル中書換え不可 直前の状態を保持ディ セーブル中フラッシュ可 直前の状態を保持ディ セーブル中フラッシュ可 直前の状態を保持ディ セーブル中書換え可 直前の状態を保持ディ セーブル中書換え可 直前の状態を保持ディ セーブル中書換え可 直前の状態を保持ディ セーブル中書換え可 ディセーブル 直前の状態を保持ディ セーブル中書換え可 フラッシュ 直前の状態を保持 直前の状態を保持 直前の状態を保持 直前の状態を保持 エントリロック解除 すべてのエントリが インバリッド 直前の状態を保持 直前の状態を保持 直前の状態を保持 直前の状態を保持 直前の状態を保持 直前の状態を保持 メモリアクセス直後 のサイクルでフラッ シュ以後 0 にもどる。 ■ 命令キャッシュのエントリ更新 命令キャッシュのエントリ更新は , 表 3.3-3 に示すように行います。 表 3.3-3 命令キャッシュのエントリ更新 アンロック ヒット ミス ロック 更新しない。 更新しない。 メモリをロードし , 命令キャッシュの エントリの内容を更新する。 タグミスの場合は更新しない。 サブブロックインバリッドの場合 は更新する。 55 第 3 章 CPU および制御部 3.3.4 命令キャッシュを使用する場合の設定方法 命令キャッシュを使用する場合の設定方法を説明します。 ■ 設定手順 命令キャッシュを使用する場合の設定は , 以下の要領で行います。 ● 初期化 命令キャッシュを使い始める一番はじめは , 命令キャッシュの内容をクリアしておく 必要があります。 レジスタの FLSH ビットと ELKR ビットを "1" にして , 過去のデータを消去します。 // I-Cache コントロールレジスタのアドレス ldi #0x000003e7, r0 ldi #0B00000110, r1 // FLSH ビット (1 ビット ) // ELKR ビット (2 ビット ) stb r1, @r0 // レジスタへ書き込む これで , 命令キャッシュが初期化されます。 ● 命令キャッシュを有効 (ON) にする 命令キャッシュを有効にするには , ENAB ビットを "1" にします。 Ldi #0x000003e7, r0 // I-Cache コントロールレジスタのアドレス Ldi #0B00000001, r1 // ENAB ビット (0 ビット ) Stb r1, @r0 // レジスタへ書き込む これ以降の命令アクセスが , 命令キャッシュに取り込まれて行きます。 命令キャッシュの有効化は , 命令キャッシュの初期化と同時に行うこともできます。 Ldi #0x000003e7, r0 // I-Cache コントロールレジスタのアドレス Ldi #0B00000111, r1 // ENAB ビット (0 ビット ) // FLSH ビット (1 ビット ) // ELKR ビット (2 ビット ) stb 56 r1, @r0 // レジスタへ書き込む 第 3 章 CPU および制御部 ● 命令キャッシュを無効 (OFF) にする 命令キャッシュを無効にするには , ENAB ビットを "0" にします。 Ldi #0x000003e7, r0 // I-Cache コントロールレジスタのアドレス Ldi #0B00000000, r1 // ENAB ビット (0 ビット ) Stb r1, @r0 // レジスタへ書き込む この状態 ( リセット後の状態と同じ ) では , 命令キャッシュはないのと同じで , 何もし ません。 命令キャッシュのオーバヘッドが気になる処理の場合は , OFF にすると良いかも知れ ません。 ● キャッシュの内容をすべてロックする 現在 , 命令キャッシュに入っている命令が命令キャッシュから追い出され , ない状態に ロックします。 レジスタの GBLK ビットを "1" にします。ENAB ビットも "1" にしておかないと , 命令 キャッシュが OFF になってしまい , 命令キャッシュ内のロックした命令が使われませ ん。 Ldi #0x000003e7, r0 // I-Cache コントロールレジスタのアドレス Ldi #0B00100001, r1 // ENAB ビット (0 ビット ) // GBLK ビット (5 ビット ) stb r1, @r0 // レジスタへ書き込む ● 特定の命令を命令キャッシュにロックする 特定の命令群 ( サブルーチン等 ) を命令キャッシュにロックするには , それらの命令を 実行する前に EOLK ビットを "1" にします。ロックした命令は , 高速な内部 ROM のよ うににアクセスされます。 Ldi #0x000003e7, r0 // I-Cache コントロールレジスタのアドレス Ldi #0B00001001, r1 // ENAB ビット (0 ビット ) // EOLK ビット (3 ビット ) stb r1, @r0 // レジスタへ書き込む メモリのウェイト数によりますが , stb 命令の次以降の命令から有効になります。 ロックしたい命令群が終ったところで , EOLK ビットを "0" にします。 Ldi #0x000003e7, r0 // I-Cache コントロールレジスタのアドレス Ldi #0B00000001, r1 // ENAB ビット (0 ビット ) // EOLK ビット (3 ビット ) stb r1, @r0 // レジスタへ書き込む 57 第 3 章 CPU および制御部 ● 命令キャッシュのロックを解除する 上記の EOLK ビットでロックした命令のロック情報を解除します。 Ldi #0x000003e7, r0 // I-Cache コントロールレジスタのアドレス Ldi #0B00000000, r1 // キャッシュディセーブル Stb r1, @r0 // レジスタへ書き込む Ldi #0B00000100, r1 // ELKR ビット (2 ビット ) Stb r1, @r0 // レジスタへ書き込む ロック情報だけ解除されるので , ロックされていた命令は LRU ビットの状態に応じて 順次新しい命令に置き替わります。 58 第 3 章 CPU および制御部 3.4 専用レジスタ 専用レジスタは , 特定の目的のために使用します。プログラムカウンタ (PC) , プロ グラムステータス (PS) , テーブルベースレジスタ (TBR) , リターンポインタ (RP) , システムスタックポインタ (SSP) , ユーザスタックポインタ (USP) および乗除算結 果レジスタ (MDH/MDL) が用意されています。 ■ 専用レジスタ一覧 各レジスタは , 32 ビットで構成されています。 図 3.4-1 に , 専用レジスタ一覧を示します。 図 3.4-1 専用レジスタ一覧 プログラムカウンタ PC プログラムステータス PS テーブルベースレジスタ TBR リターンポインタ RP − ILM − SCR CCR システムスタックポインタ SSP ユーザスタックポインタ USP 乗除算結果レジスタ MDH MDL ■ プログラムカウンタ (PC) プログラムカウンタ (PC:Program Counter) の機能について説明します。 プログラムカウンタ (PC) は , 下図に示すように 32 ビットから構成されています。 31 PC 0 [ 初期値 ] XXXXXXXH プログラムカウンタで , 実行している命令のアドレスを示しています。 命令の実行を伴う PC の更新時に , ビット 0 は "0" に設定されます。ビット 0 が "1" に なる可能性があるのは , 分岐先アドレスとして奇数番地を指定した場合だけです。 ただし , その場合でもビット 0 は無効であり , 命令は 2 の倍数のアドレスに置く必要が あります。 リセットによる初期値は不定です。 59 第 3 章 CPU および制御部 ■ テーブルベースレジスタ (TBR) テーブルベースレジスタ (TBR:Table Base Register) の機能について説明します。 テーブルベースレジスタ (TBR) は, 下図に示すように32ビットから構成されています。 31 0 TBR [ 初期値 ] 000FFC00H テーブルベースレジスタで , EIT 処理の際に使用されるベクタテーブルの先頭アドレス を保持します。 リセットによる初期値は , 000FFC00H です。 ■ リターンポインタ (RP) リターンポインタ (RP:Return Pointer) の機能について説明します。 リターンポインタ (RP) は , 下図に示すように 32 ビットから構成されています。 31 0 RP [ 初期値 ] XXXXXXXH リターンポインタで , サブルーチンから復帰するアドレスを保持します。 CALL 命令実行時 , PC の値がこの RP に転送されます。 RET 命令実行時 , RP の内容が PC に転送されます。 リセットによる初期値は不定です。 ■ システムスタックポインタ (SSP) システムスタックポインタ (SSP:System Stack Pointer) の機能について説明します。 システムスタックポインタ (SSP) は , 下図に示すように 32 ビットから構成されていま す。 31 SSP 0 [ 初期値 ] 00000000H SSP は , システムスタックポインタです。 コンディションコードレジスタ (CCR) の S フラグが "0" のとき , 汎用レジスタの R15 として機能します。 SSP を明示的に指定することも可能です。 また , EIT 発生時に , PS と PC を退避するスタックを指定するスタックポインタとして も使用されます。 リセットによる初期値は 00000000H です。 60 第 3 章 CPU および制御部 ■ ユーザスタックポインタ (USP) ユーザスタックポインタ (USP:User Stack Pointer) の機能について説明します。 ユーザスタックポインタ (USP) は, 下図に示すように32ビットから構成されています。 31 0 USP [ 初期値 ] XXXXXXXXH USP は , ユーザスタックポインタです。 コンディションコードレジスタ (CCR) の S フラグが "1" のとき , 汎用レジスタの R15 として機能します。 USP を明示的に指定することも可能です。 リセットによる初期値は不定です。 RETI 命令で使用することはできません。 ■ 乗除算結果レジスタ (MDH/MDL) 乗除算結果レジスタ (MDH/MDL:Multiply & Divide register) の機能について説明しま す。 乗除算結果レジスタ (MDH/MDL) は , 下図に示すように 32 ビットから構成されていま す。 31 0 MDH MDL 乗除算用のレジスタで , MDH と MDL があります。各々 32 ビット長です。 リセットによる初期値は不定です。 ● 乗算実行時の機能 32 ビット× 32 ビットの乗算の場合 , 64 ビット長の演算結果は , 以下の配置で乗除算結 果レジスタに格納されます。 • MDH: 上位 32 ビット • MDL: 下位 32 ビット 16 ビット× 16 ビットの乗算の場合は , 以下のように結果が乗除算結果レジスタ格納さ れます。 • MDH: 不定 • MDL: 結果 32 ビット ● 除算実行時の機能 計算開始時 , 被除数を MDL に格納します。 DIV0S/DIV0U, DIV1, DIV2, DIV3, DIV4Sの各命令の実行により除算を計算すると, 以下 のように結果が MDL と MDH に格納されます。 • MDH: 剰余 • MDL: 商 61 第 3 章 CPU および制御部 3.4.1 プログラムステータスレジスタ (PS) プログラムステータスレジスタ (PS:Program Status) は , プログラムステータスを 保持するレジスタで , ILM と SCR および CCR の 3 つのパートに分かれています。 未定義のビットはすべて予約ビットです。読出し時 , 常に "0" が読み出されます。 書込みは無効です。 ■ プログラムステータスレジスタ (PS) プログラムステータスレジスタ (PS) は , 下図に示すようにコンディションコードレジ スタ (CCR) , システムコンディションコードレジスタ (SCR) および割込みレベルマス クレジスタ (ILM) から構成されています。 ビット位置→ 31 1 6 2 0 − 10 8 7 0 − ILM SCR CCR ● コンディションコードレジスタ (CCR) コンディションコードレジスタ (CCR:Condition Code Register) の構成は , 下図に示すと おりです。 ビット 7 6 − − 5 S 4 I 3 N 2 Z 1 V 0 C [ 初期値 ] --00XXXXB 以下に , 各ビットの機能を説明します。 [ ビット 5] S ( スタックフラグ ) このビットは, 汎用レジスタR15として使用させるスタックポインタを指定します。 このビットの設定内容を下表に示します。 値 内容 0 システムスタックポインタ (SSP) が汎用レジスタ R15 として使用されます。 EIT 発生時 , 自動的に "0" となります。 ただし , スタックに退避される値はクリアされる前の値です。 1 ユーザスタックポインタ (USP) が汎用レジスタ R15 として使用されます。 このビットは , リセットにより "0" にクリアされます。 RETI 命令実行時は "0" にセットしてください。 62 第 3 章 CPU および制御部 [ ビット 4] I ( 割込み許可フラグ ) このビットは , ユーザ割込み要求の許可 / 禁止を制御します。 このビットの設定内容を下表に示します。 値 内容 0 ユーザ割込み禁止。 INT 命令実行時 , "0" にクリアされます。 ただし , スタック退避させる値はクリアする前の値です。 1 ユーザ割込み許可。ユーザ割込み要求のマスク処理は , ILM の保持する値に より制御されます。 このビットは , リセットにより "0" にクリアされます。 [ ビット 3] N ( ネガティブフラグ ) このビットは , 演算結果を "2" の補数で表現された整数とみなしたときの符号を示 します。 このビットの設定内容を下表に示します。 値 内容 0 演算結果が正の値であったことを示します。 1 演算結果が負の値であったことを示します。 このビットは , リセットによる初期状態は不定です。 [ ビット 2] Z ( ゼロフラグ ) このビットは , 演算結果が "0" であったかどうかを示します。 このビットの設定内容を下表に示します。 値 内容 0 演算結果が "0" 以外の値であったことを示します。 1 演算結果が "0" であったことを示します。 このビットは , リセットによる初期状態は不定です。 [ ビット 1] V ( オーバフローフラグ ) このビットは , 演算に用いたオペランドを "2" の補数で表現される整数であるとみ なし , 演算の結果 , オーバフローが生じたかどうかを示します。 このビットの設定内容を下表に示します。 値 内容 0 演算の結果 , オーバフローは生じていないことを示します。 1 演算の結果 , オーバフローが生じたことを示します。 このビットは , リセットによる初期状態は不定です。 63 第 3 章 CPU および制御部 [ ビット 0] C ( キャリフラグ ) このビットは , 演算により最上位ビットからのキャリまたはボローが発生したかど うかを示します。 このビットの設定内容を下表に示します。 値 内容 0 キャリもボローも発生していないことを示します。 1 キャリまたはボローが発生したことを示します。 このビットは , リセットによる初期状態は不定です。 ● システムコンディションコードレジスタ (SCR) システムコンディションコードレジスタ (SCR:System Condition code Register) の構成 は , 下図に示すとおりです。 10 D1 9 D0 8 T [ 初期値 ] XX0B 以下に , システムコンディションコードレジスタ (SCR) の各ビットの機能を説明しま す。 [ ビット 10, ビット 9] D1, D0 ( ステップ除算用フラグ ) これらのビットは , ステップ除算実行時の中間データを保持します。 除算処理の実行途中は , 変更してはいけません。 ステップ除算実行途中にほかの処理を行う場合は , PS レジスタの値を退避 / 復帰す ることによりステップ除算の再開が保証されます。 このビットは , リセットによる初期状態は不定です。 DIV0S 命令の実行により被除数と除数を参照して設定されます。 DIV0U 命令の実行により , 強制的にクリアされます。 [ ビット 8] T ( ステップトレーストラップフラグ ) このビットは , ステップトレーストラップを有効にするかどうかを指定するフラグ です。 このビットの設定内容を下表に示します。 値 内容 0 ステップトレーストラップ無効 1 ステップトレーストラップ有効 このとき , ユーザ用 NMI とユーザ割込みがすべて割込み禁止となります。 このビットは , リセットにより "0" に初期化されます。 ステップトレーストラップの機能はエミュレータが使用します。エミュレータ使用 時 , ユーザプログラム中で使用することはできません。 64 第 3 章 CPU および制御部 ● 割込みレベルマスクレジスタ (ILM) 割込みレベルマスクレジスタ (ILM) の構成は , 下図に示すとおりです。 20 ILM4 19 ILM3 18 ILM2 17 ILM1 16 ILM0 [ 初期値 ] 01111B 割込みレベルマスクレジスタ (ILM) は , 割込みレベルマスク値を保持するレジスタで , この ILM の保持する値がレベルマスクに使用されます。 CPU に入力される割込み要求の中で , 対応する割込みレベルが , この ILM で示される レベルよりも高い場合にのみ割込み要求が受け付けられます。 レベル値は , 0 (00000B) が最も高く , 31 (11111B) が最も低いです。 プログラムから設定可能な値には制限があります。元の値が 16 ∼ 31 の場合 , 新たな値 として設定できるのは 16 ∼ 31 です。0 ∼ 15 を設定する命令を実行すると , ( 指定した 値 +16) という値が転送されます。 元の値が 0 ∼ 15 の場合は , 0 ∼ 31 の任意の値が設定可能です。 このレジスタは , リセットにより 15 (01111B) に初期化されます。 ● 注意事項 一部の命令で PS レジスタを先行処理しているため , 下記の例外動作により , デバッガ ご使用時に割込み処理ルーチンでブレークしたり , PS レジスタ内のフラグの表示内容 が更新されたりする場合があります。いずれの場合も , EIT から復帰後以降に , 正しく 再処理を行うように設計されていますので , EIT 前後の動作は仕様どおりの処理を行い ます。 1. DIVOU/DIVOS 命令の直前の命令で , (a) ユーザ割込み・NMI を受け付けた場合 , (b) ステップ実行を行った場合 , (c) データイベントまたはエミュレータメニューにてブ レークした場合 , 以下のような動作を行う場合があります。 (1) D0,D1 フラグが , 先行して更新されます。 (2) EIT 処理ルーチン ( ユーザ割込み・NMI, またはエミュレータ ) を実行します。 (3) EIT から復帰後 , DIVOU/DIVOS 命令が実行され , D0,D1 フラグが (1) と同じ値に 更新されます。 2. ユーザ割込み・NMI 要因が発生している状態で , 割込みを許可するために ORCCR/ STILM/MOV Ri,PS の各命令が実行されると , 以下のような動作を行います。 (1) PS レジスタが , 先行して更新されます。 (2) EIT 処理ルーチン ( ユーザ割込み・NMI) を実行します。 (3) EITから復帰後, 上記命令が実行され, PSレジスタが(1)と同じ値に更新されます。 65 第 3 章 CPU および制御部 3.5 汎用レジスタ レジスタ R0 ∼ R15 は汎用レジスタです。各種演算におけるアキュムレータ , およ びメモリアクセスのポインタとして使用されます。 ■ 汎用レジスタ 図 3.5-1 に , 汎用レジスタの構成を示します。 図 3.5-1 汎用レジスタの構成 32 ビット R0 R1 ... ... R12 R13 R14 R15 ... ... AC FP SP [ 初期値 ] XXXX XXXXH ... ... ... ... ... XXXX XXXXH 0000 0000H 16個のレジスタのうち, 以下に示すレジスタは特殊な用途を想定しており, そのために 一部の命令が強化されています。 • R13: 仮想アキュムレータ • R14: フレームポインタ • R15: スタックポインタ リセットによる初期値は , R0 ∼ R14 は不定です。R15 は , 00000000H (SSP の値 ) とな ります。 66 第 3 章 CPU および制御部 3.6 データ構造 MB91307 シリーズのデータ配置には , 次の 2 つがあります。 • ビットオーダリング • バイトオーダリング ■ ビットオーダリング MB91307 シリーズでは , ビットオーダリングとして , リトルエンディアンを採用して います。 図 3.6-1 に , ビットオーダリングのビット構成を示します。 図 3.6-1 ビットオーダリングのビット構成 bit 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 MSB 1 0 LSB ■ バイトオーダリング MB91307 シリーズでは , バイトオーダリングとして , ビッグエンディアンを採用して います。 図 3.6-2 に , バイトオーダリングの構造を示します。 図 3.6-2 バイトオーダリングの構造 MSB bit31 n 番地 (n+1) 番地 (n+2) 番地 (n+3) 番地 メモリ bit 7 0 10101010 11001100 11111111 00010001 LSB 23 15 7 0 10101010 11001100 11111111 00010001 67 第 3 章 CPU および制御部 3.7 ワードアライメント 命令やデータはバイト単位でアクセスするため , 配置するアドレスは命令長やデー タ幅で異なります。 ■ プログラムアクセス MB91307 シリーズのプログラムは , "2" の倍数のアドレスに配置する必要があります。 プログラムカウンタ (PC) のビット 0 は , 命令の実行に伴う PC の更新時に , "0" に設定 されます。 "1" になる可能性があるのは , 分岐先アドレスとして奇数番地を指定した場合だけで す。 ただし , その場合でもビット 0 は無効であり , 命令は "2" の倍数のアドレスに置かなく てはなりません。 奇数アドレス例外はありません。 ■ データアクセス MB91307 シリーズでは , データアクセスを行う際 , その幅により以下のように強制的 なアライメントがアドレスに対して施されます。 • ワードアクセス : アドレスは , "4" の倍数 ( 最下位 2 ビットは強制的に "00") • ハーフワードアクセス : アドレスは , "2" の倍数 ( 最下位ビットは強制的に "0") • バイトアクセス : ― ワードおよびハーフワードデータアクセス時に , 一部のビットが強制的に "0" にされる のは , 実効アドレスの計算結果に対してです。例えば , @ (R13, Ri) のアドレッシング モードの場合 , 加算前のレジスタは ( たとえ最下位ビットが "1" であっても ) そのまま 計算に使用され , 加算結果の下位ビットがマスクされます。計算前のレジスタがマスク されるわけではありません。 [ 例 ] LD @ (R13, R2) , R0 R13 R2 00002222H 00000003H 加算結果 00002225H +) アドレス端子 68 下位 2 ビット強制マスク ↓ 00002224H 第 3 章 CPU および制御部 3.8 メモリマップ MB91307 シリーズのメモリマップを示します。 ■ メモリマップ メモリのアドレス空間は 32 ビットリニアです。 図 3.8-1 に , メモリマップを示します。 図 3.8-1 メモリマップ 0000 0000 0000 0000 0000H 0100H 0200H 0400H バイトデータ ハーフワードデータ ワードデータ ∼ 000F ダイレクト アドレッシング領域 ∼ FC00H ベクタテーブル 初期領域 000F FFFFH ∼ FFFF ∼ FFFFH ● ダイレクトアドレッシング領域 アドレス空間の下記の領域は , I/O 用の領域です。この領域は , ダイレクトアドレッシ ングにより , 命令中で直接オペランドアドレスを指定することができます。 ダイレクトアドレス指定可能なアドレス領域の大きさは , データ長ごとに異なります。 • バイトデータ (8 ビット ) : 000H ∼ 0FFH • ハーフワードデータ (16 ビット ) : 000H ∼ 1FFH • ワードデータ (32 ビット ) : 000H ∼ 3FFH ● ベクタテーブル初期領域 000FFC00H ∼ 000FFFFFH の領域は EIT ベクタテーブル初期領域です。 EIT処理時に使用されるベクタテーブルは, TBRを書き換えることにより任意のアドレ スに配置可能ですが , リセットによる初期化によってこのアドレスに配置されます。 69 第 3 章 CPU および制御部 3.9 分岐命令 MB91307 シリーズでは , 分岐命令に遅延スロット付きの動作と遅延スロットなしの 動作を指定することができます。 ■ 遅延スロット付きの分岐命令 以下に示す表記をした命令が , 遅延スロット付きの分岐動作を行います。 JMP:D @Ri CALL:D label12 CALL:D @Ri RET:D BRA:D label9 BNO:D label9 BEQ:D label9 BNE:D label9 BC:D label9 BNC:D label9 BN:D label9 BP:D label9 BV:D label9 BNV:D label9 BLT:D label9 BGE:D label9 BLE:D label9 BGT:D label9 BLS:D label9 BHI:D label9 ■ 遅延スロットなしの分岐命令 以下に示す表記をした命令が , 遅延スロットなしの分岐動作を行います。 70 JMP @Ri CALL label12 CALL @Ri RET BRA label9 BNO label9 BEQ label9 BNE label9 BC label9 BNC label9 BN label9 BP label9 BV label9 BNV label9 BLT label9 BGE label9 BLE label9 BGT label9 BLS label9 BHI label9 第 3 章 CPU および制御部 3.9.1 遅延スロット付き分岐命令の動作 遅延スロット付きの動作では , 分岐先の命令を実行する前に , 分岐命令の直後 (「遅 延スロット」とよびます ) に置かれた命令を実行した後に , 分岐します。 ■ 遅延スロット付き分岐命令の動作 分岐動作の前に遅延スロットの命令を実行するため, 見かけ上の実行速度が1サイクル となります。そのかわり , 遅延スロットに有効な命令を入れることができないときは , NOP 命令を置かなくてはなりません。 [例] ; 命令の並び ADD R1, R2 ; BRA:D LABEL ; 分岐命令 MOV R2, R3 ; 遅延スロット …… 分岐の前に実行される … R3, @R4 ; 分岐先 LABEL : ST 条件分岐命令の場合 , 分岐条件が成立する場合も成立しない場合も遅延スロットに置 かれた命令は実行されます。 遅延分岐命令では , 一部の命令の実行順序が反転するように見えますが , それは PC の 更新動作だけについてであり , その他の動作 ( レジスタの更新 , 参照等 ) はあくまで記 述された順番で実行されます。 以下に , 具体例を示します。 ● JMP:D @Ri / CALL:D @Ri 命令 JMP:D @Ri / CALL:D @Ri 命令で参照する Ri は , 遅延スロットの中の命令が Ri を更新 しても影響を受けません。 [例] LDI:32 #Label, R0 JMP:D @R0 LDI:8 #0, ; Label に分岐 R0 ; 分岐先アドレスには影響を与えない。 … ● RET:D 命令 RET:D 命令が参照する RP は , 遅延スロットの中の命令が RP を更新しても影響を受け ません。 [例] ; これより前に設定された RP の示す RET:D アドレスへ分岐 MOV R8, RP ; リターン動作には影響を与えない。 … 71 第 3 章 CPU および制御部 ● Bcc:D rel 命令 Bcc:D rel 命令が参照するフラグも , 遅延スロットの命令の影響を受けません。 [例] ; フラグ変化 ADD #1, R0 BC:D Overflow ; 上記の命令の実行結果により分岐 ; このフラグ更新は上記分岐命令では ANDCCR #0 参照しない。 … ● CALL:D 命令 CALL:D 命令の遅延スロットの中の命令で RP を参照すると , CALL:D 命令により更新 された内容が読み出されます。 [例] CALL:D Label MOV RP, ; RP を更新して分岐 R0 ; 上記 CALL:D の実行結果の RP を転送 … ■ 遅延スロット付き分岐命令の制限事項 ● 遅延スロットに置くことができる命令 遅延スロット内で実行できるのは , 以下の条件を満たす命令のみです。 • 1 サイクル命令 • 分岐命令ではないこと • 順番が変化した場合でも動作に影響を与えない命令 「1 サイクル命令」とは , 命令一覧表中でサイクル数の欄に「1」 「a」 「b」 「c」 「d」のど れかが記載された命令です。 ● ステップトレーストラップ 遅延スロットを持つ分岐命令の実行と遅延スロットの間では , ステップトレースト ラップは発生しません。 ● 割込み・NMI 遅延スロットを持つ分岐命令の実行と遅延スロットの間では , 割込み・NMI を受理し ません。 ● 未定義命令例外 遅延スロットに未定義命令があった場合 , 未定義命令例外は発生しません。このとき , 未定義命令は NOP 命令として動作します。 72 第 3 章 CPU および制御部 3.9.2 遅延スロットなし分岐命令の動作 遅延スロットなしの動作では , あくまで命令の並びの順に実行します。直後の命令 が分岐前に実行されることはありません。 ■ 遅延スロットなし分岐命令の動作 [例] ; 命令の並び ADD R1, R2 ; BRA LABEL ; 分岐命令 ( 遅延スロットなし ) MOV R2, R3 ; 実行されない R3, @R4 ; 分岐先 … LABEL ST 遅延スロットなしの分岐命令の実行サイクル数は , 分岐するとき 2 サイクル , 分岐しな いとき 1 サイクルとなります。 遅延スロットに適当な命令を入れることができないために , NOP を明記した遅延ス ロット付き分岐命令に比べ , 命令コード効率を上げることができます。 遅延スロットに有効な命令を設置できるときは遅延スロット付きの動作を選択し , そ うでないときは遅延スロットなしの動作を選択することで , 実行速度とコード効率を 両立させることが可能となります。 73 第 3 章 CPU および制御部 3.10 EIT ( 例外 , 割込み , トラップ ) EIT とは , 現プログラム実行時にイベントの発生により , そのプログラムの実行を中 断してほかのプログラムを実行することを指し , 例外 (Exception) , 割込み (Interrupt) , トラップ (Trap) の総称です。 ■ EIT ( 例外 , 割込み , トラップ ) 例外とは , 実行中のコンテキストに関連して発生する事象です。例外を起こした命令か ら再実行します。 割込みとは実行中のコンテキストに無関係に発生する事象です。イベント要因は , ハー ドウェアです。 トラップとは実行中のコンテキストに関連して発生する事象です。システムコールの ようにプログラムで指示するものがあります。トラップを起こした命令の次の命令か ら再実行します。 ■ EIT 要因 EIT 要因として , 以下のものがあります。 • リセット • ユーザ割込み ( 内部リソース , 外部割込み ) • NMI • 遅延割込み • 未定義命令例外 • トラップ命令 (INT) • トラップ命令 (INTE) • ステップトレーストラップ • コプロセッサ不在トラップ • コプロセッサエラートラップ ■ EIT からの復帰 EIT からの復帰には , RETI 命令を使用します。 74 第 3 章 CPU および制御部 3.10.1 EIT の割込みレベル 割込みレベルは 0 ∼ 31 で , 5 ビットで管理されます。 ■ EIT の割込みレベル 各レベルの割当てを , 図 3.10-3 に示します。 表 3.10-1 EIT の割込みレベル レベル 割込み要因 注意事項 ILM の元の値が 16 ∼ 31 のとき , この範囲の値をプログラムによ り ILM に設定することはできま せん。 5 … … 14 ( システム予約 ) … … ( システム予約 ) INTE 命令 ステップトレーストラップ ( システム予約 ) … … ( システム予約 ) 01111 15 NMI ( ユーザ用 ) 10000 10001 … … 11110 11111 16 17 … … 30 31 割込み 割込み … … 割込み ─ 2 進数 10 進数 00000 … … 00011 00100 0 … … 3 4 00101 … … 01110 ILM 設定時 , ユーザ割込み禁止 ICR 設定時 , 割込み禁止 操作が可能なのは , 16 ∼ 31 のレベルです。 未定義命令例外 , コプロセッサ不在トラップ , コプロセッサエラートラップおよび INT 命令は , 割込みレベルの影響を受けません。また , ILM を変化させることもありません。 ■ I フラグ 割込みの許可 / 禁止を指定するフラグです。PS レジスタの CCR のビット 4 として設け られています。 表 3.10-2 I フラグ 値 内容 0 割込み禁止。 INT 命令実行時 "0" にクリアされます。 ただし , スタック退避させる値はクリアする前の値です。 1 割込み許可。 割込み要求のマスク処理は , ILM の保持する値により制御されます。 75 第 3 章 CPU および制御部 ■ 割込みレベルマスクレジスタ (ILM) 割込みレベルマスク値を保持する PS レジスタ ( ビット 20 ∼ビット 16) です。 CPU に入力される割込み要求の中で , 対応する割込みレベルが , この ILM で示される レベルよりも高い場合にのみ割込み要求が受け付けられます。 レベル値は , 0 (00000B) が最も高く , 31 (11111B) が最も低いです。 プログラムから設定可能な値には制限があります。元の値が 16 ∼ 31 のとき , 新たな値 として設定できるのは 16 ∼ 31 です。0 ∼ 15 の値を設定する命令を実行すると , ( 指定 した値 +16) という値が転送されます。 元の値が 0 ∼ 15 のときは , 0 ∼ 31 の任意の値が設定可能です。 <注意事項> 設定するには STILM 命令を使用してください。 ■ 割込み・NMI に対するレベルマスク NMI および割込み要求が発生したときは , 割込み要因の持つ割込みレベル ( 表 3.10-1) が ILM の保持するレベルマスク値と比較されます。そして , 次の条件が成立したとき はマスクされ , 要求は受理されません。 要因の持つ割込みレベル ≧ レベルマスク値 76 第 3 章 CPU および制御部 3.10.2 割込み制御レジスタ (ICR) 割込み制御レジスタ (ICR:Interrupt Control Register) は , 割込みコントローラ内に 設けられたレジスタで , 割込みの各要求に対するレベルを設定します。ICR は , 割込 み要求入力の各々に対応して用意されています。ICR は I/O 空間にマッピングされ ており , CPU からはバスを通してアクセスされます。 ■ 割込み制御レジスタ (ICR) のビット構成 割込み制御レジスタ (ICR) のビット構成は , 下図のとおりです。 図 3.10-1 割込み制御レジスタ (ICR) のビット構成 ビット 7 − 6 − 5 − 4 3 2 ICR4 ICR3 ICR2 R R/W R/W 1 ICR1 R/W 0 ICR0 R/W 初期値 ---11111B 以下に , 割込み制御レジスタ (ICR) の各ビットの機能を説明します。 [ ビット 4] ICR4 このビットは , 常に "1" です。 [ ビット 3 ∼ビット 0] ICR3 ∼ ICR0 これらのビットは , 対応する割込み要因の割込みレベルの下位 4 ビットです。読出 し , 書込みが可能です。 ビット 4 と合わせて , ICR は 16 ∼ 31 の範囲で値を設定することができます。 ■ 割込み制御レジスタ (ICR) のマッピング 表 3.10-3 に, 割込み要因と割込み制御レジスタおよび割込みベクタの関係を示します。 表 3.10-3 割込み要因と割込み制御レジスタ , 割込みベクタ 対応する割込みベクタ 割込要因 番 号 割込み制御レジスタ アドレス 16 進 10 進 IRQ00 ICR00 00000440H 10H 16 TBR + 3BCH IRQ01 ICR01 00000441H 11H 17 TBR + 3B8H IRQ02 ICR02 00000442H 12H 18 TBR + 3B4H … … … … … … … … … … … … IRQ45 ICR45 0000046DH 3DH 61 TBR + 308H IRQ46 ICR46 0000046EH 3EH 62 TBR + 304H IRQ47 ICR47 0000046FH 3FH 63 TBR + 300H ( 注意事項 )「第 10 章 割込みコントローラ」を参照してください。 77 第 3 章 CPU および制御部 システムスタックポインタ (SSP) 3.10.3 EIT の受理および復帰動作時のデータ退避 / 復帰用スタックを示すポインタとしてシ ステムスタックポインタ (SSP) が使用されます。 ■ システムスタックポインタ (SSP) システムスタックポインタ (SSP:System Stack Pointer) は , 下図に示すように 32 ビット から構成されています。 図 3.10-2 システムスタックポインタ (SSP) のビット構成 bit 31 SSP 0 [ 初期値 ] 00000000H EIT 処理時に内容が 8 減ぜられ , RETI 命令の実行による EIT からの復帰動作時に 8 加 算されます。 システムスタックポインタ (SSP) は , リセットによる初期値は 00000000H です。 SSP は , CCR 中の S フラグが "0" のとき , 汎用レジスタ R15 としても機能します。 ■ 割込みスタック システムスタックポインタ (SSP) により示される領域で , PC および PS の値が退避 / 復 帰されます。割込み後は , SSP の示すアドレスに PC が , (SSP+4) のアドレスに PS が格 納されています。この様子を 図 3.10-3 に示します。 図 3.10-3 割込みスタック [例] SSP [ 割込み前 ] 8000000H SSP [ 割込み後 ] 7FFFFFF8H メモリ 80000000H 7FFFFFFCH 7FFFFFF8H 78 80000000H 7FFFFFFCH PS 7FFFFFF8H PC 第 3 章 CPU および制御部 3.10.4 テーブルベースレジスタ (TBR) テーブルベースレジスタ (TBR:Table Base Register) は , EIT 用ベクタテーブルの先 頭アドレスを示すレジスタです。 ■ テーブルベースレジスタ (TBR) テーブルベースレジスタ (TBR) は, 下図に示すように32ビットから構成されています。 bit 31 TBR 0 [ 初期値 ] 000FFC00H TBR と EIT 要因ごとに決められたオフセット値を加算したアドレスが , ベクタアドレ スとなります。 テーブルベースレジスタ (TBR) は , リセットによる初期値は 000FFC00H です。 ■ EIT ベクタテーブル テーブルベースレジスタ (TBR) の示すアドレスから 1K バイトの領域が , EIT 用ベクタ 領域となっています。 1 ベクタ当たりの大きさは 4 バイトで , ベクタ番号とベクタアドレスの関係は下記のよ うに表されます。 vctadr = TBR + vctofs = TBR + (3FC H − 4 × vct) vctadr: ベクタアドレス vctofs: ベクタオフセット vct ベクタ番号 : 加算結果の下位 2 ビットは , 常に "00" として扱われます。 000FFC00H ∼ 000FFFFFH の領域がリセットによるベクタテーブルの初期領域です。 ベクタの一部には特殊な機能が割り当てられています。 アーキテクチャ上のベクタテーブルを , 表 3.10-4 に示します。 79 第 3 章 CPU および制御部 表 3.10-4 ベクタテーブル (1 / 3) 割込み番号 割込み レベル オフセット TBR デフォルト のアドレス 01 − 3F8H 000FFFF8H 2 02 − 3F4H 000FFFF4H システム予約 3 03 − 3F0H 000FFFF0H システム予約 4 04 − 3ECH 000FFFECH システム予約 5 05 − 3E8H 000FFFE8H システム予約 6 06 − 3E4H 000FFFE4H コプロセッサ不在トラップ 7 07 − 3E0H 000FFFE0H コプロセッサエラー トラップ 8 08 − 3DCH 000FFFDCH INTE 命令 9 09 − 3D8H 000FFFD8H 命令ブレーク例外 10 0A − 3D4H 000FFFD4H オペランドブレーク トラップ 11 0B − 3D0H 000FFFD0H ステップトレーストラップ 12 0C − 3CCH 000FFFCCH NMI 要求 (tool) 13 0D − 3C8H 000FFFC8H 未定義命令例外 14 0E − 3C4H 000FFFC4H NMI 要求 15 0F 15 (FH) 外部割込み 0 16 外部割込み 1 10 進 16 進 0 00 モードベクタ 1 システム予約 割込み要因 80 3C0H 000FFFC0H 10 固定 ICR00 3BCH 000FFFBCH 17 11 ICR01 3B8H 000FFFB8H 外部割込み 2 18 12 ICR02 3B4H 000FFFB4H 外部割込み 3 19 13 ICR03 3B0H 000FFFB0H 外部割込み 4 20 14 ICR04 3ACH 000FFFACH 外部割込み 5 21 15 ICR05 3A8H 000FFFA8H 外部割込み 6 22 16 ICR06 3A4H 000FFFA4H 外部割込み 7 23 17 ICR07 3A0H 000FFFA0H リロードタイマ 0 24 18 ICR08 39CH 000FFF9CH リロードタイマ 1 25 19 ICR09 398H 000FFF98H リロードタイマ 2 26 1A ICR10 394H 000FFF94H UART0 ( 受信完了 ) 27 1B ICR11 390H 000FFF90H UART1 ( 受信完了 ) 28 1C ICR12 38CH 000FFF8CH UART2 ( 受信完了 ) 29 1D ICR13 388H 000FFF88H UART0 ( 送信完了 ) 30 1E ICR14 384H 000FFF84H UART1 ( 送信完了 ) 31 1F ICR15 380H 000FFF80H UART2 ( 送信完了 ) 32 20 ICR16 37CH 000FFF7CH DMAC0 ( 終了 , エラー ) 33 21 ICR17 378H 000FFF78H 第 3 章 CPU および制御部 表 3.10-4 ベクタテーブル (2 / 3) 割込み番号 割込み レベル オフセット TBR デフォルト のアドレス 22 ICR18 374H 000FFF74H 35 23 ICR19 370H 000FFF70H DMAC3 ( 終了 , エラー ) 36 24 ICR20 36CH 000FFF6CH DMAC4 ( 終了 , エラー ) 37 25 ICR21 368H 000FFF68H A/D 38 26 ICR22 364H 000FFF64H I2C 39 27 ICR23 360H 000FFF60H システム予約 40 28 ICR24 35CH 000FFF5CH システム予約 41 29 ICR25 358H 000FFF58H システム予約 42 2A ICR26 354H 000FFF54H システム予約 43 2B ICR27 350H 000FFF50H システム予約 44 2C ICR28 34CH 000FFF4CH U-TIMER0 45 2D ICR29 348H 000FFF48H U-TIMER1 46 2E ICR30 344H 000FFF44H タイムベースタイマ オーバフロー 47 2F ICR31 340H 000FFF40H システム予約 48 30 ICR32 33CH 000FFF3CH システム予約 49 31 ICR33 338H 000FFF38H システム予約 50 32 ICR34 334H 000FFF34H システム予約 51 33 ICR35 330H 000FFF30H システム予約 52 34 ICR36 32CH 000FFF2CH システム予約 53 35 ICR37 328H 000FFF28H システム予約 54 36 ICR38 324H 000FFF24H システム予約 55 37 ICR39 320H 000FFF20H システム予約 56 38 ICR40 31CH 000FFF1CH システム予約 57 39 ICR41 318H 000FFF18H システム予約 58 3A ICR42 314H 000FFF14H システム予約 59 3B ICR43 310H 000FFF10H システム予約 60 3C ICR44 30CH 000FFF0CH システム予約 61 3D ICR45 308H 000FFF08H システム予約 62 3E ICR46 304H 000FFF04H 遅延割込み要因ビット 63 3F ICR47 300H 000FFF00H システム予約 (REALOS で使用 ) 64 40 − 2FCH 000FFEFCH システム予約 (REALOS で使用 ) 65 41 − 2F8H 000FFEF8H システム予約 66 42 − 2F4H 000FFEF4H システム予約 67 43 − 2F0H 000FFEF0H システム予約 68 44 − 2ECH 000FFEECH システム予約 69 45 − 2E8H 000FFEE8H 10 進 16 進 0 00 DMAC1 ( 終了 , エラー ) 34 DMAC2 ( 終了 , エラー ) 割込み要因 81 第 3 章 CPU および制御部 表 3.10-4 ベクタテーブル (3 / 3) 割込み番号 割込み レベル オフセット TBR デフォルト のアドレス 46 − 2E4H 000FFEE4H 71 47 − 2E0H 000FFEE0H システム予約 72 48 − 2DCH 000FFEDCH システム予約 73 49 − 2D8H 000FFED8H システム予約 74 4A − 2D4H 000FFED4H システム予約 75 4B − 2D0H 000FFED0H システム予約 76 4C − 2CCH 000FFECCH システム予約 77 4D − 2C8H 000FFEC8H システム予約 78 4E − 2C4H 000FFEC4H システム予約 79 4F − 2C0H 000FFEC0H INT 命令で使用 80 | 255 50 | FF − 2BCH | 000H 000FFEBCH | 000FFC00H 10 進 16 進 0 00 システム予約 70 システム予約 割込み要因 ( 注意事項 )・TBR の値を変更してもリセットベクタとモードベクタは , 常に固定アドレスで す。000FFFFCH, 000FFFF8H が使用されます。 ・本品種におけるベクタテーブルは , 「付録 B 割込みベクタ」を参照してくださ い。 82 第 3 章 CPU および制御部 3.10.5 多重 EIT 処理 複数の EIT 要因が同時に発生した場合 , CPU は 1 つの EIT 要因を選択して受理し , EIT シーケンスを実行した後 , 再び EIT 要因の検出を行う , という動作を繰り返しま す。EIT 要因検出の際に , 受理可能な EIT 要因がなくなったとき , 最後に受理した EIT 要因のハンドラの命令を実行します。そのため , 複数の EIT 要因が同時に発生し た場合の各要因に対するハンドラの実行順序は , 次の 2 つの要素によって決まりま す。 • EIT 要因受理の優先順位 • 受理した場合にほかの要因をどのようにマスクするか ■ EIT 要因受理の優先度 EIT 要因受理の優先度とは , PS と PC を退避して PC を更新し ( 必要に応じて ) ほかの 要因のマスク処理を行うという , EIT シーケンスを実行する要因を選ぶときの順番で す。必ずしも , 先に受理された要因のハンドラが先に実行されるわけではありません。 EIT 要因受理の優先度は , 表 3.10-5 のようになっています。 表 3.10-5 EIT 要因の受理の優先度とほかの要因へのマスク 要 因 受理の優先順位 ほかの要因に対するマスク 1 リセット ほかの要因は破棄されます。 2 未定義命令例外 取消し 3 INT 命令 I フラグ =0 4 コプロセッサ不在トラップ コプロセッサエラートラップ 5 ユーザ割込み ILM= 受理した要因のレベル 6 NMI ( ユーザ用 ) ILM=15 7 (INTE 命令 ) ILM=4 * 8 NMI ( エミュレータ用 ) ILM=4 9 ステップトレーストラップ ILM=4 10 INTE 命令 ILM=4 ― * :INTE 命令とエミュレータ用 NMI が同時に発生したときのみ優先度が "6" になりま す。本品種ではエミュレータ用 NMI を , データアクセスによるブレークに使用して います。 83 第 3 章 CPU および制御部 EIT 要因を受理した後のほかの要因に対するマスクの処理を加味すると , 同時に発生し た EIT 要因の各ハンドラの実行順序は , 表 3.10-6 のようになります。 表 3.10-6 EIT ハンドラの実行順序 ハンドラの 実行順序 要 因 1 リセット *1 2 未定義命令例外 3 ステップトレーストラップ *2 4 INTE 命令 *2 5 NMI ( ユーザ用 ) 6 INT 命令 7 ユーザ割込み 8 コプロセッサ不在トラップ , コプロセッサエラートラップ *1: ほかの要因は破棄されます。 *2:INTE 命令をステップ実行したときは , ステップトレーストラップの EIT のみ発生し ます。INTE による要因は無視されます。 図 3.10-4 に , 多重 EIT 処理の例を示します。 84 第 3 章 CPU および制御部 図 3.10-4 多重 EIT 処理 [例] メインルーチン NMIのハンドラ INT命令の ハンドラ 優先度 ①最初に実行 (高)NMI発生 (低)INT命令実行 ②次に実行 85 第 3 章 CPU および制御部 3.10.6 EIT の動作 EIT の動作について説明します。 ■ EIT の動作 以下の説明で , 転送元の「PC」とは各 EIT 要因を検出した命令のアドレスを示すもの とします。 また , 「次の命令のアドレス」とは , EIT を検出した命令が下記のようになっているこ とを意味します。 • LDI が 32 のとき :PC+6 • LDI が 20 で , COPOP, COPLD, COPST, COPSV のとき :PC+4 • その他の命令のとき :PC+2 ■ ユーザ割込み /NMI の動作 ユーザ割込み , またはユーザ用 NMI の割込み要求が発生すると , 以下の順序で要求受 理の可否が判定されます。 1) 同時に発生した要求の割込みレベルを比較し , 最も高いレベル ( 最も小さい数値 ) を保持するものが選択されます。 比較に使用されるレベルは , マスク可能割込みについては対応する ICR の保持す る値が , NMI についてはあらかじめ定められた定数が使用されます。 2) 同じレベルを持つ割込み要求が複数発生しているときは , 最も若い割込み番号を 持つ割込み要求が選択されます。 3)「割込みレベル≧レベルマスク値」のとき , 割込み要求はマスクされ受理されま せん。 「割込みレベル<レベルマスク値」のときは , 4) へ移ります。 4) 選択された割込み要求がマスク可能割込みであるとき , I フラグが "0" ならば割込 み要求はマスクされ , 受理されません。I フラグが "1" ならば 5) へ移ります。選 択された割込み要求が NMI であるときは , I フラグの値にかかわらず 5) へ移りま す。 5) 上記の条件が成立したとき , 命令処理の切れ目で割込み要求が受理されます。 EIT 要求検出時にユーザ割込み /NMI の要求が受理されると , 受理された割込み要求に 対応した割込み番号を使用して , CPU は以下のように動作します。( ) は , レジスタの 指すアドレスを表します。 [ 動作 ] 1) SSP-4 → SSP 2) PS → (SSP) 3) SSP-4 → SSP 4) 次の命令のアドレス → (SSP) 5) 受理した要求の割込みレベル → ILM 6) "0" → S フラグ 7) (TBR+ 受理した割込み要求のベクタオフセット ) → PC 86 第 3 章 CPU および制御部 割込みシーケンス終了後 , ハンドラの先頭の命令を実行する前に新たな EIT の検出を 行います。この時点で受理可能な EIT が発生していると , CPU は EIT 処理シーケンス に遷移します。 ■ INT 命令の動作 INT #u8 命令は , 以下のように動作します。 u8 で示されるベクタの割込みハンドラへ分岐します。 [ 動作 ] 1) SSP-4 → SSP 2) PS → (SSP) 3) SSP-4 → SSP 4) PC+2 → (SSP) 5) "0" → I フラグ 6) "0" → S フラグ 7) (TBR+3FCH-4 × u8) → PC ■ INTE 命令の動作 INTE 命令は , 以下のように動作します。 ベクタ番号 #9 のベクタの割込みハンドラへ分岐します。 [ 動作 ] 1) SSP-4 → SSP 2) PS → (SSP) 3) SSP-4 → SSP 4) PC+2 → (SSP) 5) "00100" → ILM 6) "0" → S フラグ 7) (TBR+3D8H) → PC INTE 命令およびステップトレーストラップの処理ルーチン中では , INTE 命令は使用 しないでください。 また , ステップ実行中は INTE による EIT の発生はありません。 87 第 3 章 CPU および制御部 ■ ステップトレーストラップの動作 PS 中の SCR における T フラグをセットしてステップトレースの機能をイネーブルに しておくと , 一命令実行ごとにトラップが発生し , ブレークします。ステップトレース トラップ検出の条件は , 以下のとおりです。 • T フラグ = 1 • 遅延分岐命令ではないとき • INTE 命令 , ステップトレーストラップの処理ルーチン以外を実行中であるとき 以上の条件が成立すると , 命令動作の切れ目でブレークします。 [ 動作 ] 1) SSP-4 → SSP 2) PS → (SSP) 3) SSP-4 → SSP 4) 次の命令のアドレス → (SSP) 5) "00100" → ILM 6) "0" → S フラグ 7) (TBR+3CCH) → PC Tフラグをセットしてステップトレーストラップをイネーブルにしたとき, ユーザ用の NMI とユーザ割込みは禁止状態となります。また , INTE 命令による EIT は発生しなく なります。 MB91307 シリーズでは , T フラグをセットした次の命令からトラップが発生します。 ■ 未定義命令例外の動作 命令のデコード時に未定義命令であることを検出すると , 未定義命令例外が発生しま す。 未定義命令例外の検出条件は , 以下のとおりです。 • 命令のデコード時に , 未定義命令であることを検出。 • 遅延スロット外に置かれている ( 遅延分岐命令の直後ではない ) 。 以上の条件が成立すると , 未定義命令例外が発生しブレークします。 [ 動作 ] 1) SSP-4 → SSP 2) PS → (SSP) 3) SSP-4 → SSP 4) PC → (SSP) 5) "0" → S フラグ 6) (TBR+3C4H) → PC PC として退避されるのは , 未定義命令例外を検出した命令自身のアドレスです。 88 第 3 章 CPU および制御部 ■ コプロセッサ不在トラップ 実装していないコプロセッサを使用するコプロセッサ命令を実行すると , コプロセッ サ不在トラップが発生します。 [ 動作 ] 1) SSP-4 → SSP 2) PS → (SSP) 3) SSP-4 → SSP 4) 次の命令のアドレス → (SSP) 5) "0" → S フラグ 6) (TBR+3E0H) → PC ■ コプロセッサエラートラップ コプロセッサを使用しているときにエラーが発生した場合 , 次にそのコプロセッサを 操作するコプロセッサ命令を実行したとき , コプロセッサエラートラップが発生しま す。 [ 動作 ] 1) SSP-4 → SSP 2) PS → (SSP) 3) SSP-4 → SSP 4) 次の命令のアドレス → (SSP) 5) "0" → S フラグ 6) (TBR+3DCH) → PC ■ RETI 命令の動作 RETI 命令は , EIT 処理ルーチンから復帰する命令です。 [ 動作 ] 1) (R15) → PC 2) R15+4 → R15 3) (R15) → PS 4) R15+4 → R15 RETI 命令は , S フラグが "0" の状態で実行する必要があります。 ■ 遅延スロットの注意事項 分岐命令の遅延スロットには , EIT に関して制約があります。 「3.9 分岐命令」を参照してください。 89 第 3 章 CPU および制御部 3.11 リセット ( デバイスの初期化 ) MB91307 シリーズの初期化であるリセットについて説明します。 ■ リセット ( デバイスの初期化 ) リセット要因が発生すると , デバイスはすべてのプログラムおよびハードウェア動作 を停止し , 状態を初期化します。この状態をリセット状態とよびます。 リセット要因の消失により , デバイスは初期状態からプログラムおよびハードウェア 動作を開始します。このリセット状態から動作開始にいたる一連の動作をリセット シーケンスとよびます。 90 第 3 章 CPU および制御部 3.11.1 リセットレベル MB91307 シリーズのリセット動作は 2 種類のレベルに分けられ , それぞれ発生要因 および初期化の内容が異なります。この項では , 各リセットのレベルについて説明 します。 ■ 設定初期化リセット (INIT) すべての設定を初期化する最も高いレベルのリセットを , 設定初期化リセット (INIT) とよびます。 設定初期化リセット (INIT) により初期化される主なものは , 以下のとおりです。 ● 設定初期化リセット (INIT) による初期化箇所 • デバイスの動作モード ( バスモードおよび外部バス幅の設定 ) • 内部クロックに関するすべての設定 ( クロックソース選択 , PLL 制御 , 分周比設定 ) • 外部バス拡張インタフェースのすべての設定 • その他端子状態に関するすべての設定 • 動作初期化リセット (RST) で初期化されるすべての箇所 詳細については , それぞれの機能の説明を参照してください。 <注意事項> 電源投入後は , 必ず INIT 端子で設定初期化リセット (INIT) をかけてください。 ■ 動作初期化リセット (RST) プログラム動作を初期化する通常レベルのリセットを動作初期化リセット (RST) とよ びます。 設定初期化リセット (INIT) 時には , 同時に動作初期化リセット (RST) も発生します。 動作初期化リセット (RST) により初期化される主なものは , 以下のとおりです。 ● 動作初期化リセット (RST) による初期化箇所 • プログラム動作 • CPU および内部バス • 周辺回路のレジスタ設定値 • I/O ポート設定 • 外部バスの CS0 領域に関するすべての設定 詳細については , それぞれの機能の説明を参照してください。 91 第 3 章 CPU および制御部 3.11.2 リセット要因 MB91307 シリーズにおける各リセット発生要因と , 発生するリセットレベルについ て説明します。 過去に発生したリセット要因は , RSRR ( リセット要因レジスタ ) を読み出すことに より知ることができます。この項の説明の中にあるレジスタ , フラグの詳細につい ては , 「3.12 クロック発生制御」で説明します。 ■ INIT 端子入力 ( 設定初期化リセット端子 ) 外部端子の INIT 端子は , 設定初期化リセット端子として機能します。 この端子へ "L" レベルを入力している間 , 設定初期化リセット (INIT) 要求が発生しま す。 この端子へ "H" レベルを入力することにより , 設定初期化リセット (INIT) 要求は解除 されます。 この端子からの要求による設定初期化リセット (INIT) が発生した場合 , RSRR ( リセッ ト要因レジスタ ) 中のビット 15 (INIT ビット ) がセットされます。 この端子からの要求による設定初期化リセット (INIT) は , すべてのリセット要因中で 割込みレベルが最も高く , すべての入力 / 動作 / 状態よりも優先されます。 なお , 電源投入直後は必ず INIT 端子で設定初期化リセット (INIT) をかけてください。 また , 電源投入直後は , 発振回路の発振安定待ち時間を確保するため , INIT 端子への "L" レベル入力を発振回路が必要とする安定待ち時間の間持続してください。INIT 端 子による INIT では , 発振安定待ち時間の設定は最小値に初期化されています。 • 発生要因 : 外部 INIT 端子への "L" レベル入力 • 解除要因 : 外部 INIT 端子への "H" レベル入力 • 発生レベル : 設定初期化リセット (INIT) • 対応フラグ : ビット 15 (INIT) ■ ソフトウェアリセット (STCR:SRST ビット書込み ) スタンバイ制御レジスタ (STCR) 中のビット 4 (SRST ビット ) に "0" が書き込まれると , ソフトウェアリセット要求が発生します。ソフトウェアリセット要求は , 動作初期化リ セット (RST) 要求です。 要求が受け付けられて動作初期化リセット (RST) が発生すると , ソフトウェアリセッ ト要求は解除されます。 ソフトウェアリセット要求による動作初期化リセット (RST) が発生した場合 , RSRR ( リセット要因レジスタ ) 中のビット (SRST ビット ) がセットされます。 ソフトウェアリセット要求による動作初期化リセット (RST) は , タイムベースカウン タ制御レジスタ (TBCR) 中のビット 7 (SYNCR ビット ) がセットされている場合 ( 同期 リセットモード ) , すべてのバスアクセスが停止してからでないと発生しません。この ため , バスの使用状況によっては動作初期化リセット (RST) が発生するまでに , 長時間 を要する場合があります。 92 第 3 章 CPU および制御部 • 発生要因 : スタンバイ制御レジスタ (STCR) 中のビット 4 (SRST) ビットへの "0" 書込み • 解除要因 : 動作初期化リセット (RST) の発生 • 発生レベル : 動作初期化リセット (RST) • 対応フラグ : ビット 11 (SRST) ■ ウォッチドッグリセット ウォッチドッグタイマ制御レジスタ (RSRR) に対して書き込むと, ウォッチドッグタイ マが起動します。その後 , RSRR 中のビット 9, ビット 8 (WT1, WT0 ビット ) で設定し た周期内にウォッチドッグリセット発生延期レジスタ (WPR) へA5H/5AH が書き込まれ ないと , ウォッチドッグリセット要求が発生します。 ウォッチドッグリセット要求は , 設定初期化リセット (INIT) 要求です。要求が受け付 けられて設定初期化リセット (INIT) が発生するかまたは動作初期化リセット (RST) が 発生すると , ウォッチドッグリセット要求は解除されます。 ウォッチドッグリセット要求による設定初期化リセット (INIT) が発生した場合 , リ セット要因レジスタ (RSRR) 中のビット 13 (WDOG ビット ) がセットされます。 なお , ウォッチドッグリセット要求による設定初期化リセット (INIT) が発生した場合 では , 発振安定待ち時間の設定は初期化されません。 • 発生要因 : ウォッチドッグタイマの設定周期経過 • 解除要因 : 設定初期化リセット (INIT) または動作初期化リセット (RST) の発生 • 発生レベル : 設定初期化リセット (INIT) • 対応フラグ : ビット 13 (WDOG) ■ HST 端子入力 ( ハードウェアスタンバイ端子 ) MB91307B のみ 外部端子の HST 端子は , ハードウェアスタンバイ端子として機能します。この端子へ "L" レベルを入力している間 , ハードウェアスタンバイ要求が発生します。ハードウェ アスタンバイ要求が受け付けられ , デバイスがハードウェアスタンバイ状態に遷移す ると , 同時に設定初期化リセット (INIT) が発生します。 この端子へ "H" レベルを入力することによってハードウェアスタンバイ要求は解除さ れ , 設定初期化リセット (INIT) も解除されます。 ハードウェアスタンバイ状態において , 外部 INIT 端子による設定初期化リセット (INIT) 要求が発生した場合 , ハードウェアスタンバイ要求は解除されますが , 設定初期 化リセット (INIT) は発生したままとなります。 ハードウェアスタンバイ状態による設定初期化リセット (INIT) が発生した場合 , リ セット要因レジスタ (RSRR) 中のビット 14 (HSTB ビット ) がセットされます。 なお, 電源投入直後からハードウェアスタンバイ要求が発生している場合, INIT 端子に よる設定初期化リセット (INIT) が優先されます。その後 , INIT 端子による設定初期化 リセット (INIT) が解除されてハードウェアスタンバイ状態に遷移すると , 発振安定待 ち時間の設定は最大値に初期化され , ハードウェアスタンバイ要求が解除された後の 発振安定待ち時間は最大値となります。 • 発生要因 : 外部 HST 端子への "L" レベル入力 • 解除要因 : 外部 HST 端子への "H" レベル入力または INIT 端子による設定初期化リ セット (INIT) • 発生レベル : 設定初期化リセット (INIT) • 対応フラグ : ビット 14 (HSTB) 93 第 3 章 CPU および制御部 3.11.3 リセットシーケンス リセット要因の消失により , デバイスはリセットシーケンスの実行を開始します。 リセットシーケンスは , リセットレベルによりそれぞれ動作が異なります。 この項では , 各リセットレベルにおけるリセットシーケンスの動作について説明し ます。 ■ 設定初期化リセット (INIT) 解除シーケンス 設定初期化リセット (INIT) 要求が解除されると , デバイスは以下の動作を順に実行し ます。 1) 設定初期化リセット (INIT) の解除 , 発振安定待ち状態へ遷移 2) 発振安定待ち時間 (STCR のビット 3, ビット 2 (OS1, OS0 ビット ) で設定 ) の間 , 動作初期化リセット (RST) 状態を保持 , 内部クロック停止 3) 動作初期化リセット (RST) 状態 , 内部クロック動作開始 4) 動作初期化リセット (RST) の解除 , 通常動作状態へ遷移 5) 000FFFF8H 番地より , モードベクタの読出し 6) 000007FDH 番地の MODR ( モードレジスタ ) へ , モードベクタの書込み 7) 000FFFFCH 番地より , リセットベクタの読出し 8) プログラムカウンタ (PC) へ , リセットベクタの書込み 9) プログラムカウンタ (PC) が示す番地より , プログラム動作開始 ■ 動作初期化リセット (RST) 解除シーケンス 動作初期化リセット (RST) 要求が解除されると , デバイスは以下の動作を順に実行し ます。 1) 動作初期化リセット (RST) の解除 , 通常動作状態へ遷移 2) 000FFFFCH 番地より , リセットベクタの読出し 3) プログラムカウンタ (PC) へ , リセットベクタの書込み 4) プログラムカウンタ (PC) が示す番地より , プログラム動作開始 94 第 3 章 CPU および制御部 ■ ハードウェアスタンバイ解除シーケンス (MB91307B) ハードウェアスタンバイ要求または低電圧検出スタンバイ要求が解除されると , デバ イスは以下の動作を順に実行します。 1) 設定初期化リセット (INIT) 状態 , 内部クロック動作開始 , 端子ハイインピーダン ス処理解除 2) 設定初期化リセット (INIT) の解除 , 発振安定待ち状態へ遷移 3) 発振安定待ち時間 (STCR のビット 3, ビット 2 (OS1, OS0 ビット ) で設定 ) の間 , 動作初期化リセット (RST) 状態を保持 , 内部クロック停止 4) 動作初期化リセット (RST) 状態 , 内部クロック動作開始 5) 動作初期化リセット (RST) の解除 , 通常動作状態へ遷移 6) 000FFFF8H 番地より , モードベクタの読出し 7) 000007FDH 番地の MODR ( モードレジスタ ) へ , モードベクタの書込み 8) 000FFFFCH 番地より , リセットベクタの読出し 9) プログラムカウンタ (PC) へ , リセットベクタの書込み 10) プログラムカウンタ (PC) が示す番地より , プログラム動作開始 95 第 3 章 CPU および制御部 3.11.4 発振安定待ち時間 デバイスの原発振が停止していたかまたはその可能性がある状態から復帰したとき , 自動的に発振安定待ち状態に遷移します。この機能により , 発振開始後の安定して いない状態で発振器出力を使用しないようにします。 発振安定待ち時間中は , 内部および外部へのクロック供給は停止し , 内蔵タイムベー スカウンタのみが動作して , スタンバイ制御レジスタ (STCR) で設定された安定待ち 時間の経過を待ちます。 この項では , 発振安定待ち動作について説明します。 ■ 発振安定待ち発生要因 発振安定待ちの発生要因を , 以下に示します。 ● 設定初期化リセット (INIT) の解除時 各種要因による設定初期化リセット (INIT) が解除された直後に , 発振安定待ち状態へ 遷移します。 発振安定待ち時間経過後は , 動作初期化リセット (RST) 状態へ遷移します。 ● ストップモードからの復帰時 ストップモードが解除された直後に , 発振安定待ち状態へ遷移します。 ただし, 設定初期化リセット (INIT) 要求により解除された場合は, 設定初期化リセット (INIT) 状態に遷移し , 設定初期化リセット (INIT) が解除された後, 発振安定待ち状態へ 遷移します。 発振安定待ち時間経過後は , ストップモードが解除された要因に対応した状態へ遷移 します。 • 有効な外部割込み要求入力 (NMI 含む ) の発生による復帰時 : 通常動作状態へ遷移します。 • 設定初期化リセット (INIT) 要求による復帰時 : 動作初期化リセット (RST) 状態へ遷移します。 • 動作初期化リセット (RST) 要求による復帰時 : 動作初期化リセット (RST) 状態へ遷移します。 ● PLL 選択時の異常状態発生からの復帰時 PLL をソースクロックとして動作しているときに , PLL 制御に何らかの異常が発生し た場合 *, PLL ロックタイムの確保のために , 自動的に発振安定待ち時間に遷移します。 発振安定待ち時間経過後は , 通常動作状態へ遷移します。 * 96 :PLL 使用中の逓倍率変更や , PLL 動作許可ビット化けの発生など。 第 3 章 CPU および制御部 ■ 発振安定待ち時間の選択 発振安定待ち時間は , 内蔵タイムベースカウンタを用いて計時されます。 発振安定待ち発生要因が発生し , 発振安定待ち状態へ遷移すると , 内蔵タイムベースカ ウンタは一度初期化された後 , 発振安定待ち時間の計測を開始します。 スタンバイ制御レジスタ (STCR) のビット 3, ビット 2 (OS1, OS0 ビット ) により , 発振 安定待ち時間を 4 種類のうちから選択して設定することができます。 一度選択した設定は , 外部 INIT 端子による設定初期化リセット (INIT) 以外では初期化 されません。それ以外の , ウォッチドッグリセット / ハードウェアスタンバイによる設 定初期化リセット (INIT) や, 動作初期化リセット (RST) では, リセット発生以前に設定 した発振安定待ち時間が保持されます。 発振安定待ち時間選択の 4 種類の設定項目は , それぞれ以下の用途を想定してありま す。 • OS1, OS0="00": 発振安定待ち時間なし ( ストップモードで PLL も発振器を停止させ ない場合 ) • OS1, OS0="01":PLL ロック待ち時間 ( 外部クロック入力や , ストップモードで発振器 を停止させない場合 ) • OS1, OS0="10": 発振安定待ち時間 ( 中 ) ( セラミック振動子等の安定が速い発振子を 使用する場合 ) • OS1, OS0="10": 発振安定待ち時間 ( 長 ) ( 一般の水晶発振子等を使用する場合 ) なお , 電源投入直後は必ず INIT 端子で , 設定初期化リセット (INIT) をかけてください。 また , 電源投入直後は , 発振回路の発振安定待ち時間を確保するため , INIT 端子への "L" レベル入力を発振回路が必要とする安定待ち時間の間持続してください (INIT 端子 による INIT では , 発振安定待ち時間の設定は最小値に初期化されています ) 。 なお, 電源投入直後からハードウェアスタンバイ要求が発生している場合, INIT端子に よる設定初期化リセット (INIT) が優先されます。その後 , INIT 端子による設定初期化 リセット (INIT) が解除されてハードウェアスタンバイ状態に遷移した場合 , 発振安定 待ち時間の設定は最大値に初期化され , ハードウェアスタンバイ要求が解除された後 の発振安定待ち時間は最大値となります。 97 第 3 章 CPU および制御部 3.11.5 リセット動作モード 動作初期化リセット (RST) には , 通常 ( 非同期 ) リセットモードと同期リセットモー ドの 2 つのモードがあり , タイムベースカウンタ制御レジスタ (TBCR) 中のビット 7 (SYNCR ビット ) によってどちらのモードで動作するかを設定します。このモード 設定は , 設定初期化リセット (INIT) のみで初期化されます。設定初期化リセット (INIT) は , 常に非同期でリセット動作を行います。 この項では , 各モードの動作について説明します。 ■ 通常リセット動作 動作初期化リセット (RST) 要求またはハードウェアスタンバイ要求が発生した際に , 即座に動作初期化リセット (RST) 状態またはハードウェアスタンバイ状態へ遷移する 動作を , 通常リセット動作とよびます。 このモードにおいては , リセット (RST) 要求またはハードウェアスタンバイ要求が受 け付けられると , 内部バスアクセスの動作状態にかかわらず , 即時にリセット (RST) 状 態またはハードウェアスタンバイ状態へ遷移します。 このモードでは , 各状態へ遷移する時点で行われていたバスアクセスについては , その 結果を保証できません。しかし , それらの要求を確実に受け付けることは可能です。 タイムベースカウンタ制御レジスタ (TBCR) 中のビット 7 (SYNCR ビット ) が "0" のと き , 通常リセットモードとなります。設定初期化リセット (INIT) の発生後の初期値は , 通常リセットモードとなります。 ■ 同期リセット動作 動作初期化リセット (RST) 要求またはハードウェアスタンバイ要求が発生した際に , すべてのバスアクセスが停止してから動作初期化リセット (RST) 状態またはハード ウェアスタンバイ状態へ遷移する動作を , 同期リセット動作とよびます。 このモードにおいては , リセット (RST) 要求またはハードウェアスタンバイ要求が受 け付けられても , 内部バスアクセスが行われている間は , リセット (RST) 状態または ハードウェアスタンバイ状態へ遷移はしません。 上記要求が受け付けられると , それによって内部バスに対してスリープ要求が発行さ れます。各バスが動作を切り上げてスリープ状態に移行すると , 動作初期化リセット (RST) 状態またはハードウェアスタンバイ状態へ遷移します。 このモードでは , 各状態へ遷移する時点ではすべてのバスアクセスが停止しているた め , すべてのバスアクセスの結果は保証されます。 しかし , バスアクセスが何らかの理由によって停止しない場合は , その間各要求を受け 付けることができなくなります。このような場合でも , 設定初期化リセット (INIT) は 即座に有効となります。 バスアクセスが停止しない要因には , 以下の場合があげられます。 • 外部拡張バスインタフェースに対してバス解放要求 (BRQ) が入力され続け , バス解 放アクノリッジ (BGRNT ) が有効となっていて , 内部バスから新たなバスアクセス 要求が発生しているような場合。 98 第 3 章 CPU および制御部 • 外部拡張バスインタフェースに対してレディ要求 (RDY) が入力され続け , バスウェ イトが有効となっている場合。また , 次の場合においては , 最終的には各状態へ遷 移しますが , 遷移するまでに長時間かかってしまいます。 参考: DMA コントローラについては , 各要求の受付けによって転送を停止しますので , 各状態への遷移を遅延させることはありません。タイムベースカウンタ制御レジス タ (TBCR) 中のビット 7 (SYNCR ビット ) が "1" のとき , 同期リセットモードとなり ます。設定初期化リセット (INIT) の発生後の初期値は , 通常リセットモードに戻り ます。 99 第 3 章 CPU および制御部 3.12 クロック発生制御 クロックの発生とその制御について説明します。 ■ クロック発生制御 MB91307 シリーズの内部動作クロックは , 以下のように発生されます。 • ソースクロックの選択 : クロックの供給源を選択します。 • ベースクロックの発生 : ソースクロックを 2 分周または PLL 発振させ , 基本クロッ クを生成します。 • 各内部クロックの発生 : ベースクロックを分周し , 各部に供給する 4 種類の動作ク ロックを生成します。 ■ ソースクロック ● 自励発振モード (X0/X1 端子入力 ) 外部発振端子に発振子を接続し , 内蔵発振回路で生成した原発振をソースクロックと するモードです。 外部バスクロックを含むすべてのクロック供給源は , MB91307 シリーズ自身となりま す。 メインクロックは , X0/X1 端子入力から生成し , 高速クロックとして使用することを想 定したクロックです。 メインクロックは , それぞれ独立に制御可能な内蔵メイン PLL を用いて逓倍されます。 内部ベースクロックは , 以下のソースクロックのうちから選択して発生させます。 • メインクロックを 2 分周したもの • メインクロックをメイン PLL で逓倍したもの ソースクロックの選択制御は , クロックソース制御レジスタ (CLKR) の設定によって 行います。 100 第 3 章 CPU および制御部 3.12.1 PLL 制御 メインのソースクロックに対応した PLL 発振回路それぞれについて , 動作 ( 発振 ) 許可 / 禁止と逓倍率設定を独立に制御することができます。各制御は , クロックソー ス制御レジスタ (CLKR) の設定によって行います。 この項では , 各制御内容について説明します。 ■ PLL 動作許可 メイン PLL 発振動作の許可 / 停止は , クロックソース制御レジスタ (CLKR) のビット 10 (PLL1EN ビット ) の設定によって行います。 ● 自励発振モード時の PLL 動作制御 自励発振モードでは , どちらのビットも設定初期化リセット (INIT) 後は"0"に初期化さ れ , PLL の発振動作は停止しています。停止中は , ソースクロックとして , PLL 出力を 選択することはできません。 プログラム動作を開始したら , まずクロックソースとして使用する PLL の逓倍率を設 定し , かつ動作許可した後 , PLL のロック待ち時間経過後にソースクロックを切り換え てください。この際の PLL ロック待ち時間は , タイムベースタイマ割込みを使用する とよいでしょう。 ソースクロックとして PLL 出力を選択している間は , その PLL は動作停止させること はできません ( レジスタへの書込みは無効となります ) 。ストップモードに移行する際 などで PLL を停止させたい場合は , 一度ソースクロックをメインクロックの 2 分周し たものに選択し直した後 , PLL を停止させてください。 なお , スタンバイ制御レジスタ (STCR) のビット 0 (OSCD1 ビット ) やビット 1 (OSCD2 ビット ) により , ストップモード中の発振が停止するように設定してある場合 , 対応す る PLL はストップモード遷移時に自動的に停止しますので , 動作停止を改めて設定す る必要はありません。その後 , ストップモードから復帰する際 , PLL は自動的に発振動 作を開始します。ストップモード中の発振が停止しないように設定してある場合は , PLL は自動では停止しません。この場合は , 必要であればストップモード移行前にあ らかじめ動作停止を設定してください。 ● 外部クロックモード時の PLL 動作制御 外部クロックモードでは , 両ビットの設定値にかかわらず , 設定初期化リセット (INIT) 中およびストップモード中以外は , メイン PLL は発振動作をしています。 なお , スタンバイ制御レジスタ (STCR) のビット 0 (OSCD1 ビット ) により , ストップ モード中の発振が停止するように設定してある場合 , メイン PLL はストップモード遷 移時に自動的に停止します。その後 , ストップモードから復帰する際 , PLL は自動的に 発振動作を開始します。ストップモード中の発振が停止しないように設定してある場 合は , PLL は停止しません。 101 第 3 章 CPU および制御部 <注意事項> • 本品種で PLL 動作を行う場合は , 自励発振 , 外部クロック入力の周波数は , 12.5 MHz ∼ 16.5 MHz にしてください。 • 本マイコンで PLL クロックを選択しているときに発振子が外れたり , あるいはクロッ ク入力が停止した場合 , 本マイコンは PLL 内部の自励発振回路の自走周波数で動作を 継続し続ける場合があります。この動作は保証外の動作です。 ■ PLL 逓倍率 メイン PLL の逓倍率は , クロックソース制御レジスタ (CLKR) のビット 14 ∼ビット 12 (PLL1S2, PLL1S1, PLL1S0 ビット ) によって設定します。 設定初期化リセット (INIT) 後は , 全ビットが "0" に初期化されています。 ● 自励発振モード時の PLL 逓倍率設定 自励発振モードで PLL 逓倍率設定を初期値から変更する場合 , プログラム動作開始後 , PLL を動作許可する前または同時に設定してください。逓倍率変更後は , ロック待ち 時間経過後にソースクロックを切り換えてください。この際の PLL ロック待ち時間は , タイムベースタイマ割込みを使用すると良いでしょう。 動作中に PLL 逓倍率設定を変更する場合 , 一度ソースクロックを該当 PLL 以外に切り 換えてから変更してください。逓倍率変更後は , 上記同様にロック待ち時間経過後に ソースクロックを切り換えてください。 PLL 逓倍率設定の変更を , PLL 使用中に変更することも可能ですが , この際は逓倍率設 定書換え後から自動的に発振安定待ち状態に遷移し , 設定された発振安定待ち時間が 経過するまでの間はプログラム動作が停止します。 PLL 以外にクロックソースを切り換えた場合は , プログラム動作は停止しません。 ● 外部クロックモード時の PLL 逓倍率設定 外部クロックモードでは PLL 逓倍率設定を初期値より変更する場合 , プログラム動作 開始後はすでに PLL が動作許可されてソースクロックとして使用されていますので , 逓倍率設定書換え後から自動的に発振安定待ち状態に遷移し , 設定された発振安定待 ち時間が経過するまでの間はプログラム動作が停止します。このため , 逓倍率設定を変 更する前に , 必ず発振安定待ち時間の設定を適切な ( 仕様で規定された PLL ロック待 ち時間よりも大きな ) 時間になるようにあらかじめ設定しておいてください。なお , こ のモードにおいては, 発振安定待ち時間設定の初期値は"01" (PLLロック待ち時間対応) となっています。 102 第 3 章 CPU および制御部 3.12.2 発振安定待ち /PLL ロック待ち時間 ソースクロックとして選択するクロックが安定動作状態にない場合 , 発振安定待ち 時間が必要となります (「3.11.4 発振安定待ち時間」参照 ) 。 PLL については , 動作開始後 , 設定された周波数に出力が安定するまでにはロック待 ち時間が必要となります。 この項では , 各種のケースにおける待ち時間について説明します。 ■ 自励発振モード時 自励発振モードにおける各種の待ち時間について説明します。 ● 電源投入後の待ち時間 電源投入後は , まずメインクロック用発振回路の発振安定待ち時間が必要となります。 発振安定待ち時間の設定は , INIT 端子入力 ( 設定初期化リセット端子 ) により最小値に 初期化されるため , この発振安定待ち時間は , INIT 端子入力へ "L" レベルを入力する時 間により確保します。 この状態においては , PLL はいずれも動作許可されていないため , ロック待ち時間はこ こでは考慮する必要はありません。 ● 設定初期化後の待ち時間 設定初期化リセット (INIT) が解除されると , 発振安定待ち状態へ遷移します。ここで は, 設定された発振安定待ち時間を内部的に発生します。INIT端子入力後の初めの発振 安定待ち状態では, 設定時間は最小値に初期化されているため, すぐに本状態は終了し, 動作初期化リセット (RST) 状態へと遷移します。 ただし , この状態で HST 端子入力 ( ハードウェアスタンバイ端子 ) に "L" レベルが入力 されていた場合 , ハードウェアスタンバイ状態に遷移して発振回路が停止してしまう ため , 発振安定待ち設定時間は安全のため最大値に初期化し直されます。 プログラム動作開始後 , INIT 端子入力以外の要因により設定初期化リセット (INIT) が 発生した場合の解除時には , プログラムで設定された時間の発振安定待ち時間を内部 的に発生します。 これらの状態においては , PLL はいずれも動作許可されていないため , ロック待ち時間 はここでは考慮する必要はありません。 ● PLL 動作許可後の待ち時間 プログラム動作開始後 , 停止状態の PLL を動作許可した場合 , ロック待ち時間が経過 しないとその PLL 出力を使用してはいけません。ソースクロックとして該当する PLL を選択していなければ , ロック待ち時間中もプログラム動作は実行可能です。この際の PLL ロック待ち時間は , タイムベースタイマ割込みを使用すると良いでしょう。 103 第 3 章 CPU および制御部 ● PLL 逓倍率変更後の待ち時間 プログラム動作開始後 , 動作状態の PLL の逓倍率設定を変更した場合も , ロック待ち 時間が経過しないとその PLL 出力を使用してはいけません。 ソースクロックとして該当する PLL を選択していなければ , ロック待ち時間中もプロ グラム動作は実行可能です。 この際の PLL ロック待ち時間は , タイムベースタイマ割込みを使用すると良いでしょ う。 ● ストップモード復帰後の待ち時間 プログラム動作開始後 , ストップモードに遷移した場合の解除時には , プログラムで設 定された時間の発振安定待ち時間を内部的に発生します。ストップモード中に , ソース クロックとして選択しているクロック用発振回路を停止させる設定であった場合 , そ の発振回路の発振安定待ち時間と使用している PLL のロック待ち時間のうち長い方の 時間が必要となります。ストップモードに遷移させる前に , あらかじめその発振安定待 ち時間を設定しておいてください。 ストップモード中に , ソースクロックとして選択しているクロック用発振回路を停止 させない設定の場合は , PLL は自動では動作停止しません。PLL を停止させない限り 発振安定待ち時間は必要となりません。ストップモードに遷移させる前に , あらかじめ 発振安定待ち時間を最小値に設定しておくと良いでしょう。ただし , ストップ中にハー ドウェアスタンバイ要求が入力された場合は発振回路が停止するため , 復帰後に発振 安定待ち時間が必要となります。ここで待ち時間を最小値に設定しておくと , 発振安定 待ち時間が確保できなくなり , 復帰後の動作が保証できません。このような場合は , そ の発振回路用の発振安定待ち時間を設定しておくようにしてください。 ■ 外部クロックモード時 外部クロックモードにおける各種の待ち時間について説明します。 ● 電源投入後の待ち時間 電源投入後は , まずメインクロック用発振回路の発振安定待ち時間が必要となります。 発振安定待ち時間の設定は , INIT 端子入力 ( 設定初期化リセット端子 ) により PLL ロッ ク待ち時間対応に初期化されるため, この発振回路用の発振安定待ち時間は, INIT端子 入力へ "L" レベルを入力する時間により確保します。 この状態においては , PLL はいずれも動作許可されていないため , ロック待ち時間はこ こでは考慮する必要はありません。ただし , このモードでは設定初期化リセット (INIT) が解除されるとメイン PLL は動作許可となりますが , PLL 回路の初期化のため , 電源 投入後から 1µs の間は PLL を動作許可してはいけません。そのため , 発振回路用の発 振安定待ち時間が必要ない場合においても , 電源投入後は 1µs の間 INIT 端子入力へ "L" レベルを入力し続けてください。 104 第 3 章 CPU および制御部 ● 設定初期化後および PLL 動作許可後の待ち時間 設定初期化リセット (INIT) が解除されると , 発振安定待ち状態へ遷移します。ここで は , 設定された発振安定待ち時間を内部的に発生します。INIT 端子入力後の初めの発 振安定待ち状態では , 設定時間は PLL ロック待ち時間対応に初期化されているため , PLL ロック待ち時間経過後にこの状態は終了し , 動作初期化リセット (RST) 状態へと 遷移します。ただし , この状態で HST 端子入力 ( ハードウェアスタンバイ端子 ) に "L" レベルが入力されていると , ハードウェアスタンバイ状態に遷移して発振回路が停止 してしまうため , 発振安定待ち設定時間は安全のため最大値に初期化し直されます。プ ログラム動作開始後 , INIT 端子入力以外の要因により設定初期化リセット (INIT) が発 生した場合の解除時には , プログラムで設定された時間の発振安定待ち時間を内部的 に発生します。 ● PLL 逓倍率変更後の待ち時間 プログラム動作開始後 , 動作状態の PLL の逓倍率設定を変更した場合 , 設定変更後に プログラム動作は一次停止して発振安定待ち ( ロック待ち ) 状態に遷移し , 設定されて いる発振安定待ち ( ロック待ち ) 時間の経過後にプログラム動作に復帰します。この動 作により , タイムベースカウンタは一度初期化されます。 ● ストップモード復帰後の待ち時間 プログラム動作開始後 , ストップモードに遷移した場合の解除時には , プログラムで設 定された時間の発振安定待ち時間を内部的に発生します。 ストップモード中に , メインクロック用発振回路を停止させる設定の場合 , その発振回 路の発振安定待ち時間とメイン PLL のロック待ち時間のうち長い方の時間が必要とな ります。ストップモードに遷移させる前に , あらかじめその発振安定待ち時間を設定し ておいてください。 ストップモード中に , メインクロック用発振回路を停止させない設定の場合は , PLL は 自動では動作を停止しません。PLL を停止させない限り発振安定待ち時間は必要とな りません。ストップモードに遷移させる前に , あらかじめ発振安定待ち時間を最小値に 設定しておくと良いでしょう。ただし , ストップ中にハードウェアスタンバイ要求が入 力された場合 , 発振回路が停止するため , 復帰後に発振安定待ち時間が必要となりま す。 ここで待ち時間を最小値に設定しておくと, 発振安定待ち時間が確保できなくなり, 復帰後の動作が保証できません。このよう場合は , その発振回路用の発振安定待ち時間 を設定しておくようにしてください。 105 第 3 章 CPU および制御部 3.12.3 クロック分配 ソースクロックから発生されたベースクロックを元に , 各機能用の動作クロックを それぞれ生成します。内部動作クロックは全部で 4 種類あり , それぞれが独立に分 周比を設定することができます。 この項では , 各内部動作クロックについて説明します。 ■ CPU クロック (CLKB) CPU と内部メモリおよび内部バスに使用されるクロックです。 このクロックは , 以下の回路が使用します。 • CPU • 命令キャッシュ • 内蔵 RAM, 内蔵 ROM • ビットサーチモジュール • I-bus, D-bus, X-bus, F-bus • DMA コントローラ • DSU ( 開発ツールインタフェース回路 ) 動作可能な上限周波数は 66MHz ですので , これを超える周波数になる逓倍率と分周比 の組合せは設定しないでください。 ■ 周辺クロック (CLKP) 周辺回路およびペリフェラルバスに使用されるクロックです。 このクロックは , 以下の回路が使用します。 • ペリフェラル ( 周辺 ) バス • クロック制御部 ( バスインタフェース部のみ ) • 割込みコントローラ • 周辺 I/O ポート • I/O ポートバス • 外部割込み入力 • UART • 16 ビットタイマ • A/D コンバータ • I2C インタフェース 動作可能な上限周波数は 33MHz ですので , これを超える周波数になる逓倍率と分周比 の組合せは設定しないでください。 106 第 3 章 CPU および制御部 ■ 外部バスクロック (CLKT) 外部拡張バスインタフェースに使用されるクロックです。 このクロックは , 以下の回路が使用します。 • 外部拡張バスインタフェース • 外部 CLK 出力 動作可能な上限周波数は 33MHz ですので , これを超える周波数になる逓倍率と分周比 の組合せは設定しないでください。 ■ SDRAM クロック (CLKS) 本品種では SDRAM インタフェースはサポートしていません。 SDRAM インタフェースに使用されるクロックです。 このクロックは , 以下の回路が使用します。 • SDRAM インタフェース • SDCLK 出力 動作可能な上限周波数は 66MHz ですので , これを超える周波数になる逓倍率と分周比 の組合せは設定しないでください。 107 第 3 章 CPU および制御部 3.12.4 クロック分周 各内部動作クロックは , それぞれ独立にベースクロックからの分周比を設定するこ とができます。この機能によって , 各回路に最適な動作周波数を設定することがで きます。 ■ クロック分周 分周比は, 基本クロック分周設定レジスタ0 (DIVR0) および基本クロック分周設定レジ スタ 1 (DIVR1) で設定します。各レジスタには , 各クロックに対応する 4 ビットずつの 設定ビットがあり , ( レジスタ設定値 +1) がそのクロックのベースクロックに対する分 周比となります。分周比設定が奇数であっても , 常にデューティは 50 となります。 設定値の変更があった場合 , 設定後次のクロックの立上りから変更後の分周比が有効 となります。 分周比設定は , 動作初期化リセット (RST) の発生では初期化されず , リセット発生前の 設定が維持されます。設定初期化リセット (INIT) の発生によってのみ初期化されます。 初期状態では , 周辺クロック (CLKP) 以外はすべて分周比が "1" となりますので , ソー スクロックを高速なものに変更する前に必ず分周比の設定を行ってください。 各クロックには , 動作可能な上限周波数が規定されています。ソースクロックの選択 , PLL の逓倍率の設定 , 分周比の設定の組合せで , 上限周波数を超える設定をした場合 , 動作は保証されませんので注意してください。ソースクロック選択の変更設定との順 序を間違えないように特に留意してください。 108 第 3 章 CPU および制御部 3.12.5 クロック発生制御部のブロックダイヤグラム クロック発生制御部のブロックダイヤグラムを示します。 ■ ブロックダイヤグラム 図 3.12-1 に , クロック発生制御部のブロックダイヤグラムを示します。 図 3.12-1 クロック発生制御部のブロックダイヤグラム [クロック生成部] DIVR0,1レジスタ セレクタ b u s 周辺クロック分周 セレクタ 外部バスクロック分周 SDRAMクロック分周 CPUクロック 停止制御 CPUクロック分周 R 周辺クロック セレクタ 外部バスクロック セレクタ SDRAMクロック CLKRレジスタ X1 発振回路 PLL 1/2 内部割込み セレクタ X0 [ストップ・スリープ制御部] 内部リセット STCRレジスタ ストップ状態 状態遷移 制御回路 HST端子 SLEEP状態 リセット発生 F/F 内部リセット(RST) リセット発生 F/F 内部リセット(INIT) [リセット要因回路] RST端子 INIT端子 RSRRレジスタ [ウォッチドッグ制御部] WPRレジスタ ウォッチドッグF/F タイムベースカウンタ CTBRレジスタ TBCRレジスタ 割込み許可 カウンタクロック セレクタ オーバフロー検出F/F タイムベースタイマ 割込み要求 109 第 3 章 CPU および制御部 3.12.6 クロック発生制御部のレジスタ クロック発生制御部で使用するレジスタの機能について説明します。 ■ リセット要因レジスタ / ウォッチドッグタイマ制御レジスタ (RSRR) 図 3.12-2 に , リセット要因レジスタ / ウォッチドッグタイマ制御レジスタ (RSRR) の ビット構成を示します。 図 3.12-2 リセット要因レジスタ / ウォッチドッグタイマ制御レジスタ (RSRR) ビット アドレス:00000480H 15 INIT R 1 * 初期値 (INIT 端子 ) 初期値 (INIT) 初期値 (RST) × * :要因により変化します。 × :初期化されません。 14 13 12 11 HSTB WDOG ERST SRST R R R R 0 0 0 0 * * × × * * × × 10 LINIT R 0 * × 9 WT1 R/W 0 0 0 8 WT0 R/W 0 0 0 直前に発生したリセットの要因の保持およびウォッチドッグタイマの周期設定および 起動制御を行うレジスタです。このレジスタを読み出すと , 保持されたリセット要因は 読出し後にクリアされます。読み出すまでの間に複数回のリセットが発生した場合 , リ セット要因フラグは累積され , 複数のフラグがセットされることになります。 このレジスタに書き込むと , ウォッチドッグタイマが起動されます。それ以降は , リ セット (RST) が発生するまで , ウォッチドッグタイマは動作を続けます。 以下に , リセット要因レジスタ / ウォッチドッグタイマ制御レジスタ (RSRR) の各ビッ トの機能を説明します。 [ ビット 15] INIT (INITialize reset occured) このビットは , INIT 端子入力によるリセット (INIT) の発生の有無を示します。 0 INIT 端子入力による INIT は発生していません。 1 INIT 端子入力による INIT が発生しました。 ・読出し直後に "0" に初期化されます。 ・読出し可能で , 書込みはビット値に影響を与えません。 110 第 3 章 CPU および制御部 [ ビット 14] HSTB (Hardware STandBy reset occured) このビットは , HST 端子入力によるリセット (INIT) の発生の有無を示します。 0 HST 端子入力による INIT は発生していません。 1 HST 端子入力による INIT が発生しました。 ・INIT 端子入力によるリセット (INIT) または読出し直後に "0" に初期化されます。 ・読出し可能で , 書込みはビット値に影響を与えません。 [ ビット 13] WDOG (WatchDOG reset occured) このビットは , ウォッチドッグタイマによるリセット (INIT) の発生の有無を示しま す。 0 ウォッチドッグタイマによる INIT は発生していません。 1 ウォッチドッグタイマによる INIT が発生しました。 ・INIT 端子入力によるリセット (INIT) または読出し直後に "0" に初期化されます。 ・読出し可能で , 書込みはビット値に影響を与えません。 [ ビット 12] ERST (External ReSeT occured) このビットは , RST 端子入力によるリセット (RST) の発生の有無を示します。 0 RST 端子入力による RST は発生していません。 1 RST 端子入力による RST が発生しました。 ・INIT 端子入力によるリセット (INIT) または読出し直後に "0" に初期化されます。 ・読出し可能で , 書込みはビット値に影響を与えません。 <注意事項> 本品種には , RST 端子はありません。 [ ビット 11] SRST (Software ReSeT occured) このビットは , STCR レジスタの SRST ビット書込み ( ソフトウェアリセット ) によ るリセット (RST) の発生の有無を示します。 0 ソフトウェアリセットによる RST は発生していません。 1 ソフトウェアリセットによる RST が発生しました。 ・INIT 端子入力によるリセット (INIT) または読出し直後に "0" に初期化されます。 ・読出し可能で , 書込みはビット値に影響を与えません。 111 第 3 章 CPU および制御部 [ ビット 10] LINIT (Lowvoltage detect INITialize reset occured) このビットは , LINIT 端子入力によるリセット (INIT) の発生の有無を示します。 0 LINIT 端子入力による INIT は発生していません。 1 LINIT 端子入力による INIT が発生しました。 ・LINIT 端子入力によるリセット (INIT) または読出し直後に "0" に初期化されます。 ・読出し可能で , 書込みはビット値に影響を与えません。 <注意事項> 本品種には LINIT 端子はありません。本品種では未サポートです。 [ ビット 9, ビット 8] WT1, WT0 (Watchdog interval Time select) このビットは , ウォッチドッグタイマの周期を設定します。 このビットに書き込む値によって , ウォッチドッグタイマの周期を表 3.12-1 に示す 4 種類のうちから選択します。 表 3.12-1 ウォッチドッグタイマの周期設定 WPR への最終 5AH 書込みか WT1 WT0 ウォッチドッグリセットの発 生を抑止するために最低限必 要な WPR への書込み間隔 らウォッチドッグリセットが 発生するまでの時間 0 0 φ × 216 ( 初期値 ) φ × 216 ∼ φ × 217 0 1 φ × 218 φ × 218 ∼ φ × 219 1 0 φ × 220 φ × 220 ∼ φ × 221 1 1 φ × 222 φ × 222 ∼ φ × 223 φ : システムベースクロックの周期 ・リセット (RST) により "00" に初期化されます。 ・読出し可能で , 書込みはリセット (RST) 後 1 回のみ有効です。それ以降の書込み は無効です。 112 第 3 章 CPU および制御部 ■ スタンバイ制御レジスタ (STCR) 図 3.12-3 に , スタンバイ制御レジスタ (STCR) のビット構成を示します。 図 3.12-3 スタンバイ制御レジスタ (STCR) のビット構成 7 6 5 4 3 2 1 0 ビット アドレス:00000481H STOP SLEEP HIZ SRST OS1 OS0 OSCD2 OSCD1 R/W R/W R/W R/W R/W R/W R/W R/W 0 0 1 1 0 0 1 1 初期値 (INIT 端子 ) 初期値 (HST) * 0 0 1 1 1 1 1 1 0 0 1 1 1 1 初期値 (INIT) × × 0 0 1 初期値 (RST) × × × × × * :INIT 端子による初期化と同時の場合のみ。それ以外は INIT と同じ。 スタンバイ制御レジスタ (STCR) は , デバイスの動作モードを制御するレジスタです。 ストップ , スリープの 2 つのスタンバイモードへの遷移 , ストップモード中の端子およ び発振停止制御を行うほか , 発振安定待ち時間の設定およびソフトウェアリセットの 発行を行います。 以下に , スタンバイ制御レジスタ (STCR) の各ビットの機能を説明します。 [ ビット 7] STOP (STOP mode) このビットは , ストップモードへの遷移を指示します。ビット 6 (SLEEP ビット ) と このビット両方に "1" を書き込んだ場合は , このビット (STOP) の方が優先となり , ストップモードへ遷移します。 0 ストップモードへ遷移しません ( 初期値 ) 。 1 ストップモードへ遷移します。 ・リセット (RST) およびストップ復帰要因により "0" に初期化されます。 ・読出しおよび書込みが可能です。 [ ビット 6] SLEEP (SLEEP mode) このビットは , スリープモードへの遷移を指示します。ビット 7 (STOP ビット ) と このビット両方に "1" を書き込んだ場合は , ビット 7 (STOP ビット ) の方が優先と なり , ストップモードへ遷移します。 0 スリープモードへの遷移は行いません ( 初期値 ) 。 1 スリープモードへ遷移します。 ・リセット (RST) およびスリープ復帰要因により "0" に初期化されます。 ・読出しおよび書込みが可能です。 113 第 3 章 CPU および制御部 [ ビット 5] HIZ (HIZ mode) このビットは , ストップモード時の端子状態を制御します。 0 ストップモード遷移前の端子状態を維持します。 1 ストップモード中は端子出力をハイインピーダンス状態にします ( 初期値 ) 。 ・リセット (INIT) により "1" に初期化されます。 ・読出しおよび書込みが可能です。 [ ビット 4] SRST (Software ReSeT) このビットは , ソフトウェアリセット (RST) の発行を指示します。 0 ソフトウェアリセットを発行します。 1 ソフトウェアリセットを発行しません ( 初期値 ) 。 ・リセット (RST) により "1" に初期化されます。 ・読出しおよび書込みが可能です。読出し値は , 常に "1" となります。 [ ビット 3, ビット 2] OS1, OS0 (Oscillation Stabilization time select) これらのビットは , リセット (INIT) 後およびストップモード復帰後等における , 発 振安定待ち時間を設定します。 これらのビットに書き込む値により , 発振安定待ち時間を表 3.12-2 に示す 4 種類の うちから選択します。 表 3.12-2 発振安定待ち時間の設定 OS1 OS0 発振安定待ち時間 原発振 16.5 MHz の場合 0 0 φ × 21 ( 初期値 ) 0.242 [µs] 0 1 φ × 211 248 [µs] 1 0 φ × 216 7.94 [ms] 1 1 φ × 222 508.4 [ms] φ : システムベースクロックの周期 , この場合は原発振入力の 2 倍の周期 ・INIT 端子入力によるリセット (INIT) によって , "00" に初期化されます。 ただし, INIT端子入力と HST 端子入力によるリセット (INIT) が同時に有効であっ た場合 , "11" に初期化されます。 ・読出しおよび書込みが可能です。 114 第 3 章 CPU および制御部 [ ビット 1] OSCD2 (OSCillation Disable mode for XIN2) このビットは , サブ発振入力 (XIN2) における , ストップモード時の発振停止を制御 します。 0 ストップモード中もサブ発振は停止しません。 1 ストップモード中はサブ発振を停止します ( 初期値 ) 。 ・リセット (INIT) により "1" に初期化されます。 ・読出しおよび書込みが可能です。 <注意事項> この機能は , 本品種では未サポートです。 [ ビット 0] OSCD1 (OSCillation Disable mode for XIN1) このビットは , メイン発振入力 (XIN1) における , ストップモード時の発振停止を制 御します。 0 ストップモード中もメイン発振は停止しません。 1 ストップモード中はメイン発振を停止します ( 初期値 ) 。 ・リセット (INIT) により "1" に初期化されます。 ・読出しおよび書込みが可能です。 115 第 3 章 CPU および制御部 <注意事項> スタンバイモードに入れる場合は , 同期スタンバイモード (TBCR: タイムベースカウン タ制御レジスタビット 8 SYNCS ビットにて設定します ) を使用した上で , 以下のシー ケンスを必ず使用してください。 (LDI #value_of_standby, R0) (LDI #_STCR, R12) STB R0, @R12; スタンバイ制御レジスタ (STCR) への書込み LDUB @R12, R0; 同期スタンバイのための STCR リード LDUB @R12, R0; もう一度 STCR をダミーリード ;タイミング調整用の NOP × 5 NOP NOP NOP NOP NOP • モニタデバッガを使用される場合は , 以下のことを行わないでください。 - 上記命令列に対するブレークポイントの設定 - 上記命令列に対するステップ実行 ■ タイムベースカウンタ制御レジスタ (TBCR) 図 3.12-4 に , タイムベースカウンタ制御レジスタ (TBCR) のビット構成を示します。 図 3.12-4 タイムベースカウンタ制御レジスタ (TBCR) のビット構成 ビット アドレス:00000482H 初期値 (INIT) 初期値 (RST) 15 TBIF 0 0 R/W 14 TBIE 0 0 R/W 13 TBC2 12 TBC1 11 TBC0 × × R/W × × R/W × × R/W 10 − × × R/W 9 8 SYNCR SYNCS 0 0 × R/W × R/W タイムベースカウンタ制御レジスタ (TBCR) は , タイムベースタイマ割込み等を制御 するレジスタです。 タイムベースタイマ割込みの許可 , 割込みインターバル時間の選択を行うほか , リセッ ト動作のオプション機能の設定を行います。 以下に , タイムベースカウンタ制御レジスタ (TBCR) の各ビットの機能を説明します。 [ ビット 15] TBIF (TimeBasetimer Interrupt Flag) このビットは , タイムベースタイマ割込みフラグです。タイムベースカウンタが設 定されたインターバル時間 ( ビット 13 ∼ビット 11 の TBC2 ∼ TBC0 ビットで設定 ) を経過したことを示します。 ビット 14 (TBIE ビット ) により割込み発生が許可 (TBIE=1) されているときに , この 116 第 3 章 CPU および制御部 ビットが "1" になると , タイムベースタイマ割込み要求が発生します。 クリア要因 命令による "0" の書込み セット要因 設定されたインターバル時間の経過 ( タイムベースカウンタ出力の 立下りエッジ検出 ) ・リセット (RST) により "0" に初期化されます。 読出しおよび書込みが可能です。ただし , 書込みは "0" のみ可能で , "1" を書き込ん でもビット値は変化しません。また , リードモディファイライト系命令での読出し 値は , 常に "1" となります。 [ ビット 14] TBIE (TimeBasetimer Interrupt Enable) このビットは , タイムベースタイマ割込み要求出力許可ビットです。 タイムベースカウンタのインターバル時間経過による割込み要求出力を制御しま す。このビットが "1" のときに , ビットの TBIF ビットが "1" になると , タイムベー スタイマ割込み要求が発生します。 0 タイムベースタイマ割込み要求出力禁止 ( 初期値 ) 1 タイムベースタイマ割込み要求出力許可 ・リセット (RST) により "1" に初期化されます。 ・読出しおよび書込みが可能です。 [ ビット 13 ∼ビット 11] TBC2, TBC1, TBC0 (TimeBasetimer Counting time select) これらのビットは , タイムベースタイマで使用するタイムベースカウンタのイン ターバル時間を設定します。 これらのビットに書き込む値により , インターバル時間を表 3.12-3 に示す 8 種類の うちから選択します。 表 3.12-3 インターバル時間の設定 TBC2 TBC1 TBC0 タイマインターバル時間 原発振 16.5MHz および PLL が 4 逓倍の場合 0 0 0 φ × 211 31.0 [µs] 0 0 1 φ × 212 62.0 [µs] 0 1 0 φ × 213 124.1 [µs] 0 1 1 φ × 222 63.5 [ms] 1 0 0 φ × 223 127.1 [ms] 1 0 1 φ × 224 254.2 [ms] 1 1 0 φ × 225 508.3 [ms] 1 1 1 φ × 226 1016 [ms] 117 第 3 章 CPU および制御部 φ : システムベースクロックの周期 ・初期値は不定です。割込みを許可する前に必ず値を設定してください。 ・読出しおよび書込みが可能です。 [ ビット 10] (reserved bit) このビットは , 予約ビットです。読出し値は不定で , 書込みは動作に影響を与えま せん。 [ ビット 9] SYNCR (SYNChronous Reset enable) このビットは , 同期リセット動作許可ビットです。 動作初期化リセット (RST) 要求またはハードウェアスタンバイ要求が発生した際 に , 即座にリセット (RST) またはハードウェアスタンバイ遷移を行う通常リセット 動作を行うか , すべてのバスアクセスが停止してから動作初期化リセット (RST) ま たはハードウェアスタンバイ遷移を行う同期リセット動作を行うかを選択します。 0 通常リセット動作 ( 初期値 ) 1 同期リセット動作 ・リセット (INIT) により "0" に初期化されます。 ・読出しおよび書込みが可能です。 [ ビット 8] SYNCS (SYNChronous Standby enable) このビットは , 同期スタンバイ動作許可ビットです。 スタンバイ要求 ( スリープモード要求またはストップモード要求 ) を発生する際 , STCR レジスタの制御ビットへの書込みのみでスタンバイ遷移を行う通常スタンバ イ動作を行うか , STCR レジスタの制御ビットへの書込み後に STCR レジスタを読 み出すことによってスタンバイ遷移を行う同期スタンバイ動作を行うかを選択し ます。 0 通常スタンバイ動作 ( 初期値 ) 1 同期スタンバイ動作 ・リセット (INIT) により "0" に初期化されます。 ・読出しおよび書込みが可能です。 <注意事項> スタンバイモードに遷移する際には,必ず "1" を設定し,同期スタンバイ動作としてく ださい。 118 第 3 章 CPU および制御部 ■ タイムベースカウンタクリアレジスタ (CTBR) 図 3.12-5 に , タイムベースカウンタクリアレジスタ (CTBR) のビット構成を示します。 図 3.12-5 タイムベースカウンタクリアレジスタ (CTBR) のビット構成 ビット アドレス:00000483H 7 D7 6 D6 5 D5 4 D4 3 D3 2 D2 1 D1 0 D0 初期値 (INIT) 初期値 (RST) × × W × × W × × W × × W × × W × × W × × W × × W タイムベースカウンタクリアレジスタ (CTBR) は , タイムベースカウンタを初期化す るためのレジスタです。 このレジスタに連続して {A5H}, {5AH} を書き込むと , {5AH} 書込みの直後にタイム ベースカウンタを全ビット "0" にクリアします。{A5H} 書込みと {5AH} 書込みの間の 時間は制限がありませんが , {A5H} 書込みの後に {5AH} 以外のデータを書き込むと , 再 度 {A5H} を書き込まないと {5AH} を書き込んでもクリア動作は行いません。 このレジスタの読出し値は不定です。 <注意事項> このレジスタを使用してタイムベースカウンタをクリアすると , 発振安定待ち間隔 , ウォッチドッグタイマ周期およびタイムベースタイマの周期が一時的に変動します。 119 第 3 章 CPU および制御部 ■ クロックソース制御レジスタ (CLKR) 図 3.12-6 に , クロックソース制御レジスタ (CLKR) のビット構成を示します。 図 3.12-6 クロックソース制御レジスタ (CLKR) のビット構成 15 14 13 12 11 10 9 ビット アドレス:00000484H PLL2S0 PLL1S2 PLL1S1 PLL1S0 PLL2EN PLL1EN CLKS1 R/W R/W R/W R/W R/W R/W R/W 0 0 0 0 0 0 0 初期値 (INIT) 初期値 (RST) × × × × × × × 8 CLKS0 R/W 0 × クロックソース制御レジスタ (CLKR) は , システムのベースクロックとするクロック ソースの選択や PLL の制御を行うレジスタです。このレジスタでクロックソースを 3 種類 ( 本品種では 2 種類をサポート ) のうちから選択します。また , メイン / サブ 2 系 統の PLL それぞれの動作許可および逓倍率の選択を制御します。 以下に , クロックソース制御レジスタ (CLKR) の各ビットの機能を説明します。 [ ビット 15] PLL2S0 (PLL2 ratio Select 0) このビットは , サブ PLL の逓倍率選択ビットです。サブ PLL の逓倍率を , 2 種類の うちから選択します。 このビットは , クロックソースとしてサブ PLL を選択している間は書換えを禁止し ます。 0 逓倍率設定 1 ( 初期値 ) 1 逓倍率設定 1 ・リセット (INIT) により "0" に初期化されます。 ・読出しおよび書込みが可能です。 <注意事項> この機能は , 本品種では未サポートです。 120 第 3 章 CPU および制御部 [ ビット 14 ∼ビット 12] PLL1S2, PLL1S1, PLL1S0 (PLL1 ratio Select 2 ∼ 0) これらのビットは , メイン PLL の逓倍率選択ビットです。メイン PLL の逓倍率を , 表 3.12-4 に示す 8 種類 ( 本品種では 4 種類をサポート ) のうちから選択します。 これらのビットは , クロックソースとしてメイン PLL を選択している間は書換えを 禁止します。 表 3.12-4 メイン PLL 逓倍率の設定 PLL1S2 PLL1S1 PLL1S0 メイン PLL 逓倍率 0 0 0 × 1 ( 等倍 ) 0 0 1 × 2 (2 逓倍 ) 0 1 0 × 3 (3 逓倍 ) 0 1 1 × 4 (4 逓倍 ) 1 0 0 × 5 (5 逓倍 ) 1 0 1 × 6 (6 逓倍 ) 1 1 0 × 7 (7 逓倍 ) 1 1 1 × 8 (8 逓倍 ) * : 本品種では未サポート ( 注意事項 ) φ はシステムベースクロックの周期 原発振 16.5MHz の場合 φ = 60.60 [ns] (16.5 [MHz] ) φ = 30.30 [ns] (33.0 [MHz] ) φ = 20.20 [ns] (49.5 [MHz] ) φ = 15.15 [ns] (66.0 [MHz] ) * * * * ・リセット (INIT) により "000" に初期化されます。 ・読出しおよび書込みが可能です。 <注意事項> 動作可能な上限周波数は 66MHz ですので , これを超える設定をしないでください。 [ ビット 11] PLL2EN (PLL2 ENable) このビットは , サブ PLL の動作許可ビットです。 このビットは , クロックソースとしてサブ PLL を選択している間は書換えを禁止し ます。 また , このビットが "0" の間はクロックソースとしてサブ PLL を選択することを禁 止します ( ビット 9, ビット 8 の CLKS1, CLKS0 ビットの設定による ) 。 STCR のビット (OSCD2 ビット ) が "1" であると , ストップモード中はこのビットが "1" であってもサブ PLL は停止します。ストップモードからの復帰後は動作許可に 戻ります。 0 サブ PLL 停止 ( 初期値 ) 1 サブ PLL 動作許可 ・リセット (INIT) により "0" に初期化されます。 ・読出しおよび書込みが可能です。 <注意事項> この機能は , 本品種では未サポートです。 121 第 3 章 CPU および制御部 [ ビット 10] PLL1EN (PLL1 ENable) このビットは , メイン PLL の動作許可ビットです。 このビットは , クロックソースとしてメイン PLL を選択している間は書換えを禁止 します。 また , このビットが "0" の間はクロックソースとしてメイン PLL を選択することを 禁止します ( ビット 9, ビット 8 の CLKS1, CLKS0 ビットの設定による ) 。 STCR のビット 1 (OSCD2 ビット ) が "1" であると , ストップモード中はこのビット が "1" であってもメイン PLL は停止します。ストップモードからの復帰後は動作許 可に戻ります。 0 1 メイン PLL 停止 ( 初期値 ) メイン PLL 動作許可 ・リセット (INIT) により "0" に初期化されます。 ・読出しおよび書込みが可能です。 [ ビット 9, ビット 8] CLKS1, CLKS0 (CLocK source Select) これらのビットは , MB91307 シリーズで使用するクロックソースを設定します。 これらのビットに書き込む値により , クロックソースを表 3.12-5 に示す 3 種類 ( 本 品種では 2 種類をサポート ) のうちから選択します。 表 3.12-5 クロックソースの設定 CLKS1 CLKS0 0 0 1 1 0 1 0 1 クロックソース設定 X0/X1 よりの原発振入力の 2 分周 ( 初期値 ) X0/X1 よりの原発振入力の 2 分周 メイン PLL サブ PLL* * : 本品種では未サポートです。 CLKS1, CLKS0 ビットの変更不可能な組合せおよび変更可能な組合せを , 表 3.12-6 に示します。 表 3.12-6 CLKS1, CLKS0 ビットの変更不可能 / 変更可能な組合せ 変更不可能な組合せ 変更可能な組合せ "00" → "11" "01" → "10" "10" → "01" または "11" "11" → "00" または "10" "00" → "01" または "10" "01" → "11" または "00" "10" → "00" "11" → "01" なお , ビット 9 (CLKS1) が "1" の間はビット 8 (CLKS0) の値を変更することはでき ません。このため , INIT 後の状態からサブ PLL を選択したい場合は , まず "01" を書 き込んだ後に , "11" を書き込むようにしてください ("11" の設定は , 本品種では未サ ポートです ) 。 ・リセット (INIT) により "00" に初期化されます。 ・読出しおよび書込みが可能です。 122 第 3 章 CPU および制御部 ■ ウォッチドッグリセット発生延期レジスタ (WPR) 図 3.12-7 に , ウォッチドッグリセット発生延期レジスタ (WPR) のビット構成を示しま す。 図 3.12-7 ウォッチドッグリセット発生延期レジスタ (WPR) のビット構成 7 D7 W × × ビット アドレス:00000485H 初期値 (INIT) 初期値 (RST) 6 D6 W × × 5 D5 W × × 4 D4 W × × 3 D3 W × × 2 D2 W × × 1 D1 W × × 0 D0 W × × ウォッチドッグリセット発生延期レジスタ (WPR) は , ウォッチドッグリセットの発生 を延期するためのレジスタです。このレジスタに連続して {A5H}, {5AH} を書き込むと , {5AH} 書込みの直後にウォッチドッグタイマの検出用 FF をクリアし , ウォッチドッグ リセットの発生を延期します。{A5H} 書込みと {5AH} 書込みの間の時間は制限があり ません。しかし , {A5H} 書込みの後に {5AH} 以外のデータを書き込むと , 再度 {A5H} を書き込まないと {5AH} を書き込んでもクリア動作は行いません。また , 表 3.12-7 に 示す期間内に両データの書込みを終えないとウォッチドッグリセットを発生します。 RSRR レジスタのビット 9 (WT1) , ビット 8 (WT0) の状態により表 3.12-7 に示すように 変化します。 表 3.12-7 ウォッチドッグリセット発生の設定 RSRR のウォッチドッグリセッ トの発生を抑止するために最低 限必要な WPR への書込み間隔 WPR への最終 5AH 書込みから WT1 WT0 0 0 0 1 φ × 218 φ × 218 ∼ φ × 219 1 0 φ × 220 φ × 220 ∼ φ × 221 1 1 φ × 222 φ × 222 ∼ φ × 223 φ × 216 ( 初期値 ) ウォッチドッグリセットが発生 するまでの時間 φ × 216 ∼ φ × 217 ( 注意事項 ) φ はシステムベースクロックの周期 , WT1, WT0 は RSRR のビット 9, ビッ ト 8 でウォッチドッグタイマ周期設定 外部バスのホールド要求 (BRQ) が受け付けられている場合にはウォッチドッグリセッ トは延期されませんので , 長期間外部バスをホールドする場合は , スリープモードにし てからホールド要求 (BRQ) を入力してください。 このレジスタの読出し値は不定です。 123 第 3 章 CPU および制御部 ■ 基本クロック分周設定レジスタ 0 (DIVR0) 図 3.12-8 に , 基本クロック分周設定レジスタ 0 (DIVR0) のビット構成を示します。 図 3.12-8 基本クロック分周設定レジスタ 0 (DIVR0) のビット構成 ビット アドレス:00000486H 初期値 (INIT) 初期値 (RST) 7 B3 R/W 0 6 B2 R/W 0 5 B1 R/W 0 4 B0 R/W 0 3 P3 R/W 0 2 P2 R/W 0 1 P1 R/W 1 0 P0 R/W 1 × × × × × × × × 基本クロック分周設定レジスタ0 (DIVR0) は, 各内部クロックのベースクロックに対す る分周比を制御するレジスタです。このレジスタでは , CPU および内部バスのクロッ ク (CLKB) と , 周辺回路およびペリフェラルバスクロック (CLKP) の分周比を設定しま す。 各クロックには , 動作可能な上限周波数が規定されています。ソースクロックの選択 , PLLの逓倍率の設定, 分周比の設定の組合せで, 上限周波数を超える設定をした場合は, 動作が保証されませんので , 注意してください。ソースクロック選択の変更設定との順 序を間違えないように注意してください。 このレジスタの設定に変更があった場合 , 設定後の次のクロックレートから変更後の 分周比が有効となります。 [ ビット 7 ∼ビット 4] B3, B2, B1, B0 (clkB divide select 3 ∼ 0) これらのビットは , CPU クロック (CLKB) のクロック分周比設定ビットです。CPU と内部メモリおよび内部バスのクロック (CLKB) のクロック分周比を設定します。 このビットに書き込む値により , CPU および内部バスのクロックのベースクロック に対する分周比 ( クロック周波数 ) を , 表 3.12-8 に示す 16 種類のうちから選択しま す。 動作可能な上限周波数は 66MHzですので , これを超える周波数になる分周比は設定 しないでください。 表 3.12-8 クロック分周比 (CPU クロック ) の設定 クロック周波数 : 原発振 16.5 [MHz] および PLL4 逓倍の場合 0 0 0 0 φ 66 [MHz] ( 初期値 ) 0 0 0 1 33 [MHz] φ × 2 (2 分周 ) 0 0 1 0 22 [MHz] φ × 3 (3 分周 ) 0 0 1 1 16.5 [MHz] φ × 4 (4 分周 ) 0 1 0 0 13.2 [MHz] φ × 5 (5 分周 ) 0 1 0 1 11 [MHz] φ × 6 (6 分周 ) 0 1 1 0 9.43 [MHz] φ × 7 (7 分周 ) 0 1 1 1 8.25 [MHz] φ × 8 (8 分周 ) … … … … … … 1 1 1 1 4.13 [MHz] φ × 16 (16 分周 ) ( 注意事項 ) φ はシステムベースクロックの周期 B3 B2 B1 B0 クロック分周比 ・リセット (INIT) により "0000" に初期化されます。 ・読出しおよび書込みが可能です。 124 第 3 章 CPU および制御部 [ ビット 3 ∼ビット 0] P3, P2, P1, P0 (clkP divide select 3 ∼ 0) これらのビットは , 周辺クロック (CLKP) のクロック分周比設定ビットです。周辺 回路およびペリフェラルバスのクロック (CLKP) のクロック分周比を設定します。 このビットに書き込む値により , 周辺回路およびペリフェラルバスのクロックの ベースクロックに対する分周比 ( クロック周波数 ) を , 表 3.12-9 に示す 16 種類のう ちから選択します。 表 3.12-9 クロック分周比 ( 周辺クロック ) の設定 P3 P2 P1 P0 0 0 0 0 クロック分周比 φ φ × 2 (2 分周 ) φ × 3 (3 分周 ) φ × 4 (4 分周 ) φ × 5 (5 分周 ) φ × 6 (6 分周 ) φ × 7 (7 分周 ) φ × 8 (8 分周 ) … … … … … 1 1 1 1 φ × 16 (16 分周 ) * :33MHz 以上になるので設定禁止 ( 注意事項 ) φ はシステムベースクロックの周期 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 1 0 1 0 1 クロック周波数 : 原発振 16.5 [MHz] および PLL4 逓 倍の場合 66 [MHz] * 33 [MHz] 22 [MHz] 16.5 [MHz] ( 初期値 ) 13.2 [MHz] 11 [MHz] 9.43 [MHz] 8.25 [MHz] … 4.13 [MHz] ・リセット (INIT) により "0011" に初期化されます。 ・読出しおよび書込みが可能です。 <注意事項> 動作可能な上限周波数は 33MHz ですので , これを超える周波数になる分周比は設定し ないでください。 125 第 3 章 CPU および制御部 ■ 基本クロック分周設定レジスタ 1 (DIVR1) 図 3.12-9 に , 基本クロック分周設定レジスタ 1 (DIVR1) のビット構成を示します。 図 3.12-9 基本クロック分周設定レジスタ 1 (DIVR1) のビット構成 7 6 5 4 3 2 1 ビット アドレス:00000487H T3 T2 T1 T0 S3 S2 S1 R/W R/W R/W R/W R/W R/W R/W 0 0 0 0 0 0 0 初期値 (INIT) 初期値 (RST) × × × × × × × 0 S0 R/W 0 × 基本クロック分周設定レジスタ 1 (DIVR1) は , 各内部クロックの , ベースクロックに対 する分周比を制御するレジスタです。このレジスタでは , 外部拡張バスインタフェース のクロック (CLKT) と , SDRAM インタフェースのクロック (CLKS) の分周比の設定を 行います。各クロックには , 動作可能な上限周波数が規定されています。ソースクロッ クの選択 , PLL の逓倍率の設定 , 分周比の設定の組合せで , 上限周波数を超える設定を した場合は , 動作は保証されませんので注意してください。ソースクロック選択の変更 設定との順序を間違えないように注意してください。 このレジスタの設定に変更があった場合 , 設定後の次のクロックレートから変更後の 分周比が有効となります。 [ ビット 7 ∼ビット 4] T3, T2, T1, T0 (clkT divide select 3 ∼ 0) これらのビットは, 外部バスクロック (CLKT) のクロック分周比設定ビットです。外 部拡張バスインタフェースのクロック (CLKT) のクロック分周比を設定します。こ のビットに書き込む値により , 外部拡張バスインタフェースのクロックの , ベース クロックに対する分周比 ( クロック周波数 ) を , 表 3.12-10 に示す 16 種類のうちか ら選択します。 表 3.12-10 クロック分周比 ( 外部バスクロック ) の設定 クロック周波数 : 原発振 16.5 [MHz] および PLL4 逓倍の場合 T3 T2 T1 T0 0 0 0 0 φ 66 [MHz] * ( 初期値 ) 0 0 0 1 φ × 2 (2 分周 ) 33 [MHz] 0 0 1 0 φ × 3 (3 分周 ) 22 [MHz] 0 0 1 1 φ × 4 (4 分周 ) 16.5 [MHz] 0 1 0 0 φ × 5 (5 分周 ) 13.2 [MHz] 0 1 0 1 φ × 6 (6 分周 ) 11 [MHz] 0 1 1 0 φ × 7 (7 分周 ) 9.43 [MHz] 0 1 1 1 φ × 8 (8 分周 ) 8.25 [MHz] … … … … 1 1 1 1 クロック分周比 … φ × 16 (16 分周 ) … 4.13 [MHz] * :33MHz 以上になるので設定禁止 ( 注意事項 ) φ はシステムベースクロックの周期 ・リセット (INIT) により "0000" に初期化されます。 ・読出しおよび書込みが可能です。 126 第 3 章 CPU および制御部 <注意事項> 動作可能な上限周波数は 33MHz ですので , これを超える周波数になる分周比は設定し ないでください。 [ ビット 3 ∼ビット 0] S3, S2, S1, S0 (clkS divide select 3 ∼ 0) この機能は , 本品種ではサポートしていません。 これらのビットは , SDRAM クロック (CLKS) のクロック分周比設定ビットです。 SDRAM インタフェースのクロック (CLKS) のクロック分周比を設定します。この ビットに書き込む値により, SDRAM インタフェースのクロックの , ベースクロック に対する分周比 ( クロック周波数 ) を , 表 3.12-11 に示す 16 種類のうちから選択し ます。 表 3.12-11 クロック分周比 (SDRAM クロック ) の設定 クロック周波数 : 原発振 16.5 [MHz] および PLL4 逓倍の場合 S3 S2 S1 S0 0 0 0 0 φ 66 [MHz] ( 初期値 ) 0 0 0 1 φ × 2 (2 分周 ) 33 [MHz] 0 0 1 0 φ × 3 (3 分周 ) 22 [MHz] 0 0 1 1 φ × 4 (4 分周 ) 16.5 [MHz] 0 1 0 0 φ × 5 (5 分周 ) 13.2 [MHz] 0 1 0 1 φ × 6 (6 分周 ) 11 0 1 1 0 φ × 7 (7 分周 ) 9.43 [MHz] 0 1 1 1 φ × 8 (8 分周 ) 8.25 [MHz] … … … … … … 1 1 1 1 φ × 16 (16 分周 ) 4.13 [MHz] クロック分周比 [MHz] ( 注意事項 ) φ はシステムベースクロックの周期 ・リセット (INIT) により "0000" に初期化されます。 ・読出しおよび書込みが可能です。 <注意事項> 動作可能な上限周波数は 66MHz ですので , これを超える周波数になる分周比は設定し ないでください。 127 第 3 章 CPU および制御部 ■ CLKB クロックを分周する場合の注意点 • CLKB クロックを分周する場合は必ず , PLL を ON (CLKR レジスタのビット 10 (PLL1EN='1)) にしてから , DIVR0 レジスタを設定してください。 • DIVR0 と DIVR1 レジスタは , 同時に書込み ( ハーフワード書込み ) してください。 • CLKT クロックは , 必ず CLKB と同じ分周比か , CLKB クロックの整数倍にしてくだ さい。 DIVR0 (B3 ∼ B0) , DIVR1 (T3 ∼ T0) レジスタの設定可能な組合せを表 3.12-12 に示し ます。 表 3.12-12 DIVR0(B3 ∼ B0), DIVR1(T3 ∼ T0) レジスタの設定可能な組合せ (1 / 2) 128 DIVR0 (B3 ∼ B0) DIVR1 (T3 ∼ T0) Divide CLKB:CLKT 備考 0000 0001 0001 0001 0001 0001 0001 0001 0001 0001 0010 0010 0010 0010 0010 0010 0010 0010 0010 0011 0011 0011 0011 0011 0011 0011 0011 0011 0100 0100 0100 0100 0100 0100 0100 0100 0100 0101 XXXX 0000 0001 0010 0011 0100 0101 0110 0111 1111 0000 0001 0010 0011 0100 0101 0110 0111 1111 0000 0001 0010 0011 0100 0101 0110 0111 1111 0000 0001 0010 0011 0100 0101 0110 0111 1111 0000 1:X 2:1 2:2 2:3 2:4 2:5 2:6 2:7 2:8 2:16 3:1 3:2 3:3 3:4 3:5 3:6 3:7 3:8 3:16 4:1 4:2 4:3 4:4 4:5 4:6 4:7 4:8 4:16 5:1 5:2 5:3 5:4 5:5 5:6 5:7 5:8 5:16 6:1 設定可能 NG 設定可能 NG 設定可能 NG 設定可能 NG 設定可能 設定可能 NG NG 設定可能 NG NG 設定可能 NG NG NG NG NG NG 設定可能 NG NG NG 設定可能 設定可能 NG NG NG NG 設定可能 NG NG NG NG NG 第 3 章 CPU および制御部 表 3.12-12 DIVR0(B3 ∼ B0), DIVR1(T3 ∼ T0) レジスタの設定可能な組合せ (2 / 2) DIVR0 (B3 ∼ B0) DIVR1 (T3 ∼ T0) Divide CLKB:CLKT 備考 0101 0101 0101 0101 0101 0101 0101 0101 0110 0110 0110 0110 0110 0110 0110 0110 0110 0111 0111 0111 0111 0111 0111 0111 0111 0111 1111 1111 1111 1111 1111 1111 1111 1111 1111 0001 0010 0011 0100 0101 0110 0111 1111 0000 0001 0010 0011 0100 0101 0110 0111 1111 0000 0001 0010 0011 0100 0101 0110 0111 1111 0000 0001 0010 0011 0100 0101 0110 0111 1111 6:2 6:3 6:4 6:5 6:6 6:7 6:8 6:16 7:1 7:2 7:3 7:4 7:5 7:6 7:7 7:8 7:16 8:1 8:2 8:3 8:4 8:5 8:6 8:7 8:8 8:16 16:1 16:2 16:3 16:4 16:5 16:6 16:7 16:8 16:16 NG NG NG NG 設定可能 NG NG NG NG NG NG NG NG NG 設定可能 NG NG NG NG NG NG NG NG NG 設定可能 設定可能 NG NG NG NG NG NG NG NG 設定可能 ( 注意事項 ) X は , "1" または "0" CLKB クロックを分周している場合に STOP モードに遷移するときは , 必ず , すべての 分周比を "1" にしたのち , 2 分周モード (CLKR レジスタのビット 9, ビット 8 (CLKS1, CLKS0="00") に設定した状態から STOP モードへ遷移させてください。 129 第 3 章 CPU および制御部 3.12.7 クロック制御部が持つ周辺回路 クロック制御部が持つ周辺回路機能について説明します。 ■ タイムベースカウンタ クロック制御部には , 26 ビット長のタイムベースカウンタがあり , システムベースク ロックで動作しています。 タイムベースカウンタは , 発振安定待ち時間の計測のほか , 以下の用途に使用されます ( 発振安定待ち時間の詳細については , 「3.11.4 発振安定待ち時間」を参照してくださ い)。 • ウォッチドッグタイマ システムの暴走検出用のウォッチドッグタイマを , タイムベースカウンタのビット 出力を用いて計測します。 • タイムベースタイマ タイムベースカウンタ出力を用いて , インターバル割込みを発生します。 以下に , これらの機能について説明します。 ● ウォッチドッグタイマ ウォッチドッグタイマは , タイムベースカウンタ出力を用いた暴走検出用タイマです。 プログラムの暴走などで設定したインターバルの間にウォッチドッグリセットの発生 延期動作が行われなくなると , ウォッチドッグリセットとして設定初期化リセット (INIT) 要求を発生します。 【ウォッチドッグタイマの起動と周期設定】 ウォッチドッグタイマは , リセット (RST) 後の 1 回目のリセット要因レジスタ / ウォッ チドッグタイマ制御レジスタ (RSRR) への書込み動作により起動します。このとき , ウォッチドッグタイマのインターバル時間をビット 09, ビット 08 (WT1, WT0 ビット ) により設定します。インターバル時間の設定は , この最初の書込みで設定した時間のみ が有効となり , それ以降の書込みはすべて無視されます。 【ウォッチドッグリセットの発生延期】 一度ウォッチドッグタイマを起動すると , プログラムで定期的にウォッチドッグリ セット発生延期レジスタ (WPR) に対して {A5H}, {5AH} の順でデータを書き込む必要 があります。この操作により , ウォッチドッグリセット発生用フラグが初期化されま す。 【ウォッチドッグリセットの発生】 ウォッチドッグリセット発生用フラグは , 設定したインターバルのタイムベースカウ ンタ出力の立下りエッジによってセットされます。2 度目の立下りエッジの検出時にフ ラグがセットされていると , ウォッチドッグリセットとして設定初期化リセット (INIT) 要求を発生します。 130 第 3 章 CPU および制御部 【ウォッチドッグタイマの停止】 一度ウォッチドッグタイマを起動すると , 動作初期化リセット (RST) が発生するまで は , ウォッチドッグタイマを停止することはできません。 動作初期化リセット (RST) の発生する以下の状態では , ウォッチドッグタイマは停止 し , 再度プログラム動作で起動するまでは , 機能しません。 • 動作初期化リセット (RST) 状態 • 設定初期化リセット (INIT) 状態 • 発振安定待ちリセット (RST) 状態 • ハードウェアスタンバイ状態 【ウォッチドッグタイマの一時停止 ( 自動発生延期 ) 】 ウォッチドッグタイマは , CPU のプログラム動作が停止している場合には一度ウォッ チドッグリセット発生用フラグを初期化し , ウォッチドッグリセットの発生を延期し ます。プログラム動作の停止とは , 具体的には以下の動作を示します。 • スリープ状態 • ストップ状態 • 発振安定待ち RUN 状態 • 命令バス (I-bus) またはデータバス (D-bus) のどちらかに対する DMA 転送中 • エミュレータデバッガ , モニタデバッガを使用中のブレーク中 • INTE 命令の実行から RETI 命令の実行までの期間 • ステップトレーストラップ (PS レジスタの Tフラグ =1による 1 命令ごとのブレーク) • 命令キャッシュ制御レジスタ (ISIZE, ICHCR), RAM モード時のキャッシュメモリへ のデータアクセス中 また , タイムベースカウンタをクリアすると , 同時にウォッチドッグリセット発生用フ ラグも初期化され , ウォッチドッグリセットの発生が延期されます。 なお , システムの暴走により上記状態となってしまった場合 , ウォッチドッグリセット が発生しない可能性があります。その場合 , 外部 INIT 端子よりリセット (INIT) をかけ てください。 ■ タイムベースタイマ タイムベースタイマは , タイムベースカウンタ出力を用いたインターバル割込み発生 用タイマです。PLL のロック待ち時間やサブクロック等の発振安定待ち時間など , 最 大で { ベースクロック× 227} サイクルまでの , 比較的長時間の時間計測をする用途に 適しています。 設定したインターバルに対応するタイムベースカウンタの出力の立下りエッジを検出 すると , タイムベースタイマ割込み要求を発生します。 【タイムベースタイマの起動とインターバル設定】 タイムベースタイマは , タイムベースカウンタ制御レジスタ (TBCR) のビット 13 ∼ ビット 11 (TBC2, TBC1, TBC0 ビット ) でインターバル時間を設定します。設定したイ ンターバルに対応するタイムベースカウンタの出力の立下りエッジは常に検出されて いるため , インターバル時間の設定後は , まず , ビット 15 (TBIF ビット ) をクリアして から , ビット 14 (TBIE ビット ) を "1" にして割込み要求出力を許可してください。 インターバル時間を変更する際は , あらかじめビット 14 (TBIE ビット ) を "0" にして割 131 第 3 章 CPU および制御部 込み要求出力を禁止しておいてください。 タイムベースカウンタはこれらの設定に影響されず常にカウント動作をしていますの で , 正確なインターバル割込み時間を得るためには , 割込みを許可する前にタイムベー スカウンタをクリアしてください。そうしないと , 割込み許可直後に割込み要求が発生 することがあります。 【プログラムによるタイムベースカウンタのクリア】 タイムベースカウンタクリアレジスタ (CTBR) に対して {A5H}, {5AH} の順でデータを 書き込むと , {5AH} 書込みの直後に , タイムベースカウンタを全ビット "0" にクリアし ます。{A5H} 書込みと {5AH} 書込みの間の時間は制限がありませんが , {A5H} 書込み の後に {5AH} 以外のデータを書き込むと , 再度 {A5H} を書き込まないと {5AH} を書き 込んでもクリア動作は行いません。 このタイムベースカウンタをクリアすることにより , 同時にウォッチドッグリセット 発生用フラグも初期化され , ウォッチドッグリセットの発生が一度延期されます。 【デバイス状態によるタイムベースカウンタのクリア】 タイムベースカウンタは , 以下のデバイス状態の遷移時に , 同時に全ビット "0" にクリ アされます。 • ストップ状態 • 設定初期化リセット (INIT) 状態 • ハードウェアスタンバイ状態 特にストップ状態の場合 , 発振安定待ち時間の計測のためにタイムベースカウンタが 使用されるため , 意図せずにタイムベースタイマのインターバル割込みが発生してし まうことがあります。そのため , ストップモードを設定する前には , タイムベースタイ マ割込みを禁止し , タイムベースタイマを使用しないようにしてください。 それ以外の状態については , 動作初期化リセット (RST) が発生するため , タイムベース タイマ割込みは自動的に禁止されます。 132 第 3 章 CPU および制御部 3.13 デバイス状態制御 MB91307 シリーズの各種状態とその制御 , および低消費電力モードについて説明し ます。 ■ デバイス状態 MB91307 シリーズの動作状態には以下のものがあります。 これらの詳細については , 「3.13.1 デバイス状態と各遷移」で説明します。 • RUN 状態 ( 通常動作 ) • スリープ状態 • ストップ状態 • ハードウェアスタンバイ状態 • 発振安定待ち RUN 状態 • 発振安定待ちリセット (RST) 状態 • 動作初期化リセット (RST) 状態 • 設定初期化リセット (INIT) 状態 ■ 低消費電力モード 低消費電力モードには以下の 2 つがあります。 これらの詳細については , 「3.13.2 低消費電力モード」で説明します。 • スリープモード • ストップモード 133 第 3 章 CPU および制御部 3.13.1 デバイス状態と各遷移 デバイスの動作状態と , 各動作状態間の遷移について説明します。 ■ RUN 状態 ( 通常動作 ) この状態は , プログラム実行状態です。すべての内部クロックが供給され , すべての回 路が動作可能な状態です。 ただし , 16 ビット周辺 ( ペリフェラル ) バスのみは , アクセスされていない期間はバス クロックのみ停止しています。 この状態では , 各状態の遷移要求を受け付けますが , 同期リセットモードを選択してい る場合 , 通常リセットモードの場合と一部要求に対する状態遷移動作が異なります。詳 細については , 「3.11.5 リセット動作モード」の「■同期リセット動作」を参照してく ださい。 ■ スリープ状態 この状態は , プログラム停止状態です。プログラム動作により遷移します。 CPU のプログラム実行のみ停止し , 周辺回路は動作可能な状態です。命令キャッシュ は停止し , 各種内蔵メモリおよび内部 / 外部バスは DMA コントローラが要求しない限 り停止状態です。 • 有効な割込み要求の発生により , この状態は解除され , RUN 状態 ( 通常動作 ) へ遷 移します。 • 設定初期化リセット (INIT) 要求の発生により , 設定初期化リセット (INIT) 状態へ遷 移します。 • 動作初期化リセット (RST) 要求の発生により , 動作初期化リセット (RST) 状態へ遷 移します。 • ハードウェアスタンバイ要求の発生により , ハードウェアスタンバイ状態に遷移し ます。 ■ ストップ状態 この状態は , デバイス停止状態です。プログラム動作により遷移します。 すべての内部回路が停止します。内部クロックはすべて停止し , 発振回路および PLL は設定により停止させることができます。 また , 設定により , 外部端子を一律にハイインピーダンスにすることができます ( 一部 端子を除く ) 。 • 特定の ( クロックを必要としない ) 有効な割込み要求の発生により , 発振安定待ち RUN 状態へ遷移します。 • 設定初期化リセット (INIT) 要求の発生により , 設定初期化リセット (INIT) 状態へ遷 移します。 • 動作初期化リセット (RST) 要求の発生により , 発振安定待ちリセット (RST) 状態へ 遷移します。 • ハードウェアスタンバイ要求の発生により , ハードウェアスタンバイ状態に遷移し ます。 134 第 3 章 CPU および制御部 ■ ハードウェアスタンバイ状態 この状態は , デバイス停止状態です。外部 HST 端子への "L" レベル入力 ( ハードウェ アスタンバイ要求 ) により遷移します。すべての内部回路が停止します。内部クロッ クはすべて停止し , 発振回路および PLL も停止します。 • 内部回路には , 設定初期化リセット (INIT) が供給されます。 • 外部端子は一律ハイインピーダンスになります ( 一部端子を除く ) 。 • 外部 HST 端子への "H" レベル入力または外部 INIT 端子への "L" レベル入力により , 設定初期化リセット (INIT) 状態へ遷移します。 ■ 発振安定待ち RUN 状態 この状態は , デバイス停止状態です。ストップ状態からの復帰後に遷移します。 クロック発生制御部 (タイムベースカウンタおよびデバイス状態制御部) を除くすべて の内部回路が停止します。内部クロックはすべて停止しますが , 発振回路および動作許 可されていた PLL は動作しています。 • ストップ状態等での外部端子のハイインピーダンス制御は解除されます。 • 設定された発振安定待ち時間の経過により , RUN 状態 ( 通常動作 ) へ遷移します。 • 設定初期化リセット (INIT) 要求の発生により , 設定初期化リセット (INIT) 状態へ遷 移します。 • 動作初期化リセット (RST) 要求の発生により , 発振安定待ちリセット (RST) 状態へ 遷移します。 • ハードウェアスタンバイ要求の発生により , ハードウェアスタンバイ状態に遷移し ます。 ■ 発振安定待ちリセット (RST) 状態 この状態は , デバイス停止状態です。ストップ状態 , または設定初期化リセット (INIT) 状態からの復帰後に遷移します。クロック発生制御部 ( タイムベースカウンタおよび デバイス状態制御部 ) を除くすべての内部回路が停止します。内部クロックはすべて 停止しますが , 発振回路および動作許可されていた PLL は動作しています。 • ストップ状態等での外部端子のハイインピーダンス制御は解除されます。 • 内部回路に対し , 動作初期化リセット (RST) を出力します。 • 設定された発振安定待ち時間の経過により , 発振安定待ちリセット (RST) 状態へ遷 移します。 • 設定初期化リセット (INIT) 要求の発生により , 設定初期化リセット (INIT) 状態へ遷 移します。 • ハードウェアスタンバイ要求の発生により , ハードウェアスタンバイ状態に遷移し ます。 135 第 3 章 CPU および制御部 ■ 動作初期化リセット (RST) 状態 この状態は , プログラム初期化状態です。動作初期化リセット (RST) 要求の受付け , ま たは発振安定待ちリセット (RST) 状態の終了により遷移します。 CPU のプログラム実行は停止し , プログラムカウンタは初期化されます。周辺回路は 一部を除き初期化されます。すべての内部クロックと発振回路および動作許可されて いた PLL は動作しています。 • 内部回路に対し , 動作初期化リセット (RST) を出力します。 • 動作初期化リセット (RST) 要求の消失により , RUN 状態 ( 通常動作 ) へ遷移し , 動 作初期化リセットシーケンスを実行します。設定初期化リセット (INIT) 状態からの 復帰後だった場合は , 設定初期化リセットシーケンスを実行します。 • 設定初期化リセット (INIT) 要求の発生により , 設定初期化リセット (INIT) 状態へ遷 移します。 • ハードウェアスタンバイ要求の発生により , ハードウェアスタンバイ状態に遷移し ます。 ■ 設定初期化リセット (INIT) 状態 この状態は , 全設定初期化状態です。設定初期化リセット (INIT) 要求の受付け , または ハードウェアスタンバイ状態の終了により遷移します。 CPU のプログラム実行は停止し , プログラムカウンタは初期化されます。周辺回路は すべて初期化されます。発振回路は動作しますが , PLL は動作を停止します。すべて の内部クロックは , 外部 INIT 端子への "L" レベル入力期間は停止しますが , それ以外 では動作します。 • 内部回路に対し , 設定初期化リセット (INIT) および動作初期化リセット (RST) を出 力します。 • 設定初期化リセット (INIT) 要求の消失によりこの状態は解除され , 発振安定待ちリ セット (RST) 状態へ遷移します。その後 , 動作初期化リセット (RST) 状態を経て , 設 定初期化リセットシーケンスを実行します。 ■ 各状態遷移要求の優先順位 どの状態においても , 各状態遷移要求は以下の優先順位に従います。ただし , 一部の要 求は特定の状態でしか発生しませんので , その状態でしか有効になりません。 【最も高い】設定初期化リセット (INIT) 要求 ↓ ハードウェアスタンバイ要求 ↓ 発振安定待ち時間の終了 ( 発振安定待ちリセット状態および発振安定待 ち RUN 状態のみ発生 ) ↓ 動作初期化リセット (RST) 要求 ↓ 有効な割込み要求 (RUN, スリープ , ストップ状態のみ発生 ) ↓ ストップモード要求 ( レジスタ書込み ) (RUN 状態のみ発生 ) 【最も低い】スリープモード要求 ( レジスタ書込み ) (RUN 状態のみ発生 ) 136 第 3 章 CPU および制御部 3.13.2 低消費電力モード MB91307 シリーズの状態のうち , 各低消費電力モードとその使用方法について説明 します。 ■ 低消費電力モード MB91307 シリーズの低消費電力モードには , 以下のものがあります。 • スリープモード : レジスタ書込みにより , デバイスをスリープ状態へ遷移させます。 • ストップモード : レジスタ書込みにより , デバイスをストップ状態へ遷移させます。 • ハードウェアスタンバイモード : 外部 HST 端子への "L" レベル入力により , デバイ スをハードウェアスタンバイ状態へ遷移させます。 以下に , 各モードについて説明します。 ■ スリープモード スタンバイ制御レジスタ (STCR) のビット 6 (SLEEP ビット ) に "1" を書き込むとスリー プモードとなり , スリープ状態へ遷移します。以降 , スリープ状態からの復帰要因が発 生するまでは , スリープ状態を維持します。 スタンバイ制御レジスタ (STCR) のビット 7 (STOP ビット ) と本ビット両方に "1" を書 き込んだ場合は , ビット 7 (STOP ビット ) の方が優先となり , ストップ状態へ遷移しま す。 スリープ状態については , 「3.13.1 デバイス状態と各遷移」の「■スリープ状態」も参 照してください。 ● スリープ状態で停止する回路 • CPU のプログラム実行 • 命令キャッシュ • データキャッシュ • ビットサーチモジュール (DMA 転送が発生した場合は動作します。) • 各種内蔵メモリ (DMA 転送が発生した場合は動作します。) • 内部 / 外部バス (DMA 転送が発生した場合は動作します。) ● スリープ状態で停止しない回路 • 発振回路 • 動作許可された PLL • クロック発生制御部 • 割込みコントローラ • 周辺回路 • DMA コントローラ 137 第 3 章 CPU および制御部 ● スリープ状態からの復帰要因 • 有効な割込み要求の発生 CPU の ILM で設定したレベルより高い割込み要求が発生すると , スリープモードは 解除され , RUN 状態 ( 通常動作 ) へ遷移します。CPU の ILM で設定したレベル以下 の割込み要求が発生しても , スリープモードは解除されません。 • 設定初期化リセット (INIT) 要求の発生 設定初期化リセット (INIT) 要求が発生すると , 無条件で設定初期化リセット (INIT) 状態へ遷移します。 • ハードウェアスタンバイ要求の発生 ハードウェアスタンバイ要求が発生すると , 無条件でハードウェアスタンバイ状態 に遷移します。 • 動作初期化リセット (RST) 要求の発生 動作初期化リセット (RST) 要求が発生すると , 無条件で動作初期化リセット (RST) 状態へ遷移します。 各要因の優先順位については , 「3.13.1 デバイス状態と各遷移」の「■各状態遷移要求 の優先順位」を参照してください。 ● 通常スタンバイ動作と同期スタンバイ動作 タイムベースカウンタ制御レジスタ (TBCR) のビット 8 (SYNCS ビット ) に "1" が設定 されている場合 , 同期スタンバイ動作が許可されます。この場合 , SLEEP ビットへの書 込みのみではスリープ状態へは遷移しません。その後 , STCR レジスタを読み出すこと によってスリープ状態へ遷移します。 SYNCS ビットに "0" が設定されている場合は , 通常スタンバイ動作となり , SLEEP ビッ トへの書込みのみでスリープ状態へ遷移します。 通常スタンバイ動作時は , CPU クロック (CLKB) に対して周辺クロック (CLKP) の分周 比が大きく設定してあると , 実際に SLEEP ビットへの書込みが行われるまでに多くの 命令を実行してしまいます。このため , SLEEP ビットへの書込み命令の後 , 最低でも {5+ (CPU クロックの分周比 / 周辺クロックの分周比 ) } 命令以上の NOP 命令を配置し なければ , それ以降の命令がスリープ状態への遷移前に実行されてしまいます。 同期スタンバイ動作時は , 実際に SLEEP ビットへの書込みが行われた後 , STCR レジス タの読出しが完了するまではスリープ状態へ遷移しません。STCR レジスタの読出し値 が CPU に格納されるまでは , CPU がバスを使用しているためです。このため , CPU ク ロック (CLKB) と周辺クロック (CLKP) の分周比の関係がいかなる設定においても , SLEEP ビットへの書込み命令と STCR レジスタの読出し命令の後に , 2 命令のみ NOP 命令を配置するのみで , それ以降の命令がスリープ状態への遷移前に実行されること を防ぐことができます。 138 第 3 章 CPU および制御部 ■ ストップモード スタンバイ制御レジスタ (STCR) のビット 7 (STOP ビット ) に "1" を書き込むとストッ プモードとなり , ストップ状態へ遷移します。以降 , ストップ状態からの復帰要因が発 生するまでは , ストップ状態を維持します。 スタンバイ制御レジスタ (STCR) のビット 6 (SLEEP ビット ) と本ビット両方に "1" を 書き込んだ場合は , ビット 7 (STOP ビット ) の方が優先となり , ストップ状態へ遷移し ます。 ストップ状態については , 「3.13.1 デバイス状態と各遷移」の「■スリープ状態」も参 照してください。 ● ストップ状態で停止する回路 • 停止するよう設定された発振回路 スタンバイ制御レジスタ (STCR) のビット 1 (OSCD2 ビット ) に "1" が設定されてい るとき , ストップ状態中のサブクロック用発振回路を停止状態にします。スタンバ イ制御レジスタ (STCR) のビット 0 (OSCD1 ビット ) に "1" が設定されているとき , ストップ状態中のメインクロック用発振回路を停止状態にします。 • 動作許可されていないか , 停止するよう設定された発振回路に接続された PLL スタンバイ制御レジスタ (STCR) のビット 1 (OSCD2 ビット ) に "1" が設定されてい るとき , クロックソース制御レジスタ (CLKR) のビット 11 (PLL2EN ビット ) に "1" が設定されていても , ストップ状態中のサブクロック用 PLL を停止状態にします。 スタンバイ制御レジスタ (STCR) のビット 0 (OSCD1 ビット ) に "1" が設定されてい るとき , クロックソース制御レジスタ (CLKR) のビット 10 (PLL1EN ビット ) に "1" が設定されていても, ストップ状態中のメインクロック用PLLを停止状態にします。 • 次項に記載の「ストップ状態で停止しない回路」を除くすべての内部回路 ● ストップ状態で停止しない回路 • 停止するよう設定されていない発振回路 - スタンバイ制御レジスタ (STCR) のビット 1 (OSCD2 ビット ) に "0" が設定されて いるとき , ストップ状態中のサブクロック用発振回路は停止しません ( 本品種に サブクロックはありません ) 。 - スタンバイ制御レジスタ (STCR) のビット 0 (OSCD1 ビット ) に "0" が設定されて いるとき , ストップ状態中のメインクロック用発振回路は停止しません。 • 動作許可されていて, かつ停止するよう設定されていない発振回路に接続されたPLL - スタンバイ制御レジスタ (STCR) のビット 1 (OSCD2 ビット ) に "0" が設定されて いるとき , クロックソース制御レジスタ (CLKR) のビット 11 (PLL2EN ビット ) に "1" が設定されていると , ストップ状態中のサブクロック用 PLL は停止しません ( 本品種にサブクロックはありません ) 。 - スタンバイ制御レジスタ (STCR) のビット 0 (OSCD1 ビット ) に "0" が設定されて いるとき , クロックソース制御レジスタ (CLKR) のビット 10 (PLL1EN ビット ) に "1" が設定されていると , ストップ状態中のメインクロック用 PLL は停止しませ ん。 ● ストップ状態での端子のハイインピーダンス制御 • スタンバイ制御レジスタ (STCR) のビット 5 (HIZ ビット ) に "1" が設定されている と , ストップ状態中の端子出力をハイインピーダンス状態にします。この制御の対 139 第 3 章 CPU および制御部 象となる端子は ,「付録 C 各 CPU ステートにおける端子状態」を参照してください。 • スタンバイ制御レジスタ (STCR) のビット 5 (HIZ ビット ) に "0" が設定されている と , ストップ状態中の端子出力はストップ状態への遷移前の値を保持します。詳細 は , 「付録 C 各 CPU ステートにおける端子状態」を参照してください ● ストップ状態からの復帰要因 • 特定の ( クロックを必要としない ) 有効な割込み要求の発生 外部割込み入力端子 (INT0 ∼ INT7 端子 ) が有効です。CPU の ILM で設定したレベ ルより高い割込み要求が発生すると , ストップモードは解除され , RUN 状態 ( 通常 動作 ) へ遷移します。CPU の ILM で設定したレベル以下の割込み要求が発生しても , ストップモードは解除されません。 • 設定初期化リセット (INIT) 要求の発生 設定初期化リセット (INIT) 要求が発生すると , 無条件で設定初期化リセット (INIT) 状態へ遷移します。 • ハードウェアスタンバイ要求の発生 ハードウェアスタンバイ要求が発生すると , 無条件でハードウェアスタンバイ状態 に遷移します。 • 動作初期化リセット (RST) 要求の発生 動作初期化リセット (RST) 要求が発生すると , 無条件で動作初期化リセット (RST) 状態へ遷移します。 各要因の優先順位については , 「3.13.1 デバイス状態と各遷移」の「■各状態遷移要求 の優先順位」を参照してください。 ● ストップモード時のクロックソース選択 自励発振モードでは , ストップモードを設定する前に , メインクロックの 2 分周をソー スクロックとするようあらかじめ選択しておいてください。詳細は , 「3.12 クロック 発生制御」の節 , 特にその中の「3.12.1 PLL 制御」を参照してください。 なお , 分周比の設定に関しては , 通常動作時と制限事項は変わりません。 140 第 3 章 CPU および制御部 ● 通常スタンバイ動作と同期スタンバイ動作 タイムベースカウンタ制御レジスタ (TBCR) のビット 8 (SYNCS ビット ) に "1" が設定 されている場合 , 同期スタンバイ動作が許可されます。この場合 , STOP ビットへの書 込みのみではストップ状態へは遷移しません。その後 , STCR レジスタを読み出すこと によってストップ状態へ遷移します。SYNCS ビットに "0" が設定されている場合は , 通常スタンバイ動作となり , STOP ビットへの書込みのみでストップ状態へ遷移しま す。 通常スタンバイ動作時は , CPU クロック (CLKB) に対して周辺クロック (CLKP) の分周 比が大きく設定してあると , 実際に STOP ビットへの書込みが行われるまでに多くの命 令を実行してしまいます。このため , STOP ビットへの書込み命令の後 , 最低でも {5+ (CPU クロックの分周比 / 周辺クロックの分周比 ) } 命令以上の NOP 命令を配置しなけ れば , それ以降の命令がストップ状態への遷移前に実行されてしまいます。 同期スタンバイ動作時は , 実際に STOP ビットへの書込みが行われた後 , STCR レジス タの読出しが完了するまではストップ状態へ遷移しません。STCR レジスタの読出し値 が CPU に格納されるまでは , CPU がバスを使用しているためです。このため , CPU ク ロック (CLKB) と周辺クロック (CLKP) の分周比の関係がいかなる設定においても , STOP ビットへの書込み命令と STCR レジスタの読出し命令の後に , 2 命令のみ NOP 命 令を配置するのみで , それ以降の命令がストップ状態への遷移前に実行されることを 防ぐことができます。 141 第 3 章 CPU および制御部 ■ ハードウェアスタンバイモード 外部 HST 端子へ "L" レベルを入力すると , ハードウェアスタンバイ要求が発生し , ハー ドウェアスタンバイ状態へ遷移します。以降 , "L" レベルが入力されている間 , ハード ウェアスタンバイ状態を維持します。 ハードウェアスタンバイ状態については , 「3.13.1 デバイス状態と各遷移」の「■ハー ドウェアスタンバイ状態」を参照してください。 ● ハードウェアスタンバイ状態で停止する回路 • すべての発振回路 • すべての PLL • すべての内部回路 ● ハードウェアスタンバイ状態で停止しない回路 ハードウェアスタンバイ状態で停止しない回路はありません。 ● ハードウェアスタンバイ状態での端子のハイインピーダンス制御 ハードウェアスタンバイ状態中は , 端子出力をハイインピーダンス状態にします。この 制御の対象となる端子は , 「付録 C 各 CPU ステートにおける端子状態」を参照してく ださい。 ● ハードウェアスタンバイ状態からの復帰要因 • 外部 HST 端子への "H" レベル入力 ハードウェアスタンバイ要求が消失すると , 設定初期化リセット (INIT) 状態へ遷移し ます。 • 外部 INIT 端子への "L" レベル入力による設定初期化リセット (INIT) の発生 外部 INIT 端子による設定初期化リセット (INIT) 要求が発生すると , 無条件で設定初期 化リセット (INIT) 状態へ遷移します。ほかの設定初期化リセット (INIT) 要求は , ハー ドウェアスタンバイ状態では発生しません。 各要因の優先順位については , 「3.13.1 デバイス状態と各遷移」の「■各状態遷移要求 の優先順位」を参照してください。 ● 通常リセット動作と同期リセット動作 タイムベースカウンタ制御レジスタ (TBCR) のビット 9 (SYNCR ビット ) に "1" が設定 されている場合 , 同期リセット動作が許可されます。この場合 , ハードウェアスタンバ イ要求が受け付けられても , 内部バスアクセスが行われている間は , ハードウェアスタ ンバイ状態への遷移は行いません。詳細は , 「3.11.5 リセット動作モード」の「■同期 リセット動作」を参照してください。 SYNCR ビットに "0" が設定されている場合は通常リセット動作となり , ハードウェア スタンバイ要求が受け付けられると , 内部バスアクセスの動作状態にかかわらず , ハー ドウェアスタンバイ状態へ遷移します。 詳細は ,「3.11.5 リセット動作モード」の「■通常リセット動作」を参照してください。 142 第 3 章 CPU および制御部 3.14 動作モード 動作モードには , バスモードとアクセスモードがあります。それぞれのモードにつ いて説明します。 ■ 動作モード 図 3.14-1 動作モード バスモード 内部 ROM 外部バス アクセスモード 16 ビットバス幅 外部 ROM 外部バス 8 ビットバス幅 ● バスモード バスモードとは, 内部ROMの動作と外部アクセス機能の動作を制御するモードを指し, モード設定端子 (MD2, MD1, MD0) とモードデータ内の ROMA ビットの内容で指定し ます。 ● アクセスモード アクセスモードとは , 外部データバス幅を制御するモードを示し , モードレジスタ内の WTH1, WTH0 ビットと ACR0 ∼ ACR7 (Area Configuration Register) 内の DBW1, DBW0 ビットで指定します。 ■ バスモード MB91307 シリーズには , 次に示す 2 つのバスモードがあります。 ● バスモード 1 ( 内部 ROM 外部バスモード ) 内蔵 RAM128K バイト (0004000H ∼ 0005FFFH) が有効で , 外部アクセスが可能な領域へ のアクセスは , 外部空間へのアクセスとなるモードです。外部端子の一部は , バス端子 として機能します。 ● バスモード 2 ( 外部 ROM 外部バスモード ) 内蔵 RAM128K バイト (0004000H ∼ 0005FFFH) へのアクセスを禁止し , すべてのアクセ スが外部空間へのアクセスとなるモードです。外部端子の一部は , バス端子として機能 します。 143 第 3 章 CPU および制御部 ■ モード設定 MB91307シリーズでは, モード端子 (MD2, MD1, MD0) とモードレジスタ (MODR) で動 作モードを設定します。 ● モード端子 MD2, MD1, MD0 の 3 端子で , モードベクタフェッチに関する指定およびテストモード を設定します。 モード端子 MD2 MD1 MD0 0 0 1 モード名 リセットベクタ アクセス領域 備考 外部 ROM モードベクタ 外部 バス幅はモード レジスタで設定 ● モードレジスタ (MODR) モードレジスタ (MODR:MODe Register) は , 動作モードを決定します。 図 3.14-2 に , モードレジスタ (MODR) のビット構成を示します。 図 3.14-2 モードレジスタ (MODR) のビット構成 初期値 2 1 0 INIT 時 RST 時 アクセス (R/W) 予約 予約 予約 予約 予約 ROMA WTH1 WTH0 XXXXXXXXB XXXXXXXXB 7 (0000 07FDH) 6 5 4 3 このレジスタは , リセットシーケンス中にハードウェアにより 000FFFF8H 番地に配置 された , 1 バイトのモードデータを自動的に書き込みます。ツールプログラムによって のみ読出し / 書込みが可能です。 ● モードレジスタ (MODR) のビット機能 以下に , モードレジスタ (MODR) の各ビットの機能を説明します。 [ ビット 7 ∼ビット 3] 予約 これらのビットは , 予約ビットです。必ず "0" を設定してください。"0" 以外の値を 設定した場合の動作は保証されません。 [ ビット 2] ROMA ( 内部 ROM イネーブルビット ) このビットは , 内蔵 RAM 領域を有効にするかどうかを設定します。 内蔵 RAM 領域を有効に使用する場合は , 「3.1 メモリ空間」をお読みください。 ROMA 機能 0 外部 ROM モード 内蔵 RAM 領域が外部領域になります。 1 内部 RAM モード 内蔵 RAM 領域が有効となり , 内蔵 RAM128K バイト が使用できます。 備考 [ ビット 1, ビット 0] WTH1, WTH0 ( バス幅指定ビット ) これらのビットは , リセットベクタ読込み時のバス幅および ACR0 レジスタの DBW1, DBW0 ビットの初期値を指定します。 144 第 3 章 CPU および制御部 表 3.14-1 に , 初期バス幅の設定値を示します。 表 3.14-1 初期バス幅の設定値 WTH1 WTH0 0 0 8 ビット 0 1 16 ビット 1 0 設定禁止 1 1 設定禁止 バス幅 WTH1,WTH0 ビットの設定が , 初期化時に ACR0 レジスタの DBW1, DBW0 ビット に書き込まれます。 145 第 3 章 CPU および制御部 146 第4章 外部バスインタフェース 外部バスインタフェースコントローラは , LSI の内 部バスと外部のメモリおよび I/O デバイスとのイン タフェースを制御します。 本章では , 外部バスインタフェースの各機能および 動作について説明します。 4.1 外部バスインタフェースの概要 4.2 外部バスインタフェースのレジスタ 4.3 チップセレクト領域の設定例 4.4 エンディアンとバスアクセス 4.5 通常バスインタフェースの動作 4.6 バーストアクセスの動作 4.7 アドレス / データマルチプレクスインタフェース 4.8 プリフェッチ動作 4.9 DMA アクセス動作 4.10 バスアービトレーション 4.11 レジスタの設定手順 4.12 外部バスインタフェースの使用上の注意 147 第 4 章 外部バスインタフェース 外部バスインタフェースの概要 4.1 外部バスインタフェースの特長 , ブロックダイヤグラム , I/O ピンおよびレジスタ一 覧について説明します。 ■ 特長 外部バスインタフェースの特長は , 以下のとおりです。 ● 最大 32 ビット長 (4G バイト空間 ) のアドレス出力 ● 各種外部メモリ (8 ビット /16 ビット品 ) を直結できるほか , 複数のアクセスタイミングを混 在制御可能 • 非同期 SRAM, 非同期 ROM/Flash メモリ ( 複数書込みストローブ方式またはバイト イネーブル方式 ) • ページモード ROM/Flash メモリ ( ページサイズ 2/4/8 が可能 ) • バーストモード ROM/Flash メモリ (MBM29BL160D/161D/162D など ) • アドレス / データマルチプレクスバス (8 ビット /16 ビット幅のみ ) • 同期メモリ (ASIC 内蔵メモリなど ) (Synchronous SRAM は直結できません ) ● 独立した8個のバンク (チップセレクト領域) を設定でき, それぞれに対応したチップセレク ト出力が可能 • 各領域のサイズは 64K バイトの倍数単位で設定可能 (1 チップセレクト領域あたり 64K バイト∼ 2G バイトまで ) • 各領域は論理アドレス空間上の任意の位置に設定可能 ( 領域サイズによりバウンダ リの制限あり ) ● チップセレクト領域ごとに以下の機能が独立に設定可能 • チップセレクト領域の許可 / 禁止 ( 禁止された領域はアクセスしません ) • 各種メモリ対応などのアクセスタイミングタイプの設定 • 詳細アクセスタイミングの設定 (ウェイトサイクルなどのアクセスタイプ個別設定) • データバス幅の設定 (8 ビット /16 ビット ) • バイトオーダリングのエンディアンの設定 ( ビッグまたはリトル ) ( CS0 領域はビッグエンディアンのみ可能 ) • 書込み禁止の設定 ( 読出し専用領域 ) • 内蔵キャッシュへの取込み許可 / 禁止の設定 • プリフェッチ機能の許可 / 禁止の設定 • 最大バースト長の設定 (1, 2, 4, 8) ● アクセスタイミングタイプごとに異なる詳細なタイミングの設定が可能 • 同一タイプでもチップセレクト領域ごとに異なる設定が混在可能 • オートウェイトは , 最大 15 サイクルまで設定可能 ( 非同期 SRAM, ROM, Flash, I/O 領域 ) 148 第 4 章 外部バスインタフェース • 外部 RDY 入力によるバスサイクルの延長が可能 ( 非同期 SRAM, ROM, Flash, I/O 領 域) • ファーストアクセスウェイトとページウェイトが設定可能 ( バースト , ページモー ド , ROM/Flash 領域 ) • 各種アイドル / リカバリサイクル , セットアップ遅延などの挿入が可能 ● DMA によるフライバイ転送が可能 • メモリと I/O 間の 1 アクセスでの転送が可能 • メモリウェイトサイクルをフライバイ転送において I/O のウェイト周期に同期させ ることが可能 • 転送元アクセスのみを延長してホールドタイムを確保することが可能 • フライバイ転送時固有のアイドル / リカバリサイクルを設定することが可能 ● BRQ と BGRNT を使用した外部バスアービトレーションが可能 ● 外部インタフェースの未使用ピンは , 設定により汎用 I/O ポートとして使用可能 149 第 4 章 外部バスインタフェース ■ ブロックダイヤグラム 図 4.1-1 外部バスインタフェースのブロックダイヤグラム 内部アドレスバス 32 内部データバス 32 外部データバス MUX write buffer switch read buffer switch DATA BLOCK ADDRESS BLOCK +1 or +2 外部アドレスバス address buffer ASR CS0~CS7 ASZ comparator 外部端子制御部 全block制御 resisters & control 150 RD WR0,WR1, AS,BAA BRQ BGRNT RDY CLK 第 4 章 外部バスインタフェース ■ I/O ピン 外部バスインタフェースの端子です ( 一部のピンは兼用端子です ) 。 以下に , インタフェースごとの I/O ピンを示します。 ● 通常バスインタフェース • A24 ∼ A0, D31 ∼ D16 • CS0,CS1 ,CS2 ,CS3 ,CS4 ,CS5,CS6 ,CS7 • AS, SYSCLK, MCLK • RD • WE,WR0 (UUB) , WR1 (ULB) • RDY, BRQ, BGRNT ● メモリインタフェース • MCLK • LBA (= AS) ,BAA ( バースト ROM/Flash 用 ) ● DMA インタフェース • IOWR , IORD, • DACK0, DACK1, DACK2, DACK3 • DREQ0, DREQ1, DREQ2, DREQ3 • DEOP0/DSTP0, DEOP1/DSTP1, DEOP2/DSTP2, DEOP3/DSTP3 151 第 4 章 外部バスインタフェース ■ レジスタ一覧 図 4.1-2 に , 外部バスインタフェースで使用するレジスタ一覧を示します。 図 4.1-2 外部バスインタフェースのレジスタ一覧 アドレス 31 24 23 16 15 08 07 00000640H ASR0 ACR0 00000644H ASR1 ACR1 00000648H ASR2 ACR2 0000064CH ASR3 ACR3 00000650H ASR4 ACR4 00000654H ASR5 ACR5 00000658H ASR6 ACR6 0000065CH ASR7 ACR7 00000660H AWR0 AWR1 00000664H AWR2 AWR3 00000668H AWR4 AWR5 0000066CH AWR6 AWR7 00 00000670H 予約 予約 予約 予約 00000674H 予約 予約 予約 予約 00000678H IOWR0 IOWR1 IOWR2 予約 0000067CH 予約 予約 予約 予約 00000680H CSER CHER 予約 TCR ∼ 000007F8H 予約 予約 予約 予約 000007FCH 予約 (MODR) 予約 予約 00000684H ( 注意事項 )・予約は , 予約レジスタです。必ず "0" を設定してください。 ・MODR は , ユーザプログラムからはアクセスできません。 152 第 4 章 外部バスインタフェース 4.2 外部バスインタフェースのレジスタ 外部バスインタフェースで使用するレジスタの構成および機能について説明します。 ■ レジスタの種類 外部バスインタフェースで使用するレジスタには , 以下のものがあります。 • 領域選択レジスタ (ASR0 ∼ ASR7) • 領域構成レジスタ (ACR0 ∼ ACR7) • 領域ウェイトレジスタ (AWR0 ∼ AWR7) • DMAC 用 I/O ウェイトレジスタ (IOWR0 ∼ IOWR7) • チップセレクトイネーブルレジスタ (CSER) • キャッシュイネーブルレジスタ (CHER) • 端子 / タイミングコントロールレジスタ (TCR) 153 第 4 章 外部バスインタフェース 領域選択レジスタ 0 ∼ 7 (ASR0 ∼ ASR7) 4.2.1 領域選択レジスタ 0 ∼ 7 (ASR0 ∼ ASR7) の構成および機能について説明します。 ■ 領域選択レジスタ 0 ∼ 7 (ASR0 ∼ ASR7) の構成 領域選択レジスタ (ASR0 ∼ ASR7:Area Select Register 0 ∼ 7) は , CS0 ∼ CS7 の各チップ セレクト領域の開始アドレスを指定します。 図 4.2-1 に , 領域選択レジスタ 0 ∼ 7 (ASR0 ∼ ASR7:Area Select Register) の構成を示し ます。 図 4.2-1 領域選択レジスタ (ASR0 ∼ ASR7) の構成 初期値 154 ASR0 15 14 13 12 … 2 1 0 INIT 時 RST 時 アクセス 0000 0640H A31 A30 A29 … … A18 A17 A16 0000H 0000H R/W 12 … 2 1 0 A18 A17 A16 ASR1 15 14 13 0000 0644H A31 A30 A29 … … ASR2 15 14 13 12 … 2 1 0 0000 0648H A31 A30 A29 … … A18 A17 A16 ASR3 15 14 13 12 … 2 1 0 0000 064CH A31 A30 A29 … … A18 A17 A16 ASR4 15 14 13 12 … 2 1 0 0000 0650H A31 A30 A29 … … A18 A17 A16 ASR5 15 14 13 12 … 2 1 0 0000 0654H A31 A30 A29 … … A18 A17 A16 ASR6 15 14 13 12 … 2 1 0 0000 0658H A31 A30 A29 … … A18 A17 A16 ASR7 15 14 13 12 … 2 1 0 0000 065CH A31 A30 A29 … … A18 A17 A16 XXXXH XXXXH R/W XXXXH XXXXH R/W XXXXH XXXXH R/W XXXXH XXXXH R/W XXXXH XXXXH R/W XXXXH XXXXH R/W XXXXH XXXXH R/W 第 4 章 外部バスインタフェース ■ 領域選択レジスタ (ASR0 ∼ ASR7) のビット機能 開始アドレスは , A31 ∼ A16 ビットの上位 16 ビットを設定できます。各チップセレクト 領域は , このレジスタに設定されたアドレスから始まり , ACR0 ∼ ACR7 レジスタの ASZ3 ∼ ASZ0 の 4 ビットで設定された範囲をとります。 各チップセレクト領域のバウンダリは , ACR0 ∼ ACR7 レジスタの ASZ3 ∼ ASZ0 の 4 ビットの設定に従います。例えば , ASZ3 ∼ ASZ0 の 4 ビットにより , 1M バイトの領域 を設定した場合は , ASR0 ∼ ASR7 レジスタの下位 4 ビットは無視され , A31 ∼ A20 ビッ トのみ意味を持ちます。 ASR0 レジスタは , INIT および RST により , 0000H に初期化されます。ASR1 ∼ ASR7 は , INIT および RST によっては初期化されず , 不定となります。LSI の動作開始後 , CSER レジスタにより各チップセレクト領域を有効にする前に , 必ず対応する ASR レ ジスタを設定してください。 155 第 4 章 外部バスインタフェース 4.2.2 領域構成レジスタ 0 ∼ 7 (ACR0 ∼ ACR7) 領域構成レジスタ 0 ∼ 7 (ACR0 ∼ ACR7) の構成および機能について説明します。 ■ 領域構成レジスタ 0 ∼ 7 (ACR0 ∼ ACR7) の構成 領域構成レジスタ 0 ∼ 7 (ACR0 ∼ ACR7:Area Configuration Register 0 ∼ 7) は , 各チップ セレクト領域の機能を設定します。図 4.2-2 に , 領域構成レジスタ 0 ∼ 7 (ACR0 ∼ ACR7) の構成を示します。 156 第 4 章 外部バスインタフェース 図 4.2-2 領域構成レジスタ (ACR0 ∼ ACR7) の構成 初期値 ACR0H 15 14 13 12 11 10 9 8 0000 0642H ASZ3 ASZ2 ASZ1 ASZ0 DBW1 DBW0 BST1 BST0 ACR0L 7 6 5 4 3 2 1 0 0000 0643H SREN PFEN WREN 0 TYP3 TYP2 TYP1 TYP0 ACR1H 15 14 13 12 11 10 9 8 0000 0646H ASZ3 ASZ2 ASZ1 ASZ0 DBW1 DBW0 BST1 BST0 ACR1L 7 6 5 4 3 2 1 0 0000 0647H SREN PFEN WREN LEND TYP3 TYP2 TYP1 TYP0 ACR2H 15 14 13 12 11 10 9 8 0000 064AH ASZ3 ASZ2 ASZ1 ASZ0 DBW1 DBW0 BST1 BST0 ACR2L 7 6 5 4 3 2 1 0 0000 064BH SREN PFEN WREN LEND TYP3 TYP2 TYP1 TYP0 ACR3H 15 14 13 12 11 10 9 8 0000 064EH ASZ3 ASZ2 ASZ1 ASZ0 DBW1 DBW0 BST1 BST0 ACR3L 7 6 5 4 3 2 1 0 0000 064FH SREN PFEN WREN LEND TYP3 TYP2 TYP1 TYP0 ACR4H 15 14 13 12 11 10 9 8 0000 0652H ASZ3 ASZ2 ASZ1 ASZ0 DBW1 DBW0 BST1 BST0 ACR4L 7 6 5 4 3 2 1 0 0000 0653H SREN PFEN WREN LEND TYP3 TYP2 TYP1 TYP0 ACR5H 15 14 13 12 11 10 9 8 0000 0656H ASZ3 ASZ2 ASZ1 ASZ0 DBW1 DBW0 BST1 BST0 ACR5L 7 6 5 4 3 2 1 0 0000 0657H SREN PFEN WREN LEND TYP3 TYP2 TYP1 TYP0 ACR6H 15 14 13 12 11 10 9 8 0000 065AH ASZ3 ASZ2 ASZ1 ASZ0 DBW1 DBW0 BST1 BST0 ACR6L 7 6 5 4 3 2 1 0 0000 065BH SREN PFEN WREN LEND TYP3 TYP2 TYP1 TYP0 ACR7H 15 14 13 12 11 10 9 8 0000 065EH ASZ3 ASZ2 ASZ1 ASZ0 DBW1 DBW0 BST1 BST0 ACR7L 7 6 5 4 3 2 1 0 0000 065FH SREN PFEN WREN LEND TYP3 TYP2 TYP1 TYP0 INIT 時 RST 時 アクセス 1111XX00B 1111XX00B R/W 00000000B 00000000H R/W xxxxxxxxB xxxxxxxxB R/W xxxxxxxxB xxxxxxxxB R/W xxxxxxxxB xxxxxxxxB R/W xxxxxxxxB xxxxxxxxB R/W xxxxxxxxB xxxxxxxxB R/W xxxxxxxxB xxxxxxxxB R/W xxxxxxxxB xxxxxxxxB R/W xxxxxxxxB xxxxxxxxB R/W xxxxxxxxB xxxxxxxxB R/W xxxxxxxxB xxxxxxxxB R/W xxxxxxxxB xxxxxxxxB R/W xxxxxxxxB xxxxxxxxB R/W xxxxxxxxB xxxxxxxxB R/W xxxxxxxxB xxxxxxxxB R/W <注意事項> ASR と ACR はワードアクセスで同時設定してください。 ASR, ACR をハーフワードでアクセスする場合には , ASR 設定後 , ACR を設定してくだ さい。 157 第 4 章 外部バスインタフェース 以下に , 各ビットの機能を説明します。 [ ビット 15 ∼ビット 12] ASZ3 ∼ ASZ0 (Area Size Bit 3 ∼ 0) これらのビットは , 領域のサイズを設定します。設定内容を表 4.2-1 に示します。 表 4.2-1 領域のサイズ設定 ASZ3 ASZ2 ASZ1 ASZ0 0 0 0 0 64KB 0 0 0 1 128KB (00020000H バイト , ASR A [31:17] ビット指定が有効 ) 0 0 1 0 256KB (00040000H バイト , ASR A [31:18] ビット指定が有効 ) 0 0 1 1 512KB (00080000H バイト , ASR A [31:19] ビット指定が有効 ) 0 1 0 0 1MB (00100000H バイト , ASR A [31:20] ビット指定が有効 ) 0 1 0 1 2MB (00200000H バイト , ASR A [31:21] ビット指定が有効 ) 0 1 1 0 4MB (00400000H バイト , ASR A [31:22] ビット指定が有効 ) 0 1 1 1 8MB (00800000H バイト , ASR A [31:23] ビット指定が有効 ) 1 0 0 0 16MB (01000000H バイト , ASR A [31:24] ビット指定が有効 ) 1 0 0 1 32MB (02000000H バイト , ASR A [31:25] ビット指定が有効 ) 1 0 1 0 64MB (04000000H バイト , ASR A [31:26] ビット指定が有効 ) 1 0 1 1 1 1 0 0 128MB (08000000H バイト , ASR A [31:27] ビット指定が有効 ) 256MB (10000000H バイト , ASR A [31:28] ビット指定が有効 ) 1 1 0 1 512MB (20000000H バイト , ASR A [31:29] ビット指定が有効 ) 1 1 1 0 1024MB (40000000H バイト , ASR A [31:30] ビット指定が有効 ) 1 1 1 1 2048MB (80000000H バイト , ASR A [31] ビット指定が有効 ) 各チップセレクト領域のサイズ (00010000H バイト , ASR A [31:16] ビット指定が有効 ) ASZ3 ∼ ASZ0 では , ASR とのアドレス比較のビット数を変更させることにより , 各 領域のサイズを設定します。そのため ASR は比較されないビットが存在します。 ACR0 の ASZ3 ∼ ASZ0 ビットは , RST により 1111B (0FH) に初期化されますが , こ の設定にかかわらず RST 直後の CS0 領域は特別に 00000000H から FFFFFFFFH ( 全 領域 ) に設定されています。ACR0 への最初の書込み後より全領域設定が解除され , 表 4.2-1 に従ったサイズに設定されます。 [ ビット 11, ビット 10] DBW1, DBW0 (Data Bus Width 1, 0) これらのビットは , 各チップセレクト領域のデータバス幅を , 表 4.2-2 に示すように 設定します。 表 4.2-2 チップセレクト領域のデータバス幅の設定 DBW1 DBW0 0 0 1 1 0 1 0 1 データバス幅 8 ビット ( バイトアクセス ) 16 ビット ( ハーフワードアクセス ) Reserved 設定禁止 Reserved 設定禁止 ACR0 の DBW1, DBW0 ビットは , リセットシーケンス中にモードベクタの WTH ビットの値と同じ値が自動的に書き込まれます。 158 第 4 章 外部バスインタフェース [ ビット 9, ビット 8] BST1, BST0 ( バースト Size 1, 0) これらのビットは , 各チップセレクト領域の最大バースト長を , 表 4.2-3 に示すよう に設定します。 表 4.2-3 各チップセレクト領域の最大バースト長の設定 BST1 BST0 0 0 1 1 0 1 0 1 最大バースト長 1 ( シングルアクセス ) 2 バースト ( アドレス境界 1 ビット ) 4 バースト ( アドレス境界 2 ビット ) 8 バースト ( アドレス境界 3 ビット ) シングルアクセス以外のバースト長が設定された領域は , プリフェッチアクセスま たはバス幅を超えるサイズのデータの読出しを行った場合のみ , バースト長から決 まるアドレス境界内で連続したバーストアクセスを行います。 バス幅 16 ビット領域の最大バースト長は 2 バースト以下を推奨します。 シングルアクセス以外のバースト長設定を行った領域では , RDY 入力を無視しま す。 [ ビット 7] SREN (ShaRed Enable) このビットは , 各チップセレクト領域の BRQ/BGRNT による共有の許可 / 禁止を , 下表のとおり設定します。 表 4.2-4 各チップセレクト領域の BRQ/BGRNT による共有の許可 / 禁止 SREN 共有の許可 / 禁止 0 BRQ/BGRNT による共有を禁止 (CS はハイインピーダンスになりません ) 1 BRQ/BGRNT による共有を許可 (CS はハイインピーダンスになります ) 共有が許可された領域は , バス開放中 ( BGRNT="L" 出力中 ) はチップセレクト出力 (CSn) がハイインピーダンスになります。共有が禁止された領域は , バス開放中 (BGRNT = "L" 出力中 ) もチップセレクト出力 (CSn ) がハイインピーダンスになり ません。 CSER により許可されたすべての領域の共有が許可されている場合のみ , アクセス ストローブ出力 (AS ,BAA ,RD ,WR0 ,WR1, WE など ) がハイインピーダンスにな ります。 [ ビット 6] PFEN (PreFetch Enable) このビットは , 各チップセレクト領域のプリフェッチの許可 / 禁止を , 下表のとおり 設定します。 表 4.2-5 各チップセレクト領域のプリフェッチの許可 / 禁止 PFEN 0 1 プリフェッチ許可 / 禁止 プリフェッチ禁止 プリフェッチ許可 159 第 4 章 外部バスインタフェース プリフェッチが許可された領域に対して読出しを行うと , それに続くアドレスに対 して先読みを行い , 内蔵プリフェッチバッファに蓄積します。蓄積されたアドレス に対し内部バスからのアクセスされると , 外部アクセスをせずに , プリフェッチ バッファに先読みされたデータを返します。 詳細は , 「4.8 プリフェッチ動作」を参照してください。 [ ビット 5] WREN (WRite Enable) このビットは , 各チップセレクト領域の書込みの許可 / 禁止を設定します。 WREN 書込み許可 / 禁止 0 書込み禁止 1 書込み許可 書込みが禁止された領域に対する書込みアクセスが内部バスから発生しても , その アクセスは無視され , 外部アクセスを一切行いません。データ領域など , 書込みが 必要な領域は , WREN ビットに "1" を設定してください。 [ ビット 4] LEND (Little ENDian select) このビットは , 各チップセレクト領域のバイトオーダリングを , 下表のとおり設定 します。 LEND バイトオーダリング 0 ビッグエンディアン 1 リトルエンディアン ACR0 の LEND ビットには , 必ず "0" を設定してください。CS0 領域はビッグエン ディアンのみをサポートします。 [ ビット 3 ∼ビット 0] TYP3 ∼ TYP0 (TYPe select) これらのビットは , 各チップセレクト領域のアクセスタイプを , 表 4.2-6 に示すとお り設定します。 160 第 4 章 外部バスインタフェース 表 4.2-6 各チップセレクト領域のアクセスタイプの設定 TYP3 TYP2 TYP1 TYP0 0 0 x x 通常アクセス ( 非同期 SRAM, I/O, single/page/ バースト ROM/Flash) 0 1 x x アドレスデータマルチプレクスアクセス (8/16 ビットバス幅限定 ) 0 x x 0 RDY 端子による WAIT 挿入無効 0 x x 1 RDY 端子による WAIT 挿入有効 ( バースト時は無効 ) 0 x 0 x WR0 , WR1 端子を書込みストローブとして使用 (WE は "H" 固定 ) 0 x 1 x WE 端子を書込みストローブとして使用 *1 1 0 0 0 設定禁止 *2 1 0 0 1 設定禁止 *2 1 0 1 0 設定禁止 *2 1 0 1 1 設定禁止 *2 1 1 0 0 設定禁止 *2 1 1 0 1 設定禁止 *2 1 1 1 0 設定禁止 *2 1 1 1 1 マスク領域設定 ( アクセスタイプは重複した領域のものになります ) *3 アクセスタイプ *1: この設定をした場合 , WR0, WR1 は , 各バイトのイネーブルとして使用できます。 *2: ACR6, ACR7 レジスタのみ有効です。ACR0, ACR1, ACR2, ACR3, ACR4, ACR5 レジ スタでは設定禁止です。 *3: 次項の CS 領域マスク設定機能を参照してください。 各ビットは , 組み合わせて設定します。 各アクセスタイプの動作詳細は , 動作説明の項 (4.5.1 ∼ 4.7) を参照してください。 161 第 4 章 外部バスインタフェース ● CS 領域マスク設定機能 ある CS 領域 ( ベース設定領域 ) の中に , 一部動作設定を変更した領域を定義したい場 合 , 別の CS 領域の設定で , ACR の TYPE3 ∼ TYPE0 を "1111" に設定し , マスク設定領 域として機能させることができます。 マスク設定機能を使用しない場合 , 複数の CS 領域でオーバラップする領域設定は禁止 します。 マスク設定領域へのアクセスは , 以下のような動作をします。 • マスク設定領域に対応する CS はアサートされません。 • ベース設定領域に対応する CS がアサートされます。 • ACR の以下の設定はマスク設定領域側のものが有効になります。 - ビット 11, ビット 10 (DBW1, DBW0) : バス幅設定 - ビット 9, ビット 8 (BST1, BST0) : バースト長設定 - ビット 7 (SREN) : 共有許可設定 - ビット 6 (PFEN) : プリフェッチ許可設定 - ビット 5 (WREN) : 書込み許可設定 ( この設定のみ , ベース設定 領域と異な る設定は禁止します。) - ビット 4 (LEND) : リトルエンディアン設定 • ACR の以下の設定はベース設定領域側のものが有効になります。 - ビット 3 ∼ビット 0 (TYPE3 ∼ TYPE0) : アクセスタイプ設定 • AWR の設定はマスク設定領域側のものが有効になります。 • CHER の設定はマスク設定領域側のものが有効になります。 マスク設定領域は , ほかの CS 領域 ( ベース設定領域 ) 内の一部の領域にのみ設定でき ます。ベース設定領域がない領域に対して , マスク設定領域を設けてはいけません。 ASR および ACR の ASZ3 ∼ ASZ0 ビットの設定には充分注意してください。 これらのビット使用に際して , 以下の制限事項があります。 • 書込み許可設定をマスクで実現することはできません。 • 書込み許可設定は , ベースとなる設定領域とマスク設定領域とで , 同じ設定として ください。 • マスク設定領域で書込み禁止を設定すると , その領域はマスクされずベース設定領 域として動作します。 • ベース設定領域で書込み禁止を設定し , マスク設定領域で書込み許可を設定すると , ベース設定のない領域となり , 誤動作します。 162 第 4 章 外部バスインタフェース 4.2.3 領域ウェイトレジスタ (AWR0 ∼ AWR7) 領域ウェイトレジスタ (AWR0 ∼ AWR7) の構成および機能について説明します。 ■ 領域ウェイトレジスタ (AWR0 ∼ AWR7) の構成 領域ウェイトレジスタ (AWR0 ∼ AWR7:Area Wait Register 0 ∼ 7) は , 各チップセレク ト領域の各種ウェイトタイミングを指定します。 図 4.2-3 に , 領域ウェイトレジスタ (AWR0 ∼ AWR7) の構成を示します。 図 4.2-3 領域ウェイトレジスタ (AWR0 ∼ AWR7) の構成 ( 続く ) 初期値 AWR0H 31 30 29 28 27 26 25 24 0000 0660H W15 W14 W13 W12 W11 W10 W09 W08 AWR0L 23 22 21 20 19 18 17 16 0000 0661H W07 W06 W05 W04 W03 W02 W01 W00 AWR1H 15 14 13 12 11 10 9 8 0000 0662H W15 W14 W13 W12 W11 W10 W09 W08 AWR1L 7 6 5 4 3 2 1 0 0000 0663H W07 W06 W05 W04 W03 W02 W01 W00 AWR2H 31 30 29 28 27 26 25 24 0000 0664H W15 W14 W13 W12 W11 W10 W09 W08 AWR2L 23 22 21 20 19 18 17 16 0000 0665H W07 W06 W05 W04 W03 W02 W01 W00 AWR3H 15 14 13 12 11 10 9 8 0000 0666H W15 W14 W13 W12 W11 W10 W09 W08 AWR3L 7 6 5 4 3 2 1 0 0000 0667H W07 W06 W05 W04 W03 W02 W01 W00 AWR4H 31 30 29 28 27 26 25 24 0000 0668H W15 W14 W13 W12 W11 W10 W09 W08 AWR4L 23 22 21 20 19 18 17 16 0000 0669H W07 W06 W05 W04 W03 W02 W01 W00 AWR5H 15 14 13 12 11 10 9 8 0000 066AH W15 W14 W13 W12 W11 W10 W09 W08 AWR5L 7 6 5 4 3 2 1 0 0000 066BH W07 W06 W05 W04 W03 W02 W01 W00 INIT 時 RST 時 アクセス 01111111B 01111111B R/W 11111111B 11111111B R/W xxxxxxxxB xxxxxxxxB R/W xxxxxxxxB xxxxxxxxB R/W xxxxxxxxB xxxxxxxxB R/W xxxxxxxxB xxxxxxxxB R/W xxxxxxxxB xxxxxxxxB R/W xxxxxxxxB xxxxxxxxB R/W xxxxxxxxB xxxxxxxxB R/W xxxxxxxxB xxxxxxxxB R/W xxxxxxxxB xxxxxxxxB R/W xxxxxxxxB xxxxxxxxB R/W 163 第 4 章 外部バスインタフェース 図 4.2-3 領域ウェイトレジスタ (AWR0 ∼ AWR7) の構成 ( 続き ) 初期値 AWR6H 31 30 29 28 27 26 25 24 0000 066CH W15 W14 W13 W12 W11 W10 W09 W08 AWR6L 23 22 21 20 19 18 17 16 0000 066DH W07 W06 W05 W04 W03 W02 W01 W00 AWR7H 15 14 13 12 11 10 9 8 0000 066EH W15 W14 W13 W12 W11 W10 W09 W08 AWR7L 7 6 5 4 3 2 1 0 0000 066FH W07 W06 W05 W04 W03 W02 W01 W00 INIT 時 RST 時 アクセス xxxxxxxxB xxxxxxxxB R/W xxxxxxxxB xxxxxxxxB R/W xxxxxxxxB xxxxxxxxB R/W xxxxxxxxB xxxxxxxxB R/W ACR0 ∼ ACR7 レジスタのアクセスタイプ (TYP (3 ∼ 0) ビット ) の設定により , 各ビッ トの機能が変わります。以下の設定をしたチップセレクト領域は , 通常アクセスまたは アドレス / データマルチプレクスアクセス動作を行う領域となります。 TYP3 TYP2 TYP1 TYP0 0 0 x x 通常アクセス ( 非同期 SRAM, I/O, single/page/ バースト ROM/Flash) 0 1 x x アドレスデータマルチプレクスアクセス (8/16 ビットバス幅限定 ) アクセスタイプ 通常アクセスまたはアドレス / データマルチプレクスアクセス領域に対しての AWR0 ∼ AWR7 の各ビットの機能を以下に示します。AWR0 以外は初期値が不定ですので , 各領 域を CSER レジスタによって有効にする前に , 設定を行ってください。 以下に , 領域ウェイトレジスタ (AWR0 ∼ AWR7) の各ビットの機能を説明します。 [ ビット 31 ∼ビット 28/ ビット 15 ∼ビット 12] W15 ∼ W12 ( ファーストアクセス ウェイトサイクル :First Wait Cycle) これらのビットは , 各サイクルの最初のアクセスサイクルに挿入する自動ウェイト サイクル数を設定します。バーストアクセスサイクル以外は , このウェイト設定の み使用されます。 CS0 領域は , 初期値 7 ウェイトに設定されます。その他の領域は初期値不定です。 表 4.2-7 に , ファーストアクセス時の自動ウェイトサイクル数の設定内容を示しま す。 表 4.2-7 自動ウェイトサイクル数の設定 ( ファーストアクセス時 ) W15 W14 W13 W12 0 0 0 0 自動ウェイトサイクル 0 0 0 0 1 自動ウェイトサイクル 1 … 1 164 1 ファーストアクセスウェイトサイクル … 1 1 自動ウェイトサイクル 15 第 4 章 外部バスインタフェース [ ビット 27 ∼ビット 24/ ビット 11 ∼ビット 8] W11 ∼ W08 ( ページ内アクセスウェイ トサイクル :Inpage Access Wait Cycle) これらのビットは , バーストアクセス時にページ内アクセスサイクルに挿入する自 動ウェイトサイクル数を設定します。バーストアクセスサイクル以外では , 意味を 持ちません。 表 4.2-8 に , バーストアクセス時の自動ウェイトサイクル数の設定内容を示します。 表 4.2-8 自動ウェイトサイクル数の設定 ( バーストアクセス時 ) W11 W10 W09 W08 0 0 0 0 自動ウェイトサイクル 0 0 0 0 1 自動ウェイトサイクル 1 … 1 1 ページ内アクセスウェイトサイクル … 1 1 自動ウェイトサイクル 15 ファーストアクセスウェイトサイクルとページ内アクセスウェイトサイクルに同 じ値を設定しても , それぞれのアクセスサイクルでのアドレスからのアクセスタイ ムは同じにはなりません。ページ内アクセスサイクルでは , アドレス出力遅延が含 まれるためです。 [ ビット 23, ビット 22/ ビット 7, ビット 6] W07, W06 ( 読出し→書込みアイドルサイク ル :Read → Write Idle Cycle) 読出し→書込みアイドルサイクルは , 読出しサイクル後に書込みサイクルが続く場 合に , 読出しデータと書込みデータのデータバス上での衝突を防ぐために設定しま す。アイドルサイクル中はすべてのチップセレクト信号をネゲートし , データ端子 はハイインピーダンス状態を維持します。読出し後に書込みが続く場合または読出 しの後に別のチップセレクト領域へのアクセスが発生した場合に , 指定したアイド ルサイクルを挿入します。 表 4.2-9 に , アイドルサイクルの設定内容を示します。 表 4.2-9 アイドルサイクルの設定内容 W07 W06 読出し→書込みアイドルサイクル 0 0 0 サイクル 0 1 1 サイクル 1 0 2 サイクル 1 1 3 サイクル 165 第 4 章 外部バスインタフェース [ ビット 21, ビット 20/ ビット 5, ビット 4] W05, W04 ( 書込みリカバリサイクル :Write Recovery Cycle) 書込みリカバリサイクルは , 書込みアクセス後に続けてアクセスする際の間隔に制 限のあるデバイスへのアクセスを制御する場合に設定します。書込みリカバリサイ クル中はすべてのチップセレクト信号をネゲートし , データ端子はハイインピーダ ンスを維持します。書込みリカバリサイクルを "1" 以上に設定した場合は , 書込み アクセスの後には必ず書込みリカバリサイクルが挿入されます。 表 4.2-10 に , 書込みリカバリサイクル数の設定内容を示します。 表 4.2-10 書込みリカバリサイクル数の設定内容 W05 W04 書込みリカバリサイクル 0 0 0 サイクル 0 1 1 サイクル 1 0 2 サイクル 1 1 3 サイクル [ ビット 19/ ビット 3] W03 ( WR0, WR1 , WE 出力タイミング選択 ) WR0 , WR1, WE 出力タイミング設定は , 書込みストローブ出力を非同期ストローブ として使用するか , 同期書込みイネーブルとして使用するかを選択します。非同期 ストローブとすることにより通常メモリまたは I/O に対応し , 同期イネーブルとする ことによりクロック同期のメモリまたは I/O (ASIC 内蔵メモリなど ) に対応します。 W03 WR0, WR1, WE 出力タイミング選択 0 MCLK 同期書込みイネーブル出力 (AS ="L" から有効 ) 1 非同期書込みストローブ出力 ( 通常動作 ) 同期書込みイネーブルとした場合 (AWR の W03 ビットが "1") , 以下のような動作とな ります。 • 同期書込みイネーブル出力のタイミングは , 外部メモリアクセスクロックの MCLK 出力の立上りエッジで取り込まれることを前提としたタイミングになります。非同 期ストローブ出力とはタイミングが異なります。 • WR0, WR1, WE 端子出力は , AS 端子出力がアサートされているタイミングから , 同 期書込みイネーブル出力をアサートします。外部バスへ書き込む場合 , 同期書込み イネーブル出力は "L" を出力します。外部バスから読み出す場合 , 同期書込みイネー ブル出力は "H" を出力します。 • 同期書込みイネーブル出力をアサートした次のクロックサイクルで , 外部データ出 力端子から書込みデータを出力します。内部バスの都合により書込みデータを出力 することができなかった場合 , 書込みデータが出力できるまで同期書込みイネーブ ル出力のアサートを延長することがあります。 • 読出しストローブ出力 (RD) は , WR0, WR1 , WE 出力タイミング設定の内容にかか わらず , 非同期読出しストローブとして機能します。データの入出力方向制御にそ のまま使用してください。 166 第 4 章 外部バスインタフェース 同期書込みイネーブル出力を使用する場合 , 以下の制限があります。 • 以下の追加ウェイト設定はしないでください。 - CS → RD / WE セットアップ設定 (AWR の W01 ビットには常に "0" を書いてく ださい ) - ファーストウェイトサイクル設定 (AWR の W15 ∼ W12 ビットには常に "0000B" を書いてください ) • 以下のアクセスタイプ設定 (ACR レジスタ中の TYPE3 ∼ TYPE0 ビット ( ビット 3 ∼ ビット 0) ) は設定しないでください。 - アドレス / データマルチプレクスバス設定 (ACR の TYPE2 ビットには常に "0" を 書いてください ) - WR0 , WR1 を書込みストローブとして使用する設定 (ACR の TYP1 ビットには常 に "0" を書いてください ) - RDY 入力有効設定 (ACR の TYPE0 ビットには常に "0" を書いてください ) • 同期書込みイネーブル出力の場合 , バースト長は常に "1" (ACR の BST1, BST0 ビッ トには "00B") を設定してください。 [ ビット 18/ ビット 2] W02 ( アドレス→ 遅延 ) アドレス→ CS 遅延設定は , CS の立下りに対してアドレスなどが一定のセットアッ プを必要とする場合や , 連続して同一のチップセレクト領域にアクセスする際にも の CS エッジを必要とする場合などに設定します。 アドレスおよび AS 出力から CS0 ∼ CS7 出力までの遅延を設定します。 W02 アドレス→ CS 遅延の有無 0 遅延なし 1 遅延あり "1" を設定し , 遅延なしを選択した場合は , AS のアサートと同じタイミングで CS0 ∼ CS7 がアサート開始されます。このとき , 同じチップセレクト領域に連続したアクセ スを実行した場合 , 両アクセスの間も CS0 ∼ CS7 はアサートを継続したまま変化し ないことがあります。 "0" を設定し , 遅延ありを選択した場合は , 外部メモリクロック MCLK 出力の立上 りから CS0 ∼ CS7 がアサート開始されます。このとき , 同じチップセレクト領域に 連続したアクセスを実行した場合でも, 両アクセスの間に CS0∼ CS7 ネゲートタイ ミングが発生します。CS 遅延ありを選択した場合は , 遅延させた CS のアサートか ら , 読出し / 書込みストローブをアサートする前に , 1 サイクルのセットアップサイ クルを挿入します (W01 の CS → RD/WE セットアップ設定と同等の動作となりま す)。 アドレス→ CS 遅延設定は , 同一領域に対して出力される DACK 信号 ( 基本モード ) にも同様に作用します。基本モードでの DACK 出力は , その領域に対する CS と同 じ波形となります。 167 第 4 章 外部バスインタフェース [ ビット 17/ ビット 1] W01 (CS → RD/WE セットアップ延長サイクル ) CS→ RD/WE セットアップ延長サイクルは, CSアサート後, 読出し/書込みストローブ をアサートするまでの期間を延長する場合に設定します。CS アサート後 , 読出し / 書 込みストローブをアサートする前に最低1サイクルのセットアップ延長サイクルを挿 入します。 W01 CS → RD/WE セットアップ延長サイクル 0 0 サイクル 1 1 サイクル "0" を設定して 0 サイクルを選択した場合は , 最速で , CS アサート直後の外部メモリ クロック MCLK 出力の立上りから RD/ WR0, WR1 / WE が出力されます。WR0, WR1 / WE は , 内部バスの状態により , 1 サイクル以上遅れることもあります。 "1" を設定して 1 サイクルを選択した場合は , RD/ WR0, WR1 / WE とも , 必ず 1 サイ クル以上遅れて出力されます。 同一チップセレクト領域内で , CS をネゲートしないまま連続してアクセスする場 合 , このセットアップ延長サイクルは挿入されません。アドレス確定のセットアッ プ延長サイクルが必須となる場合 , W02 ビットを有効にしてアドレス→ CS 遅延を 挿入することにより , 毎アクセス時に CS が一度ネゲートされるため , このセット アップ延長サイクルが有効となります。 W02 の CS 遅延設定を挿入してある場合 , W01 ビットの設定によらず常にこのセッ トアップサイクルが有効となります。 [ ビット 16/ ビット 0] W00 ( RD/WE → CS ホールド延長サイクル ) RD/WE →CS ホールド延長サイクルは, 読出し /書込みストローブネゲート後, CSネ ゲートまでの期間を延長する場合に設定します。読出し / 書込みストローブネゲー ト後 , CS をネゲートする前に , 1 サイクルのホールド延長サイクルを挿入します。 W00 RD/WE → CS ホールド延長サイクル 0 0 サイクル 1 1 サイクル "0" を設定して 0 サイクルを選択した場合は , RD/WR0, WR1/ WE がネゲートされた 後の外部メモリクロック MCLK 出力の立上りエッジよりホールド遅延経過後に , CS0 ∼ CS7 がネゲートされます。 "1" を設定して 1 サイクルを選択した場合は , CS0 ∼ CS7 は 1 サイクル遅れてネゲー トされます。 同一チップセレクト領域内で , CS をネゲートしないまま連続してアクセスする場 合 , このホールド延長サイクルは挿入されません。アドレス確定のホールド延長サ イクルが必須となる場合 , W02 ビットを有効にしてアドレス→ CS 遅延を挿入する ことにより , 毎アクセス時に CS が一度ネゲートされるため , このホールド延長サイ クルが有効となります。 168 第 4 章 外部バスインタフェース 4.2.4 DMAC 用 I/O ウェイトレジスタ (IOWR0 ∼ IOWR2) DMAC 用 I/O ウェイトレジスタ (IOWR0 ∼ IOWR2) の構成および機能について説明 します。 ■ DMAC 用 I/O ウェイトレジスタ (IOWR0 ∼ IOWR2) の構成 DMAC 用 I/O ウェイトレジスタ (IOWR0 ∼ IOWR2:I/O Wait Register for DMAC 0 ∼ 2) は , DMA フライバイアクセス時の , 各種ウェイトを設定します。 図 4.2-4 に , DMAC 用 I/O ウェイトレジスタ (IOWR0 ∼ IOWR2) の構成を示します。 図 4.2-4 DMAC 用 I/O ウェイトレジスタ (IOWR0 ∼ IOWR2) の構成 初期値 IOWR0 0000 0678H 31 30 RYE0 HLD0 29 WR01 28 WR00 27 IW03 26 IW02 25 IW01 24 INIT 時 RST 時 アクセス IW00 xxxxxxxxB xxxxxxxxB R/W xxxxxxxxB xxxxxxxxB R/W xxxxxxxxB xxxxxxxxB R/W IOWR1 23 22 21 20 19 18 17 16 000 0679H RYE1 HLD1 WR11 WR10 IW13 IW12 IW11 IW10 IOWR2 15 14 13 12 11 10 9 8 0000 067AH RYE2 HLD2 WR21 WR20 IW23 IW22 IW21 IW20 ■ DMAC 用 I/O ウェイトレジスタ (IOWR0 ∼ IOWR2) のビット機能 以下に , DMAC 用 I/O ウェイトレジスタ (IOWR0 ∼ IOWR2) の各ビットの機能を説明 します。 [ ビット 31, ビット 23, ビット 15] RYE0, RYE1, RYE2 (RDY 機能設定 0, 1, 2) DMAフライバイアクセス時のch0∼ch2のRDYによるウェイト制御の設定をします。 RYEn RDY 機能設定 0 I/O アクセスに対する RDY 入力は無効となります。 1 I/O アクセスに対する RDY 入力が有効になります。 "1" を設定することにより , 該当するチャネルのフライバイ転送時 , RDY 端子によ るウェイト挿入が可能となります。IOWR,IORD は RDY 端子がイネーブルになる まで , 延長されます。また , メモリ側の RD/WR0 , WR1/WE もそれに同期して延長 されます。フライバイ転送相手のチップセレクト領域が ACR レジスタにより RDY 有効に設定されていれば , IOWR 側の RYEn ビットとは関係なく RDY 端子による ウェイト挿入が可能となります。フライバイ転送相手のチップセレクト領域で ACR レジスタにより RDY 無効にされている場合でも , IOWR 側の RYEn ビットにより RDY 有効に設定されていれば , フライバイアクセス時のみ RDY 端子によるウェイ ト挿入が可能となります。 169 第 4 章 外部バスインタフェース [ ビット 30, ビット 22, ビット 14] HLD0, HLD1, HLD2 ( ホールドウェイト設定 ) これらのビットは , DMA フライバイアクセス時の , 転送元アクセス側の読出しスト ローブ信号のホールドサイクルを制御します。 HLDn ホールドウェイト設定 0 ホールド延長サイクルを挿入しません。 1 ホールド延長サイクルを挿入し , 読出しサイクルを 1 サイクル延長しま す。 "0"設定時は, 転送元アクセス側の読出しストローブ信号 (メモリ→I/Oの場合はRD , I/O →メモリの場合は IORD) と書込みストローブ信号 ( メモリ→ I/O の場合は IOWR, I/O →メモリの場合は , WR0, WR1 および WE) は同じタイミングで , 出力されます。 "1"設定時は, 転送元アクセス側データの転送先に対するホールドタイムを確保する ため , 書込みストローブ信号に対し , 読出しストローブ信号を , 1 サイクル長く出力 します。 [ ビット 29, ビット 28, ビット 21, ビット 20, ビット 13, ビット 12] WR0, WR1, WR2, WR3 (I/O アイドルサイクル設定 ) これらのビットは , DMA フライバイアクセス時に , 連続した I/O アクセスに対する アイドルサイクル数を設定します。 表 4.2-11 に , I/O アイドルサイクル数の設定内容を示します。 表 4.2-11 I/O アイドルサイクル数の設定内容 WRn1 WRn0 0 0 0 サイクル 0 1 1 サイクル 1 0 2 サイクル 1 1 3 サイクル I/O アイドルサイクル数の設定 アイドルサイクル数を 1 サイクル以上設定した場合 , DMA フライバイアクセス時に , I/O アクセスの後に設定したサイクル数のアイドルサイクルを挿入します。アイド ルサイクル中は , すべての CS およびストローブ出力はネゲートされ , データ端子は ハイインピーダンスとなります。 170 第 4 章 外部バスインタフェース [ ビット 27 ∼ビット 24, ビット 19 ∼ビット 16, ビット 11 ∼ビット 8, ビット 3 ∼ビット 0] IW03 ∼ IW00, IW13 ∼ IW10, IW23 ∼ IW20, IW33 ∼ IW30 (I/O ウェイトサイクル ) DMA フライバイアクセス時の , I/O アクセスの自動ウェイトサイクル数を設定しま す。 表 4.2-12 に , I/O ウェイトサイクル数の設定内容を示します。 表 4.2-12 I/O ウェイトサイクル数の設定内容 IWn3 IWn2 IWn1 IWn0 0 0 0 0 0 サイクル 0 0 0 1 1 サイクル … 1 1 I/O ウェイトサイクル数 … 1 1 15 サイクル ウェイトサイクルの挿入数は , 転送元と転送先とでのデータの同期のため , IWnn ビットによる I/O 側の設定とフライバイ転送相手 ( メモリなど ) のウェイト設定の うち , 大きい方を使用します。そのため , IWnn ビットに設定したサイクル数より多 いウェイトサイクルが挿入される場合があります。 171 第 4 章 外部バスインタフェース 4.2.5 チップセレクトイネーブルレジスタ (CSER) チップセレクトイネーブルレジスタ (CSER) の構成および機能について説明します。 ■ チップセレクトイネーブルレジスタ (CSER) の構成 チップセレクトイネーブルレジスタ (CSER:Chip Select Enable register) は , 各チップセ レクト領域の許可 / 禁止を設定します。 図 4.2-5 に , チップセレクトイネーブルレジスタ (CSER) の構成を示します。 図 4.2-5 チップセレクトイネーブルレジスタ (CSER) の構成 初期値 0000 00680H 31 30 29 28 27 26 25 24 INIT 時 RST 時 アクセス CSE7 CSE6 CSE5 CSE4 CSE3 CSE2 CSE1 CSE0 00000001B 00000001B R/W ■ チップセレクトイネーブルレジスタ (CSER) のビット機能 以下に , チップセレクトイネーブルレジスタ (CSER) のビットの機能を説明します。 [ ビット 31 ∼ビット 24] CSE7 ∼ CSE0 ( チップセレクト領域許可 0 ∼ 7) これらのビットは , CS0 ∼ CS7 の各チップセレクト領域許可ビットです。 初期値は , 00000001B で CS0 領域のみ許可されています。 "1" を書き込むことにより ASR0 ∼ ASR7, ACR0 ∼ ACR7, AWR0 ∼ AWR7 の設定に 従い , 動作します。 許可にする前に , 必ず対応するチップセレクト領域のすべての設定を行ってくださ い。 CSE7 ∼ CSE0 領域コントロール 0 禁止 1 許可 表 4.2-13 に , チップセレクト領域許可ビットの対応する CSn を示します。 172 第 4 章 外部バスインタフェース 表 4.2-13 チップセレクト領域許可ビットの対応する CSn CSE のビット 対応する CSn ビット 24:CSE0 CS0 ビット 25:CSE1 CS1 ビット 26:CSE2 CS2 ビット 27:CSE3 CS3 ビット 28:CSE4 CS4 ビット 29:CSE5 CS5 ビット 30:CSE6 CS6 ビット 31:CSE7 CS7 173 第 4 章 外部バスインタフェース 4.2.6 キャッシュイネーブルレジスタ (CHER) キャッシュイネーブルレジスタ (CHER) の構成および機能について説明します。 ■ キャッシュイネーブルレジスタ (CHER) の構成 キャッシュイネーブルレジスタ (CHER:CacHe Enable Register) は , 各チップセレクト領 域から読み込んだデータの内蔵キャッシュへの取込みを制御します。 図 4.2-6 に , キャッシュイネーブルレジスタ (CHER) の構成を示します。 図 4.2-6 キャッシュイネーブルレジスタ (CHER) の構成 初期値 0000 00681H 23 22 21 20 19 18 17 16 INIT 時 RST 時 アクセス CHE7 CHE6 CHE5 CHE4 CHE3 CHE2 CHE1 CHE0 11111111B 11111111B R/W ■ キャッシュイネーブルレジスタ (CHER) のビット機能 以下に , キャッシュイネーブルレジスタ (CHER) のビットの機能を説明します。 [ ビット 23 ∼ビット 16] CHE7 ∼ CHE0 ( キャッシュ領域設定 7 ∼ 0) 各チップセレクト領域に , 内蔵キャッシュへの取込みの許可 / 禁止を設定します。 174 CHEn キャッシュ領域設定 0 非キャッシュ領域 ( 該当する領域より読み出したデータをキャッシュに保存しません ) 1 キャッシュ領域 ( 該当する領域より読み出したデータをキャッシュに保存します ) 第 4 章 外部バスインタフェース 4.2.7 端子 / タイミングコントロールレジスタ (TCR) 端子 / タイミングコントロールレジスタ (TCR) の構成および機能について説明しま す。 ■ 端子 / タイミングコントロールレジスタ (TCR) の構成 端子 / タイミングコントロールレジスタ (TCR:Terminal and timing Control Register) は , 共通端子機能設定やタイミング制御など , 外部バスインタフェースコントローラの全 般にかかわる機能を制御します。 図 4.2-7 に , 端子 / タイミングコントロールレジスタ (TCR) の構成を示します。 図 4.2-7 端子 / タイミングコントロールレジスタ (TCR) の構成 初期値 0000 00683H 7 6 5 4 3 2 1 0 INIT 時 RST 時 アクセス BREN PSUS PCLR 予約 OHT1 OHT0 RDW1 RDW0 00000000B 0000xxxxB R/W ■ 端子 / タイミングコントロールレジスタ (TCR) のビット機能 以下に , 端子 / タイミングコントロールレジスタ (TCR) の各ビットの機能を説明しま す。 [ ビット 7] BREN (BRQ 入力許可 ) このビットは , BRQ 端子の入力を許可し , 外部バス共有を可能にします。 BREN BRQ 入力許可設定 0 BRQ/BGRNT によるバス共有をしません。 BRQ 入力は無効となります。 1 BRQ/BGRNT によるバス共有を行います。 BRQ 入力は有効となります。 初期状態 ("0") のときは , BRQ の入力を無視します。"1" を設定すると , BRQ 入力が "H" になった後バス開放が可能になった時点で , バスを開放 ( ハイインピーダンス 制御 ) し , BGRNT をアクティブ ("L" 出力 ) にします。 [ ビット 6] PSUS ( プリフェッチ抑止 ) このビットは , すべての領域に対するプリフェッチの一時停止を制御します。 PSUS プリフェッチ制御 0 プリフェッチ許可 1 プリフェッチ抑止 "1" を設定すると , "0" を書き込むまでの間 , 新規のプリフェッチ動作をしません。 175 第 4 章 外部バスインタフェース この間 , プリフェッチバッファへのミスが発生しない限りはプリフェッチバッファ の内容は消去されませんので , プリフェッチを再開する前にビット 5 の PCLR ビッ ト機能によりプリフェッチバッファをクリアしてください。 [ ビット 5] PCLR ( プリフェッチバッファ全クリア ) このビットは , プリフェッチバッファのすべての内容をクリアします。 PCLR プリフェッチバッファ制御 0 通常状態 1 プリフェッチバッファクリア "1" を書き込むと一度だけプリフェッチバッファをすべてクリアします。バッファ クリアが完了すると自動的にビット値は "0" に戻ります。6 ビットの PSUS ビット でプリフェッチを中断 ("1" に設定 ) しておいてからバッファをクリアしてください (PSUS と PCLR の両ビットに同時に "10B" を書き込んで結構です ) 。 [ ビット 4] 予約 このビットは , 予約ビットです。必ず "0" を設定してください。 [ ビット 3, ビット 2] OHT1, OHT0 ( 出力ホールド遅延選択 ) これらのビットは , 外部メモリクロック MCLK 出力に対する外部制御信号出力の ホールドのための遅延値の調整を行います。表 4.2-14 に , これらのビットの組合せ による出力ホールド遅延選択の設定内容を示します。 表 4.2-14 出力ホールド遅延選択の設定内容 OHT1 OHT0 0 0 SYSCLK/MCLK の立下りから出力します。 0 1 SYSCLK/MCLK の立上りから (3ns) 遅延させて出力します。 1 0 SYSCLK/MCLK の立上りから (4ns) 遅延させて出力します。 1 1 SYSCLK/MCLK の立上りから (5ns) 遅延させて出力します。 出力ホールド遅延選択 遅延値は typical 条件下における目標値です。 非同期の読出しおよび書込みストローブ (RD/WR0/WR1/WE/IOWR/IORD) および遅 延させた CS の立下りタイミングは , この遅延値調整の対象にはなりません。 OHT1, OHT0 は動作中に書き換えても誤動作しませんが , タイミング切換え時に一 時外部バス動作が停止します。 176 第 4 章 外部バスインタフェース [ ビット 1, ビット 0] RDW1, RDW0 ( ウェイトサイクル短縮 ) これらのビットは , すべてのチップセレクト領域およびフライバイ用 I/O チャネル に対し , 自動アクセスサイクルウェイトの設定値を , AWR レジスタの設定値はその ままで自動ウェイトサイクルのみを一律に削減することを指示します。アイドルサ イクルやリカバリサイクル , セットアップやホールドサイクルの設定には影響しま せん。表 4.2-15 に , これらのビットの組合せによるウェイトサイクル短縮の設定内 容を示します。 表 4.2-15 ウェイトサイクル短縮の設定内容 RDW1 RDW0 0 0 通常ウェイト (AWR0 ∼ AWR7 の設定値 ) 0 1 AWR0 ∼ AWR7 の設定値の 1/2 (1 ビット右シフト ) 1 0 AWR0 ∼ AWR7 の設定値の 1/4 (2 ビット右シフト ) 1 1 AWR0 ∼ AWR7 の設定値の 1/8 (3 ビット右シフト ) ウェイトサイクル短縮 この機能は , ベースクロックを低速にしている間や , 外部バスクロックの分周比設 定を大きくしている間など , 低速クロックで動作している間 , 過剰なアクセスサイ クルウェイトがかかることを防ぐためのものです。 通常このような場合にウェイトサイクルを設定し直すには , すべての AWR をそれ ぞれ書き換えなければなりませんが , RDW1, RDW0 ビットの機能を使うと , すべて の AWR の設定は高速クロックのときの設定のままで , アクセスサイクルウェイト のみ一度に削減することができます。 クロックを高速に戻す前に , 必ず RDW1, RDW0 ビットは "00B" に設定し直してくだ さい。 177 第 4 章 外部バスインタフェース 4.3 チップセレクト領域の設定例 外部バスインタフェースは全部で 8 領域分のチップセレクト領域が設定できます。 本節では , チップセレクト領域の設定例を説明します。 ■ チップセレクト領域の設定例 各領域のアドレス空間は ASR0 ∼ ASR7 (Area Select Register) と ACR0 ∼ ACR7 (Area Configuration Register) で 4G バイトの空間に , 最小 64K バイト単位で任意に配置するこ とができます。これらのレジスタによって指定された領域に対してバスアクセスを行 うと , アクセスサイクル中に対応するチップセレクト信号 CS0 ∼ CS7 がアクティブ ("L" 出力 ) になります。 ● ASR および ASZ3 ∼ ASZ0 の設定例 • ASR1=0003h ACR1 の ASZ3 ∼ ASZ0=0000B: チップセレクト領域 1 は , 00030000H か ら 0003FFFFH に割り当てられます。 • ASR2=0FFCh ACR2 の ASZ3 ∼ ASZ0=0010B: チップセレクト領域 2 は , 0FFC0000H から 10000000H に割り当てられます。 • ASR3=0011h ACR3 の ASZ3 ∼ ASZ0=0100B: チップセレクト領域 3 は , 00100000H か ら 00200000H に割り当てられます。 このとき , ACR の ASZ3 ∼ ASZ0 ビットが 1M バイトの設定になっていますので , バウ ンダリは 1M バイト単位となり , ASR3 の 19 ∼ 16 ビットは無視されます。リセット後 は , ACR0 に書込みが行われるまでの間 , 00000000H ∼ FFFFFFFFH がチップセレクト領 域 0 に割り当てられます。 チップセレクト領域は , お互いにオーバラップしないように設定してください。 178 第 4 章 外部バスインタフェース 図 4.3-1 に , チップセレクト領域の設定例を示します。 図 4.3-1 チップセレクト領域の設定例 ( 初期値 ) (例) 00000000H 00000000H 00030000H 領域 1 64KB 領域 3 1MB 領域 2 256KB 00040000H 領域 0 00100000H 00200000H 0FFC0000H 0FFFFFFFH FFFFFFFFH FFFFFFFFH 179 第 4 章 外部バスインタフェース 4.4 エンディアンとバスアクセス WR0/WR1 の制御信号は , ビッグエンディアン / リトルエンディアンやデータバス幅 に関係なくデータバスのバイト位置に常に 1 対 1 に対応します。以下に , バスモー ド別に , 設定されたデータバス幅で使用される MB91307 シリーズのデータバスのバ イト位置とそれに対応する制御信号をまとめます。 ■ データバス幅と制御信号の関係 ここでは , バスモード別に , 設定されたデータバス幅で使用されるデータバスのバイト 位置とそれに対応する制御信号をまとめます。 ● 通常バスインタフェース 図 4.4-1 通常バスインタフェースでのデータバス幅と制御信号 a) 32 bit bus幅 data bus D31 D0 制御信号 b) 16 bit bus幅 c) 8 bit bus幅 data bus data bus 制御信号 WR0 (UUB) WR0 (UUB) WR1 (ULB) WR1 (ULB) 制御信号 WR0 (UUB) - - WR2 (LUB) - - - - WR3 (LLB) - - - - (D15~0は未使用) (D23~0は未使用) ● 時分割入出力インタフェース 図 4.4-2 時分割入出力インタフェースでのデータバス幅と制御信号 a) 16 bit bus幅 b) 8 bit bus幅 data bus 出力アドレス 制御信号 data bus 出力アドレス 制御信号 D31 A7~0 A15~8 WR0 WR0 A7~0 WR1 - - - D16 - - - - - - - - - - - - (D15~0は未使用) 180 (D23~0は未使用) 第 4 章 外部バスインタフェース 4.4.1 ビッグエンディアンのバスアクセス MB91307 シリーズは CS0 領域を除いて , 各チップセレクトにビッグエンディアン とリトルエンディアンを切り換えて使用することができます。ACR レジスタの LEND ビットを "0" に設定した場合は , その領域はビッグエンディアンとして扱いま す。通常 , MB91307 シリーズは , ビッグエンディアンで外部バスアクセスを行いま す。 ■ データフォーマット 内部レジスタと外部データバスとの関係は以下のようになります。 ● ワードアクセス (LD, ST 命令実行時 ) 図 4.4-3 ワードアクセスの内部レジスタと外部データバスの関係 内部レジスタ 外部バス D31 AA AA BB BB CC CC DD DD D23 D31 D23 D15 D15 D7 D7 D0 D0 図 4.4-4 ハーフワードアクセスの内部レジスタと外部データバスの関係 a)出力アドレス下位"00" 内部レジスタ D31 D23 D15 外部バス D31 AA D23 BB D15 b)出力アドレス下位"10" 内部レジスタ 外部バス D31 D31 D23 D15 AA D7 D7 D0 D15 AA AA BB BB D7 BB D0 D23 D0 D7 D0 181 第 4 章 外部バスインタフェース 図 4.4-5 バイトアクセスの内部レジスタと外部データバスの関係 a)出力アドレス下位"00" 内部レジスタ D31 D23 b)出力アドレス下位"01" c)出力アドレス下位"10" d)出力アドレス下位"11" 外部バス 内部レジスタ 外部バス 内部レジスタ 外部バス 内部レジスタ 外部バス D31 D31 D31 D31 D31 D31 D31 AA D23 D23 D23 D23 D23 D23 D23 AA D15 D15 D15 D15 D15 D15 D15 D15 AA D7 D7 D7 AA D7 D7 AA D0 D0 D0 D7 D7 AA D0 D7 AA D0 D0 D0 ■ データバス幅 ● 16 ビットバス幅 図 4.4-6 16 ビットバス幅の内部レジスタと外部バスの関係 内部レジスタ 外部バス 出力アドレス下位 “00”“10” D31 D23 D15 AA BB read/write AA CC BB DD D31 D23 CC D07 DD ● 8 ビットバス幅 図 4.4-7 8 ビットバス幅の内部レジスタと外部バスの関係 内部レジスタ D31 AA D23 D15 D07 182 BB CC DD 外部バス 出力アドレス下位 “00”“01”“10”“11” read/write D31 BB CC AA DD AA D0 第 4 章 外部バスインタフェース ■ 外部バスアクセス 外部バスアクセス (16 ビット /8 ビットバス幅 ) をワード / ハーフワード / バイトアクセ ス別に , 図 4.4-8 および図 4.4-9 に示します。また , 以下の項目も合わせて図 4.4-8 およ び図 4.4-9 に示します。 • アクセスバイト位置 • プログラムアドレスと出力アドレス • バスアクセス回数 MB91307 シリーズは , ミスアラインエラーを検出しません。 したがって , ワードアクセスの場合には , プログラムで指定したアドレス下位 2 ビット が "00""01""10""11" であっても , 出力するアドレスの下位 2 ビットはすべて "00" とな り , ハーフワードアクセスの場合には "00""01" のときには "00" に , "00""01" のときに は "10" になります。 ● 16 ビットバス幅 図 4.4-8 16 ビット幅の場合の外部バスアクセス (A) ワードアクセス (a) PA1/PA0="00" (b) PA1/PA0="01" (c) PA1/PA0="10" (d) PA1/PA0="11" →①出力A1/A0="00" →①出力A1/A0="00" →①出力A1/A0="00" →①出力A1/A0="00" ②出力A1/A0="10" ②出力A1/A0="10" ②出力A1/A0="10" ②出力A1/A0="10" LSB MSB ① 00 01 ① 00 01 ① 00 01 ① 00 01 ② 10 11 ② 10 11 ② 10 11 ② 10 11 16ビット (B) ハーフワードアクセス (a) PA1/PA0="00" (b) PA1/PA0="01" (c) PA1/PA0="10" (d) PA1/PA0="11" →①出力A1/A0="00" →①出力A1/A0="00" →①出力A1/A0="10" →①出力A1/A0="10" ① 00 01 10 11 ① 00 01 10 11 ① 00 01 10 11 ① 00 01 10 11 (C) バイトアクセス (a) PA1/PA0="00" (b) PA1/PA0="01" (c) PA1/PA0="10" (d) PA1/PA0="11" →①出力A1/A0="00" →①出力A1/A0="01" →①出力A1/A0="10" →①出力A1/A0="11" ① 00 01 10 11 ① 00 01 10 11 ① 00 01 10 11 ① 00 01 10 11 183 第 4 章 外部バスインタフェース ● 8 ビットバス幅 図 4.4-9 8 ビットバス幅の場合の外部バスアクセス (A) ワードアクセス (a) PA1/PA0="00" (b) PA1/PA0="01" (c) PA1/PA0="10" (d) PA1/PA0="11" →①出力A1/A0="00" →①出力A1/A0="00" →①出力A1/A0="00" →①出力A1/A0="00" ②出力A1/A0="01" ②出力A1/A0="01" ②出力A1/A0="01" ②出力A1/A0="01" ③出力A1/A0="10" ③出力A1/A0="10" ③出力A1/A0="10" ③出力A1/A0="10" ④出力A1/A0="11" ④出力A1/A0="11" ④出力A1/A0="11" ④出力A1/A0="11" MSB LSB ① 00 ① 00 ① 00 ① 00 ② 01 ② 01 ② 01 ② 01 ③ 10 ③ 10 ③ 10 ③ 10 ④ 11 ④ 11 ④ 11 ④ 11 8ビット (B) ハーフワードアクセス (a) PA1/PA0="00" (b) PA1/PA0="01" (c) PA1/PA0="10" (d) PA1/PA0="11" →①出力A1/A0="00" →①出力A1/A0="00" →①出力A1/A0="10" →①出力A1/A0="10" ②出力A1/A0="01" ②出力A1/A0="01" ②出力A1/A0="11" ②出力A1/A0="11" ① 00 ① 00 ② 01 ② 01 00 00 01 01 10 10 ① 10 ① 10 11 11 ② 11 ② 11 (C) バイトアクセス (a) PA1/PA0="00" (b) PA1/PA0="01" (c) PA1/PA0="10" (d) PA1/PA0="11" →①出力A1/A0="00" →①出力A1/A0="00" →①出力A1/A0="10" →①出力A1/A0="10" ① 00 00 00 00 01 01 01 10 10 10 10 11 11 01 184 ① ① 11 ① 11 第 4 章 外部バスインタフェース ■ 外部デバイスとの接続例 図 4.4-10 に , MB91307 シリーズと外部デバイスとの接続例を示します。 図 4.4-10 MB91307 シリーズと外部デバイスとの接続例 本LSI D31 | D24 D23 | D16 WR0 00 D31 D15 | D08 WR0 01 D24D23 D07 | D00 WR0 10 D16D15 *) 16ビット/8ビットデバイスの場合は、本LSIの MSB側のデータバスを使用します。 WR0 11 D08D07 0 D00 32ビットデバイス (00~11 アドレス下位2ビット) D15 *) 1 D08D07 0 D00 D07 D00 *) 16ビットデバイス 8ビットデバイス (0/1 アドレス下位1ビット) 185 第 4 章 外部バスインタフェース 4.4.2 リトルエンディアンのバスアクセス リトルエンディアン (LER) を設定した領域に対しては , リトルエンディアンで外部 バスアクセスを行います。 MB91307 シリーズのリトルエンディアンバスアクセスは , ビッグエンディアン時の バスアクセス動作を利用し , 基本的にはビッグエンディアン時の出力アドレスの順 番と制御信号の出力は同じで , データバスのバイト位置をバス幅に応じてスワップ することにより実現しています。 接続時には , ビッグエンディアン領域とリトルエンディアン領域を物理的に分ける 必要がありますので , 十分注意が必要です。 ■ リトルエンディアンとビッグエンディアンの相違点 リトルエンディアンとビッグエンディアンの相違点を以下に説明します。 出力するアドレスの順番はビッグエンディアンとリトルエンディアンで変わりませ ん。 16/8 ビットバス幅で使用するデータバス制御信号は , ビッグエンディアンとリトルエ ンディアンで変わりません。 ● ワードアクセス ビッグエンディアンのアドレス "00" に対応する MSB 側のバイトデータが , リトルエン ディアンでは LSB 側のバイトデータになります。 ワードアドレスの場合は, ワード内の4バイトすべてのバイト位置がひっくりかえりま す。 "00" → "11", "01" → "10", "10" → "01", "11" → "00" ● ハーフワードアクセス ビッグエンディアンのアドレス "0" に対応する MSB 側のバイトデータが , リトルエン ディアンでは LSB 側のバイトデータになります。 ハーフワードアクセスの場合は, ハーフワード内の2バイトのバイト位置がひっくりか えります。 "0" → "1", "1" → "0" ● バイトアクセス ビッグエンディアン / リトルエンディアンとも同じです。 ■ リトルエンディアン領域に対する制限事項 • リトルエンディアン領域に対してプリフェッチを許可している場合は , その領域に 対するアクセスは必ずワードアクセスで行ってください。プリフェッチバッファに 読み込まれたデータをワード長以外でアクセスすると , 正しくエンディアン変換が 行われず , 誤ったデータを読み込んでしまいます。これは , エンディアン変換機構 のハードウェア的な制限によるものです。 • リトルエンディアン領域には , 命令コードを配置しないでください。 186 第 4 章 外部バスインタフェース ■ データフォーマット 内部レジスタと外部データバスとの関係は以下のようになります。 図 4.4-11 ワードアクセスの内部レジスタと外部データバスの関係 (1)ワードアクセス(LD,ST命令実行時) 内部レジスタ 外部バス D31 D31 DD AA D23 D23 CC BB D15 D15 BB CC D7 D7 AA DD D0 D0 図 4.4-12 ハーフワードアクセスの内部レジスタと外部データバスの関係 (2)ハーフワードアクセス(LDUH,STH命令実行時) a)出力アドレス下位"00" b)出力アドレス下位"10" 内部レジスタ 外部バス D31 D31 BB D23 D23 AA D15 D15 AA D7 D7 BB D0 D0 内部レジスタ 外部バス D31 D31 D23 D23 D15 D15 AA BB BB AA D7 D7 D0 D0 図 4.4-13 バイトアクセスの内部レジスタと外部データバスの関係 (3)バイトアクセス(LDUB,STB命令実行時) a)出力アドレス下位"00" b)出力アドレス下位"01" 内部レジスタ 外部バス 内部レジスタ 外部バス D31 D31 D31 D31 AA D23 D23 D23 D23 AA D15 D15 D15 D15 c)出力アドレス下位"10" d)出力アドレス下位"11" 内部レジスタ 外部バス 内部レジスタ 外部バス D31 D31 D31 D31 D23 D15 D23 D23 D23 D15 D15 D15 AA D7 D7 D7 AA D0 D7 D7 AA D0 D0 D7 D7 AA D0 D0 D7 AA D0 D0 AA D0 187 第 4 章 外部バスインタフェース ■ データバス幅 データバス幅ごとに , 内部レジスタと外部データバスとの関係を示します。 ● 16 ビットバス幅 図 4.4-14 16 ビットバス幅の内部レジスタと外部データバスの関係 内部レジスタ 外部バス 出力アドレス下位 "00" "10" D31 D23 D15 D07 read/write AA BB DD BB CC AA D31 D23 CC DD ● 8 ビットバス幅 図 4.4-15 8 ビットバス幅の内部レジスタと外部データバスの関係 内部レジスタ 外部バス 出力アドレス下位 "00" "01" "10" "11" D31 D23 D15 D07 188 AA BB CC DD read/write DD CC BB AA D31 第 4 章 外部バスインタフェース ■ 外部デバイスとの接続例 MB91307 シリーズと外部デバイスとの接続例を , バス幅ごとに示します。 ● 16 ビットバス幅 図 4.4-16 MB91307 シリーズと外部デバイスとの接続例 (16 ビットバス幅 ) 本LSI D31 | D24 D23 | D16 WR0 0 D15 WR0 1 D08D07 0 D00 big endian 領域 D15 1 D08D07 D00 little endian 領域 ● 8 ビットバス幅 図 4.4-17 MB91307 シリーズと外部デバイスとの接続例 (8 ビットバス幅 ) 本LSI D31 | D24 WR0 D07 D00 big endian 領域 D07 D00 little endian 領域 189 第 4 章 外部バスインタフェース 4.4.3 ビッグエンディアンとリトルエンディアンの外部ア クセスの比較 バス幅に対するワードアクセス , ハーフワードアクセスおよびバイトアクセスにつ いて , ビッグエンディアンとリトルエンディアンの外部アクセスの比較を示します。 ■ ワードアクセス ビッグエンディアンモード 16 ビット バス幅 内部Reg 外部端子 address: "0" "2" D31 D31 AA AA CC BB BB DD 制御端子 リトルエンディアンモード 内部Reg WR0 WR0 WR1 BB CC AA WR1 CC - - - DD - - - ① ② D16 CC - - - DD - - - D00 D00 ① 内部Reg D31 ② 外部端子 制御端子 address: "0" "1" "2" "3" D31 AA AA BB CC DD D24 BB - - - - WR0 CC DD 内部Reg 外部端子 制御端子 WR0 - address: "0" "1" "2" "3" D31 AA DD CC BB AA D24 BB - - - - - - - - - CC - - - - - - - - - - DD - - - - - D00 D31 D00 ① ② ③ ④ 190 制御端子 address: "0" "2" D31 AA DD BB D31 D16 8 ビット バス幅 外部端子 ① ② ③ ④ - 第 4 章 外部バスインタフェース ■ ハーフワードアクセス ビッグエンディアンモード 16 ビット バス幅 内部Reg 外部端子 D31 address: "0" D31 AA D00 内部Reg 外部端子 制御端子 WR0 BB WR1 AA - - BB - - D16 リトルエンディアンモード address: "0" D31 D31 BB 内部Reg 外部端子 address: "2" D31 D31 CC AA WR1 AA - - D00 BB - - ① D00 制御端子 WR0 DD WR1 CC - - DD - - D16 内部Reg 外部端子 address: "2" D31 D31 DD 内部Reg 外部端子 端子 AA D00 BB CC WR1 CC - - D00 DD - - 内部Reg 外部端子 制御端子 WR0 - - - - - D00 address: "0" "1" D31 D31 BB AA D24 - - AA D00 BB address: "2" "3" D31 CC DD D24 - - CC D00 DD - - - - - - - 内部Reg 外部端子 制御端子 WR0 - - - - - ① ② WR0 ① ② - - D00 制御端子 D00 ① ② D31 WR0 ① - - 内部Reg 外部端子 制御端子 D16 ① address: "0" "1" D31 D31 AA BB D24 - - WR0 D16 ① 8 ビット バス幅 制御端子 address: "2" "3" D31 D31 DD CC D24 - - CC D00 DD 制御端子 WR0 - - - - - - - D00 ① ② 191 第 4 章 外部バスインタフェース ■ バイトアクセス ビッグエンディアンモード 16 ビット バス幅 内部Reg 外部端子 address: "0" D31 D31 AA A リトルエンディアンモード 制御端子 WR0 内部Reg - D16 外部端子 address: "0" D31 D31 AA - AA - D00 - AA ① ① 内部Reg 外部端子 制御端子 address: "1" D31 D31 内部Reg 外部端子 - WR1 BB D16 - - BB D00 - BB ① ① 内部Reg 外部端子 address: "2" D31 D31 CC 制御端子 WR0 内部Reg 外部端子 address: "2" D31 D31 CC - D16 D00 - CC ① 内部Reg 外部端子 ① 内部Reg 外部端子 制御端子 - - DD DD WR1 D16 - DD D00 ① 192 WR1 - - D00 制御端子 address: "3" D31 D31 address: "3" D31 D31 D16 WR0 - - CC 制御端子 - D16 - D00 WR1 D16 - D00 制御端子 address: "1" D31 D31 - BB WR0 - D16 - D00 制御端子 - DD ① 第 4 章 外部バスインタフェース ビッグエンディアンモード 8 ビット バス幅 内部Reg 外部端子 address: "0" D31 D31 AA D24 D00 リトルエンディアンモード 制御端子 WR0 内部Reg 外部端子 address: "0" D31 D31 A D24 - - - D00 D31 D00 address: "1" D31 BB D24 ① 内部Reg 外部端子 制御端子 D31 WR0 address: "1" D31 BB D24 D31 D00 address: "2" D31 CC D24 - - D00 内部Reg 外部端子 制御端子 WR0 address: "2" D31 D31 CC D24 D31 D00 address: "3" D31 DD D24 - - D00 - CC ① 内部Reg 外部端子 制御端子 D31 WR0 address: "3" D31 DD D24 制御端子 WR0 - - - - D00 ① WR0 - - DD 制御端子 - ① 内部Reg 外部端子 - BB ① - CC WR0 - ① 内部Reg 外部端子 制御端子 - - BB - AA ① 内部Reg 外部端子 WR0 - - AA 制御端子 - DD ① 193 第 4 章 外部バスインタフェース 4.5 通常バスインタフェースの動作 通常バスインタフェースの動作について説明します。 ■ 通常バスインタフェース 通常バスインタフェースでは , 読出しアクセス / 書込みアクセスともに 2 クロックサイ クルが基本バスサイクルになります。 通常バスインタフェースにおける以下の動作について , タイミングチャートを示して 説明します。 • 基本タイミング ( アクセスが連続する場合 ) • WE+ バイト制御タイプ • 読出し→書込み • 書込み→書込み • 自動ウェイトサイクル • 外部ウェイトサイクル • 同期書込みイネーブル出力 - CS 遅延設定 - CS → RD / WE セットアップ , RD / WE → CS ホールド設定 - DMA フライバイ転送 (I/O →メモリ ) - DMA フライバイ転送 ( メモリ→ I/O) 194 第 4 章 外部バスインタフェース 4.5.1 基本タイミング アクセスが連続する場合の基本タイミングを示します。 ■ 基本タイミング ( アクセスが連続する場合 ) (TYP3 ∼ TYP0=0000B, AWR=0008H) の場合の基本タイミングを , 図 4.5-1 に示します。 図 4.5-1 基本タイミング ( アクセスが連続する場合 ) MCLK A[24:0] #2 #1 AS CSn RD READ D[31:16] #1 #2 WRn WRITE D[31:16] #1 #2 • AS は , バスアクセス開始サイクルに 1 サイクルアサートします。 • A24 ∼ A0 は , ワード / ハーフワード / バイトアクセスの先頭バイト位置のアドレス をバスアクセス開始サイクルからバスアクセス終了サイクルまで出力します。 • CS0 ∼ CS7 は , AWR0 ∼ AWR7 レジスタの W02 ビットが "0" のときは , AS と同じ タイミングでアサートし , 連続するアクセスがある場合 , CS0 ∼ CS7 がネゲートし ません。AWR レジスタの W00 ビットが "0" の場合はバスサイクル終了後に CS0 ∼ CS7 をネゲートし , W00 ビットが "1" の場合はバスアクセス終了の 1 サイクル後にネ ゲートします。 • RD ,WR0, WR1 は , バスアクセス第 2 サイクルからアサートします。AWR レジスタ W15 ∼ W12 ビットのウェイトサイクルを挿入した後ネゲートします。RD ,WR0, WR1 をアサートするタイミングは AWR レジスタ W01 ビットを "1" に設定することにより 1 サイクル遅らせることができます。ただし , WR0, WR1 は内部状態により W01 ビッ トを "0" に設定した場合も第 2 サイクルより遅れることがあります。 • TYP3 ∼ TYP0=0x0xB のように WR0, WR1 を使用する設定の場合 WE は "H" 固定で す。 • 読出しアクセスの場合 , RD アサート後ウェイトサイクルが終了したサイクルの MCLK の立上りで D31 ∼ D0 を取り込みます。 • ライトアクセスの場合 , WR0, WR1 をアサートしたタイミングから D31 ∼ D0 にデー タを出力します。 195 第 4 章 外部バスインタフェース 4.5.2 WE+ バイト制御タイプの動作 WE+ バイト制御タイプの動作タイミングを示します。 ■ WE+ バイト制御タイプの動作タイミング (TYP3 ∼ TYP0=0010B, AWR=0008H) の場合の動作タイミングを , 図 4.5-2 に示します。 図 4.5-2 WE+ バイト制御タイプのタイミングチャート MCLK A[24:0] AS CSn * RD WR0 READ WR1 D[31:16] WE WR0 WRITE WR1 D[31:16] • AS,CSn,RD, A24∼A0, D31∼D16は,「4.5.1 基本タイミング」と同様の動作をします。 WE は , バスアクセス第 2 サイクルからアサートします。AWR レジスタ W15 ∼ W12 ビットのウェイトサイクルを挿入した後ネゲートします。RD,WR0, WR1 をアサー トするタイミングは , AWR レジスタ W01 ビットを "1" に設定することにより 1 サ イクル遅らせることができます。ただし , 内部状態により W01 ビットを "0" に設定 した場合も第 2 サイクルより遅れることがあります (「4.5.1 基本タイミング」の WR0, WR1 と同様の動作をします ) 。 196 第 4 章 外部バスインタフェース • WR0, WR1 は , バイトイネーブル信号としてアクセスするバイト位置を負論理で示 します。バスアクセス開始サイクルからバスサイクル終了までアサートします。ア ドレスと同じタイミングで変化します。読出し / 書込みアクセスともにアクセスす るバイト位置を示します。 • 書込みアクセスの場合 , WE をアサートしたタイミングから D31 ∼ D16 にデータを 出力します。TYP3 ∼ TYP0=0x0xB ( WR0, WR1 使用 ) , TYP3 ∼ TYP0=0x1xB (WE + バイト制御 ) の領域を混在させる場合には , 使用するすべての領域で , 必ず以下の設 定をしてください ( 詳細は「4.12 外部バスインタフェースの使用上の注意」を参照 してください ) 。 - 読出し→書込みアイドルサイクルを最低 1 サイクル以上設定してください。 - 書込みリカバリサイクルを最低 1 サイクル以上設定してください。 197 第 4 章 外部バスインタフェース 読出し→書込み動作 4.5.3 読出し→書込み動作のタイミングを示します。 ■ 読出し→書込み動作タイミング (TYP3 ∼ TYP0=0000B, AWR=0048H) の場合の動作タイミングを , 図 4.5-3 に示します。 図 4.5-3 読出し→書込みのタイミングチャート リード アイドル* ライト MCLK A[24:0] AS CSn RD WRn D[31:16] • AWR レジスタ W07, W06 ビットの設定により , 0 ∼ 3 サイクルまでのアイドルサイ クル挿入が可能です。 • 読出し側の CS 領域の設定が有効になります。 • 読出しアクセスの次のアクセスが書込みアクセスまたは別の領域へのアクセスで ある場合 , このアイドルサイクルを挿入します。 198 第 4 章 外部バスインタフェース 書込み→書込み動作 4.5.4 書込み→書込み動作のタイミングを示します。 ■ 書込み→書込み動作 (TYP3 ∼ TYP0=0000B, WR=0018H) の場合の動作タイミングを , 図 4.5-4 に示します。 図 4.5-4 書込み→書込み動作のタイミングチャート ライト ライトリカバリ* ライト MCLK A[24:0] AS CSn WRn D[31:16] • WR レジスタ W05, W04 ビットの設定により , 0 ∼ 3 サイクルまでの書込みリサイク ルを挿入可能です。 • すべての書込みサイクル後に , リカバリサイクルが発生します。 • 設定したバス幅以上のアクセスによって書込みアクセスが分割された場合も , 書込 みリカバリサイクルは発生します。 199 第 4 章 外部バスインタフェース 4.5.5 自動ウェイトサイクル 自動ウェイトサイクルの動作タイミングを示します。 ■ 自動ウェイトサイクルタイミング (TYP3 ∼ TYP0=0000B, AWR=2008H) の場合の動作タイミングを , 図 4.5-5 に示します。 図 4.5-5 自動ウェイトサイクルのタイミングチャート 基本サイクル ウェイトサイクル * MCLK A[24:0] AS CSn RD D[31:16] WRn D[31:16] AWR レジスタ W15 ∼ W12 ビット ( ファーストウェイトサイクル ) の設定によって自 動ウェイトサイクルを , 0 ∼ 15 まで設定できます。 図 4.5-5 では , 自動ウェイトサイクルを 2 サイクル挿入し , 合計 4 サイクルのアクセス となっています。自動ウェイトを設定した場合 , バスサイクルは最小で 2 サイクル + ( ファーストウェイトサイクル ) となります。書込みの場合は内部状態によりさらに長 くなることがあります。 200 第 4 章 外部バスインタフェース 4.5.6 外部ウェイトサイクル 外部ウェイトサイクルの動作タイミングを示します。 ■ 外部ウェイトサイクルタイミング (TYP3 ∼ TYP0=0001B, AWR=2008H) の場合の動作タイミングを , 図 4.5-6 に示します。 図 4.5-6 外部ウェイトサイクルのタイミングチャート 基本サイクル 自動ウェイト 2サイクル RDYによる ウェイト サイクル MCLK A[24:0] AS CSn RD D[31:16] WR1 D[31:16] RDY 解除 ウェイト ACR レジスタ TYP0 ビットを "1" に設定し , 外部 RDY 入力端子を有効にすることによ り , 外部ウェイトサイクルを挿入することができます。 201 第 4 章 外部バスインタフェース 4.5.7 同期書込みイネーブル出力 同期書込みイネーブル出力の動作タイミングを示します。 ■ 同期書込みイネーブル出力の動作タイミング (TYP3 ∼ TYP0=0000B, AWR=0000H) の場合の動作タイミングを , 図 4.5-7 に示します。 図 4.5-7 同期書込みイネーブル出力のタイミングチャート MCLK A[31:16] #2 #1 AS CSn * RD READ D[31:16] #1 #2 WRn WRITE D[31:16] #1 #2 • 同期書込みイネーブルとした場合 (AWR の W03 ビットが "1") , 以下のような動作と なります。 • WR0, WR1 , WE 端子出力は , AS 端子出力がアサートされているタイミングで , 同期 書込みイネーブル出力をアサートします。外部バスへの書込みが行われる場合 , 同 期書込みイネーブル出力は "L" を出力します。外部バスからの読出しが行われる場 合 , 同期書込みイネーブル出力は "H" を出力します。 • 同期書込みイネーブル出力をアサートした次のクロックサイクルで , 外部データ出 力端子から書込みデータを出力します。内部バスの都合により書込みデータを出力 することができなかった場合 , 書込みデータが出力できるまで同期書込みイネーブ ル出力のアサートを延長することがあります。 • 読出しストローブ出力 (RD) は, WR0, WR1 ,WE出力タイミング設定の内容にかかわ らず , 非同期読出しストローブとして機能します。データの入出力制御にそのまま 使用してください。 • 同期書込みイネーブル出力を使用する場合 , 以下の制限があります。 - 同期書込みイネーブル出力のタイミングが無意味なものとなりますので , 以下の 追加ウェイト設定はしないでください。 202 第 4 章 外部バスインタフェース ・CS → RD/WE セットアップ設定 (AWR の W01 ビットには , 常に "0" を書いて ください ) ・ファーストウェイトサイクル設定 (AWR の W15 ∼ W12 ビットには , 常に "0000" を書いてください ) - 同期書込みイネーブル出力のタイミングが無意味なものとなりますので , 以下の アクセスタイプ設定 (ACR レジスタ中の TYPE3 ∼ TYPE0 ビット ( ビット 3 ∼ビッ ト 0) ) は設定しないでください。 ・マルチプレクスバス設定 (ACR の TYPE2 ビットには , 常に "0" を書いてくだ さい ) ・RDY 入力有効設定 (ACR の TYPE0 ビットには , 常に "0" を書いてください ) • 同期書込みイネーブル出力の場合 , バースト長は常に "1" (BST1, BST0 ビットに "0") を設定してください。 203 第 4 章 外部バスインタフェース 4.5.8 CS 遅延設定 CS 遅延設定の動作タイミングを示します。 ■ CS 遅延設定の動作タイミング (TYP3 ∼ TYP0=0000B, AWR=000CH) の場合の動作タイミングを , 図 4.5-8 に示します。 図 4.5-8 CS 遅延設定の動作タイミングチャート MCLK A[24:0] AS CSn RD READ D[31:16] WRn WRITE D[31:16] W02 ビットが "1" のときは AS アサートの次のサイクルからアサートし , 連続するアク セスがある場合はネゲート期間を挿入します。 204 第 4 章 外部バスインタフェース 4.5.9 CS → RD/WE セットアップおよび RD/WE → CS ホールド設定 CS → RD/WE セットアップおよび RD/WE → CS ホールド設定の動作タイミングを 示します。 ■ CS → RD/WE セットアップ , RD/WE → CS ホールド設定の動作タイミング (TYP3 ∼ TYP0=0000B, AWR=000BH) の場合の動作タイミングを , 図 4.5-9 に示します。 図 4.5-9 CS → RD/WE セットアップ , RD/WE → CS ホールド設定のタイミングチャート MCLK A[24:0] AS CSn CS→RD/WR Delay RD/WR→CS Delay RD READ D[31:16] WRn WRITE D[31:16] • AWR レジスタ W01 ビットを "1" に設定することにより , CS → RD/WE セットアッ プディレイを設定可能です。チップセレクトアサート後 , 読出し / 書込みストロー ブまでの期間を延長する場合に設定します。 • AWR レジスタ W00 ビットを "1" に設定することにより , RD/WE → CS ホールドディ レイを設定可能です。 読出し / 書込みストローブネゲート後 , チップセレクトネゲー トまでの期間を延長する場合に設定します。 • CS → RD/WE セットアップディレイ (W01 ビット ) と RD/WE → CS ホールドディレ イ (W00 ビット ) は , 独立に設定できます。 • 同一チップセレクト領域内で , チップセレクトをネゲートしないまま連続してアク セスする場合は , CS → RD/WE セットアップディレイ , RD/WE → CS ホールドディ レイともに挿入されません。 • アドレス確定からのセットアップサイクルおよびアドレス確定のホールドサイク ルが必要な場合は , アドレス→ CS 遅延設定 (AWR レジスタ W02 ビット ) を "1" に 設定してください。 205 第 4 章 外部バスインタフェース 4.5.10 DMA フライバイ転送 (I/O →メモリ ) DMA フライバイ転送 (I/O →メモリ ) の動作タイミングを示します。 ■ DMA フライバイ転送 (I/O →メモリ ) の動作タイミング (TYP3 ∼ TYP0=0000B, AWR=0008H, IOWR=51H) の場合の動作タイミングチャートを , 図 4.5-10 に示します。このタイミングチャートは , メモリ側のウェイト設定なしの場 合です。 図 4.5-10 DMA フライバイ転送 (I/O →メモリ ) のタイミングチャート 基本サイクル I/Oウェイト I/Oホールド I/Oアイドル サイクル * ウェイト* サイクル 基本サイクル I/Oウェイト I/Oホールド サイクル * ウェイト* MCLK A[24:0] AS CSn WRn D[31:16] DACKnX(IORD) • IOWR0 ∼ IOWR2 レジスタの HLD ビットを "1" に設定することにより , I/O 読出し サイクルを 1 サイクル延長します。 • IOWR0 ∼ IOWR2 レジスタの IW3 ∼ IW0 ビットの設定により , 0 ∼ 15 サイクルま でのウェイトサイクルを挿入可能です。 • メモリ側にもウェイトの設定がある場合 (AWR15 ∼ AWR12 が "0" でないとき ) は , I/O ウェイト (IW3 ∼ IW0 ビット ) と比較して大きい方の値をウェイトサイクルとし て使用します。 206 第 4 章 外部バスインタフェース 4.5.11 DMA フライバイ転送 ( メモリ→ I/O) DMA フライバイ転送 ( メモリ→ I/O) の動作タイミングを示します。 ■ DMA フライバイ転送 ( メモリ→ I/O) の動作タイミング (TYP3 ∼ TYP0=0000B, AWR=0008H, IOWR=51H) の場合の動作タイミングチャートを , 図 4.5-11 に示します。このタイミングチャートは , メモリ側のウェイト設定なしの場 合です。 図 4.5-11 DMA フライバイ転送 ( メモリ→ I/O) のタイミングチャート 基本サイクル I/Oウェイト I/Oホールド I/Oアイドル サイクル *1 ウェイト*2 サイクル 基本サイクル I/Oウェイト I/Oホールド サイクル *1 ウェイト *2 MCLK A[24:0] AS CSn RD D[31:16] DACKnX(IOWR) • IOWR0 ∼ IOWR2 レジスタの HLD ビットを "1" に設定することにより , I/O 読出し サイクルを 1 サイクル延長します。 • IOWR0 ∼ IOWR2 レジスタの WR1 ∼ WR0 ビットの設定により , 0 ∼ 3 サイクルま での書込みリカバリサイクルを挿入することができます。 • 書込みリカバリサイクルを "1" 以上に設定した場合は , 書込みアクセスの後には必 ず書込みリカバリサイクルを挿入します。 • IOWR0 ∼ IOWR2 レジスタの IW3 ∼ IW0 ビットの設定により , 0 ∼ 15 サイクルま でのウェイトサイクルを挿入することができます。 • メモリ側にもウェイトの設定がある場合 (AWR15 ∼ AWR12 が "0" でないとき ) は , I/O ウェイト (IW3 ∼ IW0 ビット ) と比較して大きい方の値をウェイトサイクルとし て使用します。 207 第 4 章 外部バスインタフェース バーストアクセスの動作 4.6 外部バスインタフェースにおいては , 1 回のアクセスシーケンスで複数のデータを連 続して転送する動作を , バーストアクセスとよびます。バーストアクセス以外の通 常のアクセスサイクルを , シングルアクセスとよびます。1 回のアクセスシーケンス とは , AS および CS のアサートから始まり , CS がネゲートされるまでを示します。 複数のデータとは , その領域に設定されたバス幅単位で 2 単位以上のデータを示し ます。 本節では , バーストアクセスの動作について説明します。 ■ バーストアクセスの動作 (first wait cycle=1, inpage access wait cycle=1, TYP3 ∼ TYP0=0000B, AWR=3208H) の場合 の動作タイミングチャートを , 図 4.6-1 に示します。 図 4.6-1 バーストアクセスのタイミングチャート 第一サイクル ウェイト *1 インページアクセス ウェイト*2 インページアクセス ウェイト インページアクセス ウェイト MCLK A[24:0] AS(LBA) CSn RD WRn WR WRn BAA D[31:16] • バーストサイクルは, ページモードROMなどの非同期メモリやバーストフラッシュ メモリなど , まとまったデータを読む際のアクセスサイクルの効率化とともに , 通 常の非同期メモリからの読出しにも使用できます。 • バーストサイクル時のアクセスシーケンスは , 以下の 2 種類のサイクルに分かれま す。 - ファーストアクセスサイクル バーストアクセスの開始サイクルで , 通常のシングルアクセスサイクルと同じ動 作をします。 - ページアクセスサイクル ファーストアクセスサイクルに引き続き , CS や RD ( 読出しストローブ ) をアサー 208 第 4 章 外部バスインタフェース トしたまま行うサイクルです。シングルサイクル時とは異なるウェイトサイクル を設定することができます。バースト長設定から決定されるアドレスバウンダリ 内にある間 , ページアクセスサイクルは繰り返し行われます。アドレスバウンダ リ内のアクセスが終了するとバーストアクセスは終了し , CS がネゲートされま す。 • AWR レジスタの W15 ∼ W12 ビットの設定により , 0 ∼ 15 サイクルの第 1 ウェイト サイクルを挿入することができます。このとき , ファーストアクセスサイクルは最 小で , ウェイトサイクル +2 サイクルとなります ( 図 4.6-1 に示すタイミングチャー トでは 3 サイクル ) 。 • AWR レジスタの W11 ∼ W8 ビットの設定により , 0 ∼ 15 サイクルのページウェイ トサイクルを挿入することができます。このとき , ページアクセスサイクルは , ペー ジウェイトサイクル +1 サイクルとなります ( 図 4.6-1 に示すタイミングチャートで は 2 サイクル ) 。 • ACR レジスタの BST ビットの設定により , バースト長を 1, 2, 4, 8 に設定できます。 バースト長を "1" に設定するとシングルアクセスとなり , 第 1 サイクルのみが繰り 返されます。ただし , データバス幅 32 ビット (ACR レジスタの BST ビットを "10B") に設定した場合は , バースト長を "4" 以下に設定してください ( バースト長 8 に設定 した場合は誤動作します ) 。 • バーストアクセスを有効にした場合 , プリフェッチアクセスまたは設定したデータ バス幅よりも大きなサイズで転送するときにバーストアクセスを行います。例えば , データバス幅を 8 ビット , バースト長を "4" に設定した領域にワードアクセスした 場合バイトアクセスを 4 回ではなく , 4 バースト 1 回のアクセスを行います。 • バースト設定をした領域では RDY 入力は無視されますので , TYP3 ∼ TYP0=0xx1B に設定しないでください。 • LBA , BAA 信号は , バースト Flash メモリ用で , LBA でアクセスの開始を示し BAA でアドレスのインクリメントを指示します。 • バーストアクセス中設定したウェイト後に A24 ∼ A0 を更新します。 209 第 4 章 外部バスインタフェース 4.7 アドレス / データマルチプレクスインタフェース アドレス / データマルチプレクスインタフェースの動作として , 以下の 3 つの場合に ついて説明します。 ・外部ウェイトなし ・外部ウェイトあり ・CS → RD/WE セットアップ設定 ■ 外部ウェイトなし (TYP3 ∼ TYP0=0100B, AWR=0008H) の場合の動作タイミングチャートを , 図 4.7-1 に示 します。 図 4.7-1 アドレス / データマルチプレクスインタフェースのタイミングチャート ( 外部ウェイトなし ) MCLK A[24:0] address[31:0] AS CSn RD READ D[31:16] address[15:0] data[15:0] WE WRITE D[31:16] address[15:0] data[15:0] • ACR レジスタの TYP3 ∼ TYP0=01xxB に設定することにより , アドレス / データマ ルチプレクスインタフェース設定が可能です。 • アドレス / データマルチプレクスインタフェースに設定した場合 , データバス幅 (DBW1, DBW0 ビット ) の設定は 8 ビットまたは 16 ビットに設定してください。 • アドレス / データマルチプレクスインタフェースでは , アドレス出力サイクル 2 サ イクル + データサイクル 1 サイクルの計 3 サイクルが基本アクセスサイクルとなり ます。 • アドレス出力サイクルでは , 出力アドレスラッチ信号として を AS アサートします。 • A24 ∼ A0 には , 時分割バスサイクル中 , 通常インタフェースと同様にアクセスの先 頭を示すアドレスを出力しますので, アドレス/データマルチプレクスインタフェー スで 8/16 ビット以上のアドレスを使用したい場合に使用してください。 • 自動ウェイト (AWR15 ∼ AWR12) , 読出し→書込みアイドルサイクル (AWR7, 210 第 4 章 外部バスインタフェース AWR6) , 書込みリカバリ (AWR5, AWR4) , アドレス→ CS 遅延 (AWR2) , CS → RD/ WE セットアップ遅延 (AWR1) , RD/WE → CS ホールド遅延 (AWR0) の設定は , 通常 インタフェースと同様に設定することができます。 • アドレス / データマルチプレクスインタフェースを設定した領域では , バースト長 を "1" (DBW1, DBW0=00B) に設定してください。 ■ 外部ウェイトあり (TYP3 ∼ TYP0=0101B, AWR=1008H) の場合の動作タイミングチャートを , 図 4.7-2 に示 します。 図 4.7-2 アドレス / データマルチプレクスインタフェースのタイミングチャート ( 外部ウェイトあり ) MCLK A[24:0] address[31:0] AS CSn RD READ D[31:16] address[15:0] data[15:0] WE WRITE D[31:16] address[15:0] data[15:0] ACR レジスタの TYP3 ∼ TYP0=01x1B と設定することにより , アドレス / データマルチ プレクスインタフェースにおいて RDY 入力を有効とすることができます。 211 第 4 章 外部バスインタフェース ■ CS → RD/WE セットアップ設定 (TYP3 ∼ TYP0=0101B, AWR=100BH) の場合の動作タイミングチャートを , 図 4.7-3 に示 します。 図 4.7-3 アドレス / データマルチプレクスインタフェースのタイミングチャート ( CS → RD/WE セットアップ設定 ) MCLK A[24:0] address[31:0] AS CSn RD READ D[31:16] address[15:0] data[15:0] WE WRITE D[31:16] address[15:0] data[15:0] CS → RD /WE セットアップ遅延 (AWR1) を "1" に設定すると , 図 4.7-3 に示すようにマ ルチプレクスアドレス出力サイクルが 1 サイクル延長され , アドレスを AS の立上り エッジで直接ラッチすることが可能となります。MCLK を使用せずに AS を ALE (Address Latch Enable) ストローブとして使用したい場合にこの設定を用いてください。 212 第 4 章 外部バスインタフェース 4.8 プリフェッチ動作 プリフェッチ動作について説明します。 ■ プリフェッチ動作 外部バスインタフェースコントローラは , 8 ビット× 16 本で構成されるプリフェッチ バッファを内蔵しています。 TCR レジスタの PSUS ビットが "0" の場合 , ACR レジスタの PFEN ビットをセット ("1") してある領域に対する読出しアクセスが発生すると , それ以降に続くアドレスに対し てプリフェッチを行い , プリフェッチバッファ内に蓄積します。 蓄積されたアドレスに対して内部バスからのアクセスがあると , 外部アクセスをせず にプリフェッチバッファに先読みされたデータを返します。これにより , 外部バス領域 への連続したアクセスでの待ち時間を少なくすることができます。 ● プリフェッチによる外部アクセスを開始する基本条件 プリフェッチによる外部バスアクセスは , 以下の条件が揃っている場合に発生します。 • TCR レジスタの PSUS ビットが "0" であること。 • スリープまたはストップモードでないこと。 • プリフェッチ許可されたチップセレクト領域への外部バスの読出しアクセスが行 われたこと。ただし , DMA アクセスおよびリードモディファイライト系命令による 読出しアクセスを除きます。 • プリフェッチアクセス以外の外部バスアクセス要求 ( プリフェッチを許可していな い領域への外部バス領域アクセスや , 外部バス領域との間の DMA 転送など ) が発生 していないこと。 • 次の 1 回のプリフェッチアクセスで取り込む部分のプリフェッチバッファがすべて 空であること。 以上の条件が成立する間 , プリフェッチアクセスを続けます。なお , プリフェッチアク セス後に , プリフェッチを許可していない領域への外部バス領域アクセスが発生した 後でも , プリフェッチバッファクリア条件が発生しない限り , プリフェッチ許可領域へ のプリフェッチアクセスは引き続き行われます。 複数のプリフェッチ許可領域と複数のプリフェッチ禁止領域とを混在させてアクセス している場合 , プリフェッチバッファは常に最後にアクセスされたプリフェッチ許可 領域に対するプリフェッチを行い , そのデータを保持しています。この場合 , プリ フェッチ禁止領域へのアクセスは , プリフェッチバッファの状態には一切影響を及ぼ さないため , プリフェッチ禁止のデータアクセスとプリフェッチ許可の命令フェッチ とが混在しても , プリフェッチバッファ内のデータを無駄にすることはありません。 213 第 4 章 外部バスインタフェース ● プリフェッチアクセスの一時停止と任意クリア TCR レジスタの PSUS ビットに "1" をセットすると , プリフェッチは一時停止します。 PSUS ビットに "0" を設定すると再開します。このとき , ミス発生 , PCLR ビットのセッ トなどのバッファクリアが発生しなければ , バッファ内容は保持されます。 TCR レジスタの PCLR ビットに "1" をセットすると , プリフェッチバッファをすべてク リアします。バッファのクリアは , PSUS ビットをセットし , プリフェッチを中断して いるときに行ってください。 アドレス上位 16 ビットが変化する境界 = チップセレクト領域の最小単位 (64K バイト ごと ) では , プリフェッチは一度停止します。境界を超えた場合 , 一度バッファの読出 しミスが発生し , 引き続き新しい領域でプリフェッチを開始します。 ● 1 回のプリフェッチアクセス動作の単位 1 回のプリフェッチアクセスの単位は , ACR レジスタの DBW ビット ( バス幅 ) と BST ビット ( バースト長 ) によって決まります。 プリフェッチアクセスは常に DBW ビットで設定されたバス幅いっぱいのサイズでア クセスし , BST ビットで設定されたバースト長の回数のアクセスを 1 回のアクセスで 行います。すなわち , BST ビットに "00B" 以外を設定した場合 , プリフェッチアクセス は常にページモード / バーストモードでのアクセスとなります。対応していない ROM/ RAM やアクセスタイム不足には注意してください (AWR レジスタの W15 ∼ W08 ビッ トに適切な値を設定してください ) 。 バーストアクセス時は , バースト長に依存したアドレスバウンダリ内でしか連続アク セスをしません。 そのため , バッファの空きバイト数が例えば 4 バイトあったとしても , バウンダリをまたいでいる場合 , 4 バイト分を 1 回でアクセスすることはできません ( プリフェッチバッファ先頭が xxxxxx0EH で , バッファに 4 バイトの空きがあり , バス 幅 16 ビットであっても , 2 バーストを設定した場合は , 次のプリフェッチアクセスでは xxxxxx0EH と xxxxxx0FH の 2 バイトしか取り込みません ) 。 以下に , 2 つの例を示します。 • バス幅 16 ビット , バースト長 2 を設定した領域 1 回のプリフェッチでバッファに読み込まれるデータ量は , 4 バイト分となります。 この場合 , プリフェッチバッファに 4 バイト分の空きができるまでプリフェッチア クセスは行われません。 • バス幅 8 ビット , バースト長 8 を設定した領域 1 回のプリフェッチでバッファに読み込まれるデータ量は , 8 バイト分となります。 この場合 , プリフェッチバッファに 8 バイト分の空きができるまでプリフェッチア クセスは行われません。 214 第 4 章 外部バスインタフェース ● バースト長設定とプリフェッチ効率 前項の「1 回のプリフェッチアクセス動作の単位」で説明した 1 回のプリフェッチアク セスが行われている間に , プリフェッチアクセス以外の外部バスアクセス要求や , プリ フェッチバッファへのミスが発生した場合でも , 実行中のプリフェッチバッファのア クセスが終了するまでは , それらのアクセス要求は待たされます。 そのため , バースト長をあまり大きく設定すると , プリフェッチ以外のバスアクセスの 効率や反応が低下します。反面 , バースト長を 1 に設定すると , バースト / ページアク セスメモリを接続している場合でも常にシングルアクセスを行うため , 読込みサイク ルの無駄が多く発生します。 また , 1 回のプリフェッチアクセスで読み込まれるデータが多い設定になっていると , それだけプリフェッチバッファの空きができないとプリフェッチアクセスが開始でき ません。このため , プリフェッチバッファへのアクセス頻度が少ないと外部バスがアイ ドル状態になり易くなります。例えば , バス幅が 16 ビット , バースト長 8 を設定した 場合 , 1 回のプリフェッチでバッファに読み込まれるデータ量は , 16 バイト分となるた め , プリフェッチバッファがすべて空にならないと , 新たなプリフェッチアクセスがで きなくなります。 これらのことを念頭に置いた上で , 使用状況や環境に応じて最適なバースト長設定を 調整してください。一般に , バースト / ページアクセスのできない非同期メモリを接続 する場合は , バースト長は 1 ( シングルアクセス ) を設定するのが最適です。逆に , バー スト / ページアクセスサイクルの短いメモリを接続する場合は , バースト長は 1 ( シン グルアクセス ) 以外を設定するのが最適です。こちらの場合は , バス幅に応じて 1 回で 8 バイト ( バッファの半分 ) を読み込む設定をするのが最適ですが , 外部アクセスの頻 度や外部アクセスクロックの分周比設定などによっても条件は変わってきます。 ● プリフェッチバッファからの読込み プリフェッチバッファ内にストアされたデータは , 内部バスからのアクセスでアドレ スが一致したものがあれば読み出され , 外部へのアクセスを行いません。バッファの読 込みは , 順方向であればアドレスが連続していなくてもヒット可能 ( 最大 16 バイト ) なので, 短い前方への分岐などでも極力外部バスへの2度読みが発生しないようになっ ています。 内部バスからのアクセスで , 現在プリフェッチアクセス中のアドレスが一致した場合 , プリフェッチアクセスが完了してデータが取り込まれるまでの間は , 内部に対して ウェイトを返します。この場合 , バッファミス扱いにはなりません。 DMA 転送での読出しで , プリフェッチバッファ内のアドレスが一致した場合は , プリ フェッチバッファ内のデータは使用されず , 外部バスから新たに読込みを行います。こ の場合 , バッファミス扱いになりますが , 引き続きプリフェッチを継続はせずに , プリ フェッチ許可領域への新たな外部アクセスが発生するまでは , プリフェッチアクセス を行いません。 215 第 4 章 外部バスインタフェース ● プリフェッチバッファのクリア , 更新 プリフェッチバッファは , 以下の条件のいずれかが成立した場合にすべてクリアされ ます。 • TCR レジスタの PCLR ビットに "1" が書き込まれたとき • バッファ読出しミスが発生したとき バッファ読出しミスとは , 以下のものをいいます。 - プリフェッチ許可領域への読出しアクセスで , バッファ内のアドレスに一致する ものがない場合。この場合 , 外部バスに対して新たにアクセスを行います。この 際の読出しデータは , バッファ内にはストアされませんが , 続くアドレスからプ リフェッチアクセスを開始し , バッファにストアしていきます。 - プリフェッチ許可領域への読出しアクセスで , リードモディファイライト系命令 による読出しである場合。この場合 , 外部バスに対して新たにアクセスを行いま す。この際の読出しデータは , バッファ内にはストアされません。また , 続けて プリフェッチアクセスは行いません ( 次にそのアドレスに対し書込みが行われる ため ) 。 - プリフェッチ許可領域への読出しアクセスで , DMA 転送による読出しである場 合。この場合 , 外部バスに対して新たにアクセスを行います。この際の読出しデー タは , バッファ内にはストアされません。また , 続けてプリフェッチアクセスは 行いません。 • バッファ書込みヒットが発生したとき バッファ書込みヒットとは , 以下のものをいいます。 - プリフェッチ許可領域への書込みアクセスで , バッファ内のアドレスに 1 バイト でも一致するものがあった場合。この場合 , 外部バスに対して新たにアクセスを 行いますが , プリフェッチアクセスは , 新たな読出しアクセスが発生するまでは 行われません。 プリフェッチバッファは , 以下の条件が成立した場合に一部のみクリアされます。 • バッファ読出しヒットが発生したとき この場合 , ヒットしたアドレス以前のバッファのみクリアされます。 ● プリフェッチ許可領域に対する制限事項 リトルエンディアン領域に対してプリフェッチを許可している場合は , その領域に対 するアクセスは必ずワードアクセスで行ってください。プリフェッチバッファに読み 込まれたデータをワード長以外でアクセスすると , 正しくエンディアン変換が行われ ず , 誤ったデータを読み込んでしまいます。これは , エンディアン変換機構のハード ウェア的な制限によるものです。 216 第 4 章 外部バスインタフェース 4.9 DMA アクセス動作 DMA アクセス動作について説明します。 ■ DMA アクセス動作 以下の 5 つの DMA 動作について説明します。 • DMA フライバイ転送 (I/O →メモリ ) • DMA フライバイ転送 ( メモリ→ I/O) • 2 サイクル転送 ( 内部 RAM →外部 I/O, RAM) • 2 サイクル転送 ( 外部→ I/O) • 2 サイクル転送 (I/O →外部 ) 217 第 4 章 外部バスインタフェース DMA フライバイ転送 (I/O →メモリ ) 4.9.1 DMA フライバイ転送 (I/O →メモリ ) の動作について説明します。 ■ DMA フライバイ転送 (I/O →メモリ ) (TYP3 ∼ TYP0=0000B, AWR=0008H, IOWR=41H) の場合の動作タイミングチャートを , 図 4.9-1 に示します。 図 4.9-1 は , メモリ側のウェイト設定なしの場合です。 図 4.9-1 DMA フライバイ転送 (I/O →メモリ ) のタイミングチャート I/Oウェイト I/Oホールド 基本サイクル サイクル *1 ウェイト*2 MCLK A[24:0] memory address AS CSn WRn D[31:16] DACKn FR30 互換 モード DEOPn 基本 モード DACKn DEOPn IORD DREQn デマンドモード時の センスタイミング *1 I/Oウェイトサイクルとして0~15サイクルまで設定可能です。 *2 I/Oホールドウェイトのあり,なしを設定可能です。 • AWR レジスタ W01 ビットを "1" に設定することにより , CS → RD /WE セットアッ プディレイを設定できます。チップセレクトアサート後 , 読出し / 書込みストロー ブまでの期間を延長する場合に設定します。 218 第 4 章 外部バスインタフェース • AWR レジスタ W00 ビットを "1" に設定することにより , RD /WE → CS ホールド ディレイを設定できます。読出し / 書込みストローブネゲート後 , チップセレクト ネゲートまでの期間を延長する場合に設定します。 • CS → RD/WE セットアップディレイ (W01 ビット ) と RD /WE → CS ホールドディ レイ (W00 ビット ) は , 独立に設定できます。 • 同一チップセレクト領域内で , チップセレクトをネゲートしないまま連続してアク セスする場合は , CS → RD/WE セットアップディレイ , RD/WE → CS ホールドディ レイともに挿入されません。 • アドレス確定からのセットアップサイクルおよびアドレス確定のホールドサイク ルが必要な場合は , アドレス→ CS 遅延設定 (AWR レジスタ W02 ビット ) を "1" に 設定してください。 データ出力側である I/O に対して , I/O ウェイトサイクルと I/O ホールドウェイトサイ クルにより延長された , 3 バスサイクル分の読出しストローブが発生しています。受取 り側であるメモリに対しては , I/O ウェイトサイクルで延長された , 2 バスサイクル分 の書込みストローブが発生しています。I/O ホールドウェイトサイクルは , 書込みスト ローブには影響を与えません。ただし , アドレスと CS 信号は , フライバイによるバス アクセスサイクル終了まで保持されます。 219 第 4 章 外部バスインタフェース DMA フライバイ転送 ( メモリ→ I/O) 4.9.2 DMA フライバイ転送 ( メモリ→ I/O) の動作について説明します。 ■ DMA フライバイ転送 ( メモリ→ I/O) (TYP3 ∼ TYP0=0000B, AWR=0008H, IOWR=41H) の場合の動作タイミングチャートを , 図 4.9-2 に示します。 図 4.9-2 は , メモリ側のウェイト設定なしの場合です。 図 4.9-2 DMA フライバイ転送 ( メモリ→ I/O) のタイミングチャート 基本サイクル I/Oウェイト I/Oホールド サイクル *1 ウェイト*2 MCLK A[24:0] memory address AS CSn RD D[31:16] DACKn FR30 互換 モード DEOPn 基本 モード DACKn DEOPn IORD DREQn デマンドモード時の センスタイミング *1 I/Oウェイトサイクルとして0~15サイクルまで設定可能です。 *2 I/Oホールドウェイトのあり,なしを設定可能です。 • IOWR0 ∼ IOWR2 レジスタの HLD ビットを "1" に設定することにより , I/O 読出し サイクルを 1 サイクル延長します。 • IOWR0 ∼ IOWR2 レジスタの WR1, WR0 ビットの設定により , 0 ∼ 3 サイクルまで の書込みリカバリサイクルを挿入できます。 220 第 4 章 外部バスインタフェース • 書込みリカバリサイクルを "1" 以上に設定した場合は , 書込みアクセスの後には必 ず書込みリカバリサイクルを挿入します。 • IOWR0 ∼ IOWR2 レジスタの IW3 ∼ IW0 ビットの設定により , 0 ∼ 15 サイクルま でのウェイトサイクルを挿入できます。 • メモリ側にもウェイトの設定がある場合 (AWR15 ∼ AWR12 が "0" でないとき ) は , I/O ウェイト (IW3 ∼ IW0 ビット ) と比較して大きい方の値をウェイトサイクルとし て使用します。 参考: データ出力側であるメモリに対して , I/O ウェイトサイクルと I/O ホールドウェ イトサイクルにより延長された , 3 バスサイクル分の読出しストローブが発生して います。受取り側である I/O に対しては , I/O ウェイトサイクルで延長された , 2 バ スサイクル分の書込みストローブが発生しています。I/O ホールドウェイトサイク ルは , 書込みストローブには影響を与えません。ただし , アドレスと CS 信号は , フ ライバイによるバスアクセスサイクル終了まで保持されます。 221 第 4 章 外部バスインタフェース 4.9.3 2 サイクル転送 ( 内部 RAM →外部 I/O, RAM) 2 サイクル転送 ( 内部 RAM →外部 I/O, RAM) の動作について説明します。 外部 I/O, RAM →内部 RAM もタイミングは同じです。 ■ 2 サイクル転送 ( 内部 RAM →外部 I/O, RAM) (TYP3 ∼ TYP0=0000B, AWR=0008H, IOWR=00H) の場合の動作タイミングチャートを , 図 4.9-3 に示します。 図 4.9-3 は , I/O 側のウェイト設定なしの場合です。 図 4.9-3 2 サイクル転送 ( 内部 RAM →外部 I/O, RAM) のタイミングチャート 基本サイクル MCLK A[24:0] I/O address AS CSn(I/O側) WRn D[31:16] DACKn FR30 互換 モード DEOPn 基本 モード DACKn DEOPn DREQn デマンドモード時の センスタイミング • バスアクセスは , DMAC 転送でない場合のインタフェースと同様です。 • DACKn/DEOPn は , 内部 RAM アクセスのサイクルでは出力されません。 222 第 4 章 外部バスインタフェース 2 サイクル転送 ( 外部→ I/O) 4.9.4 2 サイクル転送 ( 外部→ I/O) の動作について説明します。 ■ 2 サイクル転送 ( 外部→ I/O) (TYP3 ∼ TYP0=0000B, AWR=0008H, IOWR=00H) の場合の動作タイミングチャートを , 図 4.9-4 に示します。 図 4.9-4 は , メモリ , I/O のウェイト設定なしの場合です。 図 4.9-4 2 サイクル転送 ( 外部→ I/O) のタイミングチャート 基本サイクル 基本サイクル MCLK A[24:0] memory address idle I/O address AS CSn RD CSn WRn D[31:16] DACKn FR30 互換 モード DEOPn 基本 モード DACKn DEOPn DREQn • バスアクセスは , DMAC 転送でない場合のインタフェースと同様です。 • 基本モードでは, DACKn/DEOPnは転送元バスアクセス, 転送先バスアクセスの両方 で出力されます。 223 第 4 章 外部バスインタフェース 2 サイクル転送 (I/O →外部 ) 4.9.5 2 サイクル転送 (I/O →外部 ) の動作について説明します。 ■ 2 サイクル転送 (I/O →外部 ) (TYP3 ∼ TYP0=0000B, AWR=0008H, IOWR=00H) の場合の動作タイミングチャートを , 図 4.9-5 に示します。 図 4.9-5 は , メモリ , I/O のウェイト設定なしの場合です。 図 4.9-5 2 サイクル転送 (I/O →外部 ) のタイミングチャート 基本サイクル 基本サイクル MCLK A[24:0] I/O address idle memory address AS CSn WRn CSn RD D[31:16] DACKn FR30 互換 モード DEOPn 基本 モード DACKn DEOPn DREQn • バスアクセスは , DMAC 転送でない場合のインタフェースと同様です。 • 基本モードでは DACKn/DEOPn は転送元バスアクセス , 転送先バスアクセスの両方 で出力されます。 224 第 4 章 外部バスインタフェース 4.10 バスアービトレーション バス権開放およびバス権獲得のタイミングチャートを示します。 ■ バス権開放 図 4.10-1 にバス権開放のタイミングチャートを , 図 4.10-2 にバス権獲得のタイミング チャートを示します。 図 4.10-1 バス権開放のタイミングチャート MCLK A23~A0 AS CSn * RD リード D31~D16 BRQ BGRNT 1サイクル 225 第 4 章 外部バスインタフェース 図 4.10-2 バス権獲得のタイミングチャート MCLK A23~A0 AS CSn * WE ライト D31~D16 BRQ BGRNT 1サイクル • TRC レジスタの BREN ビットを "1" に設定することにより , BRQ/BGRNT によるバ スアービトレーションを行うことができます。 • バス権開放時は , 端子をハイインピーダンスにしてから 1 サイクル後に BGRNT を アサートします。 • バス権獲得時は , BGRNT をネゲートしてから 1 サイクル後に各端子をアクティブに します。 • CSn は , ACR0 ∼ ACR7 レジスタの SREN ビットがセットしてある場合のみハイイ ンピーダンスにします。 • CSER レジスタで許可している領域がすべて共有許可 (ACR レジスタの SREN ビッ トが "1") の場合 , AS, BAA , RD,WE ,WR0, WR1 をハイインピーダンスにします。 226 第 4 章 外部バスインタフェース 4.11 レジスタの設定手順 レジスタの設定手順を説明します。 ■ レジスタの設定手順 外部バスインタフェースに関する設定は , 以下の手順で行ってください。 (1) レジスタの内容を書き換える場合は , 必ず CSER レジスタの対応する領域を使用し ない設定 ("0") にして行ってください。"1" のまま設定を変更した場合 , その前後の アクセスは保証されません。 (2) レジスタの変更は , 以下の手順で行ってください。 1) 該当領域に対応する CSER のビットを "0" に設定してください。 2) ASR と ACR をワードアクセスで同時に設定してください。 ASR, ACR をハーフワードでアクセスする場合は , ASR 設定後 , ACR を設定し てください。 3) AWR を設定してください。 4) 該当領域に対応する CHER のビットを設定してください。 5) 該当領域に対する CSER のビットを設定してください。 (3) CS0 領域はリセット解除後から有効になっており , プログラム領域として使用して いる場合は CSER を "1" のままで書き換える必要がありますが , この場合は内部ク ロックが低い初期状態で上記 2) ∼ 4) の設定を行ってください。そのあと , クロッ クを高速クロックに切り換えてください。 (4) プリフェッチ許可を設定した領域のレジスタ値の変更は以下の手順で行ってくださ い。 1) 該当領域に対応する CSER のビットを "0" に設定してください。 2) TCR レジスタの PSUS ビットおよび PCLR ビットをともに "1" に設定し てください。 3) ASR と ACR をワードアクセスで同時に設定してください。ASR,ACR をハー フワードでアクセスする場合は,ASR 設定後,ACR を設定してください。 4) AWR を設定してください。 5) 該当領域に対応する CHER のビットを設定してください。 6) TCR レジスタの PSUS ビットおよび PCLR ビットに "0" を設定してください。 7) 該当領域に対応する CSER のビットを "1" に設定してください。 227 第 4 章 外部バスインタフェース 4.12 外部バスインタフェースの使用上の注意 外部バスインタフェースを使用する上で注意しなければならない事項について説明 します。 ■ 使用上の注意事項 WR0, WR1 を書込みストローブとして使用する領域 (TYP3 ∼ TYP0=0x0xB) と WE を書 込みストローブとして使用する領域 (TYP3 ∼ TYP0=0x1xB) を混在させる設定にした場 合 , 使用するすべての領域で , 必ず以下の設定をしてください。 • 読出し→書込みアイドルサイクルを最低 1 サイクル以上設定してください (AWR W07, W06=00B 以外 ) 。 • 書込みリカバリサイクルを最低 1 サイクル以上設定してください (AWR W05, W04 = 00B 以外 ) 。 ただし , WR0, WR1 を書込みストローブとして使用する領域 (TYP3 ∼ TYP0=0x0xB) で WR0, WR1 無効な (ROM のみ接続されている ) 場合は , 上記制限はありません。また , WEを書込みストローブとして使用する領域 (TYP3∼TYP0=0x1xB) の設定でアドレス→ RD/WE セ ッ ト ア ッ プ サ イ ク ル (W01=1) , RD/WE → ア ド レ ス ホ ー ル ド サ イ ク ル (W00=1) をともに設定している場合も上記制限はありません。 制限する理由は , 以下のとおりです。 TYPE3 ∼ TYPE0=0x1xB と設定して WE を書込みストローブとして使用する領域では , WR0/ WR1 端子が , バイトイネーブル (UUB/ULB) 出力となります。この場合 , バイトイ ネーブル出力はアドレスおよび CS 出力と同一のタイミングで , 各バイト位置のイネー ブル信号を出力します。 このため , WR0/ WR1 端子を非同期書込みストローブとして使用している領域へのア クセスが前後にあった場合 , そちらの領域において , CS と WR0/ WR1 間の交流規格を 満足できなくなり , 誤った書込みが発生する可能性があります。 読出し→書込みアイドルサイクルおよび書込みリカバリサイクルを設定した場合 , こ れらのサイクルでは , CS はアサートされません ("H" レベルを維持 ) ので , 上記交流規 格を満足することができます。 WR0/ WR1 端子を非同期書込みストローブとして使用している領域で , CS と WR0/ WR1 間の交流規格 (セットアップおよびホールド) に対し余裕がある場合は, この制限 は必要ありません。 228 第5章 I/O ポート この章では , I/O ポートの概要 , レジスタの構成お よび機能について説明します。 5.1 I/O ポートの概要 5.2 I/O ポートのレジスタ 229 第 5 章 I/O ポート 5.1 I/O ポートの概要 I/O ポートの概要を説明します。 ■ I/O ポートの基本ブロックダイヤグラム MB91307 シリーズは , 各端子に対応する外部バスインタフェースやペリフェラルが入 出力として端子を使用しない設定になっているとき , I/O ポートとして使用することが できます。 図 5.1-1 に , I/O ポートの基本的な構成を示します。 図 5.1-1 I/O ポートの基本ブロックダイヤグラム ペリフェラル入力 Port Bus 0 1 ペリフェラル出力 PDR 1 Pin 0 PFR DDR PDR:Port Data Register DDR:Data Drection Register PFR:Port Function Register I/O ポートは , PDR ( ポートデータレジスタ :Port Data Register) , DDR ( ポート方向レジ スタ :Data Direction Register) および PFR ( ポート機能レジスタ :Port Function Register) か ら構成されています。 ■ I/O ポートのモード I/O ポートには , 以下の 3 つのモードがあります。 • ポート入力モード時 (PFR="0" & DDR="0") - PDR 読出し : 対応する外部端子のレベルが読み出されます。 - PDR 書込み :PDR に設定値が書き込まれます。 • ポート出力モード時 (PFR="0" & DDR="1") - PDR 読出し :PDR の値が読み出されます。 - PDR 書込み :PDR の値が対応する外部端子に出力されます。 230 第 5 章 I/O ポート • ペリフェラル出力モード時 (PFR="1" & DDR="x") - PDR 読出し : 対応するペリフェラル出力の値が読み出されます。 - PDR 書込み :PDR に設定値が書き込まれます。 <注意事項> • I/O ポート関連レジスタに対しては , バイトアクセスしてください。 • ポート 0 ∼ポート A ( ポート 9 のビット 3 を除く ) を外部バス端子として使用している 場合は , 外部バス機能が優先されます。このため , 外部バス端子として動作させている ときに DDR レジスタを書き換えても入出力の切換えは起こりません。DDR レジスタ の値が有効になるのは , PFR レジスタを切換えて汎用端子としたときです。 231 第 5 章 I/O ポート 5.2 I/O ポートのレジスタ I/O ポートで使用するレジスタの構成および機能について説明します。 ■ ポートデータレジスタ (PDR) の構成 ポートデータレジスタ (PDR:Port Data Register) の構成は , 以下のとおりです。 図 5.2-1 ポートデータレジスタ (PDR) の構成 PDR2 7 6 5 4 3 2 1 0 初期値 アドレス:00000002H P27 P26 P25 P24 P23 P22 P21 P20 XXXXXXXXB PDR6 7 6 5 4 3 2 1 0 初期値 アドレス:00000006H P67 P66 P65 P64 P63 P62 P61 P60 XXXXXXXXB PDR7 7 6 5 4 3 2 1 0 初期値 アドレス:00000007H ― ― ― ― ― ― ― P70 - - - - - - - XB PDR8 7 6 5 4 3 2 1 0 初期値 アドレス:00000008H ― ― P85 ― ― P82 P81 P80 - - X - - XXXB PDR9 7 6 5 4 3 2 1 0 初期値 アドレス:00000009H P97 P96 P95 P94 P93 P92 P91 P90 XXXXXXXXB PDRA 7 6 5 4 3 2 1 0 初期値 アドレス:0000000AH PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 XXXXXXXXB PDRB 7 6 5 4 3 2 1 0 初期値 PB6 PB5 PB4 PB3 PB2 PB1 PB0 XXXXXXXXB アドレス:0000000BH PB7 PDRG 7 6 5 4 3 2 1 0 初期値 アドレス:00000010H ― ― ― ― ― PG2 PG1 PG0 - - - - - XXXB PDRH 7 6 5 4 3 2 1 0 初期値 PH6 PH5 PH4 PH3 PH2 PH1 PH0 XXX00XXXB アドレス:00000011H PH7 PDRI 7 6 5 4 3 2 1 0 初期値 アドレス:00000012H ― ― PI5 PI4 PI3 PI2 PI1 PI0 - - XXXXXXB PDRJ 7 6 5 4 3 2 1 0 初期値 PJ0 XXXXXXXXB アドレス:00000013H PJ7 PJ6 PJ5 PJ4 PJ3 PJ2 PJ1 • PDR2 ∼ PDRJ は , I/O ポートの入出力データレジスタです。 • 対応する DDR0 ∼ DDRJ, PFR6 ∼ PFRI で , 入出力制御が行われます。 232 第 5 章 I/O ポート ■ データ方向レジスタ (DDR) の構成 データ方向レジスタ (DDR:Data Direction Register) の構成は , 以下のとおりです。 図 5.2-2 データ方向レジスタ (DDR) の構成 DDR2 7 アドレス:00000602H P27 DDR6 7 アドレス:00000606H P67 6 5 4 3 2 1 0 P26 P25 P24 P23 P22 P21 P20 6 5 4 3 2 1 0 P66 P65 P64 P63 P62 P61 P60 0 DDR7 7 6 5 4 3 2 1 アドレス:00000607H ― ― ― ― ― ― ― DDR8 7 6 5 4 3 2 1 アドレス:00000608H ― ― P85 ― ― P82 P81 DDR9 7 6 5 4 3 2 1 0 P96 P95 P94 P93 P92 P91 P90 6 5 4 3 2 1 0 PA6 PA5 PA4 PA3 PA2 PA1 PA0 6 5 4 3 2 1 0 アドレス:00000609H P97 DDRA 7 アドレス:0000060AH PA7 DDRB 7 アドレス:0000060BH PB7 PB6 PB5 7 6 5 4 3 アドレス:00000400H ― ― ― ― ― DDRH 7 6 5 4 3 0 初期値 アクセス P80 - - 0 - - 000B R/W 2 1 0 2 1 0 7 6 5 4 3 2 1 0 PI4 PI3 PI2 PI1 PI0 アドレス:00000402H ― ― PI5 DDRJ 7 6 5 4 3 2 1 0 PJ6 PJ5 PJ4 PJ3 PJ2 PJ1 PJ0 アドレス:00000403H PJ7 初期値 アクセス 00000000B R/W 初期値 アクセス 00000000B R/W 初期値 アクセス 00000000B R/W 初期値 アクセス PG2 PG1 PG0 - - - - - 000B R/W アドレス:00000401H PH7 PH6 PH5 PH4 PH3 PH2 PH1 PH0 DDRI 初期値 アクセス 00000000B R/W 初期値 アクセス 0 P70 R/W B PB4 PB3 PB2 PB1 PB0 DDRG 初期値 アクセス 00000000B R/W 初期値 アクセス 00011000B R/W 初期値 アクセス - - 000000B R/W 初期値 アクセス 00000000B R/W DDR2 ∼ DDRJ は , 対応する I/O ポートの入出力方向をビット単位で制御します。 • PFR=0 のとき - DDR=0: ポート入力 - DDR=1: ポート出力 • PFR=1 のとき - DDR=0: ペリフェラル出力 - DDR=1: ペリフェラル出力 233 第 5 章 I/O ポート ■ ポート機能レジスタ (PFR) の構成 ポート機能レジスタ (PFR:Port Function Register) の構成は , 以下のとおりです。 図 5.2-3 ポート機能レジスタ (PFR) の構成 PFR6 7 6 5 4 3 2 1 0 初期値 アクセス アドレス:00000616H A23E A22E A21E A20E A19E A18E A17E A16E 11111111B R/W PFR7 7 6 5 4 3 2 1 0 初期値 アクセス ― ― A24E - - - - - - - 1B R/W 1 0 初期値 アクセス ― - - 1 - - 0- - B R/W 0 初期値 アクセス SYSE 0 - 001101B R/W アドレス:00000617H ― ― PFR8 7 ― ― ― 6 5 4 3 2 WRXE ― BRQE ― 2 1 アドレス:00000618H ― ― PFR9 7 6 5 4 3 ― BAAE ASXE MCIN アドレス:00000619H WEXE PFRA 7 アドレス:0000061AH CS7E PFRB1 7 アドレス:0000061BH DES1 PFRB2 7 7 アドレス:00000410H ― PFRH MCKE MCEE 6 5 4 3 2 1 0 初期値 アクセス CS6E CS5E CS4E CS3E CS2E CS1E CS0E 11111111B R/W 6 5 4 3 2 1 0 初期値 アクセス 00000000B R/W AK12 AK11 AK10 DES0 AK02 AK01 AK00 6 5 4 3 2 1 0 初期値 アクセス 00 - - - - - - B R/W アドレス:0000061CH DRDE DWRE PFRG ― 6 ― ― ― ― ― ― 5 4 3 2 1 0 初期値 アクセス - - - - 0000B R/W ― ― ― DES2 AK22 AK21 AK20 7 6 5 4 3 2 1 0 初期値 アクセス アドレス:00000411H TEST I2CE TOE2 TOE1 TOE0 SCE2 SOE2 ― 0000000 - B R/W PFRI 7 6 5 4 3 2 1 0 初期値 アクセス ― - - 00 - 00 - B R/W アドレス:00000412H ― ― SCE1 SOE1 ― SCE0 SOE0 PFR6 ∼ PFRI は , 対応する外部バスインタフェースやペリフェラルの出力をビット単 位で制御します。 <注意事項> PFRH のビット 7 (TEST) は必ず "0" にしてください。 234 第 5 章 I/O ポート ■ ポート機能レジスタ (PFR) の機能 以下に各 PFR について , その初期値と機能をまとめます。 表 5.2-1 ポート機能レジスタ (PFR) の機能 (1 / 5) レジスタ名 ビット名 ビット値 機 能 0 汎用ポート 1 アドレス出力 ( 初期状態 ) 0 汎用ポート 1 アドレス出力 ( 初期状態 ) 0 汎用ポート 1 アドレス出力 ( 初期状態 ) 0 汎用 ポート 1 アドレス出力 ( 初期状態 ) 0 汎用ポート 1 アドレス出力 ( 初期状態 ) 0 汎用ポート 1 アドレス出力 ( 初期状態 ) 0 汎用ポート 1 アドレス出力 ( 初期状態 ) 0 汎用ポート 1 アドレス出力 ( 初期状態 ) 0 汎用ポート 1 アドレス出力 ( 初期状態 ) ― なし (P82 ビットを BRQ 端子にし た場合に BGRNT 専用端子になり ます ) 0 汎用ポート 1 BRQ 0 汎用ポート 1 WR1 出力 0 汎用ポート 1 CS 出力 ( 初期値 ) 0 汎用ポート 1 CS 出力 ( 初期値 ) A16E A17E A18E A19E PFR6 (A16E ∼ A23E) [P60/A16 ∼ P67/A23] A20E A21E A22E A23E PFR7 (A24) [P70/A24] PFR8 (BRQE) [P81/ , BGRNT P82/ BRQ] A24E ― BRQE PFR8 (WRXE) [P85/WR1/ULB] WRXE PFRA (CS0E) [PA0/CS0] CS0E PFRA (CS1E) [PA1/CS1] CS1E 235 第 5 章 I/O ポート 表 5.2-1 ポート機能レジスタ (PFR) の機能 (2 / 5) レジスタ名 ビット名 PFRA (CS2E) [PA2/CS2] CS2E PFRA (CS3E) [PA3/CS3] CS3E PFRA (CS4E) [PA4/CS4] CS4E PFRA (CS5E) [PA5/CS5] CS5E PFRA (CS6E) [PA6/CS6] CS6E PFRA (CS7E) [PA7/CS7] CS7E PFR9 (SYSE) [P90/SYSCLK] PFR9 (MCEE) [P91] PFR9 (MCKE) [P92/MCLK] PFR9 (MCKE) [P92/MCLK] PFR9 (MCIN) , DDR9 (P93) [P93] PFR9 (ASXE) [P94/AS/LBA] 236 ビット値 0 汎用ポート 1 CS 出力 ( 初期値 ) 0 汎用ポート 1 CS 出力 ( 初期値 ) 0 汎用ポート 1 CS 出力 ( 初期値 ) 0 汎用ポート 1 CS 出力 ( 初期値 ) 0 汎用ポート 1 CS 出力 ( 初期値 ) 0 汎用ポート 1 CS 出力 ( 初期値 ) 0 汎用ポート 1 SYSCLK 出力使用時 "1" を設定し てください ( 初期値 ) 。 0 汎用ポート ( 初期値 ) 1 設定禁止。 0 汎用ポート 1 メモリクロック出力使用時 "1" を 設定してください ( 初期値 ) 。 0 汎用ポート 1 メモリクロック出力使用時 "1" を 設定してください ( 初期値 ) 。 SYSE MCEE MCKE MCKE MCIN, P93 機 能 0, 0 設定禁止。 0, 1 設定禁止。 1, 0 汎用入力ポート , MCLK は内部ク ロック (MCLK) が入力されます ( 初期値 ) 。 1, 1 汎用出力ポート , MCLK は内部ク ロック (MCLK) が入力されます。 0 汎用ポート ( 初期値 ) 1 汎用メモリ / バーストモードメモ リ使用時に設定してください。 ASXE 第 5 章 I/O ポート 表 5.2-1 ポート機能レジスタ (PFR) の機能 (3 / 5) レジスタ名 PFR9 (BAAE) [P95/BAA] PFRA (WEXE) [P97/WE] PFRB1 (AK02, 01, 00) [PB1/DACK0] PFRB1 (DES0) , DDRB (PB2) [PB2/DEOP0] PFRB1 (AK12, AK11, AK10) [PB4/DACK1] ビット名 ビット値 0 汎用ポート ( 初期値 ) 1 バーストモードメモリ使用時に設 定してください。 0 汎用ポート ( 初期値 ) 1 16 ビットメモリ使用時に設定し てください。 BAAE WEXE AK02, AK01, AK00 * DES0, PB2 AK12, AK11, AK10 * 機 能 0, 0, 0 汎用ポート ( 初期値 ) 0, 0, 1 DACK0 出力 ( フライバイ転送時 FR30 互換 ) 0, 1, 0 DACK0 出力 (2 サイクル転送 RD タイミング FR30 互換 ) 1, 0, 0 DACK0 出力 (2 サイクル転送 WE タイミング FR30 互換 ) 1, 1, 0 DACK0 出力 (2 サイクル転送 WE, RD タイミング FR30 互換 ) 1, 1, 1 DACK0 出力 ( チップセレクトタ イミング ) 0, 0 汎用ポート入力 ( 初期値 ) 0, 1 汎用ポート出力 1, 0 DMAC:DSTP0 入力 1, 1 DMAC:DEOP0 出力 0, 0, 0 汎用ポート ( 初期値 ) 0, 0, 1 DACK1 出力 (fly-by 転送時 FR30 互換 ) 0, 1, 0 DACK1 出力 (two-cycle 転送 RD タ イミング FR30 互換 ) 1, 0, 0 DACK1 出力 (two-cycle 転送 WE タイミング FR30 互換 ) 1, 1, 0 DACK1 出力 (two-cycle 転送 WE, RD タイミング FR30 互換 ) 1, 1, 1 DACK1 出力 ( チップセレクトタ イミング ) 237 第 5 章 I/O ポート 表 5.2-1 ポート機能レジスタ (PFR) の機能 (4 / 5) レジスタ名 PFRB1 (DES1) , DDRB (PB5) [PB5/DEOP1] DES1, PB5 PFRB2 (DWRE) [PB6/IOWR] DWRE PFRB2 (DRDE) [PB7/IORD] DRDE PFRG (AK22, 21, 20) [PG1/DACK2] PFRG (DES2) , DDRG (PG2) [PG2/DEOP2] 238 ビット名 AK22, AK21, AK20 * DES2, PG2 PFRH (SOE2) [PH1/SO2] SOE2 PFRH (SCE2) [PH2/SC2] SCE2 PFRH (TOE0) [PH3/TOT0] TOE0 PFRH (TOE1) [PH4/TOT1] TOE1 ビット値 機 能 0, 0 汎用ポート入力 ( 初期値 ) 0, 1 汎用ポート出力 1, 0 DMAC:DSTP1 入力 1, 1 DMAC:DEOP1 出力 0 汎用ポート ( 初期値 ) 1 IOWR 出力 0 汎用ポート ( 初期値 ) 1 IORD 出力 0, 0, 0 汎用ポート ( 初期値 ) 0, 0, 1 DACK2 出力 ( フライバイ転送時 FR30 互換 ) 0, 1, 0 DACK2 出力 (2 サイクル転送 RD タイミング FR30 互換 ) 1, 0, 0 DACK2 出力 (2 サイクル転送 WE タイミング FR30 互換 ) 1, 1, 0 DACK2 出力 (2 サイクル転送 WE, RD タイミング FR30 互換 ) 1, 1, 1 DACK2 出力 ( チップセレクトタ イミング ) 0, 0 汎用 PORT 入力 ( 初期値 ) 0, 1 汎用 PORT 出力 1, 0 DMAC:DSTP2 入力 1, 1 DMAC:DEOP2 出力 0 汎用ポート ( 初期値 ) 1 SO2 出力 0 汎用ポート ( 初期値 ) 1 SC2 出力 0 汎用ポート ( 初期値 ) 1 TOT0 出力 0 汎用ポート ( 初期値 ) 1 TOT1 出力 第 5 章 I/O ポート 表 5.2-1 ポート機能レジスタ (PFR) の機能 (5 / 5) レジスタ名 PFRH (TOE2) [PH5/TOT2] ビット名 ビット値 0 汎用ポート ( 初期値 ) 1 TOT2 出力 0 ポートとなります ( 初期値 ) 。 1 SDA 入出力 0 I2CE=0 のとき PH7 端子はポート となります ( 初期値 ) 。 1 I2CE=1 のとき PH7 端子は SDL 入 出力となります。 0 必ず "0" にしてください。 ( 初期値 ) 1 テスト機能です。設定禁止。 0 汎用ポート ( 初期値 ) 1 SO0 出力 0 汎用ポート ( 初期値 ) 1 SC0 出力 0 汎用ポート ( 初期値 ) 1 SO1 出力 0 汎用ポート ( 初期値 ) 1 SC1 出力 TOE2 I2CE PFRH (I2CE) [PH6/SDA, PH7/SCL] - PFRH (TEST) TEST PFRI (SOE0) [PI1/SO0] PFRI (SCE0) [PI2/SC0] PFRI (SOE1) [PI4/SO1] PFRI (SCE1) [PI5/SC1] 機 能 SOE0 SCE0 SOE1 SCE1 * :「第 14 章 DMA コントローラ」を参照してください。DEOP の出力タイミングは DACK のタイミング設定と連動して変化します。 239 第 5 章 I/O ポート 240 第6章 16 ビットリロードタイマ この章では , 16 ビットリロードタイマの概要 , レ ジスタの構成 / 機能および 16 ビットリロードタイ マの動作について説明します。 6.1 16 ビットリロードタイマの概要 6.2 16 ビットリロードタイマのレジスタ 6.3 16 ビットリロードタイマの動作 6.4 カウンタの動作状態 6.5 16 ビットリロードタイマの使用上の注意 241 第 6 章 16 ビットリロードタイマ 6.1 16 ビットリロードタイマの概要 16 ビットタイマは , 16 ビットのダウンカウンタ , 16 ビットのリロードレジスタ , 内 部カウントクロック作成用プリスケーラ , コントロールレジスタで構成されていま す。 ■ 16 ビットリロードタイマの概要 MB91307 シリーズは , 16 ビットリロードタイマを 0 ∼ 2 までの 3 チャネル内蔵してい ます。 ch0 と ch1 は , 割込みによる DMA 転送の起動が可能です。 入力クロックとして内部クロック 3 種類 ( マシンクロックの 2/8/32 分周 ) と外部クロッ クから選択できます。 出力端子 (TOUT) はリロードモード時にはアンダフロー発生ごとにトグル出力波形を 出力し , ワンショットモード時にはカウント中を示す矩形波を出力します。 入力端子 (TTG) は外部イベントカウントモード時にイベント入力となり , 内部クロッ クモード時にはトリガ入力またはゲート入力として使用することができます。 外部イベントカウント機能をリロードモードで使用すると , 外部クロックモードの分 周器として利用することができます。 242 第 6 章 16 ビットリロードタイマ ■ ブロックダイヤグラム 図 6.1-1 に , 16 ビットリロードタイマのブロックダイヤグラムを示します。 図 6.1-1 16 ビットリロードタイマのブロックダイヤグラム 16 16ビットリロードレジスタ 8 16 R b u s リロード 16ビットダウンカウンタ UF 2 クロックセレクタ 2 φ φ φ 21 23 25 内部クロック OUT CTL. GATE EXCK CSL1 CSL0 リトリガ IN CTL. プリスケーラ クリア 2 RELD OUTE OUTL INTE UF CNTE TRG IRQ ポート(T1) 3 ポート(T0) MOD0 MOD1 MOD2 3 243 第 6 章 16 ビットリロードタイマ 16 ビットリロードタイマのレジスタ 6.2 16 ビットリロードタイマで使用するレジスタの構成と機能について説明します。 ■ 16 ビットリロードタイマのレジスタ一覧 図 6.2-1 16 ビットリロードタイマのレジスタ一覧 15 14 13 12 11 ― ― ― ― CSL1 7 6 MOD0 ― 15 5 4 OUTL RELD 10 9 8 CSL0 MOD2 MOD1 3 2 1 0 INTE UF CNTE TRG コントロールステータス レジスタ (TMCSR) 0 16 ビットタイマレジスタ (TMR) 15 244 0 16 ビットリロードレジスタ (TMRLR) 第 6 章 16 ビットリロードタイマ コントロールステータスレジスタ (TMCSR) 6.2.1 コントロールステータスレジスタ (TMCSR) は , 16 ビットタイマの動作モードおよ び割込みの制御をします。 ■ コントロールステータスレジスタ (TMCSR) のビット構成 図 6.2-2 コントロールステータスレジスタ (TMCSR) のビット構成 TMCSR アドレス bit 11 10 9 8 7 6 5 4 3 2 1 0 0000004EH 初期値 ----0000 00000056H CSL1 CSL0 MOD2 MOD1 MOD0 "0" OUTL RELD INTE UF CNTE TRG R/W R/W R/W R/W 00000000B 0000005EH R/W R/W R/W R/W R/W R R/W R/W UF, CNTE, TRG ビット以外のビットの書換えは , CNTE=0 のときに行うようにしてく ださい。 コントロールステータスレジスタ (TMCSR) には , 同時書込みが可能です。 ■ コントロールステータスレジスタ (TMCSR) のビット機能 以下に , コントロールステータスレジスタ (TMCSR) のビット機能を説明します。 [ ビット 11, ビット 10] CSL1, CSL0 (Count clock SLect) これらのビットは , カウントクロックセレクトビットです。これらのビットによっ て選択されるクロックソースを , 表 6.2-1 に示します。また , 外部イベントカウント モードを設定した場合のカウント有効エッジは, MOD1, MOD0ビットにより設定さ れます。 表 6.2-1 CSL ビット設定クロックソース CSL1 CSL0 0 0 φ/21 0 1 φ/23 1 0 φ/25 1 1 外部クロック ( イベント ) クロックソース (φ: マシンクロック ) ( 注意事項 ) 外部クロックに必要な最小パルス幅は , 2T (T: 周辺系クロッ クマシンサイクル ) です。 245 第 6 章 16 ビットリロードタイマ [ ビット 9, ビット 8, ビット 7] MOD2, MOD1, MOD0 (MODe) これらのビットは , 動作モードおよび入出力端子の機能を設定するビットです。 MOD2 ビットは , 入力端子の機能を選択するビットです。"0" の場合入力端子はト リガ入力端子となり , 有効エッジが入力されるとリロードレジスタの内容をカウン タへロードし , カウント動作を継続します。"1" の場合はゲートカウントモードにな り , 入力端子はゲート入力となって有効レベルが入力されている間のみカウントを します。 MOD1, MOD0 ビットは , 各モードにおける端子の機能を設定します。 MOD2, MOD1, MOD0 ビットの設定内容を , 表 6.2-2 および表 6.2-3 に示します。 表 6.2-2 MOD2, MOD1, MOD0 ビットの設定方法 1 ( 内部クロックモード時 (CSL0, CSL1=00, 01, 10) ) MOD2 MOD1 MOD0 入力端子機能 有効エッジ , レベル 0 0 0 トリガ禁止 ― 0 0 1 0 1 0 0 1 1 1 × 0 1 1 × 立上りエッジ トリガ入力 立下りエッジ 両エッジ "L" レベル ゲート入力 "H" レベル 表 6.2-3 MOD2, MOD1, MOD0 ビットの設定方法 2 ( イベントカウントモード時 (CSL0, CSL1=11) ) MOD2 MOD1 MOD0 入力端子機能 有効エッジ , レベル 0 0 ― ― 0 1 1 0 1 1 × 立上りエッジ イベント入力 立下りエッジ 両エッジ ( 注意事項 ) 表中の×は , 任意の値 [ ビット 6] (reserved) このビットは , 未使用ビットです。 読出し時 , 常に "0" が読めます。 [ ビット 5] OUTL このビットは , TOUT 端子の出力レベルを設定します。このビットが "0" のときと "1" のときとでは , 端子のレベルが逆になります。このビットとビット 4 (RELD ビッ ト ) および I/O ポートの PFR レジスタの該当ビットの組合せによって出力波形を指 定します。表 6.2-4 に , これらのビットの組合せによる設定内容を示します。 246 第 6 章 16 ビットリロードタイマ 表 6.2-4 OUTE, RELD, OUTL の設定内容 MOD2 MOD1 MOD0 0 × × 汎用ポート 1 0 0 カウント中 "H" 矩形波 1 1 0 カウント中 "L" 矩形波 1 0 1 カウンタスタート時 "L" のトグル出力 1 1 1 カウンタスタート時 "H" のトグル出力 出 力 波 形 ( 注意事項 ) PFR は I/O ポートの PFR レジスタの該当ビット [ ビット 4] RELD このビットは , リロード許可ビットです。"1" のときリロードモードになり , カウン タの値が 0000H → FFFFH へのアンダフローと同時にリロードレジスタの内容をカ ウンタへロードしてカウント動作を続けます。 "0" のときカウンタの値が 0000H → FFFFH へのアンダフローによりカウント動作を 停止します。 [ ビット 3] INTE このビットは , 割込み要求許可ビットです。INTE ビットが "1" のとき , UF ビット が "1" になると割込み要求を発生します。 "0" のときは , 割込み要求を発生しません。 [ ビット 2] UF このビットは , タイマ割込み要求フラグです。カウンタの値が , 0000H → FFFFH へ のアンダフローにより"1"にセットされます。"0"の書込みによってクリアされます。 このビットに対して "1" の書込みは , 意味がありません。リードモディファイライ ト系命令における読出し時には , "1" が読み出されます。 [ ビット 1] CNTE このビットは , タイマのカウントイネーブルビットです。このビットに "1" を書き 込むと , 起動トリガ待ち状態になります。このビットへ "0" を書き込むと , カウント 動作は停止します。 [ ビット 0] TRG このビットは , ソフトウェアトリガビットです。"1" の書込みによりソフトウェアト リガがかかり , リロードレジスタの内容をカウンタへロードして , カウント動作を 開始します。 このビットに対して "0" の書込みは , 意味がありません。読出し値は , 常に "0" です。 このレジスタによるトリガ入力は , CNTE=1 のときのみ有効となります。CNTE=0 のときには , 何も起こりません。 247 第 6 章 16 ビットリロードタイマ 6.2.2 16 ビットタイマレジスタ (TMR) 16 ビットタイマレジスタ (TMR) は , 16 ビットタイマのカウント値を読み出すこと ができるレジスタです。初期値は不定です。 このレジスタの読出しは , 必ず 16 ビットデータ転送命令で行ってください。 ■ 16 ビットタイマレジスタ (TMR) のビット構成 図 6.2-3 に , 16 ビットタイマレジスタ (TMR) のビット構成を示します。 図 6.2-3 16 ビットタイマレジスタ (TMR) のビット構成 15 0 TMR アドレス: 00004AH 000052H 00005AH 初期値 248 ∼ ∼ ∼ ∼ R R R R ・・・ R R R R × × × × ・・・ × × × × 第 6 章 16 ビットリロードタイマ 6.2.3 16 ビットリロードレジスタ (TMRLR) 16 ビットリロードレジスタ (TMRLR) は , カウントの初期値を保持するレジスタで す。初期値は不定です。 このレジスタへの書込みは , 必ず 16 ビットデータ転送命令で行ってください。 ■ 16 ビットリロードレジスタ (TMRLR) のビット構成 図 6.2-4 に , 16 ビットリロードレジスタ (TMRLR) のビット構成を示します。 図 6.2-4 16 ビットリロードレジスタ (TMRLR) のビット構成 15 0 TMRLR アドレス: 000048H 000050H 000058H 初期値 ∼ ∼ ∼ ∼ W W W W ・・・ W W W W × × × × ・・・ × × × × 249 第 6 章 16 ビットリロードタイマ 6.3 16 ビットリロードタイマの動作 16 ビットリロードタイマの以下の動作について説明します。 • 内部クロック動作 • アンダフロー動作 • 入力端子機能の動作 • 出力端子機能の動作 ■ 内部クロック動作 内部クロックの分周クロックでタイマを動作させる場合 , クロックソースとしてマシ ンクロックの 2, 8, 32 分周のクロックから選択することができます。 外部入力端子は , レジスタの設定によりトリガ入力またはゲート入力に使用すること ができます。 カウント許可と同時にカウント動作を開始したい場合は , コントロールステータスレ ジスタの CNTE ビットと TRG ビットの両方に "1" を書き込んでください。TRG ビット によるトリガ入力は , タイマが起動状態のとき (CNTE=1) 動作モードにかかわらず常 に有効です。 カウンタの起動および動作について , 図 6.3-1 に示します。 カウンタスタートのトリガが入力されてからリロードレジスタのデータがカウンタへ ロードされるまでに , T (T: 周辺系クロックマシンサイクル ) の時間がかかります。 図 6.3-1 カウンタの起動および動作 カウントクロック カウンタ リロードデータ -1 -1 -1 データロード CNTE(レジスタ) TRG(レジスタ) T ■ アンダフロー動作 カウンタの値が 0000H から FFFFH になる場合をアンダフローとしています。したがっ て , 〔リロードレジスタの設定値 +1〕カウントでアンダフローが発生することになり ます。 アンダフロー発生時にコントロールステータスレジスタ (TMCSR) の RELD ビットが "1" のとき 16 ビットリロードレジスタ (TMRLR) の内容をカウンタへロードして , カウ 250 第 6 章 16 ビットリロードタイマ ント動作を継続します。RELD ビットが "0" のとき , カウンタは FFFFH で停止します。 アンダフローによりコントロールステータスレジスタ (TMCSR) の UF ビットがセット され , INTE ビットが "1" のとき , 割込み要求を発生します。 アンダフロー動作のタイミングチャートを , 図 6.3-2 に示します。 図 6.3-2 アンダフロー動作のタイミングチャート 〔RELD=1〕の場合 カウントクロック カウンタ 0000H リロードデータ -1 -1 -1 データロード アンダフローセット 〔RELD=0〕の場合 カウントクロック カウンタ 0000H FFFFH アンダフローセット ■ 入力端子機能の動作 ( 内部クロックモード時 ) クロックソースとして内部クロックを選択した場合 , TTG 端子はトリガ入力または ゲート入力として使用することができます。 ● トリガ入力の動作 トリガ入力として使用した場合, 有効エッジが入力されると, 16ビットリロードレジス タ (TMRLR) の内容をカウンタにロードして内部プリスケーラをクリアした後 , カウン ト動作を開始します。TTG は , 2T (T は周辺系クロックマシンサイクル ) 以上のパルス を入力してください。 トリガ入力動作のタイミングチャートを , 図 6.3-3 に示します。 251 第 6 章 16 ビットリロードタイマ 図 6.3-3 トリガ入力動作のタイミングチャート カウントクロック TTG 立上りエッジ検出時 プリスケーラクリア カウンタ -1 リロードデータ -1 -1 -1 ロード 2T~ 2.5T ● ゲート入力の動作 ゲート入力として使用する場合 , コントロールステータスレジスタ (TMCSR) の MOD0 ビットによって設定される有効レベルが , TTG 端子から入力されている間のみカウン トをします。このときカウントクロックは , 止まらずに動き続けます。ゲートモード時 のソフトウェアトリガは , ゲートレベルにかかわらず可能です。TTG 端子のパルス幅 は , 2T (T は周辺系クロックマシンサイクル ) 以上にしてください。 ゲート入力動作のタイミングチャートを , 図 6.3-4 に示します。 図 6.3-4 ゲート入力動作のタイミングチャート カウントクロック TTG MOD0=‘1'とした場合(入力‘H'の間カウント) カウンタ -1 -1 -1 ■ 外部イベントカウント動作 外部クロックをセレクトすると , TTG 端子は外部イベント入力端子となり , レジスタで 設定された有効エッジをカウントします。TTG 端子のパルス幅は , 2T (T は周辺系ク ロックマシンサイクル ) 以上にしてください。 ■ 出力端子機能の動作 TOUT 端子は , リロードモード時はアンダフローにより反転するトグル出力として , ワ ンショットモード時はカウント中を示すパルス出力として機能します。出力極性は , コ ン ト ロ ー ル ス テ ー タ ス レ ジ ス タ (TMCSR) の OUTL ビ ッ ト に よ り 設 定 で き ま す。 OUTL=0 の場合トグル出力は初期値が "0" で , ワンショットパルス出力は , カウント中 252 第 6 章 16 ビットリロードタイマ "1" を出力します。OUTL=1 にすると出力波形は , 反転します。 図 6.3-5 に , 出力端子機能動作のタイミングチャートを示します。 図 6.3-5 出力端子機能動作のタイミングチャート [RELD=1, OUTL=0] の場合 カウント開始 アンダフロー OUTL=1のときは反転 TOUT 汎用ポート CNTE 起動トリガ [RELD=0, OUTL=0] の場合 アンダフロー OUTL=1で反転 TOUT 汎用ポート CNTE 起動トリガ 起動トリガ待ち状態 ● その他の動作 16 ビットリロードタイマの ch0, ch1 は , その割込み要求信号で DMA 転送を起動するこ とが可能です。 DMA コントローラは , 転送要求の受付けと同時にリロードタイマの割込みフラグをク リアします。 割込み要求信号による DMA 転送起動は使用できません (MB91306R/307R のみ ) 。 253 第 6 章 16 ビットリロードタイマ 6.4 カウンタの動作状態 カウンタの状態は , コントロールステータスレジスタ (TMCSR) の CNTE ビットと 内部信号の WAIT 信号によって決まります。設定可能な状態として CNTE=0, WAIT=1 の停止状態 (STOP 状態 ) , CNTE=1, WAIT=1 の起動トリガ待ち状態 (WAIT 状態 ) , CNTE=1, WAIT=0 の動作状態 (RUN 状態 ) があります。 ■ カウンタの動作状態 各状態の遷移を , 図 6.4-1 に示します。 図 6.4-1 カウンタの状態遷移 ハードウェアによる状態遷移 リセット CNTE=’0’ STOP CNTE=0, WAIT=1 T1:入力禁止 T0:汎用ポート カウンタ:停止時の値を保持 リセット直後は不定 CNTE=’1’ TRG=’0’ CNTE=1, WAIT=1 WAIT T1:トリガ入力のみ有効 T0:初期値出力 カウンタ:停止時の値を保持 リセット直後ロードするまで は不定 CNTE=1, WAIT=0 RUN T1:T1として機能 T0:T0として機能 カウンタ:動作 TRG=’1’ CNTE=1, WAIT=0 LOAD リロードレジスタの内容を TINからトリガ カウンタへロード 254 CNTE=’0’ CNTE=’1’ TRG=’1’ RELD・UF TRG=’1’ レジスタアクセスによる状態遷移 RELD・UF ロード終了 第 6 章 16 ビットリロードタイマ 6.5 16 ビットリロードタイマの使用上の注意 16 ビットリロードタイマを使用する上で , 注意しなければならない事項について説 明します。 ■ 使用上の注意事項 ● 内部プリスケーラ 内部プリスケーラは , コントロールステータスレジスタ (TMCSR) のビット 1 ( タイマ 許可 :CNTE) が "1" に設定されている状態で , トリガ ( ソフトウェアトリガまたは外部 トリガ ) がかけられることにより動作可能となります。 ゲートカウントモードのみで使用する場合でも, 有効ゲートレベル入力前に必ず1度ト リガをかけてください。 CNTE を設定するときに , TMCSR レジスタのビット 0 (TRG) に "1" を書き込むことを 推奨します。 ● 割込み要求フラグのセットとクリアのタイミング 割込み要求フラグをセットするタイミングとクリアタイミングが重複した場合には , フラグのセットが優先し , クリア動作は無効となります。 ● 16 ビットタイマレジスタ (TMR) /16 ビットリロードレジスタ (TMRLR) 16ビットタイマレジスタへの書込みと16ビットリロードレジスタへリロードのタイミ ングが重なった場合には , 旧データがカウンタにロードされます。新データがカウンタ にロードされるのは , 次のリロードのときになります。 ● 16 ビットタイマレジスタ (TMR) 16ビットタイマレジスタは, ロードとカウントのタイミングが重なった場合には, ロー ド ( リロード ) 動作の方が優先されます。 255 第 6 章 16 ビットリロードタイマ 256 第7章 U-TIMER この章では , U-TIMER の概要 , レジスタの構成 , 機 能および動作について説明します。 7.1 U-TIMER の概要 7.2 U-TIMER のレジスタ 7.3 U-TIMER の動作 257 第 7 章 U-TIMER 7.1 U-TIMER の概要 U-TIMER (16 bit timer for UART baud rate generation) の概要とブロックダイヤグ ラムを示します。 ■ U-TIMER の概要 U-TIMER は , UART のボーレートを発生するための 16 ビットタイマです。チップの動 作周波数と , U-TIMER のリロード値の組合せで任意のボーレートを設定できます。 また , カウントアンダフローで割込みを発生するので , インターバルタイマとしても使 用できます。 MB91307 シリーズは , U-TIMER を 3 チャネル内蔵しています。インターバルタイマと して使用する場合 2 組の U-TIMER をカスケードして使用でき , 最大 232 × φ のインター バルをカウントできます。カスケード接続できる組合せは , ch0 と ch1 および ch0 と ch2 のみです。 ■ ブロックダイヤグラム 図 7.1-1 U-TIMER のブロックダイヤグラム 0 15 UTIMR(リロードレジスタ) load 15 0 UTIM(timer) clock underflow φ (周辺系クロック) MUX Channel 0 のみ under flow U-TIMER 1 258 control f.f. to UART 第 7 章 U-TIMER 7.2 U-TIMER のレジスタ U-TIMER で使用するレジスタの構成および機能について説明します。 ■ U-TIMER のレジスタ一覧 図 7.2-1 に , U-TIMER のレジスタ一覧を示します。 図 7.2-1 U-TIMER のレジスタ一覧 15 8 7 UTIM UTIMR 0 (R) (W) (R/W) UTIMC ■ U-TIMER (UTIM) 図 7.2-2 に , U-TIMER (UTIM) のビット構成を示します。 図 7.2-2 U-TIMER (UTIM) のビット構成 ch0 アドレス :0000 0064H 15 b15 14 b14 2 b2 1 b1 0 b0 R アクセス 0 初期値 ch1 アドレス :0000 006CH ch2 アドレス :0000 0074H UTIM は , タイマの値を示します。16 ビット転送命令でアクセスしてください。 ■ リロードレジスタ (UTIMR) 図 7.2-3 に , リロードレジスタ (UTIMR) のビット構成を示します。 図 7.2-3 リロードレジスタ (UTIMR) のビット構成 ch0 アドレス :0000 0064H 15 b15 14 b14 ch1 アドレス :0000 006CH ch2 アドレス :0000 0074H 2 b2 1 b1 0 b0 W アクセス 0 初期値 UTIMR は , UTIM がアンダフローしたときに UTIM にリロードされる値を格納するレ ジスタです。 16 ビット転送命令でアクセスしてください。 259 第 7 章 U-TIMER ■ U-TIMER コントロールレジスタ (UTIMC) 図 7.2-4 に , U-TIMER コントロールレジスタ (UTIMC) のビット構成を示します。 図 7.2-4 U-TIMER コントロールレジスタ (UTIMC) のビット構成 7 UCC1 6 5 ― ― 4 3 2 1 0 UTIE UNDR CLKS UTST UTCR ch0 アドレス :0000 0067H ch1 アドレス :0000 006FH R/W R/W R/W R/W R/W R/W ch2 アドレス :0000 0077H 0 0 0 0 0 1 アクセス 初期値 UTIMC は , U-TIMER の動作を制御します。 以下に , U-TIMER コントロールレジスタ (UTIMC) の各ビットの機能を説明します。 [ ビット 7] UCC1 (U-timer Count Control 1) このビットは , U-TIMER のカウント方法を制御します。 UCC1 動 作 0 通常動作 α=2n+2 〔初期値〕 1 +1 モード α=2n+3 ( 注意事項 )・n は UTIMR の設定値 ・α は UART に対する出力クロックの周期 U-TIMER は , UART に対して通常の 2 (n+1) の周期のクロックのほかに奇数分周を 設定できます。 UCC1 を 1 に設定すると , 2n+3 の周期を発生します。 設定例 : 1.UTIMR=5, UCC1=0 ──→ 発生周期 =2n+2= 12 サイクル 2.UTIMR=25, UCC1=1 ──→ 発生周期 =2n+3= 53 サイクル 3.UTIMR=60, UCC1=0 ──→ 発生周期 =2n+2=122 サイクル U-TIMER をインターバルタイマとして使用する場合は , UCC1 の値を "0" に設定し てください。 [ ビット 6, ビット 5] (reserved) このビットは , 予約ビットです。 [ ビット 4] UTIE (U-TIMER Interrupt Enable) このビットは , U-TIMER のアンダフローによる割込み許可ビットです。 UTIE 260 動 作 0 割込み禁止 1 割込み許可 〔初期値〕 第 7 章 U-TIMER [ ビット 3] UNDR (UNDeR flow flag) このビットは , アンダフローが発生したことを示すフラグです。 ビット 4 の UTIE ビットが "1" のときに UNDR ビットがセットされると , アンダフ ロー割込みが発生します。UNDR ビットは , リセットまたは "0" 書込みによりクリ アされます。 リードモディファイライト系命令の読出し時は , 常に "1" が読み出されます。 また , UNDR ビットに対する "1" 書込みは無効です。 [ ビット 2] CLKS (clock select) このビットは , U-TIMER の ch0 と ch1 のカスケード指定ビットです。 CLKS 動 作 0 クロックソースは周辺系クロック (φ) 〔初期値〕 1 U-TIMER ソースクロックタイミングとして , ch0 のアンダフロー信 号を使用 CLKS は ch1, ch2 でのみ有効です。ch0 では常に "0" にしてください。 φ( 周辺系クロック = clkp) は , ギアの設定により周期が変わります。 [ ビット 1] UTST (U-TIMER STart) このビットは , U-TIMER の動作許可ビットです。 UTST 動 作 0 停止。動作中でも "0" の書込みで停止します。〔初期値〕 1 動作中に "1" を書き込んでも動作を続行します。 [ ビット 0] UTCR (U-TIMER CleaR) UTCRに"0"を書き込むと, U-TIMERは0000H にクリアされます (f.f.も"0"にクリア) 。 このビットは , 常に "1" が読み出されます。 ■ U-TIMER コントロールレジスタ (UTIMC) 使用上の注意事項 • ストップ状態からスタートビット UTST をアサート ( スタート ) すると自動的にリ ロードします。 • ストップ状態からクリアビット UTCR とスタートビット UTST を同時にアサートす ると , カウンタを "0" にクリアして , 直後のカウントダウンでアンダフローが発生し ます。 • 動作中にクリアビット UTCR をアサートすると , カウンタも "0" にクリアされます。 このため , 出力波形にヒゲ状の短いパルスが出力される場合があり , UART やカス ケートモードの上位側の U-TIMER が誤動作する可能性があります。出力クロック を使用している場合には , 動作中にクリアビットによってクリアしないでくださ い。 261 第 7 章 U-TIMER • カスケードモードで , 下位側の UTIMR ( リロ - ドレジスタ ) に "0" または "1" をセッ トすると正しくカウントされません。 • U-TIMER コントロールレジスタのビット 1 (U-TIMER スタートビット :UTST) およ びビット 0 (U-TIMER のクリアビット :UTCR) をタイマ停止状態で同時にアサート すると , クリアした後のカウンタロードのタイミングで同レジスタのビット 3 ( アン ダフローフラグ : UNDR) がセットされます。また , 内部ボーレートクロックは , 同 タイミングで "H" レベルになります。 • 割込み要求セットタイミングとクリアタイミングが重なった場合には , フラグセッ トが優先され , クリア動作は無効となります。 • ch0 をカスケードモードで使用しない場合や本モジュールを単にタイマ機能として 使用する場合は, U-TIMERコントロールレジスタのビット2 (基準クロック選択ビッ ト : CLKS) には常に "0" を書き込んでください。また , CLKS ビットの設定変更は , 本モジュールが動作停止の状態で行ってください。 • U-TIMER リロードレジスタへの書込みとリロードのタイミングが重なった場合には , 旧データがカウンタにロードされます。新データがカウンタにロードされるのは , 次 のリロードのタイミングとなります。 • タイマクリアとタイマカウント / リロードのタイミングが重なった場合には , タイ マクリアが最優先されます。 262 第 7 章 U-TIMER 7.3 U-TIMER の動作 U-TIMER のボーレートの計算と , カスケードモードのタイミングを示します。 ■ ボーレートの計算 UART は , 対応する U-TIMER (U-TIMER0 → UART0, U-TIMER1 → UART1) のアンダフ ローフリップフロップ ( ブロックダイヤグラム中の f.f.) をボーレート用クロックソー スとして使用します。 ● 非同期 ( 調歩同期 ) モード UART は , U-TIMER の出力を 16 分周して使用します。 [UCC1=0 の場合 ] φ bps = (2n+2) × 16 n :UTIMR ( リロード値 ) φ : 周辺系マシンクロック周波数 [UCC1=1 の場合 ] φ bps = ( ギアにより変動 ) (2n+3) × 16 最大 bps 20MHz 312500bps, 25MHz 390625bps ● CLK 同期モード [UCC1=0 の場合 ] bps = φ (2n+2) n :UTIMR ( リロード値 ) φ : 周辺系マシンクロック周波数 263 第 7 章 U-TIMER [UCC1=1 の場合 ] bps = φ ( ギアにより変動 ) (2n+3) 最大 bps 20MHz 5000000bps, 25MHz 6250000bps ■ カスケードモード U-TIMER ch0 と ch1 は , カスケードモードで使用できます。 UTIMR ch0 を "0002" に , UTIMR ch1 を "0100" に設定した場合のタイミングチャート例 を , 図 7.3-1 に示します。 図 7.3-1 カスケードモードのタイミングチャート φ UTIM ch.0 01 00 02 01 00 02 01 00 02 01 00 02 01 00 02 01 00 02 01 00 f.f. ch.0 UTIM ch.1 f.f. ch.1 264 0002 0001 0000 0100 第8章 外部割込み /NMI 制御部 この章では , 外部割込み /NMI 制御部の概要 , レジ スタの構成 / 機能および動作について説明します。 8.1 外部割込み /NMI 制御部の概要 8.2 外部割込み /NMI 制御部のレジスタ 8.3 外部割込み /NMI 制御部の動作 265 第 8 章 外部割込み /NMI 制御部 8.1 外部割込み /NMI 制御部の概要 外部割込み制御部は , NMI および INT0 ∼ INT7 に入力される外部割込み要求の制御 を行うブロックです。 検出する要求のレベルとして , "H", "L", " 立上りエッジ ", " 立下りエッジ " から選 択できます (NMI 以外 ) 。 ■ 外部割込み /NMI 制御部のブロックダイヤグラム 図 8.1-1 に , 外部割込み /NMI 制御部のブロックダイヤグラムを示します。 図 8.1-1 外部割込み /NMI 制御部のブロックダイヤグラム R-bus 8 割込み 要求 割込み許可レジスタ 9 8 8 266 ゲート 要因 F/F 割込み要因レジスタ 要求レベル設定レジスタ エッジ検出回路 9 INT0~7 NMI 第 8 章 外部割込み /NMI 制御部 8.2 外部割込み /NMI 制御部のレジスタ 外部割込み /NMI 制御部で使用するレジスタの構成および機能について説明します。 ■ 外部割込み /NMI 制御部のレジスタ一覧 図 8.2-1 に , 外部割込み /NMI 制御部のレジスタ一覧を示します。 図 8.2-1 外部割込み /NMI 制御部のレジスタ一覧 外部割込み許可レジスタ (ENIR) ビット 7 EN7 6 EN6 5 EN5 4 EN4 3 EN3 2 EN2 1 EN1 0 EN0 13 ER5 12 ER4 11 ER3 10 ER2 9 ER1 8 ER0 外部割込み要因レジスタ (EIRR) ビット 15 ER7 14 ER6 外部割込み要求レベル設定レジスタ (ELVR) ビット 15 LB7 14 LA7 13 LB6 12 LA6 11 LB5 10 LA5 9 LB4 8 LA4 ビット 7 LB3 6 LA3 5 LB2 4 LA2 3 LB1 2 LA1 1 LB0 0 LA0 267 第 8 章 外部割込み /NMI 制御部 外部割込み許可レジスタ (ENIR) 8.2.1 外部割込み許可レジスタ (ENIR) は , 外部割込み要求出力のマスク制御を行います。 ■ 外部割込み許可レジスタ (ENIR:ENable Interrupt request Register) 図 8.2-2 に , 外部割込み許可レジスタ (ENIR) のビット構成を示します。 図 8.2-2 外部割込み許可レジスタ (ENIR) のビット構成 7 6 5 4 3 2 1 0 初期値 ENIR アドレス : 000041H EN7 EN6 EN5 EN4 EN3 EN2 EN1 EN0 00000000 ビット (R/W) このレジスタの "1" が書き込まれたビットに対応する割込み要求出力は許可され (INT0 の許可を EN0 が制御 ) , 割込みコントローラに対して割込み要求が出力されます。"0" が書き込まれたビットに対応する端子は割込み要因を保持しますが , 割込みコント ローラに対しては要求を発生しません。 <注意事項> NMI に対するマスクビットは , 存在しません。 268 第 8 章 外部割込み /NMI 制御部 外部割込み要因レジスタ (EIRR) 8.2.2 外部割込み要因レジスタ (EIRR) のビット構成と機能を説明します。 ■ 外部割込み要因レジスタ (EIRR:External Interrupt Request Register) 図 8.2-3 に , 外部割込み要因レジスタ (EIRR) のビット構成を示します。 図 8.2-3 外部割込み要因レジスタ (EIRR) のビット構成 15 14 13 12 11 10 9 8 初期値 EIRR アドレス : 000040H ER7 ER6 ER5 ER4 ER3 ER2 ER1 ER0 00000000 ビット (R/W) EIRR は , 読出し時には対応する外部割込み要求があることを示し , 書込み時にはこの 要求を示すフリップフロップ (NMI フラグ ) の内容をクリアするレジスタです。この EIRR レジスタを読み出したときに "1" であった場合 , そのビットに対応する端子に外 部割込み要求があることを示します。 また , このレジスタに "0" を書き込むと , 対応するビットの要求フリップフロップがク リアされます。 "1" の書込みは無効です。 リードモディファイライト系命令の読出し時には , "1" が読み出されます。 <注意事項> MI フラグは , ユーザから読出し / 書込みできません。 NMI フラグについては , 「8.3 外部割込み /NMI 制御部の動作」の「■ NMI」を参照して ください。 269 第 8 章 外部割込み /NMI 制御部 8.2.3 外部割込み要求レベル設定レジスタ (ELVR) 外部割込み要求レベル設定レジスタ (ELVR) のビット構成と機能を説明します。 ■ 外部割込み要求レベル設定レジスタ (ELVR:External LeVel Register) 図 8.2-4 に , 外部割込み要求レベル設定レジスタ (ELVR) のビット構成を示します。 図 8.2-4 外部割込み要求レベル設定レジスタ (ELVR) のビット構成 15 14 13 12 11 10 9 8 初期値 ELVR アドレス : 000042H LB7 LA7 LB6 LA6 LB5 LA5 LB4 LA4 00000000 ビット 7 6 5 4 3 2 1 0 初期値 ELVR アドレス : 000043H LB3 LA3 LB2 LA2 LB1 LA1 LB0 LA0 00000000 ビット (R/W) 外部割込み要求レベル設定レジスタ (ELVR) は , 要求検出の選択を行うレジスタです。 INT0 ∼ INT7 に 2 ビットずつが割り当てられていて , 設定内容は表 8.2-1 のようになっ ています。要求入力がレベルの場合 , EIRR の各ビットをクリアしても入力がアクティ ブレベルならば , 該当するビットは再びセットされます。 表 8.2-1 LBx, LAx ビットの設定内容 LBx LAx 0 0 "L" レベルで要求あり 0 1 "H" レベルで要求あり 1 0 立上りエッジで要求あり 1 1 立下りエッジで要求あり 動 作 NMI は常にその立下りエッジが検出されます ( ストップ時を除く ) 。 ストップ時は , "L" レベル検出となります。 270 第 8 章 外部割込み /NMI 制御部 8.3 外部割込み /NMI 制御部の動作 要求レベル , 許可レジスタの設定の後 , 対応する端子に ELVR レジスタで設定された 要求が入力されると , 本モジュールは割込みコントローラに対して割込み要求信号 を発生します。 ■ 外部割込みの動作 割込みコントローラ内で同時発生した割込みの優先順位を識別した結果 , 本リソース からの割込みが最も優先順位が高かったときに , 該当する割込みが発生します。 図 8.3-1 に , 外部割込みの動作を示します。 図 8.3-1 外部割込みの動作 外部割込み リソース要求 ELVR 割込みコントローラ ICRyy EIRR ENIR CPU IL CMP ICRxx CMP ILM 要因 ■ スタンバイからの復帰 クロック停止モードのスタンバイ状態からの復帰に外部割込みを使う場合は , 入力要 求を "H" レベル要求としてください。"L" レベル要求では誤動作を起こす可能性があり ます。 エッジ要求ではクロック停止モードのストップ状態からの復帰は行われません。 ■ 外部割込みの動作手順 外部割込み部の内部に存在するレジスタの設定は , 次の手順で行ってください。 1) 外部割込み入力として使用する端子と兼用する汎用入出力ポートを入力ポートに設 定する。 2) 許可レジスタの対象となるビットをディセーブル状態にする。 3) 要求レベル設定レジスタの対象となるビットを設定する。 4) 要因レジスタの対象となるビットをクリアする。 5) 許可レジスタの対象となるビットをイネーブル状態にする。 ただし , 4) と 5) は , 16 ビットデータによる同時書込みができます。 本モジュール内のレジスタを設定するときには , 必ず許可レジスタをディセーブル状 態に設定しておかなくてはなりません。また , 許可レジスタをイネーブル状態にする前 に必ず要因レジスタをクリアしておく必要があります。これは , レジスタ設定時や割込 み許可状態時に誤って割込み要因が起こってしまうことを避けるためです。 271 第 8 章 外部割込み /NMI 制御部 <注意事項> 外部割込みをスタンバイからの復帰に使う場合 , ch0 ∼ ch7 が使用できます。スタンバイ に入る前に , 必要に応じて外部割込みの設定をしてください。 ■ 外部割込み要求レベル 要求レベルがエッジ要求の場合 , エッジがあったことを検出するためには , パルス幅は 最小 3 マシンサイクル ( 周辺系クロックマシンサイクル ) 必要とします。 要求入力レベルがレベル設定の場合 , 外部から要求入力が入ってその後取り下げられ ても , 内部に要因保持回路が存在するので , 割込みコントローラへの要求はアクティブ のままです。 割込みコントローラへの要求を取り下げるには , 外部割込み要因レジスタをクリアす る必要があります。 図 8.3-2 にレベル設定時の外部割込み要因レジスタのクリアを , 図 8.3-3 に割込み許可 時の割込み要因と割込みコントローラへの割込み要求を示します。 図 8.3-2 レベル設定時の外部割込み要因レジスタのクリア 割込み入力 レベル検出 外部割込み要因レジスタ (要因保持回路) 許可ゲート 割込み コントローラ クリアしない限り要因を保持し続ける 図 8.3-3 割込み許可時の割込み要因と割込みコントローラへの割込み要求 "H"レベル 割込み入力 割込みコントローラ への割込み要求 272 外部割込み要因レジスタのクリアによってinactiveとなる 第 8 章 外部割込み /NMI 制御部 ■ NMI NMI は , ユーザ割込みの中で最高レベルの割込みで , マスクすることはできません。例 外として , リセット直後から ILM を設定するまではマスクされます。 NMI の受付けは , 以下の条件で行われます。 • 通常時 : 立下りエッジ • STOP 時 :"L" レベル NMI によってストップモードの解除が可能です。ストップ状態で "L" レベルが入力さ れるとストップ状態が解除され , 発振安定待ち時間が取られます。この発振安定待ち時 間内に端子を "H" レベルに戻すと , NMI 要因がなくなってしまい , 動作再開後 NMI 処 理が行われません。ストップ状態解除後に NMI 処理を行いたい場合は , NMI 端子を "L" レベルのままにして , NMI 処理ルーチン内で "H" レベルに戻すようにしてください。 NMI 要求検出部には NMI フラグがあり , NMI 要求によりセットされて , NMI 自身の割 込みの受付けまたはリセットでのみクリアされます。なお , このビットは読出し / 書込 みできません。 図 8.3-4 に , NMI 要求検出部を示します。 図 8.3-4 NMI 要求検出部 (NMIフラグ) 0 NMI要求 Q SX (ストップ解除) R 立下り エッジ検出 NMI 1 STOP φ clear (RST,interrupt acknowledge) 273 第 8 章 外部割込み /NMI 制御部 274 第9章 遅延割込みモジュール この章では , 遅延割込みモジュールの機能と動作に ついて説明します。 9.1 遅延割込みモジュールの概要 9.2 遅延割込みモジュールのレジスタ 9.3 遅延割込みモジュールの動作 275 第 9 章 遅延割込みモジュール 9.1 遅延割込みモジュールの概要 遅延割込みモジュールは , タスク切換え用の割込みを発生するためのモジュールで す。本モジュールを使用することで , ソフトウェアで CPU に対して割込み要求の発 生 / 取消しを行うことができます。 ■ 遅延割込みモジュールのブロックダイヤグラム 図 9.1-1 に , 遅延割込みモジュールのブロックダイヤグラムを示します。 図 9.1-1 遅延割込みモジュールのブロックダイヤグラム R-bus 割込み要求 276 DLYI 第 9 章 遅延割込みモジュール 9.2 遅延割込みモジュールのレジスタ 遅延割込みモジュールで使用するレジスタの構成および機能について説明します。 ■ 遅延割込みモジュールのレジスタ 遅延割込みモジュールには , 遅延割込み制御レジスタ (DICR) があります。 図 9.2-1 に , 遅延割込み制御レジスタ (DICR) の構成を示します。 図 9.2-1 遅延割込み制御レジスタ (DICR) の構成 ビット 7 6 5 4 3 2 1 アドレス : 00000044H ― ― ― ― ― ― ― 0 DLYI DICR (R/W) ■ 遅延割込み制御レジスタ (DICR) 遅延割込み制御レジスタ (DICR:Delayed Interrupt Control Register) は , 遅延割込みを制 御するレジスタです。 図 9.2-2 に , 遅延割込み制御レジスタ (DICR) のビット構成を示します。 図 9.2-2 遅延割込み制御レジスタ (DICR) のビット構成。 ビット 7 ― 6 ― 5 ― 4 ― 3 ― 2 ― 1 ― 0 DLYI 初期値 -------0B (R/W) 以下に , 遅延割込み制御レジスタ (DICR) のビット機能を説明します。 [ ビット 0] DLYI DLYI 説 明 0 遅延割込み要因の解除・要求なし 〔初期値〕 1 遅延割込み要因の発生 このビットにより , 該当する割込み要因の発生 / 解除を制御します。 277 第 9 章 遅延割込みモジュール 9.3 遅延割込みモジュールの動作 遅延割込みは , タスク切換え用の割込みを発生するものです。この機能を使用する ことにより , ソフトウェアで CPU に対して割込み要求の発生 / 取消しを行うことが できます。 ■ 割込み番号 遅延割込みは , 最も大きな割込み番号に対応した割込み要因に割り当てられています。 MB91307 シリーズでは , 遅延割込みを割込み番号 63 (3FH) に割り当てています。 ■ DICR の DLYI ビット このビットに "1" を書き込むことによって , 遅延割込み要因が発生します。また , "0" を 書き込むことによって , 遅延割込み要因を解除します。 このビットは , 一般の割込みにおける割込み要因フラグと同じものであり , 割込みルー チンの中でこのビットをクリアし , 合わせてタスクの切換えを行うようにしてくださ い。 278 第 10 章 割込みコントローラ この章では , 割込みコントローラの概要 , レジスタ の構成 / 機能 , 割込みコントローラの動作および ホールドリクエスト取下げ要求機能の使用例につ いて説明します。 10.1 割込みコントローラの概要 10.2 割込みコントローラのレジスタ 10.3 割込みコントローラの動作 10.4 ホールドリクエスト取下げ要求機能 (HRCR) の使用例 279 第 10 章 割込みコントローラ 10.1 割込みコントローラの概要 割込みコントローラは , 割込み受付け / 調停処理をつかさどります。 ■ 割込みコントローラのハードウェア構成 割込みコントローラは , 以下のものから構成されます。 • ICR レジスタ • 割込み優先度判定回路 • 割込みレベル , 割込み番号 ( ベクタ ) 発生部 • ホールドリクエスト取下げ要求発生部 ■ 割込みコントローラの主要機能 割込みコントローラには , 主に以下のような機能があります。 • NMI 要求 / 割込み要求の検出 • 優先度判定 ( レベルおよび番号による ) • 判定結果の要因の割込みレベル伝達 (CPU へ ) • 判定結果の要因の割込み番号伝達 (CPU へ ) • NMI/ 割込みレベルが "11111" 以外の割込み発生によるストップモードからの復帰指 示 (CPU へ ) • バスマスタへのホールドリクエスト取下げ要求発生 280 第 10 章 割込みコントローラ ■ ブロックダイヤグラム 図 10.1-1 に , 割込みコントローラのブロックダイヤグラムを示します。 図 10.1-1 割込みコントローラのブロックダイヤグラム UNMI WAKEUP (LEVEL≠11111のとき"1") 優先度判定 5 / NMI 処理 LEVEL4~0 LEVEL, VECTOR 発生 LEVEL判定 RI00 ・ ・ ・ RI47 (DLYIRQ) ICR00 ・ ・ ・ ICR47 VECTOR 判定 6 / HLDREQ 取下げ 要求 MHALTI VCT5~0 R-bus 281 第 10 章 割込みコントローラ 10.2 割込みコントローラのレジスタ 割込みコントローラで使用するレジスタの構成および機能について説明します。 ■ 割込みコントローラのレジスタ一覧 図 10.2-1 に , 割込みコントローラのレジスタ一覧を示します。 図 10.2-1 割込みコントローラのレジスタ一覧 ビット 7 6 5 4 3 2 1 0 アドレス : 00000440H ― ― ― 初期値 ICR4 ICR3 ICR2 ICR1 ICR0 ICR00 アドレス : 00000441H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR01 アドレス : 00000442H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR02 アドレス : 00000443H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR03 アドレス : 00000444H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR04 アドレス : 00000445H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR05 アドレス : 00000446H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR06 アドレス : 00000447H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR07 アドレス : 00000448H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR08 アドレス : 00000449H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR09 アドレス : 0000044AH ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR10 アドレス : 0000044BH ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR11 アドレス : 0000044CH ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR12 アドレス : 0000044DH ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR13 アドレス : 0000044EH ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR14 アドレス : 0000044FH ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR15 アドレス : 00000450H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR16 アドレス : 00000451H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR17 アドレス : 00000452H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR18 アドレス : 00000453H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR19 アドレス : 00000454H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR20 アドレス : 00000455H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR21 アドレス : 00000456H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR22 アドレス : 00000457H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR23 アドレス : 00000458H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR24 アドレス : 00000459H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR25 アドレス : 0000045AH ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR26 アドレス : 0000045BH ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR27 アドレス : 0000045CH ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR28 R R/W R/W R/W R/W ( 続く ) 282 第 10 章 割込みコントローラ ( 続き ) ビット 7 6 5 アドレス : 0000045DH ― ― ― 4 3 2 1 0 初期値 ICR4 ICR3 ICR2 ICR1 ICR0 ICR29 アドレス : 0000045EH ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR30 アドレス : 0000045FH ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR31 アドレス : 00000460H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR32 アドレス : 00000461H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR33 アドレス : 00000462H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR34 アドレス : 00000463H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR35 アドレス : 00000464H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR36 アドレス : 00000465H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR37 アドレス : 00000466H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR38 アドレス : 00000467H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR39 アドレス : 00000468H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR40 アドレス : 00000469H ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR41 アドレス : 0000046AH ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR42 アドレス : 0000046BH ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR43 アドレス : 0000046CH ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR44 アドレス : 0000046DH ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR45 アドレス : 0000046EH ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR46 アドレス : 0000046FH ― ― ― ICR4 ICR3 ICR2 ICR1 ICR0 ICR47 R R/W R/W R/W R/W アドレス : 0000045H MHALT1 R/W LVL4 LVL3 LVL2 LVL1 LVL0 HRCL R R/W R/W R/W R/W 283 第 10 章 割込みコントローラ 10.2.1 割込み制御レジスタ (ICR) 割込み制御レジスタです。各割込み入力に対して 1 つずつ設けられており , 対応す る割込み要求の割込みレベルを設定します。 ■ 割込み制御レジスタ (ICR) 割込み制御レジスタ (ICR:Interrupt Control Register) のビット構成を , 図 10.2-2 に示しま す。 図 10.2-2 割込み制御レジスタ (ICR) のビット構成 ビット 7 6 5 ― ― ― 4 3 2 1 0 初期値 ICR4 ICR3 ICR2 ICR1 ICR0 ---11111B R R/W R/W R/W R/W 以下に , 割込み制御レジスタ (ICR) の各ビットの機能を説明します。 [ ビット 4 ∼ビット 0] ICR4 ∼ ICR0 これらのビットは割込みレベル設定ビットで , 対応する割込み要求の割込みレベル を指定します。 このレジスタに設定した割込みレベルが CPU の ILM レジスタに設定した ( された ) レベルマスク値以上の場合は , CPU 側で割込み要求はマスクされます。 リセットにより , 11111B に初期化されます。 設定可能な割込みレベル設定ビットと割込みレベルの対応を , 表 10.2-1 に示しま す。 284 第 10 章 割込みコントローラ 表 10.2-1 設定可能な割込みレベル設定ビットと割込みレベルの対応 ICR4 ICR3 ICR2 ICR1 ICR0 0 0 0 0 0 0 0 1 1 1 0 14 0 1 1 1 1 15 NMI 1 0 0 0 0 16 設定可能な最高レベル 1 0 0 0 1 17 (高) 1 0 0 1 0 18 1 0 0 1 1 19 1 0 1 0 0 20 1 0 1 0 1 21 1 0 1 1 0 22 1 0 1 1 1 23 1 1 0 0 0 24 1 1 0 0 1 25 1 1 0 1 0 26 1 1 0 1 1 27 1 1 1 0 0 28 1 1 1 0 1 29 1 1 1 1 0 30 1 1 1 1 1 31 割込みレベル システム予約 (低) 割込み禁止 ( 注意事項 ) ICR4 はシステムにより固定されているため , 本レジスタに ICR4 ビッ トは存在しません。 285 第 10 章 割込みコントローラ 10.2.2 ホールドリクエスト取下げ要求レベル設定レジスタ (HRCL) ホールドリクエスト取下げ要求レベル設定レジスタ (HRCL) は , ホールドリクエス ト取下げ要求発生のためのレベル設定レジスタです。 ■ ホールドリクエスト取下げ要求レベル設定レジスタ (HRCL) ホールドリクエスト取下げ要求レベル設定レジスタ (HRCL) のビット構成を , 図 10.2-3 に 示します。 図 10.2-3 ホールドリクエスト取下げ要求レベル設定レジスタ (HRCL) のビット構成 ビット 7 アドレス : 0000045H MHALT1 6 ― 5 ― 4 3 2 1 0 初期値 LVL4 LVL3 LVL2 LVL1 LVL0 0--11111B R R/W R/W R/W R/W 以下に , ホールドリクエスト取下げ要求レベル設定レジスタ (HRCL) の各ビットの機 能を説明します。 [ ビット 7] MHALTI このビットは , NMI の要求による DMA 転送抑止ビットです。 NMI 要求によって "1" にセットされ , "0" を書き込むことによってクリアされます。NMI ルーチンの最後 で通常の割込みルーチンと同様にクリアしてください。 [ ビット 4 ∼ビット 0] LVL4 ∼ LVL0 これらのビットは , バスマスタへのホールドリクエスト取下げ要求を出すための割 込みレベルを設定します。 HRCL レジスタに設定した割込みレベルより高いレベルを持つ割込み要求が発生し た場合は , バスマスタに対してホールドリクエスト取下げ要求を出します。 LVL4 ビットは "1" 固定で , "0" を書き込むことはできません。 286 第 10 章 割込みコントローラ 割込みコントローラの動作 10.3 割込みコントローラの動作として , 以下の項目について説明します。 • 優先順位判定 • NMI • ホールドリクエスト取下げ要求 • スタンバイモード ( ストップ / スリープ ) からの復帰 ■ 優先順位判定 割込みコントローラでは , 同時に発生している割込み要因の中で最も優先度の高い要 因を選択し , その要因の割込みレベルと割込み番号を CPU へ出力します。 割込み要因の優先順位判定基準は , 以下のとおりです。 • NMI • 以下の条件を満たす要因 - 割込みレベルの数値が "31" 以外 ("31" は割込み禁止 ) 。 - 割込みレベルの数値が最も小さい要因。 - その中で , 最も小さい割込み番号を持つ要因。 上記の判定基準により割込み要因が一つも選択されなかった場合は , 割込みレベルと して 31 ("11111B") を出力します。そのときの割込み番号は不定です。 割込み要因と割込み番号 , 割込みレベルの関係を , 表 10.3-1 に示します。 表 10.3-1 割込み要因と割込み番号 , 割込みレベルの関係 (1 / 4) 割込みレベル オフセット TBR デフォルトの アドレス 00 ― 3FCH 000FFFFCH 1 01 ― 3F8H 000FFFF8H システム予約 2 02 ― 3F4H 000FFFF4H システム予約 3 03 ― 3F0H 000FFFF0H システム予約 4 04 ― 3ECH 000FFFECH システム予約 5 05 ― 3E8H 000FFFE8H システム予約 6 06 ― 3E4H 000FFFE4H コプロセッサ不在トラップ 7 07 ― 3E0H 000FFFE0H コプロセッサエラートラップ 8 08 ― 3DCH 000FFFDCH INTE 命令 9 09 ― 3D8H 000FFFD8H 割込み番号 割込み要因 10 進 16 進 リセット 0 モードベクタ 287 第 10 章 割込みコントローラ 表 10.3-1 割込み要因と割込み番号 , 割込みレベルの関係 (2 / 4) 割込みレベル オフセット TBR デフォルトの アドレス 0A ― 3D4H 000FFFD4H 11 0B ― 3D0H 000FFFD0H ステップトレーストラップ 12 0C ― 3CCH 000FFFCCH NMI 要求 (tool) 13 0D ― 3C8H 000FFFC8H 未定義命令例外 14 0E ― 3C4H 000FFFC4H NMI 要求 15 0F FH 固定 3C0H 000FFFC0H 外部割込み 0 16 10 ICR00 3BCH 000FFFBCH 外部割込み 1 17 11 ICR01 3B8H 000FFFB8H 外部割込み 2 18 12 ICR02 3B4H 000FFFB4H 外部割込み 3 19 13 ICR03 3B0H 000FFFB0H 外部割込み 4 20 14 ICR04 3ACH 000FFFACH 外部割込み 5 21 15 ICR05 3A8H 000FFFA8H 外部割込み 6 22 16 ICR06 3A4H 000FFFA4H 外部割込み 7 23 17 ICR07 3A0H 000FFFA0H リロードタイマ 0 24 18 ICR08 39CH 000FFF9CH リロードタイマ 1 25 19 ICR09 398H 000FFF98H リロードタイマ 2 26 1A ICR10 394H 000FFF94H UART0 ( 受信完了 ) 27 1B ICR11 390H 000FFF90H UART1 ( 受信完了 ) 28 1C ICR12 38CH 000FFF8CH UART2 ( 受信完了 ) 29 1D ICR13 388H 000FFF88H UART0 ( 送信完了 ) 30 1E ICR14 384H 000FFF84H UART1 ( 送信完了 ) 31 1F ICR15 380H 000FFF80H UART2 ( 送信完了 ) 32 20 ICR16 37CH 000FFF7CH DMAC0 ( 終了 , エラー ) 33 21 ICR17 378H 000FFF78H DMAC1 ( 終了 , エラー ) 34 22 ICR18 374H 000FFF74H DMAC2 ( 終了 , エラー ) 35 23 ICR19 370H 000FFF70H DMAC3 ( 終了 , エラー ) 36 24 ICR20 36CH 000FFF6CH DMAC4 ( 終了 , エラー ) 37 25 ICR21 368H 000FFF68H 割込み番号 割込み要因 10 進 16 進 命令ブレーク例外 10 オペランドブレークトラップ 288 第 10 章 割込みコントローラ 表 10.3-1 割込み要因と割込み番号 , 割込みレベルの関係 (3 / 4) 割込みレベル オフセット TBR デフォルトの アドレス 26 ICR22 364H 000FFF64H 39 27 ICR23 360H 000FFF60H システム予約 40 28 ICR24 35CH 000FFF5CH システム予約 41 29 ICR25 358H 000FFF58H システム予約 42 2A ICR26 354H 000FFF54H システム予約 43 2B ICR27 350H 000FFF50H U-TIMER0 44 2C ICR28 34CH 000FFF4CH U-TIMER0 45 2D ICR29 348H 000FFF48H U-TIMER2 46 2E ICR30 344H 000FFF44H タイムベースタイマオーバフ ロー 47 2F ICR31 340H 000FFF40H システム予約 48 30 ICR32 33CH 000FFF3CH システム予約 49 31 ICR33 338H 000FFF38H システム予約 50 32 ICR34 334H 000FFF34H システム予約 51 33 ICR35 330H 000FFF30H システム予約 52 34 ICR36 32CH 000FFF2CH システム予約 53 35 ICR37 328H 000FFF28H システム予約 54 36 ICR38 324H 000FFF24H システム予約 55 37 ICR39 320H 000FFF20H システム予約 56 38 ICR40 31CH 000FFF1CH システム予約 57 39 ICR41 318H 000FFF18H システム予約 58 3A ICR42 314H 000FFF14H システム予約 59 3B ICR43 340H 000FFF10H システム予約 60 3C ICR44 30CH 000FFF0CH システム予約 61 3D ICR45 308H 000FFF08H システム予約 62 3E ICR46 304H 000FFF04H 遅延割込み要因ビット 63 3F ICR47 300H 000FFF00H システム予約 (REALOS で使用 ) 64 40 ― 2FCH 000FFEFCH 割込み番号 割込み要因 10 進 16 進 A/D 変換終了 38 I2C 289 第 10 章 割込みコントローラ 表 10.3-1 割込み要因と割込み番号 , 割込みレベルの関係 (4 / 4) 割込みレベル オフセット TBR デフォルトの アドレス 41 ― 2F8H 000FFEF8H 66 42 ― 2F4H 000FFEF4H システム予約 67 43 ― 2F0H 000FFEF0H システム予約 68 44 ― 2ECH 000FFEECH システム予約 69 45 ― 2E8H 000FFEE8H システム予約 70 46 ― 2E4H 000FFEE4H システム予約 71 47 ― 2E0H 000FFEE0H システム予約 72 48 ― 2DCH 000FFEDCH システム予約 73 49 ― 2D8H 000FFED8H システム予約 74 4A ― 2D4H 000FFED4H システム予約 75 4B ― 2D0H 000FFED0H システム予約 76 4C ― 2CCH 000FFECCH システム予約 77 4D ― 2C8H 000FFEC8H システム予約 78 4E ― 2C4H 000FFEC4H システム予約 79 4F ― 2C0H 000FFEC0H 80 ∼ 255 50 ∼ FF 2BCH 000FFEBCH INT 命令で使用 ― ∼ 000H ∼ 000FFC00H 割込み番号 割込み要因 10 進 16 進 システム予約 (REALOS で使用 ) 65 システム予約 290 第 10 章 割込みコントローラ ■ NMI NMI (Non Maskable Interrupt) は , 割込みコントローラが取り扱う割込み要因の中では , 最も優先順位が高くなっています。そのため , ほかの割込み要因と同時発生の場合は , 常に NMI が選択されます。 • NMI が発生すると , CPU に対して次の情報を伝えます。 - 割込みレベル :15 ("01111B") - 割込み番号 :15 ("0001111B") • NMI 検出 NMI の設定および検出は , 外部割込み /NMI モジュールで行います。本モジュール では NMI 要求により , 割込みレベル / 割込み番号 , MHALTI の生成のみを行います。 • NMI による DMA 転送の抑止 NMI 要求が発生すると , HRCL レジスタの MHALTI ビットが "1" になり , DMA 転送 が抑止されます。DMA 転送の抑止を解除したい場合は , NMI ルーチンの最後で MHALTI ビットを "0" にクリアしてください。 ■ ホールドリクエスト取下げ要求 (HRLC:Hold Request Cancel Request) 優先度の高い割込み処理を , CPU のホールド中に行いたい場合は , ホールドリクエスト 発生元においてリクエストを取り下げてもらう必要があります。この取下げ要求発生 の基準となる割込みレベルを HRCL レジスタに設定します。 ● 発生基準 HRCL レジスタに設定した割込みレベルより高いレベルの割込み要因が発生した場合 は , ホールドリクエスト取下げ要求を発生します。 • HRCL レジスタの割込みレベル > 優先度判定後の割込みレベル →取下げ要求発生 • HRCL レジスタの割込みレベル ≦ 優先度判定後の割込みレベル →取下げ要求なし 取下げ要求発生原因となった割込み要因をクリアしない限り , この取下げ要求は有効 であり , 結果的にいつまでも DMA 転送が起こらないことになります。必ず対応する割 込み要因をクリアしてください。 また , NMI を使用したときは , HRCL レジスタの MHALTI ビットが "1" となっている ため , 取下げ要求が有効になっています。 ● 設定可能なレベル HRCL レジスタに設定可能な値は , ICR と同様に "10000B" から "11111B" までです。 "11111B" に設定した場合はすべての割込みレベルに対して取下げ要求を発生し , "10000B" に設定した場合は NMI でのみ取下げ要求を発生することになります。 ホールドリクエスト取下げ要求発生となる割込みレベルの設定を , 表 10.3-2 に示しま す。 291 第 10 章 割込みコントローラ 表 10.3-2 ホールドリクエスト取下げ要求発生となる割込みレベルの設定 HRCL レジスタ 取下げ要求発生となる割込みレベル 16 (NMI のみ ) 17 割込みレベル 16 18 割込みレベル 16 ∼ 17 ∼ ∼ 31 割込みレベル 16 ∼ 30 〔初期値〕 リセット後は , すべての割込みレベルに対して DMA 転送を抑止します。すなわち , 割 込みが発生していると DMA 転送が行われませんので , HRCL レジスタの値を必要な値 に設定してください。 ■ スタンバイモード ( ストップ / スリープ ) からの復帰 割込み要求の発生により , ストップモードから復帰する機能を本モジュールで実現し ます。NMI を含む , 周辺からの割込み要求 ( 割込みレベルが "11111" 以外 ) が一つでも 発生すると , クロック制御部に対してストップモードからの復帰要求を発生します。 優先度判定部は , ストップ復帰後クロックが供給されてから動作を再開しますので , 優 先度判定部の結果が出るまでの間 CPU は命令を実行することになります。 スリープ状態からの復帰においても , 同様に動作します。 また , スリープ中であっても , 割込みコントローラ内のレジスタはアクセス可能です。 <注意事項> • NMI 要求においてもストップモードからの復帰を行います。ただし , ストップ時に有効 な入力を検出するように NMI を設定してください。 • ストップおよびスリープからの復帰の要因としたくない割込み要因は , 対応する周辺 の制御レジスタで割込みレベルを "11111" にしてください。 292 第 10 章 割込みコントローラ 10.4 ホールドリクエスト取下げ要求機能 (HRCR) の使用例 DMA 転送中に , CPU が優先度の高い処理を行いたいときは , DMA に対してホール ドリクエストを取り下げてもらってホールド状態を解除する必要があります。ここ では , 割込みを利用して DMA に対してホールドリクエストの取下げ , すなわち , CPU の優先動作を実現します。 ■ 制御レジスタ ● HRCL ( ホールドリクエストキャンセルレベル設定レジスタ ) : 本モジュール HRCL レジスタに設定した割込みレベルより高いレベルの割込みが発生した場合に , DMA に対してホールドリクエスト取下げ要求を発生します。その基準となるレベルを 設定します。 ● ICR: 本モジュール 使用する割込み要因に対応する ICR に , HRCL レジスタよりも高いレベルを設定しま す。 ■ ハードウェア構成 各信号の流れは , 次のようになっています。 図 10.4-1 各信号の流れ 本モジュール IRQ バスアクセス要求 MHALTI I-UNIT DHREQ DMA B-UNIT CPU (ICR) (HRCL) DHREQ:Dバスホールドリクエスト DHACK:Dバスホールドアクノリッチ IRQ:割込み要求 DHACK MHALTI:ホールドリクエスト取下げ要求 293 第 10 章 割込みコントローラ ■ ホールドリクエスト取下げ要求シーケンス ホールドリクエスト取下げ要求のタイミングチャートを , 図 10.4-2 に示します。 図 10.4-2 ホールドリクエスト取下げ要求のタイミングチャート RUN バスホールド 割込み処理 バスホールド (DMA転送) CPU バスアクセス要求 割込みルーチンの例 ①割込み要因クリア DHREQ ~ DHACK ②RETI IRQ LEVEL MHALTI 割込み要求が発生すると割込みレベルが変化して , これが HRCL レジスタに設定した レベルよりも高いと DMA に対して MHALTI をアクティブにします。これによって DMA はアクセス要求を取り下げ , CPU はホールド状態から復帰して割込み処理を行い ます。 多重割込みの場合のタイミングチャートを , 図 10.4-3 に示します。 図 10.4-3 割込みレベル HRCL > a > b の場合 RUN バスホールド CPU 割込みI 割込み処理II ③ ④ 割込み処理I ① ② バスホールド (DMA転送) バスアクセス要求 DHREQ DHACK IRQ1 IRQ2 LEVEL MHALTI 割込みルーチンの例 ① , ③割込み要因クリア ∼ ② , ④ RETI 上記の例では , 割込みルーチン I を実行中にそれよりも優先度の高い割込みが発生した 場合を示しています。HRCL レジスタに設定した割込みレベルより高い割込みレベル が発生している間は , DHREQ はさがっています。 <注意事項> HRCL レジスタと ICR に設定する割込みレベルの関係には , 十分注意してください。 294 第 11 章 A/D コンバータ この章では , A/D コンバータの概要 , レジスタの構 成 / 機能および A/D コンバータの動作について説 明します。 11.1 A/D コンバータの概要 11.2 A/D コンバータのレジスタ 11.3 A/D コンバータの動作 11.4 変換データ保護機能 11.5 A/D コンバータ使用上の注意 295 第 11 章 A/D コンバータ 11.1 A/D コンバータの概要 A/D コンバータは , 逐次比較変換方式でアナログ入力電圧をデジタル値に変換するモ ジュールです。 入力信号は , 4 チャネルのアナログ入力端子から選択し , 変換起動はソフトウェア , 外部トリガ ( 立下りエッジ ) , リロードタイマ ( 立上りエッジ ) から選択できます。 ■ A/D コンバータの特長 アナログ入力端子に入力されたアナログ電圧 ( 入力電圧 ) をデジタル値に A/D 変換す る機能をもち , 以下の特長をもっています。 • 最小変換時間 :5.4µs/ チャネル ( マシンクロック 33MHz 時 =CLKP) • サンプルホールド回路内蔵 • 分解能 :10 ビット ( 精度 :8 ビット ) • アナログ入力は 4 チャネルからプログラムで選択 - シングル変換モード :1 チャネルを選択変換 - スキャン変換モード : 連続した複数のチャネルを変換。最大 4 チャネルプログラ ム可能 - 連続変換モード : 指定チャネルを繰り返し変換 - 停止変換モード :1チャネルを変換したら一時停止して次の起動が掛かるまで待 機 ( 変換開始の同期が可能 ) • 割込みによる DMA 転送の起動が可能 • 起動要因は , ソフトウェア , 外部トリガ ( 立下りエッジ ) , リロードタイマ ( 立上り エッジ ) から選択 296 第 11 章 A/D コンバータ ■ ブロックダイヤグラム 図 11.1-1 に , A/D コンバータのブロックダイヤグラムを示します。 図 11.1-1 A/D コンバータのブロックダイヤグラム AVCC AVRH AVSS 内部電圧発生器 逐次比較レジスタ R― 入力スイッチ サンプル&ホールド回路 データレジスタ(ADCR) チャネルデコーダ b u s A/D制御ステータスレジスタ(ADCS) タイミング発生回路 クロック(CLKP) プリスケーラ ATG(外部端子トリガ) リロードタイマ ch1(内部接続) 297 第 11 章 A/D コンバータ 11.2 A/D コンバータのレジスタ A/D コンバータで使用するレジスタの構成および機能について説明します。 ■ A/D コンバータのレジスタ一覧 図 11.2-1 に , A/D コンバータのレジスタ一覧を示します。 図 11.2-1 A/D コンバータのレジスタ一覧 A/D 制御ステータスレジスタ (ADCS) ビット ビット 15 BUSY 7 MD1 14 INT 13 12 11 10 9 INTE PAUS STS1 STS0 STRT 8 ― 6 5 4 3 2 1 0 MD2 ANS2 ANS1 ANS0 ANE2 ANE1 ANE0 データレジスタ (ADCR) ビット ビット 298 15 14 13 12 11 10 ― 9 9 8 8 ― ― ― ― ― 7 7 6 6 5 5 4 4 3 3 2 2 1 1 0 0 第 11 章 A/D コンバータ 11.2.1 A/D 制御ステータスレジスタ (ADCS) A/D 制御ステータスレジスタ (ADCS) は , A/D コンバータの制御およびステータス の表示を行います。 ■ A/D 制御ステータスレジスタ (ADCS) 図 11.2-2 に , A/D 制御ステータスレジスタ (ADCS) のビット構成を示します。 図 11.2-2 A/D 制御ステータスレジスタ (ADCS) のビット構成 アドレス : 00003AH 15 BUSY 0 初期値→ ビット属性→ R/W 14 INT 0 R/W 7 MD1 0 初期値→ R/W ビット属性→ 6 5 4 3 2 1 0 MD0 ANS2 ANS1 ANS0 ANE2 ANE1 ANE0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W ビット 13 12 11 10 9 INTE PAUS STS1 STS0 STRT 0 0 0 0 0 R/W R/W R/W R/W R/W 8 ― 0 R/W <注意事項> A/D 制御ステータスレジスタ (ADCS) は , A/D 変換動作中に書き換えないでください。 以下に , A/D 制御ステータスレジスタ (ADCS) の各ビットの機能を説明します。 [ ビット 15] BUSY (BUSY flag and stop) 読出し時と書込み時で , 以下のように機能が変わります。 •読出し時 : A/D コンバータ動作表示用のビットです。A/D 変換起動でセットされ , 終了でクリアされます。 •書込み時 : A/D 動作中にこのビットに "0" を書き込むと , 強制的に動作を停止しま す。連続 , 停止モード時の強制停止に利用します。 動作表示用のビットに "1" を書き込むことはできません。RMW 系命令では "1" が 読まれます。単発モードでは A/D 変換終了でクリアされます。連続 , 停止モードで は "0" 書込みで停止するまでクリアされません。 リセット時 "0" に初期化されます。 強制停止とソフト起動を同時に行わないでください (BUSY=0, STRT=1) 。 299 第 11 章 A/D コンバータ [ ビット 14] INT (INTerrupt) このビットは , データ表示ビットです。変換データが ADCR に書き込まれるとセッ トされます。 INTE ( ビット 13) が "1" のときにこのビットがセットされると , 割込み要求が発生 します。また , DMA 転送の起動を選択している場合は , DMA が起動されます。"1" 書込みは意味を持ちません。 クリアは "0" 書込みと DMAC からのクリア信号で行われます。 <注意事項> このビットの "0" 書込みによるクリアは , A/D 停止中に行ってください。リセット時 "0" に初期化されます。 リードモディファイライト系命令の読出しでは , "1" が読み出されます。 [ ビット 13] INTE (INTerrupt Enable) このビットは , 変換終了による割込みの許可 / 不許可を指定します。 ・0: 割込みの禁止 ・1: 割込みの許可 割込み要求発生で DMA 転送を起動するときは , このビットをセットしてください。 リセット時 "0" に初期化されます。 [ ビット 12] PAUS (A/D converter PAUSe) このビットは , A/D 変換動作が一時的に停止した場合にセットされます。 A/D 変換結果を格納するレジスタが 1 つのため , 連続で変換した場合に変換結果を DMA 転送しなければ前データが壊れてしまいます。これを保護するため , データレ ジスタの内容を DMA 転送しなければ次の変換データが格納されないようになって います。この間 A/D 変換動作は停止します。DMA 転送を終了すると A/D コンバー タは変換を再開します ( 実際には , INT=0 で再開 ) 。 このビットは, 割込み許可時 (INTE=1) にのみ有効です 「11.4 ( 変換データ保護機能」 を参照してください ) 。 リセット時 "0" に初期化されます。 [ ビット 11, ビット 10] STS1, STS0 (STart Source select) これらのビットは , リセット時 "00" に初期化されます。これらのビットの設定によ り , A/D 変換起動要因を選択します。表 11.2-1 に , A/D 変換起動要因の設定内容を 示します。 300 第 11 章 A/D コンバータ 表 11.2-1 A/D 変換起動要因の設定内容 STS1 STS0 0 0 ソフトウェア起動 0 1 外部端子トリガでの起動またはソフトウェア起動 1 0 リロードタイマでの起動またはソフトウェア起動 1 1 外部端子トリガ , リロードタイマでの起動またはソフト ウェア起動 機 能 起動が兼用になっているモードでは , 最初に検出した要因で起動します。 <注意事項> 起動要因は書換えと同時に変わりますので , A/D 変換動作中に書き換えるときは注意して ください。 • 外部端子トリガは立下りエッジを検出します。外部トリガ入力レベルが "L" のときに本 ビットを書き換えて外部トリガ起動にすると, A/Dコンバータが起動する場合がありま す。 • タイマ選択時は , リロードタイマの ch1 が選択されます。リロードタイマの出力レベ ルが "H" のときに本ビットを書き換えてタイマ起動にすると A/D コンバータが起動す る場合があります。 [ ビット 9] STRT (STaRT) このビットに "1" を書き込むことにより , A/D コンバータを起動します。再起動を かけるときは , 再び書き込んでください。停止モード時は , 動作機能上再起動はか かりません。 リセット時に "0" に初期化されます。 強制停止とソフトウェア起動を同時に行わないでください (BUSY=0, STRT=1) 。 リードモディファイライト系の命令では "0" が読まれます。それ以外では "1" が読 まれます。 [ ビット 8] 試験用ビット このビットは , 試験用ビットです。書込み時は "0" を書き込んでください。 [ ビット 7, ビット 6] MD1, MD0 (A/D converter MoDe set) これらのビットは , 動作モードを選択します。 表 11.2-2 に , 動作モードの設定内容を示します。 301 第 11 章 A/D コンバータ 表 11.2-2 動作モードの設定内容 MD1 MD0 0 0 単発モード , 動作中の再起動はすべて可能 0 1 単発モード , 動作中の再起動は不可 1 0 連続モード , 動作中の再起動は不可 1 1 停止モード , 動作中の再起動は不可 機 能 ・単発モード :ANS2 ∼ ANS0 の設定チャネルから ANE2 ∼ ANE0 の設定チャネルま で A/D 変換を連続して行い , 1 回変換が終了したら停止する。 ・連続モード :ANS2 ∼ ANS0 の設定チャネルから ANE2 ∼ ANE0 の設定チャネルま で , A/D 変換を繰り返し行います。 ・停止モード :ANS2 ∼ ANS0 の設定チャネルから ANE2 ∼ ANE0 の設定チャネルま で , 1 チャネルごとに A/D 変換を行い一時停止する。 変換再開は , 起動要因発生によって行われます。 リセット時に "00" に初期化されます。 <注意事項> 連続モード , 停止モードで A/D 変換を起動すると , BUSY ビットで停止するまで変換動作 を続けます。 • 停止は BUSY ビットに "0" を書き込むことにより行われます。 • 単発 , 連続 , 停止の各モードの「再起動不可」はタイマ , 外部トリガおよびソフトウェ アのすべての起動に適用されます。 [ ビット 5, ビット 4, ビット 3] ANS2, ANS1, ANS0 (ANalog Start channel set) これらのビットにより , A/D 変換の開始チャネルを設定します。 A/D コンバータを起動すると , このビットで選択されたチャネルから A/D 変換を始 めます。 表 11.2-3 に , A/D 変換開始チャネルの設定内容を示します。 表 11.2-3 A/D 変換開始チャネルの設定内容 302 ANS2 ANS1 ANS0 開始チャネル 0 0 0 AN0 0 0 1 AN1 0 1 0 AN2 0 1 1 AN3 1 0 0 設定禁止 1 0 1 設定禁止 1 1 0 設定禁止 第 11 章 A/D コンバータ 表 11.2-3 A/D 変換開始チャネルの設定内容 ANS2 ANS1 ANS0 開始チャネル 1 1 1 設定禁止 ・読出し時 : これらのビットは , A/D 変換中は変換チャネルが読まれます。A/D 起動 とともに更新されます。 停止中は前の変換チャネルが読まれます。 リセット時 "000" に初期化されます。 [ ビット 2, ビット 1, ビット 0] ANE2, ANE1, ANE0 (ANalog End channel set) これらのビットにより , A/D 変換の終了チャネルを設定します。 表 11.2-4 に , A/D 変換終了チャネルの設定内容を示します。 表 11.2-4 A/D 変換終了チャネルの設定内容 ANE2 ANE1 ANE0 開始チャネル 0 0 0 AN0 0 0 1 AN1 0 1 0 AN2 0 1 1 AN3 1 0 0 設定禁止 1 0 1 設定禁止 1 1 0 設定禁止 1 1 1 設定禁止 ・ANS2 ∼ ANS0 と同じチャネルを設定すると , 1 チャネル変換になります ( シング ル変換 ) 。 ・連続モード , 停止モードを設定している場合は , これらのビットによって設定され たチャネルの変換が終わると , ANS2 ∼ ANS0 で設定された開始チャネルに戻り ます。 ・設定チャネルは , ANS ≦ ANE としてください。 ・リセット時に "000" に初期化されます。 設定例 チャネル設定 ANS=1 チャネル , ANE=3 チャネルで単発モードのとき 動作 変換チャネル 1 チャネル → 2 チャネル → 3 チャネル 303 第 11 章 A/D コンバータ <注意事項> ANalog Start channel set (ANS2, ANS1, ANS0) に開始チャネルを設定したあとに , A/D converter MoDe set (MD1, MD0) お よ び ANalog End channel set (ANE2, ANE1, ANE0) をリードモディファイライト系命令で設定しないでください。 ANS2, ANS1, ANS0 ビットは A/D 変換動作が開始するまでは前回の変換チャネルが読 み出されるため , ANS2, ANS1, ANS0 ビットに開始チャネルを設定したあとに , MD1, MD0 ビットおよび ANE2, ANE1, ANE0 ビットをリードモディファイライト系命令で 設定した場合 , ANE2, ANE1, ANE0 ビットの値が書き換わる可能性があります。 304 第 11 章 A/D コンバータ 11.2.2 データレジスタ (ADCR) データレジスタ (ADCR) は , A/D 変換結果を格納するレジスタです。変換結果であ るデジタル値が格納されます。 ■ データレジスタ (ADCR) 図 11.2-3 に , データレジスタ (ADCR) のビット構成を示します。 図 11.2-3 データレジスタ (ADCR) のビット構成 アドレス : 000078H ビット 15 14 13 12 11 10 ― X R 9 9 X R 8 8 X R 初期値→ ビット属性→ ― X R ― X R ― X R ― X R ― X R 初期値→ ビット属性→ 7 7 X R 6 6 X R 5 5 X R 4 4 X R 3 3 X R 2 2 X R 1 1 X R 0 0 X R データレジスタ (ADCR) は , 変換格納レジスタで変換結果であるデジタル値が格納さ れます。 データレジスタ (ADCR) の値は , 1 回の変換終了時ごとに更新されます。通常は , 最終 変換値が格納されています。 このレジスタは , リセット時は不定です。上位の 15 ∼ 10 ビットは , 読出し時は "0" です。 変換データ保護機能があります。「11.4 変換データ保護機能」を参照してください。 305 第 11 章 A/D コンバータ 11.3 A/D コンバータの動作 A/D コンバータは , 逐次変換方式で動作し 10 ビットの分解能をもっています。 この A/D コンバータは , 変換結果格納用のレジスタが 1 つ (16 ビット ) しかないた め , 1 回の変換終了とともに変換データレジスタ (ADCR) が更新されてしまいます。 連続で変換する際は , DMA 転送を使用することが可能です。 A/D コンバータには , 単発変換モード , 連続変換モードおよび停止変換モードの 3 種 類のモードがあります。各モードでの動作を説明します。 ■ 単発変換モード このモードは , ANS ビットと ANE ビットで設定されたアナログ入力を順に変換してい き , ANE ビットで設定された終了チャネルまで変換が終わると , 動作を停止します。 開始チャネルと終了チャネルが同じ場合 (ANS=ANE) は , 1 チャネル変換動作になりま す。 例: ANS=000, ANE=011 の場合 開始 → AN0 → AN1 → AN2 → AN3 → 終了 ANS=010, ANE=010 の場合 開始 → AN2 → 終了 ■ 連続変換モード このモードは , ANS ビットと ANE ビットで設定されたアナログ入力を順に変換してい き , ANE ビットで設定された終了チャネルまで変換が終わると ANS のアナログ入力に 戻り , A/D 変換動作を続けます。 開始チャネルと終了チャネルが同じ場合 (ANS=ANE) は 1 チャネル変換を続けます。 例: ANS=000, ANE=011 の場合 開始 → AN0 → AN1 → AN2 → AN3 → AN0 →→→→ 繰り返し ANS=010, ANE=010 の場合 開始→ AN2 → AN2 → AN2 →→→→ 繰り返し 連続変換モードで変換させると BUSY ビットに "0" を書き込むまで変換を繰り返し , 続 けます。BUSY ビットに "0" を書き込むと , 強制動作停止します。強制動作停止を行う と , 変換中のものは途中で止まってしまうため , 注意してください。強制動作停止した 場合は , 変換レジスタは変換完了した前データが格納されています。 306 第 11 章 A/D コンバータ ■ 停止変換モード このモードは , ANS ビットと ANE ビットで設定されたアナログ入力を順に変換してい きますが , 1 チャネル変換するごとに変換動作を一時停止します。一時停止を解除する には , もう一度起動することにより行われます。 ANE ビットで設定された終了チャネルまで変換が終わると , ANS のアナログ入力に戻 り , A/D 変換動作を続けます。 開始チャネルと終了チャネルが同じ場合 (ANS=ANE) は 1 チャネルを変換します。 例: ANS=000, ANE=011 開始→ AN0 → 停止 → 起動 → AN1 → 停止 → 起動 → AN2 → 停止 → 起動 → AN3 → 停止 → 起動 → AN0 →→→→ 繰り返し ANS=010, ANE=010 の場合 開始→ AN2 → 停止 → 起動 → AN2 → 停止 → 起動 → AN2 →→→→ 繰り返し このときの起動要因は , STS1, STS0 で設定されたものだけです。 このモードを使用することにより , 変換開始の同期をかけることが可能です。 307 第 11 章 A/D コンバータ 11.4 変換データ保護機能 割込み許可状態で A/D 変換を実行すると , 変換データ保護機能が働きます。 本節では , 変換データ保護機能について説明します。 ■ 変換データ保護機能 この A/D コンバータは , 変換データ保護機能を持ち , DMAC を使って連続変換と複数 のデータを確保できることを特長としています。 この A/D コンバータのデータレジスタは 1 つですので , 連続で A/D 変換をすると 1 回 の変換終了とともに変換データが格納されて前データが失われます。これを保護する ために , 変換が終了しても前データが DMAC を使ってメモリへ転送されていないと変 換データはレジスタに格納されず , A/D 変換は一時停止する機能を持っています。 一時停止の解除は , DMA 転送によってメモリへ転送された後に行われます。 前データが転送されていれば , 一時停止することなく A/D コンバータは連続して変換 します。 データ保護機能のフロー例を , 図 11.4-1 に示します。 <注意事項> この機能は ADCS の INT, INTE ビットに関係しています。 データ保護機能は割込み許可 (INTE=1) 状態でしか動作しないようになっています。 割込み禁止 (INTE=0) の場合はこの機能は動作せず , 連続で A/D 変換を行った場合は次々 に変換データはレジスタに格納されて , 旧データは失われます。また , 割込み許可 (INTE=1) 状態で DMA 転送を使わない場合 , INT ビットはクリアされないためデータ保護 機能が働き , A/D コンバータは変換を一時停止状態にします。この場合は , 割込みシーケ ンスで INT ビットをクリアすると停止状態が解除されます。 DMA 動作中で A/D コンバータが一時停止をしているときに割込みを禁止にすると , A/D コンバータが動作し , 転送する前に変換データレジスタの内容が替わることがあります。 また , 一時停止中に再起動をかけると , 待機データが壊れます。 308 第 11 章 A/D コンバータ 図 11.4-1 データ保護機能フロー例 (DMA 転送を使用時 ) DMAC設定 A/D連続変換起動 1回変換終了 DMAC起動 データレジスタ格納 2回変換終了 No A/D一時停止 転送終了 Yes データレジスタ格納 3回変換終了 すべて変換終了 終了 No Yes 転送終了 DMAC起動 DMAC起動,転送 A/D停止 DMAC終了割込み ルーチン ( 注意事項 ) 一時停止中に再起動をかけると , 待機中の変換データは壊れてしまいます。 309 第 11 章 A/D コンバータ 11.5 A/D コンバータ使用上の注意 A/D コンバータを使用するときの使用上の注意を示します。 ■ A/D コンバータ使用上の注意 A/D コンバータを外部トリガまたは内部タイマを使って起動する場合 , ADCS レジスタ の A/D 起動要因ビット STS1, STS0 で設定しますが , このときに外部トリガおよび内部 タイマの入力値はインアクティブ側にしてください。アクティブ側にしておくと誤動 作します。 STS1, STS0設定時は, ATG=1入力, リロードタイマ (ch2) =0出力の状態にしてください。 外部インピーダンスが指定値以上に高くなると , 規定のサンプリング時間内にアナロ グ入力値をサンプリングできなくなり , 正しい変換結果が得られません。 310 第 12 章 UART この章では , UART の概要 , レジスタの構成 / 機能 および UART の動作について説明します。 12.1 UART の概要 12.2 UART のレジスタ 12.3 UART の動作 12.4 UART の使用例 12.5 ボーレートと U-TIMER のリロード値の設定例 311 第 12 章 UART 12.1 UART の概要 UART は , 非同期 ( 調歩同期 ) 通信または CLK 同期通信を行うためのシリアル I/O ポートです。 MB91307 シリーズは , UART を 3 チャネル内蔵しています。 ■ UART の特長 UART は , 以下の特長をもっています。 • 全二重ダブルバッファ • 非同期 ( 調歩同期 ) , CLK 同期通信が可能 • マルチプロセッサモードのサポート • 完全プログラマブルボーレート : 内蔵タイマにより任意のボーレートを設定可能 • 外部クロックによる自由なボーレートの設定が可能 • エラー検出機能 ( パリティ , フレーミング , オーバラン ) • 転送信号は NRZ 符号 • 割込みによる DMA 転送の起動が可能 • DRCL レジスタへの書込み動作による DMAC の割込み要因クリア 312 第 12 章 UART ■ ブロックダイヤグラム 図 12.1-1 に , UART のブロックダイヤグラムを示します。 図 12.1-1 UART のブロックダイヤグラム 制御信号 受信割込み (CPUへ) SC(クロック) 送信クロック U-TIMERより クロック 選択回路 受信クロック 送信割込み (CPUへ) 外部クロック SC 受信制御回路 SI(受信データ) 送信制御回路 スタートビット 検出回路 送信スタート 回路 受信ビット カウンタ 送信ビット カウンタ 受信パリティ カウンタ 送信パリティ カウンタ SO(送信データ) 受信用シフタ 受信状態判定回路 送信用シフタ 送信開始 受信終了 SIDR SODR DMA用 受信エラー発生信号 (DMACへ) R-bus MD1 MD0 SMR レジスタ CS0 SCKE SOE SCR レジスタ PEN P SBL CL A/D REC RXE TXE SSR レジスタ PE ORE FRE RDRF TDRE RIE TIE 制御信号 313 第 12 章 UART UART のレジスタ 12.2 UART で使用するレジスタの構成および機能について説明します。 ■ UART のレジスタ一覧 図 12.2-1 に , UART のレジスタ一覧を示します。 図 12.2-1 UART のレジスタ一覧 15 8 7 0 SCR SSR SMR SIDR(R)/SODR(W) DRCL 8 ビット 314 (R/W) (R/W) (W) 8 ビット 7 D7 6 D6 5 D5 4 D4 7 PE 6 ORE 5 FRE 7 MD1 6 MD0 5 4 ― 7 PEN 6 P 7 ― 3 D3 4 3 RDRF TDRE 2 D2 1 D1 0 D0 シリアルインプットデータレジスタ シリアルアウトプットデータレジスタ (SIDR/SODR) 2 1 RIE 0 TIE シリアルステータスレジスタ (SSR) 0 ― ― ― 3 CS0 2 ― 1 SCKE 5 SBL 4 CL 3 A/D 2 REC 1 RXE 0 TXE 6 5 4 3 2 1 0 ― ― ― ― ― ― ― シリアルモードレジスタ (SMR) シリアルコントロールレジスタ (SCR) (DRCL) 第 12 章 UART シリアルモードレジスタ (SMR) 12.2.1 シリアルモードレジスタ (SMR) は , UART の動作モードを指定します。 動作モードの設定は動作停止中に行い , 動作中にこのレジスタへの書込みは行わな いでください。 ■ シリアルモードレジスタ (SMR) 図 12.2-2 に , シリアルモードレジスタ (SMR) のビット構成を示します。 図 12.2-2 シリアルモードレジスタ (SMR) のビット構成 7 アドレス ch0 000063H MD1 ch1 00006BH R/W ch2 000073H SMR 6 MD0 5 4 ― ― 3 CS0 R/W W 2 ― 1 SCKE 0 ― 初期値 00--0-0-B R/W 以下に , シリアルモードレジスタ (SMR) の各ビットの機能を説明します。 [ ビット 7, ビット 6] MD1, MD0 (MoDe select) これらのビットは , UART の動作モードを選択します。 表 12.2-1 に , UART 動作モードの設定内容を示します。 表 12.2-1 UART 動作モードの設定内容 モード MD1 MD0 0 0 0 非同期 ( 調歩同期 ) ノーマルモード〔初期値〕 1 0 1 非同期 ( 調歩同期 ) マルチプロセッサモード 2 1 0 CLK 同期モード ― 1 1 設定禁止 動作モード <注意事項> • モード 1 の CLK 非同期モード ( マルチプロセッサ ) とは , 1 台のホスト CPU に数台の スレーブ CPU が接続される使用法です。本リソースでは , 受信データのデータ形式を 判別できません。したがって , マルチプロセッサモードのマスタのみをサポートしま す。また , パリティチェック機能は使用できませんので , SCR レジスタの PEN は "0" に設定してください。 • 動作モードの設定は , 動作停止中に行ってください。モード設定時に送受信したデータ は保証されません。割込みによる DMA 転送を最初に起動する前に , DRCL レジスタに 書き込んでください。 315 第 12 章 UART [ ビット 5, ビット 4] (reserved) これらのビットは , 未使用ビットです。常に "1" を書き込んでください。 [ ビット 3] CS0 (Clock Select) このビットは , UART の動作クロックを選択します。 CS0 動作クロック 0 内蔵タイマ (U-TIMER) 1 外部クロック 〔初期値〕 [ ビット 2] (reserved) このビットは , 未使用ビットです。常に "0" を書き込んでください。 [ ビット 1] SCKE (SCLK Enable) このビットは , CLK 同期モード ( モード 2) で通信をする場合 , SC 端子をクロック 入力端子にするか , クロック出力端子として使うかを指定します。 CLK 非同期モード時または外部クロックモード時では "0" に設定してください。 SCKE 機 能 0 クロック入力端子として機能します。〔初期値〕 1 クロック出力端子として機能します。 <注意事項> クロック入力端子として使うには , CS0 ビットを "1" にして外部クロックを選択してお く必要があります。 [ ビット 0] (reserved) このビットは , 未使用ビットです。 316 第 12 章 UART 12.2.2 シリアルコントロールレジスタ (SCR) シリアルコントロールレジスタ (SCR) は , シリアル通信を行う場合の転送プロトコ ルを制御します。 この節では , シリアルコントロールレジスタ (SCR) の構成および機能について説明 します。 ■ シリアルコントロールレジスタ (SCR) 図 12.2-3 に , シリアルコントロールレジスタ (SCR) のビット構成を示します。 図 12.2-3 シリアルコントロールレジスタ (SCR) のビット構成 SCR アドレス ch0 000062H ch1 00006AH ch2 000072H 7 PEN 6 P 5 SBL 4 CL 3 A/D 2 REC 1 RXE 0 TXE R/W R/W R/W R/W R/W R/W R/W R/W 初期値 00000100B 以下に , シリアルコントロールレジスタ (SCR) の各ビットの機能を説明します。 [ ビット 7] PEN (Parity Enable) このビットは , シリアル通信において , パリティを付加してデータ通信を行うかど うかを指定します。 PEN 機 能 0 パリティなし 〔初期値〕 1 パリティあり <注意事項> パリティを付加できるのは , 非同期 ( 調歩同期 ) 通信モードのノーマルモード ( モード 0) のみです。マルチプロセッサモード ( モード 1) および CLK 同期通信 ( モード 2) では , パリティを付加することはできません。 [ ビット 6] P (Parity) このビットは , パリティを付加してデータ通信を行うとき , 偶数 / 奇数パリティを指 定します。 317 第 12 章 UART P パリティ 0 偶数パリティ 〔初期値〕 1 奇数パリティ [ ビット 5] SBL (Stop Bit Length) このビットは , 非同期 ( 調歩同期 ) 通信を行うときのフレームエンドマークである , ストップビットのビット長を指定します。 SBL ストップビット長 0 1 ストップビット 〔初期値〕 1 2 ストップビット [ ビット 4] CL (Character Length) このビットは , 送受信する 1 フレームのデータ長を指定します。 CL 1 フレームのデータ長 0 7 ビットデータ 〔初期値〕 1 8 ビットデータ <注意事項> 7 ビットデータを扱えるのは , 非同期 ( 調歩同期 ) 通信のうちのノーマルモード ( モー ド 0) のみです。マルチプロセッサモード ( モード 1) および CLK 同期通信 ( モード 2) では , 8 ビットデータとしてください。 [ ビット 3] A/D (Address/Data) このビットは , 非同期 ( 調歩同期 ) 通信のマルチプロセッサモード ( モード 1) にお いて , 送受信するフレームのデータ形式を指定します。 A/D 318 フレームのデータ形式 0 データフレーム 〔初期値〕 1 アドレスフレーム 第 12 章 UART [ ビット 2] REC (Receiver Error Clear) このビットに, "0"を書き込むことによって, SSRレジスタのエラーフラグ (PE, ORE, FRE) をクリアします。 "1" 書込みは無効であり , 読出し値は常に "1" になります。 [ ビット 1] RXE (Receiver Enable) このビットは , UART の受信動作を制御します。 RXE 受信動作の禁止 / 許可 0 受信動作を禁止します。 〔初期値〕 1 受信動作を許可します。 <注意事項> 受信中 (受信シフトレジスタにデータが入力されているとき) に受信動作を禁止した場 合には , そのフレームの受信を完了し , 受信データバッファレジスタ (SIDR) に受信 データをストアしたところで受信動作を停止します。 [ ビット 0] TXE (Transmitter Enable) このビットは , UART の送信動作を制御します。 TXE 送信動作の禁止 / 許可 0 送信動作を禁止します。 〔初期値〕 1 送信動作を許可します。 <注意事項> 送信中 ( 送信レジスタからデータが出力されているとき ) に送信動作を禁止した場合は , 送信データバッファレジスタ (SODR) にデータがなくなった後に送信動作を停止しま す。 319 第 12 章 UART シリアルインプットデータレジスタ (SIDR) / シリアルアウトプットデータレジスタ (SODR) 12.2.3 本レジスタは , 受信 / 送信用のデータバッファレジスタです。 ■ シリアルインプットデータレジスタ (SIDR) / シリアルアウトプットデータレジス タ (SODR) 図 12.2-4 に , シリアルインプットデータレジスタ (SIDR) およびシリアルアウトプット データレジスタ (SODR) のビット構成を示します。 図 12.2-4 シリアルインプットデータレジスタ (SIDR) / シリアルアウトプットデータレジスタ (SODR) のビット構成 SIDR アドレス ch0 000061H ch1 000069H ch2 000071H SODR アドレス : 同上 7 D7 6 D6 5 D5 4 D4 3 D3 2 D2 1 D1 0 D0 R R R R R R R R 7 D7 6 D6 5 D5 4 D4 3 D3 2 D2 1 D1 0 D0 W W W W W W W W 初期値 不定 不定 データ長が 7 ビットの場合ビット 7 (D7) は無効データとなります。SODR レジスタへ の書込みは , SSR レジスタの TDRE ビットが "1" のときに書き込んでください。 <注意事項> このアドレスへの書込みは SODR レジスタへの書込みを , 読出しは SIDR レジスタか らの読出しを意味します。 320 第 12 章 UART 12.2.4 シリアルステータスレジスタ (SSR) シリアルステータスレジスタ (SSR) は , UART の動作状態を表すフラグで構成され ています。 この節では , シリアルステータスレジスタ (SSR) の構成と機能について説明します。 ■ シリアルステータスレジスタ (SSR) 図 12.2-5 に , シリアルステータスレジスタ (SSR) のビット構成を示します。 図 12.2-5 シリアルステータスレジスタ (SSR) のビット構成 SSR アドレス ch0 000060H ch1 000068H ch2 000070H 7 PE 6 ORE 5 FRE R R R 4 3 RDRF TDRE R R 2 ― 1 RIE 0 TIE R/W R/W 初期値 00001-00B 以下に , シリアルステータスレジスタ (SSR) の各ビットの機能を説明します。 [ ビット 7] PE (Parity Error) このビットは , 受信時にパリティエラーが発生したときにセットされる , 割込み要 求フラグです。 PE パリティエラーの有無 0 パリティエラーなし 〔初期値〕 1 パリティエラーが発生 一度セットされたフラグをクリアするには , SCR レジスタの REC ビット ( ビット 10) に "0" を書き込みます。 このビットがセットされた場合には , SIDR のデータは無効データとなります。 [ ビット 6] ORE (Over Run Error) このビットは , 受信時にオーバランエラーが発生したときにセットされる , 割込み 要求フラグです。 ORE オーバランエラーの有無 0 オーバランエラーなし 〔初期値〕 1 オーバランエラーが発生 一度セットされたフラグをクリアするには , SCR レジスタの REC ビットに "0" を書 き込みます。 321 第 12 章 UART このビットがセットされた場合には , SIDR のデータは無効データとなります。 [ ビット 5] FRE (FRaming Error) このビットは , 受信時にフレーミングエラーが発生したときにセットされる , 割込 み要求フラグです。 FRE フレーミングエラーの有無 0 フレーミングエラーなし 〔初期値〕 1 フレーミングエラーが発生 一度セットされたフラグをクリアするには , SCR レジスタの REC ビットに "0" を書 き込みます。 このビットがセットされた場合には , SIDR のデータは無効データとなります。 <注意事項> シリアルモードレジスタのビット 3 による内 / 外ボーレートクロックの切換えは , 書込 み後すぐに反映されるので , UART が動作停止状態のときに行ってください。 シリアルモードレジスタのビット 3 は書込み専用です。 [ ビット 4] RDRF (Receiver Data Register Full) このビットは , SIDR レジスタに受信データがあることを示す , 割込み要求フラグで す。 RDRF 受信データの有無 0 受信データなし 〔初期値〕 1 受信データあり SIDR レジスタに受信データがロードされるとセットされ , SIDR レジスタを読み出 すと自動的にクリアされます。 [ ビット 3] TDRE (Transmitter Data Register Empty) このビットは , SODR に送信データを書き込むことができることを示す , 割込み要 求フラグです。 TDRE 送信データの書込み禁止 / 許可 0 送信データの書込み禁止 1 送信データの書込み許可 〔初期値〕 SODR レジスタに送信データを書き込むとクリアされます。書き込んだデータが送 322 第 12 章 UART 信用シフタにロードされて転送が開始されると再びセットされ , 次の送信データを 書き込むことができることを表します。 [ ビット 2] (reserved) このビットは , 未使用ビットです。 [ ビット 1] RIE (Receiver Interrupt Enable) このビットは , 受信割込みを制御します。 RIE 受信割込みの禁止 / 許可 0 受信割込みを禁止します。 〔初期値〕 1 受信割込みを許可します。 <注意事項> 受信割込み要因は , PE, ORE, FRE によるエラー発生のほか , RDRF による正常受信が あります。 [ ビット 0] TIE (Transmitter Interrupt Enable) このビットは , 送信割込みを制御します。 TIE 送信割込みの禁止 / 許可 0 送信割込みを禁止します。 〔初期値〕 1 送信割込みを許可します。 <注意事項> 送信割込み要因は , TDRE による送信要求があります。 323 第 12 章 UART 12.2.5 DRCL レジスタ DRCL レジスタは , DMAC の割込み要因をクリアするためのレジスタです。 ■ DRCL レジスタ 図 12.2-6 に , DRCL レジスタの構成を示します。 図 12.2-6 DRCL レジスタの構成 DRCL 7 6 5 4 3 2 1 0 アドレス ch0 000066H ch1 00006EH ch2 000076H ― W ― W ― W ― W ― W ― W ― W W 初期値 --------B DRCL レジスタに任意の値を書き込むことによって , DMAC への割込み要因がクリア されます。初めて DMAC を起動する際またはそれ以前に UART を使用している場合 , このレジスタを利用して割込み要因をクリアしてください。 このレジスタは , 書込み専用です。 324 第 12 章 UART 12.3 UART の動作 UART には , 非同期 ( 調歩同期 ) モードと CLK モードの 2 種類の動作モードがあり ます。 非同期 ( 調歩同期 ) モードには , ノーマルモードとマルチプロセッサモードがありま す。 この節では , 各動作モードにおける動作について説明します。 ■ UART の動作モード UART は , 表 12.3-1 に示す動作モードを持ち , SMR レジスタ , SCR レジスタに値を設 定することによりモードを切り換えることができます。 表 12.3-1 UART の動作モード モード パリティ データ長 動作モード ストップビット長 0 あり / なし 7 あり / なし 8 非同期 ( 調歩同期 ) ノーマルモード 1 ビットまたは 2 ビット 1 なし 8+1 非同期 ( 調歩同期 ) マルチプロセッサ モード 2 なし 8 CLK モード なし <注意事項> 非同期 ( 調歩同期 ) モードでのストップビット長については , 送信動作のみ指定が可能 です。受信動作については常に 1 ビット長となります。上記モード以外では動作しま せんので , 設定しないでください。 ■ UART のクロック選択 ● 内部タイマ CS0 を "0" に設定して U-TIMER を選択した場合は , U-TIMER に設定したリロード値で ボーレートが決まります。このときのボーレートの算出式は , 次のとおりです。 非同期 ( 調歩同期 ) :φ/ (16 × β) CLK 同期 :φ/β φ: 周辺系マシンクロック周波数 β:U-TIMER で設定した周期 (2n+2 または 2n+3, n はリロード値 ) 非同期 ( 調歩同期 ) モードのボーレートは , 設定したボーレートの -1% ∼ +1% までの 範囲で転送が可能です。 325 第 12 章 UART ● 外部クロック CS0 を "1" に設定して外部クロックを選択した場合のボーレートは , 外部クロックの周 波数を f とすると次のようになります。 非同期 ( 調歩同期 ) :f/16 CLK 同期 :f ただし , f は最大 3.125MHz までです。 326 第 12 章 UART 12.3.1 非同期 ( 調歩同期 ) モード UART を動作モード 0 ( ノーマルモード ) または動作モード 1 ( マルチプロセッサ モード ) で使用するとき , 転送方式は非同期となります。 ■ 転送データフォーマット UART は , NRZ (Non Return to Zero) 形式のデータのみを扱います。 図 12.3-1 に , データフォーマットを示します。 図 12.3-1 転送データフォーマット ( モード 0, 1) SI,SO 0 1 0 Start LSB 1 1 0 0 1 0 1 1 MSB Stop A/D Stop (モード0) (モード1) 転送されたデータは 01001101B 図 12.3-1 に示すように , 転送データは必ずスタートビット ("L" レベルデータ ) より始 まり , LSB ファーストで指定されたデータビット長の転送が行われ , ストップビット ("H" レベルデータ ) で終了します。外部クロックを選択している場合は , 常にクロック を入力してください。 ノーマルモード ( モード 0) ではデータ長を 7 ビットまたは 8 ビットに設定することが できますが , マルチプロセッサモード ( モード 1) では 8 ビットでなければなりません。 また, マルチプロセッサモードではパリティを付加することはできません。そのかわり, A/D ビットが必ず付加されます。 ■ 受信動作 SCR レジスタの RXE ビット ( ビット 1) が "1" ならば , 常に受信動作が行われています。 受信ラインにスタートビットが現れると , SCR レジスタで決められたデータフォー マットに従い , 1 フレームデータの受信が行われます。1 フレームの受信が終わると , エラーが発生した場合にはエラーフラグのセットが行われた後 RDRFフラグ (SSR レジ スタのビット 4) がセットされます。このとき同じ SSR レジスタの RIE ビット ( ビット 1) が "1" にセットされていれば CPU に対して受信割込みが発生します。SSR レジスタ の各フラグを調べ , 正常受信なら SIDR レジスタを読み出して , エラーが発生していれ ば必要な処理を行うようにしてください。 RDRF フラグは , SIDR レジスタを読み出すとクリアされます。 ■ 送信動作 SSR レジスタの TDRE フラグ ( ビット 3) が "1" のとき , SODR レジスタに送信データ を書き込みます。ここで , SCR レジスタの TXE ビット ( ビット 0) が "1" なら送信が行 われます。 327 第 12 章 UART SODR レジスタにセットしたデータが送信用シフトレジスタにロードされて送信が開始さ れると TDRE フラグが再びセットされ , 次の送信データをセットできるようになります。こ のとき , 同じ SSR レジスタの TIE ビット ( ビット 0) が "1" にセットされていれば CPU に対 して送信割込みが発生して , SODR レジスタに送信データをセットするように要求します。 TDRE フラグは , SODR レジスタにデータをセットすると一度クリアされます。 ■ スタートビット検出方法 スタートビットを検出するには , 以下のように設定してください。 • 通信期間直前は通信線を必ず "H" ( マークレベルを付加 ) にしてください。 • 通信線が "H"( マークレベル ) の期間に , 受信許可 (RXE="H") にしてください。 • 非通信期間中 ( マークレベルを除く ) は , 受信許可 (RXE="H") にしないでください。正 しいデータが受信できません。 • ストップビット検出後 (RDRF フラグが "1" にセットされた後 ), 通信線が "H"( マークレ ベル ) の間に受信禁止 (RXE="L") にしてください。 図 12.3-2 正常動作例 通信期間 非通信期間 マークレベル SIN スタートビット ST 非通信期間 ストップビット データ D0 D1 D2 D3 D4 D5 D6 D7 SP D7 SP (01010101b送信) RXE 受信クロック サンプリングクロック ●受信クロック(8パルス) マイコン側の認識 (01010101b受信) ST ●受信クロックを16分周してサンプリングクロックを生成 D0 D1 D2 D3 D4 D5 D6 以下の例のようなタイミングで受信許可に設定しますとマイコン側で入力データ (SIN) が 正しく認識されませんので注意してください。 • 通信線が "L" の期間に , 受信許可 (RXE="H") に設定した場合の動作例 図 12.3-3 異常動作例 通信期間 非通信期間 マークレベル スタートビット SIN (01010101b送信) RXE 非通信期間 ストップビット データ ST D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7 SP SP 受信クロック サンプリングクロック マイコン側の認識 (10101010b受信) ST認識 PE,ORE,FRE ●受信エラー発生 328 第 12 章 UART 12.3.2 CLK 同期モード UART を動作モード 2 で使用するとき , 転送方式はクロック同期となります。 ■ 転送データフォーマット UART は , NRZ (Non Return to Zero) 形式のデータのみを扱います。 図 12.3-4 に , 送受信クロックとデータとの関係を示します。 図 12.3-4 転送データフォーマット ( モード 2) SODR書込み マーク SC RXE,TXE SI,SO 1 0 LSB 1 1 0 0 1 0 MSB (モード2) 転送されたデータは 01001101B 内部クロック (U-TIMER) を選択している場合は , データを送信するとデータ受信用同期ク ロックが自動的に生成されます。また , 外部クロックを選択している場合は , 送信側 UART の送信用データバッファ SODR レジスタにデータがあること (TDRE フラグが "0") を確か めた後 , 正確に 1 バイト分のクロックを供給する必要があります。また , 送信開始前と終了 後は , 必ずマークレベルにしてください。 データ長は 8 ビットのみとなり , パリティを付加することはできません。また , スタート / ストップビットがないのでオーバランエラー以外のエラー検出は行われません。 ■ 初期化 CLK 同期モードを使用する場合の , 各制御レジスタの設定値を示します。 • SMR レジスタ - MD1, MD0 :"10" - CS : クロック入力を指定 - SCKE : 内部タイマの場合 "1", 外部クロックの場合 "0" - SOE : 送信を行う場合 "1", 受信のみの場合 "0" • SCR レジスタ - PEN :"0" - P, SBL, A/D : これらのビットは意味を持ちません 329 第 12 章 UART - CL :"1" - REC :"0" ( 初期化するため ) - RXE, TXE : 少なくとも , どちらか一方を "1" • SSR レジスタ - RIE : 割込みを使用する場合 "1", 割込みを使用しない場合 "0" - TIE :"0" ■ 通信開始 SODR レジスタへの書込みによって通信を開始します。 受信のみの場合でも , 必ず仮の送信データを SODR レジスタに書き込む必要がありま す。 ■ 通信終了 SSR レジスタの RDRF フラグが "1" に変化したことにより確認できます。SSR レジス タの ORE ビットによって , 通信が正常に行われたかを判断してください。 330 第 12 章 UART 12.3.3 割込み発生およびフラグのセットタイミング UART には , 5 つのフラグと 2 つの割込み要因があります。 5 つのフラグは , PE/ORE/FRE/RDRF/TDRE です。PE はパリティエラー , ORE は オーバランエラー , FRE はフレーミングエラーのことで , 受信時エラーが発生した ときにセットされ , SCR レジスタの REC に "0" を書き込むとクリアされます。 RDRF は , 受信データが SIDR レジスタにロードされるとセットされ , SIDR レジス タを読み出すことでクリアされます。ただし , モード 1 ではパリティ検出機能 , モー ド 2 ではパリティ検出機能とフレーミングエラー検出機能はありません。TDRE は , SODR レジスタが空になって書込み可能な状態になるとセットされ , SODR レジス タへ書き込むとクリアされます。 ■ 割込み発生およびフラグのセットタイミング 2 つの割込み要因は , 受信用のものと送信用のものです。受信時は , PE/ORE/FRE/RDRF により割込みを要求します。送信時は , TDRE により割込みを要求します。各動作モー ドによる割込みフラグのセットタイミングを以下に示します。 ● モード 0 の受信動作時 PE, ORE, FRE, RDRF は受信転送が終了し最後のストップビットを検出するときにフラ グがセットされ , CPU への割込み要求が発生します。PE, ORE, FRE がアクティブ時は , SIDR のデータは無効データとなります。 図 12.3-5 に , モード 0 における ORE, FRE, RDRF のセットタイミングを示します。 図 12.3-5 ORE, FRE, RDRF のセットタイミング ( モード 0) データ D6 D7 Stop PE,ORE,FRE RDRF 受信割込み ● モード 1 の受信動作時 ORE, FRE, RDRF は , 受信転送が終了し最後のストップビットを検出するときにフラグ がセットされ , CPU への割込み要求が発生します。また , 受信可能なデータ長は 8 ビッ トのため最後の 9 ビット目のアドレス / データを示すデータは無効データとなります。 ORE, FRE がアクティブ時は , SIDR のデータは無効データとなります。 図 12.3-6 に , モード 1 における ORE, FRE, RDRF のセットタイミングを示します。 331 第 12 章 UART 図 12.3-6 ORE, FRE, RDRF のセットタイミング ( モード 1) データ D6 アドレス/データ Stop ORE,FRE RDRF 受信割込み ● モード 2 の受信動作時 ORE, RDRF は , 受信転送が終了し最後のデータ (D7) を検出するときにフラグがセット され , CPU への割込み要求が発生します。ORE がアクティブ時は , SIDR のデータは無 効データとなります。 図 12.3-7 に , モード 2 における ORE, RDRF のセットタイミングを示します。 図 12.3-7 ORE, RDRF のセットタイミング ( モード 2) データ D5 D6 D7 ORE RDRF 受信割込み ● モード 0, モード 1, モード 2 の送信動作時 TDRE は SODR レジスタへ書き込まれるとクリアされます。内部のシフトレジスタに 転送されて次のデータ書込みが可能な状態になるとセットされ , CPU への割込み要求 が発生します。送信動作中に SCR レジスタの TXE に "0" ( モード 2 のときは RXE も含 む ) を書き込むと , SSR レジスタの TDRE が "1" となり , 送信用のシフタが停止してか ら UART の送信動作を禁止します。送信動作中に SCR レジスタの TXE に "0" ( モード 2 のときは RXE も含む ) を書き込んだ後 , 送信が停止する前に SODR レジスタへ書き 込まれたデータは送信されます。 図 12.3-8 にモード 0, 1 における TDRE のセットタイミングを , 図 12.3-9 にモード 2 に おける TDRE のセットタイミングを示します。 332 第 12 章 UART 図 12.3-8 TDRE のセットタイミング ( モード 0, 1) SODR書込み TDRE CPUへ割込みを要求する。 SO割込み ST D0 D1 D2 D3 D4 D5 D6 D7 SP SP ST D0 D1 D2 D3 A/D SO出力 ST:スタートビット SP:ストップビット D0~D7:データビット A/D :アドレス/データマルチプレクサ 図 12.3-9 TDRE のセットタイミング ( モード 2) SODR書込み TDRE CPUへ割込みを要求する。 SO割込み SO出力 D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7 D0~D7:データビット ■ 使用上の注意 動作モードの設定は , 動作停止中に行ってください。モード設定時に送受信したデータ は保証されません。 割込みによるDMA転送を最初に起動する前に, DRCLレジスタに書き込んでください。 333 第 12 章 UART 12.4 UART の使用例 UART の使用例を示します。モード 1 は , 1 台のホスト CPU に数台のスレーブ CPU が接続されるような場合に使用されます。 ■ UART の使用例 図 12.4-1 に , モード 1 を使用した場合のシステム構築例を示します。このリソースで は , ホスト側の通信インタフェースのみサポートしています。 図 12.4-1 モード 1 を使用した場合のシステム構築例 SO SI ホストCPU SO SI スレーブCPU#0 SO SI スレーブCPU#1 通信は , ホスト CPU がアドレスデータを転送することによって始まります。アドレス データとは , SCR レジスタの A/D が "1" のときのデータです。それにより通信先とな るスレーブ CPU が選択され , ホスト CPU との通信が可能になります。通常データは , SCR レジスタの A/D が "0" のときのデータです。図 12.4-2 にそのフローチャートを示 します。 このモードにおいては , パリティチェック機能は使用できませんので , SCR レジスタの PEN ビットは "0" としてください。 334 第 12 章 UART 図 12.4-2 モード 1 を使用した場合の通信フローチャート (ホストCPU) START 転送モードを"1"とする D0~D7にスレーブCPUを 選択するデータ, A/Dに"1"をセットし 1バイト転送 A/Dに"0"をセット 受信動作許可 スレーブCPUと通信 No 通信終了? Yes ほかの スレーブCPU と通信 No Yes 受信動作禁止 END 335 第 12 章 UART 12.5 ボーレートと U-TIMER のリロード値の設定例 ボーレートと U-TIMER のリロード値の設定例を示します。 ■ ボーレートと U-TIMER のリロード値の設定例 表 12.5-1 に , 非同期 ( 調歩同期 ) モードの設定値を , 表 12.5-2 に CLK 同期モードの設 定値を示します。 表中の周波数は , 周辺系マシンクロック周波数を表します。また , UCC1 は , U-TIMER の UTIMC レジスタ UCC1 ビットに設定する値です。表中の「-」部は , 誤差が± 1% を 超えてしまうため使用できないことを示します。 表 12.5-1 非同期 ( 調歩同期 ) モードの設定値 ボーレート ms 33MHz 20MHz 16.5MHz 10MHz 1200 833.33 858 (UCC1=0) 520 (UCC1=0) 428 (UCC1=1) 259 (UCC1=1) 2400 416.67 428 (UCC1=1) 259 (UCC1=1) 214 (UCC1=0) 129 (UCC1=0) 4800 208.33 214 (UCC1=0) 129 (UCC1=0) 106 (UCC1=0) 64 (UCC1=0) 9600 104.17 106 (UCC1=1) 64 (UCC1=0) 52 (UCC1=1) 31 (UCC1=1) 19200 52.08 52 (UCC1=1) 31 (UCC1=1) 26 (UCC1=0) ― 38400 26.04 26 (UCC1=0) ― 12 (UCC1=1) ― 57600 17.36 17 (UCC1=0) ― 8 (UCC1=0) ― 10400 96.15 98 (UCC1=0) 59 (UCC1=0) 48 (UCC1=1) 29 (UCC1=0) 31250 32.00 32 (UCC1=0) 19 (UCC1=0) 15 (UCC1=1) 9 (UCC1=0) 62500 16.00 15 (UCC1=1) 9 (UCC1=0) ― 4 (UCC1=0) 表 12.5-2 CLK 同期モードの設定値 ボーレート ms 33MHz 20MHz 16.5MHz 10MHz 250k 4.00 65 (UCC1=0) 39 (UCC1=0) 32 (UCC1=0) 19 (UCC1=0) 500k 2.00 32 (UCC1=0) 19 (UCC1=0) 15 (UCC1=1) 9 (UCC1=0) 1M 1.00 15 (UCC1=1) 9 (UCC1=0) 7 (UCC1=0)* 4 (UCC1=0) * : ± 1% 以上の誤差あり 336 第 13 章 I2C インタフェース この章では , I2C インタフェースの概要 , レジスタ の構成 / 機能および I2C インタフェースの動作につ いて説明します。 13.1 I2C インタフェースの概要 13.2 I2C インタフェースのレジスタ 13.3 I2C インタフェースの動作 13.4 動作フローチャート 337 第 13 章 I2C インタフェース 13.1 I2C インタフェースの概要 I2C インタフェースは , Inter IC バスをサポートするシリアル I/O ポートです。 ■ I2C インタフェースの特長 I2C バス上のマスタ / スレーブデバイスとして動作し , 以下の特長があります。 • マスタ / スレーブ送受信 • アービトレーション機能 • クロック同期化機能 • スレーブアドレス / ゼネラルコールアドレス検出機能 • 転送方向検出機能 • スタートコンディションの繰り返し発生および検出機能 • バスエラー検出機能 • 10 ビット /7 ビットマスタ / スレーブアドレス • 標準モード ( 最高 100Kbps) / 高速モード ( 最高 400Kbps) に対応 • 転送終了割込み / バスエラー割込みの発生 ■ ブロックダイヤグラム 図 13.1-1 に , I2C インタフェースのブロックダイヤグラムを示します。 338 第 13 章 I2C インタフェース R-bus 図 13.1-1 I2C インタフェースのブロックダイヤグラム ICCR EN I2C動作許可 IDBL DBL ICCR クロック許可 クロック分周2 2345 32 CS4 CS3 CS2 CS1 CS0 IBSR BB RSC LRB Sync シフトクロック発生 クロック選択2(1/12) シフトクロック エッジ変化タイミング バスビジー リピートスタート スタート・ストップ Last Bit コンディション検出 送/受 TRX エラー ADT First Byte アビトレーションロスト検出 AL IBCR SCL BER BEIE INTE INT IBCR SCC MSS ACK GCAA 終了 スタート マスタ ACK許可 SDA IRQ 割込み要求 スタート・ストップ コンディション発生 GC-ACK許可 IDAR IBSR スレーブ AAS GCA グローバルコール スレーブアドレス比較 ENTB ISMK RAL ITBA ITMK ISBA ISMK 339 第 13 章 I2C インタフェース 13.2 I2C インタフェースのレジスタ I2C インタフェースで使用するレジスタの構成および機能について説明します。 ■ I2C インタフェースのレジスタ一覧 図 13.2-1 に , I2C インタフェースのレジスタ一覧を示します。 図 13.2-1 I2C インタフェースのレジスタ一覧 バスコントロールレジスタ (IBCR) アドレス : 000094H 15 BER 14 BEIE 13 SCC 12 MSS 11 ACK 10 GCAA 9 INTE 8 INT 初期値→ R/W 0 R/W 0 W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 バスステータスレジスタ (IBSR) アドレス : 000095H 初期値→ 15 BB 14 RSC 13 AL 12 LRB 11 TRX 10 AAS 9 GCA 8 ADT R 0 R 0 R 0 R 0 R 0 R 0 R 0 R 0 10 ビットスレーブアドレスレジスタ (ITBA) 15 0 14 13 12 11 10 アドレス : 000096H ― ― ― ― ― 9 TA9 8 TA8 初期値→ ― ― ― ― ― ― R/W 0 R/W 0 7 6 5 4 3 2 1 0 アドレス : 000097H TA7 TA6 TA5 TA4 TA3 TA2 TA1 TA0 初期値→ R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 8 TM8 10 ビットスレーブアドレスマスクレジスタ (ITMK) 15 ENTB 14 RAL R/W 0 R 0 ― ― 7 6 5 アドレス : 000099H TM7 TM6 初期値→ R/W 1 R/W 1 アドレス : 000098H 初期値→ 13 12 11 10 ― ― ― ― 9 TM9 ― ― R/W 1 R/W 1 4 3 2 1 0 TM5 TM4 TM3 TM2 TM1 TM0 R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 ( 続く ) 340 第 13 章 I2C インタフェース ( 続き ) 7 ビットスレーブアドレスレジスタ (ISBA) 7 6 5 4 3 2 1 0 アドレス : 00009BH ― SA6 SA5 SA4 SA3 SA2 SA1 SA0 初期値→ ― R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 7 ビットスレーブアドレスマスクレジスタ (ISMK) アドレス : 00009AH 初期値→ 15 ENSB 14 SM6 13 SM5 12 SM4 11 SM3 10 SM2 9 SM1 8 SM0 R/W 0 R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 7 D7 6 D6 5 D5 4 D4 3 D3 2 D2 1 D1 0 D0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 データレジスタ (IADR) アドレス : 00009DH 初期値→ クロックコントロールレジスタ (ICCR) アドレス : 00009EH 初期値→ 15 TEST W 0 14 ― 13 EN 12 CS4 11 CS3 10 CS2 9 CS1 8 CS0 ― R/W 0 R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 クロックディセーブルレジスタ (IDBL) 15 14 13 12 11 10 9 8 アドレス : 00009FH ― ― ― ― ― ― ― DBL 初期値→ ― ― ― ― ― ― ― R/W 0 341 第 13 章 I2C インタフェース 13.2.1 バスステータスレジスタ (IBSR) バスステータスレジスタ (IBSR) は , I2C インタフェースの状態を示すレジスタです。 このレジスタは読出し専用です。 ■ バスステータスレジスタ (IBSR) 図 13.2-2 に , バスステータスレジスタ (IBSR) のビット構成を示します。 図 13.2-2 バスステータスレジスタ (IBSR) のビット構成 アドレス : 000095H 初期値→ 7 BB 6 RSC 5 AL 4 LRB 3 TRX 2 AAS 1 GCA 0 ADT R 0 R 0 R 0 R 0 R 0 R 0 R 0 R 0 このレジスタは , インタフェースが動作停止状態 (ICCR の EN=0) になるとクリアされ ます。 以下に , バスステータスレジスタ (IBSR) の各ビットの機能を説明します。 [ ビット 7] BB (Bus Busy) このビットは , I2C バスの状態を示すビットです。 0 [STOP] 条件を検出した ( バスアイドル中 ) 1 [START] 条件を検出した ( バスは使用されている ) [ ビット 6] RSC (Repeated Start Condition) このビットは , 反復 [START] 検出ビットです。 0 反復 [START] 条件は検出されていない 1 バス使用中に , 反復 [START] 条件を検出した このビットは , アドレスデータ転送終了 (ADT=0) または [STOP] 条件検出でクリア されます。 [ ビット 5] AL (Arbitration Lost) このビットは , アービトレーションロスト検出ビットです。 342 0 アービトレーションロストが検出されていない 1 マスタ送信中にアービトレーションロストが発生した 第 13 章 I2C インタフェース INT ビットへの "0" 書込みまたは IBCR レジスタの MSS ビットに "1" 書き込むことで クリアされます。 アービトレーションロストが検出されるのは , 以下の場合です。 • 送信データが , SCL の立上りエッジで SDA ライン上のデータと一致しない場合 • データの第 1 ビットで , 別のマスタにより反復 [START] 条件が発生した場合 • インタフェースが , ほかのスレーブデバイスによって SCL ラインが "L" にドライブ されているために , [START] 条件または [STOP] 条件が発生できない場合 [ ビット 4] LRB (Last Recieved Bit) このビットは , アクノリッジ格納ビットです。受信側からのアクノリッジを格納し ます。 0 スレーブアクノリッジを検出した 1 スレーブアクノリッジを検出していない アクノリッジの検出 ( 受信 9 ビット ) により書き換えられます。[START] 条件また は [STOP] 条件の検出でクリアされます。 [ ビット 3] TRX (Transferring Data) このビットは , データ転送中の送信状態を示すビットです。 0 データ送信中でない 1 データ送信中 "1" にセットされるのは , 以下の場合です。 • マスタモード時に , [START] 条件が発生したとき • スレーブモードでの第 1 バイトの転送終了時と読出しアクセス時またはマスタ モードでのデータ送信時 "0" にセットされるのは , 以下の場合です。 • バスがアイドル状態 (IBCR の BB=0) • アービトレーションロスが発生したとき • マスタ割込み時 (MSS=1, INT=1) に SCC ビットに "1" を書き込んだとき • マスタ割込み時 (MSS=1, INT=1) に MSS ビットがクリアされたとき • スレーブモード時に最後の転送バイトでアクノリッジが発生しなかったとき • スレーブモード時にデータ受信したとき • マスタモード時にスレーブからデータを受信したとき [ ビット 2] AAS (Addressed As Slave) このビットは , スレーブアドレッシング検出ビットです。 0 スレーブ時にアドレッシングされていない 1 スレーブ時にアドレッシングされた 343 第 13 章 I2C インタフェース ( 反復 ) [START] 条件または [STOP] 条件の検出でクリアされます。 7/10 ビットのスレーブアドレスを検出したときにセットされます。 [ ビット 1] GCA (General Call Address) このビットは , ゼネラルコールアドレス (00H) 検出ビットです。 0 スレーブ時にゼネラルコールアドレスは受信していない 1 スレーブ時にゼネラルコールアドレスを受信した ( 反復 ) [START] 条件または [STOP] 条件の検出でクリアされます。 [ ビット 0] ADT (Adress Data Transfer) このビットは , アドレスデータ検出ビットです。 0 受信データがアドレスでないとき ( またはバス開放中のとき ) 1 受信データがアドレスのとき [START] 条件の検出で "1" にセットされます。書込みアクセスでの 10 ビットスレー ブアドレスのヘッダ部が検出された場合は , 第 2 バイトあとでクリアされます。そ れ以外では , 第 1 バイトあとでクリアされます。 第 1 バイト / 第 2 バイトあととは , 以下のとおりです。 344 • マスタ割込み中 (MSS=1, INT=1) に MCC ビットに "0" を書き込んだとき • マスタ割込み中 (MSS=1, INT=1) に SCC ビットに "1" を書き込んだとき • INT ビットがクリアしたとき • マスタおよびスレーブとしての転送対象でない場合の転送バイトの最初 第 13 章 I2C インタフェース 13.2.2 バスコントロールレジスタ (IBCR) バスコントロールレジスタ (IBCR) の構成および機能について説明します。 ■ バスコントロールレジスタ (IBCR) 図 13.2-3 に , バスコントロールレジスタ (IBCR) のビット構成を示します。 図 13.2-3 バスコントロールレジスタ (IBCR) のビット構成 アドレス : 000094H 15 BER 14 BEIE 13 SCC 12 MSS 11 ACK 10 GCAA 9 INTE 8 INT 初期値→ R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 インタフェースが動作停止状態 (ICCRのEN=0) になると, BER, BEIEビット以外のビッ トはクリアされます。 以下に , バスコントロールレジスタ (IBCR) の各ビットの機能を説明します。 [ ビット 15] BER (Bus ERror) このビットは , バスエラー割込み要求フラグビットです。 リードモディファイ系命令では常に "1" が読み出されます。 書込み時 0 バスエラー割込み要求フラグをクリアする 1 関係なし 読出し時 0 バスエラーは検出されていない 1 バスエラーを検出した このビットがセットされた場合 , CCR レジスタの EN ビットはクリアされ , I2C イン タフェースは停止状態になりデータ転送は中断されます。また , BER, BEIE ビット 以外のビットはクリアされます。 このビットは , 再度動作許可 (ICCR の EN=1) をする前にクリアしておく必要があり ます。 345 第 13 章 I2C インタフェース "1" にセットされるのは , 以下の場合です。 •[START] 条件または [STOP] 条件が不正な場所で検出されたとき ( アドレス転送中 , データ転送中 ) * •10ビット書込みアクセス前に10ビット読出しアクセスのヘッダ部を受信したとき* •マスタモード時に [STOP] 条件を検出したとき * : この検出は , 転送中に I2C インタフェースが動作許可されていると , 不正バスエ ラーレポートを抑止するため , 最初の [STOP] 条件の受信後に行われます。 [ ビット 14] BEIE (Bus Error Interrupt Enable) このビットは , バスエラー割込み許可ビットです。 0 バスエラー割込み禁止 1 バスエラー割込み許可 このビットが "1" のとき , BER ビットが "1" なら割込みを発生します。 [ ビット 13] SCC (Start Condition Continue) このビットは , 反復 [START] 条件発生ビットです。 書込み時 0 関係なし 1 マスタ転送時に反復 [START] 条件を発生させる このビットの読出し値は常に "0" です。 マスタモード時の割込み中に , このビットに "1" の書込み [START] 条件を発生させ たとき , INT ビットは自動的にクリアされます。 [ ビット 12] MSS (Master Slave Select) このビットは , マスタ / スレーブの選択ビットです。 0 1 スレーブモードとなります。 マスタモードとなり , [START] 条件を発生して IDAR レジスタの値をス レーブアドレスとして送信します。 このビットは , マスタ送信中にアービトレーションロストが発生した場合クリアさ れ , スレーブモードになります。 マスタ割込み中 (MSS=1, INT=1) にこのビットに "0" を書き込むと , INT ビットは自 動的にクリアされます。さらに [STOP] 条件を発生して転送が終了します。 346 第 13 章 I2C インタフェース <注意事項> MSS ビットは直接リセットされます。[STOP] 条件を検出するには IBSR レジスタの BB ビットを調査してください。 バスが , アイドル状態 (MSS=0, BB=0) の間に , "1" を書き込むと , [START] 条件が発生 します。さらに , IDAR レジスタの内容も送信します。 バス使用中 (IBSR レジスタの BB=1, TRX=0, IBCR レジスタの MSS=0) に MSS ビット に "1" を書き込むとインタフェースはバス開放まで待ってから送信を開始します。その 間に I2C インタフェースは書込みアクセスを伴うスレーブとしてアドレス指定される と , 転送終了後にバスは開放されます。その間 , スレーブとして送信中の場合 (IBCS の AAS=1, TRX=1) , バスが開放されてもデータ送信しません。 I2C インタフェースがスレーブ (IBSR の AAS=1) として指定されたか , 次の割込み時に データ送信が正常であるか , 不正終了した (IBSR の AL=1) かどうかを確認することが 重要です。 本 LSI のほかにマスタモードとなる他の LSI がバス上に存在する場合 , 本 LSI をマス タモードで使用できません。 • 使用可能な構成例 I2Cバス MB91307 シリーズ スレーブA スレーブB マスタ I2Cバス MB91307 シリーズ スレーブA マスタA スレーブ • 使用できない構成例 I2Cバス MB91307 シリーズ スレーブA マスタA マスタ 347 第 13 章 I2C インタフェース 下記条件で使用する場合,スレーブとして受信できませんのでゼネラルコールアドレスの 送信は禁止です。 • 本 LSI のほかにマスターモードとなるほかの LSI がバス上に存在し,本 LSI がマスタ としてゼネラルコールアドレスを送信し,第 2 バイト目以降でアービトレーションロ ストが発生する場合 [ ビット 11] ACK (ACKnowledge) このビットは , データを受信した場合のアクノリッジ発生許可ビットです。 0 データ受信に対してアクノリッジ発生しない 1 データ受信に対してアクノリッジ発生する このビットは , スレーブ時のアドレスデータ受信時には無効となります。 インタフェースが , 7 または 10 ビットのスレーブアドレスを検出したとき , イネー ブルビット (ENTB の ITMK, ENSB の ISMK) がセットされていると , アクノリッジ が発生します。 このビットへの書込みは , 割込みが発生している間 (INT=1) またはバスがアイドル 状態 (IBSR の BB=1) のときまたはインタフェースを動作禁止状態 (ICCR レジスタ の EN=1) にしているときに行ってください。 [ ビット 10] GCAA (General Call Address Ackowledge) このビットは , ゼネラルコールアドレスを受信した場合のアクノリッジ発生許可 ビットです。 0 ゼネラルコールアドレス受信に対してアクノリッジ発生しない 1 ゼネラルコールアドレス受信に対してアクノリッジ発生する このビットへの書込みは , 割込みが発生している間 (INT=1) またはバスがアイドル 状態 (IBSR の BB=1) のときまたはインタフェースを動作禁止状態 (ICCR レジスタ の EN=1) にしているときに行ってください。 [ ビット 9] INTE (INTerrupt Enable) このビットは , 割込み許可ビットです。 0 割込み禁止 1 割込み許可 このビットが "1" のとき , INT ビットが "1" なら割込みを発生します。 [ ビット 8] INT (INTerrupt) このビットは , 転送終了割込み要求フラグビットです。リードモディファイ系命令 では "1" が読み出されます。 348 第 13 章 I2C インタフェース 書込み時 0 転送終了割込み要求フラグをクリアする 1 関係なし 読出し時 0 ・転送が終了していない ・転送対象でない ・バスが開放状態 アクノリッジビットを含めた1バイト転送が終了したときに, 次の条件 1 に該当する場合セットされます。 ・バスマスタである ・アドレスされたスレーブである ・ゼネラルコールアドレスを受信した ・アービトレーションロストが起こった スレーブアドレスに指定されているとき , アクノリッジを含むスレー ブアドレス受信の最後にセットされます。 このビットが "1" のとき , SCL ラインは「"L" レベル」に保たれます。このビットへ "0" を書き込むことによりクリアされ , SCL ラインを開放して次バイトを転送しま す。また , マスタ時には , 「START」条件または「STOP」条件を発生します。 このビットは , SCC ビットの "1" 書込みまたは MSS ビットのクリアでクリアされま す。 <注意事項> SCC, MSS, INT ビットの同時書込みにより , 次バイト転送 , 「START」条件の発生 , 「STOP」条件の発生の競合が起こります。このときの優先度は次のようになります。 1. 次のバイト転送と「STOP」条件の発生 INT ビットに "0", MSS ビットに "0" を書き込むと , MSS ビットの書込みが優先され , 「STOP」条件が発生されます。 2. 次のバイト転送と「START」条件の発生 INT ビットに "0", SCC ビットに "1" を書き込むと , SCC ビットの書込みが優先され , 「START」条件が発生されます。 繰り返しスタートコンディションが, IDARレジスタに送られると, 競合が起こります。 3. 反復「START」条件の発生と「STOP」条件の発生 SCC ビットに "1", MSS ビットに "0" を同時に書き込むと , MSS ビットのクリアが優 先されます。 「STOP」条件が発生して , インタフェースがスレーブモードになります。 図 13.2-4 と図 13.2-5 に示したタイミングで , スタートコンディションを発生させる命 令を実行 (MSS ビットに "1" を設定 ) すると , アービトレーションロスト検出 (AL ビッ ト =1) による割込み (INT ビット =1) が発生しません。 349 第 13 章 I2C インタフェース • AL ビット =1 検出による割込み (INT ビット =1) が発生しない条件 1 スタートコンディション未検出 (BB ビット =0) 状態で , SDA 端子または SCL 端子レベ ルが "L" のときに , スタートコンディションを発生させる命令を実行 (IBCR レジスタの MSS ビットに "1" を設定 ) した場合。 図 13.2-4 AL ビット =1 検出による割込みが発生しないタイミング図 SCL 端子または SDA 端子が "L" レベル SCL 端子 "L" SDA 端子 "L" I2C 動作許可状態 (EN ビット= 1) 1 マスタモード設定 (MSS ビット= 1) アービトレーションロスト検出 (AL ビット= 1) バスビジー (BB ビット ) 0 割込み (INT ビット ) 0 • AL ビット =1 検出による割込み (INT ビット =1) が発生しない条件 2 他のマスタに I2C バスが占有されている状態で , I2C 動作許可 (EN ビット =1) してスター トコンディションを発生させる命令を実行 (IBCR レジスタの MSS ビットに "1" を設定 ) した場合。 図 13.2-5 に示したとおり , I2C が動作禁止 (EN ビット =0) の状態で , I2C バス上の他のマ スタが通信を開始すると , スタートコンディション未検出 (BB ビット =0) で I2C バスが占 有されている状態になるためです。 350 第 13 章 I2C インタフェース 図 13.2-5 AL ビット =1 検出による割込みが発生しないタイミング図 Start Condition 9 クロック目で INT ビット 割込みが発生しない Stop Condition SCL 端子 SDA 端子 SLAVE ADDRESS ACK DAT ACK EN ビット MSS ビット AL ビット BB ビット 0 INT ビット 0 上記のような現象が発生する可能性がある場合には , 以下の手順でソフト処理をお願 いします。 1. スタートコンディションを発生させる命令を実行 (MSS ビットに "1" を設定 )。 2. タイマ機能などを用いて , ICCR レジスタに設定されている I2C 転送周波数での 3 ビッ トデータ送信時間を待つ。* 例:I2C 転送周波数 100kHz の場合 3 ビットデータ送信時間 {1/(100 × 103)} × 3=30 µs 3. IBSR レジスタの AL ビットと BB ビットを確認し , AL ビット =1,BB ビット =0 の場合 AL ビットと BB ビッ には , ICCR レジスタの EN ビットを "0" にして I2C を初期化する。 トがその他の状態のときは通常処理を行う。 351 第 13 章 I2C インタフェース 以下にフロー例を示します。 マスタモード設定 バス制御レジスタ (IBCR) の MSS ビットに "1" を設定 クロック制御レジスタ (ICCR) に設定されている I2C 転送周波数で 3 ビットデータ送信時間待ち * BB ビット= 0 でかつ AL ビット= 1 NO YES EN ビットを "0" にして I2C の初期化 通常処理へ *:アービトレーションロストが検出された場合 , MSS ビット =1 設定後 I2C 転送周波 数での 3 ビットデータ送信時間後には確実に AL ビット =1 となります。 • AL ビット =1 検出による割込み (INT ビット =1) が発生する例 バスビジー検出 (BB ビット =1) されている状態で , スタートコンディションを発生さ せる命令を実行 (MSS ビットに "1" を設定 ) しアービトレーションロストした場合には , AL ビット =1 検出時に INT ビット割込みが発生します。 352 第 13 章 I2C インタフェース 図 13.2-6 AL ビット =1 時に割込みが発生するタイミング図 9 クロック目で割込み Start Condition SCL 端子 SDA 端子 SLAVE ADDRESS ACK DAT EN ビット MSS ビット AL ビット ソフトでの AL ビットクリア BB ビット INT ビット ソフトでの INT ビットクリア クリアで SCL 開放 353 第 13 章 I2C インタフェース クロックコントロールレジスタ (ICCR) 13.2.3 クロックコントロールレジスタ (ICCR) の構成および機能について説明します。 ■ クロックコントロールレジスタ (ICCR) 図 13.2-7 に , クロックコントロールレジスタ (ICCR) のビット構成を示します。 図 13.2-7 クロックコントロールレジスタ (ICCR) のビット構成 アドレス : 00009EH 初期値→ 15 TEST W 0 14 ― 13 EN 12 CS4 11 CS3 10 CS2 9 CS1 8 CS0 ― R/W 0 R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 以下に , クロックコントロールレジスタ (ICCR) の各ビットの機能を説明します。 [ ビット 15] テストビット このビットは , テストビットです。 必ず "0" を書き込んでください。 [ ビット 14] 未使用ビット このビットは , 未使用ビットです。 必ず "0" を書き込んでください。 [ ビット 13] EN (ENable) このビットは , I2C インタフェースの動作許可ビットです。 0 動作禁止 1 動作許可 このビットが "0" のとき , IBSR レジスタ , IBCR レジスタ (BER, BEIE ビットを除く ) の各ビットはクリアされます。バスエラーが発生して , BER ビットがセットされる とこのビットはクリアされます。 <注意事項> 動作禁止にしたとき , インタフェースは直ちに送受信を停止し , I2C バスは好ましくな い状態に陥ります。 354 第 13 章 I2C インタフェース [ ビット 12 ∼ビット 8] CS4 ∼ CS0 (Clock Period Select 4 ∼ 0) これらのビットは , シリアルクロックの周波数を設定するビットです。シフトク ロックの周波数 fsck は次の計算式による結果が設定されます。 このビットは動作禁止 (EN=0) のときしか書き換えられません。 φ fsck = n × 12+16 φ : マシンクロック (CLKP) n > 1 表 13.2-1 シリアルクロック周波数の設定内容 n CS4 CS3 CS2 CS1 CS0 1 0 0 0 0 1 2 0 0 0 1 0 3 0 0 0 1 1 ••• ••• ••• ••• ••• ••• 31 1 1 1 1 1 CS4 ∼ CS0=00000 は設定禁止です。 100 Kbps クロック周波数 CLKP [MHz] 400 Kbps n fsck n fsck 33 26 100.6 6 375 16.5 13 95.9 3 317.3 22 17 100 4 343.8 11 8 98.2 2 275 10 7 100 2 250 8 6 90.9 2 200 355 第 13 章 I2C インタフェース 13.2.4 10 ビットスレーブアドレスレジスタ (ITBA) 10 ビットスレーブアドレスレジスタ (ITBA) の構成および機能について説明します。 ■ 10 ビットスレーブアドレスレジスタ (ITBA) 図 13.2-8 に , 10 ビットスレーブアドレスレジスタ (ITBA) のビット構成を示します。 図 13.2-8 10 ビットスレーブアドレスレジスタ (ITBA) のビット構成 アドレス : 000096H 15 14 13 12 11 10 ― 9 TA9 8 TA8 ― ― ― ― ― R/W 0 ― ― ― ― ― ― R/W 0 アドレス : 000097H 7 TA7 6 TA6 5 TA5 4 TA4 3 TA3 2 TA2 1 TA1 0 TA0 初期値→ R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 初期値→ ITBAH ITBAL このレジスタの書換えは動作停止中 (ICCR の EN=0) に行ってください。 以下に , 10 ビットスレーブアドレスレジスタ (ITBA) の各ビットの機能を説明します。 [ ビット 15 ∼ビット 10] 未使用ビット これらのビットは , 未使用ビットです。 読出し時は "0" です。 [ ビット 9 ∼ビット 0] スレーブアドレスビット (A9 ∼ A0) 10 ビットアドレスが有効なとき (ITMK の ENTB=1) , スレーブアドレスデータ受信 後に ITBA レジスタとの比較が行われます。アクノリッジは , 10 ビット書込みアク セスのアドレスヘッダ {11110, TA9, TA8, 0} 受信後にマスタに送信されます。第 2 受信バイトと ITBAL レジスタ値を比較して一致した場合には , マスタにアクノリッ ジを送信するとともに AAS ビットをセットします。 このレジスタのスレーブアドレスは , ITMK レジスタの設定によりマスクすること が可能です。 さらに , インタフェースはアクノリッジによって , 反復「START」条件の発生後に 読出しアクセスヘッダ {11110, TA9, TA8, 1} の 10 ビットのデータを受信します。 すべてのビットはストップアドレスによって , ITMK レジスタをマスクすることが できます。 受信した 10 ビットスレーブアドレスは , ITBA レジスタへ書き込まれます。このビッ トは , IBSR レジスタの ASS ビットが "1" のときに有効です。 356 第 13 章 I2C インタフェース 13.2.5 10 ビットスレーブアドレスマスクレジスタ (ITMK) 10 ビットスレーブアドレスマスクレジスタ (ITMK) の構成および機能について説明 します。 ■ 10 ビットスレーブアドレスマスクレジスタ (ITMK) 図 13.2-9 に , 10 ビットスレーブアドレスマスクレジスタ (ITMK) のビット構成を示し ます。 図 13.2-9 10 ビットスレーブアドレスマスクレジスタ (ITMK) のビット構成 15 アドレス : 000098H ENTB R/W 0 初期値→ 14 RAL R 0 13 12 11 10 ― ― ― ― 9 TM9 8 TM8 ― ― ― ― R/W 1 R/W 1 7 6 5 4 3 2 1 0 アドレス : 000099H TM7 TM6 TM5 TM4 TM3 TM2 TM1 TM0 初期値→ R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 以下に, 10ビットスレーブアドレスマスクレジスタ (ITMK) の各ビットの機能を説明し ます。 [ ビット 15] ENTB (10 ビットスレーブアドレス許可ビット ) このビットは , 10 ビットスレーブアドレスの動作許可ビットです。 0 10 ビットスレーブアドレス動作禁止 1 10 ビットスレーブアドレス動作許可 インタフェースが , 動作禁止のとき (ICCR の EN=0) , 書込みアクセスが可能です。 [ ビット 14] RAL ( スレーブアドレス長ビット ) このビットは , スレーブアドレス長を示します。 0 7 ビットスレーブアドレス 1 10 ビットスレーブアドレス 10 ビットスレーブアドレス動作 , 7 ビットスレーブアドレス動作が両方許可 (ENTB=1 および ENSB=1) になっている場合にインタフェースされたアドレス長を 示します。このビットは AAS ビットが "1" のときに有効です。 このビットは , インタフェースの動作を禁止したときにクリアされます。 357 第 13 章 I2C インタフェース このビットは読出しのみ可能です。 [ ビット 13 ∼ビット 10] 未使用ビット このビットは , 未使用ビットです。読出し時は常に "1" が読み出されます。 [ ビット 9 ∼ビット 0] 10 ビットスレーブアドレスマスクビット このビットは , 10 ビットスレーブアドレスレジスタ (ITBA) のビットをマスクしま す。インタフェースが , 動作禁止のとき (ICCR の EN=0) , 書込みアクセスが可能で す。 0 このビットは , スレーブアドレスの比較に使われない 1 このビットは , スレーブアドレスの比較に使われます このビットを設定することにより , 一定空間の 10 ビットスレーブアドレスに対して アクノリッジを送信することが可能になります。 ITMK の TM9 ∼ TM0 の各ビットが ITBA のアドレスの各ビットに対応しており , TM9 ∼ TM0 の値が "1" のときは ITBA のアドレスが有効になり "0" のときは無効になります。 例 :ITBA アドレス 0010010111B ITMK アドレス 1111111100B のとき スレーブアドレスは 0010010100B ∼ 0010010111B の空間になります。 本レジスタはインタフェース停止時に書き換えてください (ICCR の EN=0) 。 <注意事項> アドレスのマスクは , インタフェースが動作許可後に行われます。さらに , スレーブア ドレスが再度セットされたときも , マスクされます。 358 第 13 章 I2C インタフェース 13.2.6 7 ビットスレーブアドレスレジスタ (ISBA) 7 ビットスレーブアドレスレジスタ (ISBA) の構成および機能について説明します。 ■ 7 ビットスレーブアドレスレジスタ (ISBA) 図 13.2-10 に , 7 ビットスレーブアドレスレジスタ (ISBA) のビット構成を示します。 図 13.2-10 7 ビットスレーブアドレスレジスタ (ISBA) のビット構成 7 アドレス : 00009BH ― 6 SA6 初期値→ ― ― R/W 0 5 SA5 4 SA4 3 SA3 2 SA2 1 SA1 0 SA0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 このレジスタの書換えは動作停止中 (ICCR の EN=0) に行ってください。 以下に , 7 ビットスレーブアドレスレジスタ (ISBA) の各ビットの機能を説明します。 [ ビット 7] 未使用ビット このビットは , 未使用です。 読出し時は , "0" が読み出されます。 [ ビット 6 ∼ビット 0] A6 ∼ A0 ( スレーブアドレスビット ) A6 ∼ A0 は , 7 ビットスレーブアドレスを指定するレジスタです。スレーブ時 , ア ドレスデータ受信後に ISBA レジスタとの比較が行われ , 一致している場合はマス タに対してアクノリッジを送信するとともに AAS ビットをセットします。 本レジスタのスレーブアドレスは , ISMK レジスタの設定によりマスクすることが できます。 本レジスタは , 7 ビットスレーブアドレス動作が有効 (ISMK の ENSB=1) のときに機 能します。 359 第 13 章 I2C インタフェース 13.2.7 7 ビットスレーブアドレスマスクレジスタ (ISMK) 7 ビットスレーブアドレスマスクレジスタ (ISMK) の構成および機能について説明し ます。 ■ 7 ビットスレーブアドレスマスクレジスタ (ISMK) 図 13.2-11 に, 7ビットスレーブアドレスマスクレジスタ (ISMK) のビット構成を示しま す。 図 13.2-11 7 ビットスレーブアドレスマスクレジスタ (ISMK) のビット構成 アドレス : 00009AH 初期値→ 15 ENSB 14 SM6 13 SM5 12 SM4 11 SM3 10 SM2 9 SM1 8 SM0 R/W 0 R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 このレジスタの書換えは動作停止中 (ICCR の EN=0) に行ってください。 以下に , 7 ビットスレーブアドレスマスクレジスタ (ISMK) の各ビットの機能を説明し ます。 [ ビット 15] ENSB (7 ビットスレーブアドレス許可ビット ) このビットは , 7 ビットスレーブアドレスの動作許可ビットです。 0 7 ビットスレーブアドレス動作禁止 1 7 ビットスレーブアドレス動作許可 [ ビット 14 ∼ビット 8] 7 ビットスレーブアドレスマスクビット このビットは , 7 ビットスレーブアドレスレジスタ (ISBA) のビットをマスクしま す。 0 このビットは , スレーブアドレスの比較に使われない 1 このビットは , スレーブアドレスの比較に使われます このビットを設定することにより , 一定空間の 7 ビットスレーブアドレスに対して アクノリッジを送信することが可能になります。 ISMK の SM6 ∼ SM0 の各ビットが ISBA のアドレスの各ビットに対応しており , SM6 ∼ SM0 の値が"1" のときは ISBA のアドレスが有効になり , "0" のときは無効になります。 例 : ISBA アドレス 0010111B ISMK アドレス 1111100B のとき スレーブアドレスは 0010100B ∼ 0010111B の空間になります。 360 第 13 章 I2C インタフェース 本レジスタは , インタフェース停止時 (ICCR の EN=0) に書き換えてください。 <注意事項> アドレスのマスクは , インタフェースが動作許可後に行われます。さらに , スレーブア ドレスが再度セットされたときでも , マスクされます。 361 第 13 章 I2C インタフェース 13.2.8 データレジスタ (IADR) データレジスタ (IADR) の構成および機能について説明します ■ データレジスタ (IADR) 図 13.2-12 に , データレジスタ (IADR) のビット構成を示します。 図 13.2-12 データレジスタ (IADR) のビット構成 アドレス : 00009DH 初期値→ 7 D7 6 D6 5 D5 4 D4 3 D3 2 D2 1 D1 0 D0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 以下に , データレジスタ (IADR) の各ビットの機能を説明します。 [ ビット 7 ∼ビット 0] D7 ∼ D0 ( データビット ) D7 ∼ D0 は , シリアル転送に使用されるデータレジスタで , MSB から転送されます。 このレジスタの書込み側はダブルバッファになっており , バスが使用中 (BB=1) で ある場合 , 書込みデータは各バイト転送時にシリアル転送用のレジスタにロードさ れます。読出し時はシリアル転送用のレジスタを直接読み出すため , 受信データは INT ビットがセットされている場合のみ有効です。 362 第 13 章 I2C インタフェース クロックディセーブルレジスタ (IDBL) 13.2.9 クロックディセーブルレジスタ (IDBL) の構成および機能について説明します。 ■ クロックディセーブルレジスタ (IDBL) 図 13.2-13 に , クロックディセーブルレジスタ (IDBL) のビット構成を示します。 図 13.2-13 クロックディセーブルレジスタ (IDBL) のビット構成 7 6 5 4 3 2 1 アドレス : 00009FH ― ― ― ― ― ― ― 0 DBL 初期値→ ― ― ― ― ― ― ― R/W 0 [ ビット 0] DBL ( クロックディセーブルビット ) このビットは , I2C インタフェース用の動作クロック供給の許可 , 停止を指示しま す。 低消費電力時に使用できます。 0 I2C のクロックを供給します。 1 I2C のクロックを停止します。I2C ラインは開放されます。 <注意事項> このビットを "1" にすると , I2C は送受信中でも直ちに停止します。 363 第 13 章 I2C インタフェース 13.3 I2C インタフェースの動作 I2C バスは , 1 本のシリアルデータライン (SDA) と 1 本のシリアルクロックライン (SCL) の 2 本の双方向バスラインにより通信が行われます。I2C インタフェースはそ れに対して 2 本のオープンドレイン入出力端子 (SDA, SCL) を有し , ワイヤード論理 を可能にします。 ■「START」 条件 バスが開放されている状態 (IBSR の BB=0, IBCR の MSS=0) で MSS ビットに "1" を書 き込むと , I2C インタエースはマスタモードになり「START」条件を発生します。 バスがアイドル状態のとき (MSS=0, BB=0) に, MSSビットに"1"を書き込むと「START」 条件を発生して IDAR レジスタ値を送信します。 反復「START」条件を発生させるには , インタフェースがマスタモード時または割込 み処理時に SCC ビットに "1" を書き込みます。 バス使用中 (IBSR の BB=1 および TRX=0, IBCR の MSS=0 および INT=0) に MSS ビッ トに "1" を書き込むと , インタフェースはバスが開放されるまで待ってから送信を開始 します。その間 , インタフェースがスレーブで書込みアクセス受信中であったら , 転送 が終了した後に送信を開始してバスを開放します。 また , インタフェースがスレーブデータを送信していたら , バスが開放されても送信を 開始しません。 使用するためには , 次の点をチェックすることが重要です。 • スレーブとして指定されているかどうか (IBCR の MSS=0, IBSR の AAS=1) • 次の割込みでデータバイト送信が正常か (IBCR の MSS=1) , そうでないか (IBSR の AL=1) ほかの状態で MMS ビットまたは SCC ビットに "1" を書き込んでも無視されます。 ■「STOP」 条件 マスタモード (IBCR の MSS=1, INT=1) 状態で MSS ビットに "0" を書き込むと ,「STOP」 条件を発生してスレーブモード状態に遷移します。ほかの状態で MSS ビットに "0" を 書き込んでも関係ありません。 MSS ビットがクリアされた後 , インタフェースは「STOP」条件を発生しようとします が , その前に SDL ラインがほかのデバイスにより "L" にドライブされた場合には , 「STOP」条件は発生しません。このときは , 次のバイトが転送された後に割込みが発生 します。 ■ スレーブアドレス検出 スレーブモードでは , 「START」条件の発生後に BB=1 にセットされ , マスタデバイス からの受信データは IDAR レジスタに格納されます。 364 第 13 章 I2C インタフェース ● 7 ビットスレーブアドレス動作許可時 (ISMK の ENSB=1) 8 ビットデータを受信後に , IDAR レジスタ値と ISBA レジスタ値を比較します。この とき , ISMK レジスタでマスクされているビットは比較されません。 比較結果が一致していた場合 , ASS ビットに "1" がセットされてマスタに対してアクノ リッジを返し , 受信データのビット 0 の値を反転して TRX ビットに格納します。 ● 10 ビットスレーブアドレス動作許可時 (ITMK の ENTB=1) 10 ビットアドレスのヘッダ部 {11110, TA0, TA0, write} を検出すると , マスタに対して アクノリッジを返して受信データの最終ビットの値を反転し , TRX ビットに格納しま す。このとき , 割込みは発生しません。 それから , 次の受信バイトデータと ITBA レジスタ下位バイトとを比較します。このと き , ITMK レジスタでマスクされているビットは比較されません。結果が一致していた 場合 , ASS ビットに "1" がセットされ , マスタに対してアクノリッジを返します。この ときに割込みが発生します。 スレーブとしてアドレス指定されていて反復「START」条件を検出した場合 , 10 ビッ トアドレスのヘッダ部 {11110, TA0, TA1, read} を受信後に , ASS ビットに "1" がセット されて割込みを発生します。 本インタフェースは , 10 ビットアドレスレジスタ (ITBA) と 7 ビットアドレスレジスタ (ISBA) を独立して搭載していますので , 両方の動作を許可 (ISMK の ENSB=1, ITMK の ENTB=1) することにより , 10 ビット /7 ビット両方のアドレスに対してアクノリッジを 返すことができます。 受信スレーブアドレス長は , ITMK レジスタの RAL ビットにより判定することができ ます。RAL ビットは ASS=1 のときに有効です ■ スレーブアドレスマスク スレーブアドレスマスクレジスタ (ITMK/ISMK) は , スレーブアドレスレジスタの各ビット に対してマスクすることができます。マスクレジスタに "1" がセットされたビットはアド レス比較をしますが , "0" に設定されているビットは比較対象になりません。これにより , 複数のスレーブアドレスに対してアクノリッジを返すことができます。 受信スレーブアドレスは, ASS=1のときにITBAレジスタ (10ビットアドレス受信時:RAL=1) または ISBA レジスタ (7 ビットアドレス受信時 :RAL=0) を読み出すことにより認識するこ とができます。 もし , マスクレジスタをすべてクリアした場合 , インタフェースはスレーブアドレスの バスモニタとして使用することができます。しかし , どんなスレーブアドレスにもアク ノリッジを返すので , リアルバスモニタとしては使用できません。 ■ スレーブアドレッシング マスタモードでは ,「START」条件を発生した後 BB=1, TRX=1 にセットされ , IDAR レ ジスタ値を MSB から送信します。アドレスデータを送信後にスレーブデバイスからア クノリッジを受信すると , 送信データのビット 0 ( 送信後の IDAR レジスタのビット 0) を反転して TRX ビットに格納します。スレーブからのアクノリッジは , IBSR レジスタ の LRB ビットに格納されます。この動作は , 反復「START」条件でも行われます。 書込みアクセスでの 10 ビットスレーブアドレスでは 2 バイト送信されますが , このと 365 第 13 章 I2C インタフェース きの最初のバイトデータは 10 ビットアドレスのヘッダ部 {11110, A9, A8, 0} として構 成され , 2 バイト目のデータは 10 ビットアドレスの下位ビット {A7, A6, A5, A4, A3, A2, A1, A0} として構成されます。 上記の一連の送信によってスレーブ側は読出しアクセス状態になり , 反復「START」条 件は読出しアクセスの 10 ビットアドレスヘッダ部 {11110, A9, A8, 1} とともに生成さ れます。 • 7 ビットスレーブ , 書込みアクセス :「START」条件 A6, A5, A4, A3, A2, A1, A0, 0 • 7 ビットスレーブ , 読出しアクセス :「START」条件 A6, A5, A4, A3, A2, A1, A0, 1 • 10 ビットスレーブ , 書込みアクセス :「START」条件 11110, A9, A8, 0, A7, A6, A5, A4, A3, A2, A1, A0 • 10 ビットスレーブ , 読出しアクセス :「START」条件 11110, A9, A8, 1, A7, A6, A5, A4, A3, A2, A1, A0 反復スタート :11110, A9, A8, 1 ■ アービトレーション マスタモードで送信中に , ほかのマスタデバイスから同時にデータが送信されたとき , アービトレーションが起こります。もし , 自分の送信データが "1" のとき , SDA ライン 上のレベルが "L" であった場合 , アービトレーションロストと認識します。そして AL=1 にセットされます。 データの最初のビットで「START」条件を検出したとき , 同じ理由で [START] 条件ま たは「STOP」条件を生成できないときにも AL ビットはセットされます。 アービトレーションロストの検出により , MSS ビットと TRX ビットはクリアされて即 時デバイスはスレーブモードに遷移し , 自分のスレーブアドレスを受信するとアクノ リッジを返します。 ■ アクノリッジ アクノリッジは , 受信側が送信側に対して送信します。 ACKビット (IBCR) は, データ受信時にアクノリッジを返すかどうかを設定するビット です。 スレーブモード時のデータ送信 (ほかのマスタからの読出しアクセス) にマスタからの アクノリッジが返らないとき , TRX ビットは "0" にクリアされ , デバイスは受信モード になります。これにより , マスタはスレーブが SCL ラインを開放したときに「STOP」 条件を発生することができます。 マスタモード時は , LRB ビット (IBSR) を読み出すことにより , スレーブのアクノリッ ジを確認できます。 ■ バスエラー 以下の条件が成立した場合はバスエラーと判断され , I2C インタフェースは停止状態に なります。 366 第 13 章 I2C インタフェース • データ転送中 (Ack ビット含む ) の I2C バス上の基本規定違反の検出 • マスタ一時のストップコンディション検出 • バスアイドル時の I2C バス上における基本規定違反の検出 ■ その他 ● アービトレーションロスト後のアドレッシング アービトレーションロストした後 , 自分がアドレッシングされている場合と , アドレッ シングされていなかった場合をソフトウェアで判断しなければなりません。 アービトレーションロストするとハードウェア的にスレーブになるが , 1 バイト転送終 了後 , CLK ライン , DATA ライン双方を "L" に引っ張ります。このため , アドレッシン グされていなければ , 即座に CLK ライン , DATA ラインを開放し , アドレッシングさ れていた場合には , スレーブ送信またはスレーブ受信の準備をしてから , CLK ライン , DATA ラインを開放する必要があります。これらは , すべてソフトウェアで処理する 必要があります。 ● 1 バイト転送終了時点での割込み条件 I2C バスには 1 つの割込みしかなく , 1 バイト転送終了した時点でまたは割込み条件に 該当していた場合 , 割込み要因がたつ仕様になっています。 1 つの割込みで , 複数の割込み条件を判断しなければならないため , 割込みルーチン内 で各フラグをチェックしなければなりません。1 バイト転送終了時点での割込み条件を 下記に示します。 • バスマスタであった場合 • アドレスされたスレーブであった場合 • ゼネラルコールアドレスを受信した場合 • アービトレーションロストが生じた場合 ● アービトレーションロストと割込み要因 アービトレーションロストを検出した場合 , 即座に割込み要因が立つのではなく , 1 バ イト転送終了した時点で割込み要因が立ちます。アービトレーションロストを検出す るとハードウェア的にスレーブになりますが , スレーブになっても割込み要因を立て るために , トータル 9 クロック出力します。したがって , 即座に割込み要因が立たない ため , アービトレーションロスト後に処理することはできません。 367 第 13 章 I2C インタフェース <注意事項> MMS ビットに "0" を書き込んでから , 「STOP」条件を発生するまでに時間を要しま す。「STOP」条 件 を 発 生 前 に I2C イ ン タ フ ェ ー ス を 動 作 禁 止 (DBL="1":IDAR or EN="0":ICCR) にすると , 直ちに動作が停止し , SCL ラインに不正クロックが発生しま す。 I2C インタフェースを動作禁止にするときは ,「STOP」条件の発生を確認 (BB="0":IBSR) した後 , 動作を禁止 (DBL="1":IDAR or EN="0":ICCR) してください。 マスタモードでの送信時 , SCL ラインにノイズ等で不正クロックが発生すると , I2C イ ンタフェースの送信ビットカウンタが速く進み , ACK サイクルでスレーブが SDA ライ ンに "L" を出したままハングアップすることがあります。 このようなクロックの不正に対しては , エラー (AL="1", BER="1" が発生しません ) 。 このような場合 , 次の方法でエラー処理をしてください。 1) MSS="1", TRX="1", INT="1" のとき , LRB="1" であれば , 通信エラーと判断し ます。 2) ここで , EN="0" とし , その後 EN="1" とすることにより , 擬似的に SCL が 1 クロック発生します。これにより , スレーブにバスを開放させます。 EN="0" から EN="1" の期間は , スレーブ側がクロックと認識できる期間 ( 送 信クロックの "H" 期間と同じ程度 ) としてください。 3) EN="0" の時点で , IBSR, IBCR はクリアされますので , 「START」コンディ ションから再送信処理をしてください。このとき , BSS="0" による「STOP」 コンディションは生成されません。 このとき , EN="1" から MSS="1" (「START」コンディション ) までに , "n × 7 × tCPP" 以上の時間を空けてください。 例 ) 高速モードの場合 : 6 × 7 × 30.3 ≒ 1.273µs 標準モードの場合 : 27 × 7 × 30.3 ≒ 5.727µs BER がセットされている場合は , EN="0" でクリアされませんので , クリア後 , 再送信 してください。 368 第 13 章 I2C インタフェース 13.4 動作フローチャート 次の動作例のフローチャートを示します。 • スレーブアドレスとデータ転送 • 受信データ • 割込み処理 369 第 13 章 I2C インタフェース ■ スレーブアドレスとデータ転送の例 図 13.4-1 スレーブアドレスとデータ転送フロー 7ビットスレーブアドレッシング 転送データ スタート スタート BER ビットクリア(セット) インタフェース動作許可 EN=1 ライトアクセスの スレーブアドレス IDAR =S.アドレス≪1+RW MSS=1 INT=0 IDAR = バイトデータ INT=0 N INT=1? INT=1? Y Y N Y Y バスエラー BER=1? BER=1? N N AL=1? Y AASの検査 により再起動 転送 AASの検査 により再起動 転送 AL=1? N N ACK? N (LRB=0?) ACK? N (LRB=0?) Y Y データ転送の準備 最終バイト の転送 Y N スレーブはACKを発生しないが 反復「START」条件,「STOP」条件を 発生する 転送終了 反復「START」条件,「STOP」条件を 発生する 370 第 13 章 I2C インタフェース ■ 受信データの例 図 13.4-2 受信データのフロー スタート リードアクセスの スレーブアドレス スレーブからの最終 リードデータなら ACKビットをクリアする。 INT=0 INT=1? N Y BER=1? Y バスエラー 再起動 N N 最終バイト の転送 Y 転送終了 反復「START」条件,「STOP」条件を 発生する 371 第 13 章 I2C インタフェース ■ 割込み処理 図 13.4-3 割込み処理フロー スタート Y Y ほかのモジュール からの受信割込み INT=1? N BER=1? Y バスエラー 再起動 N Y GCA=1? N N Y 転送の失敗 再トライを行う スレーブ時にゼネラルコール検出 AAS=1? Y Y AL=1? AL=1? N N Y LRB=1? Y 次の割込みで 新データ転送開始 必要であれば ACKビットを変更 ADT=1? スレーブのACKなし 「STOP」条件,反復 「START」条件の生成 N N TRX=1? アビトレーションロスト 再転送 TRX=1? Y Y N N IDARから受信データ を読む。必要で あればACKビット を変更する IDARに 次の送信 データを ライト IDARから受信データ を読む。必要であれ ばACKビットを変更 する クリア INT ビット ISR終了 372 IDARに次の送信 データをライト またはMSSビット のクリア 第 14 章 DMA コントローラ (DMAC) この章では , DMA コントローラ (DMAC) の概要 , レジスタの構成 / 機能および DMA コントローラ (DMAC) の動作について説明します。 14.1 DMA コントローラ (DMAC) の概要 14.2 DMA コントローラ (DMAC) のレジスタ 14.3 DMA コントローラ (DMAC) の動作 14.4 動作フローチャート 14.5 データバス 14.6 DMA 外部インタフェース 373 第 14 章 DMA コントローラ (DMAC) 14.1 DMA コントローラ (DMAC) の概要 DMA コントローラ (DMAC) は , FR ファミリデバイスで DMA (Direct Memory Access) 転送を実現するためのモジュールです。本モジュールの制御による DMA 転送により , CPU を介さずに各種データ転送を高速に行うことが可能となり , シス テムのパフォーマンスを増加させます。 ■ ハードウェア構成 DMA コントローラ (DMAC) は , おもに以下のブロックから構成されます。 • 独立した DMA チャネル× 5 チャネル • 5 チャネルアクセス制御回路 • 32 ビットアドレスレジスタ ( リロード指定可 : 各チャネル 2 本 ) • 16 ビット転送回数レジスタ ( リロード指定可 : 各チャネル 1 本 ) • 4 ビットブロック回数レジスタ ( 各チャネル 1 本 ) • 外部転送要求入力端子 :DREQ0, DREQ1, DREQ2 (ch0, ch1, ch2 のみ ) • l 外部転送要求受付け出力端子 :DACK0, DACK1, DACK2 (ch0, ch1, ch2 のみ ) • DMA 終了出力端子 :DEOP0, DEOP1, DEOP2 (ch0, ch1, ch2 のみ ) • フライバイ転送 (memory to I/O, memory to memory) (ch0, ch1, ch2 のみ ) • 2 サイクル転送 ■ 主要機能 DMA コントローラ (DMAC) によるデータ転送には , おもに以下の機能があります。 • 優先順位 (ch0 > ch1 > ch2 > ch3 > ch4) - 複数チャネルの独立したデータ転送が可能 (5 チャネル ) • 優先順位回転 • DMAC 起動要因 - 外部専用端子入力 ( エッジ検出 / レベル検出 ch0, ch1, ch2 のみ ) - 内蔵周辺要求 ( 割込み要求を共用 --- 外部割込み含む ) - ソフトウェア要求 ( レジスタ書込み ) • 転送モード - デマンド転送 / バースト転送 / ステップ転送 / ブロック転送 - アドレッシングモード 32 ビットフルアドレス指定 ( 増加 / 減少 / 固定 ) アドレス増減幅は -255 ∼ +255 まで指定可能 - データの種類 : バイト / ハーフワード / ワード長 - シングルショット / リロード選択可能 374 第 14 章 DMA コントローラ (DMAC) ■ ブロックダイヤグラム 図 14.1-1 に , DMA コントローラ (DMAC) のブロックダイヤグラムを示します。 図 14.1-1 DMA コントローラ (DMAC) のブロックダイヤグラム カウンタ バスコントローラへ DMA転送要求 DMA起動 要因選択回路 ペリフェラル起動要求/停止入力 & 要求受付け制御 外部端子起動要求/停止入力 ライトバック バッファ セレクタ DTC 2段レジスタ DTCR カウンタ アドレス 割込みコントローラへ MCLREQ 周辺割込みクリア BLK register 状態遷移 回路 TYPE.MOD,WS DDNO register DMAコントロール DSAD 2段レジスタ IRQ[4:0] X-bus セレクタ ERIR,EDIR セレクタ セレクタ カウンタバッファ カウンタバッファ アクセス アドレスカウンタ DDNO バス制御部 バスコン トローラ へ リード/ ライト制御 SADM,SASZ[7:0] SADR ライトバック セレクタ Read Write DSS[3:0] 優先度回路 バス制御部 バッファ DDAD 2段レジスタ DADM,DASZ[7:0] DADR ライトバック 375 第 14 章 DMA コントローラ (DMAC) 14.2 DMA コントローラ (DMAC) のレジスタ DMA コントローラ (DMAC) で使用するレジスタの構成および機能について説明しま す。 ■ DMA コントローラ (DMAC) のレジスタ一覧 図 14.2-1 に , DMA コントローラ (DMAC) のレジスタ一覧を示します。 図 14.2-1 DMA コントローラ (DMAC) のレジスタ一覧 ( ビット ) 31 ch0 コントロール / ステータス レジスタ A DMACA0 00000200H ch0 コントロール / ステータス レジスタ B DMACB0 00000204H ch1 コントロール / ステータス レジスタ A DMACA1 00000208H ch1 コントロール / ステータス レジスタ B DMACB1 0000020CH ch2 コントロール / ステータス レジスタ A DMACA2 00000210H ch2 コントロール / ステータス レジスタ B DMACB2 00000214H ch3 コントロール / ステータス レジスタ A DMACA3 00000218H ch3 コントロール / ステータス レジスタ B DMACB3 0000021CH ch4 コントロール / ステータス レジスタ A DMACA4 00000220H ch4 コントロール / ステータス レジスタ B DMACB4 00000224H 全体制御レジスタ DMACR 00000240H ch0 転送元 アドレスレジスタ DMASA0 00001000H ch0 転送先 アドレスレジスタ DMADA0 00001004H ch1 転送元 アドレスレジスタ DMASA1 00001008H ch1 転送先 アドレスレジスタ DMADA1 0000100CH ch2 転送元 アドレスレジスタ DMASA2 00001010H ch2 転送先 アドレスレジスタ DMADA2 00001014H ch3 転送元 アドレスレジスタ DMASA3 00001018H ch3 転送先 アドレスレジスタ DMADA3 0000101CH ch4 転送元 アドレスレジスタ DMASA4 00001020H ch4 転送先 アドレスレジスタ DMADA4 00001024H 376 24 23 16 15 08 07 00 第 14 章 DMA コントローラ (DMAC) ■ レジスタ設定時の注意 DMA コントローラ (DMAC) の設定をする場合 , DMA が停止しているときに行う必要 があるビットがあります。動作中 ( 転送中 ) に設定した場合には , 正常な動作は保証さ れません。 以降で説明する各レジスタのビット機能についている「* マーク」は , DMAC 転送中に 設定すると動作に影響するビットを示しています。このビットの書換えは , DMAC 転 送停止中 ( 起動禁止状態または一時停止状態 ) に行ってください。 DMA 転送の起動禁止状態 (DMACR の DMAE=0 または DMACA の DENB=0 のとき ) で設定した場合は , 起動許可後に設定が有効になります。 DMA 転送の一時停止状態 (DMACR の DMAH [3:0] ≠ 0000 または DMACA の PAUS=1 のとき ) で設定した場合は , 一時停止解除後に設定が有効になります。 377 第 14 章 DMA コントローラ (DMAC) コントロール / ステータスレジスタ A (DMACA0 ∼ DMACA4) 14.2.1 コントロール / ステータスレジスタ A (DMACA0 ∼ DMACA4) は , DMAC 各チャネ ルの動作を制御するレジスタで , チャネルごとに独立して存在します。 コントロール / ステータスレジスタ A (DMACA0 ∼ DMACA4) の構成および機能に ついて説明します。 ■ コントロール / ステータスレジスタ A (DMACA0 ∼ DMACA4) 図 14.2-2 に , コントロール / ステータスレジスタ A (DMACA0 ∼ DMACA4) のビット構 成を示します。 図 14.2-2 コントロール / ステータスレジスタ A (DMACA0 ∼ DMACA4) のビット構成 bit 31 30 29 28 27 DENB PAUS STRG bit 15 14 13 26 25 24 23 IS [4 : 0] 12 11 10 22 21 20 19 DDN0 [3 : 0] 9 8 7 6 5 18 17 16 BLK [3 : 0] 4 3 2 1 0 DTC [15:0] ( 初期値 : 00000000_0000XXXX_XXXXXXXX_XXXXXXXXB) 以下に , コントロール / ステータスレジスタ A (DMACA0 ∼ DMACA4) の各ビットの機 能を説明します。 [ ビット 31] DENB (Dma ENaBle) :DMA 動作許可ビット このビットは , 各転送チャネルに対応し , DMA 転送の起動許可 / 禁止を行います。 起動されたチャネルは, 転送要求が発生し受け付けられるとDMA転送を開始します。 起動許可されていないチャネルに対して発生した転送要求は , すべて無効となります。 起動されたチャネルの転送が指定回数分すべて終了した場合 , このビットは "0" に なり , 転送は停止します。 このビットに "0" を書き込むと強制停止しますが , 必ず PUAS ビット [DMACA の ビット 30] で DMA を一時停止状態にしてから強制停止 ("0" 書込み ) してください。 一時停止しないで強制停止した場合は, DMAは停止しますが転送データは保証され ません。停止の確認は DSS [2:0] ビット [DMACB のビット 18 ∼ビット 16] で行っ てください。 DENB 機 能 0 対応チャネル DMA 動作禁止 ( 初期値 ) 1 対応チャネル DMA 動作許可 • リセット時 , 停止要求が受け付けられた場合 :"0" に初期化されます。 • 読出し / 書込み可能です。 378 第 14 章 DMA コントローラ (DMAC) DMAC 全体制御レジスタ (DMACR) のビット 15 (DMAE ビット ) により , 全チャネ ルの動作が禁止されている場合 , 本ビットへの "1" 書込みは無効となり , 停止状態を 維持します。また , 本ビットにより動作が許可されている状態で前記ビットにより 動作が禁止された場合 , 本ビットは "0" となり , 転送は中断します ( 強制停止 ) 。 [ ビット 30] PAUS (PAUSe) *: 一時停止指示 このビットは , 対応するチャネルの DMA 転送の一時停止制御を行います。このビッ トがセットされると , 再びこのビットがクリアされるまでの間は , DMA 転送を行い ません (DMA が停止中は DSS ビットが "1xx" になります ) 。 起動前にこのビットをセットしてから起動した場合 , 一時停止状態のままとなりま す。起動後 ( 動作中 ) に一時停止をする場合は , 一度全 DMA の動作を停止させたあ とに (DMACR の DMAH [3:0] ≠ 0000) , このビットに "1" を書き込み , その後に (DMACR の DMAH [3:0] =0000) にして動作を再開させてください。この理由は , 動 作中に書き込むことによってビット 31 の DENB 動作許可ビットに影響を与えるた めです。 このビットがセットされている間に新たに発生した転送要求は受け付けられます が , このビットをクリアしないと転送は開始しません (「14.3.9 開始∼終了 / 停止ま での動作」を参照 ) 。 PAUS 機 能 0 対応チャネル DMA 動作禁止 ( 初期値 ) 1 対応チャネル DMA 動作許可 • リセット時 :"0" に初期化されます。 • 読出し / 書込み可能です。 [ ビット 29] STRG (Software TRiGger) : 転送要求 このビットは , 対応するチャネルの DMA 転送要求を生成します。このビットに "1" を書き込むと , レジスタへの書込みが終了した時点より転送要求が発生し , 対応 チャネルの転送を開始します。 ただし , 対応するチャネルが起動されていない場合は , このビットへの操作は無効 となります。 DMAE ビットの書込みによる起動と , このビットによる転送要求が同時の場合転送 要求は有効となり , 転送を開始します。また , PAUS ビットへの "1" 書込みと同時で ある場合 , 転送要求は有効となりますが , PAUS ビットを "0" に戻すまで DMA 転送 は開始しません。 STRG 機 能 0 無効 1 DMA 起動要求 379 第 14 章 DMA コントローラ (DMAC) • リセット時 :"0" に初期化されます。 • 読出し値は常に "0" となります。 • 読出し値は "1" のみ有効で , "0" は動作に影響を与えません。 [ ビット 28 ∼ビット 24] IS4 ∼ IS0 (Input Select) *: 転送要因選択 このビットは , 転送要求の要因を表 14.2-1 のように選択します。STRG ビット機能 によるソフトウェア転送要求のときは IS=00000 に設定してください。 表 14.2-1 転送要求の要因設定 IS 機 能 00000 ソフトウェア起動 (STRG ビット ) 00001 ↓ 01101 設定禁止 ↓ 設定禁止 01110 外部端子 "H" レベル または ↑エッジ 01111 外部端子 "L" レベル または ↓エッジ 10000 UART0 ( 受信完了 ) 10001 UART1 ( 受信完了 ) 10010 UART2 ( 受信完了 ) 10011 UART0 ( 送信完了 ) 10100 UART1 ( 送信完了 ) 10101 UART2 ( 送信完了 ) 10110 外部割込み 0* 10111 外部割込み 1* 11000 リロードタイマ 0* 11001 リロードタイマ 1* 11010 リロードタイマ 2* 11011 外部割込み 2* 11100 外部割込み 3* 11101 外部割込み 4* 11110 外部割込み 5* 11111 A/D *: 割込み要求信号によるDMA転送起動は使用できません (MB91306R/307Rのみ) 。 380 • リセット時 :"00000" に初期化されます。 • 読出し / 書込み可能です。 第 14 章 DMA コントローラ (DMAC) <注意事項> • 周辺機能の割込みによる DMA 起動を設定した場合 (IS=1xxxx) , 選択した周辺機能は ICR レジスタで割込みを禁止状態にしてください。 • デマンド転送モードを選択した場合は , IS [4:0] =01110, 01111 のみ設定可能です。ほ かの要因での起動は禁止です。 • 外部要求入力 (DREQx) は , ch0, ch1, ch2 のみ有効です。ch3, ch4 は外部要求入力の選 択はできません。また , レベル検出かエッジ検出かはモード設定により決定されます。 デマンド転送はレベル検出 , ほかはエッジ検出になります。 • 外部割込みで , DMA 転送を起動する場合は , クロック分周比は CLKB:CLKP=(1:2) また は (1:1) にしてください。 例 : CLKB=66MHz, CLKP=33MHz CLKB=33MHz, CLKP=33MHz [ ビット 23 ∼ビット 20] DDNO3 ∼ DDNO0 ( ダイレクトアクセスナンバー ) *: 内蔵周辺へのフライバイ機能 これらのビットは , 対応するチャネルで使用する転送先 / 元の内蔵周辺を指定しま す。 表 14.2-2 ダイレクトアクセスナンバーの設定内容 IS 機 能 0000 設定禁止 0001 未使用 0010 未使用 0011 未使用 0100 未使用 0101 未使用 0110 未使用 0111 未使用 1000 未使用 1001 未使用 1010 未使用 1011 未使用 1100 未使用 1101 未使用 1101 未使用 1110 未使用 1111 設定禁止 • リセット時 :"0000" に初期化されます。 381 第 14 章 DMA コントローラ (DMAC) • 読出し / 書込み可能です。 <注意事項> MB91307 シリーズは , この機能はサポートされません。書込みデータは無視されます。 [ ビット 19 ∼ビット 16] BLK3 ∼ BLK0 (BLocK size) : ブロックサイズ指定 このビットは , 対応するチャネルのブロック転送時のブロックサイズを指定しま す。このビットに設定した値が 1 回の転送単位におけるワード数 ( 正確には , デー タ幅設定の繰返し回数 ) となります。ブロック転送を行わない場合は "01H" ( サイズ 1) を設定してください。デマンド転送時 , 本レジスタ値は無視されます。サイズ 1 となります。 BLK XXXX 機 能 対応チャネルのブロックサイズ指定 • リセット時 : 初期化されません。 • 読出し / 書込み可能です。 • 全ビット "0" を指定した場合 , ブロックサイズは 16 ワードとなります。 • 読出し時は , 常にブロックサイズ ( リロード値 ) が読み出されます。 [ ビット 15 ∼ビット 0] DTC (Dma Terminal Count register) *: 転送回数レジスタ DTC は , 転送回数を格納するレジスタです。各レジスタは 16 ビット長で構成され ています。 すべてのレジスタは , 専用のリロードレジスタを持っています。転送回数レジスタ のリロードを許可しているチャネルに使用した場合 , 転送終了時に自動的に初期設 定値をレジスタに戻します。 BLK XXXX 機 能 対応チャネルの転送回数指定 DMA 転送が起動すると , 本レジスタのデータを DMA 専用転送回数カウンタのカウ ンタバッファに格納して 1 転送単位ごとに -1 カウントします ( 減算 ) 。DMA の転 送終了時にカウンタバッファの内容を本レジスタに書き戻してDMAは終了します。 したがって , DMA 動作中の転送回数値を読み出すことはできません。 • リセット時 : 初期化されません。 • 読出し / 書込み可能です。DTC のアクセスは , 必ずハーフワード長またはワード 長でアクセスしてください。 • 読出し時の値は , カウント値となります。リロード値の読出しはできません。 382 第 14 章 DMA コントローラ (DMAC) 14.2.2 コントロール / ステータスレジスタ B (DMACB0 ∼ DMACB4) コントロール / ステータスレジスタ B (DMACB0 ∼ DMACB4) は , DMAC 各チャネ ルの動作制御を行うレジスタで , チャネルごとに独立して存在します。 コントロール / ステータスレジスタ B (DMACB0 ∼ DMACB4) の構成および機能に ついて説明します。 ■ コントロール / ステータスレジスタ B (DMACB0 ∼ DMACB4) 図 14.2-3 に , コントロール / ステータスレジスタ B (DMACB0 ∼ DMACB4) のビット構 成を示します。 図 14.2-3 コントロール / ステータスレジスタ B (DMACB0 ∼ DMACB4) のビット構成 bit 31 30 TYPE [1 : 0] bit 15 14 29 28 MOD [1 : 0] 13 12 27 26 WS [1 : 0] 11 10 25 24 23 22 21 20 19 18 SADM DADM DTCR SADR DADR ERIE EDIE 9 SASZ [7 : 0] 8 7 6 5 4 3 17 16 DSS [2 : 0] 2 1 0 DASZ [7 : 0] ( 初期値 : 00000000_00000000_XXXXXXXX_XXXXXXXXB) [ ビット 31, ビット 30] TYPE (TYPE) *: 転送タイプ設定 これらのビットは転送タイプ設定ビットで , 対応するチャネルの動作タイプを設定 します。 • 2 サイクル転送モード : 転送元アドレス (DMASA) と転送先アドレス (DMADA) を設定して , 読出し動作と書込み動作を転送回数分繰り返して転送するモード。 転送元 / 転送先ともに全領域 (32 ビットアドレス ) 指定可能です。 • フライバイ転送モード : 転送先アドレス (DMADA) にメモリアドレスを設定する ことにより , 外部⇔外部転送を 1 サイクルで行うモード。メモリアドレスは , 必 ず外部領域を指定してください。 表 14.2-3 転送タイプの設定内容 TYPE 機 能 00 2 サイクル転送 ( 初期値 ) 01 フライバイ : メモリ→ I/O 転送 10 フライバイ :I/O →メモリ 転送 11 設定禁止 • リセット時 :"00" に初期化されます。 • 読出し / 書込み可能です。 383 第 14 章 DMA コントローラ (DMAC) [ ビット 29, ビット 28] MODE (MODE) *: 転送モード設定 これらのビットは転送モード設定ビットで , 対応チャネルの動作モードを設定しま す。 表 14.2-4 転送モードの設定内容 MOD 機 能 00 ブロック / ステップ転送モード 01 バースト転送モード 10 デマンド転送モード 11 設定禁止 • リセット時 :"00" に初期化されます。 • 読出し / 書込み可能です。 [ ビット 27, ビット 26] WS (Word Size) *: 転送データ幅選択 これらのビットは転送データ幅選択ビットで , 対応チャネルの転送データ幅を選択 します。本レジスタに設定したデータ幅単位で指定回数分を転送します。 表 14.2-5 転送データ幅の選択 WS 機 能 00 バイト単位で転送 ( 初期値 ) 01 ハーフワード単位で転送 10 ワード幅単位で転送 11 設定禁止 • リセット時 :"00" に初期化されます。 • 読出し / 書込み可能です。 [ ビット 25] SADM (Source-ADdr. Count-Mode select) *: 転送元アドレスカウントモード指定 このビットは , 対応するチャネルの転送元アドレスの , 1 転送ごとのアドレス処理を 指定します。 アドレス増加 / 減少は , 設定された転送元アドレスカウント幅 (SASZ) に従って , 1 転送ごと転送後に加算 / 減算され , 転送終了時に次回アクセス用アドレスが対応す るアドレスレジスタ (DMASA) に書き込まれます。 したがって , DMA 転送が終了されるまで転送元アドレスレジスタは更新されませ ん。 アドレス固定にする場合は, 本レジスタを増減に指定してアドレスカウント幅を"0" としてください。 384 第 14 章 DMA コントローラ (DMAC) SADM 機 能 0 転送元アドレスは増加します ( 初期値 ) 。 1 転送元アドレスは減少します。 • リセット時 :"0" に初期化されます。 • 読出し / 書込み可能です。 [ ビット 24] DADM (Destination-ADdr. Count-Mode select) *: 転送先アドレスカウントモード指定 このビットは , 対応するチャネルの転送先アドレスの , 1 転送ごとのアドレス処理を 指定します。 アドレス増加 / 減少は , 設定された転送先アドレスカウント幅 (DASZ) に従って , 1 転送ごと転送後に加算 / 減算され転送終了時に次回アクセス用アドレスが対応する アドレスレジスタ (DMADA) に書き込まれます。 したがって , DMA 転送が終了されるまで転送先アドレスレジスタは更新されませ ん。 アドレス固定にする場合は, 本レジスタを増減に指定してアドレスカウント幅を"0" としてください。 DADM 機 能 0 転送元アドレスは増加します ( 初期値 ) 。 1 転送元アドレスは減少します。 • リセット時 :"0" に初期化されます。 • 読出し / 書込み可能です。 [ ビット 23] DTCR (DTC-reg. Reload) *: 転送回数レジスタリロード指定 このビットは , 対応するチャネルの転送回数レジスタのリロード機能を制御しま す。 このビットによってリロード動作が許可されている場合 , 転送終了後に回数レジス タ値を初期設定値に戻して停止し , 転送要求待ち状態になります。このビットが "1" の場合 , DENB ビットはクリアされません。 停止させる場合は , DENB=0 または DMAE=0 にする必要がありますが , この場合は 強制停止になります。 回数カウンタのリロード動作を禁止している場合は , アドレスレジスタにリロード 指定をしていても , 転送終了で停止するシングルショット動作となります。この場 合 , DENB ビットはクリアされます。 385 第 14 章 DMA コントローラ (DMAC) DTCR 機 能 0 転送回数レジスタリロードを禁止 ( 初期値 ) 1 転送回数レジスタリロードを許可 • リセット時 :"0" に初期化されます。 • 読出し / 書込み可能です。 [ ビット 22] SADR (Source-ADdr.-reg. Reload) *: 転送元アドレスレジスタリロード指定 このビットは , 対応するチャネルの転送元アドレスレジスタのリロード機能を制御 します。 このビットによってリロード動作が許可されている場合 , 転送終了後に転送元アド レスレジスタ値を初期設定値に戻します。 回数カウンタのリロード動作を禁止している場合は , アドレスレジスタにリロード 指定をしていても , 転送終了で停止するシングルショット動作となります。この場 合 , アドレスレジスタ値は , 初期設定値がリロードされた状態で停止します。 このビットによってリロード動作が禁止されている場合は , 転送終了時のアドレス レジスタ値は最終アドレスの次のアクセスアドレスとなります。アドレス増加を指 定している場合は , 増加したアドレスとなります。 SADR 機 能 0 転送元アドレスレジスタリロード禁止 ( 初期値 ) 1 転送元アドレスレジスタリロード許可 • リセット時 :"0" に初期化されます。 • 読出し / 書込み可能です。 [ ビット 21] DADR (Dest.-ADdr.-reg. Reload) *: 転送先アドレスレジスタリロード指定 このビットは , 対応するチャネルの転送先アドレスレジスタのリロード機能を制御 します。 このビットによってリロード動作が許可されている場合 , 転送終了後に転送先アド レスレジスタ値を初期設定値に戻します。 その他 , 機能の詳細はビット 22 (SADR) の内容と同等です。 DADR 386 機 能 0 転送元アドレスレジスタリロード禁止 ( 初期値 ) 1 転送元アドレスレジスタリロード許可 • リセット時 :"0" に初期化されます。 • 読出し / 書込み可能です。 第 14 章 DMA コントローラ (DMAC) [ ビット 20] ERIE (ERror Interrupt Enable) *: エラー割込み出力許可 このビットは , エラー発生による終了時の割込み発生を制御します。発生したエ ラーの内容は , DSS2 ∼ DSS0 で示されます。すべての終了要因でこの割込みが発生 するのではなく , 特定の終了要因の際のみ割込みが発生することに注意してくださ い ( ビット 18 ∼ビット 16 の DSS2 ∼ DSS0 ビットを参照してください ) 。 ERIE 機 能 0 エラー割込み要求出力禁止 ( 初期値 ) 1 エラー割込み要求出力許可 • リセット時 :"0" に初期化されます。 • 読出し / 書込み可能です。 [ ビット 19] EDIE (EnD Interrupt Enable) *: 終了割込み出力許可 このビットは , 正常終了時の割込み発生を制御します。 EDIE 機 能 0 終了割込み要求出力禁止 ( 初期値 ) 1 終了割込み要求出力許可 • リセット時 :"0" に初期化されます。 • 読出し / 書込み可能です。 [ ビット 18 ∼ビット 16] DSS2 ∼ DSS0 (DMA Stop Status) *: 転送停止要因表示 これらのビットは , 対応するチャネルの DMA 転送停止 / 終了の要因を示す 3 ビッ トのコード ( 終了コード ) を表示します。終了コードの内容は , 表 14.2-6 のとおり です。 表 14.2-6 終了コードの内容 DSS 機 能 割込み発生 000 初期値 なし x01 アドレスエラー ( アンダフロー / オーバフロー ) エラー x10 転送停止要求 エラー x11 正常終了 終了 1xx DMA 一時停止中 (DMAH, PAUS ビット , 割込み等 ) 下位 2 ビットに従う 転送停止要求は , 周辺装置からの要求と外部端子 DSTP 機能を使用した場合のみ セットされます。 387 第 14 章 DMA コントローラ (DMAC) 「割込み発生」欄は , 発生可能な割込み要求の種類を示します。 • リセット時 :"000" に初期化されます。 • "000" を書き込むことにより , クリアされます。 • 読出し / 書込み可能ですが , このビットへの書込みは "000" のみ有効となります。 [ ビット 15 ∼ビット 8] SASZ (Source Addr count SiZe) *: 転送元アドレスカウントサイズ 指定 これらのビットは , 対応するチャネルの 1 転送ごとの転送元アドレス (DMASA) の 増減を指定します。このビットに設定した値が 1 回の転送単位におけるアドレス増 減となります。アドレスの増減は , 転送元アドレスカウントモード (SADM) の指定 に従います。 SASZ XXXX 機 能 転送元アドレスの増減幅を指定します。0 ∼ 255 • リセット時 : 初期化されません。 • 読出し / 書込み可能です。 [ ビット 7 ∼ビット 0] DASZ (Des Addr count size) *: 転送先アドレスカウントサイズ指定 これらのビットは , 対応するチャネルの 1 転送ごとの転送先アドレス (DMADA) の 増減を指定します。このビットに設定した値が 1 回の転送単位におけるアドレス増 減となります。アドレスの増減は転送先アドレスカウントモード (DADM) の指定に 従います。 DASZ XXXX 388 機 能 転送元アドレスの増減幅を指定します。0 ∼ 255 • リセット時 : 初期化されません。 • 読出し / 書込み可能です。 第 14 章 DMA コントローラ (DMAC) 14.2.3 転送元 / 転送先アドレス設定レジスタ (DMASA0 ∼ DMASA4/DMADA0 ∼ DMADA4) 転送元 / 転送先アドレス設定レジスタ (DMASA0 ∼ DMASA4/DMADA0 ∼ DMADA4) は , DMAC 各チャネルの動作制御を行うレジスタで , チャネルごとに独立 して存在します。 転送元 / 転送先アドレス設定レジスタ (DMASA0 ∼ DMASA4/DMADA0 ∼ DMADA4) の構成および機能について説明します。 ■ 転送元/転送先アドレス設定レジスタ (DMASA0∼DMASA4/DMADA0∼DMADA4) 転送元 / 転送先アドレス設定レジスタ (DMASA0 ∼ DMASA4/DMADA0 ∼ DMADA4) は , 転送元 / 先アドレスを格納するレジスタ群です。各レジスタは 32 ビット長で構成 されています。 図 14.2-4 に , 転送元 / 転送先アドレス設定レジスタ (DMASA0 ∼ DMASA4/DMADA0 ∼ DMADA4) のビット構成を示します。 図 14.2-4 転送元 / 転送先アドレス設定レジスタ (DMASA0 ∼ DMASA4/DMADA0 ∼ DMADA4) のビット構成 bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 DMASA [31 : 16] bit 15 14 13 12 11 10 9 8 7 DMASA [15 : 0] ( 初期値 : XXXXXXXX_XXXXXXXX_XXXXXXXX_XXXXXXXXB) bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 DMADA [31 : 16] bit 15 14 13 12 11 10 9 8 7 DMADA [15 : 0] ( 初期値 : XXXXXXXX_XXXXXXXX_XXXXXXXX_XXXXXXXXB) 以下に , 転送元 / 転送先アドレス設定レジスタ (DMASA0 ∼ DMASA4/DMADA0 ∼ DMADA4) の各ビットの機能を説明します。 [ ビット 31 ∼ビット 0] DMASA (DMA Source Addr) *: 転送元アドレス設定 これらのビットは , 転送元アドレスを設定します。 [ ビット 31 ∼ビット 0] DMADA (DMA Destination Addr) *: 転送先アドレス設定 これらのビットは , 転送先アドレスを設定します。 DMA 転送が起動すると , このレジスタのデータを DMA 専用アドレスカウンタのカ ウンタバッファに格納して 1 転送ごとに設定に従ってアドレスカウントします。 DMAの転送終了時にカウンタバッファの内容をこのレジスタに書き戻してDMAは 終了します。したがって , DMA 動作中のアドレスカウンタ値を読み出すことはでき ません。 389 第 14 章 DMA コントローラ (DMAC) すべてのレジスタは , 専用のリロードレジスタを持っています。転送元 / 先アドレ スレジスタのリロードを許可しているチャネルに使用した場合 , 転送終了時に自動 的に初期設定値をレジスタに戻します。この際 , ほかのアドレスレジスタには影響 を与えません。 • リセット時 : 初期化されません。 • 読出し / 書込み可能です。このレジスタは , 必ず 32 ビットデータでアクセスして ください。 • 読出し時の値は , 転送中は転送前のアドレス値 , 転送終了時には次のアクセスア ドレス値となります。リロード値の読出しはできません。したがって , 転送アド レスをリアルタイムで読み出すことはできません。 <注意事項> このレジスタで , DMAC 自身のレジスタを設定しないでください。DMAC 自身のレジ スタに DMA 転送を行うことはできません。 390 第 14 章 DMA コントローラ (DMAC) 14.2.4 DMAC 全体制御レジスタ (DMACR) DMAC 全体制御レジスタ (DMACR) は , DMAC5 チャネル分全体の動作を制御するレ ジスタです。このレジスタは , 必ずバイト長でアクセスしてください。 DMAC 全体制御レジスタ (DMACR) の構成および機能について説明します。 ■ DMAC 全体制御レジスタ (DMACR) 図 14.2-5 に , DMAC 全体制御レジスタ (DMACR) のビット構成を示します。 図 14.2-5 DMAC 全体制御レジスタ (DMACR) のビット構成 bit 31 DMAE bit 30 29 28 27 26 25 15 ― 14 ― 13 PM01 12 11 10 9 ― ― ― ― ― ― ― 24 23 22 21 20 19 18 17 16 8 ― 7 ― 6 ― 5 ― 4 ― 3 ― 2 ― 1 ― 0 DMAH [3 : 0] ― ― ― ― ― ― ― ― ― ( 初期値 : 0XX00000_XXXXXXXX_XXXXXXXX_XXXXXXXXB) 以下に , DMAC 全体制御レジスタ (DMACR) の各ビットの機能を説明します。 [ ビット 31] DMAE (DMA Enable) : DMA 動作許可 このビットは , DMA 全チャネルの動作を制御します。 このビットによって DMA 動作が禁止されている場合 , チャネルごとの起動 / 停止 の設定や動作状態にかかわらず , 全チャネルの転送動作が禁止されます。転送中で あったチャネルは要求を取り下げ , ブロック境界で転送を停止します。禁止状態で , 各チャネルに対して行われる起動操作はすべて無効となります。 このビットによって DMA 動作が許可されている場合 , チャネルごとに起動 / 停止 操作が有効となります。このビットで DMA 動作許可を行ったのみでは , 各チャネ ルに対する起動は行われません。 このビットに"0"を書き込むと強制停止しますが, 必ずDMAH [3:0] ビット [DMACR のビット 27 ∼ビット 24] で DMA を一時停止状態にしてから強制停止 ("0" 書込み ) してください。一時停止しないで強制停止した場合は , DMA は停止しますが転送 データは保証されません。停止の確認は DSS [2:0] ビット [DMACB のビット 18 ∼ ビット 16] で行ってください。 DMAE 機 能 0 全チャネル DMA 転送禁止 ( 初期値 ) 1 全チャネル DMA 転送許可 • リセット時 :"0" に初期化されます。 • 読出し / 書込み可能です。 391 第 14 章 DMA コントローラ (DMAC) [ ビット 28] PM01 (Priority mode ch0, 1 robine) : チャネル優先度回転 このビットは , ch0, ch1 の優先度を転送ごとに順位を回転させるときに設定します。 PM01 機 能 0 優先順位固定 ( ch0 > ch1 ) ( 初期値 ) 1 優先順位回転 ( ch1 > ch0 ) • リセット時 :"0" に初期化されます。 • 読出し / 書込み可能です。 [ ビット 27 ∼ビット 24] DMAH (DMA Halt) :DMA 一時停止 これらのビットは , DMA 全チャネルの一時停止制御を行います。これらのビットが セットされると , 再びこれらのビットがクリアされるまでの間は , 全チャネルの DMA 転送を行いません。 起動前にこれらのビットをセットしてから起動した場合 , 全チャネルが一時停止の ままとなります。 これらのビットがセットされている間に DMA 転送が許可 (DENB=1) されている チャネルに発生した転送要求は , すべて有効となり , これらのビットをクリアする ことにより転送を開始します。 DMAH 0000 0000 以外 機 能 全チャネル DMA 動作許可 ( 初期値 ) 全チャネル DMA 一時停止 • リセット時 :"0" に初期化されます。 • 読出し / 書込み可能です。 [ ビット 30, ビット 29, ビット 23 ∼ビット 0] (Reserved) : 未使用ビット これらのビットは , 未使用ビットです。 • 392 読出し値は不定です。 第 14 章 DMA コントローラ (DMAC) 14.2.5 その他の機能 MB91307 シリーズは , 外部転送用として DACK, DEOP, DREQ の端子があります が , 汎用ポートと兼用になっています。 ■ DACK, DEOP, DREQ の端子機能 外部転送用として DACK, DEOP, DREQ の端子機能を使用するときは , ポート機能から DMA 端子機能に切り換える必要があります。 PFR レジスタの設定で切り換えてください。 393 第 14 章 DMA コントローラ (DMAC) 14.3 DMA コントローラ (DMAC) の動作 DMA コントローラ (DMAC) は FR ファミリに内蔵され , CPU の命令動作を介するこ となく高速にデータ転送を制御する多機能 DMA コントローラです。 本節では , DMA コントローラ (DMAC) の動作について説明します。 ■ 主要動作 • 各転送チャネルは , 独立に各種機能を設定します。 • 各チャネルは起動許可後 , 設定した転送要求を検出するまでは転送動作を行いませ ん。 • 転送要求検出により , バスコントローラに対して DMA 転送要求を出力し , バスコン トローラの制御によりバス権を取得して転送を開始します。 • 転送はチャネルごとに独立に設定されたモード設定に従ったシーケンスで行われ ます。 ■ 転送モード DMA の各チャネルは , それぞれの DMACB レジスタの MOD [1:0] ビットで設定された 転送モードに従って転送動作を行います。 ● ブロック / ステップ転送 1 回の転送要求で 1 ブロック転送単位のみを転送し , その後次の転送要求が受け付けら れるまでは DMA はバスコントローラに対し転送要求を停止します。 1 ブロック転送単位とは , 設定されたブロックサイズ分 (DMACA の BLK [3:0] ) です。 ● バースト転送 1 回の転送要求で指定転送回数終了まで連続して転送します。 指定転送回数とは , ブロックサイズ分×転送回数分 (DMACA の BLK [3:0] × DMACA の DTC [15:0] ) です。 ● デマンド転送 外部からの転送要求入力 (DREQ 端子のレベル検出 ) 終了か , 指定転送回数終了までは 連続して転送します。 デマンド転送での指定転送回数は設定した転送回数分 (DMACA の DTC [15:0] ) となり ます。ブロックサイズは "1" 固定となり , レジスタ値は無視されます。 ■ 転送タイプ ● 2 サイクル転送 ( 通常転送 ) DMA コントローラの動作は , 読出し動作と書込み動作を 1 つの単位として動作します。 転送元レジスタのアドレスからデータを読み出して転送先レジスタのアドレスへデー タを書き込みます。 394 第 14 章 DMA コントローラ (DMAC) ● フライバイ転送 ( メモリ→ I/O) DMA コントローラの動作は , 読出し動作を 1 つの単位として動作します。 フライバイ転送を設定して DMA 転送を行うと , DMA はバスコントローラに対してフ ライバイ転送 ( リード ) 要求を出し , バスコントローラは外部インタフェースにフライ バイ転送 ( リード ) をさせます。 ● フライバイ転送 (I/O →メモリ ) DMA コントローラの動作は , 書込み動作を 1 つの単位として動作します。 ほかはフライバイ転送 ( メモリ→ I/O) と同等です。 MB91307 シリーズでのフライバイ転送のアクセス領域は , 必ず外部領域でなければい けません。 ■ 転送アドレス アドレッシングには以下に記述するものがあり , チャネル転送元 / 転送先ごとに独立に 設定します。 2 サイクル転送とフライバイ転送でのアドレス設定レジスタ (DMASA, DMADA) の指 定方法は異なります。 ● 2 サイクル転送でのアドレスの指定 あらかじめアドレスを設定してあるレジスタ (DMASA, DMADA) から読み出した値を アドレスとして , アクセスします。転送要求を受け付けたら , DMA はレジスタからア ドレスを一時記憶バッファに格納して転送を開始します。 1 回の転送 ( アクセス ) ごとにアドレスカウンタで次回アクセスアドレスを生成 ( 加算 / 減算 / 固定選択可 ) して , 一時記憶バッファに戻します。この一時記憶バッファの内容は , 1ブロック転送単位終了ごとにレジスタ (DMASA, DMADA) へ書き戻されます。したがっ て , アドレスレジスタ (DMASA, DMADA) 値は , 1 ブロック転送単位ごとにしか更新され ませんので , 転送中のアドレスをリアルタイムに知ることはできません。 ● フライバイ転送でのアドレスの指定 フライバイ転送では , 転送先アドレスレジスタ (DMADA) から読み出した値をアドレ スとしてアクセスします。転送元アドレスレジスタ (DMASA) は無視されます。設定 するアドレスは , 必ず外部領域にしてください。 転送要求を受け付けたら , DMA はレジスタからアドレスを一時記憶バッファに格納し て転送を開始します。 1 回の転送 ( アクセス ) ごとにアドレスカウンタで次回アクセスアドレスを生成 ( 加算 / 減算 / 固定選択可 ) して , 一時記憶バッファに戻します。この一時記憶バッファの内容 は , 1 ブロック転送単位終了ごとにレジスタ (DMADA) へ書き戻されます。したがって , アドレスレジスタ (DMADA) 値は, 1ブロック転送単位ごとにしか更新されませんので, 転送中のアドレスをリアルタイムに知ることはできません。 395 第 14 章 DMA コントローラ (DMAC) ■ 転送回数と転送終了 ● 転送回数 1 ブロック転送単位終了ごとに , 転送回数レジスタをデクリメント (-1) します。転送回 数レジスタが "0" になると指定転送回数終了となり , 終了コードを表示して停止または 再起動します *。 転送回数レジスタ値は, アドレスレジスタと同様に1ブロック転送単位ごとにしか更新 されません。 * : 転送回数レジスタリロード禁止に設定している場合は , 転送を終了します。許可さ れている場合はレジスタ値を初期化して , 転送待ち状態になります (DMACB の DTCR) 。 ● 転送終了 転送終了要因には , 以下に記述するものがあり , 終了時は終了コードとして要因が表示 されます (DMACB の DSS [2:0] ) 。 • 指定転送回数の終了 (DMACA:BLK [3:0] × DMACA:DTC [15:0] ) => 正常終了 • 周辺回路または外部端子 (DSTP) からの転送停止要求の発生 => エラー • アドレスエラーの発生 => エラー • リセットの発生 => リセット 各終了要因に対応して , 転送停止要因表示 (DSS) され転送終了割込み / エラー割込みを 発生できます。 396 第 14 章 DMA コントローラ (DMAC) 14.3.1 転送要求の設定 DMA 転送を起動する転送要求には , 以下の 3 種類があります。 • 外部転送要求端子 • 内蔵周辺要求 • ソフトウェア要求 ソフトウェア要求については , ほかの要求の設定にかかわらず常に使用することが できます。 ■ 外部転送要求端子 各チャネルに 1 本用意された入力端子への入力により , 転送要求を発生します。 MB91307 シリーズでは ch0 ∼ ch3 のみ対応しています (DREQ0, DREQ1, DREQ2) 。 この際の有効入力は , 転送タイプと起動要因設定により次の要因が選択されます。 ● エッジ検出 転送タイプがブロック / ステップ / バースト転送のときは , エッジ検出が選択されます。 • 立下りエッジ検出 : 転送要因選択レジスタで設定。DMACA の IS [4:0] =01110 のとき • 立上りエッジ検出 : 転送要因選択レジスタで設定。DMACA の IS [4:0] =01111 のとき ● レベル検出 転送タイプがデマンド転送のときは , レベル検出が選択されます。 • "H" レベル検出 : 転送要因選択レジスタで設定。DMACA の IS [4:0] = 01110 のとき • "L" レベル検出 : 転送要因選択レジスタで設定。DMACA の IS [4:0] = 01111 のとき ■ 内蔵周辺要求 内蔵周辺回路の割込み発生により , 転送要求を発生します。 チャネルごとに , どの周辺の割込みにより転送要求を発生するかを設定します (DMACA の IS [4:0] =1xxxx) 。 外部転送要求とは同時に使用することができません。 <注意事項> ・転送要求に使用した割込み要求は , CPU への割込み要求としても見えますので割込 みコントローラの設定を割込み禁止に設定してください (ICR レジスタ ) 。 ・内蔵周辺回路のうち , 外部割込みおよびリロードタイマ割込み要求信号による DMA 転送起動は使用できません (MB91306R/307R のみ ) 。 ■ ソフトウェア要求 レジスタのトリガビットへの書込みにより, 転送要求を発生します (DMACAのSTRG) 。 起動 ( 転送許可 ) と同時にソフトウェア要求を発生した場合 , 直後にバスコントローラ に対し DMA 転送要求を出力し転送を開始します。 397 第 14 章 DMA コントローラ (DMAC) 14.3.2 転送シーケンス チャネルごとに , DMA 転送起動後の動作シーケンス等を決定する転送タイプと転送 モードを独立して設定することができます (DMACB の TYPE [1:0] , MOD [1:0] の設 定)。 ■ 転送シーケンスの選択 レジスタの設定により , 以下のシーケンスが選択可能である。 • バースト 2 サイクル転送 • デマンド 2 サイクル転送 • ブロック / ステップ 2 サイクル転送 • バーストフライバイ転送 • デマンドフライバイ転送 • ブロック / ステップフライバイ転送 ● バースト 2 サイクル転送 バースト 2 サイクル転送は , 1 回の転送要因で指定転送回数の転送を続けて行います。 2 サイクル転送の場合は , 転送元 / 転送先アドレスは 32 ビット全領域指定可能です。 転送要因は , 周辺転送要求 / ソフトウェア転送要求 / 外部端子 (DREQ) エッジ入力検出 要求を選択できます。 転送元アドレス指定 方向 転送先アドレス指定 32 ビット全領域指定可能 => 32 ビット全領域指定可能 ( 指定可能転送アドレス表 ) バースト転送の特長は , 以下のとおりです。 転送要求を 1 回受け付けると , 転送回数レジスタが "0" になるまで連続して転送を行い ます。 転送回数は , ブロックサイズ分×転送回数分になります (DMACA の BLK [3:0] × DMACA の DTC [15:0] ) 。 転送中に再度要求が発生した場合 , 要求は無視されます。 転送回数レジスタのリロード機能が有効である場合 , 転送終了後より次の転送要求を 受け付けます。 転送中により高い優先順位の他チャネルの転送要求を受け付けた場合 , ブロック転送 単位の境目でチャネルを切換え , そのチャネルの転送要求がクリアされるまで復帰し ません。 398 第 14 章 DMA コントローラ (DMAC) 転送要求(↑エッジ) バス動作 SA CPU 転送回数 DA SA 4 DA 3 SA DA 2 SA DA CPU 1 0 転送終了 ( 外部端子立上りエッジ起動 , ブロック数 =1, 転送回数 =4 のときのバースト転送例 ) ● バーストフライバイ転送 転送領域が外部領域のみであること , 転送単位が読出し ( メモリ→ I/O) または書込み (I/O →メモリ ) だけであること以外は 2 サイクル転送と同じです。 転送元アドレス指定 方向 転送先アドレス指定 指定不要 ( 無効 ) なし 外部領域 ( 指定可能転送アドレス表 ) ■ デマンド転送 2 サイクル転送 転送要求として , 外部端子の "H" または "L" レベルを選択している場合のみ , デマンド 転送シーケンスとなります。レベル選択は , DMACA の IS [3:0] で設定します。 連続転送の特長は , 以下のとおりです。 • 転送要求を 1 回の転送ごとにチェックし , 外部からの入力レベルが設定した転送要 求レベルの間は , 要求をクリアせずに連続して転送を行います。外部入力が変化す ると要求がクリアされ , 転送は転送の境目で停止します。これを指定転送回数終了 まで繰り返します。 • その他は , バースト転送と同等に動作します。 転送要求 ("H"レベル) バス動作 転送回数 CPU SA DA 3 SA DA 2 CPU SA DA 1 0 転送終了 ( 外部端子 "H" レベル起動 , ブロック数 =1, 転送回数 =3 のときのデマンド転送例 ) 399 第 14 章 DMA コントローラ (DMAC) 転送元アドレス指定 方向 転送先アドレス指定 外部領域 => 外部領域 外部領域 => 内蔵 I/O 外部領域 => 内蔵 RAM 内蔵 I/O => 外部領域 内蔵 RAM => 外部領域 ( 指定可能転送アドレス表 ) デマンド転送時は , 必ず外部領域のアドレスを転送元か転送先 , または両方に設定して ください。デマンド転送モード時は , DMA 転送を外部バスタイミングに合わせている ため , 必ず外部領域へのアクセスが必要になります。 ● デマンド転送フライバイ転送 転送領域が外部領域のみであること , 転送単位が読出し ( メモリ→ I/O) または書込み (I/O →メモリ ) である以外は 2 サイクル転送と同じです。 転送元アドレス指定 方向 転送先アドレス指定 32 ビット全領域指定可能 => 32 ビット全領域指定可能 ( 指定可能転送アドレス表 ) ● ステップ / ブロック転送 2 サイクル転送 ステップ / ブロック転送 (1 転送要求ごとに指定ブロック回数分のみ転送を行う ) の場 合は転送元 / 転送先アドレスは 32 ビット全領域指定可能です。 転送元アドレス指定 方向 転送先アドレス指定 32 ビット全領域指定可能 => 32 ビット全領域指定可能 ( 指定可能転送アドレス表 ) [ ステップ転送 ] ブロックサイズに "1" を設定すると , ステップ転送シーケンスとなります。 ステップ転送の特長は , 以下のとおりです。 • 転送要求を 1 回受け付けると , 1 回の転送を行った後 , 転送要求をクリアして転送を 停止します ( バスコントローラに対し , DMA 転送要求を取り下げる ) 。 • 転送中に再度要求が発生した場合 , 要求は無視されます。 • 転送中により高い優先順位の他チャネルの転送要求を受け付けた場合は , 転送停止 後にチャネルを切り換えて続けて転送を開始します。ステップ転送における優先順 位は , 転送要求が同時に発生した場合のみ意味を持ちます。 400 第 14 章 DMA コントローラ (DMAC) [ ブロック転送 ] ブロックサイズに "1" 以外を設定すると , ブロック転送シーケンスとなります。 ブロック転送の特長は , 以下のとおりです。 • 1 転送単位が複数回 ( ブロック数 ) の転送サイクルから構成されること以外は , ス テップ転送と全く同じ動作となります。 転送要求(↑エッジ) バス動作 ブロック数 CPU SA DA SA 2 転送回数 DA SA CPU 1 2 0 2 DA SA DA 1 1 転送終了 ( 外部端子立上りエッジ起動 , ブロック数 =2, 転送回数 =2 のときのブロック転送例 ) ● ステップ / ブロック転送 2 サイクル転送フライバイ転送 転送領域が外部領域のみであること , 転送単位が読出し ( メモリ→ I/O) または書込み (I/O →メモリ ) である以外は 2 サイクル転送と同じです。 転送元アドレス指定 方向 転送先アドレス指定 指定不要 ( 無効 ) なし 外部領域 ( 指定可能転送アドレス表 ) 401 第 14 章 DMA コントローラ (DMAC) 14.3.3 DMA 転送全般 DMA 転送のブロックサイズとリロード動作について説明します。 ■ ブロックサイズ • 転送データの1転送単位は, (ブロックサイズ指定レジスタに設定した数×データ幅) のデータの集合となります。 • 1 転送サイクルで転送されるデータは , データ幅指定の値に固定されるため , 1 転送 単位はブロックサイズ指定値分の転送サイクル数から構成されることになります。 • 転送中により高い優先順位の転送要求が受け付けられた場合または転送の一時停 止要求が発生した場合は , ブロック転送時においても 1 転送単位の境界にならない と停止しません。これにより分割 / 一時停止を希望しないデータブロックのデータ 保護が可能ですが , ブロックサイズが大きい場合はレスポンスを低下させる原因と もなります。 • リセット発生の場合のみ即時に停止しますが , 転送中であったデータの内容等は保 証されません。 ■ リロード動作 本モジュールでは , チャネルごとに , 以下に示す 3 種類のリロード機能の設定が可能で す。 ● 転送回数レジスタリロード機能 指定回数の転送が終了した後 , 転送回数レジスタに初期設定値を再設定して起動受付 け待ちとなります。 全転送シーケンスを繰り返し行う際に設定します。 リロード指定をしない場合 , 指定回数の転送終了後は回数レジスタ値が "0" のままとな り , 以降の転送は行われません。 ● 転送元アドレスレジスタリロード機能 指定回数の転送が終了した後 , 転送元アドレスレジスタに初期設定値を再設定します。 転送元アドレス領域内で固定領域から繰り返し転送する場合に設定します。 リロード指定をしない場合 , 指定回数の転送終了後は転送元アドレスレジスタ値が終 了時の次のアドレスとなります。アドレス領域を固定しない場合に使用します。 ● 転送先アドレスレジスタリロード機能 指定回数の転送が終了した後 , 転送先アドレスレジスタに初期設定値を再設定します。 転送先アドレス領域内で , 固定領域へ繰り返し転送する場合に設定します。 ( 以下 , 上記の「転送元アドレスレジスタリロード機能」と同じ ) • 転送元 / 転送先レジスタのリロード機能を有効にしたのみでは , 指定回数転送終了 後の再起動は行われず , 各アドレスレジスタ値が再設定されるのみとなります。 402 第 14 章 DMA コントローラ (DMAC) ● 動作モードとリロード動作の特殊な例 • 外部端子入力レベル検出による連続転送モードで転送している場合 , 転送回数レジ スタのリロード機能を使用すると , 入力が連続している間に転送終了となってもそ のままリロードして転送を継続します。この場合も終了コードはセットされます。 • 転送終了でいったん停止し , 再度入力検出から行いたい場合は , リロード指定をし ないでください。 • バースト / ブロック / ステップ転送モードで転送している場合では , 転送が終了する とリロード後いったん転送を中断し , 改めて転送要求入力が検出されるまで転送を しません。 403 第 14 章 DMA コントローラ (DMAC) アドレッシングモード 14.3.4 各転送チャネルの転送先および転送元アドレスは , それぞれ独立に指定します。 ■ アドレスレジスタの指定 指定方法には , 以下の方法があります。転送シーケンスによって設定してください。 • 2 サイクル転送モードでは , 転送元アドレス設定レジスタ (DMASA) には転送元アド レスを , 転送先アドレス設定レジスタ (DMADA) には転送先アドレスを設定してく ださい。 • フライバイ転送モードでは , 転送先アドレス設定レジスタ (DMASA) にはメモリア ドレスを設定してください。このときの転送先アドレス設定レジスタ (DMADA) の 値は無視されます。 ■ アドレスレジスタの特長 最大 32 ビット長のレジスタです。32 ビット長の場合メモリマップ上の全空間がアクセ ス可能です。 ■ アドレスレジスタの機能 • 毎アクセス時に読み出され , アドレスバスへ放出されます。 • 同時にアドレスカウンタで次回アクセス時のアドレス計算が行われ , 計算結果のア ドレスでアドレスレジスタを更新します。 • アドレス計算は , 各チャネル / 転送先 / 転送元それぞれ独立に , 加算 / 減算の内より 選択します。アドレスの増減幅はアドレスカウントサイズ指定レジスタ値によりま す (DMACB の SASZ, DASZ) 。 • 転送終了時のアドレスレジスタにはリロード機能を有効にしていない場合 , 最終ア ドレスにアドレス計算をした結果のアドレスが残されます。 • リロード機能を有効にしている場合 , アドレスの初期値がリロードされます。 <注意事項> • 32 ビット長フルアドレス計算の結果オーバフロー / アンダフローが発生した場合 , アド レスエラーとして検出され , そのチャネルの転送を中止します。詳細は , 「表 14.2-6 終 了コードの内容」を参照してください ( 制御ステータスレジスタ B DSS [2:0] ビット ) 。 • アドレスレジスタに DMAC 自身のレジスタのアドレスを設定しないでください。 • デマンド転送時は , 必ず外部領域のアドレスを転送元か転送先または両方に設定して ください。 • DMAC により DMAC 自身のレジスタへは転送しないでください。 404 第 14 章 DMA コントローラ (DMAC) 14.3.5 データの種類 1 回で転送されるデータ長 ( データ幅 ) は , 以下の内から選択します。 • バイト • ハーフワード • ワード ■ データ長 ( データ幅 ) DMA 転送においても , ワードバウンダリ仕様が守られるため , 転送先 / 転送元アドレ ス指定においてデータ長と食い違うアドレスが設定された場合 , 異なる下位ビットは 無視されます。 • バイト : 実際のアクセスアドレスとアドレス指定が一致します。 • ハーフワード : 実際のアクセスアドレスは下位 1 ビットが "0" から始まる 2 バイト となります。 • ワード : 実際のアクセスアドレスは下位 2 ビットが "00" から始まる 4 バイ トとなります。 転送元アドレスと転送先アドレスの下位ビットが食い違っている場合 , 内部アドレス バス上には設定そのままのアドレスが出力されますが , バス上の各転送対象において , 上記の決まりに従ってアドレスが修正されてアクセスされます。 405 第 14 章 DMA コントローラ (DMAC) 14.3.6 転送回数制御 転送回数は , 最大で 16 ビット長の範囲内 (1 回∼ 65536 回 ) で指定します。 ■ 転送回数制御 転送回数指定値は , 転送回数レジスタ (DMACA の DTC) に設定します。 レジスタ値は , 転送開始時に一時記憶バッファに格納され , 転送回数カウンタにより減 算されます。このカウンタ値が "0" となったとき , 指定回数の転送終了として検出され , そのチャネルの転送停止または再起動受付け待ち ( リロード指定時 ) が行われます。 転送回数レジスタ群の特長は , 以下のとおりです。 • 各レジスタ 16 ビット長です。 • すべてのレジスタはそれぞれ専用リロードレジスタを持ちます。 • レジスタ値が "0" のときに起動すると , 65536 回の転送を行います。 ■ リロード動作 • リロード機能をもつレジスタで , リロード機能が許可されている場合にのみ有効で す。 • 転送起動時に , 回数レジスタの初期値をリロードレジスタに退避します。 • 転送回数カウンタでカウントを行った際に "0" になると , 転送終了を通知するとと もに , リロードレジスタより初期値を読み出し , 回数レジスタに書き込みます。 406 第 14 章 DMA コントローラ (DMAC) CPU 制御 14.3.7 DMA 転送要求が受け付けられると , DMA はバスコントローラに対し転送要求を発 行します。 バスコントローラはバス動作の切れ目で内部バス使用権を DMA に明け渡し , DMA 転送が開始されます。 ■ DMA 転送と割込み DMA 転送中は , 基本的には転送終了まで割込みの受付けは停止します。 また割込み処理動作中に DMA 転送要求があった場合 , 転送要求は受け付けられ , 転送 終了まで割込み処理動作は停止します。 例外として , NMI 要求または割込みコントローラで設定されたホールド抑止レベルよ り高いレベルの割込み要求が発生した場合には , DMAC は転送単位 (1 ブロック ) の境 界でバスコントローラは転送要求を一時取り下げ , 割込み要求がクリアされるまで転 送を一時停止状態にします。この間 , 転送要求は内部で保持されます。割込み要求がク リアされた後に再度 DMAC はバスコントローラに転送要求を発行してバス使用権を取 得し , DMA 転送を再開します。 ■ DMA 抑止 FR ファミリは , DMA 転送中により優先度の高い割込み要因が発生すると , DMA 転送 を中断して該当割込みルーチンへ分岐します。この機構は割込み要求がある限り有効 ですが , 割込み要因をクリアすると抑止機構が働かなくなり , 割込み処理ルーチン内で DMA 転送を再開します。このため , DMA 転送を中断するレベルの割込み要因の処理 ルーチン内で , 割込み要因クリア後の DMA 再転送開始を抑止したいときは , DMA 抑 止機能を使用します。DMA 抑止機能は , DMA 全体制御レジスタの DMAH [3:0] ビット に "0" 以外の値を書き込むことで起動し , "0" を書き込むことで停止します。 この機能は , 主として割込み処理ルーチン内で使用します。割込み処理ルーチンで割込 み要因をクリアする前に DMA 抑止レジスタの内容を 1 つ増加させます。このように すると , 以降 , DMA 転送は行いません。割込み処理への対応を行った後 , 復帰する前 に DMAH [3:0] ビットの内容を 1 つ減少させます。もし , 多重割込みであれば DMAH [3:0] ビットの内容は , まだ "0" にならないため , 引き続いて DMA 転送は抑止されます。 また , 多重割込みでなければ , DMAH [3:0] ビットの内容が "0" になるため , その後すぐ に DMA 要求を有効にします。 <注意事項> • レジスタのビット数は 4 ビットですので , 15 レベルを超える多重割込みでこの機能を 使用することができません。 • DMA タスクの優先順位は , 必ずほかの割込みレベルより 15 レベルは上に置いてくださ い。 407 第 14 章 DMA コントローラ (DMAC) 14.3.8 ホールド調停 デバイスが外部バス拡張モードで動作している場合 , 外部からのホールド機能が使 用可能となります。この際の , 外部ホールド要求と本モジュールによる DMA 転送要 求との関係は , 以下に示すとおりとなります。 ■ 外部ホールド中の DMA 転送要求 DMA 転送を開始しますが , 外部バス領域へのアクセスがあった場合 , その時点で DMA 転送を一時停止します。外部ホールドが解除され次第 , DMA 転送を再開します。 ■ DMA 転送中の外部ホールド要求 外部ホールド状態となります。DMA 転送による外部バス領域へのアクセスがあった場 合 , その時点で DMA 転送は一時停止します。外部ホールドが解除され次第 , DMA 転 送を再開します。 ■ DMA 転送要求と外部ホールド要求の同時発生 外部ホールド状態となり , また内部では DMA 転送を開始します。DMA 転送による外 部バス領域へのアクセスがあった場合 , その時点で DMA 転送は一時停止します。外部 ホールドが解除され次第 , DMA 転送を再開します。 408 第 14 章 DMA コントローラ (DMAC) 14.3.9 開始∼終了 / 停止までの動作 DMA 転送の開始は , チャネルごとに独立に制御しますが , その前に全チャネルの動 作を許可しておく必要があります。開始から終了 / 停止までの動作について説明しま す。 ■ 動作開始 ● 全チャネル動作許可 DMAC 各チャネルを起動する前に , DMA 動作許可ビット (DMACR の DMAE) であら かじめ全チャネルの動作を許可する必要があります。許可されていない状態で行った 起動設定および発生した転送要求はすべて無効となります。 ● 転送起動 チャネルごとの制御レジスタにある動作許可ビットで , 転送動作を起動します。起動さ れたチャネルに対する転送要求が受け付けられると , 設定されたモードで DMA 転送動 作が開始されます。 ● 一時停止状態よりの起動 チャネルごとまたは全チャネル制御で起動前に一時停止状態にしてあった場合 , 転送 動作を起動しても一時停止状態を維持します。この間に転送要求が発生した場合は , 要 求を受け付け , 保持します。一時停止を解除した時点から転送を開始します。 ■ 転送要求の受付けと転送 • 起動後より , 各チャネルに対して設定した転送要求のサンプリングが開始されます。 • 外部端子起動要因でエッジ検出を選択した場合 , 転送要求が検出されると転送要求 のクリア条件を満たすまで DMAC 内部で要求を保持します ( ブロック / ステップ / バースト転送で外部端子起動要因を選択したとき )。 外部端子起動要因でレベル検出または周辺割込み起動を選択した場合は , 転送要求が クリアされるまで DMAC は転送を続けますが , クリアされたら 1 転送単位で転送を停 止します ( デマンド転送 / 周辺割込み起動 ) 。 周辺割込みは , レベル検出扱いとなりますので割込みは DMA による割込みクリアで行 うようにしてください。 転送要求は , 他チャネルの要求が受け付けられて転送が行われている間でも , 常に受け 付けられており , 優先順位の判断をして , 1 転送単位ごとに転送するチャネルを決定し ています。 内蔵周辺回路のうち , 外部割込みおよびリロードタイマ割込み要求信号による DMA 転 送起動はできません (MB91306R/307R のみ )。 ■ DMA による周辺割込みクリア 本 DMA には周辺割込みをクリアする機能があります。この機能は , DMA 起動要因に 周辺割込みを選択したときに機能します (IS [4:0] =1xxxx のとき )。 周辺割込みのクリアは設定された起動要因にのみ行われます。すなわち , IS [4:0] で設 409 第 14 章 DMA コントローラ (DMAC) 定された周辺機能のみクリアされます。 割込みクリアの発生タイミングは , 転送モードにより異なります (「14.4 動作フロー チャート」を参照 ) 。 • ブロック / ステップ転送 : ブロック転送を選択した場合 , 1 ブロック ( ステップ ) 転 送ごとにクリア信号が発生します。 • バースト転送 : バースト転送を選択した場合は , 指定転送回数がすべて終了したら クリア信号が発生します。 • デマンド転送 : デマンド転送では外部端子からの起動要求のみサポートするためク リア信号はでません。 ■ 一時停止 DMA 転送は , 以下の場合に一時停止します。 ● 制御レジスタへの書込みによる一時停止の設定 ( 各チャネル独立または全チャネル同時に 設定 ) 一時停止ビットにより一時停止を設定すると , 一時停止解除設定を再度設定するまで の間 , 対応するチャネルの転送は停止します。一時停止の確認は DSS ビットで行って ください。 • 全チャネルを一度に一時停止させる場合 DMA 全チャネルを一時停止する場合は , DMACR の DMAH [3:0] を "0000" 以外に設 定してください。解除は , レジスタ値を "0000" にしてください。 • チャネルごとに一時停止させる場合 DMA 各チャネルを一時停止させる場合は , DMACR の DMAH [3:0] を "0000" 以外に 設定して全チャネルを一時停止してから DMACA の PAUS=1 にしてチャネルごとに 一時停止指示をし , DMACR の DMAH [3:0] を "0000" にして全チャネル一時停止を 解除してください。解除は PAUS を "0" に設定してください。 ● NMI/ ホールド抑止レベル割込み処理中 NMI 要求またはホールド抑止レベルより高いレベルの割込み要求が発生した場合 , 転 送中のチャネルはすべて転送単位の境界で一時停止し , バス権を開放して NMI/ 割込み 処理を優先させます。また , NMI/ 割込み処理中に受け付けられた転送要求は , そのま ま保持され , NMI 処理の終了を待ちます。 要求が保持されたチャネルは , NMI/ 割込み処理が終了した後に転送を再開します。 ■ 動作終了 / 停止 DMA 転送の終了は , チャネルごとに独立に制御しますが , 全チャネルの動作を禁止す ることも可能です。 ● 転送終了 リロード動作が有効でない場合 , 転送回数レジスタが "0" になると転送を停止し , 終了 コードで『正常終了』を表示した後 , 以降の転送要求は無効となります (DMACA の DENB ビットをクリアする ) 。 リロード動作が有効である場合, 転送回数レジスタが"0"になると初期値をリロードし, 終了コードで『正常終了』を表示した後 , 再度転送要求待ちとなります (DMACA の 410 第 14 章 DMA コントローラ (DMAC) DENB ビットをクリアしない ) 。 ● 全チャネル動作禁止 DMA 動作許可ビット DMAE で全チャネルの動作を禁止すると , 動作中であったチャ ネルも含め DMAC のすべての動作が停止します。以降 , 再度全チャネル DMA 動作を 許可しても , チャネルごとに再起動しなおさないと , 転送は行われません。この場合 , 割込みは一切発生しません。 ■ エラーによる停止 指定回数の転送終了による正常終了以外の要因で停止する場合として , 各種エラー発 生による停止および強制停止があります。 ● 周辺回路よりの転送停止要求の発生 転送要求を出力する周辺回路によっては , 異常を検出した際などに転送停止要求を発 生するものがあります ( 例 : 通信系周辺における受信 / 送信エラー等 ) 。 この転送停止要求を受け取った DMAC は , 終了コードで『転送停止要求』を表示して 対応するチャネルの転送を停止します。 IS 機能 転送停止要求 00000 ↓ 01111 ソフトウェア起動 (STRG ビット ) ↓ 外部端子 "L" レベル または ↓エッジ ↑ なし ↓ 10000 ↓ 10010 ↓ ↑ あり ↓ 10011 ↓ 11111 ↓ ↑ なし ↓ 各転送停止要求の発生条件についての詳細は , 「12.2.5 DRCL レジスタ」を参照してく ださい。 ■ アドレスエラーの発生 各アドレッシングモードで , 以下に示すような不適切なアドレッシングが行われたと き , アドレスエラーとして検出されます (32 ビットアドレス指定時に , アドレスカウン タでオーバ / アンダフローが発生した場合 ) 。 アドレスエラーを検出すると , 終了コードで『アドレスエラーの発生』を表示して , 対 応するチャネルの転送を停止します。 411 第 14 章 DMA コントローラ (DMAC) 14.3.10 DMAC 割込み制御 転送要求となる周辺割込みとは独立に , DMAC のチャネルごとに割込みを出力する ことができます。 ■ DMAC 割込み制御 DMAC のチャネルごとに , 以下の割込みを出力することができます。 • 転送終了割込み : 正常終了した場合のみ発生する。 • エラー割込み : 周辺回路からの転送停止要求 ( 周辺に起因するエラー ) • エラー割込み : アドレスエラーの発生 ( ソフトウェアに起因するエラー ) これら割込みはすべて終了コードの内容に従って出力されます。 割込み要求のクリアは , DMACS の DSS2 ∼ DSS0 ( 終了コード ) に "000" を書き込むこ とにより行います。なお , 終了コードは , 再起動する際には必ず "000" を書き込んでク リアしてください。 リロード動作が有効である場合は自動的に再起動しますが , この際には終了コードは クリアされず , 次の転送終了による新しい終了コードの書込み時まで保持されます。 終了コードで表示できる終了要因は1種類のみですので, 複数の要因が同時に発生した 場合は , 優先判断を行った結果を表示します。この際に発生する割込みは , 表示されて いる終了コードに従います。 終了コードの表示の優先順位を , 以下に示します ( 上から , 優先度の高い順 ) 。 • リセット • "000" 書込みによるクリア • 周辺停止要求または外部端子入力 (DSTP) の停止要求 • 正常終了 • アドレスエラー検出による停止 • チャネル選択と制御 ■ スリープ中の DMA 転送 • DMAC は , スリープモード中でも動作させることができます。 • スリープモードでの動作を期待する場合 , 次のことに注意する必要があります。 - CPU は停止状態なので DMAC のレジスタを書き換えることはできません。スリー プモードに入る前に設定は済ませておいてください。 - スリープモードは , 割込みで解除されますので , DMAC 起動要因で周辺での割込 みを選択した場合は , 割込みコントローラで割込みを禁止する必要があります。 • DMAC 終了割込みでスリープモードを解除したくない場合は , 割込みを禁止にして ください。 412 第 14 章 DMA コントローラ (DMAC) 14.3.11 チャネル選択と制御 転送チャネルの数は 5 チャネルまで同時設定ができます。各チャネルは , 基本的に 各機能を独立に設定することが可能です。 ■ チャネル間優先順位 DMA 転送は同時に 1 チャネルのみ可能なため , 各チャネル間には優先順位が設定され ます。 順位設定には , 固定 / 回転の 2 モードがあり , チャネルグループ ( 後述 ) ごとに選択し ます。 ● 固定モード チャネル番号の小さい順に固定されます。 (ch0 > ch1 > ch2 > ch3 > ch4) 転送中により高い優先度の転送要求が受け付けられた場合 , 1 転送単位 ( ブロックサイ ズ指定レジスタに設定した数×データ幅 ) の転送が終了した時点で , 転送チャネルが高 優先度側に切り替わります。 高優先度側の転送が終了すると , 元のチャネルの転送を再開します。 ch0 転送要求 ch1 転送要求 CPU バス動作 SA DA SA ch1 転送ch DA SA ch0 DA SA ch0 DA CPU ch1 ch0 転送終了 ch1 転送終了 ● 回転モード (ch0 ∼ ch1 間のみ ) 動作許可後の初期状態は「固定モード」と同じ順位に設定されますが , 1 転送終了ごと にそのチャネルの優先度は逆転します。したがって , 同時に転送要求が出力されている 場合 , 1 転送単位ごとにチャネルが切り替わります。 連続 / バースト転送を設定した場合に効果のあるモードです。 ch0 転送要求 ch1 転送要求 バス動作 転送ch CPU SA DA ch1 SA DA ch0 SA DA ch1 SA DA CPU ch0 ch0 転送終了 ch1 転送終了 413 第 14 章 DMA コントローラ (DMAC) ■ チャネルグループ 優先順位の選択は , 下表に示す単位で設定します。 414 モード 優先度 固定 ch0 > ch1 回転 ch0 > ch1 ↑↓ ch0 < ch1 備 考 初期状態は上側の順位です。上 側が転送されると反転します。 第 14 章 DMA コントローラ (DMAC) 14.3.12 外部端子と内部動作タイミングに関する補足 外部端子と内部動作タイミングに関して補足説明をします。 ■ DREQ 端子入力の最小有効パルス幅 MB91307 シリーズは , 0, 1, 2 チャネルのみについて該当します。 バースト / ステップ / ブロック / デマンド転送すべての転送モードで , 動作時最小 5 シ ステムクロックサイクル (DMA 動作クロック CLKB の 5 周期分 ) の幅が必要です。 <注意事項> DACK 出力は , DREQ 入力の受付けを示すものではありません。DMA 許可状態で転送 前であれば , DREQ 入力は常に受け付けられます。そのため , DACK 出力のアサート まで DREQ 入力を保持する必要はありません ( デマンド転送モードは除く ) 。 ■ デマンド転送要求の停止時における DREQ 端子入力のネゲートタイミング ● 2 サイクル転送時 デマンド転送時は , 必ず外部領域のアドレスを転送元か転送先または両方に設定して ください。 • 転送対象が外部⇔外部の場合 : 最後の DMA 転送の転送元アクセス時における外部 書込みストローブ端子出力が "L" 区間のクロック最後センスタイミング前にネゲー トしてください。これより後に DREQ をネゲートした場合 , DMA リクエストがセ ンスされて次の転送まで行う可能性があります。 • 転送対象が外部⇔内部の場合 : 最後の DMA 転送の転送元アクセス時における外部 RD 端子出力が "L" 区間のクロック最後センスタイミング前にネゲートしてくださ い。これより後に DREQ をネゲートした場合 , DMA リクエストがセンスされて次 の転送まで行う可能性があります。 バス動作 CPU 領域 SA DA SA DA 外部 内部 外部 内部 CPU SA DA SA DA 外部 内部 外部 内部 外部Dバス DACK DEOP RD WR DREQ("H"レベル) (2 サイクル転送外部 => 内部転送時の DREQ 端子入力のネゲートタイミング例 ) 415 第 14 章 DMA コントローラ (DMAC) • 転送対象が内部⇔外部の場合 : 最後の DMA 転送の転送元アクセス時における外部 書込みストローブ端子出力が "L" 区間のクロック最後センスタイミング前にネゲー トしてください。これより後に DREQ をネゲートした場合 , DMA リクエストがセ ンスされて次の転送まで行う可能性があります。 ● フライバイ ( 読出し / 書込み ) 転送時 デマンド転送時は , 必ず外部領域のアドレスを転送先に設定してください。 • フライバイ ( 読出し ) 転送の場合 : 最後の DMA 転送の転送元アクセス時における外 部 RD 端子出力が "L" 区間の間にネゲートしてください (DACK="L" & RD="L" の区 間) 。これより後にDREQをネゲートした場合, 次の転送まで行う可能性があります。 • フライバイ ( 書込み ) 転送の場合 : 最後の DMA 転送の転送元アクセス時における外 部 WR 端子出力が "L" 区間の間にネゲートしてください (DACK="L" & RD="L" の区 間) 。これより後にDREQをネゲートした場合, 次の転送まで行う可能性があります。 バス動作 CPU 領域 DA DA DA DA CPU 外部 外部 外部 外部 DA DA DA DA 外部 外部 外部 外部 外部Dバス DACK DEOP RD WR 転送要求("H"レベル) ( フライバイ ( 書込み ) 転送の場合の DREQ 端子入力のネゲートタイミング例 ) ■ 同一チャネルで引き続き転送するための DREQ 端子入力のタイミング ● バースト / ステップ / ブロック / デマンド転送時 DREQ 端子入力によって同一チャネルの転送を連続させることは , 動作保証できませ ん。転送終了によって内部に保持した要求をクリアするため , 最速タイミングで DREQ が再度アサートされたとしても , 最低でも 1 システムクロックサイクル (CLK 出力の 1 周期分 ) は他チャネルの転送要求の検出が有効になっており , 結果ほかのチャネルの優 先度が高ければそちらの転送が開始されます。 また , それより以前に DREQ が再度アサートされても , 転送が終了していないので無視 されます。他チャネルの転送要求が発生していない場合であれば , DACK 端子出力が アサートされた時点で DREQ を再度アサートすることにより , 同一チャネルでの転送 が再開します。 ■ DACK 端子出力のタイミング 本 DMAC の DACK 出力は , 受け付けられた転送要求に対する転送が行われていること を示します。 DACK の出力は , 基本的に外部バスアクセスタイミングのアドレス出力に同期してい ます。DACK 出力を使用する場合は , ポートで DACK 出力イネーブルにする必要があ ります。 416 第 14 章 DMA コントローラ (DMAC) ■ DEOP 端子出力のタイミング • 本 DMA での DEOP 出力は , 受け付けられたチャネルの DMA 転送が指定転送回数 分終了したことを示すものです。 • DEOP 出力は , 最終転送ブロックの外部領域アクセスが開始されると出力されます。 そのため , ブロックサイズを "1" 以外に設定 ( ブロック転送モード ) している場合 , 最終ブロックの最後のデータ転送時に DEOP が出力されます。この場合 , 転送がま だ行われている間 (DEOP 出力される前 ) でも , DACK 端子出力がアサートされてい れば , 次の DREQ の受付けは開始されています。 • DEOP の出力は外部バスアクセスタイミングに同期しています。しかし , 転送元 / 転 送先が内部アクセスであった場合 , DEOP は出力されません。DEOP 出力を使用する 場合は , ポートレジスタで DEOP 出力イネーブルにする必要があります。 ■ DSTP 端子入力のタイミング • バースト / ステップ / ブロック / デマンド転送すべての転送モードで動作時に , 最小 5 システムクロックサイクル (=1/2θ, DMA 動作クロック CLKB の 5 周期分 ) の幅が 必要です。 • DSTP の入力タイミングは , DREQ と同様に外部アクセスと同期させて使用すること をお薦めします (DACK 出力と RD または WR でデコードした信号を使用してくだ さい ) 。 • DMA の転送を強制的に停止する場合に使用します。この端子入力を使用すること で転送を強制的に停止することができますが , ステータスレジスタ (DMACB の DSS [2:0] ) は「転送停止要求」を示し , エラーとして扱われます。割込みを許可してい れば割込みを発生します。 • この機能は DEOP 端子と兼用になっているので , 両方の機能を使用することはでき ません。機能の切換えはポートレジスタで設定してください。 ■ 転送中に外部端子転送要求が再度入力された場合 ● バースト / ステップ / ブロック転送時 DACK 信号が DMAC 内部でアサートされるまでの間 , 次の転送要求は入力されても無 効となります。しかし , 外部バス制御ユニットと DMAC の動作は完全に同期してはい ないため , DREQ 入力で転送要求を有効にするためには , DACK と DEOP 出力により DREQ 端子入力を作成する回路を初期化する必要があります。 ● デマンド転送時 全転送回数が終了した際に転送回数レジスタのリロードを指定している場合 , 再度転 送要求が受け付けられます。 ■ ブロック転送中にほかの転送要求が発生した場合 指定したブロックの転送が終了するまでは , ほかの要求は検出されません。ブロックの 境界で , その時点で受け付けられている転送要求を評価し , 最も優先順位の高いチャネ ルの転送を行います。 417 第 14 章 DMA コントローラ (DMAC) ■ 外部 I/O- 外部メモリ間の転送 本 DMAC の転送対象として , 外部 I/O と外部メモリの区別は存在しません。外部 I/O は , アドレス固定の外部アドレスとして設定してください。 フライバイ転送を行う場合 , 外部メモリは転送先アドレスレジスタにアドレスを設定 してください。また , 外部 I/O に対しては DACK 出力と読出し信号 RD または書込み 信号 WRn 端子でデコードした信号を使用してください。 ■ DMAC の AC 特性 DMAC に関連する外部端子は , DREQ 端子入力と DACK 端子出力 , DEOP 端子出力が ありますが , 出力タイミングは外部バスアクセスに同期しています ( データシートの DMAC の交流規格を参照してください ) 。 418 第 14 章 DMA コントローラ (DMAC) 14.4 動作フローチャート 次の各転送モードにおける動作フローチャートを示します。 • ブロック転送 • バースト転送 • デマンド転送 ■ ブロック転送 図 14.4-1 に , ブロック転送の動作フローチャートを示します。 図 14.4-1 ブロック転送の動作フローチャート DMA停止 DENB=>0 DENB=1 リロード許可 起動要求待機 起動要求 initial アドレス,転送回数,ブロック数ロード 転送元アドレスアクセス アドレス演算 フライバイ時は 1回のアクセス 転送先アドレスアクセス アドレス演算 ブロック数-1 BLK=0 転送回数-1 アドレス,転送回数,ブロック数 ライトバック 周辺割込み 起動要因選択時のみ 割込みクリア DTC=0 DMA転送終了 割込み クリア発生 DMA割込み発生 ブロック転送 ・すべての起動要因で起動できる(選択)。 ・すべての領域へのアクセスができる。 ・ブロック数の設定可能。 ・ブロック数終了で割込みクリア発行。 ・指定転送回数終了でDMA割込みを発行。 419 第 14 章 DMA コントローラ (DMAC) ■ バースト転送 図 14.4-2 に , バースト転送の動作フローチャートを示します。 図 14.4-2 バースト転送の動作フローチャート DMA停止 DENB=>0 DENB=1 リロード許可 起動要求待機 起動要求 initial アドレス,転送回数,ブロック数ロード 転送元アドレスアクセス アドレス演算 fly-by時は 1回のアクセス 転送先アドレスアクセス アドレス演算 ブロック数-1 BLK=0 転送回数-1 DTC=0 アドレス,転送回数,ブロック数 ライトバック 周辺割込み起動要因選択時のみ 割込み クリア DMA転送終了 割込みクリア発生 DMA割込み発生 バースト転送 ・すべての起動要因で起動できる(選択)。 ・すべての領域へのアクセスができる。 ・ブロック数の設定可能。 ・指定転送回数終了で割込みクリア,DMA割込みを発行。 420 第 14 章 DMA コントローラ (DMAC) ■ デマンド転送 図 14.4-3 に , デマンド転送の動作フローチャートを示します。 図 14.4-3 デマンド転送の動作フローチャート DMA停止 DENB=>0 なし リロード許可 DENB=1 起動要求待機 起動要求あり initial アドレス,転送回数,ブロック数ロード 転送元アドレスアクセス アドレス演算 フライバイ時は 1回のアクセス 転送先アドレスアクセス アドレス演算 転送回数-1 アドレス,転送回数,ブロック数 ライトバック DTC=0 割込み クリア DMA転送終了 周辺割込み起動要因選択時のみ 割込みクリア発生 DMA割込み発生 デマンド転送 ・外部端子(DREQ)からの要求(レベル検出)のみ受付け。他の要因での起動禁止。 ・外部領域へのアクセスは必須条件(外部領域へのアクセスが次の起動要因となるため)。 ・ブロック数は,設定に関係なく1固定になる。 ・指定転送回数終了で割込みクリア,DMA割込みを発行。 421 第 14 章 DMA コントローラ (DMAC) データバス 14.5 2 サイクル転送時およびフライバイ転送時のデータの動きを図で示します。 ■ 2 サイクル転送時のデータの動き 図 14.5-1 に , 2 サイクル転送時の 6 種類の転送例を示します。 図 14.5-1 2 サイクル転送の転送例 CPU リードサイクル I-bus D-bus X-bus バスコントローラ データバッファ MB91xxx ライトサイクル I-bus D-bus F-bus RAM DMAC X-bus バスコントローラ データバッファ 外部バス I/F DMAC CPU MB91xxx 外部バス I/F 外部領域=>外部領域 転送 F-bus I/O RAM I/O CPU リードサイクル I-bus D-bus X-bus バスコントローラ データバッファ MB91xxx D-bus F-bus RAM DMAC ライトサイクル I-bus X-bus バスコントローラ データバッファ 外部バス I/F DMAC CPU MB91xxx 外部バス I/F 外部領域=>内部RAM領域 転送 F-bus I/O RAM I/O CPU リードサイクル I-bus D-bus X-bus バスコントローラ データバッファ F-bus RAM MB91xxx DMAC ライトサイクル I-bus D-bus X-bus バスコントローラ データバッファ 外部バス I/F DMAC CPU MB91xxx 外部バス I/F 外部領域=>内蔵I/O領域 転送 F-bus I/O RAM I/O ( 続く ) 422 第 14 章 DMA コントローラ (DMAC) ( 続き ) CPU リードサイクル I-bus X-bus バスコントローラ D-bus MB91xxx X-bus バスコントローラ D-bus F-bus RAM DMAC ライトサイクル I-bus 外部バス I/F DMAC CPU MB91xxx 外部バス I/F 内蔵I/O領域=>内部RAM領域 転送 F-bus I/O RAM I/O CPU リードサイクル I-bus X-bus バスコントローラ D-bus MB91xxx X-bus バスコントローラ D-bus F-bus RAM DMAC ライトサイクル I-bus 外部バス I/F DMAC CPU MB91xxx 外部バス I/F 内部RAM領域=>外部領域 転送 F-bus I/O RAM I/O CPU リードサイクル I-bus X-bus バスコントローラ D-bus F-bus RAM MB91xxx DMAC ライトサイクル I-bus X-bus バスコントローラ D-bus 外部バス I/F DMAC CPU MB91xxx 外部バス I/F 内部RAM領域=>内蔵I/O領域 転送 F-bus I/O RAM I/O 423 第 14 章 DMA コントローラ (DMAC) ■ フライバイ転送時のデータの動き 図 14.5-2 に , フライバイ転送時の 2 種類の転送例を示します。 図 14.5-2 フライバイ転送の転送例 DMAC CPU リードサイクル I-bus X-bus バスコントローラ D-bus memory MB91xxx 外部バス I/F フライバイ転送 (memory to I/O) RDX,DACKでI/Oライトする。 I/O F-bus RAM RDX,CSxXでmemoryリードする。 I/O SDRAMでのfly-by転送は不可。 DMAC CPU リードサイクル I-bus X-bus バスコントローラ D-bus memory MB91xxx 外部バス I/F フライバイ転送 (I/O to memory) WR0X/1X,DACKでI/Oリードする。 I/O I/O F-bus RAM WR0X/1X,CSxXでmemoryライトする。 SDRAMでのfly-by転送は不可。 424 第 14 章 DMA コントローラ (DMAC) 14.6 DMA 外部インタフェース DMA 外部インタフェースにおける動作タイミングチャートを示します。 ■ DMA 外部インタフェースの端子 DMA ch0 ∼ ch2 は , 以下の DMA 専用端子 (DREQ, DACK, DEOP) をもっています。 • DREQ: デマンド転送を行うときの DMA 転送要求入力端子です。 1 入力で転送要求。 • DACK: DMA が外部インタフェースを通して外部領域にアクセスした場合にアクティブ ("L" 出力 ) になります。 • DEOP: DMA 転送がすべて終了する最後のアクセスに同期してアクティブ ("L" 出 力 ) になります。 また , IORD および IOWR 信号は , 次の条件でアクティブになります。 • IORD : フライバイ転送時 , I/O →メモリの方向選択時にアクティブになります。 • IOWR : フライバイ転送時 , メモリ→ I/O の方向選択時にアクティブになります。 425 第 14 章 DMA コントローラ (DMAC) 14.6.1 DMA 外部インタフェースの動作例 ( 簡易波形 ) DMA 外部インタフェースの動作例 ( 簡易波形 ) として以下の 3 例のタイミング チャートを示します。 • 2 サイクル転送 • フライバイ転送 (I/O →メモリ ) • フライバイ転送 ( メモリ→ I/O) ■ 2 サイクル転送 ( 外部→外部転送時 , 転送回数 =2 の場合 ) 図 14.6-1 2 サイクル転送のタイミングチャート A24~A0 #RD1 #WR1 #RD2 #WR2 RD ライト信号は,外部バス インタフェースの設定に よる。 WE,WR0,WR1 DEOP DACK CS1 1回目リード 1回目ライト 2回目リード 2回目ライト ■ フライバイ転送 (I/O →メモリ転送時 , 転送回数 =3 の場合 ) 図 14.6-2 フライバイ転送 (I/O →メモリ ) のタイミングチャート A24~A0 CPU #1 #2 #3 RD WE,WR0,WR1 ライト信号は,外部バス インタフェースの設定に よる。 IORD DEOP DACK CS1 CPUリード 426 fly-by1回目 fly-by2回目 fly-by3回目 第 14 章 DMA コントローラ (DMAC) ■ フライバイ転送 ( メモリ→ I/O 転送時 , 転送回数 =3 の場合 ) 図 14.6-3 フライバイ転送 ( メモリ→ I/O) のタイミングチャート A24~A0 CP #1 #2 #3 RD ライト信号は,外部バス インタフェースの設定に よる。 WE,WR0,WR1 IOWR DEOP DACK CS1 CPUリード fly-by1回目 fly-by2回目 fly-by3回目 427 第 14 章 DMA コントローラ (DMAC) 14.6.2 DREQx 端子の入力タイミング DREQx 端子は , DMA の起動要求信号です。ポートと兼用になっている場合は PFR レジスタで DREQ 入力を許可してください。ここでは , DREQx 端子の入力タイミ ングを示します。 ■ デマンド転送以外のタイミング デマンド転送以外の場合は , DMA の起動要因をエッジ検出に設定してください。立上 り / 立下りタイミングに規定はありませんが , DREQ 信号の保持時間は , 3 クロック以 上必要です。再度転送要求をする場合は , DMA 転送が終了した後に要求入力を入れて ください (DEOP が出力されたあとに要求する ) 。 DEOP 出力前に要求を入れても無視されることがあります。 図 14.6-4 に , デマンド転送以外の場合のタイミングチャートを示します。 図 14.6-4 デマンド転送以外のタイミングチャート DREQxエッジ要求時(2サイクル転送時) MCLK DREQ A24~A0 #RD1 #WR1 #RD2 #WR2 RD ライト信号は, 外部バスインタ フェースの設定 による。 WE,WR0,WR1 DEOP CPU動作 MAD転送 CPU 3サイクル以上 次の要求はDEOP出力後 ■ デマンド転送のタイミング デマンド転送の場合は , DMA の起動要因をレベル検出に設定してください。起動開始 時に規定はありませんが , 停止時は DMA 転送の RD /WR に同期させてください。セン スタイミングは最終外部アクセスの MCLK の立上りになります。 図 14.6-5 に , デマンド転送の場合のタイミングチャートを示します。 428 第 14 章 DMA コントローラ (DMAC) 図 14.6-5 デマンド転送の場合のタイミングチャート DREQxレベル要求時(2サイクル転送時) MCLK DREQ A24~A0 #RD1 #WR1 #RD2 #WR2 RD WE,WR0,WR1 CPU動作 DMA転送 CPU ライト信号は, 外部バスインタ フェースの設定 による。 3回目の転送要求のセンスポイント <注意事項> この場合は , 2 サイクル転送で転送元 / 転送先が外部領域のため , 2 回の DMA 転送で停 止させるときは #RD2 の立下りから #WR2 の最終の MCLK 立上り前までにネゲートし てください。 429 第 14 章 DMA コントローラ (DMAC) 14.6.3 DACK (DEOP) の FR30 互換モード この DACK の FR30 互換モードは , DACK のタイミングを FR30 の DMA と同じタ イミングにするモードです。ここでは , FR30 互換モードにおける DACK (DEOP) 端 子のタイミングチャートを , 以下の転送モード設定例について示します。 • 2 サイクル転送モード • フライバイ転送モード ■ 転送モードの設定 転送モードは , DACK 端子に対応する PFR レジスタで設定してください。 PFR 設定時は対応する DMA チャネルの転送モード (2 サイクル転送 , フライバイ転送 ) と合わせてください。 <注意事項> FR30 互換モードで 2 サイクル転送の設定時 , RD または WE に同期します。WE を使 用する場合は , 外部インタフェース ACR レジスタの TYPE3 ∼ TYPE0 を "0x1x" にし て WE を有効にしてください。 WR0/WR1を有効にしたとき (TYPE3∼TYPE0=0x0x) は, FR30互換モードは使用でき ません。 ● 2 サイクル転送モード 図 14.6-6 に , 2 サイクル転送モードにおけるタイミングチャートを示します。 図 14.6-6 2 サイクル転送モードにおけるタイミングチャート RD UUB/ULB WE DACK(AKxx=111) * チップセレクトと同じタイミング DACK(AKxx=001) * 2サイクル転送時設定禁止 DACK(AKxx=110) * DACK(AKxx=100) * DACK(AKxx=010) * * :AKxx は , DMA チャネルに対応する PFR レジスタの設定値です。 430 第 14 章 DMA コントローラ (DMAC) ● フライバイ転送モード 図 14.6-7 に , フライバイ転送モードにおけるタイミングチャートを示します。 図 14.6-7 フライバイ転送モードにおけるタイミングチャート RD UUB/ULB WE IORD IOWR DACK(AKxx=111) * DACK(AKxx=001) チップセレクトと同じタイミング * DACK(AKxx=110) * フライバイ転送時設定禁止 DACK(AKxx=100) * フライバイ転送時設定禁止 DACK(AKxx=010) * フライバイ転送時設定禁止 memory to I/O I/O to memory memory to I/O I/O to memory * :AKxx は , DMA チャネルに対応する PFR レジスタの設定値です。 <注意事項> DEOP のタイミングは , 各 DACK の設定と連動していますので , DACK と同じタイミ ングとなります。 431 第 14 章 DMA コントローラ (DMAC) 432 第 15 章 ビットサーチモジュール この章では , ビットサーチモジュールの概要 , レジ スタ構成 / 機能およびビットサーチモジュールの動 作について説明しています。 15.1 ビットサーチモジュールの概要 15.2 ビットサーチモジュールのレジスタ 15.3 ビットサーチモジュールの動作 433 第 15 章 ビットサーチモジュール 15.1 ビットサーチモジュールの概要 入力レジスタに書き込まれたデータに対して , 0, 1 または変化点を検索し , 検出した ビット位置を返します。 ■ ビットサーチモジュールのブロックダイヤグラム 図 15.1-1 にビットサーチモジュールのブロックダイヤグラムを示します。 図 15.1-1 ビットサーチモジュールのブロックダイヤグラム D-bus 入力ラッチ アドレス デコーダ 検出モ ー ド 1検出データ化 ビットサーチ回路 検索結果 434 第 15 章 ビットサーチモジュール 15.2 ビットサーチモジュールのレジスタ ビットサーチモジュールのレジスタを示します。 ■ ビットサーチモジュールのレジスタ一覧 図 15.2-1 ビットサーチモジュールのレジスタ一覧 31 0 BSD0 0 検出用データレジスタ アドレス : 000003F4H BSD1 1 検出用データレジスタ アドレス : 000003F8H BSDC 変化点検出用データレジスタ アドレス : 000003FCH BSRR 検出結果レジスタ アドレス : 000003F0H ■ 0 検出用データレジスタ (BSD0) 0 検出用データレジスタ (BSD0) のレジスタ構成は以下のとおりです。 31 0 000003F0H リード / ライト→ W 初期値→ 不定 書き込んだ値に対して , 0 検出を行います。 リセットによる初期値は不定です。 読出し値は不定です。 データ転送には , 32 ビット長のデータ転送命令を使用してください。 8 ビット長 , 16 ビット長のデータ転送命令は , 使わないでください。 ■ 1 検出用データレジスタ (BSD1) 1 検出用データレジスタ (BSD1) のレジスタ構成は以下のとおりです。 31 0 000003F4H リード / ライト→ R/W 初期値→ 不定 データ転送には , 32 ビット長のデータ転送命令を使用してください。 8 ビット長 , 16 ビット長のデータ転送命令は , 使わないでください。 ● 書込み時 書き込んだ値に対して , "1" を検出します。 435 第 15 章 ビットサーチモジュール ● 読出し時 ビットサーチモジュールの内部状態の退避用データが読み出されます。割込みハンド ラ等がビットサーチモジュールを使用する場合に , 元の状態を退避復帰するときに使 用します。 0 検出 , 変化点検出 , データレジスタにデータを書き込んだ場合でも , 1 検出用データレ ジスタのみ操作することで退避復帰できます。 リセットによる初期値は不定です。 ■ 変化点検出用データレジスタ (BSDC) 変化点検出用データレジスタ (BSDC) のレジスタ構成は以下のとおりです。 。 31 0 000003F8H リード / ライト→ W 初期値→ 不定 書き込んだ値に対して , 変化点の検出を行います。 リセットによる初期値は不定です。 読出し値は不定です。 データ転送には , 32 ビット長のデータ転送命令を使用してください。 8 ビット長 , 16 ビット長のデータ転送命令は , 使わないでください。 ■ 検出結果レジスタ (BSRR) 0 検出 , 1 検出または変化点検出の結果が読み出されます。どの検出結果が読み出され るかは , 最後に書き込んだデータレジスタによって決定されます。 検出結果レジスタ (BSRR) のレジスタ構成は以下のとおりです。。 31 000003FCH リード / ライト→ R 初期値→ 不定 436 0 第 15 章 ビットサーチモジュール 15.3 ビットサーチモジュールの動作 ビットサーチモジュールは , 次の 3 つの動作を行います。 • 0 検出 • 1 検出 • 変化点検出 ■ 0 検出 0 検出用データレジスタに書き込まれたデータを MSB から LSB へスキャンし , 最初の "0" を検出した位置を返します。検出結果は , 検出結果レジスタを読み出すことで得ら れます。検出した位置と , 返す数値の関係は , 表 15.3-1 のとおりです。 "0" が存在しないとき , ( すなわち FFFFFFFFH という数値のとき , ) 32 という値をサー チ結果として返します。 【実行例】 書込みデータ 読出し値 (10 進 ) 11111111111111111111000000000000B (FFFFF000H) → 20 11111000010010011110000010101010B (F849E0AAH) → 5 10000000000000101010101010101010B (8002AAAAH) → 1 11111111111111111111111111111111B (FFFFFFFFH) → 32 ■ 1 検出 1 検出用データレジスタに書き込まれたデータを MSB から LSB へスキャンし , 最初の "1" を検出した位置を返します。検出結果は , 検出結果レジスタを読み出すことで得ら れます。検出した位置と返す値との関係は , 表 15.3-1 のとおりです。 "1" が存在しないとき , ( すなわち 00000000H という数値のとき , ) 32 という値をサーチ 結果として返します。 【実行例】 書込みデータ 読出し値 (10 進 ) 00100000000000000000000000000000B (20000000H) → 2 00000001001000110100010101100111B (01234567H) → 7 00000000000000111111111111111111B (0003FFFFH) → 14 00000000000000000000000000000001B (00000001H) → 31 00000000000000000000000000000000B (00000000H) → 32 437 第 15 章 ビットサーチモジュール ■ 変化点検出 変化点検出用データレジスタに書き込まれたデータを , ビット 30 から LSB へスキャン し , MSB の値と比較します。最初に MSB と異なる値を検出した位置を返します。検出 結果は , 検出結果レジスタを読み出すことで得られます。 検出した位置と返す値は , 表 15.3-1 の示すとおりです。変化点が存在しないときは , 32 を返します。変化点検出では , 結果として "0" を返すことはありません。 【実行例】 書込みデータ 読出し値 (10 進 ) 00100000000000000000000000000000B (20000000H) → 2 00000001001000110100010101100111B (01234567H) → 7 00000000000000111111111111111111B (0003FFFFH) → 14 00000000000000000000000000000001B (00000001H) → 31 00000000000000000000000000000000B (00000000H) → 32 11111111111111111111000000000000B (FFFFF000H) → 20 11111000010010011110000010101010B (F849E0AAH) → 5 10000000000000101010101010101010B (8002AAAAH) → 1 11111111111111111111111111111111B (FFFFFFFFH) → 32 表 15.3-1 ビット位置と返す値 (10 進 ) 438 検出した ビット位置 返す値 検出した ビット位置 返す値 検出した ビット位置 返す値 検出した ビット位置 返す値 31 0 23 8 15 16 7 24 30 1 22 9 14 17 6 25 29 2 21 10 13 18 5 26 28 3 20 11 12 19 4 27 27 4 19 12 11 20 3 28 26 5 18 13 10 21 2 29 25 6 17 14 9 22 1 30 24 7 16 15 8 23 0 31 存在しない 32 第 15 章 ビットサーチモジュール ■ 退避・復帰の処理 割込みハンドラ中で , ビットサーチモジュールを使う場合のように , ビットサーチモ ジュールの内部状態を退避・復帰させる必要がある場合は , 以下の手順に従ってくださ い。 1) 検出用データレジスタを読み出し , この内容を保存する ( 退避 ) 2) ビッチサーチモジュールを使用 3) 1) で退避したデータを 1 検出用データレジスタに書き込む ( 復帰 ) 以上の操作により , 次に検出結果レジスタを読み出したときに得られる値は , 1) 以前 に , ビットサーチモジュールに書き込まれた内容に応じたものとなります。 最後に書き込まれたデータレジスタが0検出用または変化点検出用であっても, 上記手 順で正しく元に戻ります。 439 第 15 章 ビットサーチモジュール 440 付録 付録として , I/O マップ , 割込みベクタ , CPU ス テートでの端子状態 , リトルエンディアン領域を利 用するときの注意事項および命令一覧について , 本 文に記載できなかった細かいところや , プログラミ ングするときに参照することがらを記載していま す。 付録 A I/O マップ 付録 B 割込みベクタ 付録 C 各 CPU ステートにおける端子状態 付録 D リトルエンディアン領域を利用する際の注意事項 付録 E 命令一覧 441 付録 付録 A I/O マップ 付表 A-1 にメモリ空間領域と周辺リソースの各レジスタの対応を示します。 ■ I/O マップ [ 表の見方 ] アドレス 000000 H +0 PDR0 [R/W] XXXXXXXX レジスタ ブロック +1 +2 +3 PDR1 [R/W] PDR2 [R/W] PDR3 [R/W] T-unit XXXXXXXX XXXXXXXX XXXXXXXX ポートデータレジスタ 読出し/書込みの属性 リセット後のレジスタ初期値 レジスタ名(1コラムのレジスタが4n番地,2コラムが4n+2番地…) 最左のレジスタ番地(ワードでアクセスした際は,1コラム目の レジスタがデータのMSB側となる。) <注意事項> レジスタのビット値は , 以下のように初期値を表します。 "1": 初期値 "1" "0": 初期値 "0" "X": 初期値 "X" "-": その位置に物理的にレジスタがない 442 付録 A I/O マップ 付表 A-1 I/O マップ (1 / 7) アドレス レジスタ +0 +1 000000H ― ― 000004H ― ― 000008H PDR8 [R/W] --X--XXX PDR9 [R/W] XXXXXXX- PDRG [R/W] -----XXX ――― PDRH [R/W] PDRI [R/W] XXX00XXX ---XXXXX 00000CH 000010H 000018H | 00001CH 000020H | 00003CH +2 000050H TMRLR [W] XXXXXXXX XXXXXXXX 000058H TMRLR [W] XXXXXXXX XXXXXXXX 00005CH ―――― 000060H 000064H 000068H 00006CH 000070H 000074H 000078H 00007CH 000080H 000084H PDRJ [R/W] XXXXXXXX T-unit ポートデータ レジスタ 未使用 ―――― ―――― PDR7 [R/W] -------X PDRB [R/W] XXXXXXXX ―――― 00004CH 000054H ― ―――― 000048H 000044H PDR2 [R/W] XXXXXXXX PDR6 [R/W] XXXXXXXX PDRA [R/W] XXXXXXXX ブロック R-bus ポートデータ レジスタ EIRR [R/W] ENIR [R/W] 00000000 00000000 DICR [R/W] HRCL [R/W,R] -------0 0--11111 TMRLR [W] XXXXXXXX XXXXXXXX 000040H +3 SSR [R/W,R] SIDR/SODR [R,W] 00001-00 XXXXXXXX UTIM [R] (UTIMR [W]) 00000000 00000000 SSR [R/W,R] SIDR/SODR [R,W] 00001-00 XXXXXXXX UTIM [R] (UTIMR [W]) 00000000 00000000 SSR [R/W,R] SIDR/SODR [R,W] 00001-00 XXXXXXXX UTIM [R] (UTIMR [W]) 00000000 00000000 ADCR [R] XXXXXXXX XXXXXXXX ELVR [R/W] 00000000 Ext int ―――― DLYI/I-unit TMR [R] XXXXXXXX XXXXXXXX TMCSR [R/W,R] ----0000 00000000 TMR [R] XXXXXXXX XXXXXXXX TMCSR [R/W,R] ----0000 00000000 TMR [R] XXXXXXXX XXXXXXXX TMCSR [R/W,R] ----0000 00000000 SCR [R/W] SMR [R/W,W] 00000100 00--0-0DRCL [W] UTIMC [R/W] -------0--00001 SCR [R/W] SMR [R/W,W] 00000100 00--0-0DRCL [W] UTIMC [R/W] -------0--00001 SCR [R/W] SMR [R/W,W] 00000100 00--0-0DRCL [W] UTIMC [R/W] -------0--00001 ADCS [R/W] 00000000 00000000 ―――― ―――― ―――― リロードタイマ 0 リロードタイマ 1 リロードタイマ 2 UART0 U-TIMER 0 UART1 U-TIMER 1 UART2 U-TIMER 2 A/D コンバータ 逐次比較 未使用 未使用 443 付録 付表 A-1 I/O マップ (2 / 7) アドレス 000088H 00008CH 000090H 000094H 000098H 00009CH 0000A0H 0000A4H 0000A8H 0000ACH 0000B0H 000200H 000204H 000208H 00020CH 000210H 000214H 000218H 00021CH 000220H 000224H 000228H 00022CH | 00023CH 000240H 000244H | 000274H 000278H 00027CH 000280H | 0002FCH 444 レジスタ +0 +1 +2 +3 ―――― ―――― ―――― IBCR [W,R/W] IBSR [R] ITBA [R/W] 00000000 00000000 ------00 00000000 ITMK [R,R/W] ISBA [R/W] ISMK [R/W] 01111111 00----11 11111111 -0000000 IDAR [R/W] ICCR [W,R/W] IDBL [R/W] − 00000000 0-011111 -------0 ________ ________ ________ ―――― ―――― DMACA0 [R/W] 00000000 0000XXXX XXXXXXXX XXXXXXXX DMACB0 [R/W] 00000000 00000000 XXXXXXXX XXXXXXXX DMACA1 [R/W] 00000000 0000XXXX XXXXXXXX XXXXXXXX DMACB1 [R/W] 00000000 00000000 XXXXXXXX XXXXXXXX DMACA2 [R/W] 00000000 0000XXXX XXXXXXXX XXXXXXXX DMACB2 [R/W] 00000000 00000000 XXXXXXXX XXXXXXXX DMACA3 [R/W] 00000000 0000XXXX XXXXXXXX XXXXXXXX DMACB3 [R/W] 00000000 00000000 XXXXXXXX XXXXXXXX DMACA4 [R/W] 00000000 0000XXXX XXXXXXXX XXXXXXXX DMACB4 [R/W] 00000000 00000000 XXXXXXXX XXXXXXXX ブロック 未使用 未使用 未使用 I2C インタフェース 未使用 未使用 未使用 未使用 未使用 DMAC ―――― ―――― 未使用 DMACR [R/W] 0XX00000 XXXXXXXX XXXXXXXX XXXXXXXX DMAC ―――― 未使用 ―――― ―――― 未使用 未使用 ―――― 未使用 付録 A I/O マップ 付表 A-1 I/O マップ (3 / 7) アドレス レジスタ +0 000300H ―――― 000308H | 0003E0H ―――― 0003E8H | 0003ECH 0003F8H 0003FCH 000400H 000414H 000418H 00041CH 000420H | 00043CH PFRG [R/W] ----0000 ―――― ―――― ―――― ―――― I- キャッシュ 未使用 ICHCR [R/W] 0-000000 I- キャッシュ 未使用 BSD0 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX BSD1 [R/W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX BSDC [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX BSRR [R] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX DDRG [R/W] DDRH [R/W] DDRI [R/W] DDRJ [R/W] -----000 00011000 --000000 00000000 ―――― ―――― ―――― PFRH [R/W] PFRI [R/W] 0000000--00-00- ブロック 未使用 ISIZE [R/W] ------00 ―――― 000404H 000408H 00040CH 000410H +3 ―――― 0003E4H 0003F4H +2 ―――― 000304H 0003F0H +1 ビットサーチ モジュール R-bus ポート方向 レジスタ R-bus ポート機能 レジスタ 未使用 445 付録 付表 A-1 I/O マップ (4 / 7) アドレス 000440H 000444H 000448H 00044CH 000450H 000454H 000458H 00045CH 000460H 000464H 000468H 00046CH レジスタ +0 +1 +2 +3 ICR00 [R/W,R] ---11111 ICR04 [R/W,R] ---11111 ICR08 [R/W,R] ---11111 ICR12 [R/W,R] ---11111 ICR16 [R/W,R] ---11111 ICR20 [R/W,R] ---11111 ICR24 [R/W,R] ---11111 ICR28 [R/W,R] ---11111 ICR32 [R/W,R] ---11111 ICR36 [R/W,R] ---11111 ICR40 [R/W,R] ---11111 ICR44 [R/W,R] ---11111 ICR01 [R/W,R] ---11111 ICR05 [R/W,R] ---11111 ICR09 [R/W,R] ---11111 ICR13 [R/W,R] ---11111 ICR17 [R/W,R] ---11111 ICR21 [R/W,R] ---11111 ICR25 [R/W,R] ---11111 ICR29 [R/W,R] ---11111 ICR33 [R/W,R] ---11111 ICR37 [R/W,R] ---11111 ICR41 [R/W,R] ---11111 ICR45 [R/W,R] ---11111 ICR02 [R/W,R] ---11111 ICR06 [R/W,R] ---11111 ICR10 [R/W,R] ---11111 ICR14 [R/W,R] ---11111 ICR18 [R/W,R] ---11111 ICR22 [R/W,R] ---11111 ICR26 [R/W,R] ---11111 ICR30 [R/W,R] ---11111 ICR34 [R/W,R] ---11111 ICR38 [R/W,R] ---11111 ICR42 [R/W,R] ---11111 ICR46 [R/W,R] ---11111 ICR03 [R/W,R] ---11111 ICR07 [R/W,R] ---11111 ICR11 [R/W,R] ---11111 ICR15 [R/W,R] ---11111 ICR19 [R/W,R] ---11111 ICR23 [R/W,R] ---11111 ICR27 [R/W,R] ---11111 ICR31 [R/W,R] ---11111 ICR35 [R/W,R] ---11111 ICR39 [R/W,R] ---11111 ICR43 [R/W,R] ---11111 ICR47 [R/W,R] ---11111 000470H | 00047CH 000480H 000484H RSRR [R/W] 10000000 (**) CLKR [R/W] 00000000 (*) STCR [R/W] 00110011 (**) WPR [W] XXXXXXXX クロック制御 ユニット DDR7 [R/W] -------0 DDRB [R/W] 00000000 ―――― ―――― PFR6 [R/W] ―――― 11111111 PFR9 [R/W] PFRA [R/W] 0-001101 11111111 PFR7 [R/W] -------1 PFRB1 [R/W] 00000000 000604H ―――― ―――― 000608H DDR8 [R/W] --0--000 DDR9 [R/W] 00000000 00060CH 000610H ―――― PFR8 [R/W] --1--0-PFRB2 [R/W] 00------ 未使用 DDR2 [R/W] 00000000 DDR6 [R/W] 00000000 DDRA [R/W] 00000000 ―――― 446 CTBR [W] XXXXXXXX DIVR1 [R/W] 00000000 (*) ―――― ―――― 00061CH TBCR [R/W] 00XXXX00 (*) DIVR0 [R/W] 00000011 (*) ―――― 000600H 000618H 割込み コントローラ ―――― 000488H 00048CH | 0005FCH 000614H ブロック ―――― T-unit ポート方向 レジスタ T-unit ポート機能 レジスタ 付録 A I/O マップ 付表 A-1 I/O マップ (5 / 7) アドレス レジスタ +0 +1 +2 +3 ブロック 000620H ―――― 000624H ―――― T-unit ポート機能 レジスタ 000628H | 00063FH ―――― 未使用 000640H 000644H 000648H 00064CH 000650H 000654H 000658H 00065CH 000660H 000664H 000668H 00066CH ASR0 [R/W] 00000000 00000000 (*) ASR1 [R/W] XXXXXXXX XXXXXXXX (*) ASR2 [R/W] XXXXXXXX XXXXXXXX (*) ASR3 [R/W] XXXXXXXX XXXXXXXX (*) ASR4 [R/W] XXXXXXXX XXXXXXXX (*) ASR5 [R/W] XXXXXXXX XXXXXXXX (*) ASR6 [R/W] XXXXXXXX XXXXXXXX (*) ASR7 [R/W] XXXXXXXX XXXXXXXX (*) AWR0 [R/W] 011111111 11111111 (*) AWR2 [R/W] XXXXXXXX XXXXXXXX (*) AWR4 [R/W] XXXXXXXX XXXXXXXX (*) AWR6 [R/W] XXXXXXXX XXXXXXXX (*) 000670H 000674H 000678H IOWR0 [R/W] XXXXXXXX 00067CH 000680H CSER [R/W] 000000001 000684H 000684H | 0007F8H 0007FCH 000800H | 000AFCH ACR0 [R/W] 1111XX00 00000000 (*) ACR1 [R/W] XXXXXXXX XXXXXXXX (*) ACR2 [R/W] XXXXXXXX XXXXXXXX (*) ACR3 [R/W] XXXXXXXX XXXXXXXX (*) ACR4 [R/W] XXXXXXXX XXXXXXXX (*) ACR5 [R/W] XXXXXXXX XXXXXXXX (*) ACR6 [R/W] XXXXXXXX XXXXXXXX (*) ACR7 [R/W] XXXXXXXX XXXXXXXX (*) AWR1 [R/W] XXXXXXXX XXXXXXXX (*) AWR3 [R/W] XXXXXXXX XXXXXXXX (*) AWR5 [R/W] XXXXXXXX XXXXXXXX (*) AWR7 [R/W] XXXXXXXX XXXXXXXX (*) ―――― ―――― IOWR1 [R/W] IOWR2 [R/W] XXXXXXXX XXXXXXXX ―――― CHER [R/W] ―――― 11111111 T-unit ―――― TCR [R/W] 00000000 ―――― ―――― ―――― MODR [R/W] XXXXXXXX ―――― 未使用 ―――― 未使用 447 付録 付表 A-1 I/O マップ (6 / 7) アドレス 000B00H 000B04H 000B08H 000B0CH 000B10H 000B14H | 000B1CH 000B20H 000B24H 000B28H 000B2CH 000B30H 000B34H 000B38H 000B3CH 000B40H 000B44H 000B48H 000B4CH 000B50H 000B54H 000B58H 000B5CH 000B60H 000B64H 448 レジスタ +0 +1 +2 ESTS0 [R/W] ESTS1 [R/W] X0000000 XXXXXXXX ECTL0 [R/W] ECTL1 [R/W] 0X000000 00000000 ECNT0 [W] ECNT1 [W] XXXXXXXX XXXXXXXX EWPT [R] 00000000 00000000 EDTR0 [W] XXXXXXXX XXXXXXXX +3 ESTS2 [R] 1XXXXXXX ECTL2 [W] 000X0000 EUSA [W] XXX00000 ブロック ―――― ECTL3 [R/W] 00X00X11 EDTC [W] 0000XXXX ―――― EDTR1 [W] XXXXXXXX XXXXXXXX ―――― EIA0 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EIA1 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EIA2 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EIA3 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EIA4 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EIA5 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EIA6 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EIA7 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EDTA [R/W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EDTM [R/W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EOA0 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EOA1 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EPCR [R/W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EPSR [R/W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EIAM0 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EIAM1 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EOAM0/EODM0 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EOAM1/EODM1 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX DSU 付録 A I/O マップ 付表 A-1 I/O マップ (7 / 7) アドレス 000B68H 000B6CH 000B70H | 000FFCH 001000H 001004H 001008H 00100CH 001010H 001014H 001018H 00101CH 001020H 001024H レジスタ +0 +1 +2 +3 ブロック EOD0 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EOD1 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX DSU ―――― 未使用 DMASA0 [R/W] XXXXXXXX_XXXXXXXX_XXXXXXXX_XXXXXXXX DMADA0 [R/W] XXXXXXXX_XXXXXXXX_XXXXXXXX_XXXXXXXX DMASA1 [R/W] XXXXXXXX_XXXXXXXX_XXXXXXXX_XXXXXXXX DMADA1 [R/W] XXXXXXXX_XXXXXXXX_XXXXXXXX_XXXXXXXX DMASA2 [R/W] XXXXXXXX_XXXXXXXX_XXXXXXXX_XXXXXXXX DMADA2 [R/W] XXXXXXXX_XXXXXXXX_XXXXXXXX_XXXXXXXX DMASA3 [R/W] XXXXXXXX_XXXXXXXX_XXXXXXXX_XXXXXXXX DMADA3 [R/W] XXXXXXXX_XXXXXXXX_XXXXXXXX_XXXXXXXX DMASA4 [R/W] XXXXXXXX_XXXXXXXX_XXXXXXXX_XXXXXXXX DMADA4 [R/W] XXXXXXXX_XXXXXXXX_XXXXXXXX_XXXXXXXX DMAC ( 注意事項 ) • 書込み専用ビットのあるレジスタに対して RMW 系の命令を実行しないでください。 • Reserved または読出し専用のレジスタに対して , とくに断りがないかぎり書込みアクセスをしな いでください。 • Reserved または (-) の領域のデータは不定です。 • RMW 系の命令 (RMW: リードモディファイライト ) AND : Rj, @Ri OR : Rj, @Ri EOR : Rj, @Ri ANDH : Rj, @Ri OR : HRj, @Ri EORH : Rj, @Ri ANDB : Rj, @Ri ORB : Rj, @Ri EORB : Rj, @Ri BANDL : #u4, @Ri BORL : #u4, @Ri BEORL : #u4, @Ri BANDH : #u4, @Ri BORH : #u4, @Ri BEORH : #u4, @Ri 449 付録 付録 B 割込みベクタ 付表 B-1 に割込みベクタテーブルを示します。割込みベクタテーブルには , MB91307 の割込み要因と割込みベクタ / 割込み制御レジスタの割当てが記載されて います。 ■ 割込みベクタ 付表 B-1 割込みベクタ (1 / 3) 450 割込み番号 オフセット TBR デフォルト のアドレス 10 進 16 進 割込み レベル リセット 0 00 − 3FCH 000FFFFCH モードベクタ 1 01 − 3F8H 000FFFF8H 000FFFF4H 割込み要因 システム予約 2 02 − 3F4H システム予約 3 03 − 3F0H 000FFFF0H システム予約 4 04 − 3ECH 000FFFECH システム予約 5 05 − 3E8H 000FFFE8H システム予約 6 06 − 3E4H 000FFFE4H コプロセッサ不在トラップ 7 07 − 3E0H 000FFFE0H コプロセッサエラートラップ 8 08 − 3DCH 000FFFDCH INTE 命令 9 09 − 3D8H 000FFFD8H 命令ブレーク例外 10 0A − 3D4H 000FFFD4H オペランドブレークトラップ 11 0B − 3D0H 000FFFD0H ステップトレーストラップ 12 0C − 3CCH 000FFFCCH NMI 要求 (tool) 13 0D − 3C8H 000FFFC8H 未定義命令例外 14 0E 3C4H 000FFFC4H NMI 要求 15 0F − 15(FH) 固定 3C0H 000FFFC0H 外部割込み 0 16 10 ICR00 3BCH 000FFFBCH 外部割込み 1 17 11 ICR01 3B8H 000FFFB8H 外部割込み 2 18 12 ICR02 3B4H 000FFFB4H 外部割込み 3 19 13 ICR03 3B0H 000FFFB0H 外部割込み 4 20 14 ICR04 3ACH 000FFFACH 外部割込み 5 21 15 ICR05 3A8H 000FFFA8H 外部割込み 6 22 16 ICR06 3A4H 000FFFA4H 外部割込み 7 23 17 ICR07 3A0H 000FFFA0H リロードタイマ 0 24 18 ICR08 39CH 000FFF9CH リロードタイマ 1 25 19 ICR09 398H 000FFF98H リロードタイマ 2 26 1A ICR10 394H 000FFF94H UART0 ( 受信完了 ) 27 1B ICR11 390H 000FFF90H UART1 ( 受信完了 ) 28 1C ICR12 38CH 000FFF8CH UART2 ( 受信完了 ) 29 1D ICR13 388H 000FFF88H UART0 ( 送信完了 ) 30 1E ICR14 384H 000FFF84H 付録 B 割込みベクタ 付表 B-1 割込みベクタ (2 / 3) 割込み番号 10 進 16 進 割込み レベル オフセット TBR デフォルト のアドレス UART1 ( 送信完了 ) 31 1F ICR15 380H 000FFF80H UART2 ( 送信完了 ) 32 20 ICR16 37CH 000FFF7CH DMAC0 ( 終了 , エラー ) 33 21 ICR17 378H 000FFF78H DMAC1 ( 終了 , エラー ) 34 22 ICR18 374H 000FFF74H DMAC2 ( 終了 , エラー ) 35 23 ICR19 370H 000FFF70H DMAC3 ( 終了 , エラー ) 36 24 ICR20 36CH 000FFF6CH DMAC4 ( 終了 , エラー ) 37 25 ICR21 368H 000FFF68H A/D 38 26 ICR22 364H 000FFF64H I2C 39 27 ICR23 360H 000FFF60H システム予約 40 28 ICR24 35CH 000FFF5CH システム予約 41 29 ICR25 358H 000FFF58H システム予約 42 2A ICR26 354H 000FFF54H システム予約 U-TIMER0 43 2B ICR27 350H 000FFF50H 44 2C ICR28 34CH 000FFF4CH U-TIMER1 45 2D ICR29 348H 000FFF48H U-TIMER2 46 2E ICR30 344H 000FFF44H タイムベースタイマオーバフロー 47 2F ICR31 340H 000FFF40H システム予約 48 30 ICR32 33CH 000FFF3CH システム予約 49 31 ICR33 338H 000FFF38H システム予約 50 32 ICR34 334H 000FFF34H システム予約 51 33 ICR35 330H 000FFF30H システム予約 52 34 ICR36 32CH 000FFF2CH システム予約 53 35 ICR37 328H 000FFF28H システム予約 54 36 ICR38 324H 000FFF24H システム予約 55 37 ICR39 320H 000FFF20H 000FFF1CH 割込み要因 システム予約 56 38 ICR40 31CH システム予約 57 39 ICR41 318H 000FFF18H システム予約 58 3A ICR42 314H 000FFF14H システム予約 59 3B ICR43 310H 000FFF10H システム予約 60 3C ICR44 30CH 000FFF0CH システム予約 61 3D ICR45 308H 000FFF08H システム予約 62 3E ICR46 304H 000FFF04H 遅延割込要因ビット 63 3F ICR47 300H 000FFF00H システム予約 (REALOS にて使用 ) 64 40 − 2FCH 000FFEFCH システム予約 (REALOS にて使用 ) 65 41 − 2F8H 000FFEF8H システム予約 66 42 − 2F4H 000FFEF4H システム予約 67 43 − 2F0H 000FFEF0H システム予約 68 44 − 2ECH 000FFEECH システム予約 69 45 − 2E8H 000FFEE8H システム予約 70 46 − 2E4H 000FFEE4H 451 付録 付表 B-1 割込みベクタ (3 / 3) 割込み番号 10 進 16 進 割込み レベル オフセット TBR デフォルト のアドレス システム予約 71 47 − 2E0H 000FFEE0H システム予約 72 48 − 2DCH 000FFEDCH システム予約 73 49 − 2D8H 000FFED8H システム予約 74 4A − 2D4H 000FFED4H システム予約 75 4B − 2D0H 000FFED0H システム予約 76 4C − 2CCH 000FFECCH システム予約 77 4D − 2C8H 000FFEC8H システム予約 78 4E − 2C4H 000FFEC4H システム予約 79 4F − 2C0H 000FFEC0H INT 命令で使用 80 | 255 50 | FF − 2BCH | 000H 000FFEBCH | 000FFC00H 割込み要因 ( 注意事項 ) • ICR は , 割込みコントローラ内に設けられたレジスタで , 割込みの各要求に対する割込みレベル を設定します。ICR は , 割込み要求のそれぞれに対応して用意されています。 • TBR は , EIT 用ベクタテーブルの先頭アドレスを示すレジスタです。 TBR と EIT 要因ごとに決められたオフセット値を加算したアドレスが , ベクタアドレスとなり ます。 • REALOS/FR は , システムコード用に 0x40, 0x41 の割込みを使用します。 参考 : TBR の示すアドレスから 1K バイトの領域が , EIT 用ベクタ領域となっています。 1 ベクタ当たりの大きさは 4 バイトで , ベクタ番号とベクタアドレスの関係は下記のよう に表されます。 Vctadr = TBR + vctofs = TBR + (3FCH - 4 × vct) vctadr : ベクタアドレス vctofs : ベクタオフセット vct 452 : ベクタ番号 付録 C 各 CPU ステートにおける端子状態 付録 C 各 CPU ステートにおける端子状態 付表 C-2,付表 C-3 に各 CPU ステートにおける端子状態を示します。 ■ 端子状態一覧表の語句の意味 端子の状態に対する語句は以下の意味を持ちます。 付表 C-1 端子状態一覧表の用語説明 用 語 説 明 入力可 入力機能が使用可能な状態であることを意味します。 入力 0 固定 端子からすぐの入力ゲートで , 外部入力を遮断します。 内部へは ”0” レベルが伝わります。 出力 Hi-Z 端子駆動用トランジスタを駆動禁止状態にし , 端子をハイイ ンピーダンスにすることを意味します。 出力保持 このモードになる直前に出力していた状態をそのまま出力す ることを意味します。 すなわち , 出力のある内蔵周辺が動作中であれば , その内蔵周 辺にしたがって出力を行い , ポートなどとして出力している 場合には , その出力を保持します。 直前の状態を保持 このモードになる直前に出力していた状態をそのまま出力 , あるいは入力であれば入力可能を意味します。 453 付録 ■ 端子状態一覧表 付表 C-2 外部バス 16 ビットモード時の端子状態 端子名 機能 P20 ∼ P27 P60 ∼ P67 P70 P16 ∼ P23 D24 ∼ D31 A0 ∼ A7 A8 ∼ A15 A16 ∼ A23 A24 P85 WR1/ULB - WR0/UUB - RD P82 BRQ P81 BGRNT P80 RDY - CS0 PA1 ∼ PA7 CS1 ∼ CS7 P90 SYSCLK P91 - P92 MCLK P93 - P94 LBA/AS P95 BAA P96 P97 PB0 PB1 WE DREQ0 DACK0 DEOP0/ DSTP0 DREQ1 DACK1 DEOP1/ DSTP1 IOWR IORD DREQ2 DACK2 DEOP2/ DSTP2 SI2 SO2 SC2 TOT0 TOT1 TOT2 SDA SCL SI0 PB2 PB3 PB4 PB5 PB6 PB7 PG0 PG1 PG2 PH0 PH1 PH2 PH3 PH4 PH5 PH6 PH7 PI0 454 スリープ時 出力保持 or Hi-Z ストップ時 HIZ=0 HIZ=1 バス開放 (BGRNT) アドレス出力保持 同左 P, F ともに直前 状態保持 直前状態保持 同左 ハードウェア スタンバイ時 出力 Hi-Z/ 入力可 同左 P: 直前状態保持 F: アドレス出力 P: 直前状態保持 F: H 出力 イニシャライ ズ時 (INIT) モードベクタ アドレス出力 *2 同左 出力 Hi-Z H 出力 P: 直前状態保持 F: BRQ 入力 P: 直前状態保持 F: H 出力 P: 直前状態保持 F: RDY 入力 直前状態保持 P: 直前状態保持 F: CS 出力 P: 直前状態保持 F: SYSCLK 出力 BRQ 入力 P, F ともに直前 状態保持 L 出力 P: 直前状態保持 F: RDY 入力 同左 H 出力 出力 Hi-Z CLK 出力 *3 出力 Hi-Z/ 入力可 P: 直前状態保持 P: 直前状態保持 F: MCLK 出力 直前状態保持 P: 直前状態保持 F: LBA/AS 出力 P: 直前状態保持 F: BAA 出力 出力 Hi-Z/ 入力可 CLK 出力 *3 P, F ともに直前 状態保持 出力 Hi-Z/ 入力 0 固定 直前状態保持 出力 Hi-Z/ 入力 0 固定 出力 Hi-Z 直前状態保持 出力 Hi-Z 出力 Hi-Z/ 入力可 直前状態保持 直前状態保持 直前状態保持 出力 Hi-Z/ 入力可 備考 付録 C 各 CPU ステートにおける端子状態 付表 C-2 外部バス 16 ビットモード時の端子状態 端子名 機能 PI1 PI2 PI3 PI4 PI5 PJ0 PJ1 PJ2 PJ3 PJ4 PJ5 PJ6 PJ7 SO0 SC0 SI1 SO1 SC1 INT0 INT1 INT2 INT3 INT4/TIN0 INT5/TIN1 INT6/TIN2 INT7/ATG スリープ時 ストップ時 HIZ=0 直前状態保持 HIZ=1 バス開放 (BGRNT) 直前状態保持 出力 Hi-Z/ 入力可 *1 ハードウェア スタンバイ時 備考 出力 Hi-Z/ 入力 0 固定 出力 Hi-Z/ 入力 0 固定 直前状態保持 直前状態 / 入力可 *1 イニシャライ ズ時 (INIT) 出力 Hi-Z/ 入力可 出力 Hi-Z/ 入力可 *1: 入力可状態は , 出力 Hi-Z で入力可能を示します。本端子は , stop からの復帰に使用します。 *2: 電源投入直後の出力は不定です。 *3: INIT 端子に "L" 入力している期間 , SYSCLK 端子または MCLK 端子は L 出力です。 ( 注意事項 ) P は汎用ポート選択時 , F は指定機能選択時です。 455 付録 付表 C-3 外部バス 8 ビットモード時の端子状態 端子名 機能 P20 ∼ P27 P60 ∼ P67 P70 P16 ∼ P23 D24 ∼ D31 A0 ∼ A7 A8 ∼ A15 A16 ∼ A23 A24 P85 WR1/ULB - WR0/UUB スリープ時 直前状態保持 出力保持 or Hi-Z P, F ともに直前 状態保持 直前状態保持 同左 BRQ P81 BGRNT P80 RDY - CS0 PA1 ∼ PA7 CS1 ∼ CS7 P90 SYSCLK P91 - P: 直前状態保持 P92 MCLK P: 直前状態保持 F: MCLK 出力 LBA/AS P95 BAA P96 - P97 WE PB0 PB1 DREQ0 DACK0 DEOP0/ DSTP0 DREQ1 DACK1 DEOP1/ DSTP1 IOWR IORD DREQ2 DACK2 DEOP2/ DSTP2 SI2 SO2 SC2 TOT0 TOT1 TOT2 SDA SCL SI0 PB2 PB3 PB4 PB5 PB6 PB7 PG0 PG1 PG2 PH0 PH1 PH2 PH3 PH4 PH5 PH6 PH7 PI0 456 バス開放 (BGRNT) 直前状態保持 イニシャライ ズ時 (INIT) ハードウェア スタンバイ時 出力 Hi-Z/ 入力可 H 出力 出力 *2 同左 出力 Hi-Z H 出力 RD P94 直前状態保持 同左 P: 直前状態保持 F: アドレス出力 P: 直前状態保持 F: H 出力 P82 MCLKI HIZ=1 アドレス出力保持 同左 - P93 ストップ時 HIZ=0 P: 直前状態保持 F: BRQ 入力 P: 直前状態保持 F: H 出力 P: 直前状態保持 F: RDY 入力 直前状態保持 P: 直前状態保持 F: CS 出力 P: 直前状態保持 F: SYSCLK 出力 直前状態保持 BRQ 入力 P, F ともに直前 状態保持 L 出力 P: 直前状態保持 F: RDY 入力 出力 Hi-Z/ 入力可 同左 H 出力 出力 Hi-Z CLK 出力 *3 出力 Hi-Z/ 入力可 CLK 出力 *3 P: 直前状態保持 F: RDY 入力 P, F ともに直前 状態保持 出力 Hi-Z/ 入力 0 固定 P: 直前状態保持 F: LBA/AS 出力 P: 直前状態保持 F: BAA 出力 出力 Hi-Z/ 入力 0 固定 出力 Hi-Z 直前状態保持 P: 直前状態保持 F: RDY 入力 P: 直前状態保持 F: WE 出力 出力 Hi-Z 出力 Hi-Z/ 入力可 直前状態保持 直前状態保持 直前状態保持 備考 付録 C 各 CPU ステートにおける端子状態 付表 C-3 外部バス 8 ビットモード時の端子状態 端子名 機能 PI1 PI2 PI3 PI4 PI5 PJ0 PJ1 PJ2 PJ3 PJ4 PJ5 PJ6 PJ7 SO0 SC0 SI1 SO1 SC1 INT0 INT1 INT2 INT3 INT4/TIN0 INT5/TIN1 INT6/TIN2 INT7/ATG スリープ時 ストップ時 HIZ=0 直前状態保持 HIZ=1 バス開放 (BGRNT) 直前状態保持 出力 Hi-Z/ 入力可 *1 ハードウェア スタンバイ時 備考 出力 Hi-Z/ 入力 0 固定 出力 Hi-Z/ 入力 0 固定 直前状態保持 直前状態 / 入力可 *1 イニシャライ ズ時 (INIT) 出力 Hi-Z/ 入力可 出力 Hi-Z/ 入力可 *1: 入力端子状態は , 出力 Hi-Z で入力可能を示します。本端子は , stop からの復帰に使用します。 *2: 電源投入直後の出力は不定です。 *3: INIT 端子に "L" 入力している期間 , SYSCLK 端子または MCLK 端子は "L" 出力です。 ( 注意事項 ) P は汎用ポート選択時 , F は指定機能選択時です。 457 付録 付録 D リトルエンディアン領域を利用する際の注意事項 リトルエンディアン領域を利用する際の注意事項を以下の項目ごとに説明します。 本品種では , サポートしていません。 D.1 C コンパイラ (fcc911) D.2 アセンブラ (fasm911) D.3 リンカ (flnk911) D.4 デバッガ (sim911, eml911, mon911) 458 付録 D リトルエンディアン領域を利用する際の注意事項 D.1 C コンパイラ (fcc911) C 言語でプログラミングをする場合 , リトルエンディアン領域に対して次のような操 作を行ったときは , 動作を保証できませんので注意してください。 • 初期値付き変数の配置 • 構造体代入 • 文字列操作関数を使った文字型配列以外の操作 • 文字列操作関数使用時の -K lib オプションの指定 • double 型 , long double 型の利用 • スタックのリトルエンディアン領域への配置 ■ 初期値付き変数の配置 リトルエンディアン領域に , 初期値付きの変数は配置できません。 コンパイラは , リトルエンディアンの初期値を生成する機能を持っていません。リトル エンディアン領域に変数は配置できますが , 初期値を設定することはできません。 プログラムの先頭で , 初期値を設定する処理を行ってください。 [ 例 ] リトルエンディアン領域の変数 little_data に初期値を設定する場合 extern int little_data; void little_init (void){ little_data = 初期値 ; } void main (void){ little_init (); ... } ■ 構造体代入 構造体どうしの代入を行うとき , コンパイラは最適な転送方法を選択してバイト , ハー フワード , ワードごとの転送を行います。このため , 通常の領域に割り当てられた構造 体変数とリトルエンディアンの領域に割り当てられた構造体変数の間で構造体代入を 行うと , 正しい結果が得られません。 構造体のメンバをそれぞれ代入してください。 [ 例 ] リトルエンディアン領域の構造体変数 little_st に構造体代入する場合 struct tag { char c; int i; }normal_st; extern struct tag little_st; #define STRMOVE (DEST, SRC) DEST.c=SRC.c;DEST.i=SRC.i; void main (void) { STRMOVE (little_st, normal_st); } 459 付録 また , 構造体のメンバの配置はコンパイラごとに違うので , ほかのコンパイラでコンパ イルされた構造体とは , メンバの配置が違っていることが考えられます。このようなと きには , 前述の方法においても正しい結果が得られません。 構造体のメンバの配置が一致しないときは,リトルエンディアン領域に構造体変数を配 置しないでください。 ■ 文字列操作関数を使った文字型配列以外の操作 標準ライブラリとして用意されている文字列操作関数はバイト単位での処理を行いま す。このためリトルエンディアン領域に配置された char, unsigned char, signed char 型以 外の型を持つ領域に対し , 文字列操作関数を使った処理を行うと , 正しい結果が得られ ません。 このような処理は行わないでください。 [ 不具合例 ] memcpy でのワードデータの転送 int big = 0X01020304; /* ビッグエンディアン領域 */ extern int little; /* リトルエンディアン領域 */ memcpy (&little,&big,4); /* memcpy による転送 */ 上記の実行結果は次のようになり , ワードデータの転送結果としては誤りになります。 (ビッグエンディアン領域) 01 02 03 04 (リトルエンディアン領域) → memcpy→ 01 02 03 04 (正しい結果) 04 03 02 01 ■ 文字列操作関数使用時の -K lib オプションの指定 -K lib オプションを指定すると , コンパイラはいくつかの文字列操作関数に対し , イン ライン展開を行います。このとき , 最適な処理を選択するためハーフワードまたはワー ドごとの処理に変更される場合があります。 このため , リトルエンディアン領域に対する処理が正しく実行されません。 リトルエンディアン領域に対し文字列操作関数を使った処理を行っているときは , -K lib オプションを指定しないでください。 -K lib オプションを包含する -O4 オプションや , -K speed オプションも同様に指定しな いでください。 460 付録 D リトルエンディアン領域を利用する際の注意事項 ■ double 型 /long double 型の利用 double 型および long double 型へのアクセスは , 上位 1 ワード , 下位 1 ワードをそれぞれ アクセスする方法で行われます。このため , リトルエンディアン領域に配置された double 型 , long double 型変数に対するアクセスは , 正しい結果が得られません。 リトルエンディアン領域に割り当てられた同一型の変数どうしの代入は可能ですが,最 適化の結果 , これらの代入が定数の代入に置き換えられるときもあります。 double型およびlong double型変数をリトルエンディアン領域に配置しないでください。 [ 不具合例 ] double 型データの転送 double big = 1.0; /* ビッグエンディアン領域 extern int little; /* リトルエンディアン領域 */ little = big; /* double 型データの転送 */ */ 上記の実行結果は次のようになり , double 型データの転送結果としては誤りになりま す。 (ビッグエンディアン領域) 3f f0 00 00 00 00 00 (リトルエンディアン領域) 00 (正しい結果) → 00 00 f0 3f 00 00 00 00 00 00 00 00 00 f0 3f 00 ■ スタックのリトルエンディアン領域への配置 リトルエンディアン領域にスタックの一部または全部が配置された場合,動作を保証し ません。 461 付録 D.2 アセンブラ (fasm911) FR ファミリーのアセンブラ言語でプログラミングをする場合 , リトルエンディアン 領域に関して注意して頂きたい項目を以下に示します。 • セクション • データのアクセス ■ セクション リトルエンディアン領域は , 主にリトルエンディアン系 CPU とデータ交換を行うこと を目的としています。そのため , リトルエンディアン領域は初期値のないデータセク ションとして定義してください。 リトルエンディアン領域にコードやスタック,初期値付きデータセクションなどの指定 をした場合 , MB91307 でのアクセス動作は保証できなくなります。 [例] /* 正しいリトルエンディアン領域のセクション定義 */ .SECTION Little_Area, DATA, ALIGN=4 Little_Word: .RES.W 1 Little_Half: .RES.H 1 Little_Byte: .RES.B 1 462 付録 D リトルエンディアン領域を利用する際の注意事項 ■ データのアクセス リトルエンディアン領域へのデータのアクセスを行う場合 , そのデータの値は , エン ディアンを意識せずにコーディングできます。ただし , リトルエンディアン領域のデー タへのアクセスは , 必ずデータサイズと同じサイズで行ってください。 [例] LDI LDI #0X01020304, r0 #Little_Word, r1 LDI LDI #0X0102, r2 #Little_Half, r3 LDI LDI #0X01, r4 #Little_Byte, r5 /* 32 ビットデータは , ST 命令 ( または LD 命令など ) でアクセスします。*/ ST r0, @r1 /* 16 ビットデータは , STH 命令 ( または LDH 命令など ) でアクセスします。*/ STH r2, @r3 /* 8 ビットデータは , STB 命令 ( または LDB 命令など ) でアクセスします。*/ STB r4, @r5 MB91307 シリーズでデータサイズと異なるサイズでアクセスした場合には , その値の 保証はできません。例えば , 連続する 2 つの 16 ビットデータを , 32 ビットアクセス命 令を使って一度にアクセスした場合には , データの値の保証はできません。 463 付録 D.3 リンカ (flnk911) リトルエンディアン領域を使用するプログラムの作成において , リンク時のセクショ ン配置で注意して頂きたい項目を以下に示します。 • セクション種別の制限 • エラーの未検出 ■ セクション種別の制限 リトルエンディアン領域には,初期値なしデータセクションのみ配置することができま す。 リトルエンディアン領域に初期値付きデータセクション , スタックセクションおよび コードセクションを配置した場合 , リンカの内部では , ビッグエンディアンでアドレス 解決などの演算処理を行っていますので , プログラム動作は保証できなくなります。 ■ エラーの未検出 リンカは , リトルエンディアン領域の認識をしていませんので , 上記制限事項に違反し た配置が行われても , エラーメッセージを通知することはありません。リトルエンディ アン領域に配置したセクションの内容を十分にご確認の上 , ご使用ください。 464 付録 D リトルエンディアン領域を利用する際の注意事項 D.4 デバッガ (sim911, eml911, mon911) シミュレータデバッガとエミュレータデバッガ / モニタデバッガでの注意事項につい て説明します。 ■ シミュレータデバッガ リトルエンディアン領域を示すような , メモリ空間指定コマンドはありません。 したがって , メモリ操作コマンドおよびメモリを操作する命令の実行は , ビッグエン ディアンとして扱われます。 ■ エミュレータデバッガ / モニタデバッガ 以下のコマンドでリトルエンディアン領域をアクセスした場合に,正常な値として扱わ れませんので注意してください。 • set memory/show memory/enter/examine/set watch コマンド 浮動小数点 (single/double) のデータを扱った場合 , 指定した値が設定 / 表示ともにで きません。 • search memory コマンド ハーフワード , ワードのデータを検索した場合 , 指定した値で検索が行われません。 • 行 / 逆アセンブル ( ソースウィンドウの逆アセンブル表示を含む ) 正常な命令コードが設定 / 表示ともにできません。 リトルエンディアン領域には , 命令コードを配置しないようにしてください。 • call/show call コマンド スタック領域が , リトルエンディアン領域に置かれた場合 , 正常に動作しません。 リトルエンディアン領域にスタック領域を配置しないようにしてください。 465 付録 付録 E 命令一覧 FR ファミリの命令一覧表を示します。その前に , 命令一覧を理解するために次の事 項について説明します。 • 命令一覧表の読み方 • アドレッシングモードの記号 • 命令フォーマット ■ 命令一覧表の読み方 ニーモニック 型 OP CYCLE NZVC 動作 ADD Rj, Rj A AG 1 CCCC Ri + Rj → Rj *ADD #s5, Rj C A4 1 CCCC Ri + s5 → Ri ↓ 1) , , , , , , , , , , , , ↓ 3) ↓ 4) ↓ 5) ↓ 6) ↓ 7) ↓ 2) 備考 1) 命令名が示されています。 - * 印は , CPU 仕様にはなくアセンブラで命令を拡張または追加した拡張命令です。 2) オペランドに指定可能なアドレッシングモードを記号で示されています。 - 記号の意味は ,「■アドレッシングモードの記号」を参照してください。 3) 命令フォーマットが示されています。 4) 命令コードが 16 進数表示されています。 5) マシンサイクル数を表しています。 - a: メモリアクセスサイクルであり , Ready 機能により延びる可能性があります。 - b: メモリアクセスサイクルであり , Ready 機能により延びる可能性があります。た だし , LD 動作の対象となるレジスタを直後の命令が参照する場合にはインタ ロックがかかり , 実行サイクル数が +1 増加します。 - c: 直後の命令が , R15, SSP または USP に対し , 読出しまたは書込みを行う命令で あるときまたは命令フォーマット A の命令であるとき , インタロックがかかり , 実行サイクル数は +1 増加して 2 となります。 - d: 直後の命令が MDH/MDL を参照する場合インタロックがかかり , 実行サイクル 数は増加して 2 となります。 ただし , DIV1 命令の直後に , 特殊レジスタ (TBR, RP, USP, SSP, MDH, MDL) を ST Rs,@R15- 命令でアクセスすると , 常にインタロックが掛かって , 実行サイ クル数は増加して 2 となります。 - a, b, c, d とも最小は 1 サイクルです。 466 付録 E 命令一覧 6) フラグ変化を表しています。 フラグ変化 C : 変化する - : 変化しない 0 : クリア 1 : セット フラグの意味 N : ネガティブフラグ Z : ゼロフラグ V : オーバフラグ C : キャリフラグ 7) 命令動作が表記されています。 467 付録 ■ アドレッシングモードの記号 付表 E-1 アドレッシングモードの記号説明 記号 Ri レジスタ直接 (R0 ∼ R15, AC, FP, SP) Rj レジスタ直接 (R0 ∼ R15, AC, FP, SP) R13 レジスタ直接 (R13, AC) Ps レジスタ直接 ( プログラムステータスレジスタ ) Rs レジスタ直接 (TBR, RP, SSP, USP, MDH, MDL) CRi レジスタ直接 (CR0 ∼ CR15) CRj レジスタ直接 (CR0 ∼ CR15) #i8 符号なし 8 ビット即値 (-128 ∼ 255) ( 注意事項 ) -128 ∼ -1 は , 128 ∼ 255 として扱います。 #i20 #s5 符号なし 20 ビット即値 (-0X80000 ∼ 0XFFFFF) ( 注意事項 ) -0X7FFFF ∼ -1 は , 0X7FFFF ∼ 0XFFFFF として扱い ます。 符号なし 32 ビット即値 (-0X80000000 ∼ 0XFFFFFFFF) ( 注意事項 ) -0X80000000 ∼ -1 は , 0X80000000 ∼ 0XFFFFFFFF と して扱います。 符号付き 5 ビット即値 (-16 ∼ 15) #s10 符号付き 10 ビット即値 (-512 ∼ 508, 4 の倍数のみ ) #u4 符号なし 4 ビット即値 (0 ∼ 15) #u5 符号なし 5 ビット即値 (0 ∼ 31) #u8 符号なし 8 ビット即値 (0 ∼ 255) #u10 符号なし 10 ビット即値 (0 ∼ 1020, 4 の倍数のみ ) @dir8 符号なし 8 ビット直接アドレス (0 ∼ 0XFF) @dir9 符号なし 9 ビット直接アドレス (0 ∼ 0X1FE, 2 の倍数のみ ) @dir10 符号なし 10 ビット直接アドレス (0 ∼ 0X3FC, 4 の倍数のみ ) label9 符号付き 9 ビット分岐アドレス (-0X100 ∼ 0XFC, 2 の倍数のみ ) label12 符号付き 12 ビット分岐アドレス (-0X800 ∼ 0X7FC, 2 の倍数のみ ) label20 符号付き 20 ビット分岐アドレス (-0X80000 ∼ 0X7FFFF) label32 符号付き 32 ビット分岐アドレス (-0X80000000 ∼ 0X7FFFFFFF) @Ri レジスタ間接 (R0 ∼ R15, AC, FP, SP) @Rj レジスタ間接 (R0 ∼ R15, AC, FP, SP) @(R13,Rj) レジスタ相対間接 (Rj:R0 ∼ R15, AC, FP, SP) #i32 468 意味 @(R14,disp10) レジスタ相対間接 (disp10:-0X200 ∼ 0X1FC 4 の倍数のみ ) @(R14,disp9) レジスタ相対間接 (disp9:-0X100 ∼ 0XFE 2 の倍数のみ ) @(R14,disp8) レジスタ相対間接 (disp8:-0X80 ∼ 0X7F) @(R15,udisp6) レジスタ相対間接 (udisp6:0 ∼ 60 4 の倍数のみ ) @Ri+ ポストインクリメント付きレジスタ間接 (R0 ∼ R15, AC, FP, SP) @R13+ ポストインクリメント付きレジスタ間接 (R13, AC) @SP+ @-SP (reglist) スタックポップ スタックプッシュ レジスタリスト 付録 E 命令一覧 ■ 命令フォーマット 付表 E-2 命令フォーマット 型 命令フォーマット MSB A B LSB 16bit OP Rj Ri 8 4 4 OP i8/o8 Ri 4 8 4 OP C u4/m4 Ri 4 4 8 ADD, ADDN, CMP, LSL, LSR, ASR 命令のみ * C" OP s5/u5 Ri 7 5 4 OP D u8/rel8/dir /reglist 8 E F OP 5 8 OP SUB-OP Ri 8 4 4 rel11 11 469 付録 E.1 FR ファミリの命令一覧表 FR ファミリの命令一覧表を下記の命令順に記載します。 ■ FR ファミリの命令一覧表 付表 E-3 加減算命令 付表 E-4 比較演算命令 付表 E-5 論理演算命令 付表 E-6 ビット操作命令 付表 E-7 乗除算命令 付表 E-8 シフト命令 付表 E-9 即値セット /16 ビット /32 ビット即値転送命令 付表 E-10 メモリロード命令 付表 E-11 メモリストア命令 付表 E-12 レジスタ間転送命令 付表 E-13 通常分岐 ( 遅延なし ) 命令 付表 E-14 遅延分岐命令 付表 E-15 その他の命令 付表 E-16 20 ビット通常分岐マクロ命令 付表 E-17 20 ビット遅延分岐マクロ命令 付表 E-18 32 ビット通常分岐マクロ命令 付表 E-19 32 ビット遅延分岐マクロ命令 付表 E-20 ダイレクトアドレッシング命令 付表 E-21 リソース命令 付表 E-22 コプロセッサ制御命令 470 付録 E 命令一覧 ■ 加減算命令 付表 E-3 加減算命令 *ADD #s5, Ri 型 OP CYCLE NZVC 動作 A A6 1 CCCC Ri + Rj → Ri C’ A4 1 CCCC Ri + s5 → Ri ADD #u4, Ri C A4 1 ADD2 #u4, Ri C A5 1 ADDC Rj, Ri A A7 1 ADDN Rj, Ri A A2 1 ---- Ri + Rj → Ri *ADDN #s5, Ri C’ A0 1 ---- Ri + s5 → Ri ADDN #u4, Ri C A0 1 ---- Ri + extu(i4) → Ri ADDN2 #u4, Ri C A1 1 ---- SUB Rj, Ri A AC 1 SUBC Rj, Ri A AD 1 SUBN Rj, Ri A AE 1 ニーモニック ADD Rj, Ri CCCC Ri + extu(i4) → Ri CCCC Ri + extu(i4) → Ri CCCC Ri + Rj + c → Ri Ri + extu(i4) → Ri CCCC Ri - Rj → Ri CCCC Ri - Rj - c → Ri ---Ri - Rj → Ri 備考 アセンブラでは上位 1 ビットを符号と見る ゼロ拡張 マイナス拡張 キャリ付き加算 アセンブラでは上位 1 ビットを符号と見る ゼロ拡張 マイナス拡張 キャリ付き減算 ■ 比較演算命令 付表 E-4 比較演算命令 ニーモニック CMP Rj, Ri *CMP #s5, Ri 型 OP CYCLE NZVC 動作 A AA 1 CCCC Ri - Rj C’ A8 1 CCCC Ri - s5 CMP #u4, Ri CMP2 #u4, Ri C C A8 A9 1 1 CCCC Ri - extu(i4) CCCC Ri - extu(i4) 備考 アセンブラでは上位 1 ビットを符号と見る ゼロ拡張 マイナス拡張 ■ 論理演算命令 付表 E-5 論理演算命令 型 OP CYCLE NZVC 動作 A 82 1 CC-- Ri &= Rj ワード Rj, @Ri * A 84 1+2a CC-- (Ri) &= Rj ワード ANDH Rj, @Ri * A 85 1+2a CC-- (Ri) &= Rj ハーフワード ANDB Rj, @Ri OR Rj, Ri * A 86 1+2a CC-- (Ri) &= Rj バイト A 92 1 CC-- Ri | = Rj ワード OR Rj, @Ri * A 94 1+2a CC-- (Ri) | = Rj ワード ORH Rj, @Ri * A 95 1+2a CC-- (Ri) | = Rj ハーフワード ORB EOR Rj, @Ri * Rj, Ri A 96 1+2a CC-- (Ri) | = Rj バイト A 9A 1 CC-- Ri ^ = Rj ワード EOR Rj, @Ri * A 9C 1+2a CC-- (Ri) ^ = Rj ワード EORH Rj, @Ri * A 9D 1+2a CC-- (Ri) ^ = Rj ハーフワード EORB Rj, @Ri * A 9E 1+2a CC-- (Ri) ^ = Rj バイト ニーモニック AND Rj, Ri AND 備考 *: これらの命令をアセンブラで記述する場合 , Rj には R15 以外の汎用レジスタを指定してください。 471 付録 ■ ビット操作命令 付表 E-6 ビット操作命令 ニーモニック BANDL #u4, @Ri 型 OP C 80 BANDH #u4, @Ri C *BAND #u8, @Ri BORL #u4, @Ri 81 CYCLE NZVC 1+2a ---- 動作 (Ri)&=(0xF0+u4) 1+2a ---- (Ri)&=((u4<<4)+0x0F) ---- (Ri)&=u8 *1 BORH #u4, @Ri 備考 下位 4 ビットを操作 上位 4 ビットを操作 C 90 1+2a ---- (Ri) | = u4 下位 4 ビットを操作 C 91 1+2a ---- (Ri) | = (u4<<4) 上位 4 ビットを操作 ---- (Ri) | = u8 *2 *BOR #u8, @Ri BEORL #u4, @Ri C 98 1+2a ---- (Ri) ^ = u4 下位 4 ビットを操作 BEORH #u4, @Ri C 99 1+2a ---- (Ri) ^ = (u4<<4) 上位 4 ビットを操作 ---- (Ri) ^ = u8 *BEOR #u8, @Ri *3 BTSTL #u4, @Ri C 88 2+a 0C-- (Ri) & u4 下位 4 ビットテスト BTSTH #u4, @Ri C 89 2+a CC-- (Ri) & (u4<<4) 上位 4 ビットテスト *1: アセンブラは , u8&0x0F でビットが立っていれば , BANDL を生成し , u8&0xF0 でビットが立って いれば , BANDH を生成します。BANDL, BANDH の両方を生成する場合もあります。 *2: アセンブラは , u8&0x0F でビットが立っていれば , BORL を生成し , u8&0xF0 でビットが立って いれば , BORH を生成します。BORL, BORH の両方を生成する場合もあります。 *3: アセンブラは , u8&0x0F でビットが立っていれば , BEORL を生成し , u8&0xF0 でビットが立って いれば , BEORH を生成します。BEORL, BEORH の両方を生成する場合もあります。 ■ 乗除算命令 付表 E-7 乗除算命令 MULH Rj,Ri 型 OP CYCLE NZVC A AF 5 CCC- Ri × Rj A AB 5 CCC- Ri × Rj A BF 3 CC-- Ri × Rj MULUH Rj,Ri A BB 3 CC-- DIV0S Ri E 97-4 1 ---- DIV0U Ri DIV1 Ri DIV2 Ri DIV3 DIV4S E E E E E 1 d 1 1 1 36 ----C-C -C-C -------C-C ニーモニック MUL Rj,Ri MULU Rj,Ri *DIV Ri *1 97-5 97-6 97-7 9F-6 9F-7 動作 備考 → MDH,MDL 32bit × 32bit=64bit → MDH,MDL 符号なし → MDL 16bit × 16bit=32bit Ri × Rj → MDL 符号なし ステップ演算 32bit/32bit=32bit MDL / Ri → MDL , MDL % Ri → MDH *DIVU Ri *2 -C-C MDL / Ri → MDL , MDL % Ri → MDH *1:DIV0S, DIV1 × 32, DIV2, DIV3, DIV4S を生成します。命令コード長は , 72 バイトとなります。 *2:DIV0U, DIV1 × 32 を生成します。命令コード長は , 66 バイトとなります。 472 付録 E 命令一覧 ■ シフト命令 付表 E-8 シフト命令 ニーモニック LSL Rj, Ri 型 A OP CYCLE NZVC B6 1 CC-C Ri << Rj → Ri *LSL #u5, Ri (u5:0 ∼ 31) LSL #u4, Ri C’ B4 1 CC-C Ri << u5 → Ri C B4 1 CC-C Ri << u4 → Ri LSL2 #u4, Ri C B5 1 CC-C Ri <<(u4+16) → Ri LSR Rj, Ri A B2 1 CC-C Ri >> Rj → Ri *LSR #u5, Ri (u5:0 ∼ 31) LSR #u4, Ri C’ B0 1 CC-C Ri >> u5 → Ri C B0 1 CC-C Ri >> u4 → Ri LSR2 #u4, Ri C B1 1 CC-C Ri >>(u4+16) → Ri ASR Rj, Ri A BA 1 CC-C Ri >> Rj → Ri *ASR #u5, Ri (u5:0 ∼ 31) ASR #u4, Ri C’ B8 1 CC-C Ri >> u5 → Ri C B8 1 CC-C Ri >> u4 → Ri ASR2 #u4, Ri C B9 1 CC-C Ri >>(u4+16) → Ri 動作 備考 論理シフト 論理シフト 算術シフト ■ 即値セット /16 ビット /32 ビット即値転送命令 付表 E-9 即値セット /16 ビット /32 ビット即値転送命令 ニーモニック LDI:32 #i32, Ri LDI:20 #i20, Ri LDI:8 #i8, Ri *LDI #{i8 | i20 | i32},Ri * 型 OP CYCLE NZVC 動作 E 9F-8 3 ---i32 → Ri C 9B 2 ---i20 → Ri 上位 12 ビットはゼロ拡張 B 上位 24 ビットはゼロ拡張 C0 1 ---- i8 → Ri 備考 {i8 | i20 | i32} → Ri *: 即値が絶対値の場合は , i8, i20, i32 の選択はアセンブラが自動的に行います。 即値が , 相対値または外部参照シンボルを含む場合は , i32 が選択されます。 473 付録 ■ メモリロード命令 付表 E-10 メモリロード命令 LD ニーモニック @Rj, Ri 型 A OP CYCLE NZVC 動作 04 b ---- (Rj) → Ri LD @(R13,Rj), Ri A 00 b ---- (R13+Rj) → Ri LD @(R14,disp10), Ri B 20 b ---- (R14+disp10) → Ri LD @(R15,udisp6), Ri C 03 b ---- (R15+udisp6) → Ri LD @R15+, Ri E 07-0 b ---- (R15) → Ri, R15+=4 LD @R15+, Rs E 07-8 b ---- (R15) → Rs, R15+=4 CCCC (R15) → PS, R15+=4 ---(Rj) → Ri 備考 Rs: 特殊レジスタ * LD @R15+, PS E 07-9 1+a+b LDUH @Rj, Ri A 05 b LDUH @(R13,Rj), Ri A 01 b ---- (R13+Rj) → Ri ゼロ拡張 LDUH @(R14,disp9), Ri B 40 b ---- (R14+disp9) → Ri ゼロ拡張 LDUB @Rj, Ri A 06 b ---- (Rj) → Ri ゼロ拡張 LDUB @(R13,Rj), Ri A 02 b ---- (R13+Rj) → Ri ゼロ拡張 LDUB @(R14,disp8), Ri B 60 b ---- (R14+disp8) → Ri ゼロ拡張 ゼロ拡張 *: 特殊レジスタ Rs:TBR, RP, USP, SSP, MDH, MDL <注意事項> ハード仕様のo8, o4のフィールドには,次のようにアセンブラが計算して値を設定します。 - disp10/4 → o8, disp9/2 → o8, disp8 → o8, disp10, disp9, disp8 は符号付きです。 - udisp6/4 → o4 udisp6 は , 符号なしです。 474 付録 E 命令一覧 ■ メモリストア命令 付表 E-11 メモリストア命令 ST ニーモニック Ri, @Rj 型 A OP CYCLE NZVC 動作 備考 14 a ---- Ri → (Rj) ワード ST Ri, @(R13,Rj) A 10 a ---- Ri → (R13+Rj) ワード ST Ri, @(R14,disp10) B 30 a ---- Ri → (R14+disp10) ワード ST Ri, @(R15,udisp6) C 13 a ---- Ri → (R15+udisp6) ST Ri, @-R15 E 17-0 a ---- R15-=4, Ri → (R15) ST Rs, @-R15 E 17-8 a ---- R15-=4, Rs → (R15) Rs: 特殊レジスタ * ST PS, @-R15 E 17-9 a ---- R15-=4, PS → (R15) STH Ri, @Rj A 15 a ---- Ri → (Rj) STH Ri, @(R13,Rj) A 11 a ---- Ri → (R13+Rj) ハーフワード STH Ri, @(R14,disp9) B 50 a ---- Ri → (R14+disp9) ハーフワード STB Ri, @Rj A 16 a ---- Ri → (Rj) バイト STB Ri, @(R13,Rj) A 12 a ---- Ri → (R13+Rj) バイト STB Ri, @(R14,disp8) B 70 a ---- Ri → (R14+disp8) バイト ハーフワード *: 特殊レジスタ Rs:TBR, RP, USP, SSP, MDH, MDL <注意事項> ハード仕様のo8, o4のフィールドには,次のようにアセンブラが計算して値を設定します。 - disp10/4 → o8, disp9/2 → o8, disp8 → o8, disp10, disp9, disp8 は符号付きです。 - udisp6/4 → o4 udisp6 は , 符号なしです。 ■ レジスタ間転送命令 付表 E-12 レジスタ間転送命令 ニーモニック MOV Rj, Ri 型 A OP CYCLE NZVC 8B 1 ---- Rj → Ri 汎用レジスタ間転送 MOV Rs, Ri A B7 1 ---- Rs → Ri Rs: 特殊レジスタ * MOV Ri, Rs E B3 1 ---- Ri → Rs Rs: 特殊レジスタ * MOV PS, Ri E 17-1 1 ---- PS → Ri MOV Ri, PS E 07-1 c CCCC Ri → PS 動作 備考 *: 特殊レジスタ Rs:TBR, RP, USP, SSP, MDH, MDL 475 付録 ■ 通常分岐 ( 遅延なし ) 命令 付表 E-13 通常分岐 ( 遅延なし ) 命令 OP CYCLE NZVC ニーモニック JMP @Ri 型 E 動作 97-0 2 ---- Ri → PC CALL label12 F D0 2 ---- PC+2 → RP , CALL @Ri E 97-1 2 ---- PC+2 → RP ,Ri → PC E 97-2 2 ---- RP → PC D 1F 3+3a ---- SSP-=4,PS → (SSP), 備考 PC+2+(label12-PC-2) → PC RET INT #u8 リターン SSP-=4,PC+2 → (SSP), 0 → I フラグ , 0 → S フラグ , (TBR+0x3FC-u8 × 4) → PC INTE E 9F-3 3+3a ---- SSP-=4,PS → (SSP), エミュレータ用 SSP-=4,PC+2 → (SSP), 0 → S フラグ , (TBR+0x3D8) → PC RETI E 97-3 2+2A CCCC (R15) → PC,R15-=4, (R15) → PS,R15-=4 BRA label9 D E0 2 ---- PC+2+(label9-PC-2) → PC BNO label9 D E1 1 ---- BEQ label9 D E2 2/1 ---- 非分岐 if(Z==1) then BNE label9 D E3 2/1 ---- BC label9 D E4 2/1 ---- ↑ s/C==1 BNC label9 D E5 2/1 ---- ↑ s/C==0 BN label9 D E6 2/1 ---- ↑ s/N==1 BP label9 D E7 2/1 ---- ↑ s/N==0 BV label9 D E8 2/1 ---- ↑ s/V==1 BNV label9 D E9 2/1 ---- ↑ s/V==0 BLT label9 D EA 2/1 ---- ↑ s/V xor N==1 BGE label9 D EB 2/1 ---- ↑ s/V xor N==0 BLE label9 D EC 2/1 ---- ↑ s/(V xor N) or Z==1 BGT label9 D ED 2/1 ---- ↑ s/(V xor N) or Z==0 BLS label9 D EE 2/1 ---- ↑ s/C or Z==1 BHI label9 D EF 2/1 ---- ↑ s/C or Z==0 PC+2+(label9-PC-2) → PC ↑ s/Z==0 <注意事項> • CYCLE 数の「2/1」は , 分岐するとき 2, 分岐しないとき 1 であることを示します。 • ハード仕様の rel11, rel8 のフィールドには , 次のようにアセンブラが計算して値を設定 します。 (label12-PC-2)/2 → rel11, (label9-PC-2)/2 → rel8, label12, label9 は符号付きです。 • RETI 命令を実行するときは , S フラグが "0" であることが必要です。 476 付録 E 命令一覧 ■ 遅延分岐命令 付表 E-14 遅延分岐命令 ニーモニック JMP:D @Ri OP 型 E 9F-0 CYCLE NZVC 1 ---- Ri → PC CALL:D label12 F D8 1 ---- PC+4 → RP , CALL:D @Ri E 9F-1 1 ---- PC+4 → RP ,Ri → PC RET:D E 9F-2 1 ---- RP → PC BRA:D label9 D F0 1 ---- PC+2+(label9-PC-2) → PC 非分岐 if(Z==1) then 動作 備考 PC+2+(label12-PC-2) → PC BNO:D label9 D F1 1 ---- BEQ:D label9 D F2 1 ---- リターン PC+2+(label9-PC-2) → PC BNE:D label9 BC:D D F3 1 ---- ↑ s/Z==0 label9 D F4 1 ---- ↑ s/C==1 BNC:D label9 D F5 1 ---- ↑ s/C==0 BN:D label9 D F6 1 ---- ↑ s/N==1 BP:D label9 D F7 1 ---- ↑ s/N==0 BV:D label9 D F8 1 ---- ↑ s/V==1 BNV:D label9 D F9 1 ---- ↑ s/V==0 BLT:D label9 D FA 1 ---- ↑ s/V xor N==1 BGE:D label9 D FB 1 ---- ↑ s/V xor N==0 BLE:D label9 D FC 1 ---- ↑ s/(V xor N) or Z==1 BGT:D label9 D FD 1 ---- ↑ s/(V xor N) or Z==0 BLS:D label9 D FE 1 ---- ↑ s/C or Z==1 BHI:D D FF 1 ---- ↑ s/C or Z==0 label9 <注意事項> • ハード仕様の rel11, rel8 のフィールドには , 次のようにアセンブラが計算して値を設定 します。 (label12-PC-2)/2 → rel11, (label9-PC-2)/2 → rel8, label12, label9 は符号付きです。 • 遅延分岐は必ず次の命令 ( 遅延スロット ) を実行してから分岐します。 • 遅延スロットに置くことができる命令は , すべての 1 サイクル , a, b, c, d サイクル命令 です。 複数サイクル命令は置けません。 477 付録 ■ その他の命令 付表 E-15 その他の命令 OP CYCLE NZVC NOP 型 E 9F-A 1 ---- ANDCCR#u8 D 83 c CCCC CCR and u8 → CCR ORCCR #u8 D 93 c CCCC CCR or u8 → CCR STILM D 87 1 ---- D A3 1 ---- E 97-8 1 ---- 符号拡張 8 → 32bit EXTUB Ri E 97-9 1 ---- ゼロ拡張 8 → 32bit EXTSH E 97-A 1 ---- 符号拡張 16 → 32bit 1 ニーモニック #u8 ADDSP #s10 EXTSB Ri *1 Ri 動作 備考 何も変化しない i8 → ILM R15 += s10 EXTUH Ri E 97-B ---- ゼロ拡張 16 → 32bit LDM0 (reglist) D 8C ---- (R15) → reglist, LDM1 (reglist) D 8D ---- *LDM (reglist) *2 STM0 (reglist) D 8E ---- STM1 (reglist) D 8F ---- ILM 即値セット ADD SP 命令 ロードマルチ R0-R7 R15 インクリメント (R15) → reglist, ロードマルチ R8-R15 R15 インクリメント ---- (R15) → reglist, ロードマルチ R0-R15 R15 インクリメント R15 ディクリメント , ストアマルチ R0-R7 reglist → (R15) R15 ディクリメント , ストアマルチ R8-R15 reglist → (R15) *STM (reglist) *3 ENTER #u10 *4 ---- R15 ディクリメント , ---- R14 → (R15 - 4), ストアマルチ R0-R15 reglist → (R15) D 0F 1+a 関数の入口処理 R15 - 4 → R14, R15 - u10 → R15 LEAVE E 9F-9 b ---- R14 + 4 → R15, 関数の出口処理 (R15 - 4) → R14 XCHB @Rj, Ri *5 A 8A 2a ---- Ri → TEMP セマフォ管理用 (Rj) → Ri バイトデータ TEMP → (Rj) *1: s10 はアセンブラが , s10/4 を計算して s8 にして値を設定します。s10 は符号付きです。 *2: reglist で , R0-R7 のどちらかの指定があれば , LDM0 を生成し , R8-R15 のどちらかの指定があれば , LDM1 を生成します。LDM0, LDM1 の両方を生成する場合もあります。 *3: reglist で , R0-R7 のどちらかの指定があれば , STM0 を生成し , R8-R15 のどちらかの指定があれば , STM1 を 生成します。STM1, STM0 の両方を生成する場合もあります。 *4: u10 はアセンブラが , u10/4 を計算して u8 にして値を設定します。u10 は符号なしです。 *5: この命令をアセンブラで記述する場合 , Ri には R15 以外の汎用レジスタを指定してください。 <注意事項> • LDM0(reglist), LDM1(reglist) の実行サイクル数は , 指定されたレジスタ数が n のとき , a*(n-1)+b+1 サイクルとなります。 • STM0(reglist), STM1(reglist) の実行サイクル数は , 指定されたレジスタ数が n のとき , a*n+1 サイクルとなります。 478 付録 E 命令一覧 ■ 20 ビット通常分岐マクロ命令 付表 E-16 20 ビット通常分岐マクロ命令 ニーモニック *CALL20 label20,Ri *BRA20 *BEQ20 *BNE20 *BC20 *BNC20 *BN20 *BP20 *BV20 *BNV20 *BLT20 *BGE20 *BLE20 *BGT20 *BLS20 *BHI20 label20,Ri label20,Ri label20,Ri label20,Ri label20,Ri label20,Ri label20,Ri label20,Ri label20,Ri label20,Ri label20,Ri label20,Ri label20,Ri label20,Ri label20,Ri 動作 次の命令のアドレス→ RP, label20 → PC label20 → PC if(Z==1) then label20 → PC ↑ s/Z==0 ↑ s/C==1 ↑ s/C==0 ↑ s/N==1 ↑ s/N==0 ↑ s/V==1 ↑ s/V==0 ↑ s/V xor N==1 ↑ s/V xor N==0 ↑ s/(V xor N) or Z==1 ↑ s/(V xor N) or Z==0 ↑ s/C or Z==1 ↑ s/C or Z==0 備考 Ri: テンポラリレジスタ ( 参考 1 参照 ) Ri: テンポラリレジスタ ( 参考 2 参照 ) Ri: テンポラリレジスタ ( 参考 3 参照 ) ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ( 参考 1) CALL20 1. label20-PC-2 が , -0x800 ∼ +0x7fe の場合は , 次のように命令を生成します。 CALL label12 2. label20-PC-2 が , 1. の範囲外の場合および外部参照シンボルを含む場合は , 次のよ うに命令を生成します。 LDI:20 #label20,Ri CALL @Ri ( 参考 2) BRA20 1. label20-PC-2 が , -0x100 ∼ +0xfe の場合は , 次のように命令を生成します。 BRA label9 2. label20-PC-2 が , 1. の範囲外の場合および外部参照シンボルを含む場合は , 次のよ うに命令を生成します。 LDI:20 #label20,Ri JMP @Ri ( 参考 3) Bcc20 1. label20-PC-2 が , -0x100 ∼ +0xfe の場合は , 次のように命令を生成します。 Bcc label9 2. label20-PC-2 が , 1. の範囲外の場合および外部参照シンボルを含む場合は , 次のよ うに命令を生成します。 Bxcc LDI:20 JMP false: false #label20,Ri @Ri xcc は , cc の背反条件 479 付録 ■ 20 ビット遅延分岐マクロ命令 付表 E-17 20 ビット遅延分岐マクロ命令 ニーモニック *CALL20:D label20,Ri *BRA20:D *BEQ20:D *BNE20:D *BC20:D *BNC20:D *BN20:D *BP20:D *BV20:D *BNV20:D *BLT20:D *BGE20:D *BLE20:D *BGT20:D *BLS20:D *BHI20:D label20,Ri label20,Ri label20,Ri label20,Ri label20,Ri label20,Ri label20,Ri label20,Ri label20,Ri label20,Ri label20,Ri label20,Ri label20,Ri label20,Ri label20,Ri 動作 次の命令のアドレス +2 → RP, label20 → PC label20 → PC if(Z==1) then label20 → PC ↑ s/Z==0 ↑ s/C==1 ↑ s/C==0 ↑ s/N==1 ↑ s/N==0 ↑ s/V==1 ↑ s/V==0 ↑ s/V xor N==1 ↑ s/V xor N==0 ↑ s/(V xor N) or Z==1 ↑ s/(V xor N) or Z==0 ↑ s/C or Z==1 ↑ s/C or Z==0 備考 Ri: テンポラリレジスタ ( 参考 1 参照 ) Ri: テンポラリレジスタ ( 参考 2 参照 ) Ri: テンポラリレジスタ ( 参考 3 参照 ) ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ( 参考 1) CALL20:D 1. label20-PC-2 が , -0x800 ∼ +0x7fe の場合は , 次のように命令を生成します。 CALL:D label12 2. label20-PC-2 が , 1. の範囲外の場合および外部参照シンボルを含む場合は , 次のよ うに命令を生成します。 LDI:20 #label20,Ri CALL:D @Ri ( 参考 2) BRA20:D 1. label20-PC-2 が , -0x100 ∼ +0xfe の場合は , 次のように命令を生成します。 BRA:D label9 2. label20-PC-2 が , 1. の範囲外の場合および外部参照シンボルを含む場合は , 次のよ うに命令を生成します。 LDI:20 #label20,Ri JMP:D @Ri ( 参考 3) Bcc20:D 1. label20-PC-2 が , -0x100 ∼ +0xfe の場合は , 次のように命令を生成します。 Bcc:D label9 2. label20-PC-2 が , 1. の範囲外の場合および外部参照シンボルを含む場合は , 次のよ うに命令を生成します。 Bxcc LDI:20 JMP:D false: 480 false #label20,Ri @Ri xcc は , cc の背反条件 付録 E 命令一覧 ■ 32 ビット通常分岐マクロ命令 付表 E-18 32 ビット通常分岐マクロ命令 ニーモニック *CALL32 label32,Ri *BRA32 *BEQ32 *BNE32 *BC32 *BNC32 *BN32 *BP32 *BV32 *BNV32 *BLT32 *BGE32 *BLE32 *BGT32 *BLS32 *BHI32 label32,Ri label32,Ri label32,Ri label32,Ri label32,Ri label32,Ri label32,Ri label32,Ri label32,Ri label32,Ri label32,Ri label32,Ri label32,Ri label32,Ri label32,Ri 動作 次の命令のアドレス→ RP, label32 → PC label32 → PC if(Z==1) then label32 → PC ↑ s/Z==0 ↑ s/C==1 ↑ s/C==0 ↑ s/N==1 ↑ s/N==0 ↑ s/V==1 ↑ s/V==0 ↑ s/V xor N==1 ↑ s/V xor N==0 ↑ s/(V xor N) or Z==1 ↑ s/(V xor N) or Z==0 ↑ s/C or Z==1 ↑ s/C or Z==0 備考 Ri: テンポラリレジスタ ( 参考 1 参照 ) Ri: テンポラリレジスタ ( 参考 2 参照 ) Ri: テンポラリレジスタ ( 参考 3 参照 ) ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ( 参考 1) CALL32 1. label32-PC-2 が , -0x800 ∼ +0x7fe の場合は , 次のように命令を生成します。 CALL label12 2. label32-PC-2 が , 1. の範囲外の場合および外部参照シンボルを含む場合は , 次のよ うに命令を生成します。 LDI:32 #label32,Ri CALL @Ri ( 参考 2) BRA32 1. label32-PC-2 が , -0x100 ∼ +0xfe の場合は , 次のように命令を生成します。 BRA label9 2. label32-PC-2 が , 1. の範囲外の場合および外部参照シンボルを含む場合は , 次のよ うに命令を生成します。 LDI:32 #label32,Ri JMP @Ri ( 参考 3) Bcc32 1. label32-PC-2 が , -0x100 ∼ +0xfe の場合は , 次のように命令を生成します。 Bcc label9 2. label32-PC-2 が , 1. の範囲外の場合および外部参照シンボルを含む場合は , 次のよ うに命令を生成します。 Bxcc LDI:32 JMP false: false #label32,Ri @Ri xcc は , cc の背反条件 481 付録 ■ 32 ビット遅延分岐マクロ命令 付表 E-19 32 ビット遅延分岐マクロ命令 ニーモニック *CALL32:D label32,Ri *BRA32:D *BEQ32:D *BNE32:D *BC32:D *BNC32:D *BN32:D *BP32:D *BV32:D *BNV32:D *BLT32:D *BGE32:D *BLE32:D *BGT32:D *BLS32:D *BHI32:D label32,Ri label32,Ri label32,Ri label32,Ri label32,Ri label32,Ri label32,Ri label32,Ri label32,Ri label32,Ri label32,Ri label32,Ri label32,Ri label32,Ri label32,Ri 動作 次の命令のアドレス +2 → RP, label32 → PC label32 → PC if(Z==1c then label32 → PC ↑ s/Z==0 ↑ s/C==1 ↑ s/C==0 ↑ s/N==1 ↑ s/N==0 ↑ s/V==1 ↑ s/V==0 ↑ s/V xor N==1 ↑ s/V xor N==0 ↑ s/(V xor N) or Z==1 ↑ s/(V xor N) or Z==0 ↑ s/C or Z==1 ↑ s/C or Z==0 備考 Ri: テンポラリレジスタ ( 参考 1 参照 ) Ri: テンポラリレジスタ ( 参考 2 参照 ) Ri: テンポラリレジスタ ( 参考 3 参照 ) ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ( 参考 1) CALL32:D 1. label32-PC-2 が , -0x800 ∼ +0x7fe の場合は , 次のように命令を生成します。 CALL:D label12 2. label32-PC-2 が , 1. の範囲外の場合および外部参照シンボルを含む場合は , 次のよ うに命令を生成します。 LDI:32 #label32,Ri CALL:D @Ri ( 参考 2) BRA32:D 1. label32-PC-2 が , -0x100 ∼ +0xfe の場合は , 次のように命令を生成します。 BRA:D label9 2. label32-PC-2 が , 1. の範囲外の場合および外部参照シンボルを含む場合は , 次のよ うに命令を生成します。 LDI:32 #label32,Ri JMP:D @Ri ( 参考 3) Bcc32:D 1. label32-PC-2 が , -0x100 ∼ +0xfe の場合は , 次のように命令を生成します。 Bcc:D label9 2. label32-PC-2 が , 1. の範囲外の場合および外部参照シンボルを含む場合は , 次のよ うに命令を生成します。 Bxcc LDI:32 JMP:D false: 482 false #label32,Ri @Ri xcc は , cc の背反条件 付録 E 命令一覧 ■ ダイレクトアドレッシング命令 付表 E-20 ダイレクトアドレッシング命令 ニーモニック DMOV @dir10, R13 型 D OP CYCLE NZVC 08 b ---- (dir10) → R13 ワード DMOV R13, @dir10 D 18 a ---- R13 → (dir10) ワード DMOV @dir10, @R13+ D 0C 2a ---- 動作 備考 (dir10) → (R13),R13+=4 ワード DMOV @R13+, @dir10 D 1C 2a ---- (R13) → (dir10),R13+=4 ワード DMOV @dir10, @-R15 D 0B 2a ---- R15-=4,(R15) → (dir10) ワード DMOV @R15+, @dir10 D 1B 2a ---- (R15) → (dir10),R15+=4 ワード DMOVH @dir9, R13 D 09 b ---- (dir9) → R13 ハーフワード DMOVH R13, @dir9 D 19 a ---- R13 → (dir9) ハーフワード DMOVH @dir9, @R13+ D 0D 2a ---- (dir9) → (R13),R13+=2 ハーフワード DMOVH @R13+, @dir9 D 1D 2a ---- (R13) → (dir9),R13+=2 ハーフワード DMOVB @dir8, R13 D 0A b ---- (dir8) → R13 バイト DMOVB R13, @dir8 D 1A a ---- R13 → (dir8) バイト DMOVB @dir8, @R13+ D DMOVB @R13+, @dir8 D 0E 2a ---- (dir8) → (R13),R13++ バイト 1E 2a ---- (R13) → (dir8),R13++ バイト <注意事項> dir8, dir9, dir10 フィールドには , 次のようにアセンブラが計算して値を設定します。 dir8 → dir, dir9/2 → dir, dir10/4 → dir dir8, dir9, dir10 は符号なしです。 ■ リソース命令 付表 E-21 リソース命令 ニーモニック LDRES @Ri+, #u4 型 C OP BC a ---- (Ri) → u4 のリソース Ri+=4 u4: チャネル番号 STRES C BD a ---- u4 のリソース→ (Ri) Ri+=4 u4: チャネル番号 #u4, @Ri+ CYCLE NZVC 動作 備考 <注意事項> MB91307 シリーズでは , チャネル番号を持つリソースを搭載していないので , 使用できま せん。 483 付録 ■ コプロセッサ制御命令 付表 E-22 コプロセッサ制御命令 OP CYCLE NZVC ニーモニック COPOP #u4, #u8, CRj, CRi 型 E 動作 9F-C 2+a ---- 演算指示 COPLD #u4, #u8, Rj, CRi E 9F-D 1+2a ---- Rj → CRi COPST #u4, #u8, CRj, Ri E 9F-E 1+2a ---- CRj → Ri COPSV #u4, #u8, CRj, Ri E 9F-F 1+2a ---- CRj → Ri 備考 エラートラップなし <注意事項> - ・{CRi | CRj}:= CR0 | CR1 | CR2 | CR3 | CR4 | CR5 | CR6 | CR7 | CR8 | CR9 | CR10 | CR11 | CR12 | CR13 | CR14 | CR15 ・u4:= チャネル指定 ・u8:= コマンド指定 - MB91307 シリーズでは , コプロセッサを搭載していないため使用できません。 484 索引 索引 Numerics A 0 検出 0 検出 ......................................................................437 0 検出用データレジスタ (BSD0) ........................435 0 検出用データレジスタ 0 検出用データレジスタ (BSD0) ........................435 10 ビットスレーブアドレスマスクレジスタ 10 ビットスレーブアドレスマスクレジスタ (ITMK) .............................................................357 10 ビットスレーブアドレスレジスタ 10 ビットスレーブアドレスレジスタ (ITBA) ..............................................................356 16 ビット 即値セット /16 ビット /32 ビット即値 転送命令 ..........................................................473 16 ビットタイマレジスタ 16 ビットタイマレジスタ (TMR) の ビット構成 ......................................................248 16 ビットリロードタイマ 16 ビットリロードタイマの概要 ........................242 16 ビットリロードタイマのレジスタ一覧 ........244 16 ビットリロードレジスタ 16 ビットリロードレジスタ (TMRLR) の ビット構成 ......................................................249 1 検出 1 検出 ......................................................................437 1 検出用データレジスタ (BSD1) ........................435 1 検出用データレジスタ 1 検出用データレジスタ (BSD1) ........................435 20 ビット遅延分岐マクロ命令 20 ビット遅延分岐マクロ命令 ............................480 20 ビット通常分岐マクロ命令 20 ビット通常分岐マクロ命令 ............................479 2 サイクル転送 2 サイクル転送 (I/O →外部 ) ...............................224 2 サイクル転送 ( 外部→ I/O) ...............................223 2 サイクル転送 ( 外部→外部転送時 , 転送回数 =2 の場合 ) ......................................426 2 サイクル転送 ( 内部 RAM →外部 I/O,RAM) .......................222 2 サイクル転送時のデータの動き ......................422 32 ビット 即値セット /16 ビット /32 ビット即値 転送命令 ..........................................................473 32 ビット遅延分岐マクロ命令 32 ビット遅延分岐マクロ命令 ............................482 32 ビット通常分岐マクロ命令 32 ビット通常分岐マクロ命令 ............................481 7 ビットスレーブアドレスマスクレジスタ 7 ビットスレーブアドレスマスクレジスタ (ISMK) ..............................................................360 7 ビットスレーブアドレスレジスタ 7 ビットスレーブアドレスレジスタ (ISBA) ...............................................................359 A/D コンバータ A/D コンバータ ........................................................4 A/D コンバータ使用上の注意 ............................310 A/D コンバータの特長 ........................................ 296 A/D コンバータのレジスタ一覧 ........................ 298 A/D 制御ステータスレジスタ A/D 制御ステータスレジスタ (ADCS) ..............299 ACR0 ∼ ACR7 領域構成レジスタ 0 ∼ 7 (ACR0 ∼ ACR7) の構成 .............................................................. 156 AC 特性 DMAC の AC 特性 ................................................418 ADCR データレジスタ (ADCR) ...................................... 305 ADCS A/D 制御ステータスレジスタ (ADCS) ..............299 ASR0 ∼ ASR7 領域選択レジスタ (ASR0 ∼ ASR7) のビット機能 ..................................................155 領域選択レジスタ 0 ∼ 7 (ASR0 ∼ ASR7) の構成 .............................................................. 154 AWR0 ∼ AWR7 領域ウェイトレジスタ (AWR0 ∼ AWR7) の構成 .............................................................. 163 B BSD0 0 検出用データレジスタ (BSD0) ........................ 435 BSD1 1 検出用データレジスタ (BSD1) ........................ 435 BSDC 変化点検出用データレジスタ (BSDC) ..............436 BSRR 検出結果レジスタ (BSRR) ..................................436 C CHER キャッシュイネーブルレジスタ (CHER) の構成 .............................................................. 174 CLKB CLKB クロックを分周する場合の注意点 ......... 128 CPU クロック (CLKB) .........................................106 CLKP 周辺クロック (CLKP) .......................................... 106 CLKR クロックソース制御レジスタ (CLKR) ..............120 CLKS SDRAM クロック (CLKS) ................................... 107 CLKT 外部バスクロック (CLKT) ..................................107 CPU CPU クロック (CLKB) .........................................106 485 索引 FR CPU .......................................................................2 CS CS → RD/WE セットアップ , RD/WE → CS ホールド設定の 動作タイミング ..............................................205 CS → RD/WE セットアップ設定 ........................212 CSER チップセレクトイネーブルレジスタ (CSER) の構成 ..............................................................172 チップセレクトイネーブルレジスタ (CSER) の ビット機能 ......................................................172 CS 遅延設定 CS 遅延設定の動作タイミング ...........................204 CTBR タイムベースカウンタクリアレジスタ (CTBR) .............................................................119 D DACK DACK,DEOP,DREQ の端子機能 .........................393 DACK 端子出力のタイミング ............................416 DDR データ方向レジスタ (DDR) の構成 ...................233 DEOP DACK,DEOP,DREQ の端子機能 .........................393 DEOP 端子出力のタイミング .............................417 DICR DICR の DLYI ビット ...........................................278 遅延割込み制御レジスタ (DICR) .......................277 DIVR 基本クロック分周設定レジスタ 1 (DIVR1) ............................................................126 DIVR0 基本クロック分周設定レジスタ 0 (DIVR0) ............................................................124 DLYI DICR の DLYI ビット ...........................................278 DMA DMAC (DMA Controller) ..........................................3 DMA 外部インタフェースの端子 ......................425 DMA による周辺割込みクリア ..........................409 外部ホールド中の DMA 転送要求 .....................408 スリープ中の DMA 転送 .....................................412 DMAC DMAC (DMA Controller) ..........................................3 DMAC の AC 特性 ................................................418 DMA コントローラ (DMAC) の レジスタ一覧 ..................................................376 DMACA0 ∼ DMACA4 コントロール / ステータスレジスタ A (DMACA0 ∼ DMACA4) ................................378 DMACB0 ∼ DMACB4 コントロール / ステータスレジスタ B (DMACB0 ∼ DMACB4) ................................383 DMACR DMAC 全体制御レジスタ (DMACR) .................391 DMAC 全体制御レジスタ DMAC 全体制御レジスタ (DMACR) .................391 DMAC 用 I/O ウェイトレジスタ DMAC用 I/O ウェイトレジスタ (IOWR0 ∼ IOWR2) の構成 ..............................................................169 486 DMAC 用 I/O ウェイトレジスタ (IOWR0 ∼ IOWR2) のビット機能 ..................................................169 DMAC 割込み制御 DMAC 割込み制御 ............................................... 412 DMADA0 ∼ DMADA4 転送元 / 転送先アドレス設定レジスタ (DMASA0 ∼ DMASA4/ DMADA0 ∼ DMADA4) ................................. 389 DMASA0 ∼ DMASA4 転送元 / 転送先アドレス設定レジスタ (DMASA0 ∼ DMASA4/ DMADA0 ∼ DMADA4) ................................. 389 DMA アクセス DMA アクセス動作 .............................................. 217 DMA コントローラ DMA コントローラ (DMAC) の レジスタ一覧 ..................................................376 DMA 転送 DMA 転送中の外部ホールド要求 ...................... 408 DMA 転送と割込み .............................................. 407 DMA 転送要求 DMA 転送要求と外部ホールド要求の 同時発生 .......................................................... 408 DMA フライバイ転送 DMA フライバイ転送 (I/O →メモリ ) ............... 218 DMA フライバイ転送 (I/O →メモリ ) の 動作タイミング .............................................. 206 DMA フライバイ転送 ( メモリ→ I/O) ............... 220 DMA フライバイ転送 ( メモリ→ I/O) の 動作タイミング .............................................. 207 DMA 抑止 DMA 抑止 .............................................................. 407 double 型 double 型 /long double 型の利用 .......................... 461 DRCL レジスタ DRCL レジスタ ..................................................... 324 DREQ DACK,DEOP,DREQ の端子機能 .........................393 DREQ 端子入力の最小有効パルス幅 ................ 415 デマンド転送要求の停止時における DREQ 端子 入力のネゲートタイミング .......................... 415 同一チャネルで引き続き転送するための DREQ 端子入力のタイミング ...................... 416 DSTP DSTP 端子入力のタイミング ..............................417 E EIRR 外部割込み要因レジスタ (EIRR:External Interrupt Request Register) .............................................. 269 EIT EIT ( 例外 , 割込み , トラップ ) ............................ 74 EIT からの復帰 ....................................................... 74 EIT の動作 ...............................................................86 EIT の割込みレベル ...............................................75 EIT ベクタテーブル ...............................................79 EIT 要因 ................................................................... 74 EIT 要因受理の優先度 ...........................................83 ELVR 外部割込み要求レベル設定レジスタ (ELVR:External LeVel Register) .....................270 索引 ENable Interrupt request Register 外部割込み許可レジスタ (ENIR:ENable Interrupt request Register) .......268 ENIR 外部割込み許可レジスタ (ENIR:ENable Interrupt request Register) .......268 External Interrupt Request Register 外部割込み要因レジスタ (EIRR:External Interrupt Request Register) ..............................................269 External LeVel Register 外部割込み要求レベル設定レジスタ (ELVR:External LeVel Register) .....................270 F FPT-120P-M21 FPT-120P-M21 の外形寸法図 ..................................7 FR FR CPU .......................................................................2 FR ファミリの命令一覧表 ...................................470 H Hold Request Cancel Request ホールドリクエスト取下げ要求 (HRLC:Hold Request Cancel Request) ............291 HRCL ホールドリクエスト取下げ要求レベル設定 レジスタ (HRCL) ............................................286 HRLC ホールドリクエスト取下げ要求 (HRLC:Hold Request Cancel Request) ............291 HST HST 端子入力 ( ハードウェアスタンバイ端子 ) MB91307B のみ ................................................93 I I/O 2 サイクル転送 (I/O →外部 ) ...............................224 2 サイクル転送 ( 外部→ I/O) ...............................223 2 サイクル転送 ( 内部 RAM →外部 I/O,RAM) .......................222 DMAC用 I/O ウェイトレジスタ (IOWR0 ∼ IOWR2) の構成 ..............................................................169 DMAC用 I/O ウェイトレジスタ (IOWR0 ∼ IOWR2) のビット機能 ..................................................169 DMA フライバイ転送 (I/O →メモリ ) ...............218 DMA フライバイ転送 (I/O →メモリ ) の 動作タイミング ..............................................206 DMA フライバイ転送 ( メモリ→ I/O) ...............220 DMA フライバイ転送 ( メモリ→ I/O) の 動作タイミング ..............................................207 I/O ピン ..................................................................151 I/O ポート ..................................................................4 I/O ポートの基本ブロックダイヤグラム ..........230 I/O ポートのモード ..............................................230 I/O マップ ..............................................................442 外部 I/O―外部メモリ間の転送 ..........................418 フライバイ転送 (I/O →メモリ転送時 , 転送回数 =3 の場合 ) ......................................426 フライバイ転送 ( メモリ→ I/O 転送時 , 転送回数 =3 の場合 ) .....................................427 I/O ポート I/O ポート .................................................................. 4 I/O ポートの基本ブロックダイヤグラム ..........230 I/O ポートのモード .............................................. 230 I/O マップ I/O マップ .............................................................. 442 I2C インタフェース I2C インタフェース .................................................. 4 I2C インタフェースの特長 ..................................338 I2C インタフェースのレジスタ一覧 .................. 340 IADR データレジスタ (IADR) .......................................362 IBCR バスコントロールレジスタ (IBCR) ...................345 IBSR バスステータスレジスタ (IBSR) ........................ 342 ICCR クロックコントロールレジスタ (ICCR) ........... 354 ICHCR 命令キャッシュコントロールレジスタ (ICHCR) .............................................................53 ICR 割込み制御レジスタ (ICR) ..................................284 割込み制御レジスタ (ICR) のビット構成 ........... 77 割込み制御レジスタ (ICR) のマッピング ........... 77 IDBL クロックディセーブルレジスタ (IDBL) ........... 363 ILM 割込みレベルマスクレジスタ (ILM) ................... 76 INIT 設定初期化リセット (INIT) ................................... 91 設定初期化リセット (INIT) 解除シーケンス ................................................ 94 設定初期化リセット (INIT) 状態 ........................ 136 INIT 端子入力 INIT 端子入力 ( 設定初期化リセット端子 ) ........ 92 INTE 命令 INTE 命令の動作 ....................................................87 INT 命令 INT 命令の動作 ....................................................... 87 IOWR0 ∼ IOWR2 DMAC 用 I/O ウェイトレジスタ (IOWR0 ∼ IOWR2) の構成 .............................................................. 169 DMAC 用 I/O ウェイトレジスタ (IOWR0 ∼ IOWR2) のビット機能 ..................................................169 ISBA 7 ビットスレーブアドレスレジスタ (ISBA) .............................................................. 359 ISIZE キャッシュサイズレジスタ (ISIZE) のビット構成 ....................................................51 ISMK 7 ビットスレーブアドレスマスクレジスタ (ISMK) .............................................................360 ITBA 10 ビットスレーブアドレスレジスタ (ITBA) .............................................................. 356 ITMK 10 ビットスレーブアドレスマスクレジスタ (ITMK) .............................................................357 487 索引 I フラグ I フラグ ....................................................................75 R MB91306R,MB91307R 電源投入 / 切断時の注意事項 (MB91306R,MB91307R) ...................................34 MB91307B HST 端子入力 ( ハードウェアスタンバイ端子 ) MB91307B のみ ................................................93 ハードウェアスタンバイ解除シーケンス (MB91307B) .......................................................95 MB91307B,MB91V307B 電源投入時のハードウェアスタンバイ (MB91307B,MB91V307B のみ ) ......................34 MB91307 シリーズ MB91307 シリーズ ...................................................5 MDH/MDL 乗除算結果レジスタ (MDH/MDL) ........................61 RAM 2 サイクル転送 ( 内部 RAM →外部 I/O,RAM) .......................222 内蔵 RAM .................................................................. 3 メモリ空間内の内蔵 RAM 領域 ...........................39 RD CS → RD/WE セットアップ , RD/WE → CS ホールド設定の 動作タイミング .............................................. 205 CS → RD/WE セットアップ設定 ........................ 212 REALOS ビットサーチモジュール (REALOS 使用 ) ........... 3 リロードタイマ (REALOS 用 1 チャネルを含む ) ...................... 3 RETI 命令 RETI 命令の動作 ....................................................89 RP リターンポインタ (RP) .......................................... 60 RSRR リセット要因レジスタ / ウォッチドッグタイマ 制御レジスタ (RSRR) .................................... 110 RST 動作初期化リセット (RST) ................................... 91 動作初期化リセット (RST) 解除シーケンス ...... 94 動作初期化リセット (RST) 状態 ........................ 136 発振安定待ちリセット (RST) 状態 .................... 135 RUN RUN 状態 ( 通常動作 ) .........................................134 RUN 状態 発振安定待ち RUN 状態 ...................................... 135 N S NMI NMI .................................................................273, 291 ユーザ割込み /NMI の動作 ....................................86 割込み・NMI に対するレベルマスク ..................76 NMI 制御部 外部割込み /NMI 制御部の ブロックダイヤグラム ..................................266 外部割込み /NMI 制御部のレジスタ一覧 ..........267 SCR シリアルコントロールレジスタ (SCR) ............. 317 SDRAM クロック SDRAM クロック (CLKS) ................................... 107 SIDR シリアルインプットデータレジスタ (SIDR)/ シリアルアウトプットデータレジスタ (SODR) .............................................................320 SMR シリアルモードレジスタ (SMR) ........................ 315 SODR シリアルインプットデータレジスタ (SIDR)/ シリアルアウトプットデータレジスタ (SODR) .............................................................320 SRST ソフトウェアリセット (STCR:SRST ビット書込み ) ...........................92 SSP システムスタックポインタ (SSP) .................. 60, 78 SSR シリアルステータスレジスタ (SSR) .................. 321 START 「START」条件 ......................................................364 STCR スタンバイ制御レジスタ (STCR) .......................113 ソフトウェアリセット (STCR:SRST ビット書込み ) ...........................92 K -K lib オプション 文字列操作関数使用時の -K lib オプション の指定 ..............................................................460 L long double 型 double 型 /long double 型の利用 ...........................461 M P PC プログラムカウンタ (PC) ......................................59 PDR ポートデータレジスタ (PDR) の構成 ................232 PFR ポート機能レジスタ (PFR) の構成 .....................234 PLL PLL 逓倍率 .............................................................102 PLL 動作許可 .........................................................101 PS プログラムステータスレジスタ (PS) ..................62 488 索引 STOP STOP モード使用時の注意 ....................................35 「STOP」条件 .........................................................364 T TBCR タイムベースカウンタ制御レジスタ (TBCR) .............................................................116 TBR テーブルベースレジスタ (TBR) .....................60, 79 TCR 端子 / タイミングコントロールレジスタ (TCR) の 構成 ..................................................................175 端子 / タイミングコントロールレジスタ (TCR) の ビット機能 ......................................................175 TMCSR コントロールステータスレジスタ (TMCSR) の ビット機能 ......................................................245 コントロールステータスレジスタ (TMCSR) の ビット構成 ......................................................245 TMR 16 ビットタイマレジスタ (TMR) の ビット構成 ......................................................248 TMRLR 16 ビットリロードレジスタ (TMRLR) の ビット構成 ......................................................249 W WE CS → RD/WE セットアップ , RD/WE → CS ホールド設定の 動作タイミング .............................................. 205 CS → RD/WE セットアップ設定 ........................ 212 WE+ バイト制御タイプ WE+ バイト制御タイプの動作タイミング ....... 196 WPR ウォッチドッグリセット発生延期レジスタ (WPR) ...............................................................123 U UART UART ..........................................................................3 UART のクロック選択 .........................................325 UART の使用例 .....................................................334 UART の動作モード .............................................325 UART の特長 .........................................................312 UART のレジスタ一覧 .........................................314 USP ユーザスタックポインタ (USP) ............................61 UTIM U-TIMER (UTIM) ..................................................259 UTIMC U-TIMER コントロールレジスタ (UTIMC) ......260 U-TIMER コントロールレジスタ (UTIMC) 使用上の注意事項 ..........................................261 U-TIMER U-TIMER (UTIM) ..................................................259 U-TIMER コントロールレジスタ (UTIMC) ......260 U-TIMER コントロールレジスタ (UTIMC) 使用上の注意事項 ..........................................261 U-TIMER の概要 ...................................................258 U-TIMER のレジスタ一覧 ...................................259 ボーレートと U-TIMER のリロード値の 設定例 ..............................................................336 U-TIMER コントロールレジスタ U-TIMER コントロールレジスタ (UTIMC) ......260 U-TIMER コントロールレジスタ (UTIMC) 使用上の注意事項 ..........................................261 UTIMR リロードレジスタ (UTIMR) ................................259 489 索引 あ アービトレーション アービトレーション .............................................366 アクノリッジ アクノリッジ .........................................................366 アドレスエラー アドレスエラーの発生 .........................................411 アドレスレジスタ アドレスレジスタの機能 .....................................404 アドレスレジスタの指定 .....................................404 アドレスレジスタの特長 .....................................404 アドレッシング アドレッシングモードの記号 .............................468 スレーブアドレッシング .....................................365 ダイレクトアドレッシング命令 .........................483 アンダフロー動作 アンダフロー動作 .................................................250 い 一時停止 一時停止 .................................................................410 イベントカウント 外部イベントカウント動作 .................................252 インターバルタイマ その他のインターバルタイマ .................................4 う ウォッチドッグ ウォッチドッグリセット .......................................93 ウォッチドッグタイマ リセット要因レジスタ / ウォッチドッグタイマ 制御レジスタ (RSRR) ....................................110 ウォッチドッグタイマ制御レジスタ リセット要因レジスタ / ウォッチドッグタイマ 制御レジスタ (RSRR) ....................................110 ウォッチドッグリセット発生延期レジスタ ウォッチドッグリセット発生延期レジスタ (WPR) ...............................................................123 え エミュレータデバッガ エミュレータデバッガ / モニタデバッガ .........465 エラー エラーによる停止 .................................................411 エラーの未検出 .....................................................464 エントリ更新 命令キャッシュのエントリ更新 ...........................55 か 外形寸法図 FPT-120P-M21 の外形寸法図 ..................................7 解除シーケンス 設定初期化リセット (INIT) 解除シーケンス ................................................94 動作初期化リセット (RST) 解除シーケンス .......94 490 ハードウェアスタンバイ解除シーケンス (MB91307B) ....................................................... 95 外部 I/O 2 サイクル転送 ( 内部 RAM →外部 I/O,RAM) .......................222 外部 I/O―外部メモリ間の転送 .......................... 418 外部イベントカウント 外部イベントカウント動作 ................................252 外部インタフェース DMA 外部インタフェースの端子 ...................... 425 外部ウェイト 外部ウェイトあり ................................................211 外部ウェイトなし ................................................210 外部ウェイトサイクルタイミング 外部ウェイトサイクルタイミング .................... 201 外部クロック 外部クロックモード時 ........................................ 104 外部端子転送要求 転送中に外部端子転送要求が 再度入力された場合 ...................................... 417 外部デバイス 外部デバイスとの接続例 ............................185, 189 外部転送要求端子 外部転送要求端子 ................................................397 外部バスアクセス 外部バスアクセス ................................................183 外部バスクロック 外部バスクロック (CLKT) ..................................107 外部ホールド 外部ホールド中の DMA 転送要求 .....................408 外部ホールド要求 DMA 転送中の外部ホールド要求 ...................... 408 DMA 転送要求と外部ホールド要求の 同時発生 .......................................................... 408 外部メモリ 外部 I/O―外部メモリ間の転送 .......................... 418 外部割込み 外部割込み /NMI 制御部の ブロックダイヤグラム ..................................266 外部割込み /NMI 制御部のレジスタ一覧 ......... 267 外部割込み許可レジスタ (ENIR:ENable Interrupt request Register) ....... 268 外部割込みの動作 ................................................271 外部割込みの動作手順 ........................................ 271 外部割込み要因レジスタ (EIRR:External Interrupt Request Register) .............................................. 269 外部割込み要求レベル ........................................ 272 外部割込み要求レベル設定レジスタ (ELVR:External LeVel Register) .....................270 外部割込み許可レジスタ 外部割込み許可レジスタ (ENIR:ENable Interrupt request Register) ....... 268 外部割込み要因レジスタ 外部割込み要因レジスタ (EIRR:External Interrupt Request Register) .............................................. 269 外部割込み要求 外部割込み要求レベル ........................................ 272 外部割込み要求レベル設定レジスタ 外部割込み要求レベル設定レジスタ (ELVR:External LeVel Register) .....................270 概要 概要 ..........................................................................47 索引 概略仕様 概略仕様 ...................................................................48 カウンタ カウンタの動作状態 .............................................254 書込み 書込み→書込み動作 .............................................199 ソフトウェアリセット (STCR:SRST ビット書込み ) ...........................92 同期書込みイネーブル出力の 動作タイミング ..............................................202 読出し→書込み動作タイミング .........................198 各状態遷移要求 各状態遷移要求の優先順位 .................................136 各動作モードにおける命令キャッシュ 各動作モードにおける命令キャッシュの 状態 ....................................................................55 加減算命令 加減算命令 .............................................................471 カスケードモード カスケードモード .................................................264 き 基本クロック分周設定レジスタ 基本クロック分周設定レジスタ 0 (DIVR0) ............................................................124 基本クロック分周設定レジスタ 1 (DIVR1) ............................................................126 基本タイミング 基本タイミング ( アクセスが連続する場合 ) ..........................195 キャッシュイネーブルレジスタ キャッシュイネーブルレジスタ (CHER) の構成 ..............................................................174 キャッシュサイズレジスタ キャッシュサイズレジスタ (ISIZE) のビット構成 ....................................................51 く クロック CLKB クロックを分周する場合の注意点 .........128 CPU クロック (CLKB) ..........................................106 SDRAM クロック (CLKS) ....................................107 UART のクロック選択 .........................................325 外部クロックモード時 .........................................104 基本クロック分周設定レジスタ 0 (DIVR0) ............................................................124 基本クロック分周設定レジスタ 1 (DIVR1) ............................................................126 クロック分周 .........................................................108 周辺クロック (CLKP) ...........................................106 内部クロック動作 .................................................250 入力端子機能の動作 ( 内部クロックモード時 ) ..............................251 クロックコントロールレジスタ クロックコントロールレジスタ (ICCR) ............354 クロック選択 UART のクロック選択 .........................................325 クロックソース制御レジスタ クロックソース制御レジスタ (CLKR) ..............120 クロックディセーブルレジスタ クロックディセーブルレジスタ (IDBL) ........... 363 クロック発生制御 クロック発生制御 ................................................100 クロックモード 外部クロックモード時 ........................................ 104 入力端子機能の動作 ( 内部クロックモード時 ) ............................. 251 け 検出結果レジスタ 検出結果レジスタ (BSRR) ..................................436 原発振入力 電源投入時の原発振入力の処理 .......................... 34 こ 構造体代入 構造体代入 ............................................................ 459 コプロセッサ コプロセッサエラートラップ ..............................89 コプロセッサ不在トラップ ..................................89 コプロセッサ制御命令 コプロセッサ制御命令 ........................................ 484 コントロール / ステータスレジスタ コントロール / ステータスレジスタ A (DMACA0 ∼ DMACA4) ................................378 コントロール / ステータスレジスタ B (DMACB0 ∼ DMACB4) ................................383 コントロールステータスレジスタ コントロールステータスレジスタ (TMCSR) の ビット機能 ......................................................245 コントロールステータスレジスタ (TMCSR) の ビット構成 ......................................................245 さ 最小有効パルス幅 DREQ 端子入力の最小有効パルス幅 ................ 415 し システムスタックポインタ システムスタックポインタ (SSP) .................. 60, 78 自動ウェイトサイクルタイミング 自動ウェイトサイクルタイミング .................... 200 シフト命令 シフト命令 ............................................................ 473 シミュレータデバッガ シミュレータデバッガ ........................................ 465 周辺クロック 周辺クロック (CLKP) .......................................... 106 周辺割込みクリア DMA による周辺割込みクリア .......................... 409 受信データ 受信データの例 ....................................................371 受信動作 受信動作 ................................................................ 327 出力端子 出力端子機能の動作 ............................................ 252 491 索引 主要機能 主要機能 .................................................................374 割込みコントローラの主要機能 .........................280 主要動作 主要動作 .................................................................394 使用上 使用上の注意事項 .........................................228, 255 使用上の注意 A/D コンバータ使用上の注意 .............................310 使用上の注意 ...................................................25, 333 乗除算結果レジスタ 乗除算結果レジスタ (MDH/MDL) ........................61 乗除算命令 乗除算命令 .............................................................472 初期化 INIT 端子入力 ( 設定初期化リセット端子 ) ........92 初期化 .....................................................................329 設定初期化リセット (INIT) ...................................91 設定初期化リセット (INIT) 解除シーケンス ................................................94 設定初期化リセット (INIT) 状態 ........................136 ユーザプログラムの初期化 ...................................40 リセット ( デバイスの初期化 ) .............................90 初期値 初期値付き変数の配置 .........................................459 シリアルアウトプットデータレジス シリアルインプットデータレジスタ (SIDR)/ シリアルアウトプットデータレジスタ (SODR) .............................................................320 シリアルインプットデータレジスタ シリアルインプットデータレジスタ (SIDR)/ シリアルアウトプットデータレジスタ (SODR) .............................................................320 シリアルコントロールレジスタ シリアルコントロールレジスタ (SCR) .............317 シリアルステータスレジスタ シリアルステータスレジスタ (SSR) ..................321 シリアルモードレジスタ シリアルモードレジスタ (SMR) ........................315 自励発振モード 自励発振モード時 .................................................103 す スタートビット検出方法 スタートビット検出方法 .....................................328 スタック スタックのリトルエンディアン領域への 配置 ..................................................................461 割込みスタック .......................................................78 スタンバイ スタンバイからの復帰 .........................................271 スタンバイモード ( ストップ / スリープ ) からの 復帰 ..................................................................292 スタンバイ制御レジスタ スタンバイ制御レジスタ (STCR) .......................113 ステップトレーストラップ ステップトレーストラップの動作 .......................88 ストップ スタンバイモード ( ストップ / スリープ ) からの 復帰 ..................................................................292 ストップ状態 .........................................................134 492 ストップモード ....................................................139 スリープ スタンバイモード ( ストップ / スリープ ) からの 復帰 .................................................................. 292 スリープ状態 ........................................................ 134 スリープ中の DMA 転送 .....................................412 スリープモード ....................................................137 スレーブアドレス スレーブアドレスとデータ転送の例 ................ 370 スレーブアドレス検出 スレーブアドレス検出 ........................................ 364 スレーブアドレスマスク スレーブアドレスマスク .................................... 365 スレーブアドレッシング スレーブアドレッシング .................................... 365 せ 制御信号 データバス幅と制御信号の関係 ........................ 180 制御レジスタ 制御レジスタ ........................................................ 293 制限事項 制限事項 .................................................................. 27 セクション セクション ............................................................ 462 セクション種別の制限 ........................................ 464 接続例 外部デバイスとの接続例 ............................185, 189 切断時 電源投入 / 切断時の注意事項 (MB91306R,MB91307R) ................................... 34 設定初期化リセット 設定初期化リセット (INIT) ................................... 91 設定初期化リセット (INIT) 解除シーケンス ................................................ 94 設定初期化リセット (INIT) 状態 ........................ 136 設定初期化リセット端子 INIT 端子入力 ( 設定初期化リセット端子 ) ........ 92 設定手順 設定手順 .................................................................. 56 セットタイミング 割込み発生およびフラグのセット タイミング ......................................................331 専用レジスタ 専用レジスタ一覧 ..................................................59 そ 送信動作 送信動作 ................................................................ 327 ソースクロック ソースクロック ....................................................100 即値 即値セット /16 ビット /32 ビット即値 転送命令 .......................................................... 473 その他 その他 ....................................................................367 その他のインターバルタイマ ................................4 その他の特長 ............................................................ 4 その他の命令 その他の命令 ........................................................ 478 索引 ソフトウェア要求 ソフトウェア要求 .................................................397 ソフトウェアリセット ソフトウェアリセット (STCR:SRST ビット書込み ) ...........................92 た 退避 退避・復帰の処理 .................................................439 タイマ 16 ビットタイマレジスタ (TMR) の ビット構成 ......................................................248 16 ビットリロードタイマの概要 ........................242 16 ビットリロードタイマのレジスタ一覧 ........244 リロードタイマ (REALOS 用 1 チャネルを含む ) ......................3 タイミング CS 遅延設定の動作タイミング ...........................204 CS → RD/WE セットアップ , RD/WE → CS ホールド設定の 動作タイミング ..............................................205 DACK 端子出力のタイミング ............................416 DEOP 端子出力のタイミング .............................417 DMA フライバイ転送 (I/O →メモリ ) の 動作タイミング ..............................................206 DMA フライバイ転送 ( メモリ→ I/O) の 動作タイミング ..............................................207 DSTP 端子入力のタイミング ..............................417 WE+ バイト制御タイプの動作タイミング .......196 基本タイミング ( アクセスが連続する場合 ) ..........................195 デマンド転送以外のタイミング .........................428 デマンド転送のタイミング .................................428 同一チャネルで引き続き転送するための DREQ 端子入力のタイミング ......................416 同期書込みイネーブル出力の 動作タイミング ..............................................202 読出し→書込み動作タイミング .........................198 タイムベースカウンタ タイムベースカウンタ .........................................130 タイムベースカウンタクリアレジスタ タイムベースカウンタクリアレジスタ (CTBR) .............................................................119 タイムベースカウンタ制御レジスタ タイムベースカウンタ制御レジスタ (TBCR) .............................................................116 タイムベースタイマ タイムベースタイマ .............................................131 ダイレクトアドレッシング命令 ダイレクトアドレッシング命令 .........................483 端子 / タイミングコントロールレジスタ 端子 / タイミングコントロールレジスタ (TCR) の 構成 ..................................................................175 端子 / タイミングコントロールレジスタ (TCR) の ビット機能 ......................................................175 端子機能 DACK,DEOP,DREQ の端子機能 .........................393 端子機能説明 端子機能説明 ...........................................................10 端子状態一覧表 端子状態一覧表 .....................................................454 端子状態一覧表の語句の意味 ............................453 端子処理 端子処理 .................................................................. 24 端子配列図 端子配列図 ................................................................ 8 単発変換モード 単発変換モード ....................................................306 ち 遅延スロット 遅延スロット付きの分岐命令 ..............................70 遅延スロット付き分岐命令の制限事項 ..............72 遅延スロット付き分岐命令の動作 ...................... 71 遅延スロットなしの分岐命令 ..............................70 遅延スロットなし分岐命令の動作 ...................... 73 遅延スロットの注意事項 ...................................... 89 遅延なし 通常分岐 ( 遅延なし ) 命令 ..................................476 遅延分岐 20 ビット遅延分岐マクロ命令 ........................... 480 32 ビット遅延分岐マクロ命令 ........................... 482 遅延分岐命令 ........................................................ 477 遅延割込み 遅延割込み制御レジスタ (DICR) .......................277 遅延割込みモジュールの ブロックダイヤグラム ..................................276 遅延割込みモジュールのレジスタ .................... 277 遅延割込み制御レジスタ 遅延割込み制御レジスタ (DICR) .......................277 チップセレクト チップセレクト領域の設定例 ............................178 チップセレクトイネーブルレジスタ チップセレクトイネーブルレジスタ (CSER) の構成 .............................................................. 172 チップセレクトイネーブルレジスタ (CSER) の ビット機能 ......................................................172 チャネル チャネル間優先順位 ............................................ 413 チャネルグループ チャネルグループ ................................................414 注意 A/D コンバータ使用上の注意 ............................310 CLKB クロックを分周する場合の注意点 ......... 128 STOP モード使用時の注意 ....................................35 U-TIMER コントロールレジスタ (UTIMC) 使用上の注意事項 .......................................... 261 使用上の注意 ..................................................25, 333 使用上の注意事項 ........................................228, 255 遅延スロットの注意事項 ...................................... 89 デバッガ関連の注意事項 ...................................... 31 電源投入 / 切断時の注意事項 (MB91306R,MB91307R) ................................... 34 レジスタ設定時の注意 ........................................ 377 つ 通常動作 RUN 状態 ( 通常動作 ) .........................................134 通常バス 通常バスインタフェース .................................... 194 493 索引 通常分岐 20 ビット通常分岐マクロ命令 ............................479 32 ビット通常分岐マクロ命令 ............................481 通常分岐 ( 遅延なし ) 命令 ..................................476 通常リセット 通常リセット動作 ...................................................98 通信開始 通信開始 .................................................................330 通信終了 通信終了 .................................................................330 て 停止 エラーによる停止 .................................................411 動作終了 / 停止 ......................................................410 停止変換モード 停止変換モード .....................................................307 低消費電力モード 低消費電力モード .........................................133, 137 データ データのアクセス .................................................463 データアクセス データアクセス .......................................................68 データ長 データ長 ( データ幅 ) ...........................................405 データ転送 スレーブアドレスとデータ転送の例 .................370 データバス幅 データバス幅 .................................................182, 188 データバス幅と制御信号の関係 .........................180 データ幅 データ長 ( データ幅 ) ...........................................405 データフォーマット データフォーマット .....................................181, 187 データ方向レジスタ データ方向レジスタ (DDR) の構成 ...................233 データレジスタ 0 検出用データレジスタ (BSD0) ........................435 1 検出用データレジスタ (BSD1) ........................435 データレジスタ (ADCR) ......................................305 データレジスタ (IADR) .......................................362 変化点検出用データレジスタ (BSDC) ..............436 ポートデータレジスタ (PDR) の構成 ................232 テーブルベースレジスタ テーブルベースレジスタ (TBR) .....................60, 79 デバイス 外部デバイスとの接続例 .............................185, 189 デバイス状態 .........................................................133 リセット ( デバイスの初期化 ) .............................90 デバッガ デバッガ関連の注意事項 .......................................31 デマンド デマンド転送要求の停止時における DREQ 端子 入力のネゲートタイミング ..........................415 デマンド転送 デマンド転送 .........................................................421 デマンド転送 2 サイクル転送 .............................399 デマンド転送以外のタイミング .........................428 デマンド転送のタイミング .................................428 494 電源投入 電源投入 / 切断時の注意事項 (MB91306R,MB91307R) ................................... 34 電源投入時の原発振入力の処理 .......................... 34 電源投入時の処理 ..................................................34 電源投入時のハードウェアスタンバイ (MB91307B,MB91V307B のみ ) ...................... 34 転送 転送中に外部端子転送要求が 再度入力された場合 ...................................... 417 転送アドレス 転送アドレス ........................................................ 395 転送回数 転送回数制御 ........................................................ 406 転送回数と転送終了 ............................................ 396 転送シーケンス 転送シーケンスの選択 ........................................ 398 転送終了 転送回数と転送終了 ............................................ 396 転送タイプ 転送タイプ ............................................................ 394 転送データフォーマット 転送データフォーマット ............................327, 329 転送モード 転送モード ............................................................ 394 転送モードの設定 ................................................430 転送元 / 転送先アドレス設定レジスタ 転送元 / 転送先アドレス設定レジスタ (DMASA0 ∼ DMASA4/ DMADA0 ∼ DMADA4) ................................. 389 転送要求 転送要求の受付けと転送 .................................... 409 ブロック転送中にほかの転送要求が 発生した場合 ..................................................417 と 同一チャネル 同一チャネルで引き続き転送するための DREQ 端子入力のタイミング ...................... 416 同期書込みイネーブル 同期書込みイネーブル出力の 動作タイミング .............................................. 202 同期リセット 同期リセット動作 ..................................................98 動作開始 動作開始 ................................................................ 409 動作終了 動作終了 / 停止 ..................................................... 410 動作初期化リセット 動作初期化リセット (RST) ................................... 91 動作初期化リセット (RST) 解除シーケンス ...... 94 動作初期化リセット (RST) 状態 ........................ 136 動作モード 動作モード ............................................................ 143 同時発生 DMA 転送要求と外部ホールド要求の 同時発生 .......................................................... 408 特長 A/D コンバータの特長 ........................................ 296 I2C インタフェースの特長 ..................................338 UART の特長 .........................................................312 索引 アドレスレジスタの特長 .....................................404 その他の特長 .............................................................4 特長 ...................................................................42, 148 トラップ EIT ( 例外 , 割込み , トラップ ) .............................74 コプロセッサエラートラップ ...............................89 コプロセッサ不在トラップ ...................................89 な 内蔵 DC-DC レギュレータ 内蔵 DC-DC レギュレータ ....................................34 内蔵 RAM 内蔵 RAM ...................................................................3 メモリ空間内の内蔵 RAM 領域 ...........................39 内蔵周辺要求 内蔵周辺要求 .........................................................397 内部 RAM 2 サイクル転送 ( 内部 RAM →外部 I/O,RAM) .......................222 内部アーキテクチャ 内部アーキテクチャ ...............................................43 内部クロック 内部クロック動作 .................................................250 入力端子機能の動作 ( 内部クロックモード時 ) ..............................251 に 入出力回路形式 入出力回路形式 .......................................................19 入力端子 入力端子機能の動作 ( 内部クロックモード時 ) ..............................251 ね ネゲートタイミング デマンド転送要求の停止時における DREQ 端子 入力のネゲートタイミング ..........................415 は バーストアクセス バーストアクセスの動作 .....................................208 バースト転送 バースト転送 .........................................................420 ハードウェア ハードウェア構成 .........................................293, 374 割込みコントローラのハードウェア構成 .........280 ハードウェアスタンバイ HST 端子入力 ( ハードウェアスタンバイ端子 ) MB91307B のみ ................................................93 電源投入時のハードウェアスタンバイ (MB91307B,MB91V307B のみ ) ......................34 ハードウェアスタンバイ解除シーケンス (MB91307B) .......................................................95 ハードウェアスタンバイ状態 .............................135 ハードウェアスタンバイモード ハードウェアスタンバイモード .........................142 ハーフワードアクセス ハーフワードアクセス ........................................ 191 バイトアクセス バイトアクセス ....................................................192 バイトオーダリング バイトオーダリング .............................................. 67 バス バス権開放 ............................................................ 225 バスインタフェース 通常バスインタフェース .................................... 194 バスインタフェース ................................................ 2 バスエラー バスエラー ............................................................ 366 クロック 外部バスクロック (CLKT) ..................................107 バスコントロールレジスタ バスコントロールレジスタ (IBCR) ...................345 バスステータスレジスタ バスステータスレジスタ (IBSR) ........................ 342 バスモード バスモード ............................................................ 143 発振安定待ち 発振安定待ち RUN 状態 ...................................... 135 発振安定待ち時間の選択 ...................................... 97 発振安定待ち発生要因 .......................................... 96 発振安定待ちリセット (RST) 状態 .................... 135 汎用レジスタ 汎用レジスタ .......................................................... 66 ひ 比較演算命令 比較演算命令 ........................................................ 471 ビッグエンディアン リトルエンディアンとビッグエンディアンの 相違点 .............................................................. 186 ビットオーダリング ビットオーダリング .............................................. 67 ビットサーチモジュール ビットサーチモジュール (REALOS 使用 ) ........... 3 ビットサーチモジュールの ブロックダイヤグラム ..................................434 ビットサーチモジュールのレジスタ一覧 ........435 ビット操作命令 ビット操作命令 ....................................................472 ふ 復帰 EIT からの復帰 ....................................................... 74 スタンバイからの復帰 ........................................ 271 スタンバイモード ( ストップ / スリープ ) からの 復帰 .................................................................. 292 退避・復帰の処理 ................................................439 フライバイ転送 フライバイ転送 (I/O →メモリ転送時 , 転送回数 =3 の場合 ) .....................................426 フライバイ転送 ( メモリ→ I/O 転送時 , 転送回数 =3 の場合 ) .....................................427 フライバイ転送時 フライバイ転送時のデータの動き .................... 424 495 索引 フラグ 割込み発生およびフラグのセット タイミング ......................................................331 プリフェッチ プリフェッチ動作 .................................................213 プログラムアクセス プログラムアクセス ...............................................68 プログラムカウンタ プログラムカウンタ (PC) ......................................59 プログラムステータスレジスタ プログラムステータスレジスタ (PS) ..................62 ブロックサイズ ブロックサイズ .....................................................402 ブロックダイヤグラム I/O ポートの基本ブロックダイヤグラム ..........230 外部割込み /NMI 制御部の ブロックダイヤグラム ..................................266 遅延割込みモジュールの ブロックダイヤグラム ..................................276 ビットサーチモジュールの ブロックダイヤグラム ..................................434 ブロックダイヤグラム ..............6, 109, 150, 243, 258, 297, 313, 338, 375 ブロック転送 ブロック転送 .........................................................419 ブロック転送中にほかの転送要求が 発生した場合 ..................................................417 分岐命令 遅延スロット付きの分岐命令 ...............................70 遅延スロット付き分岐命令の制限事項 ...............72 遅延スロット付き分岐命令の動作 .......................71 遅延スロットなしの分岐命令 ...............................70 遅延スロットなし分岐命令の動作 .......................73 遅延分岐命令 .........................................................477 へ ベクタテーブル EIT ベクタテーブル ...............................................79 変化点検出 変化点検出 .............................................................438 変化点検出用データレジスタ (BSDC) ..............436 変化点検出用データレジスタ 変化点検出用データレジスタ (BSDC) ..............436 変換データ保護機能 変換データ保護機能 .............................................308 ほ ポート機能レジスタ ポート機能レジスタ (PFR) の構成 .....................234 ポートデータレジスタ ポートデータレジスタ (PDR) の構成 ................232 ホールド CS → RD/WE セットアップ , RD/WE → CS ホールド設定の 動作タイミング ..............................................205 ホールドリクエスト取下げ要求 ホールドリクエスト取下げ要求 (HRLC:Hold Request Cancel Request) ............291 496 ホールドリクエスト取下げ要求レベル設定レジスタ ホールドリクエスト取下げ要求レベル設定 レジスタ (HRCL) ............................................ 286 ボーレート ボーレートと U-TIMER のリロード値の 設定例 .............................................................. 336 ボーレートの計算 ................................................263 み 未検出 エラーの未検出 ....................................................464 未定義命令 未定義命令例外の動作 .......................................... 88 め 命令 20 ビット遅延分岐マクロ命令 ........................... 480 20 ビット通常分岐マクロ命令 ........................... 479 32 ビット遅延分岐マクロ命令 ........................... 482 32 ビット通常分岐マクロ命令 ........................... 481 FR ファミリの命令一覧表 ..................................470 INTE 命令の動作 ....................................................87 INT 命令の動作 ....................................................... 87 RETI 命令の動作 ....................................................89 各動作モードにおける命令キャッシュの 状態 .................................................................... 55 加減算命令 ............................................................ 471 コプロセッサ制御命令 ........................................ 484 シフト命令 ............................................................ 473 乗除算命令 ............................................................ 472 即値セット /16 ビット /32 ビット即値 転送命令 .......................................................... 473 その他の命令 ........................................................ 478 ダイレクトアドレッシング命令 ........................ 483 遅延スロット付きの分岐命令 ..............................70 遅延スロット付き分岐命令の制限事項 ..............72 遅延スロット付き分岐命令の動作 ...................... 71 遅延スロットなしの分岐命令 ..............................70 遅延スロットなし分岐命令の動作 ...................... 73 遅延分岐命令 ........................................................ 477 通常分岐 ( 遅延なし ) 命令 ..................................476 比較演算命令 ........................................................ 471 ビット操作命令 ....................................................472 未定義命令例外の動作 .......................................... 88 命令概要 .................................................................. 45 命令キャッシュコントロールレジスタ (ICHCR) .............................................................53 命令キャッシュタグ .............................................. 49 命令キャッシュのキャッシュ可能領域 ..............47 命令キャッシュの構成 .......................................... 48 メモリストア命令 ................................................475 メモリロード命令 ................................................474 リソース命令 ........................................................ 483 レジスタ間転送命令 ............................................ 475 論理演算命令 ........................................................ 471 命令一覧表 FR ファミリの命令一覧表 ..................................470 命令一覧表の読み方 ............................................ 466 命令キャッシュ 命令キャッシュ ........................................................3 索引 命令キャッシュタグ ...............................................49 命令キャッシュのエントリ更新 ...........................55 命令キャッシュのキャッシュ可能領域 ...............47 命令キャッシュの構成 ...........................................48 命令キャッシュコントロールレジスタ 命令キャッシュコントロールレジスタ (ICHCR) .............................................................53 命令フォーマット 命令フォーマット .................................................469 メモリ 外部 I/O―外部メモリ間の転送 ..........................418 メモリ空間内の内蔵 RAM 領域 ...........................39 メモリストア命令 メモリストア命令 .................................................475 メモリマップ メモリマップ .....................................................38, 69 メモリロード命令 メモリロード命令 .................................................474 も モード モード設定 .............................................................144 文字列操作関数 文字列操作関数使用時の -K lib オプション の指定 ..............................................................460 文字列操作関数を使った 文字型配列以外の操作 ..................................460 モニタデバッガ エミュレータデバッガ / モニタデバッガ .........465 ゆ ユーザスタックポインタ ユーザスタックポインタ (USP) ............................61 ユーザプログラム ユーザプログラムの初期化 ...................................40 ユーザ割込み ユーザ割込み /NMI の動作 ....................................86 優先順位判定 優先順位判定 .........................................................287 よ 要求レベル設定レジスタ 外部割込み要求レベル設定レジスタ (ELVR:External LeVel Register) .....................270 ホールドリクエスト取下げ要求レベル設定 レジスタ (HRCL) ............................................286 読出し 読出し→書込み動作タイミング .........................198 ら ラッチアップ ラッチアップ防止 ...................................................24 ウォッチドッグリセット ...................................... 93 ウォッチドッグリセット発生延期レジスタ (WPR) ...............................................................123 設定初期化リセット (INIT) ................................... 91 設定初期化リセット (INIT) 解除シーケンス ................................................ 94 設定初期化リセット (INIT) 状態 ........................ 136 ソフトウェアリセット (STCR:SRST ビット書込み ) ...........................92 通常リセット動作 ..................................................98 同期リセット動作 ..................................................98 動作初期化リセット (RST) ................................... 91 動作初期化リセット (RST) 解除シーケンス ...... 94 動作初期化リセット (RST) 状態 ........................ 136 発振安定待ちリセット (RST) 状態 .................... 135 リセット ( デバイスの初期化 ) ............................. 90 リセット要因レジスタ / ウォッチドッグタイマ 制御レジスタ (RSRR) .................................... 110 リセット動作 通常リセット動作 ..................................................98 同期リセット動作 ..................................................98 リセット要因レジスタ リセット要因レジスタ / ウォッチドッグタイマ 制御レジスタ (RSRR) .................................... 110 リソース命令 リソース命令 ........................................................ 483 リターンポインタ リターンポインタ (RP) .......................................... 60 リトルエンディアン スタックのリトルエンディアン領域への 配置 .................................................................. 461 リトルエンディアンとビッグエンディアンの 相違点 .............................................................. 186 リトルエンディアン領域に対する 制限事項 .......................................................... 186 領域ウェイトレジスタ 領域ウェイトレジスタ (AWR0 ∼ AWR7) の構成 .............................................................. 163 領域構成レジスタ 領域構成レジスタ 0 ∼ 7 (ACR0 ∼ ACR7) の構成 .............................................................. 156 領域選択レジスタ 領域選択レジスタ (ASR0 ∼ ASR7) のビット機能 ..................................................155 領域選択レジスタ 0 ∼ 7 (ASR0 ∼ ASR7) の構成 .............................................................. 154 リロードタイマ リロードタイマ (REALOS 用 1 チャネルを含む ) ...................... 3 リロード値 ボーレートと U-TIMER のリロード値の 設定例 .............................................................. 336 リロード動作 リロード動作 ................................................402, 406 リロードレジスタ 16 ビットリロードレジスタ (TMRLR) の ビット構成 ......................................................249 リロードレジスタ (UTIMR) ................................259 り リセット INIT 端子入力 ( 設定初期化リセット端子 ) ........92 497 索引 れ 例外 EIT ( 例外 , 割込み , トラップ ) .............................74 レジスタ 0 検出用データレジスタ (BSD0) ........................435 10 ビットスレーブアドレスマスクレジスタ (ITMK) .............................................................357 10 ビットスレーブアドレスレジスタ (ITBA) ..............................................................356 16 ビットタイマレジスタ (TMR) の ビット構成 ......................................................248 16 ビットリロードタイマのレジスタ一覧 ........244 16 ビットリロードレジスタ (TMRLR) の ビット構成 ......................................................249 1 検出用データレジスタ (BSD1) ........................435 7 ビットスレーブアドレスマスクレジスタ (ISMK) ..............................................................360 7 ビットスレーブアドレスレジスタ (ISBA) ...............................................................359 A/D コンバータのレジスタ一覧 .........................298 A/D 制御ステータスレジスタ (ADCS) ..............299 DMAC 全体制御レジスタ (DMACR) .................391 DMAC用 I/O ウェイトレジスタ (IOWR0 ∼ IOWR2) の構成 ..............................................................169 DMAC用 I/O ウェイトレジスタ (IOWR0 ∼ IOWR2) のビット機能 ..................................................169 DMA コントローラ (DMAC) の レジスタ一覧 ..................................................376 DRCL レジスタ .....................................................324 I2C インタフェースのレジスタ一覧 ..................340 UART のレジスタ一覧 .........................................314 U-TIMER コントロールレジスタ (UTIMC) ......260 U-TIMER コントロールレジスタ (UTIMC) 使用上の注意事項 ..........................................261 U-TIMER のレジスタ一覧 ...................................259 アドレスレジスタの機能 .....................................404 アドレスレジスタの指定 .....................................404 アドレスレジスタの特長 .....................................404 ウォッチドッグリセット発生延期レジスタ (WPR) ...............................................................123 外部割込み /NMI 制御部のレジスタ一覧 ..........267 外部割込み許可レジスタ (ENIR:ENable Interrupt request Register) .......268 外部割込み要因レジスタ (EIRR:External Interrupt Request Register) ..............................................269 外部割込み要求レベル設定レジスタ (ELVR:External LeVel Register) .....................270 基本クロック分周設定レジスタ 0 (DIVR0) ............................................................124 基本クロック分周設定レジスタ 1 (DIVR1) ............................................................126 キャッシュイネーブルレジスタ (CHER) の構成 ..............................................................174 キャッシュサイズレジスタ (ISIZE) のビット構成 ....................................................51 クロックコントロールレジスタ (ICCR) ............354 クロックソース制御レジスタ (CLKR) ..............120 クロックディセーブルレジスタ (IDBL) ............363 検出結果レジスタ (BSRR) ...................................436 コントロール / ステータスレジスタ A (DMACA0 ∼ DMACA4) ................................378 498 コントロール / ステータスレジスタ B (DMACB0 ∼ DMACB4) ................................383 コントロールステータスレジスタ (TMCSR) の ビット機能 ......................................................245 コントロールステータスレジスタ (TMCSR) の ビット構成 ......................................................245 乗除算結果レジスタ (MDH/MDL) .......................61 シリアルインプットデータレジスタ (SIDR)/ シリアルアウトプットデータレジスタ (SODR) .............................................................320 シリアルコントロールレジスタ (SCR) ............. 317 シリアルステータスレジスタ (SSR) .................. 321 シリアルモードレジスタ (SMR) ........................ 315 スタンバイ制御レジスタ (STCR) .......................113 制御レジスタ ........................................................ 293 専用レジスタ一覧 ..................................................59 タイムベースカウンタクリアレジスタ (CTBR) .............................................................119 タイムベースカウンタ制御レジスタ (TBCR) .............................................................116 端子 / タイミングコントロールレジスタ (TCR) の 構成 .................................................................. 175 端子 / タイミングコントロールレジスタ (TCR) の ビット機能 ......................................................175 遅延割込み制御レジスタ (DICR) .......................277 遅延割込みモジュールのレジスタ .................... 277 チップセレクトイネーブルレジスタ (CSER) の構成 .............................................................. 172 チップセレクトイネーブルレジスタ (CSER) の ビット機能 ......................................................172 データ方向レジスタ (DDR) の構成 ...................233 データレジスタ (ADCR) ...................................... 305 データレジスタ (IADR) .......................................362 テーブルベースレジスタ (TBR) .....................60, 79 転送元 / 転送先アドレス設定レジスタ (DMASA0 ∼ DMASA4/ DMADA0 ∼ DMADA4) ................................. 389 バスコントロールレジスタ (IBCR) ...................345 バスステータスレジスタ (IBSR) ........................ 342 汎用レジスタ .......................................................... 66 ビットサーチモジュールのレジスタ一覧 ........435 プログラムステータスレジスタ (PS) .................. 62 変化点検出用データレジスタ (BSDC) ..............436 ポート機能レジスタ (PFR) の構成 .....................234 ポートデータレジスタ (PDR) の構成 ................ 232 ホールドリクエスト取下げ要求レベル設定 レジスタ (HRCL) ............................................ 286 命令キャッシュコントロールレジスタ (ICHCR) .............................................................53 リセット要因レジスタ / ウォッチドッグタイマ 制御レジスタ (RSRR) .................................... 110 領域ウェイトレジスタ (AWR0 ∼ AWR7) の構成 .............................................................. 163 領域構成レジスタ 0 ∼ 7 (ACR0 ∼ ACR7) の構成 .............................................................. 156 領域選択レジスタ (ASR0 ∼ ASR7) のビット機能 ..................................................155 領域選択レジスタ 0 ∼ 7 (ASR0 ∼ ASR7) の構成 .............................................................. 154 リロードレジスタ (UTIMR) ................................259 レジスタ一覧 ........................................................ 152 レジスタの種類 ....................................................153 レジスタの設定手順 ............................................ 227 索引 割込みコントローラのレジスタ一覧 .................282 割込み制御レジスタ (ICR) ..................................284 割込み制御レジスタ (ICR) のビット構成 ...........77 割込み制御レジスタ (ICR) のマッピング ...........77 割込みレベルマスクレジスタ (ILM) ....................76 レジスタ一覧 16 ビットリロードタイマのレジスタ一覧 ........244 A/D コンバータのレジスタ一覧 .........................298 DMA コントローラ (DMAC) の レジスタ一覧 ..................................................376 I2C インタフェースのレジスタ一覧 ..................340 UART のレジスタ一覧 .........................................314 U-TIMER のレジスタ一覧 ...................................259 外部割込み /NMI 制御部のレジスタ一覧 ..........267 専用レジスタ一覧 ...................................................59 ビットサーチモジュールのレジスタ一覧 .........435 レジスタ一覧 .........................................................152 割込みコントローラのレジスタ一覧 .................282 レジスタ間転送命令 レジスタ間転送命令 .............................................475 レジスタ設定 レジスタ設定時の注意 .........................................377 レベルマスク 割込み・NMI に対するレベルマスク ..................76 連続変換モード 連続変換モード .....................................................306 ろ 論理演算命令 論理演算命令 .........................................................471 わ 割込み制御レジスタ (ICR) のビット構成 ........... 77 割込み制御レジスタ (ICR) のマッピング ........... 77 割込み発生およびフラグのセット タイミング ......................................................331 割込み番号 ............................................................ 278 割込みベクタ ........................................................ 450 割込みレベルマスクレジスタ (ILM) ................... 76 割込み・NMI に対するレベルマスク .................. 76 割込みコントローラ 割込みコントローラ ................................................ 4 割込みコントローラの主要機能 ........................ 280 割込みコントローラのハードウェア構成 ........280 割込みコントローラのレジスタ一覧 ................ 282 割込み処理 割込み処理 ............................................................ 372 割込み制御 DMAC 割込み制御 ............................................... 412 遅延割込み制御レジスタ (DICR) .......................277 割込み制御レジスタ 割込み制御レジスタ (ICR) ..................................284 割込み制御レジスタ (ICR) のビット構成 ........... 77 割込み制御レジスタ (ICR) のマッピング ........... 77 割込みベクタ 割込みベクタ ........................................................ 450 割込み要因 外部割込み要因レジスタ (EIRR:External Interrupt Request Register) .............................................. 269 割込み要求 外部割込み要求レベル ........................................ 272 外部割込み要求レベル設定レジスタ (ELVR:External LeVel Register) .....................270 割込みレベルマスクレジスタ 割込みレベルマスクレジスタ (ILM) ................... 76 ワードアクセス ワードアクセス .....................................................190 割込み DMAC 割込み制御 ................................................412 DMA 転送と割込み ..............................................407 DMA による周辺割込みクリア ..........................409 EIT ( 例外 , 割込み , トラップ ) .............................74 EIT の割込みレベル ...............................................75 外部割込み /NMI 制御部の ブロックダイヤグラム ..................................266 外部割込み /NMI 制御部のレジスタ一覧 ..........267 外部割込み許可レジスタ (ENIR:ENable Interrupt request Register) .......268 外部割込みの動作 .................................................271 外部割込みの動作手順 .........................................271 外部割込み要因レジスタ (EIRR:External Interrupt Request Register) ..............................................269 外部割込み要求レベル .........................................272 外部割込み要求レベル設定レジスタ (ELVR:External LeVel Register) .....................270 遅延割込み制御レジスタ (DICR) .......................277 遅延割込みモジュールの ブロックダイヤグラム ..................................276 遅延割込みモジュールのレジスタ .....................277 ユーザ割込み /NMI の動作 ....................................86 割込み処理 .............................................................372 割込みスタック .......................................................78 割込み制御レジスタ (ICR) ..................................284 499 索引 500 CM71-10111-6 富士通半導体デバイス • CONTROLLER MANUAL FR60 32 ビット・マイクロコントローラ MB91307 Series ハードウェアマニュアル 2006 年 3 月 第 6 版発行 発行 富士通株式会社 編集 営業推進部 電子デバイス事業本部