本ドキュメントはCypress (サイプレス) 製品に関する情報が記載されております。 富士通半導体デバイス CONTROLLER MANUAL CM71-10129-2 FR60 32 ビット・マイクロコントローラ MB91305 ハードウェアマニュアル FR60 32 ビット・マイクロコントローラ MB91305 ハードウェアマニュアル 開発における最新の注意事項に関しては必ず『Check Sheet』を参照してください。 『Check Sheet』は下記サポートページに掲載されています。 URL:http://jp.fujitsu.com/microelectronics/products/micom/support/index.html 『Check Sheet』はシステム開発において , 問題を未然に防ぐ事を目的として , 最低限必要と思われますチェック項目をリ ストにしたものです。 富士通株式会社 はじめに ■ 本書の目的と対象読者 富士通半導体製品につきまして , 平素より格別のご愛顧を賜り厚くお礼申し上げます。 FR ファミリは , 32 ビット高性能 RISC CPU を使用し , 高性能 / 高速な CPU 処理が要求 される組込み制御用に各種 I/O リソースを内蔵したマイクロコントローラです。 DVD プレーヤ , プリンタ , TV, PDP 制御用等 , 高性能な CPU 処理パワーを要求される 組込み用途に最適な仕様となっています。 本品種は , FR30/40 CPU をベースにバスアクセスの強化を行い , より高速での使用に対 応した FR60 です。 本書は , 実際に MB91305 を使用して製品を開発される技術者を対象に , MB91305 の機 能や動作について解説したものです。本書をご一読ください。 ■ 商標 FR は , FUJITSU RISC controller の略で , 富士通株式会社の製品です。 REALOS(REALtime Operating System) は , 富士通株式会社の登録商標です。 FCRAM は , 富士通株式会社の登録商標です。 そのほか , 本書で登場するシステム名 , 製品名はそれぞれの会社もしくは組織の商標で す。 ■ ライセンス 本製品には , お客様が Philips 社の定めた I2C 標準仕様書に従う I2C システムの中で使 用されることを条件に , Philips 社 I2C 特許がライセンスされております。 Purchase of Fujitsu I2C components conveys a license under the Philips I2C Patent Rights to use, these components in an I2C system provided that the system conforms to the I2C Standard Specification as defined by Philips. i ■ 本書の全体構成 本書は , 以下に示す 19 の章 , および付録から構成されています。 第1章 概要 この章では , MB91305 の特長 , ブロックダイヤグラム , 機能概要など全体を知るた めの基本的なことがらについて説明します。 第2章 デバイスの取扱いについて この章では , MB91305 の取扱い上の注意について説明します。 第3章 CPU および制御部 この章では , FR ファミリの機能を知るために , アーキテクチャ , 仕様 , 命令などの 基本的なことがらについて説明します。 第4章 外部バスインタフェース この章では , LSI の内部バスと外部のメモリ , 機能マクロ , および I/O デバイスとの インタフェースの制御について説明します。 第5章 I/O ポート この章では , I/O ポートの概要 , レジスタの構成 , および機能について説明します。 第6章 割込みコントローラ この章では , 割込みコントローラの概要 , レジスタの構成 / 機能 , 動作 , およびホー ルドリクエスト取下げ要求機能の使用例について説明します。 第7章 外部割込み・NMI 制御部 この章では , 外部割込み・NMI 制御部の概要 , レジスタの構成 / 機能 , および動作に ついて説明します。 第8章 REALOS 関連ハード この章では , REALOS 関連ハードの遅延割込みモジュールとビットサーチモジュー ルについて , 概要 , レジスタの構成 / 機能 , および動作を説明します。 第9章 10 ビット A/D コンバータ この章では , 10 ビット A/D コンバータの概要 , レジスタの構成 / 機能 , および動作 について説明します。 第 10 章 16 ビットリロードタイマ この章では , 16 ビットリロードタイマの概要 , レジスタの構成 / 機能 , および動作に ついて説明します。 第 11 章 PPG タイマ この章では , PPG タイマの概要 , レジスタの構成 / 機能 , および動作について説明し ます。 第 12 章 U-TIMER この章では , U-TIMER の概要 , レジスタの構成 / 機能および動作について説明しま す。 第 13 章 UART この章では, UARTの概要とレジスタの構成/機能, および動作について説明します。 ii 第 14 章 I2C インタフェース この章では , I2C インタフェースの概要 , レジスタの構成 / 機能 , および動作につい て説明します。 第 15 章 16 ビットパルス幅カウンタ この章では , 16 ビットパルス幅カウンタの概要 , レジスタの構成 / 機能 , および動作 について説明します。 第 16 章 16 ビット フリーランタイマ この章では , 16 ビットフリーランタイマの概要 , レジスタの構成 / 機能 , および動作 について説明します。 第 17 章 インプットキャプチャ この章では , インプットキャプチャの概要 , レジスタの構成 / 機能 , および動作につ いて説明します。 第 18 章 USB ファンクション この章では , USB ファンクションの概要 , レジスタの構成 / 機能 , 動作 , および補足 事項について説明します。 第 19 章 DMAC (DMA コントローラ ) この章では , DMAC (DMA コントローラ ) の概要 , レジスタの構成 / 機能 , および動 作について説明します。 付録 付録として , I/O マップ , 割込みベクタ , USB 機能 , プログラムローダ , 端子状態一 覧 , および命令一覧について , 本文に記載できなかった細かい内容や , プログラミン グのときに参照することがらを記載しています。 iii • • • • • • 本資料の記載内容は , 予告なしに変更することがありますので , ご用命の際は当社営業担当部門にご確認 ください。 本資料に記載された動作概要や応用回路例は , 半導体デバイスの標準的な動作や使い方を示したもので , 実際に使用する機器での動作を保証するものではありません。従いまして , これらを使用するにあたって はお客様の責任において機器の設計を行ってください。これらの使用に起因する損害などについては , 当 社はその責任を負いません。 本資料に記載された動作概要・回路図を含む技術情報は , 当社もしくは第三者の特許権 , 著作権等の知的 財産権やその他の権利の使用権または実施権の許諾を意味するものではありません。また , これらの使用 について , 第三者の知的財産権やその他の権利の実施ができることの保証を行うものではありません。従 いまして , これらの使用に起因する第三者の知的財産権やその他の権利の侵害について , 当社はその責任 を負いません。 本資料に記載された製品は , 通常の産業用 , 一般事務用 , パーソナル用 , 家庭用などの一般的用途に使用 されることを意図して設計・製造されています。極めて高度な安全性が要求され , 仮に当該安全性が確保 されない場合 , 社会的に重大な影響を与えかつ直接生命・身体に対する重大な危険性を伴う用途 ( 原子力 施設における核反応制御 , 航空機自動飛行制御 , 航空交通管制 , 大量輸送システムにおける運行制御 , 生 命維持のための医療機器 , 兵器システムにおけるミサイル発射制御をいう ) , ならびに極めて高い信頼性 が要求される用途 ( 海底中継器 , 宇宙衛星をいう ) に使用されるよう設計・製造されたものではありませ ん。したがって , これらの用途にご使用をお考えのお客様は , 必ず事前に当社営業担当部門までご相談く ださい。ご相談なく使用されたことにより発生した損害などについては , 責任を負いかねますのでご了承 ください。 半導体デバイスはある確率で故障が発生します。当社半導体デバイスが故障しても , 結果的に人身事故 , 火災事故 , 社会的な損害を生じさせないよう , お客様は , 装置の冗長設計 , 延焼対策設計 , 過電流防止対策 設計 , 誤動作防止設計などの安全設計をお願いします。 本資料に記載された製品が ,「外国為替および外国貿易法」に基づき規制されている貨物または技術に該 当する場合には , 本製品を輸出するに際して , 同法に基づく許可が必要となります。 Copyright© 2005-2006 FUJITSU LIMITED All rights reserved iv 本版での主な変更内容 ページ 変更内容(詳細は本文を参照してください。 ) 4 ■ A/D コンバータ を変更 ( 変換時間 : 約 8.64 μs →変換時間 : 約 8.18μs) 11 表 1.5-1 端子機能一覧 端子名 AN0,AN1 の入出力回路を変更 (F → M) 11 表 1.5-1 端子機能一覧 端子名 SWR を変更 (SWR → SWE) 11 表 1.5-1 端子機能一覧 端子名 MD0 ∼ MD2,MD3 の機能を変更 (VCC 端子→ VDDE 端子 ) 17,18 表 1.5-1 端子機能一覧 端子名 163,164,165 の機能を変更 (DMAC ch1 → DMAC ch2) 23 表 1.6-1 入出力回路形式 分類 M を追加 26 ■ 水晶発振回路について に文を追加 27 ■ クロックについて を変更 28 ● 低消費電力モード を変更 29 ● A/D 使用時の注意について を変更 (3.3V を供給してください→ VCC より高い電圧を 供給しないでください ) 58 ■ RP (Return Pointer) を変更 (RET 命令→ RETI 命令 ) 86 ● 動作クロック生成について を追加 86 図 3.9-1 動作クロック生成部のブロックダイヤグラム を削除 92 <参考> を追加 92 WPR ( ウォッチドッグリセット発生延期レジスタ ) → CTBR ( タイムベースカウンタク リアレジスタ ) 97 <参考> を追加 105 図 3.11-1 クロック生成制御部のブロックダイヤグラム を変更 106 図 3.11-2 リセット要因レジスタ / ウォッチドッグタイマ制御レジスタのレジスタ構成 を 変更 ((R) → (R/W)) 107 [bit 9, bit 8] WT1, WT0:Watchdog interval Time select を変更 (WPR → CTBR) 109 <参考> を追加 110 [bit 3, bit 2] OS1, OS0:Oscillation Stabilization time select を変更 113 [bit 9] SYNCR:SYNChronous Reset enable に<注意事項> を追加 113 [bit 8] SYNCS:SYNChronous Standby enable に<注意事項> を追加 114 ■ CTBR:タイムベースカウンタクリアレジスタ を変更 116 ■ WPR:ウォッチドッグリセット発生延期レジスタ を削除 122 〔ウォッチドッグリセットの発生延期〕を変更 WPR ( ウォッチドッグリセット発生延期 レジスタ ) → CTBR ( タイムベースカウンタクリアレジスタ ) v ページ 130 133 ∼ 228 138 変更内容(詳細は本文を参照してください。 ) 〔通常スタンバイ動作と同期スタンバイ動作〕を削除 第 4 章 外部バスインタフェース 端子名を変更 (CS → CSn) 図 4.1-2 外部バスインタフェースのレジスタ構成 を変更 (AWR5 → AWR6) (000006F8H → 000007F8H) (000006FCH → 000007FCH) 159 [bit 29,bit 28,bit 21,bit 20,bit 13,bit 12] WR00, WR01, WR10,WR11, WR20, WR21=I/O アイ ドルサイクル設定 (I/O Idle Wait) を変更 (WR0,WR1,WR2 → WR00, WR01, WR10,WR11, WR20, WR21) ■ WR + バイトコントロールタイプ (TYP3 ∼ TYP0= 0010B, AWR=0008H) を変更 187 (A31 ∼ A0 → A23 ∼ A0) (・項目を一つ削除 ) 193 ■ 同期ライトイネーブル出力タイミング (TYP3 ∼ TYP0=0000B, AWR=0000H) を変更 195 ■ DMA フライバイ転送 (I/O →メモリ )(TYP3 ∼ TYP0=0000B, AWR=0008H,IOWR=51H) 195 図 4.5-10 DMA フライバイ転送 (I/O →メモリ ) を変更 (*1, *2 を削除 ) 196 ■ DMA フライバイ転送 ( メモリ→ I/O)(TYP3 ∼ TYP0=0000B, AWR=0008H,IOWR=51H) 196 図 4.5-11 DMA フライバイ転送 ( メモリ→ I/O) を変更 (*1,*2 を削除 ) 197 (ACR:TYPE2 ビット→ ACR:TYP2 ビット ) を変更 (AWR15 ∼ AWR12 → W15 ∼ W12) を変更 (AWR15 ∼ AWR12 → W15 ∼ W12) 図 4.6-1 バーストアクセス (first wait cycle:1,page wait cycle:1)(TYP3 ∼ TYP0=0000B, AWR= 3208H) を変更 (*1,*2 を削除 ) 215 図 4.10-1 DMA フライバイ転送 (I/O →メモリ ) の設定 を変更 (*1, *2 を削除 ) 217 図 4.10-2 DMA フライバイ転送 ( メモリ→ I/O) の設定 (*1, *2 を削除 ) 225 図 4.11-2 バス権獲得時の設定 を変更 (* を削除 ) 225 ■ バス権獲得 を変更 (WR0 ∼ WR3 → WR0, WR1) 226 ■ 外部バスインタフェースの設定手順 2) の②を変更 231 ● ペリフェラル入力モード時 (PFR="0" & DDR="0") を変更 (PFR="1" → PFR="0") 232, 233 図 5.2-1 ポートデータレジスタ (PDR) の構成 を変更 (* を削除 ) 224 図 5.2-2 ポート方向 (DDR) レジスタの構成 を変更 (PFR=0 のとき を変更 ) (PFR=1 のとき を変更 ) 235 図 5.2-3 ポート機能レジスタ (PFR) の構成 を変更 (* を削除 ) 235 図 5.2-4 プルアップ機能レジスタ (PCR) の構成 を変更 (PA → PA4) vi ページ 変更内容(詳細は本文を参照してください。 ) 236 ∼ 239 表 5.2-1 PFR レジスタの初期値と機能 を変更 (TOE2 → TOE2*) (AN9 → AN7) (AN8 → AN6) (AN7 → AN5) (AN6 → AN4) (AN5 → AN3) (AN4 → AN2) (AN3 → AN1) (AN2 → AN0) (DWRE → DWRE*) (AN0 入力として機能します→ IORD 入力として機能します ) (AN0 入力として機能します→ IOWR 入力として機能します ) (WE → SWE) (* の説明を追加 ) 243,244 図 6.1-1 レジスタ一覧 を変更 (R → R/W) 245 図 6.2-1 ICR(Interrupt Control Register) のビット構成 を変更 (R → R/W) 246 図 6.2-2 HRCL(Hold Request Cancel Level register) のビット構成 を変更 (R → R/W) 259 ■ 外部割込みを使用したクロック発振停止した STOP 状態からの復帰時における注意事 項 を追加 260 ■ STOP 状態からの復帰動作について を追加 272 ■ 10 ビット A/D コンバータの特長 を変更 (fCH:@32MHz 時→ fCH:32MHz 時 ) 274 図 9.2-1 A/D 制御レジスタ (ADCTH, ADCTL) のビット構成 を変更 ((R) → (R/W)) (0000 0000B → XXXXXX00B) (0000 0000B → 00000X00B) 276 ■ A/D 変換結果レジスタ (ADAT0 ∼ ADAT9) を変更 (0 チャネル∼ 9 チャネル → ADAT0 ∼ ADAT9) 278 ■ 外部トリガ変換による A/D 動作 を変更 279 ∼ 294 第 10 章 16 ビットリロードタイマ 全体を変更 299 図 11.2-1 コントロールステータスレジスタ (PCNH, PCNL) のビット構成 PCNL0 ∼ PCNL3 ( ビット 1 の初期値を変更 (X → 0)) (ch3 00013EH → ch3 00013FH) 315 ■ ボーレートの計算 を変更 ( 最大 bps 周辺クロック (CLKP) の表記を削除 ) 318 ■ UART の特長 を変更 (DRCL0 ∼ DRCL4 レジスタへの書込み動作による DMAC の割 込み要因クリア を削除 ) 318 図 13.1-1 レジスタ一覧 を変更 (DRCL を削除 ) 320 図 13.2-1 SMR0 ∼ SMR4 ( シリアルモードレジスタ ) のビット構成 を変更 (W → R/W) vii ページ 変更内容(詳細は本文を参照してください。 ) 321 図 13.2-2 SCR0 ∼ SCR4 ( シリアルコントロールレジスタ ) のビット構成 を変更 (W → R/W) 324 図 13.2-4 SSR0 ∼ SSR4 ( シリアルステータスレジスタ ) のビット構成 を変更 (R → R/W) 326 ■ DRCL0 ∼ DRCL4 を削除 337 表 13.7-1 非同期 ( 調歩同期 ) モード を変更 343 図 14.1-1 バスコントロールレジスタ (IBCR) を変更 (W → R/W) 344 図 14.1-4 10 ビットスレーブアドレスマスクレジスタ (ITMK) を変更 (R → R/W) 345 図 14.1-11 FIFO コントロールレジスタ (IFCR) を変更 (R → R/W) 346 図 14.1-13 ブロックダイヤグラム (TEDE → TEDIE) (FN → FN4 ∼ FN0) 350 図 14.2-2 バスコントロールレジスタ (IBCR) のビット構成 を変更 (W → R/W) 351 <注意事項> に項目を追加 355 フロー例 を変更 (*: の説明を追加 ) 357 図 14.2-6 クロックコントロールレジスタ (ICCR0 ∼ ICCR3) のビット構成 を変更 (W → R/W) 359 図 14.2-8 10 ビットスレーブアドレスマスクレジスタ (ITMK0 ∼ ITMK3) を変更 (R → R/W) 360 [bit 9 ∼ bit 0] TM9 ∼ TM0(10 ビットスレーブアドレスマスクビット ) を変更 (ASS="1" (IBSR) → AAS="1" (IBSR)) 361 図 14.2-9 7 ビットスレーブアドレスレジスタ (ISBA0 ∼ ISBA3) のビット構成 を変更 (R → R/W) 362 [bit 14 ∼ bit 8] SM6 ∼ SM0(7 ビットスレーブアドレスマスクビット ) を変更 (ASS="1" (IBSR) → AAS="1" (IBSR)) 364 図 14.2-13 IFDR0 ∼ IFDR3 (FIFO データレジスタ ) 初期値を変更 (X → 0) 364 図 14.2-14 IFCR0 ∼ IFCR3 (FIFO コントロールレジスタ ) を変更 (R → R/W) 370 ■ エラーを発生しない通信エラー を変更 (BSS="0" による「STOP」条件→ MSS="0" に よる「STOP」条件 ) 380 図 15.2-2 PWC 制御レジスタ (PWCCH) のビット構成 を変更 (TEST1 → TEST0) 383 図 15.2-5 PWC・上限値設定レジスタ (PWCUD) のビット構成 を変更 (R/W → R) 391 [bit 5] : IVFE を変更 (IVFF → IVFE) 391 [bit 2] : CLR <注意事項>に文を追加 409 図 18.2-8 ST2 のビット構成 初期値を変更 (---------0000000B → XXXXXXXX XXX00000B) 410 図 18.2-9 ST3 のビット構成 初期値を変更 (00-------0000000B → XXXXXXXX XXX00000B) viii ページ 変更内容(詳細は本文を参照してください。 ) 411 図 18.2-10 ST4 のビット構成 初期値を変更 (-----00000000000B → XXXXX000 00000000B) 412 図 18.2-11 ST5 のビット構成 を変更 (0--00------000000B → XXXX0XXX XX000000B) (RESERVED → LPEND) 412 表 18.2-5 ビット解説 を変更 (Reserved → LPEND) ( 機能欄の変更 ) 415 図 18.2-14 CONT1 のビット構成 を変更 (RESERVED → LPSTART) 415 表 18.2-8 ビット解説 を変更 (Reserved → LPSTART) ( 機能欄の変更 ) 421 図 18.2-22 CONT9 のビット構成 を変更 ( −→ MLPEND) 421 表 18.2-16 ビット解説 を変更 ( −→ MLPEND) ( 機能欄の変更 ) 425 表 18.2-18 レジスタマップ を変更 (0006_007E → 0006FFFEH) 427 図 18.3-1 コントロール転送の SETUP ステージ ( 一部を除く標準コマンド ) のフロー を 変更 (*1, *2 の文を変更 ) 428 <注意事項> を変更 439 ■ DMA シングル転送リード / ライトタイミング を追加 440 ■ DMA ブロック転送リード / ライトタイミング を追加 461 ■ USB 標準要求コマンドに対するマクロの自動応答内容 を変更 (USB Function Ver1.1 に 準拠→ USB ファンクション Ver2.0 Full Speed 規格に準拠 ) 474 [bit 31] DENB (Dma ENaBle) :DMA 動作許可ビット を変更 (PUAS ビット→ PAUS ビット ) 476 <注意事項> を変更 (MDA 起動→ DMA 起動 ) 478 [bit 15 ∼ bit 00] DTC15 ∼ DTC00 (Dma Terminal Count register) を変更 (DTC → DTC15 ∼ DTC00) 479 図 19.2-2 DMAC-ch0 ∼ ch4 コントロール / ステータスレジスタ B [DMACB0 ∼ DMACB4] のビット構成 の初期値を変更 (X → 0) 479 [bit 31, bit 30] TYPE1, TYPE0 (TYPE) を変更 (TYPE → TYPE1, TYPE0) 479 [bit 29, bit 28] MOD1, MOD0 (MODe) を変更 (MOD → MOD1, MOD0) 480 [bit 27, bit 26] WS1, WS0 (Word Size) を変更 (WS → WS1, WS0) 483 [bit 15 ∼ bit 8] SASZ7 ∼ SASZ0 (Source Addr count SiZe) を変更 (SASZ → SASZ7 ∼ SASZ0) 484 [bit 7 ∼ bit 0] DASZ7 ∼ DASZ0 (Des Addr count SiZe) を変更 (DASZ → DASZ7 ∼ DASZ0) 484 [bit 31 ∼ bit 0] DMASA31 ∼ DMASA0 (DMA Source Addr) を変更 (DMASA → DMASA31 ∼ DMASA0) ix ページ 変更内容(詳細は本文を参照してください。 ) 485 [bit 31 ∼ bit 0] DMADA31 ∼ DMADA0 (DMA Destination Addr) を変更 (DMADA → DMADA31 ∼ DMADA0) 486 図 19.2-4 DMAC-ch0 ∼ ch4 DMAC 全体制御レジスタ [DMACR] のビット構成 を変更 (PMO1 → PM01) 487 [bit 27 ∼ bit 24] DMAH3 ∼ DMAH0(DMA Halt) を変更 (DMAH → DMAH3 ∼ DMAH0) 498 ● アドレスレジスタ指定 を変更 504 ■ スリープ中の DMA 転送 を変更 505 ∼ 509 ■ 外部端子と内部動作タイミングに関する補足 全体を変更 517 図 19.9-1 2 サイクル転送 ( 外部 => 外部転送時 , 転送回数 =2 の場合 ) を変更 (A24 ∼ A0 → A23 ∼ A0) (EOP → DEOP) 517 図 19.9-2 フライバイ転送 (I/O=>memory 転送時 , 転送回数 =3 の場合 ) を変更 (A24 ∼ A0 → A23 ∼ A0) (EOP → DEOP) 517 図 19.9-3 フライバイ転送 ( メモリ =>I/O 転送時 , 転送回数 =3 の場合 ) を変更 (A24 ∼ A0 → A23 ∼ A0) (EOP → DEOP) 518 図 19.9-4 DREQ エッジ要求時 (2 サイクル転送時 ) を変更 (A24 ∼ A0 → A23 ∼ A0) 518 図 19.9-5 DREQ レベル要求時 (2 サイクル転送時 ) を変更 (A24 ∼ A0 → A23 ∼ A0) 519 <注意事項> を変更 (TYPE3 ∼ TYPE0 → TYP3 ∼ TYP0) 523 ∼ 531 表 A-1 I/O マップ を変更 537 ● AWR (=2098H) W05,W04 ビットの説明を変更 (10B → 01B) 553, 554 表 E-1 外部バス 8 ビットモード時の端子状態 に説明を追加 (P: ポート設定時 ) (F: 指定機能使用時 ) 555, 556 表 E-2 外部バス 16 ビットモード時の端子状態 に説明を追加 (P: ポート設定時 ) (F: 指定機能使用時 ) x 目次 第1章 1.1 1.2 1.3 1.4 1.5 1.6 概要 .......................................................................................................... 1 特長 ...................................................................................................................................... 2 ブロックダイヤグラム .......................................................................................................... 6 外形寸法図 ............................................................................................................................ 7 端子配列図 ............................................................................................................................ 8 端子機能一覧表 .................................................................................................................... 9 入出力回路形式 .................................................................................................................. 19 第2章 2.1 デバイスの取扱いについて .................................................................... 25 デバイスの取扱いについて ................................................................................................. 26 第3章 CPU および制御部 ................................................................................. 31 3.1 メモリ空間 .......................................................................................................................... 3.2 内部アーキテクチャ ........................................................................................................... 3.2.1 内部アーキテクチャ ................................................................................................. 3.2.2 命令概要 ................................................................................................................... 3.3 命令キャッシュ .................................................................................................................. 3.3.1 概要 .......................................................................................................................... 3.3.2 各動作モードの状態 ................................................................................................. 3.3.3 命令キャッシュのキャッシュ可能領域 .................................................................... 3.3.4 I-Cache を使用するときの設定方法 ......................................................................... 3.4 プログラミングモデル ........................................................................................................ 3.4.1 汎用レジスタ ............................................................................................................ 3.4.2 専用レジスタ ............................................................................................................ 3.5 データ構造 .......................................................................................................................... 3.6 メモリマップ ...................................................................................................................... 3.7 分岐命令 ............................................................................................................................. 3.7.1 遅延スロット付き動作 ............................................................................................. 3.7.2 遅延スロットなし動作 ............................................................................................. 3.8 EIT ( 例外・割込み・トラップ ) ......................................................................................... 3.8.1 EIT の割込みレベル .................................................................................................. 3.8.2 ICR (Interrupt Control Register) ................................................................................ 3.8.3 SSP (System Stack Pointer) ..................................................................................... 3.8.4 3.8.5 32 33 34 38 40 41 46 48 49 51 52 53 60 62 63 64 66 67 68 70 71 割込みスタック ........................................................................................................ 72 TBR (Table Base Register) ...................................................................................... 73 3.8.6 EIT ベクタテーブル .................................................................................................. 3.8.7 多重 EIT 処理 ............................................................................................................ 3.8.8 多重 EIT の動作 ........................................................................................................ 3.8.9 注意事項 ................................................................................................................... 3.9 動作モード .......................................................................................................................... 3.9.1 バスモード ............................................................................................................... 3.9.2 モード設定 ............................................................................................................... 3.10 リセット ( デバイス初期化 ) ............................................................................................... 3.10.1 リセットレベル ........................................................................................................ 3.10.2 リセット要因 ............................................................................................................ xi 74 77 79 83 84 85 86 89 90 91 3.10.3 リセットシーケンス ................................................................................................. 93 3.10.4 発振安定待ち時間 ..................................................................................................... 94 3.10.5 リセット動作モード ................................................................................................. 96 3.11 クロック生成制御 ............................................................................................................... 98 3.11.1 PLL 制御 ................................................................................................................... 99 3.11.2 発振安定待ち・PLL ロック待ち時間 ...................................................................... 101 3.11.3 クロック分配 .......................................................................................................... 102 3.11.4 クロック分周 .......................................................................................................... 104 3.11.5 クロック生成制御部のブロックダイヤグラム ........................................................ 105 3.11.6 クロック生成制御部のレジスタ詳細説明 ............................................................... 106 3.11.7 クロック制御部が持つ周辺回路 ............................................................................. 122 3.12 デバイス状態制御 ............................................................................................................. 125 3.12.1 デバイス状態と各遷移 ........................................................................................... 126 3.12.2 低消費電力モード ................................................................................................... 129 第4章 外部バスインタフェース ...................................................................... 133 4.1 外部バスインタフェースの概要 ....................................................................................... 4.2 外部バスインタフェースのレジスタ ................................................................................ 4.2.1 Area Select Register (ASR0 ∼ ASR7) ................................................................... 4.2.2 ACR0 ∼ ACR7(Area Configuration Register) ........................................................ 4.2.3 AWR0 ∼ AWR7(Area Wait Register) ..................................................................... 4.2.4 MCRA (Memory Configuration Register for extend type-A: SDRAM/FCRAM オートプリチャージなし ) .......................................................... 4.2.5 MCRB (Memory Configuration Register for extend type-B: FCRAM オートプリチャージあり ) ........................................................................ 4.2.6 IOWR0 ∼ IOWR2(I/O Wait Register for DMAC) .................................................... 4.2.7 CSER(Chip Select Enable register) ........................................................................ 4.2.8 CHER(CacHe Enable register) ............................................................................... 4.2.9 TCR(Terminal and timing Control Register) ........................................................... 4.2.10 RCR(Refresh Control Register) .............................................................................. 4.3 チップセレクト領域 ......................................................................................................... 4.4 エンディアンとバスアクセス ........................................................................................... 4.4.1 データバス幅と制御信号との関係 .......................................................................... 4.4.2 ビッグエンディアンのバスアクセス ...................................................................... 4.4.3 リトルエンディアンのバスアクセス ...................................................................... 4.4.4 外部アクセス .......................................................................................................... 4.5 通常バスインタフェース .................................................................................................. 4.6 バーストアクセス (first wait cycle:1,page wait cycle:1) (TYP3 ∼ TYP0=0000B,AWR=3208H) .............................................................................. 4.7 アドレス / データマルチプレックスインタフェース ........................................................ 4.8 プリフェッチ動作 ............................................................................................................. 4.9 SDRAM/FCRAM インタフェース ..................................................................................... 4.10 DMA アクセス .................................................................................................................. 4.11 バスアービトレーション .................................................................................................. 4.12 レジスタ設定手順 ............................................................................................................. 4.13 使用上の注意 .................................................................................................................... 第5章 5.1 5.2 134 139 140 141 147 155 157 158 160 161 162 165 168 170 171 173 178 182 186 197 199 203 207 215 224 226 227 I/O ポート ............................................................................................. 229 I/O ポートの概要 .............................................................................................................. 230 I/O ポートのレジスタ ....................................................................................................... 232 xii 第6章 6.1 6.2 6.3 6.4 割込みコントローラ ............................................................................. 241 割込みコントローラの概要 ............................................................................................... 割込みコントローラのレジスタ ....................................................................................... 割込みコントローラの動作 ............................................................................................... ホールドリクエスト取下げ要求機能 (HRCL) の使用例 .................................................... 第7章 7.1 7.2 7.3 外部割込み /NMI 制御部 ....................................................................... 253 外部割込み /NMI 制御部の概要 ......................................................................................... 254 外部割込み /NMI 制御部のレジスタ .................................................................................. 255 外部割込み /NMI 制御部の動作 ......................................................................................... 257 第8章 8.1 8.2 8.3 8.4 8.5 8.6 REALOS 関連ハード ........................................................................... 261 遅延割込みモジュール ...................................................................................................... 遅延割込みモジュールのレジスタ .................................................................................... 遅延割込みモジュールの動作 ........................................................................................... ビットサーチモジュール .................................................................................................. ビットサーチモジュールのレジスタ ................................................................................ ビットサーチモジュールの動作 ....................................................................................... 第9章 9.1 9.2 9.3 242 245 247 250 262 263 264 265 266 268 10 ビット A/D コンバータ .................................................................... 271 10 ビット A/D コンバータの概要 ..................................................................................... 272 10 ビット A/D コンバータのレジスタ .............................................................................. 274 10 ビット A/D コンバータの動作 ..................................................................................... 277 第 10 章 16 ビットリロードタイマ .................................................................... 279 10.1 16 ビットリロードタイマの概要 ...................................................................................... 280 10.2 16 ビットリロードタイマのレジスタ ............................................................................... 283 10.3 16 ビットリロードタイマの動作説明 ............................................................................... 287 第 11 章 11.1 11.2 11.3 11.4 PPG (Programable Pulse Generator) ............................................... 295 PPG の概要 ...................................................................................................................... PPG タイマのレジスタ .................................................................................................... PPG の動作説明 ............................................................................................................... PPG タイマの注意事項 .................................................................................................... 第 12 章 296 299 304 307 U-TIMER .............................................................................................. 309 12.1 U-TIMER の概要 ............................................................................................................... 310 12.2 U-TIMER のレジスタ ........................................................................................................ 311 12.3 U-TIMER の動作説明 ........................................................................................................ 315 第 13 章 13.1 13.2 13.3 13.4 13.5 13.6 13.7 UART ................................................................................................... 317 UART の概要 .................................................................................................................... UART のレジスタ ............................................................................................................. UART の動作 .................................................................................................................... 割込み発生およびフラグのセットタイミング .................................................................. UART 使用上の注意 ......................................................................................................... UART の応用例 ................................................................................................................. ボーレートと U-TIMER のリロード値の設定例 ............................................................... xiii 318 320 327 331 334 335 337 第 14 章 14.1 14.2 14.3 14.4 I2C インタフェース .............................................................................. 339 I2C インタフェースの概要 ................................................................................................ I2C インタフェースのレジスタ ........................................................................................ I2C インタフェースの動作 ................................................................................................ 動作フローチャート ......................................................................................................... 第 15 章 340 347 367 372 16 ビットパルス幅カウンタ ................................................................. 377 15.1 16 ビットパルス幅カウンタの概要 .................................................................................. 378 15.2 16 ビットパルス幅カウンタのレジスタ ........................................................................... 379 15.3 16 ビット パルス幅カウンタの動作 ................................................................................. 384 第 16 章 16 ビットフリーランタイマ ................................................................. 387 16.1 16 ビットフリーランタイマの概要 .................................................................................. 388 16.2 16 ビットフリーランタイマのレジスタ ........................................................................... 389 16.3 16 ビットフリーランタイマの動作説明 ........................................................................... 393 第 17 章 インプットキャプチャ ......................................................................... 395 17.1 インプットキャプチャの概要 ........................................................................................... 396 17.2 インプットキャプチャのレジスタ .................................................................................... 397 17.3 インプットキャプチャの動作 ........................................................................................... 400 第 18 章 USB ファンクション ............................................................................ 401 18.1 USB ファンクションの概要 ............................................................................................. 18.2 USB インタフェースのレジスタ ...................................................................................... 18.2.1 データ送受信用レジスタ ( エンドポイント用 ) ...................................................... 18.2.2 ステータスレジスタ ............................................................................................... 18.2.3 コントロールレジスタ ........................................................................................... 18.3 USB ファンクションの動作 ............................................................................................. 18.3.1 データ転送フロー ................................................................................................... 18.3.2 CPU アクセス動作説明 .......................................................................................... 18.3.3 DMA 動作説明 ........................................................................................................ 18.3.4 割込み要因一覧 ...................................................................................................... 18.3.5 エンドポイントバッファの設定 ............................................................................. 18.3.6 ソフトウェア制御例 ............................................................................................... 18.4 補足事項 ........................................................................................................................... 18.4.1 ダブルバッファ ...................................................................................................... 18.4.2 ボード上の D+ 終端抵抗制御について ................................................................... 18.4.3 USB 標準要求コマンドに対するマクロの自動応答内容 ........................................ 18.4.4 デフォルト状態での USB マクロの動作 ................................................................ 18.4.5 サスペンド時の USB クロック制御 ........................................................................ 18.4.6 USB コネクタの接続 / 未接続の検知 ...................................................................... 18.4.7 UCLK48 の精度 ...................................................................................................... 18.4.8 コントロール転送時の転送許可 BFOK の設定 ....................................................... 18.4.9 コントロール転送における注意点 .......................................................................... 18.4.10 USB バスリセット後のマクロの状態 ..................................................................... 第 19 章 402 404 405 408 415 426 427 434 437 441 442 444 455 456 460 461 462 463 464 465 466 467 468 DMAC(DMA コントローラ ) ................................................................ 469 19.1 DMA コントローラ (DMAC) の概要 .................................................................................. 470 19.2 DMA コントローラ (DMAC) のレジスタ .......................................................................... 473 xiv 19.3 19.4 19.5 19.6 19.7 19.8 19.9 DMA コントローラの動作 ................................................................................................ 転送要求の設定 ................................................................................................................ 転送シーケンス ................................................................................................................ DMA 転送全般 .................................................................................................................. 動作フローチャート ......................................................................................................... データパス ........................................................................................................................ DMA 外部インタフェース ................................................................................................ 付録 付録 A 付録 B 付録 C 付録 D 付録 E 付録 F F.1 索引 488 492 493 497 510 513 516 .............................................................................................................. 521 I/O マップ .................................................................................................................... 割込みベクタ ............................................................................................................... USB 機能 ..................................................................................................................... プログラムローダモード ............................................................................................. 端子状態一覧 ............................................................................................................... 命令一覧 ...................................................................................................................... FR ファミリの命令一覧表 ........................................................................................... 522 534 536 539 553 557 560 .............................................................................................................. 575 xv xvi 第1章 概要 MB91305 の特長 , ブロックダイヤグラム , 機能概 要など全体を知るための基本的なことがらについ て説明します。 1.1 特長 1.2 ブロックダイヤグラム 1.3 外形寸法図 1.4 端子配列図 1.5 端子機能一覧表 1.6 入出力回路形式 1 第 1 章 概要 1.1 特長 FR ファミリは , 32 ビット高性能 RISC CPU を使用し , 高性能 / 高速な CPU 処理を 要求される組込み制御用に各種 I/O リソースを内蔵したマイクロコントローラです。 DVD プレーヤ , プリンタ , TV, PDP 制御用など , 高性能な CPU 処理パワーを要求さ れる組込み用途に最適な仕様となっています。 本品種は , FR30/40 CPU をベースにバスアクセスの強化を行い , より高速での使用 に対応した FR60 です。 ■ FR CPU • 32 ビット RISC, ロード / ストアアーキテクチャ , パイプライン 5 段 • USB 機能ありの場合 (MOD=0000B):動作周波数 64MHz [ 原発振 48MHz] 48MHz の 3 分周を 4 逓倍 • USB 機能なしの場合 (MOD=0010B):動作周波数 64MHz [ 原発振 16MHz] 16MHz の 4 逓倍 • 16 ビット固定長命令 ( 基本命令 ), 1 命令 /1 サイクル • メモリ - メモリ間転送 , ビット処理 , バレルシフトなどの命令 : 組込み用途に適した 命令 • 関数入口 / 出口命令 , レジスタ内容のマルチロードストア命令 : 高級言語対応命令 • レジスタインターロック機能 : アセンブラ記述の容易化 • 乗算器の内蔵 / 命令レベルでのサポート - 符号付き 32 ビット乗算 : 5 サイクル - 符号付き 16 ビット乗算 : 3 サイクル • 割込み (PC, PS の退避 ): 6 サイクル , 16 プライオリティレベル • ハーバードアーキテクチャにより , プログラムアクセスとデータアクセスを同時に 実行可能 • CPU 内の 4 ワードのキューにより , 命令の先取り機能を追加 • FR ファミリとの命令互換 ■ バスインタフェース 本バスインタフェースは , 外部バスと内部マクロ USB ファンクションに使用されます。 • 動作周波数:最大 32MHz • 16 ビットデータ入出力 • 最小 64K バイト位で設定可能な完全独立な 8 領域のチップセレクト出力が可能 CS2, CS3 の領域は以下のように予約されています。 CS0, CS1, CS4 ∼ CS7 のみ使用で きます。 - CS2 領域 : USB ファンクション - CS3 領域 : 未使用 • 基本バスサイクル : 2 サイクル 2 第 1 章 概要 • 領域ごとにプログラマブルでウェイト挿入可能な自動ウェイトサイクル発生機構 CS2, CS3 は予約されていますので設定は固定になります。 • 24 ビットアドレスフル出力 • 8/16 ビットデータ入出力 • プリフェッチバッファ搭載 • 未使用データ , 未使用アドレス端子は汎用入出力やリソース機能に使用可能 • 各種メモリに対するインタフェースのサポート 非同期 SRAM, 非同期 ROM/ フラッシュメモリ ページモード ROM/ フラッシュメモリ ( ページサイズ 1, 2, 4, 8 可能 ) バーストモード ROM/ フラッシュメモリ (MBM29BL160D/161D/162D など ) SDRAM (FCRAM タイプも対応 , CAS レイテンシ 1 ∼ 8, 2/4 バンク品 ) アドレス / データマルチプレックスバス (8 ビット /16 ビット 幅のみ ) • 基本バスサイクル : 2 サイクル • 領域ごとにプログラマブルな自動ウェイトサイクル発生機構 ( 最大 15 サイクル ) • RDY 入力による外部ウェイトサイクル • バイトオーダリングのエンディアン設定 ( ビッグ / リトル ) <注意事項> CS0 領域はビッグエンディアンのみ • 書込み禁止設定 ( 読出し専用領域 ) • 内蔵キャッシュへの取込み許可・禁止設定 • プリフェッチ機能の許可・禁止設定 • BRQ と BGRNT を使用した外部バスアービトレーションが可能 ■ 内蔵メモリ F-bus 搭載の RAM64K バイト ■ 命令キャッシュメモリ • 4 K バイト 命令キャッシュ • 2 ウェイセットアソシアティブ方式 • 128 ブロック / ウェイ , 4 エントリ (4 ワード ) / ブロック • ロック機能 : 特定プログラムコードのキャッシュへの常駐化 • 命令 RAM 機能:キャッシュ機能を使用しない場合は命令実行用の RAM としても 使用可能 ■ DMAC (DMA Controller) • 5 チャネル (ch1, ch2 → USB ファンクションに接続されています。) • 3 つの転送要因 ( 内部ペリフェラル / ソフトウェア ) • アドレッシングモード 32 ビットフルアドレス指定 ( 増加 / 減少 / 固定 ) • 転送モード ( デマンド転送 / バースト転送 / ステップ転送 / ブロック転送 ) • 転送データサイズは 8/16/32 ビットから選択可能 3 第 1 章 概要 ■ ビットサーチモジュール (REALOS 使用 ) 1 ワード中の MSB から最初の "1"/"0" の変化ビット位置をサーチ ■ リロードタイマ (REALOS 用 1 チャネルを含む ) • 16 ビットタイマ : 3 チャネル • 内部クロックは 2/8/32 分周から選択可能 ■ UART • 全二重ダブルバッファ • 5 チャネル • パリティあり / なし選択可能 • 非同期 ( 調歩同期 ), CLK 同期通信の選択可能 • 専用ボーレート用タイマ内蔵 • 外部クロックを転送クロックとして使用可能 • 豊富なエラー検出機能あり ( パリティ , フレーム , オーバラン ) ■ I2C インタフェース • 4 チャネル搭載 ( ブリッジ機能搭載・5 チャネル分の端子機能 ) • マスタ / スレーブ送受信 • クロック同期化機能 • 転送方向検出機能 • バスエラー検出機能 • 標準モード ( 最大 100Kbps)/ 高速モード ( 最大 400Kbps) に対応 • 送受信各 16 バイトの FIFO 機能搭載 • アービトレーション機能 • スレーブアドレス / ゼネラルコールアドレス検出機能 • スタートコンディションの繰返し発生および検出機能 • 10 ビット / 7 ビットスレーブアドレス ■ 割込みコントローラ • 外部割込み : 合計 17 本 ( マスク不可割込み端子 (NMI) 1 本と通常割込み端子 (INT0 ∼ INT15) 16 本 ) • 内部ペリフェラルからの割込み • マスク不可割込み以外は , 優先レベルをプログラマブルに設定可能 (16 レベル ) • ストップ時のウェイクアップ用として使用可能 ■ A/D コンバータ • 10 ビット分解能 , 10 チャネル • 逐次比較変換型 : 変換時間 : 約 8.18µs • 変換モード ( 単発変換モード , スキャン変換モード ) • 起動要因 ( ソフトウェア / 外部トリガ ) 4 第 1 章 概要 ■ PPG • 4 チャネル搭載 • 16 ビットダウンカウンタ , 周期設定用バッファ付き 16 ビットデータレジスタ • 内部クロックは 1/4/16/64 分周から選択可能 ■ PWC • 1 チャネル (1 入力 ) 搭載 • 16 ビットアップカウンタ • 簡易デジタルローパスフィルタ ■ フリーランタイマ • 16 ビット 1 チャネル • インプットキャプチャ 4 チャネル ■ USB ファンクション機能 ( 機能の有無をモード端子により選択可能 ) • USB2.0 仕様のフルスピード・ダブルバッファ • エンドポイント用 FIFO の構成 CONTROL IN/OUT, BULK IN/OUT, INTERRUPT IN ■ その他のインターバルタイマ ウォッチドッグタイマ ■ I/O ポート 最大 98 ポート ■ その他の特長 • クロックソースとして発振回路内蔵 • リセット端子として INIT を用意 • その他 , ウォッチドッグタイマリセット , ソフトウェアリセットあり • 低消費電力モードとしてストップモードとスリープモードをサポート • ギア機能 • タイムベースタイマ内蔵 • パッケージ : LQFP-176, 0.5mm ピッチ , 24mm × 24mm • CMOS テクノロジ : 0.18 µm • 電源電圧 : 3.3V ± 0.3V, 1.8V ± 0.15V, 2 電源 (0.18 µm) ■ ライセンス 本製品には , お客様が Philips 社の定めた I2C 標準仕様書に従う I2C システムの中で使用さ れることを条件に , Philips 社 I2C 特許がライセンスされております。 Purchase of Fujitsu I2C components conveys a license under the Philips I2C Patent Rights to use, these components in an I2C system provided that the system conforms to the I2C Standard Specification as defined by Philips. 5 第 1 章 概要 1.2 ブロックダイヤグラム 図 1.2-1 に , MB91305 のブロックダイヤグラムを示します。 ■ ブロックダイヤグラム 図 1.2-1 ブロックダイヤグラム FR CPU コア 32 命令キャッシュ 4Kバイト 32 ビットサーチ RAM 64Kバイト バスコンバータ DMAC 5チャネル 32⇔16 アダプタ 外部バス インタフェース SDRAM インタフェース クロック 制御 割込み コントローラ USB ファンクション UART 5チャネル I2C 4チャネル A/D 10チャネル フリーランタイマ 1チャネル リロード タイマ 3チャネル インプットキャプチャ 4チャネル 外部割込み ポート 6 PWC PPG 1チャネル 4チャネル 第 1 章 概要 外形寸法図 1.3 MB91305 には , 1 種類のパッケージが用意されています。図 1.3-1 に , MB91305 の 外形寸法を示します。 ■ 外形寸法図 図 1.3-1 外形寸法図 プラスチック・LQFP, 176ピン (FPT-176P-M07) プラスチック・LQFP, 176ピン (FPT-176P-M07) リードピッチ 0.50mm パッケージ幅× パッケージ長さ 24.0×24.0mm リード形状 ガルウィング 封止方法 プラスチックモールド 取付け高さ 1.70mm MAX 質量 1.86g コード(参考) P-LQFP-0176-2424-0.50 注1)*印寸法はレジン残りを含まず。レジン残りは片側+0.25(.010)MAX 注2)端子幅および端子厚さはメッキ厚を含む。 注3)端子幅はタイバ切断残りを含まず。 26.00±0.20(1.024±.008)SQ *24.00±0.10(.945±.004)SQ 0.145±0.055 (.006±.002) 132 89 133 88 0.08(.003) Details of "A" part +0.20 1.50 -0.10 +.008 .059 -.004 (Mounting height) 0.10±0.10 (.004±.004) (Stand off) 0~8' INDEX 176 45 "A" LEAD No. 1 44 0.50(.020) C 2004 FUJITSU LIMITED F176013S-c-1-1 0.22±0.05 (.009±.002) 0.50±0.20 (.020±.008) 0.60±0.15 (.024 .006) 0.25(.010) 0.08(.003) M 単位:mm(inches) 注意:括弧内の値は参考値です。 7 第 1 章 概要 1.4 端子配列図 MB91305 の端子配列を示します。 ■ 端子配列図 176 175 174 173 172 171 170 169 168 167 166 165 164 163 162 161 160 159 158 157 156 155 154 153 152 151 150 149 148 147 146 145 144 143 142 141 140 139 138 137 136 135 134 133 D23/P27 D22/P26 D21/P25 D20/P24 D19/P23 D18/P22 D17/P21 D16/P20 VDDI VSS VDDE PE2/DEOP2/TRG3 PE1/DACK2/TRG2 PE0/DREQ2/TRG1 PD5/DEOP1/TIN2 PD4/DACK1/TIN1 PD3/DREQ1/TIN0 PD2/DEOP0 PD1/DACK0 PD0/DREQ0 PC7/RIN/IORD PC6/TOUT2/IOWR PC5/TOUT1 PC4/TOUT0/TRG0 PC3/PPG3 PC2/PPG2 PC1/PPG1 PC0/PPG0 VDDI VSS UDM UDP VDDE PB7/INT15/ICU3 PB6/INT14/ICU2 PB5/INT13/ICU1 PB4/INT12/ICU0 PB3/INT11/FRCK PB2/INT10/ATRG PB1/INT9 PB0/INT8 PA7/INT7 PA6/INT6 PA5/INT5 図 1.4-1 端子配列図 VDDE VSS VDDI D24 D25 D26 D27 D28 D29 D30 D31 VDDE VSS VDDI RD WR0/DQMUU WR1/DQMUL/P30 CS0/P31 CS1/P32 CS4/P33 CS5/P34 CS6/P35 CS7/P36 RDY/P37 P40/BGRNT P41/BRQ SYSCLK/P42 MCLKE/P43 MCLK/P44 P45/SRAS/LBA/AS P46/SCAS/BAA P47/SWE/WR VDDE VSS VDDI A0 A1 A2 A3 A4 A5 A6 A7 A8 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 41 42 43 44 TOP VIEW LQFP-176 MB91305 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 ICS2 ICS1 ICS0 AN9/PF7 AN8/PF6 AN7/PF5 AN6/PF4 AN5/PF3 AN4/PF2 AN3/PF1 AN2/PF0 AN1 AN0 AVSS AVRH AVCC MD3 MD2 MD1 MD0 INIT VDDI X1 VSS X0 VDDE A23/P57 A22/P56 A21/P55 A20/P54 A19/P53 A18/P52 A17/P51 A16/P50 VDDI VSS VDDE A15 A14 A13 A12 A11 A10 A9 8 132 131 130 129 128 127 126 125 124 123 122 121 120 119 118 117 116 115 114 113 112 111 110 109 108 107 106 105 104 103 102 101 100 99 98 97 96 95 94 93 92 91 90 89 PA4/INT4 PA3/INT3 PA2/INT2 PA1/INT1 PA0/INT0 NMI VDDI VSS VDDE P97/SDA4 P96/SCL4 P95/SDA3 P94/SCL3 P93/SDA2 P92/SCL2 P91/SDA1 P90/SCL1 P84/SDA0 P83/SCL0 P82/SCK4 P81/SOUT4 P80/SIN4 P75/SCK3 P74/SOUT3 P73/SIN3 P72/SCK2 P71/SOUT2 P70/SIN2 P65/SCK1 P64/SOUT1 P63/SIN1 P62/SCK0 P61/SOUT0 P60/SIN0 VDDI VSS VDDE TRST ICLK IBREAK ICD3 ICD2 ICD1 ICD0 第 1 章 概要 端子機能一覧表 1.5 MB91305 の端子機能の一覧を示します。 ■ 端子機能一覧 端子配列図を参照してください。 表 1.5-1 端子機能一覧 (1 / 10) 端子名 169 ∼ 176 入出力 回路 D16 ∼ D23 機能 外部データバスの bit 16 ∼ bit 23 です。外バスモードのときに有効とな ります。 C P20 ∼ P27 外バス 8 ビットモードのときはポートとして使用できます。 4 ∼ 11 D24 ∼ D31 C 外部データバスの bit 24 ∼ bit 31 です。外バスモードのときに有効とな ります。 15 RD H 外バスリードストローブ出力です。外バスモード時に有効となります。 16 WR0/ DQMUU H 外バスライトストローブ出力です。外バスモード時に有効となります。 WR をライトストローブとして使用したときにはバイトイネーブル (DQMUU) となります。 WR1/ DQMUL 17 D 汎用入出力ポートです。外バスライトイネーブル出力設定を禁止にした ときに有効となります。 P30 チップセレクト 0 出力です。外バスモード時に有効となります。 CS0 18 外バスライトストローブ出力です。外バスモード時に WR1 の出力を許 可にすると有効となります。WR をライトストローブとして使用したと きにはバイトイネーブル (DQMUL) となります。 D P31 汎用入出力ポートです。シングルチップモード時に有効となります。 CS1 チップセレクト 1 出力です。この機能はチップセレクト 1 出力指定が許 可のときに有効となります。 19 D P32 汎用入出力ポートです。この機能はチップセレクト 1 出力指定が禁止の ときに有効となります。 CS4 チップセレクト 4 出力です。この機能はチップセレクト 4 出力指定が許 可のときに有効となります。 20 D P33 汎用入出力ポートです。この機能はチップセレクト 4 出力が禁止のとき に有効となります。 CS5 チップセレクト 5 出力です。この機能はチップセレクト 5 出力指定が許 可のときに有効となります。 21 D P34 汎用入出力ポートです。この機能はチップセレクト 5 出力が禁止のとき に有効となります。 9 第 1 章 概要 表 1.5-1 端子機能一覧 (2 / 10) 端子名 入出力 回路 チップセレクト 6 出力です。この機能はチップセレクト 6 出力指定が許 可のときに有効となります。 CS6 22 D P35 汎用入出力ポートです。この機能はチップセレクト 6 出力が禁止のとき に有効となります。 CS7 チップセレクト 7 出力です。この機能はチップセレクト 7 出力指定が許 可のときに有効となります。 23 D P36 汎用入出力ポートです。この機能はチップセレクト 7 出力が禁止のとき に有効となります。 RDY 外部レディ入力です。この機能は外部レディ入力指定が許可のときに有 効となります。 24 D P37 汎用入出力ポートです。この機能は外部レディ入力指定が禁止のときに 有効となります。 BGRNT 外部バス開放受付け出力です。外部バスを開放したときに "L" を出力し ます。出力指定が許可のときに有効となります。 25 D P40 汎用入出力ポートです。この機能は外部バス開放受付け指定が禁止のと きに有効となります。 BRQ 外部バス開放要求入力です。外部バスを開放したいときに "1" を入力し ます。入力指定が許可のときに有効となります。 26 D P41 汎用入出力ポートです。この機能は外部バス開放要求指定が禁止のとき に有効となります。 SYSCLK システムクロック出力です。この機能はシステムクロック出力指定が許 可のときに有効となります。外バス動作周波数と同じクロックを出力し ます ( ストップ時に停止します )。 27 D 汎用入出力ポートです。この機能はシステムクロック出力指定が禁止の ときに有効となります。 P42 SDRAM 用クロックイネーブル信号です。 MCLKE 28 D P43 汎用入出力ポートです。この機能はメモリ用クロック出力指定が禁止の ときに有効となります。 MCLK メモリ用クロック出力です。この機能はメモリ用クロック出力指定が許 可のときに有効となります。外バス動作周波数と同じクロックを出力し ます ( スリープ時に停止します )。 29 D P44 汎用入出力ポートです。この機能はメモリ用クロック出力指定が禁止の ときに有効となります。 AS アドレスストローブ出力です。この機能はアドレスストローブ出力が許 可のときに有効となります。 LBA バーストフラッシュメモリアドレスロード出力です。この機能はアドレ スロード出力指定が許可のときに有効となります。 D 30 SRAS P45 10 機能 SDRAM 用の RAS ストローブ信号です。 汎用入出力ポートです。この機能はアドレスロード出力指定が禁止のと きに有効となります。 第 1 章 概要 表 1.5-1 端子機能一覧 (3 / 10) 端子名 入出力 回路 バーストフラッシュメモリアドレスアドバンス出力です。この機能はア ドレスアドバンス出力指定が許可のときに有効となります。 BAA 31 32 SCAS D 55 ∼ 62 64 SDRAM 用の CAS ストローブ信号です。 P46 汎用入出力ポートです。この機能はアドレスアドバンス出力指定が禁止 のときに有効となります。 WR メモリライトストローブ出力です。この機能はライトストローブ出力指 定が許可のときに有効となります。 SWE D A0 ∼ A15 SDRAM ライト出力です。 汎用入出力ポートです。この機能はライトストローブ出力指定が禁止の ときに有効となります。 P47 36 ∼ 51 機能 H A16 ∼ A23 外部アドレスバスの bit 0 ∼ bit 15 です。 外部アドレスバスの bit 16 ∼ bit 23 です。 D P50 ∼ P57 外部アドレスバス未使用時は , ポートとして使用できます。 クロック ( 発振 ) 入力です。 X0 A クロック ( 発振 ) 出力です。 66 X1 68 INIT B 外部リセット入力です ( 設定初期化リセット )。 69 ∼ 71 MD0 ∼ MD2 I 端子の設定により基本動作モードを設定します。 VDDE 端子または VSS 端子に接続してください。 72 MD3 J 端子の設定により基本動作モードを設定します。 VDDE 端子または VSS 端子に接続してください。 76,77 AN0, AN1 M アナログ入力端子です。 78 ∼ 85 AN2 ∼ AN9 アナログ入力端子です。 F PF0 ∼ PF7 アナログ入力端子未使用時は , ポートとして使用できます。 86 ∼ 88 ICS0 ∼ ICS2 C 開発ツール用ステータス出力端子です。 89 ∼ 92 ICD0 ∼ ICD3 L 開発ツール用データ入出力端子です。 93 IBREAK J 開発ツール用ブレーク端子です。 94 ICLK D 開発ツール用クロック端子です。 95 TRST B 開発ツール用リセット端子です。 11 第 1 章 概要 表 1.5-1 端子機能一覧 (4 / 10) 端子名 入出力 回路 SIN0 99 D SOUT0 D SCK0 D UART0 のクロック入出力です。この機能は UART0 のクロック出力指定 が許可のときに有効となります。 P62 汎用入出力ポートです。 SIN1 UART1 のデータ入力です。UART1 が入力動作をしている間は , この入 力を随時使用していますので意図的に行うとき以外はポートによる出 力を停止させておく必要があります。 102 D P63 汎用入出力ポートです。 SOUT1 103 D SCK1 104 UART1 のデータ出力です。この機能は UART1 のデータ出力指定が許可 のときに有効となります。 汎用入出力ポートです。 P64 D UART1 のクロック入出力です。この機能は UART1 のクロック出力指定 が許可のときに有効となります。 P65 汎用入出力ポートです。 SIN2 UART2 のデータ入力です。UART2 が入力動作をしている間は , この入 力を随時使用していますので意図的に行うとき以外はポートによる出 力を停止させておく必要があります。 105 D 汎用入出力ポートです。 P70 SOUT2 106 D SCK2 107 UART2 のデータ出力です。この機能は UART2 のデータ出力指定が許可 のときに有効となります。 汎用入出力ポートです。 P71 D UART2 のクロック入出力です。この機能は UART2 のクロック出力指定 が許可のときに有効となります。 P72 汎用入出力ポートです。 SIN3 UART3 のデータ入力です。UART3 が入力動作をしている間は , この入 力を随時使用していますので意図的に行うとき以外はポートによる出 力を停止させておく必要があります。 108 D 汎用入出力ポートです。 P73 SOUT3 109 D P74 12 UART0 のデータ出力です。この機能は UART0 のデータ出力指定が許可 のときに有効となります。 汎用入出力ポートです。 P61 101 UART0 のデータ入力です。UART0 が入力動作をしている間は , この入 力を随時使用していますので意図的に行うとき以外はポートによる出 力を停止させておく必要があります。 汎用入出力ポートです。 P60 100 機能 UART3 のデータ出力です。この機能は UART3 のデータ出力指定が許可 のときに有効となります。 汎用入出力ポートです。 第 1 章 概要 表 1.5-1 端子機能一覧 (5 / 10) 端子名 入出力 回路 SCK3 110 D 機能 UART3 のクロック入出力です。この機能は UART3 のクロック出力指定 が許可のときに有効となります。 P75 汎用入出力ポートです。 SIN4 UART4 のデータ入力です。UART4 が入力動作をしている間は , この入 力を随時使用していますので意図的に行うとき以外はポートによる出 力を停止させておく必要があります。 111 D 汎用入出力ポートです。 P80 SOUT4 112 D 汎用入出力ポートです。 P81 SCK4 113 D SCL0 D SDA0 D SCL1 D SDA1 D SCL2 K SDA2 K P93 I2C バス用クロック入出力端子です。この機能は I2C が動作許可のとき に有効となります。意図的に行うとき以外はポートによる出力を停止さ せておく必要があります ( 疑似オープンドレイン出力 )。 汎用入出力ポートです。 P92 119 I2C バス用データ入出力端子です。この機能は I2C が動作許可のときに 有効となります。意図的に行うとき以外はポートによる出力を停止させ ておく必要があります ( 疑似オープンドレイン出力 )。 汎用入出力ポートです。 P91 118 I2C バス用クロック入出力端子です。この機能は I2C が動作許可のとき に有効となります。意図的に行うとき以外はポートによる出力を停止さ せておく必要があります ( 疑似オープンドレイン出力 )。 汎用入出力ポートです。 P90 117 I2C バス用データ入出力端子です。この機能は I2C が動作許可のときに 有効となります。意図的に行うとき以外はポートによる出力を停止させ ておく必要があります ( 疑似オープンドレイン出力 )。 汎用入出力ポートです。 P84 116 I2C バス用クロック入出力端子です。この機能は I2C が動作許可のとき に有効となります。意図的に行うとき以外はポートによる出力を停止さ せておく必要があります ( 疑似オープンドレイン出力 )。 汎用入出力ポートです。 P83 115 UART4 のクロック入出力です。この機能は UART4 のクロック出力指定 が許可のときに有効となります。 汎用入出力ポートです。 P82 114 UART4 のデータ出力です。この機能は UART4 のデータ出力指定が許可 のときに有効となります。 I2C バス用データ入出力端子です。この機能は I2C が動作許可のときに 有効となります。意図的に行うとき以外はポートによる出力を停止させ ておく必要があります ( 疑似オープンドレイン出力 )。 汎用入出力ポートです。 13 第 1 章 概要 表 1.5-1 端子機能一覧 (6 / 10) 端子名 入出力 回路 SCL3 120 K P94 K SCL4 K SDA4 K 128 ∼ 131 NMI B NMI(Non Maskable Interrupt) 入力です。 G 外部割込み入力です。対応する外部割込みを許可している間は , この入 力を随時使用していますので意図的に行うとき以外はポートによる出 力を停止させておく必要があります。 INT0 ∼ INT3 PA0 ∼ PA3 汎用入出力ポートです。 INT4 132 G INT5 ∼ INT7 G PA5 ∼ PA7 G PB0 14 外部割込み入力です。対応する外部割込みを許可している間は , この入 力を随時使用していますので意図的に行うとき以外はポートによる出 力を停止させておく必要があります。 汎用入出力ポートです。 INT8 136 外部割込み入力です。対応する外部割込みを許可している間は , この入 力を随時使用していますので意図的に行うとき以外はポートによる出 力を停止させておく必要があります。 USB 機能が有効な場合 (MOD=0000B), INT4 機能は USB の割込み専用と して使用されますので外部割込み端子としては使用できなくなります。 汎用入出力ポートです。 PA4 133 ∼ 135 I2C バス用データ入出力端子です。この機能は I2C が動作許可のときに 有効となります。意図的に行うとき以外はポートによる出力を停止させ ておく必要があります ( 疑似オープンドレイン出力 ) 。 汎用入出力ポートです。 P97 127 I2C バス用クロック入出力端子です。この機能は I2C が動作許可のとき に有効となります。意図的に行うとき以外はポートによる出力を停止さ せておく必要があります ( 疑似オープンドレイン出力 ) 。 汎用入出力ポートです。 P96 123 I2C バス用データ入出力端子です。この機能は I2C が動作許可のときに 有効となります。意図的に行うとき以外はポートによる出力を停止させ ておく必要があります ( 疑似オープンドレイン出力 ) 。 汎用入出力ポートです。 P95 122 I2C バス用クロック入出力端子です。この機能は I2C が動作許可のとき に有効となります。意図的に行うとき以外はポートによる出力を停止さ せておく必要があります ( 疑似オープンドレイン出力 ) 。 汎用入出力ポートです。 SDA3 121 機能 外部割込み入力です。対応する外部割込みを許可している間は , この入 力を随時使用していますので意図的に行うとき以外はポートによる出 力を停止させておく必要があります。 汎用入出力ポートです。 第 1 章 概要 表 1.5-1 端子機能一覧 (7 / 10) 端子名 入出力 回路 INT9 137 G 外部割込み入力です。対応する外部割込みを許可している間は , この入 力を随時使用していますので意図的に行うとき以外はポートによる出 力を停止させておく必要があります。 INT10 G ATRG 外部割込み入力です。対応する外部割込みを許可している間は , この入 力を随時使用していますので意図的に行うとき以外はポートによる出 力を停止させておく必要があります。 INT11 G FRCK PB3 ICU0 ∼ ICU3 外部割込み入力です。対応する外部割込みを許可している間は , この入 力を随時使用していますので意図的に行うとき以外はポートによる出 力を停止させておく必要があります。 G PB4 ∼ PB7 145 フリ−ランタイマの外部クロック入力端子です。フリーランタイマの外 部クロック入力端子として使用した場合は , この入力を随時使用してい ますので意図的に行うとき以外はポートによる出力を停止させておく 必要があります。 汎用入出力ポートです。 INT12 ∼ INT15 140 ∼ 143 A/D コンバータ外部トリガ入力です。A/D の起動要因として選択した場 合は , この入力を随時使用しますので意図的に行うとき以外はポートに よる出力を停止させておく必要があります。 汎用入出力ポートです。 PB2 139 外部割込み入力です。対応する外部割込みを許可している間は , この入 力を随時使用していますので意図的に行うとき以外はポートによる出 力を停止させておく必要があります。 汎用入出力ポートです。 PB1 138 機能 インプットキャプチャ入力端子です。インプットキャプチャ入力として 選択した場合は , この入力を随意使用しますので意図的に行うとき以外 はポートによる出力を停止しておく必要があります。 汎用入出力ポートです。 USB の+端子です。 UDP USB 146 149 ∼ 152 153 USB の−端子です。 UDM PPG0 ∼ PPG3 PPG ch0 ∼ ch3 のタイマ出力です。 D PC0 ∼ PC3 汎用入出力ポートです。 TOUT0 リロードタイマ 0 のデータ出力です。この機能はポート機能レジスタで リロードタイマ 0 のデータ出力指定が許可のときに有効となります。 TRG0 PC4 D PPG0 タイマの外部トリガ入力です。対応するタイマ入力を許可してい る間は , この入力を随時使用していますので意図的に行うとき以外は ポートによる出力を停止させておく必要があります。 汎用入出力ポートです。 15 第 1 章 概要 表 1.5-1 端子機能一覧 (8 / 10) 端子名 入出力 回路 TOUT1 154 D リロードタイマ 2 のデータ出力です。この機能はポート機能レジスタで リロードタイマ 2 のデータ出力指定が許可のときに有効となります。 TOUT2 IOWR D DMA フライバイ転送時のライトストローブ出力です。この機能は DMA フライバイ転送ライトストローブ出力指定が許可のときに有効となり ます。 PC6 汎用入出力ポートです。 RIN PWC の入力です。対応する外部割込みを許可している間は , この入力 を随時使用していますので意図的に行うとき以外はポートによる出力 を停止させておく必要があります。 156 D IORD DREQ0 157 D DACK0 D DEOP0 D DMA 外部転送終了出力です。この機能は DMA の外部転送終了出力指 定が許可のときに有効となります。 汎用入出力ポートです。 PD2 DREQ1 160 DMA 外部転送要求受付け出力です。この機能は DMA の転送要求受付 け出力指定が許可のときに有効となります。 汎用入出力ポートです。 PD1 159 DMA 外部転送要求入力です。対応する DMA 外部転送要求入力を許可 している間は , この入力を随時使用していますので意図的に行うとき以 外はポートによる出力を停止させておく必要があります。 汎用入出力ポートです。 PD0 158 DMA フライバイ転送時のリードストローブ出力です。この機能は DMA フライバイ転送リードストローブ出力指定が許可のときに有効となり ます。 汎用入出力ポートです。 PC7 16 リロードタイマ 1 のデータ出力です。この機能はポート機能レジスタで リロードタイマ 1 のデータ出力指定が許可のときに有効となります。 汎用入出力ポートです。 PC5 155 機能 D DMA 外部転送要求入力です。対応する DMA 外部転送要求入力を許可 している間は , この入力を随時使用していますので意図的に行うとき以 外はポートによる出力を停止させておく必要があります。 USB を使用する場合は , 本機能 (DMAC ch1) は USB のデータ転送とし て使用されますので使用できなくなります。DREQ2 入力は無効となり ます。 TIN0 リロードタイマ入力です。対応するタイマ入力を許可している間は , こ の入力を随時使用していますので意図的に行うとき以外はポートによ る出力を停止させておく必要があります。 PD3 汎用入出力ポートです。 第 1 章 概要 表 1.5-1 端子機能一覧 (9 / 10) 端子名 入出力 回路 DACK1 161 D 機能 DMA 外部転送要求受付け出力です。この機能は DMA の転送要求受付 け出力指定が許可のときに有効となります。 USB を使用する場合は , 本機能 (DMAC ch1) は USB のデータ転送とし て使用されますので使用できなくなります。DMA の外部転送 ACK 出 力指定を禁止にしてください。 TIN1 リロードタイマ入力です。対応するタイマ入力を許可している間は , こ の入力を随時使用していますので意図的に行うとき以外はポートによ る出力を停止させておく必要があります。 PD4 汎用入出力ポートです。 DEOP1 162 D DMA 外部転送終了出力です。この機能は DMA の外部転送終了出力指 定が許可のときに有効となります。 USB を使用する場合は , 本機能 (DMAC ch1) は USB のデータ転送とし て使用されますので使用できなくなります。DMA の外部転送 EOP 出力 指定を禁止にしてください。 TIN2 リロードタイマ入力です。対応するタイマ入力を許可している間は , こ の入力を随時使用していますので意図的に行うとき以外はポートによ る出力を停止させておく必要があります。 PD5 汎用入出力ポートです。 DREQ2 163 D PPG1 の外部トリガ入力です。対応するタイマ入力を許可している間 は , この入力を随時使用していますので意図的に行うとき以外はポート による出力を停止させておく必要があります。 TRG1 汎用入出力ポートです。 PE0 DACK2 164 D TRG2 PE1 DMA 外部転送要求入力です。対応する DMA 外部転送要求入力を許可 している間は , この入力を随時使用していますので意図的に行うとき以 外はポートによる出力を停止させておく必要があります。 USB を使用する場合は , 本機能 (DMAC ch2) は USB のデータ転送とし て使用されますので使用できなくなります。DREQ2 入力は無効となり ます。 DMA 外部転送要求受付け出力です。この機能は DMA の転送要求受付 け出力指定が許可のときに有効となります。 USB を使用する場合は , 本機能 (DMAC ch2) は USB のデータ転送とし て使用されますので使用できなくなります。DMA の外部転送 ACK 出 力指定を禁止にしてください。 PPG2 の外部トリガ入力です。対応するタイマ入力を許可している間 は , この入力を随時使用していますので意図的に行うとき以外はポート による出力を停止させておく必要があります。 汎用入出力ポートです。 17 第 1 章 概要 表 1.5-1 端子機能一覧 (10 / 10) 入出力 回路 端子名 DEOP2 165 D TRG3 PE2 機能 DMA 外部転送終了出力です。この機能は DMA の外部転送終了出力指 定が許可のときに有効となります。 USB を使用する場合は , 本機能 (DMAC ch2) は USB のデータ転送とし て使用されますので使用できなくなります。DMA の外部転送 EOP 出力 指定を禁止にしてください。 PPG3 の外部トリガ入力です。対応するタイマ入力を許可している間 は , この入力を随時使用していますので意図的に行うとき以外はポート による出力を停止させておく必要があります。 汎用入出力ポートです。 表 1.5-2 端子機能一覧 ( 電源・GND 端子 ) 端子名 18 機能 GND 端子です。すべて同電位でお使いください。 2, 13, 34, 53, 65, 97, 125, 147, 167 VSS 3, 14, 35, 54, 67, 98, 126, 148, 168 VDDI 1.8V 系電源端子です。すべて同電位でお使いください。 1, 12, 33, 52, 63, 96, 124, 144, 166 VDDE 3.3V 系電源端子です。すべて同電位でお使いください。 73 AVCC A/D コンバータ用アナログ電源端子です。 74 AVRH A/D コンバータ用の基準電源端子です。 75 AVSS A/D コンバータ用アナログ GND 端子です。 第 1 章 概要 1.6 入出力回路形式 MB91305 の入出力回路形式を示します。 ■ 入出力回路形式 表 1.6-1 入出力回路形式 (1 / 5) 分類 A 回路形式 備考 発振帰還抵抗 約 1MΩ X1 クロック入力 X0 スタンバイ制御 B プルアップ抵抗付き CMOS レベルヒステリシス入力 プルアップ抵抗値=約 33kΩ (Typ) デジタル入力 C • CMOS レベル入出力 スタンバイ制御あり • IOL= 4mA デジタル出力 デジタル出力 デジタル入力 スタンバイ制御 19 第 1 章 概要 表 1.6-1 入出力回路形式 (2 / 5) 分類 回路形式 備考 D デジタル出力 • CMOS レベル出力 CMOS レベルヒステリシス入力 スタンバイ制御あり • IOL= 4mA デジタル出力 デジタル入力 スタンバイ制御 E CMOS レベル入力 スタンバイ制御なし デジタル入力 F デジタル出力 デジタル出力 アナログ入力 デジタル入力 スタンバイ制御 20 • CMOS レベル出力 • CMOS レベルヒステリシス入力 スタンバイ制御あり • アナログ入力付き • IOL= 4mA 第 1 章 概要 表 1.6-1 入出力回路形式 (3 / 5) 分類 G 回路形式 備考 プルアップ制御 デジタル出力 • プルアップコントロール付き • プルアップ抵抗値=約 33kΩ (Typ) • CMOS レベル出力 • CMOS レベルヒステリシス入力 スタンバイ制御なし • IOL= 4mA デジタル出力 デジタル入力 H CMOS レベル出力 デジタル出力 デジタル出力 I CMOS レベルヒステリシス入力 スタンバイ制御なし デジタル入力 J CMOS ヒステリシス入力 プルダウン抵抗付き デジタル入力 21 第 1 章 概要 表 1.6-1 入出力回路形式 (4 / 5) 分類 回路形式 備考 K オープンドレイン制御 I2C 用 3 ポート CMOS ヒステリシス入力 CMOS 出力 ストップ制御付き デジタル出力 デジタル入力 制御 デジタル入力 制御 オープンドレイン制御 デジタル出力 デジタル入力 オープンドレイン制御 デジタル出力 L プルダウン制御 デジタル出力 デジタル出力 デジタル入力 22 CMOS 入出力 プルダウン制御付き 第 1 章 概要 表 1.6-1 入出力回路形式 (5 / 5) 分類 回路形式 備考 M アナログ端子 アナログ入力 23 第 1 章 概要 24 第2章 デバイスの取扱いについて MB91305 の取扱い上の注意について説明します。 2.1 デバイスの取扱いについて 25 第 2 章 デバイスの取扱いについて 2.1 デバイスの取扱いについて ラッチアップ防止 , 端子処理 , 電源投入 / 切断時の注意事項 , クロックおよび制限事 項について説明します。 ■ ラッチアップ防止のために CMOS IC では , 入力端子や出力端子に VDDE 端子または VDDI 端子より高い電圧や VSS より低い電圧を印加した場合 , または VDDE 端子と VSS 端子との間または VDDI 端子と VSS 端子との間に定格を超える電圧を印加した場合に , ラッチアップ現象を生 じることがあります。ラッチアップが生じると電源電流が激増し , 素子の熱破壊に至る ことがありますので使用に際しては最大定格を超えることのないよう十分に注意して ください。 ■ 未使用入力端子の処理について 使用していない入力端子を開放のままにしておくと誤動作の原因となることがありま すので , プルアップまたはプルダウンの処理をしてください。 ■ 電源端子について VDDE 端子または VDDI 端子 , VSS 端子が複数ある場合 , デバイス設計上はラッチアッ プなどの誤動作を防止するためにデバイス内部で同電位にすべきものどうしを接続し てありますが , 不要輻射の低減・グランドレベルの上昇によるストローブ信号の誤動作 の防止・総出力電流規格の遵守などのため , 必ずそれらすべてを外部で電源およびグラ ンドに接続してください。また , 電流供給源からできる限り低インピーダンスで本デバ イスの VDDE 端子または VDDI 端子 , VSS 端子に接続するような配慮をお願いします。 さらに , 本デバイスの近くで , VDDE 端子と VSS 端子との間または VDDI 端子と VSS 端 子との間に0.1 µF程度のセラミックコンデンサをバイパスコンデンサとして接続するこ とをお勧めします。 ■ 水晶発振回路について X0 端子 , X1 端子の近辺のノイズは本デバイスの誤動作の原因となります。X0 端子 , X1 端子および水晶発振子 ( あるいはセラミック発振子 ), さらにグランドへのバイパス コンデンサはできる限り近くに配置するようにプリント板を設計してください。また , X0 端子 , X1 端子の周りをグランドで囲むようなプリント板アートワークは安定した動 作を期待できますので , 強くお勧めします。 各量産品において , ご使用される発振子メーカに発振評価依頼をしてください。 ■ モード端子 (MD0 ∼ MD3) について これらの端子は , ノイズにより誤ってテストモードに入ってしまうことを防ぐために , VDDE 端子用の電源または VSS 端子用電源との間のパターン長をできる限り短く , 低 インピーダンスで接続するようにしてください。 ■ ツールリセット端子 (TRST) について この端子はツールを使用しない場合 , 必ず INIT 端子と同じ信号を入力してください。 量産品におきましても同様な処理をお願いします。 26 第 2 章 デバイスの取扱いについて ■ 電源投入時について 電源投入直後は , 必ず INIT 端子にて設定初期化リセット (INIT) を行ってください。 また , 電源投入直後は , 発振回路の発振安定待ち時間を確保するため , INIT 端子への "L" レベル入力を発振回路の要求する安定待ち時間の間持続してください (INIT 端子に よる INIT では , 発振安定待ち時間の設定は最小値に初期化されています ) 。 ■ 電源投入時の原発振入力について 電源投入時は , 必ず発振安定待ち解除されるまでの間 , クロックを入力してください。 ■ 電源投入 / 切断時の注意事項 ● VDDI 端子の電源と VDDE 端子の電源の電源投入 / 切断時の注意事項 VDDI 端子の電源が切断されている条件で VDDE 端子の電源のみを継続的 (1 分間を目 安 ) に印加することは , LSI の信頼性上の問題がありますので避けてください。 VDDE 端子の電源を OFF 状態から ON 状態に復帰させる際には , 電源ノイズなどの影 響により , 回路の内部状態が保持できない場合があります。 投入時 VDDI 端子の電源→ アナログ→ VDDE 端子の電源→信号 切断時 信号→ VDDE 端子の電源→アナログ→ VDDI 端子の電源 ● 電源投入時の不定出力について 電源投入時は内部電源が安定するまでの間 , 出力端子が不定となる可能性があります。 ■ クロックについて ● 外部クロック使用時の注意について 外部クロックを使用する際には , X0 端子のみの供給で使用できます。X1 端子は開放と してください。 下図に , 外部クロック使用方法例について示します。 図 2.1-1 外部クロック使用方法 X0 開放 X1 MB91305 <注意事項> X0 端子の信号に対して X1 端子は , 10MHz のときに 15ns 以内の遅延となるように設計し てください。 ■ 制限事項 ○ MB91305 共通 ● クロック制御部 INIT 端子への "L" 入力時には , 発振安定待ち時間を確保してください。 ● ビットサーチモジュール 0 検出用データレジスタ (BSD0) , 1 検出用データレジスタ (BSD1) , 変化点検出用デー タレジスタ ( BSDC) はワードアクセスのみです。 27 第 2 章 デバイスの取扱いについて ● I/O ポート ポートへのアクセスはバイトアクセスのみです。 ● 低消費電力モード • スタンバイモードに入れる場合は , 同期スタンバイモード (TBCR: タイムベースカ ウンタ制御レジスタの bit 8:SYNCS ビットにて設定します ) を使用した上で , 以下 のシーケンスを必ず使用してください。 /* STCR ライト */ ; STCR レジスタ (0x0481) ldi #_STCR, r0 ldi #Val_of_Stby, rl ; Val_of_Stby は , STCR へのライトデータ stb rl, @r0 ; STCR へのライト /* CTBR ライト */ ldi #_CTBR, r2 ; CTBR レジスタ (0x0483) ldi #0xA5, rl ; クリアコマンド (1) stb rl, @r2 ; CTBR への A5H ライト ldi #0x5A, rl ; クリアコマンド (2) stb rl, @r2 ; CTBR への 5AH ライト /* ここでタイムベースカウンタクリア */ ldub @r0, rl ; STCR リード /* 同期スタンバイ遷移開始 */ ldub nop @r0, rl ; STCR ダミーリード ; タイミング調整用 NOP × 5 nop nop nop nop • モニタデバッガを使用される場合は , 以下のことを行わないでください。 - 上記命令列に対して , ブレークポイントを設定 - 上記命令列に対して , ステップ実行 28 第 2 章 デバイスの取扱いについて ● プリフェッチ リトルエンディアンに設定した領域に対して , プリフェッチを許可する場合 , 該当する 領域へのアクセスは , ワード (32 ビット ) 長アクセス限定としてください。 バイト / ハーフワードアクセスでは , 正しくアクセスできません。 ● PS レジスタに関する注意事項 一部の命令で PS レジスタを先行処理しているため , 下記の例外動作により , デバッガ 使用時に割込み処理ルーチンでブレークしたり , PS フラグの表示内容が更新されたり する場合があります。 いずれの場合も , EIT から復帰後以降に , 正しく再処理を行うように設計されています ので , EIT 前後の動作は仕様どおりの処理を行います。 1. DIVOU/DIVOS 命令の直前の命令で , (a) ユーザ割込みを受け付けた場合 , (b) ステッ プ実行を行った場合, (c)データイベントまたはエミュレータメニューにてブレーク した場合 , 以下のような動作を行う場合があります。 (1) D0, D1 フラグが先行して更新されます。 (2) EIT 処理ルーチン ( ユーザ割込み・NMI, またはエミュレータ ) を実行します。 (3) EIT から復帰後 , DIVOU/DIVOS 命令が実行され , D0/D1 フラグが (1) と同じ値に 更新されます。 2. ユーザ割込み・NMI 要因が発生している状態で , 割込みを許可するために ORCCR, STILM, MOV Ri, PS の各命令が実行されると , 以下のような動作を行います。 (1) PS レジスタが先行して更新されます。 (2) EIT 処理ルーチン ( ユーザ割込み・NMI) を実行します。 (3) EIT から復帰後 , 上記命令が実行され , PS レジスタが (1) と同じ値に更新されま す。 ● ウォッチドッグタイマ機能について 本品種が備えているウォッチドッグタイマ機能は , プログラムが一定時間内にリセッ ト延期動作を行うことを監視し , プログラムの暴走によりリセット延期動作が行われ なかったときに , CPU をリセットするための機能です。そのため , いったんウォッチ ドッグタイマ機能を有効にすると , リセットをかけるまで動作を続けます。 例外として , CPU のプログラム実行が停止する条件では自動的にリセット延期を行い ます。この例外にあてはまる条件については , ウォッチドッグタイマの機能説明の項を 参照してください。 なお , システムの暴走により上記状態となってしまった場合 , ウォッチドッグリセット が発生しない可能性があります。その場合 , 外部 INIT 端子よりリセット (INIT) をかけ てください。 ● A/D 使用時の注意について MB91305 は A/D コンバータを内蔵しておりますが , その AVCC 端子には VDDE 端子 より高い電圧を供給しないでください。 29 第 2 章 デバイスの取扱いについて ● 同期モードのソフトウェアリセットについて 同期モードのソフトウェアリセットを使用するときは , STCR ( スタンバイ制御レジス タ ) の SRST ビットに "0" を設定する前に , 以下 2 つの条件を必ず満たしてください。 • 割込み許可フラグ (I-Flag) を割込み禁止 (I-Flag=0) に設定します。 • NMI を使用しません。 ● ソフトウェアブレークとユーザ割込み /NMI 同時発生 ソフトウェアブレークとユーザ割込み /NMI が同時に発生した場合 , エミュレータデ バッガにて , 以下の現象が発生することがあります。 • 設定したブレークポイントでないところを示して停止します。 • 停止後の再実行が正しく行われません。 本現象が発生した場合は , ソフトウェアブレークではなく , ハードウェアブレークをご 使用ください。また , モニタデバッガをご使用の場合は , 該当箇所にブレークを設定し ないようにしてください。 ● RETI 命令のステップ実行 ステップ実行する際 , 割込みが頻繁に発生する環境下では , RETI をステップ実行後に 該当割込み処理ルーチンだけを繰り返して実行します。その結果 , メインルーチンや割 込みレベルの低いプログラムの実行が行われなくなります。これを回避するためには , RETI 命令をステップ実行しないでください。また , 該当割込みルーチンのデバッグが 不要になった段階で , 該当割込みを禁止してデバッグを行ってください。 ● オペランドブレークについて スタックポインタのアドレスを含む領域に対するアクセスをデータイベントブレーク の対象に設定しないでください。 ● コンフィグレーション用バッチファイル例 内部 RAM にプログラムをダウンロードしてデバッグを実行する場合 , リセットをかけ た後は必ず下記バッチファイルを実行してください。 #---------------------------------------------------------------------------# Set MODR (0x7fd) = Enable In memory + 16bit External Bus set mem/byte 0x7fd=0x5 #------------------------------------------------------------------------------ 30 第3章 CPU および制御部 FR ファミリの CPU コアの機能を知るために , アーキテクチャ , 仕様 , 命令などの基本的なことに ついて説明します。 3.1 メモリ空間 3.2 内部アーキテクチャ 3.3 命令キャッシュ 3.4 プログラミングモデル 3.5 データ構造 3.6 メモリマップ 3.7 分岐命令 3.8 EIT ( 例外・割込み・トラップ ) 3.9 動作モード 3.10 リセット ( デバイス初期化 ) 3.11 クロック生成制御 3.12 デバイス状態制御 31 第 3 章 CPU および制御部 3.1 メモリ空間 FR ファミリの論理アドレス空間は 4G バイト (232 番地 ) あり , CPU はリニアにアク セスを行います。 ■ ダイレクトアドレッシング領域 アドレス空間の下記の領域は I/O 用に使用されます。 この領域をダイレクトアドレッシング領域とよび , 命令中で直接オペランドのアドレ スを指定できます。 ダイレクト領域は , アクセスするデータのサイズにより , 以下のように異なります。 • バイトデータアクセス:000H ∼ 0FFH • ハーフワードアクセス:000H ∼ 1FFH • ワードデータアクセス:000H ∼ 3FFH ■ メモリマップ 図 3.1-1 に , MB91305 のメモリ空間を示します。 図 3.1-1 メモリマップ 外ROM外バスモード 0000 0000H I/O 0000 0400H 0001 0003 0000H 0000H 0004 0005 0000H 0000H 0006 0000H 0007 0000H I/O ダイレクト アドレッシング領域 I/Oマップを参照 アクセス禁止 内蔵RAM アクセス禁止 外部領域 USBファンクション CS2領域で固定 外部領域 FFFF FFFFH <注意事項> MB91305 の内蔵 RAM の領域は , "0003 0000H" ∼ "0003 FFFFH" となります。 32 第 3 章 CPU および制御部 3.2 内部アーキテクチャ FR ファミリの内部アーキテクチャの構造および命令概要について説明します。 ■ 内部アーキテクチャの概要 FR ファミリ CPU は , RISC アーキテクチャを採用すると同時に , 組込み用途に向けた 高機能命令を導入した高性能コアです。 33 第 3 章 CPU および制御部 3.2.1 内部アーキテクチャ 内部アーキテクチャの特長および構造について説明します。 ■ 内部アーキテクチャの特長 • RISC アーキテクチャの採用 基本命令 1 命令 1 サイクル • 32 ビットアーキテクチャ 汎用レジスタ 32 ビット× 16 本 • 4G バイトのリニアなメモリ空間 • 乗算器の搭載 32 ビット× 32 ビット乗算 5 サイクル 16 ビット× 16 ビット乗算 3 サイクル • 割込み処理機能の強化 高速応答速度 (6 サイクル ) 多重割込みのサポート レベルマスク機能 (16 レベル ) • I/O 操作用命令の強化 メモリ - メモリ転送命令 ビット処理命令 • 高いコード効率 基本命令語長 16 ビット • 低消費電力 スリープモード / ストップモード • ギア機能 34 第 3 章 CPU および制御部 ■ 内部アーキテクチャの構造 FR ファミリの CPU は命令バスとデータバスが独立したハーバードアーキテクチャ構 造を採用しています。 32 ビット←→ 16 ビットバスコンバータは 32 ビットバス (F-bus) に接続され , CPU と周 辺リソースとのインタフェースを実現します。 ハーバード←→プリンストン バスコンバータは I-bus, D-bus 双方に接続され , CPU とバ スコントローラとのインタフェースを実現します。 図 3.2-1 に内部アーキテクチャの構造を示します。 図 3.2-1 内部アーキテクチャの構造 FRex CPU D-bus I-bus 32 Iアドレス ハーバード 32 外部アドレス 24 Iデータ 外部データ 32 Dアドレス 16 プリンストン バス Dデータ 32 32ビット アドレス 32 16ビット データ 32 コンバータ バスコンバータ 16 F-bus R-bus 周辺リソース 内部I/O バスコントローラ F-bus RAM 35 第 3 章 CPU および制御部 ■ CPU CPU は 32 ビット RISC の FR アーキテクチャをコンパクトにインクリメントしたもの です。1 サイクルあたり 1 命令の実行を行うため , 5 段階の命令パイプライン方式を採 用しています。パイプラインは以下のステージから構成されています。 図 3.2-2 に , 命令パイプラインの構成を示します。 • 命令フェッチ (IF) ……命令アドレスを出力し , 命令をフェッチします。 • 命令デコード (ID) ……フェッチした命令をデコードします。レジスタの読出しも行 います。 • 実行 (EX)……………… 演算を実行します。 • メモリアクセス (MA)…メモリに対するロードまたはストアのアクセスを行います。 • ライトバック (WB) ……演算結果 (またはロードされたメモリデータ) をレジスタに 書き込みます。 図 3.2-2 命令パイプライン CLK 命令1 WB 命令2 MA WB 命令3 EX MA WB 命令4 ID EX MA WB 命令5 IF ID EX MA WB IF ID EX MA 命令6 WB 命令は , 順不同で実行されることはありません。すなわち , 命令 A が命令 B の前にパ イプラインに入ると , 命令 A は必ず命令 B の前にライトバックステージに達します。 命令の実行は , 原則として 1 サイクルあたり 1 命令の速度で行われます。ただし , メモ リウェイトを伴ったロード・ストア命令 , 遅延スロットを持たない分岐命令 , 複数サイ クル命令では命令の実行に複数のサイクルが必要となります。また , 命令の供給が遅い 場合も命令の実行速度が低下します。 ■ 32 ビット←→ 16 ビットバスコンバータ 32 ビット←→ 16 ビットバスコンバータは , 32 ビット幅で高速アクセスされる F-bus と , 16 ビット幅でアクセスされる R-bus とのインタフェースを行い , CPU から内蔵周辺回 路へのデータアクセスを実現します。 CPU から R-bus に対し 32 ビット幅のアクセスがあった場合 , このバスコンバータがそ れを 2 回の 16 ビット幅アクセスに変換してアクセスを行います。内蔵周辺回路の一部 にはアクセス幅に関して制限のあるものがあります。 36 第 3 章 CPU および制御部 ■ ハーバード←→プリンストン バスコンバータ ハーバード←→プリンストン バスコンバータは , CPU の命令アクセスとデータアクセ スの整合をとり , 外部バスとのスムーズなインタフェースを実現します。 CPU は命令バスとデータバスが独立したハーバードアーキテクチャ構造です。一方 , 外部バスの制御を行うバスコントローラは単一バスのプリンストンアーキテクチャ構 造です。このバスコンバータは CPU の命令アクセスとデータアクセスに優先順位をつ け , バスコントローラへのアクセスの制御を行います。この働きにより , 外部へのバス アクセス順位が常に最適化されたものになります。 37 第 3 章 CPU および制御部 3.2.2 命令概要 FR ファミリは , 一般的な RISC の命令体系に加え , 組込み用途に最適化された論理 演算とビット操作およびダイレクトアドレッシング命令をサポートしています。命 令セットの一覧は「付録 F 命令一覧」に示します。 各命令は 16 ビット長 ( 一部命令は 32 ビット , 48 ビット長 ) ですので , 優れたメモ リ使用効率を持ちます。 命令セットは以下の機能グループに分けることができます。 • 算術演算 • ロードとストア • 分岐 • 論理演算とビット操作 • ダイレクトアドレッシング • その他 ■ 算術演算 標準の算術演算命令 ( 加算 , 減算 , 比較 ) およびシフト命令 ( 論理シフト , 算術演算シフ ト ) があります。加算と減算については , 多ワード長演算で使用するキャリ付き演算や , アドレス計算に便利なフラグ値を変化させない演算も可能です。さらに , 32 ビット× 32 ビット , 16 ビット× 16 ビットの乗算命令と , 32 ビット÷ 32 ビットのステップ除算 命令を持ちます。また , レジスタに即値をセットする即値転送命令や , レジスタ間転送 命令も備えています。 算術演算命令はすべて CPU 内の汎用レジスタおよび乗除算レジスタを用いて演算を行 います。 ■ ロードとストア ロードとストアは外部メモリに対して読出しと書込みを行う命令です。また , チップ内 の周辺回路 (I/O) への読出しと書込みにも使用されます。 ロードとストアはバイト , ハーフワード , ワードの 3 種類のアクセス長を持ちます。ま た , 一般的なレジスタ間接のメモリアドレッシングに加え , 一部の命令についてはディ スプレースメント付きレジスタ間接やレジスタインクリメント・デクリメント付きレ ジスタ間接のメモリアドレッシングも可能です。 ■ 分岐 分岐 , コール , 割込みおよび復帰の命令です。分岐命令は , 遅延スロットを持つものと 持たないものがあり , 用途に応じて最適化を行うことができます。分岐命令の詳細につ いては後述します。 ■ 論理演算とビット操作 論理演算命令は汎用レジスタ間または汎用レジスタとメモリ ( および I/O) 間で AND, OR, EOR の論理演算を行うことが可能です。また , ビット操作命令はメモリ ( およ び I/O) の内容を直接操作することができます。 メモリアドレッシングは一般的なレジスタ間接です。 38 第 3 章 CPU および制御部 ■ ダイレクトアドレッシング ダイレクトアドレッシング命令は , I/O と汎用レジスタ間または I/O とメモリ間のアク セスに使用する命令です。I/O のアドレスをレジスタ間接ではなく命令中で直接指定す ることにより , 高速 , 高効率なアクセスを行うことができます。一部の命令については レジスタインクリメント・デクリメント付きレジスタ間接のメモリアドレッシングも 可能です。 ■ その他の命令概要 PS レジスタ内のフラグ設定 , スタック操作 , 符号 / ゼロ拡張などを行う命令です。また , 高級言語対応の関数入口 / 出口 , レジスタマルチロード / ストア命令も備えています。 39 第 3 章 CPU および制御部 3.3 命令キャッシュ 命令キャッシュの概要 , 各動作モード , キャッシュ可能領域 , および I-Cache 使 用時の設定方法について説明します。 ■ 命令キャッシュの概要 命令キャッシュは , 一時記憶メモリです。命令コードを外部の低速メモリからアクセス する場合 , 一度アクセスしたコードを内部に保持する役目を果たし , 2 回目以降のアク セス速度を速めるために使用します。 40 第 3 章 CPU および制御部 3.3.1 概要 命令キャッシュの構成 , およびレジスタ構成について説明します。 命令キャッシュデータ RAM は , RAM モードに設定することによりソフトウェアで直 接リード・ライトアクセスができるようになります。また , 命令キャッシュを一度 ON してから OFF にする場合には , 必ず「3.3.4 I-Cache を使用するときの設定方法」に記 載されているサブルーチンをご使用ください。 ■ 本体構成 • FR ファミリの基本命令長 : 2 バイト • ブロックの配置方式 : 2 ウェイセットアソシアティブ方式 • ブロック : 1 ウェイは 128 ブロック構成 1 ブロックは 16 バイト (= 4 サブブロック ) 1 サブブロックは 4 バイト (= 1 バスアクセス単位 ) 図 3.3-1 に命令キャッシュの構成を , また図 3.3-2 に命令キャッシュタグを示します。 図 3.3-1 命令キャッシュの構成 4 バイト ウェイ 1 4 バイト I3 4 バイト I2 4 バイト I1 4 バイト I0 キャッシュタグ サブブロック 3 サブブロック 2 サブブロック 1 サブブロック 0 ブロック 0 ・ ・ ・ キャッシュタグ サブブロック 3 サブブロック 2 サブブロック 1 サブブロック 0 ブロック 127 キャッシュタグ サブブロック 3 サブブロック 2 サブブロック 1 サブブロック 0 ブロック 0 128 ブロック ウェイ 2 ・ 128 ブロック ・ ・ キャッシュタグ サブブロック 3 サブブロック 2 サブブロック 1 サブブロック 0 ブロック 127 41 第 3 章 CPU および制御部 図 3.3-2 命令キャッシュタグ ウェイ 1 31 9 8 アドレスタグ 空き 07 06 05 04 03 02 01 00 SBV3 SBV2 SBV1 SBV0 TAGV 空き LRU ETLK ウェイ 2 31 9 8 アドレスタグ 空き 07 06 05 04 03 02 SBV3 SBV2 SBV1 SBV0 TAGV 01 空き 00 ETLK [bit 31 ∼ bit 9] アドレスタグ 対応するブロックにキャッシュされている命令のメモリアドレスの上位 23 ビット がストアされています。 ブロック i のサブブロック k に格納されている命令データのメモリアドレス IA は , IA =アドレスタグ × 29 + i × 24 + k × 22 となります。 CPU からアクセス要求された命令アドレスの一致を検査するために使用します。タ グ検査の結果に従い , 以下のような動作をします。 • 要求された命令データがキャッシュ内に存在するとき ( ヒット ) , キャッシュか ら CPU へサイクル内にデータを転送します。 • 要求された命令データがキャッシュ内に存在しないとき ( ミス ) , 外部アクセス で取得されたデータを CPU とキャッシュが同時に取得します。 [bit 7 ∼ bit 4] SBV3 ∼ SBV0 : サブブロックバリッド SBV3 ∼ SBV0 = 1 のとき , 対応するサブブロックにタグで示されたアドレスの現 行命令データがエントリされています。サブブロックには , 通常 2 命令が格納され ます ( 即値転送命令を除く ) 。 [bit 3] TAGV : TAG バリットビット アドレスタグの値が有効かどうかを示します。このビットが"0"のときはサブバリッ トビットとは無関係に , このブロックはインバリット状態になります ( フラッシュ 時)。 [bit 1] LRU ( ウェイ 1 のみ ) ウェイ 1 の命令キャッシュタグにのみ存在します。選択されたセットについて , 最 後にアクセスしたエントリがウェイ 1, 2 のどちらであるかを示します。LRU = 1 の ときはウェイ 1 の , LRU = 0 のときはウェイ 2 のセットのエントリが最後にアクセ スしたことを示します。 42 第 3 章 CPU および制御部 [bit 0] ETLK : エントリロック タグに相当するブロック内の全エントリをキャッシュにロックします。ETLK = 1 のときにロック状態で , キャッシュミス時にエントリは更新されません。ただし , 無効なサブブロックは更新されます。 ウェイ 1, 2 ともにエントリロックされているときにキャッシュミスした場合は , キャッシュミス判定の 1 サイクルをロスした後 , 外部メモリをアクセスします。 ■ 制御レジスタ構成 ● ISIZE :I-cache SIZE ISIZE レジスタのレジスタ構成は , 以下のとおりです。 図 3.3-3 ISIZE ISIZE bit 7 6 5 4 3 2 アドレス 00000307H - - - - - - SIZE1 SIZE0 ------10B - - - - - - (R/W) (R/W) 1 0 初期値 [R/W] [bit 1, bit 0] SIZE1, SIZE0 キャッシュ容量を設定するビットです。設定によりキャッシュサイズと IRAM 容量 , RAM モード時のアドレスマップが図 3.3-5 のように変化します。キャッシュ容量を 変更した場合は , 必ずフラッシュおよびエントリロック解除を行ってからキャッ シュ ON にしてください。 表 3.3-1 SIZE1,SIZE0 設定およびキャッシュ容量値 SIZE1 SIZE0 0 0 1K バイト 0 1 2K バイト 1 0 4K バイト ( 初期値 ) 1 1 設定禁止 キャッシュ容量 ● ICHCR : I-CacHe Control Register ICHCR(I-CacHe Control Register) は , 命令キャッシュの動作を制御します。 ICHCR への書込みは , 以降 3 サイクル以内にフェッチされる命令のキャッシュ動作に 影響を与えません。 ICHCR レジスタのレジスタ構成は , 以下のとおりです。 図 3.3-4 ICHCR ICHCR bit アドレス 000003E7H 7 6 5 4 3 2 1 0 初期値 RAM - GBLK ALFL EOLK ELKR FLSH ENAB 0-000000B (R/W) - (R/W) (R/W) (R/W) (R/W) (R/W) (R/W) [R/W] 43 第 3 章 CPU および制御部 [bit 7] RAM:RAM モード "1" で RAM モードとして動作します。 RAM モード時は , ENAB が "0" でキャッシュ オフとしてください。 [bit 5] GBLK: グローバルロック すべてのカレントエントリをキャッシュにロックします。 GBLK = 1 のとき , キャッ シュ内の有効なエントリはミス時に更新されません。ただし , 無効なサブブロック は更新されます。その際の命令データフェッチ動作は , ロックしていないときと同 様です。 [bit 4] ALFL: オートロックフェイル 既にロックしているエントリをさらにロックしようとすると ALFL = 1 にセットさ れます。エントリオートロック中のエントリの更新が , 既にロックされているエン トリに対して行われようとしたとき , ユーザの意図に反して新たなエントリは キャッシュ中にロックされません。このようなプログラムのデバッグのために参照 します。"0" 書込みでクリアされます。 [bit 3] EOLK: エントリオートロック 命令キャッシュ内の各エントリに対して , オートロッキングの有効・無効を切り換 えます。EOLK = 1 のときにアクセス ( ミス時のみ ) されたエントリは , キャッシュ タグ内のエントリロックビットがハードウェアで "1" にセットされることにより ロックされます。ロックされたエントリは以後 , キャッシュミス時の更新の対象に なりません。ただし , 無効なサブブロックは更新されます。確実にロックするため には一度フラッシュした後 , このビットをセットしてください。 [bit 2] ELKR: エントリロック解除 すべてのキャッシュタグ中のエントリロックビットのクリアを指定します。ELKR = 1 にセットされた次のサイクルで , すべてのキャッシュタグ中のエントリロックビッ トが "0" にクリアされます。ただし , 本ビットの内容が保持されるのは 1 クロック サイクルのみであり , 2 クロックサイクル以降は "0" にクリアされます。 [bit 1] FLSH: フラッシュ 命令キャッシュのフラッシュを指定します。FLSH = 1 のとき , キャッシュの内容 がフラッシュされます。ただし , 本ビットの内容が保持されるのは 1 クロックサイ クルのみであり , 2 クロックサイクル以降は "0" にクリアされます。 [bit 0] ENAB: イネーブル 命令キャッシュのイネーブル・ディセーブルを切り換えます。ENAB = 0 のとき ディセーブル状態で , CPU からの命令アクセスは , キャッシュを介さず外部に対し て直接行われます。ディセーブル状態では , キャッシュの内容は保存されます。 44 第 3 章 CPU および制御部 図 3.3-5 RAM のアドレスマップ キャッシュ off キャッシュ off RAM on RAM off 00010000 H 00010200 H 00010400 H 00010600 H 00010800 H … 00014000 H 00014200 H 00014400 H 00014600 H 00014800 H … 00018000 H 00018200 H 00018400 H 00018600 H 00018800 H … 0001C000 H 0001C200 H 0001C400 H 0001C600 H 0001C800 H キャッシュ 4Kバイト RAM off キャッシュ 4Kバイト RAM on TAG1 キャッシュ 2Kバイト RAM off TAG1 キャッシュ 2Kバイト RAM on キャッシュ 1Kバイト RAM off キャッシュ 1Kバイト RAM on TAG1 TAG1 <TAG1> <TAG1> <TAG1> <TAG1> <TAG1> <TAG1> TAG2 <TAG1> <TAG1> TAG2 TAG2 TAG2 <TAG2> <TAG2> <TAG2> <TAG2> <TAG2> IRAM1 <TAG2> <TAG2> $RAM1 $RAM1 <IRAM1> <$RAM1> <$RAM1> IRAM2 $RAM2 $RAM2 <IRAM2> <$RAM2> <$RAM2> TAG1…TAG RAM(way1) $RAM1…キャッシュ RAM(way1) TAG2…TAG RAM(way2) $RAM2…キャッシュ RAM(way2) < >…ミラー領域です。 RAM ON/OFF…RAMビット= 1/0 <TAG2> $RAM1 IRAM1 IRAM1 <IRAM1> <$RAM1> IRAM1 $RAM1 IRAM1 <IRAM1> <$RAM1> IRAM2 $RAM2 IRAM2 <IRAM2> <$RAM2> $RAM2 IRAM2 IRAM2 <IRAM2> <$RAM2> IRAM1…I-bus RAM(way1) IRAM2…I-bus RAM(way2) Cache RAM TAG RAM <-00x番地のエントリー <-00xのミラー 00010000 H 00010004 H 00010008 H 0001000C H 00010010 H 00010014 H … <-01x番地のエントリー <-01xのミラー … 00018000 H 00018004 H 00018008 H 0001800C H 00018010 H 00018014 H … 000番地の命令(SBV0) 004番地の命令(SBV1) 008番地の命令(SBV2) 00C番地の命令(SBV3) 010番地の命令(SBV0) 014番地の命令(SBV1) … 図 3.3-6 各キャッシュ容量時のメモリ割当て アドレス キャッシュ 4Kバイト キャッシュ 2Kバイト キャッシュ 1Kバイト キャッシュ OFF $RAM1 $RAM1 $RAM1 IRAM1 00000 H 00200 H IRAM1 00400 H IRAM1 00600 H $RAM2 $RAM2 IRAM2 00800 H $RAM2 00A00 H IRAM2 00C00 H IRAM2 00E00 H 図 3.3-7 キャッシュ領域 アドレス 00000000 H ROMA=0 (ROMなし) ダイレクト領域 ダイレクト領域 00010000 H 00020000 H 00030000 H 00040000 H IRAM 00100000 H キャッシュ領域 FFFFFFFF H ROMA=1 (ROMあり) IRAM 内部ROM チップセレクトの領域ごとに キャッシュ領域 非キャッシュ領域に設定する ことができます。 45 第 3 章 CPU および制御部 各動作モードの状態 3.3.2 各動作モード時のキャッシュの状態 , およびキャッシュのエントリ更新について説 明します。 ■ 各動作モード時のキャッシュの状態 ディセーブル / フラッシュはビット操作命令などでそのビットだけ変化させた場合の 状態を示しています。 表 3.3-2 各動作モードの状態 リセット直後 キャッシュ メモリ アドレスタグ サブブロック バリッドビット タ グ LRU エントリロック ビット TAG 内容は不定 内容は不定 内容は不定 内容は不定 内容は不定 内容は不定 バリッドビット RAM グローバル ロック オートロック 制 フェイル 御 エントリ レ オートロック ジ エントリロック ス 解除 タ イネーブル フラッシュ 46 通常モード アンロック フェイルなし アンロック 解除なし ディセーブル 直前の状態を保持 ディセーブル中書換え不可能 直前の状態を保持 ディセーブル中書換え不可能 直前の状態を保持 ディセーブル中書換え不可能 直前の状態を保持 ディセーブル中書換え不可能 直前の状態を保持 ディセーブル中書換え不可能 フラッシュ 直前の状態を保持 直前の状態を保持 直前の状態を保持 直前の状態を保持 エントリロック解除 直前の状態を保持 すべてのエントリが ディセーブル中フラッシュ可能 インバリッド 直前の状態を保持 ディセーブル中フラッシュ可能 直前の状態を保持 ディセーブル中書換え可能 直前の状態を保持 ディセーブル中書換え可能 直前の状態を保持 ディセーブル中書換え可能 直前の状態を保持 ディセーブル中書換え可能 ディセーブル ディセーブル フラッシュ 直前の状態を保持 しない ディセーブル中書換え可能 直前の状態を保持 直前の状態を保持 直前の状態を保持 直前の状態を保持 直前の状態を保持 直前の状態を保持 メモリアクセス直後の サイクルでフラッシュ。 以後 "0" にもどる。 第 3 章 CPU および制御部 ■ キャッシュのエントリ更新 キャッシュのエントリ更新は , 以下の表のように行います。 表 3.3-3 キャッシュのエントリ更新 アンロック ロック ヒット 更新しない 更新しない ミス メモリをロードし, キャッシュ タグミスの場合は更新しない。 のエントリの内容を更新する。 サブブロックインバリッドの場合は更新する。 47 第 3 章 CPU および制御部 3.3.3 命令キャッシュのキャッシュ可能領域 命令キャッシュのキャッシュ可能領域について説明します。 ■ キャッシュ可能領域 • 命令キャッシュは , 内部 F-bus 空間(RAM 64K バイト)および外バス空間のみを キャッシュ可能とします。 • DMA 転送で外部メモリの内容が更新されたとしてもキャッシュの内容とのコヒー レンシはとりません。このような場合はキャッシュをフラッシュすることで , コ ヒーレンシを保ってください。 • 各チップセレクトの領域ごとに非キャッシュ領域に設定することができます。この 場合でもキャッシュオフに比べて 1 サイクルのペナルティを受けます。 48 第 3 章 CPU および制御部 3.3.4 I-Cache を使用するときの設定方法 I-Cache を使用するときの設定方法について説明します。 ■ I-Cache を使用するときの設定方法 ● 初期化 I-Cache を使い始める一番最初はキャッシュの中身をクリアしておく必要があります。 レジスタの FLSH ビットと ELKR ビットを "1" にして , 過去のデータを消去します。 ldi #0x000003e7, r0 // I-Cache コントロールレジスタのアドレス ldi #0B00000110, r1 // FLSH ビット (1 ビット ) // ELKR ビット (2 ビット ) stb r1, @r0 // レジスタへ書込み これで , キャッシュが初期化されます。 ● キャッシュを有効 (ON) にする I-Cache を有効にするには ENAB ビットを "1" にします。 ldi #0x000003e7, r0 // I-Cache コントロールレジスタのアドレス ldi #0B00000001, r1 // ENAB ビット (0 ビット ) stb r1, @r0 // レジスタへ書込み これ以降の命令アクセスがキャッシュに取り込まれます。 キャッシュの有効化は , キャッシュの初期化と同時に行うこともできます。 ldi #0x000003e7, r0 // I-Cache コントロールレジスタのアドレス ldi #0B00000111, r1 // ENAB ビット (0 ビット ) // FLSH ビット (1 ビット ) // ELKR ビット (2 ビット ) stb r1, @r0 // レジスタへ書込み ● キャッシュを無効 (OFF) にする I-Cache を無効にするには ENAB ビットを "0" にします。 ldi #0x000003e7, r0 // I-Cache コントロールレジスタのアドレス ldi #0B00000000, r1 // ENAB ビット (0 ビット ) stb r1, @r0 // レジスタへ書込み この状態(リセット後の状態と同じ)では, キャッシュはないのと同じで, 何もしません。 キャッシュのオーバヘッドが気になる処理のときは , OFF にしてください。 49 第 3 章 CPU および制御部 ● キャッシュの内容をすべてロックする 現在 I-Cache に入っている命令がキャッシュから追い出されないようにロックします。 レジスタの GBLK ビットを "1" にします。 ENAB ビットも "1" にしておかないと , キャッ シュが OFF になってしまい , キャッシュ内のロックした命令が使われません。 ldi #0x000003e7, r0 // I-Cache コントロールレジスタのアドレス ldi #0B00100001, r1 // ENAB ビット (0 ビット ) // GBLK ビット (5 ビット ) stb r1, @r0 // レジスタへ書込み ● 特定の命令をキャッシュにロックする 特定の命令群 ( サブルーチンなど ) をキャッシュにロックするには , それらの命令を実 行する前に EOLK ビットを "1" にします。 ロックした命令は高速な内部 ROM のようにアクセスされます。 ldi #0x000003e7, r0 // I-Cache コントロールレジスタのアドレス ldi #0B00001001, r1 // ENAB ビット (0 ビット ) // EOLK ビット (3 ビット ) stb r1, @r0 // レジスタへ書込み メモリのウェイト数によりますが , stb 命令の次以降の命令から有効になります。 ロックしたい命令群が終ったところで EOLK ビットを "0" にします。 ldi #0x000003e7, r0 // I-Cache コントロールレジスタのアドレス ldi #0B00000001, r1 // ENAB ビット (0 ビット ) // EOLK ビット (3 ビット ) stb r1, @r0 // レジスタへ書込み ● キャッシュのロックを解除する ロックした命令のロック情報を解除します。 ldi #0x000003e7, r0 // I-Cache コントロールレジスタのアドレス ldi #0B00000000, r1 // キャッシュディセーブル stb r1, @r0 // レジスタへ書込み ldi #0B00000100, r1 // ELKR ビット (2 ビット ) stb r1, @r0 // レジスタへ書込み ロック情報だけ解除されるので, ロックされていた命令は , LRUビットの状態に応じて 順次新しい命令に置き換わります。 50 第 3 章 CPU および制御部 3.4 プログラミングモデル FR ファミリのプログラミングモデル , 汎用レジスタ , および専用レジスタについて 説明します。 ■ 基本プログラミングモデル 図 3.4-1 に , FR ファミリの基本プログラミングモデルを示します。 図 3.4-1 基本プログラミングモデル 32ビット 〔初期値〕 R0 XXXX XXXXH R1 汎用レジスタ R12 R13 AC R14 R15 プログラムカウンタ PC プログラムステータス PS テーブルベースレジスタ TBR リターンポインタ RP XXXX XXXXH FP 0000 0000H SP ILM SCR CCR システムスタックポインタ SSP ユーザスタックポインタ USP 乗除算結果レジスタ MDH MDL 51 第 3 章 CPU および制御部 3.4.1 汎用レジスタ レジスタ R0 ∼ R15 は汎用レジスタです。 各種演算におけるアキュムレータ , およびメモリアクセスのポインタとして使用さ れます。 ■ 汎用レジスタ 図 3.4-2 に , 汎用レジスタの構成を示します。 図 3.4-2 汎用レジスタの構成 32ビット 〔初期値〕 R0 R1 R12 R13 R14 R15 XXXX XXXXH AC FP SP XXXX XXXXH 0000 0000H レジスタ R0 ∼ R15 は汎用レジスタです。各種演算におけるアキュムレータ , およびメ モリアクセスのポインタとして使用されます。 16本のレジスタのうち, 以下に示すレジスタは特殊な用途を想定しており, そのために 一部の命令が強化されています。 • R13: 仮想アキュムレータ(AC) • R14: フレームポインタ(FP) • R15: スタックポインタ(SP) リセットによる初期値は , R0 ∼ R14 は不定です。R15 は , "00000000H" (SSP の値 ) とな ります。 52 第 3 章 CPU および制御部 3.4.2 専用レジスタ 専用レジスタは , 特定の目的のために使用します。 FR ファミリでは , 以下の専用レジスタが用意されています。 • PS (Program Status) • CCR (Condition Code Register) • SCR (System Condition code Register) • ILM (Interrupt Level Mask Register) • PC (Program Counter) • TBR (Table Base Register) • RP (Return Pointer) • SSP (System Stack Pointer) • USP (User Stack Pointer) • MDH, MDL (Multiply & Divide register: 乗除算結果レジスタ ) ■ PS (Program Status) PS は , プログラムステータスを保持するレジスタで , ILM と SCR, CCR の 3 つのパー トに分かれています。 未定義のビットはすべて予約ビットです。読出し時 , 常に "0" が読み出されます。 書込みは無効です。 PS(Program Status) のレジスタ構成は , 以下のとおりです。 図 3.4-3 PS(Program Status) のレジスタ構成 ビット位置 31 16 20 ILM 10 8 7 SCR 0 CCR 53 第 3 章 CPU および制御部 ■ CCR (Condition Code Register) CCR(Condition Code Register) のレジスタ構成は , 以下のとおりです。 図 3.4-4 CCR (Condition Code Register) のレジスタ構成 ビット位置→ 7 6 5 4 3 2 1 0 [ 初期値 ] - - S I N Z V C --00XXXXB [bit 5] S: スタックフラグ R15 として使用されるスタックポインタを指定します。 値 内 容 0 SSP が R15 として使用されます。 EIT 発生時 , 自動的に "0" となります ( ただし , スタックに退避される値はクリアされる前の値です ) 。 1 USP が R15 として使用されます。 • リセットにより "0" にクリアされます。 • RETI 命令実行時は "0" に設定してください。 [bit 4] I: 割込み許可フラグ ユーザ割込み要求の許可・禁止を制御します。 値 内 容 0 ユーザ割込みを禁止します。 INT 命令実行時 , "0" にクリアされます ( ただし , スタック退避させる値はクリアする前の値です ) 。 1 ユーザ割込みを許可します。 ユーザ割込み要求のマスク処理は , ILM の保持する値により制御され ます。 リセットにより "0" にクリアされます。 [bit 3] N: ネガティブフラグ 演算結果を 2 の補数で表現された整数とみなしたときの符号を示します。 値 内 容 0 演算結果が正の値であったことを示します。 1 演算結果が負の値であったことを示します。 リセットによる初期状態は不定です。 54 第 3 章 CPU および制御部 [bit 2] Z: ゼロフラグ 演算結果が "0" であったかどうかを示します。 値 内 容 0 演算結果が "0" 以外の値であったことを示します。 1 演算結果が "0" であったことを示します。 リセットによる初期状態は不定です。 [bit 1] V: オーバフローフラグ 演算に用いたオペランドを 2 の補数で表現される整数であるとみなし , 演算の結果 , オーバフローが生じたかどうかを示します。 値 内 容 0 演算の結果 , オーバフローは生じていないことを示します。 1 演算の結果 , オーバフローが生じたことを示します。 リセットによる初期状態は不定です。 [bit 0] C: キャリフラグ 演算により , 最上位ビットからのキャリまたはボローが発生したかどうかを示しま す。 値 内 容 0 キャリもボローも発生していないことを示します。 1 キャリまたはボローが発生したことを示します。 リセットによる初期状態は不定です。 55 第 3 章 CPU および制御部 ■ SCR (System Condition code Register) SCR(System Condition code Register) のレジスタ構成は , 以下のとおりです。 図 3.4-5 SCR (System Condition code Register) のレジスタ構成 ビット位置→ 10 9 8 [ 初期値 ] D1 D0 T XX0B [bit 10, bit 9] D1,D0: ステップ除算用フラグ ステップ除算実行時の中間データを保持します。 除算処理の実行途中は変更しないでください。ステップ除算実行途中にほかの処理 を行う場合は , PS レジスタの値を退避・復帰することによりステップ除算の再開が 保証されます。 • リセットによる初期状態は不定です。 • DIV0S 命令の実行により被除数と除数を参照して設定されます。 • DIV0U 命令の実行により , 強制的にクリアされます。 [bit 8] T: ステップトレーストラップフラグ ステップトレーストラップを有効にするかどうかを指定するフラグです。 値 内 容 0 ステップトレーストラップ無効 1 ステップトレーストラップ有効 このとき , ユーザ用 NMI とユーザ割込みがすべて割込み禁止となりま す。 • リセットにより "0" に初期化されます。 • ステップトレーストラップの機能はエミュレータが使用します。エミュレータ使 用時に , ユーザプログラム中で使用することはできません。 56 第 3 章 CPU および制御部 ■ ILM (Interrupt Level Mask Register) ILM のビット構成は , 以下のとおりです。 図 3.4-6 ILM (Interrupt Level Mask Register) のビット構成 ビット位置→ 20 19 18 17 16 [ 初期値 ] ILM4 ILM3 ILM2 ILM1 ILM0 01111B 割込みレベルマスク値を保持するレジスタで , この ILM の保持する値がレベルマスク に使用されます。 CPU に入力される割込み要求の中で対応する割込みレベルが , この ILM で示されるレ ベルよりも強い場合にのみ割込み要求が受け付けられます。 レベル値は , 0(00000B) が最強で , 31(11111B) が最弱です。 プログラムから設定可能な値には制限があります。 • 元の値が 16 ∼ 31 のとき: 新たな値として設定できるのは 16 ∼ 31 です。 0 ∼ 15 を設定する命令を実行すると , ( 指定した値+ 16) という値が転送されます。 • 元の値が 0 ∼ 15 のとき: 0 ∼ 31 の任意の値が設定可能です。 リセットにより , 15(01111B) に初期化されます。 ■ PC (Program Counter) PC(Program Counter) のレジスタ構成は , 以下のとおりです。 図 3.4-7 PC (Program Counter) のレジスタ構成 ビット位置→ 31 PC 0 [ 初期値 ] XXXXXXXXH [bit 31 ∼ bit 0] プログラムカウンタで実行している命令のアドレスを示しています。 命令の実行を伴う PC の更新時に , bit 0 は "0" に設定されます。bit 0 が "1" になる可 能性があるのは , 分岐先アドレスとして奇数番地を指定した場合だけです。ただし , その場合でも bit 0 は無効であり , 命令は 2 の倍数のアドレスに置く必要があります。 リセットによる初期値は不定です。 57 第 3 章 CPU および制御部 ■ TBR (Table Base Register) TBR(Table Base Register) のビット構成は , 以下のとおりです。 図 3.4-8 TBR (Table Base Register) のレジスタ構成 ビット位置→ 31 0 [ 初期値 ] 000FFC00H TBR [bit 31 ∼ bit 0] テーブルベースレジスタで , EIT 処理の際に使用されるベクタテーブルの先頭アドレス を保持します。 リセットによる初期値は , "000FFC00H" です。 ■ RP (Return Pointer) RP(Return Pointer) のレジスタ構成は , 以下のとおりです。 図 3.4-9 RP (Return Pointer) のレジスタ構成 ビット位置→ 31 0 [ 初期値 ] XXXXXXXXH RP [bit 31 ∼ bit 0] リターンポインタで , サブルーチンから復帰するアドレスを保持します。 CALL 命令実行時 , PC の値がこの RP に転送されます。 RETI 命令実行時 , RP の内容が PC に転送されます。 リセットによる初期値は不定です。 ■ SSP (System Stack Pointer) SSP(System Stack Pointer) のレジスタ構成は , 以下のとおりです。 図 3.4-10 SSP (System Stack Pointer) のレジスタ構成 ビット位置→ 31 SSP 0 [ 初期値 ] 00000000H [bit 31 ∼ bit 0] SSP は , システムスタックポインタです。 S フラグが "0" のとき , R15 として機能します。 SSP を明示的に指定することも可能です。また , EIT 発生時に , PS と PC を退避するス タックを指定するスタックポインタとしても使用されます。 リセットによる初期値は "00000000H" です。 58 第 3 章 CPU および制御部 ■ USP (User Stack Pointer) USP(User Stack Pointer) のレジスタ構成は , 以下のとおりです。 図 3.4-11 USP (User Stack Pointer) のレジスタ構成 ビット位置→ 31 0 [ 初期値 ] XXXXXXXXH USP [bit 31 ∼ bit 0] USP は , ユーザスタックポインタです。 S フラグが "1" のとき , R15 として機能します。 USP を明示的に指定することも可能です。 リセットによる初期値は不定です。 RETI 命令で使用することはできません。 ■ MDH,MDL (Multiply & Divide register: 乗除算結果レジスタ ) MDH, MDL (Multiply & Divide register: 乗除算結果レジスタ ) のビット構成は , 以下のと おりです。 図 3.4-12 MDH,MDL (Multiply & Divide register: 乗除算結果レジスタ ) のビット構成 ビット位置→ 31 0 [ 初期値 ] MDH XXXXXXXXH MDL XXXXXXXXH [bit 31 ∼ bit 0] 乗除算用のレジスタで , 各々 32 ビット長です。 リセットによる初期値は不定です。 • 乗算実行時: 32 ビット× 32 ビットの乗算のとき , 64 ビット長の演算結果は , 以下の配置で乗除 算結果格納レジスタに格納されます。 MDH……上位 32 ビット MDL……下位 32 ビット 16 ビット× 16 ビットの乗算のときは , 以下のように結果が格納されます。 MDH……不定 MDL……結果 32 ビット • 除算実行時: 計算開始時 , 被除数を MDL に格納します。 DIV0S/DIV0U, DIV1, DIV2, DIV3, DIV4S 命令の実行により除算を計算すると , 結果 が MDL と MDH に格納されます。 MDH……剰余 MDL……商 59 第 3 章 CPU および制御部 データ構造 3.5 FR ファミリのデータ構造について説明します。 ■ ビットオーダリング FR ファミリでは , ビットオーダリングとして , リトルエンディアンを採用しています。 図 3.5-1 に , ビットオーダリングのデータ配置を示します。 図 3.5-1 ビットオーダリングのデータ配置 bit 31 29 30 27 28 25 26 23 24 21 22 19 20 17 18 15 16 13 14 11 12 9 10 7 8 5 6 MSB 3 4 1 2 0 LSB ■ バイトオーダリング FR ファミリでは , バイトオーダリングとして , ビッグエンディアンを採用しています。 図 3.5-2 に , バイトオーダリングのデータ配置を示します。 図 3.5-2 バイトオーダリングのデータ配置 メモリ bit 7 60 0 n番地 10101010 (n+1)番地 11001100 (n+2)番地 11111111 (n+3)番地 00010001 MSB bit 31 23 10101010 11001100 LSB 15 7 0 11111111 00010001 第 3 章 CPU および制御部 ■ ワードアライメント ● プログラムアクセス FR ファミリのプログラムは , 2 の倍数のアドレスに配置する必要があります。 PC の bit 0 は , 命令の実行に伴う PC の更新時に , "0" に設定されます。 "1" になる可能性があるのは , 分岐先アドレスとして奇数番地を指定した場合だけで す。ただし , その場合でも bit 0 は無効であり , 命令は 2 の倍数のアドレスに置く必要 があります。 奇数アドレス例外はありません。 ● データアクセス FR ファミリでは , データアクセスを行う際 , その幅により以下のように強制的なアラ イメントがアドレスに対して施されます。 - ワードアクセス : アドレスは , 4 の倍数 ( 最下位 2 ビットは強制的に "00B") - ハーフワードアクセス : アドレスは , 2 の倍数 ( 最下位ビットは強制的に "0") - バイトアクセス ── : ワードおよびハーフワードデータアクセス時に , 一部のビットが強制的に "0" にされる のは , 実効アドレスの計算結果に対してです。 例えば , @(R13, Ri) のアドレッシングモードの場合 , 加算前のレジスタは ( たとえ最下 位ビットが "1" であっても ) そのまま計算に使用され , 加算結果の下位ビットがマスク されます。計算前のレジスタがマスクされるわけではありません。 [ 例 ] LD @(R13, R2), R0 R13 00002222H R2 00000003H 加算結果 アドレス端子 00002225H 下位2ビット強制マスク 00002224H 61 第 3 章 CPU および制御部 3.6 メモリマップ FR ファミリのメモリマップについて説明します。 ■ メモリマップ アドレス空間は 32 ビットリニアです。 図 3.6-1 に , メモリマップを示します。 図 3.6-1 メモリマップ 0000 0000H バイト データ 0000 0100H ハーフワード データ 0000 0200H ダイレクト アドレッシング領域 ワードデータ 0000 0400H 000F FC00H ベクタテーブル 初期領域 000F FFFFH FFFF FFFFH ● ダイレクトアドレッシング領域 アドレス空間の下記の領域は , I/O 用の領域です。この領域は , ダイレクトアドレッシ ングにより , 命令中で直接オペランドアドレスを指定することができます。 ダイレクトアドレス指定可能なアドレス領域の大きさは , データ長ごとに異なります。 • バイトデータ (8 ビット ) ……000H ∼ 0FFH • ハーフワードデータ (16 ビット ) ……000H ∼ 1FFH • ワードデータ (32 ビット ) ……000H ∼ 3FFH ● ベクタテーブル初期領域 "000FFC00H" ∼ "000FFFFFH" の領域は EIT ベクタテーブル初期領域です。 EIT処理時に使用されるベクタテーブルは, TBRを書き換えることにより任意のアドレ スに配置可能ですが , リセットによる初期化によってこのアドレスに配置されます。 62 第 3 章 CPU および制御部 3.7 分岐命令 FR ファミリの分岐命令について説明します。 ■ 分岐命令の概要 FR ファミリでは , 分岐命令に遅延スロット付きの動作と遅延スロットなしの動作を指 定することができます。 63 第 3 章 CPU および制御部 3.7.1 遅延スロット付き動作 分岐命令に遅延スロット付き動作を指定した場合について説明します。 ■ 遅延スロット付き動作の命令 以下に示す表記をした命令が , 遅延スロット付きの分岐動作を行います。 JMP:D @Ri CALL:D label12 CALL:D @Ri RET:D BRA:D label9 BNO:D label9 BEQ:D label9 BNE:D label9 BC:D label9 BNC:D label9 BN:D label9 BP:D label9 BV:D label9 BNV:D label9 BLT:D label9 BGE:D label9 BLE:D label9 BGT:D label9 BLS:D label9 BHI:D label9 ■ 遅延スロット付き動作の動作説明 遅延スロット付きの動作では , 分岐先の命令を実行する前に , 分岐命令の直後 (「遅延 スロット」とよびます ) に置かれた命令を実行した後に分岐します。 分岐動作の前に遅延スロットの命令を実行するため, 見かけ上の実行速度が1サイクル となります。その代わり , 遅延スロットに有効な命令を入れることができないときは , NOP 命令を置く必要があります。 [例] ; 命令の並び ADD R1, R2 ; BRA:D LABEL ; 分岐命令 MOV R2, R3 ; 遅延スロット……分岐の前に実行される … LABEL:ST R3, @R4 ; 分岐先 条件分岐命令の場合 , 分岐条件が成立するかしないかにかかわらず , 遅延スロットに置 かれた命令は実行されます。 遅延分岐命令では , 一部の命令の実行順序が反転するように見えますが , それは PC の 更新動作だけについてであり , その他の動作 ( レジスタの更新・参照など ) はあくまで 記述された順番で実行されます。 以下に , 具体的な説明をします。 1. JMP:D @Ri / CALL:D @Ri 命令で参照する Ri は , 遅延スロットの中の命令が Ri を更 新しても影響を受けません。 [例] LDI:32 #Label, R0 JMP:D @R0 LDI:8 #0, … 64 ;Label に分岐 R0 ; 分岐先アドレスには影響を与えない 第 3 章 CPU および制御部 2. RET:D 命令が参照する RP は , 遅延スロットの中の命令が RP を更新しても影響を受 けません。 [例] RET:D MOV ; これより前に設定された RP の示すアドレスへ分岐 R8, RP ; リターン動作には影響を与えない … 3. Bcc:D rel 命令が参照するフラグも , 遅延スロットの命令の影響を受けません。 [例] ADD #1, R0 BC:D Overflow ANDCCR #0 ; フラグ変化 ; 上記の命令の実行結果により分岐 ; このフラグ更新は上記分岐命令では参照しない … 4. CALL:D 命令の遅延スロット中の命令で RP を参照すると , CALL:D 命令により更新 された内容が読み出されます。 [例] CALL:D Label MOV RP, ;RP を更新して分岐 R0 ; 上記 CALL:D の実行結果の RP を転送 … ■ 遅延スロット付き動作の制限事項 ● 遅延スロットに置くことができる命令 遅延スロット内で実行できるのは , 以下の条件を満たす命令のみです。 • 1 サイクル命令 • 分岐命令ではないこと • 順番が変化した場合でも動作に影響を与えない命令 「1 サイクル命令」とは , 命令一覧表中でサイクル数の欄が「1」,「a」,「b」,「c」また は「d」と記載された命令です。 ● ステップトレーストラップ 遅延スロットを持つ分岐命令の実行と遅延スロットの間では , ステップトレースト ラップは発生しません。 ● 割込み・NMI 遅延スロットを持つ分岐命令の実行と遅延スロットの間では , 割込み・NMI を受理し ません。 ● 未定義命令例外 遅延スロットに未定義命令があった場合 , 未定義命令例外は発生しません。このとき , 未定義命令は NOP 命令として動作します。 65 第 3 章 CPU および制御部 3.7.2 遅延スロットなし動作 分岐命令に遅延スロットなし動作を指定した場合について説明します。 ■ 遅延スロットなし動作の命令 以下に示す表記をした命令が遅延スロットなしの分岐動作を行います。 JMP @Ri CALL label12 CALL @Ri RET BRA label9 BNO label9 BEQ label9 BNE label9 BC label9 BNC label9 BN label9 BP label9 BV label9 BNV label9 BLT label9 BGE label9 BLE label9 BGT label9 BLS label9 BHI label9 ■ 遅延スロットなし動作の動作説明 遅延スロットなしの動作では , あくまで命令の並びの順に実行します。 直後の命令が分岐前に実行されることはありません。 [例] ; 命令の並び ADD R1, R2 ; BRA LABEL ; 分岐命令 ( 遅延スロットなし ) MOV R2, R3 ; 実行されない R3, @R4 ; 分岐先 … LABEL ST 遅延スロットなしの分岐命令の実行サイクル数は , 分岐するとき 2 サイクル , 分岐しな いとき 1 サイクルとなります。 遅延スロットなしの分岐命令は , 遅延スロットに適当な命令を入れることができない ために NOP を明記した遅延スロット付き分岐命令に比べて , 命令コード効率を上げる ことができます。 遅延スロットに有効な命令を設置できるときは遅延スロット付きの動作を選択し , そ うでないときは遅延スロットなしの動作を選択することで実行速度とコード効率を両 立させることが可能となります。 66 第 3 章 CPU および制御部 3.8 EIT ( 例外・割込み・トラップ ) EIT とは , 現プログラム実行時にイベントの発生によりそのプログラムの実行を中断 してほかのプログラムを実行することを指し , 例外 (Exception), 割込み (Interrupt), トラップ (Trap) の総称です。 例外とは , 実行中のコンテキストに関連して発生する事象です。例外を起こした命 令から再実行します。 割込みとは , 実行中のコンテキストとは無関係に発生する事象です。イベント要因 は , ハードウェアです。 トラップとは , 実行中のコンテキストに関連して発生する事象です。システムコー ルのようにプログラムで指示するものがあります。トラップを起こした命令の次の 命令から再実行します。 ■ EIT の特長 • 割込みに多重割込みをサポート • 割込みにレベルマスク機能 (15 レベルをユーザが使用可能 ) • トラップ命令 (INT) • エミュレータ起動用 EIT ( ハードウェア / ソフトウェア ) ■ EIT 要因 EIT 要因として , 以下のものがあります。 • リセット • ユーザ割込み ( 内部リソース , 外部割込み ) • NMI • 遅延割込み • 未定義命令例外 • トラップ命令 (INT) • トラップ命令 (INTE) • ステップトレーストラップ • コプロセッサ不在トラップ • コプロセッサエラートラップ ■ EIT からの復帰 RETI 命令 67 第 3 章 CPU および制御部 3.8.1 EIT の割込みレベル 割込みレベルは 0 ∼ 31 で , 5 ビットで管理されます。 ■ EIT の割込みレベル 表 3.8-1 に , 各レベルの割当てを示します。 表 3.8-1 割込みレベル レベル 割込み要因 2 進数 10 進数 00000 0 ( システム予約 ) … … … … … … 00011 3 ( システム予約 ) 00100 4 INTE 命令 ステップトレースト ラップ 00101 5 ( システム予約 ) … … … … … … 01110 14 ( システム予約 ) 01111 15 NMI ( ユーザ用 ) 10000 16 割込み 10001 17 割込み … … … … … … 11110 30 割込み 11111 31 ─ 備考 ILM の元の値が 16 ∼ 31 のとき , この範囲の値をプログラムによ り ILM に設定することはできま せん。 ILM 設定時 , ユーザ割込み禁止 ICR 設定時 , 割込み禁止 操作が可能なのは , 16 ∼ 31 のレベルです。 未定義命令例外, コプロセッサ不在トラップ, コプロセッサエラートラップ, そしてINT 命令は , 割込みレベルの影響を受けません。また , ILM を変化させることもありません。 68 第 3 章 CPU および制御部 ■ I フラグ I フラグは , 割込みの許可・禁止を指定するフラグです。PS レジスタの CCR の bit 4 と して設けられています。 値 内 容 0 割込み禁止 INT 命令実行時 "0" にクリアされます。 ( ただし , スタック退避させる値はクリアする前の値です ) 1 割込み許可 割込み要求のマスク処理は , ILM の保持する値により制御されます。 ■ ILM ILM は , 割込みレベルマスク値を保持する PS レジスタ (20 ∼ 16) です。 CPU に入力される割込み要求の中で対応する割込みレベルが , この ILM で示されるレ ベルよりも強い場合にのみ割込み要求が受け付けられます。 レベル値は , 0(00000B) が最強で , 31(11111B) が最弱です。 プログラムから設定可能な値には制限があります。元の値が 16 ∼ 31 のとき , 新たな値 として設定できるのは 16 ∼ 31 です。0 ∼ 15 の値を設定する命令を実行すると , ( 指 定した値+ 16) という値が転送されます。 元の値が 0 ∼ 15 のときは , 0 ∼ 31 の任意の値が設定可能です。任意の値を設定するに は STILM 命令を使用します。 ■ 割込み・NMI に対するレベルマスク NMI および割込み要求が発生したときは , 割込み要因の持つ割込みレベル ( 表 3.8-1) が ILM の保持するレベルマスク値と比較されます。そして , 次の条件が成立したときは マスクされ , 要求は受理されません。 要因の持つ割込みレベル ≧ レベルマスク値 69 第 3 章 CPU および制御部 3.8.2 ICR (Interrupt Control Register) 割込みコントローラ内に設けられたレジスタで , 割込みの各要求に対するレベルを 設定します。ICR は割込み要求入力の各々に対応して用意されています。ICR は I/O 空間にマッピングされており , CPU からはバスを通してアクセスされます。 ■ ICR レジスタ構成 ICR のレジスタ構成は , 以下のとおりです。 図 3.8-1 ICR レジスタ構成 7 アドレス: ch00 000440H ∼ ch47 00046FH 6 5 4 3 2 1 0 - - - ICR4 ICR3 ICR2 ICR1 ICR0 初期値 ---111111B - - - R/W R/W R/W R/W R/W アクセス [bit 4] ICR4 ICR4 は , 常に "1" です。 [bit 3 ∼ bit 0] ICR3 ∼ ICR0 対応する割込み要因の割込みレベルの下位 4 ビットです。リード / ライト可能です。 bit 4 と合わせて , ICR は 16 ∼ 31 の範囲で値を設定することができます。 ■ ICR マッピング 表 3.8-2 に , 割込み要因と割込み制御レジスタ , 割込みベクタの割当てを示します。 表 3.8-2 割込み要因と割込み制御レジスタ , 割込みベクタ 割込み制御レジスタ 対応する割込みベクタ 番号 割込み要因 番号 アドレス アドレス 16 進 10 進 IRQ00 ICR00 00000440H 10H 16 TBR+3BCH IRQ01 ICR01 00000441H 11H 17 TBR+3B8H IRQ02 ICR02 00000442H 12H 18 TBR+3B4H … … … … … … … … … … … … IRQ45 ICR45 0000046DH 3DH 61 TBR+308H IRQ46 ICR46 0000046EH 3EH 62 TBR+304H IRQ47 ICR47 0000046FH 3FH 63 TBR+300H ・TBR 初期値 :000FFC00H ・詳細は「第 6 章 割込みコントローラ」を参照してください。 70 第 3 章 CPU および制御部 3.8.3 SSP (System Stack Pointer) SSP が , EIT の受理および復帰動作時のデータ退避・復活用スタックを示すポイン タとして使用されます。 ■ SSP (System Stack Pointer) SSP のレジスタ構成は , 以下のとおりです。 図 3.8-2 SSP(System Stack Pointer) のレジスタ構成 31 SSP 0 [ 初期値 ] 00000000H [bit 31 ∼ bit 0] EIT 処理時に内容が 8 減ぜられ , RETI 命令の実行による EIT からの復帰動作時に 8 加 算されます。 リセットによる初期値は "00000000H" です。 SSP は , CCR 中の S フラグが "0" のとき , 汎用レジスタ R15 としても機能します。 71 第 3 章 CPU および制御部 3.8.4 割込みスタック SSP により示される領域で , PC および PS の値が退避・復活されます。 割込み後は SSP の示すアドレスに PC, (SSP+4) のアドレスに PS が格納されていま す。 ■ 割込みスタック 図 3.8-3 に , 割込みスタックの例を示します。 図 3.8-3 割込みスタック [割込み前] SSP 80000000H [割込み後] SSP 7FFFFFF8H メモリ 80000000H 7FFFFFFCH 7FFFFFF8H 72 80000000H 7FFFFFFCH 7FFFFFF8H PS PC 第 3 章 CPU および制御部 3.8.5 TBR (Table Base Register) Table Base Register は , EIT 用ベクタテーブルの先頭アドレスを示すレジスタで す。 ■ TBR(Table Base Register) TBR のレジスタ構成は , 以下のとおりです。 図 3.8-4 TBR のレジスタ構成 31 TBR 0 [ 初期値 ] 000FFC00H [bit 31 ∼ bit 0] TBR と EIT 要因ごとに決められたオフセット値を加算したアドレスが , ベクタアドレ スとなります。 リセットによる初期値は "000FFC00H" です。 73 第 3 章 CPU および制御部 3.8.6 EIT ベクタテーブル TBR の示すアドレスから 1K バイトの領域が , EIT 用ベクタ領域となっています。 ■ EIT ベクタテーブル 1 ベクタ当たりの大きさは 4 バイトで , ベクタ番号とベクタアドレスの関係は以下のと おりです。 vctadr =TBR + vctofs =TBR + (3FCH – 4 × vct) vctadr: ベクタアドレス vctofs: ベクタオフセット vct: ベクタ番号 加算結果の下位 2 ビットは常に "00B" として扱われます。 "000FFC00H" ∼ "000FFFFFH" の領域がリセットによるベクタテーブルの初期領域です。 ベクタの一部には特殊な機能が割り当てられています。 表 3.8-3 に , アーキテクチャ上のベクタテーブルを示します。 表 3.8-3 ベクタテーブル (1 / 3) 割込み要因 74 割込み番号 10 進 16 進 割込みレベル オフセット TBR デフォルト のアドレス リセット *1 0 00 - 3FCH 000FFFFCH モードベクタ *1 1 01 - 3F8H 000FFFF8H システム予約 2 02 - 3F4H 000FFFF4H システム予約 3 03 - 3F0H 000FFFF0H システム予約 4 04 - 3ECH 000FFFECH システム予約 5 05 - 3E8H 000FFFE8H システム予約 6 06 - 3E4H 000FFFE4H コプロセッサ不在トラップ 7 07 - 3E0H 000FFFE0H コプロセッサエラートラップ 8 08 - 3DCH 000FFFDCH INTE 命令 9 09 - 3D8H 000FFFD8H 命令ブレーク例外 10 0A - 3D4H 000FFFD4H オペランドブレークトラップ 11 0B - 3D0H 000FFFD0H ステップトレーストラップ 12 0C - 3CCH 000FFFCCH NMI 要求 (tool) 13 0D - 3C8H 000FFFC8H 未定義命令例外 14 0E - 3C4H 000FFFC4H NMI 要求 15 0F 15(FH) 固定 3C0H 000FFFC0H 外部割込み 0 16 10 ICR00 3BCH 000FFFBCH 外部割込み 1 17 11 ICR01 3B8H 000FFFB8H 外部割込み 2 18 12 ICR02 3B4H 000FFFB4H 第 3 章 CPU および制御部 表 3.8-3 ベクタテーブル (2 / 3) 割込み要因 割込み番号 10 進 16 進 割込みレベル オフセット TBR デフォルト のアドレス 外部割込み 3 19 13 ICR03 3B0H 000FFFB0H 外部割込み 4 (USB ファンクション ) 20 14 ICR04 3ACH 000FFFACH 外部割込み 5 21 15 ICR05 3A8H 000FFFA8H 外部割込み 6 22 16 ICR06 3A4H 000FFFA4H 外部割込み 7 23 17 ICR07 3A0H 000FFFA0H リロードタイマ 0 24 18 ICR08 39CH 000FFF9CH リロードタイマ 1 25 19 ICR09 398H 000FFF98H リロードタイマ 2 26 1A ICR10 394H 000FFF94H マスク可能要因 *2 27 1B ICR11 390H 000FFF90H マスク可能要因 *2 28 1C ICR12 38CH 000FFF8CH マスク可能要因 *2 29 1D ICR13 388H 000FFF88H マスク可能要因 *2 30 1E ICR14 384H 000FFF84H マスク可能要因 *2 31 1F ICR15 380H 000FFF80H マスク可能要因 *2 32 20 ICR16 37CH 000FFF7CH マスク可能要因 *2 33 21 ICR17 378H 000FFF78H マスク可能要因 *2 34 22 ICR18 374H 000FFF74H マスク可能要因 *2 35 23 ICR19 370H 000FFF70H マスク可能要因 *2 36 24 ICR20 36CH 000FFF6CH マスク可能要因 *2 37 25 ICR21 368H 000FFF68H マスク可能要因 *2 38 26 ICR22 364H 000FFF64H マスク可能要因 *2 39 27 ICR23 360H 000FFF60H マスク可能要因 *2 40 28 ICR24 35CH 000FFF5CH マスク可能要因 *2 41 29 ICR25 358H 000FFF58H マスク可能要因 *2 42 2A ICR26 354H 000FFF54H マスク可能要因 *2 43 2B ICR27 350H 000FFF50H 外部割込み 8 44 2C ICR28 34CH 000FFF4CH 外部割込み 9 45 2D ICR29 348H 000FFF48H 外部割込み 10 46 2E ICR30 344H 000FFF44H タイムベースタイマ オーバフロー 47 2F ICR31 340H 000FFF40H 外部割込み 11 48 30 ICR32 33CH 000FFF3CH マスク可能要因 *2 49 31 ICR33 338H 000FFF38H マスク可能要因 *2 50 32 ICR34 334H 000FFF34H マスク可能要因 *2 51 33 ICR35 330H 000FFF30H マスク可能要因 *2 52 34 ICR36 32CH 000FFF2CH マスク可能要因 *2 53 35 ICR37 328H 000FFF28H 75 第 3 章 CPU および制御部 表 3.8-3 ベクタテーブル (3 / 3) 割込み要因 割込み番号 10 進 16 進 割込みレベル オフセット TBR デフォルト のアドレス *2 54 36 ICR38 324H 000FFF24H マスク可能要因 *2 55 37 ICR39 320H 000FFF20H マスク可能要因 *2 56 38 ICR40 31CH 000FFF1CH マスク可能要因 *2 57 39 ICR41 318H 000FFF18H 外部割込み 12/ マスク可能要因 *2 58 3A ICR42 314H 000FFF14H 外部割込み 13/ マスク可能要因 *2 59 3B ICR43 310H 000FFF10H 外部割込み 14/ マスク可能要因 *2 60 3C ICR44 30CH 000FFF0CH 外部割込み 15/ マスク可能要因 *2 61 3D ICR45 308H 000FFF08H マスク可能要因 *2 62 3E ICR46 304H 000FFF04H 遅延割込み要因ビット 63 3F ICR47 300H 000FFF00H システム予約 (REALOS にて使用 ) 64 40 - 2FCH 000FFEFCH システム予約 (REALOS にて使用 ) 65 41 - 2F8H 000FFEF8H システム予約 66 42 - 2F4H 000FFEF4H システム予約 67 43 - 2F0H 000FFEF0H システム予約 68 44 - 2ECH 000FFEECH システム予約 69 45 - 2E8H 000FFEE8H システム予約 70 46 - 2E4H 000FFEE4H システム予約 71 47 - 2E0H 000FFEE0H システム予約 72 48 - 2DCH 000FFEDCH システム予約 73 49 - 2D8H 000FFED8H システム予約 74 4A - 2D4H 000FFED4H システム予約 75 4B - 2D0H 000FFED0H システム予約 76 4C - 2CCH 000FFECCH システム予約 77 4D - 2C8H 000FFEC8H システム予約 78 4E - 2C4H 000FFEC4H システム予約 79 4F - 2C0H 000FFEC0H 80 50 2BCH 000FFEBCH ∼ ∼ 255 FF ∼ 000H ∼ 000FFC00H マスク可能要因 INT 命令で使用 - *1:TBR の値を変更してもリセットベクタとモードベクタは常に固定アドレス "000FFFFCH", "000FFFF8H" が使用されます。 *2:マスク可能要因は各品種により定義されます。本品種におけるベクタテーブルは 「付録 B 割込みベクタ」を参照してください。 76 第 3 章 CPU および制御部 3.8.7 多重 EIT 処理 複数の EIT 要因が同時に発生した場合 , CPU は 1 つの EIT 要因を選択して受理し , EIT シーケンスを実行した後 , 再び EIT 要因の検出を行うという動作を繰り返しま す。 EIT 要因検出の際に , 受理可能な EIT 要因がなくなったとき , 最後に受理した EIT 要 因のハンドラの命令を実行します。 そのため , 複数の EIT 要因が同時に発生した場合の各要因 , ハンドラの実行順序は , 次の 2 つの要素によって決まります。 • EIT 要因受理の優先順位 • 受理した場合にほかの要因をどのようにマスクするか ■ EIT 要因受理の優先度 EIT 要因受理の優先度とは , PS と PC を退避して PC を更新し ( 必要に応じて ) ほかの 要因のマスク処理を行うという , EIT シーケンスを実行する要因を選ぶときの順番で す。 必ずしも , 先に受理された要因のハンドラが先に実行されるわけではありません。 表 3.8-4 に , EIT 要因受理の優先度を示します。 表 3.8-4 EIT 要因の受理の優先度とほかの要因へのマスク 受理の優先順位 要因 ほかの要因に対するマスク 1 リセット ほかの要因は破棄されます。 2 未定義命令例外 取消し 3 INT 命令 I フラグ =0 4 コプロセッサ不在トラップ コプロセッサエラートラップ 5 ユーザ割込み ILM= 受理した要因のレベル 6 NMI ( ユーザ用 ) ILM=15 7 (INTE 命令 ) ILM=4 * 8 NMI ( エミュレータ用 ) ILM=4 9 ステップトレーストラップ ILM=4 10 INTE 命令 ILM=4 ― *:INTE 命令とエミュレータ用 NMI が同時に発生したときのみ優先度が 6 になり ます (MB91305 ではエミュレータ用 NMI をデータアクセスによるブレークに使 用しています ) 。 77 第 3 章 CPU および制御部 EIT 要因を受理した後のほかの要因に対するマスクの処理を加味すると , 同時に発生し た EIT 要因の各ハンドラの実行順序は , 表 3.8-5 のようになります。 表 3.8-5 EIT ハンドラの実行順序 ハンドラの実行順序 要因 1 リセット *1 2 未定義命令例外 3 ステップトレーストラップ *2 4 INTE 命令 *2 5 NMI ( ユーザ用 ) 6 INT 命令 7 ユーザ割込み 8 コプロセッサ不在トラップ , コプロセッサエラートラップ *1:ほかの要因は破棄されます。 *2:INTE 命令をステップ実行したときはステップトレーストラップの EIT のみ発 生します。INTE による要因は無視されます。 図 3.8-5 に多重 EIT 処理の例を示します。 図 3.8-5 多重 EIT 処理 メインルーチン NMIのハンドラ INT命令 のハンドラ 優先度 (高)NMI発生 ①最初に実行 (低)INT命令実行 ②次に実行 78 第 3 章 CPU および制御部 3.8.8 多重 EIT の動作 FR ファミリの各動作について説明します。 以降の説明で , 転送元の「PC」とは各 EIT 要因を検出した命令のアドレスを示すも のとします。また , 「次の命令のアドレス」は , EIT を検出した命令によって以下の ようになります。 • LDI:32 のとき……PC + 6 • LDI:20, COPOP, COPLD, COPST, COPSV のとき……PC + 4 • その他の命令のとき……PC + 2 ■ ユーザ割込み・NMI の動作 ユーザ割込みまたはユーザ用 NMI の割込み要求が発生すると , 以下の順序で要求受理 の可否が判定されます。 [ 割込み要求受理の可否判定 ] 1. 同時に発生した要求の割込みレベルを比較し , 最も強いレベル ( 最も小さい数値 ) を 保持するものが選択されます。 比較に使用されるレベルは , マスク可能割込みについては対応する ICR の保持する 値が , NMI についてあらかじめ定められた定数が使用されます。 2. 同じレベルを持つ割込み要求が複数発生しているときは , 最も若い割込み番号を持 つ割込み要求が選択されます。 3. 割込みレベル≧レベルマスク値のとき , 割込み要求はマスクされ受理されません。 割込みレベル<レベルマスク値のとき , 4. へ。 4. 選択された割込み要求がマスク可能割込みであるとき , I フラグが "0" ならば割込み 要求はマスクされ , 受理されません。I フラグが "1" ならば 5. へ。 選択された割込み要求が NMI であるとき , I フラグの値にかかわらず 5. へ。 5. 上記の条件が成立したとき , 命令処理の切れ目で割込み要求が受理されます。 EIT 要求検出時にユーザ割込み・NMI の要求が受理されると , 受理された割込み要求に 対応した割込み番号を使用して , CPU は以下のように動作します。 なお ,〔動作〕における ( ) はレジスタの指すアドレスを表し , TMP は CPU 内部の一時 バッファを表します。 [ 動作 ] 1. (TBR +受理した割込み要求のベクタオフセット ) → TMP 2. SSP-4 → SSP 3. PS → (SSP) 4. SSP-4 → SSP 5. 次の命令のアドレス → (SSP) 6. 受理した要求の割込みレベル → ILM 7. "0" → S フラグ 8. TMP → PC 79 第 3 章 CPU および制御部 割込みシーケンス終了後ハンドラの先頭の命令を実行する前に , 新たな EIT の検出を 行います。この時点で受理可能な EIT が発生していると , CPU は EIT 処理シーケンス に遷移します。 ■ INT 命令の動作 INT #u8: u8 で示されるベクタの割込みハンドラへ分岐します。 [ 動作 ] 1. (TBR + 3FCH-4 × u8) → TMP 2. SSP-4 → SSP 3. PS → (SSP) 4. SSP-4 → SSP 5. PC + 2 → (SSP) 6. "0" → I フラグ 7. "0" → S フラグ 8. TMP → PC ■ INTE 命令の動作 INTE: ベクタ番号 #9 のベクタの割込みハンドラへ分岐します。 [ 動作 ] 1. (TBR + 3D8H) → TMP 2. SSP-4 → SSP 3. PS → (SSP) 4. SSP-4 → SSP 5. PC + 2 → (SSP) 6. "00100B" → ILM 7. "0" → S フラグ 8. TMP → PC INTE 命令 , およびステップトレーストラップの処理ルーチン中では , INTE 命令は使用 しないでください。また , ステップ実行中は INTE による EIT の発生はありません。 80 第 3 章 CPU および制御部 ■ ステップトレーストラップの動作 PS 中の SCR における T フラグをセットしてステップトレースの機能をイネーブルに しておくと , 1 命令実行ごとにトラップが発生し , ブレークします。 [ ステップトレーストラップ検出の条件 ] • T フラグ = 1 • 遅延分岐命令ではないとき • INTE 命令 , ステップトレーストラップの処理ルーチン以外を実行中であるとき 以上の条件が成立すると , 命令動作の切れ目でブレークします。 [ 動作 ] 1. (TBR + 3CCH) → TMP 2. SSP-4 → SSP 3. PS → (SSP) 4. SSP-4 → SSP 5. 次の命令のアドレス → (SSP) 6. "00100B" → ILM 7. "0" → S フラグ 8. TMP → PC Tフラグをセットしてステップトレーストラップをイネーブルにしたとき, ユーザ用の NMI とユーザ割込みは禁止状態となります。また , INTE 命令による EIT は発生しなく なります。 FR ファミリでは , T フラグをセットした次の命令からトラップが発生します。 ■ 未定義命令例外の動作 命令のデコード時に未定義命令であることを検出すると , 未定義命令例外が発生しま す。 [ 未定義命令例外の検出条件 ] • 命令のデコード時に , 未定義命令であることを検出 • 遅延スロット外に置かれている ( 遅延分岐命令の直後ではない ) 以上の条件が成立すると未定義命令例外が発生し , ブレークします。 [ 動作 ] 1. (TBR + 3C4H) → TMP 2. SSP-4 → SSP 3. PS → (SSP) 4. SSP-4 → SSP 5. PC → (SSP) 6. "0" → S フラグ 7. TMP → PC PC として退避されるのは , 未定義命令例外を検出した命令自身のアドレスです。 81 第 3 章 CPU および制御部 ■ コプロセッサ不在トラップ 実装していないコプロセッサを使用するコプロセッサ命令を実行すると , コプロセッ サ不在トラップが発生します。 [ 動作 ] 1. (TBR + 3E0H) → TMP 2. SSP-4 → SSP 3. PS → (SSP) 4. SSP-4 → SSP 5. 次の命令のアドレス → (SSP) 6. "0" → S フラグ 7. TMP → PC ■ コプロセッサエラートラップ コプロセッサを使用しているときにエラーが発生した場合 , 次にそのコプロセッサを 操作するコプロセッサ命令を実行したとき , コプロセッサエラートラップが発生しま す。 [ 動作 ] 1. (TBR + 3DCH) → TMP 2. SSP-4 → SSP 3. PS → (SSP) 4. SSP-4 → SSP 5. 次の命令のアドレス → (SSP) 6. "0" → S フラグ 7. TMP → PC ■ RETI 命令の動作 RETI 命令は , EIT 処理ルーチンから復帰する命令です。 [ 動作 ] 1. (R15) → PC 2. R15 + 4 → R15 3. (R15) → PS 4. R15 + 4 → R15 RETI 命令は , S フラグが "0" の状態で実行する必要があります。 82 第 3 章 CPU および制御部 3.8.9 注意事項 EIT に関する注意事項について説明します。 ■ 遅延スロット 分岐命令の遅延スロットには , EIT に関して制約があります。 「3.7 分岐命令」を参照してください。 83 第 3 章 CPU および制御部 3.9 動作モード FR ファミリの動作モードについて説明します。 ■ 動作モードの概要 動作モードには , バスモードとアクセスモードがあります。 バスモード アクセスモード シングルチップ 内 ROM 外バス 16 ビットバス幅 外 ROM 外バス 8 ビットバス幅 ■ バスモード バスモードとは , 内部 ROM の動作と外部アクセス機能の動作を制御するモードを指し , モード設定端子 (MD3, MD2, MD1, MD0) とモードデータ内の ROMA ビットの内容で指 定します。 ■ アクセスモード アクセスモードとは , 外部データバス幅を制御するモードを示し , モードレジスタ内の WTH1, WTH0 ビットと ACR0 ∼ ACR7(Area Configuration Register) 内の DBW1, DBW0 ビットで指定します。 84 第 3 章 CPU および制御部 3.9.1 バスモード FR ファミリには , バスモード 0 ( シングルチップモード ), バスモード 1 ( 内 ROM 外 バスモード ), バスモード 2 ( 外 ROM 外バスモード ) の 3 つのバスモードがありま す。 MB91305 ではバスモード 2 ( 外 ROM 外バスモード ) のみサポートしています。 詳細は「3.1 メモリ空間」を参照してください。 ■ バスモード 2 ( 外 ROM 外バスモード ) 内部 I/O, D-busRAM が有効で , F-busRAM, F-busROM へのアクセスを禁止にしてすべて のアクセスが外部空間へのアクセスとなるモードです。外部端子の一部は , バス端子と して機能します。 85 第 3 章 CPU および制御部 モード設定 3.9.2 FR ファミリでは , モード端子 (MD3, MD2, MD1, MD0) とモードレジスタ (MODR) で動作モードの設定を行います。 ■ モード端子 MD3, MD2, MD1, MD0 の 4 端子で , モードベクタフェッチに関する指定を行います。 表 3.9-1 にモードベクタフェッチに関する指定を示します。 表 3.9-1 モードベクタフェッチに関する指定 モード端子 モード名 リセットベクタ アクセス領域 備考 MD3 MD2 MD1 MD0 0 0 0 0 外 ROM モードベクタ 外部 USB あり。原発振 48MHz で使用。 0 0 1 0 外 ROM モードベクタ 外部 USB なし。原発振 16MHz で使用。 バス幅はモードレジスタで設定 <注意事項> 表 3.9-1 に示した設定以外は禁止とします。シングルチップモードはサポートしていませ ん。 ● 動作クロック生成について • MD3,MD2,MD1,MD0={0000} USB 機能ありの場合 原発振 48MHz を 3 分周した 16MHz をクロック生成制御部で使用します。 USB クロックは発振回路からの 48MHz をそのまま使用します。 • MD3,MD2,MD1,MD0={0010} USB 機能なしの場合 原発振 16MHz をクロック生成制御部で使用します。 "「3.11.5 クロック生成制御部のブロックダイヤグラム」を参照してください "。 参考: USB 機能については「付録 C USB 機能」も参照してください。 86 第 3 章 CPU および制御部 ■ モードレジスタ (MODR) ● レジスタ詳細説明 図 3.9-1 レジスタ詳細 MODR 0007FDH 15 14 13 12 11 0 0 0 0 0 10 9 8 初期値 ROMA WTH1 WTH0 XXXXXXXXB 動作モード設定ビット リード / ライト:W モードベクタフェッチによってモードレジスタに書き込むデータをモードデータとよ びます。モードベクタフェッチについては , 「3.10.3 リセットシーケンス」を参照して ください。 モードレジスタ (MODR) に設定が行われた後 , 本レジスタの設定に従った動作モード で動作します。 モードレジスタは , すべてのリセット要因で設定されます。また , ユーザプログラムか らは書き込むことはできません。 ● モードデータ詳細説明 図 3.9-2 に , モードデータ詳細を示します。 図 3.9-2 モードデータ詳細 アドレス : 31 30 29 28 27 0007FDH 0 0 0 0 0 26 25 24 初期値 ROMA WTH1 WTH0 XXXXXXXXB 動作モード設定ビット リード / ライト:W [bit 31 ∼ bit 27] 予約ビット 必ず "00000B" を設定してください。 "00000B" 以外の値を設定したときの動作は保障できません。 [bit 26] ROMA ( 内部 ROM イネーブルビット ) 内部 F-busRAM, F-busROM 領域を有効にするかどうかを設定します。 表 3.9-2 内部 F-busRAM, F-busROM 領域設定 ROMA 機 能 0 外 ROM モード * 1 内 ROM モード 備 考 内部 F-bus 領域 (40000H ∼ 100000H) が外部領域になります。 内部 F-bus 領域 (40000H ∼ 100000H) がアクセス禁止になります。 ( 設定禁止 ) *: MB91305 は内部 ROM はありません。外 ROM モード (ROMA=0 設定 ) として使用してくだ さい。 87 第 3 章 CPU および制御部 [bit 25, bit 24] WTH1, WTH0 ( バス幅指定ビット ) 外バスモード時のバス幅指定の設定を行います。 外バスモード時, この値がACR0 (CS0領域) のDBW1, DBW0ビットに設定されます。 表 3.9-3 外バスモード時のバス幅指定設定 WTH1 WTH0 0 0 8 ビットバス幅 外バスモード 0 1 16 ビットバス幅 外バスモード 1 0 32 ビットバス幅 外バスモード ( 設定禁止 ) 1 1 シングルチップモード * シングルチップモード ( 設定禁止 ) 機 能 備 考 *: シングルチップモードはサポートしていません。 <注意事項> モードベクタに設定するモードデータは , "0X000FFFF8H " にバイトデータとして配置す る必要があります。FR ファミリは , バイトエンディアンとしてビッグエンディアンを採 用していますので , 下図のように , bit 31 ∼ bit 24 の最上位バイトに配置してください。 31 24 23 16 15 8 7 0 誤 0X000FFFF8H XXXXXXXX XXXXXXXX XXXXXXXX Mode Data 31 24 23 16 15 8 7 0 正 0X000FFFF8H Mode Data XXXXXXXX XXXXXXXX XXXXXXXX 0X000FFFFCH Reset Vector 88 第 3 章 CPU および制御部 3.10 リセット ( デバイス初期化 ) MB91305 の初期化であるリセット動作について説明します。 ■ リセット ( デバイス初期化 ) の概要 リセット要因が発生すると , デバイスはすべてのプログラムおよびハードウェア動作 を停止し , 状態を初期化します。この状態をリセット状態とよびます。 リセット要因の消失により , デバイスは初期状態からプログラムおよびハードウェア 動作を開始します。このリセット状態から動作開始までの一連の動作をリセットシー ケンスとよびます。 89 第 3 章 CPU および制御部 3.10.1 リセットレベル MB91305 のリセット動作は 2 種類のレベルに分けられ , それぞれ発生要因および初 期化の内容が異なります。 各リセットレベルについて説明します。 ■ 設定初期化リセット (INIT) すべての設定を初期化する最強レベルのリセットを設定初期化リセット (INIT) とよび ます。 設定初期化リセット (INIT) により初期化される主な内容は , 以下のとおりです。 〔設定初期化リセット (INIT) による初期化箇所〕 • デバイスの動作モード ( バスモードおよび外部バス幅の設定 ) • 内部クロックに関するすべての設定 ( クロックソース選択 , PLL 制御 , 分周比設定 ) • 外部バス拡張インタフェースのすべての設定 • 外部バスの CS0 領域に関するすべての設定 • その他端子状態に関するすべての設定 • 動作初期化リセット (RST) で初期化されるすべての箇所 詳細はそれぞれの機能の説明を参照してください。 なお , 電源投入後は必ず INIT 端子にて設定初期化リセット (INIT) を行ってください。 ■ 動作初期化リセット (RST) プログラム動作を初期化する通常レベルのリセットを動作初期化リセット (RST) とよ びます。 設定初期化リセット (INIT) 時には , 同時に動作初期化リセット (RST) も発生します。 動作初期化リセット (RST) により初期化される主な内容は以下のとおりです。 〔動作初期化リセット (RST) による初期化箇所〕 • プログラム動作 • CPU および内部バス • 周辺回路のレジスタ設定値 • I/O ポート設定 • 外部バスの CS0 領域に関するすべての設定 • デバイスの動作モード ( バスモードおよび外部バス幅の設定 ) 詳細はそれぞれの機能の説明を参照してください。 90 第 3 章 CPU および制御部 3.10.2 リセット要因 MB91305 における各リセット発生要因と発生するリセットレベルについて説明しま す。 過去に発生したリセット要因は , RSRR ( リセット要因レジスタ ) を読み出すことに より知ることが可能です ( 各説明にあるレジスタ , フラグの詳細な説明は , 「3.11.5 クロック生成制御部のブロックダイヤグラム」および「3.11.6 クロック生成制御部 のレジスタ詳細説明」を参照 ) 。 ■ INIT 端子入力 ( 設定初期化リセット端子 ) 外部端子の INIT 端子は , 設定初期化リセット端子として機能します。 本端子へ"L"レベル入力を行っている間, 設定初期化リセット(INIT)要求が発生します。 本端子へ "H" レベルを入力することにより , 設定初期化リセット (INIT) 要求は解除さ れます。 本端子要求による設定初期化リセット (INIT) が発生した場合 , RSRR ( リセット要因レ ジスタ ) 中の bit 15:INIT ビットがセットされます。本端子要求による設定初期化リセッ ト (INIT) は , すべてのリセット要因中で最強のものであり , すべての入力・動作・状態 よりも優先されます。 なお , 電源投入直後は必ず INIT 端子にて設定初期化リセット (INIT) を行ってください。 また , 電源投入直後は , 発振回路の発振安定待ち時間を確保するため , INIT 端子への "L" レベル入力を発振回路の要求する安定待ち時間の間持続してください (INIT 端子に よる INIT では , 発振安定待ち時間の設定は最小値に初期化されています ) 。 • 発生要因 :外部 INIT 端子への "L" レベル入力 • 解除要因 :外部 INIT 端子への "H" レベル入力 • 発生レベル : 設定初期化リセット (INIT) • 対応フラグ : bit 15:INIT ■ STCR:SRST ビット書込み ( ソフトウェアリセット ) STCR ( スタンバイ制御レジスタ ) 中の bit 4:SRST ビットに "0" が書き込まれると , ソフ トウェアリセット要求が発生します。 ソフトウェアリセット要求は , 動作初期化リセット (RST) 要求です。 要求が受け付けられ動作初期化リセット (RST) が発生するとソフトウェアリセット要 求は解除されます。 ソフトウェアリセット要求による動作初期化リセット (RST) が発生した場合 , RSRR ( リセット要因レジスタ ) 中の bit 11:SRST ビットがセットされます。 ソフトウェアリセット要求による動作初期化リセット (RST) は , TBCR ( タイムベース カウンタ制御レジスタ ) 中の bit 7:SYNCR ビットがセットされている場合 ( 同期リセッ トモード ) , すべてのバスアクセスが停止してからでないと発生しません。 このため, バスの使用状況によっては動作初期化リセット (RST)が発生するまでに長時 間を要する場合があります。 91 第 3 章 CPU および制御部 • 発生要因: STCR ( スタンバイ制御レジスタ ) 中の bit 4:SRST ビットへの "0" の書込み • 解除要因: 動作初期化リセット (RST) の発生 • 発生レベル : 動作初期化リセット (RST) • 対応フラグ : bit 11:SRST <参考> 同期モードのソフトウェアリセットの使用に関しては TBCR ( タイムベースカウンタ制御 レジスタ ) の bit 7 : SYNCR ビットの制限事項を参照してください。 ■ ウォッチドッグリセット RSRR ( ウォッチドッグタイマ制御レジスタ ) に対し書込みを行うと , ウォッチドッグ タイマが起動します。その後 , RSRR 中の bit 9, bit 8:WT1, WT0 ビットにて設定した周 期内に CTBR ( タイムベースカウンタクリアレジスタ ) への "A5H"/"5AH" 書込みが行わ れないと , ウォッチドッグリセット要求が発生します。 ウォッチドッグリセット要求は , 設定初期化リセット (INIT) 要求です。要求が受け付 けられ設定初期化リセット (INIT) が発生するか , または動作初期化リセット (RST) が 発生すると , ウォッチドッグリセット要求は解除されます。 ウォッチドッグリセット要求による設定初期化リセット (INIT) が発生した場合 , RSRR ( リセット要因レジスタ ) 中の bit 13:WDOG ビットがセットされます。 なお , ウォッチドッグリセット要求による設定初期化リセット (INIT) が発生した場合 では , 発振安定待ち時間の設定は初期化されません。 • 発生要因: ウォッチドッグタイマの設定周期経過 • 解除要因: 設定初期化リセット (INIT) または動作初期化リセット (RST) の発生 • 発生レベル : 設定初期化リセット (INIT) • 対応フラグ : bit 13:WDOG 92 第 3 章 CPU および制御部 3.10.3 リセットシーケンス リセット要因の消失により , デバイスはリセットシーケンスの実行を開始します。 リセットシーケンスは , リセットレベルによりそれぞれ動作内容が異なります。 ここでは , 各リセットレベルにおけるリセットシーケンスの動作内容について説明 します。 ■ 設定初期化リセット (INIT) 解除シーケンス 設定初期化リセット (INIT) 要求が解除されると , デバイスは以下の動作を順に実行し ます。 1. 設定初期化リセット (INIT) の解除 , 発振安定待ち状態へ遷移 2. 発振安定待ち時間 (STCR の bit 3,bit 2:OS1,OS0 にて設定 ) の間 , 動作初期化リセット (RST) 状態を保持 , 内部クロック停止 3. 動作初期化リセット (RST) 状態 , 内部クロック動作開始 4. 動作初期化リセット (RST) の解除 , 通常動作状態へ遷移 5. "000FFFF8H" 番地より , モードベクタの読出し 6. "000007FDH" 番地の MODR ( モードレジスタ ) へ , モードベクタの書込み 7. 000FFFFCH" 番地より , リセットベクタの読出し 8. PC ( プログラムカウンタ ) へ , リセットベクタの書込み 9. PC ( プログラムカウンタ ) の示す番地より , プログラム動作開始 ■ 動作初期化リセット (RST) 解除シーケンス 動作初期化リセット(RST)要求が解除されると, デバイスは以下の動作を順に実行しま す。 1. 動作初期化リセット (RST) の解除 , 通常動作状態へ遷移 2. "000FFFF8H" 番地より , モードベクタの読出し 3. "000007FDH" 番地の MODR ( モードレジスタ ) へ , モードベクタの書込み 4. "000FFFFCH" 番地より , リセットベクタの読出し 5. PC ( プログラムカウンタ ) へ , リセットベクタの書込み 6. PC ( プログラムカウンタ ) の示す番地より , プログラム動作開始 93 第 3 章 CPU および制御部 3.10.4 発振安定待ち時間 デバイスの原発振が停止 , またはその可能性がある状態から復帰したとき , 自動的に 発振安定待ち状態に遷移します。 本機能により発振開始後の安定していない発振器出力を使用しないようにします。 発振安定待ち時間中は , 内部および外部へのクロック供給は停止し , 内蔵タイムベー スカウンタのみが動作して , STCR ( スタンバイ制御レジスタ ) にて設定された安定 待ち時間の経過を待ちます。 以下に , 発振安定待ち動作の詳細について説明します。 ■ 発振安定待ち発生要因 発振安定待ち発生要因を以下に示します。 ● 設定初期化リセット (INIT) の解除時 各種要因による設定初期化リセット (INIT) が解除された直後に , 発振安定待ち状態へ 遷移します。 発振安定待ち時間経過後は , 動作初期化リセット (RST) 状態へ遷移します。 ● ストップモードからの復帰時 ストップモードが解除された直後に , 発振安定待ち状態へ遷移します。ただし , 設定初 期化リセット (INIT) 要求により解除された場合は , 設定初期化リセット (INIT) 状態に 遷移し , 設定初期化リセット (INIT) が解除された後 , 発振安定待ち状態へ遷移します。 発振安定待ち時間経過後は , ストップモードが解除された要因に対応した状態へと遷 移します。 • 有効な外部割込み要求入力 (NMI を含む ) の発生による復帰時: 通常動作状態へ遷移します。 • 設定初期化リセット (INIT) 要求による復帰時: 動作初期化リセット (RST) 状態へ遷移します。 • 動作初期化リセット (RST) 要求による復帰時: 動作初期化リセット (RST) 状態へ遷移します。 ● PLL 選択時における異常状態の発生からの復帰時 PLL をソースクロックとして動作しているときに , PLL 制御に何らかの異常 * が発生し た場合 , PLL ロックタイムの確保のために , 自動的に発振安定待ち時間に遷移します。 発振安定待ち時間経過後は , 通常動作状態へ遷移します。 *:PLL 使用中の逓倍率変更や , PLL 動作許可ビット化けの発生など。 94 第 3 章 CPU および制御部 ■ 発振安定待ち時間の選択 発振安定待ち時間は , 内蔵タイムベースカウンタを用いて計測されます。 発振安定待ち発生要因が発生し , 発振安定待ち状態へ遷移すると , 内蔵タイムベースカ ウンタはいったん初期化された後 , 発振安定待ち時間の計測を開始します。 STCR ( スタンバイ制御レジスタ ) の bit 3,bit 2:OS1,OS0 ビットにより , 発振安定待ち時 間を 4 種類のうちから選択して設定することができます。 いったん選択した設定は , 外部 INIT 端子による設定初期化リセット (INIT) 以外では初 期化されません。 それ以外のウォッチドッグリセットによる設定初期化リセット (INIT) や , 動作初期化リセット (RST) では , リセット発生以前に設定した発振安定待ち時間が 保持されます。 発振安定待ち時間の選択の 4 種類の設定は , それぞれ以下の用途を想定してあります。 • OS1,OS0 = "00B" :発振安定待ち時間なし ( ストップモードで PLL も発振器を停止させない場合 ) • OS1,OS0 = "01B" :PLL ロック待ち時間 ( ストップモードで発振器を停止させない場合 ) • OS1,OS0 = "10B" :発振安定待ち時間 ( 中 ) ( セラミック振動子などの安定が速い発振子を使用する場合 ) • OS1,OS0 = "11B" :発振安定待ち時間 ( 長 ) ( 一般の水晶発振子などを使用する場合 ) なお , 電源投入直後は必ず INIT 端子にて設定初期化リセット (INIT) を行ってください。 また , 電源投入直後は , 発振回路の発振安定待ち時間を確保するため , INIT 端子への "L" レベル入力を発振回路の要求する発振安定待ち時間の間持続してください (INIT 端 子による INIT では , 発振安定待ち時間の設定は最小値に初期化されています )。 95 第 3 章 CPU および制御部 3.10.5 リセット動作モード 動作初期化リセット (RST) には , 通常 ( 非同期 ) リセットモードと同期リセットモー ドの 2 つのモードがあり , TBCR ( タイムベースカウンタ制御レジスタ ) 中の bit 7: SYNCR ビットによってどちらのモードで動作するかを設定します。 本モード設定は , 設定初期化リセット (INIT) のみで初期化されます。 設定初期化リセット (INIT) は , 常に非同期でリセット動作を行います。 以下に , 各モード動作について説明します。 ■ 通常リセット動作 動作初期化リセット (RST) 要求が発生した際に , 即座に動作初期化リセット (RST) 状態 への遷移を行う動作を通常リセット動作とよびます。 本モードにおいては , リセット (RST) 要求が受け付けられると , 内部バスアクセスの動 作状態にかかわらず , 即時にリセット (RST) 状態へ遷移します。 本モードでは , 各状態へ遷移する時点で行われていたバスアクセスについては , その結 果を保証できません。しかし , それらの要求を確実に受け付けることが可能です。 TBCR ( タイムベースカウンタ制御レジスタ ) 中の bit 7:SYNCR ビットが "0" のとき , 通常 リセットモードとなります。 設定初期化リセット (INIT) の発生後の初期値は , 通常リセットモードとなります。 ■ 同期リセット動作 動作初期化リセット(RST)要求が発生した際に, すべてのバスアクセスが停止してから 動作初期化リセット (RST) 状態への遷移を行う動作を同期リセット動作とよびます。 本モードにおいては , リセット (RST) 要求が受け付けられても , 内部バスアクセスが行 われている間は , リセット (RST) 状態への遷移は行いません。 上記要求が受け付けられると , それにより内部バスに対してスリープ要求が発行され ます。各バスが動作を切り上げてスリープ状態に移行すると , 動作初期化リセット (RST) 状態へ遷移します。 本モードでは , 各状態へ遷移する時点ではすべてのバスアクセスが停止しているため , すべてのバスアクセスの結果を保証できます。しかし , バスアクセスが何らかの理由に より停止しない場合 , その間各要求を受け付けることができなくなります (このような 場合でも , 設定初期化リセット (INIT) は即座に有効となります ) 。 バスアクセスが停止しない要因には以下のものがあげられます。 • 外部拡張バスインタフェースに対し BRQ ( バス解放要求 ) が入力され続け , BGRNT ( バス解放アクノリッジ ) が有効となっている場合で , 内部バスから新たなバスアク セス要求が発生しているような場合 • 外部拡張バスインタフェースに対し RDY ( レディ要求 ) が入力され続け , バスウェ イトが有効となっている場合。また , 以下の場合においては , 最終的には各状態へ 遷移しますが , 遷移するまでに長時間が必要です。 96 第 3 章 CPU および制御部 <参考> • 同期リセットモードの使用に関しては TBCR ( タイムベースカウンタ制御レジスタ ) の bit 7 : SYNCR ビットの制限事項を参照してください。 • DMA コントローラについては , 各要求の受付けにより転送停止を行いますので , 各状 態への遷移を遅延させることはありません。 • TBCR ( タイムベースカウンタ制御レジスタ ) 中の bit 7:SYNCR ビットが "1" のときに 同期リセットモードとなります。 • 設定初期化リセット (INIT) の発生後の初期値は , 通常リセットモードに戻ります。 97 第 3 章 CPU および制御部 3.11 クロック生成制御 クロック生成制御について説明します。 ■ 内部動作クロックの生成 MB91305 の内部動作クロックは , 以下のように生成されます。 • ソースクロックの選択:クロックの供給源を選択します。 • ベースクロックの生成:ソースクロックを 2 分周または PLL 発振させ , 基本クロッ クを生成します。 • 各内部クロックの生成:ベースクロックを分周し , 各部に供給する 4 種類の動作ク ロックを生成します。 以降 , 各クロック生成とその制御について説明します。 各説明にあるレジスタ , フラグの詳細な説明は ,「3.11.5 クロック生成制御部のブロッ クダイヤグラム」および「3.11.6 クロック生成制御部のレジスタ詳細説明」を参照し てください。 ■ 自励発振 (X0/X1 端子入力 ) 外部発振端子に発振子を接続し , 内蔵発振回路にて生成した原発振をソースクロック とします。 外部バスクロックを含むすべてのクロック供給源は , FR ファミリデバイス自身となり ます。 メインクロックは , X0/X1 端子入力から生成し , 高速クロックとして使用することを想 定したものです。 メインクロックは , 制御可能な内蔵 PLL を用いて逓倍されます。 内部ベースクロックは , 以下のソースクロックのうちから選択して生成します。 • メインクロックを 2 分周したもの • メインクロックを PLL で逓倍したもの ソースクロックの選択制御は , CLKR ( クロックソース制御レジスタ ) の設定によって 行います。 98 第 3 章 CPU および制御部 3.11.1 PLL 制御 ソースクロックに対応した PLL 発振回路について , 動作 ( 発振 ) 許可・禁止と逓倍 率設定を独立に制御することが可能です。 各制御は , CLKR ( クロックソース制御レジスタ ) の設定によって行います。 以下に , 各制御内容について説明します。 ■ PLL 動作許可 CLKR の bit 10 は , 設定初期化リセット (INIT) 後は "0" に初期化され , PLL の発振動作 は停止しています。停止中は , ソースクロックとして PLL 出力を選択することはでき ません。 プログラム動作を開始後は , まずクロックソースとして使用する PLL の逓倍率を設定 し , かつ動作を許可し , PLL ロック待ち時間経過後にソースクロックを切り換えてくだ さい。この際の PLL ロック待ち時間は , タイムベースタイマ割込みを使用することを お奨めします。 ソースクロックとして PLL 出力を選択している間は , その PLL は動作を停止させるこ とはできません ( レジスタへの書込みは無効となります ) 。ストップモードに移行する 際などで PLL を停止させたい場合は , いったんソースクロックをメインクロックの 2 分周したものに選択し直した後 , PLL を停止させてください。 なお , STCR ( スタンバイ制御レジスタ ) の bit 0:OSCD1 ビットにより , ストップモード 中の発振が停止するように設定してある場合 , 対応する PLL はストップモード遷移時 に自動的に停止しますので , 動作停止を改めて設定する必要はありません。その後 , ス トップモードから復帰する際 , PLL は自動的に発振動作を開始します。ストップモー ド中の発振が停止しないように設定してある場合は , PLL は自動では停止しません。こ の場合は , 必要であればストップモード移行前にあらかじめ動作停止を設定してくだ さい。 99 第 3 章 CPU および制御部 ■ PLL 逓倍率 メイン PLL の逓倍率は , CLKR ( クロックソース制御レジスタ ) の bit 14 ∼ 12: PLL1S2, PLL1S1, PLL1S0 ビットによって設定します。 どちらのビットも設定初期化リセット (INIT) 後は , 全ビットが "0" に初期化されていま す。 〔PLL 逓倍率設定〕 自励発振モードで , PLL 逓倍率設定を初期値より変更する場合 , プログラム動作開始後 , PLL を動作許可する前または同時に設定してください。逓倍率変更後は , ロック待ち時 間経過後にソースクロックを切り換えてください。この際の PLL ロック待ち時間は , タ イムベースタイマ割込みを使用することをお奨めします。 動作中に PLL 逓倍率設定を変更する場合 , いったんソースクロックを該当 PLL 以外に 切り換えてから変更してください。逓倍率変更後は , 上記同様にロック待ち時間経過後 にソースクロックを切り換えてください。 PLL 逓倍率設定を , PLL 使用中に変更することも可能ですが , この際は逓倍率設定書換 え後から自動的に発振安定待ち状態に遷移し , 設定された発振安定待ち時間が経過す るまでの間はプログラム動作が停止します。PLL 以外にクロックソースを切り換えた 場合は , プログラム動作は停止しません。 100 第 3 章 CPU および制御部 3.11.2 発振安定待ち・PLL ロック待ち時間 ソースクロックとして選択するクロックが安定動作状態にない場合 , 発振安定待ち 時間が必要となります (「3.10.4 発振安定待ち時間」を参照 ) 。 PLL については , 動作開始後 , 設定された周波数に出力が安定するまでロック待ち時 間が必要となります。 以下に , 各種ケースにおける待ち時間について説明します。 ■ 電源投入後の待ち時間 電源投入後は , まずメインクロック用発振回路の発振安定待ち時間が必要となります。 発振安定待ち時間の設定は , INIT 端子入力 ( 設定初期化リセット端子 ) により最小値に 初期化されるため , この発振安定待ち時間は , INIT 端子入力へ "L" レベルを入力する時 間により確保します。 この状態においては , PLL はいずれも動作許可されていないため , ロック待ち時間は考 慮する必要がありません。 ■ 設定初期化後の待ち時間 設定初期化リセット (INIT) が解除されると , 発振安定待ち状態へ遷移します。設定さ れた発振安定待ち時間を内部的に発生します。 INIT 端子入力後の初めの発振安定待ち状態では , 設定時間は最小値に初期化されてい るため , すぐに本状態は終了し , 動作初期化リセット (RST) 状態へと遷移します。 プログラム動作開始後 , INIT 端子入力以外の要因により設定初期化リセット (INIT) が 発生した場合の解除時には , プログラムにて設定された時間の発振安定待ち時間を内 部的に発生します。 この状態においては , PLL はいずれも動作許可されていないため , ロック待ち時間は考 慮する必要がありません。 ■ PLL 逓倍率変更後の待ち時間 プログラム動作開始後 , 動作状態の PLL の逓倍率設定を変更した場合 , 設定変更後に プログラム動作は一時停止して発振安定待ち ( ロック待ち ) 状態に遷移し , 設定されて いる発振安定待ち ( ロック待ち ) 時間の経過後にプログラム動作に復帰します。 この動作により , タイムベースカウンタはいったん初期化されます。 ■ ストップモード復帰後の待ち時間 プログラム動作開始後 , ストップモードに遷移した場合の解除時には , プログラムにて 設定された時間の発振安定待ち時間を内部的に発生します。 ストップモード中に , メインクロック用発振回路を停止させる設定であった場合 , その 発振回路の発振安定待ち時間とメイン PLL のロック待ち時間のうち長い方の時間が必 要となります。ストップモードに遷移させる前に , あらかじめその発振安定待ち時間を 設定しておいてください。 ストップモード中に , メインクロック用発振回路を停止させない設定であった場合は , PLL は自動では動作停止しません。したがって , PLL を停止させない限り発振安定待 ち時間は必要となりません。ストップモードに遷移させる前に , あらかじめ発振安定待 ち時間を最小値に設定しておくことをお奨めします。 101 第 3 章 CPU および制御部 3.11.3 クロック分配 ソースクロックより生成されたベースクロックを元に , 各機能用の動作クロックを それぞれ作成します。 内部動作クロックは全部で 3 種類あり , それぞれが独立に分周比を設定することが できます。 以下に , 各内部動作クロックについて説明します。 ■ CPU クロック (CLKB) CPU と内部メモリおよび内部バスに使用されるクロックです。 本クロックを使用する回路には , 以下のようなものがあります。 • CPU • 命令キャッシュ • 内蔵 RAM • ビットサーチモジュール • I-bus, D-bus, X-bus, F-bus • DMA コントローラ • DSU 動作可能な上限周波数は 64MHz ですので , これを超える周波数になる逓倍率と分周比 の組合せは設定しないでください。 ■ 周辺クロック (CLKP) 周辺回路およびペリフェラルバスに使用されるクロックです。 本クロックを使用する回路には , 以下のようなものがあります。 • ペリフェラル ( 周辺 ) バス • クロック制御部 ( バスインタフェース部のみ ) • 割込みコントローラ • 周辺 I/O ポート • I/O ポートバス • 外部割込み入力 • UART • 16 ビットタイマ • A/D コンバータ • フリーランタイマ • リロードタイマ • インプットキャプチャ • I2C インタフェース • PPG 動作可能な上限周波数は 32MHz ですので , これを超える周波数になる逓倍率と分周比 の組合せは設定しないでください。 102 第 3 章 CPU および制御部 ■ 外部バスクロック (CLKT) 外部拡張バスインタフェースに使用されるクロックです。 本クロックを使用する回路には , 以下のようなものがあります。 • 外部拡張バスインタフェース • 外部 CLK 出力 動作可能な上限周波数は 32MHz ですので , これを超える周波数になる逓倍率と分周比 の組合せは設定しないでください。 103 第 3 章 CPU および制御部 3.11.4 クロック分周 各内部動作クロックは , それぞれ独立にベースクロックからの分周比を設定するこ とができます。この機能により , 各回路に最適な動作周波数を設定することができ ます。 ■ 分周比の設定 分周比は , DIVR0 ( 基本クロック分周設定レジスタ 0) および DIVR1 ( 基本クロック分 周設定レジスタ 1) にて設定します。 各レジスタには各クロックに対応する 4 ビットずつの設定ビットがあり , ( レジスタ設 定値+ 1) がそのクロックのベースクロックに対する分周比となります。分周比設定が 奇数であっても , 常にデューティ比は 50%となります。 設定値の変更があった場合 , 設定後 , 次のクロックの立上りから変更後の分周比が有効 となります。 分周比設定は , 動作初期化リセット (RST) の発生では初期化されず , リセット発生前の 設定が維持されます。設定初期化リセット (INIT) の発生によってのみ初期化されます。 初期状態では , 周辺クロック (CLKP) 以外はすべて分周比が 1 となりますので , ソース クロックを高速なものに変更する前に必ず分周比の設定を行ってください。 <注意事項> 各クロックには動作可能な上限周波数が規定されています。ソースクロックの選択 , PLL の逓倍率の設定 , 分周比の設定の組合せで上限周波数を超える設定をした場合 , 動作は保 証されません。特に , ソースクロック選択の変更設定との順序を間違えないように注意し てください。 104 第 3 章 CPU および制御部 3.11.5 クロック生成制御部のブロックダイヤグラム 図 3.11-1 に , クロック生成制御部のブロックダイヤグラムを示します。 図中のレジスタの詳細な説明は , 「3.11.6 クロック生成制御部のレジスタ詳細説明」 を参照してください。 ■ クロック生成制御部のブロックダイヤグラム 図 3.11-1 クロック生成制御部のブロックダイヤグラム [クロック生成部] DIVR0,DIVR1レジスタ 周辺クロック分周 セレ クタ R-bus セレ クタ 外部バスクロック分周 セレ クタ モード端子* 発振 回路 1/3 各周辺クロック 各部バスクロック CLKRレジスタ PLL メイン発振 1/2 セレクタ X1 セレクタ X0 CPUクロック 停止制御 CPUクロック分周 USBクロック [ストップ・スリープ制御部] 内部割込み STCRレジスタ 内部リセット ストップ状態 状態遷移 制御回路 SLEEP状態 リセット発生 F/F リセット発生 F/F 内部リセット(RST) 内部リセット(INIT) [リセット要因回路] INT端子 RSRR レジスタ [ウォッチドッグ制御部] ウォッチドッグF/F タイムベースカウンタ CTBRレジスタ TBCRレジスタ 割込み許可 カウンタクロック セレクタ オーバフロー検出F/F タイムベースタイマ 割込み要求 * : MD3,MD2,MD1,MD0={0000}USB機能あり。発振回路からの3分周を選択。 MD3,MD2,MD1,MD0={0010}USB機能あり。発振回路からのスルーを選択。 105 第 3 章 CPU および制御部 3.11.6 クロック生成制御部のレジスタ詳細説明 クロック生成制御部のレジスタについて説明します。 ■ RSRR:リセット要因レジスタ / ウォッチドッグタイマ制御レジスタ リセット要因レジスタおよびウォッチドッグタイマ制御レジスタの構成は , 以下のと おりです。 図 3.11-2 リセット要因レジスタ / ウォッチドッグタイマ制御レジスタのレジスタ構成 RSRR bit 15 アドレス 000480H INIT (R/W) 初期値 (INIT 端子 ) 初期値 (INIT) 初期値 (RST) 1 * X 14 13 12 WDOG (R/W) (R/W) (R/W) 0 * X 0 * X 0 X * 11 10 9 8 SRST (R/W) (R/W) WT1 (R/W) WT0 (R/W) 0 X * 0 * X 0 0 0 0 0 0 * : 要因により初期化されます。 X : 初期化されません。 直前に発生したリセットの要因の保持 , およびウォッチドッグタイマの周期設定およ び起動制御を行うレジスタです。 本レジスタを読むと , 保持されたリセット要因は読出し後にクリアされます。読み出す までの間に複数回のリセットが発生した場合 , リセット要因フラグは累積され , 複数の フラグがセットされることになります。 本レジスタに書き込むと , ウォッチドッグタイマが起動されます。それ以降は , リセッ ト (RST) が発生するまでウォッチドッグタイマは動作を続けます。 [bit 15] INIT:INITialize reset occured INIT 端子入力によるリセット (INIT) の発生の有無を示します。 値 内 容 0 INIT 端子入力による INIT は発生していません。 1 INIT 端子入力による INIT が発生しました。 • リード直後に "0" にクリアされます。 • リード可能で , ライトはビット値に影響を与えません。 [bit 14] ( 予約ビット ) 106 第 3 章 CPU および制御部 [bit 13] WDOG:WatchDOG reset occured ウォッチドッグタイマによるリセット (INIT) の発生の有無を示します。 値 内 容 0 ウォッチドッグタイマによる INIT は発生していません。 1 ウォッチドッグタイマによる INIT が発生しました。 • INIT 端子入力によるリセット (INIT), またはリード直後に "0" に初期化されます。 • リード可能で , ライトはビット値に影響を与えません。 [bit 12] ( 予約ビット ) [bit 11] SRST:Software ReSeT occured STCRレジスタのSRSTビット書込み (ソフトウェアリセット) によるリセット(RST) の発生の有無を示します。 値 内 容 0 ソフトウェアリセットによる RST は発生していません。 1 ソフトウェアリセットによる RST が発生しました。 • INIT 端子入力によるリセット (INIT), またはリード直後に "0" に初期化されます。 • リード可能で , ライトはビット値に影響を与えません。 [bit 10] ( 予約ビット ) [bit 9, bit 8] WT1, WT0:Watchdog interval Time select ウォッチドッグタイマの周期を設定します。 本ビットに書き込む値により , ウォッチドッグタイマの周期を下表に示す 4 種類の うちから選択します。 ウォッチドッグリセットの発生 を抑止するために最低限必要な CTBR への書込み間隔 CTBR への最終 5AH 書込み WT1 WT0 0 0 φ × 216 ( 初期値 ) φ × 216 ∼ φ × 217 0 1 φ × 218 φ × 218 ∼ φ × 219 1 0 φ × 220 φ × 220 ∼ φ × 221 1 1 φ × 222 φ × 222 ∼ φ × 223 からウォッチドッグリセット が発生するまでの時間 (φ はシステムベースクロックの周期 ) • リセット (RST) により "00B" に初期化されます。 • リード可能です。ライトはリセット (RST) 後 1 回のみ有効で , それ以降のライト は無効です。 107 第 3 章 CPU および制御部 ■ STCR:スタンバイ制御レジスタ スタンバイ制御レジスタのレジスタ構成は , 以下のとおりです。 図 3.11-3 スタンバイ制御レジスタのレジスタ構成 STCR bit アドレス 000481H 初期値 (INIT 端子 ) 初期値 (HST 端子 )* 初期値 (INIT) 初期値 (RST) 7 6 5 STOP SLEEP HIZ (R/W) (R/W) (R/W) 0 0 0 0 0 0 0 0 4 3 2 SRST (R/W) OS1 (R/W) OS0 (R/W) 1 1 1 1 0 1 X X 0 1 X X 1 1 1 X 1 0 OSCD1 (R/W) (R/W) 1 1 1 X 1 1 1 X * :INIT 端子による初期化と同時の場合のみ。それ以外は INIT 時と同じ。 デバイスの動作モードを制御するレジスタです。 ストップ , スリープの 2 つのスタンバイモードへの遷移 , ストップモード中の端子およ び発振停止制御を行うほか , 発振安定待ち時間の設定 , ソフトウェアリセットの発行を 行います。 [bit 7] STOP:STOP mode ストップモードへの遷移を指示します。bit 6:SLEEP ビットと本ビット両方に "1" を 書き込んだ場合は , 本ビットの方が優先となり , ストップモードへ遷移します。 値 内 容 0 ストップモードへの遷移は行いません。[ 初期値 ] 1 ストップモードへ遷移します。 • リセット (RST) およびストップ復帰要因により "0" に初期化されます。 • リードおよびライトが可能です。 [bit 6] SLEEP:SLEEP mode スリープモードへの遷移を指示します。bit 7:STOP ビットと本ビット両方に "1" を 書き込んだ場合は , bit 7:STOP ビットの方が優先となり , ストップモードへ遷移しま す。 値 内 容 0 スリープモードへの遷移は行いません。[ 初期値 ] 1 スリープモードへ遷移します。 • リセット (RST) およびスリープ復帰要因により "0" に初期化されます。 • リードおよびライトが可能です。 108 第 3 章 CPU および制御部 [bit 5] HIZ:HIZ mode ストップモード時の端子状態を制御します。 値 内 容 0 ストップモード遷移前の端子状態を維持します。 1 ストップモード中は端子出力をハイインピーダンス状態にします。 [ 初期値 ] • リセット (INIT) により "0" に初期化されます。 • リードおよびライトが可能です。 [bit 4] SRST:Software ReSeT ソフトウェアリセット (RST) の発行を指示します。 値 内 容 0 ソフトウェアリセットを発行します。 1 ソフトウェアリセットの発行は行いません。[ 初期値 ] • リセット (RST) により "1" に初期化されます。 • リードおよびライトが可能です。リード値は , 常に "1" となります。 <参考> 同期モードのソフトウェアリセットの使用に関しては , TBCR ( タイムベースカウンタ制 御レジスタ ) の bit 7 : SYNCR ビットの制限事項を参照してください。 109 第 3 章 CPU および制御部 [bit 3, bit 2] OS1, OS0:Oscillation Stabilization time select リセット (INIT) 後 , およびストップモード復帰後などにおける発振安定待ち時間を 設定します。 本ビットに書き込む値により , 発振安定待ち時間を下表に示す 4 種類のうちから選 択します。 OS1 OS0 0 0 φ × 21 [ 初期値 ] 0 1 φ × 211 256 µs 1 0 φ × 216 8.19 ms 1 1 φ × 222 524 ms 発振安定待ち時間 原発振 16MHz の場合 0.250 µs φ はシステムベースクロックの周期 , この場合は原発振入力の 2 倍の周期 • INIT 端子入力によるリセット (INIT) により "00B" に初期化されます。 • リードおよびライトが可能です。 [bit 1] ( 予約ビット ) • リセット (INIT) により "1" に初期化されます。 • ライト時は "1" を書き込んでください。 [bit 0] OSCD1:OSCillation Disable mode for XIN1 メイン発振入力 (XIN1) における , ストップモード時の発振停止を制御します。 値 内 容 0 ストップモード中もメイン発振は停止しません。 1 ストップモード中はメイン発振を停止します。[ 初期値 ] • リセット (INIT) により "1" に初期化されます。 • リードおよびライトが可能です。 110 第 3 章 CPU および制御部 ■ TBCR:タイムベースカウンタ制御レジスタ タイムベースカウンタ制御レジスタのレジスタ構成は , 以下のとおりです。 図 3.11-4 タイムベースカウンタ制御レジスタのレジスタ構成 TBCR bit アドレス 000482H 7 6 5 4 3 TBIF (R/W) TBIE (R/W) TBC2 (R/W) TBC1 (R/W) TBC0 (R/W) 0 0 0 0 X X X X X X 初期値 (INIT) 初期値 (RST) 2 1 0 SYNCR SYNCS (R/W) (R/W) (R/W) X X 0 X 0 X タイムベースタイマ割込みなどを制御するレジスタです。 タイムベースタイマ割込みの許可 , 割込みインターバル時間の選択 , およびリセット動 作のオプション機能の設定を行います。 [bit 15] TBIF:TimeBasetimer Interrupt Flag タイムベースタイマ割込みフラグです。 タイムベースカウンタが設定されたインターバル時間 (bit 13 ∼ bit 11:TBC2 ∼ TBC0 ビットにて設定 ) を経過したことを示します。 bit 14:TBIE ビットにより割込み発生が許可 (TBIE=”1”) されているときに本ビットが "1" になると , タイムベースタイマ割込み要求が発生します。 クリア要因 命令による "0" の書込み セット要因 設定されたインターバル時間の経過 ( タイムベースカウンタ出力の立下りエッジ検出 ) • リセット (RST) により "0" に初期化されます。 • リードおよびライト可能です。ただし , ライトは "0" のみ可能で , "1" を書き込ん でもビット値は変化しません。また , リードモディファイライト (RMW) 系命令 でのリード値は , 常に "1" となります。 [bit 14] TBIE:TimeBasetimer Interrupt Enable タイムベースタイマ割込み要求出力許可ビットです。 タイムベースカウンタのインターバル時間経過による割込み要求出力を制御しま す。本ビットが "1" のときに , bit 15:TBIF ビットが "1" になると , タイムベースタイ マ割込み要求が発生します。 値 内 容 0 タイムベースタイマ割込み要求出力禁止 [ 初期値 ] 1 タイムベースタイマ割込み要求出力許可 • リセット (RST) により "0" に初期化されます。 • リードおよびライトが可能です。 111 第 3 章 CPU および制御部 [bit 13 ∼ bit 11] TBC2, TBC1, TBC0:TimeBasetimer Counting time select タイムベースタイマで使用するタイムベースカウンタのインターバル時間を設定 します。 本ビットに書き込む値により , インターバル時間を下表に示す 8 種類のうちから選 択します。 TBC2 TBC1 TBC0 タイマインターバル時間 原発振 16MHz かつ PLL が 4 逓倍の場合 0 0 0 φ × 211 32µs 0 0 1 φ × 212 64µs 0 1 0 φ × 213 128µs 0 1 1 φ × 222 65.5ms 1 0 0 φ × 223 131ms 1 0 1 φ × 224 262ms 1 1 0 φ × 225 524ms 1 1 1 φ × 226 1049ms φ はシステムベースクロックの周期 • 初期値は不定です。割込みを許可する前に必ず値を設定してください。 • リードおよびライトが可能です。 [bit 10] ( 予約ビット ) 予約ビットです。読出し値は不定で , 書込みは動作に影響を与えません。 112 第 3 章 CPU および制御部 [bit 9] SYNCR:SYNChronous Reset enable 同期リセット動作許可ビットです。 動作初期化リセット (RST) 要求が発生した際に , 即座にリセット (RST) を行う通常 リセット動作を行うか , すべてのバスアクセスが停止してから動作初期化リセット (RST) を行う同期リセット動作を行うかを選択します。 値 内 容 0 通常リセット動作 [ 初期値 ] 1 同期リセット動作 • リセット (INIT) により "0" に初期化されます。 • リードおよびライトが可能です。 <注意事項> 同期モードのソフトウェアリセットを使用するときは , STCR ( スタンバイ制御レジスタ ) の SRST ビットに "0" を設定する前に , 以下 2 つの条件を必ず満たしてください。 • 割込み許可フラグ (I-Flag) を割込み禁止 (I-Flag=0) に設定する。 • NMI を使用しない。 [bit 8] SYNCS:SYNChronous Standby enable 同期スタンバイ動作許可ビットです。 スタンバイ要求 ( スリープモード要求またはストップモード要求 ) を発生する際 , STCR レジスタの制御ビットへの書込みのみでスタンバイ遷移を行う通常スタンバ イ動作を行うか , STCR レジスタの制御ビットへの書込み後に STCR レジスタを読 み出すことによってスタンバイ遷移を行う同期スタンバイ動作を行うかを選択し ます。 値 内 容 0 通常スタンバイ動作 [ 初期値 ] 1 同期スタンバイ動作 • リセット (INIT) により "0" に初期化されます。 • リードおよびライトが可能です。 <注意事項> スタンバイモードに遷移する際には , 必ず "1" を設定し , 同期スタンバイ動作としてくだ さい。 113 第 3 章 CPU および制御部 ■ CTBR:タイムベースカウンタクリアレジスタ タイムベースカウンタクリアレジスタのレジスタ構成は , 以下のとおりです。 図 3.11-5 タイムベースカウンタクリアレジスタのレジスタ構成 CTBR bit アドレス 000483H 初期値 (INIT) 初期値 (RST) 7 6 5 4 3 2 1 0 D7 (W) D6 (W) D5 (W) D4 (W) D3 (W) D2 (W) D1 (W) D0 (W) X X X X X X X X X X X X X X X X タイムベースカウンタを初期化するためのレジスタです。 本レジスタに連続して "A5H", "5AH" を書き込むと , "5AH" 書込みの直後にタイムベー スカウンタを全ビット "0" にクリアします。"A5H" 書込みと "5AH" 書込みの間の時間 制限はありませんが, "A5H"書込みの後に"5AH"以外のデータを書き込むと, 再度"A5H" を書き込まないと "5AH" を書き込んでもクリア動作は行いません。 ストップ , スリープ , DMA 転送中など , CPU が動作していない間は自動的にクリアを 行いますので , これらの条件が発生すると , ウォッチドッグリセットは自動的に延期さ れます。 ただし , 外部バスのホールド要求 (BRQ) が受け付けられている場合ではウォッ チドッグリセットは延期されませんので , 長期間外部バスをホールドする場合はス リープモードにしてからホールド要求 (BRQ) を入力してください。 本レジスタの読出し値は不定です。 <注意事項> 本レジスタを使用してタイムベースカウンタをクリアすると , 発振安定待ち間隔 , ウォッ チドッグタイマ周期 , およびタイムベースタイマの周期が一時的に変動します。 ■ CLKR:クロックソース制御レジスタ クロックソース制御レジスタのレジスタ構成は , 以下のとおりです。 図 3.11-6 クロックソース制御レジスタのレジスタ構成 CLKR bit アドレス 000484H 初期値 (INIT) 初期値 (RST) 15 14 13 12 11 10 9 8 PLL1EN CLKS1 CLKS0 PLL1S2 PLL1S1 PLL1S0 (R/W) (R/W) (R/W) (R/W) (R/W) (R/W) (R/W) (R/W) 0 X 0 X 0 X 0 X 0 X 0 X 0 X 0 X システムのベースクロックとするクロックソースの選択や PLL の制御を行うレジスタ です。 本レジスタにてクロックソースを 3 種類 * のうちから選択します。また , メイン・サブ 2 系統の PLL それぞれの動作許可および逓倍率の選択を制御します。 *: MB91305 では 2 種類 114 第 3 章 CPU および制御部 [bit 15] ( 予約ビット ) • リセット (INIT) により "0" に初期化されます。 • ライト時は "0" を書き込んでください。 [bit 14 ∼ bit 12] PLL1S2, PLL1S1, PLL1S0:PLL1 ratio Select 2 ∼ 0 メイン PLL の逓倍率選択ビットです。 メイン PLL の逓倍率を 8 種類 * のうちから選択します。 *: MB91305 では 1 種類 本ビットは , クロックソースとしてメイン PLL を選択している間は書換えを禁止し ます。 動作可能な上限周波数は 64MHz ですので , これを超える設定をしないでください。 PLL1S2 PLL1S1 PLL1S0 メイン PLL 逓倍率 システムベースクロック周期 0 0 0 × 1 ( 等倍 ) 未サポート 0 0 1 × 2 (2 逓倍 ) 未サポート 0 1 0 × 3 (3 逓倍 ) 未サポート 0 1 1 × 4 (4 逓倍 ) 原発振 16 MHz の場合 , φ= 15.6 ns (64 MHz) * 1 0 0 × 5 (5 逓倍 ) 未サポート 1 0 1 × 6 (6 逓倍 ) 未サポート 1 1 0 × 7 (7 逓倍 ) 未サポート 1 1 1 × 8 (8 逓倍 ) 未サポート φ はシステムベースクロックの周期 *: MD3 ∼ MD0=0010B のとき。 • リセット (INIT) により "000B" に初期化されます。 • リードおよびライトが可能です。 [bit 11] ( 予約ビット ) • リセット (INIT) により "0" に初期化されます。 • ライト時は "0" を書き込んでください。 115 第 3 章 CPU および制御部 [bit 10] PLL1EN:PLL1 ENable PLL の動作許可ビットです。 本ビットは , クロックソースとして PLL を選択している間は書換えを禁止します。 また , 本ビットが "0" の間はクロックソースとして PLL を選択することを禁止しま す (bit 9, bit 8:CLKS1,CLKS0 ビットの設定による ) 。 STCR の bit 0:OSCD1 が "1" であると , ストップモード中は本ビットが "1" であって も PLL は停止します。ストップモードからの復帰後は動作許可に戻ります。 値 内 容 0 PLL 停止 [ 初期値 ] 1 PLL 動作許可 • リセット (INIT) により "0" に初期化されます。 • リードおよびライトが可能です。 [bit 9, bit 8] CLKS1, CLKS0:CLocK source Select FRex コアで使用するクロックソースを設定します。 本ビットに書き込む値により , クロックソースを下表に示す 3 種類のうちから選択 します。なお , bit 9:CLKS1 が "1" の間は bit 8:CLKS0 の値を変更することができま せん。 変更不可能な組合せ 変更可能な組合せ "00B" → "11B" "00B" → "01B" または "10B" "01B" → "10B" "01B" → "11B" または "00B" "10B" → "01B" または "11B" "10B" → "00B" "11B" → "00B" または "10B" "11B" → "01B" CLKS1 CLKS0 0 0 X0/X1 からの原発振入力の 2 分周 [ 初期値 ] 0 1 X0/X1 からの原発振入力の 2 分周 1 0 メイン PLL 1 1 設定禁止 クロックソース設定 • リセット (INIT) により "00B" に初期化されます。 • リードおよびライトが可能です。 116 第 3 章 CPU および制御部 ■ DIVR0:基本クロック分周設定レジスタ 0 基本クロック分周設定レジスタ 0 のレジスタ構成は , 以下のとおりです。 図 3.11-7 基本クロック分周設定レジスタ 0 のレジスタ構成 DIVR0 bit アドレス 000486H 初期値 (INIT) 初期値 (RST) 15 14 13 12 11 10 9 8 B3 (R/W) B2 (R/W) B1 (R/W) B0 (R/W) P3 (R/W) P2 (R/W) P1 (R/W) P0 (R/W) 0 X 0 X 0 X 0 X 0 X 0 X 1 X 1 X 各内部クロックのベースクロックに対する分周比を制御するレジスタです。 本レジスタでは , CPU および内部バスのクロック (CLKB), 周辺回路 , およびペリフェ ラルバスクロック (CLKP) の分周比の設定を行います。 <注意事項> 各クロックには動作可能な上限周波数が規定されています。ソースクロックの選択 , PLL の逓倍率の設定 , 分周比の設定の組合せで上限周波数を超える設定をした場合 , 動作は保 証されません。特にソースクロック選択の変更設定との順序を間違えないようにご注意く ださい。 本レジスタの設定の変更があった場合 , 設定後 , 次のクロックレートから変更後の分周 比が有効となります。 117 第 3 章 CPU および制御部 [bit 15 ∼ bit 12] B3, B2, B1, B0:CLKB divide select 3-0 CPU クロック (CLKB) のクロック分周比設定ビットです。CPU と内部メモリおよび 内部バスのクロック (CLKB) のクロック分周比を設定します。 本ビットに書き込む値により , CPU および内部バスのクロックのベースクロックに 対する分周比 ( クロック周波数 ) を下表に示す 16 種類のうちから選択します。 動作可能な上限周波数は 64MHz ですので , これを超える周波数になる分周比は設定 しないでください。 B3 B2 B1 B0 クロック分周比 クロック周波数 : 原発振 16MHz および PLL4 逓倍の場合 0 0 0 0 φ 64.0 MHz 0 0 0 1 φ × 2 (2 分周 ) 32.0 MHz 0 0 1 0 φ × 3 (3 分周 ) 21.3 MHz 0 0 1 1 φ × 4 (4 分周 ) 16.0 MHz 0 1 0 0 φ × 5 (5 分周 ) 12.8 MHz 0 1 0 1 φ × 6 (6 分周 ) 10.7 MHz 0 1 1 0 φ × 7 (7 分周 ) 9.14 MHz 0 1 1 1 φ × 8 (8 分周 ) 8.00 MHz … … … … … … 1 1 1 1 φ × 16 (16 分周 ) 4.00 MHz φ はシステムベースクロックの周期です。 • リセット (INIT) により "0000B" に初期化されます。 • リードおよびライトが可能です。 118 第 3 章 CPU および制御部 [bit 11 ∼ bit 8] P3, P2, P1, P0:CLKP divide select 3 ∼ 0 周辺クロック (CLKP) のクロック分周比設定ビットです。 周辺回路およびペリフェラルバスのクロック (CLKP) のクロック分周比を設定しま す。 本ビットに書き込む値により , 周辺回路およびペリフェラルバスのクロックのベー スクロックに対する分周比 ( クロック周波数 ) を下表に示す 16 種類のうちから選択 します。 動作可能な上限周波数は 32MHzですので , これを超える周波数になる分周比は設定 しないでください。 P3 P2 P1 P0 クロック分周比 クロック周波数 : 原発振 16 MHz および PLL4 逓倍の場合 0 0 0 0 φ 64.0 MHz 0 0 0 1 φ × 2 (2 分周 ) 32.0 MHz 0 0 1 0 φ × 3 (3 分周 ) 21.3 MHz 0 0 1 1 φ × 4 (4 分周 ) 16.0 MHz 0 1 0 0 φ × 5 (5 分周 ) 12.8 MHz 0 1 0 1 φ × 6 (6 分周 ) 10.7 MHz 0 1 1 0 φ × 7 (7 分周 ) 9.14 MHz 0 1 1 1 φ × 8 (8 分周 ) 8.00 MHz … … … … … … 1 1 1 1 φ × 16 (16 分周 ) 4.00 MHz φ はシステムベースクロックの周期です。 • リセット (INIT) により "0011B" に初期化されます。 • リードおよびライトが可能です。 119 第 3 章 CPU および制御部 ■ DIVR1:基本クロック分周設定レジスタ 1 基本クロック分周設定レジスタ 1 のレジスタ構成は , 以下のとおりです。 図 3.11-8 基本クロック分周設定レジスタ 1 のレジスタ構成 DIVR1 bit アドレス 000487H 初期値 (INIT) 初期値 (RST) 7 6 5 4 3 2 1 0 T3 (R/W) T2 (R/W) T1 (R/W) T0 (R/W) (R/W) (R/W) (R/W) (R/W) 0 X 0 X 0 X 0 X 0 X 0 X 0 X 0 X 各内部クロックのベースクロックに対する分周比を制御するレジスタです。 本レジスタでは , 外部拡張バスインタフェースのクロック (CLKT) の分周比の設定を行 います。 <注意事項> 各クロックには動作可能な上限周波数が規定されています。ソースクロックの選択 , PLL の逓倍率の設定 , 分周比の設定の組合せで上限周波数を超える設定をした場合 , 動作は保 証されません。特に , ソースクロック選択の変更設定との順序を間違えないようにご注意 ください。 本レジスタの設定の変更があった場合 , 設定後 , 次のクロックレートから変更後の分周 比が有効となります。 120 第 3 章 CPU および制御部 [bit 7 ∼ bit 4] T3, T2, T1, T0:CLKT divide select 3-0 外部バスクロック (CLKT) のクロック分周比設定ビットです。 外部拡張バスインタフェースのクロック (CLKT) のクロック分周比を設定します。 本ビットに書き込む値により , 外部拡張バスインタフェースのクロックのベースク ロックに対する分周比 ( クロック周波数 ) を下表に示す 16 種類のうちから選択しま す。 動作可能な上限周波数は 32MHz ですので , これを超える周波数になる分周比は設定 しないでください。 T3 T2 T1 T0 クロック分周比 クロック周波数 : 原発振 16 MHz および PLL4 逓倍の場合 0 0 0 0 φ 64.0 MHz 0 0 0 1 φ × 2 (2 分周 ) 32.0 MHz 0 0 1 0 φ × 3 (3 分周 ) 21.3 MHz 0 0 1 1 φ × 4 (4 分周 ) 16.0 MHz 0 1 0 0 φ × 5 (5 分周 ) 12.8 MHz 0 1 0 1 φ × 6 (6 分周 ) 10.7 MHz 0 1 1 0 φ × 7 (7 分周 ) 9.14 MHz 0 1 1 1 φ × 8 (8 分周 ) 8.00 MHz … … … … … … 1 1 1 1 φ × 16 (16 分周 ) 4.00 MHz φ はシステムベースクロックの周期です。 • リセット (INIT) により "0000B" に初期化されます。 • リードおよびライトが可能です。 [bit 3 ∼ bit 0] ( 予約ビット ) 121 第 3 章 CPU および制御部 3.11.7 クロック制御部が持つ周辺回路 クロック制御部が持つ周辺回路機能について説明します。 ■ タイムベースカウンタ クロック制御部には , 26 ビット長のタイムベースカウンタがあり , システムベースク ロックで動作しています。 タイムベースカウンタは , 発振安定待ち時間の計測 (「3.10.4 発振安定待ち時間」を参 照 ) のほか , 以下の用途に使用されます。 • ウォッチドッグタイマ:システムの暴走検出用のウォッチドッグタイマをタイム ベースカウンタのビット出力を用いて計測します。 • タイムベースタイマ :タイムベースカウンタ出力を用いて , インターバル割込み を発生します。 ● ウォッチドッグタイマ ウォッチドッグタイマは , タイムベースカウンタ出力を用いた暴走検出用タイマです。 プログラムの暴走などで設定したインターバルの間にウォッチドッグリセットの発生 延期動作が行われなくなると , ウォッチドッグリセットとして設定初期化リセット (INIT) 要求を発生します。 〔ウォッチドッグタイマの起動と周期設定〕 ウォッチドッグタイマは , リセット (RST) 後の 1 回目の RSRR ( リセット要因レジス タ / ウォッチドッグタイマ制御レジスタ ) への書込み動作により起動します。 このとき , ウォッチドッグタイマのインターバル時間を bit 9,bit 8:WT1,WT0 ビット により設定します。インターバル時間の設定は , この最初の書込みで設定した時間 のみが有効となり , それ以降の書込みはすべて無視されます。 〔ウォッチドッグリセットの発生延期〕 一度ウォッチドッグタイマを起動すると, プログラムで定期的にCTBR (タイムベー スカウンタクリアレジスタ ) に対して "A5H", "5AH" の順でデータを書き込む必要が あります。 この操作により , ウォッチドッグリセット発生用フラグが初期化されます。 〔ウォッチドッグリセットの発生〕 ウォッチドッグリセット発生用フラグは , 設定したインターバルのタイムベースカ ウンタ出力の立下りエッジによってセットされます。2 度目の立下りエッジの検出 時にフラグがセットされていると , ウォッチドッグリセットとして設定初期化リ セット (INIT) 要求を発生します。 〔ウォッチドッグタイマの停止〕 一度ウォッチドッグタイマを起動すると , 動作初期化リセット (RST) が発生するま では , ウォッチドッグタイマを停止することはできません。 動作初期化リセット (RST) の発生する以下の状態では , ウォッチドッグタイマは停止 し , 再度プログラム動作にて起動するまでは機能しません。 122 • 動作初期化リセット (RST) 状態 • 設定初期化リセット (INIT) 状態 • 発振安定待ちリセット (RST) 状態 第 3 章 CPU および制御部 〔ウォッチドッグタイマの一時停止 ( 自動発生延期 ) 〕 ウォッチドッグタイマは , CPU のプログラム動作が停止している場合にはいったん ウォッチドッグリセット発生用フラグを初期化し , ウォッチドッグリセットの発生 を延期します。プログラム動作の停止とは具体的には以下の動作を示します。 • スリープ状態 • ストップ状態 • 発振安定待ち RUN 状態 • I-bus ( 命令バス ) または D-bus ( データバス ) に対する DMA 転送中 • エミュレーションモード また , タイムベースカウンタのクリアを行うと , 同時にウォッチドッグリセット発 生用フラグも初期化され , ウォッチドッグリセットの発生が延期されます。 ● タイムベースタイマ タイムベースタイマは , タイムベースカウンタ出力を用いたインターバル割込み発生 用タイマです。PLL のロック待ち時間やサブクロックなどの発振安定待ち時間など , 最 大で { ベースクロック× 227} サイクルまでの比較的長時間の時間計測を行う用途に適 しています。 設定したインターバルに対応するタイムベースカウンタの出力の立下りエッジを検出 すると , タイムベースタイマ割込み要求を発生します。 〔タイムベースタイマの起動とインターバル設定〕 タイムベースタイマは , TBCR ( タイムベースカウンタ制御レジスタ ) の bit 13 ∼ bit 11:TBC2,TBC1,TBC0 ビットにてインターバル時間を設定します。 設定したインターバルに対応するタイムベースカウンタの出力の立下りエッジは 常に検出されているため , インターバル時間の設定後はまず bit 15:TBIF ビットをク リアしてから , bit 14:TBIE ビットを "1" にして割込み要求出力を許可してください。 インターバル時間を変更する際は , あらかじめ bit 14:TBIE ビットを "0" にして割込 み要求出力を禁止しておいてください。 タイムベースカウンタはこれら設定に影響されず常にカウント動作を行っていま すので , 正確なインターバル割込み時間を得るためには , 割込みを許可する前にタ イムベースカウンタをクリアしてください。クリアしないと , 割込み許可直後に割 込み要求が発生する場合があります。 〔プログラムによるタイムベースカウンタのクリア〕 CTBR ( タイムベースカウンタクリアレジスタ ) に対して "A5H", "5AH" の順でデー タを書き込むと , "5AH" 書込みの直後に , タイムベースカウンタを全ビット "0" にク リアします。"A5H" 書込みと "5AH" 書込みの間の時間制限はありませんが , "A5H" 書込みの後に"5AH"以外のデータを書き込むと, 再度"A5H"を書き込まないと"5AH" を書き込んでもクリア動作は行いません。 このタイムベースカウンタのクリアを行うことにより , 同時にウォッチドッグリ セット発生用フラグも初期化され , ウォッチドッグリセットの発生がいったん延期 されます。 123 第 3 章 CPU および制御部 〔デバイス状態によるタイムベースカウンタのクリア〕 タイムベースカウンタは , 以下のデバイス状態の遷移時に , 同時に全ビット "0" にク リアされます。 • ストップ状態 • 設定初期化リセット (INIT) 状態 特にストップ状態の場合 , 発振安定待ち時間の計測のためにタイムベースカウンタ が使用されるため , 意図せずにタイムベースタイマのインターバル割込みが発生し てしまう可能性があります。そのため , ストップモードを設定する前には , タイム ベースタイマ割込みを禁止し , タイムベースタイマを使用しないようにしてくださ い。 それ以外の状態については, 動作初期化リセット(RST)が発生するため, タイムベー スタイマ割込みは自動的に禁止されます。 124 第 3 章 CPU および制御部 3.12 デバイス状態制御 MB91305 の各種状態とその制御について説明します。 ■ デバイス状態制御の概要 MB91305 のデバイス状態には , 以下のものがあります。 • RUN 状態 ( 通常動作 ) • スリープ状態 • ストップ状態 • 発振安定待ち RUN 状態 • 発振安定待ちリセット (RST) 状態 • 動作初期化リセット (RST) 状態 • 設定初期化リセット (INIT) 状態 以降 , 上記各種状態の詳細と , 低消費電力モードであるスリープモードおよびストップ モードの詳細について説明します。 125 第 3 章 CPU および制御部 3.12.1 デバイス状態と各遷移 デバイスの各動作状態について説明します。 ■ デバイスの動作状態 MB91305 のデバイスの動作状態には以下のものがあります。 ● RUN 状態 ( 通常動作 ) プログラム実行状態です。 すべての内部クロックが供給され , すべての回路が動作可能な状態です。ただし , 16 ビット周辺 ( ペリフェラル ) バスのみは , アクセスが行われていない期間はバスクロッ クのみ停止しています。 各状態遷移要求を受け付けますが , 同期リセットモードを選択している場合 , 通常リ セットモードの場合と一部要求に対する状態遷移動作が異なります。 詳細は ,「3.10.5 リセット動作モード」の「■ 同期リセット動作」を参照してください。 ● スリープ状態 プログラム停止状態です。プログラム動作により遷移します。 CPU のプログラム実行のみ停止し , 周辺回路は動作可能な状態です。命令キャッシュ は停止し , 各種内蔵メモリおよび内部 / 外部バスは DMA コントローラが要求しない限 り停止状態です。有効な割込み要求の発生により , 本状態は解除され , RUN 状態 ( 通常 動作 ) へ遷移します。 設定初期化リセット (INIT) 要求の発生により , 設定初期化リセット (INIT) 状態へ遷移 します。 動作初期化リセット (RST) 要求の発生により , 動作初期化リセット (RST) 状態へ遷移し ます。 ● ストップ状態 デバイス停止状態です。プログラム動作により遷移します。 すべての内部回路が停止します。内部クロックはすべて停止し , 発振回路および PLL は 設 定 に よ り 停 止 さ せ る こ と が 可 能 で す。ス ト ッ プ 状 態 へ 遷 移 す る 際 に は 必 ず PLL1EN=0 にしてから行ってください。また , 設定により外部端子を一律ハイインピー ダンスにすることが可能です ( 一部端子を除く ) 。 特定の ( クロックを必要としない ) 有効な割込み要求の発生により , 発振安定待ち RUN 状態へ遷移します。 設定初期化リセット (INIT) 要求の発生により , 設定初期化リセット (INIT) 状態へ遷移 します。 動作初期化リセット (RST) 要求の発生により , 発振安定待ちリセット (RST) 状態へ遷移 します。 126 第 3 章 CPU および制御部 ● 発振安定待ち RUN 状態 デバイス停止状態です。ストップ状態からの復帰後に遷移します。 クロック発生制御部 (タイムベースカウンタおよびデバイス状態制御部) を除くすべて の内部回路が停止します。内部クロックはすべて停止しますが , 発振回路および動作許 可されていた PLL は動作しています。 ストップ状態などでの外部端子のハイインピーダンス制御は解除されます。 設定された発振安定待ち時間の経過により , RUN 状態 ( 通常動作 ) へ遷移します。 設定初期化リセット (INIT) 要求の発生により , 設定初期化リセット (INIT) 状態へ遷移 します。 動作初期化リセット (RST) 要求の発生により , 発振安定待ちリセット (RST) 状態へ遷移 します。 ● 発振安定待ちリセット (RST) 状態 デバイス停止状態です。ストップ状態または設定初期化リセット (INIT) 状態からの復 帰後に遷移します。 クロック発生制御部 (タイムベースカウンタおよびデバイス状態制御部) を除くすべて の内部回路が停止します。内部クロックはすべて停止しますが , 発振回路および動作許 可されていた PLL は動作しています。 ストップ状態などでの外部端子のハイインピーダンス制御は解除されます。 内部回路に対し , 動作初期化リセット (RST) を出力します。 設定された発振安定待ち時間の経過により, 発振安定待ちリセット(RST)状態へ遷移し ます。 設定初期化リセット (INIT) 要求の発生により , 設定初期化リセット (INIT) 状態へ遷移 します。 ● 動作初期化リセット (RST) 状態 プログラム初期化状態です。動作初期化リセット (RST) 要求の受付け , または発振安定 待ちリセット (RST) 状態の終了により遷移します。 CPU のプログラム実行は停止し , プログラムカウンタは初期化されます。周辺回路は 一部を除き初期化されます。すべての内部クロックと発振回路および動作許可されて いた PLL は動作しています。 内部回路に対し , 動作初期化リセット (RST) を出力します。 動作初期化リセット (RST) 要求の消失により , RUN 状態 ( 通常動作 ) へ遷移し , 動作初 期化リセットシーケンスを実行します。設定初期化リセット (INIT) 状態からの復帰後 の場合は , 設定初期化リセットシーケンスを実行します。 設定初期化リセット (INIT) 要求の発生により , 設定初期化リセット (INIT) 状態へ遷移 します。 127 第 3 章 CPU および制御部 ● 設定初期化リセット (INIT) 状態 全設定初期化状態です。設定初期化リセット (INIT) 要求の受付け , またはハードウェ アスタンバイ状態の終了により遷移します。 CPU のプログラム実行は停止し , プログラムカウンタは初期化されます。周辺回路は すべて初期化されます。発振回路は動作しますが , PLL は動作を停止します。すべて の内部クロックは , 外部 INIT 端子への "L" レベル入力期間は停止しますが , それ以外 では動作します。 内部回路に対し , 設定初期化リセット (INIT) および動作初期化リセット (RST) を出力 します。 設定初期化リセット (INIT) 要求の消失により , 本状態は解除され , 発振安定待ちリセッ ト (RST) 状態へ遷移します。その後 , 動作初期化リセット (RST) 状態を経て , 設定初期 化リセットシーケンスを実行します。 ● 各状態遷移要求の優先順位 どの状態においても , 各状態遷移要求は以下の優先順位に従います。ただし , 一部要求 は特定の状態でしか発生しませんので , その状態でしか有効になりません。 【最強】設定初期化リセット (INIT) 要求 ↓ 発振安定待ち時間の終了 ( 発振安定待ちリセット状態および発振安定待ち RUN 状態のみ発生 ) ↓ 動作初期化リセット (RST) 要求 ↓ 有効な割込み要求 (RUN, スリープ , ストップ状態のみ発生 ) ↓ ストップモード要求 ( レジスタ書込み ) (RUN 状態のみ発生 ) 【最弱】スリープモード要求 ( レジスタ書込み ) (RUN 状態のみ発生 ) 128 第 3 章 CPU および制御部 3.12.2 低消費電力モード MB91305 の状態のうち , 各低消費電力モードとその使用方法について説明します。 MB91305 の低消費電力モードには , 以下のものがあります。 • スリープモード レジスタ書込みにより , デバイスをスリープ状態へ遷移させます。 • ストップモード レジスタ書込みにより , デバイスをストップ状態へ遷移させます。 以下 , 各モードについて説明します。 ■ スリープモード STCR ( スタンバイ制御レジスタ ) の bit 6:SLEEP ビットに "1" を書き込むと , スリープ モードとなり , スリープ状態へ遷移します。 以降 , スリープ状態からの復帰要因が発生するまでは , スリープ状態を維持します。 STCR ( スタンバイ制御レジスタ ) の bit 7:STOP ビットと本ビット両方に "1" を書き込 んだ場合は , bit 7:STOP ビットの方が優先となり , ストップ状態へ遷移します。 スリープ状態については , 「3.12.1 デバイス状態と各遷移 ■デバイスの動作状態 ●ス リープ状態」も参照してください。 〔スリープ状態で停止する回路〕 • CPU のプログラム実行 • データキャッシュ • ビットサーチモジュール (DMA 転送が発生した場合は動作します。) • 各種内蔵メモリ (DMA 転送が発生した場合は動作します。) • 内部 / 外部バス (DMA 転送が発生した場合は動作します。) 〔スリープ状態で停止しない回路〕 • 発振回路 • 動作許可された PLL • クロック発生制御部 • 割込みコントローラ • 周辺回路 • DMA コントローラ • DSU 129 第 3 章 CPU および制御部 〔スリープ状態からの復帰要因〕 • 有効な割込み要求の発生 割込み禁止(1FH)以外の割込みレベルを持つ割込み要求が発生すると, スリープモー ドは解除され , RUN 状態 ( 通常状態 ) へ遷移します。 割込み要求が発生しても , スリープモードを解除したくない場合は , 該当する ICR に割込みレベルとして割込み禁止 (1FH) を設定してください。 • 設定初期化リセット (INIT) 要求の発生 設定初期化リセット (INIT) 要求が発生すると , 無条件で設定初期化リセット (INIT) 状態へ遷移します。 • 動作初期化リセット (RST) 要求の発生 動作初期化リセット (RST) 要求が発生すると , 無条件で動作初期化リセット (RST) 状態へ遷移します。 参考: 各要因の優先順位については , 「3.12.1 デバイス状態と各遷移」を参照してください。 ■ ストップモード STCR ( スタンバイ制御レジスタ ) の bit 7:STOP ビットに "1" を書き込むと , ストップ モードとなり , ストップ状態へ遷移します。以降 , ストップ状態からの復帰要因が発生 するまではストップ状態を維持します。 STCR ( スタンバイ制御レジスタ ) の bit 6:SLEEP ビットと本ビット両方に "1" を書き込 んだ場合は , bit 7:STOP ビットの方が優先となり , ストップ状態へ遷移します。 ストップ状態については ,「3.12.1 デバイス状態と各遷移 ■デバイスの動作状態 ●ス リープ状態」も参照してください。 〔ストップ状態で停止する回路〕 • 停止するよう設定された発振回路: STCR ( スタンバイ制御レジスタ ) の bit 0:OSCD1 ビットに "1" が設定してあるとき , ストップ状態中のメインクロック用発振回路を停止状態にします。 • 動作許可されていないか , 停止するよう設定された発振回路に接続された PLL: STCR ( スタンバイ制御レジスタ ) の bit 0:OSCD1 ビットに "1" が設定してあるとき , CLKR ( クロックソース制御レジスタ ) の bit 10:PLL1EN ビットに "1" が設定してあっ ても , ストップ状態中のメインクロック用 PLL を停止状態にします。 • 〔ストップ状態で停止しない回路〕を除くすべての内部回路 〔ストップ状態で停止しない回路〕 • 停止するよう設定されていない発振回路: STCR ( スタンバイ制御レジスタ ) の bit 0:OSCD1 ビットに "0" が設定してあるとき , ストップ状態中のメインクロック用発振回路は停止しません。 • 動作許可されていて , かつ停止するよう設定されていない発振回路に接続された PLL:STCR ( スタンバイ制御レジスタ ) の bit 0:OSCD1 ビットに "0" が設定してある とき , CLKR ( クロックソース制御レジスタ ) の bit 10:PLL1EN ビットに "1" が設定 してあると , ストップ状態中のメインクロック用 PLL は停止しません。 130 第 3 章 CPU および制御部 〔ストップ状態での端子のハイインピーダンス制御〕 STCR ( スタンバイ制御レジスタ ) の bit 5:HIZ ビットに "1" が設定してあると , ス トップ状態中の端子出力をハイインピーダンス状態にします。本制御の対象となる 端子は「付録 E 端子状態一覧」を参照してください。 STCR ( スタンバイ制御レジスタ ) の bit 5:HIZ ビットに "0" が設定してあると , ス トップ状態中の端子出力はストップ状態への遷移前の値を保持します。詳細は「付 録 E 端子状態一覧」を参照してください。 〔ストップ状態からの復帰要因〕 • 特定の ( クロックを必要としない ) 有効な割込み要求の発生: 外部割込み入力端子 (INTn 端子 , NMI 端子 ) が有効です。 割込み禁止(1FH)以外の割込みレベルを持つ割込み要求が発生すると, ストップモー ドは解除され , RUN 状態 ( 通常状態 ) へ遷移します。 割込み要求が発生してもストップモードを解除したくない場合は , 該当する ICR に 割込みレベルとして割込み禁止 (1FH) を設定してください。 • 設定初期化リセット (INIT) 要求の発生: 設定初期化リセット (INIT) 要求が発生すると , 無条件で設定初期化リセット (INIT) 状態へ遷移します。 参考: 各要因の優先順位については , 「3.12.1 デバイス状態と各遷移 ■デバイスの動作状態 ●スリープ状態」を参照してください。 ■ 通常スタンバイ動作と同期スタンバイ動作 TBCR ( タイムベースカウンタ制御レジスタ ) の bit 8:SYNCS ビットに "1" が設定して ある場合 , 同期スタンバイ動作が許可されます。この場合 , STOP ビットへの書込みの みではストップ状態へは遷移しません。その後 , STCR レジスタを読み出すことによっ てストップ状態へ遷移します。 SYNCS ビットに "0" が設定してある場合 , 通常スタンバイ動作となり , STOP ビットへ の書込みのみでストップ状態へ遷移します。 通常スタンバイ動作時は , CPU クロック (CLKB) に対して周辺クロック (CLKP) の分周 比が大きく設定してあると , 実際に STOP ビットへの書込みが行われるまでに多くの命 令を実行してしまいます。このため , STOP ビットへの書込み命令の後 , 最低でも {5 + (CPU クロックの分周比 / 周辺クロックの分周比 ) } 命令以上の NOP 命令を配置しなけ れば , それ以降の命令がストップ状態への遷移前に実行されてしまいます。 同期スタンバイ動作時は , 実際に STOP ビットへの書込みが行われた後 , STCR レジス タの読出しが完了するまではストップ状態へ遷移しません。STCR レジスタの読出し値 が CPU に格納されるまでは , CPU がバスを使用しているためです。このため , CPU ク ロック (CLKB) と周辺クロック (CLKP) の分周比の関係がいかなる設定においても , STOP ビットへの書込み命令と STCR レジスタの読出し命令の後に , 2 命令のみ NOP 命 令を配置するだけで , それ以降の命令がストップ状態への遷移前に実行されることを 防ぐことができます。 131 第 3 章 CPU および制御部 132 第4章 外部バスインタフェース 外部バスインタフェースコントローラは , LSI の内 部バスと外部のメモリ , 機能マクロ , および I/O デ バイスとのインタフェースを制御します。 外部バスインタフェースの各機能について説明し ます。 4.1 外部バスインタフェースの概要 4.2 外部バスインタフェースのレジスタ 4.3 チップセレクト領域 4.4 エンディアンとバスアクセス 4.5 通常バスインタフェース 4.6 バーストアクセス (first wait cycle:1,page wait cycle:1) (TYP3 ∼ TYP0=0000B,AWR=3208H) 4.7 アドレス / データマルチプレックスインタフェース 4.8 プリフェッチ動作 4.9 SDRAM/FCRAM インタフェース 4.10 DMA アクセス 4.11 バスアービトレーション 4.12 レジスタ設定手順 4.13 使用上の注意 133 第 4 章 外部バスインタフェース 4.1 外部バスインタフェースの概要 外部バスインタフェースの特長について説明します。 外部バスインタフェースコントローラは , LSI の内部バスと外部のメモリ , 機能マクロ , および I/O デバイスとのインタフェースを制御します。 CS2 の領域は USB ファンクションに接続されています ( 予約領域 )。 CS3 の領域は使用禁止です。 外部バスインタフェースの各機能について解説します。 ■ 外部バスインタフェースの特長 • 最大 23 ビット長 (4G バイト空間 ) のアドレス出力 • 各種外部メモリ (8 ビット /16 ビット品 ) を直結できるほか , 複数のアクセスタイミ ングを混在制御可能 - 非同期 SRAM, 非同期 ROM/ フラッシュメモリ ( 複数ライトストローブ方式また はバイトイネーブル方式 ) - ページモード ROM/ フラッシュメモリ ( ページサイズ 2/4/8 が可能 ) - バーストモード ROM/ フラッシュメモリ (MBM29BL160D/161D/162D など ) - SDRAM (FCRAM タイプも対応 , CAS- レイテンシ 1 ∼ 8, 2 バンク品および 4 バン ク品 ) - アドレス / データマルチプレックスバス (8 ビット /16 ビット幅のみ ) - 同期メモリ (ASIC 内蔵メモリなど ) <注意事項> SynchronousSRAM は直結できません。 • 独立した 8 個のバンク ( チップセレクト領域 ) を設定でき , それぞれに対応したチッ プセレクト出力が可能 - 各領域のサイズは 64K バイトの倍数単位で設定可能 (1 チップセレクト領域あたり 64K バイト∼ 2G バイト ) - 各領域は論理アドレス空間上の任意の位置に設定可能 ( 領域サイズによりバウン ダリの制限あり ) 134 第 4 章 外部バスインタフェース • チップセレクト領域ごとに以下の機能を独立に設定可能 - チップセレクト領域の許可・禁止 ( 禁止された領域はアクセスを行いません ) - 各種メモリ対応などのアクセスタイミングタイプ設定 <注意事項> SDRAM は CS6 領域と CS7 領域のみ接続可能 - 詳細アクセスタイミング設定 ( ウェイトサイクルなどのアクセスタイプ個別設定 ) - データバス幅設定 (8 ビット /16 ビット ) - バイトオーダリングのエンディアン設定 ( ビッグまたはリトル ) <注意事項> CS0 領域は , ビッグエンディアンのみ可能 - 書込み禁止設定 ( 読出し専用領域 ) - 内蔵キャッシュへの取込み許可・禁止設定 - プリフェッチ機能の許可・禁止設定 - 最大バースト長設定 (1, 2, 4, 8) • アクセスタイミングタイプごとに異なる詳細なタイミングが設定可能 - 同一タイプでもチップセレクト領域ごとに異なる設定が混在可能 - オートウェイトは , 最大 15 サイクルまで設定可能 ( 非同期 SRAM, ROM, フラッ シュ , I/O 領域 ) - 外部 RDY 入力によるバスサイクルの延長が可能 ( 非同期 SRAM, ROM, フラッシュ , I/O 領域 ) - ファーストアクセスウェイトとページウェイトが設定可能 ( バーストページモー ド ROM/ フラッシュ領域 ) - 各種アイドルリカバリサイクル , セットアップ遅延などの挿入が可能 - CAS レイテンシ , RAS-CAS ディレイほかのタイミング設定が可能 (SDRAM 領域 ) - 分散 / 集中オートリフレッシュ , セルフリフレッシュなどの各種リフレッシュタ イミング制御可能 (SDRAM 領域 ) • DMA によるフライバイ転送が可能 - メモリと I/O 間の 1 アクセスでの転送が可能 - メモリウェイトサイクルをフライバイ時に I/O のウェイト周期に同期させること が可能 - 転送元アクセスのみを延長してホールドタイムを確保することが可能 - フライバイ転送時固有のアイドル / リカバリサイクルを設定することが可能 • BRQ と BGRNT を使用した外部バスアービトレーションが可能 • 外部インタフェースの未使用ピンは , 設定により汎用 I/O ポートとして使用可能 135 第 4 章 外部バスインタフェース ■ 外部バスインタフェースのブロックダイヤグラム 図 4.1-1 に , 外部バスインタフェースのブロックダイヤグラムを示します。 図 4.1-1 外部バスインタフェースのブロックダイヤグラム 内部 アドレスバス 32 内部 データバス 32 外部 データバス MUX ライトバッファ スイッチ リードバッファ スイッチ データブロック アドレスブロック +1 または +2 外部 アドレスバス アドレスバッファ ASR CS0~CS7 ASZ コンパレータ SRAS,SCAS, SWE,MCLKE, DQMUU,DQMUL SDRAM制御部 アンダフロー RCR リフレッシュカウンタ 外部端子制御部 全ブロック制御 レジスタ & 制御 RD, WR0, WR1, AS BRQ, BGRNT, RDY 136 第 4 章 外部バスインタフェース ■ I/O ピン 外部バスインタフェースの端子です ( 一部のピンは兼用端子です )。 〔通常バスインタフェース〕 A23 ∼ A0, D31 ∼ D16 CS0, CS1, CS4, CS5, CS6, CS7 AS, SYSCLK, MCLK RD WR, WR0 (UUB), WR1 (ULB) RDY, BRQ, BGRNT 〔メモリインタフェース〕 MCLK, MCLKE : SDRAM 用 LBA(=AS), BAA : バースト ROM/ フラッシュ用 SRAS, SCAS, SWE (=WR) : SDRAM 用 DQMUU, DQMUL : SDRAM 用 (=WR0, WR1) 〔DMA インタフェース〕 IOWR, IORD, DACK0, DACK1, DACK2 DREQ0, DREQ1, DREQ2 DEOP0, DEOP1, DEOP2 137 第 4 章 外部バスインタフェース ■ 外部バスインタフェースのレジスタ一覧 外部バスインタフェースのレジスタ構成は , 以下のとおりです。 図 4.1-2 外部バスインタフェースのレジスタ構成 アドレス 00000640H 00000644H 00000648H 0000064CH 00000650H 00000654H 00000658H 0000065CH 00000660H 00000664H 00000668H 0000066CH 00000670H 00000674H 00000678H 0000067CH 00000680H 00000684H 00000688H 0000068CH 000007F8H 000007FCH 予約 31 24 23 16 15 8 7 ASR0 ASR1 ASR2 ASR3 ASR4 ASR5 ASR6 ASR7 AWR0 AWR2 AWR4 AWR6 ACR0 ACR1 ACR2 ACR3 ACR4 ACR5 ACR6 ACR7 AWR1 AWR3 AWR5 AWR7 MCRA MCRB 予約 IOWR0 予約 IOWR1 予約 CSER 予約 CHER RCR 予約 予約 予約 予約 予約 予約 予約 予約 予約 (MODR) 予約 予約 IOWR2 予約 予約 予約 予約 予約 予約 予約 予約 予約 予約 予約 予約 TCR 予約 予約 予約 予約 予約 予約 : 予約レジスタです。書き込む場合は , 必ず "0" を設定してください。 MODR : ユーザプログラムからはアクセスできません。 138 0 第 4 章 外部バスインタフェース 4.2 外部バスインタフェースのレジスタ 外部バスインタフェースのレジスタについて説明します。 ■ 外部バスインタフェースのレジスタ概要 外部バスインタフェースには , 以下の 6 種類のレジスタがあります。 • ASR0 ∼ ASR7 (Area Select Register) • ACR0 ∼ ACR7 (Area Configuration Register) • AWR0 ∼ AWR7 (Area Wait Register) • IOWR0 ∼ IOWR2 (I/O Wait Register for DMAC) • CSER (Chip Select Enable register) • TCR (Terminal and timing Control Register) 139 第 4 章 外部バスインタフェース 4.2.1 Area Select Register (ASR0 ∼ ASR7) Area Select Register の詳細を説明します。 ■ Area Select Register (ASR0 ∼ ASR7) のレジスタ構成 ASR0 ∼ ASR7 のレジスタ構成は , 以下のとおりです。 図 4.2-1 ASR0 ∼ ASR7 のレジスタ構成 初期値 ASR0 15 14 13 0000 0640H A31 A30 A29 ASR1 0000 0644H 15 14 13 A31 A30 A29 ASR2 0000 0648H 15 14 13 A31 A30 A29 ASR3 0000 064CH 15 14 13 A31 A30 A29 ASR4 0000 0650H 15 14 13 A31 A30 A29 ASR5 0000 0654H 15 14 13 A31 A30 A29 ASR6 0000 0658H 15 14 13 A31 A30 A29 15 14 13 A31 A30 A29 ASR7 0000 065CH 12 ... ... ... 2 1 0 INIT 時 A17 A16 0000H RST 時 0000H アクセス A18 12 ... ... ... 2 1 0 A18 A17 A16 XXXXH XXXXH R/W 12 ... ... ... 2 1 0 A18 A17 A16 XXXXH XXXXH R/W 12 ... ... ... 2 1 0 A18 A17 A16 XXXXH XXXXH R/W 12 ... ... ... 2 1 0 A18 A17 A16 XXXXH XXXXH R/W 12 ... ... ... 2 1 0 A18 A17 A16 XXXXH XXXXH R/W 12 ... ... ... 2 1 0 A18 A17 A16 XXXXH XXXXH R/W 12 ... ... ... 2 1 0 A18 A17 A16 XXXXH XXXXH R/W R/W ASR0 ∼ ASR7(Area Select Register 0 ∼ 7) は , CS0 ∼ CS7 の各チップセレクト領域の開 始アドレスを指定します。 開始アドレスは, A31∼A16の上位16ビットを設定できます。各チップセレクト領域は, このレジスタに設定されたアドレスから始まり , ACR0 ∼ ACR7 レジスタの ASZ3 ∼ ASZ0 ビットで設定された範囲をとります。 各チップセレクト領域のバウンダリは , ACR0 ∼ ACR7 レジスタの ASZ3 ∼ ASZ0 ビッ トの設定に従います。例えば , ASZ3 ∼ ASZ0 ビットにより , 1M バイトの領域を設定し た場合は , ASR0 ∼ ASR7 レジスタの下位 4 ビットは無視され , A31 ∼ A20 ビットのみ 意味を持ちます。 ASR0 レジスタは , INIT および RST により , "0000H" に初期化されます。 ASR1 ∼ ASR7 は , INIT および RST によっては初期化されず , 不定となります。LSI の動作開始後 , CSER レジスタにより各チップセレクト領域を有効にする前に , 必ず対応する ASR レ ジスタを設定してください。 140 第 4 章 外部バスインタフェース 4.2.2 ACR0 ∼ ACR7(Area Configuration Register) Area Configuration Register の詳細を説明します。 ■ ACR0 ∼ ACR7(Area Configuration Register) のレジスタ構成 ACR0 ∼ ACR7 のレジスタ構成は , 以下のとおりです。 図 4.2-2 ACR0 ∼ ACR7 のレジスタ構成 初期値 ACR0H 0000 0642H 15 14 13 12 11 10 9 8 INIT 時 RST 時 アクセス ASZ3 ASZ2 ASZ1 ASZ0 DBW1 DBW0 BST1 BST0 1111XX00B 1111XX00B R/W ACR0L 7 6 5 4 3 2 1 0 0000 0643H SREN PFEN WREN LEND TYP3 TYP2 TYP1 TYP0 00000000B ACR1H 0000 0646H 15 14 13 12 11 10 9 00000000B R/W 8 ASZ3 ASZ2 ASZ1 ASZ0 DBW1 DBW0 BST1 BST0 XXXXXXXXB XXXXXXXXB R/W ACR1L 7 6 5 4 3 2 1 0 0000 0647H SREN PFEN WREN LEND TYP3 TYP2 TYP1 TYP0 XXXXXXXXB XXXXXXXXB R/W ACR2H 0000 064AH ASZ3 ASZ2 ASZ1 ASZ0 DBW1 DBW0 BST1 BST0 XXXXXXXXB XXXXXXXXB R/W ACR2L 7 6 5 4 3 2 1 0 0000 064BH SREN PFEN WREN LEND TYP3 TYP2 TYP1 TYP0 XXXXXXXXB XXXXXXXXB R/W ACR3H 0000 064EH ASZ3 ASZ2 ASZ1 ASZ0 DBW1 DBW0 BST1 BST0 XXXXXXXXB XXXXXXXXB R/W ACR3L 7 6 5 4 3 2 1 0 0000 064FH SREN PFEN WREN LEND TYP3 TYP2 TYP1 TYP0 XXXXXXXXB XXXXXXXXB R/W ACR4H 0000 0652H 15 14 13 12 11 10 9 8 ASZ3 ASZ2 ASZ1 ASZ0 DBW1 DBW0 BST1 BST0 XXXXXXXXB XXXXXXXXB R/W ACR4L 7 6 5 4 3 2 1 0 0000 0653H SREN PFEN WREN LEND TYP3 TYP2 TYP1 TYP0 XXXXXXXXB XXXXXXXXB R/W ACR5H 0000 0656H 15 14 13 12 11 10 9 8 ASZ3 ASZ2 ASZ1 ASZ0 DBW1 DBW0 BST1 BST0 XXXXXXXXB XXXXXXXXB R/W ACR5L 7 6 5 4 3 2 1 0 0000 0657H SREN PFEN WREN LEND TYP3 TYP2 TYP1 TYP0 XXXXXXXXB XXXXXXXXB R/W 15 15 14 14 13 13 12 12 11 11 10 10 9 9 8 8 ( 続く) 141 第 4 章 外部バスインタフェース 図 4.2-2 ACR0 ∼ ACR7 のレジスタ構成 ( 続き ) 初期値 ACR6H 0000 065AH 15 14 13 12 11 10 9 8 INIT 時 RST 時 アクセス ASZ3 ASZ2 ASZ1 ASZ0 DBW1 DBW0 BST1 BST0 XXXXXXXXB XXXXXXXXB R/W ACR6L 7 6 5 4 3 2 1 0 0000 065BH SREN PFEN WREN LEND TYP3 TYP2 TYP1 TYP0 00000000B 00000000B R/W ACR7H 0000 065EH 15 14 13 12 11 10 9 8 ASZ3 ASZ2 ASZ1 ASZ0 DBW1 DBW0 BST1 BST0 XXXXXXXXB XXXXXXXXB R/W ACR7L 7 6 5 4 3 2 1 0 0000 065FH SREN PFEN WREN LEND TYP3 TYP2 TYP1 TYP0 XXXXXXXXB XXXXXXXXB R/W ACR0 ∼ ACR7(Area Configuration Register 0 ∼ 7) は , 各チップセレクト領域の機能を設 定します。 [bit 15 ∼ bit 12] ASZ3 ∼ ASZ0= Area Sizebit 3 ∼ bit 0 各チップセレクト領域のサイズを , 表 4.2-1 のように設定します。 表 4.2-1 Area Size ビットの各チップセレクト領域の設定サイズ ASZ3 ASZ2 ASZ1 ASZ0 0 0 0 0 64K バイト (00010000H バイト , ASR A31 ∼ A16 ビット指定が有効 ) 0 0 0 1 128K バイト (00020000H バイト , ASR A31 ∼ A17 ビット指定が有効 ) 0 0 1 0 256K バイト (00040000H バイト , ASR A31 ∼ A18 ビット指定が有効 ) 0 0 1 1 512K バイト (00080000H バイト , ASR A31 ∼ A19 ビット指定が有効 ) 0 1 0 0 1M バイト (00100000H バイト , ASR A31 ∼ A20 ビット指定が有効 ) 0 1 0 1 2M バイト (00200000H バイト , ASR A31 ∼ A21 ビット指定が有効 ) 0 1 1 0 4M バイト (00400000H バイト , ASR A31 ∼ A22 ビット指定が有効 ) 0 1 1 1 8M バイト (00800000H バイト , ASR A31 ∼ A23 ビット指定が有効 ) 1 0 0 0 16M バイト (01000000H バイト , ASR A31 ∼ A24 ビット指定が有効 ) 1 0 0 1 32M バイト (02000000H バイト , ASR A31 ∼ A25 ビット指定が有効 ) 1 0 1 0 64M バイト (04000000H バイト , ASR A31 ∼ A26 ビット指定が有効 ) 1 0 1 1 128M バイト (08000000H バイト , ASR A31 ∼ A27 ビット指定が有効 ) 1 1 0 0 256M バイト (10000000H バイト , ASR A31 ∼ A28 ビット指定が有効 ) 1 1 0 1 512M バイト (20000000H バイト , ASR A31, A29 ビット指定が有効 ) 1 1 1 0 1024M バイト (40000000H バイト , ASR A31, A30 ビット指定が有効 ) 1 1 1 1 2048M バイト (80000000H バイト , ASR A31 ビット指定が有効 ) 各チップセレクト領域のサイズ ASZ3 ∼ ASZ0 では , ASR とのアドレス比較のビット数を変更させることにより , 各領 域のサイズを設定します。そのため , ASR には比較されないビットが存在します。 ACR0 の ASZ3 ∼ ASZ0 ビットは , RST により "1111B" (0FH) に初期化されますが , この 設定にかかわらず RST 直後の CS0 領域は特別に "00000000H" から "FFFFFFFFH" ( 全領 域 ) に設定されています。ACR0 への最初の書込み後より , 全領域設定が解除され , 上 記の表に従ったサイズに設定されます。 ASR6, ASR7 で設定する領域に SDRAM/FCRAM を接続する場合 , 128M バイト (1011B) 以下に設定してください。 142 第 4 章 外部バスインタフェース [bit 11, bit 10] DBW1, DBW0= Data Bus Width1,0 各チップセレクト領域のデータバス幅を 以下のとおり設定します。 DBW1 DBW0 0 0 8 ビット ( バイトアクセス ) 0 1 16 ビット ( ハーフワードアクセス ) 1 0 Reserved ( 設定禁止 ) 1 1 Reserved ( 設定禁止 ) データバス幅 ACR0 の DBW1, DBW0 ビットは , リセットシーケンス中にモードベクタの WTH ビッ トの値と同じ値が自動的に書き込まれます。 SDRAM/FCRAM を接続する領域では , 本ビットによるデータバス幅の設定はすべて同 じにしてください。 [bit 9, bit 8] BST1, BST0= Burst Size1,0 各チップセレクト領域の最大バースト長を , 以下のように設定します。 BST1 BST0 0 0 1( シングルアクセス ) 0 1 2 バースト ( アドレス境界 1 ビット ) 1 0 4 バースト ( アドレス境界 2 ビット ) 1 1 8 バースト ( アドレス境界 3 ビット ) 最大バースト長 シングルアクセス以外のバースト長が設定された領域は , プリフェッチアクセスまた はバス幅を超えるサイズのデータの読出しを行った場合のみ , バースト長から決まる アドレス境界内で連続したバーストアクセスを行います。 バス幅 16 ビット領域の最大バースト長は 2 バースト以下を推奨します。 シングルアクセス以外のバースト長設定を行った領域では RDY 入力を無視します。 SDRAM/FCRAM を接続する領域では , 本ビットによるバースト長の設定はすべて同じ にしてください。 [bit 7] SREN=ShaRed ENable 各チップセレクト領域の BRQ/BGRNT による共有の許可・禁止を 以下のように設定し ます。 SREN 共有の許可・禁止 0 BRQ/BGRNT による共有を禁止 (CSn はハイインピーダンスになりません ) 1 BRQ/BGRNT による共有を許可 (CSn はハイインピーダンスになります ) 共有が許可された領域は , バス開放中 (BGRNT="L" 出力中 ) はチップセレクト出力 (CSn) がハイインピーダンスになります。 共有が禁止された領域は , バス開放中 (BGRNT="L" 出力中 ) もチップセレクト出力 (CSn) がハイインピーダンスになりません。 CSER により許可されたすべての領域の共有が許可されている場合のみ , アクセススト ローブ出力 (AS, BAA, RD, WR0, WR1, WR など ) がハイインピーダンスになります。 143 第 4 章 外部バスインタフェース [bit 6] PFEN=PreFetch ENable 各チップセレクト領域のプリフェッチの許可・禁止を , 以下のように設定します。 PFEN プリフェッチ許可・禁止 0 プリフェッチ禁止 1 プリフェッチ許可 プリフェッチが許可された領域に対して読出しを行うと , それに続くアドレスに対し 先読みを行い , 内蔵プリフェッチバッファに蓄積します。蓄積されたアドレスに対し内 部バスからのアクセスがあると , 外部アクセスを行わずにプリフェッチバッファに先 読みされたデータを返します。 詳細は「4.8 プリフェッチ動作」を参照してください。 [bit 5] WREN=WRite ENable 各チップセレクト領域の書込みの許可・禁止を設定します。 WREN 書込み許可・禁止 0 書込み禁止 1 書込み許可 書込みが禁止された領域に対する書込みアクセスが内部バスから発生しても , そのア クセスは無視され , 外部アクセスを一切行いません。 データ領域など , 書込みが必要な領域は , WREN ビットに "1" を設定してください。 [bit 4] LEND=Little ENDian select 各チップセレクト領域のバイトオーダリングを設定します。 LEND バイトオーダリング 0 ビッグエンディアン 1 リトルエンディアン ACR0 の LEND ビットには必ず "0" を設定してください。CS0 領域はビッグエンディア ンのみをサポートします。 144 第 4 章 外部バスインタフェース [bit 3 ∼ bit 0] TYP3 ∼ TYP0= TYPe select 各チップセレクト領域のアクセスタイプを , 以下のように設定します。 TYP3 TYP2 TYP1 TYP0 0 x x 通常アクセス ( 非同期 SRAM, I/O, シングル / ページ / バースト ROM/ フラッシュ ) 1 x x アドレスデータマルチプレックスアクセス (8/16 ビットバス幅限定 ) x 0 RDY 端子による WAIT 挿入無効 x 1 RDY 端子による WAIT 挿入有効 ( バースト時は無効 ) 0 x WR0, WR1 端子をライトストローブとして使用 (WR は "H" 固定 ) 1 x WR 端子をライトストローブとして使用 *1 0 Memory type A: SDRAM/FCRAM( オートプリチャージは使用しません ) *2 1 Memory type B: FCRAM( オートプリチャージを使用します ) *2 0 x 1 アクセスタイプ 0 0 0 1 0 設定禁止 0 1 1 設定禁止 1 0 0 設定禁止 1 0 1 設定禁止 1 1 0 設定禁止 1 1 1 マスク領域設定 ( アクセスタイプは重複した領域のものになります ) *3 各ビットは , 組み合わせて設定します。 アクセスタイプごとの動作詳細は , 動作解説の項 (「4.5 通常バスインタフェース」, 「4.6 バーストアクセス (first wait cycle:1,page wait cycle:1) (TYP3 ∼ TYP0=0000B,AWR=3208H)」, 「4.7 アドレス / データマルチプレック スインタフェース」) を参照してください。 *1: この設定をした場合 , WR0, WR1 は , 各バイトのイネーブルとして使用できます。 *2: ACR6, ACR7 レジスタのみ有効です。ACR0, ACR1, ACR2, ACR3, ACR4, ACR5 レジスタでは設定 禁止です。 *3: CSn 領域マスク設定機能 ある CS 領域 ( 以降 , ベース設定領域とよびます ) の中に , 一部動作設定を変更した領域を定義し たい場合 , 別の CS 領域の設定にて , ACR:TYP3 ∼ TYP0="1111B" を設定し , マスク設定領域とし て機能させることができます。 マスク設定機能を使用しない場合 , 複数の CS 領域でオーバラップする領域設定は禁止します。 マスク設定領域へのアクセスは , 以下のような動作を行います。 - マスク設定領域に対応する CSn はアサートされません。 - ベース設定領域に対応する CSn がアサートされます。 - ACR の以下の設定はマスク設定領域側のものが有効になります。 [bit 11,bit 10] DBW1, DBW0: バス幅設定 [bit 9,bit 8] BST1, BST0: バースト長設定 [bit 7] SREN: 共有許可設定 [bit 6] PFEN: プリフェッチ許可設定 [bit 5] WREN: ライト許可設定 ( 注意事項 ) この設定のみ , ベース設定領域と異なる設定は禁止します。 [bit 4] LEND: リトルエンディアン設定 - ACR の以下の設定はベース設定領域側のものが有効になります。 [bit 3 ∼ bit 0] TYP3 ∼ TYP0: アクセスタイプ設定 - AWR の設定はマスク設定領域側のものが有効になります。 - CHER の設定はマスク設定領域側のものが有効になります。 145 第 4 章 外部バスインタフェース マスク設定領域は , ほかの CS 領域 ( ベース設定領域 ) 内の一部の領域にのみ設定できます。ベー ス設定領域がない領域に対して , マスク設定領域を設けてはいけません。また , マスク設定領域 を複数重複させてもいけません。ASR および ACR:ASZ3 ∼ ASZ0 ビットの設定には十分注意し てください。 <注意事項> • ASR と ACR はワードアクセスで同時に設定してください。 ASR,ACR をハーフワードでアクセスする場合には,ASR 設定後,ACR を設定して ください。 • [bit 3 ∼ bit 0] TYP3 ∼ TYP0 についての制限事項は以下のとおりです。 - ライト許可設定をマスクで実現することはできません。 - ライト許可設定は , ベースとなる CS 領域と , マスク設定領域とで , 同じ設定として ください。 - マスク設定領域でライト禁止を設定すると , その領域はマスクされずベース CS 領域 として動作します。 - ベース CS 領域でライト禁止を設定し , マスク設定領域でライト許可を設定すると , ベース設定のない領域となり , 誤動作します。 146 第 4 章 外部バスインタフェース 4.2.3 AWR0 ∼ AWR7(Area Wait Register) Area Wait Register の詳細を説明します。 ■ AWR0 ∼ AWR7(Area Wait Register) のレジスタ構成 AWR0 ∼ AWR7 のレジスタ構成は , 以下のとおりです。 図 4.2-3 AWR0 ∼ AWR7 のレジスタ構成 ( 続く ) 初期値 AWR0 上位 0000 0666H 15 14 13 12 11 10 9 8 INIT 時 W15 W14 W13 W12 W11 W10 W09 W08 01111111B RST 時 アクセス 01111111B R/W 11111111B 11111011B AWR0 下位 0000 0661H 7 6 5 4 3 2 1 0 W07 W06 W05 W04 W03 W02 W01 W00 AWR1 上位 0000 0662H 15 14 13 12 11 10 9 W15 W14 W13 W12 W11 W10 W09 7 6 5 4 3 2 1 W07 W06 W05 W04 W03 W02 W01 15 14 13 12 11 10 9 W15 W14 W13 W12 W11 W10 W09 7 6 5 4 3 2 1 W07 W06 W05 W04 W03 W02 W01 15 14 13 12 11 10 9 W15 W14 W13 W12 W11 W10 W09 7 6 5 4 3 2 1 W07 W06 W05 W04 W03 W02 W01 15 14 13 12 11 10 9 W15 W14 W13 W12 W11 W10 W09 7 6 5 4 3 2 1 W07 W06 W05 W04 W03 W02 W01 15 14 13 12 11 10 9 W15 W14 W13 W12 W11 W10 W09 7 6 5 4 3 2 1 W07 W06 W05 W04 W03 W02 W01 AWR1 下位 0000 0663H AWR2 上位 0000 0664H AWR2 下位 0000 0665H AWR3 上位 0000 0666H AWR3 下位 0000 0667H AWR4 上位 0000 0668H AWR4 下位 0000 0669H AWR5 上位 0000 066AH AWR5 下位 0000 066BH R/W 8 W08 XXXXXXXXB XXXXXXXXB R/W 0 W00 XXXXXXXXB XXXXXXXXB R/W 8 W08 XXXXXXXXB XXXXXXXXB R/W 0 W00 XXXXXXXXB XXXXXXXXB R/W 8 W08 XXXXXXXXB XXXXXXXXB R/W 0 W00 XXXXXXXXB XXXXXXXXB R/W 8 W08 XXXXXXXXB XXXXXXXXB R/W 0 W00 XXXXXXXXB XXXXXXXXB R/W 8 W08 XXXXXXXXB XXXXXXXXB R/W 0 W00 XXXXXXXXB XXXXXXXXB R/W 147 第 4 章 外部バスインタフェース 図 4.2-3 AWR0 ∼ AWR7 のレジスタ構成 ( 続き ) 初期値 AWR6 上位 0000 066CH AWR6 下位 0000 066DH 15 14 13 12 11 10 9 W15 W14 W13 W12 W11 W10 W09 7 6 5 4 3 2 1 W07 W06 W05 W04 W03 W02 W01 AWR7 上位 0000 066EH 15 14 13 12 11 10 9 W15 W14 W13 W12 W11 W10 W09 AWR7 下位 0000 066FH 7 6 5 4 3 2 1 W07 W06 W05 W04 W03 W02 W01 8 INIT 時 RST 時 アクセス W08 XXXXXXXXB XXXXXXXXB R/W 0 W00 XXXXXXXXB 00000000B R/W 8 W08 XXXXXXXXB XXXXXXXXB R/W 0 W00 XXXXXXXXB XXXXXXXXB R/W AWR0 ∼ AWR7 は , 各チップセレクト領域の各種ウェイトタイミングを指定します。 ACR0 ∼ ACR7 レジスタのアクセスタイプ (TYP3 ∼ TYP0 ビット ) の設定により , 各 ビットの動作が変わります。 ■ 通常アクセスおよびアドレス / データマルチプレックスアクセス ACR0 ∼ ACR7 レジスタのアクセスタイプ (TYP3 ∼ TYP0 ビット ) に以下の設定を行っ たチップセレクト領域は , 通常アクセスまたはアドレス / データマルチプレックスアク セス動作を行う領域となります。 TYP3 TYP2 TYP1 TYP0 アクセスタイプ 0 0 x x 通常アクセス ( 非同期 SRAM, I/O, シングル / ページ / バースト ROM/ フラッシュ ) 0 1 x x アドレスデータマルチプレックスアクセス (8/16 ビットバス幅限定 ) 通常アクセスまたはアドレス / データマルチプレックスアクセス領域に対しての AWR0 ∼ AWR7 の各ビットの機能を以下に示します。AWR0 以外は初期値が不定です ので , 各領域を CSER レジスタによって有効にする前に設定を行ってください。 [bit 15 ∼ bit 12] W15 ∼ W12= ファーストアクセスウェイトサイクル (First Access Wait Cycle) 各サイクルの最初のアクセスサイクルに挿入するオートウェイトサイクル数を設定し ます。バーストアクセスサイクル以外は , このウェイト設定のみ使用されます。 CS0 領域は , 初期値 7 ウェイトに設定されます。その他の領域は初期値不定です。 W15 W14 W13 W12 0 0 0 0 自動ウェイトサイクル 0 0 0 0 1 自動ウェイトサイクル 1 1 1 1 1 自動ウェイトサイクル 15 ファーストアクセスウェイトサイクル … 148 … 第 4 章 外部バスインタフェース [bit 11 ∼ bit 8] W11 ∼ W08= ページ内アクセスウェイトサイクル (Inpage Access Wait Cycle) バーストアクセス時 , ページ内アクセスサイクルに挿入するオートウェイトサイクル 数を設定します。バーストアクセスサイクル以外では , 意味を持ちません。 W11 W10 W09 W08 0 0 0 0 自動ウェイトサイクル 0 0 0 0 1 自動ウェイトサイクル 1 1 1 1 1 自動ウェイトサイクル 15 ページ内アクセスウェイトサイクル … … ファーストアクセスウェイトサイクルとページ内アクセスウェイトサイクルに同じ値 を設定しても , それぞれのアクセスサイクルでのアドレスからのアクセスタイムは同 じにはならないことに注意してください (ページ内アクセスサイクルでは , アドレス出 力遅延が含まれるため ) 。 [bit 7,bit 6] W07,W06= リード→ライトアイドルサイクル (Read → Write Idle Cycle) リード→ライトアイドルサイクルは , リードサイクル後にライトサイクルが続く場合 に , リードデータとライトデータのデータバス上での衝突を防ぐために設定します。ア イドルサイクル中はすべてのチップセレクト信号をネゲートし , データ端子はハイイ ンピーダンス状態を維持します。 リード後にライトが続く場合 , もしくは , リードの後に別のチップセレクト領域へのア クセスが発生した場合に指定したアイドルサイクルを挿入します。 W07 W06 0 0 0 サイクル 0 1 1 サイクル 1 0 2 サイクル 1 1 3 サイクル リード→ライトアイドルサイクル [bit 5,bit 4] W05,W04= ライトリカバリサイクル (Write Recovery Cycle) ライトリカバリサイクルは , ライトアクセス後に続けてアクセスする際の間隔に制限 のあるデバイスへのアクセスを制御する場合に設定します。ライトリカバリサイクル 中はすべてのチップセレクト信号をネゲートし , データ端子はハイインピーダンスを 維持します。 ライトリカバリサイクルを "1" 以上に設定した場合は , ライトアクセスの後には必ずラ イトリカバリサイクルが挿入されます。 W05 W04 0 0 0 サイクル 0 1 1 サイクル 1 0 2 サイクル 1 1 3 サイクル ライトリカバリサイクル 149 第 4 章 外部バスインタフェース [bit 3] W03=WR0, WR1, WR 出力タイミング選択 WR0, WR1, WR 出力タイミング設定は , ライトストローブ出力を非同期ストローブと して使用するか , 同期ライトイネーブルとして使用するかを選択します。非同期スト ローブとすることにより通常メモリ , I/O に対応し , 同期イネーブルとすることにより クロック同期のメモリ , I/O(ASIC 内蔵メモリなど ) に対応します。 W03 WR0, WR1, WR 出力タイミング選択 0 MCLK 同期ライトイネーブル出力 (AS="L" から有効 ) 1 非同期ライトストローブ出力 ( 通常動作 ) 同期ライトイネーブルとした場合 (AWR:W03 ビットが "0") , 以下のような動作となり ます。 • 同期ライトイネーブル出力のタイミングは , 外部メモリアクセスクロックの MCLK 出力の立上りエッジで取り込まれることを前提としたタイミングになります。非同 期ストローブ出力とはタイミングが異なります。 • WR0, WR1 , WR 端子出力は , AS 端子出力がアサートされているタイミングから同 期ライトイネーブル出力をアサートします。外部バスへのライトが行われる場合 , 同期ライトイネーブル出力は "L" を出力します。外部バスからのリードが行われる 場合 , 同期ライトイネーブル出力は "H" を出力します。 • 同期ライトイネーブル出力をアサートした次のクロックサイクルにて , 外部データ 出力端子よりライトデータを出力します。 • リードストローブ出力 (RD) は, WR0, WR1, WR出力タイミング設定の内容にかかわ らず , 非同期リードストローブとして機能します。データの入出力方向制御にその まま用いてください。 同期ライトイネーブル出力を使用する場合 , 以下の制限があります。 以下の追加ウェイト設定はしないでください。 - CSn → RD/WR セットアップ設定 (AWR:W01 ビットは常に "0" を書いてください ) - ファーストアクセスウェイトサイクル設定(AWR:W15∼W12ビットは常に"0000B" を書いてください ) • 以下のアクセスタイプ設定 (ACR レジスタ中の TYP3 ∼ TYP0 ビット (bit 3 ∼ bit 0) は設定しないでください。 - アドレス / データマルチプレックスバス設定 (ACR:TYP2 ビットは常に "0" を書い てください ) - WR0, WR1 をライトストローブとして使用する設定 (ACR:TYP1 ビットは常に "0" を書いてください ) - RDY 入力有効設定 (ACR:TYP0 ビットは常に "0" を書いてください ) • 同期ライトイネーブル出力の場合 , バースト長は常に "1" (ACR:BST1, BST0 ビットに "00B") を設定してください。 150 第 4 章 外部バスインタフェース [bit 2] W02= アドレス→ CSn 遅延 (Address → CSn Delay) アドレス→ CSn 遅延設定は , CSn の立下りに対してアドレスなどが一定のセットアッ プを必要とする場合や, 連続して同一のチップセレクト領域にアクセスする際にもCSn のエッジを必要とする場合などに設定します。 アドレスおよび AS 出力から , CS0 ∼ CS7 出力のディレイを設定します。 W02 アドレス→ CSn 遅延 0 遅延なし 1 遅延あり "0" を設定し , 遅延なしを選択した場合は , AS のアサートと同じタイミングで CS0 ∼ CS7 がアサート開始されます。このとき , 同じチップセレクト領域に連続したアクセス を実行した場合 , 両アクセスの間も CS0 ∼ CS7 はアサートを継続したまま変化しない ことがあります。アドレス→ CSn 遅延 "1" を設定し , 遅延ありを選択した場合は , 外部メモリクロック MCLK 出力の立上りか ら CS0 ∼ CS7 がアサート開始されます。このとき , 同じチップセレクト領域に連続し たアクセスを実行した場合でも , 両アクセスの間に CS0 ∼ CS7 ネゲートタイミングが 発生します。 CSn 遅延ありを選択した場合は , 遅延させた CSn のアサートから , リード / ライトスト ローブをアサートする前に , 1 サイクルのセットアップサイクルを挿入します (W01 の CSn → RD/WR セットアップ設定と同等の動作となります )。 アドレス→ CSn 遅延設定は , 同一領域に対し出力される DACK 信号 ( 基本モード ) に も同様に作用します。基本モードでの DACK 出力は , その領域に対する CSn と同じ波 形となります。 [bit 1] W01=CSn → RD/WR セットアップ延長サイクル (CSn → RD/WR setup) CSn→RD/WRセットアップ延長サイクルは, CSnアサート後, リード/ライトストローブ をアサートするまでの期間を延長する場合に設定します。CSn アサート後 , リード / ラ イトストローブをアサートする前に最低 1 サイクルのセットアップ延長サイクルを挿 入します。 W01 CSn → RD/WR セットアップ延長サイクル 0 0 サイクル 1 1 サイクル "0" を設定し , 0 サイクルを選択した場合は , 最速で , CSn アサート直後の外部メモリク ロック MCLK 出力の立上りから RD/WR0, WR1/WR が出力されます。WR0, WR1/WR は , 内部バスの状態により , 1 サイクル以上遅れることもあります。 "1" を設定し , 1 サイクルを選択した場合は , RD/WR0, WR1/WR とも , 必ず 1 サイクル 以上遅れて出力されます。 同一チップセレクト領域内で , CSn をネゲートしないまま連続してアクセスする場合 , このセットアップ延長サイクルは挿入されません。アドレス確定のセットアップ延長 サイクルが必須となる場合 , W02 ビットを有効にしてアドレス→ CSn 遅延を挿入する ことにより , 毎アクセス時に CSn がいったんネゲートされるため , このセットアップ延 長サイクルが有効となります。 W02 の CSn 遅延設定を挿入してある場合 , W01 ビットの設定によらず常にこのセット アップサイクルが有効となります。 151 第 4 章 外部バスインタフェース [bit 0] W00=RD/WR → CSn ホールド延長サイクル (RD/WR → CSn Hold Cycle) RD/WR → CSn ホールド延長サイクルは , リード / ライトストローブネゲート後 , CSn ネ ゲートまでの期間を延長する場合に設定します。リード / ライトストローブネゲート 後 , CSn をネゲートする前に , 1 サイクルのホールド延長サイクルを挿入します。 W00 RD/WR → CSn ホールド延長サイクル 0 0 サイクル 1 1 サイクル "0" を設定し , 0 サイクルを選択した場合は , RD/WR0, WR1/WR がネゲートされた後の 外部メモリクロックMCLK出力の立上りエッジよりホールド遅延経過後に, CS0∼CS7 がネゲートされます。 "1" を設定し , 1 サイクルを選択した場合は , CS0 ∼ CS7 は 1 サイクル遅れてネゲート されます。 同一チップセレクト領域内で , CSn をネゲートしないまま連続してアクセスする場合 , このホールド延長サイクルは挿入されません。アドレス確定のホールド延長サイクル が必須となる場合 , W02 ビットを有効にしてアドレス→ CSn 遅延を挿入することによ り , 毎アクセス時に CSn がいったんネゲートされるため , このホールド延長サイクルが 有効となります。 ■ Memory type A(SDRAM/FCRAM) および Memory type B(FCRAM) ACR0 ∼ ACR7 レジスタのアクセスタイプ (TYP3 ∼ TYP0 ビット ) に以下の設定を行っ たチップセレクト領域は , SDRAM/FCRAM アクセスを行う領域となります。 TYP3 TYP2 TYP1 TYP0 1 0 0 0 アクセスタイプ Memory type A: SDRAM/FCRAM ( オートプリチャージは使用しません ) SDRAM アクセス領域に対しての , AWR6, AWR7 の各ビットの機能を以下に示します。 初期値が不定ですので, 各領域をCSERレジスタによって有効にする前に設定を行って ください。 SDRAM/FCRAM を接続する領域では , 本レジスタの設定はすべて同じにしてくださ い。 [bit 15] W15 = 予約ビット 予約ビットです。必ず "0" を設定してください。 [bit 14 ∼ bit 12] W14 ∼ W12 = RAS-CAS ディレイサイクル (RAS-CAS delay Cycle) RAS 出力から CAS 出力までのサイクル数を設定してください。 W14 W13 W12 RAS-CAS ディレイサイクル 0 0 0 1 サイクル 0 0 1 2 サイクル … 1 … 1 … 1 … 8 サイクル SDRAM/FCRAM を接続する領域では , 本ビットによる RAS-CAS ディレイサイクルの 設定はすべて同じにしてください。 152 第 4 章 外部バスインタフェース [bit 11] W11 = 予約ビット 予約ビットです。必ず "0" を設定してください。 [bit 10 ∼ bit 8] W10 ∼ W08 = CAS レイテンシ (CAS latency Cycle) CAS レイテンシを設定してください。 W10 W09 W08 CAS レイテンシ 0 0 0 1 サイクル 0 0 1 2 サイクル … 1 … 1 … 1 8 サイクル … SDRAM/FCRAM を接続する領域では , 本ビットによる CAS レイテンシの設定はすべ て同じにしてください。 [bit 7,bit 6] W07,W06= リード→ライトアイドルサイクル (Read → Write Idle Cycle) 最後のリードデータ入力サイクルから , ライトコマンド発行までの最小サイクル数を 設定してください。 W07 W06 リード→ライトアイドルサイクル 0 0 1 サイクル 0 1 2 サイクル 1 0 3 サイクル 1 1 4 サイクル SDRAM/FCRAM を接続する領域では , 本ビットによるリード→ライトアイドルサイク ルの設定はすべて同じにしてください。 [bit 5,bit 4] W05,W04= ライトリカバリサイクル (Write Recovery Cycle) 最後のライトデータ出力から , 次のリードコマンド発行までの最小サイクル数を設定 してください。 W05 W04 ライトリカバリサイクル 0 0 1 サイクル 0 1 2 サイクル 1 0 3 サイクル 1 1 4 サイクル SDRAM/FCRAM を接続する領域では , 本ビットによるライトリカバリサイクルの設定 はすべて同じにしてください。 153 第 4 章 外部バスインタフェース [bit 3,bit 2] W03,W02 = RAS アクティブタイム (RAS Active time) RAS アクティブタイムの最小サイクル数を設定してください。 W03 W02 RAS アクティブタイム 0 0 1 サイクル 0 1 2 サイクル 1 0 5 サイクル 1 1 6 サイクル SDRAM/FCRAM を接続する領域では , 本ビットによる RAS アクティブタイムの設定 はすべて同じにしてください。 [bit 1,bit 0] W01,W00 = RAS プリチャージサイクル (RAS precharge cycle) RAS プリチャージサイクル数を設定してください。 W01 W00 RAS プリチャージサイクル 0 0 1 サイクル 0 1 2 サイクル 1 0 3 サイクル 1 1 4 サイクル SDRAM/FCRAM を接続する領域では , 本ビットによるプリチャージサイクルの設定は すべて同じにしてください。 154 第 4 章 外部バスインタフェース 4.2.4 MCRA (Memory Configuration Register for extend type-A: SDRAM/FCRAM オートプリチャージなし ) Memory Configuration Register for extend type-A の詳細を説明します。 ■ MCRA (Memory Configuration Register for extend type-A) のレジスタ構成 MCRA のレジスタ構成は , 以下のとおりです。 図 4.2-4 MCRA のレジスタ構成 MCRA 初期値 31 0000 0670H 30 29 28 27 26 25 24 INIT 時 アクセス RST 時 予約 PSZ2 PSZ1 PSZ0 WBST BANK ABS1 ABS0 XXXXXXXXB XXXXXXXXB R/W ACR0 ∼ ACR7 レジスタのアクセスタイプ (TYP3 ∼ TYP0 ビット ) に以下の設定を行っ たチップセレクト領域に接続する SDRAM/FCRAM の各種設定を行います。 TYP3 TYP2 TYP1 TYP0 1 0 0 0 アクセスタイプ Memory type A: SDRAM/FCRAM ( オートプリチャージは使用しません ) MCRB とレジスタハードウェアを共用しています。したがって , MCRA を変更した場 合は MCRB も変更されます。 [bit 31] 予約 = 予約ビット 予約ビットです。必ず "0" を設定してください。 [bit 30 ∼ bit 28] PSZ2 ∼ PSZ0 = ページサイズ (Page SiZe) 接続する SDRAM のページサイズを設定してください。 PSZ2 PSZ1 PSZ0 0 0 0 8 ビット コラムアドレス = A0 ∼ A7 (256 ワード ) 0 0 1 9 ビット コラムアドレス = A0 ∼ A8 (512 ワード ) 0 1 0 10 ビット コラムアドレス = A0 ∼ A9 0 1 1 11 ビット コラムアドレス = A0 ∼ A9, A11 (2048 ワード ) 1 x x 設定禁止 SDRAM ページサイズ (1024 ワード ) [bit 27] WBST = ライトバースト設定 (Write BurST enable) ライト時にバースト書込みを行うかどうかを設定してください。 WBST データバス幅 0 シングルライト 1 バーストライト なお , FCRAM を接続する場合は , 必ず "1" を設定してください。FCRAM は " バースト リード , シングルライト " モードをサポートしていません。 155 第 4 章 外部バスインタフェース [bit 26] BANK = バンク数設定 (BANK type select) 接続する SDRAM のバンク数を設定してください。 BANK バンク数設定 0 2 バンク 1 4 バンク [bit 25,bit 24] ABS1,ABS0 = アクティブバンク数設定 (Active Bank Select) 同時にアクティブにする最大バンク数を設定してください。 ABS1 ABS0 156 アクティブバンク数設定 0 0 1 バンク 0 1 2 バンク 1 0 3 バンク 1 1 4 バンク 第 4 章 外部バスインタフェース 4.2.5 MCRB (Memory Configuration Register for extend type-B: FCRAM オートプリチャージあり ) Memory Configuration Register for extend type-B の詳細を説明します。 ■ MCRB (Memory Configuration Register for extend type-B) のレジスタ構成 MCRB のレジスタ構成は , 以下のとおりです。 図 4.2-5 MCRB のレジスタ構成 MCRB 初期値 23 0000 0671H 22 21 20 19 18 17 16 INIT 時 アクセス RST 時 予約 PSZ2 PSZ1 PSZ0 WBST BANK ABS1 ABS0 XXXXXXXXB XXXXXXXXB R/W ACR0 ∼ ACR7 レジスタのアクセスタイプ (TYP3 ∼ TYP0 ビット ) に以下の設定を行っ たチップセレクト領域に接続する FCRAM の各種設定を行います。 TYP3 TYP2 TYP1 TYP0 1 0 0 1 アクセスタイプ Memory type B: FCRAM ( オートプリチャージを使用します ) MCRA とレジスタハードウェアを共用しています。したがって , MCRA を変更した場 合は MCRB も変更されます。 MCRA と同じ機能です。しかし , 本 TYPE 設定においては , WBST ビットの機能は使用 できません (FCRAM は " バーストリード , シングルライト " モードをサポートしてい ません )。 157 第 4 章 外部バスインタフェース 4.2.6 IOWR0 ∼ IOWR2(I/O Wait Register for DMAC) I/O Wait Register for DMAC の詳細を説明します。 ■ IOWR0 ∼ IOWR2(I/O Wait Register for DMAC) のレジスタ構成 IOWR0 ∼ IOWR2 のレジスタ構成は , 以下のとおりです。 図 4.2-6 IOWR0 ∼ IOWR2 のレジスタ構成 IOWR0 初期値 31 0000 0678H IOWR1 000679H IOWR2 00067AH 30 29 28 27 26 25 24 INIT 時 RST 時 RYE0 HLD0 WR01 WR00 IW03 IW02 IW01 IW00 XXXXXXXXB XXXXXXXXB 23 22 21 20 19 18 17 14 13 12 11 10 9 R/W 16 RYE1 HLD1 WR11 WR10 IW13 IW12 IW11 IW10 XXXXXXXXB XXXXXXXXB 15 アクセス R/W 8 RYE2 HLD2 WR21 WR20 IW23 IW22 IW21 IW20 XXXXXXXXB XXXXXXXXB R/W DMA フライバイアクセス時の各種ウェイトを設定します。 [bit 31,bit 23,bit 15] RYE0,RYE1,RYE2=RDY 機能設定 (ReadY Enable0,1,2) DMA フライバイアクセス時 , ch0 ∼ ch2 ごとの RDY によるウェイト制御の設定を行い ます。 RYEn (n: 0 ∼ 2) RDY 機能設定 0 I/O アクセスに対する RDY 入力は無効となります。 1 I/O アクセスに対する RDY 入力が有効になります。 "1" を設定することにより , 該当するチャネルのフライバイ転送時 , RDY 端子による ウェイト挿入が可能となります。IOWR, IORD は RDY 端子がイネーブルになるまで , 延長されます。また , メモリ側の RD/WR0, WR1/WR もそれに同期して延長されます。 フライバイ転送相手のチップセレクト領域が ACR レジスタにより RDY 有効に設定さ れていれば , IOWR 側の RYE0 ∼ RYE2 ビットとは関係なく , RDY 端子によるウェイ ト挿入が可能となります。また , フライバイ転送相手のチップセレクト領域で ACR レ ジスタにより RDY 無効にされている場合でも , IOWR 側の RYE0 ∼ RYE2 ビットによ り RDY 有効に設定されていれば , フライバイアクセス時のみ , RDY 端子によるウェイ ト挿入が可能となります。 158 第 4 章 外部バスインタフェース [bit 30,bit 22,bit 14] HLD0, HLD1,HLD2= ホールドウェイト設定 (HoLD wait control 0, 1, 2) DMA フライバイアクセス時の転送元アクセス側のリードストローブ信号のホールド サイクルを制御します。 HLDn (n:0 ∼ 2) ホールドウェイト設定 0 ホールド延長サイクルを挿入しません。 1 ホールド延長サイクルを挿入し , リードサイクルを 1 サイクル延長します。 "0" 設定時は , 転送元アクセス側のリードストローブ信号 ( メモリ→ I/O の場合は RD, I/O →メモリの場合は IORD) とライトストローブ信号 ( メモリ→ I/O の場合は IOWR, I/O →メモリの場合は , WR0, WR1 および WR) は同じタイミングで出力されます。 "1" 設定時は , 転送元アクセス側データの転送先に対するホールドタイムを確保するた め , ライトストローブ信号に対し , リードストローブ信号を "1" サイクル長く出力しま す。 [bit 29,bit 28,bit 21,bit 20,bit 13,bit 12] WR00, WR01, WR10,WR11, WR20, WR21=I/O アイドルサイクル設定 (I/O Idle Wait) DMA フライバイアクセス時に , 連続した I/O アクセスに対するアイドルサイクルを設 定します。 WRn1 (n:0 ∼ 2) WRn0 (n:0 ∼ 2) I/O アイドルサイクル設定 0 0 0 サイクル 0 1 1 サイクル 1 0 2 サイクル 1 1 3 サイクル アイドルサイクルを 1 サイクル以上設定した場合 , DMA フライバイアクセス時に , I/O アクセスの後に設定したサイクル数のアイドルサイクルを挿入します。アイドルサイ クル中は , すべての CS およびストローブ出力はネゲートされ , データ端子はハイイン ピーダンスとなります。 [bit 27∼bit 24,bit 19∼bit 16,bit 11∼bit 8] IW03∼IW00, IW13∼IW10, IW23∼IW20= I/O ウェイトサイクル (I/O access Wait) DMA フライバイアクセス時の I/O アクセスの自動ウェイトサイクルを指定します。 IWn3 (n:0 ∼ 2) IWn2 (n:0 ∼ 2) IWn1 (n:0 ∼ 2) IWn0 (n:0 ∼ 2) I/O ウェイトサイクル 0 0 0 0 0 サイクル 0 0 0 1 1 サイクル 1 1 1 1 … … 15 サイクル ウェイトサイクルの挿入数は , 転送元と転送先とでのデータの同期のため , IWnn ビッ トによる I/O 側の設定とフライバイ転送相手 ( メモリなど ) のウェイト設定のうち , 大 きいほうを使用します。そのため , IWnn ビットに設定したサイクル数より多いウェイ トが挿入される場合があります。 159 第 4 章 外部バスインタフェース 4.2.7 CSER(Chip Select Enable register) Chip Select Enable register の詳細を説明します。 ■ CSER(Chip Select Enable register) のレジスタ構成 CSER のレジスタ構成は , 以下のとおりです。 図 4.2-7 CSER のレジスタ構成 初期値 31 0000 0680H 30 29 28 27 26 25 24 RST 時 CSE7 CSE6 CSE5 CSE4 CSE3 CSE2 CSE1 CSE0 00000001B 00000001B アクセス INIT 時 R/W 各チップセレクト領域の許可 / 禁止を設定します。 [bit 31 ∼ bit 24] CSE7 ∼ CSE0= チップセレクト領域許可 (Chip select enable 0 ∼ 7) CS0 ∼ CS7 の各チップセレクト領域許可ビットです。 初期値は , "00000001B" で CS0 領域のみ許可されています。 "1" を書き込むことにより ASR0 ∼ ASR7, ACR0 ∼ ACR7, AWR0 ∼ AWR7 の設定に従っ て動作します。 許可にする前に , 必ず対応するチップセレクト領域のすべての設定を行ってください。 ただし , リフレッシュコントロールレジスタ (RCR) の PON ビットによるパワーオン シーケンスの実行は , CSER によるチップセレクト領域の許可を行った後に開始してく ださい。CSER で許可されていない領域に接続された SDRAM/FCRAM に対しては , パ ワーオンシーケンスは無効となります。 CSEn (n: 0 ∼ 7) 領域コントロール 0 禁止 1 許可 表 4.2-2 に , CSE のビットと対応する CS を示します。 表 4.2-2 CSE のビットと対応する CS 160 CSE のビット 対応する CS bit 24: CSE0 CS0 bit 25: CSE1 CS1 bit 26: CSE2 CS2 bit 27: CSE3 CS3 bit 28: CSE4 CS4 bit 29: CSE5 CS5 bit 30: CSE6 CS6 bit 31: CSE7 CS7 第 4 章 外部バスインタフェース 4.2.8 CHER(CacHe Enable register) Cache Enable register の詳細を説明します。 ■ CHER(CacHe Enable register) のレジスタ構成 CHER のレジスタ構成は , 以下のとおりです。 図 4.2-8 CHER のレジスタ構成 初期値 23 0000 0681H 22 21 20 19 18 17 16 アクセス INIT 時 RST 時 CHE7 CHE6 CHE5 CHE4 CHE3 CHE2 CHE1 CHE0 11111111B 11111111B R/W 各チップセレクト領域から読み出したデータの内蔵キャッシュへの取込みを制御しま す。 [bit 23 ∼ bit 16] CHE7 ∼ CHE0= キャッシュ領域設定 (Cache Enable 7 ∼ 0) チップセレクト領域ごとに , 内蔵キャッシュへの取込みの許可・禁止を指定します。 CHEn (n:0 ∼ 7) キャッシュ領域設定 0 非キャッシュ領域 ( 該当する領域よりリードしたデータをキャッシュに保存しません。) 1 キャッシュ領域 ( 該当する領域よりリードしたデータをキャッシュに保存します。) 161 第 4 章 外部バスインタフェース 4.2.9 TCR(Terminal and timing Control Register) Terminal and timing Control Register の詳細を説明します。 ■ TCR(Terminal and timing Control Register) のレジスタ構成 TCR のレジスタ構成は , 以下のとおりです。 図 4.2-9 TCR のレジスタ構成 初期値 7 6 5 4 3 2 1 0 アクセス INIT 時 RST 時 0000 0683H BREN PSUS PCLR 予約 OHT1 OHT0 RDW1 RDW0 00000000B 0000XXXXB R/W 共通端子機能設定やタイミング制御など , 外部バスインタフェースコントローラ全般 にかかわる機能を制御します。 [bit 7] BREN=BRQ 入力許可設定 (BRQ enable) BRQ 端子入力を許可し , 外部バス共有を可能にします。 BREN BRQ 入力許可設定 0 BRQ/BGRNT によるバス共有を行いません。BRQ 入力は無効となります。 1 BRQ/BGRNT によるバス共有を行います。BRQ 入力は有効となります。 初期状態 ("0") のときは , BRQ の入力を無視します。 "1" を設定すると , BRQ 入力が "H" になった後 , バス開放が可能になった時点でバスを 開放 ( ハイインピーダンス制御 ) し , BGRNT をアクティブ ("L" 出力 ) にします。 [bit 6] PSUS= プリフェッチ抑止 (Prefetch SUSpend) すべての領域に対するプリフェッチの一時停止を制御します。 PSUS プリフェッチ制御 0 プリフェッチ許可 1 プリフェッチ禁止 "1" を設定すると , "0" を書き込むまでの間 , 新規のプリフェッチ動作を行いません。こ の間 , プリフェッチバッファへのミスが発生しない限りはプリフェッチバッファの内 容は消去されませんので , プリフェッチを再開する前に bit 5:PCLR ビット機能により プリフェッチバッファのクリアを行ってください。 162 第 4 章 外部バスインタフェース [bit 5] PCLR= プリフェッチバッファ全クリア (Prefetch buffer CleaR) プリフェッチバッファのすべての内容をクリアします。 PCLR プリフェッチバッファ制御 0 通常状態 1 プリフェッチバッファクリア "1" を書き込むと 1 度だけプリフェッチバッファをすべてクリアします。バッファクリ アが完了すると自動的にビット値は "0" に戻ります。PSUS ビットでプリフェッチを中 断 ("1" に設定 ) しておいてからバッファのクリアを行ってください (PSUS と PCLR の 両ビットに同時に "10B" を書き込んで結構です ) 。 [bit 4] 予約 (reserved) 予約ビットです。必ず "0" を設定してください。 [bit 3,bit 2] OHT1, OHT0 = 出力ホールド遅延選択 (Output Hold Throttle) 外部メモリクロック MCLK 出力に対する外部制御信号出力のホールドのための遅延値 の調整を行います。 OHT1 OHT0 0 0 SYSCLK/MCLK の立下りから出力します。 0 1 SYSCLK/MCLK の立上りから ( 約 3ns) 遅延させて出力します。 1 0 SYSCLK/MCLK の立上りから ( 約 4ns) 遅延させて出力します。 1 1 SYSCLK/MCLK の立上りから ( 約 5ns) 遅延させて出力します。 出力ホールド遅延選択 遅延値はティピカル条件下における目標値です。 非同期のリードおよびライトストローブ (RD/WR0/WR1/WR/IOWR/IORD) , および遅 延させた CS の立下りタイミングは , この遅延値調整の対象にはなりません。 OHT1, OHT0は動作中に書き換えても誤動作しませんが, タイミング切換え時に一時外 部バス動作が停止します。 [bit 1,bit 0] RDW1, RDW0= ウェイトサイクル短縮 (ReDuce Wait cycle) すべてのチップセレクト領域およびフライバイ用 I/O チャネルに対し , 自動アクセスサ イクルウェイトの設定値を , AWR レジスタの設定値はそのままで自動ウェイトサイク ルのみ一律に削減します。下記においてはウェイトサイクル短縮機能は影響しません。 • アドレスサイクルやリカバリサイクル , セットアップやホールドサイクルの設定 • アクセスタイプを SDRAM に設定してあるチップセレクト領域 RDW1 RDW0 0 0 0 1 AWR0 ∼ AWR7 の設定値の 1/2 (1 ビット右シフト ) 1 0 AWR0 ∼ AWR7 の設定値の 1/4 (2 ビット右シフト ) 1 1 AWR0 ∼ AWR7 の設定値の 1/8 (3 ビット右シフト ) ウェイトサイクル短縮 通常ウェイト (AWR0 ∼ AWR7 の設定値 ) この機能は , ベースクロックを低速にしている間や , 外部バスクロックの分周比設定を 大きくしている間など , 低速クロックで動作している間 , 過剰なアクセスサイクルウェ イトがかかることを防ぐためのものです。 163 第 4 章 外部バスインタフェース 通常 , このような場合にウェイトサイクルを設定し直すには , すべての AWR をそれぞ れ書き換えなければなりませんが , RDW1, RDW0 ビットの機能を使うと , すべての AWR の設定は高速クロックのときの設定のままで , アクセスサイクルウェイトのみ 1 度に削減することができます。 クロックを高速に戻す前に , 必ず RDW1, RDW0 ビットは "00B" に設定し直してくださ い。 <注意事項> (1) TCR レジスタは書込み専用レジスタ ( 読出しはできません。) TCR レジスタは , ライトのみ可能です。TCR レジスタ値をリードすることはできませ ん。 (2) TCR レジスタの BREN ビットの取扱いについて TCR レジスタの bit 7:BREN ビットに "1" が書いてある状態から , "0" をライトしてバ ス共有を禁止したい場合 , 必ず以下の手順で行ってください。 1. ポート 8 機能レジスタ PFRB の bit 2:BGRE ビットに "0" をライトする。 2. TCR レジスタの bit 7:BREN ビットに "0" をライトする。 この手順に従わない場合 , デバイスがハングアップすることがあります。 164 第 4 章 外部バスインタフェース 4.2.10 RCR(Refresh Control Register) Refresh Control Register の詳細を説明します。 ■ RCR(Refresh Control Register) のレジスタ構成 RCR のレジスタ構成は , 以下のとおりです。 図 4.2-10 RCR のレジスタ構成 RCRH 初期値 31 0000 0684H RCRL 0000 0685H 30 29 28 27 26 25 24 INIT 時 アクセス RST 時 00XXXXXXB 00XXXXXXB R/W BRST RFC2 RFC1 RFC0 PON TRC2 TRC1 TRC0 XXXX0XXXB XXXX0XXXB R/W SELF RRLD 23 22 RFINT5 RFINT4 RFINT3 RFINT2 RFINT1 RFINT0 21 20 19 18 17 16 SDRAM に対する各種リフレッシュ制御設定を行います。どの領域に対しても SDRAM 制御を設定していない場合 , 本レジスタの設定は意味を持ちませんが , その場合はレジ スタ値を初期化状態から書き換えないでください。 リードモディファイライト (RMW) 系命令での読出し時は , SELF,RRLD,PON ビットは 必ず "0" を返します。 [bit 31] SELF = セルフリフレッシュ制御 (SELF refresh assert) セルフリフレッシュモードに対応するメモリに対してセルフリフレッシュモードの制 御を行います。 SELF セルフリフレッシュ制御 0 オートリフレッシュもしくはパワーダウン 1 セルフリフレッシュモードへ移行 "1" を設定すると SELF コマンド発行後セルフリフレッシュを行います。"0" を書き込 むとセルフリフレッシュモードを終了します。 ストップモードにする際 , SDRAM の内容を保持させたい場合は , ストップモードにす る前に本ビットにてセルフリフレッシュモードにしてください。この際 , セルフリフ レッシュ遷移前に集中リフレッシュを行いますので , それが終了するまでの間に発生 した外部アクセス要求は待たされます。また , ストップモードへの遷移も待たされま す。 セルフリフレッシュモードからの解除は , 本ビットへの "0" 書込みか , または SDRAM に対するアクセスの発生によって行われます。この際 , 解除直後に集中リフレッシュを 行いますので , SDRAM アクセスを含む外部アクセスを行うと , しばらくの間 , 外部ア クセス要求が待たされ , CPU の動作が停止します。 セルフリフレッシュモードにしない状態でストップモードにすると , そのままパワー ダウンモードとなり , SDRAM の内容は破壊されます。 リードモディファイライト (RMW) 系命令での読出し時は , 必ず "0" を返します。 165 第 4 章 外部バスインタフェース [bit 30] RRLD = リフレッシュカウンタ起動制御 (Refresh counter ReLoaD) リフレッシュカウンタの動作開始 , およびリロードを指示します。 RRLD リフレッシュカウンタ起動制御 0 無効 ( 何もしません ) 1 オートリフレッシュを 1 回実行し , RFINT の値をリロードします。 初期状態ではリフレッシュカウンタは停止しています。この状態で本ビットに "1" を設 定すると , その時点で CSER で有効になっているすべての SDRAM 領域に対し , 分散リ フレッシュモード時はオートリフレッシュを 1 回 , 集中リフレッシュモード時は RFC で指定された回数実行し , その後 RFINT5 ∼ RFINT0 ビットの値をリロードします。こ れ以降 , リフレッシュカウンタはダウンカウントを開始し , カウンタ値が "000000B" か らアンダフローを発生するたびに , RFINT5 ∼ RFINT0 ビットの値をリロードすると同 時にオートリフレッシュを 1 回実行する , という動作を繰り返します。リロード終了後 "0" に戻ります。 オートリフレッシュを停止させたい場合は , RFINT5 ∼ RFINT0 ビットに "000000B" を 書き込んでください。 リードモディファイライト (RMW) 系命令での読出し時は , 必ず "0" を返します。 [bit 29 ∼ bit 24] RFINT5 ∼ RFINT0 = オートリフレッシュインターバル (ReFresh INTerval) RFINT[5:0] は , オートリフレッシュの間隔を指定します。 オートリフレッシュ間隔は分散リフレッシュモード時 {(RFINT5 ∼ RFINT0 の値 ) × 32 × ( 外部バスクロックサイクル )} , 集中リフレッシュモード時 {(RFINT5 ∼ RFINT0 の値 ) × 32 × (RFC での指定回数 ) × ( 外部バスクロックサイクル )} で求めることが できます。 オートリフレッシュを停止させたい場合は , RFINT5 ∼ RFINT0 ビットに "000000B" を 書き込んでください。 なお , オートリフレッシュコマンドを発行している時間も , リフレッシュカウンタはダ ウンカウントを行っています。 [bit 23] BRST = バーストリフレッシュ制御 (BuRST refresh select) オートリフレッシュの際の動作モードを制御します。 BRST オートリフレッシュモードの制御 0 分散リフレッシュ ( 分散してオートリフレッシュを起動します。) 1 バーストリフレッシュ (1 回に連続してオートリフレッシュを起動します。) 分散リフレッシュを設定している場合 , 1 回のリフレッシュ間隔ごとに 1 回 , オートリ フレッシュコマンドを発行します。 バーストリフレッシュを設定している場合 , 1 回のリフレッシュ間隔ごとに , リフレッ シュカウンタに設定した回数のオートリフレッシュコマンドを連続して発行します。 166 第 4 章 外部バスインタフェース [bit 22 ∼ bit 20] RFC2 ∼ RFC0= リフレッシュ回数 (ReFresh Count) SDRAM すべてをリフレッシュするために必要なリフレッシュ回数を指定します。 RFC2 RFC1 RFC0 リフレッシュ回数 0 0 0 256 0 0 1 512 0 1 0 1024 0 1 1 2048 1 0 0 4096 1 0 1 8192 1 1 0 設定禁止 1 1 1 リフレッシュ禁止 ここで指定されたリフレッシュ回数は , セルフリフレッシュモード遷移前および遷移 後に実行される集中リフレッシュの際の回数となります。また , BRST ビットにより バーストリフレッシュを選択している場合は, リフレッシュインターバル1回ごとに発 行されるリフレッシュコマンドの回数となります。 [bit 19] PON = パワーオン制御 (Power ON) SDRAM(FCRAM) のパワーオンシーケンスを制御します。 PON パワーオン制御 0 無効 ( 何もしません ) 1 パワーオンシーケンス開始 PON ビットに "1" を書き込むことにより , SDRAM のパワーオンシーケンスを開始しま す。パワーオンシーケンスを開始する前に必ず対応する AWR, MCRA(B), CSER などの レジスタを設定してください。パワーオンシーケンスを開始すると本ビットは "0" に 戻ります。 PON ビットを有効にするときには , RFINT の設定と RRLD を有効にしてリフレッシュカ ウンタも動作させてください。PON ビットのみでは , リフレッシュ動作は行いません。 SELF ビットと同時に有効にしないでください。 リードモディファイライト (RMW) 系命令での読出し時は , 必ず "0" を返します。 [bit 18 ∼ bit 16] TRC2 ∼ TRC0 = リフレッシュサイクル (tRC) 設定 (Time of Refresh Cycle) リフレッシュサイクル (tRC) を設定してください。 TRC2 TRC1 TRC0 リフレッシュサイクル (tRC) 0 0 0 4 0 0 1 5 0 1 0 6 0 1 1 7 1 0 0 8 1 0 1 9 1 1 0 10 1 1 1 11 167 第 4 章 外部バスインタフェース 4.3 チップセレクト領域 外部バスインタフェースは全 8 領域分のチップセレクト領域が設定できます。 各領域のアドレス空間は ASR0 ∼ ASR7(Area Select Register) と ACR0 ∼ ACR7(Area Configuration Register) で 4G バイトの空間に , 最小 64K バイト単位 で任意に配置することができます。 これらのレジスタによって指定された領域に対してバスアクセスを行うと , アクセ スサイクル中に対応するチップセレクト信号 CS0 ∼ CS7 がアクティブ ("L" 出力 ) になります。 ■ ASR および ASZ3 ∼ ASZ0 の設定例 • ASR1=0003H ACR1->ASZ3 ∼ ASZ0=0000B チップセレクト領域 1 は , "00030000H" から "0003FFFFH" に割り当てられます。 • ASR2=0FFCH ACR2->ASZ3 ∼ ASZ0=0010B チップセレクト領域 2 は , "0FFC0000H" から "10000000H" に割り当てられます。 • ASR3=0011H ACR3->ASZ3 ∼ ASZ0=0100B チップセレクト領域 3 は , " 00100000H" から "00200000H" に割り当てられます。 このとき , ACR->ASZ3 ∼ ASZ0 が 1M バイトの設定になっていますので , バウンダリ は 1M バイト単位となり , ASR3[19:16] は無視されます。 リセット後は , ACR0 に書込みが行われるまでの間 , "00000000H" ∼ "FFFFFFFFH" が チップセレクト領域 0 に割り当てられます。 <注意事項> チップセレクト領域は , お互いにオーバラップしないように設定してください。 CS2 の領域は USB ファンクションに接続されています ( 予約領域 )。 CS3 の領域は使用禁止です。 168 第 4 章 外部バスインタフェース 図 4.3-1 にチップセレクト領域を示します。 図 4.3-1 チップセレクト領域 (初期値) 00000000H (例) 00000000H 00030000H 領域1 64Kバイト 領域3 1Mバイト 領域2 256Kバイト 00040000H 00100000H 領域0 00200000H 0FFC0000H 0FFFFFFFH FFFFFFFFH FFFFFFFFH 169 第 4 章 外部バスインタフェース 4.4 エンディアンとバスアクセス エンディアンとバスアクセスについて説明します。 ■ エンディアンとバスアクセス 4.4.1 データバス幅と制御信号との関係 4.4.2 ビッグエンディアンのバスアクセス 4.4.3 リトルエンディアンのバスアクセス 4.4.4 外部アクセス 170 第 4 章 外部バスインタフェース データバス幅と制御信号との関係 4.4.1 WR3∼WR0の制御信号は, データバス幅に関係なくデータバスのバイト位置に常に1 対 1 に対応します。 下記にバスモード別に設定されたデータバス幅で使用されるデータバスのバイト位 置とそれに対応する制御信号をまとめます。 ■ 通常バスインタフェース 図 4.4-1 に , 通常バスインタフェースの制御信号を示します。 図 4.4-1 通常バスインタフェースの制御信号 a)16ビットバス幅 データバス 制御記号 b)8ビットバス幅 データバス WR0 (UUB) 制御記号 WR0 (UUB) WR1 (ULB) - - - - - - - - - - (D15~D0は未使用) (D23~D0は未使用) ■ 時分割入出力インタフェース 図 4.4-2 に , 時分割入出力インタフェースの制御信号を示します。 図 4.4-2 時分割入出力インタフェースの制御信号 a)16ビットバス幅 b)8ビットバス幅 データバス 出力アドレス 制御記号 D31 D16 A15~A8 WR0 A7~A0 WR1 データバス 出力アドレス 制御記号 A7~A0 WR0 - - - - - - - - - - - - - - - (D15~D0は未使用) (D23~D0は未使用) 171 第 4 章 外部バスインタフェース ■ SDRAM(FCRAM) インタフェース 図 4.4-3 に , SDRAM(FCRAM) インタフェースの制御信号を示します。 図 4.4-3 SDRAM(FCRAM) インタフェースの制御信号 a)16ビットバス幅 データバス 制御記号 b)8ビットバス幅 データバス DQMUU DQMUU DQMUL - - - - - - - - - - (D15~D0は未使用) 172 制御記号 (D23~D0は未使用) 第 4 章 外部バスインタフェース 4.4.2 ビッグエンディアンのバスアクセス FR ファミリは CS0 領域を除いて , チップセレクトごとにビッグエンディアン / リト ルエンディアンを切り換えて使用可能です。ACR レジスタの LEND ビットを "0" に 設定した場合は , その領域はビッグエンディアンとして扱います。 通常 FR ファミリは , ビッグエンディアンで外部バスアクセスを行います。 ■ ビッグエンディアンのデータフォーマット 図 4.4-4 に , ワードアクセス (LD, ST 命令実行時 ) のデータフォーマットによる内部レ ジスタと外部データバスとの関係を示します。 図 4.4-4 ワードアクセス (LD, ST 命令実行時 ) 内部レジスタ D31 AA D23 BB D15 CC D7 DD D0 外部バス D31 AA D23 BB D15 CC D7 DD D0 図 4.4-5 に , ハーフワードアクセス (LDUH, STH 命令実行時 ) のデータフォーマットに よる内部レジスタと外部データバスとの関係を示します。 図 4.4-5 ハーフワードアクセス (LDUH, STH 命令実行時 ) a)出力アドレス下位"00" b)出力アドレス下位"10" 内部レジスタ 外部バス D31 D31 AA D23 D23 BB D15 D15 AA D7 D7 BB D0 D0 内部レジスタ 外部バス D31 D31 D23 D23 D15 D15 AA AA D7 D7 BB D0 BB D0 173 第 4 章 外部バスインタフェース 図 4.4-6 に , バイトアクセス (LDUB, STB 命令実行時 ) のデータフォーマットによる内 部レジスタと外部データバスとの関係を示します。 図 4.4-6 バイトアクセス (LDUB, STB 命令実行時 ) a)出力アドレス下位"00" b)出力アドレス下位"01" c)出力アドレス下位"10" d)出力アドレス下位"11" 内部レジスタ 外部バス D31 D31 AA D23 D23 内部レジスタ 外部バス D31 D31 内部レジスタ 外部バス D31 D31 内部レジスタ 外部バス D31 D31 D23 D23 D23 D23 D23 D23 D15 D15 D15 D15 D15 D7 D7 AA D15 D15 D15 AA D7 D7 D7 AA D7 D7 AA D0 AA D0 D0 D0 D0 D7 AA D0 D0 ■ ビッグエンディアンのデータバス幅 図 4.4-7 に , 16 ビットバス幅のデータバス幅を示します。 図 4.4-7 16 ビットバス幅のデータバス幅 内部レジスタ 外部バス 出力アドレス下位 “00”“10” D31 D23 D15 D7 AA リード/ライト BB AA CC BB DD D31 D23 CC DD 図 4.4-8 に , 8 ビットバス幅のデータバス幅を示します。 図 4.4-8 8 ビットバス幅のデータバス幅 内部レジスタ 外部バス 出力アドレス下位 D31 D23 D15 D7 174 AA BB CC DD リード/ライト “00” “01” “10” “11” AA BB CC DD D31 AA D0 第 4 章 外部バスインタフェース ■ 外部バスアクセス 16 ビット /8 ビットバス幅のそれぞれにおけるワード / ハーフワード / バイトアクセス 時のアクセス位置 , プログラムアドレスと出力アドレス , バスアクセス回数をまとめま す。 PA1/PA0 : プログラムで指定したアドレス下位 2 ビット 出力 A1/A0 : 出力するアドレスの下位 2 ビット : 出力するアドレスの先頭バイト位置 : アクセスするデータバイト位置 : バスアクセス回数 + ①∼④ 参考 : FR ファミリは , ミスアラインエラーを検出しません。 したがって,ワードアクセスの場合には , プログラムで指定したアドレス下位 2 ビットが "00B", "01B", "10B", "11B" であっても , 出力するアドレスの下位 2 ビットはすべて "00B" となり , ハーフ ワードアクセスの場合 , "00B", "01B" のときには "00B" に , "00B", "01B" のときには "10B" になります。 ● 16 ビットバス幅 図 4.4-9 に , 16 ビットバス幅の各アクセスを示します。 図 4.4-9 16 ビットバス幅の各アクセス (A) ワードアクセス (c)PA1/PA0=“10” (d)PA1/PA0=“11” (a)PA1/PA0=“00” (b)PA1/PA0=“01” →①出力A1/A0=“00” →①出力A1/A0=“00” →①出力A1/A0=“00” →①出力A1/A0=“00” ②出力A1/A0=“10” ②出力A1/A0=“10” ②出力A1/A0=“10” ②出力A1/A0=“10” MSB LSB ① 00 01 ① 00 01 ① 00 01 ① 00 01 ② 10 11 ② 10 11 ② 10 11 ② 10 11 16ビット (B) ハーフワードアクセス (c)PA1/PA0=“10” (d)PA1/PA0=“11” (a) PA1/PA0=“00” (b) PA1/PA0=“01” →①出力A1/A0=“00” →①出力A1/A0=“00” →①出力A1/A0=“10” →①出力A1/A0=“10” ① 00 01 10 11 ① 00 01 10 11 ① 00 01 10 11 ① 00 01 10 11 (C) バイトアクセス (c)PA1/PA0=“10” (d)PA1/PA0=“11” (a)PA1/PA0=“00” (b)PA1/PA0=“01” →①出力A1/A0=“11” →①出力A1/A0=“00” →①出力A1/A0=“01” →①出力A1/A0=“10” ① 00 01 10 11 ① 00 01 10 11 ① 00 01 10 11 ① 00 01 10 11 175 第 4 章 外部バスインタフェース ● 8 ビットバス幅 図 4.4-10 に , 8 ビットバス幅の各アクセスを示します。 図 4.4-10 8 ビットバス幅の各アクセス (A) ワードアクセス (c)PA1/PA0=“10” (d)PA1/PA0=“11” (a)PA1/PA0=“00” (b) PA1/PA0=“01” →①出力A1/A0=“00” →①出力A1/A0=“00” →①出力A1/A0=“00” →①出力A1/A0=“00” ②出力A1/A0=“01” ②出力A1/A0=“01” ②出力A1/A0=“01” ②出力A1/A0=“01” ③出力A1/A0=“10” ③出力A1/A0=“10” ③出力A1/A0=“10” ③出力A1/A0=“10” ④出力A1/A0=“11” ④出力A1/A0=“11” ④出力A1/A0=“11” ④出力A1/A0=“11” MSB LSB ① 00 ① 00 ① 00 ① 00 ② 01 ② 01 ② 01 ② 01 ③ 10 ③ 10 ③ 10 ③ 10 ④ 11 ④ 11 ④ 11 ④ 11 8ビット (B) ハーフワードアクセス (c)PA1/PA0=“10” (d)PA1/PA0=“11” (a)PA1/PA0=“00” (b)PA1/PA0=“01” →①出力A1/A0=“10” →①出力A1/A0=“00” →①出力A1/A0=“00” →①出力A1/A0=“10” ②出力A1/A0=“11” ②出力A1/A0=“11” ②出力A1/A0=“01” ②出力A1/A0=“01” ① 00 ② 01 ① 00 00 00 ② 01 01 01 10 10 ① 10 ① 10 11 11 ② 11 ② 11 (C) バイトアクセス (c)PA1/PA0=“10” (d)PA1/PA0=“11” (a)PA1/PA0=“00” (b)PA1/PA0=“01” →①出力A1/A0=“10” →①出力A1/A0=“11” →①出力A1/A0=“00” →①出力A1/A0=“01” ① 00 01 176 00 00 00 01 01 01 10 10 10 10 11 11 ① ① 11 ① 11 第 4 章 外部バスインタフェース ■ 外部との接続例 図 4.4-11 に MB91305 と外部装置との接続の例を示します。 図 4.4-11 外部装置との接続 MB91305 D24 D16 WR0 ~ ~ D23 D31 0 D15 *:16ビット/8ビットデバイスの場合は, 本LSIのMSB側のデータバスを使用します。 WR1 1 D8 D7 0 D0 * 16ビットデバイス D7 D0 8ビットデバイス* ("0"/"1"アドレス下位1ビット) 177 第 4 章 外部バスインタフェース 4.4.3 リトルエンディアンのバスアクセス FR ファミリは CS0 領域を除いて , チップセレクトごとにビッグエンディアン / リト ルエンディアンを切り換えて使用可能です。ACR レジスタの LEND ビットを "1" に 設定した場合は , その領域はリトルエンディアンとして扱います。 ■ リトルエンディアンの概要 FR ファミリのリトルエンディアンバスアクセスは , ビッグエンディアン時のバスアク セス動作を利用し , 基本的にはビッグエンディアン時の出力アドレスの順番と制御信 号の出力は同じで , データバスのバイト位置をバス幅に応じてスワップすることによ り実現しています。 接続時には , ビッグエンディアン領域とリトルエンディアン領域を物理的に分ける必 要がありますので , 十分注意が必要です。 • 出力するアドレスの順番はビッグエンディアン / リトルエンディアンで変わりませ ん。 • ワードアクセス : ビッグエンディアンのアドレス A1, A0=00 に対応する MSB 側のバイトデータが , リ トルエンディアンでは LSB 側のバイトデータになります。 ワードアクセスの場合は , ワード内の 4 バイトすべてのバイト位置が反転します。 • ハーフワードアクセス : ビッグエンディアンのアドレス A0 に対応する MSB 側のバイトデータが , リトルエ ンディアンでは LSB 側のバイトデータになります。 ハーフワードアクセスの場合は , ハーフワード内の 2 バイトのバイト位置が反転し ます。 • バイトアクセス : ビッグエンディアン / リトルエンディアンとも同じです。 • 16/8 ビットバス幅で使用するデータバス / 制御信号は , ビッグエンディアン / リトル エンディアン で変わりません。 〔リトルエンディアン領域に対する制限事項〕 • リトルエンディアン領域に対してプリフェッチを許可している場合は , その領域に 対するアクセスは必ずワードアクセスにて行ってください。プリフェッチバッファ に読み出されたデータをワード長以外でアクセスすると , 正しくエンディアン変換 が行われず , 誤ったデータを読み出してしまいます。これは , エンディアン変換機 構のハードウェア的な制限によるものです。 • リトルエンディアン領域には , 命令コードを配置しないでください。 178 第 4 章 外部バスインタフェース ■ リトルエンディアンのデータフォーマット 図 4.4-12 に , ワードアクセス時 (LD, ST 命令実行時 ) のデータフォーマットによる内部 レジスタと外部データバスとの関係を示します。 図 4.4-12 ワードアクセス時 (LD, ST 命令実行時 ) 内部レジスタ 外部バス D31 D31 AA DD D23 D23 BB CC D15 D15 CC BB D7 D7 DD AA D0 D0 図 4.4-13 に , ハーフワードアクセス時 (LDUH, STH 命令実行時 ) のデータフォーマット による内部レジスタと外部データバスとの関係を示します。 図 4.4-13 ハーフワードアクセス時 (LDUH, STH 命令実行時 ) a)出力アドレス下位"00" b)出力アドレス下位"10" 内部レジスタ 外部バス D31 D31 BB D23 D23 AA D15 D15 AA D7 D7 BB D0 D0 内部レジスタ 外部バス D31 D31 D23 D23 D15 D15 AA BB BB AA D7 D7 D0 D0 図 4.4-14 に , バイトアクセス時 (LDUB, STB 命令実行時 ) のデータフォーマットによる 内部レジスタと外部データバスとの関係を示します。 図 4.4-14 バイトアクセス時 (LDUB, STB 命令実行時 ) a)出力アドレス下位"00" 内部レジスタ 外部バス D31 D31 AA D23 D23 b)出力アドレス下位"01" c)出力アドレス下位"10" d)出力アドレス下位"11" 内部レジスタ 外部バス D31 D31 内部レジスタ 外部バス D31 D31 内部レジスタ 外部バス D31 D31 D23 D23 D23 D23 D23 D23 D15 D15 D15 D15 D15 D7 D7 AA D15 D15 D15 AA D7 D7 D7 AA D0 D7 D7 AA D0 D0 AA D0 D0 D7 AA D0 D0 AA D0 179 第 4 章 外部バスインタフェース ■ リトルエンディアンのデータバス幅 図 4.4-15 に , 16 ビットバス幅のデータバス幅を示します。 図 4.4-15 16 ビットバス幅のデータバス幅 内部レジスタ 外部バス 出力アドレス下位 “00”“10” D31 D23 D15 D7 AA リード/ライト BB DD BB CC AA D31 D23 CC DD 図 4.4-16 に , 8 ビットバス幅のデータバス幅を示します。 図 4.4-16 8 ビットバス幅のデータバス幅 内部レジスタ 外部バス 出力アドレス下位 D31 D23 D15 D7 180 AA BB CC DD リード/ライト “00” “01” “10” “11” DD CC BB AA D31 第 4 章 外部バスインタフェース ■ 外部との接続例 図 4.4-17 に , MB91305 とエンディアンの接続を示します。 図 4.4-17 MB91305 とエンディアンの接続 ● 16 ビットバス幅 MB91305 ~ ~ D31 D24 D23 WR0 D16 0 D15 WR1 D8 D7 0 1 1 D0 D15 ビッグエンディアン領域 D8 D7 D0 リトルエンディアン領域 ● 8 ビットバス幅 MB91305 ~ D31 D24 D7 WR0 D0 ビッグエンディアン領域 D7 D0 リトルエンディアン領域 181 第 4 章 外部バスインタフェース 4.4.4 外部アクセス エンディアンモードおよびバス幅による内部レジスタと外部データバスとの関係に ついて説明します。 ■ ワードアクセス ワードアクセスの場合は以下のとおりです。 図 4.4-18 ワードアクセス ビッグエンディアンモード 16 ビット バス幅 内部レジスタ 外部端子 D31 制御端子 リトルエンディアンモード 内部レジスタ WR0 AA DD BB BB WR1 BB CC AA BB DD D31 CC - - - DD - - - D0 D31 D31 外部端子 CC - - - DD - - - D0 WR0 - - - - - - DD - - - - - 外部端子 制御端子 アドレス:“0” “1” “2” “3” D31 AA DD CC BB AA D24 BB - - - - ③ ④ WR0 - CC - - - - - DD - - - - - D0 ① ② 182 内部レジスタ D31 CC D0 WR1 ① ② 制御端子 アドレス:“0” “1” “2” “3” D31 AA AA BB CC DD D24 - - - - BB WR0 D16 ① ② 内部レジスタ 制御端子 アドレス:“0”“2” アドレス:“0” “2” D31 AA AA CC D16 8 ビット バス幅 外部端子 ① ② ③ ④ 第 4 章 外部バスインタフェース ■ ハーフワードアクセス ハーフワードアクセスの場合は以下のとおりです。 表 4.4-1 ハーフワードアクセス ビッグエンディアンモード 16 ビット バス幅 内部レジスタ 外部端子 D31 アドレス:“0” D31 AA 制御端子 リトルエンディアンモード 内部レジスタ 外部端子 D31 WR0 BB アドレス:“0” D31 BB WR1 AA - - BB - - AA - - BB - - D0 ① ① 内部レジスタ 外部端子 アドレス:“2” D31 CC 制御端子 内部レジスタ D31 WR0 DD 外部端子 アドレス:“2” D31 DD WR1 CC - - DD - - CC - - DD - - D0 ① ① 内部レジスタ 外部端子 制御端子 アドレス:“0”“1” D31 AA BB D24 - - AA - - BB - - D0 内部レジスタ 外部端子 WR0 - - AA - - - BB - - WR0 - D0 ① ② 内部レジスタ 外部端子 制御端子 アドレス:“2”“3” D31 CC DD CC - - DD - - D24 ① ② 内部レジスタ 外部端子 制御端子 WR0 - アドレス:“2”“3” D31 DD CC D24 - - - CC - - - DD - - D31 WR0 - D0 D0 - - D0 D0 - - 制御端子 アドレス:“0”“1” D31 BB AA D24 - - D31 ① ② D31 WR1 D16 D0 D31 制御端子 WR0 CC D16 8 ビット バス幅 WR1 D16 D0 D31 WR0 AA D16 制御端子 D0 - - D0 ① ② 183 第 4 章 外部バスインタフェース ■ バイトアクセス バイトアクセスの場合は以下のとおりです。 表 4.4-2 バイトアクセス (1 / 2) ビッグエンディアンモード 16 ビット バス幅 内部レジスタ 外部端子 D31 アドレス:“0” D31 AA 制御端子 リトルエンディアンモード 内部レジスタ 外部端子 D31 WR0 アドレス:“0” D31 AA D16 - - - - D0 AA - - - - D0 ① ① 内部レジスタ 外部端子 D31 制御端子 アドレス:“1” D31 内部レジスタ 外部端子 D31 BB - WR1 BB D16 - - - D0 BB D0 ① D31 アドレス:“2” D31 CC WR1 D16 - 内部レジスタ 外部端子 制御端子 - - - - ① 内部レジスタ 外部端子 D31 WR0 アドレス:“2” D31 CC - - - - - CC - - - - D0 ① ① 内部レジスタ 外部端子 制御端子 アドレス:“3” D31 内部レジスタ 外部端子 D31 DD - WR1 DD D16 DD - - - DD D0 ① WR1 D16 - D0 制御端子 アドレス:“3” D31 - 184 WR0 D16 D0 D31 制御端子 - D16 CC 制御端子 アドレス:“1” D31 - BB WR0 - - D16 AA 制御端子 - - - - ① 第 4 章 外部バスインタフェース 表 4.4-2 バイトアクセス (2 / 2) ビッグエンディアンモード 8 ビット バス幅 内部レジスタ 外部端子 制御端子 リトルエンディアンモード 内部レジスタ 外部端子 アドレス:“0” D31 アドレス:“0” D31 AA D31 D31 WR0 AA WR0 D24 AA D24 - - - - - - - - - - - - D0 AA D0 ① 内部レジスタ 外部端子 D31 アドレス:“1” D31 BB D24 - BB ① 制御端子 内部レジスタ 外部端子 D31 WR0 BB WR0 D24 - - - - - - - - - - - BB D0 ① 内部レジスタ 外部端子 アドレス:“2” D31 CC D24 - CC ① 制御端子 内部レジスタ 外部端子 制御端子 アドレス:“2” D31 D31 WR0 CC WR0 D24 - - - - - - - - - - - D0 CC D0 ① 内部レジスタ 外部端子 D31 制御端子 アドレス:“1” D31 D0 D31 制御端子 アドレス:“3” D31 DD D24 - DD ① 制御端子 内部レジスタ 外部端子 制御端子 アドレス:“3” D31 D31 WR0 DD WR0 D24 - - - - - - - - - - - D0 DD D0 ① ① 185 第 4 章 外部バスインタフェース 4.5 通常バスインタフェース 通常バスインタフェースでは , リードアクセス / ライトアクセスともに 2 クロックサ イクルが基本バスサイクルになります。 ■ 基本タイミング ( アクセスが連続する場合 )(TYP3 ∼ TYP0= 0000B, AWR=0008H) 図 4.5-1 に , アクセスが連続する場合の基本タイミングを示します。 図 4.5-1 アクセスが連続する場合の基本タイミング MCLK A23~A0 #2 #1 AS CSn RD リード D31~D16 #1 #2 WRn ライト D31~D16 #1 #2 • AS は , バスアクセス開始サイクルに 1 サイクルアサートします。 • A23 ∼ A0 は , ワード / ハーフワード / バイトアクセスの先頭バイト位置のアドレス をバスアクセス開始サイクルからバスアクセス終了サイクルまで出力します。 • CS0 ∼ CS7 は , AWR0 ∼ AWR7 レジスタの W02 ビットが "0" のときは AS と同じタ イミングでアサートし , 連続するアクセスがある場合には CS0 ∼ CS7 はネゲートし ません。AWR レジスタの W00 ビットが "0" の場合はバスサイクル終了後に CS0 ∼ CS7 をネゲートし , W00 ビットが "1" の場合はバスアクセス終了の 1 サイクル後にネ ゲートします。 186 第 4 章 外部バスインタフェース • RD, WR0, WR1 は , バスアクセス第二サイクルからアサートします。AWR レジスタ W15 ∼ W12 ビットのウェイトサイクルを挿入した後ネゲートします。RD, WR0, WR1 をアサートするタイミングは AWR レジスタの W01 ビットを "1" に設定することに より 1 サイクル遅らせることができます。 • TYP3∼TYP0=0x0xB のようにWR0, WR1を使用する設定の場合WRは"H"固定です。 • リードアクセスの場合, RDアサート後ウェイトサイクルが終了したサイクルのMCLK の立上りで D31 ∼ D16 を取り込みます。 • ライトアクセスの場合 , WR0, WR1 をアサートしたタイミングから D31 ∼ D16 に データを出力します。 ■ WR+ バイトコントロールタイプ (TYP3 ∼ TYP0= 0010B, AWR=0008H) 図 4.5-2 に , WR+ バイトコントロールタイプのタイミングを示します。 図 4.5-2 WR+ バイトコントロールタイプのタイミング MCLK A23~A0 AS CSn RD WR0 リード WR1 D31~D16 WR ライト WR0 WR1 D31~D16 • AS, CSn, RD, A23 ∼ A0, D31 ∼ D0 は ,「■ 基本タイミング ( アクセスが連続する場 合 )(TYP3 ∼ TYP0= 0000B, AWR=0008H)」と同様の動作を行います。 • WR は , バスアクセス第二サイクルからアサートします。AWR レジスタ W15 ∼ W12 187 第 4 章 外部バスインタフェース ビットのウェイトサイクルを挿入した後ネゲートします。RD, WR0, WR1 をアサー トするタイミングは AWR レジスタ W01 ビットを "1" に設定することにより 1 サイ クル遅らせることができます (「■ 基本タイミング ( アクセスが連続する場合 ) (TYP3 ∼ TYP0= 0000B, AWR=0008H)」の WR0, WR1 と同様の動作を行います )。 • WR0, WR1 は , バイトイネーブル信号としてアクセスするバイト位置を負論理で示 します。バスアクセス開始サイクルからバスサイクル終了までアサートします。ア ドレスと同じタイミングで変化します。リード / ライトアクセスともにアクセスす るバイト位置を示します。 • TYP3 ∼ TYP0=0X0XB(WR0, WR1 使用 ), TYP3 ∼ TYP0=0X1XB(WR+ バイトコント ロール ) の領域を混在させる場合には , 使用するすべての領域にて , 必ず以下の設定 を行ってください ( 詳細は注意事項を参照 )。 - リード→ライトアイドルサイクルを最低 1 サイクル以上設定してください。 - ライトリカバリサイクルを最低 1 サイクル以上設定してください。 ■ リード→ライトタイミング (TYP3 ∼ TYP0=0000B, AWR=0048H) 図 4.5-3 に , リード→ライトタイミングを示します。 図 4.5-3 リード→ライトタイミング リード アイドル ライト MCLK A23~A0 AS CSn RD WRn D31~D16 • AWR レジスタの W07, W06 ビットの設定により , 0 ∼ 3 サイクルまでのアイドルサ イクル挿入が可能です。 • リード側の CS 領域の設定が有効になります。 • リードアクセスの次のアクセスがライトアクセス , または別の領域へのアクセスで ある場合 , このアイドルサイクルを挿入します。 188 第 4 章 外部バスインタフェース ■ ライト→ライトタイミング (TYP3 ∼ TYP0=0000B, AWR=0018H) 図 4.5-4 に , ライト→ライトタイミングを示します。 図 4.5-4 ライト→ライトタイミング ライト ライト リカバリ ライト MCLK A23~A0 AS CSn WRn D31~D16 • AWR レジスタの W05, W04 ビットの設定により , 0 ∼ 3 サイクルまでのライトリカ バリサイクルを挿入可能です。 • すべてのライトサイクル後に , リカバリサイクルが発生します。 • 設定したバス幅以上のアクセスによってライトアクセスが分割された場合もライ トリカバリサイクルは発生します。 189 第 4 章 外部バスインタフェース ■ 自動ウェイトタイミング (TYP3 ∼ TYP0=0000B, AWR=2008H) 図 4.5-5 に , 自動ウェイトタイミングを示します。 図 4.5-5 自動ウェイトタイミング 基本サイクル ウェイトサイクル MCLK A23~A0 AS CSn RD リード D31~D16 WRn ライト D31~D16 • AWR レジスタの W15 ∼ W12 ビット ( ファーストウェイトサイクル ) の設定により 自動ウェイトサイクルを , 0 ∼ 15 まで設定可能です。 • 上図では , 自動ウェイトサイクルを 2 サイクル挿入し合計 4 サイクルのアクセスと なっています。自動ウェイトを設定した場合 , バスサイクルは最小で 2 サイクル + ( ファーストウェイトサイクル ) となります。ライトの場合は内部状態によりさらに 長くなることがあります。 190 第 4 章 外部バスインタフェース ■ 外部ウェイトタイミング (TYP3 ∼ TYP0=0001B, AWR=2008H) 図 4.5-6 に , 外部ウェイトタイミングを示します。 図 4.5-6 外部ウェイトタイミング 基本サイクル 自動ウェイト 2サイクル RDYによる ウェイト サイクル MCLK A23~A0 AS CSn RD リード D31~D16 WRn ライト D31~D16 RDY 解除 ウェイト ACR レジスタ TYP0 ビットを "1" に設定し , 外部 RDY 入力端子を有効にすることによ り外部ウェイトサイクルを挿入可能です。図 4.5-6 において , 自動ウェイトサイクルに よるウェイトが有効であるため , RDY 端子の斜線部分は無効になります。自動ウェイ トサイクルの最後のサイクル以降から , RDY 入力端子の値を判定します。また , いっ たんウェイトサイクルを終了した後は , 次のアクセスサイクルの開始まで , RDY 入力 端子の値は無効になります。 191 第 4 章 外部バスインタフェース ■ 同期ライトイネーブル出力タイミング (TYP3 ∼ TYP0=0000B, AWR=0000H) 図 4.5-7 に , 同期ライトイネーブル出力タイミングを示します。 図 4.5-7 同期ライトイネーブル出力タイミング MCLK A23~A0 #2 #1 AS CSn RD リード D31~D16 #1 #2 WRn ライト D31~D16 #1 #2 同期ライトイネーブルとした場合 (AWR:W03 ビットが 1) , 以下のような動作となりま す。 • WR0, WR1, WR 端子出力は , AS 端子出力がアサートされているタイミングで , 同期 ライトイネーブル出力をアサートします。外部バスへのライトが行われる場合 , 同 期ライトイネーブル出力は "L" を出力します。外部バスからのリードが行われる場 合 , 同期ライトイネーブル出力は "H" を出力します。 • 同期ライトイネーブル出力をアサートした次のクロックサイクルにて , 外部データ 出力端子よりライトデータを出力します。 • リードストローブ出力 (RD) は, WR0, WR1, WR出力タイミング設定の内容にかかわ らず , 非同期リードストローブとして機能します。データの入出力制御にそのまま 用いてください。 同期ライトイネーブル出力を使用する場合 , 以下の制限があります。 192 第 4 章 外部バスインタフェース - 同期ライトイネーブル出力のタイミングが無意味なものとなりますので , 以下の 追加ウェイト設定はしないでください。 ・CS → RD/WR セットアップ設定 (AWR:W01 ビットは常に "0" を書いてください ) ・ファーストウェイトサイクル設定 (AWR:W15 ∼ W12 ビットは常に "0000B" を 書いてください ) - 同期ライトイネーブル出力のタイミングが無意味なものとなりますので , 以下の アクセスタイプ設定 (ACR レジスタ中の TYP3 ∼ TYP0 ビット (bit 3 ∼ bit 0) は 設定しないでください。 ・マルチプレックスバス設定 (ACR:TYP2 ビットは常に "0" を書いてください ) ・RDY 入力有効設定 (ACR:TYP0 ビットは常に "0" を書いてください ) - 同期ライトイネーブル出力の場合 , バースト長は常に "1" (BST1, BST0 ビットに "0") を設定してください。 ■ CSn 遅延設定 (TYP3 ∼ TYP0=0000B, AWR=000CH) 図 4.5-8 に , CSn 遅延設定を示します。 図 4.5-8 CSn 遅延設定 MCLK A23~A0 AS CSn RD リード D31~D16 WRn ライト D31~D16 W02 ビットが "1" のときは AS アサートの次のサイクルからアサートし , 連続するアク セスがある場合ネゲート期間を挿入します。 193 第 4 章 外部バスインタフェース ■ CSn → RD/WR セットアップ・RD/WR → CSn ホールド設定 (TYP3 ∼ TYP0=0000B, AWR=000BH) 図 4.5-9 に , CSn → RD/WR セットアップ・RD/WR → CSn ホールド設定を示します。 図 4.5-9 CSn → RD/WR セットアップ・RD/WR → CSn ホールド設定 MCLK A23~A0 AS CSn CSn->RD/WR 遅延 RD/WR->CSn 遅延 RD リード D31~D16 WRn ライト D31~D16 • AWR レジスタの W01 ビットを "1" に設定することにより , CSn → RD/WR セット アップディレイを設定可能です。チップセレクトアサート後 , リード / ライトスト ローブまでの期間を延長する場合に設定します。 • AWR レジスタの W00 ビットを "1" に設定することにより , RD/WR → CSn ホールド ディレイを設定可能です。リード / ライトストローブネゲート後 , チップセレクト ネゲートまでの期間を延長する場合に設定します。 • CSn → RD/WR セットアップディレイ (W01 ビット ) と RD/WR → CSn ホールドディ レイ (W00 ビット ) は独立に設定可能です。 • 同一チップセレクト領域内で , チップセレクトをネゲートしないまま連続してアク セスする場合は , CSn → RD/WR セットアップディレイ , RD/WR → CSn ホールド ディレイともに挿入されません。 • アドレス確定からのセットアップサイクルおよびアドレス確定のホールドサイク ルが必要な場合は , アドレス→ CSn 遅延設定 (AWR レジスタの W02 ビット ) を "1" に設定してください。 194 第 4 章 外部バスインタフェース ■ DMA フライバイ転送 (I/O →メモリ )(TYP3 ∼ TYP0=0000B, AWR=0008H, IOWR=51H) 図 4.5-10 に , DMA フライバイ転送 (I/O →メモリ ) を示します。 • メモリ側のウェイト設定なしの場合 図 4.5-10 DMA フライバイ転送 (I/O →メモリ ) 基本サイクル I/Oウェイト I/Oホールド I/Oアイドル サイクル ウェイト サイクル 基本サイクル I/Oウェイト I/Oホールド サイクル ウェイト MCLK A23~A0 AS CSn WRn D31~D16 IORD • IOWR0 ∼ IOWR2 レジスタの HLD ビットを "1" に設定することにより , I/O リード サイクルを 1 サイクル延長します。 • IOWR0 ∼ IOWR2 レジスタの IW3 ∼ IW0 ビットの設定により , 0 ∼ 15 サイクルま でのウェイトサイクルを挿入可能です。 • メモリ側にもウェイトの設定がある場合 (W15 ∼ W12 が "0" でないとき ) は , I/O ウェイト (IW3 ∼ IW0 ビット ) と比較して大きいほうの値をウェイトサイクルとし て使用します。 195 第 4 章 外部バスインタフェース ■ DMA フライバイ転送 ( メモリ→ I/O)(TYP3 ∼ TYP0=0000B, AWR=0008H, IOWR=51H) 図 4.5-11 に , DMA フライバイ転送 ( メモリ→ I/O) を示します。 • メモリ側のウェイト設定なしの場合 図 4.5-11 DMA フライバイ転送 ( メモリ→ I/O) 基本サイクル I/Oウェイト I/Oホールド I/Oアイドル サイクル ウェイト サイクル 基本サイクル I/Oウェイト I/Oホールド サイクル ウェイト MCLK A23~A0 AS CSn RD D31~D16 IOWR • IOWR0 ∼ IOWR2 レジスタの HLD ビットを "1" に設定することにより , I/O リード サイクルを 1 サイクル延長します。 • IOWR0 ∼ IOWR2 レジスタの WR1, WR0 ビットの設定により , 0 ∼ 3 サイクルまで のライトリカバリサイクルを挿入可能です。 • ライトリカバリサイクルを "1" 以上に設定した場合は , ライトアクセスの後には必 ずライトリカバリサイクルを挿入します。 • IOWR0 ∼ IOWR2 レジスタの IW3 ∼ IW0 ビットの設定により , 0 ∼ 15 サイクルま でのウェイトサイクルを挿入可能です。 • メモリ側にもウェイトの設定がある場合 (W15 ∼ W12 が "0" でないとき ) は , I/O ウェイト (IW3 ∼ IW0 ビット ) と比較して大きいほうの値をウェイトサイクルとし て使用します。 196 第 4 章 外部バスインタフェース バーストアクセス (first wait cycle:1,page wait cycle:1) (TYP3 ∼ TYP0=0000B,AWR=3208H) 4.6 バーストアクセスについて説明します。 ■ バーストアクセス (first wait cycle:1,page wait cycle:1) (TYP3 ∼ TYP0=0000B, AWR= 3208H) 図 4.6-1 に , バーストアクセス (first wait cycle:1,page wait cycle:1) (TYP3 ∼ TYP0=0000B, AWR= 3208H) を示します。 図 4.6-1 バーストアクセス (first wait cycle:1,page wait cycle:1) (TYP3 ∼ TYP0=0000B, AWR= 3208H) ファーストサイクル ウェイト インページアクセス ウェイト インページアクセス ウェイト インページアクセス ウェイト MCLK A23~A0 AS(LBA) CSn RD WRn WR WRn BAA D31~D16 • 外部バスインタフェースにおいては , 一回のアクセスシーケンスで複数のデータを 連続して転送する動作をバーストアクセスとよびます。バーストアクセス以外の通 常のアクセスサイクルをシングルアクセスとよびます。ここでいう 1 回のアクセス シーケンスとは , AS および CS のアサートから始まり , CSn がネゲートされるまで を示します。複数のデータとは , その領域に設定されたバス幅単位で 2 単位以上の データを示します。 • バーストサイクルは, ページモードROMなどの非同期メモリやバーストフラッシュ メモリなど , まとまったデータを読む際のアクセスサイクルの効率化や , 通常の非同 期メモリからの読出しにも使用できます。 197 第 4 章 外部バスインタフェース • バーストサイクル時のアクセスシーケンスは, 以下の2種類のサイクルに分かれます。 - ファーストアクセスサイクル バーストアクセスの開始サイクルで , 通常のシングルアクセスサイクルと同じ動 作を行います。 - ページアクセスサイクル ファーストアクセスサイクルに引き続き , CSn や RD ( リードストローブ ) をア サートしたまま行うサイクルです。シングルサイクル時とは異なるウェイトサイ クルを設定することができます。バースト長設定から決定されるアドレスバウン ダリ内にある間 , ページアクセスサイクルは繰り返し行われます。アドレスバウ ンダリ内のアクセスが終了するとバーストアクセスは終了となり , CSn がネゲー トされます。 • AWR レジスタの W15 ∼ W12 ビットの設定により , 0 ∼ 15 サイクルの第一ウェイト サイクルを挿入可能です。このとき , ファーストアクセスサイクルは最小でウェイ トサイクル +2 サイクルとなります ( 図 4.6-1 では 3 サイクル )。 • AWR レジスタの W11 ∼ W08 ビットの設定により , 0 ∼ 15 サイクルのページウェイ トサイクルを挿入可能です。このとき , ページアクセスサイクルはページウェイト サイクル +1 サイクルとなります ( 図 4.6-1 では 2 サイクル )。 • ACR レジスタの BST ビットの設定により , バースト長を 1, 2, 4, 8 に設定可能です。 バースト長を "1" に設定するとシングルアクセスとなり , 第一サイクルのみが繰 り返されます。 • バーストアクセスを有効にした場合 , プリフェッチアクセスまたは設定したデータ バス幅よりも大きなサイズで転送を行うときにバーストアクセスを行います。例え ば , データバス幅を 8 ビット , バースト長を "4" に設定した領域にワードアクセスを 行った場合 , バイトアクセスを 4 回ではなく , 4 バースト 1 回のアクセスを行います。 • バースト設定を行った領域では, RDY入力は無視されますのでTYP3∼TYP0=0XX1B に設定しないでください。 • LBA, BAA 信号はバーストフラッシュメモリ用です。LBA でアクセスの開始を示し BAA でアドレスのインクリメントを指示します。 • バーストアクセス中 , 設定したウェイト後に A23 ∼ A0 の更新を行います。 • 本チップは 32 ビットバス幅は未サポートです。 198 第 4 章 外部バスインタフェース アドレス / データマルチプレックスインタフェース 4.7 アドレス / データマルチプレックスインタフェースの設定について説明します。 ■ 外部ウェイトなし (TYP3 ∼ TYP0=0100B, AWR=0008H) 図 4.7-1 に , 外部ウェイトがない場合のアドレス / データマルチプレックスインタ フェース設定を示します。 図 4.7-1 外部ウェイトがない場合のアドレス / データマルチプレックスインタフェース設定 MCLK アドレス31~0 A23~A0 AS CSn RD リード D31~D16 データ 15~0 アドレス15~0 WR ライト D31~D16 アドレス15~0 データ15~0 • ACR レジスタの TYP3 ∼ TYP0=01XXB と設定することによりアドレス / データマル チプレックスインタフェース設定が可能です。 • アドレス / データマルチプレックスインタフェースに設定した場合 , データバス幅 (DBW1, DBW0 ビット ) の設定は 8 ビットもしくは 16 ビットに設定してください。 32 ビット幅はサポートしていません。 • アドレス / データマルチプレックスインタフェースでは , アドレス出力サイクル 2 サ イクル + データサイクル 1 サイクルの計 3 サイクルが基本アクセスサイクルとなり ます。 199 第 4 章 外部バスインタフェース • アドレス出力サイクルでは, 出力アドレスラッチイネーブル信号としてASをアサー トしますが , CSn → RD/WR セットアップ遅延 (AWR1) が "0" に設定してある場合 , 上図のようにマルチプレックスアドレス出力サイクルが 1 サイクルのみとなり , ア ドレスを AS の立上りエッジで直接ラッチすることは不可能となります。このため , ASに"L"がアサートされているサイクルのMCLKの立上りエッジでアドレスを取り 込んでください。 • A23 ∼ A0 には , 時分割バスサイクル中 , 通常インタフェースと同様にアクセスの先 頭を示すアドレスを出力しますので , アドレス / データマルチプレックスインタ フェースで 8/16 ビット以上のアドレスを使用したい場合に使用してください。 • 自動ウェイト (AWR の W15 ∼ W12), リード→ライトアイドルサイクル (AWR の W07, W06), ライトリカバリ (AWR の W05, W04), アドレス→ CSn 遅延 (AWR の W02), CSn→RD/WRセットアップ遅延(AWRのW01), RD/WR→CSnホールド遅延(AWRの W00) の設定は , 通常インタフェースと同様に設定可能です。 • アドレス / データマルチプレックスインタフェースを設定した領域では , バースト 長を "1"(DBW1, DBW0=00B) に設定してください。 200 第 4 章 外部バスインタフェース ■ 外部ウェイトあり (TYP3 ∼ TYP0=0101B, AWR=1008H) 図 4.7-2 に , 外部ウェイトがある場合のアドレス / データマルチプレックスインタ フェース設定を示します。 図 4.7-2 外部ウェイトがある場合のアドレス / データマルチプレックスインタフェース設定 MCLK アドレス31~0 A23~A0 AS CSn RD リード D31~D16 データ 15~0 アドレス15~0 WR ライト D31~D16 データ15~0 アドレス15~0 外部ウェイト 解除 RDY ACR レジスタ TYP3 ∼ TYP0=01X1B と設定することにより , アドレス / データマルチ プレックスインタフェースにおいて , RDY 入力を有効とすることが可能です。 201 第 4 章 外部バスインタフェース ■ CSn → RD/WR セットアップ設定 (TYP3 ∼ TYP0=0101B, AWR=100BH) 図 4.7-3 に , CSn → RD/WR セットアップ設定を示します。 図 4.7-3 CSn → RD/WR セットアップ設定 MCLK A23~A0 アドレス31~0 AS CSn RD リード D31~D16 アドレス15~0 データ 15~0 WR ライト D31~D16 アドレス15~0 データ15~0 CSn→RD/WRセットアップ遅延(AWR1)を"1"に設定すると, 図 4.7-3 のようにマルチプ レックスアドレス出力サイクルが 1 サイクル延長され , アドレスを AS の立上りエッジ で直接ラッチすることが可能となります。MCLKを使用せずにASをALE (Address Latch Enable) ストローブとして使用する場合にこの設定を使用してください。 202 第 4 章 外部バスインタフェース 4.8 プリフェッチ動作 外部バスインタフェースコントローラは 8 ビット× 16 本で構成されるプリフェッチ バッファを内蔵しています。 TCR レジスタの PSUS ビットが "0" の場合 , ACR レジスタの PFEN ビットをセッ ト ("1") してある領域に対するリードアクセスが発生すると , それ以降続くアドレス に対してプリフェッチを行い , プリフェッチバッファ内に蓄積します。 蓄積されたアドレスに対し内部バスからのアクセスがあると , 外部アクセスを行わ ずにプリフェッチバッファに先読みされたデータを返します。これにより , 外部バ ス領域への連続したアクセスでの待ち時間を少なくすることができます。 ■ プリフェッチによる外部アクセスを開始する基本条件 プリフェッチによる外部バスアクセスは , 以下の条件が揃っている場合に発生します。 • TCR レジスタの PSUS ビットが "0" であること。 • スリープまたはストップモードでないこと。 • プリフェッチ許可されたチップセレクト領域への外部バスリードアクセスが行わ れたこと。ただし , DMA アクセスおよびリードモディファイライト (RMW) 系命令 によるリードアクセスを除きます。 • プリフェッチアクセス以外の外部バスアクセス要求 ( プリフェッチを許可していな い領域への外部バス領域アクセスや , 外部バス領域との DMA 転送など ) が発生して いないこと。 • 次の 1 回のプリフェッチアクセスで取り込む部分のプリフェッチバッファがすべて 空であること。 これらの条件が成立する間 , プリフェッチアクセスを続けます。なお , プリフェッチア クセス後に , プリフェッチを許可していない領域への外部バス領域アクセスが発生し た後でも , プリフェッチバッファクリア条件が発生しない限り , プリフェッチ許可領域 へのプリフェッチアクセスは引き続き行われます。 複数のプリフェッチ許可領域と複数のプリフェッチ禁止領域とを混在させてアクセス を行っている場合 , プリフェッチバッファは常に最後にアクセスされたプリフェッチ 許可領域に対するプリフェッチを行い , そのデータを保持しています。この場合 , プリ フェッチ禁止領域へのアクセスはプリフェッチバッファの状態には一切影響を及ぼさ ないため , プリフェッチ禁止のデータアクセスとプリフェッチ許可の命令フェッチと が混在しても , プリフェッチバッファ内のデータを無駄にすることはありません。 203 第 4 章 外部バスインタフェース ■ プリフェッチアクセスの一時停止と任意クリア TCR レジスタの PSUS ビットに "1" をセットすると , プリフェッチは一時停止します。 PSUS ビットに "0" を設定すると再開します。このときミス発生 , PCLR ビットのセッ トなどのバッファクリアが発生しなければ , バッファ内容は保持されます。 TCR レジスタの PCLR ビットに "1" をセットすると , プリフェッチバッファをすべてク リアします。バッファのクリアは , PSUS ビットをセットし , プリフェッチを中断して いるときに行ってください。 アドレス上位 16 ビットが変化する境界=チップセレクト領域の最小単位 (64K バイト ごと ) では , プリフェッチはいったん停止します。境界を超えた場合 , いったんバッ ファリードミスが発生し , 引き続き新しい領域でプリフェッチを開始します。 SDRAM/FCRAM を接続した領域においては , バンクアドレスをまたぐ場合 , プリ フェッチはいったん停止します。新しいバンクアドレスに対するアクセスが行われた 場合 , いったんバッファリードミスが発生し , 引き続き新しいバンクアドレスでプリ フェッチを開始します。また, SDRAM/FCRAMを接続した領域においては, プリフェッ チを行っている領域に対するライトにてページミスが発生した場合 , およびプリ フェッチを許可していない別の SDRAM/FCRAM 領域へのアクセスが発生した場合な ど , ページアドレスが更新された場合もプリフェッチはいったん停止します。 ■ 1 回のプリフェッチアクセス動作の単位 1 回のプリフェッチアクセスの単位は , ACR レジスタの DBW ビット ( バス幅 ) と BST ビット ( バースト長 ) によって決まります。 プリフェッチアクセスは常に DBW ビットで設定されたバス幅いっぱいのサイズでア クセスし , BST ビットにて設定されたバースト長の回数のアクセスを 1 回のアクセス で行います。すなわち , BST ビットに "00B" 以外を設定した場合 , プリフェッチアクセ スは常にページモード / バーストモードでのアクセスとなります。対応していない ROM/RAM やアクセスタイム不足には注意してください (AWR レジスタの W15 ∼ W08 ビットに適切な値を設定してください )。 バーストアクセス時は , バースト長に依存したアドレスバウンダリ内でしか連続アク セスを行いません。そのため , バッファの空きバイト数が例えば 4 バイトあったとして も , バウンダリをまたいでいる場合 , 4 バイト分を 1 回でアクセスすることはできませ ん ( プリフェッチバッファ先頭が "XXXXXX0EH" で , バッファに 4 バイト空きがあり , バス幅 16 ビットであっても , 2 バーストを設定した場合は , 次のプリフェッチアクセス では "XXXXXX0EH" と "XXXXXX0FH" の 2 バイトしか取り込みません ) 。 〔例〕 • バス幅 16 ビット , バースト長 2 を設定した領域 : 1 回のプリフェッチでバッファに読み出されるデータ量は , 4 バイト分となります。 この場合 , プリフェッチバッファに 4 バイト分の空きができるまでプリフェッチア クセスは行われません。 • バス幅 8 ビット , バースト長 8 を設定した領域 : 1 回のプリフェッチでバッファに読み出されるデータ量は , 8 バイト分となります。 この場合 , プリフェッチバッファに 8 バイト分の空きができるまでプリフェッチア クセスは行われません。 204 第 4 章 外部バスインタフェース ■ バースト長設定とプリフェッチ効率 「■ 1 回のプリフェッチアクセス動作の単位」で説明した 1 回のプリフェッチアクセス が行われている間に , プリフェッチアクセス以外の外部バスアクセス要求や , プリ フェッチバッファへのミスが発生した場合でも , 実行中のプリフェッチバッファのア クセスが終了するまでは , それらのアクセス要求は待たされます。 そのため , バースト長をあまり大きく設定すると , プリフェッチ以外のバスアクセスの 効率や反応が低下します。反面 , バースト長を "1" に設定すると , バースト / ページア クセスメモリを接続している場合でも常にシングルアクセスを行うため , 読出しサイ クルの無駄が多く発生します。また , 1 回のプリフェッチアクセスで読み出されるデー タが多い設定にすると , それだけプリフェッチバッファの空きができないとプリ フェッチアクセスが開始できないため , プリフェッチバッファへのアクセス頻度が少 ないと外部バスがアイドル状態になり易くなります。例えば , バス幅が 16 ビット , バー スト長 8 を設定した場合 , 1 回のプリフェッチでバッファに読み出されるデータ量は , 16 バイト分となるため , プリフェッチバッファがすべて空にならないと , 新たなプリ フェッチアクセスができなくなります。 これらのことを念頭に置いた上で , 使用状況・環境に応じて最適なバースト長設定を調 整してください。一般に , バースト / ページアクセスのできない非同期メモリを接続す る場合は , バースト長は "1" ( シングルアクセス ) を設定するのが最適です。逆に , SDRAM などのバースト / ページアクセスサイクルの短いメモリを接続する場合は , バースト長は "1" ( シングルアクセス ) 以外を設定するのが最適です。こちらの場合は , バス幅に応じて 1 回で 8 バイト ( バッファの半分 ) を読み出す設定をするのが最適です が , 外部アクセスの頻度や外部アクセスクロックの分周比設定などによっても条件は 変わってきます。 ■ プリフェッチバッファからの読出し プリフェッチバッファ内にストアされたデータは , 内部バスからのアクセスでアドレ スが一致したものがあれば読み出され , 外部へのアクセスを行いません。バッファの読 出しは順方向であればアドレスが連続していなくてもヒット可能 ( 最大 16 バイト ) で すので, 短い前方への分岐などでも極力外部バスへの2度読みが発生しないようになっ ています。 内部バスからのアクセスで , 現在プリフェッチアクセス中のアドレスが一致した場合 , プリフェッチアクセスが完了してデータが取り込まれるまでの間は , 内部に対しウェ イトを返します。この場合 , バッファミス扱いにはなりません。 DMA 転送でのリードにて , プリフェッチバッファ内のアドレスが一致した場合は , プ リフェッチバッファ内のデータは使用されず , 外部バスから新たに読出しを行います。 この場合 , バッファミス扱いになりますが , 引き続きプリフェッチを継続せずに , プリ フェッチ許可領域への新たな外部アクセスが発生するまでは , プリフェッチアクセス を行いません。 205 第 4 章 外部バスインタフェース ■ プリフェッチバッファのクリア , 更新 プリフェッチバッファは , 以下の条件のいずれかが成立した場合にすべてクリアされ ます。 • TCR レジスタの PCLR ビットに "1" が書き込まれたとき • バッファリードミス ( 後述 ) が発生したとき • バッファライトヒット ( 後述 ) が発生したとき プリフェッチバッファは , 以下の条件が成立した場合に一部のみクリアされます。 • バッファリードヒットが発生したとき この場合 , ヒットしたアドレス以前のバッファのみクリアされます。 バッファリードミスとは , 以下のものを示します。 • プリフェッチ許可領域へのリードアクセスで , バッファ内のアドレスに一致するも のがない場合 この場合 , 外部バスに対し新たにアクセスを行います。この際のリードデータは , バッファ内にはストアされませんが , 続くアドレスからプリフェッチアクセスを開 始し , バッファにストアしていきます。 • プリフェッチ許可領域へのリードアクセスで , リードモディファイライト (RMW) 系 命令によるリードである場合 この場合 , 外部バスに対し新たにアクセスを行います。この際のリードデータは , バッファ内にはストアされませんし , 続けてプリフェッチアクセスは行いません ( 次にそのアドレスに対しライトが行われるため ) 。 • プリフェッチ許可領域へのリードアクセスで , DMA 転送によるリードである場合 この場合 , 外部バスに対し新たにアクセスを行います。この際のリードデータは , バッファ内にはストアされませんし , 続けてプリフェッチアクセスは行いません。 バッファライトヒットとは , 以下のものを示します。 プリフェッチ許可領域へのライトアクセスで, バッファ内のアドレスに1バイトでも一 致するものがあった場合 この場合 , 外部バスに対し新たにアクセスを行いますが , プリフェッチアクセスは , 新 たなリードアクセスが発生するまでは行われません。 ■ プリフェッチ許可領域に対する制限事項 リトルエンディアン領域に対してプリフェッチを許可している場合は , その領域に対 するアクセスは必ずワードアクセスにて行ってください。プリフェッチバッファに読 み出されたデータをワード長以外でアクセスすると , 正しくエンディアン変換が行わ れず , 誤ったデータを読み出してしまいます。これは , エンディアン変換機構のハード ウェア的な制限によるものです。 206 第 4 章 外部バスインタフェース 4.9 SDRAM/FCRAM インタフェース CS6,CS7 の領域は , ACR レジスタの TYP3 ∼ TYP0 ビットを "100XB" に設定する ことにより SDRAM/FCRAM 空間として使用できます。 本チップは 32 ビットバス幅は未サポートです。 ■ タイミングチャート ● バーストリード / ライト ( ページヒット , CAS レイテンシ = 2) 図 4.9-1 バーストリード / ライト タイミングチャート ( ページヒット , CAS レイテンシ = 2) MCLK A #1 D #1 SRAS,SCAS,SWE #1 #2 #3 #1 #4 WRIT #2 #3 #4 READ Cas レイテンシ ライト リカバリ ライトサイクル リードサイクル A13, …, A0 は , SDRAM 容量により , すべての端子を使用しない場合があります。接続 例を参考にしてください。 MCLK は, SDRAMに入力するクロックです。アドレス , データ, コマンドなどの信号は , MCLK の立上りで SDRAM に取り込まれます。 AWR レジスタの W05, W04 ビットで SDRAM/FCRAM の規格に合わせてライトリカバ リサイクルを設定してください。 AWR レジスタの W10 ∼ W08 ビットで SDRAM/FCRAM の規格に合わせて CAS レイテ ンシを設定してください。 バースト長の設定は ACR レジスタの BST ビットにて設定してください。 ● シングルリード / ライト ( ページヒット , CAS レイテンシ = 3, オートプリチャージなし ) 図 4.9-2 シングルリード / ライト タイミングチャート ( ページヒット , CAS レイテンシ = 3, オートプリチャージなし ) MCLK A #1 #1 D SRAS,SCAS,SWE #1 #1 READ WRIT リード→ライト Casレイテンシ リードサイクル アイドルサイクル ライトサイクル 207 第 4 章 外部バスインタフェース AWR レジスタの W07, W06 ビットで SDRAM/FCRAM の規格に合わせてリード→ライ トアイドルサイクルを設定してください。 ● シングルリード ( ページミス , CAS レイテンシ = 3, オートプリチャージなし ) 図 4.9-3 シングルリード タイミングチャート ( ページミス , CAS レイテンシ = 3, オートプリチャージなし ) MCLK A BA Row #1 D #1 PRE SRAS,SCAS,SWE ACT READ RAS プリチャージサイクル RAS→CASディレイ (tRP) (tRCD) Casレイテンシ ページミスが発生した場合は , プリチャージコマンド , ACTV コマンド発行後にリード を行います。 SDRAM/FCRAM の規格に合わせて , AWR レジスタの W01, W00 ビットに RAS プリ チャージサイクル (tRP) を設定してください。 SDRAM/FCRAM の規格に合わせて , AWR レジスタの W14 ∼ W12 ビットに RAS → CAS ディレイ (tRCD) を設定してください。 ● シングルリード / ライト (CAS レイテンシ = 1, TYP = "1001B", オートプリチャージあり ) 図 4.9-4 シングルリード / ライト タイミングチャート (CAS レイテンシ = 1, TYP = "1001B", オートプリチャージあり ) MCLK A Row D Col Row Col #1 SRAS,SCAS,SWE ACTV WRITA ACTV READA Row Col #2 #3 ACTV WRITA リードライト CL+BL-1 CL+BL-1 アイドルサイクル TYP = "1001B" に設定した場合 , オートプリチャージ付きのリード / ライトコマンドを 発行します。ただし , READA/WRITA 発行から ACTV 発行までのサイクルは CL+BL-1 に固定されますので , FCRAM 接続の場合のみ TYP = "1001B" 設定が可能です。 PRE コマンドを発行するサイクルがなくなるため , ページミスが多発するような場合 に有効です。 208 第 4 章 外部バスインタフェース ● オートリフレッシュ 図 4.9-5 オートリフレッシュ タイミングチャート MCLK A D SRAS,SCAS,SWE ACTV REF tRC リフレッシュサイクル RCR レジスタの RFINT5 ∼ RFINT0 × 32 サイクルごとにリフレッシュコマンドを発行 し , リフレッシュ終了後にアクセスを再開します。 SDRAM/FCRAM の規格に合わせて , RCR レジスタの TRC ビットを設定してください。 ■ セルフリフレッシュ リフレッシュコントロールレジスタ (RCR) の SELF ビットへの "1" 書込みにより , SDRAM/FCRAM インタフェースはセルフリフレッシュ以降シーケンスを開始します。 SDRAM/FCRAM インタフェースは RFC2 ∼ RFC0 で設定した回数オートリフレッシュ を実行した後 , SDRAM/FCRAM へ SELF コマンドを発行し , セルフリフレッシュモー ドへ移行します。 セルフリフレッシュモードの解除は , SELF ビットへの "0" 書込みおよび SDRAM/ FCRAM へのリード / ライトアクセスで行います。 SDRAM/FCRAM インタフェースは , セルフリフレッシュモード中に SELF ビットへの "0" 書込みもしくは SDRAM/FCRAM へのアクセスを検出した場合 , SELFX コマンドを 発行し , RFC2 ∼ RFC0 で設定した回数のオートリフレッシュを実行します。 したがって , セルフリフレッシュモードを設定し , チップをスリープモードに入れた後 に , DMA 転送で SDRAM/FCRAM へのアクセスがあった場合にもセルフリフレッシュ モードは解除されます。 <セルフリフレッシュモード移行> ① SELF ビットへ "1" をセット ② RFC2 ∼ RFC0 で設定した回数の REF コマンド発行 ③ SELF コマンドを発行 <セルフリフレッシュモード解除> ① SELF ビットへ "0" 書込みもしくは SDRAM/FCRAM へのアクセス ② SELFX コマンドの発行 ③ RFC2 ∼ RFC0 で設定した回数の REF コマンド発行 ④通常アクセス状態に移行 209 第 4 章 外部バスインタフェース ■ パワーオンシーケンス リフレッシュコントロールレジスタ (RCR) の PON ビットを "1" にセットすることによ りパワーオンシーケンスを開始します。 以下の手順に従い PON ビットを "1" に設定し , パワーオンシーケンスへ移行させてく ださい。 ① SDRAM/FCRAM マニュアルに規定してあるクロック安定待ち時間を確保してくだ さい。 ② ACR, AWR, MCRA(B) を設定してください。 ③ CSER を設定し , SDRAM/FCRAM を接続した領域を有効にしてください。 ④ RCR の値を設定すると同時に PON ビットを "1" に設定してください。 以上の手順を実行すると SDRAM/FCRAM インタフェースは以下のパワーオンシーケ ンスを実行します。 ⑤ REF コマンドを 8 回実行します。 ⑥ ACR の BST ビット , AWR の CL(CAS レイテンシ ), MCRA の WBST ビットに従い モードレジスタをセットしてください。 ⑦ 通常アクセス状態に移行します。 ■ 複数領域への SDRAM/FCRAM 接続 SDRAM/FCRAM 接続は CS6, CS7 領域に設定可能ですが , 同時に 2 つの領域に SDRAM/ FCRAM を接続する場合は同じタイプのものを接続してください。具体的には , 以下のレ ジスタ設定が同じになるものを接続してください。 ① ACR レジスタ : DBW1, DBW0, BST1, BST0, TYP3∼TYP0 の設定は同じにして ください。 ② AWR レジスタ : すべてのビットが同じになるようにしてください。 ③ MCRA(B) レジスタ : レジスタが共通のため , すべての設定が同じになります。 ④ RCR レジスタ : レジスタが共通のため , すべての設定が同じになります。 なお, 2つの領域を同時に有効にした場合,パワーオンシーケンス/オートリフレッシュ/ セルフリフレッシュは同時に行います。 ■ アドレスマルチプレックスフォーマット SDRAM/FCRAM へのアクセスアドレスは , ASZ3 ∼ ASZ0 ビット , DBW1, DBW0 ビッ ト , PSZ2 ∼ PSZ0 ビット , BANK ビットの設定により Row アドレス , バンクアドレス , カラムアドレスへの対応が変わります。アドレスの対応は , 下位ビットから カラムア ドレス , バンクアドレス , ローアドレスの順に並べます。各ビットは , 以下のように設 定してください。 • ASZ3 ∼ ASZ0 : 対応する領域に接続する SDRAM/FCRAM の総容量を設定します。 2 個並列に使用する場合は合計容量を設定してください。ローアド レス本数に影響します。 • DBW1, DBW0 : データバス幅を設定します (8 ビット品 2 個を並列に接続する場合 は 16 ビットに設定してください )。 データバス幅指定に従い , カラムアドレスのシフトを行います (8 ビット:そのまま , 16 ビット:1 ビット シフト )。 210 第 4 章 外部バスインタフェース • PSZ2 ∼ PSZ0 : SDRAM/FCRAM で使用するカラムアドレスの本数を設定してく ださい。 : SDRAM/FCRAM のバンクアドレスの本数を設定してください。 • BANK 以下にアクセスアドレスとローアドレス , バンクアドレス,カラムアドレスの対応の例 を幾つかあげます。 - 4M バイト (ASZ = 0110B), 8 ビットバス幅 (DBW= 00B), 256 カラム (PSZ= 000B), 2 バンク (BANK= 0) A31 A22A21 A9 A8 A7 A0 BA ロー カラム - 16M バイト (ASZ = 1000B), 16 ビットバス幅 (DBW= 01B), 512 カラム (PSZ= 001B), 4 バンク (BANK= 1) A31 A24A23 A12A11A10 A9 A1 A0 BA ロー カラム - 64M バイト (ASZ = 1010B), 32 ビットバス幅 (DBW= 10B), 512 カラム (PSZ= 001B), 4 バンク (BANK= 1) A31 A26A25 A13A12A11A10 ロー A2 A1 A0 BA カラム ■ メモリ接続例 SDRAM/FCRAM インタフェースから SDRAM/FCRAM への接続は , 基本的に以下のよ うなります。 表 4.9-1 SDRAM/FCRAM インタフェースから SDRAM/FCRAM への接続 SDRAM/FCRAM インタフェース端子 MCLKO SDRAM/ FCRAM 端子 備考 CLK − MCLKE CKE − SRAS(AS) RAS − SCAS(BAA) CAS − SWE(WR) WE − CS6/CS7 CSn A0 ∼ A9 A10/AP A0 ∼ A9 A10/AP CS6/CS7 領域のみ SDRAM/FCRAM 設定が可能です。 − A11 ∼ A13 A14 A11 ∼ A13 BA0 A15 BA1 2 バンク品の場合使用しません。 D31 ∼ D0 (D15 ∼ D0 は未サポート ) DQ エンディアン , データバス幅により接続が変わりま す。詳しい接続は , エンディアンとバス幅の設定の 項を参照してください。 DQMUU,DQMUL,DQMLU, DQMLL (DQMLU,DQMLL は未サポート ) DQM エンディアン , データバス幅により接続が変わりま す。詳しい接続は , エンディアンとバス幅の設定の 項を参照してください。 ローアドレス出力時 A10, その他 AP SDRAM/FCRAM で使用するアドレスまで接続 2 バンク品の場合 BA 211 第 4 章 外部バスインタフェース ● 8 ビットの SDRAM/FCRAM を使用する場合 ( ビッグエンディアン ) - 合計データバス幅 32 ビット : SDRAM/FCRAM 4 個を使用します。 - 合計データバス幅 16 ビット : SDRAM/FCRAM 2 個を使用します。 容量 64M ビットの SDRAM を使用する場合 ( バンクアドレス 1 本 , ローアドレス 12 本 ) を示します。 図 4.9-6 メモリ接続例 ( 容量 64M ビットの SDRAM を使用する場合 ) ( バンクアドレス 1 本 , ローアドレス 12 本 ) ___ CS6 or ___ CS7 MB91305 A13-A0 ____ ____ ___ DQMLU DQMUU SRAS SCAS SWE MCLKE DQMUL DQMLL MCLK DQ31~DQ0 [31~24] ___ CS ___ RAS IA13-IA0 ___ CAS ___ WE CKE DQM CLK DQ7~DQ0 SDRAM(No.1) [23~16] ___ CS IA13-IA0 ___ RAS ___ CAS __ WE CKE DQM CLK DQ7~DQ0 SDRAM(No.2) [15~8] ___ CS IA13-IA0 ___ RAS ___ CAS __ WE CKE CLK DQM DQ7~DQ0 SDRAM(No.3) [7~0] ___ CS IA13-IA0 ___ RAS ___ CAS __ WE CKE DQM CLK DQ7~DQ0 SDRAM(No.4) 合計データバス幅 16 ビットで使用するときは SDRAM No.3 , No.4 は不要であり , DQ15 ∼ DQ0 は開放としてください。 212 第 4 章 外部バスインタフェース ● 16 ビットの SDRAM/FCRAM を使用する場合 - 合計データバス幅 32 ビット : SDRAM 2 個または 4 個を使用します。 - 合計データバス幅 16 ビット : SDRAM 1 個を使用します。 容量 64M ビットの SDRAM を使用する場合 ( バンクアドレス 2 本 , ローアドレス 12 本 ) を示します。 図 4.9-7 メモリ接続例 ( 容量 64M ビットの SDRAM を使用する場合 ) ( バンクアドレス 2 本 , ローアドレス 12 本 ) MB91305 ___ CS7 ___ CS6 A13-A0 ____ ____ ___ DQMLU DQMUU SRAS SCAS SWE MCLKE DQMUL DQMLL MCLK DQ31~DQ0 [31~16] ___ CS IA13-IA0 ___ RAS ___ CAS ___ WE CKE DQMU DQML CLK DQ15~DQ0 SDRAM(No.1) [15~0] ___ CS IA13-IA0 ___ RAS ___ CAS ___ WE CKE DQMU DQML CLK DQ15~DQ0 SDRAM(No.2) [31~16] ___ CS IA13-IA0 ___ RAS ___ CAS ___ WE CKE DQMU DQML CLK DQ15~DQ0 SDRAM(No.3) [15~0] ___ CS IA13-IA0 ___ RAS ___ CAS ___ WE CKE DQMU DQML CLK DQ15~DQ0 SDRAM(No.4) データ幅 16 ビットで使用時は SDRAM No.2, No.3, No.4 は不要であり , DQ15 ∼ DQ0 は 開放としてください。 SDRAM 2 個で使用するときは SDRAM No.2, No.3 は不要です。 213 第 4 章 外部バスインタフェース ● 32 ビットの SDRAM を使用する場合 (MB91305 は未サポート ) データ幅 32 ビット : SDRAM 1 個または 2 個を使用します。 64M ビット品の場合 ( バンクアドレス 1 本 , ローアドレス 12 本 ) を示します。 図 4.9-8 メモリ接続例 ( 容量 64M ビット品の場合 ) ( バンクアドレス 1 本 , ローアドレス 12 本 ) MB91305 ___ CS7 ___ CS6 A12-A0 ____ ____ ___ DQMLU DQMUU SRAS SCAS SWE MCLKE DQMUL DQMLL MCLK DQ31~DQ0 [31~0] ___ CS IA12-IA0 ___ RAS ___ CAS ___ WE CKE DQM3 DQM2 DQM1 DQM0 CLK DQ31-DQ0 SDRAM(No.1) [31~0] ___ CS IA12-IA0 ___ RAS ___ CAS ___ WE CKE DQM3 DQM2 DQM1 DQM0 CLK SDRAM(No.2) SDRAM 1 個のみで使用するときは SDRAM No.2 は不要です。 214 DQ31~DQ0 第 4 章 外部バスインタフェース 4.10 DMA アクセス DMA アクセスの設定について説明します。 ■ DMA フライバイ転送 (I/O →メモリ ) (TYP3 ∼ TYP0=0000B, AWR=0008H, IOWR=41H) 図 4.10-1 に , DMA フライバイ転送 (I/O →メモリ ) の設定を示します。 • メモリ側のウェイト設定なしの場合 図 4.10-1 DMA フライバイ転送 (I/O →メモリ ) の設定 基本サイクル I/Oウェイト I/Oホールド サイクル ウェイト MCLK A23~A0 メモリアドレス AS CSn WRn D31~D16 FR30ファミリ 互換モード DACKn DEOPn DACKn 基本モード DEOPn IORD DREQn デマンドモード時の センスタイミング • AWR レジスタの W01 ビットを "1" に設定することにより , CSn → RD/WR セット アップディレイを設定可能です。チップセレクトアサート後 , リード / ライトスト ローブまでの期間を延長する場合に設定します。 • AWR レジスタの W00 ビットを "1" に設定することにより , RD/WR → CSn ホールド ディレイを設定可能です。リード / ライトストローブネゲート後 , チップセレクト ネゲートまでの期間を延長する場合に設定します。 215 第 4 章 外部バスインタフェース • CSn → RD/WR セットアップディレイ (W01 ビット ) と RD/WR → CSn ホールドディ レイ (W00 ビット ) は独立に設定可能です。 • 同一チップセレクト領域内で , チップセレクトをネゲートしないまま連続してアク セスする場合は , CSn → RD/WR セットアップディレイ , RD/WR → CSn ホールド ディレイともに挿入されません。 • アドレス確定からのセットアップサイクルおよびアドレス確定のホールドサイク ルが必要な場合は , アドレス→ CSn 遅延設定 (AWR レジスタの W02 ビット ) を "1" に設定してください。 参考 : データ出力側である I/O に対して , I/O ウェイトサイクルと I/O ホールドウェイトサイ クルにより延長された , 3 バスサイクル分のリードストローブが発生しています。 受取り側であるメモリに対しては , I/O ウェイトサイクルで延長された , 2 バスサイク ル分のライトストローブが発生しています。I/O ホールドウェイトサイクルは , ライト ストローブには影響を与えません。ただし , アドレスと CS 信号は , フライバイによる バスアクセスサイクル終了まで保持されます。 216 第 4 章 外部バスインタフェース ■ DMA フライバイ転送 ( メモリ→ I/O)(TYP3 ∼ TYP0=0000B, AWR=0008H, IOWR=41H) 図 4.10-2 に , DMA フライバイ転送 ( メモリ→ I/O) の設定を示します。 • メモリ側のウェイト設定なしの場合 図 4.10-2 DMA フライバイ転送 ( メモリ→ I/O) の設定 基本サイクル I/Oウェイト I/Oホールド サイクル ウェイト MCLK A23~A0 メモリアドレス AS CSn RD D31~D16 FR30ファミリ DACKn 互換モード DEOPn DACKn 基本モード DEOPn IOWR DREQn デマンドモード時の センスタイミング • IOWR0 ∼ IOWR2 レジスタの HLD ビットを "1" に設定することにより , I/O リード サイクルを 1 サイクル延長します。 • IOWR0 ∼ IOWR2 レジスタの WR1, WR0 ビットの設定により , 0 ∼ 3 サイクルまで のライトリカバリサイクルを挿入可能です。 • ライトリカバリサイクルを "1" 以上に設定した場合は , ライトアクセスの後には必 ずライトリカバリサイクルを挿入します。 • IOWR0 ∼ IOWR2 レジスタの IW03 ∼ IW00, IW13 ∼ IW10, IW23 ∼ IW20 ビットの 設定により , 0 ∼ 15 サイクルまでのウェイトサイクルを挿入可能です。 • メモリ側にもウェイトの設定がある場合 (AWR の W15 ∼ W12 が "0" でないとき ) は , I/O ウェイト (IW03 ∼ IW00, IW13 ∼ IW10, IW23 ∼ IW20 ビット ) と比較して大 きいほうの値をウェイトサイクルとして使用します。 217 第 4 章 外部バスインタフェース 参考 : データ出力側であるメモリに対して , I/O ウェイトサイクルと I/O ホールドウェイトサ イクルにより延長された 3 バスサイクル分のリードストローブが発生しています。 受取り側である I/O に対しては , I/O ウェイトサイクルで延長された , 2 バスサイクル分 のライトストローブが発生しています。I/O ホールドウェイトサイクルは , ライトスト ローブには影響を与えません。ただし , アドレスと CS 信号は , フライバイによるバス アクセスサイクル終了まで保持されます。 フライバイ転送を行う場合は , 必ず同じデータバス幅間で行ってください。 218 第 4 章 外部バスインタフェース ■ 2サイクル転送(内部RAM→外部I/O, RAM, 外部I/O, RAM→内部RAMもタイミング は同じ ) (TYP3 ∼ TYP0=0000B, AWR=0008H, IOWR=00H) 図 4.10-3 に , 2 サイクル転送の設定を示します。 • I/O 側のウェイト設定なしの場合 図 4.10-3 2 サイクル転送の設定 MCLK A23~A0 I/O アドレス AS CSn (I/O側) WRn D31~D16 DACKn FR30ファミリ 互換モード DEOPn DACKn 基本モード DEOPn DREQn デマンドモード時の センスタイミング • バスアクセスは , DMAC 転送でない場合のインタフェースと同様です。 • DACKn/DEOPn は , 内部 RAM アクセスのサイクルでは出力されません。 219 第 4 章 外部バスインタフェース ■ 2 サイクル転送 ( 外部→ I/O)(TYP3 ∼ TYP0=0000B, AWR=0008H, IOWR=00H) 図 4.10-4 に , 2 サイクル転送 ( 外部→ I/O) の設定を示します。 • メモリ , I/O のウェイト設定なしの場合 図 4.10-4 2 サイクル転送 ( 外部→ I/O) の設定 MCLK A23~A0 メモリアドレス アイドル I/O アドレス AS CSn RD CSn WRn D31~D16 FR30ファミリ 互換モード DACKn DEOPn DACKn 基本モード DEOPn DREQn • バスアクセスは , DMAC 転送でない場合のインタフェースと同様です。 • 基本モードでは DACKn/DEOPn は転送元バスアクセス , 転送先バスアクセスの両方 で出力されます。 220 第 4 章 外部バスインタフェース ■ 2 サイクル転送 (I/O →外部 )(TYP3 ∼ TYP0=0000B, AWR=0008H, IOWR=00H) 図 4.10-5 に , 2 サイクル転送 (I/O →外部 ) の設定を示します。 • メモリ , I/O のウェイト設定なしの場合 図 4.10-5 2 サイクル転送 (I/O →外部 ) の設定 MCLK A23~A0 I/O アドレス アイドル メモリアドレス AS CSn WRn CSn RD D31~D16 FR30ファミリ 互換モード DACKn DEOPn DACKn 基本モード DEOPn DREQn • バスアクセスは , DMAC 転送でない場合のインタフェースと同様です。 • 基本モードでは DACKn/DEOPn は転送元バスアクセス , 転送先バスアクセスの両方 で出力されます。 221 第 4 章 外部バスインタフェース ■ 2 サイクル転送 (I/O → SDRAM/FCRAM)(TYP3 ∼ TYP0=1001B, AWR=0051H, IOWR=00H) 図 4.10-6 に , 2 サイクル転送 (I/O → SDRAM/FCRAM) の設定を示します。 • メモリ , I/O のウェイト設定なしの場合 図 4.10-6 2 サイクル転送 (I/O → SDRAM/FCRAM) の設定 MCLK A23~A0 I/O アドレス アイドル メモリアドレス AS CSn SRAS SCAS WRn (SWE) CSn RD D31~D16 FR30ファミリ 互換モード DACKn DEOPn DACKn 基本モード DEOPn DREQn • バスアクセスは , DMAC 転送でない場合のインタフェースと同様です。 • 基本モードでは DACKn/DEOPn は転送元バスアクセス , 転送先バスアクセスの両方 で出力されます。 222 第 4 章 外部バスインタフェース ■ 2 サイクル転送 (I/O → SDRAM/FCRAM) 図 4.10-7 に , 2 サイクル転送 (I/O → SDRAM/FCRAM) の設定を示します。 • メモリ , I/O のウェイト設定なしの場合 図 4.10-7 2 サイクル転送 (I/O → SDRAM/FCRAM) の設定 MCLK A23~A0 メモリ アドレス I/Oアドレス AS CSn RD CSn SRAS SCAS WRn (SWE) D31~D16 MB91101 互換モード DACKn DEOPn DACKn 基本モード DEOPn DREQn • バスアクセスは , DMAC 転送でない場合のインタフェースと同様です。 • 基本モードでは DACKn/DEOPn は転送元バスアクセス , 転送先バスアクセスの両方 で出力されます。 223 第 4 章 外部バスインタフェース 4.11 バスアービトレーション バスアービトレーションを行うための設定について説明します。 ■ バス権開放 図 4.11-1 に , バス権開放時の設定を示します。 図 4.11-1 バス権開放時の設定 MCLK A23~A0 AS CSn RD リード D31~D16 BRQ BGRNT 224 1サイクル 第 4 章 外部バスインタフェース ■ バス権獲得 図 4.11-2 に , バス権獲得時の設定を示します。 図 4.11-2 バス権獲得時の設定 MCLK A23~A0 AS CSn WR D31~D16 BRQ BGRNT 1サイクル • TCR レジスタ BREN ビットを "1" に設定することにより , BRQ/BGRNT によるバス アービトレーションを行うことができます。 • バス権開放時は , 端子をハイインピーダンスにしてから 1 サイクル後に BGRNT を アサートします。 • バス権獲得時は , BGRNT をネゲートしてから 1 サイクル後に各端子をアクティブに します。 • CSn は , ACR0 ∼ ACR7 レジスタの SREN ビットがセットしてある場合のみハイイ ンピーダンスにします。 • CSER レジスタで許可している領域がすべて共有許可 (ACR レジスタの SREN ビッ トが "1") の場合 , AS, BAA, RD, WR, WR0, WR1 をハイインピーダンスにします。 225 第 4 章 外部バスインタフェース 4.12 レジスタ設定手順 外部バスインタフェースに関する設定手順は , 以下の原則に従ってください。 ■ 外部バスインタフェースの設定手順 1) レジスタの内容を書き換える場合は , 必ず CSER レジスタの対応する領域を使用し ない設定 ("0") にしてください。"1" のまま設定を変更した場合 , その前後のアクセ スは保証されません。 2) レジスタの変更は以下の手順で行ってください。 ① 該当領域に対応する CSER のビットを "0" に設定してください。 ② ASR と ACR をワードアクセスで同時に設定してください。 ASR,ACR をハーフワードでアクセスする場合には,ASR 設定後 ACR を設定 してください。 ③ AWR を設定してください。 ④ 該当領域に対応する CHER のビットを設定してください。 ⑤ 該当領域に対応する CSER のビットを設定してください。 3) CS0 領域はリセット解除後から有効になっており , プログラム領域として使用して いる場合は CSER を "1" のままで書き換える必要がありますが , この場合は内部ク ロックが低い初期状態で上記②∼④の設定を行ってください。その後 , クロックを 高速クロックに切り換えてください。 4) プリフェッチ許可を設定した領域のレジスタ値の変更は以下の手順で行ってくだ さい。 ① 該当領域に対応する CSER のビットを "0" に設定してください。 ② TCRレジスタのPSUSビットおよびPCLRビットを共に"1"に設定してください。 ③ ASR と ACR をワードアクセスにて同時に設定してください。 ASR, ACR をハーフワードでアクセスする場合には , ASR 設定後 ACR を設定し てください。 ④ AWR を設定してください。 ⑤ 該当領域に対応する CHER のビットを設定してください。 ⑥ TCR レジスタの PSUS ビットおよび PCLR ビットに "0" を設定してください。 ⑦ 該当領域に対応する CSER のビットを "1" に設定してください。 226 第 4 章 外部バスインタフェース 4.13 使用上の注意 外部バスインタフェースの使用上の注意について説明します。 ■ 外部バスインタフェースの使用上の注意 WR0, WR1をライトストローブとして使用する領域(TYP3∼TYP0="0x0xB")とWRをラ イトストローブとして使用する領域 (TYP3 ∼ TYP0="0x1xB") を混在させる設定にした 場合 , 使用するすべての領域にて , 必ず以下の設定を行ってください。 • リード→ライトアイドルサイクルを最低 1 サイクル以上設定してください (AWR: W07, W06="00B" 以外 ) 。 • ライトリカバリサイクルを最低 1 サイクル以上設定してください (AWR W05, W04 ="00B" 以外 ) 。ただし , WR0, WR1 をライトストローブとして使用する領域 (TYP3 ∼ TYP0="0x0xB") で WR0, WR1 が無効な (ROM のみ接続されている ) 場合 は , 上記制限はありません。また , WR をライトストローブとして使用する領域 (TYP3 ∼ TYP0="0x1xB") の設定でアドレス→ RD/WR セットアップサイクル (W01="1"), RD/WR →アドレスホールドサイクル (W00="1") をともに設定してい る場合も上記制限はありません。 <制限理由> TYP3 ∼ TYP0="0x1xB" と設定して WR をライトストローブとして使用する領域では , WR0/ WR1 端子が , バイトイネーブル (UBX/LBX) 出力となります。この場合 , バイ トイネーブル出力はアドレスおよび CS 出力と同一のタイミングで , 各バイト位置 のイネーブル信号を出力します。 このため , WR0/WR1 端子を非同期ライトストローブとして使用している領域への アクセスが前後にあった場合 , そちらの領域において , CSn と WR0/WR1 間の交流 規格を満足できなくなり , 誤書込みが発生する可能性があります。 リード→ライトアイドルサイクル , およびライトリカバリサイクルを設定した場合 , これらサイクルでは , CSn はアサートされません ("H" レベルを維持 ) ので , 上記交 流規格を満足することができます。 WR0/WR1 端子を非同期ライトストローブとして使用している領域にて , CSn と WR0/WR1 間の交流規格 ( セットアップおよびホールド ) に対し余裕がある場合は , 本制限は必要ありません。 227 第 4 章 外部バスインタフェース 228 第5章 I/O ポート I/O ポートの概要 , レジスタの構成 , および機能に ついて説明します。 5.1 I/O ポートの概要 5.2 I/O ポートのレジスタ 229 第 5 章 I/O ポート I/O ポートの概要 5.1 I/O ポートの概要について説明します。 ■ ポート基本ブロックダイヤグラム MB91305 は , 各端子に対応するペリフェラルが入出力として端子を使用しない設定に なっているとき , I/O ポートとして使用することができます。 図 5.1-1 に , ポートの基本的な構成を示します。 図 5.1-1 ポート基本ブロックダイヤグラム ペリフェラル入力 ポートバス Port-A,Bのみの機能です。 プルアップ抵抗 (約33kΩ) 0 1 ペリフェラル出力 PDR 1 端子 0 PFR PCR=0:プルアップ抵抗なし PCR=1:プルアップ抵抗あり DDR PCR DDR:ポ-ト方向レジスタ PDR:ポートデータレジスタ PFR:ポート機能レジスタ PCR:プルアップ抵抗制御レジスタ I/O ポートは , 以下のもので構成されています。 • PDR ( ポートデータレジスタ /Port Data Register) • DDR ( ポート方向レジスタ /Data Direction Register) • PFR ( ポート機能レジスタ /Port Function Register) • PCR ( プルアップ抵抗制御レジスタ /Pull-up Control Register) ● ポート入力モード時 (PFR="0" & DDR="0") PDR リード : 対応する外部端子のレベルが読み出されます。 PDR ライト : PDR に設定値が書き込まれます。 ● ポート出力モード時 (PFR="0" & DDR="1") PDR リード : PDR の値が読み出されます。 PDR ライト : PDR の値が対応する外部端子に出力されます。 ● ペリフェラル出力モード時 (PFR="1" & DDR="1") PDR リード : 対応する外部端子のレベルが読み出されます。 PDR ライト : PDR に設定値が書き込まれます。 230 第 5 章 I/O ポート ● ペリフェラル入力モード時 (PFR="0" & DDR="0") PDR リード : 対応する外部端子のレベルが読み出されます。 PDR ライト : PDR に設定値が書き込まれます。 <注意事項> • ポート関連レジスタへのアクセスは , バイトアクセスで行ってください。 • DDR レジスタの値が有効になるのは , PFR レジスタを切り換えて汎用端子としたとき です。 • ストップモード時には HIZ の値によらず , プルアップ抵抗制御レジスタの設定が優先 されます。 231 第 5 章 I/O ポート 5.2 I/O ポートのレジスタ I/O ポートで使用するレジスタの構成および機能について説明します。 ■ ポートデータレジスタ (PDR) 図 5.2-1 にポートデータレジスタ (PDR) の構成を示します。 図 5.2-1 ポートデータレジスタ (PDR) の構成 ( 続く ) PDR2 アドレス : 0000 0012H PDR3 アドレス : 0000 0013H PDR4 アドレス : 0000 0014H PDR5 アドレス : 0000 0015H PDR6 アドレス : 0000 0016H PDR7 アドレス : 0000 0017H PDR8 アドレス : 0000 0018H PDR9 アドレス : 0000 0019H PDRA アドレス : 0000 001AH PDRB アドレス : 0000 001BH PDRC アドレス : 0000 001CH PDRD アドレス : 0000 001DH PDRE アドレス : 0000 001EH 232 7 6 5 4 3 2 1 0 P27 P26 P25 P24 P23 P22 P21 P20 7 6 5 4 3 2 1 0 P37 P36 P35 P34 P33 P32 P31 P30 7 6 5 4 3 2 1 0 P47 P46 P45 P44 P43 P42 P41 P40 7 6 5 4 3 2 1 0 P57 P56 P55 P54 P53 P52 P51 P50 7 6 5 4 3 2 1 0 - - P65 P64 P63 P62 P61 P60 7 6 5 4 3 2 1 0 - - P75 P74 P73 P72 P71 P70 7 6 5 4 3 2 1 0 - - - P84 P83 P82 P81 P80 7 6 5 4 3 2 1 0 P97 P96 P95 P94 P93 P92 P91 P90 7 6 5 4 3 2 1 0 PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 7 6 5 4 3 2 1 0 PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 7 6 5 4 3 2 1 0 PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 7 6 5 4 3 2 1 0 - - PD5 PD4 PD3 PD2 PD1 PD0 7 6 5 4 3 2 1 0 - - - - - PE2 PE1 PE0 初期値 アクセス XXXXXXXXB R/W 初期値 アクセス XXXXXXXXB R/W 初期値 アクセス XXXXXXXXB R/W 初期値 アクセス XXXXXXXXB R/W 初期値 アクセス -- XX X XX X B R/W 初期値 アクセス -- XX X XX X B R/W 初期値 アクセス XXXXXXXXB R/W 初期値 アクセス XXXXXXXXB R/W 初期値 -- --- XX X B アクセス R/W 初期値 アクセス XXXXXXXXB R/W 初期値 アクセス XXXXXXXXB R/W 初期値 アクセス -- XX X XX X B R/W 初期値 -- --- XX X B アクセス R/W 第 5 章 I/O ポート 図 5.2-1 ポートデータレジスタ (PDR) の構成 ( 続き ) PDRF 7 アドレス : 0000 001FH PF5 6 5 4 3 2 1 0 PF5 PF5 PF4 PF3 PF2 PF1 PF0 初期値 アクセス XXXXXXXXB R/W PDR2 ∼ PDRF は,I/O ポートの入出力データレジスタです。 対応する DDR2 ∼ DDRD,PFR0 ∼ PFR7,PFR9,PFRB ∼ PFRD で入出力制御が行われます。 ■ ポート方向レジスタ (DDR) 図 5.2-2 にポート方向 (DDR) レジスタの構成を示します。 図 5.2-2 ポート方向 (DDR) レジスタの構成 ( 続く ) DDR2 アドレス : 0000 0402H DDR3 アドレス : 0000 0403H DDR4 アドレス : 0000 0404H DDR5 アドレス : 0000 0405H DDR6 アドレス : 0000 0406H DDR7 アドレス : 0000 0407H DDR8 アドレス : 0000 0408H DDR9 アドレス : 0000 0409H DDRA アドレス : 0000 040AH DDRB アドレス : 0000 040BH DDRC 7 6 5 4 3 2 1 0 P27 P26 P25 P24 P23 P22 P21 P20 7 6 5 4 3 2 1 0 P37 P36 P35 P34 P33 P32 P31 P30 7 6 5 4 3 2 1 0 P47 P46 P45 P44 P43 P42 P41 P40 7 6 5 4 3 2 1 0 P57 P56 P55 P54 P53 P52 P51 P50 7 6 5 4 3 2 1 0 - - P65 P64 P63 P62 P61 P60 7 6 5 4 3 2 1 0 - - P75 P74 P73 P72 P71 P70 7 6 5 4 3 2 1 0 - - - P84 P83 P82 P81 P80 7 6 5 4 3 2 1 0 P97 P96 P95 P94 P93 P92 P91 P90 7 6 5 4 3 2 1 0 PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 7 6 5 4 3 2 1 0 PB7 PB6 PB5 PB4 PB3 PB2 PB1 7 6 5 4 3 2 1 PC6 PC5 PC4 PC3 PC2 PC1 アドレス : 0000 040CH PC7 DDRD アドレス : 0000 040DH 初期値 アクセス 0 0 0 0 0 0 0 0 B R/W 初期値 アクセス 0 0 0 0 0 0 0 0 B R/W 初期値 アクセス ----0000B R/W 初期値 アクセス 0 0 0 0 0 0 0 0 B R/W 初期値 アクセス --000000B R/W 初期値 アクセス --000000B R/W 初期値 アクセス ---00000B R/W 初期値 アクセス 0 0 0 0 0 0 0 0 B R/W 初期値 アクセス 0 0 0 0 0 0 0 0 B R/W 初期値 アクセス PB0 0 0 0 0 0 0 0 0 B R/W 0 初期値 アクセス PC0 0 0 0 0 0 0 0 0 B R/W 7 6 5 4 3 2 1 0 - - PD5 PD4 PD3 PD2 PD1 PD0 初期値 アクセス --000000B R/W 233 第 5 章 I/O ポート 図 5.2-2 ポート方向 (DDR) レジスタの構成 ( 続き ) DDRE アドレス : 0000 040EH DDRF 7 6 5 4 3 2 1 0 - - - - - PE2 PE1 PE0 7 6 5 4 3 2 1 0 PF5 PF5 PF4 PF3 PF2 PF1 PF0 アドレス : 0000 040FH PF5 初期値 アクセス ------00B R/W 初期値 アクセス 0 0 0 0 0 0 0 0 B R/W DDR2 ∼ DDRF は , 対応する I/O ポートの入出力方向をビット単位で制御します。 PFR=0 のとき DDR=0; ポート入力 , ペリフェラル入力 DDR=1; ポート出力 PFR=1 のとき DDR=1; ペリフェラル出力 ■ ポート機能レジスタ (PFR) 図 5.2-3 にポート機能レジスタ (PFR) の構成を示します。 図 5.2-3 ポート機能レジスタ (PFR) の構成 ( 続く ) PFR0 7 アドレス : 0000 0410H I2CTST 6 5 - - 4 3 2 1 0 初期値 アクセス I2CE4 I2CE3 I2CE2 I2CE1 I2CE0 0 - - 0 0 0 0 0 B R/W PFR1 7 6 5 4 3 2 1 0 PFR2 7 6 5 4 3 2 1 0 - - - 3 2 1 0 初期値 アクセス 0 0 0 0 0 0 0 0 アドレス : 0000 0411H UART3 SCKE3 UART2 SCKE2 UART1 SCKE1 UART0 SCKE0 R/W B アドレス : 0000 0412H TOE2 TOE1 TOE0 PFR3 7 6 5 4 - - - - 7 6 5 4 3 - - - - - PFR5 7 6 5 4 3 PFR6 7 6 5 アドレス : 0000 0413H PFR4 アドレス : 0000 0414H 初期値 アクセス UART4 SCKE4 0 0 0 - - - 0 0 B R/W 初期値 PPGE3 PPGE2 PPGE1 PPGE0 - - - - 0 0 0 0 B 2 1 0 2 1 0 アクセス R/W 初期値 アクセス 0 0 0 DMAE2 DMAE1 DMAE0 R/W B 初期値 アクセス アドレス : 0000 0415H ADE7 ADE6 ADE5 ADE4 ADE3 ADE2 ADE1 ADE0 1 1 1 1 1 1 1 1 B R/W アドレス : 0000 0416H DRDE DWRE AK12 PFR7 アドレス : 0000 0410H PFR9 3 2 1 AK10 AK02 AK01 6 5 4 3 2 1 - - - - - AK22 AK21 7 6 5 4 3 2 1 AE22 AE21 AE20 AE19 AE18 AE17 6 5 4 3 2 1 0 - BGRE - 7 アドレス : 0000 041BH SWEE BAAE ASXE MCKE MKEE 234 0 初期値 アクセス AK00 0 0 0 0 0 0 0 0 B R/W 7 アドレス : 0000 0419H AE23 PFRB 4 AK11 0 初期値 アクセス 0 0 0 AK20 R/W B 0 初期値 アクセス AE16 1 1 1 1 1 1 1 1 B R/W 初期値 アクセス 00011-0-B R/W 第 5 章 I/O ポート 図 5.2-3 ポート機能レジスタ (PFR) の構成 ( 続き ) PFRC 7 6 5 4 アドレス : 0000 041CH CS7E CS6E CS5E CS4E PFRD アドレス : 0000 041DH 7 6 5 - - - 4 3 2 - - 3 2 1 0 初期値 アクセス CS1E CS0E 1 1 1 1 - - 1 1 B R/W SYSCE I2CBRG WR1XE 1 0 - - 初期値 アクセス ---101--B R/W リセット時はポート機能になります。 PFR0 ∼ PFR4 は , 対応するペリフェラルの出力を機能単位で制御します。 ペリフェラル入力として使用する端子は , DDR レジスタで入力設定にしてください。 PFR0 の bit 7[I2CTST] は必ず "0" にしてください。 I2CE3 と I2CE4 が両方 "1" のときは , SCL3・SDA3 が SCL4・SDA4 とブリッジされます。 I2CBRG が "1" のときは , I2C の ch2 と ch3 がブリッジされます。 ■ プルアップ機能レジスタ (PCR) 図 5.2-4 にプルアップ機能レジスタ (PCR) の構成を示します。 図 5.2-4 プルアップ機能レジスタ (PCR) の構成 PCRA アドレス : 0000 041EH PCRB 7 6 5 4 3 2 1 0 PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 7 アドレス : 0000 041FH PB7 6 5 4 3 2 1 0 PB6 PB5 PB4 PB3 PB2 PB1 PB0 初期値 アクセス 00000000B R/W 初期値 アクセス 00000000B R/W PCRA, PCRB は , 対応する I/O ポートのプルアップ抵抗制御を行います。 PCR=0:プルアップ抵抗なし PCR=1:プルアップ抵抗あり 端子状態が入力のときにプルアップ抵抗が付きます。 端子出力時には抵抗なしの状態になります。 235 第 5 章 I/O ポート ■ PFR レジスタの初期値と機能 表 5.2-1 に , 各 PFR レジスタについてその初期値と機能を示します。 表 5.2-1 PFR レジスタの初期値と機能 (1 / 4) レジスタ名称 PFR0 ビット名称 ビット I2CTST I2CE4 I2CE3 I2CE2 PFR1 I2C テスト用ビットです。 1 設定禁止です。 0 汎用ポートとして機能します。 1 SCL4, SDA4 として機能します (I2C ch3 と接続 )。 0 汎用ポートとして機能します。 1 SCL3, SDA3 として機能します。 0 汎用ポートとして機能します。 SCL2, SDA2 として機能します。 I2CE1 0 汎用ポートとして機能します。 1 SCL1, SDA1 として機能します。 I2CE0 0 汎用ポートとして機能します。 1 SCL0, SDA0 として機能します。 UART3 0 汎用ポートとして機能します。 1 SOUT3 出力として機能します。 SCKE3 0 汎用ポートとして機能します。 1 SCK3 出力として機能します。 UART2 0 汎用ポートとして機能します。 1 SOUT2 出力として機能します。 0 汎用ポートとして機能します。 1 SCK2 出力として機能します。 UART1 0 汎用ポートとして機能します。 1 SOUT1 出力として機能します。 SCKE1 0 汎用ポートとして機能します。 1 SCK1 出力として機能します。 0 汎用ポートとして機能します。 1 SOUT0 出力として機能します。 0 汎用ポートとして機能します。 1 SCK0 出力として機能します。 TOE2* 0 汎用ポートとして機能します。 1 TOUT2 出力として機能します。 TOE1 0 汎用ポートとして機能します。 1 TOUT1 出力として機能します。 0 汎用ポートとして機能します。 UART0 SCKE0 TOE0 236 0 1 SCKE2 PFR2 機 能 1 TOUT0 出力として機能します。 UART4 0 汎用ポートとして機能します。 1 SOUT4 出力として機能します。 SCKE4 0 汎用ポートとして機能します。 1 SCK4 出力として機能します。 第 5 章 I/O ポート 表 5.2-1 PFR レジスタの初期値と機能 (2 / 4) レジスタ名称 PFR3 ビット名称 ビット PPGE3 0 汎用ポートとして機能します。 1 PPG3 出力として機能します。 PPGE2 0 汎用ポートとして機能します。 1 PPG2 出力として機能します。 PPGE1 0 汎用ポートとして機能します。 1 PPG1 出力として機能します。 0 汎用ポートとして機能します。 PPGE0 PFR4 1 PPG0 出力として機能します。 DMAE2 0 汎用ポートとして機能します。 1 DEOP0 として機能します。 DMAE1 0 汎用ポートとして機能します。 1 DEOP1 として機能します。 0 汎用ポートとして機能します。 1 DEOP2 として機能します。 ADE7 0 汎用ポートとして機能します。 1 AN9 入力として機能します。 ADE6 0 汎用ポートとして機能します。 1 AN8 入力として機能します。 0 汎用ポートとして機能します。 1 AN7 入力として機能します。 ADE4 0 汎用ポートとして機能します。 1 AN6 入力として機能します。 ADE3 0 汎用ポートとして機能します。 1 AN5 入力として機能します。 ADE2 0 汎用ポートとして機能します。 1 AN4 入力として機能します。 0 汎用ポートとして機能します。 1 AN3 入力として機能します。 0 汎用ポートとして機能します。 1 AN2 入力として機能します。 DMAE0 PFR5 機 能 ADE5 ADE1 ADE0 237 第 5 章 I/O ポート 表 5.2-1 PFR レジスタの初期値と機能 (3 / 4) レジスタ名称 PFR6 ビット名称 ビット DRDE DWRE* AK12,AK11, AK10 AK02,AK01, AK00 PFR7 PFR9 AK22,AK21, AK20 AE23 汎用ポートとして機能します。 1 IORD 入力として機能します。 0 汎用ポートとして機能します。 1 IOWR 入力として機能します。 000 汎用ポートとして機能します。 001 DACK1( フライバイ転送時 FR30 互換 ) として機能します。 010 DACK1(2 サイクル転送 RD タイミング FR30 互換 ) 011 DACK1(2 サイクル転送 WRn タイミング FR30 互換 ) 100 DACK1(2 サイクル転送 SWE タイミング FR30 互換 ) 101 DACK1(2 サイクル転送 WRn, RD タイミング FR30 互換 ) 110 DACK1(2 サイクル転送 SWE, RD タイミング FR30 互換 ) 111 DACK1( チップセレクトタイミング ) として機能します。 000 汎用ポートとして機能します。 001 DACK0( フライバイ転送時 FR30 互換 ) として機能します。 010 DACK0(2 サイクル転送 RD タイミング FR30 互換 ) 011 DACK0(2 サイクル転送 WRn タイミング FR30 互換 ) 100 DACK0(2 サイクル転送 SWE タイミング FR30 互換 ) 101 DACK0(2 サイクル転送 WRn, RD タイミング FR30 互換 ) 110 DACK0(2 サイクル転送 SWE, RD タイミング FR30 互換 ) 111 DACK0( チップセレクトタイミング ) として機能します。 000 汎用ポートとして機能します。 001 DACK2( フライバイ転送時 FR30 互換 ) として機能します。 010 DACK2(2 サイクル転送 RD タイミング FR30 互換 ) 011 DACK2(2 サイクル転送 WRn タイミング FR30 互換 ) 100 DACK2(2 サイクル転送 SWE タイミング FR30 互換 ) 101 DACK2(2 サイクル転送 WRn, RD タイミング FR30 互換 ) 110 DACK2(2 サイクル転送 SWE, RD タイミング FR30 互換 ) 111 DACK2( チップセレクトタイミング ) として機能します。 0 汎用ポートとして機能します。 1 A23 入力として機能します。 AE22 0 汎用ポートとして機能します。 1 A22 入力として機能します。 AE21 0 汎用ポートとして機能します。 1 A21 入力として機能します。 0 汎用ポートとして機能します。 1 A20 入力として機能します。 AE19 0 汎用ポートとして機能します。 1 A19 入力として機能します。 AE18 0 汎用ポートとして機能します。 1 A18 入力として機能します。 0 汎用ポートとして機能します。 1 A17 入力として機能します。 0 汎用ポートとして機能します。 1 A16 入力として機能します。 AE20 AE17 AE16 238 0 機 能 第 5 章 I/O ポート 表 5.2-1 PFR レジスタの初期値と機能 (4 / 4) レジスタ名称 PFRB ビット名称 ビット SWEE BAAE ASXE MCKE MKEE BGRE PFRC CS7E 0 汎用ポートとして機能します。 1 SWE/WR 出力として機能します。 0 汎用ポートとして機能します。 1 SCAS/BAA 出力として機能します。 0 汎用ポートとして機能します。 1 SRAS/LBA/AS 出力として機能します。 0 汎用ポートとして機能します。 1 MCLK 出力として機能します。 0 汎用ポートとして機能します。 1 MCLKE 出力として機能します。 0 汎用ポートとして機能します。 1 BRQ 入力 /BGRNT 出力として機能します。 0 汎用ポートとして機能します。 1 CS7 入力として機能します。 CS6E 0 汎用ポートとして機能します。 1 CS6 入力として機能します。 CS5E 0 汎用ポートとして機能します。 1 CS5 入力として機能します。 0 汎用ポートとして機能します。 CS4E PFRD 機 能 1 CS4 入力として機能します。 CS1E 0 汎用ポートとして機能します。 1 CS1 入力として機能します。 CS0E 0 汎用ポートとして機能します。 1 CS0 入力として機能します。 SYSCE I2CBRG WR1XE 0 汎用ポートとして機能します。 1 SYSCLK 出力として機能します。 0 I2C の 2 チャネルと 3 チャネルを接続しません。 1 I2C の 2 チャネルと 3 チャネルを接続します。 0 汎用ポートとして機能します。 1 WR1 出力として機能します。 *: TOUT2 と IOWR の機能は同一ピンで兼用されています。以下に PFR2:TOE2 と PFR6:DWRE の組 合せと機能を示します。 PFR6 PFR2 DWRE TOE2 0 0 汎用ポート 0 1 TOUT2 出力 1 X IOWR Function 239 第 5 章 I/O ポート 240 第6章 割込みコントローラ 割込みコントローラの概要 , レジスタの構成 / 機能 , 割込みコントローラの動作 , およびホールドリクエ スト取下げ要求機能の使用例について説明します。 6.1 割込みコントローラの概要 6.2 割込みコントローラのレジスタ 6.3 割込みコントローラの動作 6.4 ホールドリクエスト取下げ要求機能 (HRCL) の使用例 241 第 6 章 割込みコントローラ 6.1 割込みコントローラの概要 割込みコントローラは , 割込み受付け / 調停処理を行います。 ■ ハードウェア構成 本モジュールは , 以下のものより構成されます。 • ICR レジスタ • 割込み優先度判定回路 • 割込みレベル , 割込み番号 ( ベクタ ) 発生部 • ホールドリクエスト取下げ要求発生部 ■ 主要機能 本モジュールには , 主に以下のような機能があります。 • NMI 要求 / 割込み要求の検出 • 優先度判定 ( レベルおよび番号による ) • 判定結果の要因の割込みレベル伝達 (CPU へ ) • 判定結果の要因の割込み番号伝達 (CPU へ ) • NMI/ 割込みレベルが "11111B" 以外の割込み発生によるストップモードからの復帰 指示 (CPU へ ) • バスマスタへのホールドリクエスト取下げ要求発生 242 第 6 章 割込みコントローラ ■ レジスタ一覧 図 6.1-1 レジスタ一覧 ( 続く ) bit 7 6 5 4 3 2 1 0 アドレス: 000440H - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR00 アドレス: 000441H - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR01 アドレス: 000442H - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR02 アドレス: 000443H - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR03 アドレス: 000444H - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR04 アドレス: 000445H - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR05 アドレス: 000446H - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR06 アドレス: 000447H - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR07 アドレス: 000448H - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR08 アドレス: 000449H - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR09 アドレス: 00044AH - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR10 アドレス: 00044BH - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR11 アドレス: 00044CH - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR12 アドレス: 00044DH - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR13 アドレス: 00044EH - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR14 アドレス: 00044FH - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR15 アドレス: 000450H - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR16 アドレス: 000451H - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR17 アドレス: 000452H - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR18 アドレス: 000453H - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR19 アドレス: 000454H - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR20 アドレス: 000455H - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR21 アドレス: 000456H - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR22 アドレス: 000457H - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR23 アドレス: 000458H - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR24 アドレス: 000459H - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR25 アドレス: 00045AH - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR26 アドレス: 00045BH - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR27 アドレス: 00045CH - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR28 アドレス: 00045DH - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR29 アドレス: 00045EH - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR30 アドレス: 00045FH - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR31 アドレス: 000460H - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR32 アドレス: 000461H - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR33 アドレス: 000462H - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR34 アドレス: 000463H - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR35 アドレス: 000464H - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR36 アドレス: 000465H - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR37 R/W R/W R/W R/W R/W 243 第 6 章 割込みコントローラ 図 6.1-1 レジスタ一覧 ( 続き ) bit 7 6 5 4 3 2 1 0 アドレス: 000466H アドレス: 000467H - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR38 - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR39 アドレス: 000468H アドレス: 000469H - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR40 - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR41 アドレス: 00046AH アドレス: 00046BH - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR42 - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR43 アドレス: 00046CH アドレス: 00046DH - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR44 - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR45 アドレス: 00046EH アドレス: 00046FH - - - ICR4 ICR3 ICR2 ICR1 ICR0 ICR46 - - - ICR4 R/W ICR3 R/W ICR2 R/W ICR1 R/W ICR0 R/W ICR47 - - LVL4 R/W LVL3 R/W LVL2 R/W LVL1 R/W LVL0 R/W HRCL アドレス: 000045H MHALTI R/W ■ ブロックダイヤグラム 図 6.1-2 ブロックダイヤグラム CPUへの NMI要求 スタンバイ解除信号 (LEVEL≠11111Bのとき"1") 優先度判定 NMI CPUへの割込み レベル信号 5 / NMI 処理 レベル, ベクタ 発生 レベル判定 各周辺リソース からの 割込み要求 ICR00 ・ ・ ・ ICR47 ベクタ 判定 R-bus 244 6 / ホールド リクエスト 取下げ 要求 MHALTI CPUへの割込み ベクタ信号 第 6 章 割込みコントローラ 6.2 割込みコントローラのレジスタ 割込みコントローラのレジスタ構成 , および機能について説明します。 ■ ICR(Interrupt Control Register) 図 6.2-1 ICR(Interrupt Control Register) のビット構成 bit アドレス:ch00 00000440H ∼ ch47 0000046FH 7 6 5 4 3 2 1 0 初期値 - - - ICR4 ICR3 ICR2 ICR1 ICR0 ---11111B R/W R/W R/W R/W R/W 割込み制御レジスタです。各割込み入力に対して 1 つずつ設けられており , 対応する割 込み要求の割込みレベルを設定します。 [bit 4 ∼ bit 0] ICR4 ∼ ICR0 割込みレベル設定ビットで , 対応する割込み要求の割込みレベルを指定します。 本レジスタに設定した割込みレベルが CPU の ILM レジスタに設定した ( された ) レ ベルマスク値以上の場合は , CPU 側にて割込み要求はマスクされます。 リセットにより , "11111B " に初期化されます。 表 6.2-1 に , 設定可能な割込みレベル設定ビットと割込みレベルの対応を示します。 表 6.2-1 設定可能な割込みレベル設定ビットと割込みレベルの対応 ICR4 ICR3 ICR2 ICR1 ICR0 0 0 0 0 0 0 0 1 1 1 0 14 0 1 1 1 1 15 NMI 1 0 0 0 0 16 設定可能な最強レベル 1 0 0 0 1 17 1 0 0 1 0 18 1 0 0 1 1 19 1 0 1 0 0 20 1 0 1 0 1 21 1 0 1 1 0 22 1 0 1 1 1 23 1 1 0 0 0 24 1 1 0 0 1 25 1 1 0 1 0 26 1 1 0 1 1 27 1 1 1 0 0 28 1 1 1 0 1 29 1 1 1 1 0 30 1 1 1 1 1 31 割込みレベル システム予約 (強) (弱) 割込み禁止 ( 注意事項 ) ICR4 は "1" 固定で , "0" を書き込むことはできません。 245 第 6 章 割込みコントローラ ■ HRCL(Hold Request Cancel Level register) 図 6.2-2 HRCL(Hold Request Cancel Level register) のビット構成 bit 7 アドレス:00000045H MHALTI R/W 6 5 4 3 2 1 0 - - LVL4 R/W LVL3 R/W LVL2 R/W LVL1 R/W LVL0 R/W 初期値 0--11111B ホールドリクエスト取下げ要求発生のためのレベル設定レジスタです。 [bit 7] MHALTI MHALTI は , NMI の要求による DMA 転送抑止ビットです。NMI 要求によって "1" にセットされ , "0" を書き込むことによってクリアされます。NMI ルーチンの最後 で通常の割込みルーチンと同様にクリアしてください。 [bit 4 ∼ bit 0] LVL4 ∼ LVL0 バスマスタへのホールドリクエスト取下げ要求を出すための割込みレベルを設定 します。 本レジスタに設定した割込みレベルより強いレベルを持つ割込み要求が発生した 場合は , バスマスタに対してホールドリクエスト取下げ要求を出します。 LVL4 ビットは "1" 固定で , "0" を書き込むことはできません。 246 第 6 章 割込みコントローラ 6.3 割込みコントローラの動作 割込みコントローラの動作の以下の項目について説明します。 • 優先順位判定 • NMI • ホールドリクエスト取下げ要求 • スタンバイモード ( ストップ / スリープ ) からの復帰 ■ 優先順位判定 本モジュールでは , 同時に発生している割込み要因の中で最も優先度の高い要因を選 択し , その要因の割込みレベルと割込み番号を CPU へ出力します。 割込み要因の優先順位判定基準は , 次のとおりです。 1. NMI 2. 以下の条件を満たす要因 - 割込みレベルの数値が 31 以外 (31 は割込み禁止 ) - 割込みレベルの数値が最も小さい要因 - その中で , 最も小さい割込み番号を持つ要因 上記の判定基準により割込み要因が1つも選択されなかった場合は, 割込みレベルとし て 31(11111B) を出力します。そのときの割込み番号は不定です。 ■ NMI(Non Maskable Interrupt) NMI は , 本モジュールが取り扱う割込み要因の中では最も優先順位が高くなっていま す。 そのため , ほかの割込み要因と同時発生の場合は常に NMI が選択されます。 ● NMI が発生すると , CPU に対して次の情報を伝えます。 割込みレベル :15(01111B) 割込み番号 :15(0001111B) ● NMI 検出 NMI の設定および検出は , 外部割込み /NMI モジュールで行います。本モジュールでは NMI 要求により , 割込みレベル / 割込み番号 , MHALTI の生成のみを行います。 ● NMI による DMA 転送の抑止 NMI 要求が発生すると , HRCL レジスタの MHALTI ビットが "1" になり , DMA 転送が 抑止されます。DMA 転送の抑止を解除したい場合は , NMI ルーチンの最後で MHALTI ビットを "0" にクリアしてください。 247 第 6 章 割込みコントローラ ■ ホールドリクエスト取下げ要求 (Hold Request Cancel Request) 優先度の高い割込み処理を CPU のホールド中に行う場合は , ホールドリクエスト発生 元においてリクエストを取り下げてもらう必要があります。この取下げ要求発生の基 準となる割込みレベルを HRCL レジスタに設定します。 ● 発生基準 HRCL レジスタに設定した割込みレベルより強いレベルの割込み要因が発生した場合は , ホールドリクエスト取下げ要求を発生します。 HRCL レジスタの割込みレベル > 優先度判定後の割込みレベル→取下げ要求発生 HRCL レジスタの割込みレベル ≦ 優先度判定後の割込みレベル→取下げ要求なし 取下げ要求発生原因となった割込み要因をクリアしない限り , この取下げ要求は有効 であり , 結果的にいつまでも DMA 転送が起こらないことになります。必ず対応する割 込み要因をクリアしてください。また , NMI を使用したときは , HRCL レジスタの MHALTI ビットが "1" となっているため , 取下げ要求が有効になっています。 ● 設定可能なレベル HRCL レジスタに設定可能な値は , ICR と同様に "10000B" から "11111B" までです。 "11111B" に設定した場合はすべての割込みレベルに対して取下げ要求を発生し , また , "10000B" に設定した場合は NMI でのみ取下げ要求を発生することになります。 表 6.3-1 に,ホールドリクエスト取下げ要求発生となる割込みレベルの設定を示しま す。 表 6.3-1 ホールドリクエスト取下げ要求発生となる割込みレベルの設定 HRCL レジスタ 取下げ要求発生となる割込みレベル 17 NMI, 割込みレベル 16 18 NMI, 割込みレベル 16, 17 31 ∼ NMI のみ ∼ 16 NMI, 割込みレベル 16 ∼ 30 [ 初期値 ] リセット後は , すべての割込みレベルに対して DMA 転送を抑止します。すなわち , 割 込みが発生していると DMA 転送が行われませんので , HRCL レジスタの値を必要な値 に設定してください。 248 第 6 章 割込みコントローラ ■ スタンバイモード ( ストップ / スリープ ) からの復帰 割込み要求の発生により , ストップモードから復帰する機能を本モジュールで実現し ます。NMI を含む , 周辺からの割込み要求 ( 割込みレベルが "11111B" 以外 ) が 1 つで も発生すると, クロック制御部に対してストップモードからの復帰要求を発生します。 優先度判定部はストップ復帰後クロックが供給されてから動作を再開しますので , 優 先度判定部の結果が出るまでの間 CPU は命令を実行することになります。 スリープ状態からの復帰においても同様に動作します。また , スリープ中であっても , 本モジュール内のレジスタはアクセス可能です。 <注意事項> • NMI 要求においてもストップモードからの復帰を行います。ただし , ストップ時に有効 な入力を検出するように NMI の設定を行ってください。 • ストップおよびスリープからの復帰の要因としたくない割込み要因は , 対応する周辺 の制御レジスタにて割込みレベルを "11111B" にしてください。 249 第 6 章 割込みコントローラ 6.4 ホールドリクエスト取下げ要求機能 (HRCL) の使用例 DMA 転送中に , CPU が優先度の高い処理を行うときは , DMA に対してホールドリ クエストを取り下げてホールド状態を解除する必要があります。ここでは , 割込み を利用して DMA に対してホールドリクエストの取下げ , すなわち , CPU の優先動作 を実現します。 ■ 制御レジスタ HRCL( ホールドリクエストキャンセルレベル設定レジスタ ): 本モジュール 本レジスタに設定した割込みレベルより強いレベルの割込みが発生した場合に , DMA に対してホールドリクエスト取下げ要求を発生します。その基準となるレベ ルを設定します。 ICR: 本モジュール 使用する割込み要因に対応する ICR に , HRCL レジスタよりも強いレベルを設定し ます。 ■ ハードウェア構成 各信号の流れは , 次のようになっています。 図 6.4-1 各信号の流れ 本モジュール IRQ バスアクセス要求 MHALTI I-UNIT DHREQ DMA B-UNIT CPU (ICR) (HRCL) 250 DHACK DHREQ : DHACK : IRQ : MHALTI: D-busホールドリクエスト D-busホールドアクノリッジ 割込み要求 ホールドリクエスト取下げ要求 第 6 章 割込みコントローラ ■ シーケンス 図 6.4-2 割込みレベル HRCL < ICR (LEVEL) RUN バスホールド ① CPU バスアクセス要求 割込み処理 ② バスホールド (DMA転送) 割込みルーチンの例 ① 割込み要因クリア ~ DHREQ ② RETI DHACK IRQ LEVEL MHALTI 割込み要求が発生すると割込みレベルが変化して , これが HRCL レジスタに設定した レベルより強いと DMA に対して MHALTI をアクティブ にします。これによって DMA はアクセス要求を取り下げ, CPUはホールド状態から復帰して割込み処理を行います。 多重割込みの場合を以下に示します。 図 6.4-3 割込みレベル HRCL < ICR ( 割込み I) < ICR ( 割込み II) RUN バスホールド CPU 割込みI 割込み処理II ③ ④ 割込み処理I ① ② バスホールド (DMA転送) バスアクセス要求 DHREQ DHACK IRQ1 IRQ2 LEVEL MHALTI 割込みルーチンの例 ① , ③割込み要因クリア ∼ ② , ④ RETI 上記例では , 割込みルーチン I を実行中にそれよりも優先度の高い割込みが発生した場 合を示しています。HRCL レジスタに設定した割込みレベルより高い割込みレベルが 発生している間は , DHREQ はさがっています。 <注意事項> HRCL レジスタと ICR に設定する割込みレベルの関係には , 十分注意してください。 251 第 6 章 割込みコントローラ 252 第7章 外部割込み /NMI 制御部 外部割込み /NMI 制御部の概要 , レジスタの構成 / 機能 , および動作について説明します。 7.1 外部割込み /NMI 制御部の概要 7.2 外部割込み /NMI 制御部のレジスタ 7.3 外部割込み /NMI 制御部の動作 253 第 7 章 外部割込み /NMI 制御部 外部割込み /NMI 制御部の概要 7.1 外部割込み制御部は , NMI および INT0 ∼ INT15 に入力される外部割込み要求の制 御を行うブロックです。 検出する要求のレベルとして , "H", "L", " 立上りエッジ ", " 立下りエッジ " から選 択できます (NMI 以外 ) 。 ■ レジスタ一覧 図 7.1-1 レジスタ一覧 bit 7 6 5 4 3 2 1 0 EN7 EN6 EN5 EN4 EN3 EN2 EN1 EN0 外部割込み許可レジスタ EN15 EN14 EN13 EN12 EN11 EN10 EN9 EN8 (ENIR) 15 14 13 12 11 10 9 8 ER7 ER6 ER5 ER4 ER3 ER2 ER1 ER0 外部割込み要因レジスタ ER15 ER14 ER13 ER12 ER11 ER10 ER9 ER8 (EIRR) bit 15 LB7 LB15 14 LA7 LA15 13 LB6 LB14 12 LA6 LA14 11 LB5 LB13 10 LA5 LA13 9 LB4 LB12 8 LA4 LA12 bit 7 LB3 LB11 6 LA3 LA11 5 LB2 LB10 4 LA2 LA10 3 LB1 LB9 2 LA1 LA9 1 LB0 LB8 0 LA0 LA8 bit 要求レベル設定レジスタ (ELVR) ■ ブロックダイヤグラム 図 7.1-2 ブロックダイヤグラム R-bus 8 割込み 要求 16 ゲート 要因 F/F エッジ検出回路 16 INT0~INT15 NMI 8 16 254 割込み許可レジスタ 割込み要因レジスタ 要求レベル設定レジスタ 第 7 章 外部割込み /NMI 制御部 7.2 外部割込み /NMI 制御部のレジスタ 外部割込み /NMI 制御部で使用するレジスタの構成 , および機能について説明します。 ■ 割込み許可レジスタ (ENIR : ENable Interrupt request Register) 図 7.2-1 割込み許可レジスタ (ENIR : ENable Interrupt request Register) のビット構成 bit ENIR0 アドレス : 000041H 7 6 5 4 3 2 1 0 初期値 EN7 EN6 EN5 EN4 EN3 EN2 EN1 EN0 00000000B [R/W] bit 7 ENIR1 アドレス : 000111H EN15 6 5 4 3 2 1 0 初期値 EN14 EN13 EN12 EN11 EN10 EN9 EN8 00000000B [R/W] ENIRn は外部割込み要求出力のマスク制御を行います。このレジスタの "1" を書かれ たビットに対応する割込み要求出力は許可され (INT0 の許可を EN0 が制御 ), 割込みコ ントローラに対して要求が出力されます。"0" が書かれたビットの対応する端子は割込 み要因を保持しますが , 割込みコントローラに対しては要求を発生しません。 NMI に対するマスクビットは , 存在しません。 ■ 外部割込み要因レジスタ (EIRR : External Interrupt Request Register) 図 7.2-2 外部割込み要因レジスタ (EIRR : External Interrupt Request Register) のビット構成 bit EIRR0 アドレス : 000040H 15 14 13 12 11 10 9 8 初期値 ER7 ER6 ER5 ER4 ER3 ER2 ER1 ER0 00000000B [R/W] bit 15 EIRR1 アドレス : 000110H ER15 14 13 12 11 10 9 8 初期値 ER14 ER13 ER12 ER11 ER10 ER9 ER8 00000000B [R/W] EIRRn は読出し時には対応する外部割込み要求があることを示し , 書込み時にはこの 要求を示すフリップフロップ (NMI フラグ ) 内容をクリアするレジスタです。この EIRR レジスタを読み出したときに "1" であった場合 , そのビットに対応する端子に外部割込 み要求があることを示します。また , このレジスタに "0" を書き込むと , 対応するビッ トの要求フリップフロップがクリアされます。 "1" の書込みは無効です。 リードモディファイライト(RMW)系命令での読出し時には "1" が読まれます。 NMI フラグは , ユーザからリード / ライトできません。 参考 : NMI フラグについては , 図 7.3-4 を参照してください。 255 第 7 章 外部割込み /NMI 制御部 ■ 外部割込み要求レベル設定レジスタ (ELVR : External LeVel Register) 図 7.2-3 外部割込み要求レベル設定レジスタ (ELVR : External LeVel Register) のビット構成 bit ELVR0 アドレス : 000042H 15 14 13 12 11 10 9 8 初期値 LB7 LA7 LB6 LA6 LB5 LA5 LB4 LA4 00000000B 7 6 5 4 3 2 1 0 初期値 LB3 LA3 LB2 LA2 LB1 LA1 LB0 LA0 00000000B [R/W] bit 000043H [R/W] bit 15 ELVR1 アドレス : 000112H LB15 14 13 12 11 10 9 8 初期値 LA15 LB14 LA14 LB13 LA13 LB12 LA12 00000000B 6 5 4 3 2 1 0 初期値 LA11 LB10 LA10 LB9 LA9 LB8 LA8 00000000B [R/W] bit 7 000113H LB11 [R/W] ELVRn は要求検出の選択を行うレジスタです。INT0 ∼ INT15 に 2 ビットずつが割り当て られていて , 以下のような設定になります。要求入力がレベルの場合 , EIRR の各ビッ トをクリアしても入力がアクティブレベルならば該当するビットは再びセットされま す。 表 7.2-1 ELVR 割当て表 LBx LAx 0 0 "L" レベルで要求あり 0 1 "H" レベルで要求あり 1 0 立上りエッジで要求あり 1 1 立下りエッジで要求あり 動作 <注意事項> • NMI は常にその立下りエッジが検出されます ( ストップ時を除く )。 • NMI はストップ時 , "L" レベル検出となります。 • INT はストップ時 ,"L" または "H" レベル検出にしてください ( エッジは不可 )。 256 第 7 章 外部割込み /NMI 制御部 外部割込み /NMI 制御部の動作 7.3 要求レベル , 許可レジスタの設定の後 , 対応する端子に ELVR レジスタで設定された 要求が入力されると本モジュールは , 割込みコントローラに対して割込み要求信号 を発生します。 ■ 外部割込みの動作について 割込みコントローラ内で同時発生した割込みの優先順位を識別した結果 , 本リソース からの割込みが最も優先順位が高かったときに , 該当する割込みが発生します。 図 7.3-1 外部割込みの動作 外部割込み リソース要求 ELVR 割込みコントローラ ICR yy EIRR ENIR CPU IL CMP ICR xx CMP ILM 要因 ■ スタンバイからの復帰について クロック停止モードのスタンバイ状態からの復帰に外部割込みを使う場合は , 入力要 求を "H" レベル要求または "L" レベル要求としてください。 エッジ要求ではクロック停止モードのストップ状態からの復帰は行われません。 ■ 外部割込みの動作手順について 外部割込み部内に存在するレジスタの設定を行う際 , 次の手順で設定してください。 1. 外部割込み入力として使用する端子と兼用する汎用入出力ポートを入力ポートに 設定する。 2. 許可レジスタの対象となるビットを禁止状態にする。 3. 要求レベル設定レジスタの対象となるビットを設定する。 4. 要因レジスタの対象となるビットをクリアする。 5. 許可レジスタの対象となるビットを許可状態にする ( ただし , 4. と 5. は 16 ビット データによる同時書込み可能 )。 本モジュール内のレジスタを設定するときには必ず許可レジスタを禁止状態に設定し ておかなくてはなりません。また , 許可レジスタを許可状態にする前に必ず要因レジス タをクリアしておく必要があります。これは , レジスタ設定時や割込み許可状態時に 誤って割込み要因が起こってしまうことを避けるためです。 257 第 7 章 外部割込み /NMI 制御部 ■ 外部割込み要求レベルについて • 要求レベルがエッジ要求のとき , エッジがあったことを検出するためには , パルス 幅は最小 3 マシンサイクル ( 周辺クロックマシンサイクル ) 必要とします。 • 要求入力レベルがレベル設定のとき , 外部より要求が入力され , その後取り下げら れても内部に要因保持回路が存在するので , 割込みコントローラへの要求はアク ティブのままです。 割込みコントローラへの要求を取り下げるには要因レジスタをクリアする必要があり ます。 図 7.3-2 レベル設定時の要因保持回路のクリア 割込み入力 レベル検知 要因F/F (要因保持回路) 許可ゲート 割込みコントローラ クリアしない限り要因を保持し続ける 図 7.3-3 割込み許可時の割込み要因と割込みコントローラへの割込み要求 割込み入力 割込みコントローラ への割込み要求 258 "H"レベル 要因 F/Fのクリアによってインアクティブとなる 第 7 章 外部割込み /NMI 制御部 ■ NMI • NMI は , ユーザ割込みの中で最強の割込みで , マスクすることはできません。例外 として , リセット直後から ILM を設定するまではマスクされます。 • NMI の受付けは下記のとおりです。 - 通常時 : 立下りエッジ - ストップ時 : "L" レベル • NMI によってストップモードの解除が可能です。ストップ状態で "L" レベルが入力 されるとストップ状態が解除され発振安定待ち時間が確保されます。 この発振安定待ち時間内に NMI 端子を "H" レベルに戻すと NMI 要因がなくなって しまい動作再開後 NMI 処理が行われません。ストップ状態解除後に NMI 処理を行 いたい場合は , NMI 端子を "L" レベルのままにして , NMI 処理ルーチン内で "H" レ ベルに戻すようにしてください。 NMI 要求検出部には NMI フラグがあり , NMI 要求によりセットされ , NMI 自身の割込 みの受付け , もしくは , リセットでのみクリアされます。 なお , このビットはリード / ライトできません。 図 7.3-4 NMI 要求検出 (NMIフラグ) NMI要求 Q (ストップ解除) 0 SX R 立下り エッジ検出 NMI 1 ストップ クリア (RST,割込みアクノリッジ) ■ 外部割込みを使用したクロック発振停止した STOP 状態からの復帰時における注 意事項 クロック発振停止した STOP 状態時に , INT 端子への最初に入力された外部割込み信号 は非同期で入力され , STOP 状態から復帰することが可能です。ただし , その STOP 解 除から , 発振安定待ち時間経過するまでの期間においては , 他の外部割込み信号の入力 を認識できない期間が存在します ( 図 7.3-5 の b+c 期間 )。STOP 解除後の外部入力信 号を内部クロックに同期させるため , クロックが安定していない期間内は , その割込み 要因を保持できないためです。 そのため , STOP 解除後の外部割込み入力を行う場合には , 発振安定待ち時間経過後に 外部割込み信号を入力してください。 エッジ検出の INT0 の後にレベル検出の INT1 が入力された場合の例を示します。 発振安定待ち時間中に入力されたレベル入力は,検出されません。 259 第 7 章 外部割込み /NMI 制御部 図 7.3-5 STOP 状態からの外部割込みによる復帰動作のシーケンス INT1 INT0 内部STOP 内部動作(RUN) 命令実行(run) X0 内部Clock 割込みフラグクリア 割込み要因ビットER0 割込み要因ビットER1 (a)STOP (b)振動子の発振時間 (d)RUN (c)振動子発振安定時間 ■ STOP 状態からの復帰動作について 現行回路の外部割込みによる STOP 復帰動作は , 以下の動作によって行なわれます。 ● STOP 遷移前の処理 外部割込みの設定 デバイスが STOP 状態に遷移する前に STOP 状態時の割込み入力パスを許可する必 要があるので,対応する外部割込み入力端子をポート入力に設定してください。 • 外部割込みの入力 STOP 状態から復帰させたいとき , 外部割込み信号は非同期で入力信号を伝える状 態となっています。この割込み入力がアサートされるとただちに内部 STOP 信号を 立ち下げる動作が行われます。同時に外部割込み回路では他のレベル割込み入力の 同期化を行うように切り換わります。 ● 振動子の発振時間 外部割込み検出後 , クロックの発振が開始されます。振動子の発振時間は使用され る振動子により異なります。 ● 発振安定待ち時間 振動子の発振時間後にデバイス内部で発振安定待ち時間がとられます。発振安定待 ち時間はスタンバイ制御レジスタの OS1, OS0 ビットにより指定します。発振安定 待ち時間終了後 , 内部クロックが供給され , 外部割込みによる割込み命令動作が開 始されると共に , STOP からの復帰要因以外の外部割込み要因を受け付け可能にな ります。 260 第8章 REALOS 関連ハード REALOS 関連ハードの遅延割込みモジュールと ビットサーチモジュールについて説明します。 REALOS 関連ハードは , リアルタイム OS により 使用されます。したがって , REALOS を使用する 場合にはユーザプログラムでは使用できません。 8.1 遅延割込みモジュール 8.2 遅延割込みモジュールのレジスタ 8.3 遅延割込みモジュールの動作 8.4 ビットサーチモジュール 8.5 ビットサーチモジュールのレジスタ 8.6 ビットサーチモジュールの動作 261 第 8 章 REALOS 関連ハード 8.1 遅延割込みモジュール 遅延割込みモジュールは , タスク切換え用の割込みを発生するためのモジュールで す。 本モジュールを使用することで , ソフトウェアで CPU に対して割込み要求の発生 / 取消しを行うことができます。 ■ レジスタ一覧 図 8.1-1 レジスタ一覧 bit 7 6 5 4 3 2 1 0 アドレス : 00000044H - - - - - - - DLYI R/W ■ ブロックダイヤグラム 図 8.1-2 ブロックダイヤグラム R-bus 割込み要求 262 DLYI DICR 第 8 章 REALOS 関連ハード 8.2 遅延割込みモジュールのレジスタ 遅延割込みモジュールで使用するレジスタの構成 , および機能について説明します。 ■ DICR(Delayed Interrupt Control Register) 図 8.2-1 DICR(Delayed Interrupt Control Register) のビット構成 bit 7 6 5 4 3 2 1 0 アドレス : 00000044H - - - - - - - DLYI R/W -------0B( 初期値 ) 遅延割込みを制御するレジスタです。 [bit 0] DLYI DLYI 説明 0 遅延割込み要因の解除・要求なし〔初期値〕 1 遅延割込み要因の発生 本ビットにより , 該当する割込み要因の発生・解除を制御します。 263 第 8 章 REALOS 関連ハード 8.3 遅延割込みモジュールの動作 遅延割込みは , タスク切換え用の割込みを発生するものです。本機能を使用するこ とにより , ソフトウェアで CPU に対して割込み要求の発生 , 取消しを行うことがで きます。 ■ 割込み番号 遅延割込みは, 最も大きな割込み番号に対応した割込み要因に割り当てられています。 MB91305 では , 遅延割込みを割込み番号 63(3FH) に割り当てています。 ■ DICR の DLYI ビット このビットに "1" を書き込むことで , 遅延割込み要因が発生します。また , "0" を書き 込むことで遅延割込み要因を解除します。 本ビットは , 一般の割込みにおける割込み要因フラグと同じものであり , 割込みルーチ ンの中で本ビットをクリアし , 合わせてタスクの切換えを行うようにしてください。 264 第 8 章 REALOS 関連ハード 8.4 ビットサーチモジュール 入力レジスタに書き込まれたデータに対して , 0, 1, または変化点を検索し , 検出し たビット位置を返します。 ■ レジスタ一覧 図 8.4-1 レジスタ一覧 31 0 アドレス : 0003F0H BSD0 0 検出用データレジスタ アドレス : 0003F4H BSD1 1 検出用データレジスタ アドレス : 0003F8H BSDC 変化点検出用データレジスタ アドレス : 0003FCH BSRR 検出結果レジスタ ■ ブロックダイヤグラム 図 8.4-2 ブロックダイヤグラム D-bus 入力ラッチ アドレス デコーダ 検出モ ー ド 1検出データ化 ビットサーチ回路 検索結果 265 第 8 章 REALOS 関連ハード 8.5 ビットサーチモジュールのレジスタ ビットサーチモジュールで使用するレジスタの構成 , および機能について説明しま す。 ■ 0 検出用データレジスタ (BSD0) 図 8.5-1 0 検出用データレジスタ (BSD0) のビット構成 31 0 000003F0H リード / ライト→ W 初期値 → XXXXXXXXH 書き込んだ値に対して 0 検出を行います。 リセットによる初期値は不定です。読出し値は不定です。 データ転送には , 32 ビット 長のデータ転送命令を使用してください (8 ビット , 16 ビッ ト長のデータ転送命令は使わないでください ) 。 ■ 1 検出用データレジスタ (BSD1) 図 8.5-2 1 検出用データレジスタ (BSD1) のビット構成 31 0 000003F4H リード / ライト→ R/W 初期値 → XXXXXXXXH データ転送には , 32 ビット 長のデータ転送命令を使用してください (8 ビット , 16 ビッ ト 長のデータ転送命令は使わないでください ) 。 • 書込み時 書き込んだ値に対して "1" を検出します。 • 読出し時 ビットサーチモジュールの内部状態の退避用データが読み出されます。割込みハ ンドラなどがビットサーチモジュールを使用する場合に , 元の状態を退避 / 復帰す るときに使用します。 0 検出 , 変化点検出 , データレジスタにデータを書き込んだ場合でも , 1 検出用デー タレジスタのみ操作することで退避 / 復帰できます。 リセットによる初期値は不定です。 266 第 8 章 REALOS 関連ハード ■ 変化点検出用データレジスタ (BSDC) 図 8.5-3 変化点検出用データレジスタ (BSDC) のビット構成 31 0 000003F8H リード / ライト→ W 初期値 → XXXXXXXXH 書き込んだ値に対して変化点の検出を行います。 リセットによる初期値は不定です。 読出し値は不定です。 データ転送には , 32 ビット 長のデータ転送命令を使用してください (8 ビット , 16 ビッ ト 長のデータ転送命令は使わないでください ) 。 ■ 検出結果レジスタ (BSRR) 図 8.5-4 検出結果レジスタ (BSRR) のビット構成 31 0 000003FCH リード / ライト→ R 初期値 → XXXXXXXXH 0 検出 , 1 検出 , または変化点検出の結果が読み出されます。 どの検出結果が読み出されるかは , 最後に書き込んだデータレジスタによって決定さ れます。 267 第 8 章 REALOS 関連ハード 8.6 ビットサーチモジュールの動作 ビットサーチモジュールは , 次の 3 つの動作を行います。 • 0 検出 • 1 検出 • 変化点検出 ■ 0 検出 0 検出用データレジスタに書き込まれたデータを MSB から LSB へスキャンし , 最初の "0" を検出した位置を返します。 検出結果は , 検出結果レジスタを読み出すことで得られます。 検出した位置と , 返す数値の関係は , 表 8.6-1 のとおりです。 "0" が存在しないとき ( すなわち FFFFFFFFH という数値のとき ), 32 という値をサーチ 結果として返します。 【実行例】 書込みデータ 11111111111111111111000000000000B 11111000010010011110000010101010B 10000000000000101010101010101010B 11111111111111111111111111111111B 読出し値 (10 進 ) (FFFFF000H) (F849E0AAH) (8002AAAAH) (FFFFFFFFH) → 20 →5 →1 → 32 ■ 1 検出 1 検出用データレジスタに書き込まれたデータを MSB から LSB へスキャンし , 最初の "1" を検出した位置を返します。 検出結果は , 検出結果レジスタを読み出すことで得られます。 検出した位置と返す値との関係は , 表 8.6-1 のとおりです。 "1" が存在しないとき ( すなわち 00000000H という数値のとき ), 32 という値をサーチ 結果として返します。 【実行例】 書込みデータ 00100000000000000000000000000000B 00000001001000110100010101100111B 00000000000000111111111111111111B 00000000000000000000000000000001B 00000000000000000000000000000000B 268 読出し値 (10 進 ) (20000000H) (01234567H) (0003FFFFH) (00000001H) (00000000H) →2 →7 → 14 → 31 → 32 第 8 章 REALOS 関連ハード ■ 変化点検出 変化点検出用データレジスタに書き込まれたデータを bit 30 から LSB へスキャンし , MSB の値と比較します。最初に MSB と異なる値を検出した位置を返します 。 検出結果は , 検出結果レジスタを読み出すことで得られます。 検出した位置と返す値は , 表 8.6-1 の示すとおりです。 変化点が存在しないときは , 32 を返します。 変化点検出では , 結果として "0" を返すことはありません。 【実行例】 書込みデータ 読出し値 (10 進 ) 00100000000000000000000000000000B 00000001001000110100010101100111B 00000000000000111111111111111111B 00000000000000000000000000000001B 00000000000000000000000000000000B 11111111111111111111000000000000B 11111000010010011110000010101010B 10000000000000101010101010101010B 11111111111111111111111111111111B (20000000H) (01234567H) (0003FFFFH) (00000001H) (00000000H) (FFFFF000H) (F849E0AAH) (8002AAAAH) (FFFFFFFFH) →2 →7 → 14 → 31 → 32 → 20 →5 →1 → 32 表 8.6-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 269 第 8 章 REALOS 関連ハード ■ 退避・復帰の処理 割込みハンドラ中で , ビットサーチモジュールを使う場合のように , ビットサーチモ ジュールの内部状態を退避・復帰させる必要がある場合は , 以下の手順に従ってくださ い。 1. 1 検出用データレジスタを読み出し , この内容を保存する ( 退避 ) 2. ビットサーチモジュールを使用 3. 1. で退避したデータを 1 検出用データレジスタに書き込む ( 復帰 ) 以上の操作により , 次に検出結果レジスタを読み出したときに得られる値は , 1. 以前に ビットサーチモジュールに書き込まれた内容に応じたものとなります。最後に書き込 まれたデータレジスタが0検出用または変化点検出用であっても, 上記手順で正しく元 に戻ります。 270 第9章 10 ビット A/D コンバータ 10 ビット A/D コンバータの概要 , レジスタの構成 / 機能 , および動作について説明します。 9.1 10 ビット A/D コンバータの概要 9.2 10 ビット A/D コンバータのレジスタ 9.3 10 ビット A/D コンバータの動作 271 第 9 章 10 ビット A/D コンバータ 9.1 10 ビット A/D コンバータの概要 10 ビット逐次比較形 A/D コンバータで , ソフトウェアによる変換起動と外部トリガ による変換起動モードを有します。 ■ 10 ビット A/D コンバータの特長 • 変換時間 約 8.18 µs ( サンプリング 6.09 µs, 変換 2.09 µs) fCH:32MHz 時 • A/D 変換結果用レジスタをチャネルごとに用意 • チャネルスキャン機能あり ■ レジスタ構成 図 9.1-1 レジスタ構成 15 000020H 000022H 000024H 000026H 000028H 00002AH 00002CH 00002EH 000030H 000032H 000034H 000036H 000038H 0 ADCTH ADCTL ADCH ADAT0 ADAT1 ADAT2 ADAT3 ADAT4 ADAT5 ADAT6 ADAT7 ADAT8 ADAT9 TEST A/D 制御レジスタ A/D アナログ入力選択レジスタ A/D 変換データ ch0 A/D 変換データ ch1 A/D 変換データ ch2 A/D 変換データ ch3 A/D 変換データ ch4 A/D 変換データ ch5 A/D 変換データ ch6 A/D 変換データ ch7 A/D 変換データ ch8 A/D 変換データ ch9 A/D 変換部テストレジスタ ( アクセス禁止 ) 図 9.1-2 A/D コンバータ構成図 AN0~AN9 ATRG端子 272 A/D ATRG IRQ 第 9 章 10 ビット A/D コンバータ ■ ブロックダイヤグラム 図 9.1-3 ブロックダイヤグラム バッファ × 10 D/A コンバータ 部 デ ー タ バ ス 内 P X M AN9 AN8 AN7 AN6 AN5 AN4 AN3 AN2 AN1 AN0 コンパレータ コントロールロジック S/H A/D チャネル & ステータス コントロールロジック 外部端子 ATRG IRQ 273 第 9 章 10 ビット A/D コンバータ 9.2 10 ビット A/D コンバータのレジスタ 10 ビット A/D コンバータで使用するレジスタの構成 , および機能について説明しま す。 ■ A/D 制御レジスタ (ADCTH, ADCTL) 図 9.2-1 A/D 制御レジスタ (ADCTH, ADCTL) のビット構成 ADCTH 15 14 13 12 11 10 9 8 初期値 000020H "0" "0" "0" "0" "0" "0" TRG STR XXXXXX00B (R/W) (R/W) (R/W) (R/W) (R/W) (R/W) (R/W) (R/W) 7 6 5 4 3 2 1 0 初期値 000021H ASS3 ASS2 ASS1 ASS0 BUSY "0" INT INTE 00000X00B (R/W) (R/W) (R/W) (R/W) (R/W) (R/W) (R/W) (R/W) ADCTL [bit 15 ∼ bit 10] Don't Care 常に "0" が読み出されます。 [bit 9] TRG 0 外部端子トリガでの起動禁止 1 外部端子トリガでの起動 TRG=1 のとき外部端子 (ATRG) 入力の立上りエッジを検出して A/D 変換を起動し ます。 A/D 変換中にエッジ検出された場合は無視されます。 [bit 8] STR A/D 変換スタートビットです。 0 影響なし 1 ソフト起動 / 再起動 ( 変換中の書込み ) このビットをリードした場合 , 常に "0" が読み出されます。 [bit 7 ∼ bit 4] ASS3 ∼ ASS0 選択されているアナログチャネルが読み出されます。 [bit 3] BUSY=1 のときに有効なデータが読み出されます。 0∼9 274 選択チャネル 第 9 章 10 ビット A/D コンバータ [bit 3] BUSY A/D 変換中を示すフラグです。 0 変換中でない 1 変換中 [bit 2] Don't Care 常に "0" が読み出されます。 [bit 1] INT A/D 変換終了フラグです。 0 変換なし。または変換中 1 変換完了 [bit 0] INTE A/D 変換割込み許可ビットです。 0 割込み禁止 1 割込み許可 INT=1 のとき INTE=1 なら割込み要求を発生します。 ■ ソフト変換アナログ入力選択レジスタ (ADCH) 図 9.2-2 ソフト変換アナログ入力選択レジスタ (ADCH) のビット構成 ADCH 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 初期値 "0" "0" "0" "0" "0" "0" i9 i8 i7 i6 i5 i4 i3 i2 i1 i0 0000H 000022H (R/W) [bit 15 ∼ bit 10] Don't Care 常に "0" が読み出されます。 [bit 9 ∼ bit 0] i9 ∼ i0 ソフト変換用アナログ入力選択ビットです。 0 入力非選択 1 入力選択 複数の入力が選択されている場合には , 選択されている入力すべてに対し順次 , 変 換されます。 275 第 9 章 10 ビット A/D コンバータ ■ A/D 変換結果レジスタ (ADAT0 ∼ ADAT9) 図 9.2-3 A/D 変換結果レジスタ (ADAT0 ∼ ADAT9) のビット構成 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ADAT0 ∼ "0" "0" "0" "0" "0" "0" d9 ADAT9 d8 d7 d6 d5 d4 d3 d2 d1 d0 XXXXXX00 00000000B 000024H ∼ 000036H 初期値 (R) [bit 15 ∼ bit 10] Don't Care 常に "0" がリードされます。 [bit 9 ∼ bit 0] d9 ∼ d0 各チャネルに対応した A/D 変換結果が格納されます。 ■ A/D 変換部テストレジスタ (TEST) 図 9.2-4 A/D 変換部テストレジスタ (TEST) のビット構成 15 14 13 12 11 10 9 8 7 TEST TEST 000038H (R/W) [bit 15 ∼ bit 0] TEST A/D 変換部テスト用レジスタ。 <注意事項> 本レジスタにはアクセスしないでください。 276 6 5 4 3 0 2 1 0 初期値 0000H 第 9 章 10 ビット A/D コンバータ 9.3 10 ビット A/D コンバータの動作 ソフト変換 , および外部トリガ変換による A/D 動作について説明します。 ■ ソフト変換による A/D 動作 ソフト変換による A/D 変換を行うには , まず , アナログ入力端子 AN0 ∼ AN9 の 10 本 のうちから必要なチャネルを選択します。ADCH レジスタの対応するビットに "1" を 書き込むことにより有効となります。 ● 単一チャネルの場合 変換用アナログ入力端子として 1 チャネルのみを選択した場合 , ADCTH レジスタの STR ビットに "1" を書き込むことにより , ソフト変換動作が開始され , ADCH レジスタ の BUSY ビットは "1" にセットされます。 変換動作中に STR ビットに再度 "1" を書き込むと変換動作は初期化され , 再び変換が 開始されます。 A/D 変換動作が終了すると , ADCH レジスタの BUSY ビットは "0" にリセットされ , ADCTL レジスタの INT ビットは "1" にセットされます。これらのステータスビットを 読むことにより変換動作の終了を判別できます。また , 変換完了の割込みを発生したい 場合は , ADCTL レジスタの INTE ビットを "1" にしておきます。 ● 複数チャネルの場合 ( スキャン変換 ) 変換用アナログ入力端子として複数のチャネルを選択した場合 , 自動的に各チャネル 選択の有無を調べ , 順次チャネル切換えと A/D 変換の起動をし , 変換結果を各チャネル に対応したレジスタへ格納します。 ADCH レジスタの対応ビットに "1" を書き込んで , 変換するチャネルを選択し , ADCH レジスタの STR ビットに "1" を書き込むことで変換動作が開始し , ADCTL レジスタの BUSY ビットは "1" にセットされます。変換チャネルは ch0 から ch9 の順で選択され , ADCH レジスタで選択されていないチャネルは変換を行わずに次に選択されている チャネルの変換に移ります。 変換動作中に STR ビットに再度 "1" を書き込むと変換動作は初期化され , 再び ch0 か ら ch9 の順で選択されたチャネルの変換を開始します。 すべての選択したチャネルの A/D 変換動作が終了すると , ADCTL レジスタの BUSY ビットは "0" にリセットされ , ADCTL レジスタの INT ビットは "1" にセットされます。 また , 変換完了の割込みを発生したい場合は , ADCTL レジスタの INTE ビットを "1" に しておきます。 A/D 変換された結果は , 各チャネルのレジスタに格納されます。 277 第 9 章 10 ビット A/D コンバータ ■ 外部トリガ変換による A/D 動作 外部トリガ起動を許可した場合 (ADCTH:TRG=1) には , 外部端子 (ATRG) 入力の立上り エッジを検出して A/D 変換を開始します。外部トリガ許可の状態でソフト起動した場 合も開始します。また , A/D 起動中に再度外部端子 (ATRG) 入力の立上りエッジを検出 した場合には変換動作は継続され,エッジは無視されます。 <注意事項> 低消費電力モードをストップモードにする場合には , A/D 変換動作が停止しているときに 行ってください。 278 第 10 章 16 ビットリロードタイマ 16 ビットリロードタイマの概要 , レジスタの構成 / 機能 , および 16 ビットリロードタイマの動作につ いて説明します。 10.1 16 ビットリロードタイマの概要 10.2 16 ビットリロードタイマのレジスタ 10.3 16 ビットリロードタイマの動作説明 279 第 10 章 16 ビットリロードタイマ 10.1 16 ビットリロードタイマの概要 16 ビットタイマは , 16 ビットのダウンカウンタ , 16 ビットのリロードレジスタ , 内 部カウントクロック作成用プリスケーラ , コントロールレジスタで構成されていま す。 ■ 16 ビットリロードタイマの概要 16 ビットタイマは,16 ビットのダウンカウンタ,16 ビットのリロードレジスタ,内部 カウントクロック作成用プリスケーラ,コントロールレジスタで構成されてきます。 本品種は,16 ビットリロードタイマを 0 ∼ 2 までの 3 チャネル内蔵しています。 チャネル 0 ∼ 2 は,割込みによる DMA 転送の起動が可能です。 入力クロックとして内部クロック 3 種類 ( マシンクロックの 2 / 8 / 32 分周 ) と 外部ク ロックから選択できます。 出力端子 (TOUT) はリロードモード時にはアンダフロー発生ごとにトグル出力波形を 出力し,ワンショットモード時にはカウント中を示す短形波を出力します。 入力端子 (TIN) は外部イベントカウントモード時にイベント入力となり,内部クロッ クモード時にはトリガ入力またはゲート入力として使用することができます。 外部イベントカウント機能をリロードモードで使用すると,外部クロックモードの分 周器として利用することができます。 280 第 10 章 16 ビットリロードタイマ ■ ブロックダイヤグラム 図 10.1-1 に 16 ビットリロードタイマのブロックダイヤグラムを示します。 図 10.1-1 16 ビットリロードタイマのブロックダイヤグラム 16ビットリロードレジスタ (TMRLR) リロード 16ビットダウンカウンタ (TMR) UF RELD OUT CTL カウントイネーブル OUTL R-bus INTE UF クロックセレクタ CSL1 CNTE CSL0 TRG IRQ 外部タイマ出力 EXCK IN CTL TOE0~TOE3 プリスケーラ プリスケーラ クリア MOD2 MOD1 φ PFRK内のビット MOD0 外部 トリガ 選択 外部トリガ入力 281 第 10 章 16 ビットリロードタイマ ■ レジスタ一覧 図 10.1-2 16 ビットリロードタイマレジスタ 15 14 13 12 11 10 9 8 - - - - CSL1 CSL0 7 6 5 4 3 2 1 0 MOD0 - OUTL RELD INTE UF CNTE TRG MOD2 MOD1 コントロールステータスレジスタ (TMCSR) 15 0 16 ビットタイマレジスタ (TMR) 15 0 16 ビットリロードレジスタ (TMRLR) ■ 16 ビットリロードタイマの端子名 本タイマは 3 つ内蔵されており,入力端子名(TIN)と出力端子名(TOUT)は以下の ようになります。 282 入力端子名(TIN) 出力端子名(TOUT) タイマ 0 TIN0 TOUT0 タイマ 1 TIN1 TOUT1 タイマ 2 TIN2 TOUT2 第 10 章 16 ビットリロードタイマ 10.2 16 ビットリロードタイマのレジスタ 16 ビットリロードタイマで使用するレジスタの構成と機能について説明します。 ■ コントロールステータスレジスタ (TMCSR) コントロールステータスレジスタ (TMCSR) は,16 ビットタイマの動作モードおよび 割込みの制御をします。 図 10.2-1 コントロールステータスレジスタ (TMCSR) のビット構成 TMCSR アドレス : ch0 00004EH ch1 000056H ch2 00005EH 15 - 14 - 7 MOD0 R/W 6 R/W 13 (R/W) 12 (R/W) 5 R/W 4 RELD R/W 11 CSL1 R/W 3 INTE R/W 10 CSL0 R/W 2 UF R/W 9 8 MOD2 MOD1 R/W R/W 1 CNTE R/W 0 TRG R/W 初期値 ----0000 00000000B UF, CNTE, TRG ビット以外のビットの書換えは , CNTE=0 のときに行うようにしてく ださい。 コントロールステータスレジスタ (TMCSR) には,同時書込みが可能です。 以下に,コントロールステータスレジスタ (TMCSR) のビット機能を説明します。 [bit 11,bit 10] CSL1, CSL0 (Conut source SeLect) これらのビットは,カウントソースセレクトビットです。これらのビットによって 選択されるクロックソースを表 10.2-1 に示します。また , 外部イベントカウント モードを設定した場合のカウント有効エッジは MOD1, MOD0 ビットにより設定さ れます。 表 10.2-1 CSL ビット設定カウントソース CSL1 CSL0 0 0 φ/21 (ch0 ∼ ch2) 0 1 3 φ/2 (ch0 ∼ ch2) 1 0 φ/25 (ch0 ∼ ch2) 1 1 外部クロック (ch0 ∼ ch2) カウントソース (φ:マシンクロック ) <注意事項> 外部クロックに必要な最小パルス幅は , 2T(T: 周辺系クロックマシンサイクル ) です。 283 第 10 章 16 ビットリロードタイマ [bit 9,bit 8,bit 7] MOD2, MOD1, MOD0 (MODe) これらのビットは,動作モードおよび入出力端子の機能を選択するビットです。 MOD2 ビットは,入力端子の機能を選択するビットです。"0" の場合入力端子はト リガ入力端子となり,有効エッジが入力されるとリロードレジスタの内容をカウン タへロードし,カウント動作を継続します。"1" の場合はゲートカウントモードに なり,入力端子はゲート入力となって有効レベルが入力されている間のカウントを します。 MOD1,0 ビットは,各モードにおける端子の機能を設定します。MOD2, 1, 0 ビット の設定内容を,表 10.2-2 および表 10.2-3 に示します。 表 10.2-2 MOD2 ∼ MOD0 の設定方法 1 ( 内部クロックモード時 (CSL0, 1= 00, 01,10)) MOD2 MOD1 MOD0 0 0 0 0 0 1 0 1 0 0 1 1 1 X 0 1 X 1 入力端子機能 有効エッジ,レベル - トリガ禁止 立上りエッジ トリガ入力 立下りエッジ 両エッジ "L" レベル ゲート入力 "H" レベル ( 注意事項 ) 表中の "X" は , 任意の値を示します。 表 10.2-3 MOD2 ∼ MOD0 の設定方法 2 ( イベントカウントモード時 (CSL0,1 = 11)) MOD2 MOD1 MOD0 入力端子機能 有効エッジ,レベル 0 0 - - 0 1 1 0 1 1 立上りエッジ X イベント入力 立下りエッジ 両エッジ <注意事項>表中の "X" は , 任意の値を示します。 [bit 6] (reserved) このビットは未使用ビットです。読出し時,常に "0" が読めます。 [bit 5] (OUTL) このビットは,TOUT 端子の出力レベルを設定します。このビットが "0" のときと "1" のときでは,端子のレベルが逆になります。このビットと bit 4 (RELD ビット ) および I/O ポートの PFR レジスタの該当ビットの組合せによって出力波形を指定し ます。表 10.2-4 にこれらのビットの組合せによる設定内容を示します。 284 第 10 章 16 ビットリロードタイマ 表 10.2-4 PFR, RELD,OUTL の設定内容 PFR OUTL RELD 0 X X 汎用ポート 1 0 0 カウント中 "H" 短形波 1 1 0 カウント中 "L" 短形波 1 0 1 カウンタスタート時 "L" のトグル出力 1 1 1 カウンタスタート時 "H" のトグル出力 出力波形 <注意事項> PFR は I/O ポートの PFR レジスタの該当ビット [bit 4] RELD このビットは,リロード許可ビットです。"1" のときリロードモードになり , カウン タの値が "0000H" → "FFFFH " へのアンダフローと同時にリロードレジスタの内容を カウンタへロードしてカウント動作を続けます。 "0" のときワンショットモードになり , カウンタの値が "0000H " → "FFFFH" へのア ンダフローによりカウント動作を停止します。 [bit 3] INTE このビットは,割込み要求許可ビットです。INIT ビットが "1" のとき , UF ビットが "1" になると割込み要求を発生します。"0" のときは , 割込み要求を発生しません。 [bit 2] UF このビットは,タイマ割込み要求フラグです。カウンタの値が , "0000H " → "FFFFH" へのアンダフローにより "1" にセットされます。"0" の書込みによってクリアされ ます。 このビットに対して "1" の書込みは , 意味がありません。リードモディファイライ ト (RMW) 系命令における読出し時には , "1" が読み出されます。 [bit 1] CNTE このビットは,タイマのカウントイネーブルビットです。このビットに "1" を書き 込むと , 起動トリガ待ち状態になります。このビットへ "0" を書き込むと,カウン ト動作は停止します。 285 第 10 章 16 ビットリロードタイマ [bit 0] TRG このビットは , ソフトウェアトリガビットです。"1" 書込みによりソフトウェアトリ ガがかかり , リロードレジスタの内容をカウンタへロードしてカウント動作を開始 します。 このビットに対して "0" の書込み動作は , 意味がありません。読出し値は , 常に "0" です。 このレジスタによるトリガ入力は , CNTE="1" のときのみ有効となります。 CNTE="0" のときには , 何も起こりません。 ■ 16 ビットタイマレジスタ (TMR) 16 ビットタイマレジスタ (TMR) は,16 ビットタイマのカウント値を読み出すことが できるレジスタです。初期値は不定です。 このレジスタの読出しは , 必ず 16 ビットデータ転送命令で行ってください。 図 10.2-2 16 ビットタイマレジスタ (TMR) のビット構成 TMR アドレス : 15 ch0 00004AH ch1 000052H R ch2 00005AH 0 初期値 XXXXH R R R R R R R ■ 16 ビットリロードレジスタ (TMRLR) 16 ビットリロードレジスタ (TMRLR) は , カウントの初期値を保持するレジスタです。 初期値は不定です。このレジスタへの書込みは , 必ず 16 ビットデータ転送命令で行っ てください。 図 10.2-3 16 ビットリロードレジスタ (TMRLR) のビット構成 TMRLR アドレス : 15 ch0 000048H ch1 000050H W ch2 000058H 286 0 初期値 XXXXH W W W W W W W 第 10 章 16 ビットリロードタイマ 16 ビットリロードタイマの動作説明 10.3 16 ビットリロードタイマの動作について説明します。 ■ 動作説明 ● 内部クロック動作 内部クロックの分周クロックでタイマを動作させる場合 , クロックソースとしてマシ ンクロックの 2/8/32 分周のクロックから選択できます。 外部入力端子は,レジスタの設定によりトリガ入力またはゲート入力に使用できます。 カウント許可と同時にカウント動作を開始したい場合は , コントロールステータスレ ジスタの CNTE ビットと TRG ビットの両方に "1" を書き込んでください。 TRG ビットによるトリガ入力は , タイマが起動状態のとき (CNTE="1") 動作モードにか かわらず常に有効です。 カウンタの起動 , および動作について , 図 10.3-1 に示します。 カウンタスタートのトリガが入力されてからリロードレジスタのデータがカウンタへ ロードされるまでに , 1T(T: 周辺クロックサイクル ) の時間がかかります。 図 10.3-1 カウンタの起動 , および動作 カウントクロック リロードデータ カウンタ -1 -1 -1 データロード CNTE (レジスタ) TRG (レジスタ) T 287 第 10 章 16 ビットリロードタイマ ● アンダフロー動作 カウンタの値が "0000H" から "FFFFH " になるときをアンダフローとしています。した がって , 〔リロードレジスタの設定値 +1〕カウントでアンダフローが発生することに なります。 アンダフロー発生時コントロールステータスレジスタ (TMCSR) の RELD ビットが "1" のとき 16 ビットリロードレジスタ (TMRLR) の内容をカウンタへロードしてカウント 動作を継続します。RELD ビットが "0" のとき,カウンタは "FFFFH" で停止します。 アンダフローによりコントロールレジスタ (TMCSR) の UF ビットがセットされ , INTE ビットが "1" のとき,割込み要求を発生します。 アンダフロー動作のタイミングチャート図 10.3-2 に示します。 図 10.3-2 アンダフロー動作のタイミングチャート [RELD=1]の場合 カウントクロック カウンタ 0000H リロードデータ データロード アンダフローセット [RELD=0]の場合 カウントクロック カウンタ アンダフローセット 288 0000H FFFFH -1 -1 -1 第 10 章 16 ビットリロードタイマ ■ 入力端子機能の動作 ( 内部クロックモード時 ) クロックソースとして内部クロックを選択した場合, TIN 端子はトリガ入力またはゲー ト入力として使用することができます。 ● トリガ入力の動作 トリガ入力として使用した場合,有効エッジが入力されると,16 ビットリロードレジ スタ (TMRLR) の内容をカウンタにロードして内部プリスケーラをクリアした後,カウ ント動作を開始します。TIN は 2T(T は周辺系クロックマシンサイクル ) 以上のパルス を入力してください。 トリガ入力動作のタイミングチャートを,図 10.3-3 に示します。 図 10.3-3 トリガ入力動作のタイミングチャート カウントクロック 立上りエッジ検出時 TIN プリスケーラクリア カウンタ リロードデータ -1 -1 -1 -1 ロード 2T~ 2.5T 289 第 10 章 16 ビットリロードタイマ ● ゲート入力の動作 ゲート入力として使用する場合,コントロールステータスレジスタ (TMCSR) の M0D0 ビットによって設定される有効レベルが,TIN 端子から入力されている間のみカウン トをします。このときカウントクロックは,止まらずに動き続けます。ゲートモード 時のソフトウェアトリガは,ゲートレベルにかかわらず可能です。TIN 端子のパルス 幅は,2T(T は周辺系クロックマシンサイクル ) 以上にしてください。 ゲート入力動作のタイミングチャートを,図 10.3-6 に示します。 図 10.3-4 ゲート入力動作のタイミングチャート カウントクロック TIN M0D0=1とした場合(入力Hの間カウント) -1 カウンタ -1 -1 ● 外部イベントカウント動作 外部クロックをセレクトすると,TIN 端子は外部イベント入力端子となり,レジスタ で設定された有効エッジをカウントします。TIN 端子のパルス幅は,2T(T は周辺系ク ロックマシンサイクル ) 以上にしてください。 290 第 10 章 16 ビットリロードタイマ ● 出力端子機能の動作 TOUT 端子が,リロードモード時はアンダフローにより反転するトグル出力として,ワ ンショットモード時はカウント中を示すパルス出力として機能します。出力極性は,コ ントロールステータスレジスタ(TMCSR)のOUTLビットにより設定できます。 OUTL=0 の場合トグル出力は初期値が "0" で,ワンショットパルス出力は,カウント中 "1" を出 力します。OUTL=1 にすると出力波形は,反転します。 図 10.3-5 に出力端子機能動作のタイミングチャートを示します。 図 10.3-5 出力端子機能動作のタイミングチャート [RELD=1,OUTL=0]の場合 カウント開始 アンダフロー OUTL=1のときは反転 TOUT 汎用ポート CNTE 起動トリガ [RELD=0,OUTL=0]の場合 アンダフロー OUTL=1で反転 TOUT 汎用ポート CNTE 起動トリガ 起動トリガ待ち状態 ● その他の動作 16 ビットリロードタイマのチャネル 0 ∼ 2 は,その割込み要求信号で DMA 転送を起 動することが可能です。 DMA コントローラは,転送要求の受付けと同時にリロードタイマの割込みフラグをク リアします。 291 第 10 章 16 ビットリロードタイマ ■ カウンタの動作状態 カウンタの状態は , コントロールステータスレジスタ (TMCSR) の CNTE ビットと内部 信号の WAIT 信号によって決まります。設定可能な状態として CNTE="0", WAIT="1" の停止状態 (STOP 状態 ), CNTE="1", WAIT="1" の起動トリガ待ち状態 (WAIT 状態 ), CNTE= "1", WAIT= "0" の動作状態 (RUN 状態 ) があります。 ● カウンタの動作状態 各状態の遷移を図 10.3-6 に示します。 図 10.3-6 カウンタ状態遷移 ハードウェアによる状態遷移 リセット STOP CNTE=0, WAIT=1 レジスタアクセスによる状態遷移 カウンタ: 停止時の値を保持 リセット直後は不定 CNTE="1" TRG="0" WAIT CNTE="1" TRG="1" CNTE=1, WAIT=1 RUN CNTE=1, WAIT=0 カウンタ: 停止時の値を保持 リセット直後, ロードする までは不定 カウンタ: 動作 RELD UF TRG="1" TRG="1" CNTE=1, WAIT=0 LOAD リロードレジスタの内容を カウンタへロード 292 RELD UF ロード終了 第 10 章 16 ビットリロードタイマ ■ 使用上の注意 16 ビットリロードタイマを使用する上で,注意しなければならない事項について説明 します。 ● 使用上の注意事項 内部プリスケーラ • 内部プリスケーラは , コントロールステータスレジスタ (TMCSR) の bit 1( タイマ許可 : CNTE) が "1" に設定されている状態で,トリガ ( ソフトウェアトリガまたは外部ト リガ ) がかけられることにより動作可能になります。 ゲートカウントモードのみで使用する場合でも,有効ゲートレベル入力前に必ず 1 度トリガをかけてください。 CNTE を設定するときに , TMCSR レジスタの bit 0 (TRG) に "1" を書き込むことを推 奨します。 割込み要求フラグのセットとクリアタイミング • 割込み要求フラグをセットするタイミングとクリアタイミングが重複した場合に は , フラグのセットが優先し , クリア動作は無効になります。 16 ビットタイマレジスタ (TMR)/16 ビットリロードレジスタ (TMRLR) • 16 ビットタイマレジスタへの書込みと 16 ビットリロードレジスタへリロードのタイ ミングが重なった場合には , 旧データがカウンタにロードされ , 新データがカウンタ にロードされるのは , 次のリロードのときになります。 16 ビットタイマレジスタ (TMR) • 16 ビットタイマレジスタは , ロードとカウントのタイミングが重複した場合には , ロード ( リロード ) 動作の方が優先されます。 293 第 10 章 16 ビットリロードタイマ 294 第 11 章 PPG (Programable Pulse Generator) PPG(Programable Pulse Generator) タイマの概 要 , レジスタの構成 / 機能および動作について説明 します。 11.1 PPG の概要 11.2 PPG タイマのレジスタ 11.3 PPG の動作説明 11.4 PPG タイマの注意事項 295 第 11 章 PPG (Programable Pulse Generator) 11.1 PPG の概要 PPG は , 精度の高い PWM 波形を効率良く出力できます。 MB91305 は , PPG タイマを 4 チャネル内蔵しています。 ■ 概要 • 各チャネルは , 16 ビットダウンカウンタ , 周期設定用バッファ付き 16 ビットデータ レジスタ , デューティ設定用バッファ付き 16 ビットコンペアレジスタ , 端子制御部 から構成されます。 • 16 ビットダウンカウンタのカウントクロックは , 4 種類から選択が可能です。 周辺クロック φ, φ/4, φ/16, φ/64 • カウンタ値は , リセット , カウンタボローで "FFFFH" に初期化できます。 • チャネルごとに PPG 出力 (PPG0 ∼ PPG3) があります。 • レジスタ概要 - 周期設定レジスタ : バッファ付き , リロード用データレジスタ バッファからの転送は起動トリガ検出 およびカウン タボローにより行います。カウンタボローにより PPG 出力は反転します。 - デューティ設定レジスタ : バッファ付き , コンペアレジスタ 本レジスタ値とカウンタ値一致によりPPG出力は反転 します。 • 端子制御概要 - デューティ一致で , "1" にセットします ( 優先 )。 - カウンタボローで , "0" にリセットします。 - 出力値固定モードがあり , オール "L" ( または "H") を簡単に出力できます。 - 極性指定も可能です。 • 割込み要求は , 以下の組合せから選択して発生できます。 - 本タイマ起動 ( ソフトトリガ もしくは トリガ入力 ) - カウンタボロー発生 ( 周期一致 ) - デューティ一致発生 - カウンタボロー発生 ( 周期一致 ) またはデューティ一致発生 上記の割込み要求によって , DMA 転送起動が可能です。 • ソフトウェア , またはほかのインターバルタイマで複数チャネルの同時起動が設定 できます。また , 動作中の再起動も設定可能です。 296 第 11 章 PPG (Programable Pulse Generator) ■ レジスタ一覧 図 11.1-1 レジスタ一覧 アドレス 000120H 15 0 アクセス R ch0 タイマレジスタ PTMR0 000122H PCSR0 W ch0 周期設定レジスタ 000124H PDUT0 W ch0 デューティ設定レジスタ 000126H PCNH0 PCNL0 R/W ch0 コントロールステータスレジスタ 000128H PTMR1 R ch1 タイマレジスタ 00012AH PCSR1 W ch1 周期設定レジスタ 00012CH PDUT1 W ch1 デューティ設定レジスタ 00012EH PCNH1 PCNL1 R/W ch1 コントロールステータスレジスタ 000130H PTMR2 R ch2 タイマレジスタ 000132H PCSR2 W ch2 周期設定レジスタ 000134H PDUT2 W ch2 デューティ設定レジスタ 000136H PCNH2 PCNL2 R/W ch2 コントロールステータスレジスタ 000138H PTMR3 R ch3 タイマレジスタ 00013AH PCSR3 W ch3 周期設定レジスタ 00013CH PDUT3 W ch3 デューティ設定レジスタ 00013EH PCNH3 PCNL3 R/W ch3 コントロールステータスレジスタ 297 第 11 章 PPG (Programable Pulse Generator) ■ ブロックダイヤグラム 図 11.1-2 全体構成 外部TRG0 TRG入力 PPGタイマ ch0 PPG0 外部TRG1 TRG入力 PPGタイマ ch1 PPG1 外部TRG2 TRG入力 PPGタイマ ch2 PPG2 外部TRG3 TRG入力 PPGタイマ ch3 PPG3 図 11.1-3 1 チャネル分 PCSR PDUT プリスケーラ cmp 1/1 1/4 1/16 1/64 CK ロード 16ビット ダウンカウンタ スタート ボロー PPGマスク S 周辺クロック PPG出力 Q R 反転ビット イネーブル TRG入力 エッジ検出 ソフトトリガ 298 割込み 選択 IRQ 第 11 章 PPG (Programable Pulse Generator) 11.2 PPG タイマのレジスタ PPG タイマのレジスタについて説明します。 ■ コントロールステータスレジスタ (PCNH0 ∼ PCNH3, PCNL0 ∼ PCNL3) 図 11.2-1 コントロールステータスレジスタ (PCNH, PCNL) のビット構成 PCNH0 ∼ PCNH3 bit 15 14 13 12 アドレス : ch0 000126H CNTE STGR MDSE RTRG 11 CKS1 10 9 CKS0 PGMS 8 - ch1 00012EH R/W R/W R/W R/W R/W R/W R/W - ←属性 ch2 000136H 0 0 0 0 0 0 0 - ←初期値 ch3 00013EH ○ ○ × × × × ○ - ←動作中の書換え PCNL0 ∼ PCNL3 bit 7 アドレス : ch0 000127H EGS1 6 5 4 3 2 1 0 EGS0 IREN IRQF IRS1 IRS0 - OSEL ch1 00012FH R/W R/W R/W R/W R/W R/W - ch2 000137H 0 0 0 0 0 0 0 0 ←初期値 ch3 00013FH × × ○ ○ × × - × ←動作中の書換え R/W ←属性 [bit 15] CNTE: タイマ許可ビット 16 ビットダウンカウンタの動作を許可するビットです。 値 内容 0 停止 ( 初期値 ) 1 許可 [bit 14] STGR: ソフトウェアトリガビット このビットに "1" を書き込むことによりソフトウェアトリガがかかります。 STGR ビットの読出し値は , 常に "0" です。 [bit 13] MDSE: モード選択ビット 連続してパルスを出す PWM 動作か , 単一パルスを出すワンショット動作かを選択 します。 値 内容 0 PWM 動作 ( 初期値 ) 1 ワンショット動作 299 第 11 章 PPG (Programable Pulse Generator) [bit 12] RTRG: 再起動許可ビット ソフトウェアトリガ , またはトリガ入力による再起動を許可するビットです。 値 内容 0 再起動禁止 ( 初期値 ) 1 再起動許可 [bit 11, bit 10] CKS1, CKS0: カウントクロック選択ビット 16 ビットダウンカウンタのカウントクロックを選択します。 CKS1 CKS0 0 0 φ ( 初期値 ) 0 1 φ/4 1 0 φ/16 1 1 φ/64 周期 φ: 周辺クロック [bit 9] PGMS: PPG 出力マスク選択ビット このビットに "1" を書き込むことによりモード設定 , 周期設定値 , デューティ設定値 にかかわらず PPG 出力を "0", または "1" にマスクできます。 表 11.2-1 PGMS に "1" 書込み時の PPG 出力 極性 PPG 出力 通常極性 "L" 出力 反転極性 "H" 出力 通常極性時にオール "H", または反転極性時にオール "L" を出力したい場合は , 周期 設定レジスタとデューティ設定レジスタに同値を書き込めば上記マスク値の反転 を出力できます。 [bit 8] : − 未使用ビットです。 300 第 11 章 PPG (Programable Pulse Generator) [bit 7, bit 6] EGS1, EGS0: トリガ入力エッジ選択ビット ゼネラルコントロールレジスタ 1 で選んだ起動要因の有効エッジを選択します。 どのモードを選択していてもソフトトリガのビットに "1" を書き込むとソフトトリ ガは有効になります。 EGS1 EGS0 0 0 無効 ( 初期値 ) 0 1 立上りエッジ 1 0 立下りエッジ 1 1 両エッジ エッジ選択 [bit 5] IREN: 割込み要求許可ビット 値 内容 0 禁止 ( 初期値 ) 1 許可 [bit 4] IRQF: 割込み要求フラグ bit 5: IREN が許可されていて bit 3, bit 2: IRS1, IRS0 にて選択した割込み要因が発生 すると , 本ビットがセットされ CPU に割込み要求を発生します。 本ビットは , "0" 書込みによりクリアされます。 "1" を書き込んでもビット値は変化しません。 リードモディファイライト (RMW) 系命令における読出し値は , ビット値にかかわ らず "1" です。 [bit 3, bit 2] IRS1, IRS0: 割込み要因選択ビット bit 4: IRQF をセットする要因を選択します。 IRS1 IRS0 0 0 ソフトウェアトリガ , またはトリガ入力あり ( 初期値 ) 0 1 カウンタボロー発生 ( 周期一致 ) 1 0 デューティ一致発生 1 1 カウンタボロー発生 ( 周期一致 ), またはデューティ一致発生 割込み要因 [bit 1] (reserved) 未使用ビットです。 301 第 11 章 PPG (Programable Pulse Generator) [bit 0] OSEL: PPG 出力極性指定ビット PPG 出力の極性を設定します。 bit 9: PGMS との組合せで , 以下のようになります。 表 11.2-2 PPG 出力極性指定組合せ PGMS OSEL 0 0 通常極性 ( 初期値 ) 0 1 反転極性 1 0 出力 "L" 固定 1 1 出力 "H" 固定 PPG 出力 表 11.2-3 PPG 出力極性指定 極性 リセット後 通常極性 "L" 出力 反転極性 "H" 出力 デューティ一致 カウンタボロー ■ PPG 周期設定レジスタ (PCSR0 ∼ PCSR3) 図 11.2-2 PCSR(PPG 周期設定レジスタ ) のビット構成 PCSR0 ∼ PCSR3 bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 アドレス : ch0 000122H ch1 00012AH ch2 000132H ch3 00013AH 属性 → W 初期値 → XXXXXXXX XXXXXXXXB 周期を設定するためのバッファ付きレジスタです。バッファからの転送は , カウンタボ ローで行われます。 周期設定レジスタの初期設定時および書換え時は , 周期設定レジスタの書込み後 , 必ずデューティ設定レジスタへの書込み動作を行ってください。 本レジスタは , 16 ビットデータでアクセスしてください。 302 第 11 章 PPG (Programable Pulse Generator) ■ PPG デューティ設定レジスタ (PDUT0 ∼ PDUT3) 図 11.2-3 PDUT0 ∼ PDUT3 (PPG デューティ設定レジスタ ) のビット構成 PDUT0 ∼ PDUT3 bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 アドレス : ch0 000124H ch1 00012CH ch2 000134H ch3 00013CH 属性 → W 初期値 → XXXXXXXX XXXXXXXXB デューティを設定するためのバッファ付きレジスタです。バッファからの転送は , カウ ンタボローで行われます。 周期設定レジスタの値とデューティ設定レジスタの値を同じにすると , 通常極性時に オール "H" を , 反転極性時にオール "L" を出力します。 PCSR < PDUT となるような値を設定しないでください。PPG 出力は不定となります。 本レジスタは , 16 ビットデータでアクセスしてください。 ■ PPG タイマレジスタ (PTMR0 ∼ PTMR3) 図 11.2-4 PTMR0 ∼ PTMR3 (PPG タイマレジスタ ) のビット構成 PTMR0 ∼ PTMR3 bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 アドレス : ch0 000120H ch1 000128H ch2 000130H ch3 000138H 属性 → R 初期値 → 11111111 11111111B 16 ビットダウンカウンタの値を読み出すことができます。 本レジスタは , 16 ビットデータでアクセスしてください。 303 第 11 章 PPG (Programable Pulse Generator) PPG の動作説明 11.3 PWM 動作では , 起動トリガの検出時より連続してパルスを出力します。 ■ PWM 動作 出力パルスの周期は , PCSR 値を変えることにより制御でき , またデューティ比は , PDUT 値を変えることにより制御できます。 <注意事項> PCSR にデータを書き込んだ後は , 必ず PDUT への書込みを行ってください。 ● PWM 動作タイミングチャート 図 11.3-1 再起動禁止の場合 立上りエッジ検出 トリガは無視されます。 起動 トリガ m n 0 PPG (1) (2) (1) = T (n+1) ms (2) = T (m+1) ms T : カウントクロック周期 m : PCSR値 n : PDUT値 図 11.3-2 再起動許可の場合 立上りエッジ検出 トリガにより再起動します。 起動 トリガ m n 0 PPG (1) (2) (1) = T (n+1) ms (2) = T (m+1) ms 304 T : カウントクロック周期 m : PCSR値 n : PDUT値 第 11 章 PPG (Programable Pulse Generator) ■ ワンショット動作 ワンショット動作では , トリガにより任意の幅の単一パルスを出力できます。 再起動許可の場合は , 動作中にエッジを検出するとカウンタをリロードします。 ● ワンショット動作タイミングチャート 図 11.3-3 再起動禁止の場合 立上りエッジ検出 トリガは無視されます。 起動 トリガ m n 0 PPG (1) (2) (1) = T (n+1) ms (2) = T (m+1) ms T : カウントクロック周期 m : PCSR値 n : PDUT値 図 11.3-4 再起動許可の場合 立上りエッジ検出 トリガにより再起動します。 起動 トリガ m n 0 PPG (1) (2) (1) = T (n+1) ms (2) = T (m+1) ms T : カウントクロック周期 m : PCSR値 n : PDUT値 305 第 11 章 PPG (Programable Pulse Generator) ■ 割込み要因とタイミングチャート 図 11.3-5 割込み要因とタイミングチャート (PPG 出力は , 通常極性 ) 起動トリガ 最大2.5T ロード クロック カウント値 X 0002H 0003H 0001H 0000H 0003H PPG 割込み 有効エッジ デューティ一致 カウンタボロー 起動トリガがかかってから , カウント値がロードされるまで , 最大 2.5T (T: カウントク ロック周期 ) を必要とします。 ■ PPG 出力オール "L", またはオール "H" の出力方法例 図 11.3-6 PPG 出力をオール "L" にする出力方法例 PPG デューティ 値を小さく していく ボローによる割込みでPGMS(マスクビット)に "1"を書き込みます。 また, ボローによる割込みでPGMS(マスクビット)に "0"を書き込めば, ひげを出力することなくPWM波形 を出力できます。 図 11.3-7 PPG 出力をオール "H" にする出力方法例 PPG デューティ 値を大きく していく 306 コンペア一致による割込みでデューティ設定 レジスタに周期設定レジスタ値と同じ値を 書き込みます。 第 11 章 PPG (Programable Pulse Generator) 11.4 PPG タイマの注意事項 PPG タイマの使用に関して注意すべき点を説明します。 ■ PPG タイマの注意事項 • 割込み要求フラグセットタイミングとクリアタイミングが重複した場合には , フラ グセットが優先され , クリア動作は無効となります。 • PPG コントロールレジスタの bit 11, bit 10 ( カウントロック選択ビット CKS1, および CKS0) は , 書込み後すぐに反映されるので , 設定変更はカウント停止状態で行って ください。 • PPG ダウンカウンタ (16 ビットダウンカウンタ ) は , ロードとカウントのタイミン グが重複した場合は , ロード動作の方を優先します。 307 第 11 章 PPG (Programable Pulse Generator) 308 第 12 章 U-TIMER U-TIMER の概要 , レジスタの構成 , 機能 , および動 作について説明します。 12.1 U-TIMER の概要 12.2 U-TIMER のレジスタ 12.3 U-TIMER の動作説明 309 第 12 章 U-TIMER 12.1 U-TIMER の概要 U-TIMER(16 bit timer for UART baud rate generation) の概要とブロックダイヤグ ラムを示します。 ■ U-TIMER の概要 U-TIMER は , UART のボーレートを発生するための 16 ビットタイマです。チップの動 作周波数と , U-TIMER のリロード値の組合せで任意のボーレートを設定できます。 MB91305 は , 本タイマを 5 チャネル内蔵しています。 U-TIMERをカスケードして使用でき, 最大232 ×φのインターバルをカウントできます。 カスケード接続できる組合せは , ch0 と ch1 ∼ ch4 です。 ■ レジスタ一覧 図 12.1-1 レジスタ一覧 15 8 7 0 (R) (W) (R/W) UTIM0 ∼ UTIM4 UTIMR0 ∼ UTIMR4 UTIMC0 ∼ UTIMC4 ■ ブロックダイヤグラム 図 12.1-2 U-TIMER のブロックダイヤグラム 0 15 UTIMR0~UTIMR4(リロードレジスタ) ロード 15 0 UTIM0~UTIM4(タイマ) クロック アンダフロー (周辺系クロック) ch1 ~ ch4 のみ アンダフロー U-TIMR 0 310 コントロール MUX f.f. UARTへ 第 12 章 U-TIMER 12.2 U-TIMER のレジスタ U-TIMER で使用するレジスタの構成 , および機能について説明します。 ■ UTIM0 ∼ UTIM4 (U-TIMER) 図 12.2-1 UTIM0 ∼ UTIM4(U-TIMER) のビット構成 UTIM0 ∼ UTIM4 ch0 アドレス : 000064H 15 14 ch1 アドレス : 00006CH b15 b14 ................................... 2 1 0 b2 b1 b0 ch2 アドレス : 000074H R アクセス ch3 アドレス : 00007CH 0 初期値 ch4 アドレス : 000084H UTIM0 ∼ UTIM4 は , タイマの値を示します。16 ビット転送命令でアクセスしてくだ さい。 ■ UTIMR0 ∼ UTIMR4(reload register) 図 12.2-2 UTIMR0 ∼ UTIMR4(reload register) のビット構成 UTIMR0 ∼ UTIMR4 ch0 アドレス : 000064H 15 14 ch1 アドレス : 00006CH b15 b14 ................................... 2 1 0 b2 b1 b0 ch2 アドレス : 000074H W アクセス ch3 アドレス : 00007CH 0 初期値 ch4 アドレス : 000084H UTIMR0 ∼ UTIMR4 は , UTIM がアンダフローしたときに UTIM にリロードされる値 を格納するレジスタです。 このレジスタは必ず 16 ビット転送命令でアクセスしてください。 <注意事項> UART のモード 2 ( クロック同期モード ) で U-TIMER をボーレートとして使用する場合, U-TIMER に "0" を設定することは禁止です。 311 第 12 章 U-TIMER ■ UTIMC0 ∼ UTIMC4 (U-TIMER Control register) 図 12.2-3 UTIMC0 ∼ UTIMC4(U-TIMER Control register) のビット構成 UTIMC0 ∼ UTIMC4 7 ch0 アドレス : 000067H ch1 アドレス : 00006FH UCC1 R/W ch2 アドレス : 000077 H ch3 アドレス : 00007FH 0 6 - 5 - 4 UTIE R/W - - 0 3 2 UNDR CLKS R/W R/W 0 1 UTST R/W 0 0 0 UTCR R/W アクセス 1 初期値 ch4 アドレス : 000087H UTIMC0 ∼ UTIMC4 は , U-TIMER の動作を制御します。 このレジスタは , 必ずバイト転送命令でアクセスしてください。 [bit 7] UCC1 (U-timer Count Control 1) UCC1 ビットは , U-TIMER のカウントの仕方を制御します。 UCC1 動作 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" に設定し てください。 [bit 6, bit 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" 書込みによりクリアされます。リードモディファイライト (RMW) 系命令における 読出し時は, 常に"1"が読み出されます。また, UNDR に対する"1"書込みは無効です。 312 第 12 章 U-TIMER [bit 2] CLKS (CLocK Select) CLKS は , U-TIMER の ch0 と ch1 ∼ ch4 のカスケード指定ビットです。 0: クロックソースは , 周辺系クロック (φ) 〔初期値〕 1: U-TIMER ソースクロックタイミングとして , ch0 のアンダフロー信号を使用 ( 図 12.1-2 の f.f.) CLKS は ch1 ∼ ch5 でのみ有効 , ch0 では常に "0" にしてください。 <注意事項> φ ( 周辺系クロック= CLKP) は , ギアの設定により周期が変わります。 [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" が読み出されます。 313 第 12 章 U-TIMER <注意事項> • ストップ状態からスタートビット (UTST) をアサート ( スタート ) すると自動的にリ ロードします。 • ストップ状態からクリアビット (UTCR) とスタートビット (UTST) を同時にアサートす ると , カウンタを "0" クリアして , 直後のカウントダウンでアンダフローが発生します。 • 動作中にクリアビット (UTCR) をアサートすると , カウンタも "0" クリアされます。こ のため , 出力波形にひげ状の短いパルスが出力される場合があり , UART やカスケード モードの上位側の U-TIMER が誤動作する可能性があります。 出力クロックを使用している場合には , 動作中にクリアビットによるクリアを行わな いでください。 • カスケードモードで , 下位側の UTIMR ( リロ−ドレジスタ ) に "0" または "1" をセット すると正しくカウントされません。 • U-TIMER コントロールレジスタの bit 1(U-TIMER スタートビット :UTST), および bit 0 (U-TIMER のクリアビット :UTCR) をタイマ停止状態で同時にアサートすると , クリア した後のカウンタロードのタイミングで同レジスタの bit 3 ( アンダフローフラグ : UNDR) をセットします。また , 内部ボーレートクロックは同タイミングで "H" レベル になります。 • アンダフローフラグセットタイミングとクリアタイミングが重複した場合には , フラ グセットが優先され , クリア動作は無効となります。 • ch0 をカスケードモードで使用しない場合や本モジュールを単にタイマ機能として使用 する場合は , U-TIMER コントロールレジスタの bit 2 ( 基準クロック選択ビット:CLKS) には常に "0" を書き込んでください。また , "CLKS" の設定変更は , 本モジュールが動作 停止の状態で行ってください。 • U-TIMERリロードレジスタへの書込みとリロードのタイミングが重複した場合には, 旧 データがカウンタにロードされ , 新データがカウンタにロードされるのは , 次のリロー ドのタイミングとなります。 • タイマクリアとタイマカウント / リロードのタイミングが重複した場合には , タイマク リアが最優先されます。 314 第 12 章 U-TIMER 12.3 U-TIMER の動作説明 U-TIMER のボーレートの計算について説明します。 ■ ボーレートの計算 UART は , 対応する U-TIMER (U-TIMER0 → UART0, U-TIMER1 → UART1, U-TIMER2 → UART2, U-TIMER3 → UART3, U-TIMER4 → UART4) のアンダフローフリップフロッ プ ( 図 12.1-2 の f.f.) をボーレート用クロックソースとして使用します。 ● 非同期 ( 調歩同期 ) モード UART は , U-TIMER の出力を 8 分周して使用します。 図 12.3-1 非同期 ( 調歩同期 ) モード bps = bps = φ (2n+2) × 8 φ (2n+3) × 8 ……UCC1 ビット= 0 時 n:UTIMR ( リロード値 ) φ:周辺クロック周波数 ( ギアにより変動 ) ……UCC1 ビット= 1 時 ● CLK 同期モード 図 12.3-2 CLK 同期モード bps = bps = φ (2n+2) φ (2n+3) ……UCC1 ビット= 0 時 n:UTIMR ( リロード値 ) φ:周辺クロック周波数 ( ギアにより変動 ) ……UCC1 ビット= 1 時 <注意事項> UART のモード 2 ( クロック同期モード ) で U-TIMER をボーレートとして使用する場合 , U-TIMER に "0" を設定することは禁止です。 315 第 12 章 U-TIMER ■ カスケードモード U-TIMER ch0 と ch1 ∼ ch4 はカスケードモードで使用できます。 例 ) UTIMR ch0 を "0100H" に , UTIMR ch1 を "0002H" に設定した場合 : 図 12.3-3 カスケードモード UTIM ch1 01 00 02 01 00 02 01 00 02 01 00 02 01 00 02 01 00 02 01 00 f.f. ch1 UTIM ch0 f.f. ch0 316 0002H 0001H 0000H 0100H 第 13 章 UART UART の概要 , レジスタの構成 / 機能 , および UART の動作について説明します。 13.1 UART の概要 13.2 UART のレジスタ 13.3 UART の動作 13.4 割込み発生およびフラグのセットタイミング 13.5 UART 使用上の注意 13.6 UART の応用例 13.7 ボーレートと U-TIMER のリロード値の設定例 317 第 13 章 UART 13.1 UART の概要 UART は , 非同期 ( 調歩同期 ) 通信 , または CLK 同期通信を行うためのシリアルイ ンタフェースです。MB91305 は , UART を 5 チャネル内蔵します。 ■ UART の特長 • 全二重ダブルバッファ • 非同期 ( 調歩同期 ), CLK 同期通信が可能 • マルチプロセッサモードのサポート • 完全プログラマブルボーレート 内蔵タイマにより任意のボーレートを設定可能 (「第 12 章 U-TIMER」を参照 ) • 外部クロックによる自由なボーレートの設定が可能 • エラー検出機能 ( パリティ , フレーミング , オーバラン ) • 転送信号は NRZ 符号 • UART ch0 ∼ ch2 は 割込みによる DMA 転送の起動が可能 (ch3, ch4 は DMA 起動不可 ) ■ レジスタ一覧 図 13.1-1 レジスタ一覧 15 8 7 0 SCR0 ∼ SCR4 SSR0 ∼ SSR4 8 ビット 318 SMR0 ∼ SMR4 SIDR(R)/SODR(W) 8 ビット 7 6 5 4 3 2 1 0 D7 D6 D5 D4 D3 D2 D1 D0 7 6 5 4 3 2 1 0 PE ORE FRE BDS RIE TIE 7 6 5 4 3 2 1 0 MD1 MD0 - - CS0 - SCKE - 7 6 5 4 3 2 1 0 PEN P SBL CL A/D REC RXE TXE RDRF TDRE (R/W) (R/W) シリアルインプットレジスタ シリアルアウトプットレジスタ (SIDR /SODR) シリアルステータスレジスタ (SSR) シリアルモードレジスタ (SMR) シリアルコントロールレジスタ (SCR) 第 13 章 UART ■ ブロックダイヤグラム 図 13.1-2 ブロックダイヤグラム 制御信号 受信割込み (CPUへ) SCK(クロック) 送信クロック U-TIMERより クロック 選択回路 受信クロック 送信割込み (CPUへ) 外部クロック SCK 受信制御回路 SI(受信データ) 送信制御回路 スタートビット 検出回路 送信スタート 回路 受信ビット カウンタ 送信ビット カウンタ 受信パリティ カウンタ 送信パリティ カウンタ SO(送信データ) 受信用シフタ 受信状態判定回路 送信用シフタ 送信開始 受信終了 SIDR SODR DMA用 受信エラー発生信号 (DMACへ) R-bus MD1 MD0 SMR レジスタ CS0 SCKE SCR レジスタ PEN P SBL CL A/D REC RXE TXE SSR レジスタ PE ORE FRE RDRF TDRE BDS RIE TIE 制御信号 319 第 13 章 UART 13.2 UART のレジスタ UART で使用するレジスタの構成および機能について説明します。 ■ シリアルモードレジスタ (SMR0 ∼ SMR4) 図 13.2-1 SMR0 ∼ SMR4 ( シリアルモードレジスタ ) のビット構成 SMR0 ∼ SMR4 アドレス : ch0 000063H 7 ch1 00006BH MD1 ch2 000073H R/W ch3 00007BH ch4 000083H 6 5 4 3 2 1 0 MD0 R/W - - CS0 R/W - SCKE R/W - 初期値 00--0-0-B SMR0 ∼ SMR4 は , UART の動作モードを指定します。動作モードの設定は動作停止中 に行い , 動作中にこのレジスタへの書込みは行わないでください。 [bit 7, bit 6] MD1, MD0 (MoDe select) UART の動作モードを選択します。 表 13.2-1 動作モード選択 モード MD1 MD0 0 0 0 非同期 ( 調歩同期 ) ノーマルモード〔初期値〕 1 0 1 非同期 ( 調歩同期 ) マルチプロセッサモード 2 1 0 クロック同期モード − 1 1 設定禁止 動作モード <注意事項> モード 1 のクロック非同期モード ( マルチプロセッサ ) とは , 1 台のホスト CPU に数台の スレーブ CPU が接続される使用法です。本リソースでは , 受信データのデータ形式を判 別できません。したがって , マルチプロセッサモード のマスタのみをサポートします。ま た , パリティチェック機能は使用できませんので SCR レジスタの PEN は "0" に 設定して ください。 [bit 5, bit 4](reserved) 常に "1" を書き込んでください。 [bit 3] CS0(Clock Select) UART の動作クロックを選択します。 0 : 内蔵タイマ (U-TIMER) 〔初期値〕 1 : 外部クロック [bit 2](reserved) 常に "0" を書き込んでください。 320 第 13 章 UART [bit 1] SCKE (SCLK Enable) CLK 同期モード ( モード 2) で通信を行う場合 , SCK 端子をクロック入力端子にす るか , クロック出力端子として使うかを指定します。 CLK 非同期モード時または外部クロックモード時では "0" に設定してください。 0 : クロック入力端子として機能します。〔初期値〕 1 : クロック出力端子として機能します。 <注意事項> クロック入力端子として使うには , CS0 ビットを "1" にして外部クロックを選択しておく 必要があります。 [bit 0](Reserved) 未使用ビットです。 ■ シリアルコントロールレジスタ (SCR0 ∼ SCR4) 図 13.2-2 SCR0 ∼ SCR4 ( シリアルコントロールレジスタ ) のビット構成 SCR0 ∼ SCR4 アドレス : ch0 000062H 7 ch1 00006AH PEN ch2 000072H R/W ch3 00007AH ch4 000082H 6 5 4 3 2 1 0 P R/W SBL R/W CL R/W A/D R/W REC R/W RXE R/W TXE R/W 初期値 00000100B SCR0 ∼ SCR4 はシリアル通信を行う場合の転送プロトコルを制御します。 [bit 7] PEN (Parity Enable) シリアル通信において , パリティを付加してデータ通信を行うかどうかを指定しま す。 0: パリティなし 〔初期値〕 1: パリティあり <注意事項> パリティを付加できるのは , 非同期 ( 調歩同期 ) 通信モードのノーマルモード ( モード 0) のみです。マルチプロセッサモード ( モード 1) およびクロック同期通信 ( モード 2) では , パリティを付加できません。 [bit 6] P (Parity) パリティを付加してデータ通信を行うとき , 偶数 / 奇数パリティを指定します。 0: 偶数パリティ 〔初期値〕 1: 奇数パリティ 321 第 13 章 UART [bit 5] SBL (Stop Bit Length) 非同期 ( 調歩同期 ) 通信を行うときのフレームエンドマークであるストップビット のビット長を指定します。 0: 1 ストップビット 〔初期値〕 1: 2 ストップビット [bit 4] CL(Character Length) 送受信する 1 フレームのデータ長を指定します。 0: 7 ビットデータ 〔初期値〕 1: 8 ビットデータ <注意事項> 7 ビットデータを扱えるのは , 非同期 ( 調歩同期 ) 通信のうちのノーマルモード ( モード 0) のみです。マルチプロセッサモード ( モード 1) およびクロック同期通信 ( モード 2) では , 8 ビットデータとしてください。 [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 レジスタに受信データを ストアしたところで受信動作を停止します。 322 第 13 章 UART [bit 0] TXE(Transmitter Enable) UART の送信動作を制御します。 0: 送信動作を禁止します。〔初期値〕 1: 送信動作を許可します。 <注意事項> 送信中 ( 送信レジスタからデータが出力されているとき ) に送信動作を禁止した場合は , 送信データバッファ SODR レジスタにデータがなくなった後に送信動作を停止します。 ■ シリアルインプットデータレジスタ (SIDR0 ∼ SIDR4) / シリアルアウトプット データレジスタ (SODR0 ∼ SODR4) 図 13.2-3 SIDR0 ∼ SIDR4 ( シリアルインプットデータレジスタ )/ SODR0 ∼ SODR4 ( シリアルアウトプットデータレジスタ ) のビット構成 SIDR0 ∼ SIDR4 アドレス : ch0 000061H ch1 000069H ch2 000071H ch3 000079H ch4 000081H SODR0 ∼ SODR4 アドレス : ch0 000061H ch1 000069H ch2 000071H ch3 000079H ch4 000081H 7 6 5 4 3 2 1 0 D7 R D6 R D5 R D4 R D3 R D2 R D1 R D0 R 7 6 5 4 3 2 1 0 D7 W D6 W D5 W D4 W D3 W D2 W D1 W D0 W 初期値 XXXXXXXXB XXXXXXXXB 本レジスタは , 受信 / 送信用のデータバッファレジスタです。 データ長が 7 ビットの場合 SIDR, SODR の bit 7 (D7) は無効データとなります。 BDS="1" のときは , SIDR と SODR のアクセス時に , バス上のデータの上位側と下位側 を入れ替えるため , 見かけ上 bit 0 (D0) が無視されたように見えます。 SODR レジスタへの書込みは , SSR レジスタの TDRE が "1" のときに書き込んでくださ い。 <注意事項> このアドレスへのライトは SODR レジスタへの書込みを , リードは SIDR レジスタの読 出しを意味します。 323 第 13 章 UART ■ シリアルステータスレジスタ (SSR0 ∼ SSR4) 図 13.2-4 SSR0 ∼ SSR4 ( シリアルステータスレジスタ ) のビット構成 SSR0 ∼ SSR4 アドレス : ch0 000060H ch1 000068H ch2 000070H ch3 000078H ch4 000080H 7 6 5 PE R/W ORE R/W FRE R/W 4 3 RDRF TDRE R/W R/W 2 1 0 BDS R/W RIE R/W TIE R/W 初期値 00001000B SSR0 ∼ SSR4 は UART の動作状態を表すフラグで構成されています。 [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 3 による内 / 外ボーレートクロックの切換えは書込み後 , すぐに反映されるので , UART が動作停止状態のときに行ってください。 • シリアルモードレジスタの bit 3 はライトオンリです。 324 第 13 章 UART [bit 4] RDRF(Receiver Data Register Full) SIDR レジスタに受信データがあることを示す割込み要求フラグです。 SIDR レジスタに受信データがロードされるとセットされ , SIDR レジスタを読み出 すと自動的にクリアされます。 0: 受信データなし 〔初期値〕 1: 受信データあり [bit 3] TDRE(Transmitter Data Register Empty) SODR に送信データを書き込めることを示す割込み要求フラグです。 SODR レジスタに送信データを書き込むとクリアされます。書き込んだデータが送 信用シフタにロードされて転送が開始されると再びセットされ , 次の送信データを 書き込めることを表します。 0: 送信データの書込み禁止 1: 送信データの書込み許可 〔初期値〕 [bit 2] BDS(Bit Direction Select) 転送方向選択ビットです。 0: 最下位ビット (LSB) 側から転送します。〔初期値〕 1: 最上位ビット (MSB) 側から転送します。 <注意事項> シリアルデータレジスタへの読出し , 書込み時にデータの上位側と下位側を入れ替えるた め SODR レジスタへデータを書き込んだ後 , このビットを書き換えると , そのデータは無 効になります。 ハーフワード (16 ビット ) にて , SODR レジスタと BDS を同時に書き換えた場合には , 書 換え前の BDS の値に従い , SODR レジスタへの書込みが行われます。 [bit 1] RIE (Receiver Interrupt Enable) 受信割込みを制御します。 0: 割込みを禁止します。〔初期値〕 1: 割込みを許可します。 <注意事項> 受信割込み要因は , PE, ORE, FRE によるエラー発生のほか , RDRF による正常受信があ ります。 325 第 13 章 UART [bit 0] TIE (Transmitter Interrupt Enable) 送信割込みを制御します。 0: 割込みを禁止します。〔初期値〕 1: 割込みを許可します。 <注意事項> 送信割込み要因は , TDRE による送信要求があります。 326 第 13 章 UART UART の動作 13.3 UART には , 非同期 ( 調歩同期 ) モードとクロック同期モードの 2 種類の動作モード があります。さらに , 非同期 ( 調歩同期 ) モードには , ノーマルモードとマルチプロ セッサモードがあります。 各動作モードにおける動作について説明します。 ■ UART の動作モード UART は , 表 13.3-1 に示す動作モードを持ち , SMR レジスタ , SCR レジスタに値を設 定することによりモードを切り換えることができます。 表 13.3-1 UART の動作モード モード パリティ データ長 あり / なし 7 あり/なし 8 1 なし 8+1 2 なし 8 0 動作モード 非同期 ( 調歩同期 ) ノーマルモード ストップビット長 1 ビットまたは 2 ビット 非同期(調歩同期) マルチプロセッサモード クロック同期モード なし ただし , 非同期 ( 調歩同期 ) モードでのストップビット長については送信動作のみ指定 が可能です。受信動作については常に 1 ビット長となります。上記モード以外では動 作しませんので設定しないでください。 ■ UART のクロック選択 ● 内部タイマ CS0 を "0" に設定して U-TIMER を選択した場合は , U-TIMER に設定したリロード値で ボーレートが決まります。このときのボーレートの算出式は次のとおりです。 非同期 ( 調歩同期 ) : φ / (8 × β ) クロック同期 :φ/β φ : 周辺クロック周波数 β :U-TIMER で設定した周期 (2n+2 または 2n+3, n はリロード値 ) 非同期 ( 調歩同期 ) モードのボーレートは , 設定したボーレートの− 1% ∼ +1% までの 範囲で転送が可能です。 ● 外部クロック CS0 を "1" に設定して外部クロックを選択した場合のボーレートは , 外部クロックの周 波数を f とすると次のようになります。 非同期 ( 調歩同期 ) :f/8 クロック同期 :f ただし , f は最大 3.125MHz までです。 327 第 13 章 UART ■ 非同期 ( 調歩同期 ) モード ● 転送データフォーマット UART は , NRZ(Non Return to Zero) 形式のデータのみを扱います。図 13.3-1 に , データ フォーマットを示します。 図 13.3-1 転送データフォーマット ( モード 0, 1) SI,SO 0 1 0 LSBスタート 1 1 0 0 1 0 1 1 MSBストップ─────(モード0) A/Dストップ ───(モード1) 転送されたデータは 01001101B 図 13.3-1 に示すように , 転送データは必ずスタートビット ("L" レベル データ ) より始 まり , LSB ファーストで指定されたデータビット長の転送が行われ , ストップビット ("H" レベル データ ) で終了します。外部クロックを選択している場合は , 常にクロッ クを入力してください。 ノーマルモード ( モード 0) ではデータ長を 7 ビットまたは 8 ビットに設定できますが , マルチプロセッサモード ( モード 1) では 8 ビットでなければなりません。また , マル チプロセッサモード ではパリティを付加できません。そのかわり , A/D ビットが必ず 付加されます。 ● 受信動作 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 3) が "1" のとき , SODR レジスタに送信データを書き 込みます。ここで , SCR レジスタの TXE ビット (bit 0) が "1" なら送信が行われます。 SODR レジスタにセットしたデータが送信用シフトレジスタにロードされて送信が開 始されると TDRE フラグが再びセットされ , 次の送信データをセットできるようにな ります。このとき同じ SSR レジスタの TIE ビット (bit 0) が "1" にセットされていれば CPU に対して送信割込みが発生して , SODR レジスタに送信データをセットするよう に要求します。 TDRE フラグは , SODR レジスタにデータをセットすると , いったんクリアされます。 328 第 13 章 UART ■ クロック同期モード ● 転送データフォーマット UART は , NRZ(Non Return to Zero) 形式のデータのみを扱います。図 13.3-2 に , 送受信 クロックとデータとの関係を示します。 図 13.3-2 転送データフォーマット ( モード 2) SODR書込み マーク SCK RXE,TXE SI,SO 1 0 LSB 1 1 0 0 1 0 MSB ───(モード2) 転送されたデータは 01001101B 内部クロック (U-TIMER) を選択している場合は , データを送信するとデータ受信用同 期クロックが自動的に生成されます。また , 外部クロックを選択している場合は , 送信 側 UART の送信用データバッファ SODR レジスタにデータがあること (TDRE フラグ が "0") を確かめた後 , 正確に 1 バイト分のクロックを供給する必要があります。また , 送信開始前と終了後は , 必ずマークレベルにしてください。 データ長は 8 ビットのみとなり , パリティを付加できません。また , スタート / ストッ プビットがないのでオーバランエラー以外のエラー検出は行われません。 ● 初期化 クロック同期モードを使用する場合の各制御レジスタの設定値を示します。 SMR レジスタ MD1, MD0 : "10" CS0 : クロック入力を指定 PFR( ポートファンクション ) レジスタ SCKE : 内部タイマの場合 "1", 外部クロックの場合 "0" UART : 送信を行う場合 "1", 受信のみの場合 "0" SCR レジスタ PEN : "0" P, SBL, A/D : これらのビットは意味を持ちません CL : "1" REC : "0" ( 初期化するため ) RXE, TXE : 少なくとも , どちらか一方を "1" 329 第 13 章 UART SSR レジスタ RIE : 割込みを使用する場合 "1", 割込みを使用しない場合 "0" TIE : "0" ●通信開始 SODR レジスタへの書込みによって通信を開始します。受信のみの場合でも , 必ず仮の 送信データを SODR レジスタに書き込む必要があります。 ● 通信終了 SSR レジスタの RDRF フラグが "1" に変化したことにより確認できます。SSR レジス タの ORE ビットによって , 通信が正常に行われたかを判断してください。 330 第 13 章 UART 13.4 割込み発生およびフラグのセットタイミング UART には , 5 つのフラグと 2 つの割込み要因があります。 5 つのフラグは , PE/ORE/FRE/RDRF/TDRE です。PE はパリティエラー , ORE は オーバランエラー , FRE はフレーミングエラーのことで , 受信時エラーが発生した ときにセットされ , SCR レジスタの REC に "0" を書き込むとクリアされます。 RDRF は受信データが SIDR レジスタにロードされるとセットされ , SIDR レジスタ を読み出すことでクリアされます。ただし , モード 1 ではパリティ検出機能 , モード 2 ではパリティ検出機能とフレーミングエラー検出機能はありません。TDRE は , SODR レジスタが空になり書込み可能な状態になるとセットされ , SODR レジスタ へ書き込むとクリアされます。 ■ 割込み発生およびフラグのセットタイミング 2 つの割込み要因は , 受信用のものと送信用のものです。受信時は , PE/ORE/FRE/RDRF により割込みを要求します。送信時は , TDRE により割込みを要求します。各動作モー ドによる割込みフラグのセットタイミングを以下に示します。 ● モード 0 の受信動作時 PE, ORE, FRE, RDRF は受信転送が終了し , 最後のストップビットを検出するときにフ ラグがセットされ , CPU への割込み要求が発生します。PE, ORE, FRE がアクティブ時 は , SIDR のデータは無効データとなります。 図 13.4-1 ORE, FRE, RDRF のセットタイミング ( モード 0) データ D6 D7 Stop PE,ORE,FRE RDRF 受信割込み 331 第 13 章 UART ● モード 1 の受信動作時 ORE, FRE, RDRF は受信転送が終了し , 最後のストップビットを検出するときにフラグ がセットされ , CPU への割込み要求が発生します。また , 受信可能なデータ長は 8 ビッ トのため最後の 9 ビット目のアドレス / データを示すデータは無効データとなります。 ORE, FRE がアクティブ時は , SIDR のデータは無効データとなります。 図 13.4-2 ORE, FRE, RDRF のセットタイミング ( モード 1) データ D7 アドレス/ データ Stop ORE,FRE RDRF 受信割込み ● モード 2 の受信動作時 ORE, RDRF は受信転送が終了し , 最後のデータ (D7) を検出するときにフラグがセット され , CPU への割込み要求が発生します。ORE がアクティブ時は , SIDR のデータは無 効データとなります。 図 13.4-3 ORE, RDRF のセットタイミング ( モード 2) データ ORE RDRF 受信割込み 332 D5 D6 D7 第 13 章 UART ● モード 0, モード 1, モード 2 の送信動作時 TDRE は SODR レジスタへ書き込まれるとクリアされ , 内部のシフトレジスタに転送 され , 次のデータ書込みが可能な状態になるとセットされ , CPU への割込み要求が発生 します。送信動作中に SCR レジスタの TXE に "0" ( モード 2 のときは RXE も含む ) を 書き込むと , SSR レジスタの TDRE が "1" となり , 送信用のシフタが停止した後 , UART の送信動作を禁止します。送信動作中に SCR レジスタの TXE に "0" ( モード 2 のとき は RXE も含む ) を書き込んだ後 , 送信が停止する前に SODR レジスタへ書き込まれた データは送信されます。 図 13.4-4 TDRE のセットタイミング ( モード 0, モード 1) SODR書込み TDRE CPUへ割込みを要求する。 SO割込み ST D0 D1 D2 D3 D4 D5 D6 D7 SP SP ST D0 D1 D2 D3 A/D ST:スタートビット D0~D7:データビット SP:ストップビット A/D:アドレス/データマルチプレクサ SO出力 図 13.4-5 TDRE のセットタイミング ( モード 2) SODR書込み TDRE CPUへ割込みを要求する。 SO割込み SO出力 D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7 ST:スタートビット D0~D7:データビット SP:ストップビット A/D:アドレス/データマルチプレクサ 333 第 13 章 UART 13.5 UART 使用上の注意 UART 使用上の注意について説明します。 ■ UART 使用上の注意 SODR レジスタへの書込みによって通信を開始します。受信のみの場合でも , 必ず仮の 送信データを SODR レジスタに書き込む必要があります。 通信モードの設定は , 動作停止中に行ってください。モード設定時の送受信したデータ は保証されません。 割込みによる DMA 転送を最初に起動する前に DRCL レジスタに書き込んでください。 334 第 13 章 UART 13.6 UART の応用例 UART の応用例について説明します。 ■ UART の応用例 モード 1 は , 1 台のホスト CPU に数台のスレーブ CPU が接続されるような場合に使用 されます ( 図 13.6-1 を参照 )。 このリソースでは , ホスト側の通信インタフェースのみサポートします。 図 13.6-1 モード 1 を使用時のシステム構築例 SO SI ホストCPU SO SI スレーブCPU#0 SO SI スレーブCPU#1 通信はホスト CPU がアドレスデータを転送することによって始まります。アドレス データとは , SCR レジスタの A/D が "1" のときのデータで , それにより通信先となるス レーブ CPU が選択され , ホスト CPU との通信が可能になります。通常データは , SCR レジスタのA/Dが"0"のときのデータです。図 13.6-2 にそのフローチャートを示します。 このモードにおいては , パリティチェック機能は使用できませんので SCR レジスタの PEN ビットは "0" としてください。 335 第 13 章 UART 図 13.6-2 モード 1 使用時の通信フローチャート (ホストCPU) START 転送モードを1とする D0~D7にスレーブCPUを選 択するデータ, A/Dに"1"を セットし, 1バイト転送 A/Dに"0"をセット 受信動作許可 スレーブCPUと通信 通信終了? No Yes 他の スレーブCPUと 通信 No Yes 受信動作禁止 END 336 第 13 章 UART 13.7 ボーレートと U-TIMER のリロード値の設定例 ボーレートと U-TIMER のリロード値の設定例を示します。 ■ ボーレートと U-TIMER のリロード値の設定例 以下に , ボーレートと U-TIMER のリロード値の設定例を示します。 表中の周波数は , 周辺クロック周波数を表します。また , UCC1 は , U-TIMER の UTIMC レジスタ UCC1 ビットに設定する値です。 下記 U-TIMER リロード値は 10 進数で表示してあります。 表 13.7-1 非同期 ( 調歩同期 ) モード ボーレート (bps) ms φ =33MHz φ =32MHz 1200 833.33 1717 (UCC1=1) 1665 (UCC1=1) 832 (UCC1=1) 2400 416.67 858 (UCC1=1) 832 (UCC1=1) 415 (UCC1=1) 4800 208.33 428 (UCC1=1) 415 (UCC1=1) 207 (UCC1=1) 9600 104.17 213 (UCC1=1) 207 (UCC1=1) 103 (UCC1=0) 19200 52.08 106 (UCC1=1) 103 (UCC1=0) 51 (UCC1=0) 38400 26.04 52 (UCC1=1) 51 (UCC1=0) 25 (UCC1=0) 57600 17.36 35 (UCC1=0) 33(UCC1=1) 16 (UCC1=1) 115200 8.681 17 (UCC1=0) 16 (UCC1=1) ... ... 10400 96.15 197 (UCC1=1) 191 (UCC1=1) 95 (UCC1=0) 31250 32.00 65 (UCC1=0) 63 (UCC1=0) 31 (UCC1=0) 62500 16.00 32 (UCC1=0) 31 (UCC1=0) 15 (UCC1=0) ... ... φ =16MHz − ... φ : 周辺クロック周波数 表 13.7-2 クロック同期モード ボーレート (bps) ms φ =33MHz φ =32MHz φ =16MHz 250K 4.00 65 (UCC1=0) 63 (UCC1=0) 31 (UCC1=0) 500K 2.00 32 (UCC1=0) 31 (UCC1=0) 15 (UCC1=0) 1M 1.00 15 (UCC1=0) 15 (UCC1=0) 7 (UCC1=0) 2M 0.50 7 (UCC1=0) 7 (UCC1=0) − φ : 周辺クロック周波数 337 第 13 章 UART 338 第 14 章 I2C インタフェース I2C インタフェースの概要 , レジスタの構成 / 機能 , および I2C インタフェースの動作について説明し ます。 14.1 I2C インタフェースの概要 14.2 I2C インタフェースのレジスタ 14.3 I2C インタフェースの動作 14.4 動作フローチャート 339 第 14 章 I2C インタフェース 14.1 I2C インタフェースの概要 I2C インタフェースは , Inter IC BUS をサポートするシリアル I/O ポートです。 ■ I2C インタフェースの特長 I2C バス上のマスタ / スレーブデバイスとして動作し , 以下の特長があります。 • マスタ / スレーブ送受信 • 送信 , 受信兼用 16 バイトの FIFO 内蔵 • アービトレーション機能 • クロック同期化機能 • スレーブアドレス / ゼネラルコールアドレス検出機能 • 転送方向検出機能 • 反復「START」条件発生および検出機能 • バスエラー検出機能 • 10 ビット /7 ビット スレーブアドレス • マスタモード時スレーブアドレス受信アクノリッジ制御 • 複合スレーブアドレス対応 • 送信 , バスエラー時に割込み可能 • 標準モード ( 最大 100Kbps)/ 高速モード ( 最大 400Kbps) に対応 <注意事項> マルチマスタは対応しておりません。 ■ FIFO 使用時の動作概要 FIFO を使用した転送を行う場合は , FEN=1 に設定してください。 本マクロは , 通常 INT=1 のとき SCL="L" とすることで I2C バスにウェイトをかけますが , IFCR:TED=1 のときは SCL="L" になりません。 ● 7 ビットアドレスマスタ送信時 スレーブアドレス送信時は , FIFO を使用しません。IDAR にスレーブアドレスを書き 込み , MSS=1 にしてください。 スレーブアドレス送信後 , INT=1 になります。INT=1 の間に IFDR に任意のバイト数の データを書き込むと FIFO に格納され , INT=0 にすると FIFO が空になるか , スレーブ がアクノリッジを発生しない間データが送信されます。 FIFOが空になるとINT=1 (IFCR:TFE=1)になります。続けてデータ送信するときはIFDR にデータを書き込み INT=0 にしてください。また , 転送を終了するときは MSS=0 にし てください ( 自動的に INT=0 になります )。 FIFO によるデータ転送で , スレーブがアクノリッジを発生しなかった場合 , INT=1 に なります。MSS=0 にしてください ( 自動的に INT=0 になります ) 。FIFO に残ったデー 340 第 14 章 I2C インタフェース タは , IFCR:FCL=1 でクリアしてください。 FIFO によるデータ送信時にアービトレーションロストした場合は , FIFO をクリアし最 初から転送を行ってください。 ● 10 ビットアドレスマスタ送信時 スレーブアドレス送信時は , FIFO を使用しません。第 1 スレーブアドレスを IDAR に 書き込み , MSS=1 にしてください。第 1 スレーブアドレス送信後 , INT=1 になります。 その後 , 第 2 スレーブアドレスを IDAR に書き込み , INT=0 にしてください。 第 2 スレーブアドレス送信後 , INT=1 になります。INT=1 の間に IFDR に任意のバイト 数のデータを書き込むと FIFO に格納され , INT=0 にすると FIFO が空になるまでデー タが送信されます。 FIFO が空になると INT=1(IFCR:TFE=1) になります。続けてデータを送信するときは , IFDR にデータを書き込み , INT=0 にしてください。また , 転送を終了するときは MSS=0 にしてください ( 自動に INT=0 になります ) 。 FIFO によるデータ転送で , スレーブがアクノリッジを発生しなかった場合 , INT=1 に なります。MSS=0 にしてください ( 自動的に INT=0 になります ) 。FIFO に残ったデー タは , IFCR. FCL=1 でクリアしてください。 FIFO によるデータ送信時にアービトレーションロストした場合は , FIFO をクリアし , 最初から転送を行ってください。 ● 7 ビットアドレスマスタ受信時 スレーブアドレス送信時は , FIFO を使用しません。IDAR にスレーブアドレスを書き 込み , MSS=1 にしてください。 スレーブアドレス送信後 , INT=1 になります。INT=1 の間に FIFO 受信データ数レジス タ (IFRN) に受信するデータ数を設定し , INT=0 にしてください。IFRN レジスタに設定 された数の受信データを FIFO に取り込みます。1 バイト受信ごとに IFRN レジスタの FRN はデクリメントされ , IFRN:FRN=0 となったら INT=1(IFCR:FRED=1) になります。 INT=1 の間に IFDR から FIFO 内のすべてのデータを読み出してください。 続けてデータを受信する場合は , FIFO が空の状態で IFRN レジスタに設定後 INT=0 に してください。 また , 転送を終了するときは , MSS = 0 にしてください ( 自動的に INT=0 になります ) 。 IFRN レジスタの FACK=0 とすると , 最後の受信データ (IFRN.FRN=1 のとき ) にアクノ リッジを発生しません。 ● 10 ビットアドレスマスタ受信時 スレーブアドレス送信時は , FIFO は使用しません。第 1 スレーブアドレスを IDAR に 書き込み , MSS=1 にしてください。第 1 スレーブアドレス送信後 , INT=1 になります。 その後 , 第 2 スレーブアドレスを IDAR に書き込み , INT=0 にしてください。第 2 ス レーブアドレス送信後 , INT=1 になります。その後 , 第 1 スレーブアドレスの 8 ビット 目をリードしたものを IDAR に書き込み , SCC=1 にしてください スレーブアドレス送信後 , INT=1 になります。INT=1 の間に FIFO 受信データ数レジス タ (IFRN) に受信するデータ数を設定し , INT=0 にしてください。IFRN レジスタに設定 された数の受信データを FIFO に取り込みます。1 バイト受信ごとに IFRN レジスタの FRN はデクリメントされ , IFRN:FRN=0 となったら , INT=1(IFCR:FRED=1) になります。 INT=1 の間に IFDR から FIFO 内のすべてのデータを読み出してください。 341 第 14 章 I2C インタフェース 続けてデータを受信する場合は , FIFO が空の状態で IFRN レジスタに設定後 INT=0 に してください。また , 転送を終了するときは MSS=0 にしてください ( 自動的に INT=0 になります ) 。 IFRN レジスタの FACK=0 とすると , 最後の受信データ (IFRN:FRN=1 のとき ) にアクノ リッジを発生しません。 ● 7 ビットアドレススレーブ送信時 スレーブアドレス受信後 ( スレーブアドレスは FIFO に取り込まれません ) INT=1 にな ります。 INT=1 の間に IFDR レジスタに任意のバイト数のデータを書き込むと FIFO に格納され ます。データ書込み後 INT=0 にすると , FIFO に書き込まれた数のデータが送信されま す。FIFO が空になると INT=1(IFCR:TFE=1) になります。続いて送信データを書き込み , INT=0 にしてください。マスタが反復「START」条件か「STOP」条件を出力するまで 繰返しになります。 反復「START」条件か「STOP」条件を検出すると IFCR レジスタの TED が "1" になり ます。このときは SCL="L" になりません。FIFO にデータが残っていた場合 , FIFO を クリアしてください。TED に "0" を書き込み終了してください。 ● 10 ビットアドレススレーブ送信時 10 ビットスレーブアドレス受信後 ( スレーブアドレスは FIFO に取り込まれません ) INT=1 になります。INT=0 にしてください。その後の反復「START」条件で IFCR レ ジスタの TED=1 になります。このときは SCL=L になりません。TED=0 にしてください。 リード要求のスレーブアドレス受信後 ( スレーブアドレスは FIFO に取り込まれません ) INT=1 になります。この INT=1 の間に IFDR レジスタに任意のバイト数のデータを書 き込むと FIFO に格納されます。データ書込み後 INT=0 にすると , FIFO に書き込まれ た数のデータが送信されます。FIFO が空になると INT=1(IFCR:TFE=1) になります。続 いて送信データを書き込み , INT=0 にしてください。マスタが反復「START」条件か 「STOP」条件を出力するまで繰り返します。 反復「START」条件か「STOP」条件を検出したら IFCR レジスタの TED が "1" になり ます。このときは SCL=L になりません。FIFO にデータが残っていた場合 , FIFO をク リアしてください。TED に "0" を書き込み終了してください。 ● 7 ビットスレーブ受信時と 10 ビットスレーブ受信時 スレーブアドレス受信後 ( スレーブアドレスは FIFO に取り込まれません ) INT=1 にな ります。INT=1 の間に FIFO 受信データ数レジスタ (IFRN) に受信するデータ数を設定し , INT=0 にしてください。IFRN レジスタに設定された数の受信データを FIFO に取り込 みます。1 バイト受信ごとに IFRN レジスタの FRN はデクリメントされ , IFRN:FRN=0 となったら INT=1(IFCR:FRED=1) になります。INT=1 の間に IFDR から FIFO 内のすべ てのデータを読み出してください。 FIFO からデータを読み出し , FIFO が空になったら IFRN を設定し INT=0 にすると続く データを受信します。マスタが反復「START」条件か「STOP」条件を出力するまで繰 り返しになります。 反復「START」条件か「STOP」条件を検出したら IFCR レジスタの TED が "1" になり ます。このときは SCL="L" になりません。FIFO の受信データをすべて読み出し , TED に "0" を書き込み終了してください。 342 第 14 章 I2C インタフェース IFRN レジスタの FACK=0 とすると , 最後の受信データ (IFRN:FRN=1 のとき ) にアクノ リッジを発生しません。アクノリッジを発生しなかったときの受信データは FIFO に取 り込みます。 ● FIFO の使用時のバスエラー発生について FIFO による受信時にバスエラーが発生した場合は , 転送が中止され , バスエラー発生 時のデータは FIFO に取り込まれません。 FIFO による送信時にバスエラーが発生した場合は , 転送が中止され , 以下で計算され たバイト数分は転送されています。 転送されたバイト数= FIFO に書き込んだバイト数− IFN レジスタで示された バイト数− 1 バスエラー時 , 状態の情報はクリアされてしまうので , 送信中か , 受信中か知りたい場 合は , プログラムで状態を管理してください。 ■ レジスタ一覧 15 8 7 0 IFN IFRN IFCR IFDR IBCR IBSR ITBA ITMK ISMK ISBA − IDAR ICCR − 図 14.1-1 バスコントロールレジスタ (IBCR) 15 BER アドレス : ch0 0000B4H R/W ch1 0000C4H ch2 0000D4H 初期値→ 0 ch3 0000E4H 14 BEIE R/W 13 SCC R/W 12 MSS R/W 11 ACK R/W 10 GCAA R/W 9 INTE R/W 8 INT R/W 0 0 0 0 0 0 0 図 14.1-2 バスステータスレジスタ (IBSR) アドレス : ch0 0000B5H ch1 0000C5H ch2 0000D5H 初期値→ ch3 0000E5H 7 BB R 6 RSC R 5 AL R 4 LRB R 3 TRX R 2 AAS R 1 GCA R 0 ADT R 0 0 0 0 0 0 0 0 343 第 14 章 I2C インタフェース 図 14.1-3 10 ビットスレーブアドレスレジスタ (ITBA) アドレス : ch0 0000B6H ch1 0000C6H ch2 0000D6H 初期値→ ch3 0000E6H アドレス : ch0 0000B7H ch1 0000C7H ch2 0000D7H 初期値→ ch3 0000E7H 15 R 14 R 13 R 12 R 11 R 10 R 9 TA9 R/W 8 TA8 R/W 0 0 0 0 0 0 0 0 7 TA7 R/W 6 TA6 R/W 5 TA5 R/W 4 TA4 R/W 3 TA3 R/W 2 TA2 R/W 1 TA1 R/W 0 TA0 R/W 0 0 0 0 0 0 0 0 図 14.1-4 10 ビットスレーブアドレスマスクレジスタ (ITMK) 15 ENTB アドレス : ch0 0000B8H R/W ch1 0000C8H ch2 0000D8H 初期値→ 0 ch3 0000E8H アドレス : ch0 0000B9H ch1 0000C9H ch2 0000D9H 初期値→ ch3 0000E9H 14 RAL R/W 13 R/W 12 R/W 11 R/W 10 R/W 9 TM9 R/W 8 TM8 R/W 0 1 1 1 1 1 1 7 TM7 R/W 6 TM6 R/W 5 TM5 R/W 4 TM4 R/W 3 TM3 R/W 2 TM2 R/W 1 TM1 R/W 0 TM0 R/W 1 1 1 1 1 1 1 1 1 SA1 R/W 0 0 SA0 R/W 0 図 14.1-5 7 ビットスレーブアドレスレジスタ (ISBA) アドレス : ch0 0000BBH ch1 0000CBH ch2 0000DBH 初期値→ ch3 0000EBH 7 R/W 0 6 SA6 R/W 0 5 SA5 R/W 0 4 SA4 R/W 0 3 SA3 R/W 0 2 SA2 R/W 0 図 14.1-6 7 ビットスレーブアドレスマスクレジスタ (ISMK) 15 ENSB アドレス : ch0 0000BAH R/W ch1 0000CAH ch2 0000DAH 初期値→ 0 ch3 0000EAH 14 SM6 R/W 13 SM5 R/W 12 SM4 R/W 11 SM3 R/W 10 SM2 R/W 9 SM1 R/W 8 SM0 R/W 1 1 1 1 1 1 1 図 14.1-7 データレジスタ (IDAR) アドレス : ch0 0000BDH ch1 0000CDH ch2 0000DDH 初期値→ ch3 0000EDH 344 7 D7 R/W 6 D6 R/W 5 D5 R/W 4 D4 R/W 3 D3 R/W 2 D2 R/W 1 D1 R/W 0 D0 R/W 0 0 0 0 0 0 0 0 第 14 章 I2C インタフェース 図 14.1-8 クロックコントロールレジスタ (ICCR) アドレス : ch0 0000BEH ch1 0000CEH ch2 0000DEH 初期値→ ch3 0000EEH 15 TEST R/W 14 NSF R/W 13 EN R/W 12 CS4 R/W 11 CS3 R/W 10 CS2 R/W 9 CS1 R/W 8 CS0 R/W 0 0 0 1 1 1 1 1 図 14.1-9 FIFO データ数レジスタ (IFN) アドレス : ch0 0000B0H ch1 0000C0H ch2 0000D0H 初期値→ ch3 0000E0H 15 R 14 R 13 R 12 FN4 R 11 FN3 R 10 FN2 R 9 FN1 R 8 FN0 R 0 0 0 0 0 0 0 0 図 14.1-10 FIFO 受信レジスタ (IFRN) アドレス : ch0 0000B1H ch1 0000C1H ch2 0000D1H 初期値→ ch3 0000E1H 7 FACK R/W 6 R/W 5 R/W 4 R/W 3 FRN3 R/W 2 FRN2 R/W 1 FRN1 R/W 0 FRN0 R/W 0 0 0 0 0 0 0 0 図 14.1-11 FIFO コントロールレジスタ (IFCR) アドレス : ch0 0000B2H ch1 0000C2H ch2 0000D2H 初期値→ ch3 0000E2H 15 FEN R/W 14 FCL R/W 13 R/W 12 TEDIE R/W 11 FER R/W 10 TED R/W 9 FRED R/W 8 TFE R/W 0 0 - 0 0 0 0 0 図 14.1-12 FIFO データレジスタ (IFDR) アドレス : ch0 0000B3H ch1 0000C3H ch2 0000D3H 初期値→ ch3 0000E3H 7 FD7 R/W 6 FD6 R/W 5 FD5 R/W 4 FD4 R/W 3 FD3 R/W 2 FD2 R/W 1 FD1 R/W 0 FD0 R/W 0 0 0 0 0 0 0 0 345 第 14 章 I2C インタフェース ■ ブロックダイヤグラム 図 14.1-13 ブロックダイヤグラム ICCR EN 5 ICCR CS4 CS3 CS2 CS1 CS0 IBSR BB RSC LRB TRX ADT AL I2C動作許可 RCLK クロック分周2 2 3 4 5 5 Sync 32 シフトクロック発生 クロック選択2(1/12) シフトクロック エッジ変化タイミング バスビジー リピート スタート スタート・ストップ コンディション検出 ラストビット ICCR エラー 送信/受信 イネーブル アドレス/データ アービトレーション ロスト検出 SCL0~ SCL2 割込み要求 終了 GC-ACK 許可 スタート・ストップ コンディション発生 割込み要求2 SDA3 SDA3 周辺リソースバス ACK許可 IRQ SDA4 FIFO IFN FN4~FN0 IFRN FACK FRN IDAR スレーブ グローバル コール スレーブ アドレス比較 ISMK ENSB ITMK ENTB RAL ITBA ITMK ISBA ISMK 346 レジスタ IFDR FER FCL IBSR AAS GCA SCL3 I 2C入出力 マスタ FEN 7 I 2C入出力 スタート IFCR TEDIE TED FRED TFE 8 SDA0~ SDA2 SDA2 INT I 2C入出力 SCL2 BEIE INTE ノイズフィルタ IBCR BER IBCR SCC MSS ACK GCAA NSF 第 14 章 I2C インタフェース 14.2 I2C インタフェースのレジスタ I2C インタフェースで使用するレジスタの構成および機能について説明します。 ■ バスステータスレジスタ (IBSR) 図 14.2-1 バスコントロールレジスタ (IBCR) のビット構成 アドレス : ch0 0000B5H ch1 0000C5H ch2 0000D5H 初期値→ ch3 0000E5H 7 BB R 6 RSC R 5 AL R 4 LRB R 3 TRX R 2 AAS R 1 GCA R 0 ADT R 0 0 0 0 0 0 0 0 このレジスタは , 全ビット読出し専用です。I2C が動作停止 (ICCR 中の EN=0) すると 全ビットクリアされます。 [bit 7] BB(Bus Busy) I2C バスの状態を示すビットです。 0 「STOP」条件を検出した。 1 「START」条件を検出した ( バス使用中 ) 。 [bit 6] RSC(Repeated Start Condition) 反復「START」条件検出ビットです。 0 反復「START」条件は検出されていない。 1 バス使用中に , 反復「START」条件を検出した。 このビットは , スレーブアドレス転送終了 (ADT="0"), または「STOP」条件の検出 でクリアされます。 [bit 5] AL(Arbitration Lost) アービトレーションロスト検出ビットです。 0 アービトレーションロストが検出されていない。 1 マスタ送信中にアービトレーションロストが発生した。 このビットは INT ビットへの "0" 書込み , または IBCR レジスタ中の MSS ビットに "1" を書き込むことによってクリアされます。 アービトレーションロストが発生する例 : • データ送信が SCL の立上りエッジで SDA ライン上のデータと一致しない 347 第 14 章 I2C インタフェース データのファーストビットで , ほかのマスタによって反復「START」条件 が発生した。 • I2Cインタフェースが, ほかのスレーブデバイスによってSCLラインが"L" にドライブされているために「START」条件または「STOP」条件を生成 できない。 [bit 4] LRB(Last Received Bit) アクノリッジ格納ビットです。受信側からのアクノリッジを格納します。 0 スレーブアクノリッジを検出した。 1 スレーブアクノリッジを検出していない。 アクノリッジの検出 ( 受信 9 ビット ) により書き換わります。 「START」条件または「STOP」条件の検出でクリアされます。 [bit 3] TRX(Transferring data) データ転送中に送信状態を示すビットです。 0 データ送信中でない 1 データ送信中 1 セット : マスタモードで「START」条件が生成された スレーブモードでリードアクセス時 ( 送信 ), 第 1 バイトの転送終了 マスタモードで送信中 0 セット : バスがアイドル状態 (IBCR:BB="0") アービトレーションロスト発生 マスタ割込み中 (MSS="1", INT="1") に SCC に "1" が書き込まれた。 マスタ割込み中 (MSS="1", INT="1") に MSS ビットがクリアされた。 スレーブ時 , 転送の最後にアクノリッジが発生しなかった。 スレーブモードでの受信中 マスタモードでのスレーブからデータ受信中 [bit 2] AAS(Addressed As Slave) スレーブアドレッシング検出ビットです。 0 スレーブに指定されていない。 1 スレーブに指定された。 「START」( 反復「START」を含む ) または「STOP」条件の検出でクリアされます。 7/10 ビットのスレーブアドレスを検出したときにセットされます。 348 第 14 章 I2C インタフェース [bit 1] GCA(General Call Address) ゼネラルコールアドレス (00H) 検出ビットです。 0 スレーブとして , ゼネラルコールアドレスを受信していない。 1 スレーブとして , ゼネラルコールアドレスを受信した。 「START」( 反復「START」を含む ) または「STOP」条件の検出でクリアされます。 [bit 0] ADT(Address Data Transfer) スレーブアドレス受信検出ビットです。 0 受信データがスレーブアドレスでない ( またはバス開放中 )。 1 受信データがスレーブアドレスである。 「START」の検出で "1" にセットされます。10 ビットライトアクセスでのスレーブ アドレスのヘッダが検出されると , 第 2 バイトの後クリアされ , それ以外のときは , 第 1 バイトの後でクリアされます。 第 1 バイト / 第 2 バイトの後とは • マスタ割込み (IBCR:MSS="1", INT="1") 中に MSS ビットに "0" が書き込まれた • マスタ割込み (IBCR:MSS="1", INT="1") 中に SCC ビットに "1" が書き込まれた • INT ビットがクリアされた • マスタ, またはスレーブとして転送対象でなければ, すべての転送バイトの最初 349 第 14 章 I2C インタフェース ■ バスコントロールレジスタ (IBCR) 図 14.2-2 バスコントロールレジスタ (IBCR) のビット構成 アドレス : ch0 0000B4H ch1 0000C4H ch2 0000D4H 初期値→ ch3 0000E4H 15 BER R/W 14 BEIE R/W 13 SCC R/W 12 MSS R/W 11 ACK R/W 10 GCAA R/W 9 INTE R/W 8 INT R/W 0 0 0 0 0 0 0 0 I2C インタフェースが停止 (ICCR:EN="0") すると , BER, BEIE ビットを除きすべての ビットがクリアされます。 [bit 15] BER(Bus ERror) バスエラー割込み要求フラグビットです。このビットは , リードモディファイライ ト (RMW) 系命令における読出し時は , 常に "1" が読まれます。 表 14.2-1 ライト時 0 バスエラー割込み要求フラグをクリアする。 1 意味を持たない。 表 14.2-2 リード時 0 バスエラーは検出されていない。 1 エラーコンディションを検出した。 このビットがセットされた場合 , ICCR レジスタの EN ビットはクリアされ , I2C イ ンタフェースは停止状態になり , データ転送は中断されます。また , BER, BEIE を 除き IBSR と IBCR レジスタのすべてのビットはクリアされます。このビットは , I2C インタフェースを再度イネーブル (EN=1) する前にクリアしてください。 • "1" がセットされる場合 1. 「START」条件または「STOP」条件が不正な場所で検出された ( スレーブ アドレス転送中 , データ転送中 )。 2. 10 ビットリードアクセス時に , 第 1 バイトにて 10 ビットライトアクセス する前に , リードアクセスのスレーブアドレスヘッダが受信された。 3. マスタモードで転送中に「STOP」条件が検出された。 1., 2. の検出は , 転送実行中に I2C インタフェースが動作許可されていると , 不正バスエラーレポートを抑止するために , 最初の「STOP」条件の受信後フ ラグセットされる。 350 第 14 章 I2C インタフェース [bit 14] BEIE(Bus Error Interrupt Enable) バスエラー割込み許可ビットです。 0 バスエラー割込み禁止。 1 バスエラー割込み許可。 このビットが "1" のとき , BER ビットに "1" がセットされると割込みを発生します。 [bit 13] SCC(Start Condition Continue) 反復「START」条件発生ビットです。 表 14.2-3 ライト時 0 意味を持たない。 1 マスタ転送時に反復「START」条件を発生させる。 このビットの読出し値は常に "0" です。 マスタモード(MSS="1", INT="1")中にこのビットに"1"を書き込むと, 反復「START」 条件が発生し , 自動的に INT ビットをクリアします。 [bit 12] MSS(Master Slave Select) マスタ / スレーブの選択ビットです。 • 0 スレーブモードとなる。 1 マスタモードとなり「START」条件を発生し IDAR レジスタの値を スレーブアドレスとして送信する。 このビットは , マスタ送信中にアービトレーションロストが発生した場合クリ アされ , スレーブモードになります。 • マスタ割込みフラグセット中 (MSS="1", INT="1") に "0" を書き込むと INT ビッ トは自動的にクリアされ , 「STOP」条件が発生し転送が終了します。 <注意事項> • MSS ビットは直接的なリセットとして機能します。 「STOP」条件の発生は , IBSR レ ジスタの BB ビットを調査することによって確認できます。 • 下記条件で使用する場合,スレーブとして受信できませんのでゼネラルコールアドレス の送信は禁止です。 - 本 LSI のほかにマスタモードとなるほかの LSI がバス上に存在し , 本 LSI がマスタ としてゼネラルコールアドレスを送信し , 第 2 バイト目以降でアービトレーション ロストが発生する場合 351 第 14 章 I2C インタフェース バスがアイドル中 (MSS="0", BB="0") に "1" を書き込むと「START」条件が発生 • し , IDAR の値が送信されます。 バス使用中 (BB="1", TRX="0", MSS="0") に "1" を書き込むと I2C インタフェース • はバスが開放されるまで待ち , 送信を開始します。その間に I2C インタフェース はライトアクセスを伴うスレーブとしてアドレス指定されると , 転送終了後に バスは開放されます。その間 , スレーブとして送信中の場合 (IBCR: AAS="1", TRX="1"), バスが開放されてもデータ送信しません。I2C インタフェースがス レーブ (IBSR:AAS="1") として指定されたか , 次の割込み時にデータの送信が正 常終了にした (IBCR:MSS="1") か , 不正終了した (IBSR: AL="1") かどうか確認す ることが重要となります。 [bit 11] ACK(ACKnowledge) データを受信許可ビットに従いアクノリッジを発生するビットです。 0 データ受信に対しアクノリッジを発生しない。 1 データ受信に対しアクノリッジを発生する。 このビットは , スレーブ時のスレーブアドレス受信時には無効となります。I2C • インタフェースが 7 ビット , または 10 ビットのスレーブアドレス指定を検出し たとき , 対応するイネーブルビット (ENTB:ITMK, ENSB:ISMK) がセットされて いると , アクノリッジを返します。 このビットへの書込みは , 割込みフラグセット中 (INT="1"), またはバスが開放中 • (IBSR:BB="0"), I2C インタフェースが停止中 (ICCR:EN="0") に行ってください。 FEN=1(FIFO 使用 ) の受信時は , FACK=0 なら FRN = 1 以外まで ACK=1, 最後の • データ (FRN=1 のとき ) のみ ACK=0 と自動的に設定されます。 [bit 10] GCAA(General Call Address Ackowledge) ゼネラルコールアドレスを受信した場合のアクノリッジ発生許可ビットです。 0 ゼネラルコールアドレスを受信に対しアクノリッジ発生しない。 1 ゼネラルコールアドレスを受信に対しアクノリッジ発生する。 このビットへの書込みは , 割込みフラグセット中 (INT="1") またはバスが開放中 (IBSR:BB="0"), I2C インタフェースが停止中 (ICCR:EN="0") に行ってください。 [bit 9] INTE(INTerrupt Enable) 割込み許可ビットです。 0 割込み禁止 1 割込み許可 このビットが "1" のとき , INT ビットが "1" なら割込みを発生します。 352 第 14 章 I2C インタフェース [bit 8] INT(INTerrupt) 転送終了割込み要求フラグビットです。このビットは , リードモディファイライト (RMW) 系命令における読出し時は , 常に "1" が読み出されます。 表 14.2-4 ライト時 0 転送終了割込み要求フラグをクリアする。 1 意味を持たない。 表 14.2-5 リード時 0 転送が終了していない , 転送対象でない , またはバスが開放状態である。 1 アクノリッジビットを含めた 1 バイト転送が終了したときに次の条件に該 当する場合にセットされます。 • FEN=0 かつ ADT=0 でバスマスタである。 • ADT=1 でバスマスタである。 • スレーブアドレスに指定された。 • ゼネラルコールアドレスを受信した。 • アービトレーションロストが起こった。 • FEN=1 のとき , 送信 FIFO がエンプティになった。 • FEN=1 のとき , IFRN=1 → 0 になった。 • FEN=0 かつ ADT=0 でスレーブアドレスに指定されている。 • FEN=1 かつマスタ送信時 , スレーブが ACK を出さなかった。 スレーブアドレスに指定されているとき , アクノリッジを含むスレーブア ドレス受信の最後にセットされます。 このビットが "1" のとき , SCL ラインは "L" レベルに保たれます。このビットへ "0" を書き込むとクリアされ , SCL ラインを開放し , 次バイトの転送を行い , 反復 「START」条件 , または「STOP」条件を生成します。 TED=1 のとき , SCL ラインは "L" レベルになりません。 このビットは , SCC ビット , または MSS ビットに "1" が書き込まれるとクリアされ ます。 <注意事項> SCC, MSS, INT ビットの競合について SCC, MSS, INT ビットの同時書込みにより , 次バイト転送 , 反復「START」条件 , または 「STOP」条件発生の競合が起こります。このときの優先度は次のようになります。 1. 次のバイト転送と「STOP」条件発生 INT ビットに "0", MSS ビットに "0" を書き込むと , MSS ビットの書込みが優先され , 「STOP」条件が発生されます。 2. 次のバイト転送と「START」条件発生 INT ビットに "0", SCC ビットに "1" を書き込むと , SCC ビットの書込みが優先され , 反復「START」条件が発生し IDAR の値が送信されます。 3. 反復「START」条件発生と「STOP」条件発生 SCC ビットに "1", MSS ビットに "0" を書き込むと , MSS ビットのクリアが優先されま す。「STOP」条件が発生し , I2C インタフェースはスレーブモードになります。 353 第 14 章 I2C インタフェース 図 14.2-3 と図 14.2-4 に示したタイミングで , 「START」条件を発生させる命令を実行 (MSS ビットへの "1" 設定 ) すると , アービトレーションロスト検出 (AL ビット =1) によ る割込み (INT ビット =1) が発生しません。 • AL ビット =1 検出による割込み (INT ビット =1) が発生しない条件 1 「START」条件未検出 (BB ビット =0) 状態で , SDA 端子または SCL 端子レベルが "L" のときに ,「START」条件を発生させる命令を実行 (IBCR レジスタの MSS ビットに "1" を設定 ) した場合。 図 14.2-3 AL ビット =1 検出による割込みが発生しないタイミング図 (1) SCL端子またはSDA端子が"L"レベル SCL端子 "L" SDA端子 "L" I 2C動作許可状態(ENビット=1) 1 マスタモード設定(MSSビット=1) アービトレーションロスト検出 (ALビット=1) バスビジー(BBビット) 0 割込み(INTビット) 0 • AL ビット =1 検出による割込み (INT ビット =1) が発生しない条件 2 ほかのマスタに I2C バスが占有されている状態で , I2C 動作許可 (EN ビット =1) して 「START」条件を発生させる命令を実行 (IBCR レジスタの MSS ビットに "1" を設定 ) した場合。 図 14.2-4 に示したとおり , I2C が動作禁止 (EN ビット =0) の状態で , I2C バス上のほか のマスタが通信を開始すると , 「START」条件未検出 (BB ビット =0) で I2C バスが占 有されている状態になるためです。 354 第 14 章 I2C インタフェース 図 14.2-4 AL ビット =1 検出による割込みが発生しないタイミング図 (2) 9クロック目でINTビット 割込みが発生しない 停止状態 停止状態 SCL端子 SDA端子 SLAVE ADDRESS ACK ACK DATA ENビット MSSビット ALビット BBビット 0 INTビット 0 前記のような現象が発生する可能性がある場合には , 以下の手順でソフト処理を行ってく ださい。 1.「START」条件を発生させる命令を実行 (MSS ビットへの "1" 設定 ) 。 2. タイマ機能などを用いて , ICCR レジスタに設定されている I2C 転送周波数での 3 ビッ トデータ送信時間待つ。* 例:I2C 転送周波数 100kHz の場合 3 ビットデータ送信時間 {1/(100 × 103)} × 3=30 µs *: アービトレーションロストが検出された場合 , MSS ビット =1 設定後 I2C 転送周波数 での 3 ビットデータ送信時間後に AL ビット =1 となります。 3. IBSR レジスタの AL ビットと BB ビットを確認し , AL ビット =1, BB ビット =0 の場合 AL ビットと BB ビッ には , ICCR レジスタの EN ビットを "0" にして I2C を初期化する。 トがその他の状態のときは通常処理を行う。 以下にフロー例を示します。 マスタモード設定 バス制御レジスタ (IBCR) の MSS ビットに "1" を設定 クロック制御レジスタ (ICCR) に設定されている I2C 転送周波数での 3 ビットデータ送信時間ウェイト * No BB ビット = 0 でかつ AL ビット = 1 Yes EN ビットを "0" にして I2C の初期化 通常処理へ *: アービトレーションロストが検出された場合 , MSS ビット =1 設定後 I2C 転送周波数 での 3 ビットデータ送信時間後に AL ビット =1 となります。 355 第 14 章 I2C インタフェース • AL ビット =1 検出による割込み (INT ビット =1) が発生する例 バスビジー検出 (BB ビット =1) されている状態で , 「START」条件を発生させる命令 を実行 (MSS ビットへ "1" を設定 ) し , アービトレーションロストした場合には , AL ビット =1 検出時に INT ビット割込みが発生します。 図 14.2-5 AL ビット =1 時に割込みが発生するタイミング図 9クロック目で割込み 開始状態 SCL端子 SDA端子 SLAVE ADDRESS ACK DATA ENビット MSSビット ALビット BBビット INTビット 356 ソフトでのALビットクリア ソフトでのINTビット クリアでSCL開放 第 14 章 I2C インタフェース ■ クロックコントロールレジスタ (ICCR0 ∼ ICCR3) 図 14.2-6 クロックコントロールレジスタ (ICCR0 ∼ ICCR3) のビット構成 アドレス : ch0 0000BEH ch1 0000CEH ch2 0000DEH 初期値→ ch3 0000EEH 15 TEST R/W 14 NSF R/W 13 EN R/W 12 CS4 R/W 11 CS3 R/W 10 CS2 R/W 9 CS1 R/W 8 CS0 R/W 0 0 0 1 1 1 1 1 [bit 15] テストビットです。必ず "0" を書いてください。 [bit 14] NSF (NoiSe Filter enable) 入力ノイズフィルタ許可ビットです。 0 ノイズフィルタ禁止 1 ノイズフィルタ許可 100Kbps 以上の速度で使用するときのみ "1" に設定してください。 [bit 13] EN(ENable) I2C インタフェース動作許可ビットです。 0 動作禁止 1 動作許可 このビットが "0" のとき , IBSR レジスタ , IBCR レジスタ (BER, BEIE ビットを除く ) の各ビットはクリアされます。バスエラー発生 (IBCR:BER="1") により , このビット はクリアされます。 <注意事項> 動作禁止にすると , I2C インタフェースは , 直ちに送受信を停止します。 [bit 12 ∼ bit 8] CS4 ∼ CS0(Clock Period Select 4 ∼ 0) シリアルクロックの周波数を設定するビットです。 このビットは , I2C インタフェースを動作禁止 (EN="0") にするか , EN ビットがクリ アされたときにのみ書込み可能です。 シフトクロックの周波数 fsck は次式のように設定されます。 φ fsck= n 12+17 φ fsck= n 12+18 NSF=0 n >0 NSF=1 n >0 φ:周辺リソースクロック φ:周辺リソースクロック 357 第 14 章 I2C インタフェース 表 14.2-6 レジスタ設定 n CS4 CS3 CS2 CS1 CS0 1 0 0 0 0 1 2 0 0 0 1 0 3 0 0 0 1 1 ••• ••• ••• ••• ••• ••• 31 1 1 1 1 1 CS4 ∼ CS0=00000B は設定禁止です。 100Kbps 400Kbps 周辺リソースクロック周波数 RCLK [MHz], 条件 n fsck n fsck 32 MHz NSF=1 26 96.9 6 355.6 ■ 10 ビットスレーブアドレスレジスタ (ITBA0 ∼ ITBA3) 図 14.2-7 10 ビットスレーブアドレスレジスタ (ITBA0 ∼ ITBA3) のビット構成 ITBAH アドレス : ch0 0000B6H ch1 0000C6H ch2 0000D6H 初期値→ ch3 0000E6H ITBAL アドレス : ch0 0000B7H ch1 0000C7H ch2 0000D7H 初期値→ ch3 0000E7H 15 R 14 R 13 R 12 R 11 R 10 R 9 TA9 R/W 8 TA8 R/W 0 0 0 0 0 0 0 0 7 TA7 R/W 6 TA6 R/W 5 TA5 R/W 4 TA4 R/W 3 TA3 R/W 2 TA2 R/W 1 TA1 R/W 0 TA0 R/W 0 0 0 0 0 0 0 0 このレジスタの書換えは動作停止中に行ってください (ICCR:EN=0)。 [bit 15 ∼ bit 10] 未使用ビットです。 リード時は常に "0" です。 358 第 14 章 I2C インタフェース [bit 9 ∼ bit 0] TA9 ∼ TA0 (10 ビットスレーブアドレスビット ) 10 ビットアドレスが有効 (ITMK:ENTB="1") のとき , スレーブモードでスレーブア ドレスを受信すると , 受信アドレスと ITBA とを比較します。 アクノリッジは , 10 ビットライトアクセスのアドレスヘッダ受信後 , マスタに送信 されます。 第 1, 第 2 バイト受信データと ITBA レジスタが比較されます。一致が検出されると , アクノリッジ信号がマスタデバイスに送信し , AAS ビットがセットされます。 I2C インタフェースは , 反復「START」条件の後 , 10 ビットリードアクセスのアド レスヘッダの受信に応答します。 スレーブアドレスの全ビットは , ITMK の設定によりマスクされます。受信スレー ブアドレスは , ITBA レジスタに上書きされます。このレジスタが有効なのは , AAS(IBSR レジスタ ) が "1" のときのみです。 ■ 10 ビットスレーブアドレスマスクレジスタ (ITMK0 ∼ ITMK3) 図 14.2-8 10 ビットスレーブアドレスマスクレジスタ (ITMK0 ∼ ITMK3) ITMK0 ∼ ITMK3 15 ENTB アドレス : ch0 0000B8H R/W ch1 0000C8H ch2 0000D8H 初期値→ 0 ch3 0000E8H アドレス : ch0 0000B9H ch1 0000C9H ch2 0000D9H 初期値→ ch3 0000E9H 14 RAL R/W 13 R/W 12 R/W 11 R/W 10 R/W 9 TM9 R/W 8 TM8 R/W 0 1 1 1 1 1 1 7 TM7 R/W 6 TM6 R/W 5 TM5 R/W 4 TM4 R/W 3 TM3 R/W 2 TM2 R/W 1 TM1 R/W 0 TM0 R/W 1 1 1 1 1 1 1 1 [bit 15] ENTB (10 ビットスレーブアドレス許可ビット ) 10 ビットスレーブアドレス動作許可ビットです。 0 10 ビットスレーブアドレス動作禁止 1 10 ビットスレーブアドレス動作許可 このビットへの書込みは , I2C インタフェースが停止状態 (ICCR:EN="0") で行って ください。 359 第 14 章 I2C インタフェース [bit 14] RAL ( スレーブアドレス長ビット ) このビットは , スレーブアドレス長を示します。 0 7 ビットスレーブアドレス 1 10 ビットスレーブアドレス このビットは , 10 ビット /7 ビットスレーブアドレスの動作許可ビットが両方許可 (ENTB=1, ENSB=1) になっている場合に , 10 ビット , 7 ビットスレーブアドレス動作 のどちらの転送長が有効になるかの決定に使用できます。 このビットは AAS ビット (IBSR) が "1" のときに有効です。 このビットはインタフェースの動作を禁止 (ICCR:EN="0") したときにクリアされま す。 このビットはリードのみ可能です。 [bit 13 ∼ bit 10] 未使用ビットです。リード時は常に "1" が読まれます。 [bit 9 ∼ bit 0] TM9 ∼ TM0(10 ビットスレーブアドレスマスクビット ) このビットは10ビットスレーブアドレスレジスタ(ITBA)のビットをマスクします。 このレジスタへの書込みは , I2C インタフェースが動作禁止 (ICCR:EN="0") のとき に行ってください。 0 当該ビットをスレーブアドレス比較に使用しない 1 当該ビットをスレーブアドレス比較に使用する このビットを設定することにより複合 10 ビットスレーブアドレスに対してアクノ リッジを送信することが可能になります。このレジスタが 10 ビットスレーブアド レス比較に使用されるときに , このビットを "1" にセットしてください。受信した スレーブアドレスは , ITBA に上書きされます。AAS="1" (IBSR) のとき , ITBA レジ スタを読み出すことによって実際の指定されたスレーブアドレスを特定できます。 ITMK の TM9 ∼ TM0 の各ビットが ITBA のアドレスの各ビットに対応しており TM9 ∼ TM0 の値が "1" のときは ITBA のアドレスが有効になり , "0" のときには無効になり ます。 例: ITBA アドレス "00100101 11B" ITMK アドレス "11111111 00B" のとき スレーブアドレスは "00100101 00B" ∼ "00100101 11B" の空間になります。 360 第 14 章 I2C インタフェース ■ 7 ビットスレーブアドレスレジスタ (ISBA0 ∼ ISBA3) 図 14.2-9 7 ビットスレーブアドレスレジスタ (ISBA0 ∼ ISBA3) のビット構成 ISBA0 ∼ ISBA3 アドレス : ch0 0000BBH ch1 0000CBH ch2 0000DBH 初期値→ ch3 0000EBH 7 6 5 4 3 2 1 0 R/W SA6 R/W SA5 R/W SA4 R/W SA3 R/W SA2 R/W SA1 R/W SA0 R/W 0 0 0 0 0 0 0 0 このレジスタの書換えは動作停止中に行ってください (ICCR:EN=0) 。 [bit 7] 未使用ビットです。リード時は "0" です。 [bit 6 ∼ bit 0] SA6 ∼ SA0 ( スレーブアドレスビット ) スレーブモードでスレーブアドレスを受信したとき , 7 ビットスレーブアドレスが 許可 (ISMK:ENSB="1") されていると , 受信スレーブアドレスと ISBA の比較を行い ます。スレーブアドレス一致が検出されると , マスタに対してアクノリッジを送信 し , AAS ビットをセットします。 I2C インタフェースは , 反復「START」条件の後 , 7 ビットリードアクセスのアドレ スヘッダの受信にアクノリッジを返します。 スレーブアドレスの全ビットは , ISMK の設定によりマスクされます。受信スレー ブアドレスは , ISBA レジスタに上書きされます。このレジスタが有効なのは , AAS(IBSR レジスタ ) が "1" のときのみです。 I2C インタフェースは , 10 ビットスレーブアドレス指定 , またはゼネラルコールが 受信されたとき , ISBA と受信スレーブアドレスとの比較を行いません。 361 第 14 章 I2C インタフェース ■ 7 ビットスレーブアドレスマスクレジスタ (ISMK0 ∼ ISMK3) 図 14.2-10 7 ビットスレーブアドレスマスクレジスタ (ISMK0 ∼ ISMK3) のビット構成 ISMK0 ∼ ISMK3 アドレス : ch0 0000BAH ch1 0000CAH ch2 0000DAH 初期値→ ch3 0000EAH 15 14 13 12 11 10 9 8 ENSB R/W SM6 R/W SM5 R/W SM4 R/W SM3 R/W SM2 R/W SM1 R/W SM0 R/W 0 1 1 1 1 1 1 1 本レジスタの書換えは動作停止中に行ってください (ICCR:EN=0)。 [bit 15] ENSB( 7 ビットスレーブアドレス許可ビット ) 7 ビットスレーブアドレス動作許可ビットです。 0 7 ビットスレーブアドレス動作禁止 1 7 ビットスレーブアドレス動作許可 [bit 14 ∼ bit 8] SM6 ∼ SM0(7 ビットスレーブアドレスマスクビット ) このビットは 7 ビットスレーブアドレスレジスタ (ISBA) のビットをマスクします。 0 当該ビットをスレーブアドレス比較に使用しない 1 当該ビットをスレーブアドレス比較に使用する このビットを設定することにより複合 7 ビットスレーブアドレスに対してアクノ リッジを送信することが可能になります。このレジスタが 7 ビットスレーブアドレ ス比較に使用されるときに , このビットを "1" にセットしてください。受信したス レーブアドレスは , ISBA に上書きされます。AAS="1" (IBSR) のとき , ISBA レジス タを読み出すことによって実際の指定されたスレーブアドレスを特定できます。 I2C インタフェースが許可になった後 , スレーブアドレス (ISBA) は , 受信動作によっ て書き換えられるため , ISMK レジスタを書き換えたときは , ISMK レジスタを再設 定しないと期待どおりの動作をしないことがあります。 ISMK の SM6 ∼ SM0 の各ビットが ISBA のアドレスの各ビットに対応しており SM6 ∼ SM0 の値が "1" のときは ISBA のアドレスが有効になり , "0" のときには無効になり ます。 例: ISBA アドレス "0010111B" ISMK アドレス "1111100B" のとき スレーブアドレスは "0010100B" ∼ "0010111B" の空間になります。 362 第 14 章 I2C インタフェース ■ データレジスタ (IDAR0 ∼ IDAR3) 図 14.2-11 データレジスタ (IDAR0 ∼ IDAR3) 7 IDAR0 ∼ IDAR3 D7 アドレス : ch0 0000BDH R/W ch1 0000CDH 0 ch2 0000DDH 初期値→ ch3 0000EDH 6 5 4 3 2 1 0 D6 R/W D5 R/W D4 R/W D3 R/W D2 R/W D1 R/W D0 R/W 0 0 0 0 0 0 0 [bit 7 ∼ bit 0] D7 ∼ D0 ( データビット ) シリアル転送に使用されるデータレジスタであり , MSB から転送されます。 このレジスタの書込み側はダブルバッファになっており , バスが使用中(BB=1)であ る場合 , 書込みデータはシリアル転送用のレジスタにロードされます。INT ビット (IBCR) がクリアされるか , バスがアイドル状態 (IBSR:BB="0") のとき転送データは 内部転送レジスタにロードされます。 読出し時はシリアル転送用のレジスタを直接読み出すため , 本レジスタの受信デー タは INT ビット (IBCR) がセットされている場合のみ有効です。 ■ FIFO データ数レジスタ (IFN0 ∼ IFN3) 図 14.2-12 IFN0 ∼ IFN3 (FIFO データ数レジスタ ) IFN0 ∼ IFN3 15 14 13 12 11 10 9 8 アドレス : ch0 0000B0H ch1 0000C0H ch2 0000D0H 初期値→ ch3 0000E0H R R R FN4 R FN3 R FN2 R FN1 R FN0 R 0 0 0 0 0 0 0 0 [bit 15 ∼ bit 13] 未使用ビットです。常に "0" が読み出されます。 [bit 12 ∼ bit 8] FN4 ∼ FN0 (FIFO データ数 ) FIFO に格納されているデータの数を表しています。 "00H" のときは FIFO にデータがないことを示し , "10H" のときは FIFO がフルであ ることを示します。アンダラン , オーバランを起こした場合は "11H" ∼ "1FH" を表 示します。 363 第 14 章 I2C インタフェース ■ FIFO データレジスタ (IFDR0 ∼ IFDR3) 図 14.2-13 IFDR0 ∼ IFDR3 (FIFO データレジスタ ) IFDR0 ∼ IFDR3 アドレス : ch0 0000B3H ch1 0000C3H ch2 0000D3H 初期値→ ch3 0000E3H 7 6 5 4 3 2 1 0 FD7 R/W FD6 R/W FD5 R/W FD4 R/W FD3 R/W FD2 R/W FD1 R/W FD0 R/W 0 0 0 0 0 0 0 0 [bit 7 ∼ bit 0] FD7 ∼ FD0 (FIFO データビット ) FEN=1 のとき , FIFO にアクセスを行います。FEN=0 のときのアクセスは無効です。 リード時は受信 FIFO からの受信データ読出し , ライト時は送信 FIFO への送信デー タ書込みとなります。 必ず INT=1 のときにアクセスを行ってください。INT=0 のときに本レジスタにアク セスを行った場合 , 動作は保証されません (INT=0 のときアクセスを行った場合 , IFCRのFERフラグが"1"になりますので, プログラムデバッグに使用してください)。 ■ FIFO コントロールレジスタ (IFCR0 ∼ IFCR3) 図 14.2-14 IFCR0 ∼ IFCR3 (FIFO コントロールレジスタ ) IFCR0 ∼ IFCR3 アドレス : ch0 0000B2H ch1 0000C2H ch2 0000D2H 初期値→ ch3 0000E2H 15 14 13 12 11 10 9 8 FEN R/W FCL R/W - TEDIE R/W FER R/W TED R/W FRED R/W TFE R/W 0 0 - 0 0 0 0 0 [bit 15] FEN (FIFO イネーブルビット ) FIFO の動作許可ビットです。 0 FIFO を使用しません。 1 FIFO を使用します。 "0" のとき , FIFO は初期化されます。 FEN=1 で転送中に FEN=0 にすると FIFO による転送を中断し , 1 バイトの転送が終 了したときに INT=1 になります。 [bit 14] FCL (FIFO クリアビット ) FIFO をクリアします。リード時は常に "0" が読まれます。 0 意味を持たない。 1 受信 FIFO をクリアする。 [bit 13] 未使用ビットです。常に "0" が読み出されます。 364 第 14 章 I2C インタフェース [bit 12] TEDIE ( スレーブ転送終了割込みイネーブルビット ) スレーブ時 , 転送が終了割込み許可ビットです。 0 転送終了割込み禁止。 1 転送終了割込み許可。 このビットが "1" となると , FEN の値に関係なくスレーブ状態で RSC=1 もしくは BB=1 を検出すると割込みを発生します。また , 割込みクリアがアドレス受信より 遅れると NACK を出力します。 [bit 11] FER (FIFO エラーフラグ ) INT=0 中に IFDR レジスタにアクセスしたことを知らせるエラーフラグです。 0 FIFO エラーが発生していない。 1 FIFO エラーが発生している。 このフラグで割込みは発生しません。プログラムデバッグに使用してください。 [bit 10] TED ( スレーブ転送終了フラグ ) スレーブ時 , 転送が終了したことを示します。 0 スレーブ時 , 転送が終了していない。 1 スレーブ時 , 転送が終了している。 スレーブ時 , 「STOP」条件か反復「START」条件を検出したときにセットされる割込 み要因ビットです。FIFO を使用しないとき (FEN=0) も有効です。 このビットに "0" を書き込むことでクリアされます。"1" 書込みは無効です。 このビットは , リードモディファイライト (RMW) 系命令における読出し時は , 常に "1" が読まれます。 [bit 9] FRED (FIFO 受信終了フラグ ) FIFO 受信が終了したことを示します。 0 FIFO 受信が終了していない。 1 FIFO 受信が終了している。 FIFO による受信の最後の 1 バイトで , アクノリッジビットを含めた 1 バイト転送が 終了したときにセットされる割込み要因ビットです。 FIFO が空のときに , INT ビットへ "0" を書き込むことでクリアされます。また , MSS=0 または SCC=1 の書込みでもクリアされます。 365 第 14 章 I2C インタフェース [bit 8] TFE ( 送信 FIFO エンプティフラグ ) 送信時に FIFO がエンプティであることを示します。 0 送信時に FIFO にデータがある。 1 送信時に FIFO にデータがない。 データ送信時 , FIFO にデータがなく , アクノリッジビットを含めた 1 バイト転送が 終了したときにセットされる割込み要因ビットです。 FIFO にデータがあるときに , INT ビットへ "0" を書き込むことでクリアされます。 また , MSS=0 または SCC=1 の書込みでもクリアされます。 ■ FIFO 受信数レジスタ (IFRN0 ∼ IFRN3) 図 14.2-15 IFRN0 ∼ IFRN3 (FIFO 受信数レジスタ ) 7 IFRN0 ∼ IFRN3 FACK アドレス : ch0 0000B1H R/W ch1 0000C1H 0 ch2 0000D1H 初期値→ ch3 0000E1H 6 5 4 3 2 1 0 R/W R/W R/W FRN3 R/W FRN2 R/W FRN1 R/W FRN0 R/W 0 0 0 0 0 0 0 このレジスタは , FEN=1 かつ INT=1 のときに書込みを行ってください。 [bit 7] FACK (FIFO 受信アクノリッジフラグ ) FIFO の受信時 , 最後のデータのアクノリッジを設定します。 0 FRN =1 のデータ受信時にアクノリッジを発生しない。 1 FRN=1 のデータ受信時にアクノリッジを発生する。 このフラグは , ACK=1 のときに有効です。FRN=1 以外のデータ受信時はアクノリッ ジを発生します。FRN=1 のときのデータ受信時は , このビットに従いアクノリッジ を出力します。 INT=1 のときに書込みを行ってください。 [bit 3 ∼ bit 0] FRN3 ∼ FRN0 ( 受信データ数ビット ) データ受信する数を設定するレジスタです。FIFO に 1 バイト受信ごとに本レジス タはデクリメントされます。"0000B" をライトすると 16 バイト受信となります。リー ド時は残り受信データ数が読めます。FRN=1 → 0 となるときに INT=1 となります。 INT=1 のときに書込みを行ってください。 366 第 14 章 I2C インタフェース 14.3 I2C インタフェースの動作 I2C バスは , 1 本のシリアルデータライン (SDA) と 1 本のシリアルクロックライン (SCL) の 2 本の双方向バスラインに転送を行います。 I2C インタフェースはそれに対して 2 本のオープンドレイン入出力端子 (SDA, SCL) を有し , ワイヤード論理を可能にします。 ■「START」条件 バスが開放されている状態 (BB=0, MSS=0) で MSS ビットに "1" を書き込むと , I2C イ ンタフェースはマスタモードとなり , 「START」条件を発生します。そのとき , スレー ブアドレスとして IDAR レジスタの値を送信します。 バスマスタモードで割込みフラグがセットされているとき (IBCR:MSS="1", INT="1"), SCC ビットに "1" を書き込むことで , 反復「START」条件が生成されます。 バス使用時 (IBSR:BB="1", TRX="0", IBCR:MSS="0" または INT="0") に , MSS ビットに "1" を書き込むとバスが開放され , 送信が開始されます。 スレーブモード時ライト ( 受信 ) アクセスされると転送終了し , バスが開放された後 , 送信を開始します。そのとき , インタフェースがデータ送信中であれば , バスが開放さ れても送信しません。 インタフェースは , 次のことをチェックする必要があります。 • スレーブとして指定された (IBCR:MSS="0", IBSR:AAS="1") かどうか。 • 次の割込みでデータバイトを正常に送れた (IBSR:AL="1") かどうか ■「STOP」条件 マスタモード (IBCR:MSS=1, INT="1") 時に , MSS ビットに "0" を書き込むと , 「STOP」 条件を発生し , スレーブモードになります。ほかの条件での MSS ビットに "0" 書込み は無視されます。 MSS ビットがクリアされた後 , 「STOP」条件を生成しようとします。 「STOP」条件を 生成する前に , SCL ラインが "L" にドライブされているときは生成されません。次のバ イトが転送された後 , 割込みが生成されます。 <注意事項> MSS ビットに "0" を書き込んでから「STOP」条件を発生するまでに時間を要します。 「STOP」条件を発生する前に I2C インタフェースを動作禁止 (ICCR:EN="0") にすると , 直 ちに動作停止し SCL ラインに不正クロックが発生します。 I2C インタフェースの動作を禁止する際は ,「STOP」条件の発生を確認 (IBSR:BB="0") し た後 , 動作を禁止 (ICCR:EN="0") してください。 367 第 14 章 I2C インタフェース ■ スレーブアドレス検出 スレーブモードでは , 「START」条件発生後 , BB=1 にセットされ , マスタからの送信 データを IDAR レジスタへ受信します。 ● 7 ビットスレーブアドレス動作許可の場合 (ISMK:ENSB=1) 8 ビットデータ受信後 IDAR レジスタと ISBA レジスタとの比較が行われます。このと き , ISMK レジスタによりビットマスクされた値との比較になります。 一致している場合 , AAS=1 にセットし , マスタに対してアクノリッジを送信します。そ の後 , 受信データの bit 0( 受信後の IDAR レジスタの bit 0) を反転して TRX ビットへ格 納します。 ● 10 ビットスレーブアドレス動作許可の場合 (ITMK:ENTB=1) 10 ビットアドレスのヘッダ部 (11110B, TA1, TA0, 書込み ) を検出するとマスタに対し てアクノリッジを送信し , 受信データの bit 0 を反転して TRX ビットへ格納します。こ のとき割込みは発生しません。 続いて , 次の転送データと ITBA レジスタの下位データとの比較が行われます。このと き , ISMK レジスタによりビットマスクされた値との比較になります。 一致している場合 , AAS に "1" をセットし , マスタに対してアクノリッジを送信しま す。このとき , 割込みが発生します。 スレーブとしてアドレス指定され , 反復「START」条件を検出した場合 , 10 ビットア ドレスのヘッダ部 (11110B, TA1, TA0, 読出し ) を受信後に AAS に "1" をセットし , 割込 みを発生します。 10 ビットスレーブアドレスレジスタ (ITBA) と 7 ビットスレーブアドレスレジスタ (ISBA) を搭載しているので , 両方の動作許可 (ISMK:ENSB=1, ITMK:ENTB=1) をするこ とにより, 10ビットアドレス/7ビットアドレスに対してアクノリッジを送信できます。 スレーブモード時 (AAS="1") の受信スレーブアドレス長は , ITMK レジスタの RAL ビッ ト に よ っ て 決 定 し ま す。マ ス タ モ ー ド 時 は , 両 方 の 動 作 を 禁 止 (ISMK:ENSB=0, ITMK:ENTB=0) することにより , I2C インタフェースにスレーブアドレスを生成しない ことが可能です。 全スレーブアドレスは , ITMK, ISMK レジスタを設定することによりマスクできます。 ■ スレーブアドレスマスク スレーブアドレスマスクレジスタ (ITMK, ISMK) は , スレーブアドレスレジスタの各 ビットに対してマスクできます。マスクレジスタに "1" をセットされたビットはアド レス比較を行いますが , "0" に設定されているビットは無視されます。スレーブモード (IBSR:AAS="1") 時 , 受信スレーブアドレスは , ITBA(10 ビットアドレス時 ), ISBA(7 ビッ トアドレス時 ) レジスタから読み出せます。 ビットマスクがクリアされていると , 常にスレーブとしてアクセスされるので , バスの モニタとして使用できます。 <注意事項> ほかのスレーブデバイスがない場合でも , スレーブアドレスを受信するとアクノリッジを 返すので , この機能はリアルバスモニタとはなりません。 368 第 14 章 I2C インタフェース ■ マスタアドレッシング マスタモードでは , 「START」条件発生後 , BB=1, TRX=1 をセットし , IDAR レジスタ の内容を MSB から出力します。アドレスデータ送信後 , スレーブからアクノリッジを 受信すると , 送信データの bit 0( 送信後の IDAR レジスタの bit 0) を反転して TRX ビッ トへ格納します。この動作は , 反復「START」条件でも実行されます。 ライト 10 ビットスレーブアドレスのために , 2 バイト送信します。第 1 バイトは , 10 ビットシーケンスを示すヘッダ "1 1 1 1 0 A9 A8 0"であり, 続いて, 第2バイトでスレー ブアドレスの下位 8 ビット (A7 ∼ A0) を送信します。 リード 10 ビットスレーブデバイスは上記のバイトを送信し , 反復「START」条件とと もに , リードアクセスを示すヘッダ "1 1 1 1 0 A9 A8 1" を生成します。 7 ビット スレーブアクセス 10 ビット スレーブアクセス ライト 「START」条件 -A6 A5 A4 A3 A2 A1 A0 0 リード 「START」条件 -A6 A5 A4 A3 A2 A1 A0 1 ライト 「START」条件 -1 1 1 1 0 A9 A8 0 ∼ A7 A6 A5 A4 A3 A2 A1 A0 リード 「START」条件 -1 1 1 1 0 A9 A8 0 ∼ A7 A6 A5 A4 A3 A2 A1 A0 - 反復「START」条件 -1 1 1 1 0 A9 A8 1 ■ アービトレーション マスタ送信時に , ほかのマスタも同時にデータを送信している場合 , アービトレーショ ンが起こります。自身の送信データが "1", SDA ライン上のデータが "L" レベルの場合 , 自身はアービトレーションを失ったと見なし , AL=1 にセットします。 インタフェースがデータの最初のビットで , 不要な「START」条件を検出されるか 「START」条件 , 「STOP」条件の生成が失敗した場合 , AL=1 がセットされます。 アービトレーションロストが発生すると , MSS=0, TRX=0 となり , スレーブ受信モード となり , 自身のスレーブアドレスを受信するとアクノリッジを返します。 ■ アクノリッジ アクノリッジは , 受信側が送信側に対して送信します。データ受信時は , ACK ビット (IBCR) によって , 受信時にアクノリッジを送信するかどうかを選択できます。 スレーブモード時のデータ送信 ( ほかのマスタからのリードアクセス ) に , マスタから アクノリッジがなくても , TRX ビットは "0" にセットし , 受信モードになります。これ により , マスタはスレーブが SCL ラインを開放したときに , 「STOP」条件を発生でき ます。 マスタモード時 , LRB ビット (IBSR) を読み出すことにより , アクノリッジがあったか どうかをチェックできます。 ■ バスエラー 以下の条件が成立した場合はバスエラーと判断され , I2C インタフェースは停止状態に なります。 • データ転送中 (ACK ビットを含む ) の I2C バス 上の基本規定違反の検出 • マスタ時の「STOP」条件検出 • バスアイドル時における I2C バス上の基本規定違反の検出 369 第 14 章 I2C インタフェース ■ エラーを発生しない通信エラー マスタモード送信時 , SCL ラインにノイズなどで不正クロックが発生すると , I2C イン タフェースの送信ビットカウンタが早く進み , ACK サイクルでスレーブが SDA ライン に "L" を出したままハングアップすることがあります。このようなクロックの不正に 対し , エラー (AL="1", BER="1") が発生しません。 この場合 , 次の方法でエラー処理をしてください。 1. MSS="1", TRX="1", INT="1" のとき , LRB="1" であれば , 通信エラーと判断。 2. ここで , EN="0" とし , その後 EN="1" とすることにより , 擬似的に SCL が 1 クロッ ク発生します。これにより , スレーブにバスを開放させます。 EN="0" から EN="1" の期間は , スレーブ側がクロックと認識できる期間 ( 送信クロッ クの "H" 期間と同じ程度 ) としてください。 3. EN="0" の時点で , IBSR, IBCR はクリアされますので , 「START」条件から再送信処 理をしてください。このとき , MSS="0" による「STOP」条件は生成されません。 このとき , EN="1" から MSS="1"(「START」条件 ) までに , "n × 7 × tCPP" 以上の時 間を空けてください。 例: 高速モードの場合 : 6 × 7 × 30.3 ≒ 1.273 µ s 標準モードの場合 : 27 × 7 × 30.3 ≒ 5.727 µ s <注意事項> BER がセットされている場合は , EN="0" でクリアされませんのでクリア後 , 再送信して ください。 ■ その他 • アービトレーションロストした後 , 自分がアドレッシングされている場合と , アド レッシングされていなかった場合をソフトで判断しなければなりません。 アービトレーションロストするとハード的にスレーブになりますが , 1 バイト転送 終了後 , CLK ライン , DATA ライン双方を "L" に引っ張ります。このため , アドレッ シングされていなければ , 即座に CLK ライン , DATA ラインを開放し , アドレッシ ングされていた場合には , スレーブ送信またはスレーブ受信の準備をしてから , CLK ライン , DATA ラインを開放する必要があります ( すべてソフトにて処理する 必要があります )。 • I2 C バスには 1 つの割込みしかなく , 1 バイトを転送終了した時点で , ある割込み条 件に該当していた場合 , 割込み要因が発生する仕様になっています。1 つの割込み で , 複数の割込み条件を判断しなければならないため , 割込みルーチン内で各フラ グをチェックしなければなりません。1 バイト転送終了した時点での割込み条件を 下記に示します。 - バスマスタであった場合 - アドレスされたスレーブであった場合 - ゼネラルコールアドレスを受信した場合 - アービトレーションロストを検出した場合 370 第 14 章 I2C インタフェース • アービトレーションロストを検出した場合 , 即座に割込み要因が発生するのではな く , 1 バイトを転送終了した時点で要因は発生します。 アービトレーションロストを検出するとハード的にスレーブになりますが , スレー ブになっても , 割込み要因が発生するために , トータル 9 クロック出力します。よっ て , 即座に割込み要因が発生しないため , アービトレーションロスト後に処理を行 うことはできません。 371 372 No BBビット=0 ? No Yes I2Cの動作禁止 ALビット=1 ? No BBビット=0 ? No Yes No 残りの送信バイト数=0? Yes データ方向ビット TRXビット=1? Yes ACKは返ってきたか Yes マスタか No ALは発生したか No バスエラーは 生じたか No No Yes Yes RETI 転送終了割込み 要因クリア 送信データのセット 送信バイト数のデクリメント I2Cの動作禁止 ALビット=1 ? Yes No BBビット=1 ? Yes Yes スレーブアドレスセット 受信 (データ方向ビット=1) マスタ受信 受信データバイト数の セット スレーブアドレス送信 スタートコンディション発生 No BBビット=1 ? Yes スレーブアドレス送信 スタートコンディション発生 Yes スレーブアドレスセット 送信 (データ方向ビット=0) No マスタ送信 送信データバイト数の セット マスタ受信動作? I2Cの動作許可 バスエラー割込み許可 スレーブアドレス を設定 開始 割込みルーチン Yes 1 3 3 2 1 RETI 転送終了割込み 要因クリア アクノリッジ発生許可 No 残りの受信バイト数=1? No 残りの受信バイト数=0? 受信データをRAMへ格納 受信バイト数のデクリメント No 第1バイト目の受信か ? ADTビット=1 ? スレーブプログラム の割込みルーチンへ アクノリッジ発生許可 3 RETI STOP コンディション発生 1 1 アクノリッジ発生禁止 Yes Yes Yes RETI I2Cの動作許可 I2Cの初期設定 バスエラー割込み 要因クリア 2 14.4 開始 メインルーチン 第 14 章 I2C インタフェース 動作フローチャート 次の動作例のフローチャートを示します。 • メインルーチン • 割込みルーチン ■ FIFO を使用しない (FEN=0) 場合 図 14.4-1 I2C マスタ送受信プログラムフローチャート データ方向ビット TRXビット=1? Yes アドレッシングされているか? No バスエラー は生じたか? 開始 割込みルーチン RETI 転送終了割込み 要因クリア スレーブ送信 Yes (注意事項) ACKは マスタモード時にアービトレーション 返ってきたか? ロストが発生した場合に必要となります。 Yes 自分がアドレス指定されているかどうかの 送信データのセット 判断となります。 LOOP スレーブモードに設定 I2Cの動作許可 バスエラー割込み許可 スレーブアドレス を設定 開始 メインルーチン No No Yes ① No ② 受信データはアドレスか? ADTビット=1? スレーブ受信 RETI 転送終了割込み 要因クリア No 受信データをRAMへ格納 ① Yes RETI I2Cの動作許可 I2Cの初期設定 バスエラー割込み 要因クリア 転送終了割込み 要因クリア RETI ② ① 第 14 章 I2C インタフェース 図 14.4-2 I2C スレーブ送受信プログラムフローチャート 373 374 No No Yes I2Cの動作禁止 ALビット = 1 ? BBビット = 0 ? No BBビット = 0 ? Yes I2Cの動作禁止 No ALビット = 1 ? Yes No BBビット = 1 ? Yes Yes スレーブアドレスセット 受信 (データ方向ビット=1) マスタ受信 受信データバイト数の セット スレーブアドレス送信 スタートコンディション発生 No BBビット = 1 ? Yes スレーブアドレス送信 スタートコンディション発生 Yes スレーブアドレスセット 送信 (データ方向ビット=0) No マスタ送信 送信データバイト数の セット マスタ受信動作? I2Cの動作許可 バスエラー割込み許可 スレーブアドレス を設定 開始 メインルーチン No No Yes Yes RETI Yes 転送終了割込み 要因クリア 送信FIFOがフルか? または 残りの送信バイト数=0? 送信データのセット 送信バイト数のデクリメント No 残りの送信バイト数=0? Yes データ方向ビット TRXビット=1 ? Yes ACKは返ってきたか Yes マスタか No ALは発生したか No バスエラーは 生じたか 開始 割込みルーチン No Yes 1 3 3 2 1 RETI 転送終了割込み 要因クリア 受信数を16バイトに設定 アクノリッジ発生許可 No 残りの受信バイト≦16? No 残りの受信バイト数=0? Yes 受信FIFOがエンプティか? 受信データをRAMへ格納 受信バイト数のデクリメント No 第一バイト目の受信か ? ADTビット = 1 ? スレーブプログラム の割込みルーチンへ アクノリッジ発生許可 3 RETI STOPコンディション発生 1 1 受信数を残りの 受信バイト数に設定 最後受信データの アクノリッジ発生禁止 Yes Yes No Yes RETI I2Cの動作許可 I2Cの初期設定 バスエラー割込み 要因クリア 2 第 14 章 I2C インタフェース ■ FIFO を使用する (FEN=1) 場合 図 14.4-3 FIFO 内蔵 I2C マスタ送受信プログラムフローチャート (注意事項) マスタモード時にアービトレーション ロストが発生した場合に必要となります。 自分がアドレス指定されているかどうかの 判断となります。 LOOP スレーブモードに設定 I2Cの動作許可 バスエラー割込み許可 スレーブアドレス を設定 開始 メインルーチン Yes RETI 転送終了割込み 要因クリア 受信FIFOがフルか? 送信データのセット No 転送終了フラグ TEDビット=1? 送信FIFOクリア Yes 受信データはアドレスか? ADTビット=1? スレーブ送信 TRXビット=1? データ方向ビット Yes アドレッシングされているか? No バスエラー は生じたか? 開始 割込みルーチン Yes No Yes ① No No ② ① RETI RETI RETI 転送終了割込み 要因クリア 受信数を16バイトに設定 アクノリッジ発生許可 転送終了フラグ TEDビット=1? Yes Yes 受信FIFOがエンプティか? 受信データをRAMへ格納 ① No Yes I2Cの動作許可 I2Cの初期設定 スレーブ受信 No ② バスエラー割込み 要因クリア 受信データはアドレスか? ADTビット=1? 転送終了割込み 要因クリア ① 受信FIFOのクリア 第 14 章 I2C インタフェース 図 14.4-4 FIFO 内蔵 I2C スレーブ送受信プログラムフローチャート 375 第 14 章 I2C インタフェース 376 第 15 章 16 ビットパルス幅カウンタ 16 ビットパルス幅カウンタの概要 , レジスタの構 成 / 機能 , および動作について説明します。 15.1 16 ビットパルス幅カウンタの概要 15.2 16 ビットパルス幅カウンタのレジスタ 15.3 16 ビット パルス幅カウンタの動作 377 第 15 章 16 ビットパルス幅カウンタ 15.1 16 ビットパルス幅カウンタの概要 16 ビットパルス幅カウンタは , 外部からの入力信号のパルス幅を 16 ビットのアップ カウンタで測定するカウンタです。 ■ 16 ビットパルス幅カウンタ PWC は外部からの入力信号のパルス幅を 16 ビットのアップカウンタで測定します。 ハードウェアとして , 16 ビットアップカウンタ 1 個 , 8 ビット制御レジスタ 3 個と , PWC データレジスタ , PWC 上限データレジスタ , ローパスフィルタなどから構成されてい ます。 データレジスタ転送時に割込み要求を発生します。 ■ レジスタ一覧 図 15.1-1 レジスタ一覧 アドレス: 15 000090H 000094H 000098H 00009CH 8 7 PWCCL 0 PWCCH PWC 制御レジスタ PWC データレジスタ PWC 制御レジスタ PWC 上限データレジスタ PWCD PWCC2 Reserve PWCUD ■ ブロックダイヤグラム 図 15.1-2 ブロックダイヤグラム 上限値レジスタ カウントクロック サンプリング間隔 カウントクロック カウントクリア LPF RIN オーバフロー 上限値 5 キャプチャレジスタ 制御回路 4 制御 ビット フラグセット PWCD サンプリング間隔選択 カウントクロック選択 PWCCH PWCCL IRQ 内部バス 378 16ビットカウンタ 第 15 章 16 ビットパルス幅カウンタ 15.2 16 ビットパルス幅カウンタのレジスタ 16 ビットパルス幅カウンタで使用するレジスタの構成および機能について説明しま す。 ■ PWC 制御レジスタ (PWCCL) 図 15.2-1 PWC 制御レジスタ (PWCCL) のビット構成 7 INT (R/W) PWCCL 000090H 6 INTE (R/W) 5 4 OVFL OVFLE (R/W) (R/W) 3 - 2 - 1 - 0 ST (R/W) 初期値 0000--00B [bit 7] : INT PWC データレジスタにキャプチャデータを転送したことを示すフラグです。キャ プチャデータ転送割込み要求が許可されているとき(INTE=1: bit 6), 本ビットがセッ トされると割込み要求が発生します。 リードモディファイライト (RMW) 系命令における読出し時は , "1" がリードされま す。 0 割込み要因クリア 1 キャプチャデータあり [bit 6] : INTE キャプチャデータ転送割込み要求許可ビットです。 0 割込み要求禁止 1 割込み要求許可 [bit 5] : OVFL 16 ビットアップカウンタが "FFFFH" から "0000H" へオーバフローしたことを示すフ ラグです。オーバフロー割込み要求が許可されているとき (OVFLE=1:bit 4), 本ビッ トがセットされると割込み要求が発生します。 リードモディファイライト (RMW) 系命令における読出し時は , "1" がリードされま す。 0 割込み要因クリア 1 オーバフロー発生 379 第 15 章 16 ビットパルス幅カウンタ [bit 4] : OVFLE オーバフロー割込み要求許可ビットです。 0 割込み要求禁止 1 割込み要求許可 [bit 3,bit 2] : − 未使用ビットです。 [bit 1] : Reserved 予約ビットです。ライト時は必ず "0" を書き込んでください。 [bit 0] : ST PWC スタートビットです。 0 PWC 停止 1 PWC 動作 ■ PWC 制御レジスタ (PWCCH) 図 15.2-2 PWC 制御レジスタ (PWCCH) のビット構成 PWCCH 000091H 7 6 TEST1 TEST0 (R/W) (R/W) 5 (-) 4 3 2 CSLF1 CSLF0 CS2 (R/W) (R/W) (R/W) [bit 7, bit 6] : TEST1, TEST0 テストビットです。 "1" の書込みを禁止 [bit 5] 未使用ビットです。 [bit 4, bit 3] : CSLF1, CSLF0 LPF のサンプリング間隔を以下から選択します。 380 CSLF1 CSLF0 サンプリング間隔 0 0 φ × 26 0 1 φ × 28 1 0 φ × 210 1 CS1 (R/W) 0 CS0 (R/W) 初期値 00-00000B 第 15 章 16 ビットパルス幅カウンタ CSLF1 CSLF0 サンプリング間隔 1 1 φ × 212 φ : システムベースクロックの周期 [bit 2, bit 1, bit 0] : CS2, CS1, CS0 内部カウントクロックを以下のように選択します。 CKS2 CKS1 CKS0 0 0 0 φ 0 0 1 φ × 26 0 1 0 φ × 28 0 1 1 φ × 210 1 0 0 φ × 212 カウントクロック選択 φ : システムベースクロックの周期 ■ PWC データレジスタ (PWCD) 図 15.2-3 PWC データレジスタ (PWCD) のビット構成 PWCD 000094H PWCD 000094H 15 14 13 12 11 10 9 8 (R) (R) (R) (R) (R) (R) (R) (R) 7 6 5 4 3 2 1 0 (R) (R) (R) (R) (R) (R) (R) (R) 初期値 XXXXXXXXB 初期値 XXXXXXXXB パルス幅の計測値を格納するレジスタです。入力信号のエッジでのみキャプチャ値を 取り込みます。 オーバフロー時と上限値を超えたときは取り込みません。 381 第 15 章 16 ビットパルス幅カウンタ ■ PWC 制御レジスタ 2(PWCC2) 図 15.2-4 PWC 制御レジスタ 2(PWCC2) のビット構成 7 PWCC2 000098H 6 5 4 3 2 1 0 - - - - - UPINT UPINTE LOW (R/W) (R/W) (R/W) 初期値 000-----B [bit 7] : UPINT 設定した上限値レジスタの値までカウントしたことを示すフラグです。上限値割込 み要求が許可されているとき (UPINTE=1:bit 6), 本ビットがセットされると割込み 要求が発生します。 リードモディファイライト (RMW) 系命令における読出し時には , "1" がリードされ ます。 0 割込み要因クリア ( 初期値 ) 1 上限値オーバカウントあり [bit 6] : UPINTE 上限値割込み要求許可ビットです。本ビットに "1" が設定されているとカウンタ値 と上限設定レジスタとの比較を行います。 0 割込み要求禁止 ( 初期値 ) 1 割込み要求許可 [bit 5] :LOW データレジスタに入っているキャプチャ値が "L" 幅を示すことを表します。 382 0 "H" 幅測定終了 ( 初期値 ) 1 "L" 幅測定終了 第 15 章 16 ビットパルス幅カウンタ ■ PWC 上限値設定レジスタ (PWCUD) 図 15.2-5 PWC・上限値設定レジスタ (PWCUD) のビット構成 PWCUD 00009CH PWCUD 00009CH 15 14 13 12 11 10 9 8 (R) (R) (R) (R) (R) (R) (R) (R) 7 6 5 4 3 2 1 0 (R) (R) (R) (R) (R) (R) (R) (R) 初期値 XXXXXXXXB 初期値 XXXXXXXXB パルス幅測定の上限値を格納するレジスタです。 本レジスタは各幅に対応しますので , "H" 幅 , "L" 幅にかかわらず上限値を超えたパル スを測定すると , PWCC2 レジスタの UPINT ビットがセットされます。また , 本レジス タをカウンタ値が超えた場合でもカウントは連続して行われ , 停止しません。 また , 本レジスタの初期値は不定ですので , PWCC2 レジスタの UPINTE ビットに "1" を書いて上限値比較をする前に上限値をライトしてください。 383 第 15 章 16 ビットパルス幅カウンタ 16 ビット パルス幅カウンタの動作 15.3 PWC の基本動作について説明します。 ■ パルス幅カウント動作 PWC は , RIN 信号の立上りおよび , 立下りエッジでカウンタ値のキャプチャとカウン タのクリアを行います。クリアされたカウンタは , そのままカウント動作を継続しま す。また , キャプチャを行うと割込みを発生します。 カウンタ値が "FFFFH" から "0000H" になるとオーバフローによる割込みを発生します。 図 15.3-1 にこれらの動作を示します。 図 15.3-1 PWC 動作図 ST (動作許可) 上限値割込みをセットする がキャプチャはしない RIN入力 エッジ エッジ FFFFH 上限値 mmmH カウント値 0000H xxxxH PWCD aaaaH bbbbH ccccH ddddH eeeeH INT UPINT OVFL LOW <注意事項> 動作許可後 (ST=1) の最初のエッジでは , キャプチャはしません。 384 第 15 章 16 ビットパルス幅カウンタ ■ カウントクロックの選択 カウンタのカウントクロックは 5 種類から選択できます。 選択できるカウントクロックは以下のとおりです。 表 15.3-1 カウントクロックの選択 CS2 CS1 CS0 0 0 0 CLKP 0 0 1 0 1 0 1 カウントクロック選択 * PLL4 逓倍 (64MHz) PLLオフ(原発振16MHz) 31.3ns (32MHz) 125ns (8MHz) φ × 26 * 1.0µs (64MHz) 8.0µs (8MHz) 0 φ × 28 * 4.0µs (64MHz) 32.0µs (8MHz) 1 1 φ × 210 * 16.0µs (64MHz) 128.0µs (8MHz) 0 0 φ × 212 * 64.0µs (64MHz) 512.0µs (8MHz) * : CLKP は周辺クロック φ : システムベースクロックの周期 ■ LPF のサンプリング間隔について LPF のサンプリング間隔を以下の設定から選択できます。 表 15.3-2 LPF のサンプリング間隔 CSLF1 CSLF0 0 0 φ × 26 * 1.0µs 8.0µs (8MHz) 0 1 φ × 28 * 4.0µs 32.0µs (8MHz) 1 0 φ × 210 * 16.0µs 128.0µs (8MHz) 1 1 φ × 212 * 64.0µs 512.0µs (8MHz) サンプリング間隔 PLL4 逓倍 (64MHz) PLL オフ ( 原発振 16MHz) φ : システムベースクロックの周期 *: 設定時の注意 PWC の動作クロックは , CLKP です。カウントクロック , LFP のサンプリングクロックは φ で動 作します。よって , PWC の動作クロックよりカウントクロック , LFP のサンプリングクロックの ほうが速いと正しく動作しません。 周期 : PWC の動作クロック× 4 <カウントクロック PWC の動作クロック× 4 < LFP のサンプリングクロック の条件を守ってください。 例 : CLKP 32MHz 時 : 31.3ns × 4 <カウントクロック (φ × 26:1.0µs) 問題なし CLKP 16MHz 時 : 62.5ns × 4 <カウントクロック (φ × 26:1.0µs) 問題なし CLKP 8MHz 時 : 125ns × 4 <カウントクロック (φ × 26:1.0µs) 問題なし CLKP 0.5MHz 時 : 2000ns × 4 <カウントクロック (φ × 26:1.0µs) 設定禁止 385 第 15 章 16 ビットパルス幅カウンタ 図 15.3-2 LFP の動作 "L"が除去されます "H"が除去されます 入力信号 サンプリングクロック LFP出力 "H"が除去されます "L"が除去されます 入力信号 サンプリングクロック LFP出力 ■ 割込み要求発生 以下の 3 つの割込み要求を発生することが可能です。 ● キャプチャデータ転送による割込み要求 PWC データレジスタにキャプチャデータを転送すると割込みフラグがセットされ , 割 込み要求が許可されていると割込み要求が発生します。 ● カウンタのオーバフローによる割込み要求 測定中 , カウンタ値が "FFFF H" から "0000 H" へオーバフローするとオーバフローフラ グがセットされ , 割込み要求が許可されていると割込み要求が発生します。 オーバフローではキャプチャはしません。 ● カウンタ中の上限値レジスタを超えてカウントした場合の割込み要求 測定中 , カウンタ値が上限設定レジスタの値より大きくなった場合 , 上限フラグがセッ トされ , 割込み要求が許可されていると割込み要求が発生します。 386 第 16 章 16 ビットフリーランタイマ 16 ビットフリーランタイマの概要 , レジスタの構 成 / 機能 , および動作について説明します。 16.1 16 ビットフリーランタイマの概要 16.2 16 ビットフリーランタイマのレジスタ 16.3 16 ビットフリーランタイマの動作説明 387 第 16 章 16 ビットフリーランタイマ 16.1 16 ビットフリーランタイマの概要 16 ビットフリーランタイマの特長 および構成について説明します。 ■ 16 ビットフリーランタイマの特長 16 ビットフリーランタイマのカウント値はアウトプットコンペア , インプットキャプ チャの基本時間 ( ベースタイマ ) として使用されます。 • カウントクロックは 4 種類から選択可能です。 • カウンタオーバフローにより割込みを発生することができます。 • モード設定により , アウトプットコンペアのコンペアレジスタ 0 の値との一致によ るカウンタの初期化が可能です。 ■ 16 ビットフリーランタイマのブロックダイヤグラム 16 ビットフリーランタイマは 16 ビットのアップカウンタ , コントロールステータスレ ジスタより構成されています。 図 16.1-1 に , 16 ビットフリーランタイマのブロックダイヤグラムを示します。 図 16.1-1 16 ビットフリーランタイマのブロックダイヤグラム 割込み ECLK IVF IVFE STOP MODE CLR CLK1 CLK0 分周器 φ R-bus FRCK クロック 選択 16ビットフリーランタイマ (TCDT) クロック 内部回路へ(T15~T00) コンパレータ0 388 第 16 章 16 ビットフリーランタイマ 16 ビットフリーランタイマのレジスタ 16.2 16 ビットフリーランタイマで使用するレジスタの構成および機能について説明しま す。 ■ 16 ビットフリーランタイマのレジスタ一覧 16 ビットフリーランタイマのレジスタ一覧は , 以下のとおりです。 図 16.2-1 16 ビットフリーランタイマのレジスタ一覧 15 14 13 12 11 10 9 8 T15 T14 T13 T12 T11 T10 T09 T08 7 6 5 4 3 2 1 0 T07 T06 T05 T04 T03 T02 T01 T00 4 3 7 6 5 ECLK IVF IVFE STOP MODE 2 1 CLR CLK1 タイマデータレジスタ上位 (TCDT) タイマデータレジスタ下位 (TCDT) 0 タイマコントロールステータス CLK0 レジスタ (TCCS) ■ タイマデータレジスタ (TCDT) タイマデータレジスタは , 16 ビットフリーランタイマのカウント値を読み出すことの できるレジスタです。 タイマデータレジスタ (TCDT) のビット構成は , 以下のとおりです。 図 16.2-2 タイマデータレジスタ (TCDT) のビット構成 TCDT アドレス 0000F4H 15 14 13 12 11 10 9 8 T15 T14 T13 T12 T11 T10 T09 T08 R/W R/W R/W R/W R/W R/W R/W R/W 7 T07 R/W 6 T06 R/W 5 T05 R/W 4 T04 R/W 3 T03 R/W 2 T02 R/W 1 T01 R/W 0 T00 R/W 初期値 0000H カウンタ値は , リセット時に "0000H" にクリアされます。このレジスタに書き込むこと でタイマ値を設定できますが , 必ず停止 (STOP=1) 状態で行ってください。このレジス タは , ワードアクセスしてください。 16 ビットフリーランタイマの初期化は次の要因で行われます。 • リセットによる初期化 • コントロールステータスレジスタのクリア (CLR) による初期化 389 第 16 章 16 ビットフリーランタイマ ■ タイマコントロールステータスレジスタ (TCCS) タイマコントロールステータスレジスタ (TCCS) のビット構成は , 以下のとおりです。 図 16.2-3 タイマコントロールステータスレジスタ (TCCS) のビット構成 TCCS bit 7 アドレス:0000F7H ECLK R/W (0) 初期値 6 5 4 3 2 1 0 IVF R/W (0) IVFE R/W (0) STOP R/W (0) (0) CLR R/W (0) CLK1 R/W (0) CLK0 R/W (0) [bit 7] : ECLK 16 ビットフリーランタイマのカウントクロックソースを内部か外部かを選択する ビットです。 本ビットに書込み後 , すぐにクロックは変更されますので , インプットキャプチャが 停止状態のときに変更してください。 ECLK クロック選択 0 内部クロックソースを選択 ( 初期値 ) 1 外部端子 (FRCK) よりクロックを入力 <注意事項> • 内部クロックを選択した場合は, bit 1, bit 0 (CLK1, CLK0)にカウントクロックの設定を 行ってください。このカウントクロックがベースクロックとなります。また , FRCK よ りクロックを入力する場合は , 対応する DDR ビットを "0" に設定してください。 • 外部クロックに必要な最低パルス幅は , 2・T (T: 周辺系クロックマシンサイクル ) です。 [bit 6] : IVF 16 ビットフリーランタイマの割込み要求フラグです。 16ビットフリーランタイマがオーバフローを起こしたとき, またはモード設定により コンペアレジスタ 0 と比較結果が一致したときに , 本ビットは "1" にセットされます。 割込み要求許可ビット (bit 5:IVFE) がセットされていると割込みが発生します。 本ビットは "0" 書込みによりクリアされます。"1" 書込みは意味を持ちません。リー ドモディファイライト (RMW) 系命令における読出し時は , 常に "1" が読み出せます。 IVF 390 割込み要求フラグ 0 割込み要求なし ( 初期値 ) 1 割込み要求あり 第 16 章 16 ビットフリーランタイマ [bit 5] : IVFE 16 ビットフリーランタイマの割込み許可ビットです。 本ビットが "1" のとき , 割込みフラグ (bit 6:IVF) が "1" にセットされると割込みが発 生します。 IVFE 割込みイネーブル 0 割込み禁止 ( 初期値 ) 1 割込み許可 [bit 4] : STOP 16 ビットフリーランタイマのカウントを停止するためのビットです。 本ビットに "1" 書込み時にタイマのカウント停止します。 本ビットに "0" 書込み時にタイマのカウントを開始します。 STOP カウント動作 0 カウント許可 ( 動作 ) ( 初期値 ) 1 カウント禁止 ( 停止 ) <注意事項> 16 ビットフリーランタイマが停止すると , アウトプットコンペア動作も停止します。 [bit 3] : (Reserved) 書き込む際は必ず "0" を書き込んでください。 [bit 2] : CLR 動作中の 16 ビットフリーランタイマ値を "0000H" に初期化するためのビットです。 本ビットに "1" を書き込んだときにカウンタを "0000H" に初期化します。 本ビットに "0" を書き込んでも意味を持ちません。リード値は , 常に "0" です。 CLR フラグの意味 0 意味を持たない ( 初期値 ) 1 カウンタ値を "0000H" に初期化する <注意事項> • カウンタ値の初期化は , カウント値の変化点で行われます。タイマ停止中に初期化する 場合は , データレジスタに "0000H" を書き込んでください。 • "1" を書き込んだ後 , 次のカウントクロックまでにこのビットへの "0" 書込みを行うと , カウンタ値の初期化は行なわれません。 391 第 16 章 16 ビットフリーランタイマ [bit 1,bit 0] : CLK1,CLK0 16 ビットフリーランタイマのカウントクロックを選択するビットです。 本ビットに書込み後 , すぐにクロックは変更されますのでアウトプットコンペア , イ ンプットキャプチャが停止状態のときに変更してください。 カウント クロック CLK0 0 0 φ/4 125 ns 0 1 φ/16 500 ns φ =16MHz φ =8MHz φ =4MHz 250 ns 500 ns 1.00 µs 1.00 µs 2.00 µs 4.00 µs 1 0 φ/32 1.00 µs 2.00 µs 4.00 µs 8.00 µs 1 1 φ/64 2.00 µs 4.00 µs 8.00 µs 16.00 µs φ : マシンクロック 392 φ =32MHz CLK1 第 16 章 16 ビットフリーランタイマ 16.3 16 ビットフリーランタイマの動作説明 16 ビットフリーランタイマは , リセット解除後にカウンタ値 "0000H" よりカウント を開始します。 このカウンタ値が , 16 ビットインプットキャプチャの基準時間となります。 ■ 16 ビットフリーランタイマの動作説明 カウンタ値は , 次の条件でクリアされます。 • オーバフローが発生したとき • 動作中に TCCS レジスタの CLR ビットに "1" を書き込んだとき • タイマ停止中に TCDT に "0000H" を書き込んだとき • リセットをかけたとき 割込みはオーバフローが発生したときに発生します 。 図 16.3-1 にオーバフローによるカウンタクリアを示します。 図 16.3-1 オーバフローによるカウンタクリア カウンタ値 FFFFH BFFFH 7FFFH 3FFFH 時間 0000H リセット 割込み ■ 16 ビットフリーランタイマのクリアタイミング カウンタのクリアは , リセット , ソフトウェアで行われます。 リセットとソフトウェアでのカウンタクリアは , クリア発生とともに行われます。 図 16.3-2 に , 16 ビットフリーランタイマのクリアタイミングを示します。 図 16.3-2 16 ビットフリーランタイマのクリアタイミング カウンタクリア カウンタ値 N 0000H 393 第 16 章 16 ビットフリーランタイマ ■ 16 ビットフリーランタイマのカウントタイミング 16 ビットフリーランタイマは , 入力されたクロック ( 内部または外部クロック ) により カウントアップされます。外部クロック選択時は , 外部クロックの立下りエッジ↓をシ ステムクロックで同期化した後 , 内部カウントクロックの立下りでカウントされます。 図 16.3-3 に , 16 ビットフリーランタイマのカウントタイミングを示します。 図 16.3-3 16 ビットフリーランタイマのカウントタイミング φ 外部クロック入力 内部カウントクロック N カウンタ値 N+1 <注意事項> • 割込み要求フラグセットタイミングとクリアタイミングが重複した場合には , フラグ セットが優先しクリア動作は無効となります。 • コントロールステータスレジスタの bit 2 ( カウンタ初期ビット :CLR) は "1" が書き込ま れると , 内部カウンタをクリアするタイミングまで値を保持し , そのタイミングで自身 もクリアします。クリアタイミングと "1" の書込みが重複した場合には , 書込みが優先 し , カウンタ初期化ビットは , 次のクリアタイミングまで "1" を保持し続けます。 • カウンタクリア動作は , 内部カウンタが動作中 ( 内部プリスケーラも動作中 ) のみ有効 となります。停止中にカウンタをクリアする場合は , タイマカウントデータレジスタに "0000H" を書き込むようにしてください。 394 第 17 章 インプットキャプチャ インプットキャプチャの機能と動作について説明 します。 17.1 インプットキャプチャの概要 17.2 インプットキャプチャのレジスタ 17.3 インプットキャプチャの動作 395 第 17 章 インプットキャプチャ 17.1 インプットキャプチャの概要 インプットキャプチャは外部から入力された信号の立上りエッジ , 立下りエッジま たは両エッジを検出して , そのときの 16 ビットフリーランタイマ値をレジスタに保 持する機能を持っています。また , エッジ検出時に割込みを発生することができま す。 インプットキャプチャは , インプットキャプチャデータレジスタ , コントロールレジ スタで構成されています。 ■ インプットキャプチャの概要 各インプットキャプチャは , それぞれに対応した外部入力端子を持っています。 • 外部入力の有効エッジを 3 種類から選択可能です。 - 立上りエッジ - 立下りエッジ - 両エッジ • 外部入力有効エッジを検出したときに割込みを発生することができます。 MB91305 では本インプットキャプチャを 4 チャネル内蔵しています。 ■ インプットキャプチャのブロックダイヤグラム 図 17.1-1 インプットキャプチャのブロックダイヤグラム 16ビットタイマカウント値 (T15~T00) R-bus キャプチャデータレジスタ ch0,ch2 ICU0,ICU2 入力端子 エッジ検出 EG11 EG10 EG01 EG00 EG31 EG30 EG21 EG20 16ビットタイマカウント値 (T15~T00) キャプチャデータレジスタ ch1,ch3 エッジ検出 ICP1 ICP0 ICE1 ICE0 ICP3 ICP2 ICE3 ICE2 ICU1,ICU3 入力端子 割込み 割込み 396 第 17 章 インプットキャプチャ インプットキャプチャのレジスタ 17.2 インプットキャプチャには次の 2 つのレジスタがあります。 • インプットキャプチャデータレジスタ (IPCP0 ∼ IPCP3) • インプットキャプチャコントロールレジスタ (ICS01, ICS23) 以下に , これらのレジスタについて説明します。 ■ インプットキャプチャのレジスタ一覧 図 17.2-1 インプットキャプチャのレジスタ一覧 15 14 13 12 11 10 9 CP15 CP14 CP13 CP12 CP11 CP10 CP09 7 6 5 4 3 2 1 CP07 CP06 CP05 CP04 CP03 CP02 CP01 7 6 5 4 3 2 1 ICP3 ICP2 ICE3 ICE2 EG31 EG30 EG21 7 6 5 4 3 2 1 ICP1 ICP0 ICE1 ICE0 EG11 EG10 EG01 8 インプットキャプチャ CP08 データレジスタ 上位 (IPCP) 0 インプットキャプチャ CP00 データレジスタ 下位 (IPCP) 0 キャプチャコントロール EG20 レジスタ (ICS23) 0 キャプチャコントロール EG00 レジスタ (ICS01) ■ インプットキャプチャデータレジスタ (IPCP0 ∼ IPCP3) 本レジスタは , 対応した外部端子から入力される波形の有効エッジを検出したとき , 16 ビットフリーランタイマ値を保持するレジスタです。リセット時は不定です。 インプットキャプチャデータレジスタのビット構成は , 以下のとおりです。 図 17.2-2 インプットキャプチャデータ (IPCP0 ∼ IPCP3) レジスタのビット構成 IPCP0 ∼ IPCP3 15 CP15 アドレス : 0000FAH R 0000F8H 0000FEH 7 0000FCH CP07 R 14 13 12 11 10 9 8 CP14 R CP13 R CP12 R CP11 R CP10 R CP09 R CP08 R 6 5 4 3 2 1 0 CP06 R CP05 R CP04 R CP03 R CP02 R CP01 R CP00 R 初期値 XXXXXXXXB XXXXXXXXB このレジスタは 16 ビットデータまたは 32 ビットデータでアクセスしてください。書 込みはできません。 397 第 17 章 インプットキャプチャ ■ インプットキャプチャコントロールレジスタ (ICS01, ICS23) インプットキャプチャコントロールレジスタは , インプットキャプチャの割込みや エッジ検出を制御するために使用されます。 インプットキャプチャコントロールレジスタのビット構成は , 以下のとおりです。 図 17.2-3 インプットキャプチャコントロールレジスタ (ICS01, ICS23) のビット構成 ICS23 7 アドレス : 000101H ICS01 アドレス : 000103H 6 5 4 3 2 1 0 初期値 00000000B ICP3 ICP2 ICE3 ICE2 EG31 EG30 EG21 EG20 R/W R/W R/W R/W R/W R/W R/W R/W 7 6 5 4 3 2 1 0 ICP1 ICP0 ICE1 ICE0 EG11 EG10 EG01 EG00 R/W R/W R/W R/W R/W R/W R/W R/W 00000000B [bit 7, bit 6] ICP3 ∼ ICP0:割込みフラグ インプットキャプチャ割込みフラグです。外部入力端子の有効エッジを検出すると 本ビットを "1" にセットします。割込み許可ビット (ICE3, ICE2, ICE1, ICE0) がセッ トされていると , 有効エッジを検出することにより割込みを発生することができま す。本ビットは "0" 書込みによりクリアされます。"1" 書込みは意味を持ちません。 リードモディファイライト (RMW) 系命令における読出し時は , "1" が読めます。 ICPn インプットキャプチャ割込みフラグ 0 有効エッジ検出なし [ 初期値 ] 1 有効エッジ検出あり ICPn: n の番号がインプットキャプチャのチャネル番号に対応します (n:0 ∼ 3)。 [bit 5, bit 4] ICE3 ∼ ICE0:割込み許可ビット インプットキャプチャ割込み許可ビットです。本ビットが "1" のとき , 割込みフラ グ (ICP3, ICP2, ICP1, ICP0) が "1" にセットされるとインプットキャプチャ割込みが 発生します。 ICEn インプットキャプチャ割込み指定 0 割込み禁止 [ 初期値 ] 1 割込み許可 ICEn: n の番号がインプットキャプチャのチャネル番号に対応します (n:0 ∼ 3)。 398 第 17 章 インプットキャプチャ [bit 3 ∼ bit 0] : EG31, EG30, EG21, EG20, EG11, EG10, EG01, EG00 外部入力の有効エッジ極性を選択するビットです。インプットキャプチャ動作許可 も兼用しています。 EGn1 EGn0 0 0 エッジ検出なし ( 停止状態 ) [ 初期値 ] 0 1 立上りエッジ検出 ↑ 1 0 立下りエッジ検出 ↓ 1 1 両エッジ検出 ↑ & ↓ EGn1/EGn0 : エッジ検出極性 n の番号がインプットキャプチャのチャネル番号に対応します (n:0 ∼ 3)。 399 第 17 章 インプットキャプチャ 17.3 インプットキャプチャの動作 16 ビットインプットキャプチャは , 設定された有効エッジを検出すると , 16 ビット フリーランタイマの値をキャプチャレジスタに取り込んで割込みを発生させること ができます。 ■ 16 ビットインプットキャプチャの動作 図 17.3-1 インプットキャプチャの取込みタイミング例 カウンタ値 FFFFH BFFFH 7FFFH 3FFFH 時間 0000H リセット ICU0 ICU1 ICU2 データレジスタ0 3FFFH 不定 データレジスタ1 BFFFH 不定 データレジスタ2 不定 BFFFH 7FFFH キャプチャ0割込み キャプチャ1割込み キャプチャ2割込み キャプチャ0 : 立上りエッジ キャプチャ1 : 立下りエッジ キャプチャ2 : 両エッジ 再度有効エッジにより割込み発生 ソフトウェアにより割込みクリア ■ 16 ビットインプットキャプチャの入力タイミング 図 17.3-2 インプットキャプチャの入力タイミング φ カウンタ値 インプットキャプチャ入力 N N+1 有効エッジ キャプチャ信号 キャプチャレジスタ値 割込み 400 N+1 第 18 章 USB ファンクション USB ファンクションの概要 , レジスタの構成と機 能 , 動作および補足事項について説明します。 18.1 USB ファンクションの概要 18.2 USB インタフェースのレジスタ 18.3 USB ファンクションの動作 18.4 補足事項 401 第 18 章 USB ファンクション 18.1 USB ファンクションの概要 本マクロは , プロトコルエンジン部分 , データ転送に必要となる物理エンドポイント (FIFO), および CPU, DMA I/F などから構成されており , USB ファンクションデバイ スとしてのプロトコル処理を行います。 ■ USB ファンクションの概要 マクロは以下のブロックから構成されます。 ● USB プロトコルエンジン アプリケーション ( ソフトウェア ) 側の負担を軽くするため , 基本的な USB の通信プ ロトコルを処理します。 <注意事項> 以下の内容についてはアプリケーション側での対応が必要です。 • CLASS / VENDOR REQUEST の処理 • STANDERD REQUEST の SET_DESCRIPTOR / GET_DESCRIPTOR / SYNCH_ FRAME の処理 ● エンドポイント用 FIFO コントロール用 バルク転送用 割込み転送用 IN 8 バイト OUT 8 バイト IN 64 バイト× 2( ダブルバッファ ) OUT 64 バイト× 2( ダブルバッファ ) IN 8 バイト ● エンドポイント <- > プロトコルエンジン I/F ( 内部バス I/F) 回路 ● レジスタ群 ● CPU DMA I/F 回路 CPU I/F :16 ビット DMA I/F :16 ビット ● 本マクロはセルフパワードデバイスとして動作します。 ● 外部バスクロック (CLKT) を 13MHz 以上で使用してください。 402 第 18 章 USB ファンクション <注意事項> 本マクロのエンドポイント構成を以下に示します。 表 18.1-1 USB ファンクションのエンドポイント構成 ENDPOINT CONFIGURATION INTERFACE ALTERNATE TRANS TYPE Max Packet Size (BYTE) 0 ― ― ― CONTROL 8 1 1 0 0 BULK(OUT) 64 2 1 0 0 BULK(IN) 64 3 1 0 0 INTERRUPT(IN) 8 ■ ブロックダイヤグラム 図 18.1-1 ブロックダイヤグラム USB(D+,D-) プロトコルエンジン 内部バス (8ビット) 内部バス I/F コントロール & ステータス レジスタ エンドポイント用 FIFOs CPU/DMA インタフェース CPU(16ビット) / DMA (16ビット) バス 403 第 18 章 USB ファンクション 18.2 USB インタフェースのレジスタ USB インタフェースで使用するレジスタの構成および機能について説明します。 ■ レジスタ表記 図 18.2-1 レジスタ表記 記述例 ビット *1 * 2 *4 15 bit15 14 − *3 13 12 11 10 9 8 bit13 bit12 bit11 bit10 bit9 bit8 W − R/W R/W R/W R/W R/W R/W 7 6 5 4 3 2 1 0 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 R/W R/W R/W R/W R/W R/W R/W R/W *1: レジスタのビット位置 (15 ∼ 0) を示します。 *2: レジスタのビット名を示します。 *3: レジスタが物理的にないことを示します。 *4: 各ビットの読出し・書込みが可能かどうかを示します。 W: ライトオンリ R: リードオンリ R/W: リード / ライト可能 *5: リセット (RESET=0) 後の各ビット値を示します。 "X": 不定を示します。 "0": "0" を示します。 "1": "1" を示します。 <注意事項> レジスタは 16 ビット単位でアクセスします。 404 初期値 *5 X-100000B 初期値 00000000B 第 18 章 USB ファンクション データ送受信用レジスタ ( エンドポイント用 ) 18.2.1 これらのレジスタを読み書きすることでエンドポイントのデータを読み書きします。 ■ FIFO0o • 機能 : エンドポイント 0 ( コントロールアウトエンドポイント ) 用 8 バイトシン グルバッファ FIFO • アドレス : 00060000H • ビット構成 図 18.2-2 FIFO0o のビット構成 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 初期値 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 XXXXXXXXXXXXXXXXB R R R R R R R R R R R R R R R R アクセス <注意事項> USB 転送データは 1 バイト目 [bit15 ∼ bit8], 2 バイト目 [bit7 ∼ bit0] の順で格納します。 格納するデータが 1 バイトのみの場合は , [bit15 ∼ bit8] に格納します。 ■ FIFO0i • 機能 : エンドポイント 0 ( コントロールインエンドポイント ) 用 8 バイトシング ルバッファ FIFO • アドレス : 00060002H • ビット構成 図 18.2-3 FIFO0i のビット構成 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 初期値 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 XXXXXXXXXXXXXXXXB W W W W W W W W W W W W W W W W アクセス <注意事項> USB 転送データは 1 バイト目 [bit15 ∼ bit8], 2 バイト目 [bit7 ∼ bit0] の順で格納します。 格納するデータが 1 バイトのみの場合は , [bit15 ∼ bit8] に格納します。[bit7 ∼ bit0] に格 納したデータは無視されます。 405 第 18 章 USB ファンクション ■ FIFO1 • 機能 : エンドポイント1 (バルクアウトエンドポイント) 用64バイトダブルバッ ファ FIFO • アドレス : 00060004H • ビット構成 図 18.2-4 FIFO1 のビット構成 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 初期値 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 XXXXXXXXXXXXXXXXB R R R R R R R R R R R R R R R R アクセス <注意事項> • USB 転送データは 1 バイト目 [bit15 ∼ bit8], 2 バイト目 [bit7 ∼ bit0] の順で格納します。 格納するデータが 1 バイトのみの場合は , [bit15 ∼ bit8] に格納します。 • FIFO1 はダブルバッファ (64 バイト× 2) となっています。FIFO の切換えは以下のタ イミングで起こります。 - USB バス側 :ACK の転送が起きると切り換わります。 - CPU バス側 : レジスタ CONT3 の BFOK1 を "1" にセットすることで切り換わります。 なお , DMA 転送の場合は自動で CONT3 の BFOK1 がセットされます ので , そのタイミングで切り換わります。 ■ FIFO2 • 機能 : エンドポイント 2 ( バルクインエンドポイント ) 用 64 バイトダブルバッ ファ FIFO • アドレス : 00060006H • ビット構成 図 18.2-5 FIFO2 のビット構成 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 初期値 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 XXXXXXXXXXXXXXXXB W W W W W W W W W W W W W W W W アクセス <注意事項> • USB 転送データは 1 バイト目 [bit15 ∼ bit8], 2 バイト目 [bit7 ∼ bit0] の順で格納します。 格納するデータが 1 バイトのみの場合は , [bit15 ∼ bit8] に格納します。[bit7 ∼ bit0] に 格納したデータは無視されます。 • FIFO2 はダブルバッファ (64 バイト× 2) となっています。FIFO の切換えは以下のタ イミングで起こります。 • USB バス側 :ACK の転送が起きると切り換わります。 - CPU バス側 : レジスタ CONT3 の BFOK2 を "1" にセットすることで切り換わります。 なお , DMA 転送の場合は自動で CONT3 の BFOK2 がセットされます ので , そのタイミングで切り換わります。 406 第 18 章 USB ファンクション ■ FIFO3 • 機能 : エンドポイント 3 ( インタラプトインエンドポイント ) 用 8 バイトシング ルバッファ FIFO • アドレス : 00060008H • ビット構成 図 18.2-6 FIFO3 のビット構成 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 初期値 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 XXXXXXXXXXXXXXXXB W W W W W W W W W W W W W W W W アクセス <注意事項> USB 転送データは 1 バイト目 [bit15 ∼ bit8], 2 バイト目 [bit7 ∼ bit0] の順で格納します。 格納するデータが 1 バイトのみの場合は , [bit15 ∼ bit8] に格納します。[bit7 ∼ bit0] に格 納したデータは無視されます。 407 第 18 章 USB ファンクション ステータスレジスタ 18.2.2 これらのレジスタを読むことで , 内部のステータスを監視します。 ■ ST1 • 機能 : USB 転送の ACK/NACK の監視 , 割込み要因ビット • アドレス : 00060062H • ビット構成 図 18.2-7 ST1 のビット構成 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 − − − − − − NACK NACK NACK NACK NACK ACK0o ------0000000000B ACK3 ACK2 ACK1 ACK0i 3 2 1 0i 0o − − − − − − R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W 初期値 アクセス 表 18.2-1 ビット解説 名前 極性 機能 ACK0o ActiveHigh ENDPOINT0 の OUT 転送において , デバイスが ACK ハンドシェークを 受信したことを示します。 NACK0o ActiveHigh ENDPOINT0 の OUT 転送において , デバイスが NACK ハンドシェークを 送信したこと , ストール状態で転送要求を受信したこと , またはパケット にエラーを検知したことを示します。 ACK0i ActiveHigh ENDPOINT0 の IN 転送において , デバイスが ACK ハンドシェークを受 信したことを示します。 NACK0i ActiveHigh ENDPOINT0 の IN 転送において , ストール状態で転送要求を受信したこ と , またはタイムアウトしたことを示します。 ACK3 ∼ ACK1 ActiveHigh ENDPOINT[n] の転送において , デバイスが ACK ハンドシェークを送受 信したことを示します。 ActiveHigh OUT 転送用 ENDPOINT[n] の転送において , デバイスが NACK ハンド シェークを送信したこと, ストール状態で転送要求を受信したこと, また はパケットにエラーを検知したことを示します。 IN 転送用 ENDPOINT[n] の転送において , ストール状態で転送要求を受 信したこと , またはタイムアウトしたことを示します。 NACK3 ∼ NACK1 408 第 18 章 USB ファンクション <注意事項> • 各ビットに対する書込み 通常時 IRQTSTX = 1 テスト時 "1" を書き込むことで "0" にリセットされます。 "0" 書込みは無効です。 "0"/"1" 書込みは有効です。 IRQTSTX = 0 • ACK1, NACK1, ACK2, NACK2はダブルバッファに対応してレジスタを 2 面持っていま す。ダブルバッファの面が切り換わると同時に ACK1, NACK1, ACK2, NACK2 の面も 切り換わります。アプリケーション側から読出し / 書込みできるレジスタの面は , 読出 し / 書込みできる FIFO の面と同じになります。 ■ ST2 • 機能 : 表 18.2-2 を参照 • アドレス : 00060068H • ビット構成 図 18.2-8 ST2 のビット構成 15 14 13 12 11 10 9 8 7 6 − − − − − − − − − DCT6 DCT5 DCT4 DCT3 DCT2 DCT1 DCT0 XXXXXXXX XXX00000B − − − − − − − − − R 5 R 4 R 3 R 2 R 1 R 0 R 初期値 アクセス 表 18.2-2 ビット解説 名前 DCT6 ∼ DCT0 極性 機能 ActiveHigh FIFO に対して , USB バス側から読出し / 書込みが行われたデータのバイト 数を示します。 USB 転送が正常に終了し , ACK ハンドシェークを送受信した時点で更新さ れます。 409 第 18 章 USB ファンクション ■ ST3 • 機能 : 表 18.2-3 を参照 • アドレス : 0006006AH • ビット構成 図 18.2-9 ST3 のビット構成 15 14 13 12 11 10 9 8 7 STD STD REQ2 REQ1 − − − − − − − R/W R/W − − − − − − R/W R/W R/W R/W R/W R/W R/W − 6 5 4 3 2 1 EP00 CFG SET CF SOF SUSP NULL VAL UP END 0 初期値 − XXXXXXXX XXX00000B アクセス 表 18.2-3 ビット解説 名前 極性 機能 − − 予約ビットです。書込み可能ですが USB の転送には影響しません。読 出し時は "1" あるいは "0" を示します。 SUSP ActiveHigh 本デバイスがサスペンドになるとセットされて , サスペンドから抜ける とリセットされます。 SOF ActiveHigh SOF パケットを受信したことを示します。 一度セットされると "0" を書き込むまで保持されます。 CFEND ActiveHigh デバイスの初期化が終了したことを示します。マクロをリセットするこ とでクリアされます。 ActiveHigh SETUP パケットを受信したことを示します。 マクロが自動応答しないコマンドを受信し , ACK で応答した時点でセッ トされます。自動応答を行うコマンドに対してはセットされません。 コントロール転送で SETUP パケット以外の OUT 転送のデータを受信し ACK で応答した時点でリセットされます。 CFGVAL − 現在のコンフィグレーション値を示します。 マクロは BUS RESET およびセットコンフィグレーション 0 を受信した 場合にデフォルト状態に遷移します。CFGVAL はデフォルト状態では "0" を示します。 EP0ONULL ActiveHigh エンドポイント 0 の OUT 側で長さ "0" のデータパケットを受信したこ とを示します。 一度セットされると "0" を書き込むまで保持されます。 STDREQ1 ActiveHigh DREQ1 がアサートしていることを示します。 STDREQ2 ActiveHigh DREQ2 がアサートしていることを示します。 SETUP <注意事項> bit0, bit2 , bit4 および bit6 に対する書込みは , "0" 書込みのみ有効です。 410 第 18 章 USB ファンクション ■ ST4 • 機能 : 表 18.2-4 を参照 • アドレス : 0006006CH • ビット構成 図 18.2-10 ST4 のビット構成 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 − − − − − FMR10 FMR9 FMR8 FMR7 FMR6 FMR5 FMR4 FMR3 FMR2 FMR1 FMR0 XXXXX000 00000000B − − − − − R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W 初期値 アクセス 表 18.2-4 ビット解説 名前 極性 FMR10 ∼ FMR0 − 機能 最新の USB 受信フレーム番号を示します。 受信フレーム番号は SOF パケットから抽出します。 411 第 18 章 USB ファンクション ■ ST5 • 機能 : 割込み要因ビット。表 18.2-5 を参照 • アドレス : 0006006EH • ビット構成 図 18.2-11 ST5 のビット構成 15 14 13 LPEND − R/W − 12 11 10 9 8 7 6 − SET USBRE − CFG SET − − − − STST STST STST STST TRCV TTR XXXX0XXX XX000000B ALL3 ALL2 ALL1 ALL0 END SEND − R/W R/W − − − − R/W R/W R/W R/W R/W R/W − 5 4 3 2 1 0 初期値 アクセス 表 18.2-5 ビット解説 名前 極性 機能 ActiveHigh BULKIN FIFO からトータル送信バイト数分のデータの送信を終 了したことを示します。 ActiveHigh BULKOUT FIFO からトータル受信バイト数分のデータの読出し が終了したことを示します。 STSTALL3 ∼ STSTALL0 ActiveHigh ENDPOINTn がストール状態であることを示します。ストールが 解除されるとリセットされます。 USBRESET ActiveHigh USB BUS RESET が発生したことを示します。 ActiveHigh セットコンフィグレーションを受信し , ACK を返した場合に セットされます。 USB BUS RESET が発生するとリセットされます。 ActiveHigh ループバックが終了したことを示します。 TTRSEND TRCVEND SETCFG LPEND <注意事項> • STSTALL を除く各ビットに対する書込み 通常時 IRQTSTX = 1 "1" を書き込むことで "0" にリセットされます。 "0" 書込みは無効です。 テスト時 IRQTSTX = 0 "0"/"1" 書込みは有効です。 • STSTALLがセットされるのと同時に, レジスタST1のNACKビットもセットされます。 • TTRSEND をリセットする場合は CONT10 TTCNTEN=0 としてから "1" を書き込みます。 TRCVEND をリセットする場合は CONT10 TRCNTEN=0 としてから "1" を書き込みます。 412 第 18 章 USB ファンクション ■ RSIZE0 • 機能 : エンドポイント 0 ( コントロールアウトエンドポイント ) の最新転送量 を示します。 • アドレス :00060040H • ビット構成 図 18.2-12 RSIZE0 のビット構成 15 14 13 12 11 10 9 8 7 6 5 4 − − − − − − − − − − − − − − − − − − − − − − − − 3 2 1 0 初期値 RSIZE RSIZE RSIZE RSIZE XXXXXXXX XXXX0000 B 03 02 01 00 R R R R アクセス 表 18.2-6 ビット解説 名前 極性 RSIZE00 ∼ RSIZE03 − 機能 ENDPOINT0 (CONTROL OUT ENDPOINT) の最新転送量を示します。 <注意事項> RSIZE0 はマクロが ACK を送信した時点で更新されます。 ■ RSIZE1 • 機能 : エンドポイント1 (バルクアウトエンドポイント) の最新転送量を示します。 • アドレス : 00060044H • ビット構成 図 18.2-13 RSIZE1 のビット構成 15 14 13 12 11 10 9 8 7 − − − − − − − − − − − − − − − − − − 6 5 4 3 2 1 0 初期値 RSIZE RSIZE RSIZE RSIZE RSIZE RSIZE RSIZE XXXXXXXX X0000000B 16 15 14 13 12 11 10 R R R R R R R アクセス 表 18.2-7 ビット解説 名前 極性 機能 RSIZE16 ∼ RSIZE10 − エンドポイント 1 ( バルクアウトエンドポイント ) の最新転送量を示 します。 413 第 18 章 USB ファンクション <注意事項> • RSIZE1 レジスタはダブルバッファに対応してレジスタを 2 面持っています。ダブル バッファの面が切り換わると同時に RSIZE1 の面も切り換わります。アプリケーショ ン側から読出しできるレジスタの面は , 読出し / 書込みできる FIFO の面と同じになり ます。 • RSIZE1 はマクロが ACK を送信した時点で更新されます。 414 第 18 章 USB ファンクション コントロールレジスタ 18.2.3 これらのレジスタを読み書きすることで , デバイスを制御します。 ■ CONT1 • 機能 : デバイスの初期化 , デバイスのリジューム設定。表 18.2-8 を参照 • アドレス : 00060022H • ビット構成 図 18.2-14 CONT1 のビット構成 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 LP AUTO IODIS START BFOK − − RESUM − − − − − STALL STALL STALL STALL CFGEN 000XX0XX XXX00000B 3 2 1 0 R/W R/W R/W − − R/W − − − − − R/W R/W R/W R/W R/W 初期値 アクセス 表 18.2-8 ビット解説 名前 極性 機能 CFGEN ActiveHigh このビットに "1" を書き込むことで , 初期化 (ENDPOINT BUFFER の 設定 ) を行います。"1" をセットすると "0" を書き込むまで保持し ます。 初期化 (ENDPOINT BUFFER の設定 ) を実行した後は , マクロをリ セットするまで初期化 (ENDPOINT BUFFER の設定 ) は行えませ ん。 STALL3 ∼ STALL0 ActiveHigh ENDPOINT[n] をストール状態にします。 本ビットは自己リセットのレジスタです。 "1" 書込みの後に自動的に "0" に戻ります。 ActiveHigh 本デバイスがサスペンド (ST3 の SUSP=1) 状態になったときのリ ジューム要求の設定です (1:リジューム要求設定 ) 。 レジスタ ST3:SUSP=1 の場合に "1" 書込みで有効となります。 本ビットは自己リセットのレジスタです。 "1" 書込みの後に自動的に "0" に戻ります。 ActiveHigh "1" をセットすることで , ENDPOINT0 の OUT 側の受信バイト数が "0" のとき , 自動で ENDPOINT0 の OUT 側 USB 転送を許可します。 このとき , ST1:ACK0O 割込み要因はアサートされません (CONT3 の BFOK0o ビットを自動で "1" にセットします ) 。 IODIS ActiveHigh 本ビットを "1" にセットすることで , SUSPEND 信号 ( マクロ出力 信号 ) をアサートします。 SUSPEND 信号は本ビットがセットされたとき , または本デバイス がサスペンド状態のときアサートされます。 LPSTART ActiveHigh 本ビットを "1" にセットすることで , ループバックを開始します。 本ビットは自己リセットのレジスタです。ループバック終了後に 自動的に "0" に戻ります。 RESUM AUTOBFOK 415 第 18 章 USB ファンクション <注意事項> • CFGEN に対する書込みは , "1" 書込みのみ有効です。 • STALL0, STALL1, STALL2, STALL3 は STALL をセットしたエンドポイントに転送要 求があり STALL を送信した時点でリセットされます。 • マクロは STALL0 がセットされている場合でも , セットアップを受信すると正常に応 答します。この場合 , セットアップに対して ACK 応答した時点で STALL0 がリセット されます。 ■ CONT2 • 機能 : FIFO の初期化 • アドレス : 00060024H • ビット構成 図 18.2-15 CONT2 のビット構成 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 − − − − − − − − − − − INI3 INI2 INI1 INI0i INI0o XXXXXXXX XXX00000B − − − − − − − − − − − R/W R/W R/W R/W R/W 初期値 アクセス 表 18.2-9 ビット解説 名前 INI0o INI0i INI1 INI2 INI3 416 極性 機能 ActiveHigh 本ビットを "1" にセットすることで , FIFO0o のアドレスカウンタを初期化します。同 時にレジスタ ST1 の ACK0o, NACK0o, レジスタ RSIZE0 を初期化します。また , 同時に レジスタ CONT3 の BFOK0o を "1" に設定します。 本ビットは自己リセットのレジスタです。"1" 書込みの後に自動的に "0" に戻ります。 ActiveHigh 本ビットを "1" にセットすることで , FIFO0i のアドレスカウンタを初期化します。同時 にレジスタ ST1 の ACK0i, NACK0i, レジスタ CONT10 の LSTD0, ODD0 を初期化しま す。また , 同時にレジスタ CONT3 の BFOK0i を "0" に設定します。 本ビットは自己リセットのレジスタです。"1" 書込みの後に自動的に "0" に戻ります。 ActiveHigh 本ビットを "1" にセットすることで , FIFO1 のアドレスカウンタを初期化します。同時 にダブルバッファの切換えの状態 , レジスタ ST1 の ACK1, NACK1, レジスタ RSIZE1, レジスタ TRSIZE を初期化します。また , 同時にレジスタ CONT3 の BFOK1 を "1" に設 定します。 本ビットは自己リセットのレジスタです。"1" 書込みの後に自動的に "0" に戻ります。 ActiveHigh 本ビットを "1" にセットすることで , FIFO2 のアドレスカウンタを初期化します。同時 にダブルバッファの切換えの状態 , レジスタ ST1 の ACK2, NACK2, レジスタ CONT10 の LSTD2, ODD2, レジスタ TTSIZE を初期化します。また , 同時にレジスタ CONT3 の BFOK2 を "0" に設定します。 本ビットは自己リセットのレジスタです。"1" 書込みの後に自動的に "0" に戻ります。 ActiveHigh 本ビットを "1" にセットすることで , FIFO3 のアドレスカウンタを初期化します。レジ スタ ST1 の ACK3, NACK3, レジスタ CONT10 の LSTD3, ODD3 を初期化します。また , 同時にレジスタ CONT3 の BFOK3 を "0" に設定します。 本ビットは自己リセットのレジスタです。"1" 書込みの後に自動的に "0" に戻ります。 第 18 章 USB ファンクション <注意事項> • CONT2 に対する書込みは , "1" 書込みのみ有効です。 CONT2 は "1" 書込みの後に自動的に "0" に戻りますので , 通常は常に "0" が読み出され ます。 • ダブルバッファ( エンドポイント 1, エンドポイント 2) に対応して 2 面構成となるレジ スタ (ST1, RSIZE1, CONT3, CONT10) のビットは , INI1 あるいは INI2 をセットするこ とで両面が初期化されます。 • INIn(n;0o, 0i, 1, 2, 3) のセットによって初期化される FIFO およびレジスタは , INIn ビッ トをセットしてから CPU クロックで 9 サイクル経過するまで読出し / 書込みできませ ん。 • CONT3 の BFOK の各ビットは , INI の各ビットをセットすると以下の値にセットされ ます。 IN 転送用エンドポイント BFOK=0 OUT 転送用エンドポイント BFOK=1 ■ CONT3 • 機能 : エンドポイントごとの USB 転送許可の設定 • アドレス : 00060026H • ビット構成 図 18.2-16 CONT3 のビット構成 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 − − − − − − − − − − − BFOK BFOK BFOK BFOK BFOK XXXXXXXX XXX00000B 3 2 1 0i 0o − − − − − − − − − − − R/W R/W R/W R/W R/W 初期値 アクセス 表 18.2-10 ビット解説 名前 極性 機能 BFOK0o ActiveHigh ENDPOINT0 の OUT 側の USB 転送を許可します。 BFOK0i ActiveHigh ENDPOINT0 の IN 側の USB 転送を許可します。 BFOK3 ∼ BFOK1 ActiveHigh ENDPOINT[n] の USB 転送を許可します。 417 第 18 章 USB ファンクション <注意事項> • ステータスレジスタ ST1 の ACK0o または ACK0i がセットされていると , そのエンド ポイントに対して BFOK はセットできません。ただし , NACK0o または NACK0i がセッ トされていても BFOK はセットできます。 デバイスの初期化が終了した時点 ( ステータスレジスタ ST3 の CFEND がセットされ た時点 ), あるいはコントロールレジスタ CONT2 の INIn がセットされると BFOK は次 の値にセットされます。 IN 転送用エンドポイント BFOK=0 OUT 転送用エンドポイント BFOK=1 • CONT3 のすべてのビットは "1" 書込みのみ有効です。 CONT3 に "1" をセットした後 , FIFO をビジーにする場合は , CONT4 の FIFO ビジー ビットと CONT5 の FIFO ビジービットを "0" に設定してください。 • BFOK1, BFOK2( ダブルバッファのエンドポイント ) を "1" にセットすると , ダブルバッ ファの面が切り換わります。同時にレジスタの面も切り換わります。アプリケーショ ン側から読出し / 書込みできるレジスタの面は , 読出し / 書込みできる FIFO の面と同 じになります。アプリケーション側からアクセスできるレジスタの面は片面のみです ので , 裏面になっているレジスタにはアクセスできません。 • BFOK の各ビットは , そのエンドポイントで ACK の転送が起こった時点でリセットさ れます。 ■ CONT4 • 機能 : エンドポイントごとの USB ビジーの設定 • アドレス : 00060028H • ビット構成 図 18.2-17 CONT4 のビット構成 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 − − − − − − − − − − − FIFO FIFO FIFO FIFO FIFO BUSY BUSY BUSY BUSY BUSY -----------00000B 3 2 1 0i 0o − − − − − − − − − − − R/W R/W R/W R/W R/W 初期値 アクセス 表 18.2-11 ビット解説 名前 極性 FIFOBUSY3 ∼ FIFOBUSY1, FIFOBUSY0i, FIFOBUSY0o ActiveLow 機能 ENDPOINT[n] をビジーにします <注意事項> • CPU アクセスにより転送を行う場合に , FIFOBUSYn を "0" にすることで ホストから のトークンに対して常に NACK ハンドシェークを返すことができます。 • DMA により転送を行う場合は常に "0" に設定します。 418 第 18 章 USB ファンクション ■ CONT5 • 機能 : エンドポイントごとの USB ビジーの設定 • アドレス : 0006002AH • ビット構成 図 18.2-18 CONT5 のビット構成 15 14 13 12 11 10 9 8 7 6 5 4 3 2 − − − − − − − − − − − DFIFO DFIFO − BUSY2 BUSY1 − − − − − − − − − − − − R/W R/W 1 0 初期値 − − XXXXXXXX XXXX00XXB − − アクセス 表 18.2-12 ビット解説 名前 極性 機能 DFIFOBUSY2, DFIFOBUSY1 ActiveLow ENDPOINT[n] をビジーにします <注意事項> • DMA により転送を行う場合に , DFIFOBUSYn を "0" にすることでホストからのトーク ンに対して常に NACK ハンドシェークを返すことができます。 • CPU アクセスにより転送を行う場合は常に "0" に設定します。 • DFIFOBUSYn を "0" にする場合は , MDREQn ビットを "0" に設定することによって DREQ をマスクしてください。 ■ CONT6 • 機能 : エンドポイントごとの DREQ のマスク • アドレス : 0006002CH • ビット構成 図 18.2-19 CONT6 のビット構成 15 14 13 12 11 10 9 8 7 6 5 4 − − − − − − − − − − − − − − − − − − − − − − − − 3 2 MDREQ MDREQ 2 1 R/W R/W 1 0 初期値 − − XXXXXXXX XXXX00XXB − − アクセス 表 18.2-13 ビット解説 名前 極性 機能 MDREQ2, MDREQ1 ActiveLow ENDPOINT[n] の転送での DREQn のアサートをマスクします。 419 第 18 章 USB ファンクション ■ CONT7 • 機能 : エンドポイントごとの ACK 要因による IRQ のマスク • アドレス : 0006002EH • ビット構成 図 18.2-20 CONT7 のビット構成 15 14 13 12 11 10 9 8 7 6 5 − − − − − − − − − − − − − − − − − − − − − − 4 3 2 1 0 初期値 MACK MACK MACK MACK MACK XXXXXXXX XXX00000B 3 2 1 0i 0o R/W R/W R/W R/W R/W アクセス 表 18.2-14 ビット解説 420 名前 極性 機能 MACK0o ActiveLow ENDPOINT0 の OUT 側転送での ST1:ACK による IRQ のアサー トをマスクします。 MACK0i ActiveLow ENDPOINT0 の IN 側転送での ST1:ACK による IRQ のアサート をマスクします。 MACK3 ∼ MACK1 ActiveLow ENDPOINT[n] の転送での ST1:ACK による IRQ のアサートをマ スクします。 第 18 章 USB ファンクション ■ CONT8 • 機能 : エンドポイントごとの NACK 要因による IRQ のマスク • アドレス : 00060030H • ビット構成 図 18.2-21 CONT8 のビット構成 15 14 13 12 11 10 9 8 7 6 5 − − − − − − − − − − − − − − − − − − − − − − 4 3 2 1 0 初期値 MNACK MNACK MNACK MNACK MNACK XXXXXXXX XXX00000B 3 2 1 0i 0o R/W R/W R/W R/W R/W アクセス 表 18.2-15 ビット解説 名前 極性 機能 MNACK0o ActiveLow ENDPOINT0 の OUT 側転送での ST1:NACK による IRQ のアサート をマスクします。 MNACK0i ActiveLow ENDPOINT0 の IN 側転送での ST1:NACK による IRQ のアサートを マスクします。 MNACK3 ∼ MNACK1 ActiveLow ENDPOINT[n] の転送での ST1:NACK による IRQ のアサートをマス クします。 ■ CONT9 • 機能 : エンドポイントごとの STALL 要因による IRQ のマスク ( 表 18.2-16 を参 照) • アドレス : 00060032H • ビット構成 図 18.2-22 CONT9 のビット構成 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 MLP END − − MSET CFG − − − − MUSB RESET − − − MSTALL MSTALL MSTALL MSTALL 0XX0XXXX 0XXX0000B 3 2 1 0 R/W − − R/W − − − − R/W − − − R/W R/W R/W R/W 初期値 アクセス 表 18.2-16 ビット解説 名前 極性 機能 MSTALL3 ∼ MSTALL0 ActiveLow MUSBRESET ActiveLow USB BUS RESET による IRQ のアサートをマスクします。 MSETCFG ActiveLow SETCFG による IRQ をマスクします。 MLPEND ActiveLow LPEND による IRQ のアサートをマスクします。 ENDPOINT[n] の STALL による IRQ のアサートをマスクします。 421 第 18 章 USB ファンクション ■ CONT10 • 機能 : 表 18.2-17 を参照 • アドレス : 00060034H • ビット構成 図 18.2-23 CONT10 のビット構成 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 初期値 DREQ NULL NULL NULL DMA ODD3 ODD2 ODD0 CNT SET3 SET2 SET0 MODE − LSTD LSTD LSTD TRCN TTCN 3 2 0 TEN TEN − − 00000000 X00000XXB R/W R/W R/W R/W R/W R/W R/W R/W − R/W R/W R/W R/W R/W − − アクセス 表 18.2-17 ビット解説 名前 極性 TTCNTEN ActiveHigh トータル送信バイト数カウンタをイネーブルにします。 TRCNTEN ActiveHigh トータル受信バイト数カウンタをイネーブルにします。 LSTD3, LSTD2, LSTD0 ActiveHigh エンドポイント n へのラストパケットの書込みを通知します。ラス トデータの書込み前に設定します。 DMAMODE − NULLSET3, NULLSET2, NULLSET0 ActiveHigh ODD3, ODD2, ODD0 ActiveHigh DREQCNT 機能 DMA の転送方法を選択します。 1: シングル転送 *1, 0: ブロック転送 *2 Null パケットを自動送信させる場合に "1" にセットします。 − 奇数バイト数のショートパケットの書込みを通知します。 ラストデータの書込み前に設定します。 トータル転送バイト数分のデータの転送が終了した後の DREQ のア サートを制御します。 1:トータル転送バイト数分のデータの転送が終了した後は, 次のトー タル転送バイト数の設定を行うまで DREQ はアサートしません。 0:トータル転送バイト数分のデータの転送が終了した後も , DREQ をアサートします。 *1: FR ファミリではブロック / ステップ転送に該当します。 *2: FR ファミリではデマンド転送に該当します。 422 第 18 章 USB ファンクション <注意事項> • LSTD はラストパケット送信後に ACK を受信することによって自動でリセットされま すので , CPU 側からリセットを行う必要はありません。 • ODD はラストデータ書込み終了後に自動でリセットされますので , CPU 側からリセッ トを行う必要はありません。 • NULLSET はコントロール転送のデータステージ , Bulk IN 転送インタラプト IN 転送で 有効です。NULLSET を "1" にセットしておくことで , ラストパケットのサイズがマッ クスパケットサイズだった場合に , ラストパケット送信後の転送要求で自動に Null パ ケットを送信します。なお , このビットはコントロール転送のステータスステージの 0 バイトのパケットを制御するものではありません。 • LSTD2 はダブルバッファに対応してレジスタを 2 面持っています。ダブルバッファの 面が切り換わると同時に LSTD2 の面も切り換わります。アプリケーション側から読出 し / 書込みできるレジスタの面は , 読出し / 書込みできる FIFO の面と同じになります。 • LSTD2 は記載の動作をしますので , LSTD2 の値が "0" に変化することは , ラストパケッ ト転送終了を意味するものではありません。 • NULLSET=1 の場合は , NULL パケットの転送が ACK で終了した時点 (ACK を受信し た時点 ) で ACK による割込みがアサートします。 NULLSET=0 の場合は , ラストパケットの転送が ACK で終了した時点 (ACK を受信し た時点 ) で ACK による割込みがアサートします。 • DREQCNTビットの値にかかわらず, トータル受信バイト数カウンタTRSIZE分のデー タの読出しが終了した時点で次の受信データが FIFO に格納されていない場合 DREQ1 はアサートしません。 • LSTD, ODD の各ビットは "1" 書込みのみ有効です。"0" 書込みは無効です。 ■ TTSIZE • 機能 : バルクイントータル送信バイト数の設定およびカウント • アドレス : 00060036H • ビット構成 図 18.2-24 TTSIZE のビット構成 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 初期値 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 0001000100010001B R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W アクセス <注意事項> • 送信用 FIFO に送信データを書き込むとカウントダウンします。 • TTSIZE カウンタを使用する場合は TTSIZE=0000H 以外の値を設定した後 , CONT10: TTCNTEN=1 としてから FIFO への書込みアクセスを始めてください。 なお , CONT10:TTCNTEN=1 の場合に TTSIZE=0000H と設定した状態で FIFO への書 込みアクセスは行わないでください。 • TTSIZE は , CONT6 の MDREQ2 を "0" に設定して DREQ2 をマスクした状態で設定し てください。 423 第 18 章 USB ファンクション ■ TRSIZE • 機能 : バルクアウトトータル受信バイト数の設定およびカウント • アドレス : 00060038H • ビット構成 図 18.2-25 TRSIZE のビット構成 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 初期値 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 0001000100010001B R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W アクセス <注意事項> • 受信用 FIFO から受信データを読み出すとカウントダウンします。 • TRSIZE カウンタを使用する場合は TRSIZE=0000H 以外の値を設定した後 , CONT10: TRCNTEN=1 としてから FIFO への読出しアクセスを始めてください。 なお , CONT10:TRCNTEN=1 の場合に TRSIZE=0000H と設定した状態で FIFO への読 出しアクセスは行わないでください。 • TRSIZE は , CONT6 の MDREQ1 を "0" に設定して DREQ1 をマスクした状態で設定し てください。 424 第 18 章 USB ファンクション ■ RESET USB 動作開始時には同期 RESET を USB クロックで 16 クロック以上入力する必要があ ります。USB の RESET に関しては , 「第 7 章 外部割込み /NMI 制御部」を参照してく ださい。 ■ レジスタマップ 表 18.2-18 レジスタマップ アドレス レジスタ名 00060000H FIFO0o 00060002H FIFO0i 00060004H FIFO1 0006x0006H FIFO2 00060008H FIFO3 Reserved 00060022H CONT1 00060024H CONT2 00060026H CONT3 00060028H CONT4 0006002AH CONT5 0006002CH CONT6 0006002EH CONT7 00060030H CONT8 00060032H CONT9 00060034H CONT10 00060036H TTSIZE 00060038H TRSIZE Reserved 00060040H RSIZE0 Reserved 00060044H RSIZE1 Reserved 00060062H ST1 Reserved 00060068H ST2 0006006AH ST3 0006006CH ST4 0006006EH ST5 Reserved 0006FFFEH RESET 425 第 18 章 USB ファンクション 18.3 USB ファンクションの動作 USB ファンクションのデータ転送フローと CPU アクセス動作 , および DMA 動作に ついて説明します。 ■ USB ファンクションの動作 18.3.1 データ転送フロー 18.3.2 CPU アクセス動作説明 18.3.3 DMA 動作説明 18.3.4 割込み要因一覧 18.3.5 エンドポイントバッファの設定 18.3.6 ソフトウェア制御例 426 第 18 章 USB ファンクション 18.3.1 データ転送フロー USB ファンクションのデータ転送フローについて説明します。 ■ コントロール転送の SETUP ステージ ( 一部を除く標準コマンド ) ホストからの標準コマンドのほとんどの場合 , デバイス側 CPU の負荷をなくすために プロトコルエンジンがすべて自動で処理を行います。デバイス側の CPU は何も処理を 行う必要はありません。また , デバイス側 CPU へ , これらのコマンドを受信したこと を通知しません。自動処理を行う標準コマンドは下記のとおりです。 • CLEAR_FEATURE • GET_CONFIGURATION • GET_INTERFACE • GET_STATUS • SET_ADDRESS • SET_CONFIGURATION • SET_FEATURE • SET_INTERFACE 図 18.3-1 コントロール転送の SETUP ステージ ( 一部を除く標準コマンド ) のフロー プロトコル エンジン *2 CPU I/F CPUバス 内部バス *1 USB 内部バス I/F エンドポイント用 FIFO コントロール & ステータス レジスタ *1: USB からコントロール転送のセットアップステージが受信されるとプロトコルエ ンジンは端子 SETUP をアサートします。 *2: プロトコルエンジンは , GET_DESCRIPTOR / SET_DESCRIPTOR / SYNC_FRAME 以 外のスタンダードコマンドの場合に必要な処理を行うので, エンドポイント用FIFO にはデータは書き込まれません。 427 第 18 章 USB ファンクション <注意事項> • CPU ( アプリケーション ) による処理は必要ありません。 セットアップステージを正常に受信した場合 , USB に ACK ハンドシェークを転送し , エラーがあれば何も転送しません ( タイムアウト )。 • SET_CONFIGURATION を受信した場合には , レジスタ ST5 の SECFG がセットされ ます。 428 第 18 章 USB ファンクション ■ コントロール転送の SETUP ステージ ( クラスコマンド・ベンダコマンド , および一 部の標準コマンド (GET_DESCRIPTOR / SET_DESCRIPTOR / SYNCH_FRAME)) ホストからのクラスコマンド・ベンダコマンドと一部標準コマンド GET_DESCRIPTOR/ SET_DESCRIPTOR/SYNCH_FRAME は , ENDPOINT 0 OUT 転送用 FIFO に書き込まれ ます。 図 18.3-2 コントロール転送の SETUP ステージ ( クラスコマンド・ベンダコマンド , および一部の 標準コマンド (GET_DESCRIPTOR/SET_DESCRIPTOR/SYNCH_FRAME)) のフロー エンドポイント用 FIFO *4 *2 CPUバス 内部バス プロトコル エンジン CPU I/F 内部バス I/F *1 USB コントロール & ステータス レジスタ *3 *1: USB にてコントロール転送のセットアップステージが開始されると , プロトコルエ ンジンは 端子 SETUP をアサートしてステータスレジスタの SETUP ビットをセッ トします。 *2: プロトコルエンジンは , GET_DESCRIPTOR / SET_DESCRIPTOR / SYNC_FRAME, またはクラスコマンドやベンダコマンドを受信した場合, FIFO0oにセットアップス テージ中のデータを書き込み , 転送量レジスタをカウントアップします。 *3: セットアップステージが正常に終了するとプロトコルエンジンは USB に対して ACK ハンドシェークを送信します。この時点でステータスレジスタ ST1 の ACK0o ビットがセットされ , 転送量レジスタの値がステータスレジスタの RSIZE0 にロー ドされます。また , 端子 IRQ をアサートしてセットアップステージのデータが受信 されたことを外部に知らせます。 エラーなどにより正常に終了しなかった場合は , USB に対しては何も返さないとと もに受信したデータを破棄しステータスレジスタの NACK0o をセットします。 *4: CPU I/F への読出し動作により FIFO0o から有効データを読み出します。 <注意事項> アプリケーションにより受信データのコマンドをデコードして処理する必要があります。 429 第 18 章 USB ファンクション ■ コントロール転送の STATUS ステージ ( 一部を除く標準コマンド ) GET_DESCRIPTOR / SET_DESCRIPTOR / SYNCH_FRAME を除く下記の標準コマンド の場合 , プロトコルエンジンがすべて処理を行い , デバイス内部のステータスレジスタ に変化はありません。割込み信号 IRQ もアサートされません。 • CLEAR_FEATURE • GET_CONFIGURATION • GET_INTERFACE • GET_STATUS • SET_ADDRESS • SET_CONFIGURATION • SET_FEATURE • SET_INTERFACE ■ コントロール転送の STATUS ステージ ( クラスコマンド・ベンダコマンド , および 一部の標準コマンド (GET_DESCRIPTOR / SET_DESCRIPTOR / SYNCH_FRAME)) ● コントロールライトの場合 プロトコルエンジンが USB へ 0 バイトのデータを転送し , 正常終了するとステータ スレジスタの ACK0i がセットされ , このとき , 端子 IRQ がアサートされます。 次の転送に備えて , IRQ のディアサート ( ステータスレジスタの ACK0i のリセット ) とコントロールレジスタの BFOK0i のセットをアプリケーションから行う必要があ ります。 <注意事項> 0 バイトの転送に関してアプリケーションから設定する必要はありません。 ● コントロールリードの場合 プロトコルエンジンが USB から 0 バイトのデータを受信します。 <注意事項> RSIZE0 レジスタが示す受信転送量は 0 バイトです。 転送が正常に終了すると , ステータスレジスタの ACK0o がセットされ , このとき , 端子 IRQ がアサートされます。 次の転送に備えて , IRQ のディアサート ( ステータスレジスタの ACK0o のリセット ) とコントロールレジスタのBFOK0o のセットをアプリケーションから行う必要があ ります。 430 第 18 章 USB ファンクション ■ コントロール (DATA ステージ )/Bulk OUT 転送 転送データは ENDPOINT OUT 転送用 FIFO に書き込まれ , Local Bus Interface から読出 しを行います。 図 18.3-3 コントロール (DATA ステージ )/Bulk OUT 転送のフロー エンドポイント用 FIFO *4 *2 CPUバス 内部バス プロトコル エンジン CPU I/F USB 内部バス I/F *1 コントロール & ステータス レジスタ *3 *1: USBからOUT方向の転送が開始されると, プロトコルエンジンは転送先ENDPOINT アドレスを出力し , CRC チェック / ビットストリッピング / シリアル−パラレル変 換などを実行しながら転送データを順次内部バスへ出力します。 *2: 受信されたデータは内部バスを経由し転送先 ENDPOINT 用 FIFO に書き込まれ , 転 送量レジスタがカウントアップされます。 *3: 転送が 1 パケット分正常に終了すると , プロトコルエンジンは USB に対して ACK ハンドシェークを出力します。この時点でステータスレジスタの ACK ビットがセッ トされ , 転送量レジスタの値が RSIZE0 レジスタもしくは RSIZE1 レジスタにロード されます。また , 端子 IRQ をアサートして 1 パケット分の転送が終了したことを外 部に知らせます。転送途中でエラーを検知した場合 , ステータスレジスタの NACK ビットがセットされ転送が終了します。 *4: CPU I/F よりリード動作で ENDPOINT 用 FIFO から有効データを読み出せます。 <注意事項> • OUT 方向の転送が開始された時点で , コントロールレジスタの転送先エンドポイント の BFOK ビットがセットされていない場合は , プロトコルエンジンが USB に対して NACK ハンドシェークを出力し , 転送が終了します。 • OUT 方向の転送が開始された時点で , コントロールレジスタの転送先エンドポイント の STALL ビットがセットされている場合は , プロトコルエンジンが USB バスに対し て STALL ハンドシェークを出力し , 転送が終了します。このとき , ステータスレジス タ ST1 の NACK ビット , ST5 の STSTALL ビットがセットされます。 431 第 18 章 USB ファンクション <注意事項> • CPU 読出しは , DATA0[bit15 ∼ bit0] から 2 バイト単位で読み出します。 エンドポイント用 FIFO 62 ........... 16 14 12 8 6 書込み 63 ........... 17 15 13 11 9 7 FIFO ポインタ 31 ........... 8 7 6 5 4 3 プロトコルエンジン 4 5 2 2 3 1 0 1 0 CPU I/F から 読出し • バルクアウト転送において , 正常に受信したパケットのデータサイズが 0 バイトの場 合,マクロは割込みを発生しません。 ■ コントロール (DATA ステージ )/ バルク / インタラプト IN 転送 エンドポイントイン転送用 FIFO に Local Bus Interface から書き込まれたデータがプロ トコルエンジンにより USB バスへ転送されます。 図 18.3-4 コントロール (DATA ステージ )/ バルク / インタラプト IN 転送のフロー エンドポイント用 FIFO プロトコル エンジン *1 CPU I/F 内部バス I/F USB *3 コントロール & ステータス レジスタ CPUバス 内部バス *4 *2 *1: USB への IN 転送開始前に CPU I/F から書込み動作によりエンドポイント用 FIFO に データを書き込みます。 *2: コントロールレジスタの転送元エンドポイントの BFOK をセットすることで , 以後 USB から IN 転送の要求がエンドポイントに発生すればこれが処理されます。 *3: プロトコルエンジンは , USB に IN 転送要求があると , エンドポイント用 FIFO から FIFO に書き込まれたバイト数分のみ転送データを読み出します。 *4: プロトコルエンジンは , エンドポイント用 FIFO から読み出したデータに対してパ ラレル−シリアル変換 , CRC の生成 , ビットスタッフィングなどを実行したデータ を USB へ出力します。このとき , 転送が正常に終了すると (ACK ハンドシェークを 受信すると ), ステータスレジスタの ACK ビットをセットします。もし , 転送に失 敗した場合には NACK ビットをセットします。 432 第 18 章 USB ファンクション <注意事項> • CPU から DATAI [bit15 ∼ bit0] へ有効データを 2 バイト単位で書き込みます。 エンドポイント用 FIFO 62 ........... 16 14 12 10 8 6 63 ........... 17 15 13 11 9 7 書込み FIFO ポインタ 31 ........... 8 7 6 5 4 3 CPU I/F から 4 5 2 2 3 1 0 プロトコルエンジン 1 読出し 0 • BFOK をセットする以前にエンドポイントに IN 転送要求があった場合には , ステータ スレジスタの NACK ビットがセットされて , USB に NACK ハンドシェークを返します。 • IN 転送要求があった時点で , コントロールレジスタの STALL ビットがセットされてい ると , USB に STALL ハンドシェークを返します。 このとき , ステータスレジスタ ST1 の NACK ビット , ST5 の STSTALL ビットがセッ トされます。 • 転送に失敗した場合は , FIFO のデータは初期化されません。次の IN 転送要求に対し , 同じデータを自動的に再送信します。 433 第 18 章 USB ファンクション 18.3.2 CPU アクセス動作説明 USB ファンクションの CPU アクセス動作について説明します。 ■ CPU IN 転送 CPU IN 転送は , IN 転送用 FIFO にデータを書き込んだ後 , レジスタへ転送許可 BFOK をセットします。また , マクロはトータルの送信バイト数をカウントする機能を備えて おり , これを用いることによってラストパケットの送信設定を簡略化できます。このカ ウンタを動作させずに IN 転送を行うことも可能です。カウンタを用いる場合と用いな い場合ではラストパケットの送信時の設定に違いがあります。 ● トータル送信バイト数カウンタ (16 ビット ) 送信させるデータのトータルバイト数をカウントします。FIFO にデータを書き込むと カウントダウンします。トータル送信バイト数カウンタを用いる場合は , システム側よ りトータル送信バイト数 TTSIZE を設定します。 なお , トータル送信バイト数カウンタはコントロール転送には適用できません。 ● データ送信 エンドポイントバッファに 1 パケット ( 最大値 64 バイト ) のデータを書込み終了後 , システム側よりレジスタの転送許可ビット BFOK を書き込むことにより送信が行われ ます。 ● ラストパケット ラストパケットの送信にはトータル送信バイト数カウンタを用いる場合と用いない場 合で設定に違いがあります。それぞれについて以下に示します。 - トータル送信バイトカウンタを用いる場合 ラストパケットのパケットサイズ * によって以下の動作をします。 • マックスサイズパケット パケットの送信が終了後 , Null パケットの自動送信を行います。レジスタ NULLSET の設定により , Null パケットを自動送信させないことも可能です。 • 偶数バイトショートパケット パケットの送信は送信許可ビット BFOK を設定した時点で起こります。 • 奇数バイトショートパケット 偶数バイトショートパケットと同様 - トータル送信バイトカウンタを用いない場合 ラストデータ通知をレジスタ LSTD への設定 ( ラストデータ書込み前に設定 ) によっ て行います。 ラストパケットのパケットサイズ * によって以下の動作をします。 • マックスサイズパケット パケットの送信が終了後 , Null パケットの自動送信を行います。レジスタの NULLSET の設定により , Null パケットを自動送信させないことも可能です。 • 434 偶数バイトショートパケット パケットの送信は転送許可ビット BFOK を設定した時点で起こります。 第 18 章 USB ファンクション • 奇数バイトショートパケット ラストデータの書込みを行う前に , レジスタの奇数バイトパケット通知ビッ ト ODD を設定します。 パケットの送信は転送許可ビット BFOK を設定した時点で起こります。 *: ラストパケットのパケットサイズ マックスサイズパケット……… パケットサイズが最大値(64バイト)のパケット 偶数バイトショートパケット… パケットサイズが最大値未満であり , かつその 数が偶数のパケット 奇数バイトショートパケット… パケットサイズが最大値未満であり , かつその 数が奇数のパケット <注意事項> NULL パケットの自動送信を行う設定にしている場合は , 最後のデータを書き込んだ後 , NULL パケットが正常に送信終了するまで割込みは発生しません。 NULL パケットの自動送信を行わない設定にしている場合は , 最後のデータを書き込んだ 後 , 最後のパケットが正常に送信終了するまで割込みは発生しません。 表 18.3-1 CPU IN 転送時のレジスタ設定対応表 TTSIZE ( レジスタ ) BFOK ( レジスタ ) LSTD ( レジスタ ) ODD ( レジスタ ) − − − − − − − − − − ○ − 偶数サイズバイトパケット ○ − 奇数サイズバイトパケット ○ ○ ラストパケット以外 マックスサイズパケット 使用 ラストパケット 偶数サイズバイトパケット 奇数サイズバイトパケット ○ ラストパケット以外 マックスサイズパケット 未使用 ラストパケット ○ : 設定が必要 435 第 18 章 USB ファンクション ■ CPU OUT 転送 CPU OUT 転送は , OUT 転送用 FIFO に格納された受信データを読み出した後 , レジス タへ転送許可 BFOK をセットします。また , マクロはトータルの受信バイト数をカウ ントする機能を備えており , これを用いることによってすべての受信データの読出し が完了したことを知ることができます。このカウンタを動作させずに OUT 転送を行う ことも可能です。その場合はトータルの転送が終了したことを知らせる割込みは発生 しません。送信完了時の ACK 割込みを受けて CPU により転送終了を判断する必要が あります。 ● データ受信 エンドポイントバッファに読出し可能データが格納されると, マクロが割込み要求IRQ を発生します。受信したデータのサイズは受信データサイズレジスタ RSIZE に格納さ れます。受信データサイズレジスタ RSIZE を読んだ後 , そのサイズ分のデータを読み 出します。エンドポイントからデータを読み出した後 , システム側よりレジスタの転送 許可ビット BFOK を設定します。 ● トータル受信バイト数カウンタ (16 ビット ) マクロはトータルの受信データバイト数をカウントするトータル受信バイト数カウン タを備えています。 トータル受信バイト数カウンタは , CPU が FIFO に格納された受信データを読み出すこ とによってカウントダウンします。カウンタ初期値はレジスタ TRSIZE に設定します。 受信データをすべて読み出し , カウント値が "0" になると割込み IRQ が発生します。こ れによりすべてのデータの読出しが完了したことを知ることができます。 なお , トータル受信バイト数カウンタはバルク転送にのみ適用できます。 <注意事項> Bulk OUT 転送において , 正常に受信したパケットのデータサイズが 0 バイトの場合 , マ クロは割込みを発生させません。 436 第 18 章 USB ファンクション 18.3.3 DMA 動作説明 USB ファンクションの DMA 動作について説明します。 • 本マクロの DMA 転送はシングル転送 / ブロック転送に対応します。 • コントロールレジスタ CONT10 の DMAMODE の設定によりシングル転送 / ブ ロック転送の選択ができます。 • DMA 転送は Bulk IN/OUT 転送で可能です。 • DMA 転送では , 0 バイト以外の転送を行うことが可能です。 ■ DMA IN 転送 DMA IN 転送は , IN 転送用 FIFO にデータを書き込んだ後 , 自動でレジスタへ転送許可 BFOK がセットされます。また , マクロはトータルの送信バイト数をカウントする機能 を備えており , これを用いることによってラストパケットの送信を自動で行います。 ● トータル送信バイト数カウンタ (16 ビット ) 送信させるデータのトータルバイト数をカウントします。FIFO にデータを書き込むと カウントダウンします。トータル送信バイト数カウンタは , システム側よりトータル送 信バイト数 TTSIZE を設定します。 なお , トータル送信バイト数カウンタはコントロール転送 , インタラプト転送には適用 できません。 ● データ送信 データ送信は FIFO がフル (64 バイト ) になった時点で自動的に行われます。あるいは , ラストパケットの書込みが終了した時点で行われます。ラストパケットの送信ついて は次に示します。 ● ラストパケットの送信 ラストパケットのパケットサイズ * によって以下の動作をします。 • マックスサイズパケット パケットの送信はトータル送信バイト数 TTSIZE 分のデータを書き込み終わった時 点で自動的に行われます。パケットの送信が終了後 , Null パケットの自動送信を行 います。レジスタの NULLSET の設定により , Null パケットは自動送信させないこ とも可能です。 • 偶数バイトショートパケット パケットの送信はトータル送信バイト数 TTSIZE 分のデータを書き込み終わった時 点で自動的に行われます。 • 奇数バイトショートパケット 偶数バイトショートパケットと同様です。 *: ラストパケットのパケットサイズ マックスサイズパケット : パケットサイズが最大値 (64 バイト ) のパケット 偶数バイトショートパケット : パケットサイズが最大値未満であり , かつその数が 偶数のパケット 奇数バイトショートパケット : パケットサイズが最大値未満であり , かつその数が 奇数のパケット 437 第 18 章 USB ファンクション <注意事項> NULL パケットの自動送信を行う設定にしている場合は , 最後のデータを書き込んだ後 , NULL パケットが正常に送信終了するまで次の DREQ は発生しません。 NULL パケットの自動送信を行わない設定にしている場合は , 最後のデータを書き込んだ 後 , 最後のパケットが正常に送信終了するまで次の DREQ は発生しません。 ■ DMA OUT 転送 DMA OUT 転送は , OUT 転送用 FIFO に格納された受信データを読み出した後 , マクロ が自動的にレジスタへ転送許可 BFOK をセットします。また , マクロはトータルの受 信バイト数をカウントする機能を備えており , これを用いることによってすべての受 信データの読出しが完了したことを知ることができます。このカウンタを動作させず に OUT 転送を行うことも可能です。その場合はトータルの転送が終了したことを知ら せる割込みは発生しません。マクロ外部で判断する必要があります。 ● データ受信 エンドポイントバッファに読出し可能データが格納されると , マクロが DREQ を発生 します。FIFO からデータを読み出し終わると , マクロは自動的に転送許可 BFOK を セットします。 ● トータル受信データバイト数カウンタ (16 ビット ) マクロはトータルの受信データバイト数をカウントするトータル受信バイト数カウン タを備えています。 トータル受信バイト数カウンタは , DMAC が FIFO に格納された受信データを読み出す ことによってカウントダウンします。カウンタ初期値はレジスタ TRSIZE に設定しま す。受信データをすべて読み出し , カウント値が "0" になると割込み IRQ が発生しま す。これによりすべてのデータの読出しが完了したことを知ることができます。 なお , トータル受信バイト数カウンタはコントロール転送には適用できません。 <注意事項> DMA OUT 転送終了後に CPU で Bulk OUT 転送を行う場合は , レジスタ CONT2 の INI1 をセットすることによって , レジスタ ST1 の両面の ACK, NACK 割込み要因ビットを初期 化する必要があります。 438 第 18 章 USB ファンクション ■ DMA シングル転送リード / ライトタイミング FR ファミリはブロック / ステップ転送に対応します。 図 18.3-5 DMA シングル転送リード / ライトタイミング ・書込み CPUCLKの速度:13MHz以上 CPUCLK DREQ2 DACK2 WR LSTD ODD_IN ラストデータ DATAI[15:0] 有効データ 有効データ DREQはDACKがアサートされてから 1つ目のCPUCLKの立上りでネゲート されます。 WRがLowの区間はDACK/DATAIは 変化させないでください。 LSTD, ODDをレジスタで設定する場合には, ラストデータを書き込む 前に, CPUよりレジスタへアクセスして設定してください。この場合, レジスタ設定後のラストデータ書込みはCPUアクセスで行います。 DATAがFIFOに書き込まれる タイミングは, WRがLowの区間 に入力される最後のCPUCLK の立上りです。 ・読出し CPUCLK CPUCLKの速度:13MHz以上 DREQ1 DACK1 RD RDはCPUCLKと同期した信号を入力し てください。 DATAOE ODD_OUT DACK1とRDまたはDACK2とWRの入力 タイミングは同時でも問題ありません。 DATAO[15:0] DREQはDACKがアサートされて から1つ目のCPUCLKの立上りで ネゲートされます。 有効データ出力 RDがLowの区間はDACK/DATAIは 変化させないでください。 439 第 18 章 USB ファンクション ■ DMA ブロック転送リード / ライトタイミング FR ファミリはデマンド転送に対応します。 図 18.3-6 DMA ブロック転送リード / ライトタイミング ・書込み CPUCLKの速度:13MHz以上 CPUCLK DREQ2 DACK2 WR LSTD ODD_IN ラストデータ DATAI[15:0] 有効データ 有効データ WRがLowの区間はDATAIは 変化させないでください。 DREQは1パケットの書込みの最後のWRがアサートされてから 最初のCPUCLKの立上がでネゲートされます。 LSTD, ODD をレジスタで設定する場合には, ラストデータを書き込む 前に, CPUよりレジスタへアクセスして設定してください。この場合, レジスタ設定後のラストデータ書込みはCPUアクセスで行います。 WRはCPUCLK 2サイクル以上のディアサート期間が必要です。 DATAがFIFOに書き込まれ るタイミングは, WRがLow の区間に入力される最後の CPUCLKの立上りです。 ・読出し CPUCLK CPUCLKの速度:13MHz以上 DREQ1 RDはCPUCLK 1サイクル以上のディアサート 期間が必要です。 DACK1 RD DATAOE RDがLowの区間はDACKは 変化させないでください。 RDはCPUCLKと同期した信号を入力してくだ さい。 ODD_OUT 有効データ出力 DATAO[15:0] DACKnとRDまたはWRの入力タイミングは 同時でも問題ありません。 DREQは1パケットの読出しの最後のRDがアサートされてから 最初のCPUCLKの立上りでネゲートされます。 440 第 18 章 USB ファンクション 18.3.4 割込み要因一覧 表 18.3-2 に , USB ファンクションの割込み要因の一覧を示します。 ■ 割込み要因一覧 表 18.3-2 割込み要因一覧 CPU アクセス DMA アクセス ステータス ビット マスクビット IN 転送時にエンドポイントが書込み 許可状態となる ○ ― レジスタ ST1 を 参照 レジスタ CONT7 を参照 OUT 転送時にエンドポイントが読出 し許可状態となる ○ ― レジスタ ST1 を 参照 レジスタ CONT7 を参照 マクロが NACK を送受信 ○ ○ レジスタ ST1 を 参照 レジスタ CONT8 を参照 送信用エンドポイントからトータルの 送信データを送信完了 ○ ○ レジスタ ST5 TTRSEND ― 受信用エンドポイントからトータルの 受信データ読出し完了 ○ ○ レジスタ ST5 TRCVEND ― デバイスがストール状態になる ○ ○ レジスタ ST5 STALLn レジスタ CONT9 を参照 USB バスリセットがかかる ○ ○ レジスタ ST5 USBRESET レジスタ CONT9 を参照 割込み要因 ○ : 割込み IRQ がアサート 441 第 18 章 USB ファンクション エンドポイントバッファの設定 18.3.5 本マクロのプロトコルエンジンは電源投入時およびリセット後 , エンドポイントに 関する設定をプロトコルエンジン内のエンドポイントバッファに書き込む必要があ ります。設定はエンドポイントごとに 5 バイト必要であり , 全部で 20 バイトが必要 となります。 ■ エンドポイントバッファの設定 図 18.3-7 エンドポイントバッファ設定のフロー エンドポイント バッファ エンドポイントバッファ用 FIFO (FIFO2) CPU I/F 内部バス I/F プロトコル エンジン (2) コントロール & ステータス レジスタ CPUバス 内部バス (4) (3) (5) ■ 設定方法 (1) ハードウェアリセット / ソフトウェアリセットのタイミングに従ってマクロのリ セットを解除します。 (2) FIFO2 に 20 バイトのデータを CPU から書き込みます。 20 バイトの内容は「■ 設定内容」を参照してください。 (3) (2)が完了した後, コントロールレジスタCONT1のCFGENビットをセットします。 (4) (3) をトリガにして , プロトコルエンジンが 20 バイトのデータを FIFO2 から自動的 に読み出します , これにより , プロトコルエンジン内のエンドポイントバッファが 設定されます。 (5) 設定が完了するとステータスレジスタ ST3 の CFEND ビットがセットされます。 <注意事項> (3) の CFGEN ビットをセットしてから (5) の CFEND ビットがセットされるまでには 約 3.4 µs の時間がかかります。 442 第 18 章 USB ファンクション ■ 設定内容 以下のデータをデバイスの初期化のため , FIFO2 に CPU から書き込みます。 データの書込み順序は下の表において 1 行目を先頭に以下 2 行目 , 3 行目 , .., 10 行目の 順です。 各行の MSB は左側のビットです。 表 18.3-3 エンドポイントバッファの設定内容 エンドポイントバッファ設定データ [15] [0] 16 進 0000000000000000B 0X0000H 0001000010000000B 0X1080H 0000000000010100B 0X0014H 0010000010000000B 0X2080H 1000000000000001B 0X8001H 0010010000101000B 0X2428H 1000000010000000B 0X8080H 0000001000110100B 0X0234H 0011100000010000B 0X3810H 1000000000000011B 0X8003H 443 第 18 章 USB ファンクション ソフトウェア制御例 18.3.6 USB ファンクションのソフトウェア制御例を示します。 ■ セットアップ制御例 図 18.3-8 セットアップの制御例 セットアップ開始 ハードウェアとソフトウェアの リセットを解除する FIFO2に初期化のための設定データ (ENDPOINT BUFFER の設定データ) を書込み コントロールレジスタCONT1 CFGENビットをセット ステータスレジスタST3の CFENDビットをリード CFEND = ”1” NO YES コントロールレジスタCONT2 INI2ビットを“1”にセット (FIFO2を初期化) コントロールレジスタ CONT7 MACKnビットを”1”にセット (マスク解除) セットアップ終了 < 注意事項 > Control 転送の SETUP バケットは , 次項の CPU アクセス受信時の制御例の「コントロー ルレジスタ CONT3 BFOK の転送許可ビットを 1 に設定」までのフローが終了した時点で 受信可能となります。D+ のプルアップ抵抗の接続 / 切断を行うことによって HOST がデ バイスの接続を検地することを制御している場合は , プルアップ抵抗の接続は CONT3 BFOK0o の転送許可ビットを "1" に設定するフローまで終了した後に行ってください。 444 第 18 章 USB ファンクション ■ CPU アクセス受信時の制御例 図 18.3-9 CPU アクセス受信時の制御例 ( 続く ) 受信動作開始 コントロールレジスタTRSIZEに トータル受信バイト数書込み コントロールレジスタCONT10の TRCNTENビットを”1”に設定 トータル受信バイト数カウンタを使用する場合は , FIFO よりデータを読み出す前にこれらの設定を行 います。 コントロールレジスタCONT5の DFIFOBUSYビットを”0”に設定 コントロールレジスタCONT4の FIFOBUSYビットを”1”に設定 コントロールレジスタCONT3 BFOK (転送許可ビット)を”1”に設定 CONT1 の AUTOBFOK をセットしている場合は , 前 回の ENDPOINT0 の OUT 転送バイト数が 0 バイト のとき , 自動で BFOK0o は "1" にセットされます。 このとき , ACK0o 割込み要因はアサートされません。 ① < 注意事項 > Control 転送の SETUP パケットの受信は , その他のパケットの受信と同様に CONT3BFOK0o の転送許可ビットを "1" に設定するフローまで終了した時点で可能とな ります。 445 第 18 章 USB ファンクション 図 18.3-9 CPU アクセス受信時の制御例 ( 続き ) 1 割込み発生 IRQ アサート NO YES ステータスレジスタ ST1 をリード NO ACK0o = “1” YES ステータスレジスタ ST3 の SETUP ビットをリード NO SETUP = “1” YES ステータスレジスタ RSIZE0 から ENDPOINT0 の転送量 RSIZE の 読出し ステータスレジスタ RSIZE0 から ENDPOINT0 の転送量 RSIZE の 読出し ステータスレジスタ RSIZEn から ENDPOINTn の転送量 RSIZE の 読出し FIFO0o よりデータの読出し FIFO0o よりデータの読出し FIFO0n よりデータの読出し コントロール転送のセットアッ プステージをデータとして受信。 クラスコマンド / ベンダコマンド または GET_DESCRIPTOR/ SET_DESCRIPTOR/ SYNCH_FRAME なので , データ のデコードが必要。 ENDPOINT0 に対するデータ の転送(コントロール転送の データステージなど) BULKOUT 転送のデータ アプリケーションのデータなどの処理 (必要な場合) ステータスレジスタ ST1 の 割込み要因ビットをクリア 1 パケット受信完了 446 第 18 章 USB ファンクション ■ CPU アクセス送信時の制御例 図 18.3-10 CPU アクセス送信時の制御例 ( 続く ) 送信動作開始 トータル送信バイト数カウンタを 使用する場合は , FIFO にデータを 書き込む前にこれらの設定を行い ます。 なお , 一度設定を行った後はトー タルの転送が終了するまで設定の 必要はありません。 コントロールレジスタTTSIZEに トータル受信バイト数書込み コントロールレジスタCONT10の TTCNTENビットを”1”に設定 コントロールレジスタCONT5の DFIFOBUSYビットを”0”に設定 コントロールレジスタCONT4の FIFOBUSYビットを”1”に設定 (割込み発生後の処理などで必要な場合) ステータスレジスタST1の 割込み要因ビットをクリア 書き込むデータがラストデータ * NO YES トータル送信バイト数カウンタ TTSIZEを用いている * YES NO コントロールレジスタCONT10のLSTDビットをセット 奇数バイト数の データの書込みである * NO YES コントロールレジスタCONT10のODDビットをセット 送信用FIFOへのデータの書込み コントロールレジスタCONT3BFOK (転送許可ビット) を1に設定 ② (パケットの送信を許可) * : マクロ外部のシステムで判断します。 447 第 18 章 USB ファンクション 図 18.3-10 CPU アクセス送信時の制御例 ( 続き ) ② 割込み発生 (IRQアサート) NO YES ステータスレジスタST1をリード 割込み要因 ACK 送信が正常に終了 * アプリケーションのデータ処理など (必要な場合) 1パケット送信完了 * : 転送に失敗し NACK を受信した場合は , NACK ビットがセットされます。この場合 , FIFO の データは初期化されずに , 次の IN 転送要求に対 して自動で同じデータを再送信します。 448 第 18 章 USB ファンクション ■ ラストパケット送信データの書込み 図 18.3-11 ラストパケット送信データの書込み ラストパケット 書込み開始 書き込むデータがラストデータ * NO YES トータル送信バイト数カウンタ TTSIZEを用いている * YES 送信用FIFOへのデータの書込み NO コントロールレジスタCONT10の LSTDビットをセット 奇数バイト数のデータの 書込みである * NO YES コントロールレジスタCONT10の ODDビットをセット 送信用FIFOへのラストデータの書込み ラストパケット 書込み終了 * :マクロ外部のシステムで判断します。 449 第 18 章 USB ファンクション ■ DMA 受信時の制御例 図 18.3-12 DMA 受信時の制御例 受信動作開始 コントロールレジスタTRSIZEに トータル受信バイト数の書込み トータル受信バイト数カウンタを使用する場合は , FIFO よりデータを読み出す前にこれらの設定を行 います。 コントロールレジスタCONT10の TRCNTENビットを"1"にセット コントロールレジスタCONT4の FIFOBUSYビットを"0"にリセット コントロールレジスタCONT5の DFIFOBUSYビットを"1"にセット コントロールレジスタCONT6の MDREQビットを"1"にセット DREQアサート NO YES 受信用FIFOより受信データの読出し (2バイト) IRQアサート *1 NO YES ステータスレジスタST5の TRCVENDビットの読出し *1 受信動作終了 *2 450 *1 : トータル受信バイト数カウンタを用いない場合 は割込みは発生しません。トータルの転送の終 了はマクロ外部で判断する必要があります。 *2 : DMA OUT 転送終了後に CPU OUT 転送を行う 場合は , レジスタ CONT2 の INI を "1" にセット することによって , レジスタ ST1 の両面の ACK, NACK 割込み要因ビットを初期化する必 要があります。 第 18 章 USB ファンクション ■ DMA 送信時の制御例 図 18.3-13 DMA 送信時の制御例 ( 続く ) 送信動作開始 コントロールレジスタTTSIZEに トータル受信バイト数の書込み トータル送信バイト数カウンタを使用する場合は , FIFO にデータを書き込む前にこれらの設定を行い ます。 コントロールレジスタCONT10の TTCNTENビットを"1"にセット コントロールレジスタCONT4の FIFOBUSYビットを"0"にリセット コントロールレジスタCONT5の DFIFOBUSYビットを"1"にセット コントロールレジスタCONT6の MDREQビットを"1"にセット ④ DREQアサート NO YES ③ 451 第 18 章 USB ファンクション 図 18.3-13 DMA 送信時の制御例 ( 続く ) ③ 書き込むデータがラストデータ *1 NO YES トータル送信バイト数 カウンタTTSIZEを用いている *1 YES NO ⑤ YES LSTD, ODDを レジスタで設定する *1 NO 外部入力信号LSTDをアサート *2 奇数バイト数の データの書込みである *1 NO YES 外部入力信号ODDをアサート *2 送信用FIFOに送信データを書込み (2バイト) IRQアサート *3 NO ④ YES ステータスレジスタST5の割込み 要因ビットTTRSENDを読出し 送信動作終了 452 *1 : マクロ外部のシステムで判断します。 *2 : 入力タイミングは「18.3.3 DMA 動作説明」の 「DMA シングル転送リード / ライトタイミング グ」または「DMA ブロック転送リード / ライト タイミング」を参照してください。 *3 : トータル送信バイト数カウンタを用いない場合 は割込みは発生しません。トータルの転送の終 了はマクロ外部で判断する必要があります。 第 18 章 USB ファンクション 図 18.3-13 DMA 送信時の制御例 ( 続き ) ⑤ コントロールレジスタCONT6の MDREQを”0”にリセット ステータスレジスタST1の ACKを”0”にリセット コントロールレジスタCONT10の LSTDビットをセット 奇数バイト数の データの書込みである *1 NO YES コントロールレジスタCONT10の ODDビットをセット CPUにより送信用FIFOに 送信データを書込み(2バイト) コントロールレジスタCONT7の MACKビットを”1”にセット マックスパケットサイズの 転送である *1 YES NO NO コントロールレジスタCONT3の BFOKビットを”1”にセット *4 IRQアサート *3 YES ステータスレジスタST1の ACKビットをリセット 送信動作終了 *1 : マクロ外部のシステムで判断します。 *2 : 入力タイミングは「18.3.3 DMA 動作説明」の 「DMA リード / ライトタイミング」を参照して ください。 *3 : USB の転送が開始され , ラストパケットの ACK によって割込みが発生します。 *4 : この場合の BFOK の設定は , ライトイネーブル 信号 WR のアサート期間を CPUCLK の 3 サイ クル未満としてください。 453 第 18 章 USB ファンクション 図 18.3-14 ラストパケット送信データの書込み ラストパケット 書 込み開始 書き込むデータがラストデータ * YES NO 送信用FIFOへのデータの書込み トータル送信バイト数カウンタ TTSIZEを用いる 送信用FIFOへのラストデータの書込み ラストパケット 書込み終了 454 * :マクロ外部のシステムで判断します。 第 18 章 USB ファンクション 18.4 補足事項 USB ファンクションコントローラマクロの使用上の補足事項を記述します。 ■ 補足事項 18.4.1 ダブルバッファ 18.4.2 ボード上の D+ 終端抵抗制御について 18.4.3 USB 標準要求コマンドに対するマクロの自動応答内容 18.4.4 デフォルト状態での USB マクロの動作 18.4.5 サスペンド時の USB クロック制御 18.4.6 USB コネクタの接続 / 未接続の検知 18.4.7 UCLK48 の精度 18.4.8 コントロール転送時の転送許可 BFOK の設定 18.4.9 コントロール転送における注意点 18.4.10 USB バスリセット後のマクロの状態 455 第 18 章 USB ファンクション 18.4.1 ダブルバッファ • 本マクロは , バルク転送用エンドポイントにダブルバッファ(64 バイト× 2) を有し ています。 • IN転送時, USBデータ送信中に, システム側より次パケットデータを送信FIFOに書 き込むことができます。 • OUT 転送時 , システム側よりデータ読出し中に , 次パケットの受信を行うことがで きます。 • ダブルバッファの切換えはパケット単位で行います。 ■ Bulk IN 転送 (CPU 書込み /USB 読出し ) タイミングチャート 図 18.4-1 に Bulk IN 転送時のダブルバッファのタイミングチャートおよび動作図を示 します。 タイミングチャート中の IRQ は , コントロールレジスタ CONT8:MNACK の設定により NACK でアサートしない場合について示しています。 図 18.4-1 の説明を以下に示します。 (1) CPU より送信用 FIFO(a) にデータを書き込みます。 (2) FIFO(a) がフル (64 バイト ) の状態になり転送許可 BFOK をセットすると , USB 側 から送信が始まります。これと同時に CPU には FIFO(b) が見えることになり , 次 の送信用データを書き込むことができます。 (3) FIFO(b) の書込みが終了した時点で , 転送許可 BFOK をセットします。同時に CPU には FIFO(a) が見えることになりますが , FIFO(a) の USB 送信が終了していないの で CPU 側の書込みはできません。 FIFO(a) の送信が終了しエラーがなければ ACK(ACK1) が返ってきます。 (4) ACK(ACK1) が返ると FIFO(a) は書込み許可の状態となります。CPU 側から次の データを書き込みます。また , USB 側からは FIFO(b) が見えることになります。 FIFO(b) には送信許可状態のデータがすでにあるので , USB 側は送信を始めます。 (5) FIFO(a) の書込みが終了した時点で , 転送許可 BFOK をセットします。同時に CPU には FIFO(b) が見えることになりますが , FIFO(b) の USB 送信が終了していないの で CPU 側の書込みはできません。 FIFO(b) の送信が終了しエラーがあると NACK が返ってきます。 (6) NACK が返ると USB 側は FIFO(b) のデータの再送信を始めます。 CPU 側は FIFO(b) の USB 送信が終了していないので書込みはできません。 FIFO(b) の送信が終了しエラーがなければ ACK(ACK2) が返ってきます。 (7) ACK(ACK2) が返ると FIFO(b) は書込み許可の状態となりますが , ラストパケット の送信終了まで割込みは発生しません。 456 第 18 章 USB ファンクション 図 18.4-1 Bulk IN 転送 (CPU 書込み /USB 読出し ) タイミングチャート FIFO (a) CPU 書込み (1) FIFO (b) PACKET N PACKET N+1 USB 読出し CPU 書込み (2) ACK1 CPU 書込み PACKET N+1 USB 読出し (5) USB 読出し (3)(4) LAST PACKET (6) (7) USB 読出し NACK1 ACK2 * IRQ *: ラストデータ書込み後はラストパケット送信終了まで割込みは発生しません。 なお, ラストパケットの送信終了は, レジスタCONT10のLSTD2のポーリングでは 判断できませんので, 割込みによって判断してください。 USB バス側 CPU バス側 (1) FIFO (a) PACKET N 送信不可 FIFO (b) 送信可能 (2) FIFO (a) PACKET N+1 PACKET N FIFO (b) (3) 書込み不可 FIFO (a) FIFO (b) ACK1 書込み可能 (4) FIFO (a) LAST PACKET FIFO (b) (5) 書込み不可 PACKET N + 1 FIFO (a) FIFO (b) PACKET N + 1 NACK (6) 書込み不可 FIFO (a) FIFO (b) (7) PACKET N + 1 ACK2 : データを表します。 457 第 18 章 USB ファンクション ■ Bulk OUT 転送 (CPU 読出し /USB 書込み ) タイミングチャート 図 18.4-2 に Bulk OUT 転送時のダブルバッファのタイミングチャートおよび動作図を 示します。 タイミングチャート中の IRQ は , コントロールレジスタ CONT8:MNACK の設定により NACK でアサートしない場合について示しています。 図 18.4-2 の説明を以下に示します。 (1) USB 側より FIFO(a) に受信データが書き込まれます。 FIFO(a) に 1 パケット分の受信データが格納され , エラーがなければマクロが ACK(ACK1) を返します。 (2) ACK(ACK1) を返すと , FIFO(a) は読出し可能となり , CPU 側より読出しを始めま す。また , USB 側には FIFO(b) が見えることになり , FIFO(b) に次のパケットの受 信を始めます。 (3) CPU 側から FIFO(a) のデータの読出しを終了した時点で , 転送許可 BFOK をセッ トします。CPU 側には FIFO(b) が見えることになりますが , USB 側の書込みが終 了していないので読出しはできません。 FIFO(b) に 1 パケット分の受信データが格納され , エラーがあるとマクロが NACK を返します。 (4) NACK を返すと FIFO(b) には再受信が始まります。CPU 側からは読出しはできま せん。 FIFO(b) に 1 パケット分の受信データが格納され , エラーがなければマクロが ACK(ACK2) を返します。 (5) ACK(ACK2) を返すと , FIFO(b) は読出し可能となり , CPU 側より読出しを始めま す。また , USB 側には FIFO(a) が見えることになり , FIFO(a) に次のパケットの受 信を始めます。 458 第 18 章 USB ファンクション 図 18.4-2 Bulk OUT 転送 (CPU 読出し /USB 書込み ) タイミングチャート PACKET N FIFO (a) PACKET N+1 USB 書込み (1) PACKET N+2 PACKET N+1 CPU 読出し (3) ACK1 FIFO (b) USB 書込み USB 書込み (2) (4) USB 書込み NACK1 CPU 読出し (5) CPU 読出し ACK2 IRQ CPU バス側 (1) 読出し不可 USB バス側 FIFO (a) PACKET N FIFO (b) ACK1 読出し可能 (2) PACKET N FIFO (a) PACKET N+1 FIFO (b) (3) 読出し不可 FIFO (a) PACKET N+1 FIFO (b) NACK (4) 読出し不可 FIFO (a) PACKET N + 1 FIFO (b) ACK2 (5) FIFO (a) PACKET N+1 PACKET N + 2 FIFO (b) 読出し可能 : データを表します。 459 第 18 章 USB ファンクション ボード上の D+ 終端抵抗制御について 18.4.2 アプリケーション ( ファームウェア ) の初期化ルーチンにかかる時間を確保する目的 で , ボード上の USB の D+ 信号の終端抵抗を CUT する制御を実施する場合の本マク ロに関する注意点を説明します。 ■ ボード上の D+ 終端抵抗制御 ハブが下流側 USB ポートの接続を感知するのは , ファンクションデバイスの次の状況 が満足されたときです。 • USB が接続されている状態での電源投入 • 電源投入済みで USB に接続 USBの仕様では, ファンクションデバイスはハブがポートの接続を感知してから100ms 以内にトランザクションを受け取ることができる状態になっていなければなりませ ん。 本マクロは上で説明したハブが USB ポートの接続を感知する条件が成立すると , リ セット処理に続いてエンドポイントバッファの設定シーケンスが必要です。 ファームウェアが , リセットやエンドポイントバッファの設定を含めた初期化ルーチ ンに 100ms 以上の時間を必要とする場合には , ボード上の USB の D+ 信号の終端抵抗 を CUT する制御によりポートが接続されてもハブに接続を感知させない方法がありま す。この場合の本マクロの注意点を以下に示します。 <注意事項> • エンドポイントバッファの設定は , リセットが解除されてから開始します。 • 終端抵抗を接続する制御はファームウェアのエンドポイントバッファの設定が完了し てから行います。 電源投入またはUSB接続の瞬間 USBは物理的接続しているが, ハブの認識は未接続と同じ USB D+ 終端抵抗制御 1:接続 ソフトウェアリセット (負論理) ハードウェアリセット (負論理) エンドポイントバッファの設定可能期間 460 ハブがUSBの接続を感知 第 18 章 USB ファンクション 18.4.3 USB 標準要求コマンドに対するマクロの自動応答内容 本マクロは USB 標準要求コマンドに対して , アプリケーション側の負荷を軽くする ために自動応答処理します。ただし , 以下の USB 標準要求コマンドに対してはアプ リケーション側での処理が必要です。 SET_DESCRIPTOR / GET_DESCRIPTOR / SYNCH_FRAME の処理 ■ USB 標準要求コマンドに対するマクロの自動応答内容 表 18.4-1 に本マクロが自動応答処理する USB 標準要求コマンドとその自動応答内容を 示します。 自動応答内容は USB ファンクション Ver2.0 Full Speed 規格に準拠します。 表 18.4-1 USB 標準要求コマンドとその自動応答内容 自動応答内容 本マクロが自動応答処理する USB 標準要求コマンド CLEAR_FEATURE データステージ ステータス ステージ NULLデータ返送 デバイス:DEVICE_REMOTE_WAKEUP ― ENDPOINT:ENDPOINT_STALL 本マクロがサポートしているエンドポイント番号 ― エンドポイント :ENDPOINT_STALL 本マクロがサポートしていないエンドポイント番号 ― GET_CONFIGURATION 本マクロがサポートしているインタフェース番号 GET_ インタフェース GET_STATUS 現在のオルタネート値を返 NULLデータ受信 送 ― 現在のデバイスの電源の状 NULLデータ受信 態および REMOTE_WAKEUP 機能の 有効 / 無効を返送 ENDPOINT: 本マクロがサポートしているエンドポ 現在の ENDPOINT_STALL NULLデータ受信 イント番号 の状態を返送 ENDPOINT: 本マクロがサポートしていないエンド STALL 応答 ポイント番号 SET_ADDRESS SET_CONFIGURATION SET_FEATURE SET_INTERFACE STALL 応答 現在のコンフィグレーショ NULLデータ受信 ン値を返送 本マクロがサポートしていないインタフェース番号 STALL 応答 デバイス NULLデータ返送 ― ― 本マクロがサポートしているコンフィグレーション 番号 ― 本マクロがサポートしていないコンフィグレーショ ン番号 ― デバイス :DEVICE_REMOTE_WAKEUP ― ENDPOINT:ENDPOINT_STALL 本マクロがサポートしているエンドポイント番号 ( エンドポイント 0 を除く ) ― ENDPOINT:ENDPOINT_STALL 本マクロがサポートしていないエンドポイント番号 またはエンドポイント 0 ― 本マクロがサポートしているインタフェース番号お よびオルタネート番号 ― 本マクロがサポートしていないインタフェース番号 またはオルタネート番号 ― NULLデータ返送 NULLデータ返送 STALL 応答 NULLデータ返送 NULLデータ返送 STALL 応答 NULLデータ返送 STALL 応答 461 第 18 章 USB ファンクション 18.4.4 デフォルト状態での USB マクロの動作 本 USB マクロはリセット解除後にはデフォルト状態となっています。また , 本 USB マクロは Configuration=1 によってコンフィグレーション状態に遷移します。 ■ デフォルト状態での USB マクロの動作 USB ホストから送信された SET_CONFIGURATION コマンドが Configuration=1 の設定 要求であった場合 , マクロはコンフィグレーション状態に遷移します。 デフォルト状態では , ENDPOINT0 のみが使用できます。その他のエンドポイントは使 用できません。仮に ENDPOINT0 以外のエンドポイントに転送要求が送信された場合 , マクロは何も応答せずにタイムアウトとなります。 コンフィグレーション状態では , すべてのエンドポイントが使用できます。 デフォルト状態 , コンフィグレーション状態での ENDPOINT0 ∼ ENDPOINT3 のマクロ の応答を以下に示します。 表 18.4-2 コンフィグレーション状態でのエンドポイント 0 ∼ 3 のマクロの応答 デフォルト状態 コンフィグレーション状態 ENDPOINT0 使用可能 転送要求が送信されると応答します。 使用可能 転送要求が送信されると応答します。 ENDPOINT1 ∼ ENDPOINT3 使用不可 転送要求が送信されてもタイムアウトし ます。 使用可能 転送要求が送信されると応答します。 462 第 18 章 USB ファンクション 18.4.5 サスペンド時の USB クロック制御 本 USB マクロはサスペンド状態に移行すると , SUSPEND 信号をアサートします。 また , このとき , レジスタ ST3 の SUSP が "1" にセットされます。 消費電力を抑えるために , 本マクロがサスペンド状態に移行した際 , SUSP ビットに より USB クロックを停止させることが可能です。 ■ SUSPEND 時の USB クロック制御例 サスペンド時の USB クロック制御は , 例えば以下の順序で行われます。 1. マクロが SUSPEND 信号をアサート 2. UCLK48 停止 3. SUSPEND 信号がディアサート 4. UCLK48 を再始動 , USB マクロへ 48MHz のクロックを入力 5. ホストからの転送待機 USB の規格では , SUSPEND から抜けた USB ファンクションは 10ms 以内にホストから の転送を受け付ける準備ができていなくてはならないという規定があります。 そのため , USB クロックを停止させた場合は , USB マクロが SUSPEND から抜けてか ら 10ms 以内に安定した USB クロックを入力する必要があります。 463 第 18 章 USB ファンクション 18.4.6 USB コネクタの接続 / 未接続の検知 本 USB マクロには , USB コネクタの接続 / 未接続を検知する機能は実装しておりま せん。以下の方法で検知してください。 ■ USB コネクタの接続 / 未接続の検知 USB ファンクションは USB のコネクタが接続されているか , 切断されているかを D+, D- の信号からでは判断できません。 USB コネクタの接続 / 未接続は , マクロ外部において V-bus の検知により行う必要があ ります。 コネクタ接続時 :V-bus=5V コネクタ未接続時 :V-bus=0V ボード上で V-bus の変化を検知して , MPU に割込みを発生させるなどの方法が考えら れます。 コネクタの接続を検出した際は , USB マクロにリセットを行う必要があります。 464 第 18 章 USB ファンクション 18.4.7 UCLK48 の精度 UCLK48 のクロック精度について説明します。 ■ UCLK48 の精度 USB Ver1.1 の規格では , D+, D- データ信号について 2 つの規格があります。 UCLK48 へのクロック入力は , 水晶発振モジュールから 48MHz を供給してください。 PLL をご使用になる場合は , 特にクロック精度に注意してください。 ● データレート ( 長期的 ) 規格 デバイス装置は(LSIだけではなくて装置として) 2500ppm(±0.25%)の精度が必要です。 USB 規格で 2500ppm の精度が要求されるのは 12MHz に対してですが , USB マクロは 48MHzのクロックエッジの中からデータに同期したクロックエッジを選択して12MHz のクロックとするため , 48MHz に対して 2500ppm よりも高い精度が必要となります。 このため , UCLK48 には必要条件として 2500ppm よりも高い精度が必要となります。 ● 短期的な規格 デバイス装置は(LSIだけではなくて装置として)次のジッタを満たす必要があります。 • 1 回目のクロスポイントまで+ / − 1ns 以内のジッタ • 2 回目のクロスポイントまで+ / − 2ns 以内のジッタ 毎回 D+, D- 信号が変化することがあるので , 48MHz のクロックの各エッジに対して + / − 1ns の精度が必要となります。 465 第 18 章 USB ファンクション 18.4.8 コントロール転送時の転送許可 BFOK の設定 コントロール転送のセットアップステージにおいて , マクロがコマンドを受信し ACK 応答するためには , レジスタ CONT3 の BFOK0o が "1" にセットされている必 要があります。BFOK0o が "0" の場合はタイムアウトします。これは , マクロが自 動処理するコマンドのセットアップステージにおいても同様です。 ■ BFOK の設定 コントロール転送時の BFOK0i, BFOK0o の設定について以下に示します。 マクロが自動処理するリクエストの場合 • セットアップステージ - ACK 応答させるためには BFOK0o=1 にセットする必要があります。 - BFOK0o=0 の場合はタイムアウトします。 • データステージ - IN : 対象のリクエストはありません。 - OUT :BFOK0o の設定値にかかわらず ACK 応答 • ステータスステージ - IN :BFOK0i の設定値にかかわらず ACK 応答 - OUT :BFOK0o の設定値にかかわらず ACK 応答 マクロが自動処理しないリクエストの場合 • セットアップステージ ACK 応答させるためには BFOK0o=1 にセットする必要があります。 • データステージ - IN :ACK 応答させるためには BFOK0i=1 にセットする必要があります。 - OUT :ACK 応答させるためには BFOK0o=1 にセットする必要があります。 • ステータスステージ 466 - IN :ACK 応答させるためには BFOK0i=1 にセットする必要があります。 - OUT :ACK 応答させるためには BFOK0o=1 にセットする必要があります。 第 18 章 USB ファンクション 18.4.9 コントロール転送における注意点 コントロール転送における注意点を以下に示します。 ■ BFOK0o の設定の優先順位 USB の規格では , USB ファンクションはセットアップステージで ACK 応答することの みが許されています。ACK 応答できない場合はタイムアウトします。 セットアップステージでタイムアウトが 3 回続くと USB ホストはファンクションデバ イスを切り離します。そのため , セットアップステージでは必ず ACK 応答させること が望ましい制御となります。 ステータスステージが ACK 応答で終了すると , BFOK0o はリセットされます。次に セットアップステージで ACK 応答させるためには , セットアップステージが始まる前 に BFOK0o の設定をすることが必要ですので , BFOK0o の設定の優先順位はできるだ け上位にしてください。 なお , このことはマクロが自動処理しないコマンドの場合に該当します。マクロが自動 処理するコマンドの場合には ACK の転送があっても BFOK0o はリセットされません。 ■ GET_DESCRIPTOR コマンドでのデータステージの中断 自動応答ではない GET_DESCRIPTOR コマンドの場合に , 初めにホストが要求してく る IN 転送データのバイト数未満でも , ホストが途中でデータステージを止めてしまう ことがあります。そのため , 先に IN 転送用 FIFO へデータを書き込んでおいても , 以下 に示すようにデータをホストがすべて転送しない場合があります。 • セットアップステージ (16 バイト要求 ) ↓ • データステージ CPU から IN 転送用 FIFO へ 8 バイト ( データ A) ライト ホストから IN 転送要求 ファンクションが 8 バイト送信 ACK 受信 CPU から IN 転送用 FIFO へ 8 バイト ( データ B) ライト ( 注意事項 ) ここでホストがデータステージを止めてしまうことがあります。 ↓ • ステータスステージ OUT 転送で 0 バイト受信 ここで , 既に FIFO に書いてあるデータ B は , 次の IN 転送要求が発生する前に破棄し FIFO を初期化する必要があります。上記のようにホストが途中でデータを転送するの を止めたことを知るには , USBRESET による割込みを検出する方法が考えられます。あ るいは以下のように ACK の割込み要因を見る方法が考えられます。 データステージ : 割込み要因 ACK0i がセット ステータスステージ : 割込み要因 ACK0o がセット (データステージが続いているのであればACK0iがセットされる) 割込み要因が ACK0i から ACK0o に変わったことによって , データステージからステー タスステージに移ったことが判断できます。 467 第 18 章 USB ファンクション 18.4.10 USB バスリセット後のマクロの状態 USB バスリセット後のマクロの状態について説明します。 ■ USB バスリセット後のマクロの状態 USB バスリセットによって , マクロのレジスタの設定値および FIFO の状態はリセット されません。USB バスリセット後に USB の転送を始めるためには , アプリケーション によってレジスタおよびFIFOの状態を転送を始める前の初期状態に戻すことが必要で す。また , ENDPOINT BUFFER の初期設定値も USB バスリセットによって初期化され ずに初期設定値を保持していますので , ENDPOINT BUFFER の設定は再度行う必要は ありません。 なお , USB バスリセットによってマクロは USB のデフォルトに遷移します。 468 第 19 章 DMAC(DMA コントローラ ) DMA コントローラ (DMAC) の概要 , レジスタの構 成 / 機能 , および DMA コントローラ (DMAC) の動 作について説明します。 19.1 DMA コントローラ (DMAC) の概要 19.2 DMA コントローラ (DMAC) のレジスタ 19.3 DMA コントローラの動作 19.4 転送要求の設定 19.5 転送シーケンス 19.6 DMA 転送全般 19.7 動作フローチャート 19.8 データパス 19.9 DMA 外部インタフェース 469 第 19 章 DMAC(DMA コントローラ ) 19.1 DMA コントローラ (DMAC) の概要 本モジュールは , FR ファミリにて DMA(Direct Memory Access) 転送を実現するた めのモジュールです。 本モジュールの制御による DMA 転送により , CPU を介さずに各種データ転送を高 速に行うことが可能となり , システムのパフォーマンスを向上させます。 外部転送要求端子には USB ファンクションのエンドポイント 1・2 の DMA 転送要 求がチップ内部で接続されています。 ■ ハードウェア構成 本モジュールは , 主に以下のものより構成されます。 • 独立した DMA チャネル× 5 チャネル • 5 チャネル独立アクセス制御回路 • 32 ビット アドレスレジスタ ( リロード指定可能 : 各チャネル 2 本 ) • 16 ビット 転送回数レジスタ ( リロード指定可能 : 各チャネル 1 本 ) • 4 ビットブロック回数レジスタ ( 各チャネル 1 本 ) • 外部転送要求入力端子 DREQ0,DREQ1,DREQ2 (ch0, ch1, ch2 のみ ) • 外部転送要求受付け出力端子 DACK0,DACK1,DACK2 (ch0, ch1, ch2 のみ ) • DMA 終了出力端子 DEOP0,DEOP1,DEOP2 (ch0, ch1, ch2 のみ ) • フライバイ転送 ( メモリ to I/O , I/O to メモリ ) (ch0, ch1, ch2 のみ ) • 2 サイクル転送 ■ 主要機能 本モジュールによるデータ転送には主に以下のような機能があります。 • 複数チャネルの独立したデータ転送が可能 (5 チャネル ) - 優先順位 (ch0 > ch1 > ch2 > ch3 > ch4) - ch0, ch1 間にて順位回転が可能 • DMAC 起動要因 - 外部専用端子入力 ( エッジ検出 / レベル検出 ch0, ch2 のみ ) - 内蔵周辺要求 ( 割込み要求を共用 : 外部割込みを含む ) - ソフトウェア要求 ( レジスタ書込み ) • 転送モード - デマンド転送 / バースト転送 / ステップ転送 / ブロック転送 - アドレッシングモード 32 ビットフルアドレス指定 ( 増加 / 減少 / 固定 ) ( アドレス増減幅は− 255 ∼+ 255 まで指定可能 ) - データの種類バイト / ハーフワード / ワード長 - シングルショット / リロード選択可能 470 第 19 章 DMAC(DMA コントローラ ) ■ レジスタ一覧 図 19.1-1 レジスタ一覧 ch0 コントロール / ステータスレジスタ A DMACA0 ( ビット ) 31 000200H ch0 コントロール / ステータスレジスタ B DMACB0 000204H ch1 コントロール / ステータスレジスタ A DMACA1 000208H ch1 コントロール / ステータスレジスタ B DMACB1 00020CH ch2 コントロール / ステータスレジスタ A DMACA2 000210H ch2 コントロール / ステータスレジスタ B DMACB2 000214H ch3 コントロール / ステータスレジスタ A DMACA3 000218H ch3 コントロール / ステータスレジスタ B DMACB3 00021CH ch4 コントロール / ステータスレジスタ A DMACA4 000220H ch4 コントロール / ステータスレジスタ B DMACB4 000224H 全体制御レジスタ DMACR 000240H ch0 転送元 / 転送先アドレス設定レジスタ DMASA0 001000H ch0 転送元 / 転送先アドレス設定レジスタ DMADA0 001004H ch1 転送元 / 転送先アドレス設定レジスタ DMASA1 001008H ch1 転送元 / 転送先アドレス設定レジスタ DMADA1 00100CH ch2 転送元 / 転送先アドレス設定レジスタ DMASA2 001010H ch2 転送元 / 転送先アドレス設定レジスタ DMADA2 001014H ch3 転送元 / 転送先アドレス設定レジスタ DMASA3 001018H ch3 転送元 / 転送先アドレス設定レジスタ DMADA3 00101CH ch4 転送元 / 転送先アドレス設定レジスタ DMASA4 001020H ch4 転送元 / 転送先アドレス設定レジスタ DMADA4 001024H 24 23 16 15 08 07 00 471 第 19 章 DMAC(DMA コントローラ ) ■ ブロックダイヤグラム 図 19.1-2 DMAC 5 チャネル ブロックダイヤグラム カウンタ バッファ セレクタ DMA起動要因 ペリフェラル起動要求/停止入力 選択回路 および 要求受付け制御 外部端子起動要求/停止入力 ライトバック バスコントローラへ DMA転送要求 DTC 2段レジスタ DTCR カウンタ DSS[2:0] バッファ リード ライト リード/ライト 制御 優先度回路 ERIE,EDIE セレクタ 割込みコントローラへ 外部割込みクリア BLKビット TYPE.MOD,WS 472 X-bus DMAコントロール セレクタ カウンタバッファ DDNOビット DMASA 2段レジスタ SADM,SASZ[7:0] SADR DADM,DASZ[7:0] DADR ライトバック セレクタ アドレス カウンタバッファ アクセス アドレスカウンタ バス コント ローラへ バス制御部 DDNO バス制御部 セレクタ 状態遷移回路 ライトバック DMADA 2段レジスタ IRQ[4:0] MCLREQ 第 19 章 DMAC(DMA コントローラ ) 19.2 DMA コントローラ (DMAC) のレジスタ DMA コントローラ (DMAC) で使用するレジスタの構成 , および機能について説明し ます。 ■ レジスタ設定時の注意 本 DMAC の設定をする場合 , DMA が停止しているときに行う必要があるビットがあ ります。動作中 ( 転送中 ) に設定した場合には正常な動作は保証されません。 「* マーク」は DMAC 転送中に設定すると動作に影響するビットです。このビットの書 換えは DMAC 転送停止中 ( 起動禁止状態または一時停止状態 ) に行ってください。 DMA 転送の起動禁止状態 (DMACR:DMAE=0 または DMACA:DENB=0 のとき ) で設定 した場合は , 起動許可後に設定は有効になります。 DMA 転送の一時停止状態 (DMACR:DMAH3 ∼ DMAH0 ≠ 0000 または DMACA:PAUS=1 のとき ) で設定した場合は , 一時停止解除後に設定は有効になります。 ■ DMAC-ch0 ∼ ch4 コントロール / ステータスレジスタ A[DMACA0 ∼ DMACA4] DMAC 各チャネルの動作制御を行うレジスタで , チャネルごとに独立して存在します。 各ビット機能は以下に示すとおりです。 図 19.2-1 DMAC-ch0 ∼ ch4 コントロール / ステータスレジスタ A[DMACA0 ∼ DMACA4] のビット構成 アドレス : ch0 000200H ch1 000208H ch2 000210H ch3 000218H ch4 000220H bit 31 30 29 28 27 15 14 13 25 24 23 IS[4:0] DENB PAUS STRG bit 26 12 11 10 22 21 20 19 DDNO[3:0] 9 8 7 6 5 18 17 16 BLK[3:0] 4 3 2 1 0 DTC[15:0] ( 初期値:00000000_0000XXXX_XXXXXXXX_XXXXXXXXB) 473 第 19 章 DMAC(DMA コントローラ ) [bit 31] DENB (Dma ENaBle) :DMA 動作許可ビット 各転送チャネルに対応し , DMA 転送の起動許可 / 禁止を行います。 起動されたチャネルは , 転送要求が発生し受け付けられると DMA 転送を開始しま す。 起動許可されていないチャネルに対して発生した転送要求は , すべて無効となりま す。 起動されたチャネルの転送が指定回数分すべて終了した場合 , 本ビットは "0" にな り , 転送は停止します。 本ビットに "0" をライトすると強制停止しますが , 必ず PAUS ビット [DMACA:bit 30] で DMA を一時停止状態にしてから強制停止 ("0" ライト ) してください。一時 停止しないで強制停止した場合 , DMA は停止しますが転送データは保証されませ ん。停止の確認は DSS2 ∼ DSS0 ビット (DMACB: bit18 ∼ bit16) で行ってください。 DENB 機能 0 対応チャネル DMA 動作禁止 ( 初期値 ) 1 対応チャネル DMA 動作許可 • リセット時 , 停止要求が受け付けられた場合 :"0" に初期化されます。 • リード / ライト可能です。 • DMAC 全体制御レジスタ DMACR の bit 15:DMAE ビットにより , 全チャネルの 動作が禁止されている場合 , 本ビットへの "1" 書込みは無効となり , 停止状態を 維持します。また , 本ビットにより動作が許可されている状態にて前記ビットに より動作が禁止された場合, 本ビットは"0"となり, 転送は中断します(強制停止)。 [bit 30] PAUS (PAUSe): 一時停止指示 対応するチャネルの DMA 転送の一時停止制御を行います。本ビットがセットされ ると , 再び本ビットがクリアされるまでの間は , DMA 転送を行いません (DMA が停 止中は DSS ビットが "1XXB" になります )。 起動前に本ビットをセットしてから起動した場合 , 一時停止状態のままとなりま す。 本ビットがセットされている間に新たに発生した転送要求は受け付けられますが , 本ビットをクリアしないと転送は開始しません (「19.6 DMA 転送全般 ■ 転送要 求の受付けと転送」を参照 )。 PAUS 機能 0 対応チャネル DMA 動作許可 ( 初期値 ) 1 対応チャネル DMA 動作一時停止 • リセット時 :"0" に初期化されます。 • リード / ライト可能です。 474 第 19 章 DMAC(DMA コントローラ ) [bit 29] STRG (Software TRiGger) : 転送要求 対応するチャネルの DMA 転送要求を生成します。本ビットに "1" を書き込むと , レ ジスタへの書込みが終了した時点より転送要求が発生し , 対応チャネルの転送を開 始します。ただし , 対応するチャネルが起動されていない場合は , 本ビットへの操 作は無効となります。 <注意事項> DMAE ビットの書込みによる起動と STRG ビットによる転送要求が同時の場合 , 転送要 求は有効となり , 転送を開始します。 また , PAUS ビットへの "1" 書込みと同時である場 合 , 転送要求は有効となりますが , PAUS ビットを "0" に戻すまで DMA 転送は開始しませ ん。 STRG 機能 0 無効 1 DMA 起動要求 • リセット時 :"0" に初期化されます。 • リード値は常に "0" となります。 • ライト値は "1" のみ有効で , "0" は動作に影響を与えません。 [bit 28 ∼ bit 24] IS4 ∼ IS0 (Input Select)*: 転送要因選択 転送要求の要因を以下のように選択します。STRG ビット機能によるソフトウェア 転送要求は IS=00000B に設定してください。 IS 機能 00000B ハードウェア (STRG ビットによる DMA 起動 ) 00001B ↓ 01101B 設定禁止 01110B 外部端子 (DREQ) "H" レベル or ↑エッジ 01111B 外部端子 (DREQ) "L" レベル or ↓エッジ 10000B UART0 ( 受信完了 ) 10001B UART1 ( 受信完了 ) 10010B UART2 ( 受信完了 ) 10011B UART0 ( 送信完了 ) 10100B UART1 ( 送信完了 ) 10101B UART2 ( 送信完了 ) 10110B 設定禁止 475 第 19 章 DMAC(DMA コントローラ ) IS 機能 10111B 設定禁止 11000B リロードタイマ 0 11001B リロードタイマ 1 11010B リロードタイマ 2 11011B 設定禁止 11100B 設定禁止 11111B 設定禁止 11110B 設定禁止 11111B 設定禁止 • リセット時 : "00000B" に初期化されます。 • リード / ライト可能です。 <注意事項> • 周辺機能の割込みによる DMA 起動を設定した場合 (IS=1XXXXB), 選択した機能は ICR レジスタで割込みを禁止状態にしてください。 • デマンド転送モードを選択した場合は , IS4 ∼ IS0=01110B, 01111B のみ設定可能です。 ほかの要因での起動は禁止です。 • 外部要求入力は , ch0, ch1, ch2 のみ有効です。ch3, ch4 は外部要求入力の選択はでき ません。また , レベル検出かエッジ検出かはモード設定により決定されます ( デマンド 転送はレベル , ほかはエッジ検出になります )。 476 第 19 章 DMAC(DMA コントローラ ) [bit 23 ∼ bit 20] DDNO3 ∼ DDNO0 ( ダイレクトアクセスナンバ )*: 内蔵周辺へのフライバイ機能 対応するチャネルで使用する転送先 / 転送元の内蔵周辺を指定します。 表 19.2-1 ダイレクトアクセスナンバ DDNO 機 能 0000B 設定禁止 0001B 未使用 0010B 未使用 0011B 未使用 0100B 未使用 0101B 未使用 0110B 未使用 0111B 未使用 1000B 未使用 1001B 未使用 1010B 未使用 1011B 未使用 1100B 未使用 1101B 未使用 1110B 未使用 1111B 設定禁止 • リセット時 :"0000B" に初期化されます。 • リード / ライト可能です。 <注意事項> MB91305 ではこの機能はサポートされません。書込みデータは無視されます。 477 第 19 章 DMAC(DMA コントローラ ) [bit 19 ∼ bit 16] BLK3 ∼ BLK0 (BLocK size) : ブロックサイズ指定 対応するチャネルのブロック転送時のブロックサイズを指定します。 本ビットに 設定した値が 1 回の転送単位におけるワード数 ( 正確には , データ幅設定の繰返し 回数 ) となります。ブロック転送を行わない場合は "01H" ( サイズ 1) を設定してく ださい ( デマンド転送時は本レジスタ値は無視されます。サイズ 1 となります )。 BLK XXXXB 機能 対応チャネルのブロックサイズ指定 • リセット時 : 初期化されません。 • リード / ライト可能です。 • 全ビット "0" を指定した場合 , ブロックサイズは 16 ワードとなります。 • リード時は , 常にブロックサイズ ( リロード値 ) が読み出されます。 [bit 15 ∼ bit 00] DTC15 ∼ DTC00 (Dma Terminal Count register) *: 転送回数レジスタ 転送回数を格納するレジスタです。各レジスタは 16 ビット長で構成されています。 すべてのレジスタは , 専用のリロードレジスタを持っています。転送回数レジスタ のリロードを許可しているチャネルに使用した場合 , 転送終了時に自動的に初期設 定値をレジスタに戻します。 DTC XXXXB 機能 対応チャネルの転送回数指定 DMA 転送が起動すると , 本レジスタのデータを DMA 専用転送回数カウンタのカウ ンタバッファに格納して 1 転送単位ごとに− 1 カウントします ( 減算 )。DMA の転 送終了時にカウンタバッファの内容を本レジスタにライトバックして DMA は終了 します。よって , DMA 動作中の転送回数指定値を読み出すことはできません。 • リセット時 : 初期化されません。 • リード / ライト可能です。DTC のアクセスは , 必ず ハーフワード長またはワード 長にてアクセスしてください。 • リード時の値は , カウント値となります。リロード値のリードはできません。 478 第 19 章 DMAC(DMA コントローラ ) ■ DMAC-ch0 ∼ ch4 コントロール / ステータスレジスタ B [DMACB0 ∼ DMACB4] DMAC 各チャネルの動作制御を行うレジスタで , チャネルごとに独立して存在します。 各ビット機能は以下に示すとおりです。 図 19.2-2 DMAC-ch0 ∼ ch4 コントロール / ステータスレジスタ B [DMACB0 ∼ DMACB4] のビット構成 アドレス : ch0 000204H ch1 00020CH ch2 000214H ch3 00021CH ch4 000224H bit bit 31 30 29 28 TYPE[1:0] MOD[1:0] 15 13 14 12 27 26 WS[1:0] 11 25 24 23 22 21 SADM DADM DTCR SADR DADR 10 9 8 7 6 SASZ[7:0] 5 20 19 ERIE EDIE 4 3 18 17 16 DSS[2:0] 2 1 0 DASZ[7:0] ( 初期値:00000000_00000000_00000000_00000000B) [bit 31, bit 30] TYPE1, TYPE0 (TYPE) *: 転送タイプ設定 対応チャネルの動作タイプを以下のように設定します。 2 サイクル転送モード : 転送元アドレス (DMASA) と転送先アドレス (DMADA) を設 定してリード動作とライト動作を転送回数分繰り返して転 送するモード。転送元 / 転送先ともに全領域 (32 ビットアド レス ) 指定可能です。 フライバイ転送モード: 転送先アドレス (DMADA) にメモリアドレスを設定するこ とにより外部←→外部転送を 1 サイクルで行うモードです。 メモリアドレスは必ず外部領域を指定してください。 TYPE 機能 00B 2 サイクル転送 ( 初期値 ) 01B フライバイ : メモリ → I/O 転送 10B フライバイ : I/O → メモリ転送 11B 設定禁止 • リセット時 : "00B" に初期化されます。 • リード / ライト可能です。 [bit 29, bit 28] MOD1, MOD0 (MODe)* : 転送モード設定 対応チャネルの動作モードを以下のように設定します。 MOD 機能 00B ブロック / ステップ転送モード ( 初期値 ) 01B バースト転送モード 10B デマンド転送モード 11B 設定禁止 • リセット時 : "00B" に初期化されます。 • リード / ライト可能です。 479 第 19 章 DMAC(DMA コントローラ ) [bit 27, bit 26] WS1, WS0 (Word Size) : 転送データ幅選択 対応チャネルの転送データ幅を選択します。本レジスタに設定したデータ幅単位で 指定回数分の転送を行います。 WS 機能 00B バイト単位で転送 ( 初期値 ) 01B ハーフワード単位で転送 10B ワード幅単位で転送 11B 設定禁止 • リセット時 : "00B" に初期化されます。 • リード / ライト可能です。 転送元アドレスカウント [bit 25] SADM (Source-ADdr. count-Mode select)*: モード指定 対応するチャネルの転送元アドレスの 1 転送ごとのアドレス処理を指定します。 アドレス増加 / 減少は , 設定された転送元アドレスカウント幅 (SASZ) に従って , 1 転送後に加算 / 減算され転送終了時に次回アクセス用アドレスが対応するアドレ スレジスタ (DMASA) に書き込まれます。よって , DMA 転送が終了されるまで転送 元アドレスレジスタは更新されません。 アドレス固定にする場合は , 本ビットを "0" または "1" に指定してアドレスカウン ト幅 (SASZ, DASZ) を "0" としてください。 SADM 機能 0 転送元アドレスは増加 ( 初期値 ) 1 転送元アドレスは減少 • リセット時 : "0" に初期化されます。 • リード / ライト可能です。 480 第 19 章 DMAC(DMA コントローラ ) [bit 24] DADM (Destination-ADdr. Count-Mode select) *: 転送先アドレスカウントモー ド指定 対応するチャネルの転送先アドレスの 1 転送ごとのアドレス処理を指定します。 アドレス増加 / 減少は , 設定された転送先アドレスカウント幅 (DASZ) に従って , 1 転送後に加算 / 減算され転送終了時に次回アクセス用アドレスが対応するアドレ スレジスタ (DMADA) に書き込まれます。よって , DMA 転送が終了されるまで転送 先アドレスレジスタは更新されません。アドレス固定にする場合は , 本ビットを "0" または "1" に指定してアドレスカウント幅 (SASZ, DASZ) を "0" としてください。 DADM 機能 0 転送先アドレスは増加 ( 初期値 ) 1 転送先アドレスは減少 • リセット時 : "0" に初期化されます。 • リード / ライト可能です。 [bit 23] DTCR (DTC-reg. Reload)*: 転送回数レジスタリロード指定 対応するチャネルの転送回数レジスタのリロード機能を制御します。 本ビットによりリロード動作が許可されている場合 , 転送終了後に回数レジスタ値 を初期設定値に戻して停止し , 転送要求 (STRG または IS 設定による起動要求 ) 待 ち状態になります ( 本ビットが "1" の場合 , DENB ビットはクリアされません )。 DENB=0, または DMAE=0 を設定すると強制停止します。 回数カウンタのリロード動作を禁止している場合は , アドレスレジスタにリロード 指定をしていても , 転送終了にて停止するシングルショット動作となります。この 場合 DENB ビットはクリアされます。 DTCR 機能 0 転送回数レジスタリロードを禁止 ( 初期値 ) 1 転送回数レジスタリロードを許可 • リセット時 : "0" に初期化されます。 • リード / ライト可能です。 481 第 19 章 DMAC(DMA コントローラ ) [bit 22] SADR (Source-ADdr.-reg. Reload) *: 転送元アドレスレジスタリロード指定 対応するチャネルの転送元アドレスレジスタのリロード機能を制御します。 本ビットによりリロード動作が許可されている場合 , 転送終了後に転送元アドレス レジスタ値を初期設定値に戻します。 回数カウンタのリロード動作を禁止している場合は , アドレスレジスタにリロード 指定をしていても , 転送終了にて停止するシングルショット動作となります。この 場合 , アドレスレジスタ値は初期設定値がリロードされた状態で停止します。 本ビットによりリロード動作が禁止されている場合は , 転送終了時のアドレスレジ スタ値は最終アドレスの次のアクセスアドレスとなります ( アドレス増加を指定し ている場合は , 増加したアドレスとなります )。 SADR 機能 0 転送元アドレスレジスタリロードを禁止 ( 初期値 ) 1 転送元アドレスレジスタリロードを許可 • リセット時 : "0" に初期化されます。 • リード / ライト可能です。 [bit 21] DADR (Dest.-ADdr.-reg. Reload)*: 転送先アドレスレジスタリロード指定 対応するチャネルの転送先アドレスレジスタのリロード機能を制御します。 本ビットによりリロード動作が許可されている場合 , 転送終了後に転送先アドレス レジスタ値を初期設定値に戻します。 その他 , 機能の詳細は bit 22:SADR の内容と等価になります。 DADR 機能 0 転送先アドレスレジスタリロードを禁止 ( 初期値 ) 1 転送先アドレスレジスタリロードを許可 • リセット時 : "0" に初期化されます。 • リード / ライト可能です。 [bit 20] ERIE (ERror Interrupt Enable)* : エラー割込み出力許可 エラー発生による終了時の割込み発生を制御します。 発生したエラーの内容は DSS2 ∼ DSS0 にて示されます。すべての終了要因で本割込みが発生するのではな く , 特定の終了要因の際のみ割込みが発生することに注意してください (DSS2 ∼ DSS0 のビット説明を参照 )。 ERIE 機能 0 エラー割込み要求出力禁止 ( 初期値 ) 1 エラー割込み要求出力許可 • リセット時 :"0" に初期化されます。 • リード / ライト可能です。 482 第 19 章 DMAC(DMA コントローラ ) [bit 19] EDIE (EnD Interrupt Enable) *: 終了割込み出力許可 正常終了時の割込み発生を制御します。 EDIE 機能 0 終了割込み要求出力禁止 ( 初期値 ) 1 終了割込み要求出力許可 • リセット時 :"0" に初期化されます。 • リード / ライト可能です。 [bit 18 ∼ bit 16] DSS2 ∼ DSS0 (Dma Stop Status)*: 転送停止要因表示 対応するチャネルの DMA 転送停止 / 終了の要因を示す 3 ビットのコード ( 終了コー ド ) を表示します。終了コードの内容は以下のとおりです。 DSS 機能 割込み発生 000B 初期値 なし X01B アドレスエラー ( アンダフロー / オーバフロー ) エラー X10B 転送停止要求 エラー X11B 正常終了 終了 1XXB DMA 一時停止中 (DMAH, PAUS ビット , 割込みなど ) なし 転送停止要求は , 周辺回路からの要求と外部端子 DSTP 機能を使用した場合のみ セットされます。 <注意事項> 「割込み発生」欄は , 発生可能な割込み要求の種類を示します。 • リセット時 :"000B" に初期化されます。 • "000B" を書き込むことにより , クリアされます。 • リード / ライト可能ですが , 本ビットへの書込みは "000B" のみ有効となります。 [bit 15 ∼ bit 8] SASZ7 ∼ SASZ0 (Source Addr count SiZe)*:転送元アドレスカウント サイズ指定 対応するチャネルの 1 転送ごとの転送元アドレス (DMASA) の増減幅を指定します。 本ビットに設定した値が 1 回の転送単位におけるアドレス増減幅となります。アド レスの増減幅は転送元アドレスカウントモード (SADM) の指定に従います。 SASZ XXH 機能 転送元アドレスの増減幅を指定 0 ∼ 255 • リセット時 : 初期化されません。 • リード / ライト可能です。 483 第 19 章 DMAC(DMA コントローラ ) [bit 7 ∼ bit 0] DASZ7 ∼ DASZ0 (Des Addr count SiZe) *:転送先アドレスカウント サイズ指定 対応するチャネルの 1 転送ごとの転送先アドレス (DMADA) の増減幅を指定します。 本ビットに設定した値が 1 回の転送単位におけるアドレス増減幅となります。アド レスの増減幅は転送先アドレスカウントモード (DADM) の指定に従います。 DASZ XXH 機能 転送先アドレスの増減幅を指定 0 ∼ 255 • リセット時 : 初期化されません。 • リード / ライト可能です。 ■ DMAC-ch0 ∼ ch4 転送元 / 転送先アドレス設定レジスタ [DMASA0 ∼ DMASA4/ DMADA0 ∼ DMADA4] DMAC各チャネルの動作制御を行うレジスタで, チャネルごとに独立して存在します。 各ビット機能は以下に示すとおりです。 図 19.2-3 DMAC-ch0 ∼ ch4 転送元 / 転送先アドレス設定レジスタ [DMASA0 ∼ DMASA4/DMADA0 ∼ DMADA4] のビット構成 DMASA アドレス : ch0 001000H ch1 001008H ch2 001010H ch3 001018H ch4 001020H bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 DMASA[31:16] bit 15 14 13 12 11 10 9 8 7 DMASA[15:0] ( 初期値:XXXXXXXX_XXXXXXXX_XXXXXXXX_XXXXXXXXB) DMADA アドレス : ch0 001004H ch1 00100CH ch2 001014H ch3 00101CH ch4 001024H bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 DMADA[31:16] bit 15 14 13 12 11 10 9 8 7 DMADA[15:0] ( 初期値:XXXXXXXX_XXXXXXXX_XXXXXXXX_XXXXXXXXB) 転送元 / 転送先アドレスを格納するレジスタ群です。各レジスタは 32 ビット長で構成 されています。 [bit 31 ∼ bit 0] DMASA31 ∼ DMASA0 (DMA Source Addr) *: 転送元アドレス設定 転送元アドレスの設定を行います。 484 第 19 章 DMAC(DMA コントローラ ) [bit 31 ∼ bit 0] DMADA31 ∼ DMADA0 (DMA Destination Addr) *: 転送先アドレス設定 転送先アドレスの設定を行います。 DMA 転送が起動すると , 本レジスタのデータを DMA 専用アドレスカウンタのカウ ンタバッファに格納して 1 転送ごとに設定に従いアドレスカウントします。DMA の転送終了時にカウンタバッファの内容を本レジスタにライトバックして DMA は 終了します。よって , DMA 動作中のアドレスカウンタ値を読み出すことはできませ ん。 すべてのレジスタは , 専用のリロードレジスタを持っています。転送元 / 転送先ア ドレスレジスタのリロードを許可しているチャネルに使用した場合 , 転送終了時に 自動的に初期設定値をレジスタに戻します。この際 , ほかのアドレスレジスタには 影響を与えません。 • リセット時 : 初期化されません。 • リード/ライト可能です。本レジスタは, 必ず 32ビットデータ でアクセスしてく ださい。 • リード時の値は , 転送中は転送前のアドレス値 , 転送終了時には次のアクセスア ドレス値となります。リロード値のリードはできません。よって , 転送アドレス をリアルタイムでリードできません。 <注意事項> 本レジスタにて DMAC 自身のレジスタを設定しないでください。DMAC 自身のレジスタ に DMA 転送を行うことはできません。 485 第 19 章 DMAC(DMA コントローラ ) ■ DMAC-ch0 ∼ ch4 DMAC 全体制御レジスタ [DMACR] DMAC 5 チャネル分全体の動作制御を行うレジスタです。本レジスタは必ず バイト長 でアクセスしてください。 各ビット機能は以下に示すとおりです。 図 19.2-4 DMAC-ch0 ∼ ch4 DMAC 全体制御レジスタ [DMACR] のビット構成 アドレス : 000240H bit bit 31 30 29 28 27 26 25 DMAE - - PM01 15 14 13 12 11 10 9 - - - - - - - 24 23 22 21 20 19 18 17 16 - - - - - - - - 8 7 6 5 4 3 2 1 0 - - - - - - - - - DMAH3 ∼ DMAH0 ( 初期値:0XX00000_XXXXXXXX_XXXXXXXX_XXXXXXXXB) [bit 31] DMAE (DMA Enable) :DMA 動作許可 DMA 全チャネルの動作制御を行います。 本ビットにより DMA 動作が禁止されている場合 , チャネルごとの起動 / 停止の設 定や動作状態にかかわらず , 全チャネルの転送動作が禁止されます。転送中であっ たチャネルは要求を取り下げ , ブロック境界にて転送を停止します。禁止状態にて , 各チャネルに対して行われる起動操作はすべて無効となります。 本ビットにより DMA 動作が許可されている場合 , チャネルごとに起動 / 停止操作 が有効となります。本ビットで DMA 動作許可を行ったのみでは , 各チャネルに対 する起動は行われません。 本ビットに "0" をライトすると強制停止しますが , 必ず DMAH3 ∼ DMAH0 ビット (DMACR: bit27 ∼ bit24) で DMA を一時停止状態にしてから強制停止 ("0" ライト ) してください。一時停止しないで強制停止した場合 , DMA は停止しますが転送デー タは保証されません。停止の確認は DSS2 ∼ DSS0 ビット (DMACB: bit18 ∼ bit16) で行ってください。 DMAE 機能 0 全チャネル DMA 動作禁止 ( 初期値 ) 1 全チャネル DMA 動作許可 • リセット時 :"0" に初期化されます。 • リード / ライト可能です。 [bit 28] PM01 (Priority Mode ch0, 1 robin) : チャネル優先度回転 ch0, ch1 の優先度を転送ごとに順位を回転させるときに設定します。 PM01 機能 0 優先順位固定 (ch0 > ch1)( 初期値 ) 1 優先順位回転 (ch1 > ch0) • リセット時 :"0" に初期化されます。 • リード / ライト可能です。 486 第 19 章 DMAC(DMA コントローラ ) [bit 27 ∼ bit 24] DMAH3 ∼ DMAH0(DMA Halt) :DMA 一時停止 DMA 全チャネルの一時停止制御を行います。本ビットがセットされると , 再び本 ビットがクリアされるまでの間は , 全チャネルの DMA 転送を行いません。 起動前に本ビットをセットしてから起動した場合 , 全チャネルが一時停止のままと なります。 本ビットがセットされている間に DMA 転送が許可 (DENB=1) されているチャネル に発生した転送要求はすべて有効となり , 本ビットをクリアすることにより転送を 開始します。 DMAH 0000B 0000B 以外 機能 全チャネル DMA 動作許可 ( 初期値 ) 全チャネル DMA 一時停止 • リセット時 :"0" に初期化されます。 • リード / ライト可能です。 [bit 30, bit 29, bit 23 ∼ bit 0] (Reserved): 未使用ビットです。 リード値は不定です。 ■ その他の機能 MB91305 は , 外部転送用として DACK, DEOP, DREQ の端子がありますが , 汎用ポート と兼用になっております。そのため , DMA 機能を使用するときはポート機能から DMA 端子機能に切り換える必要があります。 PFR レジスタの設定で切り換えてください。 487 第 19 章 DMAC(DMA コントローラ ) 19.3 DMA コントローラの動作 本ブロックは , FR ファミリに内蔵され , CPU の命令動作を介することなく高速に データ転送を制御する多機能 DMA コントローラです。 ■ 主要動作 • 各転送チャネルは , 独立に各種機能を設定します。 • 各チャネルは起動許可後 , 設定した転送要求を検出するまでは転送動作を行いませ ん。 • 転送要求検出により , バスコントローラに対し DMA 転送要求を出力し , バスコント ローラの制御によりバス権を取得して転送を開始します。 • 転送はチャネルごとに独立に設定されたモード設定に従ったシーケンスで行われ ます。 ■ 転送モード DMA の各チャネルは , それぞれの DMACB レジスタの MOD[1:0] ビットで設定された 転送モードに従って転送動作を行います。 ● ブロック / ステップ転送 1 回の転送要求にて 1 ブロック転送単位のみ転送を行い , その後次の転送要求が受け付 けられるまでは DMA はバスコントローラに対し転送要求を停止します。 1 ブロック転送単位 : 設定されたブロックサイズ分 (DMACA:BLK[3:0]) ● バースト転送 1 回の転送要求にて指定転送回数終了まで連続して転送を行います。 指定転送回数 : ブロックサイズ分×転送回数分 (DMACA:BLK[3:0] × DMACA:DTC[15:0]) ● デマンド転送 外部からの転送要求入力 (DREQ 端子のレベル検出 ) 終了か , 指定転送回数終了までは 連続して転送を行います。 デマンド転送での指定転送回数は設定した転送回数分 (DMACA:DTC[15:0]) となりま す。ブロックサイズは "1" 固定となりレジスタ値は無視されます。 488 第 19 章 DMAC(DMA コントローラ ) ■ 転送タイプ ● 2 サイクル転送 ( 通常転送 ) DMA コントローラの動作は , 読出し動作と書込み動作を 1 つの単位として動作を行い ます。 転送元レジスタのアドレスからデータを 読み出して転送先レジスタのアドレスへデー タをライトします。 ● フライバイ転送 ( メモリ to I/O) DMA コントローラの動作は , 読出し動作を 1 つの単位として動作を行います。 フライバイ転送を設定して DMA 転送を行うと DMA はバスコントローラに対しフライ バイ転送 ( リード ) 要求を出しバスコントローラは外部インタフェースにフライバイ転 送 ( リード ) をさせます。 ● フライバイ転送 (I/O to メモリ ) DMA コントローラの動作は , 書込み動作を 1 つの単位として動作を行います。 ほかはフライバイ転送 ( メモリ to I/O) と同等です。 MB91305 でのフライバイ転送のアクセス領域は必ず外部領域でなければいけません。 489 第 19 章 DMAC(DMA コントローラ ) ■ 転送アドレス アドレッシングには以下のようなものがあり , 各チャネル転送元 / 転送先ごとに独立に 設定します。 2 サイクル転送とフライバイ転送でのアドレス設定レジスタ (DMASA, DMADA) の指 定方法は異なります。 ● 2 サイクル転送でのアドレスの指定 あらかじめアドレスを設定してあるレジスタ (DMASA, DMADA) から読み出した値を アドレスとしてアクセスします。 転送要求を受け付けた後 , DMA はレジスタからアドレスを一時記憶バッファに格納し て転送を開始します。 1 回の転送 ( アクセス ) ごとにアドレスカウンタにて次回アクセスアドレスを生成 ( 加 算 / 減算 / 固定選択可能 ) して , 一時記憶バッファに戻します。この一時記憶バッファ の内容は 1 ブロック転送単位終了ごとにレジスタ (DMASA, DMADA) へライトバック されます。よって , アドレスレジスタ (DMASA, DMADA) 値は , 1 ブロック転送単位ご とにしか更新されませんので転送中のアドレスをリアルタイムに知ることはできませ ん。 ● フライバイ転送でのアドレスの指定 フライバイ転送では転送先アドレスレジスタ (DMADA) から読み出した値をアドレス としてアクセスします。転送元アドレスレジスタ (DMASA) は無視されます。設定す るアドレスは必ず外部領域にしてください。 転送要求を受け付けた後 , DMA はレジスタからアドレスを一時記憶バッファに格納し て転送を開始します。 1 回の転送 ( アクセス ) ごとにアドレスカウンタにて次回アクセスアドレスを生成 ( 加 算 / 減算 / 固定選択可能 ) して , 一時記憶バッファに戻します。この一時記憶バッファ の内容は 1 ブロック転送単位終了ごとにレジスタ (DMADA) へライトバックされます。 よって , アドレスレジスタ (DMADA) 値は , 1 ブロック転送単位ごとにしか更新されま せんので転送中のアドレスをリアルタイムに知ることはできません。 490 第 19 章 DMAC(DMA コントローラ ) ■ 転送回数と転送終了 ● 転送回数 1 ブロック転送単位終了ごとに , 転送回数レジスタをデクリメント ( − 1) します。転送 回数レジスタが "0" になると指定転送回数終了となり , 終了コードを表示して停止また は再起動 (1) します。 転送回数レジスタ値はアドレスレジスタと同様に 1 ブロック転送単位ごとにしか更新 されません。 転送回数レジスタリロード禁止に設定している場合は転送を終了します。許可されて いる場合はレジスタ値を初期化して転送待ち状態になります (DMACB:DTCR)。 ● 転送終了 転送終了要因には , 以下のようなものがあり , 終了時は終了コードとして要因が表示さ れます (DMACB:DSS[2:0]) 。 • 指定転送回数の終了 (DMACA:BLK[3:0] × DMACA:DTC[15:0]) → 正常終了 • 周辺回路または外部端子 (DSTP) からの転送停止要求の発生 → エラー • アドレスエラーの発生 → エラー • リセットの発生 → リセット 各終了要因に対応して , 転送停止要因表示 (DSS) され転送終了割込み / エラー割込みを 発生可能です。 491 第 19 章 DMAC(DMA コントローラ ) 19.4 転送要求の設定 DMA 転送を起動する転送要求は , 以下の 3 種類があります。 ソフトウェア要求につ いては , ほかの要求の設定にかかわらず常に使用できます。 ■ 外部転送要求端子 チャネルごとに 1 本用意された入力端子への入力により , 転送要求を発生します。 MB91305 では ch0 ∼ ch2 のみ対応しています (DREQ0, DREQ1, DREQ2) 。 この際の有効入力は , 転送タイプと起動要因設定により次の要因が選択されます。 ● エッジ検出 転送タイプが ブロック / ステップ / バースト転送のときはエッジ検出が選択されます。 • 立下りエッジ検出 : 転送要因選択レジスタで設定。 DMACA:IS4∼IS0=01110Bのとき • 立上りエッジ検出 : 転送要因選択レジスタで設定。 DMACA:IS4∼IS0=01111Bのとき 転送タイプが デマンド転送のときはレベル検出が選択されます。 • "H" レベル検出 : 転送要因選択レジスタで設定。DMACA:IS4 ∼ IS0=01110B のとき • "L" レベル検出 : 転送要因選択レジスタで設定。DMACA:IS4 ∼ IS0=01111B のとき ■ 内蔵周辺要求 内蔵周辺回路の割込み発生により , 転送要求を発生します。 チャネルごとに , どの周辺の割込みにより転送要求を発生するかを設定します (DMACA:IS4 ∼ IS0=1XXXXB) 。 外部転送要求とは同時に使用できません。 <注意事項> 転送要求に使用した割込み要求は, CPUへの割込み要求としても見えますので割込みコン トローラの設定を割込み禁止に設定してください (ICR レジスタ )。 ■ ソフトウェア要求 レジスタのトリガビットへの書込みにより , 転送要求を発生します (DMACA:STRG)。 上記 2 つの転送要求とは独立で , 常に使用できます。 起動 ( 転送許可 ) と同時にソフトウェア要求を行った場合 , 直後にバスコントローラに 対し DMA 転送要求を出力し転送を開始します。 492 第 19 章 DMAC(DMA コントローラ ) 19.5 転送シーケンス チャネルごとに , DMA 転送起動後の動作シーケンスなどを決定する転送タイプと転 送モードを独立して設定できます(DMACB:TYPE1, TYPE0, MOD1, MOD0の設定)。 ■ 転送シーケンスの選択 レジスタの設定により以下のシーケンスが選択可能である。 • バースト 2 サイクル転送 • デマンド 2 サイクル転送 • ブロック / ステップ 2 サイクル転送 • バーストフライバイ転送 • デマンド フライバイ転送 • ブロック / ステップフライバイ転送 ■ バースト 2 サイクル転送 1 回の転送要因にて指定転送回数の転送を続けて行います。2 サイクル転送の場合は転 送元 / 転送先アドレスは 32 ビット全領域指定可能です。 転送要因は , 周辺転送要求 / ソフトウェア転送要求 / 外部端子 (DREQ) エッジ入力検出 要求を選択できます。 表 19.5-1 指定可能転送アドレス表 転送元アドレス指定 方向 転送先アドレス指定 32 ビット全領域指定可能 → 32 ビット全領域指定可能 ● バースト転送の特長 • 転送要求を 1 回受け付けると , 転送回数レジスタが "0" になるまで連続して転送を 行います。 転 送 回 数 は ブ ロ ッ ク サ イ ズ 分 × 転 送 回 数 分 に な り ま す。(DMACA:BLK[3:0] × DMACA:DTC[15:0])。 • 転送中に再度要求が発生した場合 , 要求は無視されます。 • 転送回数レジスタのリロード機能が有効である場合 , 転送終了後より次の転送要求 を受け付けます。 • 転送中に , より高い優先順位の他チャネルの転送要求を受け付けた場合 , ブロック 転送単位の境目でチャネルを切り換え , そのチャネルの転送要求がクリアされるま で復帰しません。 図 19.5-1 外部端子立上りエッジ起動 , ブロック数 =1, 転送回数 =4 のときのバースト転送例 転送要求(↑エッジ) バス動作 転送回数 CPU SA DA 4 SA DA 3 SA DA 2 SA DA 1 CPU 0 転送終了 493 第 19 章 DMAC(DMA コントローラ ) ■ バーストフライバイ転送 転送領域が外部領域のみであること , 転送単位がリード ( メモリ to I/O) またはライト (I/O to メモリ ) だけであることを除けば 2 サイクル転送と同じです。 表 19.5-2 指定可能転送アドレス表 転送元アドレス指定 方向 転送先アドレス指定 指定不要 ( 無効 ) なし 外部領域 ■ デマンド転送 2 サイクル転送 転送要求として , 外部端子の "H" または "L" レベルを選択している場合のみ , デマンド 転送シーケンスとなります ( レベル選択は , DMACA:IS[3:0] にて設定します ) 。 ● 連続転送の特長 • 転送要求を 1 回の転送ごとにチェックし , 外部からの入力レベルが設定した転送要 求レベルの間は要求をクリアせずに連続して転送を行います。外部入力が変化する と要求がクリアされ , 転送は転送の境目にて停止します。これを指定転送回数終了 まで繰り返します。 • その他はバースト転送と同等に動作します。 図 19.5-2 外部端子 "H" レベル起動 , ブロック数 =1, 転送回数 =3 のときのデマンド転送例 転送要求("H"レベル) バス動作 CPU SA 転送回数 DA SA 3 DA 2 CPU SA DA 1 0 転送終了 表 19.5-3 指定可能転送アドレス表 転送元アドレス指定 方向 転送先アドレス指定 外部領域 → 外部領域 外部領域 → 内蔵 I/O 外部領域 → 内蔵 RAM 内蔵 I/O → 外部領域 内蔵 RAM → 外部領域 <注意事項> • デマンド転送時は , 必ず外部領域のアドレスを転送元か転送先 , または両方に設定して ください。デマンド転送モード時は , DMA 転送を外バスタイミングに合わせているた め , 必ず外部領域へのアクセスが必要になります。 • デマンド転送時は , 転送元 / 転送先ともに SDRAM 領域はサポートしていませんので設 定禁止です。 494 第 19 章 DMAC(DMA コントローラ ) ■ デマンド転送フライバイ転送 転送領域が外部領域のみであること , 転送単位がリード ( メモリ to I/O) またはライト (I/O to メモリ ) だけであることを除けば 2 サイクル転送と同じです。 表 19.5-4 指定可能転送アドレス表 転送元アドレス指定 方向 転送先アドレス指定 指定不要 ( 無効 ) なし 外部領域 ■ ステップ / ブロック転送 2 サイクル転送 ステップ / ブロック転送 (1 転送要求ごとに指定ブロック回数分のみ転送を行う ) の場 合は , 転送元 / 転送先アドレスは 32 ビット全領域指定可能です。 表 19.5-5 指定可能転送アドレス表 転送元アドレス指定 方向 転送先アドレス指定 32 ビット全領域指定可能 → 32 ビット全領域指定可能 ● ステップ転送 ブロックサイズに "1" を設定すると , ステップ転送シーケンスとなります。 ● ステップ転送の特長 • 転送要求を 1 回受け付けると , 1 回の転送を行った後 , 転送要求をクリアして転送を 停止します ( バスコントローラに対し DMA 転送要求を取り下げる )。 • 転送中に再度要求が発生した場合 , 要求は無視されます。 • 転送中に , より高い優先順位の他チャネルの転送要求を受け付けた場合 , 転送停止 後に , チャネルを切り換えて続けて転送を開始します。ステップ転送における優先 順位は , 転送要求が同時に発生した場合のみ意味を持ちます。 ● ブロック転送 ブロックサイズを "1" 以外に設定すると , ブロック転送シーケンスとなります。 ● ブロック転送の特長 1 転送単位が複数回 ( ブロック数 ) の転送サイクルから構成されること以外は , ステッ プ転送と全く同じ動作となります。 図 19.5-3 外部端子立上りエッジ起動 , ブロック数 =2, 転送回数 =2 のときのブロック転送例 転送要求(↑エッジ) バス動作 ブロック数 転送回数 CPU SA DA SA 2 1 2 DA CPU 0 SA DA 2 SA DA 1 1 転送終了 495 第 19 章 DMAC(DMA コントローラ ) ■ ステップ / ブロック転送 2 サイクル転送フライバイ転送 転送領域が外部領域のみであること , 転送単位がリード ( メモリ to I/O) またはライト (I/O to メモリ ) だけであることを除けば 2 サイクル転送と同じです。 表 19.5-6 指定可能転送アドレス表 496 転送元アドレス指定 方向 転送先アドレス指定 指定不要 ( 無効 ) なし 外部領域 第 19 章 DMAC(DMA コントローラ ) 19.6 DMA 転送全般 DMA 転送のブロックサイズとリロード動作について説明します。 ■ ブロックサイズ • 転送データの 1 転送単位はブロックサイズ指定レジスタに設定した数 ( ×データ幅 ) のデータの集合となります。 • 1 転送サイクルにて転送されるデータは , データ幅指定の値に固定されるため , 1 転 送単位はブロックサイズ指定値分の転送サイクル数より構成されることになりま す。 • 転送中に , より高い優先順位の転送要求が受け付けられた場合 , または転送の一時 停止要求が発生した場合において , ブロック転送時においても 1 転送単位の境界に ならないと停止しません。これにより分割・一時停止を希望しないデータブロック のデータ保護が可能ですが , ブロックサイズが大きい場合はレスポンスを低下させ る原因となります。 • リセット発生の場合のみ即時に停止しますが , 転送中であったデータの内容などは 保証されません。 ■ リロード動作 本モジュールでは , チャネルごとに , 以下の 3 種類のリロード機能の設定が可能です。 ● 転送回数レジスタリロード機能 指定回数の転送が終了した後 , 転送回数レジスタに初期設定値を再設定して起動受付 け待ちします。 全転送シーケンスを繰り返し行う際に設定します。 リロード指定をしない場合 , 指定回数の転送終了後は回数レジスタ値が "0" のままとな り , 以降の転送は行われません。 ● 転送元アドレスレジスタリロード機能 指定回数の転送が終了した後, 転送元アドレスレジスタに初期設定値を再設定します。 転送元アドレス領域内で固定領域から繰り返し転送する場合に設定します。 リロード指定をしない場合 , 指定回数の転送終了後は転送元アドレスレジスタ値が終 了時の次のアドレスとなります。アドレス領域を固定しない場合に使用します。 ● 転送先アドレスレジスタリロード機能 指定回数の転送が終了した後, 転送先アドレスレジスタに初期設定値を再設定します。 転送先アドレス領域内で固定領域へ繰り返し転送する場合に設定します。 リロード指定をしない場合 , 指定回数の転送終了後は転送元アドレスレジスタ値が終 了時の次のアドレスとなります。アドレス領域を固定しない場合に使用します。 転送元 / 転送先レジスタのリロード機能を有効にしただけでは , 指定回数転送終了後の 再起動は行われず , 各アドレスレジスタ値が再設定されるだけとなります。 497 第 19 章 DMAC(DMA コントローラ ) ● 動作モードとリロード動作の特殊な例 • 外部端子入力レベル検出による連続転送モードで転送している場合 , 転送回数レジ スタのリロード機能を使用すると , 入力が連続している間に転送終了となってもそ のままリロードして転送を継続します。この場合も終了コードはセットされます。 • 転送終了にて , いったん停止し , 再度入力検出から行いたい場合は , リロード指定を 行わないようにしてください。 • バースト / ブロック / ステップ転送モードで転送している場合では , 転送終了となる とリロード後 , いったん転送を中断し , あらためて転送要求入力が検出されるまで 転送を行いません。 ■ アドレッシングモード 各転送チャネルの転送先および転送元アドレスは , それぞれ独立に指定します。 指定方法には下記の方法があります。転送シーケンスによって設定してください。 ● アドレスレジスタ指定 • 2 サイクル転送モードでは , 転送元アドレス設定レジスタ (DMASA) には転送元アド レスを , 転送先アドレス設定レジスタ (DMADA) には転送先アドレスを設定してく ださい。 • フライバイ転送モードでは , 転送先アドレス設定レジスタ (DMADA) にはメモリア ドレスを設定してください。このときの転送元アドレス設定レジスタ (DMASA) の 値は無視されます。 ● アドレスレジスタの特長 最大 32 ビット長のレジスタです。32 ビット長の場合 , メモリマップ上の全空間がアク セス可能です。 ● アドレスレジスタの機能 • 毎回アクセス時に読み出され , アドレスバスへ放出されます。 • 同時にアドレスカウンタにて次回アクセス時のアドレス計算が行われ , 計算結果の アドレスにてアドレスレジスタを更新します。 • アドレス計算は , 各チャネル / 転送先 / 転送元それぞれ独立に , 加算 / 減算から選択 します。アドレスの増減幅はアドレスカウントサイズ指定レジスタ値によります (DMACB:SASZ, DASZ)。 • 転送終了時のアドレスレジスタには , リロード機能を有効にしていない場合 , 最終 アドレスにアドレス計算をした結果のアドレスが残されます。 • リロード機能を有効にしている場合 , アドレスの初期値がリロードされます。 <注意事項> • 32 ビット長フルアドレス計算の結果オーバフロー / アンダフローが発生した場合 , ア ドレスエラーとして検出され , そのチャネルの転送を中止します ( 終了コードに関する 項目を参照 )。 • アドレスレジスタに DMAC 自身のレジスタのアドレスを設定しないでください。 • デマンド転送時は , 必ず外部領域のアドレスを転送元か転送先 , または両方に設定して ください。 • DMAC により DMAC 自身のレジスタへの転送は行わないでください。 498 第 19 章 DMAC(DMA コントローラ ) ■ データの種類など 1 回の転送で転送されるデータ長 ( データ幅 ) は , 以下の内から選択します。 • バイト • ハーフワード • ワード DMA 転送においても , ワードバウンダリ仕様が守られるため , 転送先 / 転送元アドレ ス指定においてデータ長と食い違うアドレスが設定された場合 , 異なる下位ビットは 無視されます。 • ワード………… 実際のアクセスアドレスは下位 2 ビット が "00B" から始まる 4 バ イトとなります。 • ハーフワード… 実際のアクセスアドレスは下位 1 ビット が "0" から始まる 2 バイ トとなります。 • バイト………… 実際のアクセスアドレスとアドレス指定が一致します。 転送元アドレスと転送先アドレスの下位ビットが食い違っている場合 , 内部アドレス バス上には設定そのままのアドレスが出力されますが , バス上の各転送対象において , 上記の規則に従ってアドレスが修正されてアクセスが行われます。 ■ 転送回数制御 転送回数は , 最大で 16 ビット長の範囲内 (1 回∼ 65536 回 ) で指定します。転送回数指 定値は転送回数レジスタ (DMACA:DTC) に設定します。 レジスタ値は転送開始時に一時記憶バッファに格納され , 転送回数カウンタにより減 算されます。このカウンタ値が "0" となったとき , 指定回数の転送終了として検出され , そのチャネルの転送停止または再起動受付け待ち ( リロード指定時 ) が行われます。 ● 転送回数レジスタ群の特長 • 各レジスタ 16 ビット長です。 • すべてのレジスタはそれぞれ専用リロードレジスタを持ちます。 • レジスタ値が "0" のときに起動すると , 65536 回の転送を行います。 ● リロード動作 • リロード機能をもつレジスタで , リロード機能が許可されている場合にのみ有効で す。 • 転送起動時に , 回数レジスタの初期値をリロードレジスタに退避します。 • 転送回数カウンタにてカウントを行った際 "0" になると , 転送終了を通知するとと もに , リロードレジスタより初期値を読み出し , 回数レジスタに書き込みます。 ■ CPU 制御 DMA 転送要求が受け付けられると , DMA はバスコントローラに対し転送要求を発行 します。 バスコントローラはバス動作の切れ目に内部バス使用権を DMA に明け渡し , DMA 転 送が開始されます。 ● DMA 転送と割込み • DMA 転送中は , 基本的には転送終了まで割込みの受付けは停止します。 • 割込処み理動作中に DMA 転送要求があった場合 , 転送要求は受け付けられ , 転送終 499 第 19 章 DMAC(DMA コントローラ ) 了まで割込み処理動作は停止します。 • 例外として , NMI 要求 , または割込みコントローラにて設定されたホールド抑止レ ベルより高いレベルの割込み要求が発生した場合には , DMAC は転送単位 (1 ブロッ ク ) の境界にてバスコントローラの転送要求を一時取り下げ , 割込み要求がクリア されるまでは転送を一時停止状態にします。この間 , 転送要求は内部で保持されま す。割込み要求がクリアされた後に再度 DMAC はバスコントローラの転送要求を 発行してバス使用権を取得し , DMA 転送を再開します。 ● DMA 抑止 • FR ファミリは DMA 転送中に , より優先度の高い割込み要因が発生すると DMA 転 送を中断して該当割込みルーチンへ分岐します。この機能は割込み要求がある限り 有効ですが , 割込み要因をクリアすると抑止機能が働かなくなり , 割込み処理ルー チン内で DMA 転送を再開します。このため , DMA 転送を中断するレベルの割込み 要因の処理ルーチン内で , 割込み要因クリア後の DMA 再転送開始を抑止したいと きは , DMA 抑止機能を使用します。DMA 抑止機能は , DMA 全体制御レジスタの DMAH3 ∼ DMAH0 ビットに "0" 以外の値を書くことで起動し , "0" を書くことで停 止します。 • 本機能は主として割込み処理ルーチン内で使用します。割込み処理ルーチンで割込 み要因をクリアする前に DMA 抑止レジスタの内容を 1 つ増加させます。このよう にすると , 以降 , DMA 転送は行いません。割込み処理への対応を行った後 , 復帰す る前に DMAH3 ∼ DMAH0 ビットの内容を 1 つ減少させます。もし , 多重割込みで あれば DMAH3 ∼ DMAH0 ビットの内容は , まだ "0" にならないため , 引き続いて DMA 転送は抑止されます。また , 多重割込みでなければ , DMAH3 ∼ DMAH0 ビッ トの内容は "0" になるため , その後すぐに DMA 要求を有効にします。 <注意事項> • レジスタのビット数は 4 ビットですので , 15 レベルを超える多重割込みで本機能を使 用できません。 • DMA タスクの優先順位は必ずほかの割込みレベルより 15 レベルは上に置いてくださ い。 ■ ホールド調停 デバイスが外部バス拡張モードで動作している場合 , 外部からのホールド機能が使用 可能となります。この際の外部ホールド要求と本モジュールによる DMA 転送要求と の関係は , 以下に示すとおりです。 ● 外部ホールド中の DMA 転送要求 DMA 転送を開始しますが , 外部バス領域へのアクセスがあった場合 , その時点で DMA 転送を一時停止します。外部ホールドが解除され次第 , DMA 転送を再開します。 ● DMA 転送中の外部ホールド要求 外部ホールド状態となります。DMA 転送による外部バス領域へのアクセスがあった場 合 , その時点で DMA 転送は一時停止します。外部ホールドが解除され次第 , DMA 転 送を再開します。 500 第 19 章 DMAC(DMA コントローラ ) ● DMA 転送要求と外部ホールド要求の同時発生 外部ホールド状態となり , また内部では DMA 転送を開始します。DMA 転送による外 部バス領域へのアクセスがあった場合 , その時点で DMA 転送は一時停止します。外部 ホールドが解除され次第 , DMA 転送を再開します。 ■ 動作開始 DMA 転送の開始は , チャネルごとに独立に制御しますが , その前に全チャネルの動作 を許可しておく必要があります。 ● 全チャネル動作許可 DMAC 各チャネルに起動を行う前に , DMA 動作許可ビット (DMACR:DMAE) にてあら かじめ全チャネルの動作を許可する必要があります。許可されていない状態で行った 起動設定 , および発生した転送要求はすべて無効となります。 ● 転送起動 チャネルごとの制御レジスタにある動作許可ビットにて , 転送動作を起動します。起動 されたチャネルに対する転送要求が受け付けられると , 設定されたモードで DMA 転送 動作が開始されます。 ● 一時停止状態からの起動 チャネルごとまたは全チャネル制御にて , 起動前に一時停止状態となっていた場合 , 転 送動作を起動しても一時停止状態を維持しています。この間に転送要求が発生した場 合は要求を受け付け保持します。一時停止を解除した時点から転送を開始します。 ■ 転送要求の受付けと転送 • 起動後から , 各チャネルに対し設定した転送要求のサンプリングが開始されます。 • 外部端子起動要因でエッジ検出を選択した場合 , 転送要求が検出されると転送要求 クリア条件を満たすまで DMAC 内部で要求を保持します ( ブロック / ステップ / バー スト転送で外部端子起動要因を選択したとき )。 • 外部端子起動要因でレベル検出 , または周辺割込み起動を選択した場合は , 転送要 求がクリアされるまで DMAC は転送を続けますが , クリアされたら 1 転送単位で転 送を停止します ( デマンド転送 / 周辺割込み起動 )。 • 周辺割込みはレベル検出扱いとなりますので , 割込みは DMA による割込みクリア で行うようにしてください。 • 転送要求は , 他チャネルの要求が受け付けられて転送が行われている間でも , 常に 受け付けられており , 優先順位の判断を行って , 1 転送単位ごとに転送するチャネル を決定しています。 ■ DMA による周辺割込みクリア 本 DMA には周辺割込みをクリアする機能があります。この機能は DMA 起動要因に周 辺割込みを選択したときに機能します (IS4 ∼ IS0=1XXXXB のとき )。 周辺割込みのクリアは設定された起動要因にのみ行われます。つまり IS4 ∼ IS0 で設 定された周辺機能のみクリアされます。 501 第 19 章 DMAC(DMA コントローラ ) ● 割込みクリアの発生タイミング 転送モードにより発生するタイミングが違います 「19.7 ( 動作フローチャート」を参照 )。 [ ブロック / ステップ転送 ] ブロック転送を選択した場合 , 1 ブロック ( ステップ ) 転送ごとにクリア信号が発生 します。 [ バースト転送 ] バースト転送を選択した場合は , 指定転送回数がすべて終了したらクリア信号が発 生します。 [ デマンド転送 ] デマンド転送では外部端子からの起動要求のみサポートするためクリア信号はで ません。 ■ 一時停止 DMA 転送は , 以下の場合に一時停止します。 ● 制御レジスタへの書込みによる一時停止の設定(各チャネル独立または全チャネル同時に設 定) 一時停止ビットにより一時停止を設定すると , 一時停止解除設定を再度設定するまで の間 , 対応するチャネルの転送は停止します。一時停止の確認は DSS ビットで行って ください。 一時停止を解除すると転送を再開します。 ● NMI/ ホールド抑止レベル割込み処理中 NMI 要求 , またはホールド抑止レベルより高いレベルの割込み要求が発生した場合 , 転 送中のチャネルはすべて転送単位の境界にて一時停止し , バス権を開放して NMI/ 割込 み処理を優先させます。また , NMI/ 割込み処理中に受け付けられた転送要求は , その まま保持され , NMI 処理の終了を待ちます。 要求が保持されたチャネルは , NMI/ 割込み処理が終了した後に転送を再開します。 ■ 動作終了 / 停止 DMA 転送の終了は , チャネルごとに独立に制御しますが , 全チャネルの動作を禁止す ることも可能です。 ● 転送終了 リロード動作が有効でない場合 , 転送回数レジスタが "0" になると転送を停止し , 終了 コードにて『正常終了』を表示した後 , 以降の転送要求は無効となります (DMACA: DENB ビットをクリアします )。 リロード動作が有効である場合 , 転送回数レジスタが "0" になると初期値をリロードし , 終了コードにて『正常終了』を表示した後 , 再度転送要求待ちとなります (DMACA: DENB ビットをクリアしません ) 。 ● 全チャネル動作禁止 DMA 動作許可ビット DMAE にて全チャネルの動作を禁止すると , 動作中であったチャ ネルも含め DMAC のすべての動作が停止します。以降 , 再度全チャネル DMA 動作を 許可しても , チャネルごとに再起動しないと転送は行われません。この場合 , 割込みは 一切発生しません。 502 第 19 章 DMAC(DMA コントローラ ) ■ エラーによる停止 指定回数の転送終了による正常終了以外の要因で停止する場合として , 各種エラー発 生による停止および強制停止があります。 ● 周辺回路からの転送停止要求の発生 転送要求を出力する周辺回路によっては , 異常を検出した際などに転送停止要求を発 生するものがあります ( 例 : 通信系周辺における受信 / 送信エラーなど )。 この転送停止要求を受け取った DMAC は , 終了コードにて『転送停止要求』を表示し て対応するチャネルの転送を停止します。 機能 IS 00000 B ↓ 01111 B ハードウェア ↓ 外部端子"L"レベル or ↓エッジ 10000 B ↓ 10010 B 10011 B ↓ 11111 B 転送停止要求 ↑ なし ↓ ↓ ↑ あり ↓ ↓ ↑ なし ↓ <注意事項> 各転送停止要求の発生条件についての詳細は , 各周辺回路の仕様を参照してください。 ● アドレスエラーの発生 各アドレッシングモードにて , 以下に示すような不適切なアドレッシングが行われた とき , アドレスエラーとして検出されます (32 ビットアドレス指定時に , アドレスカウ ンタにてオーバフロー / アンダフローが発生した場合 )。 アドレスエラーを検出すると , 終了コードにて『アドレスエラーの発生』を表示して対 応するチャネルの転送を停止します。 503 第 19 章 DMAC(DMA コントローラ ) ■ DMAC 割込み制御 転送要求となる周辺割込みとは独立に , DMAC のチャネルごとに以下の割込みを出力 することが可能です。 • 転送終了割込み : 正常終了した場合のみ発生 • エラー割込み : 周辺回路からの転送停止要求 ( 周辺に起因するエラー ) アドレスエラーの発生 ( ソフトウェアに起因するエラー ) これら割込みはすべて終了コードの内容に従って出力されます。 割込み要求のクリアは , DMACB の DSS2 ∼ DSS0( 終了コード ) に "000B" を書き込む ことにより行います。なお , 終了コードは再起動する際には必ず "000B" を書き込んで クリアしてください。 リロード動作が有効である場合は自動的に再起動しますが , この際には終了コードは クリアされず , 次の転送終了による新しい終了コードの書込み時まで保持されます。 終了コードにて表示できる終了要因は1種類のみですので, 複数の要因が同時に発生し た場合は優先判断を行った結果を表示します。この際に発生する割込みは , 表示されて いる終了コードに従います。 終了コードの表示の優先順位を以下に示します ( 上から , 優先度の高い順 )。 1. リセット 2. "000B" 書込みによるクリア 3. 周辺停止要求または外部端子入力 (DSTP) の停止要求 4. 正常終了 5. アドレスエラー検出による停止 6. チャネル選択と制御 ■ スリープ中の DMA 転送 MB91305 は , スリープモード中に DMAC を動作させることができません。 ■ チャネル選択と制御 転送チャネルの数は 5 チャネルまで同時設定が可能です。各チャネルは基本的に各機 能を独立に設定することが可能です。 ● チャネル間優先順位 DMA 転送は同時に 1 チャネルのみ可能なため , 各チャネル間には優先順位が設定され ます。 順位設定には, 固定/回転の2モードがありチャネルグループ(後述)ごとに選択します。 (1) 固定モード チャネル番号の小さい順に固定されます。 (ch0 >ch1 >ch2 >ch3 >ch4) 転送中に , より高い優先度の転送要求が受け付けられた場合 , 1 転送単位 ( ブロック サイズ指定レジスタに設定した数×データ幅 ) の転送が終了した時点で , 転送チャ ネルが高優先度側に切り換わります。 高優先度側の転送が終了すると , 元のチャネルの転送を再開します。 504 第 19 章 DMAC(DMA コントローラ ) 図 19.6-1 固定モードでのチャネル間優先順位 ch0 転送要求 ch1 転送要求 バス動作 CPU SA 転送チャネル DA SA DA SA ch0 ch1 DA SA DA CPU ch1 ch0 ch0 転送終了 ch1 転送終了 (2) 回転モード (ch0, ch1 間のみ ) 動作許可後の初期状態は (1) と同じ順位に設定されますが , 1 転送終了ごとにその チャネルの優先度は逆転します。よって , 同時に転送要求が出力されている場合 , 1 転送単位ごとにチャネルが切り換わります。 連続 / バースト転送を設定した場合に効果のあるモードです。 図 19.6-2 回転モードでのチャネル間優先順位 ch0 転送要求 ch1 転送要求 バス動作 CPU SA 転送チャネル DA ch1 SA DA ch0 SA DA ch1 SA DA CPU ch0 ch0 転送終了 ch1 転送終了 ● チャネルグループ 優先順位の選択は , 以下の単位で設定します。 モード 優先度 備考 固定 ch0 > ch1 − 回転 ch0 > ch1 ↑↓ ch0 < ch1 初期状態は上位側の順位です。 上位側が転送されると反転します。 ■ 外部端子と内部動作タイミングに関する補足 ● DREQ 端子入力の最小有効パルス幅について (MB91305 は ch0, ch1, ch2 のみ ) バースト / ステップ / ブロック / デマンド転送すべての転送モードで動作時最小 5 シス テムクロックサイクル (= 外バスクロック (CLKT) の 5 周期分 ) の幅が必要です。 <注意事項> DACK 出力は , DREQ 入力の受付けを示すものではありません。DMA 許可状態で転送前 であれば DREQ 入力は常に受け付けられます。そのため , DACK 出力のアサートまで DREQ 入力を保持する必要はありません ( デマンド転送モードは除く )。 505 第 19 章 DMAC(DMA コントローラ ) ● デマンド転送要求を停止するために DREQ 端子を無効にするタイミングについて (1) 2 サイクル転送時 デマンド転送時は , 必ず外部領域のアドレスを転送元か転送先 , または両方に設定 してください。 • 転送対象が外部→外部の場合 以下のいずれかの方法で,DREQ の取下げのセンスタイミングを , ライトスト ローブの無効のタイミングより 1 サイクル以上前にしてください。 (1) 外部 I/O あるいは外部グルーロジック側での調整により , DREQ の取下げタ イミングを 1 サイクル以上前にする。 (2) FRファミリが内蔵する外部バス制御部のオートウェイト機能を使用して,ウェ イトを現在の設定より 1 サイクル以上大きく設定する。 これより後に DREQ をネゲートした場合 , 次の転送まで行う可能性があります。 • 転送対象が外部→内部の場合 最後の DMA 転送の転送元アクセス時の外部 RD 端子出力が "L" 区間の間にネ ゲートしてください (DACK="L" & RD="L" の区間 )。これより後に DREQ をネ ゲートした場合 , 次の転送まで行う可能性があります。 図 19.6-3 2 サイクル外部→内部転送時の DREQ 端子入力のネゲートタイミング例 外部バスクロック CS0 CS1 AS RD WRn DREQn DACKn 矢印の範囲内で無効にしてください。 より遅いタイミングで無効にした場合 , 1 回分 多く転送する場合があります。 • 転送対象が内部→外部の場合 以下のいずれかの方法で,DREQ の取下げのセンスタイミングを , ライトスト ローブの無効のタイミングより 1 サイクル以上前にしてください。 (1) 外部 I/O あるいは外部グルーロジック側での調整により , DREQ の取下げタ イミングを 1 サイクル以上前にする。 506 第 19 章 DMAC(DMA コントローラ ) (2) FRファミリが内蔵する外部バス制御部のオートウェイト機能を使用して,ウェ イトを現在の設定より 1 サイクル以上大きく設定する。 これより後に DREQ をネゲートした場合 , 次の転送まで行う可能性があります。 (2) フライバイ転送時 デマンド転送時は , 必ず外部領域のアドレスを転送先に設定してください。 • フライバイ ( リード端子に対するタイミング ) の場合 最後の DMA 転送の IOWR 端子出力が "H" になった後の外部 RD 端子出力が "L" 区間の間にネゲートしてください (DACK="L" & RD="L" の区間 )。これより後に DREQ をネゲートした場合 , 次の転送まで行う可能性があります。 • フライバイ (IORD 端子に対するタイミング ) の場合 最後の DMA 転送の外部 WR 端子出力が "H" になった後の IORD が "L" 区間の間 にネゲートしてください (DACK="L" & IORD="L" の区間 )。これより後に DREQ をネゲートした場合 , 次の転送まで行う可能性があります。 図 19.6-4 フライバイ (IORD 端子に対するタイミング ) の場合の DREQ 端子入力の ネゲートタイミング例 外部バスクロック CS0 CS1 AS RD WRn DREQn DACKn IORD 矢印の範囲内で無効にしてください。 より遅いタイミングで無効にした場合 , 1 回分 多く転送する場合があります。 507 第 19 章 DMAC(DMA コントローラ ) ● 同一チャネルで引き続き転送を行うための DREQ 端子入力のタイミングについて バースト / ステップ / ブロック / デマンド転送時 DREQ 端子入力によって同一チャネルの転送を連続させることは動作保証できませ ん。転送終了によって内部に保持した要求をクリアするため , 最速タイミングで DREQ が再度アサートされたとしても最低でも 1 システムクロックサイクル (CLK 出力の 1 周期分 ) はほかのチャネルの転送要求の検出が有効になっており , その結 果 , ほかのチャネルの優先度が高ければそちらの転送が開始されます。 また , それより以前に DREQ が再度アサートされても , 転送が終了していないので 無視されます。ほかのチャネルの転送要求が発生していない場合であれば , DACK 端子出力がアサートされた時点で DREQ を再度アサートすることにより , 同一チャ ネルでの転送が再開します。 ● DACK 端子出力のタイミングについて • DMAC の DACK 出力は , 受け付けられた転送要求に対する転送が行われていること を示します。 • DACK の出力は , 基本的に外部バスアクセスタイミングのアドレス出力に同期して います。DACK 出力を使用する場合は , ポートで DACK 出力イネーブルにする必要 があります。 ● DEOP 端子出力のタイミングについて • DMA での DEOP 出力は , 受け付けられたチャネルの DMA 転送が指定転送回数分終 了したことを示すものです。 • DEOP 出力は最終転送ブロックの外部領域アクセスが開始されると出力されます。 そのため , ブロックサイズを "1" 以外に設定 ( ブロック転送モード ) している場合 , 最終ブロックの最後のデータ転送時に DEOP が出力されます。この場合 , 転送がま だ行われている間 (DEOP 出力される前 ) でも , DACK 端子出力がアサートされてい れば , 次の DREQ の受付けは開始されています。 • DEOP の出力は外部バスアクセスタイミングの RD/WR に同期しています。しかし , 転送元 / 転送先が内部アクセスであった場合 , DEOP は出力されません。DEOP 出 力を使用する場合は , ポートレジスタで DEOP 出力をイネーブルにする必要があり ます。 ● DSTP 端子入力のタイミングについて • バースト / ステップ / ブロック / デマンド転送すべての転送モードで動作時 , 最小 5 システムクロックサイクル (=1/2 θ , CPU 系のクロックの 2 周期分 ) の幅が必要です。 • DSTP の入力タイミングは DREQ と同様に外部アクセスと同期させて使用すること を推奨します (DACK 出力と RD または WR でデコードした信号を使用してくださ い )。 • DMA の転送を強制的に停止する場合に使用します。この端子入力を使用すること で転送を強制的に停止できますが , ステータスレジスタ (DMACB:DSS2 ∼ DSS0) は 「転送停止要求」を示しエラーとして扱われます。割込みを許可していれば割込み を発生します。 • この機能は DEOP 端子と兼用になっているので両方の機能は使用できません。機能 の切換えはポートレジスタで設定してください。 508 第 19 章 DMAC(DMA コントローラ ) ● 転送中に外部端子転送要求が再度入力された場合について - バースト / ステップ / ブロック転送時 DACK 信号が DMAC 内部でアサートされるまでの間 , 次の転送要求は入力されても 無効となります。しかし , 外部バス制御ユニットと DMAC の動作は完全に同期して はいないため , DREQ 入力で転送要求を有効にするためには DACK と DEOP 出力に より DREQ 端子入力を作成する回路を初期化する必要があります。 - デマンド転送時 全転送回数が終了した際に転送回数レジスタのリロードを指定している場合 , 再度 転送要求が受け付けられます。 ● ブロック転送中にほかの転送要求が発生した場合について 指定したブロックの転送が終了するまでは , ほかの要求は検出されません。ブロックの 境界にて , その時点で受け付けられている転送要求を評価し , もっとも優先順位の高い チャネルの転送を行います。 ● 外部 I/O −外部メモリ間の転送について DMAC の転送対象として , 外部 I/O と外部メモリの区別は存在しません。外部 I/O は , アドレス固定の外部アドレスとして設定してください。 フライバイ転送を行う場合 , 外部メモリは転送先アドレスレジスタにアドレスを設定 してください。また , 外部 I/O に対しては DACK 出力と RD または WR でデコードし た信号を使用してください。 ● DMAC の交流特性について DMAC に関連する外部端子は DREQ 端子入力と DACK 端子出力 , DEOP 端子出力があ りますが , 出力タイミングは外部バスアクセスに同期しています (DMAC の交流規格を 参照 ) 。 509 第 19 章 DMAC(DMA コントローラ ) 19.7 動作フローチャート 次の各転送モードにおける動作フローチャートを示します。 • ブロック転送 • バースト転送 • デマンド転送 ■ 動作フローチャート 図 19.7-1 ブロック転送 DENB=>0 リロード許可 DMA停止 DENB=1 起動要求待機 起動要求 初期化 アドレス,転送回数,ブロック数ロード 転送元アドレスアクセス アドレス演算 フライバイ時は 1回のアクセス 転送先アドレスアクセス アドレス演算 ブロック数 -1 BLK=0 転送回数-1 アドレス,転送回数,ブロック数 ライトバック 周辺割込み 起動要因選択時のみ 割込み クリア発生 割込みクリア DTC=0 DMA転送終了 ブロック転送 ・すべての起動要因で起動可能(選択) ・すべての領域へのアクセス可能 ・ブロック数の設定可能 ・ブロック数終了で割込みクリア発行 ・指定転送回数終了でDMA割込みを発行 510 DMA割込み発生 第 19 章 DMAC(DMA コントローラ ) 図 19.7-2 バースト転送 DMA停止 DENB=>0 DENB=1 リロード許可 起動要求待機 初期化 アドレス,転送回数,ブロック数ロード 転送元アドレスアクセス アドレス演算 フライバイ時は 1回のアクセス 転送先アドレスアクセス アドレス演算 ブロック数-1 BLK=0 転送回数-1 DTC=0 アドレス,転送回数,ブロック数 ライトバック 周辺割込み起動要因選択時のみ 割込みクリア DMA転送終了 割込みクリア発生 DMA割込み発生 バースト転送 ・すべての起動要因で起動可能(選択) ・すべての領域へのアクセス可能 ・ブロック数の設定可能 ・指定転送回数終了で割込みクリア,DMA割込みを発行 511 第 19 章 DMAC(DMA コントローラ ) 図 19.7-3 デマンド転送 DMA停止 DENB=>0 なし リロード許可 DENB=1 起動要求待機 起動要求あり 初期化 アドレス,転送回数,ブロック数ロード 転送元アドレスアクセス アドレス演算 フライバイ時は 1回のアクセス 転送先アドレスアクセス アドレス演算 転送回数-1 アドレス,転送回数,ブロック数 ライトバック DTC=0 周辺割込み起動要因選択時のみ 割込みクリア DMA転送終了 割込みクリア発生 DMA割込み発生 デマンド転送 ・外部端子(DREQ)からの要求(レベル検出)のみ受付け。他の要因での起動禁止 ・外部領域へのアクセスは必須条件(外部領域へのアクセスが次の起動要因となるため) ・ブロック数は,設定に関係なく"1"固定になる ・指定転送回数終了で割込みクリア,DMA割込みを発行 512 第 19 章 DMAC(DMA コントローラ ) データパス 19.8 2 サイクル転送時 , およびフライバイ転送時のデータの動きを図で示します。 ■ 2 サイクル転送時のデータの動き 図 19.8-1 2 サイクル転送時のデータの動き ( 続く ) バス コントローラ X-bus データバッファ バス コントローラ D-bus F-bus RAM DMAC ライトサイクル I-bus CPU CPU リードサイクル I-bus D-bus MB91xxx DMAC 外部バス I/F MB91xxx X-bus データバッファ 外部バス I/F 外部領域=>外部領域 転送 F-bus I/O RAM I/O バス コントローラ X-bus データバッファ バス コントローラ D-bus F-bus RAM DMAC ライトサイクル I-bus CPU CPU リードサイクル I-bus D-bus MB91xxx DMAC 外部バス I/F MB91xxx X-bus 外部バス I/F 外部領域=>内部RAM領域 転送 データバッファ F-bus I/O RAM I/O X-bus バス コントローラ D-bus データバッファ F-bus RAM DMAC ライトサイクル I-bus CPU リードサイクル I-bus CPU MB91xxx DMAC 外部バス I/F MB91xxx バス コントローラ D-bus X-bus データバッファ 外部バス I/F 外部領域=>内蔵I/O領域 転送 F-bus I/O RAM I/O 513 第 19 章 DMAC(DMA コントローラ ) 図 19.8-1 2 サイクル転送時のデータの動き ( 続き ) MB91xxx CPU リードサイクル I-bus X-bus バス コントローラ D-bus データバッファ X-bus バス コントローラ D-bus F-bus RAM DMAC ライトサイクル I-bus CPU DMAC 外部バス I/F MB91xxx 外部バス I/F 内蔵I/O領域=>内蔵RAM領域 転送 F-bus I/O RAM I/O MB91xxx CPU リードサイクル I-bus X-bus バス コントローラ D-bus データバッファ バス コントローラ D-bus F-bus RAM DMAC ライトサイクル I-bus CPU DMAC 外部バス I/F MB91xxx X-bus 外部バス I/F 内部RAM領域=>外部領域 転送 データバッファ F-bus I/O RAM I/O バス コントローラ X-bus データバッファ F-bus RAM 514 DMAC ライトサイクル I-bus CPU CPU リードサイクル I-bus D-bus MB91xxx DMAC 外部バス I/F MB91xxx バス コントローラ D-bus X-bus データバッファ F-bus I/O RAM I/O 外部バス I/F 内部RAM領域=>内蔵I/O領域 転送 第 19 章 DMAC(DMA コントローラ ) ■ フライバイ転送時のデータの動き 図 19.8-2 フライバイ転送時のデータの動き DMAC CPU リードサイクル I-bus D-bus X-bus バス コントローラ メモリ MB91xxx 外部バス I/F フライバイ転送(メモリからI/O) RD,CSxでメモリリードする。 データバッファ RD,DACKでI/Oライトする。 RAM I/O F-bus I/O SDRAMでのフライバイ転送は不可。 CPU バス コントローラ D-bus X-bus データバッファ メモリ DMAC リードサイクル I-bus WR,DACKでI/Oリードする。 F-bus RAM WR,CSxでメモリライトする。 I/O I/O MB91xxx 外部バス I/F フライバイ転送 (I/Oからメモリ) SDRAMでのフライバイ転送は不可。 515 第 19 章 DMAC(DMA コントローラ ) 19.9 DMA 外部インタフェース DMA 外部インタフェースの概要 , DREQx 端子の入力タイミング , および DACK の FR30 ファミリ互換モード機能について説明します。 ■ 動作概要 DMA ch0 ∼ ch2 には , DMA 専用端子 (DREQ, DACK, DEOP) があります。 • DREQ : デマンド転送を行うときの DMA転送要求入力端子です。 1入力で転送要求。 • DACK : DMA が外部インタフェースを通して外部領域にアクセスした場合にアク ティブ ("L" 出力 ) になります。 • DEOP : DMA 転送がすべて終了する最後のアクセスに同期してアクティブ ("L" 出力 ) になります。 • IORD : フライバイ転送時に I/O => メモリの方向選択時にアクティブになります。 • IOWR : フライバイ転送時にメモリ => I/O の方向選択時にアクティブになります。 516 第 19 章 DMAC(DMA コントローラ ) ■ 動作例 ( 簡易波形 ) ● 2 サイクル転送 ( 外部 => 外部転送時 , 転送回数 =2 の場合 ) 図 19.9-1 2 サイクル転送 ( 外部 => 外部転送時 , 転送回数 =2 の場合 ) A23~A0 #RD1 #WR1 #RD2 #WR2 RD WR DEOP DACK CS1 1回目リード 1回目ライト 2回目リード 2回目ライト ● フライバイ転送 (I/O=> メモリ転送時 , 転送回数 =3 の場合 ) 図 19.9-2 フライバイ転送 (I/O=> メモリ転送時 , 転送回数 =3 の場合 ) A23~A0 CPU #1 #2 #3 RD WR IORD DEOP DACK CS1 CPUリード フライバイ 1回目 フライバイ 2回目 フライバイ 3回目 ● フライバイ転送 ( メモリ =>I/O 転送時 , 転送回数 =3 の場合 ) 図 19.9-3 フライバイ転送 ( メモリ =>I/O 転送時 , 転送回数 =3 の場合 ) A23~A0 CPU #1 #2 #3 RD WR IOWR DEOP DACK CS1 CPUリード フライバイ 1回目 フライバイ 2回目 フライバイ 3回目 517 第 19 章 DMAC(DMA コントローラ ) ■ DREQ 端子の入力タイミング DREQ 端子は DMA の起動要求信号です。ポートと兼用になっている場合は PFR レジス タで DREQ 入力を許可してください。 ● タイミング • デマンド転送以外の場合は , DMA の起動要因をエッジ検出に設定してください。立 上り / 立下りタイミングに規定はありませんが , DREQ 信号の保持時間は , 3 クロッ ク以上必要です。再度 , 転送要求をする場合は DMA 転送が終了した後に要求入力 を入れてください (DEOP が出力された後に要求する )。 DEOP 出力前に要求を入れても無視されることがあります。 • デマンド転送の場合は , DMA の起動要因をレベル検出に設定してください。起動開 始時に規定はありませんが , 停止時は , DMA 転送の RD/WR に同期させてください。 センスタイミングは最終外部アクセスの MCLK の立上りになります。 ● DREQ エッジ要求時 (2 サイクル転送時 ) 図 19.9-4 DREQ エッジ要求時 (2 サイクル転送時 ) MCLK DREQ A23~A0 #RD1 #WR1 #RD2 #WR2 RD WR DEOP CPU動作 CPU DMA転送 3サイクル以上 次の要求はDEOP出力後 ● DREQ レベル要求時 (2 サイクル転送時 ) 図 19.9-5 DREQ レベル要求時 (2 サイクル転送時 ) MCLK DREQ A23~A0 #RD1 #WR1 #RD2 #WR2 RD WR CPU動作 DMA転送 CPU 3回目の転送要求のセンスポイント <注意事項> DREQ レベル要求時の場合は 2 サイクル転送で , 転送元 / 転送先が外部領域のため 2 回の DMA 転送で停止させるときは #RD2 の立下りから #WR2 の最終の MCLK 立上りの前まで にネゲートしてください。 518 第 19 章 DMAC(DMA コントローラ ) ■ DACK の FR30 ファミリ互換モード この DACK の FR30 ファミリ互換モードは , DACK のタイミングを FR30 ファミリの DMA と同じタイミングにするモードです。このモードは DACK 端子に対応する PFR レジスタで設定してください。 PFR 設定時は対応する DMA チャネルの転送モード ( フライバイ , 2 サイクル ) と合わ せてください。 <注意事項> FR30 ファミリ互換モードで 2 サイクル転送の設定時 , RD または WR/WRn に同期しま す。WRを使用する場合は, 外部インタフェースACRレジスタのTYP3∼TYP0を "0X1XH" にして WR を有効にしてください。 ● 設定例 • 2 サイクル転送モード時 図 19.9-6 設定例 (2 サイクル転送モード時 ) RD DQMUX/LX WR/WRn DACK (AKxx=111 B) チップセレクトと同じタイミング DACK (AKxx=001 B) 2サイクル転送時設定禁止 DACK (AKxx=010 B) DACK (AKxx=011 B) DACK (AKxx=100 B) DACK (AKxx=101 B) DACK (AKxx=110 B) AKxx: DMAチャネルに対応するPFRレジスタの設定値です。 519 第 19 章 DMAC(DMA コントローラ ) • フライバイ転送モード時 図 19.9-7 設定例 ( フライバイ転送モード時 ) RD DQMUX/LX WR/WRn IORD IOWR DACK (AKxx=111 B) チップセレクトと同じタイミング DACK (AKxx=001 B) DACK (AKxx=010 B) フライバイ転送時設定禁止 DACK (AKxx=011 B) フライバイ転送時設定禁止 DACK (AKxx=100 B) フライバイ転送時設定禁止 DACK (AKxx=101 B) フライバイ転送時設定禁止 DACK (AKxx=110 B) フライバイ転送時設定禁止 メモリ to I/O I/O to メモリ AKxx: DMAチャネルに対応するPFRレジスタの設定値です。 520 メモリ to I/O I/O to メモリ 付録 I/O マップ , 割込みベクタ , USB 機能 , プログラム ローダモード , 端子状態一覧 , および命令一覧につ いて , 本文に記載できなかった細かいところや , プ ログラミングするときに参照することがらを記載 しています。 付録 A I/O マップ 付録 B 割込みベクタ 付録 C USB 機能 付録 D プログラムローダモード 付録 E 端子状態一覧 付録 F 命令一覧 521 付録 付録 A I/O マップ I/O マップについて説明します。 ■ I/O マップの見方 メモリ空間領域と周辺リソースの各レジスタの対応を示します。 付図 A-1 表の見方 アドレス 000000H レジスタ +1 +2 PDR1[R/W] PDR2[R/W] XXXXXXXX XXXXXXXX +0 PDR0[R/W] XXXXXXXX +3 PDR3[R/W] XXXXXXXX ブロック T-unit Port Data Register リード/ライト属性 リセット後のレジスタ初期値 レジスタ名 (1コラムのレジスタが4n番地, 2コラムが4n+2番地...) 最左のレジスタ番地 (ワードでアクセスした際は, 1コラム目のレジスタがデータのMSB側となる。) <注意事項> レジスタのビット値は , 以下のように初期値を表します。 • "1": 初期値 "1" • "0": 初期値 "0" • "X": 初期値 "X" • "-": その位置に物理的にレジスタがない 522 付録 A I/O マップ 表 A-1 I/O マップ (1 / 9) アドレス レジスタ +0 +1 +2 +3 - - - - ブロック 000000H ∼ 00000FH 000048H PDR0[R/W] PDR1[R/W] XXXXXXXX XXXXXXXX PDR4[R/W] PDR5[R/W] XXXXXXXX XXXXXXXX PDR8[R/W] PDR9[R/W] XXXXXXXX XXXXXXXX PDRC[R/W] PDRD[R/W] XXXXXXXX --XXXXXX ADCTH[R/W] ADCTL[R/W] XXXXXX00 00000X00 ADAT0[R] XXXXXX00_00000000 ADAT2[R] XXXXXX00_00000000 ADAT4[R] XXXXXX00_00000000 ADAT6[R] XXXXXX00_00000000 ADAT8[R] XXXXXX00_00000000 TEST [R/W] 00000000 EIRR0 [R/W] ENIR0 [R/W] 00000000 00000000 DICR [R/W] HRCL [R/W] -------0 0--11111 TMRLR0 [W] XXXXXXXX XXXXXXXX 00004CH -------- 000050H TMRLR1 [W] XXXXXXXX XXXXXXXX 000054H -------- 000058H TMRLR2 [W] XXXXXXXX XXXXXXXX 00005CH -------- 000010H 000014H 000018H 00001CH 000020H 000024H 000028H 00002CH 000030H 000034H 000038H 00003CH 000040H 000044H 000060H 000064H SSR0 [R/W] 00001000 SIDR0 [R]/ SODR0 [W] XXXXXXXX UTIM0 [R] (UTIMR0 [W]) 00000000 00000000 PDR2[R/W] PDR3[R/W] XXXXXXXX XXXXXXXX PDR6[R/W] PDR7[R/W] --XXXXXX --XXXXXX PDRA[R/W] PDRB[R/W] -----XXX XXXXXXXX PDRE[R/W] PDRF[R/W] -----XXX XXXXXXXX ADCH[R/W] 00000000_00000000 ADAT1[R] XXXXXX00_00000000 ADAT3[R] XXXXXX00_00000000 ADAT5[R] XXXXXX00_00000000 ADAT7[R] XXXXXX00_00000000 ADAT9[R] XXXXXX00_00000000 - - - ELVR0 [R/W] 00000000 -------- TMR0 [R] XXXXXXXX XXXXXXXX TMCSR0 [R/W] ----0000 00000000 TMR1 [R] XXXXXXXX XXXXXXXX TMCSR1 [R/W] ----0000 00000000 TMR2 [R] XXXXXXXX XXXXXXXX TMCSR2 [R/W] ----0000 00000000 SCR0 [R/W] 00000100 DRCL0 --------*3 SMR0 [R/W] 00--0-0- Reserved R-bus Port Data Register 10bit A/D converter Reserved Ext int DLYI/I-unit Reload Timer 0 Reload Timer 1 Reload Timer 2 UART0 UTIMC0 [R/W] U-TIMER 0 0--00001 523 付録 表 A-1 I/O マップ (2 / 9) アドレス 000068H 00006CH 000070H 000074H 000078H 00007CH 000080H レジスタ +0 +1 +2 +3 SSR1 [R/W] 00001000 SIDR1 [R]/ SODR1 [W] XXXXXXXX SCR1 [R/W] 00000100 SMR1 [R/W] 00--0-0- UTIM1 [R] (UTIMR1 [W]) 00000000 00000000 SSR2 [R/W] 00001000 SIDR2 [R]/ SODR2 [W] XXXXXXXX UTIM2 [R] (UTIMR2 [W]) 00000000 00000000 SSR3 [R/W] 00001000 SIDR3 [R]/ SODR3 [W] XXXXXXXX UTIM3 [R] (UTIMR3 [W]) 00000000 00000000 SSR4 [R/W] 00001000 SIDR4 [R]/ SODR4 [W] XXXXXXXX DRCL1 --------*3 DRCL2 --------*3 SMR2 [R/W] 00--0-0- SCR3 [R/W] 00000100 DRCL3 --------*3 SMR3 [R/W] 00--0-0- SCR4 [R/W] 00000100 SMR4 [R/W] 00--0-0- 000088H -------- -------- 00008CH -------- 0000A0H -------PWCCL[R/W] PWCCH[R/W] 0000--00 00-00000 PWCD[R] XXXXXXXX_XXXXXXXX PWCC2[R/W] Reserved 000----PWCUD[R] XXXXXXXX_XXXXXXXX -------- 0000A4H -------- -------- 0000A8H -------- -------- 000098H 00009CH 0000ACH 0000B0H 0000B4H 0000B8H 0000BCH 524 UART3 UTIMC3 [R/W] U-TIMER 3 0--00001 UTIM4 [R] (UTIMR4 [W]) 00000000 00000000 000094H UART2 UTIMC2 [R/W] U-TIMER 2 0--00001 000084H 000090H UART1 UTIMC1 [R/W] U-TIMER 1 0--00001 SCR2 [R/W] 00000100 DRCL4 --------*3 ブロック UART4 UTIMC4 [R/W] U-TIMER 4 0--00001 Reserved --------------PWC ---------------------- -------- -------- IFN0 [R] IFRN0 [R/W] 00000000 00000000 IBCR0 [R/W] IBSR0 [R] 00000000 00000000 ITMK0 [R/W] 00111111 11111111 IDAR0 [R/W] 00000000 IFCR0 [R/W] IFDR0 [R/W] 00-00000 00000000 ITBA0 [R, R/W] 00000000 00000000 ISMK0 [R/W] ISBA0 [R/W] 01111111 00000000 ICCR0 [R/W] 00011111 Reserved I2C interface ch0 付録 A I/O マップ 表 A-1 I/O マップ (3 / 9) アドレス 0000C0H 0000C4H 0000C8H 0000CCH 0000D0H 0000D4H 0000D8H 0000DCH 0000E0H 0000E4H 0000E8H 0000ECH 0000F0H 0000F4H 0000F8H 0000FCH レジスタ +0 +1 IFN1 [R] IFRN1 [R/W] 00000000 00000000 IBCR1 [R/W] IBSR1 [R] 00000000 00000000 ITMK1 [R/W] 00111111 11111111 IDAR1 [R/W] 00000000 IFN2 [R] IFRN2 [R/W] 00000000 00000000 IBCR2 [R/W] IBSR2 [R] 00000000 00000000 ITMK2 [R/W] 00111111 11111111 IDAR2 [R/W] 00000000 IFN3 [R] IFRN3 [R/W] 00000000 00000000 IBCR3 [R/W] IBSR3 [R] 00000000 00000000 ITMK3 [R/W] 00111111 11111111 IDAR3 [R/W] 00000000 TCDT [R/W] H,W 00000000 00000000 IPCP1 [R] H,W XXXXXXXX XXXXXXXX IPCP3 [R] H,W XXXXXXXX XXXXXXXX 000100H - 000104H ICS23 [R/W]B,H,W +2 IFCR1 [R/W] IFDR1 [R/W] 00-00000 00000000 ITBA1 [R, R/W] 00000000 00000000 ISMK1 [R/W] ISBA1 [R/W] 01111111 00000000 ICCR1 [R/W] 00011111 IFCR2 [R/W] IFDR2 [R/W] 00-00000 00000000 ITBA2 [R, R/W] 00000000 00000000 ISMK2 [R/W] ISBA2 [R/W] 01111111 00000000 ICCR2 [R/W] 00011111 IFCR3 [R/W] IFDR3 [R/W] 00-00000 00000000 ITBA3 [R, R/W] 00000000 00000000 ISMK3 [R/W] ISBA3 [R/W] 01111111 00000000 ICCR3 [R/W] 00011111 - ICS01 [R/W]B,H,W - 00000000 - - 00000000 - 000108H - - - - 00010CH EIRR1 [R/W] 00000000 ENIR1 [R/W] 00000000 - 000110H I2C interface ch1 I2C interface ch2 I2C interface ch3 Reserved TCCS [R/W]B,H,W 16 ビット 00000000 IPCP0 [R] H,W XXXXXXXX XXXXXXXX IPCP2 [R] H,W XXXXXXXX XXXXXXXX - ブロック +3 ELVR1 [R/W] 00000000 00000000 フリーランタイマ 16 ビット インプット キャプチャ Reserved Ext int 000114H ∼ 00011FH 000120H 000124H -------- -------- PTMR0 [R] 11111111 11111111 PDUT0 [W] XXXXXXXX XXXXXXXX PCSR0 [W] XXXXXXXX XXXXXXXX PCNH0 [R/W] PCNL0 [R/W] 00000000 00000000 Reserved PPG0 525 付録 表 A-1 I/O マップ (4 / 9) アドレス 000128H 00012CH 000130H 00134H 000138H 00013CH レジスタ +0 +1 PTMR1 [R] 11111111 11111111 PDUT1 [W] XXXXXXXX XXXXXXXX PTMR2 [R] 11111111 11111111 PDUT2 [W] XXXXXXXX XXXXXXXX PTMR3 [R] 11111111 11111111 PDUT3 [W] XXXXXXXX XXXXXXXX +2 ブロック +3 PCSR1 [W] XXXXXXXX XXXXXXXX PCNH1 [R/W] PCNL1 [R/W] 00000000 00000000 PCSR2 [W] XXXXXXXX XXXXXXXX PCNH2 [R/W] PCNL2 [R/W] 00000000 00000000 PCSR3[W] XXXXXXXX XXXXXXXX PCNH3 [R/W] PCNL3 [R/W] 00000000 00000000 PPG1 PPG2 PPG3 000140H -------- ∼ 0001FCH Reserved DMACA0 [R/W] 00000000 0000XXXX XXXXXXXX XXXXXXXX DMACB0 [R/W] 00000000 00000000 00000000 00000000 DMACA1 [R/W] 00000000 0000XXXX XXXXXXXX XXXXXXXX DMACB1 [R/W] 00000000 00000000 00000000 00000000 DMACA2 [R/W] 00000000 0000XXXX XXXXXXXX XXXXXXXX DMACB2 [R/W] 00000000 00000000 00000000 00000000 DMACA3 [R/W] 00000000 0000XXXX XXXXXXXX XXXXXXXX DMACB3 [R/W] 00000000 00000000 00000000 00000000 DMACA4 [R/W] 00000000 0000XXXX XXXXXXXX XXXXXXXX DMACB4 [R/W] 00000000 00000000 00000000 00000000 -------- 000200H 000204H 000208H 00020CH 000210H 000214H 000218H 00021CH 000220H 000224H 000228H DMAC 00022CH -------- ∼ 00023CH Reserved DMACR [R/W] 0XX00000 XXXXXXXX XXXXXXXX XXXXXXXX 000240H DMAC 000244H -------- ∼ 0002FCH 000304H 526 - - Reserved - ISIZE[R/W]B,H,W ------10 命令キャッシュ 付録 A I/O マップ 表 A-1 I/O マップ (5 / 9) アドレス レジスタ +0 +1 +2 +3 ∼ 0003E0H - - - - 0003E4H - - - - - - ブロック 000308H ICHCR[R/W]B,H,W 0-000000 Reserved 命令キャッシュ 0003E8H ∼ 0003ECH 0003F0H 0003F4H 0003F8H 0003FCH 000400H 000404H 000408H 00040CH 000410H 000414H 000418H 00041CH - BSD0 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX BSD1 [R/W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX BSDC [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX BSRR [R] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX DDR2 [R/W] DDR3 [R/W] 00000000 ----0000 DDR4 [R/W] DDR5 [R/W] DDR6 [R/W] DDR7 [R/W] 00000000 00000000 --000000 --000000 DDR8 [R/W] DDR9 [R/W] DDRA [R/W] DDRB [R/W] ---00000 00000000 00000000 00000000 DDRC [R/W] DDRD [R/W] DDRE [R/W] DDRF [R/W] 00000000 --000000 ------00 00000000 PFR0 [R/W] PFR1 [R/W] PFR2 [R/W] PFR3 [R/W] 0--00000 00000000 000---00 ----0000 PFR4 [R/W] PFR5 [R/W] PFR6 [R/W] PFR7 [R/W] -----000 11111111 00000000 -----000 PFR9 [R/W] PFRB [R/W] 11111111 00011-0PFRC [R/W] PFRD [R/W] PCRA [R/W] PCRB [R/W] 1111--11 ---101-00000000 00000000 Reserved Bit Search Module R-bus Port Direction Register R-bus Port Function Register 000420H ∼ 00043CH -------- Reserved 527 付録 表 A-1 I/O マップ (6 / 9) アドレス 000440H 000444H 000448H 00044CH 000450H 000454H 000458H 00045CH 000460H 000464H 000468H 00046CH レジスタ +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 ICR36 [R/W] ---11111 ICR40 [R/W] ---11111 ICR44 [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 ICR33 [R/W] ---11111 ICR37 [R/W] ---11111 ICR41 [R/W] ---11111 ICR45 [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 ICR34 [R/W] ---11111 ICR38 [R/W] ---11111 ICR42 [R/W] ---11111 ICR46 [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 ICR35 [R/W] ---11111 ICR39 [R/W] ---11111 ICR43 [R/W] ---11111 ICR47 [R/W] ---11111 ブロック Interrupt Control unit 000470H -------- ∼ 00047CH RSRR [R/W] 10000000 *2 CLKR [R/W] 00000000 *1 STCR [R/W] 00110011 *2 WPR --------*3 000488H - - 00048CH - 000490H - 000480H 000484H Reserved CTBR [W] XXXXXXXX - TBCR [R/W] 00XXXX00 *1 DIVR0 [R/W] 00000011 *1 OSCCR [R/W] XXXXXXX0 - - Reserved - - - Reserved DIVR1[R/W] 00000000 *1 Clock Control unit - 000494H ∼ 0005FCH -------- Reserved -------- Reserved 000600H ∼ 00063FH 528 付録 A I/O マップ 表 A-1 I/O マップ (7 / 9) アドレス 000640H 000644H 000648H 00064CH 000650H 000654H 000658H 00065CH 000660H 000664H 000668H 00066CH 000670H 000674H 000678H 00067CH 000680H 000684H レジスタ +0 +1 +2 ASR0 [R/W] 00000000 00000000 *1 ASR1 [R/W] XXXXXXXX XXXXXXXX *1 ASR2 [R/W] XXXXXXXX XXXXXXXX *1 ASR3 [R/W] XXXXXXXX XXXXXXXX *1 ASR4 [R/W] XXXXXXXX XXXXXXXX *1 ASR5 [R/W] XXXXXXXX XXXXXXXX *1 ASR6 [R/W] XXXXXXXX XXXXXXXX *1 ASR7 [R/W] XXXXXXXX XXXXXXXX *1 AWR0 [R/W] 01111111 11111111 *1 AWR2 [R/W] XXXXXXXX XXXXXXXX *1 AWR4 [R/W] XXXXXXXX XXXXXXXX *1 AWR6 [R/W] XXXXXXXX XXXXXXXX *1 +3 ACR0 [R/W] 1111XX00 00000000 *1 ACR1 [R/W] XXXXXXXX XXXXXXXX *1 ACR2 [R/W] XXXXXXXX XXXXXXXX *1 ACR3 [R/W] XXXXXXXX XXXXXXXX *1 ACR4 [R/W] XXXXXXXX XXXXXXXX *1 ACR5 [R/W] XXXXXXXX XXXXXXXX *1 ACR6 [R/W] XXXXXXXX XXXXXXXX *1 ACR7 [R/W] XXXXXXXX XXXXXXXX *1 AWR1 [R/W] XXXXXXXX XXXXXXXX *1 AWR3 [R/W] XXXXXXXX XXXXXXXX *1 AWR5 [R/W] XXXXXXXX XXXXXXXX *1 AWR7 [R/W] XXXXXXXX XXXXXXXX *1 MCRA[R/W]B,H,W MCRB[R/W]B,H,W XXXXXXXX -------IOWR0[R/W] IOWR1[R/W] IOWR2[R/W] XXXXXXXX XXXXXXXX XXXXXXXX -------CSER [R/W] CHER [R/W] 00000001 11111111 RCR[R/W]B,H,W 00XXXXXX XXXX0XXX XXXXXXXX ブロック T-unit - - TCR[R/W] 00000000 - 000688H -------- ∼ 0007F8H 0007FCH - MODR [W] XXXXXXXX Reserved - - 000800H ∼ 000AFCH -------- Reserved 529 付録 表 A-1 I/O マップ (8 / 9) アドレス 000B00H 000B04H 000B08H 000B0CH 000B10H レジスタ +0 +1 +2 ESTS0 [R/W] ESTS1 [R/W] X0000000 XXXXXXXX ECTL0 [R/W] ECTL1 [R/W] 0X000000 00000000 ECNT0 [W] ECNT1 [W] XXXXXXXX XXXXXXXX EWP1 [R] 00000000 00000000 EDTR0 [W] XXXXXXXX XXXXXXXX ブロック +3 ESTS2 [R] 1XXXXXXX ECTL2 [W] 000X0000 EUSA [W] XXX00000 -------ECTL3 [R/W] 00X00X11 EDTC [W] 0000XXXX -------EDTR1 [W] XXXXXXXX XXXXXXXX 000B14H ∼ 000B1CH 000B20H 000B24H 000B28H 000B2CH 000B30H 000B34H 000B38H 000B3CH 000B40H 000B44H 000B48H 000B4CH 000B50H 000B54H 000B58H 000B5CH 000B60H 000B64H 530 -------EIA0 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EIA1 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EIA2 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EIA3 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EIA4 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EIA5 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EIA6 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EIA7 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EDTA [R/W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EDTM [R/W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EOA0 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EOA1 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EPCR [R/W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EPSR [R/W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EIAM0 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EIAM1 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EOAM0/EODM0 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EOAM1/EODM1 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX DSU 付録 A I/O マップ 表 A-1 I/O マップ (9 / 9) アドレス 000B68H 000B6CH レジスタ +0 +1 +2 ブロック +3 EOD0 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX EOD1 [W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX DSU 000B70H ∼ 000FFCH 001000H 001004H 001008H 00100CH 001010H 001014H 001018H 00101CH 001020H 001024H -------DMASA0 [R/W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX DMADA0 [R/W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX DMASA1 [R/W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX DMADA1 [R/W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX DMASA2 [R/W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX DMADA2 [R/W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX DMASA3 [R/W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX DMADA3 [R/W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX DMASA4 [R/W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX DMADA4 [R/W] XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX Reserved DMAC 001028H -------- Reserved ∼ 0070FFH -------- Reserved 007100H -------- 007104H -------- ∼ 006FFCH 007000H Reserved *1: リセットレベルで初期値が異なるレジスタです。表示は , INIT レベルのものです。 *2: リセットレベルで初期値が異なるレジスタです。表示は , INIT 端子による INIT レベルのもので す。 *3: 予約レジスタです。アクセス禁止です。 531 付録 表 A-2 I/O マップ (1 / 2) レジスタ アドレス ブロック +0 +1 +2 +3 00060000H FIFO0o [R] XXXXXXXX XXXXXXXX FIFO0i [W] XXXXXXXX XXXXXXXX 00060004H FIFO1 [R] XXXXXXXX XXXXXXXX FIFO2 [W] XXXXXXXX XXXXXXXX 00060008H FIFO3 [R] XXXXXXXX XXXXXXXX - 0006000CH -------- ∼ 0006001FH 00060020H - CONT1 [R/W] 000XX0XX XXX00000 00060024H CONT2 [R/W] XXXXXXXX XXX00000 CONT3 [R/W] XXXXXXXX XXX00000 00060028H CONT4 [R/W] XXXXXXXX XXX00000 CONT5 [R/W] XXXXXXXX XXXX00XX 0006002CH CONT6 [R/W] XXXXXXXX XXXX00XX CONT7 [R/W] XXXXXXXX XXX00000 00060030H CONT8 [R/W] XXXXXXXX XXX00000 CONT9 [R/W] 0XX0XXXX 0XXX0000 00060034H CONT10 [R/W] 00000000 X00000XX TTSIZE [R/W] 00010001 00010001 00060038H TRSIZE [R/W] 00010001 00010001 - 0006003CH 00060040H 532 -------RSIZE0 [R] XXXXXXXX XXXX0000 - USB Function 付録 A I/O マップ 表 A-2 I/O マップ (2 / 2) レジスタ アドレス ブロック +0 00060044H +1 +2 RSIZE1 [R] XXXXXXXX X0000000 +3 - 00060048H -------- ∼ 0006005FH 00060060H ST1 [R/W] XXXXXX00 00000000 - 00060064H USB Function -------- 00060068H ST2 [R] XXXXXXXX XXX00000 ST3 [R/W] XXXXXXXX XXX00000 0006006CH ST4 [R/W] XXXXX000 00000000 ST5 [R/W] XXXX0XXX XX000000 00060070H -------- ∼ 0006007FH 00060080H -------- ∼ 0006FFFBH 0006FFFCH - - Reserved RESET -0------ - USB リセット 533 付録 付録 B 割込みベクタ 付表 B-1 に , 割込みベクタテーブルを示します。割込みベクタテーブルには , MB91305 の割込み要因と割込みベクタ / 割込み制御レジスタの割当てが記載されて います。 ■ 割込みベクタ 表 B-1 割込みベクタ (1 / 2) 割込み要因 リセット モードベクタ システム予約 システム予約 システム予約 システム予約 システム予約 コプロセッサ不在トラップ コプロセッサエラートラップ INTE 命令 命令ブレーク例外 オペランドブレークトラップ ステップトレーストラップ NMI 要求 (tool) 未定義命令例外 NMI 要求 外部割込み 0 外部割込み 1 外部割込み 2 外部割込み 3 外部割込み 4 (USB ファンクション ) 外部割込み 5 外部割込み 6 外部割込み 7 リロードタイマ 0 リロードタイマ 1 リロードタイマ 2 UART0 ( 受信完了 ) UART1 ( 受信完了 ) UART2 ( 受信完了 ) UART0 ( 送信完了 ) UART1 ( 送信完了 ) UART2 ( 送信完了 ) DMAC0 ( 終了 , エラー ) DMAC1 ( 終了 , エラー ) DMAC2 ( 終了 , エラー ) DMAC3 ( 終了 , エラー ) DMAC4 ( 終了 , エラー ) 534 割込み番号 10 進 16 進 0 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 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 割込み レベル オフセット 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 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 RN − − − − − − − − − − − − − − − − − − − − − − − − 8 9 10 0 1 2 3 4 5 − − − − − 付録 B 割込みベクタ 表 B-1 割込みベクタ (2 / 2) 割込み要因 A/D PPG0 PPG1 PPG2 PPG3 PWC 外部割込み 8/U-TIMER0 外部割込み 9/U-TIMER1 外部割込み 10/U-TIMER2 タイムベースオーバフロー / U-TIMER3 外部割込み 11/U-TIMER4 16 ビットフリーランタイマ I2C ch0 I2C ch1 I2C ch2 I2C ch3 UART3 ( 受信完了 ) UART4 ( 受信完了 ) UART3 ( 送信完了 ) UART4 ( 送信完了 ) 外部割込み 12/ インプットキャプチャ 0 外部割込み 13/ インプットキャプチャ 1 外部割込み 14/ インプットキャプチャ 2 外部割込み 15/ インプットキャプチャ 3 システム予約 遅延割込み要因ビット システム予約 (REALOS にて使用 ) システム予約 (REALOS にて使用 ) システム予約 システム予約 システム予約 システム予約 システム予約 システム予約 システム予約 システム予約 システム予約 システム予約 システム予約 システム予約 システム予約 システム予約 INT 命令で使用 割込み番号 10 進 16 進 割込み レベル オフセット TBR デフォルト のアドレス RN 38 39 40 41 42 43 44 45 46 26 27 28 29 2A 2B 2C 2D 2E ICR22 ICR23 ICR24 ICR25 ICR26 ICR27 ICR28 ICR29 ICR30 364H 360H 35CH 358H 354H 350H 34CH 348H 344H 000FFF64H 000FFF60H 000FFF5CH 000FFF58H 000FFF54H 000FFF50H 000FFF4CH 000FFF48H 000FFF44H − − − − − − − − − 47 2F ICR31 340H 000FFF40H − 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 ICR32 ICR33 ICR34 ICR35 ICR36 ICR37 ICR38 ICR39 ICR40 ICR41 ICR42 ICR43 ICR44 ICR45 ICR46 ICR47 33CH 338H 334H 330H 32CH 328H 324H 320H 31CH 318H 314H 310H 30CH 308H 304H 300H 2FCH 2F8H 2F4H 2F0H 2ECH 2E8H 2E4H 2E0H 2DCH 2D8H 2D4H 2D0H 2CCH 2C8H 2C4H 2C0H 2BCH 000FFF3CH 000FFF38H 000FFF34H 000FFF30H 000FFF2CH 000FFF28H 000FFF24H 000FFF20H 000FFF1CH 000FFF18H 000FFF14H 000FFF10H 000FFF0CH 000FFF08H 000FFF04H 000FFF00H 000FFEFCH 000FFEF8H 000FFEF4H 000FFEF0H 000FFEECH 000FFEE8H 000FFEE4H 000FFEE0H 000FFEDCH 000FFED8H 000FFED4H 000FFED0H 000FFECCH 000FFEC8H 000FFEC4H 000FFEC0H 000FFEBCH − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − ∼ ∼ − ∼ ∼ − 255 FF 000H 000FFC00H − − − − − − − − − − − − − − − − 535 付録 付録 C USB 機能 USB 機能を使用する際の各種設定や注意事項を説明します。 ■ USB 機能を使用するには MB91305 には , USB 機能を使用する場合と使用しない場合で 2 つのモードがあります。 モードの切換えは , 外部端子 (MD3, MD2, MD1, MD0) の 4 本の設定で切り換わります。 DMA ch1,ch2 MD3 ∼ MD0 端子 USB 機能 0000B 0010B 使用可能 使用禁止 USB で使用 制約なし 自励発振 動作クロック 48MHz 固定 原発振÷ 3 × 4 逓倍 16MHz 固定 原発振× 4 逓倍 外部割込み INT4 USB 専用 外部割込み モード端子は, 動作中に切り換えることはできませんので, 固定して使用してください。 MB91305 は 8 つの CS ( チップセレクト ) 領域を設定することが可能であり , MB91305 では , 以下のように割り付けられています。 • CS0, CS1 :ユーザ領域 • CS2 :MB91305 管理領域 (USB 未使用時は使用禁止領域になります ) • CS3 :使用禁止領域 • CS5 ∼ CS7 :ユーザ領域 ■ USB のチップセレクト領域設定 CS2 領域に割り当てられている MB91305 管理領域とは , MB91305 に接続している USB インタフェースのレジスタや処理領域を示します。 CS2 領域は , それぞれ 64M バイトの空間を割り当てており , USB インタフェースモ ジュールなどのレジスタ設定をする前に , まず MB91305 の ASR(Area Select Register)2, ACR(Area Configuration Register)2, AWR(Area Wait Register)2 を設定し , CS2 領域を定義 してください。 以下に CS2 領域を示します。 CS 領域 CS2 アドレス モジュール バス幅 / RDY 制御 ○ : RDY によるウェイト制御必要 × : 不要 0X00060000H ∼ USB インタフェース 0X0006FFFFH 16 ビットバス幅 × 以下に MB91305 の CS2 領域の ASR, ACR, AWR レジスタの設定例を示します。 <注意事項> AWRxL レジスタの W03=1,W02=0 設定以外は禁止です。 536 付録 C USB 機能 ● ASR (=0006H) ASR2 15 A31 14 A30 12 11 10 ・CS2: "000000000000B" 9 A17 8 A16 ・"0110B" ● ACR (=0420H) 15 ACR2H ASZ3 14 13 ASZ2 ASZ1 12 11 ASZ0 10 9 8 DBW1 DBW0 BST1 BST0 バーストなし :"00B" 64Mバイト設定: "0000B" ・CS2 16ビット:"01B" 7 6 5 4 3 2 1 0 ACR2L SREN PFEN WREN LEND TYP3 TYP2 TYP1 TYP0 書込み ビッグ 許可 エンディアン "0" "1" BRQ/ "0" BGRNTなし "0" ・CS2: "0000B" ● AWR (=2098H) 15 AWR2H W15 14 13 12 11 10 W14 W13 W12 W11 W10 ・CS2 : 自動ウェイト: "0010B" AWR2L 9 8 W09 W08 バーストアクセスのページ内 オートウェイト 自動ウェイト :"0000B" 7 6 5 4 3 2 1 0 W07 W06 W05 W04 W03 W02 W01 W00 リード・ライト 連続のアイドル 挿入 : "10B" ライトリカバリ MCLKO からの サイクル挿入: ディレイ "01B" アドレス からの ディレイ "1"以外禁止 "0"以外禁止 : "00B" ■ USB の割込みについて USB の割込みは , 外部割込みの ch4(INT4) に接続されています。したがって , USB 機能 を使用する場合には外部割込みの ch4 は INT4 として機能しません。 付図 C-1 USB の割込み USB USB割込み信号 割込みコントロール 外部割込み入力 (INT4) MD3,MD2,MD1,MD0 = 0000B 537 付録 ■ USB の DMA 転送について USB の DMA 転送リクエストは , DMA の ch1, ch2 と接続されています。 USB の DMA 転送機能を使用する場合は , DMA 外部端子機能 * は使用できませんので PFR レジスタを以下のように設定しておく必要があります。 PFR4(414H) : DMAE2=0, DMAE1=0 PFR6(416H) : AK12, AK11, AK10=000B PFR7(417H) : AK22, AK21, AK20=000B * : DMA 外部端子機能 (DREQ1,DACK1,DEOP1,DREQ2,DACK2,DEOP2) 付図 C-2 USB の DMA 転送 DMA USB ch1 (DREQ) OUT ch2 (DREQ) IN 外部DMA要求(DREQ1) 外部DMA要求(DREQ2) MD3, MD2, MD1, MD0 = 0000B ■ USB のリセット USB の DMA 転送リクエストは , DMA の ch1, ch2 と接続されています。 0X0006FFFEH 7 - 6 USBRST 0 5 - 4 - 3 - 2 - 1 - 0 - 初期値 1: USB にリセットを行います。 0: USB のリセットを解除します。 "1" → "0" に書き換えたときから 原発振の 19 クロック後に USB のリセットが解除され ます。 538 付録 D プログラムローダモード 付録 D プログラムローダモード 本モードは , 内蔵 ROM に格納されたプログラムローダが , UART ch0 を用いて外部 とシリアル通信を行い , 外部からプログラムを内蔵 RAM (64K バイト ) へロードし て , ロードしたプログラムを起動するモードです。 シリアル通信は , INIT による初期化時の MD3, MD2, MD1, MD0, PD5, PD4, PD3 の 状態により , 非同期通信か同期通信かを選択可能です。ただし , 非同期通信の場合は 原発振周波数 48MHz, 49.5MHz, 16MHz, または 16.5MHz の分周によってボーレート 9600bps で動作しますので , 原発振周波数と端子設定は必ず「■ 設定方法」を参考 にしてご使用ください。 ■ 設定方法 INIT による初期化時に端子 MD3, MD2, MD1, MD0, PD5, PD4, PD3 の状態を下記表のと おりに設定すると , 内蔵 ROM に格納されたプログラムローダが起動します。 プログラムローダは , MD3, MD2, MD1, MD0, PD4 で決定されます。 外部とのシリアル通信に用いる UART ch0 の非同期通信か同期通信かは PD5 で決定さ れます。 原発振の違いは , MD3, MD2, MD1, MD0, PD3 で決定されます。 ● 原発振周波数 48MHz のときの端子設定 仕 様 MD3 MD2 MD1 端子名 MD0 PD5 PD4 非同期通信 0 1 0 0 0 0 0 同期通信 0 1 0 0 1 0 X PD3 ● 原発振周波数 49.5MHz のときの端子設定 仕 様 MD3 MD2 MD1 端子名 MD0 PD5 PD4 PD3 非同期通信 0 1 0 0 0 0 1 同期通信 0 1 0 0 1 0 X PD3 ● 原発振周波数 16MHz のときの端子設定 仕 様 MD3 MD2 MD1 端子名 MD0 PD5 PD4 非同期通信 0 1 1 0 0 0 0 同期通信 0 1 1 0 1 0 X 539 付録 ● 原発振周波数 16.5MHz のときの端子設定 仕 様 MD3 MD2 MD1 端子名 MD0 PD5 PD4 PD3 非同期通信 0 1 1 0 0 0 1 同期通信 0 1 1 0 1 0 X ■ 詳細 • 非同期通信−原発振周波数 (48MHz, 49.5MHz, 16MHz, または 16.5MHz) UART ch0 の非同期モード ( モード 0) でシリアル通信を行います。 原発振周波数を分周してボーレート 9600bps になります。 シリアルの設定はデータ長 : 8 ビット , ストップビット長 : 1 ビット , パリティなし , LSB ファーストです。 • 同期通信 UART ch0 の同期モード ( モード 2) でシリアル通信を行います。ボーレートの選択 は , クロック入力 (SCK0) により自由に設定できます ( クロック入力 SCK0 の周波数 がそのままボーレート )。 クロック入力の最大周波数は , 周辺系動作クロックの周波数の 1/8 以下でかつ 2MHz 以下です。 なお , 周辺系動作クロックの周波数は , 下記の式で求められます。 周辺系動作クロック周波数=マシンクロック周波数の 1/2 シリアル設定はデータ長 : 8 ビット , パリティなし , LSB ファーストです。 いずれのモードも • コマンドデータ (00H) • ダウンロード先 RAM アドレス 4 バイト (00030000H ∼ 0003FEFFH) ( 使用禁止 : 0003FF00H ∼ 0003FFFFH) • ダウンロードバイト数 4 バイト ( 最大 000007FFH) の 3 つのダウンロード情報データを FR 側へ順に上位バイトから 1 バイトずつ与え , さ らにこれらの SUM チェックデータ ( データをすべて加えて下位 8 ビットを取り出す ) を与えることにより , RAM へのダウンロードルーチンに入ります。次に , 内蔵 RAM に ダウンロードしたいデータを同じく FR 側へ順に上位バイトから 1 バイトずつ与え , SUM チェックデータを与えます。転送終了後 , RAM にジャンプしダウンロードされた プログラムが実行されます。 540 付録 D プログラムローダモード 例 ) RAM アドレス "00030000H" へ "0000005BH" バイトのデータを転送するとき PC など FR ① 00H → ② 00H → ③ 03H → ④ 00H → ⑤ 00H → ⑥ 00H → ダウンロードバイト数 ⑦ 00H → (91 バイト ) ⑧ 00H → ⑨ 5BH → SUM チェックデータ ⑩ 5EH → FR からのアクノリッジ ⑪ データ送信 ⑫ コマンドデータ ダウンロード先アドレス ← DATA 01H → SUM チェックデータ * ⑬ → *: 送信データをすべて加えて下位 8 ビットを取り出します。 PC など FR ① C0H → ② 00H → ③ 00H → ④ 00H → ⑤ 00H → ⑥ 00H → ⑦ 00H → ⑧ 00H → ⑨ 00H → SUM チェックデータ ⑩ C0H → RAM へジャンプ ⑪ コマンドデータ ダミーデータ ダミーデータ 詳細動作については , 次項以降の専用 ROM 内プログラムのフローチャートを参照して ください。 なお , UART の詳細動作 , 全端子状態などについては , 「第 13 章 UART」, または表 E1 の「イニシャライズ時 (INIT)」を参照してください。 541 付録 • メインプログラム フローチャート 付図 D-1 メインプログラム フローチャート 開始 NO PD5 = "L" ? 同期通信 YES 非同期通信 *: UART0設定について UART0設定について 非同期通信 同期 非同期のとき ・非同期モード(内部タイマ使用) ・ボーレート9600bps ・データ長 8ビット ・ストップビット 1ビット ・パリティなし 動作周波数設定 UART1設定* 同期のとき ・同期モード(外部クロック使用) ・データ長 8ビット ・パリティなし メイン コマンド受信 00H 受信コマンド① = ? (ダウンロード) ダウンロード 00H/C0H以外 C0H RAMへジャンプ コマンドエラ- FR 側に発行されるコマンドおよび FR 側からの応答信号の一覧を示します。 FR コマンド コマンド 受信応答 542 PC など ダウンロード ← 00H リセット ← 18H RAM ジャンプ ← C0H コマンド異常 ( 受信コマンド &F0H)|04H → SUM チェック異常 ( 受信コマンド (00H) & F0H) |04H → RESET コマンド受信 11H → DOWN LOAD コマンド受信 01H → 付録 D プログラムローダモード • サブルーチン " コマンド受信 " フローチャート ( 非同期モードのとき ) 付図 D-2 サブルーチン " コマンド受信 " フローチャート ( 非同期モードのとき ) コマンド受信 1バイト受信 (コマンドデータ) No 受信データあり? Yes 1バイトデータ受信①(コマンドデータ) Yes 受信データ①=18H ? RESET 8バイト受信(ダウンロード情報データ) No ダウンロード先アドレス4バイト + ダウンロードバイト数4バイト No 受信データあり? Yes 1バイトデータ受信②~⑨ (ダウンロード情報データ) ・受信データ格納アドレスインクリメント ・受信回数カウント 受信回数=8回 ? No Yes 1バイト受信 (SUMチェックデータ) 受信データあり? No Yes 1バイトデータ受信⑩(SUMチェックデータ) ①~⑨を加えて下位8ビット取出し: ⑩=α α?(SUMチェック) α No SUMチェックエラー Yes EXIT 543 付録 • サブルーチン "DOWN LOAD" フローチャート ( 非同期モードのとき ) 付図 D-3 サブルーチン "DOWN LOAD" フローチャート ( 非同期モードのとき ) ダウンロード 1バイト送信 (コマンド正常受信応答) 1バイト送信 (01H) RAMにダウンロード 受信データあり? No Yes 1バイトデータ受信 ・受信データ格納アドレスインクリメント ・受信回数カウント No 受信回数=ダウンロードバイト数? Yes 1バイト受信 (SUMチェックデータ) 受信データあり? No Yes 1バイトデータ受信⑬(SUMチェックデータ) 受信データすべてを加えて下位8ビット取出し: β β ?(SUMチェック) ⑬=β Yes EXIT 544 No SUMチェックエラー 付録 D プログラムローダモード • サブルーチン " コマンドエラー " フローチャート ( 非同期モードのとき ) 付図 D-4 サブルーチン " コマンドエラー " フローチャート ( 非同期モードのとき ) 1バイト送信 (コマンド異常受信応答) コマンドエラー 送信データ作成 ・受信コマンドデータ取出し ・{(受信コマンドデータ)&(F0H)}|(04H) 1バイト送信 MAIN • サブルーチン "SUM チェックエラー " フローチャート ( 非同期モードのとき ) 付図 D-5 サブルーチン "SUM チェックエラー " フローチャート ( 非同期モードのとき ) 1バイト送信 (SUMチェック異常応答) SUMチェックエラ- 送信データ作成 ・受信コマンドデータ取出し ・{(受信コマンドデータ)&(F0H)}|(02H) 1バイト送信 MAIN • サブルーチン "RESET" フローチャート ( 非同期モードのとき ) 付図 D-6 サブルーチン "RESET" フローチャート ( 非同期モードのとき ) 1バイト送信 (RESETコマンド受信応答) RESET 1バイト送信(11H) MAIN 545 付録 • サブルーチン " コマンド受信 " フローチャート ( 同期モードのとき ) 付図 D-7 サブルーチン " コマンド受信 " フローチャート ( 同期モードのとき ) コマンド受信 1バイト送信(ダミー)… 00H 1バイト受信 (コマンドデータ) No 受信データあり? Yes 1バイトデータ受信①(コマンドデータ) 受信データ①=18H ? Yes RESET No 1バイト送信(ダミー)… 00H 8バイト受信(ダウンロード情報データ) ダウンロード先アドレス4バイト + ダウンロードバイト数4バイト 受信データあり? No Yes 1バイト送信(ダミー)… 00H 1バイトデータ受信②~⑨(ダウンロード情報データ) ・受信データ格納アドレスインクリメント ・受信回数カウント 受信回数=8回 ? 1バイト受信 (SUMチェックデータ) No Yes 受信データあり? No Yes 1バイトデータ受信⑩(SUMチェックデータ) ①~⑨を加えて下位8ビット取出し: α ?(SUMチェック) ⑩=α Yes EXIT 546 α No SUMチェックエラー 付録 D プログラムローダモード • サブルーチン "DOWN LOAD" フローチャート ( 同期モードのとき ) 付図 D-8 サブルーチン "DOWN LOAD" フローチャート ( 同期モードのとき ) DOWN LOAD 1バイト送信 (コマンド正常受信応答) 1バイト送信 (01H) 受信データあり? No Yes ダミー受信 DOWNLOAD 1バイト送信(ダミー)… 00H No 受信データあり? Yes RAMにダウンロード 1バイトデータ受信 ・受信データ格納アドレスインクリメント ・受信回数カウント No 受信回数=ダウンロードバイト数? Yes 1バイト送信(ダミー)… 00H 1バイト受信 (SUMチェックデータ) 受信データあり? No Yes ・1バイト受信データ⑬受信 ・ 受信データすべてを加えて下位8ビット取出し: β ⑬=β β ?(SUMチェック) No SUMチェックエラー Yes EXIT 547 付録 • サブルーチン " コマンドエラー " フローチャート ( 同期モードのとき ) 付図 D-9 サブルーチン " コマンドエラー " フローチャート ( 同期モードのとき ) 1バイト送信 (コマンド異常受信応答) コマンドエラー 送信データ作成 ・受信コマンドデータ取出し ・{(受信コマンドデータ)&(F0H)}|(04H) 1バイト送信 受信データあり? No Yes ダミー受信 メイン • サブルーチン "SUM チェックエラー " フローチャート ( 同期モードのとき ) 付図 D-10 サブルーチン "SUM チェックエラー " フローチャート ( 同期モードのとき ) 1バイト送信 (SUMチェック異常応答) SUMチェックエラ- 送信データ作成 ・受信コマンドデータ取出し ・{(受信コマンドデータ)&(F0H)}|(02H) 1バイト送信 受信データあり? Yes ダミー受信 メイン 548 No 付録 D プログラムローダモード • サブルーチン "RESET" フローチャート ( 同期モードのとき ) 付図 D-11 サブルーチン "RESET" フローチャート ( 同期モードのとき ) 1バイト送信 (RESETコマンド受信応答) RESET 1バイト送信(11H) 受信データあり? No Yes ダミー受信 メイン ■ メモリマップ 本ローダプログラムは , 内 ROM 外バスモードで実行され , 実行後のメモリマップは , 下記のようになります。プログラムを配置できるのは下記の RAM 領域となります。外 部領域以外へアクセスする場合は , ダウンロードされたプログラムにて , 必要なレジス タ設定を行ってください。 付図 D-12 メモリマップ 000FFFFFH 内蔵ROM 2Kバイト 000FF800H データ用RAM 0003FFFFH RAM領域 64Kバイト 00030000H 0003FF00H"~"0003FFFF 0003FFFFH" 使用禁止領域: "0003FF00 この領域はプログラムローダ プログラムで使用する領域です。 00000000H 549 付録 ■ ロードプログラムを利用して , フラッシュメモリへの書込みを行う例 付図 D-13 に , ロード (RAM に展開 ) されたプログラムにて ,「CS0 へ接続されたフラッ シュメモリを書き込む」場合の接続例を示します。 フラッシュ全体をアクセスするためには , 内蔵リソースや RAM などの内部領域とオー バラップしない領域に フラッシュメモリを配置する必要があります。本例では, CS0領 域に接続された 1M バイトの フラッシュメモリを "0x10 0000H" ∼ "0x1F FFFFH" 番地と してアクセスすることを想定しています。ただし , FR ファミリでは , リセットベクタ は "0xF FFFCH" 番地 , モードベクタは "0xF FFF8H" 番地に固定されており , 書き込まれ たフラッシュ内のプログラムを正常に実行させるためには , この領域をカバーしてお く必要があります。これは , 1M バイトのフラッシュの場合であれば , A20 より上位の アドレス信号はフラッシュへは接続されませんので , CS0 のアドレスレンジ設定を "0x0-0x1F FFFFH" 番 地 と す る こ と で , "0x0-0xF FFFFH" 番 地 と "0x10 0000H" ∼ "0x1FFFFFH" 番地をミラー領域としてアクセスすることで対応できます。 なお , フラッシュへ書き込まれたプログラムを実行する場合は , 外部ベクタ起動 , 外 ROM 外バスモードとなりますので , ローダが格納された内蔵 ROM 領域は意識する必 要はありません ( 付図 D-14 を参照 )。 • オフセットアドレスを付加したメモリアクセス 付図 D-13 1M バイトフラッシュの接続例 MB91305 "000F FFFCH"ߣߒߡ߽"1F FFFCH"ߣߒߡ߽ห৻㗔ၞࠍࠕࠢࠬน⢻ A20 A19 A18 A17 A16 .. A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 D31-D24 D23-D16 CS0x 550 A18 A17 A16 A15 .. A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 1Mࡃࠗ࠻ 1M ࡃࠗ࠻ ࡈ࠶ࠪࡘ ࡔࡕ D15- D7D8 D0 CEx 付録 D プログラムローダモード 付図 D-14 各モードにおけるメモリマップ 内ROM外バスモード(ローダプログラム実行時) 0x00 0000H 内蔵リソース 外ROM外バスモード(通常動作時) 0x00 0000H 内蔵リソース 内蔵RAM 内蔵RAM A* 0x0F FFFFH 0x10 0000H 0x0F FFFFH 外部フラッシュ への書込み 0x1F FFFFH B* 0x1F FFFFH *: Aの領域でプログラムを実行させる場合は, コンパイラの「ショートアドレス最適化」が使用で きますが, 内蔵メモリや, 内蔵リソースにオーバラップしている領域はアクセスできません。 Bの領域で実行させる場合は, コンパイラの「ショートアドレス最適化」は使用できませんが, 内蔵メモリなどのアドレスとオーバラップすることなく, フラッシュ全体をアクセスできます。 ■ リセットのタイミングチャート • リセットタイミング ( 非同期通信 ) 付図 D-15 リセットタイミング ( 非同期通信 ) INIT SIN0 1ms以上 SOUT0 551 付録 • リセットタイミング ( 同期通信 ) 付図 D-16 リセットタイミング ( 同期通信 ) INIT SIN0 SOUT0 SCK0 552 1ms以上 付録 E 端子状態一覧 付録 E 端子状態一覧 表 E-1 および表 E-2 に外部バス 8 ビットモード時 , および外部バス 16 ビットモード 時の端子状態を示します。 ■ 端子状態一覧 ● 外部バス 8 ビットモード時の端子状態 表 E-1 に , 外部バス 8 ビットモード時の端子状態を示します。 表 E-1 外部バス 8 ビットモード時の端子状態 (1 / 2) イニシャライズ時 バス開放時 (BGRNT) ストップ時 (INIT=0) 端子番号 ポート名 指定機能名 スリープ時 機能名 初期値 HIZ=0 HIZ=1 CS 共有あり CS 共有なし 直前状態保持 出力 Hi-Z 入力 "0" 固定 通常動作 通常動作 P: 出力 Hi-Z 入力 "0" 固定 F: 出力 Hi-Z 入力 "0" 固定 出力 Hi-Z 出力 Hi-Z 入力 "0" 固定 通常動作 バス幅 8 ビット時 169 ∼ 176 P20 ∼ P27 D16 ∼ D23 4 ∼ 11 - D24 ∼ D31 直前状態保持 P20 ∼ P27 D24 ∼ D31 15 - RD RD 16 - WR0/DQMUU WR0/DQMUU 17 P30 WR1/DQMUL P30 18 P31 CS0 CS0 19 P32 CS1 CS1 20 P33 CS4 CS4 21 P34 CS5 CS5 22 P35 CS6 CS6 23 P36 CS7 CS7 24 P37 RDY P37 25 P40 BGRNT P40 出力 Hi-Z 入力可能 "H" 出力 出力 Hi-Z 入力可能 "H" 出力 P: 直前状態保持 F: 出力保持または Hi-Z P: 直前状態保持 F: 出力保持または Hi-Z P: 直前状態保持 F: "H" 出力 P: 直前状態保持 F: "H" 出力 直前状態保持 P: 直前状態保持 F: "H" 出力 直前状態保持 P: 直前状態保持 F: "H" 出力 出力 Hi-Z 入力可能 P: 直前状態保持 F: "H" 出力 直前状態保持 P: 直前状態保持 F:BRQ 入力無効 P41 BRQ P41 27 P42 SYSCLK SYSCLK "L" 出力 P: 直前状態保持 F:SYSCLK 出力 P: 直前状態保持 F:"H" または "L" 出力 28 P43 MCLKE MCLKE "H" 出力 P: 直前状態保持 F:"L" 出力 P: 直前状態保持 F: "L" 出力 29 P44 MCLK MCLK "L" 出力 P: 直前状態保持 F:"H" 出力 P: 直前状態保持 F: "H" 出力 P45 SRAS/LBA/AS P45 31 P46 SCAS/BAA P46 32 P47 SWE/WR P47 36 ∼ 51 - A0 ∼ A15 A0 ∼ A15 出力 Hi-Z 入力可能 P: 直前状態保持 F:SWE 出力 "H" 出力 アドレス出力 アドレス出力 P50 ∼ P57 A16 ∼ A23 A16 ∼ A23 "H" 出力 76,77 - AN0,AN1 AN0,AN1 アナログ 入力無効 78 ∼ 85 PF0 ∼ PF7 AN2 ∼ AN9 AN2 ∼ AN9 アナログ 入力無効 P: 直前状態保持 P: 直前状態保持 F: アナログ入力無効 F: アナログ入力無効 P60 出力 Hi-Z 入力可能 P: 直前状態保持 F: 通常動作 99 P60 SIN0 P61 SOUT0 P61 101 P62 SCK0 P62 102 P63 SIN1 P63 103 P64 SOUT1 P64 104 P65 SCK1 P65 105 P70 SIN2 P70 直前状態保持 P: 出力 Hi-Z 入力 "0" 固定 F: 出力 Hi-Z 入力 "0" 固定 P: 直前状態保持 F: アドレス出力 アナログ入力無効 P: 直前状態保持 F: 直前状態保持 通常動作 P: 通常動作 P: 通常動作 F:SREN=0 "H" 出力 F:SREN=0 "H" 出力 SREN=1 出力 Hi-Z SREN=1 出力 Hi-Z P: 直前状態保持 F:RDY 入力 "L" 出力 "L" 出力 BRQ 入力 BRQ 入力 P: 通常動作 F:CLK 出力 P: 通常動作 F:CLK 出力 P: 通常動作 F:"H" 出力 P: 通常動作 F: 出力 Hi-Z P: 通常動作 F:CLK 出力 P: 通常動作 F:"H" 出力 P: 通常動作 F: 直前状態保持 直前状態保持 55 ∼ 62 100 P: 直前状態保持 F: アドレス出力 "H" 出力 P: 直前状態保持 F:RDY 入力 P: 直前状態保持 F:RDY 入力 26 30 P: 直前状態保持 F: "H" 出力 出力 Hi-Z 出力 Hi-Z P: 出力 Hi-Z 入力 "0" 固定 F: 出力 Hi-Z 入力 "0" 固定 アナログ入力無効 P: 出力 Hi-Z 入力 "0" 固定 F: アナログ入力無効 出力 Hi-Z P: 通常動作 F: 出力 Hi-Z 通常動作 P: 通常動作 F: 通常動作 出力 Hi-Z P: 通常動作 F: 出力 Hi-Z 通常動作 P: 通常動作 F: 通常動作 P: ポート設定時 F: 指定機能使用時 553 付録 表 E-1 外部バス 8 ビットモード時の端子状態 (2 / 2) イニシャライズ時 バス開放時 (BGRNT) ストップ時 (INIT=0) 端子番号 ポート名 指定機能名 スリープ時 機能名 HIZ=0 初期値 HIZ=1 CS 共有あり CS 共有なし バス幅 8 ビット時 106 P71 SOUT2 P71 107 P72 SCK2 P72 108 P73 SIN3 P73 109 P74 SOUT3 P74 110 P75 SCK3 P75 111 P80 SIN4 P80 112 P81 SOUT4 P81 113 P82 SCK4 P82 114 P83 SCL0 P83 115 P84 SDA0 P84 116 P90 SCL1 P90 117 P91 SDA1 P91 118 P92 SCL2 P92 119 P93 SDA2 P93 120 P94 SCL3 P94 121 P95 SDA3 P95 122 P96 SCL4 P96 123 P97 SDA4 P97 128 PA0 INT0 PA0 129 PA1 INT1 PA1 130 PA2 INT2 PA2 131 PA3 INT3 PA3 132 PA4 INT4 (USB 未使用時 ) PA4 133 PA5 INT5 PA5 134 PA6 INT6 PA6 135 PA7 INT7 PA7 136 PB0 INT8 PB0 137 PB1 INT9 PB1 138 PB2 INT10/ATRG PB2 139 PB3 INT11/FRCK PB3 140 PB4 INT12/ICU0 PB4 141 PB5 INT13/ICU1 PB5 142 PB6 INT14/ICU2 PB6 143 PB7 INT15/ICU3 PB7 149 PC0 PPG0 PC0 150 PC1 PPG1 PC1 151 PC2 PPG2 PC2 152 PC3 PPG3 PC3 153 PC4 TOUT0/TRG0 PC4 154 PC5 TOUT1 PC5 155 PC6 TOUT2/IOWR PC6 156 PC7 RIN/IORD PC7 157 PD0 DREQ0 PD0 158 PD1 DACK0 PD1 159 PD2 DEOP0 PD2 160 PD3 DREQ1/TIN0 PD3 161 PD4 DACK1/TIN1 PD4 162 PD5 DEOP1/TIN2 PD5 163 PE0 DREQ2/TRG1 PE0 164 PE1 DACK2/TRG2 PE1 165 PE2 DEOP2/TRG3 PE2 P: ポート設定時 F: 指定機能使用時 554 P: 出力 Hi-Z 入力 "0" 固定 F: 出力 Hi-Z 入力 "0" 固定 出力 Hi-Z 入力可能 P: 直前状態保持 F: 通常動作 P: 直前状態保持 F: 直前状態保持 P: 出力 Hi-Z 入力可能 F: 出力 Hi-Z 入力可能 P: 出力 Hi-Z 入力 "0" 固定 F: 出力 Hi-Z 入力 "0" 固定 P: 通常動作 F: 通常動作 P: 通常動作 F: 通常動作 付録 E 端子状態一覧 ● 外部バス 16 ビットモード時の端子状態 表 E-2 に , 外部バス 16 ビットモード時の端子状態を示します。 表 E-2 外部バス 16 ビットモード時の端子状態 (1 / 2) イニシャライズ時 端子番号 ポート名 指定機能名 (INIT=0) 機能名 バス幅 8 ビット時 169 ∼ 176 P20 ∼ P27 D16 ∼ D23 P20 ∼ P27 4 ∼ 11 - D24 ∼ D31 D24 ∼ D31 15 - RD RD 16 - WR0/DQMUU WR0/DQMUU 17 P30 WR1/DQMUL WR1/DQMUL 18 P31 CS0 CS0 19 P32 CS1 CS1 20 P33 CS4 CS4 21 P34 CS5 CS5 22 P35 CS6 CS6 23 P36 CS7 CS7 24 P37 RDY P37 25 P40 BGRNT P40 26 P41 BRQ P41 27 P42 SYSCLK SYSCLK 28 P43 MCLKE MCLKE 29 P44 MCLK MCLK 30 P45 SRAS/LBA/AS P45 31 P46 SCAS/BAA P46 32 P47 SWE/WR P47 ストップ時 HIZ=0 初期値 出力 Hi-Z 入力可能 "H" 出力 P: 直前状態保持 F: 出力保持または Hi-Z P: 直前状態保持 F: "H" 出力 出力 Hi-Z 入力可能 P: 直前状態保持 F: "H" 出力 - A0 ∼ A15 P50 ∼ P57 A16 ∼ A23 A16 ∼ A23 76,77 - AN0,AN1 AN0,AN1 78 ∼ 85 PF0 ∼ PF7 AN2 ∼ AN9 AN2 ∼ AN9 P60 99 P60 SIN0 100 P61 SOUT0 P61 101 P62 SCK0 P62 102 P63 SIN1 P63 103 P64 SOUT1 P64 104 P65 SCK1 P65 105 P70 SIN2 P70 106 P71 SOUT2 P71 107 P72 SCK2 P72 108 P73 SIN3 P73 109 P74 SOUT3 P74 110 P75 SCK3 P75 直前状態保持 P: 直前状態保持 F: "L" 出力 アサート時: "L" 出力 ネゲート時: P: 直前状態保持 CLK 出力 F: "H" 出力 P: 直前状態保持 F: "H" 出力 出力 Hi-Z 入力可能 CS 共有なし 出力 Hi-Z 出力 Hi-Z P: 出力 Hi-Z 入力 "0" 固定 F: 出力 Hi-Z 入力 "0" 固定 P: 直前状態保持 F:RDY 入力 P: 直前状態保持 F:RDY 入力 "L" 出力 "L" 出力 BRQ 入力 BRQ 入力 P: 通常動作 F:CLK 出力 P: 通常動作 F:CLK 出力 P: 通常動作 F:"H" 出力 P: 通常動作 F: 出力 Hi-Z P: 通常動作 F:CLK 出力 P: 通常動作 F:"H" 出力 P: 直前状態保持 アドレス出力 "H" 出力 CS 共有あり P: 通常動作 P: 通常動作 F:SREN=0 "H" 出力 F:SREN=0 "H" 出力 SREN=1 出力 Hi-Z SREN=1 出力 Hi-Z P: 直前状態保持 F: "H" または "L" 出 力 P: 直前状態保持 F: "L" 出力 "H" 出力 A0 ∼ A15 55 ∼ 62 P: 直前状態保持 F: "H" 出力 P: 直前状態保持 F:BRQ 入力無効 アサート時: "L" 出力 P: 直前状態保持 ネゲート時: F:SYSCLK 出力 CLK 出力 HIZ=1 P: 直前状態保持 F: 出力保持または Hi-Z P: 直前状態保持 F:RDY 入力 F: SWE 出力 36 ∼ 51 バス開放時 (BGRNT) スリープ時 P: 直前状態保持 F: アドレス出力 直前状態保持 P: 通常動作 F: 直前状態保持 直前状態保持 アドレス出力 P: 直前状態保持 F: アドレス出力 アナログ入力無効 出力 Hi-Z P: 出力 Hi-Z 入力 "0" 固定 F: 出力 Hi-Z 入力 "0" 固定 アナログ入力無効 アナログ 入力無効 P: 出力 Hi-Z 入力 P: 直前状態保持 P: 直前状態保持 "0" 固定 F: アナログ入力無効 F: アナログ入力無効 F: アナログ入力無効 出力 Hi-Z 入力可能 P: 直前状態保持 F: 通常動作 P: 直前状態保持 F: 直前状態保持 P: 出力 Hi-Z 入力 "0" 固定 F: 出力 Hi-Z 入力 "0" 固定 出力 Hi-Z P: 通常動作 F: 出力 Hi-Z 通常動作 P: 通常動作 F: 通常動作 出力 Hi-Z P: 通常動作 F: 出力 Hi-Z 通常動作 P: 通常動作 F: 通常動作 P: ポート設定時 F: 指定機能使用時 555 付録 表 E-2 外部バス 16 ビットモード時の端子状態 (2 / 2) イニシャライズ時 端子番号 ポート名 指定機能名 (INIT=0) 機能名 バス幅 8 ビット時 111 P80 SIN4 112 P81 SOUT4 P81 113 P82 SCK4 P82 114 P83 SCL0 P83 115 P84 SDA0 P84 116 P90 SCL1 P90 117 P91 SDA1 P91 118 P92 SCL2 P92 119 P93 SDA2 P93 120 P94 SCL3 P94 121 P95 SDA3 P95 122 P96 SCL4 P96 123 P97 SDA4 P97 128 PA0 INT0 PA0 129 PA1 INT1 PA1 130 PA2 INT2 PA2 131 PA3 INT3 PA3 132 PA4 INT4 (USB 未使用時 ) PA4 133 PA5 INT5 PA5 134 PA6 INT6 PA6 135 PA7 INT7 PA7 136 PB0 INT8 PB0 137 PB1 INT9 PB1 138 PB2 INT10/ATRG PB2 139 PB3 INT11/FRCK PB3 140 PB4 INT12/ICU0 PB4 141 PB5 INT13/ICU1 PB5 142 PB6 INT14/ICU2 PB6 143 PB7 INT15/ICU3 PB7 149 PC0 PPG0 PC0 150 PC1 PPG1 PC1 151 PC2 PPG2 PC2 152 PC3 PPG3 PC3 153 PC4 TOUT0/TRG0 PC4 154 PC5 TOUT1 PC5 155 PC6 TOUT2/IOWR PC6 156 PC7 RIN/IORD PC7 157 PD0 DREQ0 PD0 158 PD1 DACK0 PD1 PD2 DEOP0 PD2 160 PD3 DREQ1/TIN0 PD3 161 PD4 DACK1/TIN1 PD4 162 PD5 DEOP1/TIN2 PD5 163 PE0 DREQ2/TRG1 PE0 164 PE1 DACK2/TRG2 PE1 165 PE2 DEOP2/TRG3 PE2 556 バス開放時 (BGRNT) HIZ=0 初期値 HIZ=1 CS 共有あり CS 共有なし P80 159 P: ポート設定時 F: 指定機能使用時 ストップ時 スリープ時 P: 出力 Hi-Z 入力 "0" 固定 F: 出力 Hi-Z 入力 "0" 固定 P: 出力 Hi-Z 入力可能 F: 出力 Hi-Z 入力可能 出力 Hi-Z 入力可能 P: 直前状態保持 F: 通常動作 P: 直前状態保持 F: 直前状態保持 P: 通常動作 F: 通常動作 P: 出力 Hi-Z 入力 "0" 固定 F: 出力 Hi-Z 入力 "0" 固定 P: 通常動作 F: 通常動作 付録 F 命令一覧 付録 F 命令一覧 FR ファミリーの命令一覧表を示します。その前に , 命令一覧を理解するために次の 事項について説明します。 • 命令一覧表の読み方 • アドレッシングモードの記号 • 命令フォーマット ■ 命令一覧表の読み方 ニーモニック 型 OP CYCLE NZVC 動作 ADD Rj, Rj A AG 1 CCCC Ri+Rj → Rj *ADD #s5, Rj C A4 1 CCCC , , , , , , , , Ri+s5 → Ri , , ↓ *3. ↓ *4. ↓ *5. ↓ *6. ↓ *7. , , ↓ *1. ↓ *2. 備考 *1: 命令名が示されています。 - *印は, CPU仕様にはなくアセンブラで命令を拡張または追加した拡張命令です。 *2: オペランドに指定可能なアドレッシングモードを記号で示されています。 - 記号の意味は , 「■アドレッシングモードの記号」を参照してください。 *3: 命令フォーマットが示されています。 *4: 命令コードが 16 進数表示されています。 *5: マシンサイクル数を表しています。 1. メモリアクセスサイクルであり , Ready 機能により延びる可能性があります。 2. メモリアクセスサイクルであり , Ready 機能により延びる可能性があります。た だし , LD 動作の対象となるレジスタを直後の命令が参照する場合にはインタ ロックがかかり , 実行サイクル数が +1 増加します。 3. 直後の命令が , R15, SSP または USP に対し , 読出しまたは書込みを行う命令であ るときまたは命令フォーマット A の命令であるとき , インタロックがかかり , 実 行サイクル数は +1 増加して 2 となります。 4. 直後の命令が MDH/MDL を参照する場合インタロックがかかり , 実行サイクル 数は増加して 2 となります。 1, 2, 3, 4 とも最小は 1 サイクルです。 *6: フラグ変化を表しています。 フラグ変化 フラグの意味 C: 変化する - : 変化しない 0: クリア 1: セット N : ネガティブフラグ Z : ゼロフラグ V : オーバフラグ C: キャリフラグ *7: 命令動作が表記されています。 557 付録 ■ アドレッシングモードの記号 表 F-1 アドレッシングモードの記号説明 記号 意味 Ri レジスタ直接 (R0 ∼ R15, AC, FP, SP) Rj レジスタ直接 (R0 ∼ R15, AC, FP, SP) R13 レジスタ直接 (R13, AC) Ps レジスタ直接 ( プログラムステータスレジスタ ) Rs レジスタ直接 (TBR, RP, SSP, USP, MDH, MDL) CRi レジスタ直接 (CR0 ∼ CR15) CRj レジスタ直接 (CR0 ∼ CR15) #i8 符号なし 8 ビット即値 (-128 ∼ 255) ( 注意事項 ) -128 ∼ -1 は , 128 ∼ 255 として扱います。 #i20 符号なし 20 ビット即値 (-0X80000 ∼ 0XFFFFF) ( 注意事項 ) -0X7FFFF ∼ -1 は , 0X7FFFF ∼ 0XFFFFF として扱います。 #i32 符号なし 32 ビット即値 (-0X80000000 ∼ 0XFFFFFFFF) ( 注意事項 ) -0X80000000 ∼ -1 は , 0X80000000 ∼ 0XFFFFFFFF として扱います。 #s5 符号付き 5 ビット即値 (-16 ∼ 15) #s10 符号付き 10 ビット即値 (-512 ∼ 508, 4 の倍数のみ ) #u4 符号なし 4 ビット即値 (0 ∼ 15) #u5 符号なし 5 ビット即値 (0 ∼ 31) #u8 符号なし 8 ビット即値 (0 ∼ 255) #u10 符号なし 10 ビット即値 (0 ∼ 1020, 4 の倍数のみ ) @dir8 符号なし 8 ビット直接アドレス (0 ∼ 0XFF) @dir9 符号なし 9 ビット直接アドレス (0 ∼ 0X1FE, 2 の倍数のみ ) @dir10 符号なし 10 ビット直接アドレス (0 ∼ 0X3FC, 4 の倍数のみ ) label9 符号付き 9 ビット分岐アドレス (-0X100 ∼ 0XFC, 2 の倍数のみ ) label12 符号付き 12 ビット分岐アドレス (-0X800 ∼ 0X7FC, 2 の倍数のみ ) label20 符号付き 20 ビット分岐アドレス (-0X80000 ∼ 0X7FFFF) label32 符号付き 32 ビット分岐アドレス (-0X80000000 ∼ 0X7FFFFFFF) @Ri レジスタ間接 (R0 ∼ R15, AC, FP, SP) @Rj レジスタ間接 (R0 ∼ R15, AC, FP, SP) @(R13, Rj) レジスタ相対間接 (Rj:R0 ∼ R15, AC, FP, SP) @(R14, disp10) レジスタ相対間接 (disp10:-0X200 ∼ 0X1FC, 4 の倍数のみ ) @(R14, disp9) レジスタ相対間接 (disp9:-0X100 ∼ 0XFE, 2 の倍数のみ ) @(R14, disp8) レジスタ相対間接 (disp8:-0X80 ∼ 0X7F) @(R15, udisp6) レジスタ相対間接 (udisp6:0 ∼ 60, 4 の倍数のみ ) @Ri+ ポストインクリメント付きレジスタ間接 (R0 ∼ R15, AC, FP, SP) @R13+ ポストインクリメント付きレジスタ間接 (R13, AC) @SP+ スタックポップ @-SP スタックプッシュ (reglist) レジスタリスト 558 付録 F 命令一覧 ■ 命令フォーマット 表 F-2 命令フォーマット 型 命令フォーマット MSB A B LSB 16bit OP Rj Ri 8 4 4 OP i8/o8 Ri 4 8 4 OP C u4/m4 Ri 4 4 8 ADD, ADDN, CMP, LSL, LSR, ASR 命令のみ * C" OP s5/u5 Ri 7 5 4 OP D u8/rel8/dir/ reglist 8 OP E 8 F OP 5 8 SUB-OP 4 Ri 4 rel11 11 559 付録 F.1 FR ファミリの命令一覧表 FR ファミリの命令一覧表を下記の命令順に記載します。 ■ FR ファミリの命令一覧表 付表 F.1-1 加減算命令 付表 F.1-2 比較演算命令 付表 F.1-3 論理演算命令 付表 F.1-4 ビット操作命令 付表 F.1-5 乗除算命令 付表 F.1-6 シフト命令 付表 F.1-7 即値セット /16 ビット /32 ビット即値転送命令 付表 F.1-8 メモリロード命令 付表 F.1-9 メモリストア命令 付表 F.1-10 レジスタ間転送命令 付表 F.1-11 通常分岐 ( 遅延なし ) 命令 付表 F.1-12 遅延分岐命令 付表 F.1-13 その他の命令 付表 F.1-14 20 ビット通常分岐マクロ命令 付表 F.1-15 20 ビット遅延分岐マクロ命令 付表 F.1-16 32 ビット通常分岐マクロ命令 付表 F.1-17 32 ビット遅延分岐マクロ命令 付表 F.1-18 ダイレクトアドレッシング命令 付表 F.1-19 リソース命令 付表 F.1-20 コプロセッサ制御命令 560 付録 F 命令一覧 ■ 加減算命令 付表 F.1-1 加減算命令 型 OP CYCLE NZVC ADD Rj, Ri A A6 1 CCCC Ri+Rj → Ri *ADD #s5, Ri C' A4 1 CCCC Ri+s5 → Ri ADD #u4, Ri C A4 1 CCCC Ri+extu(i4) → Ri ゼロ拡張 ADD2 #u4, Ri C A5 1 CCCC Ri+extu(i4) → Ri マイナス拡張 ADDCRj, Ri A A7 1 CCCC Ri+Rj+c → Ri キャリ付き加算 ニーモニック 動作 備考 アセンブラでは上位1ビットを符 号と見る ADDN Rj, Ri A A2 1 ---- Ri+Rj → Ri *ADDN #s5, Ri C' A0 1 ---- Ri+s5 → Ri アセンブラでは上位1ビットを符 号と見る ADDN #u4, Ri C A0 1 ---- Ri+extu(i4) → Ri ゼロ拡張 Ri+extu(i4) → Ri マイナス拡張 ADDN2 #u4, Ri C A1 1 ---- SUB Rj, Ri A AC 1 CCCC RiRj → Ri SUBC Rj, Ri A AD 1 CCCC RiRj c → Ri SUBN Rj, Ri A AE 1 ---- キャリ付き減算 Ri-Rj → Ri ■ 比較演算命令 付表 F.1-2 比較演算命令 型 OP CYCLE NZVC CMP Rj, Ri *CMP #s5, Ri A C' AA A8 1 1 CCCC CCCC Ri-Rj Ri-s5 CMP #u4, Ri C A8 1 CCCC Ri-extu(i4) ゼロ拡張 CMP2 #u4, Ri C A9 1 CCCC Ri-extu(i4) マイナス拡張 型 OP CYCLE NZVC 動作 AND Rj, Ri A 82 1 CC-- Ri &=Rj ワード AND Rj, @Ri A 84 1+2a CC-- (Ri) &=Rj ワード ANDH Rj, @Ri A 85 1+2a CC-- (Ri) &=Rj ハーフワード ニーモニック 動作 備考 アセンブラでは上位1ビットを 符号と見る ■ 論理演算命令 付表 F.1-3 論理演算命令 ニーモニック 備考 ANDB Rj, @Ri A 86 1+2a CC-- (Ri) &=Rj バイト OR Rj, Ri A 92 1 CC-- Ri | =Rj ワード OR Rj, @Ri A 94 1+2a CC-- (Ri) | =Rj ワード ORH Rj, @Ri A 95 1+2a CC-- (Ri) | =Rj ハーフワード ORB Rj, @Ri A 96 1+2a CC-- (Ri) | =Rj バイト EOR Rj, Ri A 9A 1 CC-- Ri ^ =Rj ワード EOR Rj, @Ri A 9C 1+2a CC-- (Ri) ^ =Rj ワード EORH Rj, @Ri A 9D 1+2a CC-- (Ri) ^ =Rj ハーフワード EORB Rj, @Ri A 9E 1+2a CC-- (Ri) ^ =Rj バイト 561 付録 ■ ビット操作命令 付表 F.1-4 ビット操作命令 ニーモニック 型 OP CYCLE NZVC BANDL #u4, @Ri C 80 1+2a ---- (Ri) &=(0xF0+u4) 下位 4 ビットを操作 C 81 1+2a ---- (Ri) &=((u4< <4)+0x0F) 上位 4 ビットを操作 ---- (Ri) &=u8 BANDH #u4, @Ri *BAND #u8, @Ri *1 動作 備考 BORL #u4, @Ri C 90 1+2a ---- (Ri) | =u4 下位 4 ビットを操作 BORH #u4, @Ri C 91 1+2a ---- (Ri) | =(u4< <4) 上位 4 ビットを操作 ---- (Ri) | =u8 *BOR #u8, @Ri *2 BEORL #u4, @Ri BEORH #u4, @Ri *BEOR #u8, @Ri C 98 1+2a ---- (Ri) ^ =u4 下位 4 ビットを操作 C 99 1+2a ---- (Ri) ^ =(u4< <4) 上位 4 ビットを操作 ---- (Ri) ^ =u8 *3 BTSTL #u4, @Ri C 88 2+a 0C-- (Ri) &u4 下位 4 ビットテスト BTSTH #u4, @Ri C 89 2+a CC-- (Ri) &(u4< <4) 上位 4 ビットテスト *1: アセンブラは , u8&0x0F でビットが立っていれば , BANDL を生成し , u8&0xF0 でビットが立っていれば , BANDH を生成します。BANDL, BANDH の両方を生成する場合もあります。 *2: アセンブラは , u8&0x0F でビットが立っていれば , BORL を生成し , u8&0xF0 でビットが立っていれば , BORH を生成します。 BORL, BORH の両方を生成する場合もあります。 *3: アセンブラは , u8&0x0F でビットが立っていれば , BEORL を生成し , u8&0xF0 でビットが立っていれば , BEORH を生成します。BEORL, BEORH の両方を生成する場合もあります。 ■ 乗除算命令 付表 F.1-5 乗除算命令 型 OP CYCLE NZVC 動作 MUL Rj, Ri A AF 5 CCC- Ri*Rj → MDH, MDL 32bit*32bit=64bit MULU Rj, Ri A AB 5 CCC- Ri*Rj → MDH, MDL 符号なし MULH Rj, Ri A BF 3 CC-- Ri*Rj → MDL 16bit*16bit=32bit MULUH Rj, Ri A BB 3 CC-- Ri*Rj → MDL 符号なし DIV0S Ri E 97-4 1 ---- ステップ演算 DIV0U Ri E 97-5 1 ---- 32bit/32bit=32bit DIV1 Ri E 97-6 d -C-C DIV2 Ri E 97-7 1 -C-C DIV3 E 9F-6 1 ---- DIV4S E 9F-7 1 ---- 36 -C-C ニーモニック *DIV Ri *1 備考 MDL/Ri → MDL, MDL%Ri → MDH *DIVU Ri *2 -C-C MDL/Ri → MDL, MDL%Ri → MDH *1:DIV0S, DIV1 × 32, DIV2, DIV3, DIV4S を生成します。命令コード長は , 72 バイトとなります。 *2:DIV0U, DIV1 × 32 を生成します。命令コード長は , 66 バイトとなります。 562 付録 F 命令一覧 ■ シフト命令 付表 F.1-6 シフト命令 型 OP CYCLE NZVC LSL Rj, Ri A B6 1 CC-C Ri < <Rj → Ri *LSL #u5, Ri(u5:0 ∼ 31) C' B4 1 CC-C Ri < <u5 → Ri LSL #u4, Ri C B4 1 CC-C Ri < <u4 → Ri LSL2 #u4, Ri C B5 1 CC-C Ri < <(u4+16)→Ri LSR Rj, Ri A B2 1 CC-C Ri > >Rj → Ri *LSR #u5, Ri(u5:0 ∼ 31) C' B0 1 CC-C Ri > >u5 → Ri LSR #u4, Ri C B0 1 CC-C Ri > >u4 → Ri LSR2 #u4, Ri C B1 1 CC-C Ri > >(u4+16)→Ri ASR Rj, Ri A BA 1 CC-C Ri > >Rj → Ri *ASR #u5, Ri(u5:0 ∼ 31) C' B8 1 CC-C Ri > >u5 → Ri ASR #u4, Ri C B8 1 CC-C Ri > >u4 → Ri ASR2 #u4, Ri C B9 1 CC-C Ri > >(u4+16)→Ri ニーモニック 動作 備考 論理シフト 論理シフト 算術シフト ■ 即値セット /16 ビット /32 ビット即値転送命令 付表 F.1-7 即値セット /16 ビット /32 ビット即値転送命令 ニーモニック LDI:32 #i32, Ri 型 OP CYCLE NZVC E 9F-8 3 ---- i32 → Ri 動作 備考 LDI:20#i20, Ri C 9B 2 ---- i20 → Ri 上位 12 ビットはゼロ拡張 LDI:8#i8, Ri B C0 1 ---- i8 → Ri 上位 24 ビットはゼロ拡張 *LDI# {i8 | i20 | i32} , Ri * {i8|i20|i32} →Ri *: 即値が絶対値の場合は , i8, i20, i32 の選択はアセンブラが自動的に行います。 即値が , 相対値または外部参照シンボルを含む場合は , i32 が選択されます。 563 付録 ■ メモリロード命令 付表 F.1-8 メモリロード命令 型 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 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: 特殊レジスタ * *: 特殊レジスタ Rs:TBR, RP, USP, SSP, MDH, MDL <注意事項> ハード仕様の o8, o4 のフィールドには , 次のようにアセンブラが計算して値を設定しま す。 • disp10/4 → o8, disp9/2 → o8, disp8 → o8, disp10, disp9, disp8 は符号付きです。 • udisp6/4 → o4udisp6 は , 符号なしです。 564 付録 F 命令一覧 ■ メモリストア命令 付表 F.1-9 メモリストア命令 型 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) 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: 特殊レジスタ * *: 特殊レジスタ Rs:TBR, RP, USP, SSP, MDH, MDL <注意事項> ハード仕様の o8, o4 のフィールドには , 次のようにアセンブラが計算して値を設定しま す。 • disp10/4 → o8, disp9/2 → o8, disp8 → o8, disp10, disp9, disp8 は符号付きです。 • udisp6/4 → o4udisp6 は , 符号なしです。 ■ レジスタ間転送命令 付表 F.1-10 レジスタ間転送命令 型 OP CYCLE NZVC MOV Rj, Ri A 8B 1 ---- Rj → Ri 汎用レジスタ間転送 MOV Rs, Ri A B7 1 ---- Rs → Ri Rs: 特殊レジスタ * MOV Ri, Rs E B3 1 ---- Ri → Rs Rs: 特殊レジスタ * MOV PS, Ri E 17-1 1 ---- PS → Ri MOV Ri, PS E 07-1 c CCCC Ri → PS ニーモニック 動作 備考 *: 特殊レジスタ Rs:TBR, RP, USP, SSP, MDH, MDL 565 付録 ■ 通常分岐 ( 遅延なし ) 命令 付表 F.1-11 通常分岐 ( 遅延なし ) 命令 型 OP CYCLE NZVC JMP @Ri E CALL label12 F 97-0 2 ---- Ri → PC D0 2 ---- PC+2 → RP, CALL @Ri E 97-1 2 ---- PC+2 → RP, Ri → PC RET E 97-2 2 ---- RP → PC INT #u8 D 1F 3+3a ---- SSP-=4, PS → (SSP), ニーモニック 動作 備考 PC+2+(label12-PC-2) →PC リターン SSP-=4, PC+2 → (SSP), 0→Iフラグ, 0→Sフラグ, (TBR+0x3FC-u8×4)→PC INTE E 9F-3 3+3a ---- SSP-=4, PS → (SSP), エミュレータ用 SSP-=4, PC+2 → (SSP), 0 → S フラグ , (TBR+0x3D8) → PC RETI E 97-3 2+2A CCCC BRA label9 D E0 2 ---- PC+2+(label9-PC-2) → PC BNO label9 D E1 1 ---- BEQ label9 D E2 2/1 ---- 非分岐 if(Z==1) then BNE label9 D E3 2/1 ---- ↑ s/Z==0 BC label9 D E4 2/1 ---- ↑ s/C==1 BNC label9 D E5 2/1 ---- ↑ s/C==0 BN label9 D E6 2/1 ---- ↑ s/N==1 BP label9 D E7 2/1 ---- ↑ s/N==0 BV label9 D E8 2/1 ---- ↑ s/V==1 BNV label9 D E9 2/1 ---- ↑ s/V==0 BLT label9 D EA 2/1 ---- ↑ s/VxorN==1 BGE label9 D EB 2/1 ---- ↑ s/VxorN==0 BLE label9 D EC 2/1 ---- ↑ s/(VxorN)orZ==1 BGT label9 D ED 2/1 ---- ↑ s/(VxorN)orZ==0 BLS label9 D EE 2/1 ---- ↑ s/CorZ==1 BHI label9 D EF 2/1 ---- ↑ s/CorZ==0 (R15) → PC, R15-=4, (R15) → PS, R15-=4 PC+2+(label9-PC-2) → PC <注意事項> • CYCLE 数の「2/1」は , 分岐するとき 2, 分岐しないとき 1 であることを示します。 • ハード仕様の rel11, rel8 のフィールドには , 次のようにアセンブラが計算して値を設定 します。 (label12-PC-2)/2 → rel11, (label9-PC-2)/2 → rel8, label12, label9 は符号付きです。 • RETI 命令を実行するときは , S フラグが "0" であることが必要です。 566 付録 F 命令一覧 ■ 遅延分岐命令 付表 F.1-12 遅延分岐命令 型 OP CYCLE NZVC JMP:D @Ri E 9F-0 1 ---- Ri → PC CALL:D label12 F D8 1 ---- PC+4 → RP, ニーモニック 動作 備考 PC+2+(label12-PC-2) → PC CALL:D @Ri E 9F-1 1 ---- PC+4 → RP, Ri → PC RET:D E 9F-2 1 ---- RP → PC BRA:D label9 D F0 1 ---- PC+2+(label9-PC-2) → PC BNO:D label9 D F1 1 ---- 非分岐 BEQ:D label9 D F2 1 ---- if(Z==1) then リターン PC+2+(label9-PC-2) → PC BNE:D label9 D F3 1 ---- ↑ s/Z==0 BC:D label9 D F4 1 ---- ↑ s/C==1 BNC:D label9 D F5 1 ---- ↑ s/C==0 BN:D label9 D F6 1 ---- ↑ s/N==1 BP:D label9 D F7 1 ---- ↑ s/N==0 BV:D label9 D F8 1 ---- ↑ s/V==1 BNV:D label9 D F9 1 ---- ↑ s/V==0 BLT:D label9 D FA 1 ---- ↑ s/VxorN==1 BGE:D label9 D FB 1 ---- ↑ s/VxorN==0 BLE:D label9 D FC 1 ---- ↑ s/(VxorN)orZ==1 BGT:D label9 D FD 1 ---- ↑ s/(VxorN)orZ==0 BLS:D label9 D FE 1 ---- ↑ s/CorZ==1 BHI:D label9 D FF 1 ---- ↑ s/CorZ==0 <注意事項> • ハード仕様の rel11, rel8 のフィールドには , 次のようにアセンブラが計算して値を設定 します。 (label12-PC-2)/2 → rel11, (label9-PC-2)/2 → rel8, label12, label9 は符号付きです。 • 遅延分岐は必ず次の命令 ( 遅延スロット ) を実行してから分岐します。 • 遅延スロットに置くことができる命令は , すべての 1 サイクル , a, b, c, d サイクル命令 です。複数サイクル命令は置けません。 567 付録 ■ その他の命令 付表 F.1-13 その他の命令 型 OP CYCLE NOP E 9F-A 1 ---- ANDCCR #u8 D 83 c CCCC CCR and u8 → CCR ORCCR #u8 D 93 c CCCC CCRor u8 → CCR STILM #u8 D 87 1 ---- D A3 1 ---- i8 → ILM R15+=s10 ニーモニック ADDSP #s10 EXTSB Ri *1 NZVC 動作 備考 何も変化しない E 97-8 1 ---- 符号拡張 8 → 32bit EXTUB Ri E 97-9 1 ---- ゼロ拡張 8 → 32bit EXTSH Ri E 97-A 1 ---- 符号拡張 16 → 32bit EXTUH Ri E 97-B 1 ---- ゼロ拡張 16 → 32bit LDM0(reglist) D 8C ---- (R15) → reglist, LDM1(reglist) D 8D ---- ILM 即値セット ADDSP 命令 ロードマルチ R0-R7 R15 インクリメント (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 ---- XCHB @Rj, Ri A 8A 2a ---- R14+4 → R15, 関数の出口処理 (R15-4) → R14 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 サイクルとなります。 568 付録 F 命令一覧 ■ 20 ビット通常分岐マクロ命令 付表 F.1-14 20 ビット通常分岐マクロ命令 ニーモニック *CALL20 label20, Ri 動作 次の命令のアドレス→ RP, 備考 Ri: テンポラリレジスタ ( 参考 1 参照 ) label20 → PC *BRA20 label20, Ri label20 → PC Ri: テンポラリレジスタ ( 参考 2 参照 ) *BEQ20 label20, Ri if(Z==1) then label20 → PC Ri: テンポラリレジスタ ( 参考 3 参照 ) *BNE20 label20, Ri ↑ s/Z==0 ↑ *BC20 label20, Ri ↑ s/C==1 ↑ *BNC20 label20, Ri ↑ s/C==0 ↑ *BN20 label20, Ri ↑ s/N==1 ↑ *BP20 label20, Ri ↑ s/N==0 ↑ *BV20 label20, Ri ↑ s/V==1 ↑ *BNV20 label20, Ri ↑ s/V==0 ↑ *BLT20 label20, Ri ↑ s/VxorN==1 ↑ *BGE20 label20, Ri ↑ s/VxorN==0 ↑ *BLE20 label20, Ri ↑ s/(VxorN)orZ==1 ↑ *BGT20 label20, Ri ↑ s/(VxorN)orZ==0 ↑ *BLS20 label20, Ri ↑ s/CorZ==1 ↑ *BHI20 label20, Ri ↑ s/CorZ==0 ↑ [ 参考 1] CALL20BRA20 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: 569 付録 ■ 20 ビット遅延分岐マクロ命令 付表 F.1-15 20 ビット遅延分岐マクロ命令 ニーモニック *CALL20:D label20, Ri 動作 次の命令のアドレス +2 → RP, 備考 Ri: テンポラリレジスタ ( 参考 1 参照 ) label20 → PC *BRA20:D label20, Ri label20 → PC Ri: テンポラリレジスタ ( 参考 2 参照 ) *BEQ20:D label20, Ri if(Z==1) then label20 → PC Ri: テンポラリレジスタ ( 参考 3 参照 ) *BNE20:D label20, Ri ↑ s/Z==0 ↑ *BC20:D label20, Ri ↑ s/C==1 ↑ *BNC20:D label20, Ri ↑ s/C==0 ↑ *BN20:D label20, Ri ↑ s/N==1 ↑ *BP20:D label20, Ri ↑ s/N==0 ↑ *BV20:D label20, Ri ↑ s/V==1 ↑ *BNV20:D label20, Ri ↑ s/V==0 ↑ *BLT20:D label20, Ri ↑ s/VxorN==1 ↑ *BGE20:D label20, Ri ↑ s/VxorN==0 ↑ *BLE20:D label20, Ri ↑ s/(VxorN)orZ==1 ↑ *BGT20:D label20, Ri ↑ s/(VxorN)orZ==0 ↑ *BLS20:D label20, Ri ↑ s/CorZ==1 ↑ *BHI20:D label20, Ri ↑ s/CorZ==0 ↑ [ 参考 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 成します。 Bxcc LDI:20 JMP:D false: 570 が , 1) の範囲外の場合および外部参照シンボルを含む場合は , 次のように命令を生 false xcc は , cc の背反条件 #label20, Ri @Ri 付録 F 命令一覧 ■ 32 ビット通常分岐マクロ命令 付表 F.1-16 32 ビット通常分岐マクロ命令 ニーモニック *CALL32 label32, Ri 動作 次の命令のアドレス→ RP, 備考 Ri: テンポラリレジスタ ( 参考 1 参照 ) label32 → PC *BRA32 label32, Ri label32 → PC *BEQ32 label32, Ri if(Z==1) then label32 → PC Ri: テンポラリレジスタ ( 参考 3 参照 ) *BNE32 label32, Ri ↑ s/Z==0 ↑ *BC32 label32, Ri ↑ s/C==1 ↑ *BNC32 label32, Ri ↑ s/C==0 ↑ *BN32 label32, Ri ↑ s/N==1 ↑ *BP32 label32, Ri ↑ s/N==0 ↑ *BV32 label32, Ri ↑ s/V==1 ↑ *BNV32 label32, Ri ↑ s/V==0 ↑ *BLT32 label32, Ri ↑ s/VxorN==1 ↑ *BGE32 label32, Ri ↑ s/VxorN==0 ↑ *BLE32 label32, Ri ↑ s/(VxorN)orZ==1 ↑ *BGT32 label32, Ri ↑ s/(VxorN)orZ==0 ↑ *BLS32 label32, Ri ↑ s/CorZ==1 ↑ *BHI32 label32, Ri ↑ s/CorZ==0 ↑ Ri: テンポラリレジスタ ( 参考 2 参照 ) [ 参考 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: 571 付録 ■ 32 ビット遅延分岐マクロ命令 付表 F.1-17 32 ビット遅延分岐マクロ命令 ニーモニック *CALL32:D label32, Ri 動作 次の命令のアドレス +2 → RP, 備考 Ri:テンポラリレジスタ(参考1参照) label32 → PC *BRA32:D label32, Ri label32 → PC Ri:テンポラリレジスタ(参考2参照) *BEQ32:D label32, Ri if(Z==1) then label32 → PC Ri:テンポラリレジスタ(参考3参照) *BNE32:D label32, Ri ↑ s/Z==0 ↑ *BC32:D label32, Ri ↑ s/C==1 ↑ *BNC32:D label32, Ri ↑ s/C==0 ↑ *BN32:D label32, Ri ↑ s/N==1 ↑ *BP32:D label32, Ri ↑ s/N==0 ↑ *BV32:D label32, Ri ↑ s/V==1 ↑ *BNV32:D label32, Ri ↑ s/V==0 ↑ *BLT32:D label32, Ri ↑ s/VxorN==1 ↑ *BGE32:D label32, Ri ↑ s/VxorN==0 ↑ *BLE32:D label32, Ri ↑ s/(VxorN)orZ==1 ↑ *BGT32:D label32, Ri ↑ s/(VxorN)orZ==0 ↑ *BLS32:D label32, Ri ↑ s/CorZ==1 ↑ *BHI32:D label32, Ri ↑ s/CorZ==0 ↑ [ 参考 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: 572 付録 F 命令一覧 ■ ダイレクトアドレッシング命令 付表 F.1-18 ダイレクトアドレッシング命令 ニーモニック 型 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++ バイト <注意事項> dir8, dir9, dir10 フィールドには , 次のようにアセンブラが計算して値を設定します。 dir8 → dir, dir9/2 → dir, dir10/4 → dirdir8, dir9, dir10 は符号なしです。 ■ リソース命令 付表 F.1-19 リソース命令 ニーモニック LDRES @Ri+, #u4 型 C OP BC CYCLE a NZVC ---- 動作 (Ri)→u4のリソース 備考 u4: チャネル番号 Ri+=4 STRES #u4, @Ri+ C BD a ---- u4 のリソース→ (Ri) u4: チャネル番号 Ri+=4 <注意事項> MB91305 では , チャネル番号を持つリソースを搭載していないので , 使用できません。 573 付録 ■ コプロセッサ制御命令 付表 F.1-20 コプロセッサ制御命令 ニーモニック 型 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:= コマンド指定 • MB91305 では , コプロセッサを搭載していないため使用できません。 574 索引 Numerics 0 検出 0 検出 ......................................................................268 0 検出用データレジスタ 0 検出用データレジスタ (BSD0) ........................266 10 ビット A/D コンバータ 10 ビット A/D コンバータの特長 .......................272 外部トリガ変換による A/D 動作 ........................278 ソフト変換による A/D 動作 ................................277 レジスタ構成 .........................................................272 10 ビットスレーブアドレスマスクレジスタ 10 ビットスレーブアドレスマスクレジスタ (ITMK0 ∼ ITMK3) .........................................359 10 ビットスレーブアドレスレジスタ 10 ビットスレーブアドレスレジスタ (ITBA0 ∼ ITBA3) ...........................................358 16 ビット 即値セット /16 ビット /32 ビット 即値転送命令 ..................................................563 16 ビットタイマレジスタ 16 ビットタイマレジスタ (TMR) .......................286 16 ビットパルス幅カウンタ 16 ビットパルス幅カウンタ ................................378 LPF のサンプリング間隔について .....................385 カウントクロックの選択 .....................................385 パルス幅カウント動作 .........................................384 レジスタ一覧 .........................................................378 割込み要求発生 .....................................................386 16 ビットフリーランタイマ 16 ビットフリーランタイマの カウントタイミング ......................................394 16 ビットフリーランタイマの クリアタイミング ..........................................393 16 ビットフリーランタイマの動作説明 ............393 16 ビットフリーランタイマの特長 ....................388 16 ビットフリーランタイマの ブロックダイヤグラム ..................................388 16 ビットフリーランタイマの レジスタ一覧 ..................................................389 16 ビットリロードタイマ 16 ビットリロードタイマの概要 ........................280 動作説明 .................................................................287 レジスタ一覧 .........................................................282 16 ビットリロードレジスタ 16 ビットリロードレジスタ (TMRLR) ..............286 1 検出 1 検出 ......................................................................268 1 検出用データレジスタ 1 検出用データレジスタ (BSD1) ........................266 20 ビット遅延分岐マクロ命令 20 ビット遅延分岐マクロ命令 ............................570 20 ビット通常分岐マクロ命令 20 ビット通常分岐マクロ命令 ............................569 2 サイクル転送 2 サイクル転送 (I/O → SDRAM/FCRAM) .........223 2 サイクル転送 (I/O → SDRAM/FCRAM) (TYP3 ∼ TYP0=1001B, AWR=0051H, IOWR=00H) ......................................................222 2 サイクル転送 (I/O →外部 ) (TYP3 ∼ TYP0=0000B, AWR=0008H, IOWR=00H) ......................................................221 2 サイクル転送 ( 外部→ I/O)(TYP3 ∼ TYP0=0000B, AWR=0008H, IOWR=00H) ...... 220 2 サイクル転送 ( 内部 RAM →外部 I/O, RAM, 外部 I/O, RAM →内部 RAM もタイミングは 同じ ) (TYP3 ∼ TYP0=0000B, AWR=0008H, IOWR=00H) ......................................................219 2 サイクル転送時のデータの動き .....................513 32 ビット 即値セット /16 ビット /32 ビット 即値転送命令 ..................................................563 32 ビット遅延分岐マクロ命令 32 ビット遅延分岐マクロ命令 ........................... 572 32 ビット通常分岐マクロ命令 32 ビット通常分岐マクロ命令 ........................... 571 7 ビットスレーブアドレスマスクレジスタ 7 ビットスレーブアドレスマスクレジスタ (ISMK0 ∼ ISMK3) .........................................362 7 ビットスレーブアドレスレジスタ 7 ビットスレーブアドレスレジスタ (ISBA0 ∼ ISBA3) ...........................................361 575 A A/D A/D コンバータ .........................................................4 A/D 制御レジスタ A/D 制御レジスタ (ADCTH, ADCTL) ................274 A/D 変換結果レジスタ A/D 変換結果レジスタ (ADAT0 ∼ ADAT9) .....276 A/D 変換部テストレジスタ A/D 変換部テストレジスタ (TEST) ...................276 ACR ACR0 ∼ ACR7(Area Configuration Register) の レジスタ構成 ..................................................141 ADCTH A/D 制御レジスタ (ADCTH, ADCTL) ................274 ADCTL A/D 制御レジスタ (ADCTH, ADCTL) ................274 ASR Area Select Register (ASR0 ∼ ASR7)の レジスタ構成 ..................................................140 ASR および ASZ3 ∼ ASZ0 の設定例 .................168 ASZ ASR および ASZ3 ∼ ASZ0 の設定例 .................168 AWR AWR0 ∼ AWR7(Area Wait Register) の レジスタ構成 ..................................................147 B BFOK BFOK の設定 .........................................................466 BFOK0o BFOK0o の設定の優先順位 .................................467 BSD0 0 検出用データレジスタ (BSD0) ........................266 BSD1 1 検出用データレジスタ (BSD1) ........................266 BSDC 変化点検出用データレジスタ (BSDC) ..............267 BSRR 検出結果レジスタ (BSRR) ...................................267 Bulk IN 転送 Bulk IN 転送 (CPU 書込み /USB 読出し ) タイミングチャート ......................................456 Bulk OUT 転送 コントロール (DATA ステージ )/ Bulk OUT 転送 ................................................431 C CacHe Enable register CHER(CacHe Enable register) の レジスタ構成 ..................................................161 CCR CCR(Condition Code Register) ................................54 CHER CHER(CacHe Enable register) の レジスタ構成 ..................................................161 Chip Select Enable register CSER(Chip Select Enable register) の レジスタ構成 ..................................................160 576 CLKB CPU クロック (CLKB) .........................................102 CLKP 周辺クロック (CLKP) .......................................... 102 CLKR CLKR: クロックソース制御レジスタ ................ 114 CLKT 外部バスクロック (CLKT) ..................................103 CONT1 CONT1 ....................................................................415 CONT10 CONT10 .................................................................. 422 CONT2 CONT2 ....................................................................416 CONT3 CONT3 ....................................................................417 CONT4 CONT4 ....................................................................418 CONT5 CONT5 ....................................................................419 CONT6 CONT6 ....................................................................419 CONT7 CONT7 ....................................................................420 CONT8 CONT8 ....................................................................421 CONT9 CONT9 ....................................................................421 CPU CPU ........................................................................... 36 CPU IN 転送 CPU IN 転送 .......................................................... 434 CPU OUT 転送 CPU OUT 転送 ......................................................436 CPU アクセス CPU アクセス受信時の制御例 ............................445 CPU アクセス送信時の制御例 ............................447 CPU クロック CPU クロック (CLKB) .........................................102 CSER CSER(Chip Select Enable register) の レジスタ構成 ..................................................160 CTBR CTBR: タイムベースカウンタクリア レジスタ .......................................................... 114 D D+ 終端抵抗制御 ボード上の D+ 終端抵抗制御 ............................. 460 DACK DACK の FR30 シリーズ互換モード ................. 519 DATA ステージ コントロール (DATA ステージ )/ Bulk OUT 転送 ................................................431 コントロール (DATA ステージ )/ バルク / インタラプト IN 転送 .................................... 432 Delayed Interrupt Control Register DICR(Delayed Interrupt Control Register) ............263 DICR DICR(Delayed Interrupt Control Register) ............263 DICR の DLYI ビット .......................................... 264 DIVR0 DIVR0: 基本クロック分周設定レジスタ 0 ........117 DIVR1 DIVR1: 基本クロック分周設定レジスタ 1 ........120 DLYI ビット DICR の DLYI ビット ...........................................264 DMA DMA 受信時の制御例 ..........................................450 DMA 送信時の制御例 ..........................................451 DMA による周辺割込みクリア ..........................501 DMA Controller DMAC (DMA Controller) ..........................................3 DMA IN 転送 DMA IN 転送 .........................................................437 DMA OUT 転送 DMA OUT 転送 .....................................................438 DMAC DMAC (DMA Controller) ..........................................3 IOWR0 ∼ IOWR2(I/O Wait Register for DMAC) の レジスタ構成 ..................................................158 DMACA DMAC-ch0 ∼ ch4 コントロール / ステータス レジスタ A[DMACA0 ∼ DMACA4] ............473 DMACB DMAC-ch0 ∼ ch4 コントロール / ステータス レジスタ B[DMACB0 ∼ DMACB4] .............479 DMACR DMAC-ch0 ∼ ch4 DMAC 全体制御レジスタ [DMACR] .........................................................486 DMAC コントロール / ステータスレジスタ DMAC-ch0 ∼ ch4 コントロール / ステータス レジスタ A[DMACA0 ∼ DMACA4] ............473 DMAC-ch0 ∼ ch4 コントロール / ステータス レジスタ B[DMACB0 ∼ DMACB4] .............479 DMAC 転送元 / 転送先アドレス 設定レジスタ DMAC-ch0 ∼ ch4 転送元 / 転送先アドレス設定レ ジスタ [DMASA0 ∼ DMASA4/DMADA0 ∼ DMADA4] ........................................................484 DMASA DMAC-ch0 ∼ ch4 転送元 / 転送先アドレス 設定レジスタ [DMASA0 ∼ DMASA4/ DMADA0 ∼ DMADA4] .................................484 DMA アクセス 2 サイクル転送 (I/O → SDRAM/FCRAM) .........223 2 サイクル転送 (I/O → SDRAM/FCRAM) (TYP3 ∼ TYP0=1001B, AWR=0051H, IOWR=00H) ......................................................222 2 サイクル転送 (I/O →外部 ) (TYP3 ∼ TYP0=0000B, AWR=0008H, IOWR=00H) ......................................................221 2 サイクル転送 ( 外部→ I/O) (TYP3 ∼ TYP0=0000B, AWR=0008H, IOWR=00H) ......................................................220 2 サイクル転送 ( 内部 RAM →外部 I/O, RAM, 外部 I/O, RAM →内部 RAM もタイミングは 同じ ) (TYP3 ∼ TYP0=0000B, AWR=0008H, IOWR=00H) ......................................................219 DMA フライバイ転送 (I/O →メモリ ) (TYP3 ∼ TYP0=0000B, AWR=0008H, IOWR=41H) ......................................................215 DMA フライバイ転送 ( メモリ→ I/O) (TYP3 ∼ TYP0=0000B, AWR=0008H, IOWR=41H) ......................................................217 DMA 外部インタフェース 動作概要 ................................................................ 516 動作例(簡易波形).............................................. 517 DMA コントローラ 主要機能 ................................................................ 470 主要動作 ................................................................ 488 転送アドレス ........................................................ 490 転送回数と転送終了 ............................................ 491 転送タイプ ............................................................ 489 転送モード ............................................................ 488 動作フローチャート ............................................ 510 ハードウェア構成 ................................................470 レジスタ一覧 ........................................................ 471 レジスタ設定時の注意 ........................................ 473 DMA 転送 CPU 制御 ................................................................ 499 DMAC 割込み制御 ............................................... 504 USB の DMA 転送について ................................538 アドレッシングモード ........................................ 498 一時停止 ................................................................ 502 エラーによる停止 ................................................503 外部端子と内部動作タイミングに関する 補足 .................................................................. 505 スリープ中の DMA 転送 .....................................504 チャネル選択と制御 ............................................ 504 データの種類など ................................................499 転送回数制御 ........................................................ 499 動作開始 ................................................................ 501 動作終了 / 停止 ..................................................... 502 ブロックサイズ ....................................................497 ホールド調停 ........................................................ 500 リロード動作 ........................................................ 497 DREQ 端子 DREQ 端子の入力タイミング ............................518 E EIRR 外部割込要因レジスタ (EIRR : External Interrupt Request Register) .............................................. 255 EIT EIT からの復帰 ....................................................... 67 EIT の特長 ...............................................................67 EIT の割込みレベル ...............................................68 EIT ベクタテーブル ...............................................74 EIT 要因 ................................................................... 67 EIT 要因受理の優先度 ...........................................77 ELVR 外部割込要求レベル設定レジスタ (ELVR : External LeVel Register) ..................................256 ENIR 割込許可レジスタ (ENIR : ENable Interrupt request Register) ...........................................................255 F FCRAM Memory type A(SDRAM/FCRAM) および Memory type B(FCRAM) ............................................... 152 577 FIFO FIFO 使用時の動作概要 .......................................340 FIFO0i FIFO0i .....................................................................405 FIFO0o FIFO0o ....................................................................405 FIFO1 FIFO1 ......................................................................406 FIFO2 FIFO2 ......................................................................406 FIFO3 FIFO3 ......................................................................407 FIFO コントロールレジスタ FIFO コントロールレジスタ (IFCR0 ∼ IFCR3) ............................................364 FIFO 受信数レジスタ FIFO 受信数レジスタ (IFRN0 ∼ IFRN3) ...........366 FIFO データ数レジスタ FIFO データ数レジスタ (IFN0 ∼ IFN3) ............363 FIFO データレジスタ FIFO データレジスタ (IFDR0 ∼ IFDR3) ...........364 FPT-176P-M07 外形寸法図 .................................................................7 端子機能一覧 .............................................................9 端子配列図 .................................................................8 FR FR CPU .......................................................................2 FR ファミリ FR ファミリの命令一覧表 ...................................560 G GET_DESCRIPTOR コマンド GET_DESCRIPTOR コマンドでの データステージの中断 ..................................467 H Hold Request Cancel Level register HRCL(Hold Request Cancel Level register) ..........246 HRCL HRCL(Hold Request Cancel Level register) ..........246 制御レジスタ .........................................................250 I I/O Wait Register IOWR0 ∼ IOWR2(I/O Wait Register for DMAC) の レジスタ構成 ..................................................158 I/O ピン I/O ピン ..................................................................137 I/O ポート I/O ポート ..................................................................5 ポート基本ブロックダイヤグラム .....................230 I/O マップ I/O マップの見方 ..................................................522 I2C インタフェース FIFO を使用しない (FEN=0) 場合 ......................372 FIFO を使用する (FEN=1) 場合 ..........................374 I2C インタフェースの特長 ..................................340 「START」条件 ......................................................367 578 「STOP」条件 .........................................................367 アービトレーション ............................................ 369 アクノリッジ ........................................................ 369 エラーを発生しない通信エラー ........................ 370 スレーブアドレス検出 ........................................ 368 スレーブアドレスマスク .................................... 368 バスエラー ............................................................ 369 マスタアドレッシング ........................................ 369 レジスタ一覧 ........................................................ 343 I2C インタフェース .................................................. 4 IBCR バスコントロールレジスタ (IBCR) ...................350 IBSR バスステータスレジスタ (IBSR) ........................ 347 I-Cache I-Cache を使用するときの設定方法 .....................49 ICCR クロックコントロールレジスタ (ICCR0 ∼ ICCR3) ...........................................357 ICR ICR(Interrupt Control Register) ..............................245 ICR ビット構成 ....................................................... 70 ICR マッピング ....................................................... 70 制御レジスタ ........................................................ 250 ICS インプットキャプチャコントロールレジスタ (ICS01, ICS23) ................................................. 398 IDAR データレジスタ (IDAR0 ∼ IDAR3) ...................363 IFCR FIFO コントロールレジスタ (IFCR0 ∼ IFCR3) ............................................ 364 IFDR FIFO データレジスタ (IFDR0 ∼ IFDR3) ........... 364 IFN FIFO データ数レジスタ (IFN0 ∼ IFN3) ............363 IFRN FIFO 受信数レジスタ (IFRN0 ∼ IFRN3) ........... 366 ILM ILM ........................................................................... 69 ILM(Interrupt Level Mask Register) ........................ 57 INIT 設定初期化リセット (INIT) ................................... 90 設定初期化リセット(INIT) 解除シーケンス ................................................ 93 INIT 端子入力 INIT 端子入力 ( 設定初期化リセット端子 ) ........ 91 Interrupt Control Register ICR(Interrupt Control Register) ..............................245 INTE 命令 INTE 命令の動作 ....................................................80 INT 命令 INT 命令の動作 ....................................................... 80 IOWR IOWR0 ∼ IOWR2(I/O Wait Register for DMAC) の レジスタ構成 ..................................................158 IPCP インプットキャプチャデータレジスタ (IPCP0 ∼ IPCP3) .............................................397 ISBA 7 ビットスレーブアドレスレジスタ (ISBA0 ∼ ISBA3) ...........................................361 ISMK 7 ビットスレーブアドレスマスクレジスタ (ISMK0 ∼ ISMK3) ..........................................362 ITBA 10 ビットスレーブアドレスレジスタ (ITBA0 ∼ ITBA3) ...........................................358 ITMK 10 ビットスレーブアドレスマスクレジスタ (ITMK0 ∼ ITMK3) .........................................359 I フラグ I フラグ ....................................................................69 P PLL PLL 逓倍率 ............................................................ 100 PLL 逓倍率変更後の待ち時間 ............................101 PLL 動作許可 .......................................................... 99 PPG PPG ............................................................................. 5 PPG 出力オール "L" または , オール "H" の 出力方法例 ......................................................306 概要 ........................................................................296 ブロックダイヤグラム ........................................ 298 レジスタ一覧 ........................................................ 297 割込要因とタイミングチャート ........................ 306 PPG 周期設定レジスタ PPG 周期設定レジスタ (PCSR0 ∼ PCSR3) ....... 302 PPG タイマ PPG タイマの注意事項 ........................................ 307 コントロールステータスレジスタ (PCNH0 ∼ PCNH3, PCNL0 ∼ PCNL3) ........299 PPG タイマレジスタ PPG タイマレジスタ (PTMR0 ∼ PTMR3) ......... 303 PPG デューティ設定レジスタ PPG デューティ設定レジスタ (PDUT0 ∼ PDUT3) .........................................303 PS PS(Program Status) ................................................... 53 PTMR PPG タイマレジスタ (PTMR0 ∼ PTMR3) ......... 303 PWC PWC ............................................................................5 PWCC2 PWC 制御レジスタ 2(PWCC2) ............................382 PWCCH PWC 制御レジスタ (PWCCH) ............................. 380 PWCCL PWC 制御レジスタ (PWCCL) ............................. 379 PWCD PWC データレジスタ (PWCD) ........................... 381 PWCUD PWC 上限値設定レジスタ (PWCUD) ................. 383 PWC 上限値設定レジスタ PWC 上限値設定レジスタ (PWCUD) ................. 383 PWC 制御レジスタ PWC 制御レジスタ (PWCCH) ............................. 380 PWC 制御レジスタ (PWCCL) ............................. 379 PWC 制御レジスタ 2 PWC 制御レジスタ 2(PWCC2) ............................382 PWC データレジスタ PWC データレジスタ (PWCD) ........................... 381 PWM PWM 動作 .............................................................. 304 PC R M MB91305 外形寸法図 .................................................................7 端子機能一覧 .............................................................9 端子配列図 .................................................................8 MCRA MCRA (Memory Configuration Register for extend type-A) のレジスタ構成 .................................155 MCRB MCRB (Memory Configuration Register for extend type-B) のレジスタ構成 .................................157 Memory Configuration Register for extend type-A MCRA (Memory Configuration Register for extend type-A) のレジスタ構成 .................................155 Memory Configuration Register for extend type-B MCRB (Memory Configuration Register for extend type-B) のレジスタ構成 .................................157 Memory type A Memory type A(SDRAM/FCRAM) および Memory type B(FCRAM) ................................152 Memory type B Memory type A(SDRAM/FCRAM) および Memory type B(FCRAM) ................................152 MODR モードレジスタ (MODR) .......................................87 N NMI NMI .........................................................................259 NMI(Non Maskable Interrupt) ................................247 ユーザ割込み・NMI の動作 ..................................79 Non Maskable Interrupt NMI(Non Maskable Interrupt) ................................247 PC(Program Counter) ...............................................57 PCSR PPG 周期設定レジスタ (PCSR0 ∼ PCSR3) .......302 PDR ポートデータレジスタ (PDR) .............................232 PDUT PPG デューティ設定レジスタ (PDUT0 ∼ PDUT3) .........................................303 PFR レジスタ PFR レジスタの初期値と機能 ............................236 RCR RCR(Refresh Control Register) の レジスタ構成 ..................................................165 REALOS ビットサーチモジュール (REALOS 使用 ) ........... 4 リロードタイマ (REALOS 用 1 チャネル含む ) .......................... 4 579 Refresh Control Register RCR(Refresh Control Register) の レジスタ構成 ..................................................165 RESET RESET ....................................................................425 RETI 命令 RETI 命令の動作 .....................................................82 RP RP(Return Pointer) ....................................................58 RSIZE0 RSIZE0 ....................................................................413 RSIZE1 RSIZE1 ....................................................................413 RSRR RSRR: リセット要因レジスタ / ウォッチドッグ タイマ制御レジスタ ......................................106 RST 動作初期化リセット (RST) ....................................90 動作初期化リセット(RST) 解除シーケンス ................................................93 S SCR SCR(System Condition code Register) .....................56 シリアルコントロールレジスタ (SCR0 ∼ SCR4) ...............................................321 SDRAM(FCRAM) インタフェース SDRAM(FCRAM) インタフェース .....................172 SDRAM/FCRAM Memory type A(SDRAM/FCRAM) および Memory type B(FCRAM) ................................152 SDRAM/FCRAM インタフェース アドレスマルチプレックスフォーマット .........210 セルフリフレッシュ .............................................209 タイミングチャート .............................................207 パワーオンシーケンス .........................................210 複数領域への SDRAM/FCRAM 接続 .................210 メモリ接続例 .........................................................211 SETUP ステージ コントロール転送の SETUP ステージ ( 一部を除 く標準コマンド ) ............................................427 コントロール転送の SETUP ステージ ( クラスコマンド・ベンダコマンド , および 一部の標準コマンド (GET_DESCRIPTOR / SET_DESCRIPTOR / SYNCH_FRAME)) ......429 SIDR シリアルインプットデータレジスタ (SIDR0 ∼ SIDR4) / シリアルアウトプットデータ レジスタ (SODR0 ∼ SODR4) .......................323 SMR シリアルモードレジスタ (SMR0 ∼ SMR4) ......320 SODR シリアルインプットデータレジスタ (SIDR0 ∼ SIDR4) / シリアルアウトプットデータ レジスタ (SODR0 ∼ SODR4) .......................323 SSP SSP(System Stack Pointer) .................................58, 71 SSR シリアルステータスレジスタ (SSR0 ∼ SSR4) ...............................................324 580 ST1 ST1 ..........................................................................408 ST2 ST2 ..........................................................................409 ST3 ST3 ..........................................................................410 ST4 ST4 ..........................................................................411 ST5 ST5 ..........................................................................412 STATUS ステージ コントロール転送の STATUS ステージ ( クラスコマンド・ベンダコマンド , および 一部の標準コマンド (GET_DESCRIPTOR / SET_DESCRIPTOR / SYNCH_FRAME)) .....430 コントロール転送の STATUS ステージ ( 一部を 除く標準コマンド ) ........................................ 430 STCR STCR: スタンバイ制御レジスタ ........................ 108 STCR:SRST ビット STCR:SRST ビット書込み ( ソフトウェア リセット ) .......................................................... 91 STOP 状態 STOP 状態からの復帰動作について .................. 260 外部割込みを使用したクロック発振停止した STOP 状態からの復帰時における 注意事項 .......................................................... 259 SUSPEND SUSPEND 時の USB クロック制御例 ................ 463 T TBCR TBCR: タイムベースカウンタ制御 レジスタ .......................................................... 111 TBR TBR(Table Base Register) .................................. 58, 73 TCCS タイマコントロールステータスレジスタ (TCCS) .............................................................390 TCDT タイマデータレジスタ (TCDT) .......................... 389 TCR TCR(Terminal and timing Control Register) の レジスタ構成 ..................................................162 Terminal and timing Control Register TCR(Terminal and timing Control Register) の レジスタ構成 ..................................................162 TMCSR コントロールステータスレジスタ (TMCSR) .......................................................... 283 TMR 16 ビットタイマレジスタ (TMR) .......................286 TMRLR 16 ビットリロードレジスタ (TMRLR) ..............286 TRSIZE TRSIZE ................................................................... 424 TTSIZE TTSIZE ................................................................... 423 U UART UART ..........................................................................4 UART のクロック選択 .........................................327 UART の使用上の注意 .........................................334 UART の使用例 .....................................................335 UART の動作モード .............................................327 UART の特長 .........................................................318 ブロックダイヤグラム .........................................319 レジスタ一覧 .........................................................318 割込み発生およびフラグの セットタイミング ..........................................331 UCLK48 UCLK48 の精度 .....................................................465 USB USB の DMA 転送について ................................538 USB のチップセレクト領域設定 ........................536 USB のリセット ....................................................538 USB の割込みについて ........................................537 USB ファンクション機能 ( 機能の有無を モード端子により選択可能 ) ............................5 USB 機能 USB 機能を使用するには ....................................536 USB クロック制御 SUSPEND 時の USB クロック制御例 ................463 USB コネクタ USB コネクタの接続 / 未接続の検知 .................464 USB バスリセット USB バスリセット後のマクロの状態 ................468 USB 標準要求コマンド USB 標準要求コマンドに対するマクロの 自動応答内容 ..................................................461 USB ファンクション Bulk IN 転送 (CPU 書込み /USB 読出し ) タイミングチャート ......................................456 Bulk OUT 転送 (CPU 読出し /USB 書込み ) タイミ ングチャート ..................................................458 SUSPEND 時の USB クロック制御例 ................463 UCLK48 の精度 .....................................................465 USB コネクタの接続 / 未接続の検知 .................464 USB 標準要求コマンドに対するマクロの 自動応答内容 ..................................................461 USB ファンクションの概要 ................................402 USB ファンクションの動作 ................................426 デフォルト状態での USB マクロの動作 ...........462 ボード上の D+ 終端抵抗制御 .............................460 レジスタ表記 .........................................................404 レジスタマップ .....................................................425 割込み要因一覧 .....................................................441 CPU アクセス受信時の制御例 ............................445 CPU アクセス送信時の制御例 ............................447 DMA 受信時の制御例 ..........................................450 DMA 送信時の制御例 ..........................................451 セットアップ制御例 .............................................444 補足事項 .................................................................455 ラストパケット送信データの書込み .................449 USB マクロ デフォルト状態での USB マクロの動作 ...........462 USP USP(User Stack Pointer) ...........................................59 UTIM UTIM0 ∼ UTIM4 (U-TIMER) ..............................311 UTIMC UTIMC0 ∼ UTIMC4 (U-TIMER Control register) ............................. 312 U-TIMER U-TIMER の概要 ................................................... 310 カスケードモード ................................................316 ブロックダイヤグラム ........................................ 310 レジスタ一覧 ........................................................ 310 UTIMR UTIMR0 ∼ UTIMR4(reload register) ...................311 581 あ アービトレーション アービトレーション .............................................369 アクセスモード アクセスモード .......................................................84 アクノリッジ アクノリッジ .........................................................369 アドレス / データマルチプレックスアクセス 通常アクセスおよびアドレス / データマルチプレックスアクセス ..............148 アドレス / データマルチプレックスインタフェース CSn → RD/WR セットアップ設定 (TYP3 ∼ TYP0=0101B, AWR=100BH) ...........................202 外部ウェイトあり (TYP3 ∼ TYP0=0101B, AWR=1008H) ...................................................201 外部ウェイトなし (TYP3 ∼ TYP0=0100B, AWR=0008H) ...................................................199 アドレッシングモード アドレッシングモードの記号 .............................558 エントリ更新 キャッシュのエントリ更新 ..................................47 か インターバルタイマ その他のインターバルタイマ .................................5 インタフェース I2C インタフェース ..................................................4 バスインタフェース .................................................2 インタラプト IN 転送 コントロール (DATA ステージ )/ バルク / インタラプト IN 転送 ....................................432 インプットキャプチャ 16 ビットインプットキャプチャの動作 ............400 16 ビットインプットキャプチャの 入力タイミング ..............................................400 インプットキャプチャの概要 .............................396 インプットキャプチャの ブロックダイヤグラム ..................................396 インプットキャプチャのレジスタ一覧 .............397 インプットキャプチャコントロールレジスタ インプットキャプチャコントロールレジスタ (ICS01, ICS23) .................................................398 インプットキャプチャデータレジスタ インプットキャプチャデータレジスタ (IPCP0 ∼ IPCP3) .............................................397 外部アクセス プリフェッチによる外部アクセスを開始する基本 条件 .................................................................. 203 外部転送 外部転送要求端子 ................................................492 外部トリガ変換 外部トリガ変換による A/D 動作 .......................278 外部バスアクセス 外部バスアクセス ................................................175 外部バスインタフェース 外部バスインタフェースの使用上の注意 ........227 外部バスインタフェースの設定手順 ................ 226 外部バスインタフェースの ブロックダイヤグラム ..................................136 外部バスインタフェースのレジスタ一覧 ........138 外部バスインタフェースのレジスタ概要 ........139 外部バスインタフェースの特長 ........................ 134 外部バスクロック 外部バスクロック (CLKT) ..................................103 外部割込み 外部割込みの動作手順について ........................ 257 外部割込みの動作について ................................257 外部割込み要求レベルについて ........................ 258 外部割込みを使用したクロック発振停止した STOP 状態からの復帰時における 注意事項 .......................................................... 259 スタンバイからの復帰について ........................ 257 外部割込制御部 ブロックダイヤグラム ........................................ 254 レジスタ一覧 ........................................................ 254 外部割込要因レジスタ 外部割込要因レジスタ (EIRR : External Interrupt Request Register) .............................................. 255 外部割込要求レベル設定レジスタ 外部割込要求レベル設定レジスタ (ELVR : External LeVel Register) ..................................256 加減算命令 加減算命令 ............................................................ 561 カスケードモード カスケードモード ................................................316 う き ウォッチドッグ ウォッチドッグリセット .......................................92 ウォッチドッグタイマ制御レジスタ RSRR: リセット要因レジスタ / ウォッチドッグ タイマ制御レジスタ ......................................106 基本クロック分周設定レジスタ 0 DIVR0: 基本クロック分周設定レジスタ 0 ....... 117 基本クロック分周設定レジスタ 1 DIVR1: 基本クロック分周設定レジスタ 1 ....... 120 基本プログラミングモデル 基本プログラミングモデル ..................................51 キャッシュ状態 各動作モード時のキャッシュの状態 .................. 46 い え エンドポイントバッファ エンドポイントバッファの設定 .........................442 設定内容 .................................................................443 設定方法 .................................................................442 582 く クロック クロックについて ..................................................27 クロックコントロールスレジスタ クロックコントロールレジスタ (ICCR0 ∼ ICCR3) ...........................................357 クロック生成制御部 クロック生成制御部の ブロックダイヤグラム ..................................105 クロックソース制御レジスタ CLKR: クロックソース制御レジスタ ................114 クロック同期モード クロック同期モード .............................................329 クロック分周 分周比の設定 .........................................................104 け 検出結果レジスタ 検出結果レジスタ (BSRR) ...................................267 原発振入力 電源投入時の原発振入力について .......................27 こ コプロセッサ コプロセッサエラートラップ ...............................82 コプロセッサ不在トラップ ...................................82 コプロセッサ制御命令 コプロセッサ制御命令 .........................................574 コントローラ 割込みコントローラ .................................................4 コントロールステータスレジスタ コントロールステータスレジスタ (TMCSR) ..........................................................283 コントロール転送 BFOK0o の設定の優先順位 .................................467 BFOK の設定 .........................................................466 GET_DESCRIPTOR コマンドでの データステージの中断 ..................................467 コントロール転送の SETUP ステージ ( クラスコマンド・ベンダコマンド , および 一部の標準コマンド (GET_DESCRIPTOR / SET_DESCRIPTOR / SYNCH_FRAME)) ......429 コントロール転送の SETUP ステージ ( 一部を除 く標準コマンド ) ............................................427 コントロール転送の STATUS ステージ ( クラスコマンド・ベンダコマンド , および 一部の標準コマンド (GET_DESCRIPTOR / SET_DESCRIPTOR / SYNCH_FRAME)) ......430 コントロール転送の STATUS ステージ ( 一部を 除く標準コマンド ) ........................................430 コントロール (DATA ステージ )/ Bulk OUT 転送 ................................................431 コントロール (DATA ステージ )/ バルク / インタラプト IN 転送 ....................................432 コンバータ A/D コンバータ .........................................................4 さ 算術演算 算術演算 ...................................................................38 し 自動応答内容 USB 標準要求コマンドに対するマクロの 自動応答内容 ..................................................461 シフト命令 シフト命令 ............................................................ 563 時分割入出力インタフェース 時分割入出力インタフェース ............................171 周辺クロック 周辺クロック (CLKP) .......................................... 102 周辺割込み DMA による周辺割込みクリア .......................... 501 乗除算命令 乗除算命令 ............................................................ 562 乗除算レジスタ MDH,MDL (Multiply & Divide register: 乗除算結果レジスタ ) ...................................... 59 シリアルアウトプットデータレジスタ シリアルインプットデータレジスタ (SIDR0 ∼ SIDR4) / シリアルアウトプットデータ レジスタ (SODR0 ∼ SODR4) .......................323 シリアルインプットデータレジスタ シリアルインプットデータレジスタ (SIDR0 ∼ SIDR4) / シリアルアウトプットデータ レジスタ (SODR0 ∼ SODR4) .......................323 シリアルコントロールレジスタ シリアルコントロールレジスタ (SCR0 ∼ SCR4) .............................................. 321 シリアルステータスレジスタ シリアルステータスレジスタ (SSR0 ∼ SSR4) ............................................... 324 シリアルモードレジスタ シリアルモードレジスタ (SMR0 ∼ SMR4) ...... 320 自励発振 自励発振(X0/X1 端子入力)................................98 す 水晶発振回路 水晶発振回路について .......................................... 26 スタンバイ スタンバイからの復帰について ........................ 257 スタンバイ制御レジスタ STCR: スタンバイ制御レジスタ ........................ 108 スタンバイモード スタンバイモード ( ストップ / スリープ ) からの 復帰 .................................................................. 249 ステップ / ブロック転送 2 サイクル転送 ステップ / ブロック転送 2 サイクル転送 ......... 495 ステップ / ブロック転送 2 サイクル転送フライバイ転 送 ステップ / ブロック転送 2 サイクル転送 フライバイ転送 .............................................. 496 ステップトレーストラップ ステップトレーストラップの動作 ...................... 81 ストア ロードとストア ......................................................38 ストップモード ストップモード ....................................................130 ストップモード復帰後の待ち時間 .................... 101 583 スリープモード スリープモード .....................................................129 スレーブアドレス検出 スレーブアドレス検出 .........................................368 スレーブアドレスマスク スレーブアドレスマスク .....................................368 せ 制限事項 制限事項 ...................................................................27 接続例 外部との接続例 .............................................177, 181 設定初期化 設定初期化後の待ち時間 .....................................101 設定初期化リセット 設定初期化リセット (INIT) ...................................90 設定初期化リセット(INIT) 解除シーケンス ................................................93 設定内容 設定内容 .................................................................443 設定方法 設定方法 .................................................................442 専用レジスタ CCR(Condition Code Register) ................................54 ILM(Interrupt Level Mask Register) ........................57 MDH,MDL(Multiply & Divide register: 乗除算結果レジスタ ) ......................................59 PC(Program Counter) ...............................................57 PS(Program Status) ...................................................53 RP(Return Pointer) ....................................................58 SCR(System Condition code Register) .....................56 SSP(System Stack Pointer) .................................58, 71 TBR(Table Base Register) ..................................58, 73 USP(User Stack Pointer) ...........................................59 そ 即値セット 即値セット /16 ビット /32 ビット 即値転送命令 ..................................................563 その他 その他のインターバルタイマ .................................5 その他の特長 .............................................................5 その他の命令 その他の命令 .........................................................568 ソフトウェア要求 ソフトウェア要求 .................................................492 ソフト変換 ソフト変換による A/D 動作 ................................277 ソフト変換アナログ入力選択レジスタ ソフト変換アナログ入力選択レジスタ (ADCH) ............................................................275 た タイマコントロールステータスレジスタ タイマコントロールステータスレジスタ (TCCS) ..............................................................390 タイマデータレジスタ タイマデータレジスタ (TCDT) ..........................389 584 タイムベースカウンタ タイムベースカウンタ ........................................ 122 タイムベースカウンタクリアレジスタ CTBR: タイムベースカウンタクリア レジスタ .......................................................... 114 タイムベースカウンタ制御レジスタ TBCR: タイムベースカウンタ制御 レジスタ .......................................................... 111 ダイレクトアドレッシング ダイレクトアドレッシング ..................................39 ダイレクトアドレッシング命令 ダイレクトアドレッシング命令 ........................ 573 ダイレクトアドレッシング領域 ダイレクトアドレッシング領域 .......................... 32 多重 EIT ユーザ割込み・NMI の動作 ..................................79 端子状態 端子状態一覧 ........................................................ 553 ち 遅延スロット 遅延スロット .......................................................... 83 遅延スロット付き動作 遅延スロット付き動作の制限事項 ...................... 65 遅延スロット付き動作の動作説明 ...................... 64 遅延スロット付き動作の命令 ..............................64 遅延スロットなし動作 遅延スロットなし動作の動作説明 ...................... 66 遅延スロットなし動作の命令 ..............................66 遅延分岐命令 遅延分岐命令 ........................................................ 567 遅延割込み 割込み番号 ............................................................ 264 遅延割込みモジュール レジスタ一覧 ........................................................ 262 チップセレクト領域 USB のチップセレクト領域設定 ........................ 536 調歩同期 非同期 ( 調歩同期 ) モード ..................................328 つ 通常アクセス 通常アクセスおよびアドレス / データマルチプレックスアクセス ..............148 通常スタンバイ動作 通常スタンバイ動作と 同期スタンバイ動作 ...................................... 131 通常バスインタフェース CSn 遅延設定 (TYP3 ∼ TYP0=0000B, AWR=000CH) ..................................................193 CSn → RD/WR セットアップ・RD/WR → CSn ホールド設定 (TYP3 ∼ TYP0=0000B, AWR=000BH) ..................................................194 DMA フライバイ転送 (I/O →メモリ ) (TYP3 ∼ TYP0=0000B, AWR=0008H, IOWR=51H) ......................................................195 DMA フライバイ転送 ( メモリ→ I/O) (TYP3 ∼ TYP0=0000B, AWR=0008H, IOWR=51H) ......................................................196 WR+ バイトコントロールタイプ (TYP3 ∼ TYP0= 0010B, AWR=0008H) .......................................187 外部ウェイトタイミング (TYP3 ∼ TYP0=0001B, AWR=2008H) ...................................................191 基本タイミング ( アクセスが連続する場合 ) (TYP3 ∼ TYP0= 0000B, AWR=0008H) .........186 自動ウェイトタイミング (TYP3 ∼ TYP0=0000B, AWR=2008H) ...................................................190 通常バスインタフェース .....................................171 同期ライトイネーブル出力タイミング (TYP3 ∼ TYP0=0000B, AWR=0000H) ...........................192 ライト→ライトタイミング (TYP3 ∼ TYP0=0000B, AWR=0018H) ...........................189 リード→ライトタイミング (TYP3 ∼ TYP0=0000B, AWR=0048H) ...........................188 通常分岐命令 通常分岐 ( 遅延なし ) 命令 ..................................566 通常リセット 通常リセット動作 ...................................................96 ツールリセット端子 ツールリセット端子 (TRST) について ................26 て 逓倍率変更 PLL 逓倍率変更後の待ち時間 ............................101 データステージ GET_DESCRIPTOR コマンドでの データステージの中断 ..................................467 データパス 2 サイクル転送時のデータの動き ......................513 フライバイ転送時のデータの動き .....................515 データレジスタ データレジスタ (IDAR0 ∼ IDAR3) ...................363 デバイス デバイスの動作状態 .............................................126 デバイス状態制御 デバイス状態制御の概要 .....................................125 デマンド転送 2 サイクル転送 デマンド転送 2 サイクル転送 .............................494 デマンド転送フライバイ転送 デマンド転送フライバイ転送 .............................495 電源 電源端子について ...................................................26 電源投入 / 切断時の注意事項 ...............................27 電源投入後の待ち時間 .........................................101 電源投入時について ...............................................27 電源投入時の原発振入力について .......................27 転送シーケンス 転送シーケンスの選択 .........................................493 転送要求 転送要求の受付けと転送 .....................................501 と 同期スタンバイ動作 通常スタンバイ動作と 同期スタンバイ動作 ......................................131 同期リセット 同期リセット動作 ...................................................96 動作初期化リセット 動作初期化リセット (RST) ....................................90 動作初期化リセット(RST) 解除シーケンス ................................................ 93 動作モード 動作モードの概要 ..................................................84 特長 その他の特長 ............................................................ 5 な 内蔵周辺要求 内蔵周辺要求 ........................................................ 492 内部アーキテクチャ 内部アーキテクチャの概要 ..................................33 内部アーキテクチャの構造 ..................................35 内部アーキテクチャの特長 ..................................34 内部動作クロック 内部動作クロックの生成 ...................................... 98 に 入出力回路形式 入出力回路形式 ......................................................19 は バースト 2 サイクル転送 バースト 2 サイクル転送 .................................... 493 バーストアクセス バーストアクセス (first wait cycle:1,page wait cycle:1)(TYP3 ∼ TYP0=0000B, AWR= 3208H) ..................................................197 バースト長 バースト長設定とプリフェッチ効率 ................ 205 バーストフライバイ転送 バーストフライバイ転送 .................................... 494 ハーバード ハーバード←→プリンストン バスコンバータ ................................................ 37 ハーフワードアクセス ハーフワードアクセス ........................................ 183 バイトオーダリング バイトオーダリング .............................................. 60 バスアービトレーション バス権開放 ............................................................ 224 バス権獲得 ............................................................ 225 バスインタフェース バスインタフェース ................................................ 2 バスエラー バスエラー ............................................................ 369 バスコントロールスレジスタ バスコントロールレジスタ (IBCR) ...................350 バスコンバータ 32 ビット←→ 16 ビットバスコンバータ ........... 36 ハーバード←→プリンストン バスコンバータ ................................................ 37 バスステータスレジスタ バスステータスレジスタ (IBSR) ........................ 347 バスモード バスモード .............................................................. 84 バスモード 2 バスモード 2 ( 外 ROM 外バスモード ) ............... 85 585 発振安定待ち 発振安定待ち発生要因 ...........................................94 発振安定待ち時間 発振安定待ち時間の選択 .......................................95 バルク転送 コントロール (DATA ステージ )/ バルク / インタラプト IN 転送 ....................................432 汎用レジスタ 汎用レジスタ ...........................................................52 ひ 比較演算命令 比較演算命令 .........................................................561 ビッグエンディアン ビッグエンディアンのデータバス幅 .................174 ビッグエンディアンの データフォーマット ......................................173 ビットオーダリング ビットオーダリング ...............................................60 ビットサーチモジュール 0 検出 ......................................................................268 1 検出 ......................................................................268 退避・復帰の処理 .................................................270 ビットサーチモジュール (REALOS 使用 ) ...........4 変化点検出 .............................................................269 レジスタ一覧 .........................................................265 ビット操作 論理演算とビット操作 ...........................................38 ビット操作命令 ビット操作命令 .....................................................562 非同期モード 非同期 ( 調歩同期 ) モード ..................................328 ふ ファンクション USB ファンクション機能 ( 機能の有無を モード端子により選択可能 ) ............................5 フライバイ転送 DMA フライバイ転送 (I/O →メモリ ) (TYP3 ∼ TYP0=0000B, AWR=0008H, IOWR=41H) ......................................................215 DMA フライバイ転送 ( メモリ→ I/O) (TYP3 ∼ TYP0=0000B, AWR=0008H, IOWR=41H) ......................................................217 フライバイ転送時のデータの動き .....................515 フラッシュメモリ ロードプログラムを利用して , フラッシュメモリ への書込みを行う例 ......................................550 フリーランタイマ フリーランタイマ .....................................................5 プリフェッチ プリフェッチ許可領域に対する制限事項 .........206 プリフェッチによる外部アクセスを開始する基本 条件 ..................................................................203 プリフェッチバッファからの読出し .................205 プリフェッチバッファのクリア , 更新 ..............206 プリフェッチアクセス 1 回のプリフェッチアクセス動作の単位 ..........204 プリフェッチアクセスの一時停止と 任意クリア ......................................................204 586 プリフェッチ効率 バースト長設定とプリフェッチ効率 ................ 205 プリンストン ハーバード←→プリンストン バスコンバータ ................................................ 37 プルアップ機能レジスタ プルアップ機能レジスタ (PCR) .........................235 プログラムローダモード 詳細 ........................................................................540 設定方法 ................................................................ 539 ブロックダイヤグラム 10 ビット A/D コンバータの ブロックダイヤグラム ..................................273 16 ビットパルス幅カウンタの ブロックダイヤグラム ..................................378 16 ビットフリーランタイマの ブロックダイヤグラム ..................................388 16 ビットリロードタイマの ブロックダイヤグラム ..................................281 DMA コントローラの ブロックダイヤグラム ..................................472 I2C インタフェースの ブロックダイヤグラム ..................................346 MB91305 のブロックダイヤグラム .......................6 PPG のブロックダイヤグラム ............................298 UART のブロックダイヤグラム ........................ 319 USB ファンクションの ブロックダイヤグラム ..................................403 U-TIMER のブロックダイヤグラム ...................310 インプットキャプチャの ブロックダイヤグラム ..................................396 外部バスインタフェースの ブロックダイヤグラム ..................................136 外部割込制御部のブロックダイヤグラム ........254 クロック生成制御部の ブロックダイヤグラム ..................................105 遅延割込みモジュールの ブロックダイヤグラム ..................................262 ビットサーチモジュールの ブロックダイヤグラム ..................................265 ポート基本ブロックダイヤグラム .................... 230 割込みコントローラの ブロックダイヤグラム ..................................244 分岐 分岐 ..........................................................................38 分岐命令 分岐命令の概要 ......................................................63 分周比 分周比の設定 ........................................................ 104 へ ベクタテーブル EIT ベクタテーブル ...............................................74 変化点検出 変化点検出 ............................................................ 269 変化点検出用データレジスタ 変化点検出用データレジスタ (BSDC) ..............267 ほ ポート機能レジスタ ポート機能レジスタ (PFR) ..................................234 ポートデータレジスタ ポートデータレジスタ (PDR) .............................232 ポート方向レジスタ ポート方向レジスタ (DDR) ................................233 ホールドリクエスト ホールドリクエスト取下げ要求 (Hold Request Cancel Request) ................................................248 ホールドリクエスト取り下げ要求機能 シーケンス .............................................................251 ハードウェア構成 .................................................250 ボーレート ボーレートの計算 .................................................315 ま マスタアドレッシング マスタアドレッシング .........................................369 み 未使用入力端子 未使用入力端子の処理について ...........................26 未定義命令例外 未定義命令例外の動作 ...........................................81 め 命令 20 ビット遅延分岐マクロ命令 ............................570 20 ビット通常分岐マクロ命令 ............................569 32 ビット遅延分岐マクロ命令 ............................572 32 ビット通常分岐マクロ命令 ............................571 加減算命令 .............................................................561 コプロセッサ制御命令 .........................................574 シフト命令 .............................................................563 乗除算命令 .............................................................562 即値セット /16 ビット /32 ビット 即値転送命令 ..................................................563 その他の命令 .........................................................568 ダイレクトアドレッシング命令 .........................573 遅延分岐命令 .........................................................567 通常分岐 ( 遅延なし ) 命令 ..................................566 比較演算命令 .........................................................561 ビット操作命令 .....................................................562 メモリストア命令 .................................................565 メモリロード命令 .................................................564 リソース命令 .........................................................573 レジスタ間転送命令 .............................................565 論理演算命令 .........................................................561 命令一覧表 FR ファミリの命令一覧表 ...................................560 命令一覧表の読み方 .............................................557 命令概要 その他の命令概要 ...................................................39 命令キャッシュ I-Cache を使用するときの設定方法 .....................49 各動作モード時のキャッシュの状態 ...................46 キャッシュ可能領域 .............................................. 48 キャッシュのエントリ更新 ..................................47 制御レジスタ構成 ..................................................43 本体構成 .................................................................. 41 命令キャッシュの概要 .......................................... 40 命令キャッシュメモリ ............................................ 3 命令フォーマット 命令フォーマット ................................................559 メモリ 内蔵メモリ ................................................................ 3 メモリ空間 ダイレクトアドレッシング領域 .......................... 32 メモリストア命令 メモリストア命令 ................................................565 メモリマップ メモリマップ ............................................ 32, 62, 549 メモリロード命令 メモリロード命令 ................................................564 も モード端子 モード端子 .............................................................. 86 モード端子 (MD0 ∼ MD3) について ................... 26 ゆ ユーザ割込み ユーザ割込み・NMI の動作 ..................................79 優先順位 優先順位判定 ........................................................ 247 ら ラストパケット ラストパケット送信データの書込み ................ 449 ラッチアップ ラッチアップ防止のために ..................................26 り リセット 通常リセット動作 ..................................................96 同期リセット動作 ..................................................96 リセット ( デバイス初期化 ) の概要 .................... 89 リセットのタイミングチャート ........................ 551 リセット要因レジスタ RSRR: リセット要因レジスタ / ウォッチドッグ タイマ制御レジスタ ...................................... 106 リソース命令 リソース命令 ........................................................ 573 リトルエンディアン リトルエンディアンの概要 ................................178 リトルエンディアンのデータバス幅 ................ 180 リトルエンディアンのデータフォーマット .... 179 リロードタイマ リロードタイマ (REALOS 用 1 チャネル含む ) .......................... 4 リロード値 ボーレートと U-TIMER のリロード値の 設定例 .............................................................. 337 587 れ レジスタ一覧 16 ビットパルス幅カウンタの レジスタ一覧 ..................................................378 16 ビットフリーランタイマのレジスタ一覧 ....389 16 ビットリロードタイマのレジスタ一覧 ........282 DMA コントローラのレジスタ一覧 ..................471 I2C インタフェースのレジスタ一覧 ..................343 PPG のレジスタ一覧 ............................................297 UART のレジスタ一覧 .........................................318 U-TIMER のレジスタ一覧 ...................................310 インプットキャプチャのレジスタ一覧 .............397 外部バスインタフェースのレジスタ一覧 .........138 遅延割込みモジュールのレジスタ一覧 .............262 ビットサーチモジュールのレジスタ一覧 .........265 レジスタ間転送命令 レジスタ間転送命令 .............................................565 レベルマスク 割込み・NMI に対するレベルマスク ..................69 ろ ロード ロードとストア .......................................................38 ロードプログラム ロードプログラムを利用して , フラッシュメモリ への書込みを行う例 ......................................550 論理演算 論理演算とビット操作 ...........................................38 論理演算命令 論理演算命令 .........................................................561 わ ワードアクセス ワードアクセス .....................................................182 ワードアライメント ワードアライメント ...............................................61 割込み USB の割込みについて ........................................537 割込みコントローラ .................................................4 割込み発生およびフラグの セットタイミング ..........................................331 割込み・NMI に対するレベルマスク ..................69 割込許可レジスタ 割込許可レジスタ (ENIR : ENable Interrupt request Register) ............................................................255 割込みコントローラ 主要機能 .................................................................242 ハードウェア構成 .................................................242 優先順位判定 .........................................................247 レジスタ一覧 .........................................................243 割込みベクタ 割込みベクタ .........................................................534 割込み要因 割込み要因一覧 .....................................................441 割込み要求 割込み要求発生 .....................................................386 割込み 割込みスタック .......................................................72 588 ワンショット動作 ワンショット動作 ................................................305 CM71-10129-2 富士通半導体デバイス • CONTROLLER MANUAL FR60 32 ビット・マイクロコントローラ MB91305 ハードウェアマニュアル 2006 年 5 月 第 2 版発行 発行 富士通株式会社 編集 営業推進統括部 営業推進部 電子デバイス事業本部