SH2の構造と機能
本ページでは,今回使用するSH7085 マイコンの機能の概要について説明する.詳細な説明はそれらの機能を実際に使用するときに詳細に説明する.
今回使用するSH7085 は,16ビット固定長命令のRISC型の命令セットアーキテクチャを採用したマイコンである.ハードウェアアーキテクチャとしては,プリンストンアーキテクチャを採用しており,内部は32ビットのデータバスで接続されている.
このマイコンは,5段(命令によっては3段か4段)のパイプライン処理を採用し,高速化を行なっている.また,内部が32ビットバスで,命令長が16ビットであるため,1回のフェッチで2命令を同時にフェッチできる仕組みになっている.
スーパースカラではないので,2命令を同時にパイプライン処理することはできない.2命令を同時にフェッチするのみで,その後は,1命令づつパイプライン処理されていく.2命令を同時にフェッチする利点としては,MA と IF が同時に発生する場合に,すでにIF しているので,パイプラインストールを減らすことができる点である.
図1は,SH7085 の内部のブロック図である.バスは3つ存在しており,マイコンのコアになるCPUやROM,RAM の部分はローカルバス(Lバス)と呼ばれるバスで接続されている.メモリの転送などの機能を実現するDMACやDTCは,インターナルバス(Iバス)で接続されている.そして,周辺機能はペリフェラル(周辺)バス(Pバス)と呼ばれるバスで接続されている.
それぞれのバスには,クロック(バスクロック)が必要で,バスを介してデータの転送を行う際,このバスクロックが転送速度に大きく関係する.Lバスのクロックを Iφ,Iバスのクロックを Bφ,周辺クロックを Pφ と呼ぶ.
それぞれのバスクロックは,Iφ が 80MHz,Bφ が 40MHz,Pφ が 20MHz に設定されている.今回は,図1の赤色の機能しか使用しないので,Pφ の周波数のみを注意すればよい.また,MTU2 や MUT2S のクロック(MPφ,MIφ)も20MHz に設定されている.
図1:SH7085内部のブロック図
低消費電力モード(STB)
低消費電力モード(スタンバイモード)機能は,図2のように他の機能モジュールへクロックを与えるか否かを設定する機能モジュールである.デフォルトでは,多くの機能は停止状態なっているので,使用する機能があればその機能モジュールにクロックを与えるように STB 内のレジスタを設定する必要がある.
図2:低消費電力モードの役割
ピンファンクションコントローラ(PFC)
SH2シリーズのマイコンは,図3のように1つの物理的な端子に多くの機能が与えられており,ユーザは,PFC 内のレジスタを設定し,どの機能をその端子に割り当てるかを決める必要がある.何も設定しない状態では,汎用入出力ポートの入力端子として設定されている場合が多い.
SH7085には,ポートA 〜 ポートE までが存在しており,それぞれのポートには数十ビットの端子が割り当てられている.汎用入出力ポートに限れば,図3のデータレジスタ(DR)を介して端子からの信号の入出力を行う.
汎用入出力以外の機能を選択した場合には,その機能に応じて格納されるレジスタが変化するので,詳細は選択した機能のマニュアルを参照する必要がある.
A/D変換器(ADC)
図4:A/D変換器
割込みコントローラ(INTC)
図5:割込みとは
割込みコントローラは,図6のように,割込みが発生したときの割込み要因の順位を判定し,さらに,CPU内部の割込みマスクビットと比較を行い,優先順位が高ければ,CPUは,現在の処理を中断して割込み処理を行う.
このように,複数の割込みが同時に発生する可能があるので,それぞれの割込みに優先順位を設定することができる.これを割込みレベルと呼ぶ.割込みレベルは,0〜16ある.0 が割込みレベルが一番低く,割込みは,発生しない.16 が一番割込みレベルが高く,必ず割込みが発生する.
CPU内部の割込みマスクビットは,4ビットで構成されており,0 〜 15 までの割込みマスクを示している.この割込みマスクビットより高い順位の割込みレベルでなければ割込みは発生しない.
つまり,割込みレベル16とは,この割込みマスクビットより必ず高い優先順位であるため,必ず割込みが発生するのである.このような割込みをNMI(Non Maskable Interrupt:マスクできない割込み)と呼ぶ.このような割込みが無ければ非常停止機能などに対応できなくなってしまう.
割込みは,図7のように,割込みマスクビットと割込みレベルを比較して割込み処理に遷移するか否かを決定する.図6の優先順位比較回路で予め設定しておいた優先順位の比較が行われて,その結果を割込みマスクビットを比較するのである.
もし,同じ割込みレベルが同じ割込みが同時に発生した場合,予め決められている優先順位で発生する割込みを決めることになっている.
図7:割込みの優先順位
図8のように,割込みマスクビットより小さな割込みレベルの割込みは絶対に発生しない.また,割込みマスクビットと割込みレベルが同じであってもその割込みは発生しない仕組みになっている.
図8:割込み処理へ遷移できない
コンペアマッチタイマ(CMT)
図9:周期タイマ
また,周期タイマとしてではなく,自分が思ったような周期でタイマを動かしたいとき,自分で値を設定することができる.図10の設定値がそれである.もちろん,0xFFFF を超えて設定することはできない.この設定値と,カウント値を比較して一致したら,0x0000 に戻すような動作をする.これをコンペアマッチタイマと呼ぶ.
図10:コンペアマッチタイマ
カウントをアップさせるタイミングは図11のように様々な設定により0にクリアされる周期そのものを伸ばしたり,短くしたりすることが可能である.
図11:様々な周期を選択
図11のような周期を決めるには,図12のようなカウントアップするタイミングを設定する必要がある.これは,周辺クロックPφ に依存しており,Pφ を分周して必要なタイミングを作り出すのである.図12の階段の一段がカウント値がカウントされるタイミングである.
図12:カウントアップのタイミングは選択可能
以上がCMTの説明である.MTU2 やMTU2S にも同じ機能があるが,MTU2 やMTU2S には, より多くの機能があり,CMTに比べるとかなり複雑そうに感じる.
そのため,本ページでは,CMTの説明のみに留めるが,CMTと同じようにMTU2 や MTU2S を使用するときには,その時に説明を行う.
演習問題
- Iφ, Bφ, Pφ の設定で正しいものをひとつ選べ
- Iφ = 80MHz,Bφ = 80MHz, Pφ = 40MHz
- Iφ = 80MHz,Bφ = 40MHz, Pφ = 20MHz
- Iφ = 80MHz,Bφ = 20MHz, Pφ = 10MHz
- 端子の機能が汎用入出力ポートとなっている時,データの入出力で使われるレジスタが備わっているSH7085 の機能モジュールの名称をアルファベット3文字で答えよ.
- SH7085 に搭載されているA/D変換器のチャネルは何チャネルあるか答えよ.
- SH7085 に搭載されているA/D変換器の分解能は何ビットか答えよ.
- マスクできない割込みを通称,何と呼ぶかアルファベット3文字で答えよ.
- 現在の割込みマスクが7のとき,割込みレベル7の割込みが発生したとき,割込み処理に遷移するか否か答えよ.
- 周辺クロック Pφ が 20MHz のとき,2周期ごとに(2分周して)カウントアップするように設定すると,カウントアップのタイミングは何秒であるか答えよ.