以下図面を参照して、本実施の形態にかかる受信機の構成及び動作について説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
図1は、本実施の形態にかかるマイクロコンピュータの構成を示すブロック図である。マイクロコンピュータ1は、中央処理装置(CPU(Central Processing Unit))10、割込みコントローラ(INT)11、データトランスファーコントローラ(DTC)12、ROM(Read Only Memory)13、RAM(Random Access Memory)14、バスコントローラ(BSC)15、タイマ16、通信モジュール17、アナログモジュール18、及び入出力ポート(I/O)19を有する。
中央処理装置(CPU)10は、マイクロコンピュータ1の全体制御を行う処理装置であり、ROM13から命令を読み出して実行する。
割込みコントローラ(INT)11は、タイマ16、通信モジュール17、アナログモジュール18等からの割り込み要求、及びマイクロコンピュータ1の外部からの複数の外部割り込み信号を基にI/O入出力ポート19に入力された割込み要求、を受け付ける。割込みコントローラ(INT)11は、受け付けた割り込み要求に応じて中央処理装置(CPU)10またはデータトランスファーコントローラ(DTC)12に対し、割込みまたはデータ転送要求を入力する。割込みコントローラ(INT)11は、割込みを開始/終了したときに、割込みをクリアする信号である割込みクリア信号を出力する。割込みクリア信号は、割込み要因フラグまたは割り込み信号に応じた出力先(タイマ16、通信モジュール17、アナログモジュール18、入出力ポート19のうち、対応するもの)に出力される。割込みコントローラ(INT)11の詳細構成は、図2を参照して後述する。
データトランスファーコントローラ(DTC)12は、中央処理装置(CPU)10の設定処理に応じて、データ転送を行う。データトランスファーコントローラ(DTC)12は、中央処理装置(CPU)10が行う解析処理(後述するモードの判定等)を代替実行してデータ転送処理を行う。データトランスファーコントローラ(DTC)12の詳細構成は図3を参照して後述する。
バスコントローラ(BSC)15は、中央処理装置(CPU)10やデータトランスファーコントローラ(DTC)12からバスリクエスト信号を受け付けて、マイクロコンピュータ1内のバスの調停を行う。バスコントローラ(BSC)15は、使用許可を与える処理部に対してバス使用許可信号を出力する。このためバスコントローラ(BSC)15は、中央処理装置(CPU)10及びデータトランスファーコントローラ(DTC)12と、バスリクエスト、バスアクノレジの入出力を行う。さらにバスコントローラ(BSC)15は、バス使用許可信号(バスアクノレジ)を与えた中央処理装置(CPU)10またはデータトランスファーコントローラ(DTC)12と、バスコマンド、ウェイト、アドレス、データなどの入出力を行う。これによりバスコントローラ(BSC)15は、内部バスに接続されたRAM14やそのほかの機能ブロックやモジュールに対し、中央処理装置(CPU)10またはデータトランスファーコントローラ(DTC)12からの読み出し/書き込みを実現する。
タイマ16は、マイクロコンピュータ1内で行われる一般的な計時処理を行う。通信モジュール17は、シリアルコミュニケーションインターフェイス等から構成される。アナログモジュール18は、アナログ−デジタル変換処理を行うモジュールであり、A/D変換器及びD/A変換器等から構成される。
次に図2を参照して割込みコントローラ(INT)11の詳細構成について説明する。マイクロコンピュータ1の割込み要因には、内部割込みと外部割込みの2種類がある。割込み要因フラグレジスタ33は、それぞれの割込み要因(内部割込み、外部割込み)に対する割込みフラグを記憶する。内部割込みの割込み要因フラグは、タイマ16、通信モジュール17、アナログモジュール18が所定状態になった場合に1にセットされる。外部割込みの割込み要因フラグは、外部割込み入力端子が所定レベルになった場合、または所定信号に変化が発生した場合に1が設定される。各割込み要因フラグは、中央処理装置(CPU)10の所定の書き込み動作により0にクリアされる。また各割込み要因フラグは、データトランスファーコントローラ(DTC)12のデータ転送が終了した場合に0にクリアされる。
割込み許可回路34は、割込み要因フラグレジスタ33から割込み要因フラグを読み出して割込み/DTC判定回路35に出力する。また割込み許可回路34は、DTC許可レジスタ(DTER)37からデータを入力して割込み/DTC判定回路35に出力する。DTC許可レジスタ(DTER)37は、中央処理装置(CPU)10から読み出し/書き込み可能なレジスタであり、各割込み要因について1ビットの値を保持する。以下の説明では、この割込み要因に対する1ビットをDTEビットとも呼称する。各DTEビットは、割込み要求がなされた場合に、データトランスファーコントローラ(DTC)12を起動するか、中央処理装置(CPU)10に割込みを許可するかを設定するビットである。DTC許可レジスタ(DTER)37内のある割込み要因についてのDTEビットに0が設定されている場合、中央処理装置(CPU)10への割り込み要求が発行される。一方、DTC許可レジスタ(DTER)37のある割込み要因についてのDTEビットに1が設定されている場合、データトランスファーコントローラ(DTC)12に対する起動要求が発行される。
割込み/DTC判定回路35は、割込み要因フラグが1となった場合、DTC許可レジスタ(DTER)37内のDTEビットを判定して中央処理装置(CPU)10への割込み要求、またはデータトランスファーコントローラ(DTC)12に対する起動要求、を優先順位判定回路36に入力する。中央処理装置(CPU)10への割込み要求と、データトランスファーコントローラ(DTC)12に対する起動要求は、独立して優先順位判定回路36に入力される。
優先順位判定回路36は、図示しないプライオリティレジスタ、割込みマスクレベルを参照可能に構成される。優先順位判定回路36は、複数の割込み要求(または起動要求)が生じている場合に、プライオリティレジスタや割込みマスクレベルを参照して各要求に優先度を判定する。そして優先順位判定回路36は、最も優先順位の高い要求に対してベクタ番号を生成する。優先順位判定回路36は、中央処理装置(CPU)10への割込み要求と、データトランスファーコントローラ(DTC)12に対する起動要求の其々について判定を行う。優先順位判定回路36は、中央処理装置(CPU)10に対してCPU割込み要求とベクタ番号を出力する。
同様に優先順位判定回路36は、データトランスファーコントローラ(DTC)12に対してDTC起動要求(DTCREQ)とベクタ番号(DTCVEC)を出力する。詳細には優先順位判定回路36は、DTC起動要求(DTCREQ)を直接データトランスファーコントローラ(DTC)12に出力し、ベクタ番号(DTCVEC)をラッチ回路31に出力する。ラッチ回路31は、データトランスファーコントローラ(DTC)12からDTC動作開始信号とDTC動作終了信号を受け付ける。DTC動作開始信号が活性状態の場合、ラッチ回路31が保持するベクタ番号(DTCVEC)のラッチまたは保持が行われる。すなわちベクタ番号(DTCVEC)がデータトランスファーコントローラ(DTC)12に通知される。DTC動作終了信号が活性状態の場合、ベクタ番号(DTCVEC)のラッチが終了する。DTC動作終了信号が活性状態の場合、ベクタ番号(DTCVEC)とDTC動作終了信号がデコーダ32に入力される。これに応じてデコーダ32は、対応する割込み要求フラグの0クリアを実行する。
所定の割込み要因の発生によりデータトランスファーコントローラ(DTC)12を起動する場合、中央処理装置(CPU)10は予めデータ転送情報(転送情報セットとも記載する。)を記憶装置(例えばRAM14)のデータ転送情報配置領域の所定アドレスに書き込む。また中央処理装置(CPU)10は、当該割込み要因に関する割込み許可ビットと当該割込み要因に対応したDTEビットを共に1に設定しておく。
割込み要因の割込み許可ビット及びDTEビットが1に設定された後に、割込み要因フラグに1が設定された場合、データトランスファーコントローラ(DTC)12が起動される。ここでDTEビットが1に設定されているため、中央処理装置(CPU)10への割込みは要求されない。
所定のデータ転送が終了した場合、データトランスファーコントローラ(DTC)12はデータ転送に対応するDTEビットを0にクリアする。この際に当該割込み要因フラグには1が設定された状態で当該DTEビットが0にクリアされるため、中央処理装置(CPU)10に対する割込みが要求される。中央処理装置(CPU)10は、この割込みに応じて所定のデータ転送終了に対応した処理を実行するとともに、データ転送情報やDTEビットの再設定を行う。
次に図3を参照してデータトランスファーコントローラ(DTC)12について説明する。データトランスファーコントローラ(DTC)12は、データ転送機能制御部(FC)20、データ転送制御ブロック(DTCCNT)21、バスインターフェイス(BIF)22、モードレジスタ(MR)23、ソースアドレスレジスタ(SAR)24、デスティネーションアドレスレジスタ(DAR)25、データ転送カウンタ(CR)26、データレジスタ(DR)27、演算器(ALU)28、ベクタアドレスレジスタ(VAR)29、及びベクタ生成ブロック(VG)30を有する。
データ転送制御ブロック(DTCCNT)21は、モードレジスタ(MR)23に読み出したデータに応じてデータ転送の処理を切り替えるコントローラである。データ転送制御ブロック(DTCCNT)21の詳細な動作については、図5〜図13を参照して後述する。
データ転送機能制御部(FC)20は、後述のシフトモード等の所定のデータ転送モードにおいて、前のデータ転送情報及び転送データの中から必要なものを保持する。データ転送制御ブロック(DTCCNT)21は、後にデータレジスタ(MR)23に読み出したデータとデータ転送機能制御部(FC)20の保持するデータを用いてアドレスの変更等を行う。つまりデータ転送機能制御部(FC)20は、後のデータ転送情報を変更(修飾)するデータを保持する。
バスインターフェイス(BIF)22は、DTC内部バスとマイクロコンピュータ1の内部バスとのインターフェイスとして動作する。バスインターフェイス(BIF)22は、バスリクエスト、バスアクノレジ、バスコマンド、ウェイト、アドレス等のデータの入出力の仲介を行う。
ベクタ生成ブロック(VG)30は、割込みコントローラ(INT)11から入力されるベクタ番号(DTCVEC)に従ってベクタアドレスを生成する。例えばベクタ生成ブロック(VG)30は、ベクタ番号(DTCVEC)を4倍して所定のオフセットを加算することによりベクタアドレスを生成する。
ベクタアドレスレジスタ(VAR)29は、ベクタアドレスを用いて記憶領域(RAM14等)から読み出したデータ転送情報の先頭アドレスを格納する。モードレジスタ(MR)23、ソースアドレスレジスタ(SAR)24、デスティネーションアドレスレジスタ(DAR)25、データ転送カウンタ(CR)26、データレジスタ(DR)27は、ベクタアドレスレジスタ(VAR)29に格納されたデータ転送情報の先頭アドレスを基に順次RAM14等から読み出したデータ転送情報をそれぞれ格納する。データ転送情報は、データ転送処理に使用する各種の情報である。すなわちデータ転送情報は、モードレジスタ(MR)23、ソースアドレスレジスタ(SAR)24、デスティネーションアドレスレジスタ(DAR)25、データ転送カウンタ(CR)26、データレジスタ(DR)27に分割されて保持される。モードレジスタ(MR)23は、データ転送の制御内容を示す転送モード情報を保持する。ソースアドレスレジスタ(SAR)24は、データ転送の転送元アドレスを保持する。デスティネーションアドレスレジスタ(DAR)25は、データ転送の転送先アドレスを保持する。データ転送カウンタ(CR)26は、データ転送の転送回数を保持する。データレジスタ(DR)27は、比較対象や累算結果等のデータを保持する。
演算器(ALU)28は、シフト演算、論理演算、算術演算、CRC演算等の機能を持つ。演算器(ALU)28は、1つの入力データ(TCRLなど)をシフトして別の入力データ(ソースアドレスレジスタ(SAR)24の格納データ等)から減算する等の演算を実行可能である。演算器(ALU)28は、2つのデータ、例えば読み出しデータとデータレジスタ(DR)27の格納データの比較(一致、大小比較)等の演算結果(ゼロ検出、キャリー/ボロー検出)等をデータ転送制御ブロック(DTCCNT)21に通知する。
DTC内部バスは、複数のバス(バスA,B,C)から構成されている。演算器(ALU)28は、この複数のバスを介して各レジスタ23〜27からデータ読み出しを行うことができる。ソースアドレスレジスタ(SAR)24、デスティネーションアドレスレジスタ(DAR)25、データ転送カウンタ(CR)26、データレジスタ(DR)27の保持する情報を限定することにより、データトランスファーコントローラ(DTC)12内の回路的な経路が少なくなる。またこれらのレジスタを制御するデータ転送制御ブロック(DTCCNT)21の論理規模も抑制することができる。
次に図4を参照して、データトランスファーコントローラ(DTC)12の管理するデータ転送情報(転送情報セット)について説明する。データ転送情報は、上述のようにモードレジスタ(MR)23、ソースアドレスレジスタ(SAR)24、デスティネーションアドレスレジスタ(DAR)25、データ転送カウンタ(CR)26、データレジスタ(DR)27に分割されて保持される。
データ転送カウンタ(CR)26は、図4に示すようにブロック転送カウントレジスタ(BTCR)と転送カウントレジスタ(TCR)に分割される。転送カウントレジスタ(TCR)は、上位の8ビット(TCRH)と下位の8ビット(TCRL)に分割されている。
データ転送情報を保持する各レジスタ(23〜27)は1組分のデータ保持回路のみがデータトランスファーコントローラ(DTC)12内に存在し、特に制限はされないものの中央演算装置(CPU)10のアドレス空間上には存在しない。各レジスタ(23〜27)に格納されるべきデータ転送情報は、必要組数がCPUアドレス空間上の所定のデータ転送情報配置領域(例えばRAM14であり、図6等を参照して後述する。)に配置される。
次にモードレジスタ(MR)23のビット構成について説明する。ビット31、30,29、28は、それぞれACMビット、SWMビット、TSMビット、SFMビットであり、これらのビットのデータはデータ転送のモードを指定する。
ビット31〜28の設定データが0000である場合、通常のデータ転送モードを示す。この場合、データ転送情報としてモードレジスタ(MR)23、ソースアドレスレジスタ(SAR)24、デスティネーションアドレスレジスタ(DAR)25、データ転送カウンタ(CR)26が選択される。つまりデータ転送制御ブロック(DTCCNT)21が読み出すデータ転送情報は、32ビット×4のデータサイズとなる。
ACMビット(アキュムレートモード情報とも記載する。)に1がセットされた場合、アキュムレートモードを示す。この場合、データ転送情報としてモードレジスタ(MR)23、ソースアドレスレジスタ(SAR)24、デスティネーションアドレスレジスタ(DAR)25、データ転送カウンタ(CR)26、データレジスタ(DR)27が選択される。つまりデータ転送制御ブロック(DTCCNT)21が読み出すデータ転送情報は、32ビット×5のデータサイズとなる。
SWMビット(スイッチモード情報とも記載する。)に1がセットされた場合、スイッチモードを示す。この場合、データ転送情報としてモードレジスタ(MR)23、ソースアドレスレジスタ(SAR)24、データレジスタ(DR)27が選択される。つまりデータ転送制御ブロック(DTCCNT)21が読み出すデータ転送情報は、32ビット×3のデータサイズとなる。スイッチモードでは、データ転送制御ブロック(DTCCNT)21は、読み出したデータに応じて次回のデータ転送に用いるデータ転送情報を切り替える。詳細な動作は、図9及び図10を参照して後述する。
TSMビット(テスト転送モード情報とも記載する。)に1がセットされた場合、テスト転送モードを示す。この場合、データ転送情報としてモードレジスタ(MR)23、ソースアドレスレジスタ(SAR)24、デスティネーションアドレスレジスタ(DAR)25、データ転送カウンタ(CR)26、データレジスタ(DR)27が選択される。つまりデータ転送制御ブロック(DTCCNT)21が読み出すデータ転送情報は、32ビット×5のデータサイズとなる。
SFMビット(シフトモード情報とも記載する。)に1がセットされた場合、シフトモードを示す。この場合、データ転送情報としてモードレジスタ(MR)23、ソースアドレスレジスタ(SAR)24が選択される。つまりデータ転送制御ブロック(DTCCNT)21が読み出すデータ転送情報は、32ビット×2のデータサイズとなる。シフトモードでは、データトランスファーコントローラ(DTC)12は、読み出したデータをデータ転送機能制御部(FC)20に退避し、次のデータ転送の際に退避したデータを用いて転送元アドレス等を調整する。詳細な動作は、図12及び図13を参照して後述する。
上述のようにACMビット、SWMビット、TSMビット、SFMビットの設定により、データ転送制御ブロック(DTCCNT)21が各レジスタに読み出すデータ容量が変化する。
モードレジスタ(MR)23のビット27、26はそれぞれALMビット、CLMビットである。これらのビットは、データトランスファーコントローラ(DTC)12のデータ転送情報の設定方法を指定する。
ALMビット(ALM情報とも記載する。)に1がセットされた場合、アドレスロードモードを示す。アドレスロードモードの場合、ソースアドレスレジスタ(SAR)24に従って読み出した転送データがデスティネーションアドレスレジスタ(DAR)25に書き込まれる。書き込みの際にデータサイズに応じて下位ビットを設定する。すなわちアドレスロードモードの場合、読み出したデータに応じて転送先アドレスが動的に変更される。特に制限はされないものの、転送先アドレスへのデータ書き込みは行われない。デスティネーションアドレスレジスタ(DAR)25の設定の後、ALMビットは0にクリアされる。デスティネーションアドレスレジスタ(DAR)25の設定の際に、データ転送カウンタ(CR)26は更新されない。
CLMビット(CLM情報とも記載する。)に1がセットされた場合、カウンタロードモードを示す。カウンタロードモードの場合、ソースアドレスレジスタ(SAR)24に従って読み出した転送データがデータ転送カウンタ(CR)26に書き込まれる。すなわちカウンタロードモードの場合、読み出したデータに応じて転送回数が動的に変更される。書き込みの際に必要に応じて上位ビットがゼロ拡張される。なおカウンタロードモードであって後述のTMD1ビット及びTMD0ビットによりブロック転送モードが指定されている場合、データ転送カウンタ(CR)26のBTCR(上位16ビット)が設定される。特に制限はされないものの、カウンタロードモードの場合には転送先アドレスへのデータ書き込みも行われるようにすることができる。データ転送カウンタ(CR)26の設定の後、CLMビットは0にクリアされる。データ転送カウンタ(CR)26の設定の際に、データ転送カウンタ(CR)26は更新されない。
ALMビット及びCLMビットの両方に1がセットされている場合、1回目のデータ転送においてデスティネーションアドレスレジスタ(DAR)25の設定が行われ、2回目のデータ転送においてデータ転送カウンタ(CR)26の設定が行われる。アドレスロードモードおよびカウンタロードモードの詳細な動作例は図7及び図8を参照して後述する。
モードレジスタ(MR)23のビット23は、SELビットである。SELビットは、シフトモードの場合に、転送元または転送先のいずれかのアドレスに対して演算を行うかを指定する。
モードレジスタ(MR)23のビット19〜16は、OP3〜OP0を示すビットである。これらのビットは、各モードにおける演算種別を指定する。
モードレジスタ(MR)23のビット15、ビット14はそれぞれSM1ビット、SM0ビットである。これらのビットは、データ読み出し後にソースアドレスレジスタ(SAR)24をインクリメントするか、デクリメントするか、固定にするか、を指定する。
モードレジスタ(MR)23のビット13、ビット12はそれぞれDM1ビット、DM0ビットである。これらのビットは、データ書き込み後にデスティネーションアドレスレジスタ(DAR)25をインクリメントするか、デクリメントするか、固定にするか、を指定する。
モードレジスタ(MR)23のビット11、ビット10はそれぞれTMD1ビット、TMD0ビットである。これらのビットは、データ転送モードの選択に用いられる。データ選択モードとしてノーマルモード、リピートモード、ブロック転送モードがある。
TMD1ビット、TMD0ビットが双方とも0である場合、ノーマルモードを示す。ノーマルモードでは、1回の起動(1回の起動要因の発生)に対し、ソースアドレスレジスタ(SAR)24で示すアドレスからデスティネーションアドレスレジスタ(DAR)25で示すアドレスへのデータ転送が1回行われる。
データ転送の後に、SM1ビット、SM0ビット、DM1ビット、DM0ビットの設定に基づいてソースアドレスレジスタ(SAR)24及びデスティネーションアドレスレジスタ(DAR)25の操作(インクリメント、デクリメント、固定のいずれか)が行われる。そしてデータ転送カウンタ(CR)26のデクリメントが行われる。
これらの操作は、1回の起動要因の発生に対して1回実行され、この実行がデータ転送カウンタ(CR)26で指定された回数だけ行われる。データ転送カウンタ(CR)26で指定された回数が終了した場合、データトランスファーコントローラ(DTC)12による一連のデータ転送が終了する。
TMD1ビット、TMD0ビットにそれぞれ0、1が設定された場合、データ転送モードがリピートモードとなる。またTMD1ビット、TMD0ビットにそれぞれ1、0が設定された場合、データ転送モードがブロック転送モードとなる。リピートモード及びブロック転送モードは、公知の技術により実現される。
モードレジスタ(MR)23のビット9はDIRビットである。DIRビットは、転送元又は転送先のいずれをリピート領域(またはブロック領域)とするかを指定するためのビットである。
モードレジスタ(MR)23のビット7、ビット6はそれぞれSz1ビット、Sz0ビットである。これらのビットは、1回のデータ転送をバイトサイズ、ワードサイズ、ロングワードサイズのいずれにより行うかを指定するためのビットである。
モードレジスタ(MR)23のビット2〜0は、それぞれNXTSビット、NXTE1ビット、NXTE0ビットである。これらのビットは、1つの起動要因に対してデータ転送を終了するのか、次のデータ転送を行うかを選択するためのビットである。換言するとこれらのビットは、チェイン動作を行うかを指定するためのビットである。チェイン動作とは、データ転送情報の読み出し、データ転送の実行、データ転送情報の書き込みを行い、更に連続したデータ転送情報アドレスからのデータ転送情報の読み出し、データ転送、及びデータ転送情報の書き込みを行う動作である。
NXTSビット(チェイン判定情報)は、転送データとデータレジスタ(DR)27を用いた判定処理を行い、チェイン動作を行うかを選択する。検査の内容は上述のOP3〜0に従って選択される。NXTE1ビットは、常にチェイン動作を行うかを選択するためのビットである。このNXTE1ビットに0が設定されている場合、データ転送情報の読み出し、データ転送、及びデータ転送情報の書き込みが終了した後にデータトランスファーコントローラ(DTC)12の動作が終了する。NXTE1ビットに1が設定されている場合、データ転送情報の読み出し、データ転送、及びデータ転送情報の書き込みが終了した後に、連続したデータ転送情報アドレスからのデータ転送情報の読み出し、データ転送、及びデータ転送情報の書き込みが行われる。NXTE0ビットは、データ転送カウンタ(CR)26が0となった場合にチェイン動作を行うか否かを設定するビットである。
次に図5を参照して、データトランスファーコントローラ(DTC)12の状態遷移について説明する。割り込みコントローラ(INT)11は、前述の手法によりデータトランスファーコントローラ(DTC)12に対してDTC起動要求(DTCREQ)とベクタ番号(DTCVEC)を出力する。ベクタ生成ブロック(VG)30は、ベクタ番号(DTCVEC)に従ってベクタアドレスを生成する。ベクタアドレスレジスタ(VAR)29は、ベクタアドレスを用いた読み出しにより読み出したデータ転送情報の先頭アドレスを格納する。
この後にデータトランスファーコントローラ(DTC)12は、IRステートに遷移する。データ転送制御ブロック(DTCCNT)21は、ベクタアドレスレジスタ(VAR)29が保持する先頭アドレスを用い、データ転送情報配置領域からデータ転送情報の先頭32ビットをモードレジスタ(MR)23にデータを書き込む。データ転送制御ブロック(DTCCNT)21は、モードレジスタ(MR)23内のデータから転送モード(通常の転送モード、アキュムレートモード、スイッチモード、テスト転送モード、シフトモード)を解析する。データ転送制御ブロック(DTCCNT)21は、転送モードに応じてデータ転送情報配置領域からデータ転送情報のうち必要なデータのみを読み出して各レジスタ24〜27に書き込む。
転送モードが通常の転送モードまたはアキュムレートモードである場合、データ転送制御ブロック(DTCCNT)21は、IRステートからSRステート、DWステート、IWステートと順に遷移する。以下、IRステートからSRステート、DWステート、IWステートについてそれぞれ説明する。
SRステートでは、データ転送制御ブロック(DTCCNT)21は、ソースアドレスレジスタ(SAR)24が示すアドレスから転送データを読み出す。データ転送制御ブロック(DTCCNT)21は、読み出し後にモードレジスタ(MR)23の設定(SM1ビット、SM0ビット等)に従ってソースアドレスレジスタ(SAR)24の変更等を行う。その後にデータトランスファーコントローラ(DTC)12は、SRステートからDWステートに遷移する。
DWステートでは、データ転送制御ブロック(DTCCNT)21は、SRステートで読み出した転送データをデスティネーションアドレスレジスタ(DAR)25が示すアドレスに書き込む。データ転送制御ブロック(DTCCNT)21は、書き込み後にモードレジスタ(MR)23の設定(DM1ビット、DM0ビット等)に従ってデスティネーションアドレスレジスタ(DAR)25の変更等を行う。またデータ転送カウンタ(CR)26のデクリメントも実行される。
DWステートにおいてデータ転送モードがアキュムレートモードの場合、演算器(ALU)28は、転送データとデータレジスタ(DR)28のデータを用いた演算を行い、演算結果をデータレジスタ(DR)27に格納する。なおブロック転送モードの場合、SWステート、DWステートが繰り返し行われるが図示及び詳細説明は省略する。上述の処理の後にデータトランスファーコントローラ(DTC)12は、DWステートからIWステートに遷移する。
IWステートでは、データ転送制御ブロック(DTCCNT)21は、SRステート及びDWステートにおいてレジスタ23〜27のうち変更が生じたレジスタのデータをデータ転送情報配置領域に書き戻す。換言するとIWステートでは、データ転送制御ブロック(DTCCNT)21は、IRステート及びDWステートにおいてレジスタ23〜27のうち変更が生じなかったレジスタの書き戻しは行わない。例えばデータ転送制御ブロック(DTCCNT)21は、デスティネーションアドレスレジスタ(DAR)25が固定(変更が無い)の場合には当該レジスタのデータの書き戻しは行わない。
IWステートにおいてモードレジスタ(MR)23がチェイン動作を指定している場合、データ転送制御ブロック(DTCCNT)21は、引き続きIRステート、SRステート、DWステート、IWステートを引き続き行う。チェイン動作の動作例は、図8等を参照して説明する。
続いて転送モードがスイッチモード場合のIRステート以降の状態遷移について説明する。データ転送制御ブロック(DTCCNT)21は、IRステートから前述のSRステートに遷移し、SRステートからIW0ステートに遷移する。
IW0ステートにおいて演算器(ALU)28は、ソースアドレスレジスタ(SAR)24を用いて読み出したデータ(判定データ)とデータレジスタ(DR)28のデータを比較し、判定データが範囲内であるか否かを判定する。判定データが範囲内である場合、データ転送制御ブロック(DTCCNT)21は、次に読み出すデータ転送情報の先頭アドレスを計算してIRステートに遷移する。その後に通常の転送モードと同様にSRステート、DWステート、IWステートに遷移する。
一方、判定データが範囲外である場合、データ転送制御ブロック(DTCCNT)21は、起動要因に対応したDTEビットをクリアして停止状態に遷移する。DTEビットをクリアすることにより、中央処理装置(CPU)10に割込みが要求され、中央処理装置(CPU)10はリカバリ処理等を行う。
続いて転送モードがシフトモード場合のIRステート以降の状態遷移について説明する。データ転送制御ブロック(DTCCNT)21は、IW0ステートにおいて後の演算で必要となるデータをデータ転送機能制御部(FC)20に退避し、その後にIRステートに遷移する。データ転送制御ブロック(DTCCNT)21は、退避したデータを次のデータ転送の際の転送元アドレスや転送先アドレスの算出処理に使用する。詳細な動作例は図12を参照して説明する。
続いて図6を参照して、アキュムレートモードでの動作例について説明する。図6は、アキュムレートモードでの動作時のデータ転送情報配置領域及びデータ領域(例えばRAM14)とデータトランスファーコントローラ(DTC)12との関係を示す動作説明図である。中央処理装置(CPU)10は、所要のデータ転送情報(図6におけるデータ転送情報(1)(2))をデータ転送情報配置領域の所定アドレスに書き込む。また中央処理装置(CPU)10は、このアキュムレートモードに対応した割込み要因のDTEビットを1に設定する。この状態で割込みが生じることにより、データトランスファーコントローラ(DTC)12が起動される。
データトランスファーコントローラ(DTC)12が起動されると、上述のようにベクタ番号(DTCVEC)がデータトランスファーコントローラ(DTC)12に入力される。そして上述のようにベクタ番号(DTCVEC)に従って読み出したデータ転送情報の先頭アドレスがベクタアドレスレジスタ(VAR)29が格納される。本例では、データ転送情報(1)のACMビットに1(すなわちアキュムレートモード)が設定され、NXTSビット、NXTE0ビットにそれぞれ1が設定されているものとする。
データ転送制御ブロック(DTCCNT)21は、この先頭アドレスを用いてデータ転送情報配置領域からデータ転送情報(1)を読み出す。詳細にはデータ転送制御ブロック(DTCCNT)21は、データ転送情報配置領域のデータ転送情報(1)から読み出したデータをモードレジスタ(MR)23に書き込み、当該データからアキュムレートモードであることを判定する。アキュムレートモードであるため、データ転送制御ブロック(DTCCNT)21は、データ転送情報(1)から読み出したデータをソースアドレスレジスタ(SAR)24、デスティネーションアドレスレジスタ(DAR)25、データ転送カウンタ(CR)26、データレジスタ(DR)27に書き込む。
データ転送制御ブロック(DTCCNT)21は、ソースアドレスレジスタ(SAR)24で指定された転送元アドレスから転送データを読み出す。データ転送制御ブロック(DTCCNT)21は、読み出した転送データをデスティネーションアドレスレジスタ(DAR)25が示す転送先アドレスに書き込む(図6参照)。
この際に演算器(ALU)28は、転送データと、データレジスタ(DR)27の格納データと、の演算を行い、演算結果をデータレジスタ(DR)27に上書きする。ここで演算内容は、OP3〜OP0(モードレジスタ(MR)23のビット19〜16)により指定される。データ転送の終了後(すなわちIWステート)、この上書きが行われたデータレジスタ(DR)27を含む各レジスタ23〜27のデータがデータ転送情報配置領域に書き戻される。この際にデータ転送カウンタ(CR)26の値はデクリメントされている。
このアキュムレートモードは、例えばシリアルコミュニケーションインターフェイスの受信完了割込みが生じた場合に利用することができる。例えば、受信データレジスタからRAM14にデータを転送する場合に利用することができる。この処理においてデータ転送カウンタ(CR)26で指定された回数の処理が終了した際に、所定の累算結果を、データレジスタ(DR)27に格納することができる。
例えば演算内容として加算が設定された場合、データ転送カウンタ(CR)26で指定された回数のデータ転送を終了した後に、データ転送情報配置領域内のデータレジスタ(DR)27に相当するアドレスにはサムデータが格納される。また演算内容として排他的論理和が指定された場合、当該アドレスにはパリティデータが格納される。
演算内容としてCRC演算が設定された場合、16ビット幅の演算を行う際にはデータレジスタ(DR)27の上位16に生成多項式に対応するデータを設定/保持し、下位16ビットに演算結果を格納するとよい。または生成多項式は固定してもよい。OP3〜OP0ビットにより生成多項式を選択するようにしてもよい。また、図示されない他の入力信号により使用する生成多項式を指定する等の構成であってもよい。
本例では、NXTSビット及びNXTE0ビットに1が設定されている。そのため、所定回数のデータ転送が終了してデータ転送カウンタ(CR)26が0になった場合、演算器(ALU)28は転送データとデータレジスタ(DR)27のデータを用いた検査を行い、検査結果に応じてチェイン動作を行うか否かを判定する。
演算内容として加算または排他的論理和が指定されている場合、演算器(ALU)28は最後の転送データとデータレジスタ(DR)27のデータが一致しているか否かを判定する。データトランスファーコントローラ(DTC)12は、一致している場合には問題が無いと判断し、チェイン動作を行わない。一方、データトランスファーコントローラ(DTC)12は、不一致の場合には問題があると判断し、チェイン動作を行う。チェイン動作においてデータ転送情報(1)の隣接アドレスに格納されたデータ転送情報(2)を用いたデータ転送が実行される。このデータ転送は、エラーステータスの設定やリカバリのための処理を行うことが想定される。
演算内容としてCRC演算が指定されている場合、演算器(ALU)28は最後の転送データの演算結果が0であるかを判定する。データトランスファーコントローラ(DTC)12は、演算結果が0である場合にはチェイン動作を行わずに処理を終了する。データトランスファーコントローラ(DTC)12は、演算結果が0以外である場合にはチェイン動作を実行し、次のデータ転送情報(2)に関する処理を実行する。
データ転送情報配置領域は、データレジスタ(DR)27に対応する領域にチェックサムやCRC演算の途中結果を保持する。これにより、異なる起動要因に起因する複数のデータ転送を行う場合であっても、各演算(チェックサム、CRC演算)を独立して行うことができる。例えば複数チャネルのシリアルコミュニケーションインターフェイスからの受信データを並行して転送し、それぞれのチャネルに対応したチェックサムの算出やCRC演算を独立して行うことができる。
続いて図7を参照して、アキュムレートモードに加え、アドレスロードモードとカウンタロードモードが設定された場合の動作例について説明する。図7は、アキュムレートモード、アドレスロードモード、及びカウンタロードモードでの動作時のデータ転送情報配置領域(例えばRAM14)とデータトランスファーコントローラ(DTC)12との関係を示す動作説明図である。
本例では、データ転送情報(1)のACMビット、ALMビット、CLMビットにいずれも1が設定されている。データ転送情報(1)内のSz1ビット及びSz0ビットがバイトサイズまたはワードサイズを指定する場合、転送先アドレス(デスティネーションアドレスレジスタ(DAR)25に読みだされるデータ)の上位ビットがあらかじめ設定される。TMD1ビット及びTMD0ビットがブロック転送モードを指定する場合、転送カウント数(データ転送カウンタ(CR)26に読みだされるデータ)の下位16ビットを予め設定しておく。TMD1ビット及びTMD0ビットがノーマルモードを指定する場合、上述の下位16ビットの設定は任意である。
データトランスファーコントローラ(DTC)12がはじめて起動される(1回目の起動)と、データ転送制御ブロック(DTCCNT)21は、モードレジスタ(MR)23に書き込んだデータからアキュムレートモードであると判定する。そしてデータトランスファーコントローラ(DTC)12、データ転送情報(1)からデータを読み出してソースアドレスレジスタ(SAR)24、デスティネーションアドレスレジスタ(DAR)25、データ転送カウンタ(CR)26、データレジスタ(DR)27に書き込む。データ転送制御ブロック(DTCCNT)21はソースアドレスレジスタ(SAR)24で指定されたアドレスからデータを読み出し、読み出したデータをデスティネーションアドレスレジスタ(DAR)25に書き込む。すなわちデータ転送制御ブロック(DTCCNT)21は、書き込み先のアドレスを変更する。
この際にデータトランスファーコントローラ(DTC)12は、読み出したデータのデータ転送情報配置領域への書き込みは行わず、アキュムレートモードに対応した演算も行わない。データ転送制御ブロック(DTCCNT)21は、デスティネーションアドレスレジスタ(DAR)25への書き込みの後にALMビットを0にクリアする。その後にデータ転送制御ブロック(DTCCNT)21は、各レジスタ23〜27のデータをデータ転送情報配置領域に書き込む。
2回目にデータトランスファーコントローラ(DTC)12が起動された場合、ソースアドレスレジスタ(SAR)24で指定されたアドレスからデータを読み出し、読み出したデータをデータ転送カウンタ(CR)26に書き込む。すなわちデータ転送制御ブロック(DTCCNT)21は、データ転送回数を変更する。
この際にデータトランスファーコントローラ(DTC)12は、読み出したデータのデータ転送情報配置領域への書き込みは行わず、アキュムレートモードに対応した演算も行わない。データ転送制御ブロック(DTCCNT)21は、データ転送カウンタ(CR)26への書き込みの後にCLMビットを0にクリアする。その後にデータ転送制御ブロック(DTCCNT)21は、各レジスタ23〜27のデータをデータ転送情報配置領域に書き込む。
3回目にデータトランスファーコントローラ(DTC)12が起動された場合、図6と同様の動作を行う。上述のようにデータトランスファーコントローラ(DTC)12は1回目の起動によりデータの転送先アドレスを指定し、2回目の起動により転送回数を指定している。このような動作は、例えばシリアルコミュニケーションインターフェイスを通じて最初に指定アドレス、次にデータ数、続いてデータを受信する場合に使用することができる。受信完了割込みが生じた場合に1回目の起動が生じる。これにより、データトランスファーコントローラ(DTC)12が動的に転送先アドレスとデータ数を把握したうえでデータ転送を行うことができる。シリアルコミュニケーションインターフェイスを用いた送信では、中央処理装置(CPU)10がデータ転送装置として設定したデータ転送カウント数(データ転送カウンタ(CR)26に書き込まれる値)を最初に送信データレジスタに転送することもできる。またデータトランスファーコントローラ(DTC)12は、ソースアドレスレジスタ(SAR)24で指定されたアドレスから読み出したデータを送信データレジスタに書き込み、最後にデータレジスタ(DR)27の値を送信データレジスタに書き込むようにしてもよい。ここでデータ転送カウンタ(CR)26やデータレジスタ(DR)27を転送することを指定するビットがモードレジスタ(MR)23に読み出されるデータ内(図4)に存在してもよい。
続いて図8を参照して、アキュムレートモード、アドレスロードモード、カウンタロードモードの各設定に応じたデータトランスファーコントローラ(DTC)12の動作を説明する。図8は、各モードの設定によるデータトランスファーコントローラ(DTC)12の動作を示すフローチャートである。以下の説明ではNXTSビット及びNXTE0ビットに1が設定されているものとする。
データ転送制御ブロック(DTCCNT)21は、起動(S101:Yes)後にALMビット及びCLMビットを判定する(S102)。ALMビットに1が設定されている場合(S102:ALM=1)、データ転送制御ブロック(DTCCNT)21はソースアドレスレジスタ(SAR)24で指定されたアドレスからデータを読み出し、読み出したデータをデスティネーションアドレスレジスタ(DAR)25に書き込み、ALMビットを0にクリアする(S103)。
CLMビットに1が設定されている場合(S102:CLM=1)、データ転送制御ブロック(DTCCNT)21はソースアドレスレジスタ(SAR)24で指定されたアドレスからデータを読み出し、読み出したデータをデータ転送カウンタ(CR)26に書き込み、CLMビットを0にクリアする(S104)。
ALMビット及びCLMビットが0にクリアされている場合(S102:ALM=0、CLM=0)、データ転送制御ブロック(DTCCNT)21はソースアドレスレジスタ(SAR)24で指定されたアドレスからデータを読み出し、デスティネーションアドレスレジスタ(DAR)25で指定されたアドレスに読み出したデータを書き込む(S105)。この書き込み処理(S105)は、データ転送カウンタ(CR)26が0になるまで繰り返し行われる(S106)。書き込み処理毎にデータ転送カウンタ(CR)26はデクリメントされる。
データ転送カウンタ(CR)26が0になった場合(S106:0)、演算器(ALU)28は、転送データとデータレジスタ(DR)27を用いた判定処理を行う。問題ないと判定された場合(S107:OK)、データトランスファーコントローラ(DTC)12は動作を終了する(S109)。一方、問題があると判定された場合(S107:NG)、データトランスファーコントローラ(DTC)12はチェイン動作を起動する。
図8に示す一連の処理を行うことにより、データトランスファーコントローラ(DTC)12は前述のようにシリアルコミュニケーションインターフェイスを用いた一連の処理を中央処理装置(CPU)10を必要とすることなく実行することができる。すなわちデータトランスファーコントローラ(DTC)12は、転送先アドレスや転送回数の認識から、データ転送エラーの判定、及びエラーステータスの転送、といった一連の処理を中央処理装置(CPU)10を要することなく実行することができる。
上述のデータトランスファーコントローラ(DTC)12の処理が終了した後に、対応するDTEビットが0にクリアされる。この状態において中央処理装置(CPU)10に対する割込みが要求される。中央処理装置(CPU)10は、RAM14上に格納されたデータにしていて所要の演算等の処理を行うとともに、データ転送情報等の再設定を行う。
続いて図9を参照して、スイッチモードでの動作例について説明する。図9は、スイッチモードでの動作時のデータ転送情報配置領域(例えばRAM14)とデータトランスファーコントローラ(DTC)12との関係を示す動作説明図である。本例では、データ転送情報(1)のSWMビットに1が設定されている。
データ転送制御ブロック(DTCCNT)21は、データ転送情報配置領域からデータ転送情報(1)を順次読み出す。データ転送制御ブロック(DTCCNT)21は、はじめにデータ転送情報(1)から読み出したデータをモードレジスタ(MR)23に書き込み、スイッチモードであることを判定する。スイッチモードであるため、データ転送制御ブロック(DTCCNT)21は、データ転送情報(1)から読み出したデータをソースアドレスレジスタ(SAR)24、データレジスタ(DR)27に書き込む。
データ転送制御ブロック(DTCCNT)21は、ソースアドレスレジスタ(SAR)24が示すアドレスからデータ(以下、スイッチモードの説明において判定データと記載する。)を読み出す。データ転送制御ブロック(DTCCNT)21は、データ転送情報(1)を用いたデータ転送を行う。また演算器(ALU)28は、読み出した判定データと、データレジスタ(DR)27のデータを比較する。
読み出した判定データがデータレジスタ(DR)27のデータ以下である等の所定範囲内である場合、データ転送制御ブロック(DTCCNT)21は、判定データに応じてデータ転送情報(2)の先頭データを生成する。データ転送情報(2)の先頭データは、判定データに16を乗算する、または判定データを4ビットシフトした値をソースアドレスレジスタ(SAR)24のインクリメント後の値に加算することにより生成される。16を乗算する理由は、データ転送情報が4ロングワード、すなわち16バイトであることに対応するためである。これにより判定データの値に応じて、次に読み出されるデータ転送情報(2)が変化する。ここでデータ転送情報(2)の候補となるセットは、予めデータ転送情報配置領域に設定されているものとする。各セット内のSWMビットはそれぞれ0が設定される。データ転送制御ブロック(DTCCNT)21は、判定データに応じて設定されたデータ転送情報(2)を用いてデータ転送を行う。
読み出した判定データがデータレジスタ(DR)27のデータより大きい場合、データ転送制御ブロック(DTCCNT)21は処理対象の範囲外であると判定する。範囲外と判定する理由は、全ての判定データに対応するデータ転送情報(2)のセットをデータ転送情報配置領域に設定に設定することは現実的でないことが挙げられる。また範囲外と判定することにより、想定される判定データ以外のデータが読み出された場合の誤操作を防止し、中央処理装置(CPU)10によるエラー処理を確実に行うことができる。さらに、一部の判定データに対しては中央処理装置(CPU)10による処理が対応することも想定されるため、範囲外の判定が行われることが好ましい。
データ転送制御ブロック(DTCCNT)21は、範囲外と判定した場合には起動要因に対応するDTEビットを0に設定する。すなわち当該起動要因については、中央処理装置(CPU)10の処理対象となる。
なおデータ転送制御ブロック(DTCCNT)21は、判定データが所定範囲外の場合であっても、範囲内の場合と同様に判定データに応じてデータ転送情報(2)を変化させて、データ転送を行ってもよい。この場合、読み出されるデータ転送情報(2)は、エラー状況の書き込みを指定する内容等にする。これにより、中央処理装置(CPU)10は割込みによりエラーを検知するのではなく、いわゆるオペレーティングシステムの実行等によりエラー検出を行う。これにより中央処理装置(CPU)10を動作させるプログラムを簡略化することができる。
続いて図10を参照して、スイッチモードでのデータ転送を更に説明する。図10は、スイッチモードにおけるデータ転送情報配置領域を示す図である。データ転送情報(2)の候補となるデータ群は予め中央処理装置(CPU)10の処理等によって設定しておく。
データ転送制御ブロック(DTCCNT)21は、ベクタアドレスレジスタ(VAR)29を用いてデータ転送情報(1)を読み出す。データ転送制御ブロック(DTCCNT)21は、データ転送情報(1)を用いたデータ転送を行う。またデータ転送制御ブロック(DTCCNT)21は、データ転送情報の読み書きに当たって、ベクタアドレスレジスタ(VAR)29を更新(インクメント)する。データ転送制御ブロック(DTCCNT)21は、データ転送情報(1)を基に読み出した判定データに16を乗算した値を、ベクタアドレスレジスタ(VAR)29の値と加算することによりデータ転送情報(2)の先頭アドレスを生成する。なお、上述の例では判定データに16を乗算(または4ビットシフト)を行っていたが、そのまま加算するように判定データの値を事前に調整しておいてもよい。
続いて図11を参照して、テスト転送モードでの動作例について説明する。図11は、テスト転送モードでの動作時のデータ転送情報配置領域(例えばRAM14)とデータトランスファーコントローラ(DTC)12との関係を示す動作説明図である。本例では、データ転送情報(1)のTSMビットに1が設定されている。
データ転送制御ブロック(DTCCNT)21は、データ転送情報配置領域からデータ転送情報(1)を順次読み出す。データ転送制御ブロック(DTCCNT)21は、はじめにデータ転送情報配置領域のデータ転送情報(1)から読み出したデータをモードレジスタ(MR)23に書き込み、テスト転送モードであることを判定する。テスト転送モードであるため、データ転送制御ブロック(DTCCNT)21は、データ転送情報配置領域のデータ転送情報(1)からデータを読み出してソースアドレスレジスタ(SAR)24、デスティネーションアドレスレジスタ(DAR)25、データ転送カウンタ(CR)26、データレジスタ(DR)27に書き込む。
データトランスファーコントローラ(DTC)12は、通常のデータ転送と同様に、データ転送を行う。また演算器(ALU)28は、転送データ(ソースアドレスレジスタ(SAR)24が示すアドレスから読み出したデータ)とデータレジスタ(DR)27のデータを比較する。例えば転送データがデータレジスタ(DR)27のデータよりも大きい場合、データ転送制御ブロック(DTCCNT)21は、指定範囲外と判定する。
指定範囲内の場合、データトランスファーコントローラ(DTC)12は、データ転送情報(1)の処理のみで動作を終了する。指定範囲外の場合、データトランスファーコントローラ(DTC)12は、チェイン動作によりデータ転送情報(1)に隣接して格納されたデータ転送情報(2)を読み出す。そしてデータトランスファーコントローラ(DTC)12は、データ転送情報(2)を用いてデータ転送を行う。データ転送情報(2)は、例えばエラーステータスの書き込みに用いられる。これにより、中央処理装置(CPU)10は、割込みによらずエラーステータスを把握することができる。
指定範囲外の場合、データトランスファーコントローラ(DTC)12は起動要因に対応するDTEビットを0に設定してもよい。これにより、中央処理装置(CPU)10による制御が実行される。
続いて図12を参照して、シフトモードでの動作例について説明する。図13は、テスト転送モードでの動作時のデータ転送情報配置領域(例えばRAM14)とデータトランスファーコントローラ(DTC)12との関係を示す動作説明図である。本例では、データ転送情報(1)のSFMビットに1が設定され、SELビットに0が設定されている。
データ転送制御ブロック(DTCCNT)21は、データ転送情報配置領域からデータ転送情報(1)を順次読み出す。データ転送制御ブロック(DTCCNT)21は、はじめにデータ転送情報配置領域のデータ転送情報(1)から読み出したデータをモードレジスタ(MR)23に書き込み、シフトモードであることを判定する。シフトモードであるため、データ転送制御ブロック(DTCCNT)21は、データ転送情報配置領域のデータ転送情報(1)から読み出したデータをソースアドレスレジスタ(SAR)24に書き込む。
データ転送制御ブロック(DTCCNT)21は、ソースアドレスレジスタ(SAR)24が示すアドレスから読み出したデータ(以下のシフトモードの説明においては、シフトデータとも記載する)をデータレジスタ(DR)27に格納する。そしてデータ転送制御ブロック(DTCCNT)21は、データ転送情報(1)のモード情報とシフトデータをデータ転送機能制御部(FC)20に退避する。データ転送情報の読み出しおよび書き込みにあたって、ベクタアドレスレジスタ(VAR)29が保持するベクタアドレスのインクリメントが行われる。すなわちベクタアドレスレジスタ(VAR)29には、データ転送情報(1)の隣接アドレスに格納されるデータ転送情報(2)の先頭アドレスが格納される。
データ転送制御ブロック(DTCCNT)21は、ベクタアドレスレジスタ(VAR)29を参照してデータ転送情報(2)のデータを読み出し、各レジスタ23〜27に格納する。データ転送制御ブロック(DTCCNT)21は、データ転送情報(2)を用いたデータ転送にあたって、データ転送機能制御部(FC)20に退避したシフトモード上情報やシフトデータを読み出す。演算器(ALU)28は、読み出したシフトデータを転送データサイズに応じて1、2、4倍に乗算する。または演算器(ALU)28は、読み出したシフトデータを転送データサイズに応じて0〜2ビットシフトする。演算器(ALU)28は、乗算またはビットシフトしたシフトデータと、ソースアドレスレジスタ(SAR)24内のデータを加算し、加算値をソースアドレスレジスタ(SAR)24に上書きする。すなわちデータ転送情報(2)で指定された転送元データをシフトデータを用いて調整する。その後にデータ転送制御ブロック(DTCCNT)21は、モードレジスタ(MR)23に応じたデータ転送処理を行う。なお、上述の説明では転送元データをシフトデータを用いて調整する例を説明したが、データ転送情報内のその他のデータ(例えば転送先アドレス)をシフトデータを用いて調整してもよい。
なお、データ転送情報(1)とデータ転送情報(2)が一つのデータ転送情報である構成としてもよい。すなわちデータ転送情報は、ソースアドレスレジスタ(SAR)24に読み出される2つのデータを包含する構成としてもよい。この場合には、ソースアドレスレジスタ(SAR)24が図2の構成の2倍の容量を記憶できる構成である等の変更が必要となる。
続いて図13を参照して、シフトモードの際の転送先アドレスの指定の一例を説明する。以下の説明では、マイクロコンピュータ1がモータの速度指定を行うデータを制御する例について検討する。モータの制御に用いるパラメータはROM13に格納されているものとする。これらのパラメータは、例えば16ビットのデータ長であり、昇順に速度が大きくなるものとする(例えばパラメータ1よりもパラメータ2の方が高速動作を指定する。)。パラメータが16ビット長であるため、上述の加算処理においてシフトデータ(すなわちパラメータ)が2倍された後に加算が行われる。
初期設定の段階では、パラメータ0が読み出されるように設定を行う。モータを駆動する必要が生じた場合、データ転送情報(1)のシフトデータを用いて読み出されるパラメータのアドレスを変更し、例えばパラメータmが読み出されるようにする。別のタイマやアナログ入力によりモータの状態を監視して加速が十分と判断された場合、負のシフトデータが加算されるように制御する。つまり一定時間間隔でモータの状態を監視するとともに割込みを発生させ、当該割込みによりどのシフトデータが読み出されるかを調整する。なお加算結果をソースアドレスレジスタ(SAR)24に反映するのではなく、データ転送情報(1)で速度パラメータ格納領域の基準となるアドレスからの偏差を指定してもよい。
例えばマイクロコンピュータ1を制御するモータの状態をA/D変換器で変換する。一定の時間間隔でA/D変換器の動作を行わせ、この変換終了割込みを用いてデータトランスファーコントローラ(DTC)12を制御するようにする。A/D変換器の変換結果はシフトデータとして参照できるようにする。これにより、モータを駆動するタイマに適切な速度データを与えることができる。
以上が各モードでのデータトランスファーコントローラ(DTC)12の動作であり、改めて処理概略を説明する。データトランスファーコントローラ(DTC)12は、はじめにデータ転送情報からモードレジスタ(MR)23に転送モードにかかるデータを読み出し、このデータを解析する。データトランスファーコントローラ(DTC)12は、この解析によってどの転送モード(アキュムレートモード、スイッチモード、アドレスロードモード等)が設定されたかを把握する。そしてデータトランスファーコントローラ(DTC)12は、設定された転送モードに応じて転送元アドレスや転送先アドレス(例えばアドレスロードモード、シフトモード)、転送回数(例えばカウンタロードモード)、次回のデータ転送で用いるデータ転送セット(例えばスイッチモード)、の少なくとも1つを変更している。この変更の際にデータトランスファーコントローラ(DTC)12は、転送データ(転送元アドレスから読み出したデータ)を利用して変更を行う。例えばカウンタロードモードでは、データトランスファーコントローラ(DTC)12は通信モジュール等から転送元アドレスに従って読み出したデータを転送回数として設定する。
続いて演算器(ALU)28の詳細構成例について図14を参照して説明する。図14は、演算器(ALU)28の構成を示すブロック図である。演算器(ALU)28は、CRC演算器(CRC)41、論理演算器(LOG)42、シフタ(SFT)43、算術演算器(ART)44、及び出力セレクタ(SEL)45を有する。演算器(ALU)28は、複数の内部バスを有し、本例ではDTC内部バスA、B、Cを有している。
CRC演算器(CRC)41には、例えばDTC内部バスAからリードデータ(データ転送情報配置領域から読み出したデータ)が入力され、DTC内部バスBからデータレジスタ(DR)27からのリードデータが入力され、データ転送制御ブロック(DTCCNT)21から生成多項式選択信号が入力される。CRC演算器(CRC)41は、これらの入力を用いて指定された演算を行い、演算結果を出力セレクタ(SEL)45に供給する。
論理演算器(LOG)42には、例えばDTC内部バスAからリードデータ(データ転送情報に従って読み出したデータ)が入力され、DTC内部バスBからデータレジスタ(DR)27からのリードデータが入力され、データ転送制御ブロック(DTCCNT)21からマスクデータが入力される。また論理演算器(LOG)42には、OP3〜OP0等ビット等に基づく制御信号が入力される。これによって論理演算器(LOG)42は、DTC内部バスA、Bからの入力に対し、それぞれ所定ビットをマスクすることも可能である。論理演算器(LOG)42は、指定された演算を行い、演算結果をシフタ(SFT)43に供給する。
シフタ(SFT)43には、論理演算器(LOG)42の出力するデータと、データ転送制御ブロック(DTCCNT)21からの制御信号(例えばデータ転送サイズに対応した制御信号)が入力される。シフタ(SFT)43は、入力に応じた演算を行い、演算結果を算術演算器(ART)44に出力する。
算術演算器(ART)44には、論理演算器(LOG)42からシフタ(SFT)43を介した出力データ、データ転送制御ブロック(DTCCNT)21からの制御信号等が入力される。算術演算器(ART)44は、入力された制御信号応じた演算を行い、演算結果を出力セレクタ(SEL)45に供給する。算術演算器(ART)44は、この演算の際にキャリー/ボローを検出してデータ転送制御ブロック(DTCCNT)21に通知する。
出力セレクタ(SEL)45には、CRC演算器(CRC)41の演算結果、算術演算器(ART)44の演算結果、データ転送制御ブロック(DTCCNT)21からの制御信号、等が入力される。出力セレクタ(SEL)45は、入力された制御信号に応じた選択処理を行ってDTC内部バスCを介して演算要求元に選択結果を出力する。
続いて図15を参照してマイクロコンピュータ1をカメラに適用した場合について説明する。カメラレンズMCU50は、上述のマイクロコンピュータ1の構成、機能を有する。さらにカメラレンズMCU50は、通信モジュール(SCI)51(図1における通信モジュール17に対応)、タイマF52、タイマD53、タイマS54、及び入出力ポート(I/O)55(図1における入出力ポート(I/O)19に対応)を有する。なおタイマF52、タイマD53、タイマS54は、図1のタイマ16に対応する。カメラレンズMCU50は、カメラボディMCU60からのコマンドを受け付ける。当該コマンドはデータ転送情報としてカメラレンズMCU50の記憶装置に書き込まれ、データトランスファーコントローラ(DTC)12が起動されることにより各種の処理が実行される。
タイマF52、タイマD53、タイマS54は、それぞれ焦点、絞り、防振の制御に用いられる。オートフォーカスの許可や防振許可等のスイッチ入力は、入出力ポート(I/)55から入力される。通信モジュール(SCI)51は、シリアルコミュニケーションインターフェイス等の1回線の通信手段であり、カメラボディMCU60からコマンドとしてのデータ転送情報がカメラレンズMCU50に与えられる。カメラレンズMCU50とカメラボディMCU60との間のインターフェイスは、レンズマウントによって定められている。カメラレンズMCU50からの応答(カメラレンズMCU50からカメラボディMCU60へのデータ送信)も、この通信手段を介して行われる。
この通信手段の受信完了割込みに応じてカメラレンズMCU50内のデータトランスファーコントローラ(DTC)12が起動される。データトランスファーコントローラ(DTC)12は、例えばデータ転送情報を読み出してスイッチモードで動作し、上述のスイッチモードの判定データを用いて転送先アドレスを切り替える。これによりデータトランスファーコントローラ(DTC)12は、指定された転送先アドレス(タイマF52、タイマD53、タイマS54、I/Oポート55等)にデータを書き込む。
カメラレンズMCU50、すなわちマイクロコンピュータ1は上述のシフトモードで動作し、RAM14等から構成されるデータ転送情報配置領域から適切なパラメータを読み出して転送することもできる。上述のようにシフトモードは、状況(上述の例ではモータの状態)に応じて読み出すパラメータを変更することができる。状況に応じてパラメータを変更することができるため、フィードバック制御に好適である。
タイマS54の制御は、上述のようにスイッチモードのデータ転送情報(2)(図10)を用いて行われる。すなわちデータトランスファーコントローラ(DTC)12は、データ転送情報(1)(図10)を用いて、所要のコマンドの場合にタイマS54制御用のデータ転送情報(2)を選択し、データ転送情報(2)を用いてデータ転送を行う。例えば、データトランスファーコントローラ(DTC)12は、シャッター半押し等に対応したカメラボディMCU60からのコマンド入力により、タイマS54への書き込みを行う。これと同時に、タイマS54制御用のデータ転送情報(2)(図10)は、別のインターバルタイマの割込みによる一定時間毎のデータ書き込みに用いられてもよい。すなわち一定時間毎にカメラS54への防振制御が行われる構成であってもよい。
次にステータス要求に関するコマンドが入力された場合について説明する。カメラボディMCU60から所定の状態(例えば手振れ補正許可スイッチの状態)を所定レジスタに書き込むことを要求するコマンドがカメラレンズMCU50に入力される。データトランスファーコントローラ(DTC)12は、スイッチモードにより動作し、データ転送情報(1)(図10)読み出し対象となるデータ転送情報(2)(図10)を選択する。そしてデータトランスファーコントローラ(DTC)12は、データ転送情報(2)(図10)を用いて指定された機能ブロック(例えば入出力(I/O)ポート55)のステータスデータを読み出し、通信モジュール(SCI)51の送信データレジスタに書き込む。送信データレジスタへの書き込みにより、通信モジュール(SCI)51が動作し、送信データレジスタに書き込まれたステータスデータがカメラボディMCU60に送信される。上述の処理をデータトランスファーコントローラ(DTC)12が行うことにより、中央処理装置(CPU)10によるデータ転送制御が不要となる。すなわち、中央処理装置(CPU)10の処理負荷が軽減される。
従来のマイクロコンピュータでは、中央処理装置(CPU)が受信完了毎にコマンド解析を行っていた。一方で本実施の形態にかかるデータトランスファーコントローラ(DTC)12は、一般的には中央処理装置(CPU)10が行うコマンド解析等を実行している。そこで中央処理装置(CPU)10は、データトランスファーコントローラ(DTC)12の動作中に低消費電力モード(スリープ、スタンバイ等)に移行してもよい。データトランスファーコントローラ(DTC)12は中央処理装置(CPU)10よりも論理規模が小さく、かつ高速に処理を行うことができる。そのため、中央処理装置(CPU)10が低消費電力モードに移行してデータトランスファーコントローラ(DTC)12のみが動作することにより、低消費電力化の効果を高めることができる。バッテリにより駆動されるカメラシステム等においては、低消費電力化が重要であることは言うまでもない。
続いて図16を参照して図15の構成におけるデータ転送の具体例について説明する。カメラボディMCU60は、コマンド種別、転送先アドレス、転送データ数、転送データ、の順で送信を行うものとする。以下、カメラレンズMCU1内のマイクロコンピュータ1の各処理部の動作について説明する。
コマンドの受信開始前にデータ転送情報アドレス領域の受信完了割込みベクタ指定アドレス(受信完了割込みが生じた場合に読み出されるアドレス)にスイッチモードを指定するデータ転送情報(1)(2)が設定される。またデータ転送情報(3)〜(8)は、データ転送情報(1)(2)とは異なるアドレス領域に設定される。これらのデータ転送情報は、ROM13に保持されるデータに基づいて設定される。
コマンド受信完了割込みによって、データトランスファーコントローラ(DTC)12の起動要求が行われる。これに応じてデータトランスファーコントローラ(DTC)12は、データ転送情報アドレス領域内のデータ転送情報(1)からデータを読み出してモードレジスタ(MR)23に書き込み、スイッチモードで動作することを判定する。データトランスファーコントローラ(DTC)12は、データ転送情報(1)から判定データを読み出し、受信コマンドがデータ受信コマンドであるか否かを上述の範囲内か否かによって判定する。データ受信コマンドである場合(範囲内である場合)、データトランスファーコントローラ(DTC)12は、データ転送情報(2)を読み出してレジスタ23〜27に書き込む。そしてデータトランスファーコントローラ(DTC)12は、ソースアドレスレジスタ(SAR)24が示すアドレス(本例ではデータ転送情報(3)(4)の配置アドレス)を用いてデータ転送情報(3)(4)を受信完了割込みベクタ指定アドレス(受信完了割込みが生じた場合に読み出されるアドレス)に転送する。
2回目のコマンド受信完了割込みによって、データトランスファーコントローラ(DTC)12が起動される。データトランスファーコントローラ(DTC)12は、受信完了割込みベクタ指定アドレスからデータ転送情報(3)を読み出す。そしてデータトランスファーコントローラ(DTC)12は、データ転送情報(3)を用いて読み出した転送データをデータ転送情報(7)のデスティネーションアドレスレジスタ(DAR)25に書き込む。またデータトランスファーコントローラ(DTC)12は、データ転送情報(3)に従ってチェイン動作(すなわちデータ転送情報(4)を用いたデータ転送)を行う。このチェイン動作によりデータトランスファーコントローラ(DTC)12は、データ転送情報(5)(6)を受信完了割込みベクタ指定アドレス(受信完了割込みが生じた場合に読み出されるアドレス)に転送する。
3回目のコマンド受信完了割込みによって、データトランスファーコントローラ(DTC)12が起動される。データトランスファーコントローラ(DTC)12は、受信完了割込みベクタ指定アドレスからデータ転送情報(5)を読み出す。そしてデータトランスファーコントローラ(DTC)12は、データ転送情報(5)を用いて読み出した転送データをデータ転送情報(7)のデータ転送カウンタ(CR)26に書き込む。またデータトランスファーコントローラ(DTC)12は、データ転送情報(5)に従ってチェイン動作を行う。このチェイン動作によりデータトランスファーコントローラ(DTC)12は、データ転送情報(7)(8)を受信完了割込みベクタ指定アドレス(受信完了割込みが生じた場合に読み出されるアドレス)に転送する。
4回目のコマンド受信完了割込みによって、データトランスファーコントローラ(DTC)12が起動される。データトランスファーコントローラ(DTC)12は、受信完了割込みベクタ指定アドレスからデータ転送情報(7)を読み出す。そしてデータトランスファーコントローラ(DTC)12は、データ転送情報(7)を用いて読み出した転送データをデスティネーションアドレスレジスタ(DAR)25が示すアドレスに転送する。この転送は、データ転送カウンタ(CR)26で指定された回数だけ繰り返し行われる。
データ転送情報(7)のモードレジスタ(MR)23のNXTE0ビットには1がセットされている。これにより指定の回数だけデータ転送が実行されると、チェイン動作によりデータ転送情報(8)を用いたデータ転送が行われる。データ転送情報(8)を用いた転送により例えば中央処理装置(CPU)10に割込み要求が発生する。
上述のようにスイッチモード、チェインモード等を組み合わせたデータ転送を行うことにより、データトランスファーコントローラ(DTC)12はコマンド種別、送信先アドレス、転送データ数が動的に変化するようなデータ転送も実行することができる。
図17は、図15の構成におけるデータ転送の第2の具体例について説明する。図17は、図16と同様のデータ転送を行うデータ例である。図17では、データ転送情報(3)のACMビット、ALMビット、CLMビット、NXTSビット、及びNXTE0ビットに1が設定されている。
1回目のコマンド受信完了割込みに関する転送処理は、図16の処理と同様である。2回目のコマンド受信完了割込みがデータトランスファーコントローラ(DTC)12に入力される。データトランスファーコントローラ(DTC)12は、受信完了割込みベクタ指定アドレスからデータ転送情報(3)を読み出す。そしてアドレスロードモード(AML=1)及びカウンタロードモード(CLM=1)が設定されているため、データトランスファーコントローラ(DTC)12は、図8に示す手順でソースアドレスレジスタ(SAR)24とデータ転送カウンタ(CR)26を更新する。そしてデータトランスファーコントローラ(DTC)12は、データ転送カウンタ(CR)26が示す回数だけデータ転送を実行する。データ転送情報(3)のモードレジスタ(MR)23のNXTE0ビットには1がセットされている。これにより指定の回数だけデータ転送が実行されると、チェイン動作によりデータ転送情報(4)を用いたデータ転送が行われる。データ転送情報(8)を用いた転送により例えば中央処理装置(CPU)10に割込み要求が発生する。
また図17では、別のデータ転送の例も示している。1回目のコマンド受信完了割込みによって、データトランスファーコントローラ(DTC)12が起動される。これに応じてデータトランスファーコントローラ(DTC)12は、データ転送情報(1)から読み出したデータをモードレジスタ(MR)23に書き込み、スイッチモードで動作することを判定する。データトランスファーコントローラ(DTC)12は、データ転送情報(1)の判定データを読み出して判定処理を行い、データ転送情報(2)’を読み出す。データ転送情報(2)’は、指定されたステータスを送信データレジスタに書き込むことを指定する。データトランスファーコントローラ(DTC)12は、データ転送情報(2)’を用いてデータ転送を行う。例えばデータトランスファーコントローラ(DTC)12は、データ転送情報(2)’を用いて指定された機能ブロック(例えば入出力(I/O)ポート55)のステータスデータを読み出し、通信モジュール(SCI)51の送信レジスタに書き込む。
続いて本実施の形態にかかるマイクロコンピュータ1の効果について説明する。データトランスファーコントローラ(DTC)12は、読み出したデータ転送情報からモードを判定し、モードに応じて転送元アドレス、転送先アドレス、転送回数の少なくとも一部を変更する構成である。すなわちデータトランスファーコントローラ(DTC)12は、読み出したデータに応じて一般的には中央処理装置(CPU)10が行う処理を代行し、データ転送を行っている。これにより中央処理装置(CPU)10に対する割込み要求の発生頻度が低減し、中央処理装置(CPU)10が割込み処理を行う場合の例外処理、スタック退避/復帰操作、復帰命令の実行等が不要となる。中央処理装置(CPU)10の処理負荷が減ることにより、マイクロコンピュータ1の処理を高速化できるとともに、応答性を向上することができる。またマイクロコンピュータ1は、応用システムに応じた柔軟なデータ転送を行うことができる。
またデータトランスファーコントローラ(DTC)12は、テスト転送モード時の範囲外判定時のように、チェイン動作を行うことによりエラー処理等を実行できる。これにより中央処理装置(CPU)10が実行するエラー処理等を削減することができる。また中央処理装置(CPU)10は、専用のハードウェア(例えばデータトランスファーコントローラ(DTC)12)では実現な困難な処理のみを実行する構成にできる。これにより、中央処理装置(CPU)10が実行するプログラムを短縮する(換言すると簡潔にする)ことができる。
データトランスファーコントローラ(DTC)12は、モードに応じて必要なデータのみを読み出す構成である。例えばデータトランスファーコントローラ(DTC)12は、シフトモードの場合にはモードレジスタ(MR)23及びソースアドレスレジスタ(SAR)24に対してのみ読み出したデータを書き込む。このように必要なデータのみを読み書きすることにより、処理の高速化を図ることができる。
データトランスファーコントローラ(DTC)12は、中央処理装置(CPU)10に比べて論理規模が小さい。すなわちデータトランスファーコントローラ(DTC)12は、中央処理装置(CPU)10よりも消費電力が少ない。また、データトランスファーコントローラ(DTC)12は、高速にデータ転送等を行うことができるので、少ないクロック数で実行することができ、低消費電力化に寄与することができる。このデータトランスファーコントローラ(DTC)12が行う処理が増加したことにより、マイクロコンピュータ1全体の消費電力を抑えることができる。
またデータトランスファーコントローラ(DTC)12は、データ転送機能制御部(FC)20にデータ転送情報の一部を退避しておき、その後の転送処理時に退避したデータを参照することができる。これにより、上述のシフトモードの動作や、複数のデータ転送を組み合わせた複雑な動作を実現することができる。すなわちデータトランスファーコントローラ(DTC)12は、柔軟な動作を実現することができる。
またマイクロコンピュータ1は、データトランスファーコントローラ(DTC)12が読み出すデータ転送情報を記憶装置(好適にはRAM14)に格納している。RAM14がデータ転送情報を保持する利点として以下の事項が挙げられる。
(a)データ転送数を増やすことができる。全てのデータ転送情報をデータ転送装置自身のハードウェアが保持する方式(例えばDMAコントローラの方式)は、実装されたハードウェアによりデータ転送数が制限されてしまう。一方、上述のようにデータ転送情報を使用用途の限定されないRAM14に格納する方式は、データ転送数を増やすことが容易であり、利用者の種々の使用方法に対応することができる。
(b)本実施の形態のマイクロコンピュータ1は、上述のように割込み要因に応じて中央処理装置(CPU)10に割込み要求を行うか、データトランスファーコントローラ(DTC)12にデータ転送要求を行うか、を切り替える構成である。そのため本実施の形態にかかるマイクロコンピュータ1は、起動要因の選択をデータ転送装置自身の制御レジスタ設定及びマイクロコンピュータのインターフェイスとして実装する方式(例えばDMAコントローラの方式)に比べ、多くの割込み及びイベント発生に対してデータ転送を行うことができる。
(c)チェイン動作等の1回のデータ転送の起動時に実行するデータ転送数を増やすことができる。これにより異なるデータ転送を組み合わせて実行できる。例えば通常のデータ転送とエラー書き込みを連続して実行できる。
(d)データ転送情報の構成を変更することや、増減することができる。
(e)本実施の形態にかかるデータトランスファーコントローラ(DTC)12は1回のデータ転送に関するデータのみを保持する。すなわちデータトランスファーコントローラ(DTC)12のハードウェア規模が小さい。そのため第5の利点として、データトランスファーコントローラ(DTC)12にハードウェアでの機能追加を行った場合であっても、マイクロコンピュータ1全体の物理的な規模の増加を抑止することができる。
(f)上述のように本実施の形態にかかるデータトランスファーコントローラ(DTC)12は、必要なデータ転送情報を自らが読み出して使用するので、中央処理装置(CPU)10から書き込みが行われることがない。そのため第6の利点として、DMAコントローラ方式では必要であった中央処理装置(CPU)10からの書き込みの競合等の複雑な動作条件を考慮する必要が無くなる。これにより物理的な規模の増加を抑止することができる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
例えば上述の説明では、データ転送情報を32ビット単位の可変長として説明したが、この単位は任意のサイズとすることができる。またデータ転送機能の指定方法も任意に変更することができる。上述の各アドレスレジスタ(SAR、DAR)のビット数は32ビットに限定されるものではなく、中央処理装置(CPU)10またはシングルチップマイクロコンピュータのアドレス空間に応じて変更でき、アドレス空間が16Mバイトである場合には上述のアドレスレジスタは24ビットとすればよい。
割込みコントローラ(INT)11、データトランスファーコントローラ(DTC)12、演算器(ALU)28等の内部構成も適宜変更することが可能である。
また中央処理装置(CPU)10が実行するプログラムは、ROM13に配置されてもよいし、マイクロコンピュータ1の外部メモリに配置されてもよい。同様に中央処理装置(CPU)10の作業領域はRAM14でなくてもよく、マイクロコンピュータ1の外部メモリを使用してもよい。この場合、マイクロコンピュータ1はROM13やRAM14を内蔵していなくてもよい。また上述のデータ転送情報についても、RAM14ではなく、外部メモリに配置されていてもよい。
マイクロコンピュータ1は、データトランスファーコントローラ(DTC)12に加え、いわゆるDMA(Direct Memory Access)コントローラ等のデータ転送装置を設けることも可能である。またマイクロコンピュータ1は、データトランスファーコントローラ(DTC)12とDMAコントローラを一つの機能モジュールとして持つ構成であってもよい。
上述の説明ではデータ転送情報をRAM14等の記憶装置に読み書きする構成を用いて説明を行ったが、いわゆるDMAコントローラに対しても図5の状態遷移に従ったデータ転送を実行させることができる。すなわち上述のデータ転送情報を用いたモード判定に従って行うデータ転送方式は、任意のデータ転送装置に適用することが可能であり、当該データ転送装置の一例としてデータトランスファーコントローラ(DTC)12やDMAコントローラが挙げられる。
またバス権やウェイト等のバス動作の詳細については説明を省略したが、これらは適宜実装可能である。
マイクロコンピュータ1についても上述の構成に限られず、内蔵する機能ブロックの構成も適宜変更することができる。例えば中央処理装置(CPU)10とデータトランスファーコントローラ(DTC)12を同一チップに搭載するシングルチップの構成とすることもできるし、別のチップに搭載する構成とすることもできる。すなわち中央処理装置(CPU)10を第1のチップに搭載し、データトランスファーコントローラ(DTC)12を第2のチップに搭載する構成とすることもできる。また上述のデータトランスファーコントローラ(DTC)12は他の半導体集積回路、例えばデジタルシグナルプロセッサ(DSPを中心とした半導体集積回路等に搭載することも可能である。