<実施の形態1>
まず、図1のブロック図を用いて、実施の形態1にかかるマイクロコンピュータ(MCU)100の構成について説明する。
MCU100は、中央処理装置(CPU)101、データトランスファコントローラ(DTC)102、割り込みコントローラ(INT)103、リードオンリメモリ(ROM)104、ランダムアクセスメモリ(RAM)105、バスコントローラ(BSC)105、タイマ6、シリアルコミュニケーションインタフェースなどの通信モジュール107、A/D変換器およびD/A変換器などのアナログモジュール108、入出力ポート(I/O)109、および、図示はされない、リセット制御や動作モード制御などの機能ブロックないしはモジュールから構成される。これらは、MCU内部バス(マスタバスおよびスレーブバス)によって相互に接続される。
MCU100において動作の主体となるのはCPU101であり、主にROM104から命令を読込んで動作する。DTC102は、CPU101の設定に基づき、CPU101に代ってデータ転送を行う。
INT103は、タイマ107、通信モジュール108、アナログモジュール109などからの割み込み要求、およびMCU100外部からの複数の外部割り込み要求信号に基づく、I/O110からの割り込み要求を受けて、CPU101、DTC102のいずれかに割り込みないしデータ転送要求を出力する。また、INT103は、割り込み信号による処理を開始したときあるいは終了したときに、割り込みをクリアする信号である割込みクリア信号を、タイマ107、通信モジュール108、アナログモジュール109、I/O110のそれぞれの割込み信号ないし割り込み要因フラグに対応して出力する。
BSC106は、CPU101およびDTC102からのバスリクエスト信号を受けて、MCU内部バス(マスタバス)の占有に対する調停をし、図示はされないバス使用許可信号を出力する。BSC106は、CPU101およびDTC102と、バスリクエスト、バスアクノレジ、バスコマンド、ウェイト、アドレス、データなどのインタフェースを行い、MCU100の内部バスに接続された、RAM105やそのほかの機能ブロックないしはモジュールに対するCPU101およびDTC102によるリード/ライトを実現ならしめる。
図2に、DTC102の構成を示すブロック図を示す。
DTC102は、データ転送制御ブロック(DTCCNT)、バスインタフェース(MBIF)、ベクタ生成ブロック(VG)、4チャネルのレジスタファイル(REG0〜3)、演算器(ALU)を含む。
各レジスタファイルは、ベクタアドレスレジスタ(VAR)、モードレジスタ(MR)、ソースアドレスレジスタ(SAR)、デスティネーションアドレスレジスタ(DAR)、データ転送カウンタ(CR)、ステータスレジスタ(SR)を持つ。
DTCCNTは、INT103とのインタフェースとして、DTCINIT、DTCREQ、DTCVECの入力、割り込み要因/DTE/INITEクリア、DTC動作開始/終了の出力を持つ。また、MCU100内部マスタバスとのインタフェース(MBIF)が、MCU100内部バスをバスマスタとして利用可能にする。
DTCCNTは、INT103からのDTCREQなどの入力信号およびMRの内容に基づき、DTC102の制御を行う。また、INT103に対して、割り込み要因、DTE、INITEクリア信号などを出力する。DTCCNTは使用チャネル情報記憶手段を有し、DTCが起動されると割り込み要因フラグまたはDTEビットをクリアし、DTCが停止するまでに使用したレジスタファイルのチャネルを保持する。
MBIFは、DTC内部バスと、MCU100の内部マスタバスとのインタフェースを行う。このインタフェースには、バスリクエスト、バスアクノレジ、バスコマンド、ウェイト、アドレス、データなどを含む。
VGは、INT103から与えられる割込みベクタ番号DTCVECに従って、ベクタアドレスを生成する。例えば、DTCVECを4倍などとし、所定のオフセットを加算する。
VARは、前記ベクタアドレスからリードしたデータ転送情報の先頭アドレスを格納する。
MR、SAR、DAR、CRは、前記データ転送情報先頭アドレスから順次リードしたデータ転送情報を格納する。
SRは、当該レジスタファイルの保持しているデータ転送情報のベクタ番号などを保持する。
ALUは、算術演算、論理演算、シフトなどを行う。
DTC102の内部バスは、図示はされないものの、複数のバスが存在し、上述のSAR、DAR、CRの複数の内容を、ALUで演算できるようにする。
図3に、実施の形態1にかかるDTC102のレジスタファイルおよびデータ転送情報(転送情報セット)の一例を示す。
DTC102のデータ転送情報は、モードレジスタ(MR)、ソースアドレスレジスタ(SAR)、デスティネーションレジスタ(DAR)、転送カウントレジスタ(CR)からなる。
DTC102のレジスタファイルは、前記データ転送情報および、ベクタアドレスレジスタ(VAR)、ステータスレジスタ(SR)を含む。
CRは、ブロック転送カウントレジスタ(BTCR)、転送カウントレジスタ(TCR)に分割され、TCRは8ビットずつ上位(TCRH)、下位(TCRL)に分割されている。CRは後述のデータ転送モードに従って動作する。
これらのレジスタファイルは、上述の通り4チャネル分の回路がDTCの内部に存在し、これらに格納されるべきデータ転送情報(MR、SAR、DAR、CR)は、任意の必要組数がCPUのアドレス空間上の、RAMなどの所定のデータ転送情報配置領域に配置される。
モードレジスタ(MR)のビット構成は以下の通りである。
ビット15、ビット14は、SM1、SM0ビットであり、データ転送後にSAR2をインクリメントするか、デクリメントするか、固定にするかを指定する。
ビット13、ビット12は、DM1、DM0ビットであり、データ転送後にDARをインクリメントするか、デクリメントするか、固定にするかを指定する。
ビット11、ビット10は、TMD1、TMD0ビットであり、データ転送モードを選択する。TMD1、TMD0ビットを00にするとノーマルモードとなる。このノーマルモードでは、1回の起動で、SARで示されるアドレスからDARで示されるアドレスへ1回のデータ転送を行う。
この後、SM1、SM0、DM1、DM0ビットの指定に基づいてSAR、DARの操作が行われ、CRがデクリメントされる。これを起動要因が発生する毎に、CRで指定された回数だけ繰り返す。そして、CRで指定された回数のデータ転送が終了すると、DTC動作が禁止され、起動要因となった割り込みがCPUに要求される。
TMD1、TMD0ビットを01にするとリピートモードとなる。TMD1、TMD0ビットを10にするとブロック転送モードとなる。リピートモード、ブロック転送モードは、公知の技術で実現できる。
ビット9はDIRビットであり、転送元または転送先のいずれをリピート領域、ブロック領域とするかを選択する。
ビット7、6はSz1、Sz0ビットであり、1回のデータ転送をバイトサイズ、ワードサイズ、ロングワードサイズのいずれで行うかを選択する。
ビット1はNXTE1ビットであり、1つの起動要因に対してデータ転送を終了するか、次のデータ転送を行うかを選択する。このNXTE1ビットを0にクリアした場合、データ転送情報リードおよびデータ転送後、データ転送情報をライトしてDTCの動作を終了する。
また、このNXTE1ビットを1にセットした場合、データ転送情報リードおよびデータ転送後、データ転送情報をライトして、さらに連続したアドレスからデータ転送情報をリードして、このデータ転送情報で指定されるデータ転送を行い、データ転送情報をライトする。これをチェイン転送と呼ぶ。
ビット0はNXTE0ビットであり、CRが0になったときに、チェイン転送を行うかを指定する。
ステータスレジスタ(SR)のビット構成は以下の通りである。
ビット31は、VLDフラグであり、当該レジスタファイルが保持するデータ転送情報が有効であることを示す。リセットによって0にクリアされる。当該レジスタファイルにデータ転送情報が格納されると1にセットされる。所定のデータ転送の実行を終了すると0にクリアされる。
ビット30は、PRMフラグビットであり、当該レジスタファイルが、後述のDTCIRライトによるデータ転送情報格納を行ったことを示す。
ビット29、28は、LRUフラグである。レジスタファイルの各チャネルが異なる値(0〜3)を示すようにする。その方法は任意にできるが、例えば、古く使用したチャネルは大きい値、新しく使用したチャネルは小さい値となるようにするとよい。
ビット7〜0は、当該レジスタファイルにデータ転送情報を格納したときのベクタを保持する。
図4に、実施の形態1にかかるDTC102のデータ転送情報初期化レジスタ(DTCIR)を示す。
DTCIRのビット31はINITEビット、ビット7〜0はベクタ番号である。DTCIRは、特に制限はされないものの、割り込みコントローラ(INT)に1本を設ける。
CPU101がINITEビットを1にセットすると、DTC102に対し、DTCINIT、DTCVECを与える。この場合のDTCVECは、DTCIRのビット7〜0による。DTC102はこれに基づき、データ転送情報先頭アドレスとデータ転送情報のリードを行う。このリードが完了すると、INITEビットを0にクリアする。
本実施の形態では、DTC102のレジスタファイルは4チャネルであるため、CPU101は4つのベクタに対して、上記動作を実行することができる。
なお、初期化後に要求される起動要因が予測できないような場合は、上記初期化動作を行わずに、DTC102を起動することも可能である。
図5に、実施の形態1におけるDTC102の初期化フローチャートを示す。
DTC初期化が起動される場合、割り込みコントローラ(INT103)から、前記DTCIRライトに基づく、DTCINIT、DTCVECがDTC102に与えられる。
S101:DTC102のDTCCNTは、与えられたDTCVECに対応したベクタ領域をリードする(VR)。ここでリードした内容は、データ転送情報が存在する記憶領域の先頭アドレスである。
S102:DTCCNTは、取得した先頭アドレスに基づきデータ転送情報をリードする(IR)。リードしたデータ転送情報は、DTC102のレジスタファイルの内の1つに格納する。このとき、ステータスレジスタ(SR)のVLD、LRUフラグを参照して、VLD=0(無効)のレジスタファイル、あるいは、LRUが最も大きい(古い)レジスタファイルを使用する。無効のレジスタファイルが複数ある場合は、チャネル番号の小さい順に使用する。
データ転送情報を格納すると、SRのVLD、PRMフラグを1にセットする。また、INTに対し、INITEクリア信号を与える。
図6に、実施の形態1にかかるDTC102のデータ転送動作のフローチャートを示す。
CPU101は、所要のデータ転送情報を、所定の転送情報アドレス領域にライトし、起動要因とする割り込み要因に対応したDTEビットを1にセットしておく。この状態で、当該割り込みが発生して、DTC動作が起動される場合、割り込みコントローラ(INT)から、DTCREQ、DTCVECがDTC102に与えられる。
S201:DTC102のDTCCNTは、DTCVECと、各レジスタファイルのステータスレジスタに保持しているベクタ番号との比較を行う。有効なベクタステータスと一致すると、DTCに保持した当該レジスタファイルを利用できることとなるので、当該レジスタファイルを使用して、対応するレジスタセットを利用する。
S202:一致しない場合は、与えられたDTCVECに対応したベクタ領域をリードする(VR)。ここでリードした内容がデータ転送情報の先頭アドレスである。
S203:DTCCNTは、上記先頭アドレスからデータ転送情報をリードする(IR)。リードしたデータ転送情報は、DTCのレジスタファイルの内の1つに格納する。このとき、ステータスレジスタ(SR)のVLD、LRUフラグを参照して、VLD=0(無効)のレジスタファイル、あるいは、LRUが最も大きい(古い)レジスタファイルを使用する。データ転送情報を格納すると、SRのVLDフラグを1にセットし、PRMフラグを0にクリアする。
S204:DTCCNTは、保持またはリードしたデータ転送情報に従って、SARで指定された転送元アドレスをリードする(SR)。
S205:DTCCNTは、転送元アドレスからリードしたデータをDARで指定された転送先アドレスへライトする(DW)。CRのデクリメントなども行う。このデータ転送は公知の技術で実現できる。
S206:DTCCNTは、転送情報書き換え判定を行う。すなわち、データ転送情報が更新されていれば、更新されたデータ転送情報を、元のアドレスすなわちS202で取得した先頭アドレスへライトする(IW)。CRが0になり、所定回数のデータ転送が終了した場合は、DTEクリア信号を、INTに与える。同時に、DTCCNTの使用チャネル情報で指定されたチャネルの全ての、SRのVLDフラグをクリアする。
DTCCNTは、当該レジスタファイルの所定回数のデータ転送が終了していない場合は、割り込み要因クリア信号を、INTに与える。
DTCCNTは、VARに、データ転送情報に基づく所定のアドレスを保持させる。例えば、データ転送情報の次のアドレスを保持させる。
S207:チェイン動作が指定されている場合は、DTCCNTは、当該レジスタファイルのVARに基づき、次のデータ転送情報をリードする(IR)。リードしたデータ転送情報は、前記同様に、DTCのレジスタファイルの内の1つに格納する。以下の動作は上述のとおりである。
図7に、実施の形態1にかかるDTC102のデータ転送動作における状態遷移図を示す。かかる状態遷移は、主として、DTC102のDTCCNTに実装される。
DTC102は、INTからDTCINT、DTCREQが与えられて動作を開始する。
DTCREQが与えられた場合は、与えられたDTCVECとDTC内部のレジスタファイルのSRのベクタとを比較する。また、どのレジスタファイルを使用するかを判断する。DTCINTが与えられた場合、およびDTCREQが与えられてベクタが不一致の場合は、VRステートに遷移する。DTCREQが与えられてベクタが一致の場合は、直ちにSRステートに遷移する。
S301(VRステート):DTCCNTは、与えられたDTCVECをSRに反映し、DTCVECに従って、VGで生成したベクタアドレスに基づき、ベクタ領域(データ転送情報先頭アドレス配置領域)に格納されたデータ転送情報の先頭アドレスをリードする。リードした内容は、使用するレジスタファイルのVARに格納する。IRステートに遷移する。
S302(IRステート):上記先頭アドレスにあるデータ転送情報配置領域に格納されたデータ転送情報をリードする。データ転送情報の内容は、MR、DR、SAR、DAR、CRである。S301へ遷移した要因がDTCINTによる場合は、SRのVLD、PRMフラグを1にセットして、INITEビットをクリアして、停止状態に戻る。DTCREQによる場合は、SRのVLDフラグを1にセット、PRMフラグを0にクリアして、SRステートに遷移する。
S303(SRステート):DTCCNTは、SARの内容に従い、転送元アドレスの内容をリードする。MRの内容に従い、SARのインクリメントなどを行う。続いて、DWステートに遷移する。
D304(DWステート):DTCCNTは、RAM105の転送元アドレスからリードしたデータを、DARの内容に従い、転送先アドレスへライトする、MRの内容に従い、DARのインクリメントなどを行う。また、CRのデクリメントなどを行う。続いて、IWステートに遷移する。
ここで、ブロック転送モードの場合は、TCRで指定した回数、SRおよびDWステートを繰り返す。
S305(IWステート):DTCCNTは、DR、SAR、DAR、CRの内容の内、更新したものを、前記VARの内容に従って、データ転送情報配置領域に書き戻す。
ここで、チェイン転送の場合は、引き続き、IR、SR、DW、IWステートを実行し、IRでリードした別のデータ転送情報に従って、データ転送を行う。
一方、チェイン転送でない場合、CRの内容に従って、起動要因となった割り込み要因フラグ、またはDTEビットをクリアして、停止状態に戻る。
(変形例)
図8に、DTC102の変形例のブロック図を示す。
DTCCNTは、DTCINIT信号を、チャネル1〜3に対応したDTCINIT1〜3として入力する。また、DTCRSUS信号を、チャネル1〜3に対応したDTCRSUS1〜3として入力する。
図9に、実施の形態1の変形例におけるDTC102のデータ転送情報初期化レジスタ(DTCIR1〜3)を示す。
DTCIRは、チャネル1〜3に対応したDTCIR1〜3とし、DTCIR1〜3に対応して、DTCINIT1〜3を出力する。また、ビット30には、SUSビットを持つ。
DTCIR1〜3へのライトによって、DTCINIT1〜3を与え、DTC内部のレジスタファイル1〜3が、データ転送情報を格納するようにする。
具体的には、保持したデータ転送情報が有効、SRのVLD、PRMフラグが1にセットされていれば、LRUフラグに関わらず、データ転送情報を保持するようにする。さらに、データ転送情報の更新に関わらず、データ転送情報の書き戻しは行わないようにする。
このため、レジスタファイル1〜3は、データ転送情報リードを行わないから、高速なデータ転送を行うことができる。起動要因となるイベントからデータ転送までの時間を短縮して、いわゆるリアルタイム性を向上することができる。所定回数のデータ転送を実行した後も、前回同様のデータ転送を行う場合は、データ転送情報をROMに配置することもでき、データ転送情報をRAMに配置する、CPUのプログラムを省略することができる。
マイクロコンピュータの使用方法に応じて、起動頻度が高い起動要因をレジスタファイル1〜3に固定することで、全体的な処理を高速化できる。
また、SUSビットを1にセットすると、DTCRSUS1〜3信号を与えて、対応するレジスタファイルのSRのVLD、PRMフラグを0にクリアする。
レジスタファイル0は、従来技術同様に、割り込みコントローラ(INT)から与えられるDTCREQ、DTCVECに応じて、データ転送情報をリードして動作を行う。さらに、レジスタファイル0のSRを使用して、データ転送情報の再利用を行うことができる。
レジスタファイル1〜3のSRのPRMフラグが0にクリアされている場合も、チャネル0同様に動作する。例えば、レジスタファイル1〜3のデータ転送が完了し、再度の初期化待ちになっている場合、この期間にほかの起動要因が有効に利用することができる。SUSビットを1にセットして、VLD、PRMフラグを0にクリアした場合も同様にできる。
<実施の形態2>
図10に、実施の形態2におけるDTC102のレジスタファイルおよびデータ転送情報(転送情報セット)を示す。
実施の形態1に対し、ステータスレジスタ(SR)の構成が異なる。このSRのビット構成は以下の通りである。
ビット27〜2は、データ転送情報アドレスである。
データ転送情報は32ビット(ロングワード)を単位とし、下位2ビットは00とみなす。
ビット0は、VLDフラグであり、当該レジスタファイルが保持するデータ転送情報が有効であることを示す。リセットによって0にクリアされる。当該レジスタファイルにデータ転送情報が格納されると1にセットされる。所定のデータ転送の実行を終了すると0にクリアされる。
CPUのアドレス空間が4GBより小さい場合、あるいは、データ転送情報を配置可能なアドレス空間を小さくできる場合、ビット30〜28に、PRM、LRUフラグを設けることができる。アドレス空間が大きく、データ転送情報を配置可能なアドレス空間を小さくできない場合、PRM、LRUフラグを設けなくてもよい。
図11に、実施の形態2におけるDTC102のデータ転送情報初期化レジスタ(DTCIR1〜3)を示す。
DTCIRのビット27〜2はデータ転送情報先頭アドレス、ビット1はSUSビット、ビット0はINITEビットである。
CPU101がINITEビットを1にセットすると、DTCに対し、DTCINIT、DTCVECを与える。この場合のDTCVECはビット数を拡張しておき、DTCIRのビット27〜2を与える。DTCはこれに基づき、データ転送情報のリードを行う。このリードが完了すると、INITEビットを0にクリアする。
図12に、実施の形態2におけるDTC102の初期化フローチャートを示す。
DTC102初期化が起動される場合、割り込みコントローラ(INT103)から、前記DTCIRライトに基づく、DTCINIT、DTCVECがDTC102に与えられる。DTCVECはデータ転送情報の先頭アドレスを示す。
S401:DTC102のDTCCNTは、与えられたDTCVEC(データ転送情報先頭アドレス)に対応したデータ転送情報をリードする(IR)。リードしたデータ転送情報は、DTCのレジスタファイルの内の1つに格納する。このとき、ステータスレジスタ(SR)のVLD、LRUフラグを参照して、VLD=0(無効)のレジスタファイル、あるいは、LRUが最も大きい(古い)レジスタファイルを使用する。無効のレジスタファイルが複数ある場合は、チャネル番号の小さい順に使用する。
データ転送情報を格納すると、SRのVLD、PRMフラグを1にセットする。また、INTに対し、INITEクリア信号を与える。
図13に、実施の形態2におけるDTC102のデータ転送動作のフローチャートを示す。
割り込みなどのイベントが発生して、DTC102動作が起動される場合、割り込みコントローラ(INT)から、DTCREQ、DTCVECがDTC102に与えられる。
S501:DTCCNTは、与えられたDTCVECに対応したベクタ領域をリードする(VR)。
S502:DTCCNTは、リードしたデータ転送情報先頭アドレスを、各レジスタファイルのステータスレジスタに保持しているデータ転送情報先頭アドレスとの比較を行う。
有効なデータ転送情報先頭アドレスと一致すると、DTCに保持した当該レジスタファイルを利用できるので、当該レジスタファイルを使用して、対応するレジスタセットを利用する。S504へ遷移する。
S503:一致しない場合は、DTCCNTは、リードしたデータ転送情報先頭アドレスに基づきデータ転送情報をリードする(IR)。リードしたデータ転送情報は、DTCのレジスタファイルの内の1つに格納する。このとき、ステータスレジスタ(SR)のVLD、LRUフラグを参照して、VLD=0(無効)のレジスタファイル、あるいは、LRUが最も大きい(古い)レジスタファイルを使用する。データ転送情報を格納すると、SRのVLDフラグを1にセットし、PRMフラグを0にクリアする。
S504:DTCCNTは、保持またはリードしたデータ転送情報に従って、SARで指定された転送元アドレスをリードする(SR)。
S505:DTCCNTは、リードしたデータを、DARで指定された転送先アドレスへライトする(DW)。CRのデクリメントなども行う。このデータ転送は公知の技術で実現できる。
S506:DTCCNTは、転送情報書き換え判定を行う。すなわち、データ転送情報が更新されていれば、更新されたデータ転送情報を、データ転送情報先頭アドレスへライトする(IW)。CRが0になり、所定回数のデータ転送が終了した場合は、DTEクリア信号を、INTに与える。同時に、SRのVLDフラグをクリアする。
当該レジスタファイルの所定回数のデータ転送が終了していない場合は、割り込み要因クリア信号を、INTに与える。
DTCCNTは、VARに、データ転送情報の所定のアドレスを保持させる。例えば、データ転送情報の次のアドレスを保持させる。
S507:チェイン動作が指定されている場合は、DTCCNTは、各レジスタファイルのステータスレジスタに保持しているデータ転送情報先頭アドレスとの比較を行う。
有効なデータ転送情報先頭アドレスと一致すると、DTCに保持した当該レジスタファイルを利用できるので、当該レジスタファイルを使用して、対応するレジスタセットを利用する。
一致しない場合は、VARが保持する次のデータ転送情報先頭アドレスに基づきデータ転送情報をリードする(IR)。リードしたデータ転送情報は、前記同様に、DTCのレジスタファイルの内の1つに格納する。以下の動作は上述のとおりである。
1つの起動要因で、チェイン転送によって、複数のデータ転送を行う場合、そのいずれもレジスタファイルに保持することができる。複数の起動要因でデータ転送情報を共有する場合も、このデータ転送情報をレジスタファイルに保持することができる。共通に利用可能で利用頻度の高いものを高速化することができる。
図14に、実施の形態2におけるDTC102の状態遷移図を示す。
DTCINTが与えられた場合は、ベクタIRステートに遷移する。DTCREQが与えられた場合は、VRステートに遷移する。DTCSUSが与えられた場合は、IWステートへ遷移する。
S601(VRステート):与えられたDTCVECに従って、VGで生成したベクタアドレスに基づき、DTCCNTは、ベクタ領域(データ転送情報先頭アドレス配置領域)に格納されたデータ転送情報の先頭アドレスをリードする。リードしたデータ転送情報先頭アドレスと、DTC内部のレジスタファイルのSRのデータ転送情報先頭アドレスとを比較する。また、どのレジスタファイルを使用するかを判断する。
データ転送情報先頭アドレスが不一致の場合は、IRステートに遷移する。一方、データ転送情報先頭アドレスが一致の場合は、直ちにSRステートに遷移する。
S602(IRステート):DTCREQが与えられてここに遷移した場合は、DTCVECにデータ転送情報先頭アドレスが与えられので、これに基づき、DTCCNTは、データ転送情報配置領域に格納されたデータ転送情報をリードする。この内容は、MR、DR、SAR、DAR、CRである。SRのVLD、PRMフラグを1にセットして、INITEビットをクリアして、停止状態に戻る。
VRステートからここに遷移した場合は、DTCCNTは、前記先頭アドレスに従ってデータ転送情報配置領域に格納されたデータ転送情報をリードする。この内容は、MR、DR、SAR、DAR、CRである。SRのVLDフラグを1にセット、PRMフラグを0にクリアして、SRステートに遷移する。
S603(SRステート):DTCCNTは、SARの内容に従い、転送元アドレスの内容をリードする。MRの内容に従い、SARのインクリメントなどを行う。続いて、DWステートに遷移する。
S604(DWステート):DTCCNTは、転送元アドレスからリードしたデータを、DARの内容に従い、転送先アドレスへライトする、MRの内容に従い、DARのインクリメントなどを行う。また、CRのデクリメントなどを行う。
VLD、PRDフラグがいずれも1にセットされている場合、データ転送情報は、DTC内部のレジスタファイルを再利用するので、データ転送情報の書き戻しは行わないので、IWステートへは遷移しない。なお、所定回数のデータ転送が終了し、CRが0になった場合は、IWステートへは遷移するようにしてもよい。
S605(IWステート):DWステートからここに遷移した場合、DTCCNTは、MR、DR、SAR、DAR、CRの内容の内、更新したものを、前記VARの内容に従って、データ転送情報配置領域に書き戻す。
チェイン転送の場合は、前記VARが示す次のデータ転送情報先頭アドレスと、DTC内部のレジスタファイルのSRのデータ転送情報先頭アドレスとを比較する。前記同様に、IRステートまたはSRステートに遷移する。
チェイン転送でない場合、CRの内容に従って、起動要因となった割り込み要因フラグ、またはDTEビットをクリアして、停止状態に戻る。所定回数のデータ転送が終了し、DTEビットをクリアするときは、SRのVLD、PRMフラグも0にクリアする。
DTCSUSが与えられてここに遷移した場合、DTCCNTは、SRのVLD、PRMフラグを0にクリアして、MR、DR、SAR、DAR、CRを、前記VARの内容に従って、データ転送情報配置領域に書き戻す。
(変形例)
図15に、実施の形態2におけるDTC102の変形例のブロック図を示す。
変形例では、バスインタフェース(SBIF)を設け、MCU内部スレーブバスとのインタフェースを行う。SBIFに、DTC内部のレジスタファイルのSRを出力し、MCU内部スレーブバスを介して、CPU101によるリードを可能にする。
CPU101は、SRをリードすることで、DTC102内部のレジスタファイルの状態を知ることができる。また、MCU内部スレーブバスを持つことで、エミュレーションなどのほかの機能によっても利用することができる。
本実施の形態では、データ転送情報は32ビット×4本(固定)として説明を行った。データ転送のモード、転送元アドレス、転送先アドレス、転送回数を指定することは一般的であるためである。
一方、データ転送情報が可変長の場合も考えられる。例えば、データレジスタを伴うデータ転送情報(32ビット×5本)の形式、あるいは、回数に制限をなくし、CRを無効としたデータ転送情報(32ビット×3本)の形式をも有することも考えられる。
このようなデータ転送情報が可変長場合、データ転送情報が、レジスタファイルに備えるレジスタより少なければ対応可能である。従って、最大のデータ転送情報に合わせたレジスタファイルを設けるようにすればよい。
あるいは、高速化が必要なデータ転送が、最大のデータ転送情報とは限らないから、チャネル0のみ、最大のデータ転送情報に合わせたレジスタファイルとし、チャネル1〜3は使用頻度が高く、より小さいデータ転送情報に対応するようにしてもよい。
<実施の形態3>
図16に、実施の形態3のDTC102のレジスタファイルおよびデータ転送情報(転送情報セット)を示す。
本実施の形態においては、モードレジスタ(MR)のビット31、ビット30は、AUTE、AUTSビットを設ける。
AUTEビットを1にセットした場合、DTCCNTは、CRで指定された回数のデータ転送を連続して実行する。AUTSビットは、この連続実行の途中でCPUにバス権を移譲するかを指定する。
図17に、実施の形態3のDTC102の状態遷移図を示す。
DTCINTが与えられた場合は、ベクタIRステートに遷移する。
S702(IRステート):DTCINTが与えられてここに遷移した場合は、DCTCNTは、データ転送情報配置領域に格納されたデータ転送情報をリードする。リードしたMRのAUTEビットが0にクリアされている場合は、停止状態に戻る。AUTEビットが1にセットされている場合には、引き続きSR、DWステートに遷移する。
S703乃至S704(SRステート、DWステート):DCTCNTは、CRで指定された回数のデータ転送を連続して実行する。このとき、AUTSビットが1にセットされている場合は、一旦、IDLEステート(S705)を経るようにする。IDLEステートでは、一旦バス権を解放する。所定回数のデータ転送が終了し、CRが0になった場合は、IWステートへ遷移する。
S706(IWステート):DCTCNTは、AUTEビットが1にセットされている場合は、データ転送情報の書き戻しは行わない。
チェイン動作の場合は、前記同様に、IRステートまたはSRステートに遷移する。
なお、IDLEステートに留まる時間を、MRの別のビットなどによって、可変にすることもできる。
AUTEビットを1にセットしたデータ転送は、マイクロコンピュータの初期設定に好適である。ROM上のデータ転送情報を直接使用し、ROM上に用意した初期値を、マイクロコンピュータの所定のアドレスに設定することできる。チェイン転送を利用することで、飛び飛びのアドレスに対しても初期設定を行うことができる。
(変形例)
図18に、実施の形態3の変形例にかかるDTC102のブロック図を示す。
変形例においては、レジスタファイルを1チャネルとする。前記の初期設定に対するDTCの利用にあたっては、1チャネルでも問題ない。
また、AUTEビットはデータ転送情報に持つのではなく、DTCINITとともに与えられるようにする。
モード信号を入力し、マイクロコンピュータの動作モードなどによって、リセット解除時にDTCを起動することを選択可能にする。モード信号は、マイクロコンピュータのモード入力などによって決定するようにする。
図19に、実施の形態3の変形例にかかるDTC102のデータ転送情報初期化レジスタ(DTCIR)を示す。
レジスタファイルが1チャネルであることに対して、DTCIRも1本とする。また、ビット1をAUTEとする。前記の初期設定に対するDTCの利用にあたっては、AUTE、INITEビットをいずれも1にセットする。
DTC102は、データ転送情報をリード(IRステート)後、連続してデータ転送を行う(SR、DWステート)。必要に応じて、データ転送情報配置領域に書き戻し(IWステート)、チェイン動作を行う。
チェイン動作も含めて、所定のデータ転送を終了すると、AUTE、INITEビットを0にクリアする。
<実施の形態4>
MCU100の初期設定のためにDTC102を利用することが可能である。この場合、リセットに対応したベクタを用意し、リセット後にDTC102を起動するようにするとよい。これは、DTC102の状態遷移において、リセットで停止状態(STOPステート)に遷移し、リセット解除によって、前記モード信号によって、DTC102の起動が許可されている場合に、VRステートに遷移するようにすればよい。
CPU101によるDTCIRの設定も不要にすることができる。
図20に、DTC102によるMCU100の初期設定の動作説明図を示す。
リセットが解除されて、DTC102が起動されると、DCT102は、ROM104上のリセットに対応するベクタ領域から、データ転送情報先頭アドレスをリードする(VRステート)。
DTC102は、このアドレスに基づいて、ROM104上のデータ転送情報配置領域からデータ転送情報(転送情報1)をリードする(IRステート)。このデータ転送情報のMRは、AUTE、NXTE1ビットを1にセットしておく。
DTC102は、SARで指定した、ROM104上の初期値データ格納領域から初期値データをリードし(SRステート)、DARで指定した、データ領域であるRAM105または所定の機能ブロック上の初期化対象領域にライトする(DRステート)。CRで指定された回数を連続して実行する。AUTEビットが1にセットされている場合は、データ転送情報の書き戻しは行わない。
NXTE1ビットが1にセットされているので、DTC102は、チェイン動作として、ROM上のデータ転送情報配置領域からデータ転送情報(転送情報2)をリードし、前記動作を繰り返す。
図20では2つの初期値データ転送を示しているが、初期化対象領域の数に応じて、チェイン動作を繰り返すことができる。最後のデータ転送情報のMRは、NXTE1ビットを0にクリアしておく。
DTC102は、AUTSビットを1にセットし、途中でCPU101にバス権を移譲することで、CPU101による処理を並行して実施することができる。
この初期設定は、使用者が使用するほか、製造者が個別の半導体集積回路としてのMCU100の設定を行うことに利用することもできる。
<実施の形態5>
本発明をカメラに適用した場合のシステムのブロック図を図21に示す。
本発明を適用したマイクロコンピュータは、カメラレンズMCUである。焦点、絞り、防振の制御を行うものとし、それぞれに独立したタイマF、タイマD、タイマSを使用するものとする。また、オートフォーカスの許可や、防振の許可などのスイッチを、入出力ポート(I/O)で入力する。
カメラボディMCUから、シリアルコミュニケーションインタフェース(SCI)などの1回線の通信手段を介して、コマンドとそれに伴うデータを受信する。この受信完了割り込みでDTCを起動する。
SCIによる受信完了割り込みによって、DTCを起動し、DTCは受信データであるコマンドを、受信データレジスタから所定のRAMなどに転送し、CPUに割り込みを要求する。CPUはコマンドを解析し、コマンドが焦点、絞り、防振の制御コマンドであれば、そのコマンドに基づき、DTCを設定し、後続するデータを、焦点、絞り、防振のタイマF、タイマD、タイマSへ転送する。
入力したコマンドが、例えばステータス要求コマンドで、レンズの所定の状態、例えば、手振れ補正の許可スイッチの状態の返信を求めている場合、カメラレンズMCUの所定の機能ブロック、例えば、入出力ポート(I/O)の内容を、SCIの送信データレジスタに転送して、送信を行う。
多くの動作は、SCIによる受信完了割り込みに基づいてなされるから、受信完了割り込みによるDTCのベクタないしデータ転送情報先頭アドレスを、DTCのレジスタファイルチャネル1に設定するようにすれば、高速化を実現できる。そのほか、チャネル2、3に対しても、使用する頻度の高い起動要因ないしデータ転送を設定するようにすればよい。
DTCの上記の処理中に、CPUはスリープないしスタンバイモードなどの低消費電力状態とすることもでき、システムの低消費電力化に寄与できる。DTCはCPUより論理規模が小さく、かつ高速に処理を行うことができるので、低消費電力化の効果を高めることができる。バッテリで駆動されるカメラシステムなどにおいては、低消費電力化が重要であることは言うまでもない。
<割り込みコントローラ(INT103)>
最後に、割り込みコントローラ(INT103)の構成について、図22を用いて説明する。
MCU100の割り込み要因には、内部割り込み、外部割り込みの2種類があり、それぞれ割り込み要因フラグを有する。割り込みの要因フラグは、タイマ、通信、アナログの機能ブロックが所定の状態になったときに1にセットされる。
外部割り込みの要因フラグは、外部割り込み入力端子が所定のレベルになったとき、または所定の信号変化が発生したときに1にセットされる。割り込み要因フラグは、CPUのライト動作によって0にクリアされるほか、DTC102による転送が終了したときに0にクリアされる。
割り込み要因フラグの各ビットの出力は、割り込み許可回路に入力され、この割り込み許可回路には、さらに割り込み許可レジスタの内容、すなわち割り込み許可ビットが入力される。この割り込み許可レジスタは、CPU100からリード/ライト可能なレジスタで、対応する割り込みを許可するか、禁止するかを選択する。割り込み要因フラグが1にセットされ、割り込み許可ビットが1にセットされていると割り込みが要求される。
割り込み許可回路の出力は、割り込み/DTC判定回路に入力される。この割り込み許可回路には、さらにDTC許可レジスタ(DTER)の内容が入力され、前記の通り、DTC許可レジスタは、割り込みが要求されたとき、DTC102を起動するか、CPU101に割り込みを許可するかを選択する。DTC許可レジスタの当該割り込み要因に対応したビットが1にセットされていると、DTC102の起動が要求され、CPU101の割り込みは要求されない。DTC許可レジスタのビットが0にクリアされていると、CPU101の割り込みが要求され、DTC102の起動は要求されない。
DTC許可回路の出力は、CPU割り込み要求とDTC起動要求が独立に優先順位判定回路に入力される。CPU101の優先順位判定・マスクレベル判定回路には、プライオリティレジスタ、割り込みマスクレベルなどに従って制御される。
CPU割り込み要求、DTC起動要求のそれぞれについて、複数の割り込み要求が発生している場合に、優先順位を判定する。この判定の結果、優先順位の最高のものが選択され、ベクタ番号が生成され、CPU割り込み要求とベクタ番号、DTC起動要求(DTCREQ)とベクタ番号(DTCVEC)が出力される。
DTC起動要求はDTC102に入力され、またDTCベクタ番号はセレクタ/ラッチ回路に入力される。DTC動作開始信号およびDTC動作終了信号がDTC102から出力され、ラッチ回路に入力される。すなわち、DTC102が動作を開始すると、DTC動作信号が活性状態になり、ベクタのラッチないし保持が行われる。そして、DTC102のデータ転送が終了してDTC動作終了信号が活性状態になり、ラッチは解除される。
また、DTCベクタ番号とDTC動作終了信号はデコーダ回路に入力され、対応する割り込み要因フラグに対して要因クリア信号が活性状態になって、要因フラグまたはDTEビットがクリアされる。
所要の割り込み要因でDTC102を起動する場合、CPU101は予め、データ転送情報などを所要のアドレスにライトするとともに、当該割り込みの割り込み許可ビットと、DTC許可レジスタの当該割り込み要因に対応したDTEビットを1にセットしておく。
この状態で当該割り込み要因フラグが1にセットされると、DTC102が起動される。DTC102が所定のデータ転送などの動作を実行している状態では、DTC102はデータ転送毎に当該割り込み要因フラグを0にクリアする。このとき、CPU101に割り込みは要求されない。
所定のデータ転送などを終了した場合、DTC102は動作終了時に当該DTEビットを0にクリアする。このとき、当該割り込み要因フラグは1に保持され、当該DTEビットが0にクリアされているので、CPU101に割り込みが要求される。CPU101は、所定のデータ転送の終了などに対応した処理を実行するとともに、データ転送情報やDTEビットの再設定を行う。これらは公知の技術によって実現される。
DTCIRは、そのビットに従って、DTCに対し、DTCINIT、DTCSUSを出力する。また、ベクタ番号またはデータ転送情報先頭アドレスをセレクタ/ラッチ回路を経由して、DTCに出力する。セレクタ/ラッチ回路は、DTCREQとDTCINITが同時に要求された場合は、DTC起動要求に基づく、ベクタを優先する。DTCからのINITEクリア信号によって、当該INITEビットをクリアする。
前記の実施例・変形例のDTCとのインタフェースに応じて、信号の有無や幅などの必要な変更を加える。第1の実施例においては、DTCINIT信号は1本とし、DTCSUS信号は削除する。第3の実施例の変形例においては、DTCSUS信号の代わりにAUTE信号を出力し、INITEクリア信号とともにAUTEクリア信号を入力するようにする。
なお、DTER、DTCIR、割り込み要因フラグ、割り込み許可の各レジスタは、MCU内部スレーブバスに接続されているが、図示は省略する。
<実施の形態1乃至5の作用効果>
以上の実施例によれば、以下の作用効果を得ることができる。
(1)汎用的な記憶装置(RAM)に、データ転送情報を格納するデータ転送装置の利点、例えば、割り込み要因を利用して、多くの割り込みないしイベント発生に対して、データ転送を実現可能といった利点を享受できる。すなわち柔軟性および効率性を得られる。加えて、データ転送装置内部にデータ転送情報を格納するレジスタファイルを複数セット保持し、前記レジスタファイルに存在するデータ転送情報を利用して、データ転送情報の記憶装置からの読み出しを不要としたことで、データ転送の高速化、ひいてはマイクロコンピュータの高速化を実現する場合を増やすことができる。既存のデータ転送情報を記憶装置から読み出して格納するレジスタファイルを1セットもつデータ転送装置を制御するソフトウェア資産が存在する場合、これを容易に活用しつつ、高速化を図ることができる。
(2)前記レジスタファイルに格納したデータ転送情報を指定する情報をベクタとすることで、データ転送情報の読み出しに加えて、ベクタの読み出しを不要にすることができる。
(3)前記レジスタファイルに格納したデータ転送情報を指定する情報をデータ転送情報先頭アドレスとすることで、複数の起動要因すなわち異なるベクタで、データ転送情報を共通に利用する場合にも、データ転送情報の読み出しを不要にすることができる。
(4)前記レジスタファイルの一部にデータ転送情報の保持する指定を可能にして、起動要求の発生頻度の高いデータ転送情報をレジスタファイルに保持することによって、データ転送情報の記憶装置からの読み出しを不要として、高速化を実現することを確実にできる。前記レジスタ転送情報を保持したレジスタファイルにあっては、データ転送の実行において、データ転送情報に更新があっても、記憶装置への書き戻しも不要にできる。すなわち、高速化が可能である。所定回数のデータ転送を実行した後も、前回同様のデータ転送を行う場合は、データ転送情報をROMに配置することもでき、データ転送情報をRAMに配置する、CPUのプログラムを省略することができる。すなわち、効率化が可能である。
いわゆるDMAコントローラのように、データ転送情報をデータ転送装置自身の専用のハードウェアとして持つ方式と同等にでき、かつ、多くの割り込みないしイベント発生に対応したデータ転送と仕様や論理を共通にすることができ、利便性の向上を実現し、論理的規模の増加も抑止できる。前記の通り、データ転送情報をROMに配置することもでき、いわゆるDMAコントローラへのデータ転送情報の設定を行う、CPUのプログラムを省略することができる。すなわち、効率化が可能である。
(5)前記レジスタファイルへのデータ転送情報の読み出しを指示するための、制御レジスタ(DTCIR)を設け、前記制御レジスタの設定によって、データ転送装置を起動して、データ転送情報のレジスタファイルへの読み出しを行うことを可能にし、これをマイクロコンピュータの初期設定時などに行うことによって、レジスタファイルの一部のデータ転送情報を保持する指定と併用することで、起動要求が発生したときに、常にデータ転送情報の記憶装置からの読み出しを不要として、高速化とリアルタイム性を向上することができる。
(6)前記レジスタファイルに格納したデータ転送情報が有効であることを示す情報(VLD)を設け、さらに、DTCが起動されてから、割り込み要因フラグまたはDTEビットをクリアして、停止するまでに使用したレジスタファイルのチャネルを保持して、所定回数のデータ転送が終了し、CRが0になったとき、DTCCNTの使用チャネル情報で指定されたチャネルの全ての、SRのVLDフラグをクリアすることで、不要なデータ転送情報を保持せず、レジスタファイルを有効に利用することができる。すなわち、高速化が可能である。
(7)前記データ転送情報に連続データ転送を指定する情報(AUTE)を設け、前記制御レジスタ(DTCIR)の設定によって、データ転送装置を起動して、データ転送情報のレジスタファイルへの読み出しを行い、前記連続データ転送を指定する情報がセットされている場合には、直ちにデータ転送を行うようにすることによって、ROM上のデータ転送情報を直接使用して、ROM上に用意した初期値を、マイクロコンピュータの所定のアドレスに設定することできる。チェイン転送を利用することで、飛び飛びのアドレスに対しても設定を行うことができる。すなわち、利便性を享受できる。ROM上に、必要なデータ転送情報と必要な初期値を用意しておくことで、CPUは前記制御レジスタを設定するだけで、マイクロコンピュータの初期設定を行うことができる。初期設定のためのCPUのプログラムを最小限にし、ROMの使用効率も向上することができる。
(8)いわゆるDMAコントローラなどのデータ転送装置と、データ転送情報を記憶装置から読み出して格納するレジスタファイルを1セットもつデータ転送装置を一体に構成することも可能である。この場合、いわゆるDMAコントローラは、CPUなどからデータ転送情報を初期設定されなければ動作できない。また、2種類のデータ転送装置を一体にしても、データ転送情報の形式が異なってしまうことが考えられる。これを制御するCPUのプログラムなども2種類を必要とすることになる。システム上の変更などで、どちらの形式を使用するかを変更することが容易ではない。本発明によれば、1種類のデータ転送情報を用意すればよく、レジスタファイルにデータ転送情報の保持する指定をどのデータ転送にするかを容易に変更できる。例えば、この指定を変更しながら、システムの性能を評価することもできる。
(9)DTCがCPUに代わって、データ転送を実行可能にすることで、CPUに割り込みを要求する頻度を低減したり、CPUを低消費電力状態にする期間を長くしたりすることができる。CPUが割り込み処理にあたって実行すべき、例外処理、スタックの退避・復帰操作、復帰命令の実行を不要とすることができ、プログラムの簡略化やシステムの効率化に寄与することができる。また、イベントの発生から所要の動作の実行までの時間を短縮し、いわゆる応答性を向上することができる。CPUより論理規模が小さく、かつ高速に処理を行うことができるDTCが動作し、CPUを低消費電力状態にすることで、低消費電力化を実現することができる。本発明によって、DTCが実行可能な処理を増やすことができ、上記の利点をより大きく享受することができる。
<実施の形態1乃至5の変形>
なお、本発明は上述の実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能である。
例えば、アドレスレジスタのビット数は32ビットに限定されるものではなく、CPUまたはマイクロコンピュータのアドレス空間に応じて変更でき、たとえば16Mバイトのアドレス空間であれば24ビットとすればよい。データ転送のモード、転送元アドレス、転送先アドレス、転送回数をそれぞれ32ビットとし、データ転送情報を32ビット×4本としたが、32ビット×3本とすることも可能である。
DTC、割り込みコントローラの構成は適宜変更可能である。例えば、DTC内部のレジスタファイルは4チャネルに限らず、任意に変更できる。DTCIRの数も変更可能である。
また、CPUのプログラムは、ROMに配置するほか、外部メモリとすることができる。同様に、CPUの作業領域であるメモリはRAMに限らず、外部メモリとすることができ、またROMまたはRAMは内蔵しなくてもよい。
DTCのレジスタファイルについても、RAMに配置するほか、ROMあるいは外部メモリとすることができる。DTCのレジスタファイルに保持し、データ転送情報の書き換えを行わないものは、ROMに配置し、ほかのものはRAMに配置してもよい。
DTCのほかに、いわゆるDMAコントローラなどのデータ転送装置を設けることもできる。DTCとDMAコントローラの機能を1つの機能モジュールとすることもできる。2種類のデータ転送情報の形式に、それぞれソフトウェア資産がある場合に、これらを容易に活用できる。
DTC、割り込みコントローラの具体的な構成についても種々変更可能である。
BSCや、バス権やウェイトなどのバス動作の詳細については省略したが、これらは適宜実装可能である。
マイクロコンピュータの構成についても限定されない。そのほかや機能ブロックなども種々変更できる。
<実施の形態6>
実施の形態6では、データ転送装置の機器制御用途での利便性をさらに高めることを検討する。
機器制御用途では、バイト(8ビット)、ワード(16ビット)、ロングワード(32ビット)などのデータを扱うほかに、ビット単位で意味を持つものが多い。例えば、マイクロコンピュータの入出力端子は、スイッチのオン/オフの制御(出力端子)または状態(入力端子)など、1本ずつ別の用途に使用することが多く、所定のレジスタのビットとして表現される。この複数のビットの組み合せで、別のビットを制御することもある。例えば、スイッチA、B、Cの状態によって、スイッチDを制御することが考えられる。
このような場合、同一のアドレスに配置されたほかのビットに影響を与えず処理する必要がある。このため、単純なリード/ライトでは扱えない場合がある。例えば、以下の例があげられる。
(a)割り込み要因フラグなどは、1の状態をリード後に0をライトすることが求められることがある。ハードウェアによって1にセットされるフラグを、1の状態をリード後、0をライトすることでクリアする方式においては、当該フラグを、例えば、バイト単位のアドレスに配置し、同一のアドレスに別の制御ビットやフラグが存在する場合があっても、当該アドレスをリードし、所要のフラグを0にクリアして、ほかのビットは保持したデータでライトを行うことによって、ほかのビットに影響を与えることなく、当該フラグを0にクリアすることができる。同一アドレスに別のフラグが存在して、前記リードの前後に1にセットされることがあっても、不所望に0にクリアしてしまうことがない。(図48)
(b)割り込み要因フラグなどに対して、1をライトすることで0にクリアすることも行われている。同一のアドレスに複数のフラグが存在する場合、クリアしたいビットのみ1にセットし、そのほかのビットは0にクリアしたデータでライトを行うことによって、ほかのビットに影響を与えることなく、当該フラグを0にクリアすることができる。(図48)
(c)所要のレジスタにライトを行う場合に、所定のキーワードを付加することが求められることがある。上位バイトにキーワードを、下位バイトにライトデータを組み合わせた、ワード単位(2バイト)のライトによってのみ、対象レジスタの書き換えを行う方式によって、不所望の書き換えの可能性を低くすることができる。
上記のようなライトの手順のほか、ライトを禁止する期間が存在する場合もある。
マイクロコンピュータに内蔵される機能は増えていて、応用システムに固有の機能が必要になる場合がある、1つのマイクロコンピュータの中で、ビット操作の方法を統一することも、必ずしも容易ではない。
一方、機器制御用途のマイクロコンピュータには、あるイベントの発生から、それに対応した処理を所定の時間内に実行するといった、リアルタイム性が求められており、このような用途に、その高速性を活かして、データ転送装置を用いることが想定されてきた。
また、マイクロコンピュータに内蔵される機能は増えていて、応用システムに固有の機能が必要になる場合がある。専用のインタフェースを全ての機能ブロックに備えること、有意味の組み合わせを想定し、相互のインタフェースを実装することは容易ではない。
同様に、A/D変換などの内部機能ブロックの動作開始を要求する外部入力信号を持つ場合がある。この外部入力信号は、マイクロコンピュータのほかの機能、例えばタイマの出力と、端子を兼用する場合がある。端子を兼用する場合、利用者は1つの機能を選択しなければならず、前記の外部入力信号を利用できない場合も生じる。
かかる知見に鑑み、発明者は、データ転送装置において、複数のビットの組み合わせで、制御を行うことの必要性を見出した。
そこで、実施の形態6では、利用者が利用できる方法を広げ、使用するビット位置と、処理の内容と、処理のステップを指定可能にするマイクロコンピュータを提案する。また、データ転送に必要な情報(データ転送情報)を記憶装置に格納する1つのデータ転送装置において、データ転送毎に、データ転送情報の容量を可変にするマイクロコンピュータを提案する。
図23に、実施の形態6にかかるMCU100のブロック図を示す。
MCU100は、CPU101、DTC102、INT103、ROM104、RAM105、BSC106、クロック発振器(CPG)111、タイマ機能およびシリアルコミュニケーションインタフェースなどの通信機能を含むデジタルモジュール112、A/D変換器およびD/A変換器、電源電圧検出機能などのアナログモジュール109、入出力ポート(I/O)110などの機能ブロックないしはモジュールから構成される。
動作の主体となるのはCPU101であり、主にROM104から命令を読込んで動作する。DTC102は、CPU101の設定に基づき、CPU101に代ってデータ転送を行う。
INT103は、デジタルモジュール112、アナログモジュール109などからの割み込み要求、およびマイコン外部からの複数の外部割り込み要求信号に基づく、I/O110からの割り込み要求を受けて、CPU101、DTC102のいずれかに割り込みないしデータ転送要求を出力する。割り込み信号による処理を開始したときあるいは終了したときに、割り込みをクリアする信号である割込みクリア信号を、デジタルモジュール112、アナログモジュール109、I/O110のそれぞれの割込み信号ないし割り込み要因フラグに対応して出力する。
アナログモジュール109には、電源電圧検出機能を含み、これは、MCU100の電源電圧供給端子に供給される電圧の検出機能を有し、所定の電圧以下になったことを検出して、電圧監視割り込みを要求する。
I/O110には、各端子に入力信号の変化を検出して割り込みを要求する外部割り込み(IRQ)機能を有する。
BSC106は、CPU101およびDTC102と、バスリクエスト、バスアクノレジ、バスコマンド、ウェイト、アドレス、データなどのインタフェースを行い、MCU内部バスに接続された、RAM105やそのほかの機能ブロックないしはモジュールに対するリード/ライトを実現する。具体的には、CPU101およびDTC102からのバスリクエスト信号を受けて、MCU内部バスの占有に対する調停をして、バス使用許可信号を出力する。MCU内部バスは、CPU101またはDTC102のいずれかが排他的に使用する。少なくとも、MCU100に内蔵される各機能ブロックは、同時に、CPU101またはDTC102から複数のバスアクセスを受けることはない。
CPG111は、外部クロックによるメインクロック発振器(MOCO)および低速内蔵発振器(LOCO)を持つ。MOCOは分周・逓倍を行うことができる。MCUの動作クロックは、図示されないクロック選択レジスタ(CKSR)によって選択され、通常は、MOCOによる、例えば100MHzなどの高速なクロックで動作する。LOCOのクロックは、例えば125kHzなどである。
図24に、本実施の形態におけるDTC102のブロック図を示す。
DTC102はデータ転送制御ブロック(DTCCNT)、バスインタフェース(BIF)、ベクタ生成ブロック(VG)、ベクタアドレスレジスタ(VAR)、モードレジスタ(MR)、ソースアドレスレジスタ(SAR/DR)、デスティネーションアドレスレジスタ(DAR/AR)、データ転送カウンタ(CR)、ビットアキュムレータ(ACM)、演算器(ALU)を含む。
MR、SAR/DR、DAR/AR、CRはデータ転送情報を格納するレジスタセットである。
DTCCNTは、INTからの転送要求(DTCREQ、DTCVEC)およびMRの内容に基づき、DTC内部の動作制御を行う。また、INTに対し、制御信号を出力する。
BIFは、DTC内部バスと、マイクロコンピュータの内部バスとのインタフェースを行う。このインタフェースには、バスリクエスト、バスアクノレジ、バスコマンド、ウェイト、アドレス、データなどを含む。
VGは、INTから与えられる割込みベクタ番号DTCVECに従って、ベクタアドレスを生成する。例えば、DTCVECを4倍などとし、所定のオフセットを加算する。
VARは、前記ベクタアドレスからリードしたデータ転送情報の先頭アドレスを格納する。
MR、SAR/DR、DAR/AR、CRは、前記データ転送情報先頭アドレスから順次リードしたデータ転送情報を格納する。
ALUは、算術演算、論理演算、シフト、およびビット番号のデコードなどを行う。
DTC内部バスは、図示はされないものの、複数のバスを持っており、前記SAR/DR、DAR/AR、CR、ACMの複数の内容を、前記ALUで演算できるようにする。
図25に、DTC102のデータ転送情報(転送情報セット)を示す。データ転送情報は32ビット構成であり、上位側と下位側を2段に分割して示している。
DTC102のデータ転送情報は、モードレジスタ(MR)、ソースアドレスレジスタ(SAR)、デスティネーションアドレスレジスタ(DAR)、転送カウントレジスタ(CR)、データレジスタ(DR)からなる。
MRに保持した内容によって、データ転送情報は3つの構成をとり、データ転送情報の容量が変わり、上記の内の必要なものが使用され、また、名称と異なる動作をする場合がある。
CRは、ブロック転送カウントレジスタ(BTCR)、転送カウントレジスタ(TCR)に分割され、TCRは8ビットずつ上位(TCRH)、下位(TCRL)に分割されている。後述のデータ転送モードに従って、動作する。
これらのレジスタは、1組分の回路がDTC102の内部に存在し、特に制限はされないものの、CPU101のアドレス空間上には存在しない。これらに格納されるべきデータ転送情報は、必要組数がCPU101のアドレス空間上の、RAM105などの所定のデータ転送情報配置領域に配置される。
モードレジスタ(MR)の指定内容によって、前記の通り、データ転送情報は3つの構成をとる。
(a)にビット操作モードを示す。
ビット31は、BOPビットであり、本ビットを1にセットすることによって、ビット操作モードを指定する。
ビット操作モード(BOP=1)の場合、MRの内容は以下のようになる。
ビット29、28は、DIR1、0ビットであり、10のときARで指定したアドレスをリードして操作を行う。11のとき、ARで指定したアドレスからリードし、別に指定される処理を行って、ライトを行うようにする。DIR1、0ビットが10のとき、ビット操作の結果は、ビットアキュムレータ(ACM)に保持する。
ビット27は、INVビットであり、リードまたはライト時の論理反転を指定する。
ビット25、24は、OP1、0ビットであり、00のとき無操作(転送)、01のとき論理積、10のとき論理和、11のとき排他的論理和を行う。
ビット23は、CNDEビットである。0のときは、ビット操作を1回行う。1のときは、CNDSビットと対象ビットによって、ビット操作を終了するか、繰り返すかを指定する。
ビット22は、CNDSビットである。0のときは、対象ビットが0のとき、条件成立として、ビット操作を終了し、対象ビットが1のとき、条件不成立として、ビット操作を繰り返す。CNDSビットが1のときは、対象ビットが1のとき、条件成立として、ビット操作を終了し、対象ビットが0のとき、条件不成立として、ビット操作を繰り返す。
ビット20〜16ビットは、BNO4〜0ビットであり、使用するビット番号を指定する。
ビット7、6はSz1、Sz0ビットであり、1回のメモリのリード/ライトをバイトサイズ、ワードサイズ、ロングワードサイズのいずれで行うかを選択する。
ビット1はNXTEビットであり、1つの起動要因に対して操作を終了するか、次の操作を行うかを選択する。このNXTEビットを0にクリアした場合、指定した処理の終了後、データ転送情報をライトしてDTCの動作を終了する。
アドレスレジスタ(AR)を使用し、DTCのデータ転送情報はロングワード×2本となる。
ビット操作モード以外(BOP=0)の場合、MRの内容は以下のようになる。
ビット30は、DREビットである。本ビットを1にセットした場合、直接データ転送モード、0にクリアした場合、通常データ転送モードとなる。
(b)に直接データ転送モードを示す。
直接データ転送モード(BOP=0、DRE=1)の場合、MRの内容は以下のようになる。
ビット25は、TSTEビットである。0のときは、無条件でデータ転送を行う。1のときは、TSTSビットとビットアキュムレータ(ACM)によって、データ転送を実行するか、しないかを指定する。
ビット24は、TSTSビットである。0のときは、対象ビットが0のとき、条件成立として、直接データ転送モードを実行し、対象ビットが1のとき、条件不成立として、直接データ転送モードによるライトを実行せずに終了する。TSTSビットが1のときは、対象ビットが1のとき、条件成立として、直接データ転送モードを実行し、対象ビットが0のとき、条件不成立として、直接データ転送モードによるライトを実行せずに終了する。
ビット13、ビット12は、DM1、DM0ビットであり、データ転送後にARをインクリメントするか、デクリメントするか、固定にするかを指定する。
ビット11、ビット10は、TMD1、TMD0ビットであり、データ転送モードを選択する。TMD1、TMD0ビットを00にするとノーマルモードとなる。このノーマルモードでは、1回の起動で、SARで示されるアドレスからDARで示されるアドレスへ1回のデータ転送を行う。
この後、SM1、SM0、DM1、DM0ビットの指定に基づいてSAR、DARの操作が行われ、CRがデクリメントされる。これを起動要因が発生する毎に、CRで指定された回数だけ繰り返す。そして、CRで指定された回数のデータ転送が終了すると、DTC動作が禁止され、起動要因となった割り込みがCPUに要求される。
TMD1、TMD0ビットを01にするとリピートモードとなる。TMD1、TMD0ビットを10にするとブロック転送モードとなる。リピートモード、ブロック転送モードは、公知の技術で実現できる。
直接データ転送モードの場合、転送先がリピート領域、ブロック領域となる。
ビット7、6はSz1、Sz0ビットであり、1回のデータ転送をバイトサイズ、ワードサイズ、ロングワードサイズのいずれで行うかを選択する。
ビット4はCREビットであり、0にクリアした場合は、DTC起動要求に応じて、無制限にDTCの動作を行う。1にセットした場合は、CRに初期設定した値に応じて、DTCの動作を行う。
ビット1はNXTEビットであり、1つの起動要因に対してデータ転送を終了するか、次のデータ転送を行うかを選択する。このNXTE1ビットを0にクリアした場合、データ転送情報リードおよびデータ転送後、データ転送情報をライトしてDTCの動作を終了する。
また、このNXTEビットを1にセットした場合、データ転送情報リードおよびデータ転送後、データ転送情報をライトして、さらに連続したアドレスからデータ転送情報をリードして、このデータ転送情報で指定されるデータ転送を行い、データ転送情報をライトする。これをチェイン動作(またはチェイン転送)と呼ぶ。
ビット0はNXTSビットであり、CREビットが1にセットされた状態で、CRが0になったときに、チェイン動作を行うかを指定する。
(c)に通常データ転送モードを示す。
通常データ転送モード(BOP=0、DRE=0)の場合、MRの内容は以下のようになる。
ビット25はTSTEビット、ビット24はTSTSビットであり、これらは、前記直接データ転送モードと同様である。
ビット15、ビット14は、SM1、SM0ビットであり、データ転送後にSARをインクリメントするか、デクリメントするか、固定にするかを指定する。
ビット13、ビット12は、DM1、DM0ビットであり、また、ビット11、ビット10は、TMD1、TMD0ビットであり、これらは、前記直接データ転送モードと同様である。
ビット9はDIRビットであり、転送元または転送先のいずれをリピート領域、ブロック領域とするかを選択する。
ビット7、6はSz1、Sz0ビットであり、ビット3はCREビットであり、ビット1はNXTEビットであり、また、ビット0はNXTSビットであり、これらは、前記直接データ転送モードと同様である。
(d)にビット操作モードの変形例(短縮形)を示す。
ビット30に、SHORTビットを設け、BOP=SHORT=1のときは、ビット操作モード短縮形とする。このデータ転送情報は、MR、ARをロングワード×1本にまとめている。
メモリのリード/ライトをバイトサイズはバイトサイズに固定し、Sz1、Sz0ビットを省略し、ビット番号の指定をBNO2〜0ビットの3ビットとする。CNDE、CNDSビットは省略し、条件の設定は行わない。
このデータ転送情報は、特に制限はされないものの、DTC内部のMR、DAR/ARの両方に格納するようにする。本ビット操作モード短縮形で、DAR/ARを使用する場合は、上位8ビットをマスク(0または1に固定)するようにする。
ARが24ビットになり、指定できるアドレス空間が16Mバイトになるが、ビット操作に用いるアドレス空間は、CPUの全空間とは限らないから、実質的な問題はない。データ転送情報をリードする回数を少なくして、高速化することができる。
図26に、本実施の形態におけるDTC102の状態遷移図を示す。かかる状態遷移は、主として、DTC102のデータ転送制御ブロック(DTCCNT)に実装される。
DTC102は、INTからデータ転送要求信号DTCREQが与えられると、VRステートに遷移し、割込みベクタ番号DTCVECに従って、VGで生成したベクタアドレスに基づき、ベクタ領域(データ転送情報先頭アドレス配置領域)に格納されたデータ転送情報の先頭アドレスをリードする。この内容は、VARに格納する。
次に、IRステートに遷移し、前記先頭アドレスに従ってデータ転送情報配置領域に格納されたデータ転送情報をリードする。この内容は、MR、SAR、DAR、DR、AR、CRであり、最初にリードしたMRで指定されたデータ転送機能で使用するものを順次格納する。
MRの内容に従い、ビット操作モードまたは通常データ転送モードの場合はSRステートへ遷移する。直接データ転送モードの場合はDWステートへ遷移する。
SRステートでは、SARまたはARで指定されたメモリをリードする。CNDE、CNDSビットによって設定された、条件が不成立の場合、SRを繰り返す。ビット操作モードで、DIR1、0=10のときは、転送情報書き換え判定を行う。ビット操作モードで、DIR1、0=11のとき、および通常データ転送モードでは、DWステートへ遷移する。
DWステートでは、DARまたはARで指定されたメモリにライトする。その後は転送情報書き換え判定を行う。
転送情報書き換え判定は、図示の簡略化のために設けているが、実際には前のステートで処理される。データ転送情報に更新されたものがあれば、IWステートに遷移する。データ転送情報に更新されたものがなければ、NXTE、NXTSビットでチェイン動作が指定された場合、IRステートに遷移する。チェイン動作が指定されない場合は、起動要因に対応した割り込み要因フラグまたは、DTEビットを0にクリアして、STOPステートへ遷移する。
IWステートでは、データ転送情報を元のアドレスにライトする。その後、NXTE、NXTSビットでチェイン動作が指定された場合、IRステートに遷移する。チェイン動作が指定されない場合は、起動要因に対応した割り込み要因フラグまたは、DTEビットを0にクリアして、STOPステートへ遷移する。
ブロック転送モードの場合は、SR、DWを繰り返すが、図示は省略する。
(例1)
図27に、本実施の形態にかかるDTC102の使用方法の第1の例におけるデータ転送情報設定を示す。データ転送情報は32ビット構成であり、上位側と下位側を2段に分割して示している。
第1の例は、MCU100の電源電圧供給端子に供給される電圧が電圧以下になったことを検出した、電圧監視割り込みによって、電源低下を検出して、MCU100の動作クロックを切り替えるものである。
MCU100の動作クロックは、CPG111のクロック選択レジスタ(CKSR)によって選択される。このCKSRは、CPG111の書き換え禁止状態を示すステータスフラグと、クロックを選択する複数の選択ビットからなる。
前記電圧監視割り込みによって、DTC102が起動されると、所定のベクタに基づき、転送情報1をリードする。この転送情報1のMRの内容は以下のように設定しておく。
BOP=1とし、ビット操作モードを指定する。
DIR1、0=10とし、ARで指定したアドレスをリードして操作を行う。
INV=0とし、論理反転は行わない。
OP1、0=00とし、無操作(転送)を指定する。
CNDE=1、CNDS=0とし、対象ビットが0であるかを確認する。対象ビットが0のとき、条件成立として、ビット操作(転送情報1による動作)を終了し、対象ビットが1のとき、条件不成立として、ビット操作を繰り返す。
BNO4〜0ビットは、前記CKSRの、CPGの書き換え禁止状態を示すステータスフラグのビット番号を指定する。
Sz1、Sz0=01とし、バイトサイズを指定する。
NXTE=1とし、チェイン動作で転送情報2による動作を指示する。
アドレスレジスタ(AR)は前記CKSRのアドレスを指定する。
転送情報1による動作を終了すると、必要に応じて転送情報1を元のアドレスにライトするが、上記設定の場合は、転送情報1の内容は更新されないのでライトは行わない。引き続き、転送情報2をリードする。この転送情報2のMRの内容は以下のように設定しておく。
BOP=0、DRE=1とし、直接データ転送モードを指定する。
TSTE=TSTS=0とし、条件の設定は行わない。
DM1=DM0とし、ARは固定にする。
TMD1=TMD0=0とし、ノーマルモードを指定する。
Sz1、Sz0=01とし、バイトサイズを指定する。
CRE=0とし、CRを使用せず、DTC動作回数を無制限にする。
NXTE=0とし、DTC動作終了を指示する。
データレジスタ(DR)は前記CKSRにライトするデータ、すなわち、LOCOを選択するデータを格納しておく。
アドレスレジスタ(AR)は前記CKSRのアドレスを指定する。
図28に、DTC102の使用方法の第1の例にかかる処理のフローチャートを示す。
CPU101は、所要のデータ転送情報(転送情報12)を、所定の転送情報アドレス領域にライトし、起動要因とする電圧監視割り込みに対応した、DTEビットを1にセットしておく。この状態で、電圧監視割り込みが発生して、DTC102が起動されると、電圧監視割り込みに対応したベクタ領域をリードする(VR)。このリードした内容がデータ転送情報の先頭アドレスであって、転送情報1をリードする(IR1)。転送情報1に従って、CKSRをリード(SR)し、指定したビット(書き換え禁止状態を示すステータスフラグ)を判定する。条件が成立するまで、これを繰り返す。
条件が成立した場合、転送情報書き換え判定を行い、転送情報1の内容は更新されないので元のアドレスへのライトは行わず、転送情報2をリードする(IR2)。転送情報2に従って、DRで指定した内容を、CKSRへライトする(DW)。転送情報書き換え判定を行い、転送情報2の内容は更新されないので元のアドレスへのライトは行わず、DTC102の動作を終了する。
図29に、DTC102の使用方法の第1の例にかかる処理の動作タイミング図を示す。
T0で、DTC102はVRに遷移し、与えられたDTCVECに対応するアドレスを、MCU内部バスのアドレスバス(IAB)に出力してリードを行う。このリードデータ(データ転送情報先頭アドレス)は次のT1でMCU内部バスのデータバス(IDB)に得られる。このリードデータはVARに格納する。
T2で、DTC102はIRに遷移し、VAR(データ転送情報先頭アドレス)をIABに出力してリードを行う。VARのインクリメント動作などを行い、データ転送情報のロングワード×2本(転送情報1)をリードし、DTC102内部のMR、DAR/ARに格納する。DAR/ARの格納後に、動作が可能になる。
T5で、DTC102はSRに遷移し、DAR/AR(CKSRアドレス)をIABに出力してリードを行う。T7で、リードデータの指定したビットをACMに格納し、条件成立の判断を行う。
ACMへの格納は、ALUにおいて、以下の通り行う。まず、BNO4〜0ビットをデコードしたデータを生成する。本例では、バイトサイズなので、デコードしたデータとして、00000001、00000010、…を生成する。これとリードしたデータとの論理積を生成する。さらに、このデータの全ビットの論理和を生成する。この結果を、ACMに転送する。
本図では条件成立の場合を示す。
転送情報書き換え判定を行い、T8で、DTCはIRに遷移し、インクリメント後のVARをIABに出力してリードを行う。VARのインクリメント動作などを行い、データ転送情報のロングワード×3本(転送情報2)をリードし、DTC102内部のMR、SAR/DR、DAR/ARに格納する。
T12で、DTC102はDWに遷移し、DAR/AR(CKSRアドレス)をIABに出力し、T12で、SAR/DR(CKSRにライトするデータ)をIDBに出力して、ライトを行う。
これによって、転送情報1による動作で、前記CKSRをリードして、CPGの書き換え禁止状態を示すステータスフラグが0にクリアされていることを確認(T2〜T7)し、転送情報2によるMCUの動作クロックを切り替えのための、前記CKSRへのライトを行うことができる(T8〜T13)。
電源電圧供給端子に供給される電圧の低下を検出した場合に、MCU100の動作クロック周波数を低くして、MCU100の消費電力を小さくして、安定した動作を確保することができる。これをCPU101の負荷なく、すなわち消費電力を少なくして、実行することができる。
(例2)
図30に、実施の形態6におけるDTC102の使用方法の第2の例にかかるデータ転送情報設定を示す。データ転送情報は32ビット構成であり、上位側と下位側を2段に分割して示している。
第2の例は、入出力ポート(I/O)110に入力される信号の所定の変化を検出した、外部割り込み(IRQ)によって、タイマのスタートを行うものである。
かかるタイマは、タイマカウンタ(TCNT)とタイマスタートレジスタ(TSTR)を持ち、TSTRはカウンタスタート(CST)ビットを持つ。CSTビットを1にセットすると、TCNTのカウントが開始される。
さらに、タイマは、コンペアレジスタを持ち、タイマカウンタとコンペアレジスタの一致を検出して、コンペアマッチ割り込みを発生するなど、所定の時間を計測する機能を有する。
IRQ割り込みによって、DTCが起動されると、所定のベクタに基づき、転送情報1をリードする。この転送情報1のMRの内容は以下のように設定しておく。
BOP=0、DRE=1とし、直接データ転送モードを指定する。
TSTE=TSTS=0として、条件は設定しない。
DM1=DM0とし、ARは固定にする。
TMD1=TMD0=0とし、ノーマルモードを指定する。
Sz1、Sz0=10とし、ワードサイズを指定する。
CRE=0とし、CRを使用せず、DTC動作回数を無制限にする。
NXTE=1とし、チェイン動作で転送情報2による動作を指示する。
データレジスタ(DR)は前記TCNTにライトするデータ(0000などの初期値)を格納しておく。
アドレスレジスタ(AR)は前記TCNTのアドレスを指定する。
転送情報1による動作を終了すると、必要に応じて転送情報1を元のアドレスにライトするが、上記設定の場合は、転送情報1の内容は更新されないのでライトは行わない。引き続き、転送情報2をリードする。この転送情報2のMRの内容は以下のように設定しておく。
BOP=1とし、ビット操作モードを指定する。
DIR1、0=11とし、ARで指定したアドレスに対して、リード/ライトを行う。
INV=0とし、論理反転は行わない。
OP1、0=10とし、論理和(ビットセット)を指定する。
CNDE=CNDS=0とし、対象ビットの条件は設定しない。
BNO4〜0ビットは、前記TSTRのCSTビットのビット番号を指定する。
Sz1、Sz0=01とし、バイトサイズを指定する。
NXTE=0とし、DTC動作終了を指示する。
アドレスレジスタ(AR)は前記TSTRのアドレスを指定する。
図31に、DTC102の使用方法の第2の例にかかる処理のフローチャートを示す。
IRQ割り込みが発生して、DTC102が起動されると、IRQ割り込みに対応したベクタ領域をリードする(VR)。このリードした内容がデータ転送情報の先頭アドレスであって、転送情報1をリードする(IR1)。転送情報1に従って、DRで指定した内容を、TCNTへライトする(DW1)。
転送情報書き換え判定を行い、転送情報1の内容は更新されないので元のアドレスへのライトは行わず、転送情報2をリードする(IR2)。転送情報2に従って、ARで指定したアドレス(TSTR)からリードを行う(SR2)。このリードした内容に対し、指定したビット(CSTビット)を1にセットし、ほかのビットは保持して、ARで指定したアドレスへライトを行う(DW2)。転送情報書き換え判定を行い、転送情報2の内容は更新されないので元のアドレスへのライトは行わず、DTC102の動作を終了する。
これによって、転送情報1による動作で、前記TCNTに初期値を設定し、転送情報2による動作で、CSTビットを1にセットし、タイマの動作を開始することができる。
図32に、DTC102の使用方法の第2の例にかかる処理の動作タイミング図を示す。概略は図29と同様である。
T2で、DTC102はIRに遷移し、データ転送情報のロングワード×3本をリード(転送情報1)し、DTC102内部のMR、SAR/DR、DAR/ARに格納する。
T6でDWに遷移し、TCNTへのライトを行う。
T8でIRに遷移し、データ転送情報のロングワード×3本(転送情報2)をリードし、DTC内部のMR、DAR/ARに格納する。
T11でSRに遷移し、TSTRのリードを行う。
T13でDWに遷移し、リードしたTSTRの指定したCSTビットを1にセットして、TSTRへのライトを行う。
CSTビットのセットは、ALUにおいて、BNO4〜0ビットをデコードしたデータを生成し、リードしたデータ(TSTR)との論理和を生成するようにする。
事前に前記コンペアレジスタに所定の値を設定しておくなどして、所定の時間を計測後に、コンペアマッチ割り込みなどを発生することができる。このコンペアマッチ割り込みで、DTC102を起動するなどして、例えば、A/D変換器を起動することができる。
これによって、外部の状態の変化をIRQで検出し、外部の状態の安定する時間などを待って、A/D変換器を起動して、外部の状態を知ることができる
(例3)
図33に、実施の形態6におけるDTC102の使用方法の第3の例にかかるデータ転送情報設定を示す。データ転送情報は32ビット構成であり、上位側と下位側を2段に分割して示している。
第3の例は、例えば3本の入出力ポート(I/O)に入力される信号の所定の変化を検出した、外部割り込み(IRQ0、IRQ1、IRQ2)によって、出力ポートを反転されるものである。
IRQ0、IRQ1、IRQ2割り込みのデータ転送情報のMRの内容は以下のように設定しておく。
BOP=1とし、ビット操作モードを指定する。
DIR1、0=11とし、ARで指定したアドレスに対して、リード/ライトを行う。
INV=0とし、論理反転は行わない。
OP1、0=11とし、排他的論理和(ビットノット)を指定する。
CNDE=CNDS=0とし、対象ビットの条件は設定しない。
BNO4〜0ビットは、出力ポートの対象のビットのビット番号を指定する。
Sz1、Sz0=01とし、バイトサイズを指定する。
NXTE=0とし、DTC動作終了を指示する。
アドレスレジスタ(AR)は前記出力ポートのアドレスを指定する。
図34に、DTC102の使用方法の第3の例にかかる処理のフローチャートを示す。
IRQ0、IRQ1、IRQ2割り込みが発生して、DTC102が起動されると、IRQ割り込みに対応したベクタ領域をリードする(VR)。IRQ0、IRQ1、IRQ2割り込みに対して、ベクタ領域は独立しているが、そこで指定するデータ転送情報の先頭アドレスは同一にする。
このデータ転送情報の先頭アドレスであって、データ転送情報をリードする(IR)。データ転送情報に従って、ARで指定したアドレス(出力ポート)からリードを行う(SR)。このリードした内容に対し、指定したビットを反転し、ほかのビットは保持して、ARで指定したアドレスへライトを行う(DW)。転送情報書き換え判定を行い、データ転送情報の内容は更新されないので元のアドレスへのライトは行わず、DTC102の動作を終了する。
IRQ0、IRQ1、IRQ2割り込みのいずれかの入力変化によっても、上記のデータ転送を起動して、出力ポートを反転するトグルスイッチを実現できる。
(例4)
図35に、実施の形態6におけるDTC102の使用方法の第4の例にかかるデータ転送情報設定を示す。データ転送情報は32ビット構成であり、上位側と下位側を2段に分割して示している。
第4の例は、タイマのコンペアマッチ割り込みなどによる、一定間隔のタイマ割り込みによって、例えば3本の入出力ポート(I/O)110に入力される信号に従って、出力ポートを制御するものである。
この場合5つのビット操作モードのDTC102の動作をチェイン動作によって、順次実行する。
転送情報1のMRの内容は以下のように設定しておく。
BOP=1とし、ビット操作モードを指定する。
DIR1、0=10とし、ARで指定したアドレスをリードして操作を行う。
INV=0とし、論理反転は行わない。
OP1、0=00とし、無操作(転送)を指定する。
CNDE=CNDS=0とし、対象ビットの条件は設定しない。
BNO4〜0ビットは、出力ポートの対象のビットのビット番号を指定する。
Sz1、Sz0=01とし、バイトサイズを指定する。
NXTE=1とし、チェイン動作で後続の転送情報2による動作を指示する。
アドレスレジスタ(AR)は前記出力ポートのアドレスを指定する。
転送情報2,3,4は簡単のために、同一の操作を行うものとし、MRの内容は以下のように設定しておく。
BOP=1とし、ビット操作モードを指定する。
DIR1、0=10とし、ARで指定したアドレスをリードして操作を行う。
INV=0とし、論理反転は行わない。
OP1、0=11とし、排他的論理和(反転)を指定する。
CNDE=CNDS=0とし、対象ビットの条件は設定しない。
BNO4〜0ビットは、参照する入力ポートの対象のビットのビット番号をそれぞれ指定する。
Sz1、Sz0=01とし、バイトサイズを指定する。
NXTE=1とし、チェイン動作で後続の転送情報3ないし4ないし5による動作を指示する。
アドレスレジスタ(AR)は参照する入力ポートのアドレスをそれぞれ指定する。
転送情報5のMRの内容は以下のように設定しておく。
BOP=1とし、ビット操作モードを指定する。
DIR1、0=11とし、ARで指定したアドレスに対して、リード/ライトを行う。
INV=0とし、論理反転は行わない。
OP1、0=00とし、無操作(転送)を指定する。
CNDE=CNDS=0とし、対象ビットの条件は設定しない。
BNO4〜0ビットは、出力ポートの対象のビットのビット番号を指定する。
Sz1、Sz0=01とし、バイトサイズを指定する。
NXTE=0とし、DTC動作終了を指示する。
アドレスレジスタ(AR)は前記出力ポートのアドレスを指定する。
図36に、DTC102の使用方法の第4の例にかかる処理のフローチャートを示す。
タイマ割り込みが発生して、DTC102が起動されると、タイマ割り込みに対応したベクタ領域をリードする(VR)。前記同様に、転送情報1をリードする(IR1)。転送情報1に従って、ARで指定した出力ポートの内容をリードする(SR1)。この指定したビットの内容を、ビットアキュムレータ(ACM)に格納する。
転送情報2をリードする(IR2)。転送情報2に従って、ARで指定した入力ポート1の内容をリードする(SR2)。この指定したビットの内容を、ACMと演算(排他的論理和)し、演算結果は、ACMに格納する。同様に、IR3、SR3、IR4、SR4を実行する。
その後、転送情報5をリードする(IR5)。転送情報5に従って、ARで指定した入力ポート1の内容をリードする(SR5)。リードしたデータの指定したビットに、ACMの内容を挿入し、ほかのビットは保持して、ライトを行う(DW)。
なお、参照するビットは任意に増減でき、これらの演算内容も任意に変更できる。
インターバルタイマによって、一定時間間隔で、DTC102を起動して、ビット演算を行って、スイッチのオン/オフなどの、所要の制御を行うことができる。
(変形例:プリフェッチ追加)
図37に、実施の形態6のDTC102の変形例のブロック図を示す。
変形例のDTC102は、バスインタフェース(BIF)に直結した、プリフェッチバッファ(PFB)を持つ。データ転送情報のリード時の空いたバスサイクルに次のデータ転送情報をリード可能にする。
プリフェッチバッファは、データ転送情報のリードのレイテンシと、最小のデータ転送情報の容量などに応じて、複数のロングワード分を用意することもできる。
図38に、DTC102の変形例を用いた、使用方法の第1の例にかかる処理の動作タイミング図を示す。
図38は、図29との比較において、T4において、次のデータ転送情報の最初のロングワードのリードを行う点に特徴を有する。この内容はT6でPFBに一旦格納される。
T8からは、転送情報2の残りのロングワード×2本のリードを行う。T9で、PFBに保持した転送情報2の内容をMRに転送する。
リードしたMRをDTC内部で利用可能になるまでの状態を有効に利用して、実行ステート数を短縮することができる。
(変形例:分岐モード追加)
実施の形態6のDTC102に分岐モードを追加した変形例を示す。図39に、この変形例におけるデータ転送情報(転送情報セット)を示す。データ転送情報は32ビット構成であり、上位側と下位側を2段に分割して示している。
BOP=0、DRE=1のとき、ビット29にBREビットを設ける。
直接データ転送モードは、BOP=0、DRE=1、BRE=0とする。
(e)は分岐モードであり、BOP=0、DRE=1、BRE=1として指定する。この分岐モードでは、ほかのモードのNXTE=1の場合と同様に、チェイン動作として、次のデータ転送情報に基づいた動作を行う。この次のデータ転送情報を、連続したアドレスからリードするほかに、別のアドレスからリード(分岐)することを可能にする。
MRの内容は以下のようになる。
ビット25は、TSTEビットである。0のときは、無条件で分岐を行う。1のときは、TSTSビットとビットアキュムレータ(ACM)によって、分岐を実行するか、しないかを指定する。
ビット24は、TSTSビットである。0のときは、対象ビットが0のとき、条件成立として、分岐を実行し、対象ビットが1のとき、条件不成立として、連続した次のアドレスからデータ転送情報をリードする。TSTSビットが1のときは、対象ビットが1のとき、条件成立として、分岐を実行、対象ビットが0のとき、条件不成立として、連続した次のアドレスからデータ転送情報をリードする。
ビット23〜0は、分岐アドレス指定部であり、これを符号拡張して、VGRに加算して、次のデータ転送情報の先頭アドレスを生成する。すなわち、当該データ転送情報の次のアドレスと、条件成立時に実行すべきデータ転送情報のアドレスの相対値を、分岐アドレス指定部で指定する。
図40に、DTC102に分岐モードを追加した変形例における状態遷移図を示す。
IRステートから。MRの内容に従い、分岐モードの場合はBRステートへ遷移する
BRステートでは、ビットアキュムレータ(ACM)の内容を確認し、条件成立の場合は、VGRに、MRの分岐アドレス指定部を符号拡張したものを加算する。不成立の場合は、加算を行わない。その後は転送情報書き換え判定を行うが、分岐モードの場合は、必ず、IRステートに遷移する。
次のIRステートでは、前記の加算を行ったVGRに基づき、データ転送情報をリードする。
図41に、DTC102の使用方法の第1の例のデータ転送情報設定に対し、分岐モードを追加的に指定した例を示す。データ転送情報は32ビット構成であり、上位側と下位側を2段に分割して示している。
転送情報1には、条件を設定しない。
転送情報2は、BOP=0、DRE=1、BRE=1として、分岐モードを指定する。TSTE=1、TSTS=1とし、対象ビットが0であるかを確認する。対象ビットが1のとき、条件成立として、ビット23〜0に格納した、FFFFF4を符号拡張して、VGRに加算して、転送情報1の先頭アドレスを計算して、分岐する。対象ビットが0のとき、条件不成立として、次の転送情報3を実行する。
転送情報3は、図27の転送情報2と同一である。
このように、条件分岐を可能とすることで、柔軟な処理を実現できる。
図42に、DTC102の使用方法の第1の例に分岐モードを追加した変形例のフローチャートを示す。
電圧監視割り込みが発生して、DTCが起動されると、電圧監視割り込みに対応したベクタ領域をリードする(VR)。このリードした内容がデータ転送情報の先頭アドレスであって、転送情報1をリードする(IR1)。転送情報1に従って、CKSRをリード(SR)する。指定したビットをACMに格納する。
次に、転送情報2をリードする(IR2)。転送情報2に従って、ACMの内容を確認し、分岐条件判定を行う(BR)する。条件が成立した場合、VGRに、MRの分岐アドレス指定部を符号拡張したものを加算し、IR2に戻る。
不成立の場合は、加算を行わず、転送情報3をリードする(IR3)。転送情報3に従って、DRで指定した内容を、CKSRへライトする(DW)。転送情報書き換え判定を行い、転送情報2の内容は更新されないので元のアドレスへのライトは行わず、DTCの動作を終了する。
(その他の変形例)
図43に、実施の形態6のDTC102の別の変形例のブロック図を示す。
データ転送情報を格納するレジスタセットとして、分岐アドレスレジスタ(JAR)を追加する。
図44A及び図44Bは、上記構成におけるデータ転送情報(転送情報セット)である。データ転送情報は32ビット構成であり、上位側を図44A、下位側を図44Bとして示している。
ビット操作モード、直接データ転送モード、通常データ転送モードのMRのビット3にJMPビットを、ビット2にRETビットを追加する。分岐モードのビット28にRETビットを追加する。
JMPビットを1にセットした場合は、データ転送情報に、JARを含めるようにする。この場合、所要の動作後、チェイン動作同様に、次のデータ転送情報をリードするようにし、このデータ転送情報の先頭アドレスを、VARではなく、JARで指定するようにする。
RETビットを0にクリアした場合は、JARをVARにコピーする。次のデータ転送情報でチェイン動作を行う場合には、次のデータ転送情報に連続したアドレスからデータ転送情報をリードする。
RETビットを1にセットした場合は、VARは保持するようにする。次のデータ転送情報でチェイン動作を行う場合には、JMPビットを1にセットしたデータ転送情報に連続したアドレスからデータ転送情報をリードする。
なお、JMPビットを1にセットした場合は、NXTE、NXTSビットを無視するようにする。分岐モードについても、RETビットによって、分岐アドレスをVARにコピーするかを選択する。
図45に、上記データ転送情報(転送情報セット)の使用方法を示す。
データ転送情報jのMRのJMPビットが1にセットされ、JARでデータ転送情報kのアドレスを指定している場合、データ転送情報jの実行後、データ転送情報kの実行を行う。
データ転送情報kのMRのNXTEビットが1にセットされている場合、チェイン動作を行うが、次に実行するデータ転送情報は、データ転送情報jのMRのRETビットによって相違する。
データ転送情報jのMRのRETビットが0にクリアされている場合、VARが更新されているので、データ転送情報kの実行後、データ転送情報k+1の実行を行う。
データ転送情報jのMRのRETビットが1にセットされている場合、VARが保持されているので、データ転送情報kの実行後、データ転送情報j+1の実行を行う。
図46に、実施の形態6における割り込みコントローラ(INT103)のブロック図を示す。
マイクロコンピュータの割り込み要因は、それぞれ割り込み要因フラグを有する。割り込みの要因フラグは、タイマ、通信、アナログの機能ブロックが所定の状態になったときに1にセットされる。
外部割り込みの要因フラグは、外部割り込み入力端子が所定のレベルになったとき、または所定の信号変化が発生したときに1にセットされる。割り込み要因フラグは、CPU101のライト動作によって0にクリアされるほか、DTC102による転送が終了したときに0にクリアされる。
割り込み要因フラグの各ビットの出力は、割り込み許可回路に入力され、この割り込み許可回路には、さらに割り込み許可レジスタの内容、すなわち割り込み許可ビットが入力される。この割り込み許可レジスタは、CPU101からリード/ライト可能なレジスタで、対応する割り込みを許可するか、禁止するかを選択する。割り込み要因フラグが1にセットされ、割り込み許可ビットが1にセットされていると割り込みが要求される。
割り込み許可回路の出力は、割り込み/DTC判定回路に入力される。この割り込み許可回路には、さらにDTC許可レジスタ(DTER)の内容が入力され、前記の通り、DTC許可レジスタは、割り込みが要求されたとき、DTC102を起動するか、CPU101に割り込みを許可するかを選択する。DTC許可レジスタの当該割り込み要因に対応したビットが1にセットされていると、DTC102の起動が要求され、CPU101の割り込みは要求されない。DTC許可レジスタのビットが0にクリアされていると、CPU101の割り込みが要求され、DTC102の起動は要求されない。
DTC許可回路の出力は、CPU割り込み要求とDTC起動要求が独立に優先順位判定回路に入力される。CPU101の優先順位判定・マスクレベル判定回路には、プライオリティレジスタ、割り込みマスクレベルなどに従って制御される。
CPU割り込み要求、DTC起動要求のそれぞれについて、複数の割り込み要求が発生している場合に、優先順位を判定する。この判定の結果、優先順位の最高のものが選択され、ベクタ番号が生成され、CPU割り込み要求とベクタ番号、DTC起動要求(DTCREQ)とベクタ番号(DTCVEC)が出力される。
DTC起動要求はDTCに入力され、またDTCベクタ番号はラッチ回路に入力される。DTC動作開始信号およびDTC動作終了信号がDTCから出力され、ラッチ回路に入力される。すなわち、DTC102が動作を開始すると、DTC動作信号が活性状態になり、ベクタのラッチないし保持が行われる。そして、DTC102のデータ転送が終了してDTC動作終了信号が活性状態になり、ラッチは解除される。
また、DTCベクタ番号とDTC動作終了信号はデコーダ回路に入力され、対応する割り込み要因フラグに対して要因クリア信号が活性状態になって、要因フラグまたはDTEビットがクリアされる。
所定の割り込み要因で、DTC102を起動する場合、CPU101は予め、データ転送情報などを所要のアドレスにライトするとともに、当該割り込みの割り込み許可ビットと、DTC許可レジスタの当該割り込み要因に対応したDTEビットを1にセットしておく。
この状態で当該割り込み要因フラグが1にセットされると、DTC102が起動される。DTC102が所定のデータ転送などの動作を実行している状態では、DTC102はデータ転送毎に当該割り込み要因フラグを0にクリアする。このとき、CPU101に割り込みは要求されない。
所定のデータ転送などを終了した場合、DTC102は動作終了時に当該DTEビットを0にクリアする。このとき、当該割り込み要因フラグは1に保持され、当該DTEビットが0にクリアされているので、CPU101に割り込みが要求される。CPU101は、所定のデータ転送の終了などに対応した処理を実行するとともに、データ転送情報やDTEビットの再設定を行う。
図47に、実施の形態6にかかるMCU100を用いたシステムのブロック図を示す。
MCU100は所要の制御対象の制御、例えば、カメラレンズにおいては、焦点、絞り、防振のモータ制御を行う。
MCU100の内部構成は主要なものを示しており、状態入力ブロック、制御出力ブロックは、いずれも、タイマ機能およびシリアルコミュニケーションインタフェースなどの通信機能を含むデジタルモジュール、A/D変換器およびD/A変換器、電源電圧検出機能などのアナログモジュール、入出力ポート(I/O)などを含む。
状態入力ブロックは、制御対象の状態を、エンコード値やアナログ値などとして入力し、入力した値や、機能ブロックの内部状態に従って、所定のイベントを発生し、このイベント発生は、割り込み要因フラグに反映される。このイベントは、例えば、エンコード値が所定の値になったときに発生するコンペアマッチ割り込み、アナログ入力の変換が完了したときに発生するA/D変換完了割り込み、などである。
一方、制御出力ブロックは、タイマパルス出力やアナログ出力などを行い、制御対象の制御を行う。制御出力ブロックは、前記出力のためのデータレジスタのほか、制御出力ブロックを制御するための制御レジスタを持っている。例えば、タイマのカウンタを0にクリアするためのカウンタクリアビットなどがある。
このイベントないし割り込み要因は、割り込みコントローラ(INT103)を介して、DTC102に伝達される。
割り込み要因によって、DTC102が起動されると、所定のデータ転送情報に従い、制御出力ブロックに対して、データ転送や制御レジスタの操作などを実行する。データ転送情報のリードにあたって、分岐動作を行い実行するデータ転送情報を切り替えることによって、制御出力ブロックやそのほかの状態に応じた処理を実行することができる。
すなわち、状態入力ブロックで発生したイベントに呼応した、制御出力ブロックに対する処理を、CPU101によらず、DTC102のみで実行することができる。所要の制御レジスタをリードし、所要のビットを操作し、そのほかのビットを保持して、ライトを行うことで、ほかの状態に影響を与えることなく、所要の制御を行うことができる。従来技術においては、CPU100に割り込みを要求して処理を切り替えていた動作を、DTC102によって実行することができる。
このようなシステムにおいて、CPU101は事前にデータ転送情報の設定などを行えばよく、制御対象の制御にあたっては、スリープないしスタンバイモードなどの低消費電力状態とすることもでき、システムの低消費電力化に寄与できる。DTC102はCPU101より論理規模が小さく、かつ高速に処理を行うことができるので、低消費電力化の効果を高めることができる。バッテリで駆動されるカメラシステムなどにおいては、低消費電力化が重要であることは言うまでもない。
<実施の形態6の作用効果>
実施の形態6によれば以下の作用効果を得ることができる。
(1)DTCによるビット操作を可能とすることで、機器制御に対応したビット単位の操作をハードウェア的に実行できる。バイトなどのサイズでデータをリードし、当該データに所要のビット操作を行って、ライトを行うこと、および、DRに用意したデータをライトすることで、マイクロコンピュータの内蔵する各種の機能の、種々のビット操作の仕様に対応できる。バスインタフェースを利用するので、専用のインタフェースを設ける必要がなく、マイクロコンピュータのアドレス空間上に存在する任意のデータを使用でき、利用者が使用方法を任意に選択することができる。バスは排他的に制御されるため、複数のイベントの競合に配慮する必要がない。すなわち高速化が実現できる。イベントに呼応した、データ転送機能とビット操作機能を、1つのハードウェアで実現し、データ転送情報で切り替えることによって、割込みコントローラやDTCベクタなどを共通化して、ハードウェア構成を簡略化することができる。
(2)ビット操作を指定する、データ転送情報をメモリに格納することによって、ビット操作の対象を増やすことができる。チェイン動作などによって1回に実行するビット操作ないしデータ転送の数を増やすことができる。複数の起動要因によって、共通のビット操作を実現することができる。ビット操作を可能にすることで、マイクロコンピュータの仕様および制御対象に応じて、使用する端子やタイマのチャネルなどを柔軟に変更することができる。専用のハードウェアは1回のデータ転送に必要な分を持てばよいので、機能を追加して、ハードウェア規模が増えても、マイクロコンピュータ全体の物理的な規模の増加を抑止することができる。データ転送機能とビット操作機能を1つのハードウェアで実現することによって、さらに、物理的な規模の増加を抑止することができる。
(3)チェイン動作によって、ビット操作を連続的に実行することができ、さらに、所定のビットの状態およびこれを演算した結果を、ビットアキュムレータに保持して、次のビット操作で利用可能とすることができるので、複数のビットに基づく操作など、複数のビット操作組み合わせることができる。所要のビットの状態を確認して、DTCの動作を変更することを可能にして、さらに柔軟な動作を実現できる。
(4)DTCのデータ転送情報のリードにあたって、連続したデータ転送情報以外に、分岐動作を可能とすることによって、複数のデータ転送情報を、所要の順序で連続して実行することができる。指定したビットの状態を判断して分岐を行うかの選択を可能とすることにより、マイクロコンピュータの制御対象の状態などに対応した処理を実現することができる。
(5)DTCのデータ転送情報のリード時に、連続する次のデータ転送情報の一部を予めリードしておくことで、実行ステートの短縮を実現することができる。
(6)データ転送情報の容量を変更可能にすることで、使用するRAMの容量を節約することができる。最大のデータ転送情報の容量に対応したハードウェアを1つ分持てばよいので、マイクロコンピュータ全体の物理的な規模の増加を抑止することができる。最適な容量のデータ転送情報をリード/ライトすることで、リード/ライトの回数を最小限にし、高速化に寄与することができる。
(7)CRを無効とする指定を設けることで、所定回数のデータ転送を行うこととは別に、マイクロコンピュータの状態に応じた制御を、任意の回数実行することができる。データ転送情報を短縮して、DTC動作の高速化と、メモリの利用効率の向上を実現できる。また、CRを無効とすることで、データ転送情報の更新をなくし、データ転送情報の書き戻しを不要とすることができる。具体的には、実施例で説明した例は、データ転送情報の更新がなく、これらのデータ転送情報はROMに配置することができる。ROMに配置すれば、RAMに初期書き込みを行う必要がなくなる。また、使用するRAMの容量を節約することができる。
(8)DTCがCPUに代わって、データ転送やビット操作を実行可能にすることで、CPUに割り込みを要求する頻度を低減したり、CPUを低消費電力状態にする期間を長くしたりすることができる。CPUが割り込み処理にあたって実行すべき、例外処理、スタックの退避・復帰操作、復帰命令の実行を不要とすることができ、プログラムの簡略化やシステムの効率化に寄与することができる。また、イベントの発生から所要の動作の実行までの時間を短縮し、いわゆる応答性を向上することができる。CPUより論理規模が小さく、かつ高速に処理を行うことができるDTCが動作し、CPUを低消費電力状態にすることで、低消費電力化を実現することができる。
<実施の形態6の変形>
実施の形態6は上述の構成に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能である。
例えば、データ転送情報は32ビット単位の可変長としたが、この単位は任意にできる。アドレスレジスタのビット数は32ビットに限定されるものではなく、CPUまたはマイクロコンピュータのアドレス空間に応じて変更でき、たとえば16Mバイトのアドレス空間であれば24ビットとすればよい。分岐アドレス指定部は、データ転送情報がロングワード(32ビット)を単位としていることに対応して、1/4とした内容を保持するようにしてもよい。VGRに加算するときに、4倍すればよい。分岐できる範囲を広げることができる。あるいは、分岐アドレス指定部は、MRと別のロングワードにしてもよい。相対アドレスとするほか、直接アドレスを指定するようにしてもよい。
また、CPU101のプログラムは、ROM104に配置するほか、外部メモリとすることができる。同様に、CPU101の作業領域であるメモリはRAM105に限らず、外部メモリとすることができ、またROM104またはRAM105は内蔵しなくてもよい。
DTC102のデータ転送情報についても、RAM105に配置するほか、ROM04あるいは外部メモリとすることができる。データ転送情報の書き換えを行わないものは、ROM104に配置してもよい。ただし、ROM104に対するCPU101のアクセス頻度が高い場合は、データ転送情報の書き換えを行わないものも、RAM105に配置することができる。
DTC102のほかに、DMAコントローラなどのデータ転送装置を設けることもできる。DTC102とDMAコントローラの機能を1つの機能モジュールとすることもできる。
DTC102、割り込みコントローラの具体的な構成についても種々変更できる。
BSCや、バス権やウェイトなどのバス動作の詳細については省略したが、これらは適宜実装可能である。
MCU100の構成についても限定されない。内蔵する機能ブロックなども種々変更できる。
<その他の実施の形態>
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるマイクロコンピュータに適用した実施の形態について説明したが、それに限定されるものではなく、その他の半導体集積回路装置、例えば、デジタルシグナルプロセッサ(DSP)を中心にした半導体集積回路装置にも適用可能であり、本発明は少なくとも、データ処理装置およびデータ転送装置を内蔵した半導体集積回路装置に適用することができる。
また、上述の実施の形態の記載及び図面は、説明の明確化のため、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、任意の回路構成を有するハードウェアで構成することができ、メモリにロードされたプログラムなどソフトウェアによって実現することもできる。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non−transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。