本ドキュメントはCypress (サイプレス) 製品に関する情報が記載されております。 はじめに ■ 本書の目的と対象読者 MB91107/MB91108は,新しいRISCアーキテクチャのCPUをコアとした「32ビット・ シングルチップ・マイクロコントローラ FR30シリーズ」の一つとして開発され た製品で,高性能なCPU処理パワーを要求される組込み用途に最適な仕様になって います。 本書は,実際にこのMB91107/MB91108を使用して製品を開発される技術者の方を 対象に,MB91107/MB91108の機能や動作について解説したものです。本書をご一読 ください。なお,各種命令の詳細については, 『インストラクション・マニュアル』 をご参照ください。 ■ 商標 FRは,FUJITSU RISC controllerの略で,富士通株式会社の製品です。 そのほか,本書で登場するシステム名,製品名はそれぞれの会社もしくは組織 の商標です。 なお,本文中では™マークや®マークを必ずしも明記していません。 i ■ 本書の全体構成 本書は,以下に示す15の章および付録から構成されています。 第1章 MB91107/MB91108の概要 この章では,MB91107/MB91108の特長,ブロックダイヤグラム,機能概要な ど全体を知るための基本的なことについて説明します。 第2章 デバイスの取扱いについて この章では,MB91107/MB91108の取扱い上の注意について説明します。 第3章 CPU この章では,FRシリーズのCPUコアの機能を知るために,アーキテクチャ,仕 様,命令などの基本的なことについて説明します。 第4章 バスインタフェース この章では,バスインタフェースの概要,レジスタの構成/機能,バス動作, バスタイミングおよびバス動作のプログラム例について説明します。 第5章 I/Oポート この章では,I/Oポートの概要,レジスタの構成/機能,および外部端子と 切換えレジスタとの関係について説明します。 第6章 16ビットリロードタイマ この章では,16ビットリロードタイマの概要,レジスタの構成/機能,およ び16ビットリロードタイマの動作について説明します。 第7章 PWMタイマ この章では,PWMタイマの概要,レジスタの構成/機能,およびPWMタイマの 動作について説明します。 第8章 U-TIMER この章では,U-TIMERの概要,レジスタの構成/機能,およびU-TIMERの動作 について説明します。 第9章 外部割込み/NMI制御部 この章では,外部割込み/NMI制御部の概要,レジスタの構成/機能,およ び外部割込み/NMI制御部の動作について説明します。 第10章 遅延割込みモジュール この章では,遅延割込みモジュールの概要,レジスタの構成/機能,および 遅延割込みモジュールの動作について説明します。 ii 第11章 割込みコントローラ この章では,割込みコントローラの概要,レジスタの構成/機能,割込みコ ントローラの動作,およびホールドリクエスト取下げ要求機能の使用例につい て説明します。 第12章 A/Dコンバータ(逐次比較型) この章では,A/Dコンバータの概要,レジスタの構成/機能,およびA/Dコン バータの動作について説明します。 第13章 UART この章では,UARTの概要,レジスタの構成/機能,およびUARTの動作につい て説明します。 第14章 DMAコントローラ(DMAC) この章では,DMAコントローラの概要,レジスタの構成/機能,およびDMAコ ントローラの動作について説明します。 第15章 ビットサーチモジュール この章では,ビットサーチモジュールの概要,レジスタの構成/機能,およ びビットサーチモジュールの動作,退避/復帰処理について説明します。 付 録 付録として,I/Oマップ,割込みベクタ,CPUステートでの端子状態,リトル エンディアン領域を利用するときの注意事項,および命令一覧について,本文 に記載できなかった細かいところや,プログラミングするときに参照すること がらを記載しています。 1. 本資料の記載内容は,予告なしに変更することがありますので,ご用命の際は当社営業担当部門にご確認く ださい。 2. 本資料に記載された情報・回路図は,半導体デバイスの応用例として使用されており,実際に使用する機器 への搭載を目的としたものではありません。また,これらの情報・回路図の使用に起因する第三者の特許権, その他の権利侵害について,当社はその責任を負いません。 3. 本資料に記載された内容を,当社に無断で転載または複製することはご遠慮ください。 4. 当社半導体デバイスは,標準用途(コンピュータ/OAなどの事務用機器,産業/通信/計測用の関連機器, パーソナル/家庭用の機器など)に使用されることを意図しています。その故障や誤動作が直接人命を脅かし たり,人体に危害が及ぶ恐れのある,または極めて高い信頼性が要求される特別用途(航空・宇宙用,原子力 制御用,海底中継器,走行制御用,生命維持のための医療用など)にご使用をお考えのお客様は必ず事前に当 社営業担当部門までご相談ください。ご相談なく使用されたことにより発生した損害などについては,責任を 負いかねますのでご了承ください。 5. 半導体デバイスはある確率で故障が発生します。当社半導体デバイスが故障しても,結果的に人身事故,火 災事故,社会的な損害を生じさせないよう,お客様は,装置の冗長設計,延焼対策設計,過電流防止対策設計, 誤動作防止設計などの安全設計をお願いします。 6. 本資料に記載された製品が,「外国為替および外国貿易法」に基づき規制されている貨物または技術に該当 する場合には,本製品を輸出するに際して,同法に基づく許可が必要となります。 ©2001 FUJITSU LIMITED Printed in Japan iii 本書の読み方 ■ 本書の記述形式 以下に本書で使用する主要な用語に関しての説明を示します。 用語 I-BUS D-BUS C-BUS R-BUS E-unit φ θ 意 味 内部インストラクション用の16ビット幅のバスです。FRシリーズは,内部ハーバードアー キテクチャを採用しているため,命令とデータは独立したバスです。I-BUSには,命令CACHE とバスコンバータが接続されます。 内部32ビット幅のデータバスです。D-BUSには,内部リソースが接続されます。 内部マルチプレクスバスです。スイッチを通してI-BUSとD-BUSに接続されます。C-BUSには 外部インタフェースモジュールが接続されます。外部データバスは,データと命令がマル チプレクスされます。 内部16ビット幅のデータバスです。R-BUSは,アダプタを通してD-BUSに接続されます。 R-BUSには,各種I/O,クロック発生部,割込みコントローラが接続されます。 R-BUSは16ビット幅でかつアドレス,データがマルチプレクスされるため,CPUがこれらの リソースにアクセスする場合,複数サイクルの時間が掛かります。 演算実行ユニットです。 システムクロック。R-BUSにつながる各内蔵リソースに対してクロック発生部から出力 されるクロック。最速で原発振と同周期ですが,クロック発生部GCRレジスタのPCK1,0で 1,1/2,1/4,1/8(または1/2,1/4,1/8,1/16)に分周されたクロックとなります。 システムクロック。R-BUS以外のバスに接続されるリソースとCPUの動作クロック。 最速で原発振と同周期ですが,クロック発生部GCRレジスタのCCK1,0で 1,1/2,1/4,1/8(ま たは1/2,1/4/1/8,1/16)に分周されたクロックとなります。 iv 目次 第1章 MB91107/MB91108の概要 ........................................... 1 1.1 MB91107/MB91108の特長 .................................................. 2 1.2 MB91107/MB91108の全体ブロックダイヤグラム............................... 5 1.3 外形寸法図 ............................................................. 6 1.4 端子配列図 ............................................................. 8 1.5 端子機能説明 ........................................................... 9 1.6 入出力回路形式 ........................................................ 14 第2章 デバイスの取扱いについて ....................................... 17 2.1 端子,回路に関する取扱い上の注意 ...................................... 18 2.2 各デバイス使用上の注意 ................................................ 20 2.3 電源投入時の注意 ...................................................... 22 第3章 CPU ............................................................ 23 3.1 メモリ空間 ............................................................ 24 3.2 CPUアーキテクチャ ..................................................... 25 3.3 命令キャッシュ ........................................................ 28 3.3.1 命令キャッシュ制御レジスタ(ICHCR) ................................... 31 3.3.2 各動作モードの状態 .................................................. 33 3.3.3 命令キャッシュ使用時の設定方法 ...................................... 34 3.4 専用レジスタ .......................................................... 36 3.4.1 プログラムステータスレジスタ(PS) .................................... 38 3.5 汎用レジスタ .......................................................... 41 3.6 データ構造 ............................................................ 42 3.7 ワードアライメント .................................................... 43 3.8 メモリマップ .......................................................... 44 3.9 命令概要 .............................................................. 46 3.9.1 遅延スロット付き分岐命令 ............................................ 48 3.9.2 遅延スロットなし分岐命令 ............................................ 50 3.10 E I T ( 例外・割込み・トラップ) .......................................... 51 3.10.1 EITの割込みレベル ................................................... 52 3.10.2 割込み制御レジスタ(IC R) ............................................ 54 v 3.10.3 システムスタックポインタ(SSP) ....................................... 55 3.10.4 割込みスタック ...................................................... 56 3.10.5 テーブルベースレジスタ(TBR) ......................................... 57 3.10.6 EITベクタテーブル ................................................... 58 3.10.7 多重EIT処理 ......................................................... 60 3.10.8 EITの動作 ........................................................... 62 3.11 リセットシーケンス .................................................... 65 3.12 クロック .............................................................. 66 3.13 3.14 第4章 3.12.1 リセット要因レジスタ(RSRR)とウォッチドッグ周期制御レジスタ(WTCR)..... 68 3.12.2 DMA要求抑止レジスタ(PDRR) ........................................... 70 3.12.3 タイムベースタイマクリアレジスタ(CTBR) .............................. 71 3.12.4 ギア制御レジスタ(GCR) ............................................... 72 3.12.5 ウォッチドッグリセット発生延期レジスタ(WPR) ......................... 75 3.12.6 PLL制御レジスタ(PCTR) ............................................... 76 3.12.7 ウォッチドッグ機能 .................................................. 77 3.12.8 ギア機能 ............................................................ 79 3.12.9 リセット要因保持 .................................................... 81 3.12.10 DMA抑止 ............................................................. 83 3.12.11 クロックダブラ機能 .................................................. 85 3.12.12 PLLのクロック設定例 ................................................. 87 低消費電力モード ...................................................... 90 3.13.1 スタンバイ制御レジスタ(STCR) ........................................ 92 3.13.2 ストップ状態 ........................................................ 93 3.13.3 スリープ状態 ........................................................ 96 3.13.4 低消費電力モードの状態遷移 .......................................... 98 メモリアクセスモード .................................................. 99 3.14.1 内蔵RAMの使用方法 .................................................. 102 3.14.2 ユーザプログラムの初期化 ........................................... 103 バスインタフェース ............................................ 105 4.1 バスインタフェースの概要 ............................................. 106 4.2 バスインタフェースのブロックダイヤグラム.............................. 109 4.3 バスインタフェースのレジスタ ......................................... 110 4.3.1 エリア選択レジスタ(ASR)とエリアマスクレジスタ(AMR) ................. 111 vi 4.4 4.5 4.3.2 エリアモードレジスタ0(AMD0) ........................................ 114 4.3.3 エリアモードレジスタ1(AMD1) ........................................ 116 4.3.4 エリアモードレジスタ32(AMD32) ...................................... 117 4.3.5 エリアモードレジスタ4(AMD4) ........................................ 118 4.3.6 エリアモードレジスタ5(AMD5) ........................................ 119 4.3.7 チップセレクト信号レジスタ6/7(CS67) ................................ 120 4.3.8 DRAM制御レジスタ4/5(DMCR4/5) ....................................... 121 4.3.9 リフレッシュ制御レジスタ(RFCR) ..................................... 124 4.3.10 外部端子制御レジスタ0(EPCR0) ....................................... 126 4.3.11 外部端子制御レジスタ1(EPCR1) ....................................... 128 4.3.12 DRAM信号制御レジスタ(DSCR) ......................................... 129 4.3.13 リトルエンディアンレジスタ(LER) .................................... 130 バス動作 ............................................................. 131 4.4.1 データバス幅と制御信号との関係 ..................................... 132 4.4.2 ビッグエンディアンのバスアクセス ................................... 133 4.4.3 リトルエンディアンのバスアクセス ................................... 138 4.4.4 ビッグエンディアンとリトルエンディアンの外部アクセスの比較.......... 141 4.4.5 DRAM関係 ........................................................... 145 バスタイミング ....................................................... 148 4.5.1 基本リードサイクル ................................................. 151 4.5.2 基本ライトサイクル ................................................. 153 4.5.3 各モードでのリードサイクル ......................................... 155 4.5.4 各モードでのライトサイクル ......................................... 157 4.5.5 リード/ライト混在サイクル ......................................... 159 4.5.6 自動ウエイトサイクル ............................................... 160 4.5.7 外部ウエイトサイクル ............................................... 161 4.5.8 通常DRAMインタフェースのリードサイクル ............................. 162 4.5.9 通常DRAMインタフェースのライトサイクル ............................. 164 4.5.10 通常DRAMリードサイクル ............................................. 166 4.5.11 通常DRAMライトサイクル ............................................. 168 4.5.12 通常DRAMインタフェースでの自動ウエイトサイクル ..................... 170 4.5.13 高速ページモード時のDRAMインタフェース ............................. 171 4.5.14 Single DRAMインタフェースのリードサイクル .......................... 173 4.5.15 Single DRAMインタフェースのライトサイクル .......................... 174 vii 4.5.16 Single DRAMインタフェース .......................................... 175 4.5.17 Hyper DRAMインタフェースのリードサイクル ........................... 176 4.5.18 Hyper DRAMインタフェースのライトサイクル ........................... 177 4.5.19 Hyper DRAMインタフェース ........................................... 178 4.5.20 DRAMリフレッシュ ................................................... 179 4.5.21 外部バスリクエスト ................................................. 181 4.6 内部クロック逓倍動作(クロックダブラ)................................ 182 4.7 外部バス動作のプログラム例 ........................................... 183 第5章 I/Oポート ..................................................... 187 5.1 I/Oポートの概要 ...................................................... 188 5.2 ポートデータレジスタ(PDR) ............................................ 189 5.3 データ方向レジスタ(DDR) .............................................. 190 5.4 外部端子と切換えレジスタとの関係 ..................................... 191 第6章 16ビットリロードタイマ ........................................ 195 6.1 16ビットリロードタイマの概要 ......................................... 196 6.2 16ビットリロードタイマのレジスタ ..................................... 197 6.2.1 コントロールステータスレジスタ(TMCSR) .............................. 198 6.2.2 16ビットタイマレジスタ(TMR)/16ビットリロードレジスタ(TMRLR) ....... 200 6.3 16ビットリロードタイマの動作 ......................................... 201 6.4 カウンタの動作状態 ................................................... 203 第7章 PWMタイマ ..................................................... 205 7.1 PWMタイマの概要 ...................................................... 206 7.2 PWMタイマのブロックダイヤグラム ...................................... 207 7.3 PWMタイマのレジスタ .................................................. 208 7.3.1 コントロールステータスレジスタ(PCNH,PCNL) .......................... 209 7.3.2 PWM周期設定レジスタ(PCSR) .......................................... 212 7.3.3 PWMデューティ設定レジスタ(PDUT) .................................... 213 7.3.4 PWMタイマレジスタ(PTMR) ............................................ 214 7.3.5 ジェネラルコントロールレジスタ1(GCN1) .............................. 215 7.3.6 ジェネラルコントロールレジスタ2(GCN2) .............................. 218 7.4 PWM動作 .............................................................. 219 7.5 ワンショット動作 ..................................................... 220 viii 7.6 PWMタイマの割込み要因とタイミングチャート............................. 221 7.7 PWMタイマ複数チャネルの起動 .......................................... 222 第8章 U-TIMER ....................................................... 225 8.1 U-TIMERの概要 ........................................................ 226 8.2 U-TIMERのレジスタ .................................................... 227 8.3 U-TIMRの動作 ......................................................... 229 第9章 外部割込み/NMI制御部 ......................................... 231 9.1 外部割込み/NMI制御部の概要 .......................................... 232 9.2 外部割込み/NMI制御部のレジスタ ...................................... 233 9.2.1 割込み許可レジスタ(ENIR) ........................................... 234 9.2.2 外部割込み要因レジスタ(EIRR) ....................................... 235 9.2.3 外部割込み要求レベル設定レジスタ(ELVR) ............................. 236 9.3 外部割込み動 作 ...................................................... 237 9.4 外部割込み要求レベル ................................................. 238 9.5 NMI(Non Maskable Interrupt:ノンマスカブル割込み)の動作............... 239 第10章 遅延割込みモジュール .......................................... 241 10.1 遅延割込みモジュールの概要 ........................................... 242 10.2 遅延割込み制御レジスタ(DICR) ......................................... 243 10.3 遅延割込みモジュールの動作 ........................................... 244 第11章 割込みコントローラ ............................................ 245 11.1 割込みコントローラの概要 ............................................. 246 11.2 割込みコントローラのブロックダイヤグラム.............................. 247 11.3 割込みコントローラのレジスタ ......................................... 248 11.3.1 割込み制御レジスタ(ICR) ............................................ 250 11.3.2 ホールドリクエスト取下げ要求レベル設定レジスタ(HRCL) ............... 251 11.4 優先順位判定 ......................................................... 252 11.5 スタンバイモード(ストップ/スリープ)からの復帰...................... 254 11.6 ホールドリクエスト取下げ要求 ......................................... 255 11.7 ホールドリクエスト取下げ要求機能(HRCR)の使用例........................ 256 ix 第12章 A/Dコンバータ(逐次比較型) ..................................... 259 12.1 A/Dコンバータの概要 .................................................. 260 12.2 A/Dコンバータのブロックダイヤグラム................................... 261 12.3 A/Dコンバータのレジスタ .............................................. 262 12.3.1 コントロールステータスレジスタ(ADCS) ............................... 263 12.3.2 データレジスタ(ADCR) ............................................... 267 12.4 A/Dコンバータの動作 .................................................. 268 12.5 変換データ保護機能 ................................................... 270 12.6 A/Dコンバータ使用上の注意 ............................................ 271 第13章 UART .......................................................... 273 13.1 UARTの概要 ........................................................... 274 13.2 UARTのブロックダイヤグラム ........................................... 275 13.3 UARTのレジスタ ....................................................... 276 13.3.1 シリアルモードレジスタ(SMR) ........................................ 277 13.3.2 シリアルコントロールレジスタ(SCR) .................................. 279 13.3.3 シリアルインプットデータレジスタ(SIDR)/シリアルアウトプットデータレジス タ(SODR) ........................................................... 281 13.3.4 13.4 シリアルステータスレジスタ(SSR) .................................... 282 UARTの動作とクロック選択 ............................................. 284 13.4.1 非同期(調歩同期)モード ........................................... 285 13.4.2 CLK同期モード ...................................................... 286 13.5 UARTの割込み発生とフラグのセットタイミング............................ 288 13.6 UARTの使用上の注意と応用例 ........................................... 290 13.7 ボーレートとU-TIMERのリロード値の設定例............................... 292 第14章 DMAコントローラ(DMAC) ....................................... 293 14.1 DMAコントローラの概要 ................................................ 294 14.2 DMAコントローラのブロックダイヤグラム................................. 295 14.3 DMAコントローラのレジスタ ............................................ 296 14.3.1 DMACパラメータディスクリプタポインタ(DPDP) ......................... 297 14.3.2 DMACコントロールステータスレジスタ(DACSR) .......................... 298 14.3.3 DMAC端子コントロールレジスタ(DATCR) ................................ 300 14.3.4 RAM上のディスクリプタ内レジスタ .................................... 302 x 14.4 DMAコントローラの転送モード .......................................... 305 14.4.1 ステップ転送(シングル/ブロック転送) ................................ 308 14.4.2 連続転送 ........................................................... 309 14.4.3 バースト転送 ....................................................... 310 14.4.4 DREQセンスモードによる違い(エッジモード時の注意事項) ............... 311 14.4.5 DREQセンスモードによる違い(レベルモード時の注意事項) ............... 312 14.5 転送受付け信号出力と転送終了信号出力.................................. 313 14.6 DMAコントローラに関する注意事項 ...................................... 314 14.7 DMAコントローラのタイミング図 ........................................ 317 第15章 14.7.1 ディスクリプタアクセス部のタイミング図 ............................. 318 14.7.2 データ転送部のタイミング図 ......................................... 320 14.7.3 連続転送モードでの転送停止タイミング図 ............................. 321 14.7.4 転送の終了動作タイミング図 ......................................... 323 ビットサーチモジュール ........................................ 325 15.1 ビットサーチモジュールの概要 ......................................... 326 15.2 ビットサーチモジュールのレジスタ ..................................... 327 15.3 ビットサーチモジュールの動作と退避/復帰処理.......................... 329 付録 .............................................................. 331 A I/Oマップ ............................................................ 332 B 割込みベクタ ......................................................... 339 C 各CPUステートにおける端子状態 ........................................ 341 D リトルエンディアン領域を利用する際の注意事項.......................... 345 D.1 Cコンパイラ(fcc911) ................................................ 346 D.2 アセンブラ(fasm911) ................................................ 349 D.3 リンカ(flnk911) .................................................... 351 D.4 デバッガ(sim911,eml911,mon911) ..................................... 352 E 命令一覧 ............................................................. 353 E.1 索引 FRシリーズの命令一覧表 ............................................. 356 .............................................................. 369 xi xii 第1章 MB91107/MB91108の概要 MB91107/MB91108の概要 この章では,MB91107/MB91108の特長,ブロックダイヤグラム,機能概要など全体 を知るための基本的なことについて説明します。 1.1 MB91107/MB91108の特長 1.2 MB91107/MB91108の全体ブロックダイヤグラム 1.3 外形寸法図 1.4 端子配列図 1.5 端子機能説明 1.6 入出力回路形式 1 第1章 MB91107/MB91108の概要 1.1 MB91107/MB91108の特長 MB91107/MB91108の特長 MB91107/MB91108は,32ビットRISC CPU(FRシリーズ)をコアとし,高性能/高速 なCPU処理を要求される組込み制御用に各種I/Oリソースやバス制御機構を内蔵した, 標準シングルチップ・マイクロコントローラです。32ビットCPUがアクセスする広大 なアドレス空間をサポートするために,外部バスアクセスが基本となっていますが, CPU の 命 令 実 行 の 高 速 化 の た め に 1KB の 命 令 キ ャ ッ シ ュ メ モ リ と 大 容 量 (MB91107:128KB,MB91108:160KB)のRAMを内蔵しています。 ナビゲーションシステム,高性能FAX,プリンタ制御など,高性能なCPU処理パワー を要求される組込み用途に最適な仕様となっています。 ■ MB91107/MB91108の特長 ○ FR-CPU l l l l l 32ビットRISC,ロード/ストアアーキテクチャ,5段パイプライン 動作周波数:内部50MHz[外部25MHz] (PLL使用,原振12.5MHz時) 汎用レジスタ:32ビット×16本 16ビット固定長命令(基本命令) ,1命令/1サイクル メモリ−メモリ間転送,ビット処理,バレルシフトなどの命令:組込み 用途に適した命令 l 関数入口/出口命令,レジスタ内容のマルチロード/ストア命令:高級 言語対応命令 l l l レジスタ インターロック機能:アセンブラ記述の容易化 遅延スロット付き分岐命令:分岐処理時のオーバヘッドの低減 乗算器の内蔵/命令レベルでのサポート - 符号付き32ビット乗算:5サイクル - 符号付き16ビット乗算:3サイクル l ○ 割込み(PC,PSの退避):6サイクル,16プライオリティレベル バスインタフェース l l l l l l クロックダブラ使用:内部50MHz,外部バス25MHz動作 25ビットアドレスバス(32MB空間) 16/8ビットデータバス 基本外部バスサイクル:2クロックサイクル 最小64K byte単位で設定可能なチップセレクト出力:8本 各種メモリに対するインタフェースのサポート - l l l 2 DRAMインタフェース(領域4,5) 自動ウェイトサイクル:領域ごとに0∼7サイクルのうちで任意に設定可 能 未使用データ/アドレス端子は,入出力ポートとして使用可能 little endianモードサポート(領域1∼5のうち1領域選択) 1.1 MB91107/MB91108の特長 ○ DRAMインタフェース l l l 2バンク独立制御(領域4,5) Double CAS DRAM(通常DRAM I/F)/ Single CAS DRAM/ Hyper DRAM 基本バスサイクル:通常5サイクル,高速ページモード時2サイクルアク セス可能 l l プログラマブル波形:RAS,CASに1サイクル自動ウェイト挿入可能 DRAMリフレッシュ - CBRリフレッシュ(6ビットタイマによりインターバルを任意に設定) - セルフリフレッシュモード l l ○ 8/9/10/12本のコラムアドレスに対応 2CAS/1WE, 2WE/1CASの選択可 キャッシュメモリ l l l l ○ 1KB命令キャッシュ 2way set associative 32ブロック/ウェイ,4エントリ(4word)/ブロック ロック機能:特定プログラムコードのキャッシュへの常駐化 DMAC(DMA Controller) l l l l l ○ 転送要因:外部端子/内蔵リソースの割込み要求 転送シーケンス - ステップ転送/ブロック転送 - バースト転送/連続転送 転送データ長:8ビット/16ビット/32ビットから選択可 NMI/割込み要求によって一時停止が可能 UART l l l l l l l l ○ 8チャネル 独立3チャンネル 全二重ダブルバッファ データ長:7∼9ビット(パリティ無し) ,6∼8ビット(パリティ有り) 非同期(調歩同期) , CLK同期通信の選択可能 マルチプロセッサモード ボーレートジェネレータとして16ビットタイマ(U-Timer)内蔵:任意 のボーレートを発生 外部クロックを転送クロックとして使用可能 エラー検出:パリティ,フレーム,オーバラン A/Dコンバータ(逐次変換型) l l 10ビット分解能,4チャネル 逐次比較変換:25MHz時 5.6μs 3 第1章 MB91107/MB91108の概要 l l l ○ サンプル&ホールド回路内蔵 変換モード:シングル変換/スキャン変換/リピート変換より選択 起動:ソフトウェア/外部トリガ/内蔵タイマより選択 リロードタイマ l l ○ 16ビットタイマ:3チャネル 内部クロック:2クロックサイクル分解能,2/8/32分周から選択 その他のインターバルタイマ l l l ○ 16ビットタイマ:3チャネル(U-TIMER) PWMタイマ:4チャネル ウォッチドッグタイマ:1チャネル ビットサーチモジュール l ○ 1ワード中のMSBからの最初の“1”/“0”の変化ビットの位置を1サイク ルでサーチ 割込みコントローラ l l l ○ 外部割込み入力:マスク不可割込み(NMIX),通常割込み×8(INT0∼INT7) 内部割込み要因:UART,DMAC,A/D,UTIMER,遅延割込み マスク不可割込み以外は,優先レベルをプログラマブルに設定可能(16 レベル) リセット要因 l ○ パワーオンリセット/ハードウェアスタンバイ/ウォッチドッグタイマ /ソフトウェアリセット/外部リセット 低消費電力モード l ○ スリープ/ストップモード クロック制御 l ○ ギア機能:CPUとペリフェラルの動作クロック周波数を独立に任意に設 定可能 ギアクロックは1/1,1/2,1/4,1/8(または1/2,1/4,1/8,1/16)から選択可 能 ただし,ペリフェラルの動作は25MHzを上限とする。 その他 l l l 4 パッケージ:LQFP-120 CMOSテクノロジー - MB91107(0.25μm):量産用 - MB91V108(0.25μm):開発用 - MB91108(0.25μm):量産用 電源:3.3V±5%(内部レギュレータあり) 1.2 MB91107/MB91108の全体ブロックダイヤグラム 1.2 MB91107/MB91108の全体ブロックダイヤグラム MB91107/MB91108の全体ブロックダイヤグラム 図 1.2-1に , MB91107/MB91108の全体ブロックダイヤグラムを示します。 ■ MB91107/MB91108の全体ブロックダイヤグラム 図 1.2-1 MB91107/MB91108の全体ブロックダイヤグラム <注意事項> ・端子は機能別表記です(実際の端子は一部マルチプレクス) 。 ・REALOSをご使用になる場合は,外部割込みを使うか内蔵タイマを使って時間管理を行ってくだ さい。 5 第1章 MB91107/MB91108の概要 1.3 外形寸法図 MB91107/MB91108には,2種類のパッケージが用意されています。 ■ 外形寸法図(LQFP-120) EIAJコ ー ド : *P-LQFP-0120-1616-0.50 プラスチック・LQFP,120ピン リードピッチ 0.50mm パッケージ幅× パッケージ長さ 16.0×16.0mm リ ー ド 形 状 ガルウィング 封 止 方 法 プラスチックモールド 取 付 け 高 さ 重 1.70mm MAX さ 0.88g (FPT-120P-M21) プラスチック・LQFP,120ピン (FPT-120P-M21) 18.00±0.20(.709±.008)SQ 16.00±0.10(.630±.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 120 LEAD No. 1 30 0.50(.020) C 0~8° "A" 31 0.22±0.05 (.009±.002) +0.05 0.08(.003) M 0.145 –0.03 +.002 .006 –.001 0.45/0.75 (.018/.030) 0.10±0.05 (.004±.002) (Stand off) 0.25(.010) 1998 FUJITSU LIMITED F120033S-2C-2 単位:mm(inches) 図 1.3-1 FPT-120P-M21の外形寸法図 6 1.3 外形寸法図 ■ 外形寸法図(PGA-135) EIAJコ ー ド : *PGA135-C-S14U-2 セラミック・PGA,135ピン リ ー ド ピ ッ チ 2.54mm(100mil) ピンマトリックス 14 封 止 方 法 メタルシール (PGA-135C-A02) セラミック・PGA,135ピン (PGA-135C-A02) 2.54±0.25 (.100±.010) 1.27(.050)TYP DIA 33.02(1.300) REF INDEX INDEX AREA +0.18 0.46 –0.05 DIA +.007 .018 –.002 +0.25 35.56±0.51 SQ (1.400±.020) 1.27 –0.76 +.010 .050 –.030 6.10(.240) MAX C +0.51 3.30 –0.25 +.020 .130 –.010 1994 FUJITSU LIMITED R135008SC-2-2 単位:mm(inches) 図 1.3-2 PGA-135C-A02の外形寸法図 7 第1章 MB91107/MB91108の概要 1.4 端子配列図 図 1.4-1に,MB91107/MB91108の端子配列図を示します。 ■ 端子配列図(LQFP-120) 図 1.4-1 LQFP-120の端子配列図 8 1.5 端子機能説明 1.5 端子機能説明 表 1.5-1に,MB91107/MB91108の端子機能一覧を示します。 表中のNO.は,パッケージのピン番号ではありません。ピン番号については, 「1.4 端子配列図」を参照してください。 ■ 端子機能説明 表 1.5-1 端子機能説明(続く) NO. 端子名 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 D16/P20 D17/P21 D18/P22 D19/P23 D20/P24 D21/P25 D22/P26 D23/P27 D24 D25 D26 D27 D28 D29 D30 D31 A00 A01 A02 A03 A04 A05 A06 A07 A08 A09 A10 A11 A12 A13 A14 A15 A16/P60 A17/P61 A18/P62 A19/P63 A20/P64 A21/P65 A22/P66 A23/P67 入出力回路 形式 機 能 外部データバスのビット16∼ビット23です。 外部バス幅が8ビットの設定のとき,ポート(P20∼P27)として使用 できます。 C 外部データバスのビット24∼ビット31です。 C 外部アドレスバスのビット00∼ビット15です。 F 外部アドレスバスのビット16∼ビット23です。 アドレスバスとして使用しない場合は,ポート(P60∼P67)として使 用できます。 F 9 第1章 MB91107/MB91108の概要 表 1.5-1 端子機能説明(続く) 10 NO. 端子名 41 A24/P70 42 RDY/P80 43 BGRNTX/P81 44 BRQ/P82 45 46 RDX WR0X 47 WR1X/P85 入出力回路 機 能 形式 F 外部アドレスバスのビット24です。 アドレスバスとして使用しない場合は,ポート(P70)として使用でき ます。 C 外部レディ入力です。実行中のバスサイクルが完了しないときに0 を入力します。未使用時はポートとして使用できます。 F 外部バス開放受付け出力です。外部バスを開放したときにLを出力 します。未使用時はポートとして使用できます。 P 外部バス開放要求入力です。外部バスを開放してほしいときに1を 入力します。未使用時はポートとして使用できます。 M 外部バスリードストローブです。 M 外部バスライトストローブです。各制御信号とデータバスのバイト 位置は次のような関係になっています。 F 48 49 50 51 52 53 CS0X/PA0 CS1X/PA1 CS2X/PA2 CS3X/PA3 CS4X/PA4 CS5X/PA5 M F 54 CLK/PA6 F 55 56 57 58 59 60 61 62 RAS0/PB0 CS0L/PB1 CS0H/PB2 DW0X/PB3 RAS1/PB4 CS1L/PB5 CS1H/PB6 DW1X/PB7 63 64 65 66 67 68 69 MD0 MD1 MD2 X0 X1 RSTX HSTX F G A B H D31-24 D23-16 16ビットバス幅 WR0X WR1X 8ビットバス幅 WR0X (Port可) ( 注意事項) WR1Xは,リセット中はHi-Zになっています。16ビットバス幅で 使用する場合は外部にプルアップ抵抗を付けてください。 チップセレクト0出力です(Low active)。 チップセレクト1出力です(Low active)。 チップセレクト2出力です(Low active)。 チップセレクト3出力です(Low active)。 チップセレクト4出力です(Low active)。 チップセレクト5出力です(Low active)。 [PA1-5] 未使用時はポートとして使用できます。 システムクロック出力です。外部バス動作周波数と同じクロックを 出力します。 [PA6] 未使用時はポートとして使用できます。 DRAMバンク0のRAS出力です。 DRAMバンク0のCASL出力です。 DRAMバンク0のCASH出力です。 DRAMバンク0の WE 出力です(Low active)。 DRAMバンク1のRAS出力です。 DRAMバンク1のCASL出力です。 DRAMバンク1のCASH出力です。 DRAMバンク1の WE 出力です(Low active)。 詳細は,DRAMインタフェースを参照してください。 [PB0-7] 未使用時はポートとして使用できます。 モード端子0∼2です。 これらの端子によりMCUの基本動作モードを設定します。 VccまたはVssに直接つないで使用してください。 クロック(発振)入力です。 クロック(発振)出力です。 外部リセット入力です。 ハードウェアスタンバイ入力です(Low active)。 1.5 端子機能説明 表 1.5-1 端子機能説明(続く) NO. 端子名 70 71 NMIX SC2/PE0 72 DREQ0/PE1 73 DACK0/PE2 74 EOP0/PE3 75 DREQ1/PE4 76 DACK1/PE5 77 EOP1/PE6 78 DREQ2/PE7 79 SI0/PF0 80 SO0/PF1 81 SC0/PF2 82 SI1/PF3 入出力回路 機 能 形式 H NMI(Non Maskable Interrupt)入力です(Low active)。 F [SC2] UART2のクロック入出力です。クロック出力はUART2のクロッ ク出力指定が許可のときに有効となります。 [PE0] 汎用の入出力ポートです。この機能はUART2のクロック出力 指定が禁止のときに有効となります。 [DREQ0] DMA外部転送要求入力です。DMACの転送要因として選択し F た場合はこの入力を随時使用していますので,意図的に行う以外は 他の機能による出力を停止させておく必要があります。 [PE1] 汎用の入出力ポートです。 [DACK0] DMAC外部転送要求受付け出力です(ch0)。この機能はDMAC F の転送要求受付け出力指定が許可のときに有効となります。 [PE2] 汎用の入出力ポートです。この機能はDMACの転送要求受付け 出力指定またはDACK0出力指定が禁止のときに有効となります。 F [EOP0] DMACのEOP出力指定が許可のとき[EOP0] DMAC EOP出力(ch0) として使用できます。 [PE3] 汎用の入出力ポートです。 F [DREQ1] DMA外部転送要求入力です。DMACの転送要因として選択し た場合はこの入力を随時使用していますので,意図的に行う以外は 他の機能による出力を停止させておく必要があります。 [PE4] 汎用の入出力ポートです。 F [DACK1] DMAC外部転送要求受付け出力です(ch1)。この機能はDMAC の転送要求受付け出力指定が許可のときに有効となります。 [PE5] 汎用の入出力ポートです。この機能はDMACの転送要求受付け 出力指定またはDACK1出力指定が禁止のときに有効となります。 F [EOP1] DMACのEOP出力指定が許可のとき[EOP1] DMAC EOP出 力(ch1)として使用できます。 [PE6] 汎用の入出力ポートです。 F [DREQ2] DMA外部転送要求入力です。DMACの転送要因として選択し た場合はこの入力を随時使用していますので,意図的に行う以外は 他の機能による出力を停止させておく必要があります。 [PE7] 汎用の入出力ポートです。 F [SI0] UART0のデーダ入力です。UART0が入力動作をしている間はこ の入力を随時使用していますので,意図的に行う以外は他の機能に よる出力を停止させておく必要があります。 [PF0] 汎用の入出力ポートです。 F [SO0] UART0のデータ出力です。この機能はUART0のデータ出力指定 が許可のときに有効となります。 [PF1] 汎用の入出力ポートです。この機能はUART0のデータ出力指 定が禁止のときに有効となります。 F [SC0] UART0のクロック入出力です。クロック出力はUART0のクロッ ク出力指定が許可のときに有効となります。 [PF2] 汎用の入出力ポートです。この機能はUART0のクロック出力 指定が禁止のときに有効となります。 F [SI1] UART1のデータ入力です。UART1が入力動作をしている間はこ の入力を随時使用していますので,意図的に行う以外は他の機能に よる出力を停止させておく必要があります。 [PF3] 汎用の入出力ポートです。 11 第1章 MB91107/MB91108の概要 表 1.5-1 端子機能説明(続く) 12 入出力回路 機 能 形式 F [SO1] UART1のデータ出力です。この機能はUART1のデータ出力指定 が許可のときに有効となります。 [PF4] 汎用の入出力ポートです。この機能はUART1のデータ出力指 定が禁止のときに有効となります。 F [SC1] UART1のクロック入出力です。クロック出力はUART1のクロッ ク出力指定が許可のときに有効となります。 [PF5] 汎用の入出力ポートです。この機能はUART1のクロック出力 指定が禁止のときに有効となります。 F [SI2] UART2のデータ入力です。UART2が入力動作をしている間はこ の入力を随時使用していますので,意図的に行う以外は他の機能に よる出力を停止させておく必要があります。 [PF6] 汎用の入出力ポートです。 F [SO2] UART2のデータ出力です。この機能はUART2のデータ出力指定 が許可のときに有効となります。 [PF7] 汎用の入出力ポートです。この機能はUART2のデータ出力指 定が禁止のときに有効となります。 I [INT0-7] 外部割込み要求入力です。対応する外部割込みを許可し ている間はこの入力を随時使用していますので,意図的に行う以外 は他の機能による出力を停止させておく必要があります。 [PG0-7] 汎用の入出力ポートです。 NO. 端子名 83 SO1/PF4 84 SC1/PF5 85 SI2/PF6 86 SO2/PF7 87 88 89 90 91 92 93 94 95 96 INT0/PG0 INT1/PG1 INT2/PG2 INT3/PG3 INT4/PG4 INT5/PG5 INT6/PG6 INT7/PG7 TRG0/PH0 TRG1/PH1 97 98 TRG2/PH2/CS6X TRG3/PH3/CS7X F 99 100 101 102 103 OCPA0/PH4 OCPA1/PH5 OCPA2/PH6 OCPA3/PH7 DACK2/PI0 F F 104 EOP2/PI1/ATGX F F [TRG0-1] PWMタイマの外部トリガ入力です。この機能はPH0-1の データ出力指定が禁止のときに有効となります。 [PH0-1] 汎用の入出力ポートです。 [TRG2-3] PWMタイマの外部トリガ入力です。この機能はPH2-3の データ出力指定が禁止のときに有効となります。 [PH6-7] TRG2-3,CS6X-7X未使用時はポートとして使用できます。 チップセレクト6出力です(Low active)。 チップセレクト7出力です(Low active)。 [OCPA0-3] PWMタイマの出力です。この機能はPWMタイマの出力指定 が許可のときに有効となります。 [PH4-7] 汎用の入出力ポートです。 [DACK2] DMAC外部転送要求受付け出力です(ch2)。この機能はDMAC の転送要求受付け出力指定が許可のときに有効となります。 [PI0] 汎用の入出力ポートです。この機能はDMACの転送要求受付け 出力指定またはDACK2出力指定が禁止のときに有効となります。 [EOP2] DMAC EOP出力です(ch2)。この機能はDMACのEOP出 力指定が許可のときに有効になります。 [PI1] 汎用の入出力ポートです。この機能はDMACの転送終了信号出 力指定が禁止のときに有効となります。 [ATGX] A/Dコンバータの外部トリガ入力です。A/Dの起動要因とし て選択した場合はこの入力を随時使用していますので,意図的に行 う以外は他の機能による出力を停止させておく必要があります。 1.5 端子機能説明 表 1.5-1 端子機能説明(続き) NO. 端子名 105-108 AN0-AN3 109 110 AVCC AVRH 111 112-114 AVSS/AVRL VCC 115 C 116-120 VSS 入出力回路 機 能 形式 N [AN0-3] A/Dコンバータアナログ入力です。この機能はAICレジスタ の指定がアナログ入力のとき有効となります。 A/Dコンバータ VCC電源です。 A/Dコンバータ基準電圧です(高電位側)。この端子の投入/切断は 必ずVCCにAVRH以上の電位が印加してある状態で行ってください。 A/Dコンバータ VSS電源,および基準電圧です(低電位側)。 ディジタル回路の電源です。必ず3端子とも電源を接続して使用し てください。 − 内蔵レギュレータのパスコン端子です。 「第2章 デバイスの取扱いについて」を参照してください。 ディジタル回路の接地レベルです。 <注意事項> 上記の大部分の端子は,xxxx/PxxといったようにI/Oポートとリソースの入出力がマルチプレ クスされます。これら端子でポートとリソースの出力どうしが競合した場合,リソースが優先さ れます。 13 第1章 MB91107/MB91108の概要 1.6 入出力回路形式 表 1.6-1に , 入出力回路形式を示します。 ■ 入出力回路形式 表 1.6-1 入出力回路形式(続く) 分類 回路形式 備 考 ・発振帰還抵抗:約1MΩ A B C F 14 ・CMOSレベルヒステリシス入力 スタンバイ制御なし プルアップ抵抗付き ・CMOSレベル入出力 スタンバイ制御あり ・CMOSレベル出力 ・CMOSレベルヒステリシス入力 スタンバイ制御あり 1.6 入出力回路形式 表 1.6-1 入出力回路形式(続く) 分類 G 備 考 ・CMOSレベル入力 スタンバイ制御なし H ・CMOSレベルヒステリシス入力 スタンバイ制御なし I 回路形式 ・CMOSレベル出力 ・CMOSレベルヒステリシス入力 スタンバイ制御なし ・CMOSレベル出力 M ・アナログ入力 N 15 第1章 MB91107/MB91108の概要 表 1.6-1 入出力回路形式(続き) 分類 P 16 回路形式 備 考 ・CMOSレベル出力 ・CMOSレベルヒステリシス入力 スタンバイ制御なし 第2章 デバイスの取扱いについて この章では,MB91107/MB91108の取扱い上の注意について説明します。 2.1 端子,回路に関する取扱い上の注意 2.2 各デバイス使用上の注意 2.3 電源投入時の注意 17 第2章 デバイスの取扱いについて 2.1 端子,回路に関する取扱い上の注意 ラッチアップ防止,端子処理,回路の取扱いについて説明します。 ■ ラッチアップ防止 CMOS ICでは,入力端子や出力端子にVccより高い電圧やVssより低い電圧を印加 した場合,またはVcc∼Vss間に定格を超える電圧を印加した場合に,ラッチアップ 現象を生じることがあります。ラッチアップが生じると電源電流が激増し,素子の 熱破壊に至ることがありますので,使用に際しては最大定格を超えることのない よう十分に注意してください。 ■ 端子処理 ○ 未使用入力端子の処理 使用していない入力端子を開放のままにしておくと誤動作の原因となること がありますので,プルアップ,またはプルダウンなどの処理をしてください。 ○ NC端子の処理 NC端子は,必ず開放にして使用してください。 ○ 出力端子の処理 出力端子を電源や他の出力端子とショートさせたり,大きな容量負荷を接続 すると大電流が流れる場合があります。このような状態が長時間続くとデバイ スが劣化しますので,使用に際しては最大定格を超えることのないよう十分に 注意してください。 ○ 電源端子の処理 Vcc・Vssが複数ある場合,デバイス設計上はラッチアップなどの誤動作を防 止するためにデバイス内部で同電位にすべきもの同士を接続してありますが, 不要輻射の低減・グラウンドレベルの上昇によるストローブ信号の誤動作の防 止・総出力電流規格を遵守などのために,必ずそれらすべてを外部で電源およ びグラウンドに接続してください。 また,電流供給源から出来るかぎり低インピーダンスで本デバイスのVcc・Vss に接続するような配慮をお願い致します。 さらに,本デバイスの近くで,VccとVssの間に0.1μF程度のセラミックコン デンサをバイパスコンデンサとして接続することをお勧めいたします。 ○ モード端子 (MD0∼MD2)の処理 これらの端子は,VccまたはVssに直接つないで使用してください。また,ノ イズにより誤ってテストモードに入ってしまうことを防ぐために,プリント板 上の各モード端子とVccまたはVss間のパターン長をできる限り短くし,これら を低インピーダンスで接続するようにしてください。 18 2.1 端子,回路に関する取扱い上の注意 ■ 回路の取扱い ○ 水晶発振回路の取扱い X0,X1端子の近辺のノイズは本デバイスの誤動作のもととなります。X0とX1 および水晶発振子(あるいはセラミック発振子)さらにグラウンドへのバイパ スコンデンサは出来るかぎり近くに配置するようにプリント板を設計してくだ さい。 ○ プリント板の設定 X0,X1端子の回りをグラウンドで囲むようなプリント板アートワークは安定 した動作を期待できますので,強くお勧めいたします。 19 第2章 デバイスの取扱いについて 2.2 各デバイス使用上の注意 外部リセット入力,外部クロック,内蔵DC-DCレギュレータの使用上の注意につい て説明します。 ■ 外部リセット入力使用時の注意 RSTX端子に“L”レベルを入力し,内部が確実にリセット状態となるためには, RSTX端子の“L”レベル入力が最低5マシンサイクル必要です。 ■ 外部クロック使用上の注意 外部クロックを使用する際には,原則としてX0端子,またX1端子にはX0と逆相 のクロックを同時に供給してください。ただし,STOPモード(発振停止モード) を併用する場合は,STOPモード時にX1端子が“H”出力で停止しますので,出力ど うしの衝突をさけるために,外部に1KΩ程度の抵抗を入れるようにしてください。 図 2.2-1に外部クロック使用例について示します。 図 2.2-1 外部クロック使用例(通常の場合) <注意事項> STOPモード(発振停止モード)使用時には,X1端子に抵抗を入れてください。 ■ 内蔵DC-DCレギュレータ使用上の注意 MB91107/MB91108はレギュレータを内蔵しており,VCC端子に3.3Vを供給し,C端 子にはレギュレータ用に0.1μF程度のパスコンを必ず入れてください。 また,A/Dコンバータには別途3.3V電源が必要です。 図 2.2-2に電源接続例を示します。 図 2.2-2 3.3V電源の電源接続例 20 2.2 各デバイス使用上の注意 ■ STOPモード使用時の注意 MB91107/MB91108に内蔵されているレギュレータはSTOPモード時に停止します。 STOP中に内部のリーク電流(ICCH)の増加や,あるいは通常動作中にノイズ起因の 誤動作や電源の異常などによってレギュレータが停止した場合などに,内部の2.5V 電源が動作保証電圧以下に低下してしまうことがありますので,内蔵レギュレー タを使用してSTOPモードを使用する場合には,かならず外部から3.3V電源が低下し ないように電源を補助してください。また,そのような状態になった場合でもリ セットの入力により内蔵レギュレータを再起動させることができます(この場合 には発振安定待ち時間tOSCの間,リセットをLレベルにしてください)。 図 2.2-3に3.3V電源でSTOPモードの使用例を示します。 図 2.2-3 3.3V電源でSTOPモードの使用例 21 第2章 デバイスの取扱いについて 2.3 電源投入時の注意 電源投入時の端子,入力などに関する注意事項を示します。 ■ RSTX端子の処理 電源投入時には,必ずRSTX端子を“L”レベル状態から開始し,電源がVccレベ ルになってから,最低でも内部動作クロックの5サイクル分の時間を確保してから “H”レベルにしてください。 ■ 端子状態 電源投入時の端子の状態は不定です。電源を投入し発振が開始し,内蔵レギュ レータの動作が安定した後,回路の初期化が行われます。したがって原振12.5MHz の場合で発振開始から端子が初期化されるまで約42mS要します(MB91107/MB91108 は内部電源が立上がった後,RSTX端子を“L”レベル状態にすることで,端子状態 のみ,約42mSの時間待ち経過以前に初期化されます) 。 ■ 原振入力時の注意 電源投入時は,必ず発振安定待ち解除されるまでの間クロックを入力してくだ さい。 ■ ハードウェアスタンバイ HSTX端子を“L”レベル状態で電源投入された場合はスタンバイには入りません。 HSTX端子はリセット解除後に有効となりますが,一度“H”レベルに戻す必要があ ります。 ■ パワーオンリセット 電源投入時,および電源電圧が動作保証電圧を下回った場合の再投入時は,必 ずパワーオンリセットをかけてください。 22 第3章 CPU この章では,FRシリーズのCPUコアの機能を知るために,アーキテクチャ,仕様, 命令などの基本的なことについて説明します。 3.1 メモリ空間 3.2 CPUアーキテクチャ 3.3 命令キャッシュ 3.4 専用レジスタ 3.5 汎用レジスタ 3.6 データ構造 3.7 ワードアライメント 3.8 メモリマップ 3.9 命令概要 3.10 E I T ( 例外・割込み・トラップ) 3.11 リセットシーケンス 3.12 クロック 3.13 低消費電力モード 3.14 メモリアクセスモード 23 第3章 CPU 3.1 メモリ空間 FRシリーズの論理アドレス空間は4Gbyte(232番地)あり,CPUはリニアにアクセ スを行います。 ■ メモリマップ 図 3.1-1にMB91107/MB91108のメモリ空間を示します。 図 3.1-1 MB91107/MB91108のメモリマップ <注意事項> MB91107/MB91108には,上記のモードしか存在しません。 ○ ダイレクトアドレッシング領域 アドレス空間の下記の領域はI/O用に使用されます。この領域をダイレクト アドレッシング領域と呼び,命令中で直接オペランドのアドレスを指定できま す。ダイレクト領域は,アクセスするデータのサイズにより,以下のように異 なります。 l l l 24 バイトデータアクセス:0∼0FFH ハーフワードデータアクセス:0∼1FFH ワードデータアクセス:0∼3FFH 3.2 CPUアーキテクチャ 3.2 CPUアーキテクチャ CPUアーキテクチャ FR CPUは,RISCアーキテクチャを採用すると同時に,組み込み用途に向けた高機 能命令を導入した,高性能コアです。 ■ CPUアーキテクチャの特 長 ○ RISCアーキテクチャの採用 l ○ 基本命令:1命令1サイクル 32ビットアーキテクチャ l 汎用レジスタ32ビット×16本 ○ 4GBのリニアなメモリ空間 ○ 乗算器の搭載 l l ○ 多重割込みのサポート レベルマスク機能(16レベル) メモリ−メモリ転送命令 ビット処理命令 高いコード効率 l ○ 高速応答速度(6サイクル) I/O操作用命令の強化 l l ○ 16ビット×16ビット乗算:3サイクル 割込み処理機能の強化 l l l ○ 32ビット×32ビット乗算:5サイクル 基本命令語長:16ビット 低消費電力 l スリープモード,ストップモード ■ 内部アーキテクチャの構造 FRのCPUは,命令バスとデータバスが独立したハーバードアーキテクチャ構造を 採用しています。 命令バス(I-BUS)には,オンチップの命令キャッシュが接続されています。 32ビット←→16ビットバスコンバータはデータバス(D-BUS)に接続され,CPU と周辺リソースとのインタフェースを実現します。ハーバード←→プリンストン バスコンバータはI-BUS,D-BUS双方に接続され,CPUとバスコントローラとのイン タフェースを実現します。 図 3.2-1に 内部アーキテクチャの構造を示します。 25 第3章 CPU 図 3.2-1 内 部 ア ー キ テ ク チ ャ の 構 造 ○ CPU CPUは,32ビットRISCのFRアーキテクチャをコンパクトにインプリメントし たものです。 1サイクルあたり1命令の実行を行うため,5段階の命令パイプライン方式を 採用しています。パイプラインは以下のステージから構成されています。 l l l l l 命令フェッチ(IF):命令アドレスを出力し,命令をフェッチします。 命令デコード(ID):フェッチした命令をデコードします。レジスタの読 み出しも行います。 実行(EX):演算を実行します。 メモリアクセス(MA):メモリに対するロードまたはストアのアクセスを 行います。 ライトバック(WB):演算結果(またはロードされたメモリデータ)をレ ジスタに書き込みます。 図 3.2-2に命令パイプラインを示します。 図 3.2-2 命 令 パ イ プ ラ イ ン 命令は,順不同で実行されることはありません。すなわち,命令Aが命令Bの 前にパイプラインに入ると,命令Aは必ず命令Bの前にライトバックステージに 達します。 26 3.2 CPUアーキテクチャ 命令の実行は,原則として1サイクルあたり1命令の速度で行われます。ただ し,メモリウエイトを伴ったロード・ストア命令,遅延スロットを持たない分 岐命令,複数サイクル命令では命令の実行に複数のサイクルが必要となります。 また,命令の供給が遅い場合も命令の実行速度が低下します。 命令の詳細については, 「3.9 命令概要」を参照してください。 ○ 命令キャッシュ オンチップの命令キャッシュにより,外部高速メモリとそれに関連する制御 ロジックのコストを発生することなく高性能なシステムを構築することができ ます。外部バスの速度が遅い場合にも,CPUへの命令供給を高速に行うことが できます。 命令キャッシュの詳細については,「3.3 命令キャッシュ」を参照してくだ さい。 ○ 32ビット←→16ビットバスコンバータ 32ビット幅で高速アクセスされるD-BUSと,16ビット幅でアクセスされるRBUSとのインタフェースを行い,CPUから内蔵周辺回路へのデータアクセスを実 現します。 CPUから32ビット幅のアクセスがあった場合,このバスコンバータがそれを2 回の16ビット幅アクセスに変換してR-BUSへのアクセスを行います。内蔵周辺 回路の一部にはアクセス幅に関して制限のあるものがあります。 ○ ハーバード←→プリンストンバスコンバータ CPUの命令アクセスとデータアクセスの整合をとり,外部バスとのスムーズ なインタフェースを実現します。 CPUは,命令バスとデータバスが独立したハーバードアーキテクチャ構造で す。一方,外部バスの制御を行うバスコントローラは単一バスのプリンストン アーキテクチャ構造です。このバスコンバータはCPUの命令アクセスとデータ アクセスに優先順位をつけ,バスコントローラへのアクセスの制御を行います。 この働きにより,外部へのバスアクセス順位が常に最適化されたものになりま す。 また,CPUのバス待ち時間をなくすための2ワードのライトバッファと,命令 フェッチのための1ワードのプリフェッチバッファを持っています。 27 第3章 CPU 3.3 命令キャッシュ 命令キャッシュは,一時記憶メモリです。命令コードを外部の低速メモリからア クセスする場合,一度アクセスしたコードを内部に保持する役目を果たし,2回目以 降のアクセス速度を速めるために使用します。 命令キャッシュ,命令キャッシュタグはソフトウェアで直接リード/ライトアク セスはできません。 また,命令キャッシュを一度“有効(ON)”にした後,“無効(OFF)”にする場合に は,必ず「3.3.3」項に記載されているサブルーチンを使用してください。 ■ 命令キャッシュのキャッシュ可能領域 命令キャッシュは,すべての空間をキャッシュ可能領域とします。 l l 内蔵ROM搭載品では,内蔵ROMもキャッシュの対象とします。 外部領域,内蔵ROM以外の空間への命令アクセスが行われないことを前 提にしています。したがって,I/O領域の制御レジスタなどへ命令アク セスが行われてもキャッシュの対象となります。 l DMA転送で外部メモリの内容が更新されたとしてもキャッシュの内容と のコヒーレンシはとりません。このような場合はキャッシュをフラッ シュすることで,コヒーレンシを保ってください。 ■ 命令キャッシュの構成 l l l FRシリーズの基本命令長:2bytes ブロックの配置方式:2ウェイセットアソシアティブ方式 ブロック - 1ウェイは32ブロック構成 - 1ブロックは16bytes(=4サブブロック) - 1サブブロックは4bytes(=1バスアクセス単位) 図 3.3-1に命令キャッシュの構成を示します。 図 3.3-1 命令キャッシュの構成 28 3.3 命令キャッシュ ■ 命令キャッシュタグの構成 図 3.3-2に命令キャッシュタグの構成を示します。 図 3.3-2 命令キャッシュタグの構成 [bit 31∼9] アドレスタグ 対応するブロックにキャッシュされている命令のメモリアドレスの上位 23bitがストアされています。 ブロックiのサブブロックkに格納されている命令データのメモリアドレスIA は,IA=アドレスタグ×29+i×24+k×22となります。 CPUからアクセス要求された命令アドレスの一致を検査するために使用しま す。タグ検査の結果に従い,以下のような動作をします。 l l 要求された命令データがキャッシュ内に存在するとき(ヒット) ,キャッ シュからCPUへサイクル内にデータを転送します。 要求された命令データがキャッシュ内に存在しないとき(ミス),外部 アクセスで取得されたデータをCPUとキャッシュが同時に取得します。 [bit 7∼4] サブブロックバリッド SBV*=1のとき,対応するサブブロックにタグで示されたアドレスの現行命 令データがエントリされています。 サブブロックには, 通常2命令が格納されます(即値転送命令を除く) 。 [bit 3] TAGバリットビット アドレスタグの値が有効かどうかを示します。このビットが0のときはサブ バリットビットに無関係に,このブロックはインバリット状態になります(フ ラッシュ時) 。 29 第3章 CPU [bit 1] LRU(ウェイ1のみ) ウェイ1の命令キャッシュタグにのみ存在します。 選択されたセットについて,最後にアクセスしたエントリがウェイ1,2のど ちらであるかを示します。LRU=1のときはウェイ1の,LRU=0のときはウェイ2 のセットのエントリが最後にアクセスしたことを示します。 [bit 0] エントリロック タグに相当するブロック内の全エントリをキャッシュにロックします。 ETLK=1のときにロック状態で,キャッシュミス時にエントリは更新されま せん。 ただし,無効なサブブロックは更新されます。 ウェイ1,2ともにエントリロックされているときにキャッシュミスした場合 は,キャッシュミス判定の1サイクルをロスした後,外部メモリをアクセスし ます。 30 3.3 命令キャッシュ 3.3.1 命令キャッシュ制御レジスタ(ICHCR) 命令キャッシュ制御レジスタ(ICHCR) 命令キャッシュ制御レジスタ(ICHCR)は, 命令キャッシュの動作を制御します。 ICHCRへの書き込みは,以降3サイクル以内にフェッチされる命令のキャッシュ動 作に影響を与えません。 ■ 命令キャッシュ制御レジスタ(ICHCR) 命令キャッシュ制御レジスタ(ICHCR)は,ウェイ1とウェイ2で共用になっていま す。 図 3.3-3 命令キャッシュ制御レジスタ(ICHCR) [bit 5] グローバルロック すべてのカレントエントリをキャッシュにロックします。 GBLK=1のとき,キャッシュ内の有効なエントリはミス時に更新されません。 ただし,無効なサブブロックは更新されます。その際の命令データフェッチ 動作は,ロックしていないときと同様です。 グローバルロック時にも,ミス時には1サイクルのペナルティを受けます。 [bit 4] オートロックフェイル すでにロックしているエントリをさらにロックしようとするとALFL=1に セットされます。 エントリオートロック中のエントリの更新が,すでにロックされているエン トリに対して行われようとしたとき,ユーザの意図に反して,新たなエントリ がキャッシュ中にロックされません。このようなプログラムのデバッグのため に参照します。 “0”書き込みでクリアされます。 [bit 3] エントリオートロック 命令キャッシュ内の各エントリに対して,オートロッキングの有効/無効を 切り換えます。 EOLK=1のときにアクセス(ミス時のみ)されたエントリは,キャッシュタ グ内のエントリロックビットがハードウェアで1にセットされることにより, ロックされます。ロックされたエントリは以後,キャッシュミス時の更新の対 象になりません。 ただし,無効なサブブロックは更新されます。確実にロックするためには一 度フラッシュした後,このビットをセットしてください。 31 第3章 CPU [bit 2] エントリロック解除 すべてのキャッシュタグ中のエントリロックビットのクリアを指定します。 ELKR=1にセットされた次のサイクルで,すべてのキャッシュタグ中のエン トリロックビットが0にクリアされます。ただし,本ビットの内容が保持され るのは1クロックサイクルのみであり,2クロックサイクル以降は0にクリアさ れます。 <注意事項> 命令キャッシュイネーブル(ENAB=1)時にエントリクロック解除(ELKR=1)しないでください。 [bit 1] フラッシュ 命令キャッシュのフラッシュを指定します。 FLSH=1のとき,キャッシュの内容がフラッシュされます。ただし,本ビッ トの内容が保持されるのは1クロックサイクルのみであり,2クロックサイクル 以降は0にクリアされます。 <注意事項> 命令キャッシュイネーブル(ENAB=1)時にフラッシュ(FLSH=1)しないでください。 [bit 0] イネーブル 命令キャッシュのイネーブル/ディスエーブルを切り換えます。 ENAB=0のときディスエーブル状態で,CPUからの命令アクセスは,キャッシュ を介さず外部に対して直接行われます。ディスエーブル状態では,キャッシュ の内容は保存されます。 <注意事項> 命令キャッシュを有効状態から無効にする場合に,命令キャッシュとCPUのアドレスのタイミ ングの同期を取るために「3.3.3 命令キャッシュ使用時の設定方法」に記述されているとおり に行ってください。 32 3.3 命令キャッシュ 3.3.2 各動作モードの状態 動作モードによるキャッシュの状態とエントリ更新について説明します。 ■ 各動作モード時のキャッシュの状態 ディスエーブルとフラッシュは,ビット操作命令などでそのビットだけ変化さ せた場合の状態を示しています。 表 3.3-1 各動作モード時のキャッシュの状態 キャッシュメモリ アドレスタグ サブブロック バリッドビッド タ LRU グ エントリ クロックビット TAGバリッド ビット グローバル ロック オートロック 制 フェイル 御 エントリオート レ ロック ジ エントリロック ス 解除 タ イネーブル フラッシュ リセット直後 内容は不定 ディスエーブル フラッシュ 直前の状態を保持 直前の状態を保持 ディスエーブル中書換え不可能 内容は不定 直前の状態を保持 直前の状態を保持 ディスエーブル中書換え不可能 内容は不定 直前の状態を保持 直前の状態を保持 ディスエーブル中書換え不可能 内容は不定 直前の状態を保持 直前の状態を保持 ディスエーブル中書換え不可能 内容は不定 直前の状態を保持 直前の状態を保持 ディスエーブル中書換え不可能 (要エントリクロック解除) 内容は不定 直前の状態を保持 すべてのエントリがインバリッ ディスエーブル中フラッシュ可能 ド アンロック 直前の状態を保持 直前の状態を保持 ディスエーブル中書換え可能 フェイルなし 直前の状態を保持 直前の状態を保持 ディスエーブル中書換え可能 アンロック 直前の状態を保持 直前の状態を保持 ディスエーブル中書換え可能 解除なし 直前の状態を保持 直前の状態を保持 ディスエーブル中書換え可能 ディスエーブル ディスエーブル 直前の状態を保持 フラッシュしない 直前の状態を保持 メモリアクセス直後のサイクル ディスエーブル中書換え可能 でフラッシュ。以後0にもどる ■ キャッシュのエントリ更新 キャッシュのエントリ更新は,表 3.3-2のように行います。 表 3.3-2 キャッシュのエントリ更新 ヒット ミス アンロック 更新しない。 メモリをロードし,キャッシュの エントリの内容を更新する。 ロック 更新しない。 タグミスの場合は更新しない。 サブブロックインバリッドの場合は更新する。 33 第3章 CPU 3.3.3 命令キャッシュ使用時の設定方法 MB91107/MB91108の命令キャッシュを使用するときの設定方法について説明します。 ■ 命令キャッシュ使用時の設定方法 ○ 初期化 命令キャッシュを使い始めるとき,最初にキャッシュの中身をクリアしてお く必要が有ります。 レジスタのFLSHビットとELKRビットを“1”にして,過去のデータを消去し ます。 ldi ldi #0x000003e7,r0 // 命令キャッシュ制御レジスタのアドレス #0B00000110,r1 // FLSHビット(1ビット) // ELKRビット(2ビット) r1,@r0 // レジスタへ書き込み stb これでキャッシュが初期化されます。 また,キャッシュを使用開始後にクリアする場合は,必ずキャッシュディス エーブルの状態で行ってください。 ldi ldi stb ldi stb ○ #0x000003e7,r0 #0B00000000,r1 r1,@r0 #0B00000010,r1 r1,@r0 // // // // // 命令キャッシュ制御レジスタのアドレス キャッシュディスエーブル レジスタへ書き込み FLSHビット(1ビット) レジスタへ書き込み キャッシュを有効(ON)にする 命令キャッシュを有効にするにはENABビットを“1”にします。 ldi ldi stb #0x000003e7,r0 // 命令キャッシュ制御レジスタのアドレス #0B00000001,r1 // ENABビット(0ビット) r1,@r0 // レジスタへ書き込み これ以降の命令アクセスがキャッシュに取り込まれて行きます。 キャッシュの有効化は,キャッシュの初期化と同時に行うこともできます。 ldi ldi #0x000003e7,r0 // 命令キャッシュ制御レジスタのアドレス #0B00000111,r1 // ENABビット(0ビット) // FLSHビット(1ビット) // ELKRビット(2ビット) r1,@r0 // レジスタへ書き込み stb ○ キャッシュを無効(OFF)にする 命令キャッシュを無効にするにはENABビットを“0”にします。 キャッシュを無効(OFF)にする場合に命令キャッシュとCPUとのアドレス整合 性を保つため,下記のプログラム例のように解除後にNOP,RET,JMPによってタ イミング同期を行ってください。 l ldi ldi stb nop nop nop ret ret ret 34 サブルーチンで無効にする場合 #0x000003e7,r0 // 命令キャッシュ制御レジスタのアドレス #0B00000000,r1 // ENABビット(0ビット) r1,@r0 // レジスタへ書き込み // タイミング同期のためnopを3回実行 // // // タイミング同期のためretを3回実行 // // 3.3 命令キャッシュ l プログラムの途中で無効にする場合 ldi #cHcHe_off,r2 ldi #0x000003e7,r0 ldi #0B00000000,r1 stb r1,@r0 nop nop nop jmp @r2 jmp @r2 jmp @r2 chche_off: // // // // // // // // // // // キャッシュOFF後の飛び先指定 命令キャッシュ制御レジスタのアドレス ENABビット(0ビット) レジスタへ書き込み タイミング同期のためnopを3回実行 タイミング同期のためjmpを3回実行 ラベル この状態(リセット後の状態と同じ)では,キャッシュは無いのと同じで,何 もしません。 キャッシュのオーバヘッドが気になる処理のときは,OFFにすると良いかも 知れません。 ○ キャッシュの内容をすべてロックする 現在命令キャッシュに入っている命令がキャッシュから追い出され無いよう にロックします。 レジスタのGBLKビットを“1”にします。ENABビットも“1”にしておかない と,キャッシュがOFFになってしまい,キャッシュ内のロックした命令が使わ れません。 ldi ldi stb ○ #0x000003e7,r0 // 命令キャッシュ制御レジスタのアドレス #0B00100001,r1 // ENABビット(0ビット) // GBLKビット(5ビット) r1,@r0 // レジスタへ書き込み 特定の命令をキャッシュにロックする 特定の命令群(サブルーチンなど)をキャッシュにロックするには,それらの 命令を実行する前にEOLKビットを“1”にします。 ロックした命令は高速な内部ROMのようにアクセスされます。 ldi ldi stb #0x000003e7,r0 // 命令キャッシュ制御レジスタのアドレス #0B00001001,r1 // ENABビット(0ビット) // EOLKビット(3ビット) r1,@r0 // レジスタへ書き込み メモリのウェイト数に依りますが,Stb命令の次以降の命令から有効になり ます。 ロックしたい命令群が終った所でEOLKビットを“0”にします。 ldi ldi stb ○ #0x000003e7,r0 // 命令キャッシュ制御レジスタのアドレス #0B00000001,r1 // ENABビット(0ビット) // EOLKビット(3ビット) r1,@r0 // レジスタへ書き込み キャッシュのロックを解除する 上記でロックした命令のロック情報を解除します。 ldi ldi stb ldi stb #0x000003e7,r0 #0B00000000,r1 r1,@r0 #0B00000100,r1 r1,@r0 // // // // // 命令キャッシュ制御レジスタのアドレス キャッシュディスエーブル レジスタへ書き込み ELKRビット(2ビット) レジスタへ書き込み ロック情報だけ解除されるので,ロックされていた命令は,LRUビットの状 態に応じて順次新しい命令に置き換わります。 35 第3章 CPU 3.4 専用レジスタ 専用レジスタは,特定の目的のために使用します。プログラムカウンタ(PC) ,プ ログラムステータス(PS) ,テーブルベースレジスタ(TBR) ,リターンポインタ(RP) , システムスタックポインタ(SSP) ,ユーザスタックポインタ(USP),および乗除算 結果レジスタ(MDH/MDL)が用意されています。 ■ 専用レジスタ 図 3.4-1に専用レジスタの構成を示します。 図 3.4-1 専用レジスタの構成 ○ プログラムカウンタ(PC) プログラムカウンタで,実行している命令のアドレスを示しています。 命令の実行を伴うPCの更新時に,ビット0は“0”に設定されます。ビット0 が“1”になる可能性があるのは,分岐先アドレスとして奇数番地を指定した 場合だけです。ただし,その場合でもビット0は無効であり,命令は2の倍数の アドレスに置く必要があります。 リセットによる初期値は不定です。 ○ プログラムステータス(PS) プログラムステータスを保持するレジスタで,CCR,SCR,ILMの三つのパー トに分かれています。詳細については, 「3.4.1」を参照してください。 未定義のビットはすべて予約ビットです。読出し時,常に“0”が読みださ れます。 書込みは無効です。 ○ テーブルベースレジスタ(TBR) テーブルベースレジスタで,EIT処理の際に使用されるベクタテーブルの先 頭アドレスを保持します。 リセットによる初期値は,000FFC00Hです。 36 3.4 専用レジスタ ○ リターンポインタ(RP) リターンポインタで,サブルーチンから復帰するアドレスを保持します。 CALL命令実行時,PCの値がこのRPに転送されます。 RET命令実行時,RPの内容がPCに転送されます。 リセットによる初期値は不定です。 ○ システムスタックポインタ(SSP) SSPは,システムスタックポインタです。 Sフラグが“0”のとき,R15として機能します。 SSPを明示的に指定することも可能です。 また,EIT発生時に,PSとPCを退避するスタックを指定するスタックポイン タとしても使用されます。 リセットによる初期値は00000000Hです。 ○ ユーザスタックポインタ(USP) USPは,ユーザスタックポインタです。 Sフラグが“1”のとき,R15として機能します。 USPを明示的に指定することも可能です。 リセットによる初期値は不定です。 RETI命令で使用することはできません。 ○ 乗除算結果レジスタ(MDH/MDL) 乗除算用のレジスタで,両方とも32ビット長です。 リセットによる初期値は不定です。 【乗算実行時】 32ビット×32ビットの乗算のとき,64ビット長の演算結果は,以下の配置で 乗除算結果格納レジスタに格納されます。 l l MDH:上位32ビット MDL:下位32ビット 16ビット×16ビットの乗算のときは,以下のように結果が格納されます。 l l MDH:不定 MDL:結果32ビット 【除算実行時】 計算開始時,被除数をMDLに格納します。 DIV0S/DIV0U,DIV1,DIV2,DIV3,DIV4S命令の実行により除算を計算すると,結 果がMDLとMDHに格納されます。 l l MDH:剰余 MDL:商 37 第3章 CPU 3.4.1 プログラムステータスレジスタ(PS) プログラムステータスレジスタ(PS) プログラムステータスを保持するレジスタで,ILM,SCR,およびCCRの三つのパー トに分かれています。 未定義のビットはすべて予約ビットです。読出し時,常に“0”が読みだされます。 書込みは無効です。 ■ プログラムステータスレジスタ(PS) プログラムステータスレジスタ(PS)のレジスタ構成は以下のとおりです。 ○ コンディションコードレジスタ(CCR) コンディションコードレジスタ(CCR)のレジスタ構成は以下のとおりです。 [bit 5]S:スタックフラグ R15として使用されるスタックポインタを指定します。 値 0 1 内 容 SSPがR15として使用されます。 EIT発生時,自動的に“0”となります。 (ただし,スタックに退避される値はクリアされる前の値です。) USPがR15として使用されます。 リセットにより“0”にクリアされます。 RETI命令実行時には“0”にしてください。 [bit 4]I:割込み許可フラグ ユーザ割込み要求の許可・禁止を制御します。 値 0 1 内 容 ユーザ割込み禁止。 INT命令実行時,“0”にクリアされます。 (ただし,スタック退避させる値はクリアする前の値です。) ユーザ割込み許可。 ユーザ割込み要求のマスク処理は,ILMの保持する値により制御されます。 リセットにより“0”にクリアされます。 38 3.4 専用レジスタ [bit 3]N:ネガティブフラグ 演算結果を2の補数で表現された整数とみなしたときの符号を示します。 値 0 1 内 容 演算結果が正の値であったことを示します。 演算結果が負の値であったことを示します。 リセットによる初期状態は不定です。 [bit 2]Z:ゼロフラグ 演算結果が0であったかどうかを示します。 値 0 1 内 容 演算結果が0以外の値であったことを示します。 演算結果が0であったことを示します。 リセットによる初期状態は不定です。 [bit 1]V:オーバフローフラグ 演算に用いたオペランドを2の補数で表現される整数であるとみなし,演算 の結果,オーバフローが生じたかどうかを示します。 値 0 1 内 容 演算の結果,オーバフローは生じていないことを示します。 演算の結果,オーバフローが生じたことを示します。 リセットによる初期状態は不定です。 [bit 0]C:キャリフラグ 演算により,最上位ビットからのキャリ,またはボローが発生したかどうか を示します。 値 0 1 内 容 キャリもボローも発生していないことを示します。 キャリまたはボローが発生したことを示します。 リセットによる初期状態は不定です。 39 第3章 CPU ○ システムコンディションコードレジスタ(SCR) システムコンディションコードレジスタ(SCR)の構成は以下のとおりです。 [bit 10,9]D1,D0:ステップ除算用フラグ ステップ除算実行時の中間データを保持します。 除算処理の実行途中は,変更してはいけません。 ステップ除算実行途中に他の処理を行う場合は,PSレジスタの値を退避・復 帰することによりステップ除算の再開が保証されます。 リセットによる初期状態は不定です。 DIV0S命令の実行により,被除数と除数を参照して設定されます。 DIV0U命令の実行により,強制的にクリアされます。 [bit 8]ステップトレーストラップフラグ ステップトレーストラップを有効にするかどうかを指定するフラグです。 値 0 1 内 容 ステップトレーストラップ無効 ステップトレーストラップ有効 このとき,ユーザ用NMIとユーザ割込みが全て割込み禁止となります。 リセットにより“0”に初期化されます。 ステップトレーストラップの機能はエミュレータが使用します。エミュレー タ使用時,ユーザプログラム中で使用することはできません。 ○ 割込みレベルマスクレジスタ(ILM) 割込みレベルマスクレジスタ(ILM)の構成は以下のとおりです 割込みレベルマスク値を保持するレジスタで,このILMの保持する値がレベ ルマスクに使用されます。 CPUに入力される割込み要求の中で,対応する割込みレベルが,このILMで示 されるレベルよりも強い場合にのみ割込み要求が受け付けられます。 レベル値は,0(00000B)が最強で,31(11111B)が最弱です。 プログラムから設定可能な値には制限があります。元の値が16∼31のとき, 新たな値として設定できるのは16∼31です。0∼15を設定する命令を実行する と, “指定した値+16”という値が転送されます。 元の値が0∼15のときは,0∼31の任意の値が設定可能です。 リセットにより,15(01111B)に初期化されます。 40 3.5 汎用レジスタ 3.5 汎用レジスタ レジスタR0∼R15は汎用レジスタです。各種演算におけるアキュムレータ,および メモリアクセスのポインタとして使用されます。 ■ 汎用レジスタ 図 3.5-1に汎用レジスタの構成を示します。 図 3.5-1 汎用レジスタの構成 16本のレジスタのうち,以下に示すレジスタは特殊な用途を想定しています。 そのため,一部の命令が強化されています。 l l l R13:仮想アキュムレータ R14:フレームポインタ R15:スタックポインタ リセットによるR0∼R14の初期値は不定です。R15の初期値は00000000H(SSPの 値)となります。 41 第3章 CPU 3.6 データ構造 FRシリーズのデータ配置は,次のようになっています。 ・ビットオーダリングの場合:リトルエンディアン ・バイトオーダリングの場合:ビックエンディアン ■ ビットオーダリング FRシリーズは,ビットオーダリングとして,リトルエンディアンを採用してい ます。 図 3.6-1にビットオーダリングのデータ配置を示します。 図 3.6-1 ビットオーダリングのデータ配置 ■ バイトオーダリング FRシリーズでは,バイトオーダリングとして,ビッグエンディアンを採用して います。 図 3.6-2にバイトオーダリングのデータ配置を示します。 図 3.6-2 バイトオーダリングのデータ配置 42 3.7 ワードアライメント 3.7 ワードアライメント 命令やデータはバイト単位でアクセスするため,配置するアドレスは命令長やデー タ幅で異なります。 ■ プログラムアクセス FRシリーズのプログラムは,2の倍数のアドレスに配置する必要があります。 プログラムカウンタ(PC)のビット0は,命令の実行に伴うPCの更新時に, “0” に設定されます。“1”になる可能性があるのは,分岐先アドレスとして奇数番地 を指定した場合だけです。ただし,その場合でもビット0は無効であり,命令は2 の倍数のアドレスに置かなくてはなりません。 奇数アドレス例外はありません。 ■ データアクセス FRシリーズでは,データアクセスを行う際,その幅により以下のように強制的 なアラインメントがアドレスに対して施されます。 l l l ワードアクセス:アドレスは,4の倍数(最下位2bitは強制的に00) ハーフワードアクセス:アドレスは,2の倍数(最下位bitは強制的に0) バイトアクセス:− ワードおよびハーフワードデータアクセス時に,一部のビットが強制的に0にさ れるのは,実効アドレスの計算結果に対してです。例えば,@(R13,Ri)のアドレッ シングモードの場合,加算前のレジスタは(たとえ最下位ビットが1であっても) そのまま計算に使用され,加算結果の下位ビットがマスクされます。計算前のレ ジスタがマスクされるわけではありません。 [例] LD @(R13,R2),R0 43 第3章 CPU 3.8 メモリマップ MB91107/MB91108のメモリマップとFRシリーズ共通のメモリマップを示します。 ■ MB91107/MB91108のメモリマップ アドレス空間は32ビットリニアです。 図 3.8-1にMB91107/MB91108のメモリマップを示します。 図 3.8-1 MB 91107/ MB911 08 の メ モ リ マ ッ プ ○ ダイレクトアドレッシング領域 アドレス空間の下記の領域は,I/O用の領域です。この領域は,ダイレクト アドレッシングにより,命令中で直接オペランドアドレスを指定することがで きます。 ダイレクトアドレス指定可能なアドレス領域の大きさは,データ長ごとに異 なります。 l l l ○ バイトデータ(8ビット) :0∼0FFH ハーフワードデータ(16ビット) :0∼1FFH ワードデータ(32ビット) :0∼3FFH ベクタテーブル初期領域 000FFC00H∼000FFFFFHの領域はEITベクタテーブル初期領域です。 EIT処理時に使用されるベクタテーブルは,TBRを書き換えることにより任意 のアドレスに配置できますが,リセットによる初期化によってこのアドレスに 配置されます。 44 3.8 メモリマップ ■ FRシリーズ共通のメモリマップ FRシリーズでは,メモリマップを以下のように定めています。 これは,品種によらず共通です(シングルチップモードを除く) 。 図 3.8-2にFRシリーズ共通のメモリマップを示します。 図 3.8-2 FRシリーズ共通のメモリマップ 45 第3章 CPU 3.9 命令概要 FRシリーズは,一般的なRISCの命令体系に加え,組込み用途に最適化された論理 演算,ビット操作およびダイレクトアドレッシング命令をサポートしています。各 命令は16ビット長(一部命令は32,48ビット長)ですので,優れたメモリ使用効率 を持ちます。命令の詳細については,「付録E 命令一覧」を参照してください。 命令セットは以下の機能グループに分けることができます。 ・算術演算 ・ロードとストア ・分岐 ・論理演算とビット操作 ・ダイレクトアドレッシング ・その他 ■ 命令概要 ○ 算術演算 標準の算術演算命令(加算,減算,比較)およびシフト命令(論理シフト, 算術演算シフト)があります。加算と減算については,多ワード長演算で使用 するキャリ付き演算や,アドレス計算に便利なフラグ値を変化させない演算も 可能です。 さらに,32ビット×32ビット,16ビット×16ビットの乗算命令と,32ビット ÷32ビットのステップ除算命令を持ちます。 また,レジスタに即値をセットする即値転送命令や,レジスタ間転送命令も 備えています。 算術演算命令は,すべてCPU内の汎用レジスタおよび乗除算レジスタを用い て演算を行います。 ○ ロードとストア ロードとストアは,外部メモリに対して読み出しと書き込みを行う命令です。 また,チップ内の周辺回路(I/O)への読み出しと書き込みにも使用されます。 ロードとストアは,バイト,ハーフワード,ワードの3種類のアクセス長を 持ちます。また,一般的なレジスタ間接のメモリアドレッシングに加え,一部 の命令についてはディスプレースメント付きレジスタ間接やレジスタインクリ メント/デクリメント付きレジスタ間接のメモリアドレッシングも可能です。 ○ 分岐 分岐,コール,割込みおよび復帰の命令です。分岐命令は,遅延スロットを 持つものと持たないものがあり,用途に応じて最適化を行うことができます。 分岐命令の詳細については,「3.9.1 遅延スロット付き分岐命令」,「3.9.2 遅延スロットなし分岐命令」を参照してください。 ○ 論理演算とビット操作 論理演算命令は,汎用レジスタ間,または汎用レジスタとメモリ(およびI/O) 間でAND,OR,EORの論理演算を行うことができます。また,ビット操作命令はメ モリ(およびI/O)の内容を直接操作することができます。メモリアドレッシ ングは一般的なレジスタ間接です。 46 3.9 命令概要 ○ ダイレクトアドレッシング ダイレクトアドレッシング命令は,I/Oと汎用レジスタ間,またはI/Oとメモ リ間のアクセスに使用する命令です。I/Oのアドレスをレジスタ間接ではなく 命令中で直接指定することにより,高速,高効率なアクセスを行うことができ ます。一部の命令についてはレジスタインクリメント/デクリメント付きレジ スタ間接のメモリアドレッシングも可能です。 ○ その他 PSレジスタ内のフラグ設定,スタック操作,符号/ゼロ拡張などを行う命令 です。また,高級言語対応の関数入口/出口,レジスタマルチロード/ストア 命令も備えています。 47 第3章 CPU 3.9.1 遅延スロット付き分岐命令 遅延スロット付きの動作では,分岐先の命令を実行する前に,分岐命令の直後( “遅 延スロット”と呼びます)に置かれた命令を実行した後に,分岐します。 ■ 遅延スロット付き分岐命令 以下に示す表記をした命令が,遅延スロット付きの分岐動作を行います。 JMP:D BRA:D BC:D BV:D BLE:D @Ri label9 label9 label9 label9 CALL:D BNO:D BNC:D BNV:D BGT:D label12 label9 label9 label9 label9 CALL:D BEQ:D BN:D BLT:D BLS:D @Ri label9 label9 label9 label9 RET:D BNE:D BP:D BGE:D BHI:D label9 label9 label9 label9 ■ 遅延スロット付き分岐命令の動作説明 遅延スロット付きの動作では,分岐先の命令を実行する前に,分岐命令の直後 ( “遅延スロット”と呼びます)に置かれた命令を実行した後に,分岐します。 分岐動作の前に遅延スロットの命令を実行するため,見掛け上の実行速度が1サ イクルとなります。その代わり,遅延スロットに有効な命令を入れることができ ないときは,NOP命令を置かなくてはなりません。 [例] ; 命令の並び ADD R1, R2 BRA:D LABEL MOV R2, R3 … LABEL : ST R3, @R4 ; ; 分岐命令 ; 遅延スロット …… 分岐の前に実行される ; 分岐先 条件分岐命令の場合,分岐条件が成立する場合も成立しない場合も遅延スロッ トに置かれた命令は実行されます。 遅延分岐命令では,一部の命令の実行順序が反転するように見えますが,それ はPCの更新動作だけについてであり,その他の動作(レジスタの更新/参照など) はあくまで記述された順番で実行されます。 次に,具体的に説明します。 ○ JMP:D @Ri / CALL:D @Ri命令で参照するRiは,遅延スロットの中の命令がRi を更新しても影響を受けません。 [例] LDI:32 JMP:D LDI:8 … 48 #Label, R0 @R0 #0, R0 ; LabeL に分岐 ; 分岐先アドレスには影響を与えない。 3.9 命令概要 ○ RET:D命令が参照するRPは,遅延スロットの中の命令がRPを更新しても影響 を受けません。 [例] RET:D MOV … ○ R8, RP ; これより前に設定されたRPの示すアドレスへ分岐 ; リターン動作には影響を与えない。 Bcc:D reL命令が参照するフラグも,遅延スロットの命令の影響を受けませ ん。 [例] ADD #1, R0 BC:D Overflow ANDCCR #0 … ○ ; フラグ変化 ; 上記の命令の実行結果により分岐 ; このフラグ更新は上記分岐命令では参照しない。 CALL:D命令の遅延スロットの中の命令でRPを参照すると,CALL:D命令により 更新された内容が読み出されます。 [例] CALL:D Label MOV RP, … R0 ; RPを更新して分岐 ; 上記CALL:Dの実行結果のRPを転送 ■ 遅延スロット付き分岐命令の制限事項 ○ 遅延スロットに置くことができる命令 遅延スロット内で実行できるのは,以下の条件を満たす命令のみです。 l l l 1サイクル命令 分岐命令ではないこと 順番が変化した場合でも動作に影響を与えない命令 「1サイクル命令」とは,命令一覧表中でサイクル数の欄が「1」 , 「a」 , 「b」 , 「c」 ,または「d」と記載された命令です。 ○ ステップトレーストラップ 遅延スロットを持つ分岐命令の実行と遅延スロットの間では,ステップト レーストラップは発生しません。 ○ 割込み/NMI 遅延スロットを持つ分岐命令の実行と遅延スロットの間では,割込み/NMI を受理しません。 ○ 未定義命令例外 遅延スロットに未定義命令があった場合,未定義命令例外は発生しません。 このとき,未定義命令はNOP命令として動作します。 49 第3章 CPU 3.9.2 遅延スロットなし分岐命令 遅延スロットなしの動作では,あくまで命令の並びの順に実行します。 ■ 遅延スロットなし分岐命令 以下に示す表記をした命令が,遅延スロットなしの分岐動作を行います。 JMP BRA BC BV BLE @Ri label9 label9 label9 label9 CALL BNO BNC BNV BGT label12 label9 label9 label9 label9 CALL BEQ BN BLT BLS @Ri label9 label9 label9 label9 RET BNE BP BGE BHI label9 label9 label9 label9 ■ 遅延スロットなし分岐命令の動作説明 遅延スロットなしの動作では,あくまで命令の並びの順に実行します。直後の 命令が分岐前に実行されることはありません。 [例] ; LABEL 命令の並び ADD R1, R2 BRA LABEL MOV R2, R3 … ST R3, @R4 ; ; 分岐命令(遅延スロットなし) ; 実行されない ; 分岐先 遅延スロットなしの分岐命令の実行サイクル数は,分岐するとき2サイクル,分 岐しないとき1サイクルとなります。 遅延スロットに適当な命令を入れることができないためにNOPを明記した遅延ス ロット付き分岐命令に比べ,命令コード効率を上げることができます。 遅延スロットに有効な命令を設置できるときは遅延スロット付きの動作を選択 し,そうでないときは遅延スロットなしの動作を選択することで,実行速度とコー ド効率を両立させることが可能となります。 50 3.10 EIT(例外・割込み・トラップ) 3.10 E I T ( 例外・割込み 例外・割込み・トラップ ・割込み・トラップ) ・トラップ) EITとは,現プログラム実行時にイベントの発生によりそのプログラムの実行を中 断し他のプログラムを実行することを指し,例外(Exception),割込み(Interrupt), トラップ(Trap)の総称です。 例外とは,実行中のコンテキストに関連して発生する事象です。例外を起こした 命令から再実行します。 割込みとは,実行中のコンテキストに無関係に発生する事象です。イベント要因 は,ハードウェアです。 トラップとは,実行中のコンテキストに関連して発生する事象です。システムコー ルのようにプログラムで指示するものがあります。トラップを起こした命令の次の 命令から再実行します。 ■ EITの特長 l l l l 割込みに多重割込みをサポート 割込みにレベルマスク機能(15レベルをユーザが使用可能) トラップ命令(INT) エミュレータ起動用EIT(ハードウェア/ソフトウェア) ■ EIT要因 EIT要因として,次のものがあります。 l l l l l l l l l l リセット ユーザ割込み(内部リソース,外部割込み) NMI 遅延割込み 未定義命令例外 トラップ命令(INT) トラップ命令(INTE) ステップトレーストラップ コプロセッサ不在トラップ コプロセッサエラートラップ ■ EITからの復帰 EITからの復帰は,次の命令を使用します。 l RETI命令 ■ EITの注意事項 ○ 遅延スロット 分岐命令の遅延スロットには,EITに関して制約があります。詳しくは,「3.9 命令概要」を参照してください。 51 第3章 CPU 3.10.1 EITの割込みレベル EITの割込みレベル 割込みレベルは0∼31で,5ビットで管理されます。 ■ 割込みレベル 各レベルの割り当てを表 3.10-1に示します。 表 3.10-1 割込みレベル レベル 2進数 10進数 00000 0 00011 3 00100 4 要 因 (システム予約) (システム予約) INTE命令 ステップトレーストラップ 00101 5 01110 01111 10000 10001 14 15 16 17 11110 11111 30 31 備 考 (システム予約) (システム予約) NMI(ユーザ用) 割込み 割込み 割込み − ILMの元の値が16∼31のとき, この範囲の値をプログラムによ りILMに設定することはできま せん。 ILM設定時,ユーザ割込み禁止 ICR設定時,割込み禁止 操作が可能なのは,16∼31のレベルです。 未定義命令例外,コプロセッサ不在トラップ,コプロセッサエラートラップ, およびINT命令は,割込みレベルの影響を受けません。また,ILMを変化させるこ ともありません。 52 3.10 EIT(例外・割込み・トラップ) ■ Iフラグ 割込みの許可/禁止を指定するフラグです。PSレジスタのCCRのビット4として 設けられています。 値 0 1 内 容 割込み禁止。 INT命令実行時“0”にクリアされます。 (ただし,スタック退避させる値はクリアする前の値です。) 割込み許可。 割込み要求のマスク処理は,ILMの保持する値により制御されます。 ■ 割込みレベルマスクレジスタ(ILM) 割込みレベルマスク値を保持するPSレジスタ(20∼16)です。 CPUに入力される割込み要求の中で,対応する割込みレベルが,このILMで示さ れるレベルよりも強い場合にのみ割込み要求が受け付けられます。 レベル値は,0(00000B)が最強で,31(11111B)が最弱です。 プログラムから設定可能な値には制限があります。元の値が16∼31のとき,新 たな値として設定できるのは16∼31です。0∼15の値を設定する命令を実行すると, “指定した値+16”という値が転送されます。 元の値が0∼15のときは,0∼31の任意の値が設定可能です。 <注意事項> 設定するには,SETILM命令を使用してください。 ■ 割込み/NMIに対するレベルマスク NMIおよび割込み要求が発生したときは,割込み要因の持つ割込みレベル「表 3.10-1」がILMの保持するレベルマスク値と比較されます。そして,次の条件が成 立したときはマスクされ,要求は受理されません。 l 要因の持つ割込みレベル ≧ レベルマスク値 53 第3章 CPU 3.10.2 割込み制御レジスタ( 割込み制御レジスタ(ICR) 割込みコントローラ内に設けられたレジスタで,割込みの各要求に対するレベル を設定します。ICRは割込み要求入力の各々に対応して用意されています。ICRはI/O 空間にマッピングされており,CPUからはバスを通してアクセスされます。 ■ 割込み制御レジスタ(I CR) 割込み制御レジスタ(I C R )の構成は以下のとおりです。 [bit 4]ICR4 常に“1”です。 [bit 3∼0]ICR3∼0 対応する割込み要因の割込みレベルの下位4ビットです。 リード/ライト可能です。 bit4と合わせて,ICRは16∼31の範囲で値を設定することができます。 ■ 割込み制御レジスタ(I CR) マッピング 表 3.10-2に割込み要因と割込みベクタの割当てを示します。 表 3.10-2 割込み要因と割込みベクタの割当て 割込み制御レジスタ 割込み要因 IRQ00 IRQ01 IRQ02 IRQ45 IRQ46 IRQ47 詳細は,「第11章 54 番号 I CR00 I CR01 I CR02 I CR45 I CR46 I CR47 アドレス 00000400 H 00000401 H 00000402 H 0000042D H 0000042E H 0000042F H 対応する割込みベクタ 番号 アドレス 16進 10進 10 H 16 TBR + 3BC H 11 H 17 TBR + 3B8 H 12 H 18 TBR + 3B4 H 3D H 61 TBR + 308 H 3E H 62 TBR + 304 H 3F H 63 TBR + 300 H 割込みコントローラ」を参照してください。 3.10 EIT(例外・割込み・トラップ) 3.10.3 システムスタックポインタ(SSP) システムスタックポインタ(SSP) システムスタックポインタ(SSP)は,EITの受理および復帰動作時のデータ退避 /復活用スタックを示すポインタとして使用されます。 ■ システムスタックポインタ(SSP) システムスタックポインタ(SSP)のレジスタ構成は以下のとおりです。 EIT処理時に内容が8減算され,RETI命令の実行によるEITからの復帰動作時に8 加算されます。 リセットによる初期値は00000000Hです。 55 第3章 CPU 3.10.4 割込みスタック システムスタックポインタ(SSP)により示される領域で,PCおよびPSの値が退避 /復活されます。割込み後はSSPの示すアドレスにPC, “SSP+4”のアドレスにPSが格 納されています。 ■ 割込みスタック 図 3.10-1に割込みスタックの例を示します。 図 3.10-1 割込みスタックの例 56 3.10 EIT(例外・割込み・トラップ) 3.10.5 テーブルベースレジスタ(TBR) テーブルベースレジスタ(TBR) テーブルベースレジスタ(TBR)は,EIT用ベクタテーブルの先頭アドレスを示す レジスタです。 ■ テーブルベースレジスタ(TBR) テーブルベースレジスタ(TBR)のレジスタ構成は以下のとおりです。 TBRとEIT要因ごとに決められたオフセット値を加算したアドレスが,ベクタア ドレスとなります。 リセットによる初期値は000FFC00Hです。 57 第3章 CPU 3.10.6 EITベクタテーブル EITベクタテーブル テーブルベースレジスタ(TBR)の示すアドレスから1KBの領域が,EIT用ベクタ領 域となっています。 ■ EITベクタテーブル 1ベクタ当たりの大きさは4バイトで,ベクタ番号とベクタアドレスの関係は下 記のように表されます。 vctadr = TBR + vctofs = TBR + (3FCH - 4 × vct) vctadr:ベクタアドレス vctofs:ベクタオフセット vct:ベクタ番号 加算結果の下位2ビットは常に“00”として扱われます。 000FFC00H ∼000FFFFFH の領域が,リセットによるベクタテーブルの初期領域で す。 58 3.10 EIT(例外・割込み・トラップ) ベクタの一部には特殊な機能が割り当てられています。 アーキテクチャ上のベクタテーブルを表 3.10-3に示します。 表 3.10-3 ベクタテーブル ベクタオフセット (16進) ベクタ番号 説 明 3FC 3F8 3F4 3F0 16進 00 01 02 03 10進 0 1 2 3 3E0 3DC 3D8 3D4 3D0 3CC 3C8 3C4 3C0 3BC 3B8 07 08 09 0A 0B 0C 0D 0E 0F 10 11 7 8 9 10 11 12 13 14 15 16 17 システム予約 システム予約 INTE命令 システム予約 システム予約 ステップトレーストラップ システム予約 未定義命令例外 NMI (ユーザ用) マスク可能割込み要因 #0 マスク可能割込み要因 #1*2 300 2FC 2F8 2F4 3F 40 41 42 63 64 65 66 マスク可能割込み要因/INT命令 システム予約(REALOSにて使用) システム予約(REALOSにて使用) マスク可能割込み要因/INT命令 リセット*1 システム予約 システム予約 システム予約 000 FF 255 *1:TBRの値を変更してもリセットベクタは常に固定アドレス000FFFFCHが使用されます。 *2:本品種におけるベクタテーブルは「B 割込みベクタ」を参照してください。 59 第3章 CPU 3.10.7 多重EIT 多重EIT処理 EIT処理 複数のEIT要因が同時に発生した場合,CPUは一つのEIT要因を選択して受理し,EIT シーケンスを実行した後,再びEIT要因の検出を行う,という動作を繰り返します。 EIT要因検出の際に,受理可能なEIT要因がなくなったとき,最後に受理したEIT要因 のハンドラの命令を実行します。 そのため,複数のEIT要因が同時に発生した場合の各要因のハンドラの実行順序は, 次の二つの要素により決まります。 ・EIT要因受理の優先順位 ・受理した場合に他の要因をどのようにマスクするか ■ EIT要因受理の優先順位 EIT要因受理の優先度とは,PSとPCを退避してPCを更新し(必要に応じて)他の 要因のマスク処理を行うという,EITシーケンスを実行する要因を選ぶときの順番 です。 必ずしも,先に受理された要因のハンドラが先に実行されるわけではありませ ん。 EIT要因受理の優先度は,表 3.10-4のようになっています。 表 3.10-4 EIT要因の受理の優先度と他の要因へのマスク 受理の優先順位 要 因 他の要因に対するマスク 1 リセット 他の要因は破棄されます。 2 未定義命令例外 取消 3 INT命令 Iフラグ=0 4 ユーザ割込み ILM=受理した要因のレベル 5 NMI(ユーザ用) ILM=15 6 (INTE命令) ILM=4* 7 NMI(エミュレータ用) ILM=4 8 ステップトレーストラップ ILM=4 9 INTE命令 ILM=4 *:INTE命令とエミュレータ用NMIが同時に発生したときのみ優先度が6になります(MB91V107 ではエミュレータ用NMIをデータアクセスによるブレークに使用しています)。 EIT要因を受理した後,他の要因に対するマスクの処理を加味すると,同時に発 生したEIT要因の各ハンドラの実行順序は,表 3.10-5のようになります。 表 3.10-5 EITハンドラの実行順序 ハンドラの実行順序 要 因 1 リセット*1 2 未定義命令例外 3 ステップトレーストラップ*2 4 INTE命令*2 5 NMI(ユーザ用) 6 INT命令 7 ユーザ割込み *1:他の要因は破棄されます。 *2:INTE命令をステップ実行したときは,ステップトレーストラップの EITのみ発生します。INTEによる要因は無視されます。 60 3.10 EIT(例外・割込み・トラップ) 図 3.10-2に多重EIT処理の例を示します。 図 3.10-2 多重EIT処理例 61 第3章 CPU 3.10.8 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) 選択された割込み要求の割込みレベルをILMで決定されるレベルマスク値 と比較します。 - 割込みレベル ≧ レベルマスク値 のとき,割込み要求はマスクさ れ受理されない。 - 割込みレベル < レベルマスク値 のとき,4)へ 4) 選択された割込み要求がマスク可能割込みであるとき,Iフラグが0なら ば割込み要求はマスクされ,受理されません。Iフラグが1ならば5)へ。 - 5) 選択された割込み要求がNMIであるとき,Iフラグの値にかかわらず5) へ。 上記の条件が成立したとき,命令処理の切れ目で割込み要求が受理され ます。 EIT要求検出時に,ユーザ割込み/NMIの要求が受理されると,受理された割込 み要求に対応した割込み番号を使用して,CPUは以下のように動作します。 〔動作〕における( )はレジスタの指すアドレスを表します。 [動作] SSP-4 → SSP PS → (SSP) SSP-4 → SSP 次の命令のアドレス → (SSP) 受理した要求の割込みレベル → ILM “0” → Sフラグ (TBR+受理した割込み要求のベクタオフセット) → PC 62 3.10 EIT(例外・割込み・トラップ) 割込みシーケンス終了後ハンドラの先頭の命令を実行する前に,新たなEITの検 出を行います。この時点で受理可能なEITが発生していると,CPUはEIT処理シーケ ンスに遷移します。 ■ INT命令の動作 INT #u8命令の動作は以下のとおりです。 u8で示されるベクタの割込みハンドラへ分岐します。 [動作] SSP-4 → SSP PS → (SSP) SSP-4 → SSP PC+2 → (SSP) “0” → Iフラグ “0” → Sフラグ (TBR+3FCH-4×u8) → PC ■ INTE命令の動作 INTE命令の動作は以下のとおりです。 ベクタ番号#9のベクタの割込みハンドラへ分岐します。 [動作] SSP-4 → SSP PS → (SSP) SSP-4 → SSP PC+2 → (SSP) “00100” → ILM “0” → Sフラグ (TBR+3D8H) → PC INTE命令,およびステップトレーストラップの処理ルーチン中では,INTE命令 は使用しないでください。 また,ステップ実行中はINTEによるEITの発生はありません。 ■ ステップトレーストラップの動作 PS中のSCRにおけるTフラグをセットしてステップトレースの機能をイネーブル にしておくと,一命令実行ごとにトラップが発生し,ブレイクします。 ステップトレーストラップ検出の条件は,以下のとおりです。 l l l Tフラグ = 1 遅延分岐命令ではないとき。 INTE命令,ステップトレーストラップの処理ルーチン以外を実行中であ るとき。 以上の条件が成立すると,命令動作の切れ目でブレイクします。 [動作] SSP-4 → SSP PS → (SSP) SSP-4 → SSP 63 第3章 CPU 次の命令のアドレス → (SSP) “00100” → ILM “0” → Sフラグ (TBR+3CCH) → PC Tフラグをセットしてステップトレーストラップをイネーブルにしたとき,ユー ザ用のNMIとユーザ割込みは禁止状態となります。 また,INTE命令によるEITは発生しなくなります。 ■ 未定義命令例外の動作 命令のデコード時に未定義命令であることを検出すると,未定義命令例外が発 生します。 未定義命令例外の検出条件は,以下のとおりです。 l l 命令のデコード時に,未定義命令であることを検出。 遅延スロット外に置かれている(遅延分岐命令の直後ではない) 。 以上の条件が成立すると,未定義命令例外が発生し,ブレイクします。 [動作] SSP-4 → SSP PS → (SSP) SSP-4 → SSP PC → (SSP) “0” → Sフラグ (TBR+3C4H) → PC PCとして退避されるのは,未定義命令例外を検出した命令自身のアドレスです。 ■ RETI命令の動作 RETI命令は,EIT処理ルーチンから復帰する命令です。 [動作] (R15) → PC R15+4 → R15 (R15) → PS R15+4 → R15 PS,PCを復帰するために参照するスタックポインタは,Sフラグの内容に応じて 選択される点に注意してください。割込みハンドラ内でR15(スタックポインタ) を操作する命令を実行する場合は,Sフラグを“1”にしてUSPをR15として使用し, RETI命令の前にSフラグを“0”に戻す方法をお勧めします。 64 3.11 リセットシーケンス 3.11 リセットシーケンス CPUを動作状態にするときのリセットについて説明します。 ■ リセット要因 リセット要因は以下のとおりです。 l l l l l 外部リセット端子からの入力 スタンバイ制御レジスタ(STCR)中のSRSTビット操作によるソフトウェ アリセット ウォッチドッグタイマのカウントアップ ハードウェアスタンバイの解除 パワーオンリセット ■ リセットによる初期化 リセット要因が発生すると,CPUは初期化されます。 ○ 外部リセット端子/ソフトウェアリセット/ハードウェアスタンバイからの解 除 l l l 端子を定められた状態に設定します。 デバイス内部の各リソースを,リセット状態にします。制御レジスタは, あらかじめ決められた値に初期化されます。 クロックとして,最も遅いギアが選択されます。 ■ リセットシーケンス リセット要因が解除されると,CPUは以下のリセットシーケンスを実行します。 l (000FFFFCH) → PC <注意事項> リセット後は,モードレジスタの設定により動作モードを細かく設定します。 詳細は, 「3.14 メモリアクセスモード」のモードレジスタを参照してください。 65 第3章 CPU 3.12 クロック クロック発生部は,以下の機能を受け持つモジュールです。 ・CPUクロック生成(ギア機能を含む) ・周辺クロック生成(ギア機能を含む) ・リセット発生および要因の保持 ・スタンバイ機能(ハードウェアスタンバイを含む) ・DMA要求の抑止 ・PLL(逓倍回路)内蔵 ■ クロック発生部のレジスタ一覧 図 3.12-1にクロック発生部のレジスタ一覧を示します。 図 3.12-1 クロック発生部のレジスタ一覧 <注意事項> スタンバイ制御レジスタ(STCR)については,「3.13 66 低消費電力モード」を参照してください。 3.12 クロック ■ クロック発生部のブロックダイヤグラム 図 3.12-2にクロック発生部のブロックダイヤグラムを示します。 図 3.12-2 クロック発生部のブロックダイヤグラム 67 第3章 CPU 3.12.1 リセット要因レジスタ(RSRR) リセット要因レジスタ(RSRR)とウォッチドッグ周 (RSRR)とウォッチドッグ周 期制御レジスタ(WTCR) 期制御レジスタ(WTCR) リセット要因レジスタ(RSRR)は,発生したリセットの種別を保持するレジスタ で,ウォッチドッグ周期制御レジスタ(WTCR)は,ウォッチドッグタイマの周期を 指定するレジスタです。 ■ リセット要因レジスタ(RSRR)とウォッチドッグ周期制御レジスタ(WTCR) リセット要因レジスタ(RSRR)とウォッチドッグ周期制御レジスタ(WTCR)の レジスタ構成は以下のとおりです。 [bit 15] PONR 本ビットが“1”であると,直前に発生したリセットはパワーオンリセット であったことを示します。本ビットが“1”の場合は,本レジスタの本ビット 以外の内容は無効となります。 [bit 14] HSTB 本ビットが“1”であると,直前に発生したリセットはハードウェアスタン バイに起因するリセットであったことを示します。 [bit 13] WDOG 本ビットが“1”であると,直前に発生したリセットはウォッチドッグリセッ トであったことを示します。 [bit 12] ERST 本ビットが“1”であると,直前に発生したリセットは外部リセット端子に 起因するリセットであったことを示します。 [bit 11] SRST 本ビットが“1”であると,直前に発生したリセットはソフトウェアリセッ ト要求に起因するリセットであったことを示します。 [bit 10] (ReServed) 本ビットは予約ビットです。読み出し値は不定です。 [bit 09,08] WT1,0 本ビットは,ウォッチドッグの周期を指定するものです。本ビットと選択す る周期は表 3.12-1のような関係があります。本ビットはすべてのリセットに より初期化されます。 68 3.12 クロック 表 3.12-1 WT1,WT0で指定されたウォッチドッグの周期 WT1 WT0 0 0 1 1 0 1 0 1 ウォッチドッグリセットの発生を抑止する ために最低限必要なWPRへの書込み間隔 φ×215 〔初期値〕 φ×217 φ×219 φ×221 WPRへの最終5AH書込みからウォッチドッグ リセットが発生するまでの時間 φ×215∼φ×216 φ×217∼φ×218 φ×219∼φ×220 φ×221∼φ×222 ただし,φはGCRのCHC=1のときはX0の2倍,CHC=0のときはPLLの発振周波数 の周期となります。 69 第3章 CPU 3.12.2 DMA要求抑止レジスタ DMA要求抑止レジスタ(PDRR) 要求抑止レジスタ(PDRR) DMA要求抑止レジスタ(PDRR)は,DMA要求を一時的に抑止して,CPUを動作させる レジスタです。 ■ DMA要求抑止レジスタ(PDRR) DMA要求抑止レジスタ(PDRR)のレジスタ構成は以下のとおりです。 [bit 11-08] D3-D0 本レジスタに0以外の値を書き込むと,以降のDMAからCPUへのDMA転送要求を 抑止します。以降,本レジスタの内容を0にしない限り,DMA転送は行えなくな ります。 <注意事項> 本レジスタは,必ず割込みコントローラのHRCLレジスタと組み合わせて使用してください。 70 3.12 クロック 3.12.3 タイムベースタイマクリアレジスタ(CTBR) タイムベースタイマクリアレジスタ(CTBR) タイムベースタイマクリアレジスタ(CTBR)は,タイムベースタイマの内容を0 に初期化するためのレジスタです。 ■ タイムベースタイマクリアレジスタ(CTBR) タイムベースタイマクリアレジスタ(CTBR)のレジスタ構成は以下のとおりで す。 [bit 07-00] D7-D0 本レジスタに連続してA5H,5AHを書き込むと,5AHの直後にタイムベースタイ マを0にクリアします。本レジスタの読出し値は不定です。A5Hライトと5AHライ トの間の時間は制限がありません。 <注意事項> 本レジスタを使用してタイムベースタイマをクリアすると,発振安定待ち間隔,ウォッチドッ グ周期およびタイムベースを使用している周辺の周期が一時的に変動します。 71 第3章 CPU 3.12.4 ギア制御レジスタ(GCR) ギア制御レジスタ(GCR) ギア制御レジスタ(GCR)は,CPU系,周辺系クロックのギア機能を制御するレジ スタです。 ■ ギア制御レジスタ(GCR) ギア制御レジスタ(GCR)のレジスタ構成は以下のとおりです。 [bit 15,14] CCK1,0 本ビットは,CPU系のギア周期を指定するものです。本ビットと選択する周 期は表 3.12-2のような関係があります。本ビットはリセットにより初期化さ れます。 表 3.12-2 CPU系マシンクロック CCK1 CCK0 CHC CPU系マシンクロック 0 0 0 PLL×1 0 1 0 PLL×1/2 1 0 0 PLL×1/4 1 1 0 PLL×1/8 0 0 1 原振×1/2 0 1 1 原振×1/2×1/2 1 0 1 原振×1/2×1/4 1 1 1 原振×1/2×1/8 〔初期値〕 PLL:PLLの発振周波数 原振:X0からの入力周波数 [bit 13] DBLAK 本ビットは,クロックダブラの動作状態を示すビットです。リードオンリー であり,ライトは無視されます。本ビットはリセットにより初期化されます。 バス周波数の切り換えにはタイムラグがありますが,実際に動作が切り換 わったかどうかは本ビットで確認出来ます。 DBLAK 0 1 内部:外部の動作周波数 1:1で動作中 [初期値] 2:1で動作中 [bit 12] DBLON 本ビットは,クロックダブラの動作状態を指定するビットです。本ビットは リセットにより初期化されます。 DBLON 0 1 72 1:1で動作 2:1で動作 内部:外部の動作周波数 [初期値] 3.12 クロック [bit 11,10] PCK1,0 本ビットは,周辺系のギア周期を指定するものです。本ビットと選択する周 期は表 3.12-3のような関係があります。本ビットはリセットにより初期化さ れます。 表 3.12-3 周辺系マシンクロック PCK1 PCK0 CHC 周辺系マシンクロック(原振:X0からの入力周波数) 0 0 0 PLL×1 0 1 0 PLL×1/2 1 0 0 PLL×1/4 1 1 0 PLL×1/8 0 0 1 原振×1/2 0 1 1 原振×1/2×1/2 1 0 1 原振×1/2×1/4 1 1 1 原振×1/2×1/8 〔初期値〕 PLL:PLLの発振周波数 原振:X0からの入力周波数 なお,CPU系のクロックが25MHzよりも高い周波数で動作させるときは,周辺 系クロックは,CPU系クロックの1/2以下の周波数になるように設定してくださ い。 周辺系クロックの最大周波数は25MHzです。 <注意事項> CPU系ギアと周辺系ギアを同時に変更したい場合は,いったん両者を同じギアに設定した後に, 希望のギアに設定してください。 変更前のCPU系と周辺系のギアが同じ設定である場合と,片方のギアだけを変更する場合,そ して両者を同じギアに設定する場合は,目的の値に一度に設定するのでかまいません。 クロックダブラがONになっているときは,GCRの値に関わらずCPU系ギアは固定値となるため, やはり目的の値に一度に設定するのでかまいません。 [プログラム記述例] ldi ldi stb ldi ldi stb ldi stb #0x484, #0x0d, r0, : : #0x484, #0xcd, r0, #0xc5, r0, r1 r0 @r1 r1 r0 @r1 r0 @r1 ; CPU :1/1,周辺:1/8 ; CPU :1/8,周辺:1/8 いったん同じ比率に設定 ; CPU :1/8,周辺:1/2 希望の比率に設定 [bit 09] 予約ビット 常に1を書いてください。 73 第3章 CPU [bit 08] CHC 本ビットは,基準クロックの選択を設定するビットです。リセットにより初 期化されます。PCTRレジスタのVSTPビットが1のときには本ビットへの0書き込 みは無視されます。 CHC 1 0 クロック選択 発振回路の2分周を基準クロックとして使用〔初期値〕 PLLからの発振出力を基準クロックとして使用 <注意事項> PCTRのVSTPが0のときにストップモードに移行するとPLLは発振を停止しますが,VSTPは0のま まとなります。外部割込みなどによりストップモードから復帰したときは,PLLの発振が安定す るまでにSTCRのOSC1,0で設定した発振安定待ち時間の他に約100μ秒必要となりますので,それ より前に本ビットを0に設定しないでください。 74 3.12 クロック 3.12.5 ウォッチドッグリセット発生延期レジスタ(WPR) ウォッチドッグリセット発生延期レジスタ(WPR) ウォッチドッグリセット発生延期レジスタ(WPR)は,ウォッチドッグタイマ用フ リップフロップをクリアするレジスタです。本レジスタを用いてウォッチドッグリ セットの発生を延期させることができます。 ■ ウォッチドッグリセット発生延期レジスタ(WPR) ウォッチドッグリセット発生延期レジスタ(WPR)のレジスタ構成は以下のとお りです。 [bit 07-00] D7-D0 本レジスタに連続してA5H,5AHを書き込むと,5AHの直後にウォッチドッグタ イマ用フリップフロップを0にクリアし,ウォッチドッグリセットの発生を延 期させます。 本レジスタの読出し値は不定です。A5Hと5AH の間の時間は制限がありません が,表 3.12-4の期間内に両データの書き込みを終えないとウォッチドッグリ セットを発生します。ただし,ストップ,スリープ,ホールド中は自動的にク リアを行いますので,これらの条件が発生すると,ウォッチドッグリセットは 自動的に延期されます。 表 3.12-4 WT1,WT0で指定されたウォッチドッグの周期 WT1 WT0 0 0 1 1 0 1 0 1 ウォッチドッグリセットの発生を抑止する ために最低限必要なWPRへの書込み間隔 φ×215 φ×217 φ×219 φ×221 WPRへの最終5AH書込みからウォッチドッグ リセットが発生するまでの時間 φ×215∼φ×216 φ×217∼φ×218 φ×219∼φ×220 φ×221∼φ×222 ただし,φはGCRのCHC=1のときはX0の2倍,CHC=0のときはPLLの発振周波数 となします。 75 第3章 CPU 3.12.6 PLL制御レジスタ PLL制御レジスタ(PCTR) 制御レジスタ(PCTR) PLL制御レジスタ(PCTR)は,PLLの発振を制御するレジスタです。 本レジスタはGCRのCHCが1のときのみ設定を変更可能です。 ■ PLL制御レジスタ(PCTR) PLL制御レジスタ(PCTR)のレジスタ構成は以下のとおりです。 [bit 15,14] SLCT1,0 本ビットはPLLの逓倍率を制御するものです。電源投入時のみ初期化されま す。 本ビットの設定はGCRのCHCを0に設定したときの内部動作周波数になります。 SLCT1 0 0 1 SLCT0 0 1 X 内部動作周波数 (原振 12.5MHzの場合) 12.5MHz 動作 〔初期値〕 25.0MHz 動作 50.0MHz 動作 [bit 13,12] 予約ビット 常に0を書いてください。 [bit 11] VSTP 本ビットはPLLの発振を制御するものです。電源投入時および外部リセット により初期化されます。なお,PLLを停止して使用する場合は,リセット解除 後に毎回停止させる必要があります。 VSTP 0 1 PLL動作 発振 発振停止 〔初期値〕 <注意事項> ストップモードとハードウェアスタンバイに移行すると,本ビットの設定に関わらず,PLLの 発振は停止します。 76 3.12 クロック 3.12.7 ウォッチドッグ機能 ウォッチドッグ機能は,プログラムの暴走状態を検出する機能です。 プログラムの暴走などによりウォッチドッグリセット延期レジスタへのA5H,5AH書 き込みが定められた時間内に行われなかった場合,ウォッチドッグタイマよりウォッ チドッグリセット要求が発生します。 ■ ウォッチドッグ制御部のブロックダイヤグラム 図 3.12-3にウォッチドッグ制御部のブロックダイヤグラムを示します。 図 3.12-3 ウォッチドッグ制御部のブロックダイヤグラム ■ ウォッチドッグタイマの起動 ウォッチドッグタイマは,ウォッチドッグ制御レジスタ(WTCR)への書き込み により動作を開始します。このとき,ウォッチドッグタイマのインターバル時間 をWT1,0ビットにより設定します。インターバル時間の設定は,最初の書き込みで 設定した時間だけが有効となり,それ以降の設定は無視されます。 〔例〕 LDI:8 #00000010b,R1 ; WT1,0=10 LDI:20 #WTCR,R2 STB R1,@R2 ; ウォッチドッグ起動 ■ リセット発生延期 一度,ウォッチドッグタイマを起動すると,プログラムで定期的にウォッチドッ グリセット延期レジスタ(WPR)に対して定期的にA5H,5AHを書き込む必要があり ます。ウォッチドッグリセット用フリップフロップは,タイムベースタイマの選 択したタップの立下がりを記憶し,2回目の立下がりで本フリップフロップがクリ アされていないと,リセットが生成されます。 図 3.12-4に,ウォッチドッグタイマの動作タイミングを示します。 図 3.12-4 ウォッチドッグタイマの動作タイミング 77 第3章 CPU <注意事項> ・最初のA5Hと次の5AHの間の書き込み間隔の規定はありません。ウォッチドッグの延期は,2回 の5AHの書き込みの間隔がWTビットで指定した時間内であり,かつそれらの間に1回のA5Hの書 き込みがあることでのみ行えます。 ・最初のA5Hの後の書き込みが5AH以外であったときは,最初のA5Hの書き込みがあったことを無 効にします。このため,再度A5Hの書き込みを行う必要があります。 ■ タイムベースタイマ タイマベースタイマは,ウォッチドッグタイマへのクロック供給および発振安 定時間待ち用のタイマとして使用されています。動作クロックφはGCRのCHC=1の ときはX0の2倍,GCRのCHC=0のときはPLLの発振周波数の周期となります。 また,DRAMのリフレッシュのときのカウント値には,RFCRで本タイムベースタ イマの値をカウントクロックとして使用します。 図 3.12-5 タイムベースタイマのカウンタ 78 3.12 クロック 3.12.8 ギア機能 ギア機能は,クロックを間引いて供給する機能です。CPU用と周辺用の2種の独立 な回路があり,異なるギア比でもCPUと周辺の間でのデータの送受を行うことができ ます。さらに,原クロックの選択として,PLLからのクロックと同周期のクロックを 使用するか,あるいは2分周回路を通したクロックを使用するかの指定が行えます。 ■ ギア制御部のブロックダイヤグラム 図 3.12-6にギア制御部のブロックダイヤグラムを示します。 図 3.12-6 ギア制御部のブロックダイヤグラム ■ ギア機能の設定 CPUのクロックの制御であればギア制御レジスタ(GCR)のCCK1,0ビットを,周辺 のクロックの制御であれば同レジスタのPCK1,0ビットを,それぞれ望む値に設定 することで,希望するギア比に設定することができます。 〔例〕 LDI:20 #GCR,R2 LDI:8 #11111110b,R1 STB R1,@R2 LDI:8 #01111010b,R1 STB R1,@R2 LDI:8 #00111010b,R1 STB R1,@R2 LDI:8 #00110010b,R1 STB R1,@R2 LDI:8 #10110010b,R1 STB R1,@R2 ; ; ; ; ; ; ; ; ; ; CCK=11,PCK=11,CHC=0 CPU clock=1/8f, Periferal clock=1/8f, f=direct CCK=01,PCK=10,CHC=0 CPU clock=1/2f, Periferal clock=1/4f, f=direct CCK=00,PCK=10,CHC=0 CPU clock=f, Periferal clock=1/4f, f=direct CCK=00,PCK=00,CHC=0 CPU clock=f, Periferal clock=f, f=direct CCK=10,PCK=00,CHC=0 CPU clock=1/4f, Periferal clock=f, f=direct 79 第3章 CPU また,ギア制御レジスタのCHCビットを“1”にすると2分周回路の出力を原クロッ クとして選択し,“0”にすると発振回路からのクロックと同周期のクロックをそ のまま使用します。原クロックを切り換えるために,CPU系と周辺系は同時に変化 します。 〔例〕 LDI:8 #01110001b,R1 LDI:20 #GCR,R2 STB R1,@R2 LDI:8 #00110011b,R1 STB R1,@R2 LDI:8 #00110010b,R1 STB R1,@R2 ; CCK=01,PCK=00,CHC=1 ; ; ; ; ; CPU clock=1/2f, Periferal clock=f, f=1/2xtal CCK=00,PCK=00,CHC=1 CPU clock=f, Periferal clock=f, f=1/2xtal CCK=00,PCK=00,CHC=0 CPU clock=f, Periferal clock=f, f=direct 図 3.12-7にクロック選択のタイミングチャートを示します。 図 3.12-7 クロック選択のタイミングチャート ■ 周辺系クロックを使用するブロック一覧 ここでは,ギア機能で設定可能な周辺系クロックを動作クロックとして使用し ているブロックを示します。 クロック発生部のGCRレジスタのビットPCK0,1で設定した分周比を元に,動作時 間を計算してください。 l l l l l l l l l l 80 クロック発生部 割込みコントローラ ポートD∼ポートF U-TIMER(cH.0,1,2) UART(ch.0,1,2) A/Dコンバータ 16ビットリロードタイマ(ch.0, 1, 2) 外部割込み NMI制御部 遅延割込みモジュール 3.12 クロック 3.12.9 リセット要因保持 直前に発生したリセットの要因を保持します。読み出しにより全フラグを“0”に します。読み出さない限り,一度立った要因フラグは消えません。 ■ リセット要因保持回路のブロックダイヤグラム 図 3.12-8にリセット要因保持回路のブロックダイヤグラムを示します。 図 3.12-8 リセット要因保持回路のブロックダイヤグラム ■ リセット要因保持の設定 本機能を使用するにあたっての特別な設定は不要です。リセットエントリアド レスに置くプログラムの初めの方に,リセット要因レジスタの読み出しと,適切 なプログラムへ分岐する命令を置くようにします。 〔例〕 RESET-ENTRY LDI:20 LDI:8 LDUB MOV AND BNE LSR MOV AND BNE LSR MOV AND BNE … #RSRR,R10 #10000000B,R2 @R10,R1 ; R1,R10 ; R2,R10 ; PONR-RESET #1,R2 ; R1,R10 ; R2,R10 ; HSTB-RESET #1,R2 ; R1,R10 ; R2,R10 ; WDOG-RESET GET RSRR VALUE INTO R1 R10 USED AS A TEMPORARY REGISTER WAS PONR RESET? POINT NEXT BIT R10 USED AS A TEMPORARY REGISTER WAS HARDWARE STANDBY RESET? POINT NEXT BIT R10 USED AS A TEMPORARY REGISTER WAS WATCH DOG RESET? 81 第3章 CPU <注意事項> ・PONRビットが1のときは,それ以外のビットの内容は不定として扱ってください。また,リセッ ト要因をチェックする必要がある場合には,必ず先頭にパワーオンリセット確認の命令を置い てください。 ・パワーオンリセットのチェック以外のリセット要因のチェックは,任意の位置にすることがで きます。置いた順に優先度が決まります。 82 3.12 クロック 3.12.10 DMA抑止 DMA抑止 FRシリーズはDMA転送中に,より優先度の高い割込み要因が発生するとDMA転送を 中断して該当割込みルーチンへ分岐します。この機構は,割込み要求がある限り有 効ですが,割込み要因をクリアすると抑止機構が働かなくなり,割込み処理ルーチ ン内でDMA転送を再開します。 このため,DMA転送を中断するレベルの割込み要因の処理ルーチン内で,割込み要 因クリア後のDMA再転送開始を抑止したいときは,DMA抑止機能を使用します。DMA抑 止機能は,DMA抑止レジスタに0以外の値を書くことで起動し,0を書くことで停止し ます。 ■ DMA抑止回路のブロックダイヤグラム 図 3.12-9にDMA抑止回路のブロックダイヤグラムを示します。 図 3.12-9 DMA抑止回路のブロックダイヤグラム ■ DMA抑止の設定 本機能は,主として割込み処理ルーチン内で使用します。 割込み処理ルーチンで,割込み要因をクリアする前にDMA抑止レジスタの内容を 一つ増加させます。このようにすると,以降,DMA転送は行いません。割込み処理 への対応を行った後,復帰する前に,DMA抑止レジスタの内容を一つ減少させます。 もし,多重割込みであれば,DMA抑止レジスタの内容はまだ0にならないため,引 き続いてDMA転送は抑止されます。また,多重割込みでなければ,DMA抑止レジス タの内容は0になるため,その後すぐにDMA要求を有効にします。 〔例〕 INT-ENTRY LDI:20 #PDRR,R10 LD @R10,R1 ; GET PDRR VALUE INTO R1 ADD #1,R1 ST R1,@R10 ; PDRR:=PDRR+1, DMA disabled LDI:20 #int-REG,R10; int occurred with int-REG LDI:8 #10H,R1 ; example, int-flag=#10h ST R1,@R10 ; CLEAR int-REQ,(but still DMA disabled) … ; interrupt execute routine … LDI:20 #PDRR,R10 83 第3章 CPU LD ADD2 ST RETI @R10,R1 ; GET PDRR VALUE INTO R1 #-1,R1 R1,@R10 ; PDRR:=PDRR-1, DMA may be enabled <注意事項> ・レジスタのビット数は4ビットですので,15レベルを超える多重割込みで本機能を使用するこ とができません。DMAタスクの優先順位は,必ず他の割込みレベルより15レベルは上に置いて ください。また,必ず割込みコントローラのHRCLレジスタと組み合わせて使用してください。 ・NMIは割込みの受付けにより自動的に要因がクリアされるため,DMAを抑止することはできませ ん。割込み受付け後DMAの再転送が行われ,DMAの終了後にNMIの処理が実行されます。 84 3.12 クロック 3.12.11 クロックダブラ機能 内部動作周波数の上昇に伴い外部バスタイミングが厳しくなるのを避けるため, 外部バスと内部動作の周波数を1:2にすることが出来ます。 ■ クロックダブラ機能の起動 クロックダブラ機能は,GCRのDBLONを1に設定することにより有効になります。 DBLONが1に設定されるとC-BUSの全アクセスが終了するのを待って外部バスクロッ クの切り換えを行います。そのため,切り換わるまでに若干のタイムラグがあり ますが,GCRのDBLAKの値により切り換わりタイミングを知ることが出来ます。 また,クロックダブラ機能を起動させることによりCPU系クロックのギアはGCR の設定に関わらず1/1になります。 本デバイスは外部バスの動作周波数として25MHZまでが設定可能になっています。 そのため,クロックダブラ機能をONにするときは次のように設定してください。 〔例〕 DOUBLER-ON LDI:20 BORL BORH LOOP BTSTH BEQ BANDL #GCR,R0 #0001B,@R0 #0001B,@R0 ; 2分周系に切り換え(CHC=1) ; クロックダブラON (DBLON=1) #0010B,@R0 LOOP #1110B,@R0 ; DBLAKを確認 ; DBLAKが1になるまでループ ; PLL系に切り換え(CHC=0) ■ クロックダブラ機能の停止 クロックダブラ機能は,GCRのDBLONを0に設定することにより無効になります。 同時にCPU系クロックのギアは1/1からGCRレジスタのCCKビットの設定に戻ります。 〔例〕 DOUBLER-OFF LDI:20 #GCR,R0 BORL #0001B,@R0 BANDH #1110B,@R0 ; 2分周系に切り換え(CHC=1) ; クロックダブラOFF (DBLON=0) また,クロックダブラ機能をOFFにした後にPLLのクロックを使用する場合は, 次のように設定を行ってください。 〔例〕 DOUBLER-OFF LDI:20 BORL BANDH LDI:20 LDI:8 STB BANDL #GCR,R0 #0001B,@R0 #1110B,@R0 #PCTR,R1 #01000000B,R2 R2,@R1 #1110,@R0 ; 2分周系に切り換え(CHC=1) ; クロックダブラOFF (DBLON=0) ; PLL=25MHz ; PLL系に切り換え(CHC=0) 85 第3章 CPU ■ クロックダブラ機能のon/offに伴う注意事項 クロックダブラ機能をon/offさせると内部クロックにデッドサイクルを生じる ことがあります。デッドサイクルが生じた場合は,タイマでの時間測定やUARTの 転送中には誤差として現れます。 ■ クロックダブラ機能のon/offによる動作周波数の組み合わせ PCTRレジスタのSLCT1,0ビットとGCRレジスタの設定の組み合わせにより,本デ バイスの動作周波数は表 3.12-5のようになります(原発振12.5MHzを使用した場 合の例)。 表 3.12-5 クロックダブラ機能のon/offによる動作周波数の組み合わせ GCR 内部動作周波 外部バス周波 PLLの発振周 クロックダブラ 備 考 波数(MHz) 数(MHz) 数(MHz) ギア 1/1 OFF 6.25 6.25 1/2 OFF 3.12 3.12 1/4 OFF 1.56 1.56 1/8 OFF 0.78 0.78 初期値 *1 ON 6.25 3.12 PLL*3 − 50.0 OFF 50.0 50.0 設定禁止 1/1 25.0 OFF 25.0 25.0 1/2 25.0 OFF 12.5 12.5 1/4 25.0 OFF 6.25 6.25 1/8 25.0 OFF 3.12 3.12 1/1 12.5 OFF 12.5 12.5 1/2 12.5 OFF 6.25 6.25 1/4 12.5 OFF 3.12 3.12 1/8 12.5 OFF 1.56 1.56 *1 50.0 ON 50.0 25.0 *2 *1 25.0 ON 25.0 12.5 *1 12.5 ON 12.5 6.25 *1:どのように設定してあっても1/1固定となります。 *2:クロックダブラをOFFにするときは,2分周系に切り換えてからOFFにしてください。 *3:PLLの発振周波数を変更するときは,2分周系に切り換えることが必要です。 CHC 2分周 86 3.12 クロック 3.12.12 PLLのクロック設定例 PLLのクロック設定例 PLLのクロック設定例とアセンブラのソース例について説明します。 ■ PLLのクロック設定例 図 3.12-10は,PLLを使用した50MHz動作への切り換え手順の例です。 図 3.12-10 PLLのクロック設定例 <注意事項> ・ここに記載したDBLON,VSTP,SLCT1の各ビットの設定順序は特にありません。 ・周辺部の動作周波数が25MHzを超えないようにしてください。 ・PLLのVCOの再起動時には,安定するまでの待ち時間100μS以上を,ソフトウェアで必ず取って ください。また,キャッシュON/OFFなどで待ち時間の不足を起こさないように注意してくださ い。 87 第3章 CPU ■ クロック系参考図 図 3.12-11 クロック系参考図 ■ アセンブラのソース例 ; ******************************************* ; PLL Sample Program ; ******************************************* ; Load Setting Data ldi:20 #GCR, R0 ldi:20 #PCTR,R1 ldi:8 #GCR_MASK,R2 ; GCR_MASK = 0000 0001 b ldi:8 #PCTR_MASK,R3 ; PCTR_MASK = 0000 1000 b ldub @R0,R4 ; read GCR register ldub @R1,R5 ; read PCTR register st PS, @-R15 ; push processor status stilm #0x0 ; disable interrupt ; and R4,R2 beq CHC_0 bra CHC_1 CHC_0: borL #0001B,@r0 ; to 1/2 cLock @r0=GCR regiSter CHC_1: call VCO_RUN call DOUBLER_ON PLL_SET_END: ld @R15+, PS ; pop processor status ; ******************************************* ; VCO Setting ; ******************************************* VCO_RUN: st R3, @-R15 ; push R3 ldi:8 #PCTR _MASK,R3 ; PCTR_MASK = 0000 1000 b and R5, R3 ; PTCR->VSTP=1 ? beq LOOP_100US_END ; if VSTP = 0 return st R2, @-R15 ; push R2 for Loop counter bandl #0111B,@r1 ; set VSTP = 0 ldi:20 #0x15E,R2 ; wait 100μS WAIT_100US: ; 100us = 160ns(6.25MHz) * 7 * 100 (2BC)cycle add2 #(-1), R2 ; 2BCh/2 = 15Eh (if cache on) bne WAIT_100US ; 88 3.12 クロック LOOP_100US_END: ld ld ret @R15+, R2 @R15+, R3 ; Pop R2 ; Pop R3 ; ******************************************* ; doubler ON ; ******************************************* DOUBLER_ON: borh #0001B,@r0 ; doubler ON LOOP_DBLON1: btsth #0010B,@r0 ; check DBLACK beq LOOP_DBLON1 ; loop while DBLACK = 0 bandl #1110B,@r0 ; to 1/1(PLL) clock nop nop nop nop nop nop ret 89 第3章 CPU 3.13 低消費電力モード 低消費電力モードには,ストップ状態とスリープ状態があります。 ■ ストップ状態の概要 ストップ状態とは,すべての内部クロックを停止,発振回路の動作停止の状態 をいいます。この状態になると,消費電力を最低限に抑えることができます。 ストップ状態への移行は,次のいずれかで行います。 l l 命令による,スタンバイ制御レジスタ(STCR)への書込み HSTX端子へのLレベルの印加 動作状態への復帰は,次のいずれかで行います。 l l l 割込み要求(ただし,ストップ状態中でも割込み要求が発生可能な周辺 に限る) RSTX端子へのLレベルの印加 HSTX端子へのLレベル→Hレベルの印加 ストップ状態では,すべての内部クロックが停止しますので,復帰用の割込み を生成できるもの以外の内蔵周辺は停止状態になります。 ■ スリープ状態の概要 スリープ状態とは,CPUクロックと内部バスクロックを停止の状態をいいます。 CPU動作不要な状況での消費電力をある程度抑えることができます。 スリープ状態への移行は,次のように行います。 l 命令による,スタンバイ制御レジスタ(STCR)への書込み 動作状態への復帰は,次のいずれかで行います。 l l 割込み要求 リセット要因の発生 スリープ状態では,内部DMAクロックと周辺クロックは動作しますので,これら 二つのクロックを使用しているすべての内蔵周辺の割込みで解除ができます。 90 3.13 低消費電力モード ■ 低消費電力モードの動作一覧 表 3.13-1に低消費電力モードの動作一覧を示します。 表 3.13-1 低消費電力モードの動作一覧 動作状態 遷移条件 ラン スリープ ストップ STCRの SLEP=“1” STCRの STOP=“1” 発振器 内部クロック 周辺 端子 ○ 動作 ○ ○ 動作 × × * ○ CPU/内部バス ○ DMA/周辺 ○ ○ × × × ハードウェア HSTX=“0” × × × × ・スタンバイ ○:動作 ×:停止 *:STCRのHIZX=“0”で前の状態を保持します。HIZX=“1”でHi-Zになります。 Hi-Z 解除方法 HSTX=“1” <注意事項> リセット:RSTX=“0” STCRレジスタのSRSTビット=“0” ウォッチドッグリセット パワーオンリセット 91 第3章 CPU 3.13.1 スタンバイ制御レジスタ(STCR) スタンバイ制御レジスタ(STCR) スタンバイ制御レジスタ(STCR)は,スタンバイ動作の制御と発振安定待ち時間 の指定を行うレジスタです。 ■ スタンバイ制御レジスタ(STCR) スタンバイ制御レジスタ(STCR)のレジスタ構成は以下のとおりです。 [bit 07] STOP 本ビットに“1”を書き込むと内部周辺のクロック停止,内部CPUのクロック 停止および発振の停止を行うストップ状態になります。 [bit 06] SLEP 本ビットに“1”を書き込むと内部CPUのクロック停止を行うスリープ状態に なります。 なお,bit07と本ビット両方に1を書き込んだ場合は,bit07の方が優先とな りますので,ストップ状態になります。 [bit 05] HIZX 本ビットに“1”を書き込んだ状態でストップ状態になるとデバイスの端子 をハイインピーダンスにします。 [bit 04] SRST 本ビットに“0”を書き込むとソフトウェアリセット要求を発生します。 [bit 03,02] OSC1,0 本ビットは,発振安定待ち時間を指定するものです。本ビットと選択する周 期は表 3.13-2のような関係があります。本ビットはパワーオン,ハードウェ アスタンバイの各リセットにより初期化され,それ以外のリセット要因では影 響を受けません。 表 3.13-2 OSC1,OSC0で指定された発振安定待ち時間 OSC1 0 0 1 1 OSC0 0 1 0 1 発振安定待ち時間 φ×215 φ×217 φ×219 φ×221 〔初期値〕 ただし,φはX0の2倍の周期となります。 [bit 01,00] (ReServed) 本ビットは予約ビットです。読み出し値は不定です。 92 3.13 低消費電力モード 3.13.2 ストップ状態 ストップ状態とは,すべての内部クロックを停止,発振回路の動作停止の状態を いいます。この状態になると,消費電力を最低限に抑えることができます。 ■ ストップ制御部のブロックダイヤグラム 図 3.13-1にストップ制御部のブロックダイヤグラムを示します。 図 3.13-1 ストップ制御部のブロックダイヤグラム ■ ストップ状態への移行 ○ 命令を用いてストップ状態にする方法 ストップ状態にいれるためには,STCRレジスタのbit7へ“1”を書き込みま す。 ストップ要求を発行したのち,CPUが内部バスを使用していない状態になっ たあとで,次の順にクロックを停止します。 CPUクロック⇒内部バスクロック⇒内部DMAクロック⇒内部周辺クロック 発振回路の停止は,内部周辺クロック停止と同時に行います。 <注意事項> ・命令を用いてストップ状態にするためには,必ず下記ルーチンを使用してください。 ・STCRへ書き込む前には,GCRのCCK1,0とPCK1,0の組みに同じ値を設定し,CPU系クロックと周辺 系クロックのギア比を同一にしてください。 ・GCRのCHCビットが“0”(PLLで動作中) の状態でストップ状態にしないでください。 ストップ状態に入れるときは,GCRのCHCビットを“1”(2分周系を選択) にしてクロックを切 り換えてからストップ状態に遷移させてください。 ・ストップ状態に入れるときはクロックダブラをOFFにしてください。 ・STCRへの書き込み直後は,最低6個の連続するNOP命令が必要です。 〔設定方法:ギア最高速の場合の例〕 Loop LDI:20 #GCR,R0 LDI:8 #00000011b,R1 ; CHC=1,CPU=周辺ギア比 STB R1,@R0 ; DBLON=0 BTSTH #0010b,@R0 ; BNE loop ; DBLAK=0 になるまで待つ LDI:20 #STCR,R0 LDI:8 #10010000b,R1 ; STOP=1 93 第3章 CPU ○ STB R1,@R0 NOP NOP NOP NOP NOP NOP ; ; ; ; ; ; HSTX端子を用いてストップ状態にする方法 ストップ状態にいれるためには,HSTX端子にLレベルを印加します。 HSTX端子にLレベルを印加したのち,CPUが内部バスを使用していない状態に なったあとで,次の順にクロックを停止します。 CPUクロック⇒内部バスクロック⇒内部DMAクロック⇒内部周辺クロック 発振回路の停止は内部周辺クロック停止と同時に行います。 <注意事項> リセット中(RSTX=L)は,HSTX端子をLレベルにしてもストップには入りません。また,HSTX端 子をLレベルのままリセットを解除した場合もストップには入りません。一度HSTX端子をHレベル に戻した以降,Lレベルにすることによりストップに入ることができます。同様にHSTX端子をLレ ベルのままパワーオンした場合もパワーオンリセット解除後にストップには入りません。 ■ ストップ状態からの復帰 ストップ状態からの復帰は,割込みあるいはハードウェアスタンバイを含むリ セットの発生で行うことができます。 ○ 割込みによる復帰 周辺の機能に付随する割込み許可ビットが有効であれば,周辺の割込みの発 生によりストップ状態から復帰します。 ストップ状態から通常動作状態への復帰は,以下の手順で行います。 割込み発生⇒発振回路動作再開⇒発振安定待ち⇒安定後,内部周辺クロック 供給再開⇒内部DMAクロック供給再開⇒内部バスクロック供給再開⇒内部CPUク ロック供給再開 発振安定待ち時間後のプログラム実行は,以下のようになります。 l 発生した割込みのレベルがCPUのILM,Iフラグで許可されている場合 - l 発生した割込みのレベルがCPUのILM,Iフラグで禁止されている場合 - ○ レジスタ退避を行った後に,割込みベクタを取り込んで割込み処理ルー チンより実行 ストップ状態に入れた命令以降の命令より実行 RSTX端子による復帰 ストップ状態から通常動作状態への復帰は,以下の手順で行います。 RSTX端子へのLレベル印加⇒内部リセット発生⇒発振回路動作再開⇒発振安 定待ち⇒安定後,内部周辺クロック供給再開⇒内部DMAクロック供給再開⇒内 部バスクロック供給再開⇒内部CPUクロック供給再開⇒リセットベクタ取り込 み⇒リセットエントリアドレスより命令の実行再開 <注意事項> HSTX端子がLレベルで,ストップ中の場合は,HSTX端子がHレベルに解除されるまではリセット はかかりません。 94 3.13 低消費電力モード ○ HSTX端子による復帰 ストップ状態から通常動作状態への復帰は,以下の手順で行います。 HSTX端子へのHレベル印加⇒内部リセット発生⇒発振回路動作再開⇒発振安 定待ち⇒安定後,内部周辺クロック供給再開⇒内部DMAクロック供給再開⇒内 部バスクロック供給再開⇒内部CPUクロック供給再開⇒リセットベクタ取込み ⇒リセットエントリアドレスより命令の実行再開 <注意事項> ・周辺からの割込み要求がすでに発生している場合は,ストップ状態にならず,書込みは無視さ れます。 ・パワーオンリセット以外では,発振安定待ち時間中はすべての内部クロック供給は行いません。 パワーオンリセットでは内部状態の初期化を行う必要があるため,すべての内部クロックの供 給を行います。 ・ストップ状態からHSTX端子を“L”レベルにすると,ただちにストップ状態が解除されて所定 の発振安定待ち時間が取られます。発振安定待ち時間経過後,HSTX端子が“L”レベルである とHSTX端子によるストップ状態へ遷移します。 95 第3章 CPU 3.13.3 スリープ状態 スリープ状態とは,CPUクロックと内部バスクロックを停止の状態をいいます。 CPU動作不要な状況での消費電力をある程度抑えることができます。 ■ スリープ制御部のブロックダイヤグラム 図 3.13-2にスリープ制御部のブロックダイヤグラムを示します。 図 3.13-2 スリープ制御部のブロックダイヤグラム ■ スリープ状態への移行 スリープ状態にいれるためには,STCRレジスタのbit7へ“0” ,bit6へ“1”を書 き込みます。 スリープ要求を発行したのち,CPUが内部バスを使用していない状態になったあ とで,次の順にクロックを停止します。 CPUクロック⇒内部バスクロック <注意事項> ・命令を用いてスリープ状態にするためには,必ず下記ルーチンを使用してください。 ・STCRへ書き込む前には,GCRのCCK1,0とPCK1,0の組みに同じ値を設定し,CPU系クロックと周 辺系クロックのギア比を同一にしてください。 ・GCRのCHCビットは任意です。 ・STCRへの書き込み直後は,最低6個の連続するNOP命令が必要です。 〔設定方法:ギア最高速の場合の例〕 LDI:20 #GCR,R0 LDI:8 #00000011b,R1 ; CHC=1,CPU=周辺ギア比 STB R1,@R0 ; DBLON=0の場合 LDI:20 #STCR,R0 LDI:8 #01010000b,R1 ; SLEP=1 STB R1,@R0 NOP ; NOP ; NOP ; NOP ; NOP ; NOP ; 96 3.13 低消費電力モード ■ スリープ状態からの復帰 スリープ状態からの復帰は,割込みあるいはハードウェアスタンバイを含むリ セットの発生で行うことができます。 ○ 割込みによる復帰 周辺の機能に付随する割込み許可ビットが有効であれば,周辺の割込みの発 生によりスリープ状態から復帰します。 スリープ状態から通常動作状態への復帰は,以下の手順で行います。 割込み発生⇒内部バスクロック供給再開⇒内部CPUクロック供給再開 クロック供給後のプログラム実行は,以下のようになります。 l 発生した割込みのレベルがCPUのILM,Iフラグで許可されている場合 - l 発生した割込みのレベルがCPUのILM,Iフラグで禁止されている場合 - ○ レジスタ退避を行った後に,割込みベクタを取り込んで割込み処理ルー チンより実行 スリープ状態に入れた命令以降の命令より実行 ハードウェアスタンバイに起因するリセット以外のリセット要求による復帰 スリープ状態から通常動作状態への復帰は,以下の手順で行います。 内部リセット発生⇒内部バスクロック供給再開⇒内部CPUクロック供給再開 ⇒リセットベクタ取込み⇒リセットエントリアドレスより命令の実行再開 ○ HSTX端子による復帰 スリープ状態から通常動作状態への復帰は,以下の手順で行います。 HSTX端子へのLレベル印加⇒ハードウェアスタンバイ状態へ遷移⇒HSTX端子 へのHレベル印加⇒内部リセット発生⇒発振回路動作再開⇒発振安定待ち⇒安 定後,内部周辺クロック供給再開⇒内部DMAクロック供給再開⇒内部バスクロッ ク供給再開⇒内部CPUクロック供給再開⇒リセットベクタ取込み⇒リセットエ ントリアドレスより命令の実行再開 <注意事項> ・周辺の割込みをDMAの転送要求として使用している場合は,該当の割込みでスリープ状態から 復帰します。 ・周辺からの割込み要求がすでに発生している場合は,スリープ状態になりません。 DMA要求とスリープ要求が同時に発生した場合は,DMA要求が優先されます。 97 第3章 CPU 3.13.4 低消費電力モードの状態遷移 図 3.13-3に低消費電力モードの状態遷移図を示します。 ■ 低消費電力モードの状態遷移 図 3.13-3 低消費電力モ ー ド の 状 態 遷 移 図 98 3.14 メモリアクセスモード 3.14 メモリアクセスモード メモリアクセスに関する動作モードには,バスモードとアクセスモードがありま す。 モード端子(MD2,1,0)とモードレジスタ(MODR)で動作モードの制御を行います。 ■ 動作モード 動作モードには,バスモードとアクセスモードがあります。 バスモード ○ アクセスモード 内ROM外バス 16ビットバス幅 外ROM外バス 8ビットバス幅 バスモード バスモードとは,内部ROMの動作と外部アクセス機能の動作を制御するモー ドを指し,モード設定端子(MD2,1,0)とモードレジスタ(MODR)内のM1,M0 ビットの内容で指定します。 ○ アクセスモード アクセスモードとは,外部データバス幅を制御するモードを示し,モード設 定端子(MD2,1,0)とエリアモードレジスタ(AMD0/AMD1/AMD32/AMD4/AMD5) 内のBW1,0ビットで指定します。 ■ モード端子 MD2,1,0の3端子で,表 3.14-1に示すように動作の指定を行います。 表 3.14-1 モード端子と設定モード モード端子 MD2 MD1 MD0 0 0 0 0 0 1 0 1 0 0 1 1 1 - - モード名 外部ベクタモード0 外部ベクタモード1 − 内部ベクタモード − リセットベクトル 外部データバス幅 備 考 アクセス領域 外部 8 bit 外部ROM外部バスモード 外部 16 bit 外部ROM外部バスモード − − 設定禁止 − − 設定禁止 − − 設定禁止 ■ モードデータ リセット後CPUが“0000 07FFH”に書き込むデータをモードデータと呼びます。 “0000 07FFH” に存在するのはモードレジスタ(MODR)で,本レジスタに設定 した後は本レジスタの設定モードで動作します。 モードレジスタには,リセット後1度だけしか書き込むことが出来ません。 本レジスタによる設定値は,書き込み直後に有効となります。 99 第3章 CPU ■ モードレジスタ(MODR) 図 3.14-1にモードレジスタ(MODR)の構成を示します。 図 3.14-1 モードレジスタの構成 ○ バスモード設定ビット(M1,M0) モードレジスタ書き込み後のバスモードの指定を行います。 各ビットの機能の関係を表 3.14-2に示します。 表 3.14-2 バスモード設定ビットとその機能 M1 0 0 1 1 M0 0 1 0 1 機 能 − 内ROM外バスモード 外ROM外バスモード − 備 考 設定禁止 注意事項参照 設定禁止 <注意事項> 本品種では,内部RAM128KBは内部ROM領域に配置しております。したがって,内部RAM128KBを 使用する場合,必ず“01”に設定してください。詳しくは,「3.14.1 内蔵RAMの使用方法」を参 照してください。 ○ その他のビット(*) これらのビットには,常に“0”を書きこんでください。 100 3.14 メモリアクセスモード ■ モードレジスタ(MODR)書込み時の注意点 MODRに書き込む前には必ずAMD0∼5を設定し,各チップセレクト(CS)領域のバ ス幅を決定してください。 MODRには,バス幅を設定するビットはありません。 バス幅に関しては,MODR書き込み前はモード端子MD2∼0の値が,MODR書き込み 後はAMD0∼5のBW1,0の設定値が有効になります。 例えば,外部リセットベクタは通常領域0(CS0Xがアクティブな領域)で行いま すが,そのときのバス幅はMD2∼0端子で決まります。MD2∼0でそのときのバス幅 を16ビットに設定し,AMD0には何も設定しないままMODRに書き込みを行ってしま うと,AMD0のバス幅の初期値は8ビットになっているため,領域0はMODRに書き込 み後8ビットバスモードに遷移してバス動作してしまい,誤動作します。 このような問題を防ぐため,MODRを書き込む前には必ずAMD0∼5を設定しておく ことが必要です。 101 第3章 CPU 3.14.1 内蔵RAM 内蔵RAMの使用方法 RAMの使用方法 MB91107/MB91108は,内蔵RAM(MB91107:128Kbyte,MB91108:160Kbyte)を搭載して いますが,このRAMを有効にするためにはモードレジスタで内ROM外バスモード (M1,M0=01)にしなければなりません。 ■ 内蔵RAMの使用方法 内蔵RAM使用時の注意点は以下のとおりです。 l l l リセットベクタは,000F_FFFCh固定です。 内蔵RAM領域は,000E_0000h∼000F_FFFFhに配置されていますが,領域 の半分はミラーがかかっています。 内蔵RAMを使用する場合は,モードレジスタで内ROM外バスモードにしな ければいけません。内ROM外バスモードにすると内蔵RAM領域は使用でき ますが,ベクタ領域000F_FFxxhが内部領域になり外部にアクセスしなく なります。 図 3.14-2に内蔵RAM使用時のモード設定を示します。なお,図中の網掛け部分 は内部領域です。 図 3.14-2 内蔵RAM使用時のモード設定 モード設定後はベクタ領域が内部になるため,モードレジスタに書き込む前に TBRレジスタを書き換えてベクタ領域を外部領域に移動する必要があります。 102 3.14 メモリアクセスモード 3.14.2 ユーザプログラムの初期化 内蔵RAMを使用する場合の使用方法を,例を示しながら順次説明します。 ■ ハードウェア設計条件 l 1MBのExternal ROMを0010_0000hから配置した場合を想定します。 - l l l リンカにてプログラムをここへ配置します(このアドレス以外でも以 下の説明への適用は可)。 アドレスはA19∼A1(1MB)をROMにつないであり,それ以上のアドレスは CS0Xを用いることとします。 モード端子(MD2,MD1,MD0)は外部ベクトルに設定します。 リセットベクトルは001F_FFFChに記載します(ここが通常と違うため注 意) 。 ■ リセット解除直後 l l リセット解除後,CPUは000F_FFFChからリセットベクトルを取り込もう とするが,外部ベクトルの設定でるため外部へ取りに行きます。ところ が,CS0Xの初期値により外部空間は1MBのExternal ROMが繰り返して見 える状態になっているので,リセットベクトルそのものはExternal ROM の001F_FFFChに記載されているものを取り込むことになります。 分岐先はリンカで001X_XXXXhのいずれかに入るようにしてあるので,以 降のプログラム実行は,このあたりで行われます。 103 第3章 CPU ■ ユーザプログラム初期化ステップ(その1) l 割込みテーブルを001F_FFXXhになるようにTBRを設定し,その後各種初 期化を行います。この過程でchip Selecの設定も行いますが,このとき, CS0Xのアドレスを001X_XXXXhで有効になるように設定します。 設定の前後では,CS0Xのデコード結果は変わらないので,CPUはExternal ROM上のプログラムをそのまま実行し続けます。 ■ ユーザプログラム初期化ステップ(その2) l ここでモードレジスタの設定をして,内ROMを許可状態にします(実際 には,ROMは搭載されていない)。 - l l l 104 ここで初めてC-buS上のRAMがCPUから見えるようになります。 この状態でのメモリマップは右上のようになります。 必要であればRAMの内容を初期化します。 これにて初期化は完了して,アプリケーシュンプログラムが実行できる ようになります。 第4章 バスインタフェース この章では,バスインタフェースの概要,レジスタの構成/機能,バス動作,バ スタイミングおよびバス動作のプログラム例について説明します。 4.1 バスインタフェースの概要 4.2 バスインタフェースのブロックダイヤグラム 4.3 バスインタフェースのレジスタ 4.4 バス動作 4.5 バスタイミング 4.6 内部クロック逓倍動作(クロックダブラ) 4.7 外部バス動作のプログラム例 105 第4章 バスインタフェース 4.1 バスインタフェースの概要 バスインタフェースは,外部メモリおよび外部I/Oとのインタフェースを制御しま す。 ■ バスインタフェースの特長 l l 25ビット(32MB)のアドレス出力 チップセレクト機能により6個の独立したバンク - 最小で64KB単位で論理アドレス空間上の任意の位置に設定可能 - アドレス端子とチップセレクト端子で合計32MB×6の領域設定可能 l チップセレクト領域ごとに16/8ビットのバス幅の設定が可能(領域0∼5 のみ)領域6,7は包括する領域の設定が有効になります。 l l l l l プログラマブルな自動メモリーウエイト (最大で7サイクル分) の挿入 DRAMインタフェースのサポート - 3種類のDRAMインタフェース Double CAS DRAM(通常DRAM I/F) Single CAS DRAM Hyper DRAM - 2バンク独立制御(RAS,CASなどの制御信号) - 2CAS/1WE,1CAS/2WEのDRAM選択可能 - 高速ページモードサポート - CBR/セルフリフレッシュサポート - プログラマブル波形 未使用のアドレス/データ端子はI/Oポートとして使用可能 little endianモードサポート クロックダブラ使用:最高内部50MHz,外部バス25MHz動作 ■ チップセレクト領域 バスインタフェースには,全部で8種類のチップセレクト領域が用意されます。 各領域の位置は,エリア選択レジスタ(ASR1∼7)とエリアマスクレジスタ(AMR1 ∼7)で4GBの空間に,最小64KB単位で任意に配置することができます。 また,これらのレジスタによって指定された領域に対して外部バスアクセスを しようとすると,対応するチップセレクト信号CS0X∼CS7Xがアクティブ“L”にな ります。 リセット時は,CS0Xを除くこれらの端子はインアクティブ“H”となります。 <注意事項> 領域0は,ASR1∼ASR7によって指定された領域以外の空間に割り当てられます。 リセット時は,0001 0000H∼0005 FFFFH以外の外部領域が領域0です。 領域6,7で設定された領域は,他の領域(0∼5)で設定された領域と排他であり, かつ優先されます。すなわち,領域6,7で設定された領域を外部バスアクセスしよ うとすると,チップセレクト信号CS6X,CS7Xがアクティブ“L”になりますが,他 の領域(0∼5)は必ずインアクティブ“H”となります。領域6,7と領域0∼5が重なっ 106 4.1 バスインタフェースの概要 ていた場合は,領域6,7が優先されます。 図 4.1-1の(a)に,領域1から領域5を00100000H∼0014FFFFHに64KB単位で配置 した例を示します。また,図 4.1-1の(b)に,領域1を00000000H∼0007FFFFHの512KB, 領域2から領域5を00100000H∼004FFFFFHに1MB単位で配置した例を示します。 図 4.1-1 チップセレクト領域の設定例 ■ インタフェース バスインタフェースには,次のインタフェースがあります。 l l 通常バスインタフェース DRAMインタフェース これらのインタフェースは,あらかじめ決められた領域でのみ使用できます。 表 4.1-1に各チップセレクト領域と,使用可能なインタフェース機能との対応 を示します。 エリアモードレジスタ(AMD)によって,これらのどのインタフェースを使用す るかどうかを選択します。 なお,選択しない場合は通常バスインタフェースになります。 表 4.1-1 チップセレクト領域と選択できるバスインタフェースとの対応 領 域 0 1 2 3 4 5 6 7 選択できるバスインタフェース 通常バス ○ ○ ○ ○ ○ ○ ○ ○ 時分割 − − − − − − − − DRAM − − − − ○ ○ − − 備 考 リセット時 ウェイト,バス幅設定不可 ウェイト,バス幅設定不可 107 第4章 バスインタフェース ○ DRAMインタフェース DRAMインタフェースは2チャネル用意され,領域4,5を使用します。 l l l l l l ○ 3種類のDRAMインタフェース - Double CAS DRAM(通常DRAM I/F) - Single CAS DRAM - Hyper DRAM 高速ページモード 2CAS/1WE,1CAS/2WEの選択 CBRリフレッシュ方式 セルフリフレッシュモード RAS,CASのプログラマブル波形出力 バスサイズ指定 領域1∼5は,レジスタの設定によりバス幅の任意指定ができます。 領域0は,リセット時MD2,1,0端子で設定されたバス幅になり,モードレジス タ(MODR)に書き込み以降は,AMD0レジスタの設定値によりバスサイズが指定さ れます。 <注意事項> 領域6,7はバス幅,ウェイトサイクル数の設定はできません。領域6,7の設定は包括される領域 の設定が有効になります。領域6が領域0に包括されるときは,領域0の設定になります。 108 4.2 バスインタフェースのブロックダイヤグラム 4.2 バスインタフェースのブロックダイヤグラム 図 4.2-1に,バスインタフェースのブロックダイヤグラムを示します。 ■ バスインタフェースのブロックダイヤグラム 図 4.2-1 バスインタフェースのブロックダイヤグラム 109 第4章 バスインタフェース 4.3 バスインタフェースのレジスタ 図 4.3-1に,バスインタフェースのレジスタ一覧を示します。 ■ バスインタフェースのレジスタ一覧 図 4.3-1 バスインタフェースのレジスタ一覧 モードレジスタ(MODR)については, 「3.14 てください。 110 メモリアクセスモード」を参照し 4.3 バスインタフェースのレジスタ 4.3.1 エリア選択レジスタ(ASR) エリア選択レジスタ(ASR)とエリアマスクレジス (ASR)とエリアマスクレジス タ(AMR) エリア選択レジスタ(ASR1∼7)とエリアマスクレジスタ(AMR1∼7)は,チップ セレクト領域1∼7のアドレス空間の範囲を指定します。 ■ エリア選択レジスタ(ASR)とエリアマスクレジスタ(AMR) エリア選択レジスタ(ASR)とエリアマスクレジスタ(AMR)のレジスタ構成は 以下のとおりです。 ○ エリア選択レジスタ(ASR1∼7) ○ エリアマスクレジスタ(AMR1∼7) 111 第4章 バスインタフェース エリア選択レジスタ(ASR1∼7)とエリアマスクレジスタ(AMR1∼7)は,チッ プセレクト領域1∼7のアドレス空間の範囲を指定します。 ASR1∼7はアドレスの上位16ビット(A31∼16)を指定し,AMR1∼7で対応するア ドレスビットをマスクします。AMR1∼7の各ビットは“0”でcare, “1”でdon't care を示します。 “care”は,ASRの設定値が“0”の場合は“0” , “1”の場合は“1”としてアド レス空間を示します。 “don't care”の場合は,ASRの設定値にかかわらず,“0”,“1”両方の場合の アドレス空間を示します。 下記にASRとAMRの組合せによる,各チップセレクト領域指定の例を示します。 (例1) ASR1 = 00000000 00000011 B AMR1 = 00000000 00000000 B を設定した場合,ASR1に“1”を設定したビットに対応するAMR1のビットは “0”のため,領域1のアドレス空間は,次に示すように64KBになります。 00000000 00000011 00000000 00000000 B (00030000H) │ 00000000 00000011 11111111 11111111 B (0003FFFFH) (例2) ASR2 = 00001111 11111111 B AMR2 = 00000000 00000011 B を設定した場合,AMR2に“0”を設定したビットに対応するASR2の設定値は “1”と“0”をそのままcareし,AMR2に“1”を設定したビットに対応するAS R2 の ビ ッ ト は,“0”もしくは“1”のdon't careになることから,領域2のアド レス空間は,次に示すように256KBになります。 00001111 11111100 00000000 00000000 B (0FFC0000H) │ 00001111 11111111 11111111 11111111 B (0FFFFFFFH) 領域1∼5の各領域のアドレス空間は,ASR1∼5とAMR1∼5で,4GBの空間に最小64KB 単位で任意に配置することができます。これらのレジスタによって指定された領 域に対してバスアクセスを行うと,対応するチップセレクト端子(CS0X∼CS5X) が“L”出力となります。 なお,領域0は,ASR1∼5とAMR1∼5で設定された領域以外の空間が割り当てられ, リセット時は,ASR1∼5とAMR1∼5の初期値により0001000H∼0005FFFFH以外の領域 が割り当てられています。 <注意事項> 領域1∼5のチップセレクト領域は, お互いにオーバラップしないように設定してください。 図 4.3-2に,リセット時の初期値で64KB単位で設定されたマップと,上記の例1 と例2で設定した領域のマップを示します。 112 4.3 バスインタフェースのレジスタ 図 4.3-2 チップセレクト領域を設定したマップの例 113 第4章 バスインタフェース 4.3.2 エリアモードレジスタ0(AMD0) エリアモードレジスタ0(AMD0) エリアモードレジスタ0(AMD0)は,チップセレクト領域0(ASR1∼5およびAMR1∼ 5で指定された領域以外の領域)の動作モードを指定します。リセット時は,領域0 が選択されます。 ■ エリアモードレジスタ0(AMD0) エリアモードレジスタ0(AMD0)のレジスタ構成は以下のとおりです。 [bit 4,3] BW1,0 (Bus Width bit) BW1,0は,領域0のバス幅を指定します。 BW1 0 0 1 1 BW0 0 1 0 1 バス幅 8ビット 16ビット 設定禁止 設定禁止 [bit 2∼0] WTC2∼0 (Wait Cycle bit) WTC2∼0は,通常バスインタフェース時の自動ウエイトの挿入回数を指定しま す。 WTC2 0 0 0 0 1 1 1 1 WTC1 0 0 1 1 0 0 1 1 WTC0 0 1 0 1 0 1 0 1 挿入ウエイトサイクル数 0 1 2 3 4 5 6 7 AMD0のWTC2∼ 0はリセット時に“111”に設定され,リセット解除直後のバス アクセスでは自動的に7サイクルのウエイトが挿入されます。 114 4.3 バスインタフェースのレジスタ <注意事項> MODRを書き込む前に,必ずAMD0のBW1,0にMD2,1,0端子で設定したバス幅と同じバス幅を設定し てください。 領域0のバス幅は, リセット時はMD2,1,0端子で指定され,モードレジスタ(MODR)設定後は, AMD0で設定されているバス幅が有効になります。 MD2,1,0端子で領域0を16ビット幅に設定し,そのバス幅のままでAMD0を設定せずにMODRの書き 込みを行うと,AMD0のBW1,0の初期値は“00”のため,8ビットバス幅に遷移して誤動作してしま います。 115 第4章 バスインタフェース 4.3.3 エリアモードレジスタ1(AMD1) エリアモードレジスタ1(AMD1) エリアモードレジスタ1(AMD1)は,チップセレクト領域1(ASR1とAMR1で指定さ れた領域)の動作モードを指定します。 ■ エリアモードレジスタ1(AMD1) エリアモードレジスタ1(AMD1)のレジスタ構成は以下のとおりです。 [bit 7] MPX (MultiPleX bit) MPXは,アドレス/データ入出力の時分割入出力インタフェースを制御しま す。 本品種では,時分割入出力バスをサポートしておりません。 このビットには,必ず“0”を書き込んでください。 [bit 4,3] BW1,0 (Bus Width bit) BW1,0は,領域1のバス幅を指定します。 BW1 0 0 1 1 BW0 0 1 0 1 バス幅 8ビット 16ビット 設定禁止 reserved [bit 2∼0] WTC2∼0 (Wait Cycle bit) WTCは,通常バスインタフェース動作時の自動挿入ウエイトサイクル数を指 定します。動作はAMD0のWTC2∼ 0と同様ですが,リセットで“000”に初期化さ れ,挿入ウエイトサイクル数は“0”になります。 116 4.3 バスインタフェースのレジスタ 4.3.4 エリアモードレジスタ32(AMD32) エリアモードレジスタ32(AMD32) エリアモードレジスタ32(AMD32)は,チップセレクト領域2(ASR2とAMR2で指定 された領域)とチップセレクト領域3(ASR3とAMR3で指定された領域)の動作モード を制御します。 これらの領域は通常バスアクセスのみであり,DRAMインタフェースの特殊なイン タフェースは使用できません。 領域2,3のバス幅は,BW1,0ビットで一括して同じバス幅を制御し,自動ウエイト サイクルはそれぞれの領域で独立に設定できます。 ■ エリアモードレジスタ32(AMD32) エリアモードレジスタ32(AMD32)のレジスタ構成は以下のとおりです。 [bit 7,6] BW1,0 (Bus Width bit) BW1,0は領域2/領域3のバス幅を指定します。 BW1 0 0 1 1 BW0 0 1 0 1 バス幅 8ビット 16ビット 設定禁止 reserved [bit 5∼3] WT32∼30 (Wait Cycle bit) WT32∼30は,領域3のメモリアクセス時の自動挿入ウエイトサイクル数を指定 します。 動作は,AMD0のWTC2∼0と同様です。 リセットで“000”に初期化され,挿入ウエイトサイクル数は“0”になりま す。 [bit 2∼0] WT22∼20 (Wait Cycle bit) WT22∼20は,領域2のメモリアクセス時の自動挿入ウエイトサイクル数を指定 します。 動作は,AMD0のWTC2∼0と同様です。 リセットで“000”に初期化され,挿入ウエイトサイクル数は“0”になりま す。 117 第4章 バスインタフェース 4.3.5 エリアモードレジスタ4(AMD4) エリアモードレジスタ4(AMD4) エリアモードレジスタ4(AMD4)は, チップセレクト領域4(ASR4とAMR4で指定さ れた領域)の動作モードを指定します。 領域4はDRAMインタフェースを使用できます。 ■ エリアモードレジスタ4(AMD4) エリアモードレジスタ4(AMD4)のレジスタ構成は以下のとおりです。 [bit 7] DRME (DRaM Enable bit) 領域4に対して,通常バスインタフェースかDRAMインタフェースかを選択し ます。 0:通常バスインタフェース 1:DRAMインタフェース なお,DRAMインタフェースを使用する場合は,後述のDMCR(DRAM Control Register)で更に細かい制御を行う必要があります。 [bit 4,3] BW1,0 (Bus Width bit) BW1,0は領域4のバス幅を指定します。他のAMDレジスタのBWビットと同様の 機能を持ちます。また,DRAMインタフェースを使用する場合もこれらビットで 指定されたバス幅が有効です。 BW1 0 0 1 1 BW0 0 1 0 1 バス幅 8ビ ッ ト 16ビ ッ ト 設定禁止 reserved [bit 2∼0] WTC2∼0 (Wait Cycle bit) WTC2∼ 0は,領域4のメモリアクセス時の自動挿入ウエイトサイクル数を指定 します。 他のAMDレジスタのWTCビットと同様の機能を持ち,リセットで“000”に初 期化され挿入ウエイトサイクル数は“0”になります。 ただし,DRAMインタフェースを使用する場合のウエイトサイクルは,DMCRで 制御されるためWTC2∼0は無効となります。 118 4.3 バスインタフェースのレジスタ 4.3.6 エリアモードレジスタ5(AMD5) エリアモードレジスタ5(AMD5) エリアモードレジスタ(AMD5)は, チップセレクト領域5(ASR5とAMR5で指定され た領域)のバスモードを指定します。 領域5はDRAMインタフェースを使用できます。 ■ エリアモードレジスタ5(AMD5) エリアモードレジスタ5(AMD5)のレジスタ構成は以下のとおりです。 [bit 7] DRME (DRaM Enable bit) 領域5に対して,通常バスインタフェースかDRAMインタフェースかを選択し ます。 0:通常バスインタフェース 1:DRAMインタフェース なお,DRAMインタフェースを使用する場合は,後述のDMCR(DRAM Control Register)で更に細かい制御を行う必要があります。 [bit 4,3] BW1,0 (Bus Width bit) BW1,0は領域5のバス幅を指定します。他のAMDレジスタのBWビットと同様の 機能を持ちます。また,DRAMインタフェースを使用する場合もこれらビットで 指定されたバス幅が有効です。 BW1 0 0 1 1 BW0 0 1 0 1 バス幅 8ビ ッ ト 16ビ ッ ト 設定禁止 reserved [bit 2∼0] WTC2∼0 (Wait Cycle bit) WTC2∼ 0は,領域5のメモリアクセス時の自動挿入ウエイトサイクル数を指定 します。 他のAMDレジスタのWTCビットと同様の機能を持ち,リセットで“000”に初 期化され挿入ウエイトサイクル数は“0”になります。 ただし,DRAMインタフェースを使用する場合のウエイトサイクルは,DMCRで 制御されるためWTC2∼0は無効となります。 119 第4章 バスインタフェース 4.3.7 チップセレクト信号レジスタ6/7(CS67) チップセレクト信号レジスタ6/7(CS67) チップセレクト信号レジスタ6/7(CS67)は,チップセレクト信号CS6X,CS7Xの出力 制御をします。 初期状態では,CS6X,CS7X端子は動作停止状態でHレベル出力になります。 ■ チップセレクト信号レジスタ6/7(CS67) チップセレクト信号レジスタ6/7(CS67)のレジスタ構成は以下のとおりです。 [bit 3] CEB7(Chip select action EnaBle 7) 0:CS7X機能動作停止(初期化) 1:CS7X機能動作許可 [bit 2] CEB6(Chip select action EnaBle 6) 0:CS6X機能動作停止(初期化) 1:CS6X機能動作許可 [bit 1] COE7(Chip select Output Enable 7) 0:出力禁止 1:出力許可(初期化) [bit 0] COE6(Chip select Output Enable 6) 0:出力禁止 1:出力許可(初期化) 120 4.3 バスインタフェースのレジスタ 4.3.8 DRAM制御レジスタ DRAM制御レジスタ4/5(DMCR4/5) 制御レジスタ4/5(DMCR4/5) DRAM制御レジスタ4/5(DMCR4,DMCR5)は,領域4,5のDRAMインタフェースを制御 するレジスタであり,AMD4,5のDRMEビットに“1”が設定されているときのみ有効で す。 ■ DRAM制御レジスタ4/5(DMCR4/5) DRAM制御レジスタ4/5(DMCR4/5)のレジスタ構成は以下のとおりです。 [bit 15∼12] PGS3∼0 (PaGe size Select bit) PGS3∼0は,接続するDRAMのページサイズを指定します(表 4.3-1参照) 。 表 4.3-1 接続DRAMのページサイズ PGS3∼0 ページサイズ 0000 0001 0010 0011 0100 │ 1111 256 512 1024 4096 Reserved コラム A15∼00 アドレス A23∼08 A31∼00 A24∼09 A31∼00 A25∼10 A31∼00 A27∼12 A31∼00 ROW Address A31∼16 A31∼16 A31∼16 A31∼16 A31∼16 ページ内かどうかの判断 8ビットバス A31∼08 A31∼09 A31∼10 A31∼12 16ビットバス A31∼09 A31∼10 A31∼11 A31∼13 バスインタフェースユニットは,PGS3∼0の値と,設定されたバス幅からROW サイズ(ページサイズ) を判定します。レジスタでページアクセスモードが許 可されているときに,ページ内のアクセスが発生すると,高速ページアクセス が実行されます。 [bit 11] Q1W (Q1 wait bit) DRAMアクセス時のQ1サイクル(RASの“H”期間) を自動的に1サイクル延長す るかどうかを指定します。 0:Q1サイクルの延長は行わない(初期値) 1:Q1サイクルの延長を行う [bit 10] Q4W (Q4 wait bit) DRAMアクセス時のQ4サイクル(CASの“L”期間) を自動的に1 サイクル延長 するかどうかを指定します。なお,本Q4WビットはDSASビット(bit9)が“0” のときのみ有効です。 0:Q4サイクルの延長は行わない(初期値) 1:Q4サイクルの延長を行う 121 第4章 バスインタフェース [bit 9] DSAS (Double/Single cas Access cycle Select bit) DRAMアクセスの高速ページモードを使用する際,CASアクセスを2サイクル (DoubLe CAS access)とするのか,1サイクル(Single CAS access)とするの かを選択します。 0:Double CAS access (初期値) 1:Single CAS access [bit 8] HYPR (HYPeR page mode enable) 外部にHyper page mode付のDRAMを接続する際に設定します。 HYPRビットは,DSASビット(bit9)が“1”のときのみ有効です。 0:DoubLe/Single CAS DRAM(初期値) 1:Hyper page mode 付 DRAM [bit 7] PAGE (PAGe Enable bit) 高速ページモードを有効にするかどうかを指定します。 0:高速ページモード無効(常にランダムアクセスの動作,初期値) 1:高速ページモード有効(PGS3∼0で指定されたページ内のアクセスは,高 速ページモードでアクセスされます) [bit 6] C/W (1CAS-2WE/2CAS-1WE Select bit) C/Wビットは,16ビット以上のバス幅を使用する際に,1CAS-2WEタイプのメ モリにインタフェースするか,2CAS-1WEタイプのメモリにインタフェースする かを指定します。 0:1CAS-2WEインタフェース(初期値) 1:2CAS-1WEインタフェース [bit 5] SLFR (SeLF Refresh bit) SLFRに“1”を書き込むと,DRAMはセルフリフレッシュモードに移行します。 セルフリフレッシュモードは,領域4/5に関係なく,DMCR4またはDMCR5のこ のビットに“1”を書き込むと起動されます。 SLFRは任意のタイミングで読み書きできますが,DRAMのセルフリフレッシュ モードを解除した際は,十分にRASのリカバリー時間を確保してください。 0:セルフリフレッシュ解除(初期値) 1:セルフリフレッシュ起動 [bit 4] REFE (REFresh Enable bit) REFEは,CBR(CAS Before RAS)方式の周期的なリフレッシュ動作をするかど うかを指定します。リフレッシュは領域4/5に関係なく,DMCR4またはDMCR5の このビットに“1”を書き込み,RFCR(ReFresh Control Register)のSTRビット を書き込むとリフレッシュサイクルを行います。 0:リフレッシュを行わない(初期値) 1:リフレッシュを行う。RFCR(ReFresh Control Register)で指定される周 期でリフレッシュが行われます。 [bit 3] PAR (PARity select bit) 本デバイスでは,パリティ機能をサポートしていません。 このビットへの書き込みは意味を持ちません。 [bit 2] PERR (Parity ERRor bit) 本デバイスは,パリティ機能をサポートしておりません。 このビットへの書き込みは意味をもちません。 122 4.3 バスインタフェースのレジスタ [bit 1] PEIE (Parity Error Interrupt Enable bit) PEIEはパリティエラー発生時に割込み要求を出力するかどうかを指定します。 本デバイスでは,パリティ機能をサポートしておりません。 このビットには,必ず“0”を書き込んでください。 ■ バス幅の組合せ 表 4.3-2に領域4,5で使用可能なバス幅の組合せを示します。 表 4.3-2 領域4,5で使用可能なバス幅の組合せ 組合せ 1 2 3 4 5 6 7 8 9 領 域 4 通 常 : 16/8ビ ッ ト 通 常 : 16/8ビ ッ ト 通 常 : 16/8ビ ッ ト D R A M : 1 6 ビ ッ ト (C/W=0 ,1) D R A M : 1 6 ビ ッ ト (C/W=0 ,1) D R A M : 1 6 ビ ッ ト (C/W=0 ,1) D R A M : 8 ビ ッ ト (C/W=0 ,1) D R A M : 8 ビ ッ ト (C/W=0 ,1) D R A M : 8 ビ ッ ト (C/W=0 ,1) 領 域 5 通 常 : 16/8ビ ッ ト DRAM: 16ビ ッ ト (C/W=0 ,1) DRAM: 8ビ ッ ト (C/W=0 ,1) 通 常 : 16/8ビ ッ ト DRAM: 16ビ ッ ト (C/W=0 ,1) DRAM: 8ビ ッ ト (C/W=0 ,1) 通 常 : 16/8ビ ッ ト DRAM: 16ビ ッ ト (C/W=0 ,1) DRAM: 8ビ ッ ト (C/W=0 ,1) 123 第4章 バスインタフェース 4.3.9 リフレッシュ制御レジスタ(RFCR) リフレッシュ制御レジスタ(RFCR) リフレッシュ制御レジスタ(RFCR)は,DRAMインタフェースを使用した際のCBR(Cas Before Ras)リフレッシュ動作の制御を行います。 タイムベースタイマの1/32分周出力をクロックソースとして動作する6ビットダウ ンカウンタがあり,RFCRでそのリロード値を制御してリフレッシュインターバルを 指定します。 ■ リフレッシュ制御レジスタ(RFCR) リフレッシュ制御レジスタ(RFCR)のレジスタ構成は以下のとおりです。 タイムベースタイマとは,発振安定待ち間隔などに使用するカウンタであり, ギア制御レジスタ(GCR)のCHC=1のときはX0の1/2,CHC=0のときは内部PLL発振周 波数の1倍の周波数で動作します。例えば,CHC=0でPLLの発振周波数が50MHzのと きには,1サイクルが20nsとなり,20×32=640nsがリフレッシュインターバルの1 周期になります。 リフレッシュのカウントは,クロックダブラON/OFFにかかわらず,タイムベー スタイマの出力で行います。 [bit 13∼8] REL (RELoad value bits) RELは,リフレッシュのインターバルを設定するレジスタです。 リード時には,リフレッシュインターバルをカウントするダウンカウンタの カウント中の値がそのまま読み出されます。 領域4と領域5のDRAMは,RELで示されたインターバルで同時にリフレッシュ されます。 [bit 7] R1W (Refresh 1 Wait) R1Wは,リフレッシュの第1サイクル(R1)を1サイクルだけ延長します。 0:no wait (初期値) 1:wait [bit 6] R3W (Refresh 3 Wait) R3Wは,リフレッシュの第3サイクル(R3)を1サイクルだけ延長します。 0:no wait (初期値) 1:wait [bit 2] STR (STaRt bit) STRは,ダウンカウンタのスタート/ストップを制御します。 0:STOP(初期値) 1:START STRをセットすると,同時にRELの値がダウンカウンタにロードされます。 DMCRのREFEを“1”に設定し, かつSTRを“1”に設定すると,CBRリフレッシュ が行われます。 124 4.3 バスインタフェースのレジスタ [bit 1,0] CKS (CLocK Select bit) CKSは,ダウンカウンタのクロックソースを選択します。 ダウンカウンタは,タイムベースタイマの1/32分周出力Φをクロックとして 使用します。 CKS1 0 0 1 1 CKS0 0 1 0 1 ソースクロック Φ(初期値) Φ/8 Reserved Reserved maxクロック数 26 (REL5-0:6bit)×32(1/32分周) = 2048 26 (REL5-0:6bit)×32(1/32分周)×8 = 16384 125 第4章 バスインタフェース 4.3.10 外部端子制御レジスタ0(EPCR0) 外部端子制御レジスタ0(EPCR0) 外部端子制御レジスタ0(EPCR0)は,各信号の出力を制御します。 出力許可の場合は,各バスモードで所望のタイミングを出力し,入力有効の場合 は,外部からの入力信号を受け付けます。 出力禁止/入力無効の場合は,I/Oポートとして使用できます。 ■ 外部端子制御レジスタ0(EPCR0) 外部端子制御レジスタ0(EPCR0)のレジスタ構成は以下のとおりです。 [bit 11] WRE (WRite pulse output Enable bit) WREは,ライトパルスWR0X-1Xを出力するかどうかを選択します。 リセット時は出力許可となります。 0:出力禁止 1:出力許可(初期値) 本品種では,WREビットによるWR0X-1X端子のI/Oポート制御を行わないため, このビットには常に“1”を設定してください。 ライトパルスは,WREビットを“1”に設定していても,AMDで設定されたバ ス幅に応じてI/Oポートとして使用することができます(例えば,8ビットモー ドではWR1Xは出力されず,対応する端子はI/Oポートとして使用できます)。 [bit 10] RDXE (ReaDX pulse output Enable bit) RDXEは,リードパルスRDXを出力するかどうかを選択します。 リセット時は出力許可となります。 0:出力禁止(設定禁止) 1:出力許可(初期値) 本品種では,RDXEビットによるRDX端子のI/Oポート制御は行わないため,こ のビットには常に“1”を設定してください。 [bit 9] RDYE (ReaDY input Enable bit) RDYEは,RDY入力を以下のように制御します。 リセット時は入力無効となります。 0:RDY入力無効(初期値) 1:RDY入力有効 [bit 8] BRE (Bus Request Enable bit) BREは,BRQとBGRNTXを以下のように制御します。 リセット時はBRQの入力は無効,BGRNTXの出力禁止となります。 0:BRQの入力無効,BGRNTXの出力禁止(端子はI/Oポートとして機能)(初期値) 1:BRQの入力有効,BGRNTXの出力許可 <注意事項> P82/BRQは,プルダウン抵抗(約25kΩ)が内蔵されています。端子が入力状態になったときだけ, 抵抗は有効になります。出力時は,抵抗は付きません。 126 4.3 バスインタフェースのレジスタ [bit 6] CKE (CLocK output Enable bit) CKEは,CLK(外部バスの動作クロック波形)の出力イネーブルビットです。 0:出力禁止 1:出力許可(初期値) 本ビットはリセット時に“1”に初期化され,CLKは出力状態になります。 [bit 5] COE5 (Chip select Output Enable 5) COE5は,CS5Xの出力を制御します。リセット時は出力許可となります。 0:出力禁止 1:出力許可(初期値) [bit 4] COE4 (Chip select Output Enable 4) COE4は,CS4Xの出力を制御します。リセット時は出力許可となります。 0:出力禁止 1:出力許可(初期値) [bit 3] COE3 (Chip select Output Enable 3) COE3は,CS3Xの出力を制御します。リセット時は出力許可となります。 0:出力禁止 1:出力許可(初期値) [bit 2] COE2 (Chip select Output Enable 2) COE2は,CS2Xの出力を制御します。リセット時は出力許可となります。 0:出力禁止 1:出力許可(初期値) [bit 1] COE1 (Chip select Output Enable 1) COE1は,CS1Xの出力を制御します。リセット時は出力許可となります。 0:出力禁止 1:出力許可(初期値) [bit 0] COE0 (Chip select Output Enable 0) COE0は,CS0Xの出力を制御します。リセット時は出力許可となります。 0:出力禁止(設定禁止) 1:出力許可(初期値) 本品種では,COE0ビットによるCS0X端子のI/Oポート制御は行わないため, このビットには常に“1”を設定してください。 127 第4章 バスインタフェース 4.3.11 外部端子制御レジスタ1(EPCR1) 外部端子制御レジスタ1(EPCR1) 外部端子制御レジスタ1(EPCR1)は,アドレス信号の出力を制御します。 ■ 外部端子制御レジスタ1(EPCR1) 外部端子制御レジスタ1(EPCR1)のレジスタ構成は以下のとおりです。 [bit 8∼0] AE24∼AE16 (Address output Enable 24∼16) AE24∼AE16は,対応するアドレスを出力するかどうかを指定します。 出力禁止の場合は,I/Oポートとして使用できます。 0:出力禁止 1:出力許可(初期値) AE24∼AE16は,リセットによって“1FFH”に初期化されます。 128 4.3 バスインタフェースのレジスタ 4.3.12 DRAM信号制御レジスタ DRAM信号制御レジスタ(DSCR) 信号制御レジスタ(DSCR) DRAM信号制御レジスタ(DSCR)は,各DRAM制御信号の出力を制御します。 出力禁止の場合は,I/Oポートとして使用できます。 ■ DRAM信号制御レジスタ(DSCR) DRAM信号制御レジスタ(DSCR)のレジスタ構成は以下のとおりです。 [bit 7] DW1E DW1Xの出力を制御します。リセット時は出力禁止となります。 0:出力禁止(初期値) 1:出力許可 [bit 6] DW0E DW0Xの出力を制御します。リセット時は出力禁止となります。 0:出力禁止(初期値) 1:出力許可 [bit 5] C1HE CS1Hの出力を制御します。リセット時は出力禁止となります。 0:出力禁止(初期値) 1:出力許可 [bit 4] C1LE CS1Lの出力を制御します。リセット時は出力禁止となります。 0:出力禁止(初期値) 1:出力許可 [bit 3] C0HE CS0Hの出力を制御します。リセット時は出力禁止となります。 0:出力禁止(初期値) 1:出力許可 [bit 2] C0LE CS0Lの出力を制御します。リセット時は出力禁止となります。 0:出力禁止(初期値) 1:出力許可 [bit 1] RS1E RAS1の出力を制御します。リセット時は出力禁止となります。 0:出力禁止(初期値) 1:出力許可 [bit 0] RS0E RAS0の出力を制御します。リセット時は出力禁止となります。 0:出力禁止(初期値) 1:出力許可 129 第4章 バスインタフェース 4.3.13 リトルエンディアンレジスタ(LER) リトルエンディアンレジスタ(LER) MB91107/MB91108のバスアクセスは,通常全領域ビッグエンディアン(big endian) で行いますが,リトルエンディアンレジスタ(LER)を設定することにより,領域1∼5 のどれか1領域をリトルエンディアン(little endian)領域として扱うことができま す。 通常/時分割/DRAMインタフェースに依存せず,全バスモードに対してサポート します。ただし,領域0はリトルエンディアン対象外です。 ■ リトルエンディアンレジスタ(LER) リトルエンディアンレジスタ(LER)のレジスタ構成は以下のとおりです。 [bit 2-0] LE2-0 表 4.3-3に示すように,LE2,LE1,LE0ビットの組み合わせでリトルエンディ アン領域を指定します。 表 4.3-3 ビット(LE2,LE1,LE0)の組み合わせによるモードの設定 130 LE2 LE1 LE0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 モード リセット後の初期値。 リトルエンディアン領域なし。 領域1がリトルエンディアン。 領域0,2∼5はビッグエンディアン。 領域2がリトルエンディアン。 領域0∼1,3∼5はビッグエンディアン。 領域3がリトルエンディアン。 領域0∼2,4∼5はビッグエンディアン。 領域4がリトルエンディアン。 領域0∼3,5はビッグエンディアン。 領域5がリトルエンディアン。 領域0∼4はビッグエンディアン。 4.4 バス動作 4.4 バス動作 バス動作の基本事項として,次の項目について説明します。 ・データバス幅と制御信号との関係 ・ビッグエンディアンのバスアクセス ・リトルエンディアンのバスアクセス ・外部アクセスの比較 ・DRAM接続 ■ データバス幅と制御信号との関係 次のバスインタフェースでのデータバス幅と制御信号の関係について説明しま す。 l l 通常バスインタフェース DRAMインタフェース ■ ビッグエンディアンのバスアクセス 外部アクセスについて,次の項目を説明します。 l l l l データフォーマット データバス幅 外部バスアクセス 外部デバイスとの接続例 ■ リトルエンディアンのバスアクセス 外部アクセスについて,次の項目を説明します。 l l l l リトルエンディアンとビッグエンディアンとの相違点 データフォーマット データバス幅 外部デバイスとの接続例 ■ ビッグエンディアンとリトルエンディアンの外部アクセスの比較 ビッグエンディアンとリトルエンディアンの外部アクセスの比較として,バス 幅に対するワードアクセス,ハーフワードアクセス,およびバイトアクセスにつ いて説明します。 ■ DRAM接続 DRAM接続の基本事項について説明します。 l l l DRAM制御端子 ローアドレスとコラムアドレス DRAMデバイスの接続例 131 第4章 バスインタフェース 4.4.1 データバス幅と制御信号との関係 データバスの制御信号(WR0X-1X,CS0H,CS1L,CS1H,DW0X,DW1X)は,ビッグエンディ アン/リトルエンディアンやデータバス幅に関係なくデータバスのバイト位置に常 に1対1に対応します。 ■ データバス幅と制御信号との関係 ここでは,バスモード別に,設定されたデータバス幅で使用される本品種のデー タバスのバイト位置とそれに対応する制御信号をまとめます。 ○ 通常バスインタフェース 図 4.4-1 通常バスインタフェースでのデータバス幅と制御信号 ○ DRAMインタフェース 図 4.4-2 DRAMインタフェースでのデータバス幅と制御信号 以上をまとめたものが表 4.4-1です。 表 4.4-1 データバス幅と制御信号の関係 バス幅 16bit バス幅 WR 2CAS /1WE 1CAS /2WE WR 2CAS /1WE 1CAS /2WE D31-D24 WR0X CASL WEL WR0X CAS WE D23-D16 WR1X CASH WEH データバス 132 8bit バス幅 4.4 バス動作 4.4.2 ビッグエンディアンのバスアクセス リトルエンディアンレジスタ(LER)を設定しない領域に対しては,ビッグエ ンディアンで外部バスアクセスを行います。 FRシリーズは,通常ビッグエンディアンです。 ■ データフォーマット データフォーマットごとに,内部レジスタと外部データバスとの関係を示しま す。 ○ ワードアクセス(LD,ST命令実行時) 図 4.4-3 ワードアクセスの内部レジスタと外部データバスとの関係 ○ ハーフワードアクセス(LDUH,STH命令実行時) 図 4.4-4 ハーフワードアクセスの内部レジスタと外部データバスとの関係 ○ バイトアクセス(LDUB,STB命令実行時) 図 4.4-5 バイトアクセスの内部レジスタと外部データバスとの関係 133 第4章 バスインタフェース ■ データバス幅 データバス幅ごとに,内部レジスタと外部データバスとの関係を示します。 ○ 16ビットバス幅 図 4.4-6 16ビットバス幅の内部レジスタと外部データバスとの関係 ○ 8ビットバス幅 図 4.4-7 8ビットバス幅内部レジスタと外部データバスとの関係 134 4.4 バス動作 ■ 外部バスアクセス 外部バスアクセス(16ビット/8ビットバス幅)を,ワード/ハーフワード/バ イトアクセス別に図 4.4-8,図 4.4-9に示します。また,以 下の項目も合わせて 図 4.4-8,図 4.4-9に示します。 l l l アクセスバイト位置 プログラムアドレスと出力アドレス バスアクセス回数 MB91107/MB91108は,ミスアラインエラーを検出しません。したがって,ワード アクセスの場合,プログラムで指定したアドレス下位2bitが“00” “01” “10” “11” であっても,出力するアドレスの下位2bitは全て“00”となり,ハーフワードア クセスの場合,“00”“01”のときは“00”に,“10”“11”のときには“10”にな ります。 ○ 16ビットバス幅 図 4.4-8 16ビットバス幅のときの外部バスアクセス 135 第4章 バスインタフェース ○ 8ビットバス幅 図 4.4-9 8ビットバス幅のときの外部バスアクセス 136 4.4 バス動作 ■ 外部デバイスとの接続例 MB91107/MB91108と外部デバイスとの接続例は,図 4.4-10のようになります。 図 4.4-10 MB91107/MB91108と外部デバイスとの接続例 137 第4章 バスインタフェース 4.4.3 リトルエンディアンのバスアクセス リ ト ル エ ンデ ィ ア ン レ ジ ス タ (LER)を設定した領域に対しては,リトルエン ディアンで外部バスアクセスを行います。 MB91107/MB91108のリトルエンディアンバスアクセスは,ビッグエンディアン時の バスアクセス動作を利用し,基本的にはビッグエンディアン時の出力アドレスの順 番と制御信号の出力は同じで,データバスのバイト位置をバス幅に応じてスワップ することにより実現しています。 接続時には,ビッグエンディアン領域とリトルエンディアン領域を物理的に分け る必要がありますので,十分注意が必要です。 ■ リトルエンディアンとビッグエンディアンの相違点 リトルエンディアンとビッグエンディアンの相違点を下記に示します。 出力するアドレスの順番は,ビッグエンディアン/リトルエンディアンで変わ りません。 16/8ビットバス幅で使用するデータバス制御信号は,ビッグエンディアンとリ トルエンディアンで変わりません。 ○ ワードアクセス ビッグエンディアンのアドレス“00”に対応するMSB側のバイトデータが, リトルエンディアンでは,LSB側のバイトデータになります。 ワードアクセスの場合は,ワード内の4バイトすべてのバイト位置がひっく りかえります。 “00”→“11” , “01”→“10” , “10”→“01” , “11”→“00” ○ ハーフワードアクセス ビッグエンディアンのアドレス“0”に対応するMSB側のバイトデータが,リ トルエンディアンでは,LSB側のバイトデータになります。 ハーフワードアクセスの場合は,ハーフワード内の2バイトのバイト位置が ひっくりかえります。 “0”→“1” , “1”→“0” ○ バイトアクセス ビッグエンディアン/リトルエンディアンとも同じです。 ■ データフォーマット データフォーマットごとに,内部レジスタと外部データバスとの関係を示しま す。 ○ ワードアクセス(LD,ST命令実行時) 図 4.4-11 ワードアクセスの内部レジスタと外部データバスとの関係 138 4.4 バス動作 ○ ハーフワードアクセス(LDUH,STH命令実行時) 図 4.4-12 ハーフワードアクセスの内部レジスタと外部データバスとの関係 ○ バイトアクセス(LDUB,STB命令実行時) 図 4.4-13 バイトアクセスの内部レジスタと外部データバスとの関係 ■ データバス幅 データバス幅ごとに,内部レジスタと外部データバスとの関係を示します。 ○ 16ビットバス幅 図 4.4-14 16ビットバス幅の内部レジスタと外部データバスとの関係 ○ 8ビットバス幅 図 4.4-15 8ビットバス幅の内部レジスタと外部データバスとの関係 139 第4章 バスインタフェース ■ 外部デバイスとの接続例 MB91107/MB91108と外部デバイスとの接続例を,バス幅ごとに図 4.4-16,図 4.4-17に示します。 ○ 16ビットバス幅 図 4.4-16 MB91107/MB91108と外部デバイスとの接続例(16ビットバス幅) ○ 8ビットバス幅 図 4.4-17 MB91107/MB91108と外部デバイスとの接続例(8ビットバス幅) 140 4.4 バス動作 4.4.4 ビッグエンディアンとリトルエンディアンの外部 アクセスの比較 バス幅に対するワードアクセス,ハーフワードアクセス,およびバイトアクセス について,ビッグエンディアンとリトルエンディアンの外部アクセスの比較を示し ます。 ■ ワードアクセス バス幅 ビッグエンディアンモード リトルエンディアンモード 16ビット バス幅 8ビット バス幅 141 第4章 バスインタフェース ■ ハーフワードアクセス バス幅 16ビット バス幅 8ビット バス幅 142 ビッグエンディアンモード リトルエンディアンモード 4.4 バス動作 ■ バイトアクセス バス幅 ビッグエンディアンモード リトルエンディアンモード 16ビット バス幅 143 第4章 バスインタフェース バス幅 8ビット バス幅 144 ビッグエンディアンモード リトルエンディアンモード 4.4 バス動作 4.4.5 DRAM関係 DRAM関係 MB91107/MB91108にDRAMを接続するときの基本事項と接続例を示します。 ■ DRAM制御端子 DRAMインタフェースに使用する端子の機能とバス幅の関係を表 4.4-2に示しま す。 表 4.4-2 DRAM制御端子の機能とバス幅 データバス16ビットモード データバス8ビットモード 端子名 2CAS/1WE モード 1CAS/2WE モード 備 考 RAS0 領域4 RAS 領域4 RAS 領域4 RAS RAS1 領域5 RAS 領域5 RAS 領域5 RAS CS0L 領域4 CASL 領域4 CAS 領域4 CAS CS0H 領域4 CASH 領域4 WEL 領域4 CAS CS1L 領域5 CASL 領域5 CAS 領域5 CAS CS1H 領域5 CASH 領域5 WEL 領域5 CAS DW0X 領域4 WE 領域4 WEH 領域4 WE DW1X 領域5 WE 領域5 WEH 領域5 WE ・データバス16ビット モード時の“L”,“H” とアドレス下位1bit(A0) との対応 ・“L”:“0” ・“H”:“1” CASL:A0が“0”の領域 に対応するCAS CASH:A0が“1”の領域 に対応するCAS WEL :A0が“0”の領域 に対応する WE WEH :A0が“1”の領域 に対応する WE ■ ローアドレスとコラムアドレス DRAMインタフェースのアドレス生成は,DRAM制御レジスタ4,5(DMCR4,5)のペー ジサイズ選択ビット(PGS3∼PGS0)により決定されます。また,高速ページモー ドを使用する場合には,ページ内かどうかの判断は,PGS3∼PGS0とデータバス幅 により決定されます。 表 4.4-3 ページサイズ選択ビット PGS3∼0 ページ サイズ ローアドレス A31-16 A15-00 コラム アドレス 0000 0001 0010 0011 0100 │ 1111 256 512 1024 4096 A31-16 A31-16 A31-16 A31-16 A23-08 A24-09 A25-10 A27-12 A31-00 A31-00 A31-00 A31-00 ページ内かどうかの判断 8ビットバス 16ビットバス A31-08 A31-09 A31-10 A31-12 A31-09 A31-10 A31-11 A31-13 reserved 145 第4章 バスインタフェース DRAMと接続する場合には,使用するバス幅に合わせて本LSIの出力するアドレス をシフトして接続することが必要です。 以下に×8ビット,256ページサイズを使用した場合のDRAMの接続例を,8/16ビッ トに分けて説明します。16ビットの場合には,アドレス出力の下位側からそれぞ れ1ビットを接続しません。 ○ 8ビットデータバス(DRAM1個使用) 図 4.4-18 MB91107/MB91108と8ビット出力DRAM1個との接続例(8ビットデータバス) ○ 16ビットデータバス(DRAM2個使用) 図 4.4-19 MB91107/MB91108と8ビット出力DRAM2個との接続例(16ビットデータバス) 146 4.4 バス動作 ■ DRAMデバイスの接続例 次の条件でのDRAMデバイスの接続例を図 4.4-20に示します。 l l l DRAM:2CAS/1WE,ページサイズ512,×16ビット品 バス幅:16ビット バンク数:2(領域4,5使用) 図 4.4-20 MB91107/MB91108とDRAMデバイスとの接続例 147 第4章 バスインタフェース 4.5 バスタイミング 次の項目について,各モードでのバスアクセスのタイミング図と動作について説 明します。 ・通常バスアクセス ・ウエイトサイクル ・DRAMインタフェース ・DRAMリフレッシュ ・外部バスリクエスト ■ 通常バスアクセス 通常バスインタフェースでは,リードサイクル/ライトサイクルともに“2クロッ クサイクル”が基本バスサイクルになります。本書では,その2サイクルを“BA1” , “BA2”で表します。 l l l l l 基本リードサイクル 基本ライトサイクル 各モードでのリードサイクル 各モードでのライトサイクル リード/ライト混合サイクル ■ ウエイトサイクル ウエイトサイクルには,AMDレジスタのWTCビットによる自動ウエイトサイクル と,RDY端子を使用する外部ウエイトサイクルがあります。 ウエイトサイクルは,前のサイクルを継続して行うモードであり,ウエイトが 解除されるまで“BA1サイクル”を繰り返します。 l l 自動ウエイトサイクル 外部ウエイトサイクル ■ DRAMインタフェース チップセレクト領域4および領域5は,DRAM空間として使用することができます。 AMD4もしくはAMD5のDRMEビットをセットし,DMCR4,5で動作の制御を行います。 DRAMインタフェースには,CASの出力によって以下の3種類のモードがあり, DMCR4,5のDSASとHYPRビットで設定されます。 l l l Double CAS access(DSAS:0,HYPR:0):本書では通常DRAMインタフェース Single CAS access(DSAS:1,HYPR:0):本書ではSingle DRAMインタフェー ス Hyper page mode付きDRAM(DSAS:1,HYPR:1):本書ではHyper DRAMインタ フェース また,DMCR4,5のC/Wビットを設定することにより,1CAS/2WEのDRAM,2CAS/1WE のDRAMを選択することができます。 ROW/COLUMNアドレスについては,DMCRのPGS3∼0ビットで指定されたページサイ ズと,AMD4または5のBW1,0ビットで指定されたバス幅で決定されます。 148 4.5 バスタイミング ○ 通常DRAMインタフェース 通常DRAMインタフェースは,CASアクセスを2クロックサイクルとするモード であり,DMCR4,5のDSASビットに“0”,HYPRビットに“0”を設定することによ り実行することができます。通常DRAMインタフェースは,リードサイクル/ラ イトサイクルともに“5クロックサイクル”が基本バスサイクルになり,本書 では,そのサイクルを“Q1∼Q5”で表します。 また,DMCR4,5のPAGEビットによって高速ページモードの設定が出来ます。 高速ページモードとは,ROWアドレスが一致する同一ページ空間内で,COLUMN アドレスとCASの制御によって高速にメモリアクセスを行う方式であり,本モー ドを使用する場合は,DMCR4,5のPAGEビットに“1”を設定する必要があります。 同一ページ内かどうかは,DMCR4,5のPGS3∼0ビットとバス幅によって決定さ れます。 高速ページモードのアクセスは,通常のQ1∼Q5のアクセス動作が終了した時 点から開始され,高速ページモードに遷移するとQ4∼Q5のサイクルを繰り返し ます。いったんページモードに遷移すると,ページ外のアクセスが発生するか, またはリフレッシュサイクルが発生するかしない限り,RASは“L”レベルのま まです。 なお,高速ページモードでもQ1,Q4のウエイトサイクルを設定することがで き,その場合は高速ページモードに遷移するとQ4,Q4W,Q5のサイクルを繰り返 します。 l l l l l l ○ 通常DRAMインタフェースのリードサイクル 通常DRAMインタフェースのライトサイクル 通常DRAMリードサイクル 通常DRAMライトサイクル 通常DRAMインタフェースでの自動ウエイトサイクル 高速ページモード時のDRAMインタフェース Single DRAMインタフェース Single DRAMインタフェースは,CASアクセスを1クロックサイクルとするモー ドであり,DMCR4,5のDSASビットに“1”,HYPRビットに“0”を設定することに より実行することができます。本モードを使用するときには,必ずDMCR4,5の PAGEビットにも“1”を設定し,高速ページモードで動作させてください。 Single DRAMインタフェースは,通常DRAMインタフェースと同様Q1∼Q3のサ イクルで立上がり,Q4サイクルに遷移すると1サイクルでCASの制御を行い,リー ド/ライト動作を行います。本書では,リードの場合のQ4サイクルを“Q4SR” , ライトの場合を“Q4SW”で表しています。なお,ページサイズ,1CAS/2WE,2CAS/1WE の設定,Q1サイクルのウエイトは通常DRAMインタフェースと同様です。 l l l Single DRAMインタフェースのリードサイクル Single DRAMインタフェースのライトサイクル Single DRAMインタフェース 149 第4章 バスインタフェース ○ Hyper DRAMインタフェース Hyper DRAMインタフェースは,CASアクセスを1クロックサイクルとし,また, リードサイクル時のアドレスをデータの取り込みよりも一つ先出しすることに よって,高速にDRAMアクセスを行うモードです。本モードはDMCR4,5のDSASビッ トに“1” ,HYPRビットに“1”を設定することにより実行することができます。 また,必ずPAGEビットにも“1”を設定し,高速ページモードで動作させてく ださい。 Hyper DRAMインタフェースは,通常DRAMインタフェースと同様Q1∼Q3のサイ クルで立上がり,Q4サイクルに遷移すると1サイクルでCASの制御を行い,リー ド/ライト動作を行います。本書では,リードの場合のQ4サイクルを“Q4HR” , ライトの場合を“Q4HW”で表しています。なお,ページサイズ,1CAS/2WE,2CAS/1WE の設定,Q1サイクルのウエイトは通常DRAMインタフェースと同様です。 l l l Hyper DRAMインタフェースのリードサイクル Hyper DRAMインタフェースのライトサイクル Hyper DRAMインタフェース ■ DRAMリフレッシュ l l l CASビフォアRAS(CBR)リフレッシュ CBRリフレッシュの自動ウエイトサイクル セルフリフレッシュ ■ 外部バスリクエスト l l 150 バス権解放 バス権獲得 4.5 バスタイミング 4.5.1 基本リードサイクル 基本リードサイクルの動作タイミングを示します。 ■ 基本リードサイクルタイミング ○ バス幅:16ビット,アクセス:ワード,CS0領域のアクセス 図 4.5-1 基本リードサイクルのタイミング例 【動作説明】 l l l l l l CLKは,外部バスの動作クロックを出力します。 クロックダブラOFF時は,CPU系と外部バス系の動作クロックは1:1の関 係にあり,CLKもCPU系と同周波数のクロックを出力します。また,クロッ クダブラONのときにはCPU系と外部バス系は1:1/2の関係になり,CLKは CPU系の1/2の周波数を出力します。 ギアがかかったときには,ギア比に応じてCLKの周波数も下がります。 A24-A00(アドレス24-00)は,リードサイクルのワード/ハーフワード /バイトアクセスの先頭バイト位置のアドレスをバスサイクルの開始 (BA1)から出力します。上記例の場合,16ビットバス幅でワードアク セスを行うため,1回目のバスサイクルでワードアクセスの上位16ビッ トのアドレス(下位2ビット“0” )を,2回目のバスサイクルで下位16ビッ トのアドレス(下位2ビット“2” )を出力します。 D31-D16(データ31-16)は,外部メモリ,I/Oからのリードデータを表 します。リードサイクルの場合は,RDXの立上がりでD31-D16を取り込み ます。なお,リードサイクルの場合は,バス幅やワード/ハーフワード /バイトアクセスに関係なく,RDXの立上がりでD31-D16をすべて取り込 み,取り込んだデータが有効かどうかの判断はチップ内部で行います。 RDXは,外部データバスのリードストローブ信号であり,BA1の立下がり でアサートし,BA2の立下がりでネゲートします。 リードサイクルの場合はWR0X,WR1Xはネゲート状態です。 CS0X-CS5X(領域チップセレクト)信号の出力は,A24-A00と同タイミン グでバスサイクルの開始(BA1)からアサートされます。CS0X-CS5Xはア ドレス出力をデコードして作っており,アドレス出力が変化してASR,AMR で設定したチップセレクト領域が変わらない限り変化しません。また, 151 第4章 バスインタフェース CS0X-CS5Xは,いつも必ずどれかはアサートされています。 l 152 DACK0-2,EOP0-2は,DMAの外部バスサイクルで出力されます。出力する かどうかはDMACのレジスタ設定により決定され,出力タイミングはRDX と同じです。 4.5 バスタイミング 4.5.2 基本ライトサイクル 基本ライトサイクルの動作タイミングを示します。 ■ 基本ライトサイクルタイミング ○ バス幅:8ビット,アクセス:ワード,CS0領域のアクセス 図 4.5-2 基本ライトサイクルのタイミング例 【動作説明】 l l l l l A24-A00(アドレス24-00)は,ライトサイクルのワード/ハーフワード /バイトアクセスの先頭バイト位置のアドレスをバスサイクルの開始 (BA1)から出力します。上記例の場合,8ビットバス幅でワードアクセ スを行うため,まずワードアクセスの先頭バイト(アドレス下位“0”) のアドレスを出力し,その後は順々に先頭バイトから+1のアドレス ( “1” ) ,+2のアドレス( “2”),+3のアドレス(“3” )を出力します。 D31-D16(データ31-16)は,外部メモリ,I/Oへのライトデータを表し ます。ライトサイクルの場合は,ライトデータをバスサイクルの開始 (BA1)から出力し,バスサイクルの終了(BA2の終了)でHigh-Zにしま す。 上記例の場合は,8ビットデータバス幅のため,D31-24にライトデータ が出力されます。 ライトサイクルでは,RDXはネゲート状態です。 WR0X,WR1Xは,外部データバスのライトストローブ信号であり,BA1の 立下がりでアサートし,BA2の立下がりでネゲートします。 D31-24はWR0X,D23-16はWR1Xと,それぞれ対応するデータバスに応じて アサートされます。上記例の場合は8ビットデータバス幅のため,WR0X のみアサートされます。 チップセレクト領域0∼5の最大バス幅が8ビットの場合,すなわち設定 されたすべての領域が8ビットの場合は,D23-16とWR1Xは自動的にI/O ポートになり,HigH-Zとなります。 上記例はD23-16とWR1XがI/Oポートとして使用される場合を示していま す。また,チップセレクト領域0∼5のうち,バス幅がどれか1領域でも16 ビットに設定されていると,D23-16とWR1XはI/Oポートして使用できま 153 第4章 バスインタフェース せんのでご注意ください。 端 子 最大バス幅 16ビット 8ビット l 154 D31-24 WR0X D31-24 WR0X D31-24 WR0X D23-16 WR1X D23-16 WR1X I/Oポート DACK0-2,EOP0-2はDMAの外部バスサイクルで出力されます。出力するか どうかはDMACのレジスタ設定により決定され,出力タイミングはWR0X∼ 1Xと同じです。 4.5 バスタイミング 4.5.3 各モードでのリードサイクル 各モードでのリードサイクルの動作タイミングを示します。 ■ 各モードでのリードサイクルタイミング ○ バス幅:16ビット,アクセス:ハーフワード 図 4.5-3 リードサイクルのタイミング例1 ○ バス幅:16ビット,アクセス:バイト 図 4.5-4 リードサイクルのタイミング例2 ○ バス幅:8ビット,アクセス:ワード 図 4.5-5 リードサイクルのタイミング例3 ○ バス幅:8ビット,アクセス:ハーフワード 図 4.5-6 リードサイクルのタイミング例4 155 第4章 バスインタフェース ○ バス幅:8ビット,アクセス:バイト 図 4.5-7 リードサイクルのタイミング例5 156 4.5 バスタイミング 4.5.4 各モードでのライトサイクル 各モードでのライトサイクルの動作タイミングを示します。 ■ 各モードでのライトサイクルタイミング ○ バス幅:16ビット,アクセス:ワード 図 4.5-8 ライトサイクルのタイミング例1 ○ バス幅:16ビット,アクセス:ハーフワード 図 4.5-9 ライトサイクルのタイミング例2 ○ バス幅:16ビット,アクセス:バイト 図 4.5-10 ライトサイクルのタイミング例3 ○ バス幅:8ビット,アクセス:ハーフワード 図 4.5-11 ライトサイクルのタイミング例4 157 第4章 バスインタフェース ○ バス幅:8ビット,アクセス:バイト 図 4.5-12 ライトサイクルのタイミング例5 158 4.5 バスタイミング 4.5.5 リード/ライト混在サイクル リード/ライト混在サイクルの動作タイミングを示します。 ■ リード/ライト混在サイクルタイミング ○ CS0領域:バス幅16ビット,ワードリード CS1領域:バス幅8ビット,ハーフワードライト 図 4.5-13 リード/ライト混在サイクルのタイミング例 【動作説明】 l l 上記はチップセレクト領域の切り換わりに,アイドルサイクル(何もバ スサイクルを行っていないサイクル)が挿入された場合を表しています。 バスサイクルの間にアイドルサイクルが挿入された場合は,アドレスは 次のバスサイクルが開始されるまで前のバスサイクルのアドレスをその まま出力し続けます。それに伴い,出力しているアドレスに対応する CS0-5Xもアサートし続けます。 上記例は16ビット/8ビットバスの混在です。 最大バス幅が16ビットのため,8ビットアクセス領域(CS1領域)でも D23-16とWR1XはI/Oポートになりません。D23-16は不定データが出力さ れ,WR1Xはネゲート状態になります。 159 第4章 バスインタフェース 4.5.6 自動ウエイトサイクル 自動ウエイトサイクルの動作タイミングを示します。 ■ 自動ウエイトサイクルタイミング ○ バス幅:16ビット,アクセス:ハーフワードリード/ライト 図 4.5-14 自動ウエイトサイクルのタイミング例 【動作説明】 l l 160 自動ウエイトサイクルは,それぞれのチップセレクト領域のAMDレジス タのWTCビットを設定することにより実現できます。 上記の場合は,WTCビットに“001”を設定して,通常バスサイクルに1 ウエイトのバスサイクルを挿入した例を示しており,その場合は“通常 バスサイクル2クロック”+“ウエイトサイクル1クロック”の“計3ク ロックバスサイクル”になります。 自動ウエイトは,最大7クロックサイクルまで(その場合通常バスサイ クルは9クロックサイクル)設定することができます。 4.5 バスタイミング 4.5.7 外部ウエイトサイクル 外部ウエイトサイクルの動作タイミングを示します。 ■ 外部ウエイトサイクルタイミング ○ バス幅:16ビット,アクセス:ハーフワード 図 4.5-15 外部ウエイトサイクルのタイミング例 【動作説明】 l l l 外部ウエイトサイクルは,EPCR0のRDYEビットを“1”に設定し,外部RDY 端子の入力を有効にすることにより実現できます。 外部RDYを使用する場合は,必ず1クロック以上の自動ウエイトサイクル, すなわちAMDのWTCビットに“001”以上の値を設定してください。自動 ウエイトサイクル中はRDYの検出はせず,自動ウエイトサイクル後検出 します。 また,外部RDYは,CLK端子出力の立下がりに同期して入力してください。 CLKの立下がり時点で外部RDYが“L”レベルならばウエイトサイクルと なり,同じBA1サイクルを繰り返します。また,“H”レベルのときには ウエイトサイクル終了と判断し,BA2サイクルに遷移します。 161 第4章 バスインタフェース 4.5.8 通常DRAM 通常DRAMインタフェースのリードサイクル DRAMインタフェースのリードサイクル 通常DRAMインタフェースのリードサイクルの動作タイミングを示します。 ■ 通常DRAMインタフェースのリードサイクルタイミング ○ バス幅:16ビット,アクセス:ワード,CS4領域のアクセス 図 4.5-16 通常DRAMインタフェースのリードサイクルのタイミング例 【動作説明】 l l l l 162 A24-00(アドレス24-00)は,DMCRのPGS3∼0とバス幅で決定されたリー ドアドレスに対して,Q2の立上がりサイクルからROWアドレスを,Q4の 立上がりサイクルからCOLUMNアドレスを出力します。 Q1サイクルで出力されるアドレスは不定です。 D31-16(データ31-16)は,外部メモリ,I/Oからのリードデータを表し ます。リードサイクルの場合は,1CAS/2WEの場合はCASの立上がりで, 2CAW/1WEの場合はCASLもしくはCASHの立上がりでD31-16を取り込みます。 1CAS/2WEの場合は,CASはD31-16に対応し,2CAS/1WEの場合は,CASLは D31-24に,CASHはD23-16に対応します。 なお,リードサイクルの場合,バス幅やワード/ハーフワード/バイト アクセスに関係なく,D31-16をすべて取り込み,取り込んだデータが有 効かどうかの判断はチップ内部で行います。 RASはROWアドレスストローブであり,Q1の立下がりで“H”になり,Q3 の立上がりで“L”になります。PAGEビットが“0”のとき(高速ページ モードではないモード)では,RASはnormally“H”となります。 CASはCOLUMNアドレスストローブであり,2CAS/1WEのCASLは上位アドレ ス側(下位1ビット“0” )の,CASHは下位アドレス側(下位1ビット“1”) 4.5 バスタイミング のCASを表します。 Q4の立下がりでアサートし,Q5の立下がりでネゲートします。 l l l l リードサイクル時は WE ( WEL , WEH 含む)はネゲート状態です。 リードサイクルでは,RDXはQ1サイクルから“L”レベルが出力されます。 CS4X,CS5Xは,Q1サイクルの立上がりから出力されます。 DACK0-2,EOP0-2はDMAの外部バスサイクルで出力されます。出力するか どうかはDMAC内のレジスタの設定により決定され,出力タイミングはCAS と同じです。 163 第4章 バスインタフェース 4.5.9 通常DRAM 通常DRAMインタフェースのライトサイクル DRAMインタフェースのライトサイクル 通常DRAMインタフェースのライトサイクルの動作タイミングを示します。 ■ 通常DRAMインタフェースのライトサイクルタイミング ○ バス幅:16ビット,アクセス:ワード,CS4領域のアクセス 図 4.5-17 通常DRAMインタフェースのライトサイクルのタイミング例 【動作説明】 l l l l l l 164 A24-00(アドレス24-00)の出力は,リードサイクル時と同様です。 D31-16(データ31-16)は,外部メモリ,I/Oへのライトデータを表しま す。ライトサイクルの場合は,ライトデータをQ1サイクルから出力し, Q5サイクルの終了後HigH-Zにします。 1CAS/2WEの場合は WEL がD31-24に,WEH がD23-16に対応し,また,2CAS/1WE の場合は WE がD31-16に対応して有効データが出力されます。 8ビットデータバス幅の場合は,D31-24にライトデータが出力されます。 RASはリードサイクル時と同様です。 CASもリードサイクル時と同様です。 WE は,DRAMへのライトストローブであり,1CAS/2WEの場合, WEL は上位 アドレス側(下位1ビット“0”)の, WEH は下位アドレス側(下位1ビッ ト“1” )の WE を表します。 ライトサイクル時に出力し,Q4の立上がりでアサートし,Q5の次のサイ クルの立上がりでネゲートします。 ライトサイクルでは,RDXは“H”レベルが出力されます。 4.5 バスタイミング l l CS4X,CS5Xは,Q1サイクルの立上がりから出力されます。 DACK0-2,EOP0-2はDMAの外部バスサイクルで出力されます。出力するか どうかはDMAC内のレジスタの設定により決定され,出力タイミングはCAS と同じです。 165 第4章 バスインタフェース 4.5.10 通常DRAM 通常DRAMリードサイクル DRAMリードサイクル 通常DRAMリードサイクルの動作タイミングを示します。 ■ 通常DRAMリードサイクルタイミング ○ バス幅:16ビット,アクセス:ハーフワード 図 4.5-18 通常DRAMリードサイクルのタイミング例1 ○ バス幅:16ビット,アクセス:バイト 図 4.5-19 通常DRAMリードサイクルのタイミング例2 166 4.5 バスタイミング ○ バス幅:8ビット,アクセス:ハーフワード 図 4.5-20 通常DRAMリードサイクルのタイミング例3 167 第4章 バスインタフェース 4.5.11 通常DRAM 通常DRAMライトサイクル DRAMライトサイクル 通常DRAMライトサイクルの動作タイミングを示します。 ■ 通常DRAMライトサイクルタイミング ○ バス幅:16ビット,アクセス:ハーフワード 図 4.5-21 通常DRAMライトサイクルのタイミング例1 ○ バス幅:16ビット,アクセス:バイト 図 4.5-22 通常DRAMライトサイクルのタイミング例2 168 4.5 バスタイミング ○ バス幅:8ビット,アクセス:ハーフワード 図 4.5-23 通常DRAMライトサイクルのタイミング例3 169 第4章 バスインタフェース 4.5.12 通常DRAM 通常DRAMインタフェースでの自動ウエイトサイク DRAMインタフェースでの自動ウエイトサイク ル 通常DRAMインタフェースでの自動ウエイトサイクルの動作タイミングを示します。 ■ 通常DRAMインタフェースでの自動ウエイトサイクルタイミング ○ バス幅:8ビット,アクセス:バイト 図 4.5-24 通常DRAMインタフェースでの自動ウエイトサイクルのタイミング例 【動作説明】 l 170 DMCR4,5のQ1W,Q4Wビットを設定することによって,Q1サイクル,Q4サ イクルにウエイトサイクルを1クロックサイクルだけ挿入することがで きます。このサイクルを“Q1W,Q4W”サイクルと呼びます。 Q1W,Q4Wサイクルは,それぞれQ1,Q4サイクルと同じサイクルを実行す るものであり,これによってRASの“H”幅,CASの“L”幅を1サイクル ずつ延ばすことができます。 DRAMのアクセスタイムに合わせて設定してください。 4.5 バスタイミング 4.5.13 高速ページモード時のDRAM 高速ページモード時のDRAMインタフェース DRAMインタフェース 高速ページモード時のDRAMインタフェースの動作タイミングを示します。 ■ 高速ページモード時のDRAMインタフェースタイミング ○ リードサイクル,バス幅:16ビット,アクセス:ワード 図 4.5-25 高速ページモード時のDRAMインタフェースのタイミング例1 【動作説明】 l l ○ RASを“L”に下げたまま, WE ( WEL と WEH も含む)の“H”を保持し,CAS (CASL,CASH含む)のみの動作によりリードコントロールを行います。 Q4,Q5サイクル単位で,COLUMNアドレスを出力します。 ライトサイクル,バス幅:16ビット,アクセス:ワード 図 4.5-26 高速ページモード時のDRAMインタフェースのタイミング例2 【動作説明】 l l RASを“L”に下げたまま,WE( WEL と WEH も含む)を“L”にし,CAS(CASL, CASH含む)のみの動作によりライトコントロールを行います。 Q4,Q5サイクル単位で,COLUMNアドレスと出力データを出力します。 171 第4章 バスインタフェース ○ 高速ページモードのCS領域(CS4/5)切り換え,リード/ライト混在,2CAS/1WE 図 4.5-27 高速ページモード時のDRAMインタフェースのタイミング例3 【動作説明】 l l l ○ 高速ページモード中は,CS領域が切り換わってもRASは“L”レベルのま まです。 高速ページからバスサイクルが開始される場合には,リードサイクル時 のRDXはQ4の立上がりから“L”レベルになり,Q5サイクル終了後ネゲー トします。また,ライトサイクルの場合は, WE ( WEL , WEH 含む)Q4の 立上がりから“L”レベルになり,Q5サイクル終了後ネゲートします。 CS4X,5Xの変化は出力アドレスと同タイミングであり,高速ページから バスが開始される場合は,COLUMNアドレスと同じQ4サイクルから変化し ます。 高速ページモードと基本バスサイクルとの混在 図 4.5-28 高速ページモード時のDRAMインタフェースのタイミング例4 【動作説明】 l 172 高速ページモード中は,CS領域が切り換わって他のCS領域のアクセスを 行っていても,RASは“L”レベルのままです。 4.5 バスタイミング 4.5.14 Single DRAMインタフェースのリードサイクル DRAMインタフェースのリードサイクル Single DRAMインタフェースのリードサイクルの動作タイミングを示します。 ■ Single DRAMインタフェースのリードサイクルタイミング ○ バス幅:16ビット,アクセス:ワード 図 4.5-29 Single DRAMインタフェースのリードサイクルのタイミング例 【動作説明】 l l l l l Q4SRサイクル単位で,COLUMNアドレスを出力します。 CASはQ4SRの立下がりでアサートし,Q4SR終了の立上がりでネゲートし ます。 D31-16の取り込みは,通常DRAMインタフェースと同様CAS(CASL,CASH 含む)の立上がりです。 リードサイクル終了後は外部データバスのバスファイトを避けるため, 必ず最低でも1クロックのアイドルサイクルが挿入されます。 DACK0-2,EOP0-2の出力タイミングはCASと同じです。 173 第4章 バスインタフェース 4.5.15 Single DRAMインタフェースのライトサイクル DRAMインタフェースのライトサイクル Single DRAMインタフェースのライトサイクルの動作タイミングを示します。 ■ Single DRAMインタフェースのライトサイクルタイミング ○ バス幅:16ビット,アクセス:ワード 図 4.5-30 Single DRAMインタフェースのライトサイクルのタイミング例 【動作説明】 l l l 174 Q4SWサイクル単位で,COLUMNアドレス,ライトデータを出力します。 CASはQ4SWの立下がりでアサートし,Q4SW終了の立上がりでネゲートし ます。 WE( WEL ,WEH も含む)は,Q4SWサイクルの立上がりでアサートし,Q4SW 終了後ネゲートします。 4.5 バスタイミング 4.5.16 Single DRAMインタフェース DRAMインタフェース Single DRAMインタフェースの動作タイミングを示します。 ■ Single DRAMインタフェースタイミング ○ Single DRAMと基本バスサイクルとの混在,CS切り換え 図 4.5-31 Single DRAMインタフェースのタイミング例 【動作説明】 l l 高速ページからバスサイクルが開始される場合には,リードサイクル時 のRDXはQ4SRの立上がりから“L”レベルになり,Q4SRサイクル終了後ネ ゲートします。また,ライトサイクルの場合は, WE ( WEL , WEH 含む) Q4SWの立上がりから“L”レベルになり,Q4SWサイクル終了後ネゲート します。 CS4X,5Xの変化は出力アドレスと同タイミングであり,高速ページから バスが開始される場合は,COLUMNアドレスと同じQ4SR,Q4SWサイクルか ら変化します。 175 第4章 バスインタフェース 4.5.17 Hyper DRAMインタフェースのリードサイクル DRAMインタフェースのリードサイクル Hyper DRAMインタフェースのリードサイクルの動作タイミングを示します。 ■ Hyper DRAMインタフェースのリードサイクルタイミング ○ バス幅:16ビット,アクセス:ワード 図 4.5-32 Hyper DRAMインタフェースのリードサイクルのタイミング例 【動作説明】 l l l l l 176 Q4HRサイクル単位で,COLUMNアドレスを出力します。 CASはQ4HRの立下がりでアサートし,Q4HR終了の立上がりでネゲートし ます。 D31-16の取り込みは,対応するCOLUMNアドレスが出力されたQ4HRの次 Q4HRサイクルで出力されるCASの立下がりで取り込みます。 リードサイクル終了後は外部データバスのバスファイトを避けるため, 必ず最低でも1クロックのアイドルサイクルが挿入されます。 DACK0-2,EOP0-2の出力タイミングはCASと同じです。 4.5 バスタイミング 4.5.18 Hyper DRAMインタフェースのライトサイクル DRAMインタフェースのライトサイクル Hyper DRAMインタフェースのライトサイクルの動作タイミングを示します。 ■ Hyper DRAMインタフェースのライトサイクルタイミング ○ バス幅:16ビット,アクセス:ワード 図 4.5-33 Hyper DRAMインタフェースのライトサイクルのタイミング例 【動作説明】 l l l Q4HWサイクル単位で,COLUMNアドレス,ライトデータを出力します。 CASはQ4HWの立下がりでアサートし,Q4HW終了の立上がりでネゲートし ます。 WE( WEL ,WEH も含む)は,Q4HWサイクルの立上がりでアサートし,Q4HW 終了後ネゲートします。 177 第4章 バスインタフェース 4.5.19 Hyper DRAMインタフェース DRAMインタフェース Hyper DRAMインタフェースの動作タイミングを示します。 ■ Hyper DRAMインタフェースタイミング ○ Hyper DRAMと基本バスサイクルとの混在,CS切り換え 図 4.5-34 Hyper DRAMインタフェースのタイミング例 【動作説明】 l l 178 高速ページからバスサイクルが開始される場合には,リードサイクル時 のRDXはQ4HRの立下がりから“L”レベルになり,Q4HRサイクル終了後ネ ゲートします。また,ライトサイクルの場合は, WE ( WEL , WEH 含む) Q4HWの立上がりから“L”レベルになり,Q4HWサイクル終了後ネゲート します。 CS4X,5Xの変化は出力アドレスと同タイミングであり,高速ページから バスが開始される場合は,COLUMNアドレスと同じQ4HR,Q4HWサイクルか ら変化します。 4.5 バスタイミング 4.5.20 DRAMリフレッシュ DRAMリフレッシュ DRAMリフレッシュの動作タイミングを示します。 ■ CASビフォアRAS(CBR)リフレッシュ 図 4.5-35 CASビフォアRAS(CBR)リフレッシュのタイミング例 【動作説明】 l CBRリフレッシュは,DMCR4,5のREFEビットとRFCRのSTRビットを両方設 定することにより実行できます。 l 本書では,CBRサイクルを“R1∼R4”で表します。 CASはR2サイクルの立下がりでアサートされ,R4サイクルの立下がりで ネゲートします。 RASはR3サイクルの立上がりでアサートされ,R4の次のアイドルサイク ルの立下がりでネゲートします。 WE はCBR中ネゲート状態です。 l 1CAS/2WEの場合はCASが,2CAS/1WEの場合はCASL,CASHともに上記タイ ミングで出力されます。 l CBRリフレッシュは,DRAMバスアクセスより優先されます。 しかし,DRAMアクセスの途中,例えば8ビットバス幅でワードアクセス を行っているときなどは,4回のバスアクセスが必要ですが,1∼3回目 のバスアクセスでリフレッシュ要求を検出しても,リフレッシュは4回 目のバスサイクル終了まで行われません。 必ず一つのアクセス単位の終了を待って行われます。 l CBRリフレッシュ終了後のDRAMアクセスは,例え次のバスアクセスがペー ジ内であっても,必ずDRAMアクセスの開始を示すQ1サイクルから始まり, ROWアドレスから出力されます。 l CBRリフレッシュは,次の状態でも定期的に実行されます。 - DRAM以外の通常バスアクセスを行っているとき - 外部バス解放状態(BGRNTXが“L”) - CPUがスリープ状態 179 第4章 バスインタフェース ■ CBRリフレッシュの自動ウエイトサイクル 図 4.5-36 CBRリフレッシュの自動ウエイトサイクルのタイミング例 【動作説明】 l RFCRのR1WとR3Wビットを設定することにより,CBRリフレッシュの自動 ウエイトサイクルを挿入することができます。 ■ セルフリフレッシュ 図 4.5-37 セルフリフレッシュのタイミング例 【動作説明】 l l l 180 DMCR4,5のどちらかのSLFRビットに“1”を設定するとセルフリフレッ シュが開始され, “0”を設定すると解除されます。 セルフリフレッシュ終了後は最低7サイクルのアイドルサイクルが挿入 されます。 本書では,セルフリフレッシュを“SR1∼SR3”で表します。 4.5 バスタイミング 4.5.21 外部バスリクエスト 外部バスリクエストの動作タイミングを示します。 ■ バス権解放 図 4.5-38 バス権解放のタイミング例 【動作説明】 l l EPCR0のBREビットを“1”に設定することにより,BRQ,BGRNTXによるバ スアービトレーションを行うことができます。 バス権解放時は,端子をHigh-Zにしてから1サイクル後にBGRNTXをアサー トします。 ■ バス権獲得 図 4.5-39 バス権獲得のタイミング例 【動作説明】 l l EPCR0のBREビットを“1”に設定することにより,BRQ,BGRNTXによるバ スアービトレーションを行うことができます。 バス権獲得時は,BGRNTXをネゲートしてから1クロック後に各端子をア クティブにします。 181 第4章 バスインタフェース 4.6 内部クロック逓倍動作(クロックダブラ) 内部クロック逓倍動作(クロックダブラ) MB91107/MB91108は,クロック逓倍回路を持っており,CPU内部はバスインタフェー スの2倍,1倍のいずれかの周波数で動作します。どちらのクロックを選択した場合 でも,バスインタフェースはCLK出力端子に同期して動作します。CPUからの外部ア クセス要求が発生した場合,CLK出力の立上がりを待って外部へのアクセスを開始し ます。 ■ クロック選択方法 2倍,1倍のクロック選択の方法は,「3.12.11 クロックダブラ機能」を参照し てください。 クロック選択の変更は,チップ動作中でも任意に行うことができます。クロッ ク選択の切り替え中はバス動作が一時抑止されます。また,リセット時には,ク ロック選択は自動的に1倍になります。 図 4.6-1に2倍クロックの,図 4.6-2に1倍クロックのタイミング例を示します。 図 4.6-1 2倍クロックの場合のタイミング例(BW-16bit,access-word read) 図 4.6-2 1倍クロックの場合のタイミング例(BW-16bit,access-word read) 182 4.7 外部バス動作のプログラム例 4.7 外部バス動作のプログラム例 外部バスを動作させるための簡単なプログラム例を示します。 ■ 外部バス動作のプログラム仕様例 レジスタの設定は以下のとおりです。 ○ 領域 l l l l l l ○ 領域0(AMD0) :16ビット,通常バス,自動ウエイト−0 領域1(AMD1) :16ビット,通常バス,自動ウエイト−2 領域2(AMD32) :16ビット,通常バス,自動ウエイト−1 領域3(AMD32) :16ビット,通常バス,自動ウエイト−1 領域4(AMD4):16ビット,DRAM,ページサイズ256,1CAS/2WE,ウエイ トあり,CBRリフレッシュ 領域5(AMD5):16ビット,DRAM,ページサイズ512,2CAS/1WE,ウエイ トなし,CBRリフレッシュ 他のバス l l l l リフレッシュ(RFCR) :ウエイトなし,1/8設定 外部端子(EPCR0) :外部RDY受付け,BRQ,BGRNTXのアービトレーション 外部端子(DSCR) :DRAM端子の設定 little endian(LER) :領域2 そのほか以下の点に注意してください。 l l l MD2,1,0は“001” ,外部ベクタは16ビットモード 領域0を同じバス幅に設定してから,モードレジスタ(MODR)を設定 領域1∼5はオーバラップしないように設定 ■ 外部バス動作のプログラム例 本プログラムは説明のためにバイトレジスタはバイトで,ハーフワードレジス タはハーフワードで書き込みを行っています。 ***** プログラム例 ***** //各レジスタ設定 init epcr init dscr init amd0 ldi:20 #0xffff,r0 // 外部端子設定 // 外部RDYウエイト,BRQ,BGRNTXバス アービトレーション // epcr0レ ジスタア ドレ ス 設定 // epcr0レジスタライト ldi:20 sth #0x628,r1 r0,@r1 ldi:8 #0xff,r0 ldi:20 stb #0x625,r1 r0,@r1 // DRAM端子設定 // RAS,CAS,WE // dscrレ ジスタ アド レス 設定 // dscrレジスタライト ldi:8 #0x08,r0 // 16ビットバス,0-wait 183 第4章 バスインタフェース ldi:20 stb #0x620,r1 r0,@r1 // amd0レ ジスタ アド レス 設定 // amd0レジスタライト ldi:8 ldi:20 stb #0x0a,r0 #0x621,r1 r0,@r1 // 16ビットバス,2-wait // amd1レ ジスタ アド レス 設定 // amd1レジスタライト init amd32 ldi:8 ldi:20 stb #0x49,r0 #0x622,r1 r0,@r1 // 通常, 16ビットバス,1-wait // amd32レ ジスタア ドレ ス 設定 // amd32レジスタライト init amd4 ldi:8 ldi:20 stb #0x88,r0 #0x623,r1 r0,@r1 // DRAM, 16ビットバス // amd4レ ジスタ アド レス 設定 // amd4レジスタライト init amd5 ldi:8 ldi:20 stb #0x88,r0 #0x624,r1 r0,@r1 // DRAM, 16ビットバス // amd5レ ジスタ アド レス 設定 // amd5レジスタライト #0x0c90,r0 // page size=256,Q1/Q4-wait,Page // 1CAS-2WE,CBR, パリティなし // dmcr4レ ジスタア ドレ ス 設定 // dmcr4レジスタライト init amd1 init dmcr4 ldi:20 ldi:20 sth init dmcr5 ldi:20 ldi:20 sth #0x62e,r1 r0,@r1 // page size=512,Q1/Q4-waitなし,Page // 2CAS-1WE,CBR,パリティなし // dmcr5レ ジスタア ドレ ス 設定 // dmcr5レジスタライト ldi:20 #0x0205,r0 // ldi:20 sth #0x626,r1 r0,@r1 REL=2,R1W/R3W-waitなし,refresh, 1/8 // rfcrレ ジスタ アド レス 設定 // rfcrレジスタライト init asr ldi:32 ldi:32 ldi:32 ldi:32 ldi:32 ldi:20 ldi:20 ldi:20 ldi:20 ldi:20 st st st st st #0x0013001,r0 #0x0015001,r1 #0x0017001,r2 #0x0019001,r3 #0x001b001,r4 #0x60c,r5 #0x610,r6 #0x614,r7 #0x618,r8 #0x61C,r9 r0,@r5 r1,@r6 r2,@r7 r3,@r8 r4,@r9 // // // // // // // // // // // // // // // init ler ldi:8 ldi:20 stb #0x02,r0 #0x7fe,r1 r0,@r1 // CS2 little endian // lerレ ジスタア ドレ ス 設定 // lerレジスタライト init modr ldi:8 ldi:20 stb #0x80,r0 #0x7ff,r1 r0,@r1 // 外ROM外バス // modrレ ジスタ アド レス 設定 // modrレジスタライト init rfcr 184 #0x62c,r1 r0,@r1 #0x10c0,r0 asr1,amr1レ ジスタ 設定値 asr2,amr2レ ジスタ 設定値 asr3,amr3レ ジスタ 設定値 asr4,amr4レ ジスタ 設定値 asr5,amr5レ ジスタ 設定値 asr1,amr1レ ジスタア ドレ ス 設定 asr2,amr2レ ジスタア ドレ ス 設定 asr3,amr3レ ジスタア ドレ ス 設定 asr4,amr4レ ジスタア ドレ ス 設定 asr5,amr5レ ジスタア ドレ ス 設定 asr1,amr1レジスタライト asr2,amr2レジスタライト asr3,amr3レジスタライト asr4,amr4レジスタライト asr5,amr5レジスタライト 4.7 外部バス動作のプログラム例 //外部バスアクセス adr set ldi:32 ldi:32 ldi:32 ldi:32 ldi:32 ldi:32 ldi:32 ldi:32 #0x00136da0, #0x00151300, #0x00196434, #0x0019657c, #0x00196600, #0x001a6818, #0x001a6b8c, #0x001a6c00, bus acc ld lduh ld ldub st sth st stb @r0,r8 @r1,r9 @r2,r10 @r3,r11 r8,@r4 r9,@r5 r10,@r6 r11,@r7 r0 r1 r2 r3 r4 r5 r6 r7 // // // // // // // // CS1アドレス CS2アドレス CS4アドレス(ページ内) CS4アドレス(ページ内) CS4アドレス(ページ外) CS5アドレス(ページ内) CS5アドレス(ページ内) CS5アドレス(ページ外) // // // // // // // // CS1 CS2 CS4 CS4 CS4 CS5 CS5 CS5 data data data data data data data data word half word byte word half word byte load word load load load store word store store store 185 第4章 バスインタフェース 186 第5章 I/Oポート I/Oポート この章では,I/Oポートの概要,レジスタの構成/機能,および外部端子と切換え レジスタとの関係について説明します。 5.1 I/Oポートの概要 5.2 ポートデータレジスタ(PDR) 5.3 データ方向レジスタ(DDR) 5.4 外部端子と切換えレジスタとの関係 187 第5章 I/Oポート 5.1 I/Oポートの概要 I/Oポートの概要 MB91107/MB91108は,各端子に対応するリソ−スが入出力として端子を使用しない 設定になっているとき,I/Oポートとして使用することができます。 ■ I/Oポートの基本ブロックダイヤグラム 図 5.1-1にI/Oポートの基本的な構成を示します。 図 5.1-1 I/Oポートの基本ブロックダイヤグラム ■ I/Oポートのレジスタ I/Oポートは,ポートデータレジスタ(PDR)とデータ方向レジスタ(DDR)で構 成されています。 ○ 入力モード(DDR=“0” )時 l l ○ PDRライト時:PDRに設定値が書き込まれます。 出力モード(DDR=“1” )時 l l 188 PDRリード時:対応する外部端子のレベルが読み出されます。 PDRリード時:PDRの値が読み出されます。 PDRライト時:PDRの値が対応する外部端子に出力されます。 5.2 ポートデータレジスタ(PDR) 5.2 ポートデータレジスタ(PDR) ポートデータレジスタ(PDR) ポートデータレジスタ(PDR2∼I)は,I/Oポートの入出力データレジスタです。 対応するデータ方向レジスタ(DDR2∼I)で,入出力制御が行われます。 ■ ポートデータレジスタ(PDR) ポートデータレジスタ(PDR)のレジスタ構成は以下のとおりです。 ○ 特殊状態のポート PH0は,リセットで出力状態(L出力)になります。 PH2,PH3は,リセットでチップセレクトが有効になります(H出力)。 189 第5章 I/Oポート 5.3 データ方向レジスタ(DDR) データ方向レジスタ(DDR) データ方向レジスタ(DDR2∼I)は,対応するI/Oポートの入出力方向をビット単 位で制御します。 0で入力,1で出力制御が行われます。 ■ データ方向レジスタ(DDR) データ方向レジスタ(DDR)のレジスタ構成は以下のとおりです。 190 5.4 外部端子と切換えレジスタとの関係 5.4 外部端子と切換えレジスタとの関係 表 5.4-1に各外部端子についての初期値と,I/Oポートとして使用するのか,制御 端子として使用するのかを切り換えるレジスタとの関係を示します。 表中の8ビット:∼,16ビット:∼とあるのは,使用する外部バス幅によって機能 が変化することを示します。 ■ 外部端子の機能(I/Oポートまたは制御端子)選択 表 5.4-1 外部端子の機能選択一覧(続く) 端子番号 端子記号 D24∼D31 D24∼D31 切換えレジスタ MD0∼2,AMD0∼5で選択したバス幅に応じて 自動的に切換わります。 8ビット:P20∼P27 16ビット:D16∼D23 − A00∼A15 A00∼A15 − P20∼P27 85∼92 D16∼D23 93∼100 102∼109 111∼118 初期値 8ビット:P20∼P27 16ビット:D16∼D23 P60∼P67 120,1∼7 A16∼A23 A16∼A23 P70 8 A24 A24 P80 79 P80 RDY P81 80 P81 BGRNTX P82 81 P82 BRQ 82 RDX RDX 83 WR0X WR0X P85 84 WR1X 65 CS0X 8ビット:P85 16ビット:WR1X CS0X PA1∼PA5 66∼70 CS1X∼CS5X CS1X∼CS5X PA6 71 CLK CLK EPCR1(AE16∼AE23ビット) 0:P60∼P67 1:A16∼A23 EPCR1(AE24ビット) 0:P70 1:A24 EPCR0(RDYEビット) 0:P80 1:RDY EPCR0(BREビット) 0:P81 1:BGRNTX EPCR0(BREビット) 0:P82 1:BRQ EPCR0のRDXEビットには常に“1”を設 定してください。 EPCR0のWREビットには常に“1”を設定 してください。 EPCR0のWREビットには常に“1”を設定 してください。 MD0∼2,AMD0∼5で選択したバス幅に応じて 自動的に切換わります。 8ビット:P85 16ビット:WR1X EPCR0のCOE0ビットには常に“1”を設 定してください。 EPCR0(COE1∼COE5ビット) 0:PA1∼PA5 1:CS1X∼CS5X EPCR0(CKEビット) 0:PA6 1:CLK 191 第5章 I/Oポート 表 5.4-1 外部端子の機能選択一覧(続く) 端子番号 端子記号 初期値 PB0∼PB7 56∼63 76∼78 73 72 12∼15 RAS0 CS0L CS0H DW0X RAS1 CS1L CS1H DW1X MD0∼MD2 HSTX NMIX AN0∼AN3 PB0∼PB7 MD0∼MD2 HSTX NMIX AN0∼AN3 PE0 42 PE0 SC2 43 PE1 DREQ0 PE1/DREQ0 PE2 44 PE2 DACK0 PE3 45 PE3 EOP0 46 PE4 DREQ1 PE4/DREQ1 PE5 47 PE5 DACK1 PE6 48 PE6 EOP1 49 33 PE7 DREQ2 PF0 SI0 PE7/DREQ2 PF0/SI0 PF1 35 PF1 SO0 PF2 36 SC0 37 PF3 SI1 PF2/SC0 (入力) PF3/SI1 PF4 38 PF4 SO1 192 切換えレジスタ DSCR(RS0E∼DW1Eビット) 0:PB0∼PB7 1:RAS0∼DW1X − − − − SMR(SCKEビット) 0:端子の値がSC2に入力されます。 1:SC2(出力) 端子の値が常にDREQ0に入力されます。 DATCR(AKSE0,AKDE0ビット) 0:PE2 1:DACK0 DATCR(EPSE0,EPDE0ビット) 0:PE3 1:EOP0 端子の値が常にDREQ1に入力されます。 DATCR(AKSE1,AKDE1ビット) 0:PE5 1:DACK1 DATCR(EPSE1,EPDE1ビット) 0:PE6 1:EOP1 端子の値が常にDREQ2に入力されます。 端子の値が常にSI0に入力されます (ストップ時は除く)。 SMR(SOEビット) 0:PF1 1:SO0(出力) SMR(SCKEビット) 0:端子の値がSC0に入力されます (ストップ時は除く)。 1:SC0(出力) 端子の値が常にSI1に入力されます (ストップ時は除く)。 SMR(SOEビット) 0:PF4 1:SO1(出力) 5.4 外部端子と切換えレジスタとの関係 表 5.4-1 外部端子の機能選択一覧(続き) 端子番号 端子記号 PF5 39 SC1 40 PF6 SI2 初期値 PF5/SC1 (入力) PF6/SI2 PF7 41 PF7 SO2 PG0∼PG7 25∼32 PG0/INT0∼PG7/INT7 切換えレジスタ SMR(SCKEビット) 0:端子の値がSC1に入力されます (ストップ時は除く)。 1:SC1(出力) 端子の値が常にSI2に入力されます (ストップ時は除く)。 SMR(SOEビット) 0:PF7 1:SO2(出力) 端子の値が常にINT0∼INT7に入力され ます。 INT0∼INT7 PH0 16 PH0 /TRG0 TRG0 17 PH1 TRG1 PF1/TRG1 PH2∼PH3 18∼19 TRG2∼TRG3 CS7X∼CS6X CS7X∼CS6X PH4∼PH7 20∼23 PH4∼PH7 OCPA0∼OCPA3 PI0 50 PI0 DACK2 PI1 51 EOP2 PI1 ATGX 9 10 11 74 54 53 24,55,110 64 34,52,75, 101,119 AVCC AVRH AVSS (AVRL) RSTX X0 X1 VCC C AVCC AVRH AVSS (AVRL) RSTX X0 X1 VCC C VSS VSS 端子の値が常にTRG0に入力されます (ストップ時は除く)。 リセット時はPH0で出力状態になります (L出力)。 端子の値が常にTRG1に入力されます (ストップ時は除く)。 CS67(COE7∼COE6ビット) 0:PH2∼PH3 1:CS7X∼CS6X 端子の値が常にTRG2∼TRG3に入力されま す(ストップ時は除く)。 リセット時はCS6X,CS7XになりH出力にな ります。 PCNL(POENビット) 0:PH4∼PH7 1:OCPA0∼OCPA3 DATCR(AKSE2,AKDE2ビット) 0:PI0 1:DACK2 DATCR(EPSE2,EPDE2ビット) 0:PI1 1:EOP2 端子の値が常にATGXに入力されます (ストップ時は除く)。 − − − − − − − − − 193 第5章 I/Oポート 194 第6章 16ビットリロードタイマ 16ビットリロードタイマ この章では,16ビットリロードタイマの概要,レジスタの構成/機能,および16 ビットリロードタイマの動作について説明します。 6.1 16ビットリロードタイマの概要 6.2 16ビットリロードタイマのレジスタ 6.3 16ビットリロードタイマの動作 6.4 カウンタの動作状態 195 第6章 16ビットリロードタイマ 6.1 16ビットリロードタイマの概要 16ビットリロードタイマの概要 16ビットリロードタイマは,16ビットのダウンカウンタ,16ビットのリロードレ ジスタ,内部カウントクロック作成用プリスケーラ,コントロールレジスタで構成 されています。 入力クロックとして内部クロック3種類(マシンクロックの2/8/32分周)から選択 できます。 割込みによるDMA転送の起動が可能です。 MB91107/MB91108は,本タイマを3チャネル内蔵しています。 リロードタイマのチャネル2のTO出力は,LSI内部でA/Dコンバータに接続されてい ます。したがって,リロードレジスタに設定された周期でA/D変換を起動することが 可能です。 ■ 16ビットリロードタイマのブロックダイヤグラム 図 6.1-1に16ビットリロードタイマのブロックダイヤグラムを示します。 図 6.1-1 16ビットリロードタイマのブロックダイヤグラム 196 6.2 16ビットリロードタイマのレジスタ 6.2 16ビットリロードタイマのレジスタ 16ビットリロードタイマのレジスタ 図 6.2-1に16ビットリロードタイマのレジスタ一覧を示します。 ■ 16ビットリロードタイマのレジスタ一覧 図 6.2-1 16ビットリロードタイマのレジスタ一覧 197 第6章 16ビットリロードタイマ 6.2.1 コントロールステータスレジスタ(TMCSR) コントロールステータスレジスタ(TMCSR) 16ビットタイマの動作モード,および割込みの制御をします。 UF,CNTE,TRGビット以外のビットの書換えは,CNTE=0のときに行うようにしてくだ さい。 同時書き込みは可能です。 ■ コントロールステータスレジスタ(TMCSR) コントロールステータスレジスタ(TMCSR)のレジスタ構成は以下のとおりです。 [bit 11,10] CSL1,CSL0 (Conut clock SLect) カウントクロックセレクトビットです。 選択されるクロックソースを,表 6.2-1に示します。 表 6.2-1 CSLビット設定クロックソース CSL1 0 0 1 1 CSL0 0 1 0 1 クロックソース(φ:マシンクロック) φ/21 φ/23 φ/25 設定禁止 [bit 9,8,7] MOD2,MOD1,MOD0 (MODe) 動作モードを設定するビットです。 必ず“0”を設定してください。 [bit 6] OUTE (OUTput Enable) 必ず“0”を設定してください。 [bit 5] OUTL 必ず“0”を設定してください。 [bit 4] RELD リロード許可ビットです。“1”のときリロードモードになり,カウンタの値 が0000H⇒ FFFFHへのアンダフローと同時にリロードレジスタの内容をカウンタ へロードしてカウント動作を続けます。 “0”のときカウンタの値が0000H⇒FFFFH へのアンダフローによりカウント動作を停止します。 [bit 3] INTE 割込み要求許可ビットです。“1”のとき,UFビットが“1”になると割込み 要求を発生します。 “0”のときは,割込み要求を発生しません。 198 6.2 16ビットリロードタイマのレジスタ [bit 2] UF タイマ割込み要求フラグです。カウンタの値が,0000H⇒ FFFFHへのアンダフ ローにより“1”にセットされます。 “0”の書込みによってクリアされます。 このビットへの“1”書込みは,意味がありません。 リードモディファイライト系命令における読出し時には,“1”が読出されま す。 [bit 1] CNTE タイマのカウントイネーブルビットです。このビットに“1”を書込むと, 起動トリガ待ち状態になります。 “0”書込みによりカウント動作は停止します。 [bit 0] TRG ソフトウェアトリガビットです。“1”書込みによりソフトウェアトリガがか かり,リロードレジスタの内容をカウンタへロードしてカウント動作を開始し ます。 “0”書き込み動作は意味を持ちません。読出し値は,常に“0”です。 このレジスタによるトリガ入力は,CNTE=“1”のときのみ有効となります。 CNTE=“0”のときには,何も起こりません。 199 第6章 16ビットリロードタイマ 6.2.2 16ビットタイマレジスタ 16ビットタイマレジスタ(TMR) ビットタイマレジスタ(TMR)/ (TMR)/16ビットリロー 16ビットリロー ドレジスタ(TMRLR) ドレジスタ(TMRLR) 16ビットタイマレジスタ(TMR)は,16ビットタイマのカウント値を読出すことがで きるレジスタです。 16ビットリロードレジスタ(TMRLR)は,カウントの初期値を保持しておくレジスタ です。 ■ 16ビットタイマレジスタ(TMR) 16ビットタイマのカウント値を読出すことができるレジスタです。初期値は不 定です。 このレジスタの読出しは,必ず16ビットデータ転送命令で行ってください。 ■ 16ビットリロードレジスタ(TMRLR) 16ビットリロードレジスタは,カウントの初期値を保持しておくレジスタです。 初期値は不定です。このレジスタへの書込みは,必ず16ビットデータ転送命令 で行ってください。 200 6.3 16ビットリロードタイマの動作 6.3 16ビットリロードタイマの動作 16ビットリロードタイマの動作 16ビットリロードタイマには,次の二つの動作方法があります。 ・内部クロック動作 ・アンダフロー動作 ■ 内部クロック動作 内部クロックの分周クロックでタイマを動作させる場合,クロックソースとし てマシンクロックの2,8,32分周のクロックから選択することができます。 カウント許可と同時にカウント動作を開始したい場合は,コントロールステー タスレジスタのCNTEビットとTRGビットの両方に“1”を書込んでください。TRGビッ トによるトリガ入力は,タイマが起動状態のとき(CNTE=“1”)動作モードにかか わらず常に有効です。 カウンタの起動,カウンタの動作について,図 6.3-1に示します。 カウンタスタートのトリガが入力されてから,リロードレジスタのデータがカ ウンタへロードされるまでに,T(T:周辺系クロックマシンサイクル)の時間が かかります。 図 6.3-1 カウンタの起動と動作のタイミング ■ アンダフロー動作 カウンタの値が0000HからFFFFHになるときをアンダフローとしています。した がって,〔リロードレジスタの設定値+1〕カウントでアンダフローが発生するこ とになります。 アンダフロー発生時,コントロールレジスタのRELDビットが“1”のとき,リロー ドレジスタの内容をカウンタへロードしてカウント動作を継続します。RELDビッ トが“0”のときカウンタは,FFFFHで停止します。 アンダフローによりコントロールレジスタのUFビットがセットされ,INTEビッ トが“1”のとき割込み要求を発生します。 アンダフロー動作を図 6.3-2に示します。 201 第6章 16ビットリロードタイマ 図 6.3-2 アンダフロー動作のタイミング 202 6.4 カウンタの動作状態 6.4 カウンタの動作状態 カウンタの状態は,コントロールレジスタのCNTEビットと内部信号のWAIT信号に よって決まっています。設定可能な状態としてCNTE=“0”,WAIT=“1”の停止状態(STOP 状態) ,CNTE=“1”,WAIT=“1”の起動トリガ待ち状態(WAIT状態) ,CNTE=“1”,WAIT= “0”の動作状態(RUN状態)があります。各状態の遷移を図 6.4-1に示します。 ■ カウンタの動作状態 図 6.4-1 カウンタの状態遷移 203 第6章 16ビットリロードタイマ 204 第7章 PWMタイマ PWMタイマ この章では,PWMタイマの概要,レジスタの構成/機能,およびPWMタイマの動作 について説明します。 7.1 PWMタイマの概要 7.2 PWMタイマのブロックダイヤグラム 7.3 PWMタイマのレジスタ 7.4 PWM動作 7.5 ワンショット動作 7.6 PWMタイマの割込み要因とタイミングチャート 7.7 PWMタイマ複数チャネルの起動 205 第7章 PWMタイマ 7.1 PWMタイマの概要 PWMタイマの概要 PWMタイマは,精度の高いPWM波形を効率良く出力することができます。 MB91107/MB91108は,PWMタイマを4チャネル内蔵しています。 各チャネルは,16ビットダウンカウンタ,周期設定用バッファ付き16ビットデー タレジスタ,デューティ設定用バッファ付き16ビットコンペアレジスタ,および端 子制御部から構成されます。 ■ PWMタイマの特長 l 16ビットダウンカウンタのカウントクロックは,4種類から選択が可能 です。 - l 内部クロック:φ,φ/4,φ/16,φ/64 カウンタ値は,リセット,カウンタボローで“FFFFH”に初期化するこ とができます。 l l 各チャネルごとにPWM出力があります。 レジスタ - 周期設定レジスタ:バッファ付き,リロード用データレジスタ - デューティ設定レジスタ:バッファ付き,コンペアレジスタ - バッファからの転送は,カウンタボローで行います。 l 端子制御 - デューティ一致で,“1”にセット(優先)。 - カウンタボローで,“0”にリセット。 - 出力値固定モードがあり,オール“L”(または“H”)を簡単に出力 できます。 - 極性指定も可能です。 l 割込み要求は,以下の組合せから選択して発生することができます。 - PWMタイマ起動 - カウンタボロー発生(周期一致) - デューティ一致発生 - カウンタボロー発生(周期一致),またはデューティ一致発生 上記の割込み要求によって,DMA転送起動が可能です。 l 206 ソフトウェア,または他のインターバルタイマで複数チャネルの同時起 動が設定できます。また,動作中の再起動も設定可能です。 7.2 PWMタイマのブロックダイヤグラム 7.2 PWMタイマのブロックダイヤグラム PWMタイマのブロックダイヤグラム 図 7.2-1にPWMタイマの全体ブロックダイヤグラムを,図 7.2-2にPWMタイマ1チャ ネル分のブロックダイヤグラムを示します。 ■ PWMタイマの全体ブロックダイヤグラム 図 7.2-1 PWMタイマの全体ブロックダイヤグラム ■ PWMタイマ1チャネル分のブロックダイヤグラム 図 7.2-2 PWMタイマ1チャネル分のブロックダイヤグラム 207 第7章 PWMタイマ 7.3 PWMタイマのレジスタ PWMタイマのレジスタ 図 7.3-1にPWMタイマのレジスタ一覧を示します。 ■ PWMタイマのレジスタ一覧 図 7.3-1 PWMタイマのレジスタ一覧 208 7.3 PWMタイマのレジスタ 7.3.1 コントロールステータスレジスタ(PCNH,PCNL) コントロールステータスレジスタ(PCNH,PCNL) コントロールステータスレジスタ(PCNH,PCNL)は,PWMタイマの制御およびステー タス表示をします。PWMタイマ動作中に書き換え不可能なビットがありますので注意 してください。 ■ コントロールステータスレジスタ(PCNH,PCNL) コントロールステータスレジスタ(PCNH,PCNL)のレジスタ構成は以下のとおりで す。 [bit 15] CNTE:タイマ許可ビット 16ビットダウンカウンタの動作を許可するビットです。 0 1 停止 (初期値) 許可 [bit 14] STGR:ソフトウェアトリガビット このビットに“1”を書き込むことによりソフトウェアトリガが掛かります。 STGRビットの読み出し値は,常に“0”です。 [bit 13] MDSE:モード選択ビット 連続してパルスを出すPWM動作か,単一パルスを出すワンショット動作かを 選択します。 0 1 PWM動作 (初期値) ワンショット動作 [bit 12] RTRG:再起動許可ビット ソフトウェアトリガ,またはトリガ入力による再起動を許可するビットです。 0 1 再起動禁止 (初期値) 再起動許可 209 第7章 PWMタイマ [bit 11,10] CKS1,CKS0:カウンタクロック選択ビット 16ビットダウンカウンタのカウントクロックを選択します。 表 7.3-1 カウントクロックの選択 CKS1 CKS0 周 期 0 0 Φ (初期値) 0 1 Φ/4 1 0 Φ/16 1 1 Φ/64 Φ:周辺系マシンクロック [bit 9] PGMS:PWM出力マスク選択ビット このビットに“1”を書き込むことによりモード設定,周期設定値,デュー ティ設定値にかかわらずPWM出力を“0”,または“1”にマスクすることができ ます。 表 7.3-2 PGMSに“1”書き込み時のPWM出力 極性 通常極性 反転極性 PWM出力 L出力 H出力 通常極性時にオール“H”,または反転極性時にオール“L”を出力したい場 合は,周期設定レジスタとデューティ設定レジスタに同値をライトすれば上記 マスク値の反転を出力することができます。 [bit 8]:未使用ビットです。 [bit 7,6] EGS1,EGS0:トリガ入力エッジ選択ビット ジェネラルコントロールレジスタ1で選んだ起動要因の有効エッジを選択し ます。 どのモードを選択していてもソフトトリガのビットに“1”を書き込むとソ フトトリガは有効になります。 表 7.3-3 トリガ入力エッジの選択 EGS1 0 0 1 1 EGS0 0 1 0 1 エッジ選択 無効 (初期値) 立上がりエッジ 立下がりエッジ 両エッジ [bit 5] IREN:割込み要求許可ビット 割込み要求を許可するビットです。 0 1 210 禁止 (初期値) 許可 7.3 PWMタイマのレジスタ [bit 4] IRQF:割込み要求フラグ ビット5(IREN)が許可されていて,ビット3,2(IRS1,IRS0)にて選択した割込 み要因が発生すると,本ビットがセットされCPUに割込み要求を発生します。 また,DMA転送の起動を選択している場合は,DMA転送が起動されます。 本ビットのクリアは,“0”書き込みとDMACからのクリア信号で行われます。 “1”を書き込んでもビット値は変化しません。 リードモディファイライト系命令におけるリード値は,ビット値にかかわら ず“1”です。 [bit 3,2] IRS1,IRS0:割込み要因選択ビット ビット4(IRQF)をセットする要因を選択します。 表 7.3-4 割込み要因の選択 IRS1 IRS0 割込み要因 0 0 ソフトウェアトリガ,またはトリガ入力あり (初期値) 0 1 カウンタボロー発生(周期一致) 1 0 デューティ一致発生 1 1 カウンタボロー発生(周期一致),またはデューティ一致発生 [bit 1] POEN:PWM出力許可ビット “1”に設定することにより,PWM出力が端子から出力されます。 0 1 汎用ポート (初期値) PWM出力端子 [bit 0] OSEL:PWM出力極性指定ビット PWM出力の極性を設定します。 ビット9(PGMS)との組合せで,以下のようになります。 表 7.3-5 PWM出力の極性とエッジの指定 PGMS 0 0 1 1 OSEL 0 1 0 1 PWM出力 通常極性 (初期値) 反転極性 出力“L”固定 出力“H”固定 極性 通常極性 リセット後 “L”出力 反転極性 “H”出力 デューティ一致 カウンタボロー 211 第7章 PWMタイマ 7.3.2 PWM周期設定レジスタ PWM周期設定レジスタ(PCSR) 周期設定レジスタ(PCSR) PWM周期設定レジスタ(PCSR)は,周期を設定するための,バッファ付きレジスタで す。バッファからの転送は,カウンタボローで行われます。 ■ PWM周期設定レジスタ(PCSR) PWM周期設定レジスタ(PCSR)のレジスタ構成は以下のとおりです。 周期設定レジスタの初期設定時,および書き換え時は,周期設定レジスタの書 き込み後,必ずデューティ設定レジスタへの書き込み動作を行ってください。 本レジスタは,16ビットデータでアクセスしてください。 212 7.3 PWMタイマのレジスタ 7.3.3 PWMデューティ設定レジスタ PWMデューティ設定レジスタ(PDUT) デューティ設定レジスタ(PDUT) PWMデューティ設定レジスタ(PDUT)は,デューティを設定するためのバッファ付き レジスタです。バッファからの転送は,カウンタボローで行われます。 ■ PWMデューティ設定レジスタ(PDUT) PWMデューティ設定レジスタ(PDUT)のレジスタ構成は以下のとおりです。 周期設定レジスタの値とデューティ設定レジスタの値を同じにすると,通常極 性時にオール“H”を,反転極性時にオール“L”を出力します。 PCSR<PDUTとなるような値を設定しないでください。PWM出力は不定となります。 本レジスタは,16ビットデータでアクセスしてください。 213 第7章 PWMタイマ 7.3.4 PWMタイマレジスタ PWMタイマレジスタ(PTMR) タイマレジスタ(PTMR) PWMタイマレジスタ(PTMR)は,16ビットダウンカウンタの値を読みだすことができ ます。 ■ PWMタイマレジスタ(PTMR) PWMタイマレジスタ(PTMR)のレジスタ構成は以下のとおりです。 本レジスタは,16ビットデータでアクセスしてください。 214 7.3 PWMタイマのレジスタ 7.3.5 ジェネラルコントロールレジスタ1(GCN1) ジェネラルコントロールレジスタ1(GCN1) ジェネラルコントロールレジスタ1(GCN1)は,PWMタイマのトリガ入力の要因を選 択するレジスタです。 ■ ジェネラルコントロールレジスタ1(GCN1) ジェネラルコントロールレジスタ1(GCN1)のレジスタ構成は以下のとおりです。 [bit 15-12] TSEL33-30:ch3トリガ入力選択ビット 表 7.3-6 ch3トリガ入力の選択 15 0 0 0 0 0 0 0 1 1 1 1 1 TSEL33-30 14 13 0 0 0 0 0 1 0 1 1 0 1 0 1 1 0 0 0 0 0 1 0 1 1 X 12 0 1 0 1 0 1 X 0 1 0 1 X Ch3トリガ入力 GCN2のEN0ビット GCN2のEN1ビット GCN2のEN2ビット GCN2のEN3ビット (初期値) 16ビットリロードタイマ ch0 16ビットリロードタイマ ch1 設定禁止 外部TRG0 外部TRG1 外部TRG2 外部TRG3 設定禁止 215 第7章 PWMタイマ [bit 11-8] TSEL23-20:ch2トリガ入力選択ビット 表 7.3-7 ch2トリガ入力の選択 11 0 0 0 0 0 0 0 1 1 1 1 1 TSEL23-20 10 9 0 0 0 0 0 1 0 1 1 0 1 0 1 1 0 0 0 0 0 1 0 1 1 X 8 0 1 0 1 0 1 X 0 1 0 1 X Ch2トリガ入力 GCN2のEN0ビット GCN2のEN1ビット GCN2のEN2ビット (初期値) GCN2のEN3ビット 16ビットリロードタイマ ch0 16ビットリロードタイマ ch1 設定禁止 外部TRG0 外部TRG1 外部TRG2 外部TRG3 設定禁止 [bit 7-4] TSEL13-10:ch1トリガ入力選択ビット 表 7.3-8 ch1トリガ入力の選択 7 0 0 0 0 0 0 0 1 1 1 1 1 216 TSEL13-10 6 5 0 0 0 0 0 1 0 1 1 0 1 0 1 1 0 0 0 0 0 1 0 1 1 X 4 0 1 0 1 0 1 X 0 1 0 1 X Ch1トリガ入力 GCN2のEN0ビット GCN2のEN1ビット (初期値) GCN2のEN2ビット GCN2のEN3ビット 16ビットリロードタイマ ch0 16ビットリロードタイマ ch1 設定禁止 外部TRG0 外部TRG1 外部TRG2 外部TRG3 設定禁止 7.3 PWMタイマのレジスタ [bit 3-0] TSEL03-00:ch0トリガ入力選択ビット 表 7.3-9 ch0トリガ入力の選択 3 0 0 0 0 0 0 0 1 1 1 1 1 TSEL03-00 2 1 0 0 0 0 0 1 0 1 1 0 1 0 1 1 0 0 0 0 0 1 0 1 1 X 0 0 1 0 1 0 1 X 0 1 0 1 X Ch0トリガ入力 GCN2のEN0ビット (初期値) GCN2のEN1ビット GCN2のEN2ビット GCN2のEN3ビット 16ビットリロードタイマ ch0 16ビットリロードタイマ ch1 設定禁止 外部TRG0 外部TRG1 外部TRG2 外部TRG3 設定禁止 217 第7章 PWMタイマ 7.3.6 ジェネラルコントロールレジスタ2(GCN2) ジェネラルコントロールレジスタ2(GCN2) ジェネラルコントロールレジスタ2(GCN2)は,ソフトウェアによって,起動トリガ を発生させるためのレジスタです。 ■ ジェネラルコントロールレジスタ2(GCN2) ジェネラルコントロールレジスタ2(GCN2)のレジスタ構成は以下のとおりです。 ジェネラルコントロールレジスタ1(GCN1)で,本レジスタのENビットを選択した 場合,レジスタの値がそのままPWMタイマのトリガ入力に伝わります。 コントロールステータスレジスタのEGS1,0ビットで選択したエッジをソフト ウェアで発生させることにより,複数チャネルのPWMタイマを同時に起動すること ができます。 本ビットのbit7∼bit4には,かならず“0”を書き込んでください。 218 7.4 PWM動作 7.4 PWM動作 PWM動作 PWM動作では,起動トリガの検出時より連続してパルスを出力することができます。 出力パルスの周期は,PCSR値を変えることにより制御することができ,また,デュー ティ比は,PDUT値を変えることにより制御できます。 PCSRにデータを書き込んだ後は,必ずPDUTへの書き込みを行ってください。 ■ PWM動作 ○ 再起動禁止の場合 図 7.4-1にトリガの再起動を禁止した場合のPWM動作のタイミングチャート を示します。 図 7.4-1 PWM動作タイミングチャート(トリガ再起動禁止) ○ 再起動許可の場合 図 7.4-2にトリガの再起動を許可した場合のPWM動作のタイミングチャート を示します。 図 7.4-2 PWM動作タイミングチャート(トリガ再起動許可) 219 第7章 PWMタイマ 7.5 ワンショット動作 ワンショット動作では,トリガにより任意の幅の単一パルスを出力することがで きます。 再起動許可の場合は,動作中にエッジを検出するとカウンタをリロードします。 ■ ワンショット動作 ○ 再起動禁止の場合 図 7.5-1にトリガの再起動を禁止した場合のワンショット動作のタイミング チャートを示します。 図 7.5-1 ワンショット動作タイミングチャート(トリガ再起動禁止) ○ 再起動許可の場合 図 7.5-2にトリガの再起動を許可した場合のワンショット動作のタイミング チャートを示します。 図 7.5-2 ワンショット動作タイミングチャート(トリガ再起動許可) 220 7.6 PWMタイマの割込み要因とタイミングチャート 7.6 PWMタイマの割込み要因とタイミングチャート PWMタイマの割込み要因とタイミングチャート 割込み要因とタイミングチャートについて示します。 ■ PWMタイマの割込み要因とタイミングチャート(PWM出力:通常極性) 図 7.6-1にPWMタイマの割込み要因とタイミングチャートを示します。 図 7.6-1 PWMタイマの割込み要因とタイミングチャート(PWM出力:通常極性) ■ PWM出力オール“L” ,またはオール“H”の出力方法例 図 7.6-2にPWM出力をオール“L”に,図 7.6-3にオール“H”にする出力方法を 示します。 ○ PWM出力をオール“L”レベルにする例 図 7.6-2 PWM出力をオール“L”レベルにする例 ○ PWM出力をオール“H”レベルにする例 図 7.6-3 PWM出力をオール“H”レベルにする例 221 第7章 PWMタイマ 7.7 PWMタイマ複数チャネルの起動 PWMタイマ複数チャネルの起動 ジェネラルコントロールレジスタ1,2(GCN1,GCN2)を使って,PWMタイマの複数 チャネルを起動できます。 GCN1レジスタで起動トリガを選択することにより,複数チャネルを同時に起動す ることができます。 ここでは,GCN2レジスタを使ったソフトウェア起動例と,16ビットリロードタイ マを使用して起動する場合の例を示します。 ■ ソフトウェアによるPWMタイマ複数チャネルの起動 設定手順は以下のとおりです。 1) PCSRに周期を設定します。 2) PDUTにデューティを設定します。 - 必ずPCSR → PDUTの順で書き込みを行ってください。 3) GCN1で,起動するチャネルのトリガ入力要因を決めます。 4) ここでは,GCN2を使うので,初期設定のままとします。 (ch0 → EN0, ch1 → EN1, ch2 → EN2, ch3 → EN3) 起動するチャネルのコントロールステータスレジスタを設定します。 - CNTE:1 → タイマ動作を許可 - STGR:0 → GCN2で起動するので,ここでは起動しない - MDSE:0 → PWM動作 - RTRG:0 → 再起動禁止とする - CSK1,0:00 → カウントクロック=Φ - PGMS:0 → 出力マスクしない (bit8:0 → 未使用ビット,何を設定しても構いません) - EGS1,0:01 → 立上がりエッジ起動 - IREN:1 → 割込み要求許可 - IRQF:0 → 割込み要因をクリア - IRS1,0:01 → カウンタボロー発生で割込み要求発生 - POEN:1 → PWM出力許可 - OSEL:0 → 通常極性 5) GCN2にデータを書き込むことで,起動トリガを発生させます。 - 222 上記の設定でch0とch1を同時に起動させる場合,GCN2のEN0,EN1に“1” を書き込みます。立上がりエッジが発生し,PWM0,PWM1からパルスが出 力されます。 7.7 PWMタイマ複数チャネルの起動 ■ 16ビットリロードタイマを使用して起動する場合 前項の設定手順3)のGCN1で,要因として16ビットリロードタイマを選択し,設 定手順5)で,GCN2の代わりに16ビットリロードタイマを起動します。 また,コントロールステータスレジスタの設定で, RTRG:1 → 再起動許可とする EGS1,0:11 → 両エッジ起動 とし,16ビットリロードタイマ出力をトグル出力設定にすることにより,一定 時間ごとにPWMタイマを再起動することも可能です。 223 第7章 PWMタイマ 224 第8章 U-TIMER この章では,U-TIMERの概要,レジスタの構成/機能,およびU-TIMERの動作につ いて説明します。 8.1 U-TIMERの概要 8.2 U-TIMERのレジスタ 8.3 U-TIMRの動作 225 第8章 U-TIMER 8.1 U-TIMERの概要 U-TIMERの概要 U-TIMERは,UARTのボーレートを発生するための16ビットタイマです。チップの動 作周波数と,U-TIMERのリロード値の組み合わせで任意のボーレートを設定できます。 また,カウントアンダフローで割込みを発生するので,インターバルタイマとし ても使用可能です。 MB91107/MB91108は,本タイマを3チャネル内蔵しています。 最大216×Φのインターバルをカウントできます。 ■ U-TIMERのブロックダイヤグラム 図 8.1-1にU-TIMERのブロックダイヤグラムを示します。 図 8.1-1 U-TIMERのブロックダイヤグラム ■ U-TIMERのレジスタ一覧 図 8.1-2にU-TIMERのレジスタ一覧を示します。 図 8.1-2 U-TIMERのレジスタ一覧 226 8.2 U-TIMERのレジスタ 8.2 U-TIMERのレジスタ U-TIMERのレジスタ U-TIMERのレジスタには,以下の三つがあります。 ・Uタイマ値レジスタ(UTIM) ・リロードレジスタ(UTIMR) ・Uタイマ制御レジスタ(UTIMC) ■ Uタイマ値レジスタ:UTIM(U-TIMER) UTIMは,タイマの値を示します。16ビット転送命令でアクセスしてください。 ■ リロードレジスタ:UTIMR(reload register) UTIMRは,UTIMがアンダフローしたときに,UTIMにリロードされる値を格納する レジスタです。 16ビット転送命令でアクセスしてください。 ■ Uタイマ制御レジスタ:UTIMC(U-TIMER Control register) UTIMCは,U-TIMERの動作を制御します。 [bit 7] UCC1 (U-timer Count Control 1) UCC1ビットは,U-TIMERのカウントの仕方を制御します。 0 通 常 動 作 . α = 2n+2 〔 初 期 値 〕 1 + 1 モ ー ド α = 2n+3 n:UTIMRの設定値 α:UARTに対する出力クロックの周期 U-TIMERは,UARTに対して通常の2(n+1)周期のクロックのほかに奇数分周を 設定できます。 UCC1を1に設定すると2n+3の周期を発生します。 【設定例】 UTIMR=5, UCC1=0 → 発生周期 = 2n+2 = 12サイクル UTIMR=25, UCC1=1 → 発生周期 = 2n+3 = 53サイクル UTIMR=60, UCC1=0 → 発生周期 = 2n+2 = 122サイクル U-TIMERをインターバルタイマとして使用する場合は,UCC1の値を0に設定し てください。 227 第8章 U-TIMER [bit 6,5] (reserved) [bit 4] UTIE (U-TIMER Interrupt Enable) UTIEは,U-TIMERのアンダフローによる割込み許可ビットです。 0:割込み禁止 〔初期値〕 1:許可 [bit 3] UNDR (UNDeR flow flag) UNDRは,アンダフローが発生したことを示すフラグです。UTIEが“1”でUNDR がセットされるとアンダフロー割込みが発生します。UNDRはリセット,または “0”書込みによりクリアされます。リードモディファイライト系命令のリー ド時は,常に“1”が読み出されます。 また,UNDRに対する“1”書込みは無効です。 [bit 2] CLKS (clock select) 本品種では,必ず“0”を設定してください。 [bit 1] UTST (U-TIMER STart) U-TIMERの動作許可ビットです。 0:停止…動作中でも“0”ライトで停止します。〔初期値〕 1:動作…動作中に“1”を書き込んでも動作は続行されます。 [bit 0] UTCR (U-TIMER CleaR) UTCRに“0”を書き込むと,U-TIMERは0000Hにクリアされます(f.f.も“0”に クリア)。 常に“1”が読まれます。 <注意事項> ・ストップ状態からスタートビットUTSTをアサート(スタート)すると自動的にリロードします。 ・ストップ状態からクリアビットUTCRとスタートビットUTSTを同時にアサートすると,カウン タを“0”クリアして,直後のカウントダウンでアンダフローが発生します。 ・動作中にクリアビットUTCRをアサートすると,カウンタも“0”クリアされます。このため, 出力波形にヒゲ状の短いパルスが出力される場合があり,UARTが誤動作する可能性があります。 出力クロックを使用している場合には,動作中にクリアビットによるクリアを行わないでくだ さい。 228 8.3 U-TIMRの動作 8.3 U-TIMRの動作 U-TIMRの動作 U-TIMRのボーレートの計算方法について説明します。 ■ ボーレートの計算 UARTは,対応するU-TIMER(U-TIMERx -> UARTx, x=0,1,2) のアンダフローフリッ プフロップ(図中f.f)をbaud rate用クロックソースとして使用します。 ○ 非同期(調歩同期)モード UARTは,U-TIMERの出力を16分周して使用します。 ○ CLK同期モード 229 第8章 U-TIMER 230 第9章 外部割込み/NMI 外部割込み/NMI制御部 NMI制御部 この章では,外部割込み/NMI制御部の概要,レジスタの構成/機能,および外部 割込み/NMI制御部の動作について説明します。 9.1 外部割込み/NMI制御部の概要 9.2 外部割込み/NMI制御部のレジスタ 9.3 外部割込み動 作 9.4 外部割込み要求レベル 9.5 NMI(Non Maskable Interrupt:ノンマスカブル割込み)の動作 231 第9章 外部割込み/NMI制御部 9.1 外部割込み/NMI 外部割込み/NMI制御部の概要 NMI制御部の概要 外部割込み/NMI制御部は,NMIXおよびINT0∼7に入力される外部割込み要求の制 御を行うブロックです。 検出する要求のレベルとして, “H” , “L” , “立上がりエッジ” , “立下がりエッジ” から選択できます(NMI以外) 。 ■ 外部割込み/NMI制御部のブロックダイヤグラム 図 9.1-1に外部割込み/NMI制御部のブロックダイヤグラムを示します。 図 9.1-1 外部割込み/NMI制御部のブロックダイヤグラム 232 9.2 外部割込み/NMI制御部のレジスタ 9.2 外部割込み/NMI 外部割込み/NMI制御部のレジスタ NMI制御部のレジスタ 図 9.2-1に外部割込み/NMI制御部のレジスタ一覧を示します。 ■ 外部割込み/NMI制御部のレジスタ一覧 図 9.2-1 外部割込み/NMI制御部のレジスタ一覧 233 第9章 外部割込み/NMI制御部 9.2.1 割込み許可レジスタ(ENIR) 割込み許可レジスタ(ENIR) 割込み許可レジスタ(ENIR)は,外部割込み要求出力のマスク制御を行います。 ■ 割込み許可レジスタ(ENIR:ENable Interrupt request Register) 割込み許可レジスタ(ENIR)のレジスタ構成は以下のとおりです。 割込み許可レジスタ(ENIR)は,外部割込み要求出力のマスク制御を行います。 このレジスタの“1”が書かれたビットに対応する割込み要求出力は許可され (INT0の許可をEN0が制御),割込みコントローラに対して要求が出力されます。 “0”が書かれたビットの対応する端子は,割込み要因を保持しますが,割込みコ ントローラに対しては要求を発生しません。 NMI(Non Maskable Interrupt:ノンマスカブル割込み)に対するマスクビット は,存在しません。 234 9.2 外部割込み/NMI制御部のレジスタ 9.2.2 外部割込み要因レジスタ(EIRR) 外部割込み要因レジスタ(EIRR) 外部割込み要因レジスタ(EIRR)は,読出し時には対応する外部割込み要求がある ことを示し,書込み時にはこの要求を示すフリップフロップ内容をクリアするレジ スタです。 ■ 外部割込み要因レジスタ(EIRR:External Interrupt Request Register) 外部割込み要因レジスタ(EIRR)のレジスタ構成は以下のとおりです。 外部割込み要因レジスタ(EIRR)は,読出し時には対応する外部割込み要求があ ることを示し,書込み時にはこの要求を示すフリップフロップ内容をクリアする レジスタです。 このレジスタを読出したときに“1”であった場合,このビットに対応する端子 に外部割込み要求があることを示します。 また,このレジスタに“0”を書込むと,対応するビットの要求フリップフロッ プがクリアされます。“1”の書込みは無効です。 リードモディファイライトのリード時には“1”が読まれます。 NMIフラグは,ユーザからリード/ライトできません。 235 第9章 外部割込み/NMI制御部 9.2.3 外部割込み要求レベル設定レジスタ(ELVR) 外部割込み要求レベル設定レジスタ(ELVR) 外部割込み要求レベル設定レジスタ(ELVR)は,要求検出の選択を行うレジスタで す。 ■ 外部割込み要求レベル設定レジスタ(ELVR:External LeVel Register) 外部割込み要求レベル設定レジスタ(ELVR)のレジスタ構成は以下のとおりです。 外部割込み要求レベル設定レジスタ(ELVR)は,要求検出の選択を行うレジスタ です。 INT0-7に2ビットづつが割り当てられていて,表 9.2-1のような設定になります。 要求入力がレベルの場合,EIRRの各ビットをクリアしても入力がアクティブレ ベルならば,該当するビットは再びセットされます。 表 9.2-1 外部割込み要求レベル割当て LBx 0 0 1 1 LAx 0 1 0 1 動 作 Lレベルで要求あり Hレベルで要求あり 立上がりエッジで要求あり 立下がりエッジで要求あり NMIは,常にその立下がりエッジが検出されます(ストップ時を除きます) 。 ストップ時は,Lレベル検出となります。 236 9.3 外部割込み動作 9.3 外部割込み動 外部割込み動 作 要求レベル,許可レジスタを設定した後,対応する端子にELVRレジスタで設定さ れた要求が入力されると,本モジュールは,割込みコントローラに対して割込み要 求信号を発生します。 ■ 外部割込みの動作 割込みコントローラ内で同時発生した割込みの優先順位を識別した結果,本リ ソースからの割込みが最も優先順位が高かったときに,該当する割込みが発生し ます。 図 9.3-1に外部割込みの動作を示します。 図 9.3-1 外部割込みの動作 ■ ストップからの復帰 クロック停止モードのストップ状態からの復帰に外部割込みを使う場合は,入 力要求をHレベル要求としてください。Lレベル要求では誤動作を起こす可能性が あります。 エッジ要求では,クロック停止モードのストップ状態からの復帰は行われませ ん。 ■ 外部割込みの動作手順 外部割込み部内に存在するレジスタの設定を行うときは,次の手順で設定して ください。 1) 許可レジスタの対象となるビットをdisable状態にする。 2) 要求レベル設定レジスタの対象となるビットを設定する。 3) 要因レジスタの対象となるビットをクリアする。 4) 許可レジスタの対象となるビットをenable状態にする。 ただし,3)と4)は,16ビットデータによる同時書き込みができます。 本モジュール内のレジスタを設定するときには,必ず許可レジスタをdisable状 態に設定しておかなくてはなりません。また,許可レジスタをenable状態にする 前に,必ず要因レジスタをクリアしておく必要があります。これは,レジスタ設 定時や割込み許可状態時に誤って割込み要因が起こってしまうことを避けるため です。 237 第9章 外部割込み/NMI制御部 9.4 外部割込み要求レベル 要求レベルがエッジ要求のとき,エッジがあったことを検出するためには,パル ス幅は最小3マシンサイクル(周辺系クロックマシンサイクル)必要とします。 要求入力レベルがレベル設定のとき,外部より要求入力が入ってその後取り下げ られても内部に要因保持回路が存在するので,割込みコントローラへの要求はアク ティブのままです。 割込みコントローラへの要求を取り下げるには,要因レジスタをクリアする必要 があります。 ■ 外部割込み要求レベル 図 9.4-1にレベル設定時の要因保持回路のクリアを,図 9.4-2に割込み許可時 の割込み要因と割込みコントローラへの割込み要求を示します。 図 9.4-1 レベル設定時の要因保持回路のクリア 図 9.4-2 割込み許可時の割込み要因と割込みコントローラへの割込み要求 238 9.5 NMI(Non Maskable Interrupt:ノンマスカブル割込み)の動作 9.5 NMI(Non Maskable Interrupt:ノンマスカブル割込み Interrupt:ノンマスカブル割込み) :ノンマスカブル割込み) の動作 NMIは,ユーザ割込みの中で最も優先順位の高い割込みで,マスクすることはでき ません。例外として,リセット直後からILMを設定するまではマスクされます。 ■ NMIの動作 NMIの受け付けは下記のとおりです。 l l 通常時 : 立下がりエッジ STOP時 : “L”レベル NMIによってストップモードを解除できます。ストップ状態で“L”レベルが入 力されると,ストップ状態が解除され発振安定待ち時間が取られます。 この発振安定待ち時間内にNMIX端子を“H”レベルに戻すとNMI要因がなくなっ てしまい,動作再開後NMI処理が行われません。ストップ状態解除後にNMI処理を 行いたい場合は,NMIX端子を“L”レベルのままにして,NMI処理ルーチン内で“H” レベルに戻すようにしてください。 NMI要求検出部にはNMIビットがあり,NMI要求によりセットされ,NMI自身の割 込みの受付け,もしくは,リセットでのみクリアされます。なお,このビットは リード/ライトできません。 図 9.5-1にNMIの要求検出部を示します。 図 9.5-1 NMIの要求検出部 239 第9章 外部割込み/NMI制御部 240 第10章 10章 遅延割込みモジュール この章では, 遅延割込みモジュールの概要,レジスタの構成/機能,および遅延 割込みモジュールの動作について説明します。 10.1 遅延割込みモジュールの概要 10.2 遅延割込み制御レジスタ(DICR) 10.3 遅延割込みモジュールの動作 241 第10章 遅延割込みモジュール 10.1 遅延割込みモジュールの概要 遅延割込みモジュールは,タスク切り換え用の割込みを発生するためのモジュー ルです。 本モジュールを使用することで,ソフトウェアでCPUに対して割込み要求の発生/ 取消しを行うことができます。 ■ 遅延割込みモジュールのブロックダイヤグラム 図 10.1-1に遅延割込みモジュールのブロックダイヤグラムを示します。 図 10.1-1 遅延割込みモジュールのブロックダイヤグラム ■ 遅延割込みモジュールのレジスタ一覧 図 10.1-2に遅延割込みモジュールのレジスタ一覧を示します。 図 10.1-2 遅延割込みモジュールのレジスタ一覧 242 10.2 遅延割込み制御レジスタ(DICR) 10.2 遅延割込み制御レジスタ(DICR) 遅延割込み制御レジスタ(DICR) 遅延割込み制御レジスタ(DICR)は,遅延割込みを制御するレジスタです。 ■ 遅延割込み制御レジスタ(DICR) 遅延割込み制御レジスタ(DICR)のレジスタ構成は以下のとおりです。 [bit 0] DLYI 0 1 遅延割込み要因の解除/要求なし 〔初期値〕 遅延割込み要因の発生 本ビットにより,該当する割込み要因の発生/解除を制御します。 243 第10章 遅延割込みモジュール 10.3 遅延割込みモジュールの動作 遅延割込みは,タスク切り換え用の割込みを発生するものです。本機能を使用す ることにより,ソフトウェアでCPUに対して割込み要求の発生,取消しを行うことが できます。 ■ 割込み番号 遅延割込みは,最も大きな割込み番号に対応した割込み要因に割り当てられて います。 48要因ある本品種では,割込み番号63(3FH)に対応した割込み要因となります。 ■ DICRのDLYIビット このビットに“1”を書き込むことで,遅延割込み要因が発生します。また, “0” を書き込むことで,遅延割込み要因を解除します。 本ビットは,一般の割込みにおける割込み要因フラグと同じものであり,割込 みルーチンの中で本ビットをクリアし,合わせてタスクの切り換えを行うように してください。 244 第11章 11章 割込みコントローラ この章では,割込みコントローラの概要,レジスタの構成/機能,割込みコント ローラの動作,およびホールドリクエスト取下げ要求機能の使用例について説明し ます。 11.1 割込みコントローラの概要 11.2 割込みコントローラのブロックダイヤグラム 11.3 割込みコントローラのレジスタ 11.4 優先順位判定 11.5 スタンバイモード(ストップ/スリープ)からの復帰 11.6 ホールドリクエスト取下げ要求 11.7 ホールドリクエスト取下げ要求機能(HRCR)の使用例 245 第11章 割込みコントローラ 11.1 割込みコントローラの概要 割込みコントローラは,割込み受付けと調停処理をつかさどります。 ■ 割込みコントローラのハードウェア構成 本モジュールは,以下のものより構成されます。 l l l l ICRレジスタ 割込み優先度判定回路 割込みレベル,割込み番号(ベクタ)発生部 HOLDリクエスト取下げ要求発生部 ■ 割込みコントローラの主要機能 本モジュールには,主に以下のような機能があります。 l l l l l l 246 NMI要求/割込み要求の検出 優先度判定(レベルおよび番号による) 判定結果の要因の割込みレベル伝達(CPUへ) 判定結果の要因の割込み番号伝達(CPUへ) NMI/割込み発生によるストップモードからの復帰指示 バスマスタへのHOLDリクエスト取下げ要求発生 11.2 割込みコントローラのブロックダイヤグラム 11.2 割込みコントローラのブロックダイヤグラム 図 11.2-1に割込みコントローラのブロックダイヤグラムを示します。 ■ 割込みコントローラのブロックダイヤグラム 図 11.2-1 割込みコントローラのブロックダイヤグラム 247 第11章 割込みコントローラ 11.3 割込みコントローラのレジスタ 図 11.3-1に割込みコントローラのレジスタ一覧を示します。 ■ 割込みコントローラのレジスタ一覧 図 11.3-1 割込みコントローラのレジスタ一覧(続く) 248 11.3 割込みコントローラのレジスタ 図 11.3-1 割込みコントローラのレジスタ一覧(続き) 249 第11章 割込みコントローラ 11.3.1 割込み制御レジスタ(ICR) 割込み制御レジスタ(ICR) 割込み制御レジスタです。各割込み入力に対して一つずつ設けられており,対応 する割込み要求の割込みレベルを設定します。 ■ 割込み制御レジスタ(ICR) 割込み制御レジスタ(ICR)のレジスタ構成は以下のとおりです。 [bit 4∼0] ICR4∼0 割込みレベル設定ビットで,対応する割込み要求の割込みレベルを指定しま す。 本レジスタに設定した割込みレベルがCPUのILMレジスタに設定した(された) レベルマスク値以上の場合は,CPU側にて割込み要求はマスクされます。 リセットにより,11111Bに初期化されます。 設定可能な割込みレベル設定ビットと割込みレベルの対応を表 11.3-1に示 します。 表 11.3-1 割込みレベル設定ビットと割込みレベルの対応 ICR4 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ICR3 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 ICR2 0 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 ICR1 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 ICR0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 割込みレベル 0 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 システム予約 NMI 設定可能な最強レベル (強) (弱) 割込み禁止 ICR4は“1”固定で, “0”を書き込むことはできません。 250 11.3 割込みコントローラのレジスタ 11.3.2 ホールドリクエスト取下げ要求レベル設定レジス タ(HRCL) ホールドリクエスト取下げ要求発生のためのレベル設定レジスタです。 ■ ホールドリクエスト取下げ要求レベル設定レジスタ(HRCL) ホールドリクエスト取下げ要求レベル設定レジスタ(HRCL)のレジスタ構成は 以下のとおりです。 [bit 4∼0] LVL4∼0 バスマスタへのホールドリクエスト取下げ要求を出すための割込みレベルを 設定します。 本レジスタに設定した割込みレベルより強いレベルを持つ割込み要求が発生 した場合は,バスマスタに対してホールドリクエスト取下げ要求を出します。 LVL4ビットは“1”固定で, “0”を書き込むことはできません。 251 第11章 割込みコントローラ 11.4 優先順位判定 本モジュールでは,同時に発生している割込み要因の中で最も優先度の高い要因 を選択し,その要因の割込みレベルと割込み番号をCPUへ出力します。 NMIは,本モジュールが取り扱う割込み要因の中では最も優先順位が高くなってい ます。 ■ 優先順位判定 割込み要因の優先順位判定基準は,次のとおりです。 1) NMI 2) 以下の条件を満たす要因 l l l 割込みレベルの数値が31以外(31は割込み禁止)。 割込みレベルの数値が最も小さい要因。 その中で,最も小さい割込み番号を持つ要因。 割込み要因と割込み番号,割込みレベルの関係を表 11.4-1に示します。 表 11.4-1 割込み要因と割込み番号,割込みレベルの関係(続く) 割込み要因 NMI要求 外部割込み 0 外部割込み 1 外部割込み 2 外部割込み 3 UART 0 受信完了 UART 1 受信完了 UART 2 受信完了 UART 0 送信完了 UART 1 送信完了 UART 2 送信完了 DMAC 0 (終了,エラー) DMAC 1 (終了,エラー) DMAC 2 (終了,エラー) DMAC 3 (終了,エラー) DMAC 4 (終了,エラー) DMAC 5 (終了,エラー) DMAC 6 (終了,エラー) DMAC 7 (終了,エラー) A/D(逐次型) リロードタイマ0 リロードタイマ1 リロードタイマ2 PWM 0 PWM 1 PWM 2 PWM 3 252 割込み番号 10進 16進 15 0F 16 10 17 11 18 12 19 13 20 14 21 15 22 16 23 17 24 18 25 19 26 1A 27 1B 28 1C 29 1D 30 1E 31 1F 32 20 33 21 34 22 35 23 36 24 37 25 38 26 39 27 40 28 41 29 割込みレベル オフセット TBRデフォルト のアドレス 15(FH)固定 ICR00 ICR01 ICR02 ICR03 ICR04 ICR05 ICR06 ICR07 ICR08 ICR09 ICR10 ICR11 ICR12 ICR13 ICR14 ICR15 ICR16 ICR17 ICR18 ICR19 ICR20 ICR21 ICR22 ICR23 ICR24 ICR25 3C0H 3BCH 3B8H 3B4H 3B0H 3ACH 3A8H 3A4H 3A0H 39CH 398H 394H 390H 38CH 388H 384H 380H 37CH 378H 374H 370H 36CH 368H 364H 360H 35CH 358H 000FFFC0H 000FFFBCH 000FFFB8H 000FFFB4H 000FFFB0H 000FFFACH 000FFFA8H 000FFFA4H 000FFFA0H 000FFF9CH 000FFF98H 000FFF94H 000FFF90H 000FFF8CH 000FFF88H 000FFF84H 000FFF80H 000FFF7CH 000FFF78H 000FFF74H 000FFF70H 000FFF6CH 000FFF68H 000FFF64H 000FFF60H 000FFF5CH 000FFF58H 11.4 優先順位判定 表 11.4-1 割込み要因と割込み番号,割込みレベルの関係(続き) 割込み要因 U-TIMER 0 U-TIMER 1 U-TIMER 2 外部割込み 4 外部割込み 5 外部割込み 6 外部割込み 7 システム予約 システム予約 システム予約 システム予約 システム予約 システム予約 システム予約 システム予約 システム予約 システム予約 システム予約 システム予約 システム予約 システム予約 遅延割込み要因ビット 割込み番号 10進 16進 42 2A 43 2B 44 2C 45 2D 46 2E 47 2F 48 30 49 31 50 32 51 33 52 34 53 35 54 36 55 37 56 38 57 39 58 3A 59 3B 60 3C 61 3D 62 3E 63 3F 割込みレベル オフセット TBRデフォルト のアドレス ICR26 ICR27 ICR28 ICR29 ICR30 ICR31 ICR32 ICR33 ICR34 ICR35 ICR36 ICR37 ICR38 ICR39 ICR40 ICR41 ICR42 ICR43 ICR44 ICR45 ICR46 ICR47 354H 350H 34CH 348H 344H 340H 33CH 338H 334H 330H 32CH 328H 324H 320H 31CH 318H 314H 310H 30CH 308H 304H 300H 000FFF54H 000FFF50H 000FFF4CH 000FFF48H 000FFF44H 000FFF40H 000FFF3CH 000FFF38H 000FFF34H 000FFF30H 000FFF2CH 000FFF28H 000FFF24H 000FFF20H 000FFF1CH 000FFF18H 000FFF14H 000FFF10H 000FFF0CH 000FFF08H 000FFF04H 000FFF00H ■ NMI(Non Maskable Interrupt) NMIは,本モジュールが取り扱う割込み要因の中では最も優先順位が高くなって います。そのため,ほかの割込み要因と同時発生の場合は,常にNMIが選択されま す。 ○ NMIが発生すると,CPUに対して次の情報を伝えます。 l l ○ 割込みレベル:15(01111B) 割込み番号:15(001111B) NMIの検出 NMIの設定および検出は,外部割込み/NMIモジュールで行います。本モジュー ルではNMI要求により,割込みレベル/割込み番号の生成のみを行います。 ■ 割込み要因の解除 割込みルーチンにおける,割込み要因解除のための命令とRETI命令の間には制 限があります。詳細は,「3.10 E I T ( 例外・割込み・トラップ)」を参照してく ださい。 253 第11章 割込みコントローラ 11.5 スタンバイモード(ストップ/スリープ)からの復帰 スタンバイモード(ストップ/スリープ)からの復帰 割込み要求の発生により,ストップモードから復帰する機能を本モジュールで実 現します。 ■ スタンバイモード(ストップ/スリープ)からの復帰 NMIを含む,周辺からの割込み要求が一つでも発生すると,クロック制御部に対 してストップモードからの復帰要求を発生します。 優先度判定部は,ストップ復帰後クロックが供給されてから動作を再開します ので,優先度判定部の結果が出るまでの間,CPUは命令を実行することになります。 スリープ状態からの復帰においても,同様に動作します。 また,スリープ時は,本モジュール内のレジスタはDMACなどでアクセス可能で す。 <注意事項> ・NMI要求においてもストップモードからの復帰を行います。 ・ストップおよびスリープからの復帰の要因としたくない割込み要因は,対応する周辺の制御レ ジスタにて割込み要求出力を禁止してください。スタンバイからの復帰要求信号は,全割込み 要因の単なる論理和出力のため,ICRに設定した割込みレベルの内容は加味されません。 ・スリープ時にDMA転送を行いたい場合は,割込み要求を本モジュールへ伝えないようにDMA側で 設定し,誤ってスリープ状態から復帰しないようにしてください。 254 11.6 ホールドリクエスト取下げ要求 11.6 ホールドリクエスト取下げ要求 優先度の高い割込み処理を,CPUのホールド中に行いたい場合は,ホールドリクエ スト発生元においてリクエストを取り下げてもらう必要があります。この取下げ要 求発生の基準となる割込みレベルをHRCLレジスタに設定します。 ■ ホールドリクエスト取下げ要求の発生基準 HRCLレジスタに設定した割込みレベルより強いレベルの割込み要因が発生した 場合は,ホールドリクエスト取下げ要求を発生します。 l l HRCLレジスタの割込みレベル 取下げ要求発生 > 優先度判定後の割込みレベル ⇒ HRCLレジスタの割込みレベル 取下げ要求なし ≦ 優先度判定後の割込みレベル ⇒ 取下げ要求発生原因となった割込み要因をクリアしない限り,この取下げ要求 は有効です。DMA転送中にホールドリクエスト取下げ要求した場合,割込み要求を クリアせず,結果的にいつまでもDMA転送が起こらないことになります。必ず対応 する割込み要因をクリアしてください。 ■ ホールドリクエスト取下げ要求の設定可能なレベル HRCLレジスタに設定可能な値は,ICRと同様に10000Bから11111Bまでです。 11111Bに設定した場合は,すべての割込みレベルに対して取下げ要求を発生し ます。また,10000Bに設定した場合は,NMIでのみ取下げ要求を発生することにな ります。 ホールドリクエスト取下げ要求発生となる割込みレベルの設定を表 11.6-1に示 します。 表 11.6-1 ホールドリクエスト取下げ要求発生となる割込みレベルの設定 HRCLレジスタ 16 17 18 ∼ 31 取下げ要求発生となる割込みレベル NMIのみ NMI,割込みレベル16 NMI,割込みレベル16∼17 ∼ NMI,割込みレベル16∼30〔初期値〕 リセット後は,HRCLレジスタの値が11111になっているため,すべての割込みレ ベルに対してDMA転送を抑止します。 すなわち,割込みが発生しているとDMA転送が行われませんので,HRCLレジスタ の値を必要な値に設定してください。 255 第11章 割込みコントローラ 11.7 ホールドリクエスト取下げ要求機能(HRCR) ホールドリクエスト取下げ要求機能(HRCR)の使用例 (HRCR)の使用例 DMA転送中に,CPUが優先度の高い処理を行いたいときは,DMAに対してホールドリ クエストを取り下げてもらってホールド状態を解除する必要があります。ここでは, 割込みを利用してDMAに対してホールドリクエストの取下げ,すなわち,CPUの優先 動作を実現します。 ■ 制御レジスタ ○ ホールドリクエスト取下げ要求レベル設定レジスタ(HRCL) :本モジュール 本レジスタに設定した割込みレベルより強いレベルの割込みが発生した場合 に,DMAに対してホールドリクエスト取下げ要求を発生します。その基準とな るレベルを設定します。 ○ 割込み制御レジスタ(ICR) :本モジュール 使用する割込み要因に対応するICRに,HRCLレジスタよりも強いレベルを設 定します。 ○ DMA要求抑止レジスタ(PDRR) :クロック制御部 DMAからのホールドリクエストを一時的に抑止するためのレジスタです。割 込み要因のクリアにより,再びホールド状態に戻るのを防ぎます。本レジスタ の値が0000Bのときのみ,DMAからのホールドリクエストをCPUへ伝えます。使用 方法としては,割込みルーチンの先頭で本レジスタの内容をインクリメントし, ルーチンの出口でデクリメントしてください。 ■ ハードウェア構成 各信号の流れは,次のようになっています。 図 11.7-1 ホールドリクエスト取下げ要求機能を使用するためのハードウェア構成例 ■ ホールドリクエスト取下げ要求シーケンス ○ 割込みルーチン例 図 11.7-2 ホールドリクエスト取下げ要求シーケンスのタイミング例(割込みレベル HRCL > a) 256 11.7 ホールドリクエスト取下げ要求機能(HRCR)の使用例 割込み要求が発生すると割込みレベルが変化して,これがHRCLレジスタに設定 したレベルより強いとDMAに対してHRCRをアクティブにします。これによって,DMA はホールドリクエストを下げ,CPUはホールド状態から復帰して割込み処理を行い ます。割込みルーチンでは,PDRRをインクリメント(①)し,割込み要因をクリア(②) します。これにより割込みレベルは変化し,HRCRがインアクティブになりDMAは再 びホールドリクエストを出すようになります。しかし,PDRRが0ではないので,こ のホールドリクエストは遮断されています。PDRRをデクリメント(③)することで, 初めてホールドリクエストがCPUに伝わり,再びDMA転送が行われるようになりま す。 ○ 多重割込みルーチン例 図 11.7-3 ホールドリクエスト取下げ要求シーケンスのタイミング例(割込みレベル HRCL > a > b) 割込みルーチンの例 ①,⑤PDRRインクリメント ②,⑥割込み要因クリア ∼ ③,⑦PDRRデクリメント ④,⑧RETI 上記例では,割込みルーチンⅠを実行中に,それより優先度の高い割込みが 発生した場合を示しています。ここでも,各割込みルーチンの先頭でPDRRをイ ンクリメントし,ルーチンの出口でデクリメントすることによって,不用意に ホールドリクエストが上がるのを防ぐことができます。 <注意事項> ・PDRRのインクリメント/デクリメントは,DMA転送中(CPUホールド中)に処理させたい割込み ルーチンの先頭と出口で必ず行うようにしてください。これを行わないと,割込みルーチンの 途中で再びDMA転送が行われてしまいます。 ・逆に,PDRRのインクリメント/デクリメントを通常の割込みルーチンでは行わないでください。 割込みルーチン実行中にDMA転送が行えず,パフォーマンスを落とすことになります。 ・HRCLレジスタとICRに設定する割込みレベルの関係には,十分注意してください。 257 第11章 割込みコントローラ 258 第12章 12章 A/Dコンバータ A/Dコンバータ( コンバータ(逐次比較型) 逐次比較型) この章では,A/Dコンバータの概要,レジスタの構成/機能,およびA/Dコンバー タの動作について説明します。 12.1 A/Dコンバータの概要 12.2 A/Dコンバータのブロックダイヤグラム 12.3 A/Dコンバータのレジスタ 12.4 A/Dコンバータの動作 12.5 変換データ保護機能 12.6 A/Dコンバータ使用上の注意 259 第12章 A/Dコンバータ(逐次比較型) 12.1 A/Dコンバータの概要 A/Dコンバータの概要 A/Dコンバータは,アナログ入力電圧をディジタル値に変換するモジュールです。 ■ A/Dコンバータの特長 l l l l l l 260 最小変換時間:5.6μs/ch(システムクロック25MHz時) サンプル&ホールド回路内蔵 分解能:10ビット(精度:8ビット) アナログ入力は4チャネルからプログラムで選択 - シングル変換モード:1チャネルを選択変換 - スキャン変換モード:連続した複数のチャネルを変換。最大4chプログ ラム可能 - 連続変換モード:指定チャネルを繰り返し変換 - 停止変換モード:1チャネルを変換したら一時停止して次の起動が掛か るまで待機(変換開始の同期が可能) 割込みによるDMA転送の起動が可能 起動要因は,ソフト,外部トリガ(立下がりエッジ),リロードタイマ (立上がりエッジ)から選択 12.2 A/Dコンバータのブロックダイヤグラム 12.2 A/Dコンバータのブロックダイヤグラム A/Dコンバータのブロックダイヤグラム 図 12.2-1にA/Dコンバータのブロックダイヤグラムを示します。 ■ A/Dコンバータのブロックダイヤグラム 図 12.2-1 A/Dコンバータのブロックダイヤグラム 261 第12章 A/Dコンバータ(逐次比較型) 12.3 A/Dコンバータのレジスタ A/Dコンバータのレジスタ A/Dコンバータのレジスタには,次の二つがあります。 ・コントロールステータスレジスタ(ADCS) ・データレジスタ(ADCR) ■ A/Dコンバータのレジスタ一覧 図 12.3-1にA/Dコンバータのレジスタ一覧を示します。 図 12.3-1 A/Dコンバータのレジスタ一覧 262 12.3 A/Dコンバータのレジスタ 12.3.1 コントロールステータスレジスタ(ADCS) コントロールステータスレジスタ(ADCS) コントロールステータスレジスタ(ADCS)は,A/Dコンバータの制御およびステータ ス表示を行います。 ADCSは,A/D変換動作中に書換えないでください。 ■ コントロールステータスレジスタ(ADCS) コントロールステータスレジスタ(ADCS)のレジスタ構成は以下のとおりです。 [bit 15] BUSY (BUSY flag and stop) リード時:A/Dコンバータ動作表示用のビットです。A/D変換起動でセットさ れ,終了でクリアされます。 ライト時:A/D動作中に本ビットに“0”を書き込むと強制的に動作を停止 します。連続,停止モード時の強制停止に利用します。 動作表示用のビットに“1”を書き込むことは出来ません。RMW系命令では“1” が読まれます。 単発モードでは,A/D変換終了でクリアされます。 連続,停止モードでは, “0”書き込みで停止するまでクリアされません。 リセット時“0”に初期化されます。 強制停止とソフト起動を同時に行わないでください(BUSY=0,STRT=1)。 [bit 14] INT (INTerrupt) データ表示ビットです。変換データがADCRに書き込まれるとセットされます。 INTE(bit13)が“1”のときに,本ビットがセットされると割込み要求が発生 します。また,DMA転送の起動を選択している場合は,DMAが起動されます。 “1” 書込みは意味を持ちません。 クリアは“0”書き込みとDMACからのクリア信号で行われます。 リセット時“0”に初期化されます。 リードモディファイライト系命令のリードでは,“1”が読み出されます。 <注意事項> 本ビットの“0”書込みクリアはA/D停止中に行ってください。 [bit 13] INTE (INTerrupt Enable) 本ビットは,変換終了による割込みの許可/不許可を指定します。 0:割込みの禁止 1:割込みの許可 割込み要求発生でDMA転送を起動するときは,本ビットをセットしてくださ い。リセット時“0”に初期化されます。 263 第12章 A/Dコンバータ(逐次比較型) [bit 12] PAUS (A/D converter PAUSe) A/D変換動作が一時的に停止した場合にセットされます。 A/D変換結果を格納するレジスタが一つのため,連続で変換した場合に,変 換結果をDMAで転送しなければ前データが壊れてしまいます。 これを保護するためデータレジスタの内容をDMAで転送しなければ,次の変 換データが格納されないようになっています。この間A/D変換動作は停止しま す。 DMAで転送を終了するとA/Dは変換を再開します。 このビットはDMAを使用したときのみ有効です。 詳細については, 「12.5 変換データ保護機能」を参照してください。 リセット時“0”に初期化されます。 [bit 11,10] STS1,STS0 (STart Source select) リセット時“00”に初期化されます。 本ビットの設定によりA/D起動要因を選択します。 表 12.3-1 A/Dコンバータ起動要因の選択 STS1 0 0 1 1 STS0 0 1 0 1 機 能 ソフト起動 外部端子トリガでの起動とソフト起動 タイマでの起動とソフト起動 外部端子トリガ,タイマでの起動とソフト起動 起動が兼用になっているモードでは,最初に来た要因で起動します。 起動要因は,書換えと同時に変わりますので,A/D動作中に書換えるときは 注意してください。 <注意事項> 外部端子トリガは立下がりエッジを検出します。 外部トリガ入力レベルが“L”のときに,本ビットを書き換えて外部トリガ起動にすると,A/D が起動する場合があります。 タイマ選択時は,リロードタイマのチャネル2が選択されます。リロードタイマの出力レベル が“H”のときに,本ビットを書き換えてタイマ起動にすると,A/Dが起動する場合があります。 [bit 9] STRT (STaRT) 本ビットに“1”を書き込むことによりA/Dを起動します。 再起動をかけるときは,再び書き込んでください。 停止モード時は,動作機能上再起動はかかりません。 リセット時“0”に初期化されます。 強制停止とソフト起動を同時に行わないでください(BUSY=0,STRT=1)。 リードモディファイライト系の命令では“0”が読み込まれます。 [bit 8] 試験用ビットです。書き込み時は“0”を書き込んでください。 264 12.3 A/Dコンバータのレジスタ [bit 7,6] MD1,MD0 (A/D converter MoDe set) 動作モードを選択します。 表 12.3-2 A/Dコンバータ動作モードの選択 MD1 0 0 1 1 MD0 0 1 0 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”を書き込むことにより行われます。 単発,連続,停止の各モードの再起動の不可能は,タイマ, 外部トリガ,ソフトすべての起動 に適用されます。 [bit 5,4,3] ANS2,ANS1,ANS0 (ANalog Start channel set) 本ビット群よりA/D変換の開始チャネルを設定します。 A/Dコンバータを起動すると,このビットで選択されたチャネルからA/D変換 を始めます。 表 12.3-3 A/D変換開始チャネルの設定 ANS2 0 0 0 0 1 1 1 1 ANS1 0 0 1 1 0 0 1 1 ANS0 0 1 0 1 0 1 0 1 開始チャネル AN0 AN1 AN2 AN3 設定禁止 設定禁止 設定禁止 設定禁止 リード時,本ビット群は,A/D変換中は変換チャネルが読まれます。 停止モードで停止中は前の変換チャネルが読まれます。 リセット時“000”に初期化されます。 265 第12章 A/Dコンバータ(逐次比較型) [bit 2,1,0] ANE2,ANE1,ANE0 (ANalog End channel set) 本ビット群よりA/D変換の終了チャネルを設定します。 表 12.3-4 A/D変換終了チャネルの設定 ANE2 0 0 0 0 1 1 1 1 ANE1 0 0 1 1 0 0 1 1 ANE0 0 1 0 1 0 1 0 1 終了チャネル AN0 AN1 AN2 AN3 設定禁止 設定禁止 設定禁止 設定禁止 ANS2∼ANS0と同じチャネルを設定すると1ch変換になります(シングル変換)。 連続モード,停止モードを設定している場合は,本ビット群で設定されたチャ ネルの変換が終わるとANS2∼ANS0で設定された開始チャネルに戻ります。 設定チャネルは,ANS≦ANEとしてください。 リセット時“000”に初期化されます。 【例】 チャネル設定 ANS =1ch,ANE = 3chで単発モードのときの動作 変換チャネル 1ch →2ch →3ch 266 12.3 A/Dコンバータのレジスタ 12.3.2 データレジスタ(ADCR) データレジスタ(ADCR) データレジスタ(ADCR)は,変換格納レジスタで,変換結果であるディジタル値が 格納されます。 ■ データレジスタ(ADCR) データレジスタ(ADCR)のレジスタ構成は以下のとおりです。 本レジスタの値は,一回の変換終了時ごとに更新されます。通常は最終変換値 が格納されています。 このレジスタは,リセット時は不定です。 上位の15∼10ビットは,リード時は“0”です。 変換データ保護機能が有ります。詳しくは, 「12.5 変換データ保護機能」を参 照してください。 267 第12章 A/Dコンバータ(逐次比較型) 12.4 A/Dコンバータの動作 A/Dコンバータの動作 A/D変換器は,逐次変換方式で動作し,10ビットの分解能をもっています。 このA/D変換器は,変換結果格納用のレジスタが一つ(16ビット)しかないため, 1回の変換終了とともに変換データレジスタ(ADCR)が更新されてしまいます。連続 で変換をする際は,DMA転送を使用することが可能です。 ■ A/Dコンバータの動作モード A/Dコンバータには単発モード,連続モード,停止モードがあります。 ○ 単発モード 単発モードは,ADCSのANSビットとANEビットで設定されたアナログ入力を順 に変換していき,ANEビットで設定された終了チャネルまで変換が終わると,A/D は動作を停止します。 開始チャネルと終了チャネルが同じとき(ANS=ANE)は,1ch変換動作になり ます。 例: ANS=000,ANE=011のとき 開始 → AN0 → AN1 → AN2 → AN3 → 終了 ANS=010,ANE=010のとき 開始 → AN2 → 終了 ○ 連続モード 連続モードは,ADCSのANSビットとANEビットで設定されたアナログ入力を順 に変換していき,ANEビットで設定された終了チャネルまで変換が終わると,ANS のアナログ入力に戻りA/D変換動作を続けます。 開始チャネルと終了チャネルが同じとき(ANS=ANE)は,1ch変換を続けます。 例: ANS=000,ANE=011のとき 開始 → AN0 → AN1 → AN2 → AN3 → AN0 …→ 繰り返し ANS=010,ANE=010のとき 開始 → AN2 → AN2 → AN2 …→ 繰り返し 連続モードで変換させると,BUSYビットに“0”を書き込むまで変換を繰り 返し続けます。BUSYビットに“0”を書き込むと強制動作停止になります。 強制動作停止を行うと変換中のものは途中で止まってしまうため,注意して ください。 強制動作停止した場合は,変換レジスタは変換完了した前データが格納され ています。 268 12.4 A/Dコンバータの動作 ○ 停止モード 停止モードは,ADCSのANSビットとANEビットで設定されたアナログ入力を順 に変換していきますが,1ch変換するたびに変換動作を一時停止します。一時 停止を解除するには,もう一度起動をかけることにより行われます。 ANEビットで設定された終了チャネルまで変換が終わると,ANSのアナログ入 力に戻りA/D変換動作を続けます。 開始チャネルと終了チャネルが同じとき(ANS=ANE)は,1chを変換します。 例: ANS=000,ANE=011のとき 開始 → AN0 → 停止 → 起動 → AN1 → 停止 → 起動 → AN2 → 停止 → 起動 → AN3 → 停止 → 起動 → AN0 …→ 繰り返し ANS=010,ANE=010のとき 開始 → AN2 → 停止 → 起動 → AN2 → 停止 → 起動 → AN2 …→ 繰り 返し このときの起動要因は,STS1,0ビットで設定されたものだけです。 このモードを使用することにより変換開始の同期をかけることが可能です。 269 第12章 A/Dコンバータ(逐次比較型) 12.5 変換データ保護機能 A/Dコンバータは,変換データ保護機能を持ち,DMACを使って連続変換と複数のデー タを確保できることを特長としています。 ■ 変換データ保護機能 変換データレジスタは一つですので,連続でA/D変換をすると1回の変換終了と 共に変換データが格納されて前データが失われます。これを保護するために,本A/D コンバータは変換が終了しても前データがDMACを使ってメモリへ転送されていな いと,変換データはレジスタに格納されずA/Dは一時停止する機能を持っています。 一時停止の解除は,DMA転送によってメモリへ転送された後に行われます。 前データが転送されていれば一時停止することなくA/Dは連続して変換します。 <注意事項> この機能はADCSのINT,INTEビットに関係しています。 データ保護機能は,割込み許可(INTE=1)状態でしか動作しないようになっています。 割込み禁止(INTE=0)の場合は本機能は動作せず,連続でA/D変換を行った場合は,次々に変 換データはレジスタに格納されて旧データは失われます。 また,割込み許可(INTE=1)状態でDMA転送を使わない場合は,INTビットはクリアされないた め,データ保護機能が働き,A/Dは変換を一時停止状態にします。この場合は,割込みシーケン スでINTビットをクリアすると停止状態が解除されます。 DMA動作中で,A/Dが一時停止をしているときに割込みを禁止にするとA/Dが動作し,転送する 前に変換データレジスタの内容が換わることがあります。 また,一時停止中に再起動をかけると待機データが壊れます。 図 12.5-1にDMA転送使用時のデータ保護機能フローを示します。 図 12.5-1 DMA転送使用時のデータ保護機能フロー 270 12.6 A/Dコンバータ使用上の注意 12.6 A/Dコンバータ使用上の注意 A/Dコンバータ使用上の注意 A/Dコンバータを使用するときの注意点を示します。 ■ A/Dコンバータ使用上の注意 ○ 外部トリガまたは内部タイマを使って起動する場合 A/Dコンバータを外部トリガまたは内部タイマを使って起動する場合,ADCS レジスタのA/D起動要因ビット(STS1,0)で設定しますが,このときに外部ト リガおよび内部タイマの入力値はインアクティブ側にしてください。アクティ ブ側にしておくと誤動作します。 STS1,0設定時は,ATGX=「1」入力,リロードタイマ(チャネル2)=「0」出力の 状態にしてください。 ■ A/Dコンバータのその他注意事項 外部インピーダンスが指定値以上に高くなると,規定のサンプリング時間内に アナログ入力値をサンプリングできなくなり,正しい変換結果が得られません。 271 第12章 A/Dコンバータ(逐次比較型) 272 第13章 13章 UART この章では,UARTの概要,レジスタの構成/機能,およびUARTの動作について説 明します。 13.1 UARTの概要 13.2 UARTのブロックダイヤグラム 13.3 UARTのレジスタ 13.4 UARTの動作とクロック選択 13.5 UARTの割込み発生とフラグのセットタイミング 13.6 UARTの使用上の注意と応用例 13.7 ボーレートとU-TIMERのリロード値の設定例 273 第13章 UART 13.1 UARTの概要 UARTの概要 UARTは,非同期(調歩同期)通信,またはCLK同期通信を行うためのシリアルI/O ポートです。 MB91107/MB91108は,UARTを3チャネル内蔵します。 ■ UARTの特長 l l l l 全二重ダブルバッファ 非同期(調歩同期) ,CLK同期通信が可能 マルチプロセッサモードのサポート 完全プログラマブルボーレート - l l l l 274 内蔵タイマにより任意のボーレートを設定可能(「8.3 U-TIMRの動作」 参照) 外部クロックによる自由なボーレートの設定が可能 エラー検出機能(パリティ,フレーミング,オーバラン) 転送信号はNRZ符号 割込みによるDMA転送の起動が可能 13.2 UARTのブロックダイヤグラム 13.2 UARTのブロックダイヤグラム UARTのブロックダイヤグラム 図 13.2-1にUARTのブロックダイヤグラムを示します。 ■ UARTのブロックダイヤグラム 図 13.2-1 UARTのブロックダイヤグラム 275 第13章 UART 13.3 UARTのレジスタ UARTのレジスタ 図 13.3-1にUARTのレジスタ一覧を示します。 ■ UARTのレジスタ一覧 図 13.3-1 UARTのレジスタ一覧 276 13.3 UARTのレジスタ 13.3.1 シリアルモードレジスタ(SMR) シリアルモードレジスタ(SMR) シリアルモードレジスタ(SMR)は,UARTの動作モードを指定します。 動作モードの設定は動作停止中に行います。動作中に,このレジスタへの書込み は行わないでください。 ■ シリアルモードレジスタ(SMR) シリアルモードレジスタ(SMR)のレジスタ構成は以下のとおりです。 [bit 7,6] MD1,MD0 (MoDe select) UARTの動作モードを選択します。 表 13.3-1 UARTの動作モード選択 モード 0 1 2 − MD1 0 0 1 1 MD0 0 1 0 1 動作モード 非同期(調歩同期)ノーマルモード〔初期値〕 非同期(調歩同期)マルチプロセッサモード CLK同期モード 設定禁止 <注意事項> モード1のCLK非同期モード(マルチプロセッサ)とは,1台のホストCPUに数台のスレーブCPU が接続される使用法です。本リソースでは,受信データのデータ形式を判別できません。したがっ て,マルチプロセッサモードのマスタのみをサポートします。 また,パリティチェック機能は使用できませんので,SCRレジスタのPENは“0”に設定してく ださい。 [bit 5,4] (reserved) 常に“1”を書き込んでください。 [bit 3] CS0 (Clock Select) UARTの動作クロックを選択します。 0:内蔵タイマ(U-TIMER) 〔初期値〕 1:外部クロック [bit 2] (reserved) 常に“0”を書き込んでください。 [bit 1] SCKE (SCLK Enable) CLK同期モード(モード2)で通信を行う場合,SC端子をクロック入力端子に するか,クロック出力端子として使うかを指定します。 CLK非同期モード時または外部クロックモード時では“0”に設定してくださ い。 0:クロック入力端子として機能します。 〔初期値〕 1:クロック出力端子として機能します。 277 第13章 UART <注意事項> クロック入力端子として使うには,CS0ビットを“1”にして外部クロックを選択しておく必要 があります。 [bit 0] SOE (Serial Output Enable) 汎用I/Oポート端子と兼用されている外部端子(SO)を,シリアル出力端子 として使うか,I/Oポート端子として使うかを指定します。 0:汎用I/Oポート端子として機能します。 〔初期値〕 1:シリアルデータ出力端子(SO)として機能します。 278 13.3 UARTのレジスタ 13.3.2 シリアルコントロールレジスタ(SCR) シリアルコントロールレジスタ(SCR) シリアルコントロールレジスタ(SCR)は,シリアル通信を行う場合の転送プロトコ ルを制御します。 ■ シリアルコントロールレジスタ(SCR) シリアルコントロールレジスタ(SCR)のレジスタ構成は以下のとおりです。 [bit 7] PEN(Parity Enable) シリアル通信において,パリティを付加してデータ通信を行うかどうかを指 定します。 0:パリティなし 〔初期値〕 1:パリティあり <注意事項> パリティを付加できるのは,非同期(調歩同期)通信モードのノーマルモード(モード0)の みです。マルチプロセッサモード(モード1)およびCLK同期通信(モード2)では,パリティを 付加することはできません。 [bit 6] P(Parity) パリティを付加してデータ通信を行うとき,偶数/奇数パリティを指定しま す。 0:偶数パリティ 〔初期値〕 1:奇数パリティ [bit 5] SBL(Stop Bit Length) 非同期(調歩同期)通信を行うときのフレームエンドマークである,ストッ プビットのビット長を指定します。 0:1ストップビット 〔初期値〕 1:2ストップビット [bit 4] CL(Character Length) 送受信する1フレームのデータ長を指定します。 0:7ビットデータ 〔初期値〕 1:8ビットデータ <注意事項> 7ビットデータを扱えるのは,非同期(調歩同期)通信のうちのノーマルモード(モード0)の みです。マルチプロセッサモード(モード1)およびCLK同期通信(モード2)では,8ビットデー タとしてください。 279 第13章 UART [bit 3] A/D(Address/Data) 非同期(調歩同期)通信のマルチプロセッサモード(モード1)において, 送受信するフレームのデータ形式を指定します。 0:データフレーム 〔初期値〕 1:アドレスフレーム [bit 2] REC(Receiver Error Clear) “0”を書き込むことで,SSRレジスタのエラーフラグ(PE, ORE, FRE)をク リアします。 “1”書込みは無効であり,読出し値は常に“1”になります。 [bit 1] RXE(Receiver Enable) UARTの受信動作を制御します。 0:受信動作を禁止します。 〔初期値〕 1:受信動作を許可します。 <注意事項> 受信中(受信シフトレジスタにデータが入力されているとき)に受信動作を禁止した場合には, そのフレームの受信を完了し受信データバッファSIDRレジスタに受信データをストアしたところ で受信動作を停止します。 [bit 0] TXE(Transmitter Enable) UARTの送信動作を制御します。 0:送信動作を禁止します。 〔初期値〕 1:送信動作を許可します。 <注意事項> 送信中(送信レジスタからデータが出力されているとき)に送信動作を禁止した場合は,送信 データバッファSODRレジスタにデータがなくなった後に送信動作を停止します。 280 13.3 UARTのレジスタ 13.3.3 シリアルインプットデータレジスタ(SIDR)/ シリアルインプットデータレジスタ(SIDR)/シリ (SIDR)/シリ アルアウトプットデータレジスタ(SODR) アルアウトプットデータレジスタ(SODR) シリアルインプットデータレジスタ(SIDR)/シリアルアウトプットデータレジスタ (SODR)は,受信/送信用のデータバッファレジスタです。 データ長が7ビットの場合,bit7(D7)は無効データとなります。SODRレジスタ への書込みは,SSRレジスタのTDREが“1”のときに書込んでください。 ■ シリアルインプットデータレジスタ(SIDR)/シリアルアウトプットデータレジスタ(SODR) シリアルインプットデータレジスタ(SIDR)/シリアルアウトプットデータレジス タ(SODR)のレジスタ構成は以下のとおりです。 <注意事項> このアドレスへのライトはSODRレジスタへの書き込みを,リードはSIDRレジスタの読み出しを 意味します。 281 第13章 UART 13.3.4 シリアルステータスレジスタ(SSR) シリアルステータスレジスタ(SSR) シリアルステータスレジスタ(SSR)は,UARTの動作状態を表すフラグで構成されて います。 ■ シリアルステータスレジスタ(SSR) シリアルステータスレジスタ(SSR)のレジスタ構成は以下のとおりです。 [bit 7] PE(Parity Error) 受信時にパリティエラーが発生したときにセットされる,割込み要求フラグ です。 一度セットされたフラグをクリアするには,SCRレジスタのRECビット(bit 10) に“0”を書込みます。 本ビットがセットされた場合には,SIDRのデータは無効データとなります。 0:パリティエラーなし 〔初期値〕 1:パリティエラーが発生 [bit 6] ORE(Over Run Error) 受信時にオーバランエラーが発生したときにセットされる,割込み要求フラ グです。 一度セットされたフラグをクリアするには,SCRレジスタのRECビットに“0” を書込みます。 本ビットがセットされた場合には,SIDRのデータは無効データとなります。 0:オーバランエラーなし 〔初期値〕 1:オーバランエラー発生 [bit 5] FRE(FRaming Error) 受信時にフレーミングエラーが発生したときにセットされる,割込み要求フ ラグです。 一度セットされたフラグをクリアするには,SCRレジスタのRECビットに“0” を書込みます。 本ビットがセットされた場合には,SIDRのデータは無効データとなります。 0:フレーミングエラーなし 〔初期値〕 1:フレーミングエラー発生 [bit 4] RDRF(Receiver Data Register Full) SIDRレジスタに受信データがあることを示す,割込み要求フラグです。 SIDRレジスタに受信データがロードされるとセットされ,SIDRレジスタを読 出すと自動的にクリアされます。 0:受信データなし 〔初期値〕 1:受信データあり 282 13.3 UARTのレジスタ [bit 3] TDRE(Transmitter Data Register Empty) SODRに送信データを書き込めることを示す,割込み要求フラグです。 SODRレジスタに送信データを書込むとクリアされます。書き込んだデータが 送信用シフタにロードされて転送が開始されると再びセットされ,次の送信 データを書き込めることを表します。 0:送信データの書き込み禁止 1:送信データの書き込み許可 〔初期値〕 [bit 2] (reserved) [bit 1] RIE(Receiver Interrupt Enable) 受信割込みを制御します。 0:割込みを禁止します。 〔初期値〕 1:割込みを許可します。 <注意事項> 受信割込み要因は,PE,ORE,FREによるエラー発生のほかに,RDRFによる正常受信があります。 [bit 0] TIE(Transmitter Interrupt Enable) 送信割込みを制御します。 0:割込みを禁止します。 〔初期値〕 1:割込みを許可します。 <注意事項> 送信割込み要因は,TDREによる送信要求があります。 283 第13章 UART 13.4 UARTの動作とクロック選択 UARTの動作とクロック選択 UARTは,以下の三つの動作モードを持ち,SMRレジスタ,SCRレジスタに値を設定 することによりモードを切換えることができます。 ・非同期(調歩同期)ノーマルモード ・非同期(調歩同期)マルチプロセッサモード ・CLK同期モード ■ UARTの動作モード 表 13.4-1にUARTの動作モードを示します。 非同期(調歩同期)モードでのストップビット長については送信動作のみ指定 が可能です。受信動作については常に1ビット長となります。下記モード以外では 動作しませんので,設定しないでください。 表 13.4-1 UARTの動作モード モード パリティ データ長 動 作 モ ー ド ストップビット長 0 有/無 7 非同期(調歩同期)ノーマルモード 1ビットまたは 有/無 8 2ビット 1 無 8+1 非同期(調歩同期)マルチプロセッサモード 2 無 8 CLK同期モード 無 <注意事項> CLK同期モードで,送信終了(RDRFビットが“1”となる)時点と同時にSODRへの書込みを行わ ないようにしてください。SODRへの書込みタイミングの検出には,受信検出フラグRDRFを使用し てください。同期モードでは送信と同時に受信されますので,送信終了をRDRFフラグで検出する ことができます。 CLK同期モード使用時には,RDRFのポーリングか,受信割込みを使って送信を行ってください。 ■ UARTのクロック選択 ○ 内部タイマ CS0を“0”に設定してU-TIMERを選択した場合は,U-TIMERに設定したリロー ド値でボーレートが決まります。このときのボーレートの算出式は,次のとお りです。 l l 非同期(調歩同期) :Φ /(16×β) CLK同期 / :Φ β Φ:周辺系マシンクロック周波数 β:U-TIMERで設定した周期 (2n+2または2n+3,nはリロード値) 非同期(調歩同期)モードのボーレートは,設定したボーレートの−1%∼ +1%までの範囲で転送が可能です。 ○ 外部クロック CS0を“1”に設定して外部クロックを選択した場合のボーレートは,外部ク ロックの周波数をfとすると次のようになります。 l l 非同期(調歩同期) :f/16 CLK同期 :f ただし,fは最大[周辺系動作クロック周波数]/8までです。 (例:周辺25MHz動作時でfは最大3.125MHz) 284 13.4 UARTの動作とクロック選択 13.4.1 非同期(調歩同期)モード 非同期(調歩同期)モード UARTは,NRZ(Non Return to Zero)形式のデータのみを扱います。 転送データは,必ずスタートビット( “L”レベルデータ)より始まり,LSBファー ストで指定されたデータビット長の転送が行われ,ストップビット( “H”レベルデー タ)で終了します。外部クロックを選択している場合は,常にクロックを入力して ください。 ■ 非同期(調歩同期)モードの転送データフォーマット 図 13.4-1に非同期(調歩同期)モード転送データフォーマットを示します。 ノーマルモード(モード0)では,データ長を7ビットまたは8ビットに設定する ことができますが,マルチプロセッサモード(モード1)では8ビットでなければ なりません。また,マルチプロセッサモードではパリティを付加することはでき ません。そのかわり,A/Dビットが必ず付加されます。 図 13.4-1 非同期(調歩同期)モードの転送データフォーマット(モード0,1) ○ 受信動作 SCRレジスタのRXEビット(bit 1)が“1”ならば,常に受信動作が行われてい ます。 受信ラインにスタートビットが現れると,SCRレジスタで決められたデータ フォーマットに従い,1フレームデータの受信が行われます。1フレームの受信 が終わってからエラーが発生した場合には,エラーフラグのセットが行われた 後,RDRFフラグ(SSRレジスタ bit 4)がセットされます。このとき同じSSRレジ スタのRIEビット(bit 1)が“1”にセットされていれば,CPUに対して受信割込 みが発生します。SSRレジスタの各フラグを調べ,正常受信ならSIDRレジスタ をリードし,エラーが発生していれば必要な処理を行うようにしてください。 RDRFフラグは,SIDRレジスタをリードするとクリアされます。 ○ 送信動作 SSRレジスタのTDREフラグ(bit 11)が“1”のとき,SODRレジスタに送信デー タを書き込みます。ここで,SCRレジスタのTXEビット(bit 0)が“1”なら送信 が行われます。 SODRレジスタにセットしたデータが,送信用シフトレジスタにロードされて 送信が開始されると,TDREフラグが再びセットされ,次の送信データをセット できるようになります。このとき同じSSRレジスタのTIEビット(bit 0)が“1” にセットされていれば,CPUに対して送信割込みが発生して,SODRレジスタに 送信データをセットするように要求します。 TDREフラグは,SODRレジスタにデータをセットすると,いったんクリアされ ます。 285 第13章 UART 13.4.2 CLK同期モード CLK同期モード UARTは,NRZ(Non Return to Zero)形式のデータのみを扱います。図 13.4-2に, 送受信クロックとデータとの関係を示します。 ■ CLK同期モードの転送データフォーマット 図 13.4-2 CLK同期モードの転送データフォーマット(モード2) CS0を“0”に設定し,UTIMERからの出力を選択している場合は,データを送信 するとデータ受信用同期クロックが自動的に生成されます。 外部クロックを選択している場合は,送信側UARTの送信用データバッファSODR レジスタにデータがあること(TDREフラグが“0” )を確かめた後,正確に1バイト 分のクロックを供給する必要があります。また,送信開始前と終了後は,必ずマー クレベルにしてください。 データ長は8ビットのみとなり,パリティを付加することはできません。また, スタート/ストップビットがないのでオーバランエラー以外のエラー検出は行わ れません。 ○ 初期化 CLK同期モードを使用する場合の,各制御レジスタの設定値を示します。 l SMRレジスタ - MD1,MD0:10 - CS:クロック入力を指定 - SCKE:内部タイマの場合1,外部クロックの場合0 - SOE:送信を行う場合1,受信のみの場合0 l SCRレジスタ - PEN:0 - P,SBL,A/D:これらのビットは意味を持ちません - CL:1 - REC:0(初期化するため) - RXE,TXE:少なくとも,どちらか一方を1 l 286 SSRレジスタ - RIE:割込みを使用する場合1,割込みを使用しない場合0 - TIE:0 13.4 UARTの動作とクロック選択 ○ 通信開始 SODRレジスタへの書き込みによって通信を開始します。受信のみの場合でも, 必ず仮の送信データをSODRレジスタに書き込む必要があります。 ○ 通信終了 SSRレジスタのRDRFフラグが“1”に変化したことにより確認できます。SSR レジスタのOREビットによって,通信が正常に行われたかを判断してください。 287 第13章 UART 13.5 UARTの割込み発生とフラグのセットタイミング UARTの割込み発生とフラグのセットタイミング UARTには,五つのフラグと二つの割込み要因があります。 五つのフラグは,PE/ORE/FRE/RDRF/TDREです。 二つの割込み要因は,受信用のものと送信用のものです。 ■ 割込み発生とフラグ PEはパリティエラー,OREはオーバランエラー,FREはフレーミングエラーのこ とで,受信時エラーが発生したときにセットされ,SCRレジスタのRECに“0”を書 込むとクリアされます。 RDRFは,受信データがSIDRレジスタにロードされるとセットされ,SIDRレジス タを読出すことでクリアされます。ただし,モード1ではパリティ検出機能,モー ド2ではパリティ検出機能とフレーミングエラー検出機能はありません。 TDREは,SODRレジスタが空になり書込み可能な状態になるとセットされ,SODR レジスタへ書込むとクリアされます。 受信時は,PE/ORE/FRE/RDRFにより割込みを要求します。 送信時は,TDREにより割込みを要求します。 ■ モード0の受信動作時割込みフラグのセットタイミング PE,ORE,FRE,RDRFは,受信転送が終了し,最後のストップビットを検出するとき にフラグがセットされ,CPUへの割込み要求が発生します。PE,ORE,FREがアクティ ブ時は,SIDRのデータは無効データとなります。 図 13.5-1 ORE,FRE,RDRFのセットタイミング(モード0) ■ モード1の受信動作時割込みフラグのセットタイミング ORE,FRE,RDRFは,受信転送が終了し,最後のストップビットを検出するときに フラグがセットされ,CPUへの割込み要求が発生します。また,受信可能なデータ 長は8ビットのため,最後の9ビット目のアドレス/データを示すデータは無効デー タとなります。ORE,FREがアクティブ時は,SIDRのデータは無効データとなります。 図 13.5-2 ORE,FRE,RDRFのセットタイミング(モード1) 288 13.5 UARTの割込み発生とフラグのセットタイミング ■ モード2の受信動作時割込みフラグのセットタイミング ORE,RDRFは,受信転送が終了し,最後のデータ(D7)を検出するときにフラグが セットされ,CPUへの割込み要求が発生します。OREがアクティブ時は,SIDRのデー タは無効データとなります。 図 13.5-3 ORE,RDRFのセットタイミング(モード2) ■ モード0,モード1,モード2の送信動作時割込みフラグのセットタイミング TDREは,SODRレジスタへ書込まれるとクリアされ,内部のシフトレジスタに転 送されます。その後,次のデータ書込みが可能な状態になるとセットされ,CPUへ の割込み要求が発生します。 送信動作中にSCRレジスタのTXEに“0”(モード2のときはRXEも含む)を書込む と,SSRレジスタのTDREが“1”となり,送信用のシフタが停止してからUARTの送 信動作を禁止します。送信動作中にSCRレジスタのTXEに“0” (モード2のときはRXE も含む)を書込んだ後,送信が停止する前にSODRレジスタへ書込まれたデータは 送信されます。 図 13.5-4 TDREのセットタイミング(モード0,1) 図 13.5-5 TDREのセットタイミング(モード2) 289 第13章 UART 13.6 UARTの使用上の注意と応用例 UARTの使用上の注意と応用例 UARTの使用上の注意と応用例を示します。 ■ UARTの使用上の注意 通信モードの設定は,動作停止中に行ってください。モード設定時に送受信し たデータは保証されません。 ■ UARTの応用例 モード1は,1台のホストCPUに数台のスレーブCPUが接続されるような場合に使 用されます(図 13.6-1参照) 。 このリソースでは,ホスト側の通信インタフェースのみサポートします。 図 13.6-1 モード1使用時のシステム構築例 通信は,ホストCPUがアドレスデータを転送することによって始まります。 アドレスデータとは,SCRレジスタのA/Dビットが“1”のときのデータで,それ により通信先となるスレーブCPUが選択され,ホストCPUとの通信が可能になりま す。 通常データは,SCRレジスタのA/Dビットが“0”のときのデータです。 図 13.6-2にそのフローチャートを示します。 このモードにおいては,パリティチェック機能は使用できませんので,SCRレジ スタのPENビットは“0”としてください。 290 13.6 UARTの使用上の注意と応用例 図 13.6-2 モード1使用時の通信フローチャート 291 第13章 UART 13.7 ボーレートとU-TIMER ボーレートとU-TIMERのリロード値の設定例 U-TIMERのリロード値の設定例 表 13.7-1,表 13.7-2に,ボーレートとU-TIMERのリロード値の設定例を示します。 表中の周波数は,周辺系マシンクロック周波数を表します。また,UCC1は,Uタイ マ制御レジスタ(UTIMC)のUCC1ビットに設定する値です。 表中の“−”部は,誤差が±1%を超えてしまうため使用できないことを示します。 ■ ボーレートとU-TIMERのリロード値の設定例 ○ 非同期(調歩同期)モード 表 13.7-1 非同期(調歩同期)モード時のボーレートとU-TIMERのリロード値 ボーレート 1200 2400 4800 9600 19200 38400 57600 10400 31250 62500 ○ μs 833.33 416.67 208.33 104.17 52.08 26.04 17.36 25MHz 650(UCC1=0) 324(UCC1=1) 162(UCC1=0) 80(UCC1=1) 39(UCC1=1) 19(UCC1=1) 12(UCC1=1) 20MHz 520(UCC1=0) 259(UCC1=1) 129(UCC1=0) 64(UCC1=0) 31(UCC1=1) − − 12.5MHz 324(UCC1=1) 162(UCC1=0) 80(UCC1=1) 39(UCC1=1) 19(UCC1=1) 12(UCC1=1) − 10MHz 259(UCC1=1) 129(UCC1=0) 64(UCC1=0) 31(UCC1=1) − − − 96.15 32.00 16.00 74(UCC1=0) 24(UCC1=0) 11(UCC1=1) 59(UCC1=0) 19(UCC1=0) 9(UCC1=0) 36(UCC1=1) 11(UCC1=1) − 29(UCC1=0) 9(UCC1=0) 4(UCC1=0) CLK同期モード 表 13.7-2 CLK同期モード時のボーレートとU-TIMERのリロード値 ボーレート μs 25MHz 250K 4.00 49(UCC1=0) 500K 2.00 24(UCC1=0) 1M 1.00 11(UCC1=1) *:±1%以上の誤差あり 292 20MHz 39(UCC1=0) 19(UCC1=0) 9(UCC1=0) 12.5MHz 24(UCC1=0) 11(UCC1=1) 5(UCC1=0)* 10MHz 19(UCC1=0) 9(UCC1=0) 4(UCC1=0) 第14章 14章 DMAコントローラ DMAコントローラ( コントローラ(DMAC) DMAC) この章では,DMAコントローラの概要,レジスタの構成/機能,およびDMAコント ローラの動作について説明します。 14.1 DMAコントローラの概要 14.2 DMAコントローラのブロックダイヤグラム 14.3 DMAコントローラのレジスタ 14.4 DMAコントローラの転送モード 14.5 転送受付け信号出力と転送終了信号出力 14.6 DMAコントローラに関する注意事項 14.7 DMAコントローラのタイミング図 293 第14章 DMAコントローラ(DMAC) 14.1 DMAコントローラの概要 DMAコントローラの概要 DMAコントローラは,MB91107/MB91108に内蔵されているモジュールで,DMA(Direct Memory Access)転送を行います。 ■ DMAコントローラの特長 l l l l l l l 294 8チャネル モード:シングル/ブロック転送,バースト転送,連続転送の3種 アドレス全領域とアドレス全領域の間での転送 最大65536回の転送回数 転送終了時割込み機能 転送アドレス増加/減少をソフトウェアで選択可能 外部転送要求入力端子,外部転送要求受付け出力端子,外部転送終了出 力端子,各3本 14.2 DMAコントローラのブロックダイヤグラム 14.2 DMAコントローラのブロックダイヤグラム DMAコントローラのブロックダイヤグラム 図 14.2-1にDMAコントローラのブロックダイヤグラムを示します。 ■ DMAコントローラのブロックダイヤグラム 図 14.2-1 DMAコントローラのブロックダイヤグラム 295 第14章 DMAコントローラ(DMAC) 14.3 DMAコントローラのレジスタ DMAコントローラのレジスタ 図 14.3-1にDMAコントローラのレジスタ一覧を示します。 ■ DMAコントローラのレジスタ一覧 図 14.3-1 DMAコントローラのレジスタ一覧 296 14.3 DMAコントローラのレジスタ 14.3.1 DMACパラメータディスクリプタポインタ DMACパラメータディスクリプタポインタ(DPDP) パラメータディスクリプタポインタ(DPDP) DMACパラメータディスクリプタポインタ(DPDP)は,DMACの内部レジスタで,RAM上 にあるDMAC用ディスクリプタテーブルの先頭アドレスを格納します。 DPDPのビット6∼ビット0は常に0で,設定可能なディスクリプタの先頭アドレスは 128byte単位となります。 ■ DMACパラメータディスクリプタポインタ(DPDP) DMACパラメータディスクリプタポインタ(DPDP)のレジスタ構成は以下のとおり です。 リセット時は初期化されません。 リード/ライト可能です。 本レジスタへのアクセスには,32bit転送命令を使用してください。 各チャネルの動作モードを指定するディスクリプタは,DPDPで指定される表 14.3-1に示すアドレスに置かれます。 表 14.3-1 各チャネルのディスクリプタアドレス DMA チャネル 0 1 2 3 ディスクリプタ アドレス DPDP + 0 (00H) DPDP + 12 (0CH) DPDP + 24 (18H) DPDP + 36 (24H) DMA チャネル 4 5 6 7 ディスクリプタ アドレス DPDP + 48 (30H) DPDP + 60 (3CH) DPDP + 72 (48H) DPDP + 84 (54H) 297 第14章 DMAコントローラ(DMAC) 14.3.2 DMACコントロールステータスレジスタ DMACコントロールステータスレジスタ(DACSR) コントロールステータスレジスタ(DACSR) DMACコントロールステータスレジスタ(DACSR)は,DMACの内部レジスタで,DMAC全 体に関する制御,ステータスを示します。 ■ DMACコントロールステータスレジスタ(DACSR) DMACコントロールステータスレジスタ(DACSR)のレジスタ構成は以下のとおりで す。 [bit 31,27,23,19,15,11,7,3] DERn (DMA ERror) チャネルnのDMA要求発生元にエラーが発生して,DMA転送処理を中断したこ とを示します。 0:エラーはありません。 1:エラーが発生しました。 エラーが発生するか否かは,DMA要求発生元(リソース)により異なります。 エラーが発生しないDMA要求発生元もあります。 リセット時は“0”に初期化されます。 リード/ライト可能ですが,本ビットへの書込みは, “0”のみ有効です。 リードモディファイライト系の命令による読出し時は,“1”が読出されます。 [bit 30,26,22,18,14,10,6,2] DEDn (DMA EnD) チャネルnのDMA転送が終了したことを示します。 0:DMA転送動作は終了していません。 1:カウンタが0になった,あるいは転送要求発生元でエラーが発生したこと を示します。 リセット時は“0”に初期化されます。 リード/ライト可能ですが,本ビットへの書込みは, “0”のみ有効です。 リードモディファイライト系の命令による読出し時は,“1”が読出されます。 298 14.3 DMAコントローラのレジスタ [bit 29,25,21,17,13,9,5,1] DIEn (DMA Interrupt Enable) チャネルnのDMA転送終了時(DEDnが1になったとき)に割込み要求を発生さ せるか否かを指定します。 0:割込み禁止 1:割込み許可 リセット時は“0”に初期化されます。 リード/ライト可能です。 [bit 28,24,20,16,12,8,4,0] DOEn (DMA Operation Enable) チャネルnのDMA転送動作を許可します。 0:動作禁止 1:動作許可 該当するチャネルのDMA転送が完了すると(DEDnが1になると),DOEnは0にク リアされます。 転送の完了によるクリア動作と,バスからの書込みによるセット動作が同時 に行われた場合は,セット動作が優先されます。 リセット時は“0”に初期化されます。 リード/ライト可能です。 299 第14章 DMAコントローラ(DMAC) 14.3.3 DMAC端子コントロールレジスタ DMAC端子コントロールレジスタ(DATCR) 端子コントロールレジスタ(DATCR) DMAC端子コントロールレジスタ(DATCR)は,DMACの内部レジスタで,外部転送要 求入力端子,外部転送要求受付け出力端子,および外部転送終了出力端子に関する 制御を行います。 ■ DMAC端子コントロールレジスタ(DATCR) DMAC端子コントロールレジスタ(DATCR)のレジスタ構成は以下のとおりです。 [bit 21,20,13,12,5,4] LSn1,LSn0:転送要求入力検出レベル選択 該当する外部転送要求入力端子DREQnの検出レベルを表 14.3-2のように選択 します。 表 14.3-2 転送要求入力検出レベルの選択 LSn1 0 0 1 1 LSn0 0 1 0 1 動作制御機能 立上がりエッジ検出 立下がりエッジ検出 “H”レベル検出 “L”レベル検出 リセット時は不定です。 リード/ライト可能です。 連続転送モードを使用するときは,“H”レベル検出または“L”レベル検出 を設定してください。 [bit 19,11,3] AKSEn [bit 18,10,2] AKDEn 転送要求受付け出力信号を発生するタイミングを指定します。また,転送要 求受付け出力信号の端子からの出力機能の許可/禁止も指定します。 300 14.3 DMAコントローラのレジスタ 表 14.3-3 転送要求受付け出力の指定 AKSEn 0 0 1 1 AKDEn 0 1 0 1 動作制御機能 転送受付け出力禁止 転送受付け出力許可,転送先データアクセス時に出力 転送受付け出力許可,転送元データアクセス時に出力 転送受付け出力許可, 転送元および転送先データアクセス時に出力 リセット時は“00”に初期化されます。 リード/ライト可能です。 [bit 17,9,1] EPSEn [bit 16,8,0] EPDEn 転送終了出力信号を発生するタイミングを指定します。また,転送終了出力 信号の端子からの出力機能の許可/禁止も指定します。 表 14.3-4 転送終了出力の指定 EPSEn 0 0 1 1 EPDEn 0 1 0 1 動作制御機能 転送終了出力禁止 転送終了出力許可,転送先データアクセス時に出力 転送終了出力許可,転送元データアクセス時に出力 転送終了出力許可, 転送元および転送先データアクセス時に出力 リセット時は“00”に初期化されます。 リード/ライト可能です。 301 第14章 DMAコントローラ(DMAC) 14.3.4 RAM上のディスクリプタ内レジスタ RAM上のディスクリプタ内レジスタ DMA転送における,チャネルごとの設定情報を格納します。 チャネル当たり12バイトの大きさを持ち,DPDPにより示されるアドレスのメモリ が使用されます。 チャネルごとのディスクリプタの先頭アドレスは,「表 14.3-1 各チャネルの ディスクリプタアドレス」を参照してください。 ■ ディスクリプタ先頭ワード ディスクリプタ先頭ワードのレジスタ構成は以下のとおりです。 [bit 31-16] DMACT:転送回数指定 DMA転送を行う回数を指定します。0000Hを設定すると,65536回の転送を行 います。 1回転送りを行うたびに,値が1ずつ減少します。 [bit 15-12] 空き [bit 11-8] BLK:ブロックサイズ指定 シングル/ブロック転送モードにおける,転送ブロックサイズを指定します。 0を設定すると,ブロックサイズとしては16が指定されたことになります。 シングル転送を行うときは,1を指定してください。 [bit 7,6] SCS1,SCS0:転送元アドレス更新モード指定 [bit 5,4] DCS1,DCS0:転送先アドレス更新モード指定 転送元および転送先アドレスの1転送ごとの更新モードを指定します。 表 14.3-5の組み合わせの指定が可能です。 302 14.3 DMAコントローラのレジスタ 表 14.3-5 転送元/転送先アドレス更新モードの指定 SCS1 0 0 0 0 0 0 1 1 1 SCS0 DCS1 0 0 0 0 0 1 1 0 1 0 1 1 0 0 0 0 0 1 その他 DCS0 0 1 0 0 1 0 0 1 0 転送元アドレス 転送先アドレス アドレス増加 アドレス増加 アドレス増加 アドレス減少 アドレス増加 アドレス固定 アドレス減少 アドレス増加 アドレス減少 アドレス減少 アドレス減少 アドレス固定 アドレス固定 アドレス増加 アドレス固定 アドレス減少 アドレス固定 アドレス固定 設定禁止 アドレスを更新するモードにおける増減の単位は,転送データサイズの指定 に応じて,以下のようになります。 表 14.3-6 アドレス増減の単位 転送データサイズ byte (8bit) halfword (16bit) word (32bit) アドレス増減の単位 ±1byte ±2byte ±4byte [bit 3,2] WS1,WS0 転送データサイズを指定します。 表 14.3-7 転送データサイズの指定 WS1 0 0 1 1 WS0 0 1 0 1 転送データサイズ Byte Halfword Word 設定禁止 [bit 1,0] MOD1,MOD0:転送モード指定 転送モードを指定します。 表 14.3-8 転送モードの指定 MOD1 0 0 1 1 MOD0 0 1 0 1 動作モード シングル/ブロックモード バーストモード 連続転送モード 設定禁止 連続転送モードが使用できるのは,ch.0∼2だけです。 303 第14章 DMAコントローラ(DMAC) ■ ディスクリプタ第2ワード 転送元アドレスを格納します。 アドレス更新モードの指定(SCS1,SCS0ビット)に基づき,転送動作に応じて値 が更新されます。 転送データサイズがhalfword長のときは2の倍数のアドレスを,word長のときは 4の倍数のアドレスを指定してください。 ■ ディスクリプタ第3ワード 転送先アドレスを格納します。 アドレス更新モードの指定(DCS1,DCS0ビット)に基づき,転送動作に応じて値 が更新されます。 転送データサイズがhalfword長のときは2の倍数のアドレスを,word長のときは 4の倍数のアドレスを指定してください。 304 14.4 DMAコントローラの転送モード 14.4 DMAコントローラの転送モード DMAコントローラの転送モード DMAコントローラには,次の3個の転送モードがあり,動作手順は以下のとおりです。 ・シングル/ブロック転送モード ・連続転送モード ・バースト転送モード ■ シングル/ブロック転送モード 1) 初期化ルーチンでディスクリプタの設定を行います。 2) プログラムにより,DMA転送要求発生元の初期化を行います。内部周辺回 路を転送要求発生元とする場合は,割込み要求を許可にします。同時に, 割込みコントローラのICRは割込み禁止にします。 3) プログラムにより,所望するDACSRのDOEnビットに1を書き込みます。 −−− この時点でDMAに関する設定は完了 −−− 4) DMACがDMA転送要求入力を検出すると,CPUにバス権確保を要求します。 5) CPUがバス権を移譲すると,DMACはディスクリプタにある3ワードの情報 をバスを経由してアクセスします。 6) DMACTの減算を行い,ディスクリプタ内の情報に従った転送をBLKで指定 された回数,またはDMACTが0になるまで行います。データの転送中,転 送要求受付出力信号を出力します(外部転送要求入力使用の場合)。減算 したDMACTが0になったとき,データ転送中に転送終了出力信号を出力し ます。 7) 転送要求入力をクリアします。 8) SADRまたはDADRの増加減を行い,DMACTの値とともにディスクリプタに書 き戻します。 9) CPUにバス権を返します。 10) DMACTの値が0であった場合,DACSRのDEDnを1にするとともに割込み許可 になっていればCPUに割込みをかけます。 1回あたりの最低所要サイクル数は,ディスクリプタを内蔵RAMに格納し,デー タを外部バス間で転送,データ長がバイトの場合は次のようになります。 l l l 転送元/転送先アドレスともに固定のとき:(6+5×BLK)サイクル 転送元/転送先アドレスの一方のみ固定のとき:(7+5×BLK)サイクル 転送元/転送先アドレスの両方が増加または減少のとき:(8+5×BLK)サ イクル ■ 連続転送モード 1) 初期化ルーチンでディスクリプタの設定を行います。 2) プログラムにより,DMA転送要求発生元の初期化を行います。外部転送要 求入力端子を,HまたはLレベル検出に設定します。 3) プログラムにより,所望するDACSRのDOEnビットに1を書き込みます。 −−− この時点でDMAに関する設定は完了 −−− 4) DMACがDMA転送要求入力を検出すると,CPUにバス権確保を要求します。 5) CPUがバス権を移譲すると,DMACはディスクリプタにある3ワードの情報 をバスを経由してアクセスします。 305 第14章 DMAコントローラ(DMAC) 6) DMACTの減算を行い,ディスクリプタ内の情報に従った転送を1回行いま す。データの転送中,転送要求受付出力信号を出力します。減算したDMACT が0になったとき,データ転送中に転送終了出力信号を出力します。 7) DMACTの値が0ではなく,周辺からのDMA要求がまだ存在すれば,ふたたび 6)から繰り返します。 8) DMACTの値が0であるか,周辺からのDMA要求が解除されたならば,SADRま たはDADRに増加減を行い,DMACTの値とともにディスクリプタに書き戻し ます。 9) CPUにバス権を返します。 10) カウンタの値が0であった場合,DACSRのDEDnを1にするとともに割込み許 可になっていればCPUに割込みをかけます。 1回あたりの最低所要サイクル数は,ディスクリプタを内蔵RAMに格納し,デー タを外部バス間で転送,データ長がバイトの場合は次のようになります。 l l l 転送元/転送先アドレスともに固定のとき:(6+5×n)サイクル 転送元/転送先アドレスの一方のみ固定のとき:(7+5×n)サイクル 転送元/転送先アドレスの両方が増加または減少のとき:(8+5×n)サイ クル ■ バースト転送モード 1) 初期化ルーチンでディスクリプタの設定を行います。 2) プログラムにより,DMA転送要求発生もとの初期化を行います。内部周辺 回路を転送要求元とする場合は,割込み要求を許可にします。同時に, 割込みコントローラのICRは割込み禁止にします。 3) プログラムにより,所望するDACSRのDOEnビットに1を書き込みます。 −−− この時点でDMAに関する設定は完了 −−− 4) DMACがDMA転送要求入力を検出すると,CPUにバス権確保を要求します。 5) CPUがバス権を移譲すると,DMACはディスクリプタにある3ワードの情報 をバスを経由してアクセスします。 6) DMACTの減算を行いながら,ディスクリプタ内の情報に従った転送をDMACT で設定した回数だけ行います。データの転送中,転送要求受付出力信号 を出力します(外部転送要求入力使用の場合)。減算したDMACTが0になっ たとき,データ転送中に転送終了出力信号を出力します。 7) SADRまたはDADRの増加減を行い,DMACTの値とともにディスクリプタに書 き戻します。 8) CPUにバス権を返します。 9) DACSRのDEDnを1にするとともに割込み許可になっていればCPUに割込みを かけます。 1回あたりの最低所要サイクル数は,ディスクリプタを内蔵RAMに格納し,デー タを外部バス間で転送,データ長がバイトの場合は次のようになります。 l l l 306 転送元/転送先アドレスともに固定のとき:(6+5×n)サイクル 転送元/転送先アドレスの一方のみ固定のとき:(7+5×n)サイクル 転送元/転送先アドレスの両方が増加または減少のとき:(8+5×n)サイ クル 14.4 DMAコントローラの転送モード ■ リクエストのセンスと各転送モードの組み合わせ リクエストのセンスと各転送モードの組み合わせについて図 14.4-1に示します。 リクエストセンス 転送モード エッジセンス ステップ動作モード 転送の単位 シングル転送 ブロック転送 レベルセンス バースト転送モード 連続転送モード 図 14.4-1 リクエストのセンスと各転送モードの組み合わせ ■ DREQ信号のセンスモード ○ エッジセンス ステップ転送(シングル/ブロック) ,およびバースト転送にて使用可能です。 DMA要求を,(アクティブ)エッジにより検出します。 DMAC転送中は外部DREQの入力はマスクされておりますので,次転送のための アクティブエッジは直前のDMA転送における転送先DACKのアクティブエッジ以 降である必要があります。ステップ転送時には注意してください。 ○ レベルセンス ステップ転送(シングル/ブロック),および連続,バースト転送にて使用可 能です。 DMA要求を,(アクティブ)レベルにより検出します。 <注意事項> レベルセンス,エッジセンスともに,DACK信号の電気的特性は, min 2tCYC[ns]です。 エッジセンスの場合は,DACKのネゲート期間も同様に min 2tCYC[ns]必要です。 307 第14章 DMAコントローラ(DMAC) 14.4.1 ステップ転送( ステップ転送(シングル/ シングル/ブロック転送) ブロック転送) 1回の転送要求にて,1回のDMA転送を行います(DREQ入力はエッジ,レベルの選択 可) 。 1DMA転送ごとに,CPUにバス権が譲渡されます(サイクルスチール的に転送が行わ れます) 。 1転送単位は,ブロックサイズにて決定され,ブロックサイズを大きくすれはDMAC の転送レートは向上しますが,CPUの実行スループットは低下します。 ■ ステップ転送(CLKダブラ使用,内部ディスクリプタ,ブロックサイズ=1) CLK DREQ -DACK ディスクリプタアクセス Internal D-Abus CPUの external DATA bus 使用可能期間 Abus 転送元 転送先 転送元 転送先 図 14.4-2 ステップ転送(CLKダブラ使用,内部ディスクリプタ,ブロックサイズ=1) 308 14.4 DMAコントローラの転送モード 14.4.2 連続転送 転送要求[DREQ]がアクティブレベルを保持し続けている間,DMA転送を行います (DREQ入力はレベルセンスのみ) 。 転送回数レジスタが0になるか,もしくはDREQ入力のネゲートにより,CPUへバ ス権を譲渡します。 ■ 連続転送(CLKダブラ使用,内部ディスクリプタ) CLK ディスクリプタアドレス DREQ -DACK Internal CPUの D-Abus DATA bus使用可能期間 external Abus 転送元 転送先 転送元 転送先 図 14.4-3 連続転送(CLKダブラ使用,内部ディスクリプタ) 309 第14章 DMAコントローラ(DMAC) 14.4.3 バースト転送 1回の転送要求[DREQ]で設定された転送回数分のDMA転送を全て行います(DREQ入 力はレベルセンス,もしくはエッジセンスの選択可) 。 転送回数レジスタが0になることにより,DMA転送を終了し,CPUへバス権を譲渡 します。 ■ バースト転送(CLKダブラ使用,内部ディスクリプタ) CLK DREQ ディスクリプタ アクセス - DACK Internal D-Abus external Abus CPUの DATA bus使用可能期間 転送元 転送先 転送元 転送先 -EOP DMACT=1 DMACT=0 図 14.4-4 バースト転送(CLKダブラ使用,内部ディスクリプタ) 310 14.4 DMAコントローラの転送モード 14.4.4 DREQセンスモードによる違い DREQセンスモードによる違い( センスモードによる違い(エッジモード時の 注意事項) 注意事項) エッジセンスモード時には,DMAC要求フラグのクリアポイント以降に,次のDREQ エッジを入力する必要があります。それ以前に入力されたエッジは無視されますの で,注意してください。 また,エッジにを認識させるためにネゲート期間として min 2tCYC[ns]必要です。 転送先アクセス時のDACK↓エッジ以降に次のDREQを入力してください。 ■ DREQセンスモードによる違い(エッジモード時の注意事項) CLK DREQ -DACK DREQ(NG) アクティブエッジが早い DREQ(NG) min 2tCYC[ns]が 満足されていない。 DREQ(NG) ディスティネーションライト 内部D-Abus ディスクリプタライト external A bus 転送元 転送先 A B A:要求フラグのクリアポイント エッジセンス時の次DREQのセンス開始ポイント 連続転送モード時の次DREQのセンス開始ポイント B:レベルセンスモードで,シングル,ブロック転 送時における次DREQのセンス開始ポイント DREQからDMA起動までのタイミングは,ほぼ最速の場合を記載しております。 図 14.4-5 DREQセンスモードによる違い(エッジモード時の注意事項) 311 第14章 DMAコントローラ(DMAC) 14.4.5 DREQセンスモードによる違い DREQセンスモードによる違い( センスモードによる違い(レベルモード時の 注意事項) 注意事項) レベルセンスモード時には,DMAC転送のオーバランに注意が必要です。 転送先アクセス時のDACK↑エッジまでにDREQをネゲートしてください。 ■ DREQセンスモードによる違い(レベルモード時の注意事項) 最大1CYC CLK DREQ DREQ -DACK 1回の転送要求に対して, 2回転送してしまいます。 DREQ(NG) ディスティネーションライト ソースリード 内部D-A ディスクリプタライト ディスクリプタリード external 転送元 A bus 転送先 A B A: 要求フラグのクリアポイント エッジセンス時の次DREQのセンス開始ポイント 連続転送モード時の次DREQのセンス開始ポイント B:レベルセンスモードで,シングル,ブロック転 送時における次DREQのセンス開始ポイント DREQからDMA起動までのタイミングは,ほぼ最速の場合を記載しております。 図 14.4-6 DREQセンスモードによる違い(レベルモード時の注意事項) 312 14.5 転送受付け信号出力と転送終了信号出力 14.5 転送受付け信号出力と転送終了信号出力 チャネル0,1,2には,転送要求受付け信号と転送終了信号を端子から出力する機能 があります。 転送受付け信号出力は,端子からの転送要求入力を受理してDMA転送を行うとき, DMACは転送要求受付け信号を出力します。 転送終了信号出力は,端子からの転送要求入力を受理してDMA転送を行い,DMACT カウンタが0となって転送を終了するとき,DMACは転送終了信号を出力します。 ■ 転送受付け信号出力 転送要求受付け信号は,アクティブローのパルスで,転送データのアクセスに 伴って出力されます。転送元アクセスに同期して出力するのか,転送先アクセス に同期し て 出力 する の か,ある いは その 両 方で出 力 する のか を,DATCR 中 の AKSn,AKDnビットにて指定可能です。 ■ 転送終了信号出力 転送終了信号は,アクティブローのパルスで,最終転送データのアクセスに伴っ て出力されます。転送元アクセスに同期して出力するのか,転送先アクセスに同 期して出力するのか,あるいはその両方で出力するのかを,DATCR中のEPSn,EPDn ビットにて指定可能です。 313 第14章 DMAコントローラ(DMAC) 14.6 DMAコントローラに関する注意事項 DMAコントローラに関する注意事項 DMAコントローラを使用する上での注意事項について説明します。 ■ チャネル間優先順位 本DMACは,一つのチャネルのDMA転送要求によりいったん起動されると,他のチャ ネルのDMA転送要求が発生しても,実行中の転送が終了するまで他のチャネルの転 送要求は受理されず,保留されます。 DMACがDMA転送要求を検出するときに,複数のチャネルの要求が同時にアクティ ブになっていた場合,受理するチャネルは以下の優先度にしたがって決まります。 (強) ch 0 > ch 1 > ch 2 > ch 3 > ch 4 > ch 5 > ch 6 > ch 7 (弱) 複数のチャネルの要求が同時に発生した場合,一つのチャネルのDMA転送を実行 した後,次のチャネルのDMA転送を行う前に,いったんCPUにバスの制御が戻りま す。 ■ リソースの割込み要求をDMA転送要求として使用する場合 DMAC転送を望む場合,該当する割込みの割込みコントローラ内の割込みレベル は,割込み禁止にする必要があります。 また,逆に,割込み発生を望む場合,DMAC内のDMAC動作許可ビットを禁止状態 にし,割込みレベルを適切な値にする必要があります。 ■ 優先度の高い割込み発生時のDMA転送抑止 MB91107/MB91108には,DMA転送要求の発生によるDMA転送の実行中に,より優先 度の高い割込み要求が発生した場合,DMA転送を停止させる機能があります。 ○ HRCLレジスタ 割込みコントローラのHRCL(Hold Request Cancel Level register)を操作す ることにより,割込み要求の発生時に,DMA転送動作を停止させることができ ます。 周辺回路からの割込み要求が発生したときに,その割込み要求に設定された 割込みレベルが,HRCLに設定された割込みレベルよりも強い値であった場合, DMACのDMA転送動作が抑止されます。DMA転送動作の実行中であれば,転送動作 の切れ目で動作を中止し,バス権をCPUに開放します。DMA転送要求の発生待ち の状態であれば,DMA転送要求が発生しても保留する状態になります。 リセット後,HRCLは最も弱いレベル(31)に設定されるので,すべての割込み 要求に対してDMA転送動作は抑止されることになります。割込み要求が発生し ていてもDMA転送を動作させたいときは,HRCLレジスタを必要な値に設定して ください。 ○ PDRRレジスタ HRCLレジスタの指定によるDMA転送動作の抑止機能は,より高い優先度の割 込み要求がアクティブなときのみ有効です。そのため,たとえば割込みハンド ラのプログラム中で割込み要求をクリアすると,その時点でHRCLレジスタによ るDMA転送の抑止は解除され,CPUがバス権を失ってしまう場合があります。 他の割込み要求を受理できるように割込み要求はクリアして,かつDMA転送 動作は抑止するために,クロック制御部のPDRRレジスタが用意されています。 割込みハンドラ中でPDRRに0以外の値を書き込むと,DMA転送動作は抑止さ れます。DMA転送動作の抑止を解除したいときは,PDRRに0を書き込んでくださ い。 314 14.6 DMAコントローラに関する注意事項 ■ スリープモード中のDMA転送動作 CPUがスリープ状態に入っているときに,内蔵リソースからDMA転送要求が発生 すると,DMACが動作してDMA転送動作を行います。 このとき,内蔵リソースからのDMA転送要求信号は割込み要求信号を兼用してい るため,CPUのスリープ状態は解除されます。割込みレベルの操作で割込み禁止状 態に設定してあっても,スリープ状態は解除となります。DMA転送動作が終了する と,CPUはスリープ状態に遷移したときの次の命令から実行を再開します。 DMA転送動作を行ってもCPUにはスリープ状態を継続させたいような場合は,ス リープから復帰したときに,条件を確認して必要に応じて再度スリープ状態に遷 移するようにプログラムを作成してください。 sleep_mode: ldi #50h, r0 ; SLEPビットをセット ldi #481h, r1 ; STCRのアドレス stb r0, @r0 ; スリープモードへ遷移 ; ; スリープから起きる要因をチェック。 ; ここでは,外部割込み要因がスリープを解除する要因であるとする。 ldi #アドレス, r0 ldi #比較データ r1 ldub @r1, r0 and r0, r1 beq sleep_mode 特定のアドレスの内容が,固有の値であった場合だけ,次の処理へと進みます。 他の要因,たとえばUARTの受信によるDMA転送動作に付随してCPUのスリープ状態 が解除されたような場合は,再度スリープ状態へ遷移します。 ■ DMAC内部レジスタへの転送動作 転送先アドレスとして,DMACの内部レジスタは指定しないでください。 315 第14章 DMAコントローラ(DMAC) ■ DMAの転送要求要因 DMAの転送要求要因の一覧を表 14.6-1に示します。 表 14.6-1 DMAの転送要求要因 チャネル番号 0 1 2 3 4 5 6 7 ○ 転送要求要因 外部転送要求入力端子DREQ0 外部転送要求入力端子DREQ1 外部転送要求入力端子DREQ2 PWM ch0 UART ch0受信 UART ch0送信 16bitリロードタイマ ch0 A/Dコンバータ DMAC転送要求元のエラーステータス DACSRのDERnビットでDMA要求発生元にエラーが発生したことを通知できるの は,ch4だけです。 UART ch0の受信割込みをDMA転送要求として使用しているときに,次のエラー が発生するとDER4ビットが“1”となります。 l l l ○ パリティエラー オーバランエラー フレーミングエラー DREQ2 外部転送要求入力端子DREQ2を使用するときは,端子が兼用しているCS1Lの 機能を禁止に設定してください(DSCRレジスタのC1LEビットを“0”に設定して ください)。 CS1Lの出力が有効になっていると,CS1L信号の変化が原因となり誤動作しま す。 316 14.7 DMAコントローラのタイミング図 14.7 DMAコントローラのタイミング図 DMAコントローラのタイミング図 DMAコントローラの動作タイミング図を示します。 ・ディスクリプタアクセス部のタイミング図 ・データ転送部のタイミング図 ・連続転送モードでの転送停止タイミング図 ・転送の終了動作タイミング図 ■ タイミング図で使用している記号の説明 表 14.7-1 タイミング図中の記号説明 記号 #0 #0H #0L #1 #1H #1L #2 #2H #2L #1/2 #1/2H #1/2L S SH SL D DH DL 記号の意味 ディスクリプタNo.0 ディスクリプタNo.0のbit31-16 ディスクリプタNo.0のbit15-0 ディスクリプタNo.1 ディスクリプタNo.1のbit31-16 ディスクリプタNo.1のbit15-0 ディスクリプタNo.2 ディスクリプタNo.2 のbit31-16 ディスクリプタNo.2 のbit15-0 ディスクリプタNo.1またはNo.2 (SCS1,0,DCS1,0により決まる) ディスクリプタNo.1またはNo.2 のbit31-16 ディスクリプタNo.1またはNo.2 のbit15-0 転送元 転送元のbit31-16 転送元のbit15-0 転送先 転送先のbit31-16 転送先のbit15-0 317 第14章 DMAコントローラ(DMAC) 14.7.1 ディスクリプタアクセス部のタイミング図 ディスクリプタアクセス部のタイミング図を示します。 ■ ディスクリプタアクセス部 318 ○ 要求端子入力モード:レベル,ディスクリプタアドレス:外部 ○ 要求端子入力モード:レベル,ディスクリプタアドレス:内部 ○ 要求端子入力モード:エッジ,ディスクリプタアドレス:外部 14.7 DMAコントローラのタイミング図 ○ 要求端子入力モード:エッジ,ディスクリプタアドレス:内部 <注意事項> DREQnの発生からDMAC動作開始までの部分については,最も早い条件の場合を示してあります。 実際の動作では,CPUの命令フェッチやデータアクセスによるバスの競合があるため,DMACの 動作開始が遅れる場合があります。 319 第14章 DMAコントローラ(DMAC) 14.7.2 データ転送部のタイミング図 データ転送部のタイミング図を示します。 ■ データ転送部,16/8bitデータ 320 ○ 転送元領域:外部,転送先領域:外部 ○ 転送元領域:外部,転送先領域:内部RAM ○ 転送元領域:内部RAM,転送先領域:外部 14.7 DMAコントローラのタイミング図 14.7.3 連続転送モードでの転送停止タイミング図 連続転送モードでの転送停止タイミング図を示します。 ■ 連続転送モードでの転送停止(いずれか一方のアドレスは固定である場合) ,16/8bitデータ ○ 転送元領域:外部,転送先領域:外部 ○ 転送元領域:外部,転送先領域:内部RAM ○ 転送元領域:内部RAM,転送先領域:外部 321 第14章 DMAコントローラ(DMAC) ■ 連続転送モードでの転送停止(両方のアドレスが変化する場合) ,16/8bitデータ 322 ○ 転送元領域:外部,転送先領域:外部 ○ 転送元領域:外部,転送先領域:内部RAM ○ 転送元領域:内部RAM,転送先領域:外部 14.7 DMAコントローラのタイミング図 14.7.4 転送の終了動作タイミング図 転送の終了動作タイミング図を示します。 ■ 転送の終了動作(いずれか一方のアドレスは固定である場合) ○ バス幅:16bit,データ長:8/16bit ○ バス幅:16bit,データ長:32bit 323 第14章 DMAコントローラ(DMAC) ■ 転送の終了動作(両方のアドレスが変化する場合) 324 ○ バス幅:16bit,データ長:8/16bit ○ バス幅:16bit,データ長:32bit 第15章 15章 ビットサーチモジュール この章では,ビットサーチモジュールの概要,レジスタの構成/機能,およびビッ トサーチモジュールの動作,退避/復帰処理について説明します。 15.1 ビットサーチモジュールの概要 15.2 ビットサーチモジュールのレジスタ 15.3 ビットサーチモジュールの動作と退避/復帰処理 325 第15章 ビットサーチモジュール 15.1 ビットサーチモジュールの概要 ビットサーチモジュールは,入力レジスタに書き込まれたデータに対して,0,1 または変化点を検索し,検出したビット位置を返します。 ■ ビットサーチモジュールのブロックダイヤグラム 図 15.1-1にビットサーチモジュールのブロックダイヤグラムを示します。 図 15.1-1 ビットサーチモジュールのブロックダイヤグラム ■ ビットサーチモジュールのレジスタ一覧 図 15.1-2にビットサーチモジュールのレジスタ一覧を示します。 図 15.1-2 ビットサーチモジュールのレジスタ一覧 326 15.2 ビットサーチモジュールのレジスタ 15.2 ビットサーチモジュールのレジスタ ビットサーチモジュールのレジスタには,以下の四つがあります。 ・0検出用データレジスタ(BSD0) ・1検出用データレジスタ(BSD1) ・変化点検出用データレジスタ(BSDC) ・検出結果レジスタ(BSRR) ■ 0検出用データレジスタ(BSD0) 書き込んだ値に対して,0検出を行います。 リセットによる初期値は不定です。 読出し値は不定です。 データ転送には,32ビット長のデータ転送命令を使用してください(8ビット, 16ビット長のデータ転送命令は,使わないでください)。 ■ 1検出用データレジスタ(BSD1) データ転送には,32ビット長のデータ転送命令を使用してください(8ビット, 16ビット長のデータ転送命令は,使わないでください)。 ○ 書き込み時 書き込んだ値に対して,1を検出します。 ○ 読出し時 ビットサーチモジュールの内部状態の退避用データが読み出されます。割込 みハンドラなどがビットサーチモジュールを使用する場合に,元の状態を退避 復帰するときに使用します。0検出,変化点検出,データレジスタにデータを 書き込んだ場合でも,1検出用データレジスタのみ操作することで退避復帰で きます。 リセットによる初期値は不定です。 327 第15章 ビットサーチモジュール ■ 変化点検出用データレジスタ(BSDC) 書き込んだ値に対して,変化点の検出を行います。 リセットによる初期値は不定です。 読出し値は不定です。 データ転送には,32ビット長のデータ転送命令を使用してください(8ビット, 16ビット長のデータ転送命令は,使わないでください)。 ■ 検出結果レジスタ(BSRR) 0検出,1検出,または変化点検出の結果が読み出されます。 どの検出結果が読み出されるかは,最後に書き込んだデータレジスタによって, 決定されます。 328 15.3 ビットサーチモジュールの動作と退避/復帰処理 15.3 ビットサーチモジュールの動作と退避/復帰処理 ビットサーチモジュールの0検出,1検出,および変化点検出の動作と退避/復帰 処理について説明します。 ■ 0検出 0検出用データレジスタに書き込まれたデータを,MSBからLSBへスキャンし,最 初の“0”を検出した位置を返します。 検出結果は,検出結果レジスタを読み出すことで得られます。 検出した位置と,返す数値の関係は,表 15.3-1のとおりです。 “0”が存在しないとき(すなわちFFFFFFFFHという数値のとき),32という値を サーチ結果として返します。 【実行例】 書き込みデータ 11111111111111111111000000000000B 11111000010010011110000010101010B 10000000000000101010101010101010B 11111111111111111111111111111111B (FFFFF000 (F849E0AA (8002AAAA (FFFFFFFF ) H) H) H) H ⇒ ⇒ ⇒ ⇒ 読み出し値(10進) 20 5 1 32 ■ 1検出 1検出用データレジスタに書き込まれたデータを,MSBからLSBへスキャンし,最 初の“1”を検出した位置を返します。 検出結果は,検出結果レジスタを読み出すことで得られます。 検出した位置と返す値との関係は,表 15.3-1のとおりです。 “1”が存在しないとき(すなわち00000000Hという数値のとき),32という値を サーチ結果として返します。 【実行例】 書き込みデータ 00100000000000000000000000000000B 00000001001000110100010101100111B 00000000000000111111111111111111B 00000000000000000000000000000001B 00000000000000000000000000000000B (20000000 (01234567 (0003FFFF (00000001 (00000000 ) H) H) H) H) H ⇒ ⇒ ⇒ ⇒ ⇒ 読み出し値(10進) 2 7 14 31 32 329 第15章 ビットサーチモジュール ■ 変化点検出 変化点検出用データレジスタに書き込まれたデータを,bit30からLSBへスキャ ンし,MSBの値と比較します。最初にMSBと異なる値を検出した位置を返します。 検出結果は,検出結果レジスタを読み出すことで得られます。 検出した位置と返す値は,表 15.3-1の示すとおりです。 変化点が存在しないときは,32を返します。 変化点検出では,結果として0を返すことはありません。 【実行例】 書き込みデータ 00100000000000000000000000000000B 00000001001000110100010101100111B 00000000000000111111111111111111B 00000000000000000000000000000001B 00000000000000000000000000000000B 11111111111111111111000000000000B 11111000010010011110000010101010B 10000000000000101010101010101010B 11111111111111111111111111111111B (20000000 (01234567 (0003FFFF (00000001 (00000000 (FFFFF000 (F849E0AA (8002AAAA (FFFFFFFF ) H) H) H) H) H) H) H) H) H ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ 読み出し値(10進) 2 7 14 31 32 20 5 1 32 表 15.3-1 ビット位置と返す値(10進) 検出した 検出した 検出した 検出した 返す値 返す値 返す値 返す値 ビット位置 ビット位置 ビット位置 ビット位置 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 ■ 退避/復帰の処理 割込みハンドラ中で,ビットサーチモジュールを使う場合のように,ビットサー チモジュールの内部状態を退避/復帰させる必要がある場合は,以下の手順に従っ てください。 1) 1検出用データレジスタを読出し,この内容を保存する(退避) 2) ビッチサーチモジュールを使用 3) 1)で退避したデータを1検出用データレジスタに書き込む(復帰) 以上の操作により,次に検出結果レジスタを読み出したときに得られる値は,1) 以前に,ビットサーチモジュールに書き込まれた内容に応じたものとなります。 最後に書き込まれたデータレジスタが0検出用または変化点検出用であっても, 上記手順で正しく元に戻ります。 330 付録 付録として,I/Oマップ,割込みベクタ,CPUステートでの端子状態,リトルエン ディアン領域を利用するときの注意事項,および命令一覧について,本文に記載で きなかった細かいところや,プログラミングするときに参照することがらを記載し ています。 A I/Oマップ B 割込みベクタ C 各CPUステートにおける端子状態 D リトルエンディアン領域を利用する際の注意事項 E 命令一覧 331 付録 A I/Oマップ I/Oマップ MB91107/MB91108に内蔵された周辺機能の各レジスタは,付表 A-1に示すアドレス が割当てられています。 ■ I/Oマップの読み方 レジスタ アドレス 000000 +0 PDR3 [R/W] XXXXXXXX H +1 PDR2 [R/W] XXXXXXXX +2 +3 − − 内部リソース ポートデータレジスタ リード/ライトアトリビュート リセット後のレジスタ初期値 レジスタ名(1コラムのレジスタが4n番地,2コラムが4n+1番地,---) 最左のレジスタ番地(ワードでアクセスした際は,1コラム目のレジスタがデータのMSB側となる <注意事項> レジスタのビット値は,以下のように初期値を表します。 ・ “1” :初期値“1” ・ “0” :初期値“0” ・ “X” :初期値“X” ・ “-” :その位置に物理的にレジスタがない 332 A I/Oマップ ■ I/Oマップ 付表 A-1 I/Oマップ(続く) アドレス 000000 H 000004 H 000008 H 00000C H 000010 H 000014 H 000018 H 00001C H 000020 H 000024 H 000028 H 00002C H 000030 H 000034 H 000038 H 00003C H 000040 H 000044 H 000048 H 00004C H 000050 H 000054 H 000058 H レジスタ +1 PDR2 [R/W] XXXXXXXX PDR6 [R/W] XXXXXXXX PDRA [R/W] -XXXXXX- +0 − PDR7 [R/W] -------X PDRB [R/W] XXXXXXXX +2 +3 − − − − 内部リソース ポートデータレジスタ PDR8 [R/W] --X--XXX − − − − PDRG [R/W] XXXXXXXX PDRH [R/W] XXXXXXX0 − − SSR [R/W] 00001-00 SSR [R/W] 00001-00 SSR [R/W] 00001-00 TMRLR XXXXXXXX SIDR/SODR[R/W] XXXXXXXX SIDR/SODR[R/W] XXXXXXXX SIDR/SODR[R/W] XXXXXXXX [W] XXXXXXXX − TMRLR [W] XXXXXXXX XXXXXXXX − ADCR [R] ------XX XXXXXXXX TMRLR [W] XXXXXXXX XXXXXXXX − PDRE [R/W] XXXXXXXX PDRI [R/W] ------XX PDRF [R/W] XXXXXXXX − − SCR [R/W] 00000100 SCR [R/W] 00000100 SCR [R/W] 00000100 TMR XXXXXXXX TMCSR ----0000 TMR XXXXXXXX TMCSR ----0000 ADCS 00000000 TMR XXXXXXXX TMCSR ----0000 SMR [R/W] 00--0-00 SMR [R/W] 00--0-00 SMR [R/W] 00--0-00 [R] XXXXXXXX [R/W] 00000000 [R] XXXXXXXX [R/W] 00000000 [R/W] 00000000 [R] XXXXXXXX [R/W] 00000000 − − − − − − ASR6 [W] 11111111 11111111 ASR7 [W] 11111111 11111111 CS67 [R/W] − ----0011 AMR6 [W] 00000000 00000000 AMR7 [W] 00000000 00000000 Reserved UART 0 UART 1 UART 2 Reload Timer 0 Reload Timer 1 A/D converter (逐次比較型) Reload Timer 2 Reserved Reserved 外部バスインタフェー ス − 333 付録 付表 A-1 I/Oマップ(続く) アドレス 334 00005C H 000060 H 000064 H 000068 H 00006C H 000070 H 000074 H 000078 H 00007C H 000080 H 000084 H 000088 H 00008C H 000090 H 000094 H 000098 H 00009C H 0000A0 H 0000A4 H 0000A8 H 0000AC H 0000B0 H 0000B4 H 0000B8 H レジスタ +0 +1 +2 +3 − − − − − − − − − − − − − − UTIM/UTIMR [R/W] 00000000 00000000 UTIM/UTIMR [R/W] 00000000 00000000 UTIM/UTIMR [R/W] 00000000 00000000 − − − UTIMC [R/W] 0--00001 UTIMC [R/W] 0--00001 UTIMC [R/W] 0--00001 − − − − − − − − EIRR [R/W] ENIR [R/W] 00000000 00000000 ELVR [R/W] 00000000 00000000 − 内部リソース Reserved Reserved Reserved Reserved Reserved U-TIMER 0 U-TIMER 1 U-TIMER 2 Reserved Reserved 外部割込み/NMI − − − − − − − − − Reserved A I/Oマップ 付表 A-1 I/Oマップ(続く) アドレス 0000BC H 0000C0 H 0000C4 H 0000C8 H 0000CC H 0000D0 H 0000D4 H 0000D8 H 0000DC H 0000E0 H 0000E4 H 0000E8 H 0000EC H 0000F0 H 0000F4 H 0000F8 H 0000FC H 000100 │ 0001FC 000200 H 000204 H 000208 H 00020C H 000210 │ 000250 H レジスタ +0 +1 +2 内部リソース +3 Reserved − − − − − − − DDRG [W] 00000000 DDRH [W] 00000001 DDRE [W] 00000000 DDRI [W] ------00 DDRF [W] 00000000 − Reserved − GCN1 00110010 PTMR 11111111 PDUT XXXXXXXX PTMR 11111111 PDUT XXXXXXXX PTMR 11111111 PDUT XXXXXXXX PTMR 11111111 PDUT XXXXXXXX [R/W] 00010000 [R] 11111111 [W] XXXXXXXX [R] 11111111 [W] XXXXXXXX [R] 11111111 [W] XXXXXXXX [R] 11111111 [W] XXXXXXXX データ方向レジスタ − PCSR XXXXXXXX PCNH [R/W] 0000000PCSR XXXXXXXX PCNH [R/W] 0000000PCSR XXXXXXXX PCNH [R/W] 0000000PCSR XXXXXXXX PCNH [R/W] 0000000- GCN2 [R/W] 00000000 [W] XXXXXXXX PCNL [R/W] 00000000 [W] XXXXXXXX PCNL [R/W] 00000000 [W] XXXXXXXX PCNL [R/W] 00000000 [W] XXXXXXXX PCNL [R/W] 00000000 PWM Reserved − H H DPDP [R/W] XXXXXXXX XXXXXXXX XXXXXXXX X0000000 DACSR [R/W] 00000000 00000000 00000000 00000000 DATCR [R/W] XXXXXXXX XXXX0000 XXXX0000 XXXX0000 DMAC − Reserved − H 335 付録 付表 A-1 I/Oマップ(続く) アドレス 336 000254 H 000258 H 00025C H 000260 H 000264 H 000268 H 00026C H 000270 H 000274 H 000278 │ 0002FC 000300 │ 0003E3 0003E4 H 0003E8 H 0003EC H 0003F0 H 0003F4 H 0003F8 H 0003FC H レジスタ +0 +1 +2 +3 − 内部リソース Reserved − − − − − − − − − H Reserved H − H H ICHCR [R/W] -------- -------- -------- --000000 − Instruction Cache Reserved − BSD0 XXXXXXXX BSD1 XXXXXXXX BSDC XXXXXXXX BSRR XXXXXXXX [W] XXXXXXXX XXXXXXXX XXXXXXXX [R/W] XXXXXXXX XXXXXXXX XXXXXXXX [W] XXXXXXXX XXXXXXXX XXXXXXXX [R] XXXXXXXX XXXXXXXX XXXXXXXX ビットサーチモジュー ル A I/Oマップ 付表 A-1 I/Oマップ(続く) アドレス 000400 H 000404 H 000408 H 00040C H 000410 H 000414 H 000418 H 00041C H 000420 H 000424 H 000428 H 00042C H 000430 H 000434 │ 00047C 000480 H 000484 H 000488 H 00048C │ 0005FC 000600 H 000604 H 000608 H レジスタ +0 +1 +2 +3 ICR00 [R/W] ---11111 ICR04 [R/W] ---11111 ICR08 [R/W] ---11111 ICR12 [R/W] ---11111 ICR16 [R/W] ---11111 ICR20 [R/W] ---11111 ICR24 [R/W] ---11111 ICR28 [R/W] ---11111 ICR32 [R/W] ---11111 ICR01 [R/W] ---11111 ICR05 [R/W] ---11111 ICR09 [R/W] ---11111 ICR13 [R/W] ---11111 ICR17 [R/W] ---11111 ICR21 [R/W] ---11111 ICR25 [R/W] ---11111 ICR29 [R/W] ---11111 ICR02 [R/W] ---11111 ICR06 [R/W] ---11111 ICR10 [R/W] ---11111 ICR14 [R/W] ---11111 ICR18 [R/W] ---11111 ICR22 [R/W] ---11111 ICR26 [R/W] ---11111 ICR30 [R/W] ---11111 ICR03 [R/W] ---11111 ICR07 [R/W] ---11111 ICR11 [R/W] ---11111 ICR15 [R/W] ---11111 ICR19 [R/W] ---11111 ICR23 [R/W] ---11111 ICR27 [R/W] ---11111 ICR31 [R/W] ---11111 − − − − − − − − − − − − − − ICR47 [R/W] ---11111 DICR [R/W] -------0 HRCL [R/W] ---11111 − − 内部リソース 割込みコントローラ 遅延割込み Reserved − H H RSRR/WTCR[R/W] 1XXXX-00 GCR [R/W] 110011-1 PCTR [R/W] 00--0--- STCR [R/W] 000111-WPR [W] XXXXXXXX PDRR [R/W] ----0000 CTBR [W] XXXXXXXX クロック制御部 − PLL制御用 − Reserved − H H − DDR7 [W] -------0 DDRB [W] 00000000 DDR2 [W] 00000000 DDR6 [W] 00000000 DDRA [W] -000000- − − − − − データ方向レジスタ DDR8 [W] --0--000 337 付録 付表 A-1 I/Oマップ(続き) アドレス 00060C H 000610 H 000614 H 000618 H 00061C H 000620 H 000624 H 000628 H 00062C H 000630 │ 0007F8 0007FC H +0 ASR1 00000000 ASR2 00000000 ASR3 00000000 ASR4 00000000 ASR5 00000000 AMD0 [R/W] ---00111 AMD5 [R/W] 0--00000 EPCR0 ----1100 DMCR4 00000000 レジスタ +1 +2 [W] AMR1 00000001 00000000 [W] AMR2 00000010 00000000 [W] AMR3 00000011 00000000 [W] AMR4 00000100 00000000 [W] AMR5 00000101 00000000 AMD1 [R/W] AMD32 [R/W] 0--00000 00000000 DSCR [W] RFCR 00000000 --XXXXXX [W] EPCR1 -1111111 -------1 [R/W] DMCR5 000000000000000 内部リソース +3 外部バスインタフェー [W] ス 00000000 [W] 00000000 [W] 00000000 [W] 00000000 [W] 00000000 AMD4 [R/W] 0--00000 [R/W] 00---000 [W] 11111111 [R/W] 0000000Reserved − H H − LER [W] -----000 MODR [W] XXXXXXXX Little endianレジスタ モードレジスタ <注意事項> ライトオンリーのビットのあるレジスタに対してRMW系の命令を行わないでください。 RMW系の命令(RMW:リードモディファイライト) AND Rj, @Ri OR Rj, @Ri EOR Rj, @Ri ANDH Rj, @Ri ORH Rj, @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 Reservedまたは(−)の領域のデータは不定です。 338 B 割込みベクタ B 割込みベクタ 付表 B-1に割込みベクタテーブルを示します。 割込みベクタテーブルには,MB91107/MB91108の割込み要因と割込みベクタ/割込 み制御レジスタの割り当てが記載されています。 ■ 割込みベクタ 付表 B-1 割込みベクタテーブル(続く) 割込み要因 リセット システム予約 システム予約 システム予約 システム予約 システム予約 システム予約 システム予約 システム予約 システム予約 システム予約 システム予約 システム予約 システム予約 未定議命令例外 NMI 要求 外部割込み 0 外部割込み 1 外部割込み 2 外部割込み 3 UART 0 受信完了 UART 1 受信完了 UART 2 受信完了 UART 0 送信完了 UART 1 送信完了 UART 2 送信完了 DMAC 0 (終了,エラー) DMAC 1 (終了,エラー) DMAC 2 (終了,エラー) DMAC 3 (終了,エラー) DMAC 4 (終了,エラー) DMAC 5 (終了,エラー) DMAC 6 (終了,エラー) DMAC 7 (終了,エラー) A/D(逐次型) リロードタイマ 0 リロードタイマ 1 リロードタイマ 2 割込み番号 10進 16進 0 00 1 01 2 02 3 03 4 04 5 05 6 06 7 07 8 08 9 09 10 0A 11 0B 12 0C 13 0D 14 0E 15 0F 16 10 17 11 18 12 19 13 20 14 21 15 22 16 23 17 24 18 25 19 26 1A 27 1B 28 1C 29 1D 30 1E 31 1F 32 20 33 21 34 22 35 23 36 24 37 25 割込みレベル*1 オフセット TBRデフォルト のアドレス*2 − − − − − − − − − − − − − − − FH固定 ICR00 ICR01 ICR02 ICR03 ICR04 ICR05 ICR06 ICR07 ICR08 ICR09 ICR10 ICR11 ICR12 ICR13 ICR14 ICR15 ICR16 ICR17 ICR18 ICR19 ICR20 ICR21 3FCH 3F8H 3F4H 3F0H 3ECH 3E8H 3E4H 3E0H 3DCH 3D8H 3D4H 3D0H 3CCH 3C8H 3C4H 3C0H 3BCH 3B8H 3B4H 3B0H 3ACH 3A8H 3A4H 3A0H 39CH 398H 394H 390H 38CH 388H 384H 380H 37CH 378H 374H 370H 36CH 368H 000FFFFCH 000FFFF8H 000FFFF4H 000FFFF0H 000FFFECH 000FFFE8H 000FFFE4H 000FFFE0H 000FFFDCH 000FFFD8H 000FFFD4H 000FFFD0H 000FFFCCH 000FFFC8H 000FFFC4H 000FFFC0H 000FFFBCH 000FFFB8H 000FFFB4H 000FFFB0H 000FFFACH 000FFFA8H 000FFFA4H 000FFFA0H 000FFF9CH 000FFF98H 000FFF94H 000FFF90H 000FFF8CH 000FFF88H 000FFF84H 000FFF80H 000FFF7CH 000FFF78H 000FFF74H 000FFF70H 000FFF6CH 000FFF68H 339 付録 付表 B-1 割込みベクタテーブル(続き) 割込み番号 TBRデフォルト 割込みレベル*1 オフセット のアドレス*2 10進 16進 PWM 0 38 26 ICR22 364H 000FFF64H PWM 1 39 27 ICR23 360H 000FFF60H PWM 2 40 28 ICR24 35CH 000FFF5CH PWM 3 41 29 ICR25 358H 000FFF58H U-TIMER 0 42 2A ICR26 354H 000FFF54H U-TIMER 1 43 2B ICR27 350H 000FFF50H U-TIMER 2 44 2C ICR28 34CH 000FFF4CH 外部割込み 4 45 2D ICR29 348H 000FFF48H 外部割込み 5 46 2E ICR30 344H 000FFF44H 外部割込み 6 47 2F ICR31 340H 000FFF40H 外部割込み 7 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にて使用)*3 64 40 − 2FCH 000FFEFCH システム予約(REALOSにて使用)*3 65 41 − 2F8H 000FFEF8H INT命令で使用 66 42 − 2F4H 000FFEF4H │ │ │ │ │ 255 FF − 000H 000FFC00H *1:ICRは,割込みコントローラ内に設けられたレジスタで,割込みの各要求に対する割込みレベルを設 定します。ICRは,割込み要求の各々に対応して用意されています。 *2:TBRは,EIT用ベクタテーブルの先頭アドレスを示すレジスタです。 TBRとEIT要因ごとに決められたオフセット値を加算したアドレスが,ベクタアドレスとなります。 *3:REALOS/FRをご使用される場合は,システムコード用に0x40,0x41の割込みを使用します。 割込み要因 参考: TBRの示すアドレスから1KBの領域が,EIT用ベクタ領域となっています。 1ベクタ当たりの大きさは4バイトで,ベクタ番号とベクタアドレスの関係は 下記のように表されます。 vctadr = TBR + vctofs = TBR + (3FCH - 4 × vct) vctadr:ベクタアドレス vctofs:ベクタオフセット vct :ベクタ番号 340 C 各CPUステートにおける端子状態 C 各CPUステートにおける端子状態 CPUステートにおける端子状態 付表 C-1に端子状態一覧表で使用されている用語の説明を,付表 C-2∼付表 C-4 に各CPUステートにおける端子状態を示します。 ■ 端子状態一覧表の用語説明 端子の状態に対する語句は以下の意味を持ちます。 付表 C-1 端子状態一覧表の用語説明 用 語 入力可 入力0固定 出力Hi-Z 出力保持 直前の状態を保持 説 明 入力機能が使用可能な状態であることを意味します。 端子からすぐの入力ゲートで,外部入力を遮断して内部へ“0”を伝えている状 態です。 端子駆動用トランジスタを駆動禁止状態にし,端子をハイインピーダンスにする ことを意味します。 本モードになる直前に出力していた状態をそのまま出力することを意味します。 つまり,出力のある内蔵周辺が動作中であれば,その内蔵周辺に従い出力を行い, ポートなどとして出力している場合には,その出力を保持します。 本モードになる直前に出力していた状態をそのまま出力,あるいは入力であれば 入力可能を意味します。 341 付録 ■ 各CPUステートにおける端子状態 付表 C-2 外バス16ビット,2CAS1WRモード時の端子状態 端子名 機能 P20∼P27 D16-23 − − D24-31 A00-15 P60∼P67 A16-23 P70 P80 A24 RDY P81 BGRNTX P82 BRQ − − P85 RDX WR0X WR1X − PA1∼PA5 スリープ時 出力保持 or Hi-Z ストップ時 HIZX=0 HIZX=1 同左 出力 Hi-Z / 入力 0固定 バス開放(BGRNT) FFH 出力 出力 Hi-Z / 入力 0固定 *3 *3 出力 Hi-Z 出力保持 (アドレス出力) 同左 P:直前状態保持 F:アドレス出力 直前状態保持 P:直前状態保持 F:RDY 入力 P:直前状態保持 F:H出力 P:直前状態保持 F:BRQ 入力 直前状態保持 同左 同左 P,F:直前 状態保持 P,F:直前 状態保持 P,F:直前 状態保持 同左 P:直前状態保持 F:H出力 P,F:直前 状態保持 H出力 *2 CS0X CS1X CS5X 直前状態保持 P:直前状態保持 F:CS出力 同左 P,F:直前 状態保持 L出力 H出力 PA6 CLK PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 AN0∼AN3 RAS0 CS0L CS0H DW0X RAS1 CS1L CS1H DW1X AN0-3 P:直前状態保持 F:CLK 出力 P:直前状態保持 F:直前の値保持 DRAM端子の設定時 動作する PE0 SC2 PE1 DREQ0 PE2 PE3 PE4 PE5 PE6 PE7 PF0 PF1 PF2 PF3 PF4 PF5 PF6 PF7 PG0∼PG7 PH0 PH1 PH2 DACK0 EOP0 DREQ1 DACK1 EOP1 DREQ2 SI0 SO0 SC0 SI1 SO1 SC1 SI2 SO2 INT0-INT7 TRG0 TRG1 TRG2 CS6X TRG3 CS7X OCPAO-OCPA3 DACK2 EOP2,ATGX PH3 PH4∼PH7 PI0 PI1 直前の 状態を 保持 P:直前状態保持 F:RDY 入力 L出力 *3 BRQ 入力 *3 H出力 P,F:直前 状態保持 P:直前の 状態保持 F:直前の 値保持 リフレッシュ時 *1 CLK 出力 CLK 出力 P:直前状態保持 F:直前の値保持 DRAM端子の設定時 動作する 出力 Hi-Z / 全端子 入力可 直前の 状態を 保持 直前の 状態を 保持 入力可 入力可 入力可 L出力 P:直前状態保持 F:CS出力 P:直前状態保持 F:CS出力 直前の 状態を 保持 P,F:直前 状態保持 P,F:直前 状態保持 直前の 状態を 保持 H出力 H出力 P:汎用ポート指定時,F:指定機能選択時 *1:セルフリフレッシュ起動時は,セルフリフレッシュ状態となり,セルフリフレッシュ解除時は,直前の値を保持します。 *2:リセット直後にHi-Zになる期間があります。 *3:P80/BRQ端子にプルダウン抵抗が付きます。 342 ハードウェア スタンバイ時 リセット時 C 各CPUステートにおける端子状態 付表 C-3 外バス16ビット,1CAS2WRモード時の端子状態 端子名 機能 P20∼P27 D16-23 − − D24-31 A00-15 P60∼P67 A16-23 − P80 A24 RDY P81 BGRNTX P82 BRQ − − P85 RDX WR0X WR1X − PA1∼PA5 スリープ時 出力保持 or Hi-Z ストップ時 HIZX=0 HIZX=1 同左 出力 Hi-Z / 入力 0固定 バス開放(BGRNT) FFH 出力 出力 Hi-Z / 入力 0固定 *3 *3 出力 Hi-Z 出力保持 (アドレス出力) 同左 P:直前状態保持 F:アドレス出力 直前状態保持 P:直前状態保持 F:RDY 入力 P:直前状態保持 F:H出力 P:直前状態保持 F:BRQ 入力 直前状態保持 同左 同左 P,F:直前 状態保持 P,F:直前 状態保持 P,F:直前 状態保持 同左 P:直前状態保持 F:H出力 P,F:直前 状態保持 H出力 *2 CS0X CS1X CS5X 直前状態保持 P:直前状態保持 F:CS出力 同左 P,F:直前 状態保持 L出力 H出力 PA6 CLK PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 AN0∼AN3 RAS0 CS0L CS0H DW0X RAS1 CS1L CS1H DW1X AN0-3 P:直前状態保持 F:CLK 出力 P:直前状態保持 F:直前の値保持 DRAM端子の設定時 動作する PE0 SC2 PE1 DREQ0 PE2 PE3 PE4 PE5 PE6 PE7 PF0 PF1 PF2 PF3 PF4 PF5 PF6 PF7 PG0∼PG7 PH0 PH1 PH2 DACK0 EOP0 DREQ1 DACK1 EOP1 DREQ2 SI0 SO0 SC0 SI1 SO1 SC1 SI2 SO2 INT0-INT7 TRG0 TRG1 TRG2 CS6X TRG3 CS7X OCPAO-OCPA3 DACK2 EOP2,ATGX PH3 PH4∼PH7 PI0 PI1 直前の 状態を 保持 P:直前状態保持 F:RDY 入力 L出力 *3 BRQ 入力 *3 H出力 P,F:直前 状態保持 P:直前の 状態保持 F:直前の 値保持 リフレッシュ時 *1 CLK 出力 CLK 出力 P:直前状態保持 F:直前の値保持 DRAM端子の設定時 動作する 出力 Hi-Z / 全端子 入力可 直前の 状態を 保持 直前の 状態を 保持 入力可 ハードウェア スタンバイ時 リセット時 入力可 入力可 L出力 P:直前状態保持 F:CS出力 P:直前状態保持 F:CS出力 直前の 状態を 保持 P,F:直前 状態保持 P,F:直前 状態保持 直前の 状態を 保持 H出力 H出力 P:汎用ポート指定時,F:指定機能選択時 *1:セルフリフレッシュ起動時は,セルフリフレッシュ状態となり,セルフリフレッシュ解除時は,直前の値を保持します。 *2:リセット直後にHi-Zになる期間があります。 *3:P80/BRQ端子にプルダウン抵抗が付きます。 343 付録 付表 C-4 外バス8ビットモード時の端子状態 端子名 機能 P20∼P27 − ポート D24-31 − A00-15 P60∼P67 A16-23 − P80 A24 RDY P81 BGRNTX P82 BRQ − − P85 − PA1∼PA5 RDX WR0X ポート CS0X CS1X CS5X PA6 CLK PB0 RAS0 PB1 CS0L PB2 CS0H PB3 PB4 PB5 PB6 DW0X RAS1 CS1L CS1H PB7 DW1X AN0∼AN3 AN0-3 PE0 SC2 PE1 DREQ0 PE2 PE3 PE4 PE5 PE6 PE7 PF0 PF1 PF2 PF3 PF4 PF5 PF6 PF7 PG0∼PG7 PH0 PH1 PH2 DACK0 EOP0 DREQ1 DACK1 EOP1 DREQ2 SI0 SO0 SC0 SI1 SO1 SC1 SI2 SO2 INT0-INT7 TRG0 TRG1 TRG2 CS6X TRG3 CS7X OCPAO-OCPA3 DACK2 EOP2,ATGX PH3 PH4∼PH7 PI0 PI1 スリープ時 ストップ時 HIZX=0 HIZX=1 直前状態保持 出力保持 or Hi-Z 出力保持 (アドレス出力) P:直前状態保持 F:アドレス出力 直前状態保持 P:直前状態保持 F:RDY 入力 P:直前状態保持 F:H出力 P:直前状態保持 F:BRQ 入力 直前状態保持 同左 P,F:直前 状態保持 P,F:直前 状態保持 P,F:直前 状態保持 同左 直前状態保持 直前状態保持 P:直前状態保持 F:CS出力 同左 同左 P,F:直前 状態保持 P:直前状態保持 F:CLK 出力 P:直前状態保持 F:直前の値保持 *2 P:直前状態保持 F:直前の値保持 P:直前状態保持 F:直前の値保持 *2 P:直前状態保持 F:直前の値保持 P:直前状態保持 F:直前の値保持 *2 直前の 状態を 保持 同左 同左 同左 出力 Hi-Z / 入力 0固定 バス開放(BGRNT) 直前の状態保持 出力 Hi-Z FFH 出力 P:直前状態保持 F:RDY 入力 L出力 *3 BRQ 入力 *3 *3 *3 H出力 直前の状態保持 L出力 H出力 P,F:直前 状態保持 同左 リフレッシュ時 *1 同左 CLK 出力 CLK 出力 P:直前状態保持 F:直前の値保持 *2 出力 Hi-Z / 全端子 入力可 直前状態保持 同左 リフレッシュ時 *1 同左 直前状態保持 同左 リフレッシュ時 *1 直前の 状態を 保持 直前の 状態を 保持 入力可 入力可 L出力 P,F:直前 状態保持 P,F:直前 状態保持 直前の 状態を 保持 H出力 H出力 P:汎用ポート指定時,F:指定機能選択時 *1:セルフリフレッシュ起動時は,セルフリフレッシュ状態となり,セルフリフレッシュ解除時は,直前の値を保持します。 *2:DRAM端子の設定時動作します。 *3:P80/BRQ端子にプルダウン抵抗が付きます。 344 出力 Hi-Z / 入力 0固定 同左 入力可 P:直前状態保持 F:CS出力 P:直前状態保持 F:CS出力 直前の 状態を 保持 ハードウェア スタンバイ時 リセット時 D リトルエンディアン領域を利用する際の注意事項 D リトルエンディアン領域を利用する際の注意事項 ここでは,リトルエンディアン領域を利用する際の注意事項を以下の項目ごとに 説明します。 D.1 Cコンパイラ(fcc911) D.2 アセンブラ(fasm911) D.3 リンカ(flnk911) D.4 デバッガ(sim911,eml911,mon911) 345 付録 D.1 Cコンパイラ(fcc911) コンパイラ(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); } また,構造体のメンバの配置はコンパイラごとに違うので,他のコンパイラで コンパイルされた構造体とは,メンバの配置が違っていることが考えられます。 346 D リトルエンディアン領域を利用する際の注意事項 このようなときには,前述の方法においても正しい結果が得られません。 構造体のメンバの配置が一致しないときは,リトルエンディアン領域に構造体 変数を配置しないでください。 ■ 文字列操作関数を使った文字型配列以外の操作 標準ライブラリとして用意されている文字列操作関数はバイト単位での処理を 行 い ま す 。 こ の た め リ ト ル エ ン デ ィ ア ン 領 域 に 配 置 さ れ た 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オプションも同様に 指定しないでください。 ■ 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 型データの転送 */ */ */ 347 付録 上記の実行結果は次のようになり,double型データの転送結果としては誤りに なります。 3f (ビッグエンディアン領域) f0 00 00 00 00 00 00 (正しい結果) → 00 (リトルエンディアン領域) 00 f0 3f 00 00 00 00 00 00 3f 00 00 00 00 f0 ■ スタックのリトルエンディアン領域への配置 リトルエンディアン領域にスタックの一部あるいは全部が配置された場合,動 作を保証しません。 348 D リトルエンディアン領域を利用する際の注意事項 D.2 アセンブラ(fasm911) アセンブラ(fasm911) FRシリーズのアセンブラ言語でプログラミングをする場合,リトルエンディアン 領域に関して注意して頂きたい項目を以下に示します。 ・セクション ・データのアクセス ■ セクション リトルエンディアン領域は,主にリトルエンディアン系CPUとデータ交換を行う ことを目的としています。そのため,リトルエンディアン領域は初期値のないデー タセクションとして定義してください。 もし,リトルエンディアン領域にコードやスタック,初期値付きデータセクショ ンなどの指定をした場合には,MB91107/MB91108でのアクセス動作は保証できなく なります。 [例] /* 正しいリトルエンディアン領域のセクション定義 */ .SECTION Little_Area, DATA, ALIGN=4 Little_Word: .RES.W 1 Little_Half:・ .RES.H 1 Little_Byte: .RES.B 1 ■ データのアクセス リトルエンディアン領域へのデータのアクセスを行う場合,そのデータの値は, エンディアンを意識せずにコーディングできます。ただし,リトルエンディアン 領域のデータへのアクセスは,必ずデータサイズと同じサイズでアクセスしてく ださい。 [例] 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 349 付録 MB91107/MB91108でデータサイズと異なるサイズでアクセスした場合には,その 値の保証はできません。例えば,連続する二つの16ビットデータを,32ビットア クセス命令を使って一度にアクセスした場合には,データの値の保証はできませ ん。 350 D リトルエンディアン領域を利用する際の注意事項 D.3 リンカ(flnk911) リンカ(flnk911) リトルエンディアン領域を使用するプログラムの作成において,リンク時のセク ション配置で注意して頂きたい項目を以下に示します。 ・セクション種別の制限 ・エラーの未検出 ■ セクション種別の制限 リトルエンディアン領域には,初期値なしデータセクションのみ配置すること ができます。 リトルエンディアン領域に初期値付きデータセクション,スタックセクション, およびコードセクションを配置した場合,リンカの内部では,ビッグエンディア ンでアドレス解決などの演算処理を行っていますので,プログラム動作は保証で きなくなります。 ■ エラーの未検出 リンカは,リトルエンディアン領域の認識をしていませんので,上記制限事項 に違反した配置が行われても,エラーメッセージを通知することはありません。 リトルエンディアン領域に配置したセクションの内容を十分にご確認のうえご使 用ください。 351 付録 D.4 デバッガ(sim911,eml911,mon911) デバッガ(sim911,eml911,mon911) シミュレータデバッガとエミュレータデバッガ/モニタデバッガでの注意事項に ついて説明します。 ■ シミュレータデバッガ リトルエンディアン領域を示すような,メモリ空間指定コマンドはありません。 したがって,メモリ操作コマンドや,メモリを操作する命令実行は,ビッグエ ンディアンとして扱われます。 ■ エミュレータデバッガ/モニタデバッガ 以下のコマンドでリトルエンディアン領域をアクセスした場合に,正常な値と して扱われませんので注意してください。 ○ set memory/show memory/enter/examine/set watchコマンド 浮動小数点(single/double)のデータを扱った場合,指定した値が設定/ 表示ともにできません。 ○ search memoryコマンド halfword,wordのデータの検索を行った場合,指定した値で検索が行われま せん。 ○ 行/逆アセンブル(ソースウィンドウの逆アセンブル表示を含む) 正常な命令コードが設定/表示ともにできません(リトルエンディアン領域 には,命令コードを配置しないようにしてください) 。 ○ call/show callコマンド スタック領域が,リトルエンディアン領域に置かれた場合,正常に動作しま せん(リトルエンディアン領域にスタック領域を配置しないようにしてくださ い) 。 352 E 命令一覧 E 命令一覧 FRシリーズの命令一覧表を示します。その前に,命令一覧を理解するために次の 事項について説明します。 ・命令一覧表の読み方 ・アドレッシングモードの記号 ・命令フォーマット ■ 命令一覧表の読み方 ニーモニック ADD Rj, Rj *ADD #s5, Rj , , ↓ ↓ 1) 2) 1) 型 A C , , ↓ 3) OP AG A4 , , ↓ 4) CYCLE 1 1 , , ↓ 5) NZVC CCCC CCCC , , ↓ 6) 2) *印は,CPU仕様にはなくアセンブラで命令を拡張または追加した拡張 命令です。 オペランドに指定可能なアドレッシングモードを記号で示されています。 - 記号の意味は,「■アドレッシングモードの記号」を参照してください。 3) 命令フォーマットが示されています。 4) 命令コードが16進数表示されています。 5) マシンサイクル数を表しています。 - a:メモリアクセスサイクルであり,Ready機能により延びる可能性が あります。 - b:メモリアクセスサイクルであり,Ready機能により延びる可能性が あります。 ただし,LD動作の対象となるレジスタを直後の命令が参照する場合に は,インタロックがかかり,実行サイクル数が+1増加します。 - c:直後の命令が,R15,SSPまたはUSPに対し,読出しあるいは書込み を行う命令であるとき,あるいは命令フォーマットAの命令であるとき, インタロックがかかり,実行サイクル数は+1増加して2となります。 - d:直後の命令がMDH/MDLを参照する場合,インタロックがかかり,実 行サイクル数は増加して2となります。 - a,b,c,dとも最小は1サイクルです。 フラグ変化を表しています。 C 0 1 7) 備 考 命令名が示されています。 - 6) 動 作 Ri + Rj → Rj Ri + s5 → Ri , , ↓ 7) フラグ変化 ・・・ 変化する ・・・ 変化しない ・・・ クリア ・・・ セット N Z V C ・・・ ・・・ ・・・ ・・・ フラグの意味 ネガティブフラグ ゼロフラグ オーバフラグ キャリフラグ 命令動作が表記されています。 353 付録 ■ アドレッシングモードの記号 付表 E-1 アドレッシングモードの記号説明 記 号 Ri Rj R13 Ps Rs CRi CRj #i8 #i20 #i32 #s5 #s10 #u4 #u5 #u8 #u10 @dir8 @dir9 @dir10 label9 label12 label20 label32 @Ri @Rj @(R13,Rj) @(R14,disp10) @(R14,disp9) @(R14,disp8) @(R15,udisp6) @Ri+ @R13+ @SP+ @-SP (reglist) 354 意 味 レジスタ直接(R0∼R15,AC,FP,SP) レジスタ直接(R0∼R15,AC,FP,SP) レジスタ直接(R13,AC) レジスタ直接(プログラムステータスレジスタ) レジスタ直接(TBR,RP,SSP,USP,MDH,MDL) レジスタ直接(CR0∼CR15) レジスタ直接(CR0∼CR15) 符号なし8ビット即値(-128∼255) (注意事項) -128∼-1は,128∼255として扱います。 符号なし20ビット即値(-0X80000∼0XFFFFF) (注意事項) -0X7FFFF∼-1は,0X7FFFF∼0XFFFFFとして扱います。 符号なし32ビット即値(-0X80000000∼0XFFFFFFFF) (注意事項) -0X80000000∼-1は,0X80000000∼0XFFFFFFFFとして 扱います。 符号付き5ビット即値(-16∼15) 符号付き10ビット即値(-512∼508 4の倍数のみ) 符号なし4ビット即値(0∼15) 符号なし5ビット即値(0∼31) 符号なし8ビット即値(0∼255) 符号なし10ビット即値(0∼1020 4の倍数のみ) 符号なし8ビット直接アドレス(0∼0XFF) 符号なし9ビット直接アドレス(0∼0X1FE 2の倍数のみ) 符号なし10ビット直接アドレス(0∼0X3FC 4の倍数のみ) 符号付き9ビット分岐アドレス(-0X100∼0XFC 2の倍数のみ) 符号付き12ビット分岐アドレス(-0X800∼0X7FC 2の倍数のみ) 符号付き20ビット分岐アドレス(-0X80000∼0X7FFFF) 符号付き32ビット分岐アドレス(-0X80000000∼0X7FFFFFFF) レジスタ間接(R0∼R15,AC,FP,SP) レジスタ間接(R0∼R15,AC,FP,SP) レジスタ相対間接(Rj: R0∼R15,AC,FP,SP) レジスタ相対間接(disp10: -0X200∼0X1FC 4の倍数のみ) レジスタ相対間接(disp9: -0X100∼0XFE 2の倍数のみ) レジスタ相対間接(disp8: -0X80∼0X7F) レジスタ相対間接(udisp6: 0∼60 4の倍数のみ) ポストインクリメント付きレジスタ間接(R0∼R15,AC,FP,SP) ポストインクリメント付きレジスタ間接(R13,AC) スタックポップ スタックプッシュ レジスタリスト E 命令一覧 ■ 命令フォーマット 付表 E-2 命令フォーマット 型 命令フォーマット A B C C’ D E F 355 付録 E.1 FRシリーズの命令一覧表 FRシリーズの命令一覧表 FRシリーズの命令一覧表を下記の命令順に記載します。 ■ FRシリーズの命令一覧表 付表 付表 付表 付表 付表 付表 付表 付表 付表 付表 付表 付表 付表 付表 付表 付表 付表 付表 付表 付表 356 E-3 E-4 E-5 E-6 E-7 E-8 E-9 E-10 E-11 E-12 E-13 E-14 E-15 E-16 E-17 E-18 E-19 E-20 E-21 E-22 加減算命令 比較演算命令 論理演算命令 ビット操作命令 乗除算命令 シフト命令 即値セット/16ビット/32ビット即値転送命令 メモリロード命令 メモリストア命令 レジスタ間転送命令 通常分岐(遅延なし)命令 遅延分岐命令 その他の命令 20ビット通常分岐マクロ命令 20ビット遅延分岐マクロ命令 32ビット通常分岐マクロ命令 32ビット遅延分岐マクロ命令 ダイレクトアドレッシング命令 リソース命令 コプロセッサ制御命令 E 命令一覧 ■ 加減算命令 付表 E-3 加減算命令 ニーモニック ADD Rj, Ri *ADD #s5, Ri 型 A C' OP A6 A4 CYCLE 1 1 NZVC 動 作 CCCC Ri + Rj → Ri CCCC Ri + s5 → Ri ADD ADD2 ADDC ADDN *ADDN #u4, #u4, Rj, Rj, #s5, Ri Ri Ri Ri Ri C C A A C' A4 A5 A7 A2 A0 1 1 1 1 1 CCCC CCCC CCCC ------- Ri Ri Ri Ri Ri + + + + + ADDN ADDN2 SUB SUBC SUBN #u4, #u4, Rj, Rj, Rj, Ri Ri Ri Ri Ri C C A A A A0 A1 AC AD AE 1 1 1 1 1 ------CCCC CCCC ---- Ri Ri Ri Ri Ri + extu(i4) → Ri + extu(i4) → Ri Rj → Ri Rj c → Ri - Rj → Ri ニーモニック CMP Rj, Ri *CMP #s5, Ri 型 A C' OP AA A8 CYCLE 1 1 CMP #u4, Ri CMP2 #u4, Ri C C A8 A9 1 1 型 A A A A A A A A A A A A OP 82 84 85 86 92 94 95 96 9A 9C 9D 9E CYCLE 1 1+2a 1+2a 1+2a 1 1+2a 1+2a 1+2a 1 1+2a 1+2a 1+2a extu(i4) → Ri extu(i4) → Ri Rj + c → Ri Rj → Ri s5 → Ri 備 考 アセンブラでは上位 1bitを符号と見る ゼロ拡張 マイナス拡張 キャリ付き加算 アセンブラでは上位 1bitを符号と見る ゼロ拡張 マイナス拡張 キャリ付き減算 ■ 比較演算命令 付表 E-4 比較演算命令 NZVC 動 CCCC Ri - Rj CCCC Ri - s5 作 備 考 CCCC Ri - extu(i4) CCCC Ri - extu(i4) アセンブラでは上位 1bitを符号と見る ゼロ拡張 マイナス拡張 NZVC CC-CC-CC-CC-CC-CC-CC-CC-CC-CC-CC-CC-- 備 考 ワード ワード ハーフワード バイト ワード ワード ハーフワード バイト ワード ワード ハーフワード バイト ■ 論理演算命令 付表 E-5 論理演算命令 AND AND ANDH ANDB OR OR ORH ORB EOR EOR EORH EORB ニーモニック Rj, Ri Rj, @Ri Rj, @Ri Rj, @Ri Rj, Ri Rj, @Ri Rj, @Ri Rj, @Ri Rj, Ri Rj, @Ri Rj, @Ri Rj, @Ri Ri &= (Ri) &= (Ri) &= (Ri) &= Ri |= (Ri)|= (Ri)|= (Ri)|= Ri ^= (Ri)^= (Ri)^= (Ri)^= 動 Rj Rj Rj Rj Rj Rj Rj Rj Rj Rj Rj Rj 作 357 付録 ■ ビット操作命令 付表 E-6 ビット操作命令 ニーモニック 型 OP CYCLE NZVC 動 作 備 考 BANDL #u4, @Ri C 80 1+2a ---- (Ri)&=(0xF0+u4) 下位4ビットを操作 BANDH #u4, @Ri C 81 1+2a ---- (Ri)&=((u4<<4)+0x0F) 上位4ビットを操作 *BAND #u8, @Ri*1 ---- (Ri)&=u8 BORL #u4, @Ri C 90 1+2a ---- (Ri)|= u4 下位4ビットを操作 BORH #u4, @Ri C 91 1+2a ---- (Ri)|= (u4<<4) 上位4ビットを操作 *BOR #u8, @Ri*2 ---- (Ri)|= u8 BEORL #u4, @Ri C 98 1+2a ---- (Ri)^= u4 下位4ビットを操作 BEORH #u4, @Ri C 99 1+2a ---- (Ri)^= (u4<<4) 上位4ビットを操作 *BEOR #u8, @Ri*3 ---- (Ri)^= u8 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 乗除算命令 MUL MULU MULH MULUH DIV0S DIV0U DIV1 DIV2 DIV3 DIV4S *DIV ニーモニック Rj,Ri Rj,Ri Rj,Ri Rj,Ri Ri Ri Ri Ri*3 Ri*1 型 A A A A E E E E E E OP AF AB BF BB 97-4 97-5 97-6 97-7 9F-6 9F-7 CYCLE 5 5 3 3 1 1 d 1 1 1 36 NZVC CCCCCCCC-CC--------C-C -C-C -------C-C Ri Ri Ri Ri * * * * 動 Rj → Rj → Rj → Rj → 作 MDH,MDL MDH,MDL MDL MDL 備 考 32bit*32bit=64bit 符号なし 16bit*16bit=32bit 符号なし ステップ演算 32bit/32bit=32bit MDL / Ri → MDL , MDL % Ri → MDH *DIVU Ri*2 33 -C-C MDL / Ri → MDL , MDL % Ri → MDH *1:DIV0S,DIV1×32,DIV2,DIV3,DIV4Sを生成します。命令コード長は,72バイトとなります。 *2:DIV0U,DIV1×32を生成します。命令コード長は,66バイトとなります。 *3:DIV2命令の後には,必ずDIV3命令を置いてください。 358 E 命令一覧 ■ シフト命令 付表 E-8 シフト命令 LSL *LSL LSL LSL2 LSR *LSR LSR LSR2 ASR *ASR ASR ASR2 ニーモニック Rj, Ri #u5, Ri (u5:0∼31) #u4, Ri #u4, Ri Rj, Ri #u5, Ri (u5:0∼31) #u4, Ri #u4, Ri Rj, Ri #u5, Ri (u5:0∼31) #u4, Ri #u4, Ri 型 A C' C C A C' C C A C' C C OP B6 B4 B4 B5 B2 B0 B0 B1 BA B8 B8 B9 CYCLE 1 1 1 1 1 1 1 1 1 1 1 1 NZVC CC-C CC-C CC-C CC-C CC-C CC-C CC-C CC-C CC-C CC-C CC-C CC-C Ri Ri Ri Ri Ri Ri Ri Ri Ri Ri Ri Ri 動 << Rj → << u5 → << u4 → <<(u4+16) >> Rj → >> u5 → >> u4 → >>(u4+16) >> Rj → >> u5 → >> u4 → >>(u4+16) 作 Ri Ri Ri → Ri Ri Ri Ri → Ri Ri Ri Ri → Ri 備 考 論理シフト 論理シフト 算術シフト ■ 即値セット/16ビット/32ビット即値転送命令 付表 E-9 即値セット/16ビット/32ビット即値転送命令 ニーモニック 型 OP CYCLE NZVC 動 作 備 考 LDI:32 #i32, Ri E 9F-8 3 ---- i32 → Ri LDI:20 #i20, Ri C 9B 2 ---- i20 → Ri 上位12bitはゼロ拡張 LDI:8 #i8, Ri B C0 1 ---- i8 → Ri 上位24bitはゼロ拡張 *LDI #{i8|i20|i32},Ri* {i8|i20|i32} → Ri *:即値が絶対値の場合は,i8,i20,i32の選択はアセンブラが自動的に行います。 即値が,相対値または外部参照シンボルを含む場合は,i32が選択されます。 ■ メモリロード命令 付表 E-10 メモリロード命令 ニーモニック 型 OP CYCLE NZVC 動 作 備 考 LD @Rj, Ri A 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 Rs:特殊レジスタ* LD @R15+, PS E 07-9 1+a+b CCCC (R15) → PS, R15+=4 LDUH @Rj, Ri A 05 b ---- (Rj) →Ri ゼロ拡張 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は,符号なしです。 359 付録 ■ メモリストア命令 付表 E-11 メモリストア命令 ニーモニック 型 OP CYCLE NZVC 動 作 備 考 ST Ri, @Rj A 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 レジスタ間転送命令 ニーモニック 型 OP CYCLE MOV Rj, Ri A 8B 1 MOV Rs, Ri A B7 1 MOV Ri, Rs A B3 1 MOV PS, Ri E 17-1 1 MOV Ri, PS E 07-1 c *:特殊レジスタ Rs:TBR,RP,USP,SSP,MDH,MDL 360 NZVC ------------CCCC Rj Rs Ri PS Ri → → → → → 動 Ri Ri Rs Ri PS 作 備 考 汎用レジスタ間転送 Rs:特殊レジスタ* Rs:特殊レジスタ* E 命令一覧 ■ 通常分岐(遅延なし)命令 付表 E-13 通常分岐(遅延なし)命令 ニーモニック @Ri label12 型 OP E 97-0 F D0 CYCLE 2 2 @Ri E E D 97-1 97-2 1F 2 2 3+3a INTE E 9F-3 3+3a RETI E 97-3 2+2a D D D E0 E1 E2 2 1 2/1 JMP CALL CALL RET INT BRA BNO BEQ #u8 label9 label9 label9 NZVC 動 作 備 考 ---- Ri → PC ---- PC+2→RP , PC+2+(label12-PC-2)→PC ---- PC+2→RP ,Ri→PC ---- RP → PC リターン ---- SSP-=4,PS→(SSP), SSP-=4,PC+2→(SSP), 0→Iフラグ,0→Sフラグ, (TBR+0x3FC-u8×4) →PC ---- SSP-=4,PS→(SSP), エミュレータ用 SSP-=4,PC+2→(SSP), 0→Sフラグ, (TBR+0x3D8) →PC CCCC (R15) →PC,R15-=4, (R15) →PS,R15-=4 ---- PC+2+(label9-PC-2) →PC ---- 非分岐 ---- if(Z==1) then PC+2+(label9-PC-2) →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 2/1 D E3 BNE label9 2/1 E4 D BC label9 2/1 E5 D BNC label9 2/1 E6 D BN label9 2/1 E7 D BP label9 2/1 E8 D BV label9 2/1 E9 D BNV label9 2/1 D EA BLT label9 2/1 EB D BGE label9 2/1 EC D BLE label9 2/1 ED D BGT label9 2/1 D EE BLS label9 EF 2/1 D BHI label9 (注意事項) ・CYCLE数の「2/1」は,分岐するとき2,分岐しないとき1であることを示します。 ・ハード仕様のrel11,rel8のフィールドには,次のようにアセンブラが計算して値を設定します。 (label12-PC-2)/2→rel11,(label9-PC-2)/2→rel8,label12,label9は符号付きです。 ・RETI命令を実行するときは,Sフラグが“0”であることが必要です。 361 付録 ■ 遅延分岐命令 付表 E-14 遅延分岐命令 JMP:D CALL:D CALL:D RET:D BRA:D BNO:D BEQ:D ニーモニック @Ri label12 @Ri label9 label9 label9 型 OP E 9F-0 F D8 E E D D D 9F-1 9F-2 F0 F1 F2 CYCLE 1 1 1 1 1 1 1 NZVC 動 作 備 ---- Ri → PC ---- PC+4→RP , PC+2+(label12-PC-2)→PC ---- PC+4→RP ,Ri→PC ---- RP → PC リターン ---- PC+2+(label9-PC-2) →PC ---- 非分岐 ---- if(Z==1) then PC+2+(label9-PC-2) →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 F3 1 BNE:D label9 D 1 D F4 BC:D label9 F5 1 D BNC:D label9 1 F6 BN:D label9 D 1 D F7 BP:D label9 F8 1 BV:D label9 D 1 D F9 BNV:D label9 1 FA D BLT:D label9 1 FB D BGE:D label9 1 FC D BLE:D label9 1 FD D BGT:D label9 1 FE D BLS:D label9 1 FF D BHI:D label9 (注意事項) ・ハード仕様のrel11,rel8のフィールドには,次のようにアセンブラが計算して値を設定します。 (label12-PC-2)/2->rel11,(label9-PC-2)/2→rel8,label12,label9は符号付きです。 ・遅延分岐は必ず次の命令(遅延スロット)を実行してから分岐します。 ・遅延スロットに置くことができる命令は,すべての1サイクル,a,b,c,dサイクル命令です。 複数サイクル命令は置けません。 362 考 E 命令一覧 ■ その他の命令 付表 E-15 その他の命令 ニーモニック 動 作 備 考 何も変化しない #u8 CCR and u8 → CCR #u8 CCR or u8 → CCR #u8 i8 → ILM ILM 即値セット *1 #s10 R15 += s10 ADD SP 命令 Ri 符号拡張 8→32bit Ri ゼロ拡張 8→32bit Ri 符号拡張 16→32bit Ri ゼロ拡張 16→32bit (reglist) (R15) →reglist, ロードマルチR0-R7 R15インクリメント LDM1 (reglist) D 8D ---- (R15) →reglist, ロードマルチR8-R15 R15インクリメント *LDM (reglist)*2 ---- (R15) →reglist, ロードマルチR0-R15 R15インクリメント STM0 (reglist) D 8E ---- R15ディクリメント, ストアマルチR0-R7 reglist→(R15) STM1 (reglist) D 8F ---- R15ディクリメント, ストアマルチR8-R15 reglist→(R15) *STM (reglist)*3 ---- R15ディクリメント, ストアマルチR0-R15 reglist→(R15) ENTER #u10*4 D 0F 1+a ---- R14 → (R15 - 4), 関数の入口処理 R15 - 4 → R14, R15 - u10 → R15 LEAVE E 9F-9 b ---- R14 + 4 → R15, 関数の出口処理 (R15 - 4) → R14 XCHB @Rj, Ri 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は符号なしです。 (注意事項) ・LDM0(reglist),LDM1(reglist)の実行サイクル数は,指定されたレジスタ数がnのとき, a*(n-1)+b+1サイクルとなります。 ・STM0(reglist),STM1(reglist)の実行サイクル数は,指定されたレジスタ数がnのとき, a*n+1サイクルとなります。 NOP ANDCCR ORCCR STILM ADDSP EXTSB EXTUB EXTSH EXTUH LDM0 型 E D D D D E E E E D OP 9F-A 83 93 87 A3 97-8 97-9 97-A 97-B 8C CYCLE 1 c c 1 1 1 1 1 1 NZVC ---CCCC CCCC ---------------------- 363 付録 ■ 20ビット通常分岐マクロ命令 付表 E-16 20ビット通常分岐マクロ命令 *CALL20 ニーモニック 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参照) *BRA20 label20,Ri *BEQ20 label20,Ri Ri:テンポラリレジスタ(参考3参照) *BNE20 label20,Ri ↑ ↑ *BC20 label20,Ri *BNC20 label20,Ri ↑ ↑ *BN20 label20,Ri ↑ *BP20 label20,Ri ↑ *BV20 label20,Ri ↑ *BNV20 label20,Ri ↑ *BLT20 label20,Ri ↑ *BGE20 label20,Ri *BLE20 label20,Ri ↑ ↑ *BGT20 label20,Ri ↑ *BLS20 label20,Ri ↑ *BHI20 label20,Ri [参考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 false xccは,ccの背反条件 LDI:20 #label20,Ri JMP @Ri False: 364 E 命令一覧 ■ 20ビット遅延分岐マクロ命令 付表 E-17 20ビット遅延分岐マクロ命令 ニーモニック *CALL20:D 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参照) *BRA20:D label20,Ri *BEQ20:D label20,Ri Ri:テンポラリレジスタ(参考3参照) *BNE20:D label20,Ri ↑ ↑ *BC20:D label20,Ri *BNC20:D label20,Ri ↑ ↑ *BN20:D label20,Ri ↑ *BP20:D label20,Ri ↑ *BV20:D label20,Ri ↑ *BNV20:D label20,Ri ↑ *BLT20:D label20,Ri ↑ *BGE20:D label20,Ri *BLE20:D label20,Ri ↑ ↑ *BGT20:D label20,Ri ↑ *BLS20:D label20,Ri ↑ *BHI20:D label20,Ri [参考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 false xccは,ccの背反条件 LDI:20 #label20,Ri JMP:D @Ri False: 365 付録 ■ 32ビット通常分岐マクロ命令 付表 E-18 32ビット通常分岐マクロ命令 *CALL32 ニーモニック 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参照) *BRA32 label32,Ri *BEQ32 label32,Ri Ri:テンポラリレジスタ(参考3参照) *BNE32 label32,Ri ↑ ↑ *BC32 label32,Ri *BNC32 label32,Ri ↑ ↑ *BN32 label32,Ri ↑ *BP32 label32,Ri ↑ *BV32 label32,Ri ↑ *BNV32 label32,Ri ↑ *BLT32 label32,Ri ↑ *BGE32 label32,Ri *BLE32 label32,Ri ↑ ↑ *BGT32 label32,Ri ↑ *BLS32 label32,Ri ↑ *BHI32 label32,Ri [参考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 false xccは,ccの背反条件 LDI:32 #label32,Ri JMP @Ri False: 366 E 命令一覧 ■ 32ビット遅延分岐マクロ命令 付表 E-19 32ビット遅延分岐マクロ命令 ニーモニック *CALL32:D label32,Ri 動 作 次の命令のアドレス+2→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参照) *BRA32:D label32,Ri *BEQ32:D label32,Ri Ri:テンポラリレジスタ(参考3参照) *BNE32:D label32,Ri ↑ ↑ *BC32:D label32,Ri *BNC32:D label32,Ri ↑ ↑ *BN32:D label32,Ri ↑ *BP32:D label32,Ri ↑ *BV32:D label32,Ri ↑ *BNV32:D label32,Ri ↑ *BLT32:D label32,Ri ↑ *BGE32:D label32,Ri *BLE32:D label32,Ri ↑ ↑ *BGT32:D label32,Ri ↑ *BLS32:D label32,Ri ↑ *BHI32:D label32,Ri [参考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 false xccは,ccの背反条件 LDI:32 #label32,Ri JMP:D @Ri False: 367 付録 ■ ダイレクトアドレッシング命令 付表 E-20 ダイレクトアドレッシング命令 ニーモニック 型 OP CYCLE NZVC 動 作 備 考 DMOV @dir10, R13 D 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 0E 2a ---- (dir8) →(R13),R13++ バイト DMOVB @R13+, @dir8* D 1E 2a ---- (R13) →(dir8),R13++ バイト *:R13+を転送元にするDMOV命令の後ろには,必ずNOPを一つ置いてください。 (注意事項) dir8,dir9,dir10フィールドには,次のようにアセンブラが計算して値を設定します。 dir8→dir,dir9/2→dir,dir10/4→dir dir8,dir9,dir10は符号なしです。 ■ リソース命令 付表 E-21 リソース命令 LDRES ニーモニック @Ri+, #u4 型 C OP BC CYCLE a STRES #u4, @Ri+ C BD a NZVC 動 作 ---- (Ri) →u4のリソース Ri+=4 ---- u4のリソース→(Ri) Ri+=4 備 考 u4:チャンネル番号 u4:チャンネル番号 ■ コプロセッサ制御命令 付表 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:= コマンド指定 ・本品種では,コプロセッサを搭載していないため使用できません。 368 索引 <数字> <アルファベット> 0 A 0検出 0検出 ................................ 329 0検出用データレジスタ(BSD0) 0検出用データレジスタ(BSD0) .......... 327 A/Dコンバータ A/Dコンバータ使用上の注意 ............ 271 A/Dコンバータの動作モード ............ 268 A/Dコンバータの特長 .................. 260 A/Dコンバータのブロックダイヤグラム .. 261 A/Dコンバータのレジスタ一覧 .......... 262 1 16/8bitデータ データ転送部,16/8bitデータ .......... 320 連続転送モードでの転送停止(いずれか一方 のアドレスは固定である場合),16/8bit データ .......................... 321 連続転送モードでの転送停止(両方のアドレ スが変化する場合),16/8bitデータ ................................ 322 16ビットタイマレジスタ(TMR) 16ビットタイマレジスタ(TMR) .......... 200 16ビットリロードタイマ 16ビットリロードタイマのブロックダイヤグ ラム ............................ 196 16ビットリロードタイマのレジスタ一覧 ................................ 197 16ビットリロードタイマを使用して起動する 場合 ............................ 223 16ビットリロードレジスタ(TMRLR) 16ビットリロードレジスタ(TMRLR) ...... 200 1検出 1検出 ................................ 329 1検出用データレジスタ(BSD1) 1検出用データレジスタ(BSD1) .......... 327 1チャネル分 PWMタイマ1チャネル分のブロックダイヤグラ ム .............................. 207 C CASビフォアRAS(CBR)リフレッシュ CASビフォアRAS(CBR)リフレッシュ ...... 179 CBRリフレッシュ CBRリフレッシュの自動ウエイトサイクル ................................ 180 CLK同期モード CLK同期モードの転送データフォーマット ................................ 286 CPUアーキテクチャ CPUアーキテクチャの特長 ............... 25 D DLYIビット DICRのDLYIビット ..................... 244 DMA DMAの転送要求要因 .................... 316 DMACコントロールステータスレジスタ(DACSR) DMACコントロールステータスレジスタ(DACSR) ................................ 298 DMAC端子コントロールレジスタ(DATCR) DMAC端子コントロールレジスタ(DATCR) .. 300 DMAC内部レジスタ DMAC内部レジスタへの転送動作 ......... 315 DMACパラメータディスクリプタポインタ(DPDP) DMAC パラ メ ー タ デ ィス ク リ プ タ ポ イ ン タ (DPDP) .......................... 297 DMAコントローラ DMAコントローラの特長 ................ 294 DMAコントローラのブロックダイヤグラム ................................ 295 DMAコントローラのレジスタ一覧 ........ 296 DMA転送動作 スリープモード中のDMA転送動作 ........ 315 DMA転送要求 リソースの割込み要求をDMA転送要求として使 用する場合 ...................... 314 369 索引 DMA転送抑止 優先度の高い割込み発生時のDMA転送抑止 ................................ 314 DMA要求抑止レジスタ(PDRR) DMA要求抑止レジスタ(PDRR) ............. 70 DMA抑止 DMA抑止の設定 ......................... 83 DMA抑止回路 DMA抑止回路のブロックダイヤグラム ..... 83 double型 double型,long double型の利用 ........ 347 DRAMインタフェース DRAMインタフェース ................... 148 高速ページモード時のDRAMインタフェースタ イミング ........................ 171 DRAM信号制御レジスタ(DSCR) DRAM信号制御レジスタ(DSCR) ........... 129 DRAM制御端子 DRAM制御端子 ......................... 145 DRAM制御レジスタ4/5(DMCR4/5) DRAM制御レジスタ4/5(DMCR4/5) ......... 121 DRAMデバイス DRAMデバイスの接続例 ................. 147 DRAMリフレッシュ DRAMリフレッシュ ..................... 150 DREQ信号 DREQ信号のセンスモード ............... 307 外部端子の機能(I/Oポートまたは制御端子)選 択.............................. 191 I/Oマップ I/Oマップ............................ 333 I/Oマップの読み方 .................... 332 INTE命令 INTE命令の動作 ........................ 63 INT命令 INT命令の動作 ......................... 63 Iフラグ Iフラグ............................... 53 K -K libオプション 文字列操作関数使用時の-K libオプションの 指定 ............................ 347 L long double型 double型,long double型の利用 ........ 347 N NMI E EIT EITからの復帰 ......................... 51 EITの注意事項 ......................... 51 EITの特長 ............................. 51 EITベクタテーブル EITベクタテーブル ..................... 58 EIT要因 EIT要因 ............................... 51 EIT要因受理 EIT要因受理の優先順位 ................. 60 H Hyper DRAMインタフェース Hyper DRAMインタフェースタイミング ... 178 Hyper DRAMインタフェースのライトサイクル タイミング ...................... 177 Hyper DRAMインタフェースのリードサイクル タイミング ...................... 176 I I/Oポート I/Oポートの基本ブロックダイヤグラム .. 188 I/Oポートのレジスタ .................. 188 370 NMI(Non Maskable Interrupt) .......... 253 NMIの動作............................ 239 ユーザ割込み/NMIの動作 ............... 62 NMI制御部 外部割込み/NMI制御部のブロックダイヤグラ ム.............................. 232 外部割込み/NMI制御部のレジスタ一覧 .. 233 P PLL PLLのクロック設定例 ................... 87 PLL制御レジスタ(PCTR) PLL制御レジスタ(PCTR) ................. 76 PWM周期設定レジスタ(PCSR) PWM周期設定レジスタ(PCSR) ............ 212 PWM出力 PWM出力オール ........................ 221 PWMタイマ PWMタイマの全体ブロックダイヤグラム .. 207 PWMタイマの特長 ...................... 206 PWMタイマのレジスタ一覧 .............. 208 ソフトウェアによるPWMタイマ複数チャネルの 起動 ............................ 222 PWMタイマレジスタ(PTMR) PWMタイマレジスタ(PTMR) .............. 214 PWMデューティ設定レジスタ(PDUT) PWMデューティ設定レジスタ(PDUT) ...... 213 索引 PWM動作 PWM動作 .............................. 219 R RETI命令 RETI命令の動作 ........................ 64 S Single DRAMインタフェース Single DRAMインタフェースタイミング .. 175 Single DRAMインタフェースのライトサイクル タイミング ...................... 174 Single DRAMインタフェースのリードサイクル タイミング ...................... 173 STOPモード STOPモード使用時の注意 ................ 21 U <五十音> あ アクセス データのアクセス ..................... 349 アクセスモード 動作モード ............................ 99 アセンブラ アセンブラのソース例 .................. 88 アドレッシングモード アドレッシングモードの記号 ........... 354 アンダフロー アンダフロー動作 ..................... 201 い インタフェース インタフェース ....................... 107 う UART UARTの応用例 ......................... 290 UARTのクロック選択 ................... 284 UARTの使用上の注意 ................... 290 UARTの動作モード ..................... 284 UARTの特長 ........................... 274 UARTのブロックダイヤグラム ........... 275 UARTのレジスタ一覧 ................... 276 U-TIMER U-TIMERのブロックダイヤグラム ........ 226 U-TIMERのレジスタ一覧 ................ 226 ボーレートとU-TIMERのリロード値の設定例 ................................ 292 Uタイマ制御レジスタ Uタイマ制御レジスタ:UTIMC(U-TIMER Control register) ....................... 227 Uタイマ値レジスタ Uタイマ値レジスタ:UTIM(U-TIMER) ..... 227 ウエイトサイクル ウエイトサイクル ..................... 148 ウォッチドッグ周期制御レジスタ(WTCR) リセット要因レジスタ(RSRR)とウォッチドッ グ周期制御レジスタ(WTCR) ......... 68 ウォッチドッグ制御部 ウォッチドッグ制御部のブロックダイヤグラ ム............................... 77 ウォッチドッグタイマ ウォッチドッグタイマの起動 ............ 77 ウォッチドッグリセット発生延期レジスタ(WPR) ウォッチドッグリセット発生延期レジスタ (WPR) ............................ 75 え エッジモード DREQセンスモードによる違い(エッジモード時 の注意事項) ..................... 311 エミュレータデバッガ エミュレータデバッガ/モニタデバッガ ................................ 352 エラー エラーの未検出 ....................... 351 エリア選択レジスタ(ASR) エリア選択レジスタ(ASR)とエリアマスクレジ スタ(AMR) ....................... 111 エリアマスクレジスタ(AMR) エリア選択レジスタ(ASR)とエリアマスクレジ スタ(AMR) ....................... 111 エリアモードレジスタ0(AMD0) エリアモードレジスタ0(AMD0) ......... 114 371 索引 エリアモードレジスタ1(AMD1) エリアモードレジスタ1(AMD1) ......... 116 エリアモードレジスタ32(AMD32) エリアモードレジスタ32(AMD32) ........ 117 エリアモードレジスタ4(AMD4) エリアモードレジスタ4(AMD4) ......... 118 エリアモードレジスタ5(AMD5) エリアモードレジスタ5(AMD5) ......... 119 エントリ更新 キャッシュのエントリ更新 .............. 33 か 外形寸法図 外形寸法図(LQFP-120) ................... 6 外形寸法図(PGA-135) .................... 7 外部ウエイトサイクル 外部ウエイトサイクルタイミング ....... 161 外部端子 外部端子の機能(I/Oポートまたは制御端子)選 択 .............................. 191 外部端子制御レジスタ0(EPCR0) 外部端子制御レジスタ0(EPCR0) ........ 126 外部端子制御レジスタ1(EPCR1) 外部端子制御レジスタ1(EPCR1) ........ 128 外部デバイス 外部デバイスとの接続例 .......... 137, 140 外部バスアクセス 外部バスアクセス ..................... 135 外部バス動作 外部バス動作のプログラム仕様例 ....... 183 外部バス動作のプログラム例 ........... 183 外部バスリクエスト 外部バスリクエスト ................... 150 外部リセット 外部リセット入力使用時の注意 .......... 20 外部割込み 外部割込み/NMI制御部のブロックダイヤグラ ム .............................. 232 外部割込み/NMI制御部のレジスタ一覧 .. 233 外部割込みの動作 ..................... 237 外部割込みの動作手順 ................. 237 外部割込み要求レベル ................. 238 外部割込み要因レジスタ(EIRR) 外部割込み要因レジスタ(EIRR) ......... 235 外部割込み要求レベル設定レジスタ(ELVR) 外部割込み要求レベル設定レジスタ(ELVR) ................................ 236 回路 回路の取扱い .......................... 19 カウンタ カウンタの動作状態 ................... 203 372 き ギア機能 ギア機能の設定 ........................ 79 ギア制御部 ギア制御部のブロックダイヤグラム ...... 79 ギア制御レジスタ(GCR) ギア制御レジスタ(GCR) ................. 72 基本ライトサイクル 基本ライトサイクルタイミング ......... 153 基本リードサイクル 基本リードサイクルタイミング ......... 151 キャッシュ 各動作モード時のキャッシュの状態 ...... 33 キャッシュのエントリ更新 .............. 33 キャッシュ可能領域 命令キャッシュのキャッシュ可能領域 .... 28 く クロック系 クロック系参考図 ...................... 88 クロック設定 PLLのクロック設定例 ................... 87 クロック選択 UARTのクロック選択 ................... 284 クロック選択方法 ..................... 182 クロックダブラ機能 クロックダブラ機能のon/offに伴う注意事項 ................................. 86 クロックダブラ機能のon/offによる動作周波 数の組み合わせ ................... 86 クロックダブラ機能の起動 .............. 85 クロックダブラ機能の停止 .............. 85 クロック発生部 クロック発生部のブロックダイヤグラム .. 67 クロック発生部のレジスタ一覧 .......... 66 け 検出結果レジスタ(BSRR) 検出結果レジスタ(BSRR) ............... 328 こ 構造体代入 構造体代入 ........................... 346 高速ページモード 高速ページモード時のDRAMインタフェースタ イミング ........................ 171 コラムアドレス ローアドレスとコラムアドレス ......... 145 コンディションコードレジスタ プログラムステータスレジスタ(PS) ...... 38 索引 コントロールステータスレジスタ(ADCS) コントロールステータスレジスタ(ADCS) . 263 コントロールステータスレジスタ(PCNH,PCNL) コントロールステータスレジスタ(PCNH,PCNL) ................................ 209 コントロールステータスレジスタ(TMCSR) コントロールステータスレジスタ(TMCSR) ................................ 198 シリアルコントロールレジスタ(SCR) シリアルコントロールレジスタ(SCR) .... 279 シリアルステータスレジスタ(SSR) シリアルステータスレジスタ(SSR) ...... 282 シリアルモードレジスタ(SMR) シリアルモードレジスタ(SMR) .......... 277 シングル/ブロック シングル/ブロック転送モード ......... 305 さ す 算術演算 命令概要 .............................. 46 スタック スタックのリトルエンディアン領域への配置 ................................ 348 スタンバイ制御レジスタ(STCR) スタンバイ制御レジスタ(STCR) .......... 92 スタンバイモード スタンバイモード(ストップ/スリープ)から の復帰 .......................... 254 ステップ転送 ステップ転送 ......................... 308 ステップトレーストラップ ステップトレーストラップの動作 ........ 63 ストップ ストップからの復帰 ................... 237 ストップ状態 ストップ状態からの復帰 ................ 94 ストップ状態の概要 .................... 90 ストップ状態への移行 .................. 93 ストップ制御部 ストップ制御部のブロックダイヤグラム .. 93 スリープ状態 スリープ状態からの復帰 ................ 97 スリープ状態の概要 .................... 90 スリープ状態への移行 .................. 96 スリープ制御部 スリープ制御部のブロックダイヤグラム .. 96 し ジェネラルコントロールレジスタ1(GCN1) ジェネラルコントロールレジスタ1(GCN1) ................................ 215 ジェネラルコントロールレジスタ2(GCN2) ジェネラルコントロールレジスタ2(GCN2) ................................ 218 システムコンディションコードレジスタ プログラムステータスレジスタ(PS) ...... 40 システムスタックポインタ システムスタックポインタ(SSP) ......... 55 専用レジスタ .......................... 37 自動ウエイトサイクル CBRリフレッシュの自動ウエイトサイクル ................................ 180 自動ウエイトサイクルタイミング ....... 160 通常DRAMインタフェースでの自動ウエイトサ イクルタイミング ................ 170 シミュレータデバッガ シミュレータデバッガ ................. 352 周辺系クロック 周辺系クロックを使用するブロック一覧 .. 80 終了動作 転送の終了動作(いずれか一方のアドレスは 固定である場合) ................ 323 転送の終了動作(両方のアドレスが変化する 場合) .......................... 324 乗除算結果レジスタ 専用レジスタ .......................... 37 状態遷移 低消費電力モードの状態遷移 ............ 98 初期値付き変数 初期値付き変数の配置 ................. 346 シリアルアウトプットデータレジスタ(SODR) シリアルインプットデータレジスタ(SIDR)/シ リアルアウトプットデータレジスタ (SODR) .......................... 281 シリアルインプットデータレジスタ(SIDR) シリアルインプットデータレジスタ(SIDR)/シ リアルアウトプットデータレジスタ (SODR) .......................... 281 せ 制御信号 データバス幅と制御信号との関係 ....... 132 制御端子 外部端子の機能(I/Oポートまたは制御端子)選 択.............................. 191 制御レジスタ 制御レジスタ ......................... 256 セクション セクション ........................... 349 セクション種別 セクション種別の制限 ................. 351 セットタイミング モード0,モード1,モード2の送信動作時割込 みフラグのセットタイミング ...... 289 モード0の受信動作時割込みフラグのセットタ イミング ........................ 288 373 索引 モード1の受信動作時割込みフラグのセットタ イミング ........................ 288 モード2の受信動作時割込みフラグのセットタ イミング ........................ 289 セルフリフレッシュ セルフリフレッシュ ................... 180 センス リクエストのセンスと各転送モードの組み合 わせ ............................ 307 センスモード DREQ信号のセンスモード ............... 307 DREQセンスモードによる違い(エッジモード時 の注意事項) ..................... 311 DREQセンスモードによる違い(レベルモード時 の注意事項) ..................... 312 専用レジスタ 専用レジスタ .......................... 36 た タイミング Hyper DRAMインタフェースタイミング ... 178 Hyper DRAMインタフェースのライトサイクル タイミング ...................... 177 Hyper DRAMインタフェースのリードサイクル タイミング ...................... 176 Single DRAMインタフェースタイミング .. 175 Single DRAMインタフェースのライトサイクル タイミング ...................... 174 Single DRAMインタフェースのリードサイクル タイミング ...................... 173 外部ウエイトサイクルタイミング ....... 161 各モードでのライトサイクルタイミング ................................ 157 各モードでのリードサイクルタイミング ................................ 155 基本ライトサイクルタイミング ......... 153 基本リードサイクルタイミング ......... 151 高速ページモード時のDRAMインタフェースタ イミング ........................ 171 自動ウエイトサイクルタイミング ....... 160 通常DRAMインタフェースでの自動ウエイトサ イクルタイミング ................ 170 通常DRAMインタフェースのライトサイクルタ イミング ........................ 164 通常DRAMインタフェースのリードサイクルタ イミング ........................ 162 通常DRAMライトサイクルタイミング ..... 168 通常DRAMリードサイクルタイミング ..... 166 リード/ライト混在サイクルタイミング ................................ 159 タイミング図 タイミング図で使用している記号の説明 ................................ 317 タイムベースタイマ タイムベースタイマ .................... 78 374 タイムベースタイマクリアレジスタ(CTBR) タイムベースタイマクリアレジスタ(CTBR) ................................. 71 ダイレクトアドレッシング 命令概要.............................. 47 端子 端子状態.............................. 22 端子処理.............................. 18 端子機能 端子機能説明 ........................... 9 端子状態 端子状態一覧表の用語説明 ............. 341 端子配列図 端子配列図(LQFP-120) ................... 8 単発モード A/Dコンバータの動作モード ............ 268 ち 遅延スロット付き 遅延スロット付き分岐命令 .............. 48 遅延スロットなし 遅延スロットなし分岐命令 .............. 50 遅延割込み制御レジスタ(DICR) 遅延割込み制御レジスタ(DICR) ......... 243 遅延割込みモジュール 遅延割込みモジュールのブロックダイヤグラ ム.............................. 242 遅延割込みモジュールのレジスタ一覧 ... 242 チップセレクト信号レジスタ6/7 チップセレクト信号レジスタ6/7(CS67) .. 120 チップセレクト領域 チップセレクト領域 ................... 106 つ 通常DRAMインタフェース 通常DRAMインタフェースでの自動ウエイトサ イクルタイミング ................ 170 通常DRAMインタフェースのライトサイクルタ イミング ........................ 164 通常DRAMインタフェースのリードサイクルタ イミング ........................ 162 通常DRAMライトサイクル 通常DRAMライトサイクルタイミング ..... 168 通常DRAMリードサイクル 通常DRAMリードサイクルタイミング ..... 166 通常バスアクセス 通常バスアクセス ..................... 148 て 停止モード A/Dコンバータの動作モード ............ 268 低消費電力モード 低消費電力モードの状態遷移 ............ 98 索引 低消費電力モードの動作一覧 ............ 91 ディスクリプタアクセス部 ディスクリプタアクセス部 ............. 318 ディスクリプタ先頭ワード ディスクリプタ先頭ワード ............. 302 ディスクリプタ第2ワード ディスクリプタ第2ワード .............. 304 ディスクリプタ第3ワード ディスクリプタ第3ワード .............. 304 データアクセス データアクセス ........................ 43 データ転送部 データ転送部,16/8bitデータ .......... 320 データバス幅 データバス幅 .................... 134, 139 データバス幅と制御信号との関係 ....... 132 データフォーマット データフォーマット .............. 133, 138 データ方向レジスタ(DDR) データ方向レジスタ(DDR) .............. 190 データレジスタ(ADCR) データレジスタ(ADCR) ................. 267 テーブルベースレジスタ 専用レジスタ .......................... 36 テーブルベースレジスタ(TBR) ........... 57 転送受付け信号 転送受付け信号出力 ................... 313 転送終了信号 転送終了信号出力 ..................... 313 転送停止 連続転送モードでの転送停止(いずれか一方 のアドレスは固定である場合),16/8bit データ .......................... 321 連続転送モードでの転送停止(両方のアドレ スが変化する場合),16/8bitデータ ................................ 322 転送データフォーマット CLK同期モードの転送データフォーマット ................................ 286 非同期(調歩同期)モードの転送データフォー マット .......................... 285 転送モード シングル/ブロック転送モード ......... 305 バースト転送モード ................... 306 連続転送モード ....................... 305 転送要求要因 DMAの転送要求要因 .................... 316 と 動作周波数 クロックダブラ機能のon/offによる動作周波 数の組み合わせ ................... 86 動作モード A/Dコンバータの動作モード ............ 268 UARTの動作モード ..................... 284 各動作モード時のキャッシュの状態 ...... 33 動作モード ............................ 99 特長 MB91107の特長 .......................... 2 MB91108の特長 .......................... 2 な 内蔵RAM 内蔵RAMの使用方法 .................... 102 内部アーキテクチャ 内部アーキテクチャの構造 .............. 25 内部クロック 内部クロック動作 ..................... 201 に 入出力回路 入出力回路形式 ........................ 14 の ノンマスカブル割込み NMI(Non Maskable Interrupt:ノンマスカブ ル割込み)の動作 ................. 239 は バースト バースト転送モード ................... 306 バースト転送 バースト転送 ......................... 310 ハードウェアスタンバイ ハードウェアスタンバイ ................ 22 ハードウェア設計 ハードウェア設計条件 ................. 103 ハーフワードアクセス ハーフワードアクセス ................. 142 バイトアクセス バイトアクセス ....................... 143 バイトオーダリング バイトオーダリング .................... 42 バスアクセス ビッグエンディアンのバスアクセス ..... 133 リトルエンディアンのバスアクセス ..... 138 バスインタフェース バスインタフェースの特長 ............. 106 バスインタフェースのブロックダイヤグラム ................................ 109 バスインタフェースのレジスタ一覧 ..... 110 バス権解放 バス権解放 ........................... 181 バス権獲得 バス権獲得 ........................... 181 バスモード 動作モード ............................ 99 375 索引 パワーオンリセット パワーオンリセット .................... 22 汎用レジスタ 汎用レジスタ .......................... 41 MB91108の全体ブロックダイヤグラム ...... 5 PWMタイマ1チャネル分のブロックダイヤグラ ム.............................. 207 PWMタイマの全体ブロックダイヤグラム .. 207 UARTのブロックダイヤグラム ........... 275 U-TIMERのブロックダイヤグラム ........ 226 ウォッチドッグ制御部のブロックダイヤグラ ム............................... 77 外部割込み/NMI制御部のブロックダイヤグラ ム.............................. 232 ギア制御部のブロックダイヤグラム ...... 79 クロック発生部のブロックダイヤグラム .. 67 ストップ制御部のブロックダイヤグラム .. 93 スリープ制御部のブロックダイヤグラム .. 96 遅延割込みモジュールのブロックダイヤグラ ム.............................. 242 バスインタフェースのブロックダイヤグラム ................................ 109 ビットサーチモジュールのブロックダイヤグ ラム ............................ 326 リセット要因保持回路のブロックダイヤグラ ム............................... 81 割込みコントローラのブロックダイヤグラム ................................ 247 ひ ビッグエンディアン ビッグエンディアンのバスアクセス ..... 133 リトルエンディアンとビッグエンディアンの 相違点 .......................... 138 ビットオーダリング ビットオーダリング .................... 42 ビットサーチモジュール ビットサーチモジュールのブロックダイヤグ ラム ............................ 326 ビットサーチモジュールのレジスタ一覧 ................................ 326 ビット操作 命令概要 .............................. 46 非同期モード 非同期(調歩同期)モードの転送データフォー マット .......................... 285 分岐 ふ 複数チャネル ソフトウェアによるPWMタイマ複数チャネルの 起動 ............................ 222 フラグ モード0,モード1,モード2の送信動作時割込 みフラグのセットタイミング ...... 289 モード0の受信動作時割込みフラグのセットタ イミング ........................ 288 モード1の受信動作時割込みフラグのセットタ イミング ........................ 288 モード2の受信動作時割込みフラグのセットタ イミング ........................ 289 割込み発生とフラグ ................... 288 プログラムアクセス プログラムアクセス .................... 43 プログラムカウンタ 専用レジスタ .......................... 36 プログラムステータス 専用レジスタ .......................... 36 プログラムステータスレジスタ プログラムステータスレジスタ(PS) ...... 38 ブロックダイヤグラム 16ビットリロードタイマのブロックダイヤグ ラム ............................ 196 A/Dコンバータのブロックダイヤグラム .. 261 DMAコントローラのブロックダイヤグラム ................................ 295 DMA抑止回路のブロックダイヤグラム ..... 83 I/Oポートの基本ブロックダイヤグラム .. 188 MB91107の全体ブロックダイヤグラム ...... 5 376 命令概要.............................. 46 分岐命令 遅延スロット付き分岐命令 .............. 48 遅延スロットなし分岐命令 .............. 50 へ 変化点検出 変化点検出 ........................... 330 変化点検出用データレジスタ(BSDC) 変化点検出用データレジスタ(BSDC) ..... 328 変換データ保護 変換データ保護機能 ................... 270 ほ ポートデータレジスタ(PDR) ポートデータレジスタ(PDR) ............ 189 ホールドリクエスト取下げ要求 ホールドリクエスト取下げ要求シーケンス ................................ 256 ホールドリクエスト取下げ要求の設定可能な レベル .......................... 255 ホールドリクエスト取下げ要求の発生基準 ................................ 255 ホールドリクエスト取下げ要求レベル設定レジスタ (HRCL) ホールドリクエスト取下げ要求レベル設定レ ジスタ(HRCL) .................... 251 索引 ボーレート ボーレートとU-TIMERのリロード値の設定例 ................................ 292 ボーレートの計算 ..................... 229 ま マッピング 割込み制御レジスタ(ICR)マッピング ..... 54 み 未定義命令例外 未定義命令例外の動作 .................. 64 め 命令一覧 FRシリーズの命令一覧表 ............... 356 命令一覧表の読み方 ................... 353 命令キャッシュ 命令キャッシュ使用時の設定方法 ........ 34 命令キャッシュのキャッシュ可能領域 .... 28 命令キャッシュの構成 .................. 28 命令キャッシュ制御レジスタ(ICHCR) 命令キャッシュ制御レジスタ(ICHCR) ..... 31 命令キャッシュタグ 命令キャッシュタグの構成 .............. 29 命令フォーマット 命令フォーマット ..................... 355 メモリマップ FRシリーズ共通のメモリマップ .......... 45 MB91107/MB91108のメモリマップ ......... 44 メモリマップ .......................... 24 も モード0 モード0の受信動作時割込みフラグのセットタ イミング ........................ 288 モード0,モード1,モード2 モード0,モード1,モード2の送信動作時割込 みフラグのセットタイミング ...... 289 モード1 モード1の受信動作時割込みフラグのセットタ イミング ........................ 288 モード2 モード2の受信動作時割込みフラグのセットタ イミング ........................ 289 モード端子 モード端子 ............................ 99 モードデータ モードデータ .......................... 99 モードレジスタ モードレジスタ(MODR) ................. 100 モードレジスタ(MODR)書込み時の注意点 ................................ 101 文字列操作関数 文字列操作関数使用時の-K libオプションの 指定 ............................ 347 文字列操作関数を使った文字型配列以外の操 作.............................. 347 モニタデバッガ エミュレータデバッガ/モニタデバッガ ................................ 352 ゆ ユーザスタックポインタ 専用レジスタ .......................... 37 ユーザプログラム ユーザプログラム初期化ステップ ....... 104 ユーザ割込み ユーザ割込み/NMIの動作 ............... 62 優先順位 チャネル間優先順位 ................... 314 優先順位判定 優先順位判定 ......................... 252 よ 要求レベル 外部割込み要求レベル ................. 238 ら ライトサイクル 各モードでのライトサイクルタイミング ................................ 157 ラッチアップ ラッチアップ防止 ...................... 18 り リードサイクル 各モードでのリードサイクルタイミング ................................ 155 リード/ライト混在サイクル リード/ライト混在サイクルタイミング ................................ 159 リクエスト リクエストのセンスと各転送モードの組み合 わせ ............................ 307 リセット リセットによる初期化 .................. 65 リセット解除 リセット解除直後 ..................... 103 リセットシーケンス リセットシーケンス .................... 65 377 索引 リセット発生延期 リセット発生延期 ...................... 77 リセット要因 リセット要因 .......................... 65 リセット要因保持 リセット要因保持の設定 ................ 81 リセット要因保持回路 リセット要因保持回路のブロックダイヤグラ ム ............................... 81 リセット要因レジスタ(RSRR) リセット要因レジスタ(RSRR)とウォッチドッ グ周期制御レジスタ(WTCR) ......... 68 リターンポインタ 専用レジスタ .......................... 37 リトルエンディアン リトルエンディアンとビッグエンディアンの 相違点 .......................... 138 リトルエンディアン領域 スタックのリトルエンディアン領域への配置 ................................ 348 リトルエンディアンレジスタ(LER) リトルエンディアンレジスタ(LER) ...... 130 リフレッシュ制御レジスタ(RFCR) リフレッシュ制御レジスタ(RFCR) ....... 124 リロード値 ボーレートとU-TIMERのリロード値の設定例 ................................ 292 リロードレジスタ リロードレジスタ:UTIMR(reload register) ................................ 227 れ レギュレータ 内蔵DC-DCレギュレータ使用上の注意 ..... 20 レジスタ 0検出用データレジスタ(BSD0) .......... 327 16ビットタイマレジスタ(TMR) .......... 200 16ビットリロードレジスタ(TMRLR) ...... 200 1検出用データレジスタ(BSD1) .......... 327 DMACコントロールステータスレジスタ(DACSR) ................................ 298 DMAC端子コントロールレジスタ(DATCR) .. 300 DMA要求抑止レジスタ(PDRR) ............. 70 DRAM信号制御レジスタ(DSCR) ........... 129 DRAM制御レジスタ4/5(DMCR4/5) ......... 121 I/Oポートのレジスタ .................. 188 PLL制御レジスタ(PCTR) ................. 76 PWM周期設定レジスタ(PCSR) ............ 212 PWMタイマレジスタ(PTMR) .............. 214 PWMデューティ設定レジスタ(PDUT) ...... 213 Uタイマ制御レジスタ:UTIMC(U-TIMER Control register) ....................... 227 Uタイマ値レジスタ:UTIM(U-TIMER) ..... 227 ウォッチドッグリセット発生延期レジスタ (WPR) ............................ 75 378 エリア選択レジスタ(ASR)とエリアマスクレジ スタ(AMR) ....................... 111 エリアモードレジスタ0(AMD0) ......... 114 エリアモードレジスタ1(AMD1) ......... 116 エリアモードレジスタ32(AMD32) ........ 117 エリアモードレジスタ4(AMD4) ......... 118 エリアモードレジスタ5(AMD5) ......... 119 外部端子制御レジスタ0(EPCR0) ........ 126 外部端子制御レジスタ1(EPCR1) ........ 128 外部割込み要因レジスタ(EIRR) ......... 235 外部割込み要求レベル設定レジスタ(ELVR) ................................ 236 ギア制御レジスタ(GCR) ................. 72 検出結果レジスタ(BSRR) ............... 328 コントロールステータスレジスタ(ADCS) . 263 コントロールステータスレジスタ(PCNH,PCNL) ................................ 209 コントロールステータスレジスタ(TMCSR) ................................ 198 ジェネラルコントロールレジスタ1(GCN1) ................................ 215 ジェネラルコントロールレジスタ2(GCN2) ................................ 218 シリアルインプットデータレジスタ(SIDR)/シ リアルアウトプットデータレジスタ (SODR) .......................... 281 シリアルコントロールレジスタ(SCR) .... 279 シリアルステータスレジスタ(SSR) ...... 282 シリアルモードレジスタ(SMR) .......... 277 スタンバイ制御レジスタ(STCR) .......... 92 タイムベースタイマクリアレジスタ(CTBR) ................................. 71 遅延割込み制御レジスタ(DICR) ......... 243 チップセレクト信号レジスタ6/7(CS67) .. 120 データ方向レジスタ(DDR) .............. 190 データレジスタ(ADCR) ................. 267 変化点検出用データレジスタ(BSDC) ..... 328 ポートデータレジスタ(PDR) ............ 189 ホールドリクエスト取下げ要求レベル設定レ ジスタ(HRCL) .................... 251 命令キャッシュ制御レジスタ(ICHCR) ..... 31 リセット要因レジスタ(RSRR)とウォッチドッ グ周期制御レジスタ(WTCR) ......... 68 リトルエンディアンレジスタ(LER) ...... 130 リフレッシュ制御レジスタ(RFCR) ....... 124 リロードレジスタ:UTIMR(reload register) ................................ 227 割込み許可レジスタ(ENIR) ............. 234 割込み制御レジスタ(ICR) .............. 250 レベルマスク 割込み/NMIに対するレベルマスク ....... 53 レベルモード DREQセンスモードによる違い(レベルモード時 の注意事項) ..................... 312 連続 連続転送モード ....................... 305 索引 連続転送 連続転送 ............................. 309 連続転送モード 連続転送モードでの転送停止(いずれか一方 のアドレスは固定である場合),16/8bit データ .......................... 321 連続転送モードでの転送停止(両方のアドレ スが変化する場合),16/8bitデータ ................................ 322 連続モード A/Dコンバータの動作モード ............ 268 ろ ローアドレス ローアドレスとコラムアドレス ......... 145 ロードとストア 命令概要 .............................. 46 論理演算 命令概要 .............................. 46 わ ワードアクセス ワードアクセス ....................... 141 割込み許可レジスタ(ENIR) 割込み許可レジスタ(ENIR) ............. 234 割込みコントローラ 割込みコントローラの主要機能 ......... 246 割込みコントローラのハードウェア構成 ................................ 246 割込みコントローラのブロックダイヤグラム ................................ 247 割込みコントローラのレジスタ一覧 ..... 248 割込みスタック 割込みスタック ........................ 56 割込み制御レジスタ 割込み制御レジスタ(ICR) ............... 54 割込み制御レジスタ(ICR) 割込み制御レジスタ(ICR) .............. 250 割込み発生 割込み発生とフラグ ................... 288 割込み番号 割込み番号 ........................... 244 割込みベクタ 割込みベクタ ......................... 339 割込み要因 PWMタイマの割込み要因とタイミングチャート ................................ 221 割込み要因の解除 ..................... 253 割込みレベル 割込みレベル .......................... 52 割込みレベルマスクレジスタ プログラムステータスレジスタ(PS) ...... 40 割込みレベルマスクレジスタ(ILM) ....... 53 ワンショット動作 ワンショット動作 ..................... 220 379 索引 380 CM71-10108-2 富士通半導体デバイス・CONTROLLER MANUAL 富士通半導体デバイス FR30 32ビット・マイクロコントローラ MB91107/MB91108 ハードウェアマニュアル 2001年2月 第2版発行 発 行 富士通株式会社 編 集 技術標準部 電子デバイス事業本部 ドキュメント技術部