JP3708979B2 - 半導体集積回路 - Google Patents
半導体集積回路 Download PDFInfo
- Publication number
- JP3708979B2 JP3708979B2 JP33554494A JP33554494A JP3708979B2 JP 3708979 B2 JP3708979 B2 JP 3708979B2 JP 33554494 A JP33554494 A JP 33554494A JP 33554494 A JP33554494 A JP 33554494A JP 3708979 B2 JP3708979 B2 JP 3708979B2
- Authority
- JP
- Japan
- Prior art keywords
- bus
- data transfer
- register
- interrupt
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Bus Control (AREA)
- Microcomputers (AREA)
Description
【産業上の利用分野】
本発明は、半導体集積回路に係り、例えば、中央処理装置とデータ転送装置を内蔵したシングルチップマイクロコンピュータに利用して有効な技術に関するものである。
【0002】
【従来の技術】
シングルチップマイクロコンピュータは、昭和59年11月30日オーム社発行の『LSIハンドブック』P540及びP541に記載されるように、中央処理装置を中心にしてプログラム保持用のリードオンリメモリ、データ保持用のランダムアクセスメモリ、およびデータの入出力を行なうための入出力回路などの機能ブロックが一つの半導体基板上に形成されて成る。かかるシングルチップマイクロコンピュータに、ダイレクトメモリアクセスコントローラを内蔵し、中央処理装置とは独立にデータ転送制御を行えるようしたものとして、平成5年3月(株)日立製作所発行『H8/3003 ハードウェアマニュアル』に記載のものがある。斯るダイレクトメモリアクセスコントローラは、割込要求によって起動でき、リピートモード、ブロック転送モードなどを行なうことができ、ステッピングモータの制御やプリンタの印字データ制御に好適である。上記の例では、最大8チャネルの転送を行なうことができる。ダイレクトメモリアクセスコントローラの転送は中央処理装置と独立しているために、データ転送に必要なバスサイクルの期間だけ中央処理装置によるメモリアクセスを停止させればよく、中央処理装置は、前記バスサイクル以外は、実行中の処理を継続できる。例えば、ランダムアクセスメモリから入出力回路にバイトデータを転送するとき転送元・転送先アドレスをインクリメントする場合、ランダムアクセスメモリのアクセスを2ステート、入出力回路のアクセスを3ステートとして、前記の例では、デッドサイクル1ステートを含めて、データ転送を6ステートで行うことができる。なお、シングルチップマイクロコンピュータまたは半導体集積回路装置の基準クロック信号(φ)の1周期をステートとする。
【0003】
しかしながら、かかるダイレクトメモリアクセスコントローラは、転送元アドレスレジスタ、転送先アドレスレジスタ、転送カウンタ、制御レジスタを各チャネル毎に持つために、多数のチャネルのデータ転送を行なおうとすれば、前記レジスタを多数組設けなければならず、ダイレクトメモリアクセスコントローラの、ひいては、半導体集積回路全体の、論理的・物理的規模を増大させてしまう。さらに、規模の増大は製造費用を増大させてしまう。換言すれば、適当な規模あるいは製造費用で、割込要因の全て或いはその大多数に対して一対一対応のデータ転送制御を行なうことは困難である。また、アドレス指定レジスタのビット数を制限することによって、チャネル数を増加するさせることができるが、その場合には、転送先若しくは転送元とされるメモリまたはレジスタをアドレス空間上で局所的に配置する必要を生じ、使い勝手を低下させ、或はシングルチップマイクロコンピュータのような半導体集積回路に十分な数の入出力回路を内蔵させてそれに対するデータ転送を行なうことを困難にしてしまう。
【0004】
一方、ダイレクトメモリアクセスコントローラにおいてチャネル毎に設けられる転送元アドレスレジスタや転送先アドレスレジスタなどの多数のレジスタを、記憶密度が高い汎用のランダムアクセスメモリ上に配置し、論理的・物理的規模の増大を防いだデータ転送装置、所謂データトランスファコントローラを内蔵したものに、昭和63年12月(株)日立製作所発行『H8/532 ハードウェアマニュアル』などがある。すなわち、ダイレクトメモリアクセスコントローラにおいてチャネル毎に割り当てられたレジスタ上の転送元アドレス、転送先アドレス、及び転送語数などの転送制御情報をチャネル毎にレジスタ情報若しくはデータ転送制御情報としてランダムアクセスメモリに保持させ、データトランスファコントローラには例えば1組のレジスタが設けられ、データ転送が要求されたチャネルの転送制御情報を当該1組のレジスタにロードしてデータ転送制御を行い、データ転送の区切り毎に若しくは終了毎にその1組のレジスタの値をランダムアクセスメモリの所定領域にライトバック即ちストアするようになっている。したがって、斯るデータトランスファコントローラでは、多数のレジスタ対を持つことなく、実質的に全ての割込要因に対応させた多チャネルを持つこと、即ち実質的に全ての割込要因に対応させたデータ転送を制御することができる。
【0005】
【発明が解決しようとする課題】
しかしながら、転送制御情報を保持するレジスタを汎用のランダムアクセスメモリ上に配置したために、データ転送に先立って、必要な転送制御情報をランダムアクセスメモリからデータトランスファコントローラに読み込み、読み込んだ内容に従って、データ転送を行ない、更にデータ転送によって更新されたレジスタ情報をランダムアクセスメモリに退避する必要があり、データ転送に比較して、大きな時間をレジスタへの読み込み・退避に費やしてしまう。この期間は中央処理装置を停止しなければならない。このため、シングルチップマイクロコンピュータまたは半導体集積回路全体の処理効率を低下させてしまう。例えば、バイトデータの転送で転送元・転送先アドレスをインクリメントする場合、前記の例では、データ転送5ステートに対して、レジスタの読み込み・退避に30ステートを要し、合計35ステートの期間中央処理装置が停止されることになる。
【0006】
本発明の目的は、物理的・論理的規模の増大を最小限とし、多数の割込によるデータ転送を可能とし、かつ処理効率を向上した、シングルチップマイクロコンピュータなどの半導体集積回路を提供することにある。
【0007】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【0008】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【0009】
すなわち、データ転送装置(DTC)の転送制御情報を第1の記憶手段(RAMD)に設け、データ転送装置と第1の記憶手段を第2のバス手段(DTAB,DTDB)で直接接続し、かかる第1の記憶手段から転送制御情報を取り出して、データ転送装置が動作するようにし、データ転送装置が第1の記憶手段をリード/ライト中であっても、データ処理装置(CPU)が第1のバス手段(IAB,IDB,BSCONT,PAB,PDB)を使用して、第1の記憶手段以外の第2の記憶手段(メモリまたは機能ブロックまたはモジュール)をリード/ライト可能にし、更にデータ転送装置が第1の記憶手段をリード/ライトしていない場合、データ処理装置が第2のバス手段を使用して、第1の記憶手段をリード/ライト可能にするものである。
【0010】
データ転送装置の起動に割り込みを利用する場合には、入出力手段から割り込みが要求される割り込み制御手段(IRCONT)に、前記データ制御装置(CPU)へ割込要求信号(701)を出力させると共に前記データ転送装置(DTC)へデータ転送の起動要求信号(801)を出力させるようにし、このとき、入出力手段からの割り込み要求に対して前記割り込み信号又は起動要求信号を択一的に活性化させる。
【0011】
前記データ転送装置がデータ転送制御情報の設定されるレジスタ手段を有するとき、データ転送装置はデータ転送の起動要求信号の活性化に応答して前記第1の記憶手段から第2のバス手段を介してレジスタ情報をレジスタ手段にロードすることができる。このとき、前記割り込み制御手段は、起動要求信号の活性化と共に割り込み要因に応ずるベクタ番号を出力し、前記データ転送装置は、そのベクタ番号に基づいて第1の記憶手段上のベクタテーブルを利用し、レジスタ手段にロードすべきデータ転送制御情報の所在を得ることができる。
【0012】
前記入出力手段が前記割り込み制御手段に割り込みを要求するためのフラグ手段を有するとき、前記データ転送制御情報に、前記フラグ手段をクリアするか否かを決定するための情報(転送カウント情報、NEXTEビット)を含め、これにより、データ転送起動要因とされる割り込み要因クリアの制御に自由度を持たせることができ、その使い勝手を向上させる。
【0013】
第1の制御ビット(DTE)と第2の制御ビット(CIE)を更に設け、前記割り込み制御手段には、前記入出力手段からの割り込み要求に対し、第1の制御ビットが第1の状態のときは前記割り込み信号を活性化し且つ前記起動要求信号を非活性とし、第1の制御ビットが第2の状態のときは、前記起動要求信号を活性化し、このとき第2の制御ビットの第1の状態においては割り込み要求信号を非活性とし、また、第2の制御ビットの第2の状態においては前記データ転送装置のデータ転送後に前記割込要求信号を活性化する制御を行わせることにより、データ処理装置に対する割り込みとデータ転送装置に対する起動との制御に一層の自由度を得ることを可能にする。
【0014】
前記第2のバス手段のデータバスのビット数が、前記第1のバス手段のデータバスのビット数より大きいことにより、転送制御情報の取り込みが高速化され、割り込み要求によって起動されるデータ転送動作の応答性を向上させる。
【0015】
バス構成を別の観点から把握した半導体集積回路は、データ処理装置(CPU)と、データ処理装置が実行するプログラムを内蔵した第2の記憶装置(ROM)と、データ処理装置の作業領域とされる第3の記憶装置(RAMC)と、前記データ処理装置と第2の記憶装置と第3の記憶装置とを接続する第1のバス(IAB、IDB)と、データ転送装置(DTC)と、データ転送装置のデータ転送制御情報を格納する第1の記憶装置(RAMD)と、データ転送装置と第1の記憶装置とを接続する第2のバス(DTAB、DTDB)と、データ転送装置の起動を要求することができる入出力手段(I/O)に接続される第3のバス(PAB、PDB)と、第1のバスと第3のバスを接続可能とするバス制御手段(BSCONT)とを含んで構成できる。
【0016】
このとき、前記データ処理装置が前記第3の記憶装置にデータ転送情報の所在を示す情報を書き込み、書き込まれた情報をデータ転送装置が読み込んで転送制御情報を得ることによって、前記データ転送装置のデータ転送動作を決定させることができる。
【0017】
バス構成を更に別の観点から把握した半導体集積回路は、バスマスタ手段としてのデータ転送装置(DTC)とデータ処理装置(CPU)を有し、データ処理装置のアドレス空間上に複数の記憶手段が配置され、前記データ転送装置が前記一の記憶手段をアクセスするための第2のバスと、前記データ処理装置が前記第2のバスを介さずに前記他の記憶手段をアクセスするための第1のバスとを有し、前記データ処理装置とデータ転送装置が相互に別の記憶手段を並列的にアクセス可能にされたものとされる。
【0018】
このとき、前記一の記憶手段にはデータ転送装置の転送動作を決定するための転送制御情報が複数種類格納可能にされるから、それら転送制御情報には、前記データ転送装置の1回の動作で、復数種類の前記転送制御情報によるデータ転送を指定可能な情報(NEXTE)を含むことができ、データ処理装置による転送制御情報の初期設定によってデータ転送態様を自由に決定することができる。
【0019】
【作用】
上記した手段によれば、ROMまたは外部メモリなどからデータ処理装置が命令をフェッチする動作と、データ転送装置が第2の記憶手段をリード/ライトする動作を並列に実行可能とされ、これが、データ処理装置とデータ転送装置が同時に動作する頻度を向上させ、シングルチップマイクロコンピュータなどの半導体集積回路によるデータ処理速度若しくはデータ処理能率を向上させる。データ転送装置の転送制御情報を記憶密度の高い記憶手段に保持させることは、物理的規模を縮小し、シングルチップマイクロコンピュータのような半導体集積回路の製造費用を削減し、さらに、適正な規模または製造費用で、転送チャネル数を増大させる。
【0020】
【実施例】
図1には本発明の一実施例に係るシングルチップマイクロコンピュータが示される。このシングルチップマイクロコンピュータは、中央処理装置CPU、データトランスファコントローラDTC、リードオンリメモリROM、ランダムアクセスメモリRAMC、更に別のランダムアクセスメモリRAMD、タイマTMR、パルス出力回路PIO、シリアルコミュニケーションインタフェースSCI、A/D変換器ADC、入出力ポートIOP0〜IOP11、割込コントローラIRCONT、バスコントローラBSCONT、クロック発振器CPGの機能ブロック若しくは回路モジュールを備える。タイマTMRはタイマA及びタイマBの2つの部分から構成される。上記機能ブロックは、内部バスによって相互に接続される。内部バスはアドレスバス・データバスの他、図示はされないリード信号・ライト信号、さらにバスサイズ信号、システムクロックを含む。内部アドレスバスバスには、IAB、DTAB、PABが存在する。内部データバスにはIDB、DTDB、PDBが存在する。
【0021】
内部バスIAB,IDBにはバスマスタとしての中央処理装置CPU及びデータトランスファコントローラDTC、そしてランダムアクセスメモリRAMC,RAMD、リードオンリメモリROM、及びバスコントローラBSCONTが結合される。更に、内部アドレスバスIABは外部バスのアドレスバスとするために、入出力ポートIOP0〜3に接続され、内部データバスIDBは外部バスのデータバスとするために、入出力ポートIOP4、5に接続される。内部アドレスバスIABとペリフェラルアドレスバスPAB、そして内部データバスIDBとペリフェラルデータバスPDBとは、バスコントローラBSCONTによってインタフェースされている。ペリフェラルバスPAB,PDBはバスコントローラBSCONT、タイマTMR、パルス出力回路PIO、シリアルコミュニケーションインタフェースSCI、A/D変換器ADC、割込コントローラIRCONT、及び入出力ポートIOP0〜11に接続される。
【0022】
アドレスバスDTAB及びデータバスDTDBは、データトランスファコントローラDTCとランダムアクセスメモリRAMDとを直結する専用バスである。一方のランダムアクセスメモリRAMCは内部バスIAB,IDBに接続され、他方のランダムアクセスメモリRAMDは内部バスIAB,IDBと共にデータ転送制御用の専用バスDTAB、DTDBに接続されている点でランダムアクセスメモリRAMCと相違される。即ち、ランダムアクセスメモリRAMDはバスDTAB,DTDBの双方に格別に接続されるデュアルポートを持っており、内部バスIAB,IDB又はバスDTAB,DTDBを使用してリード/ライト可能にされる。中央処理装置CPUとデータトランスファコントローラDTCが、所謂バスマスタとしてバスアクセスを起動する。リードオンリメモリROM、ランダムアクセスメモリRAMC,RAMD、タイマTMR、パルス出力回路PIO、シリアルコミュニケーションインタフェースSCI、A/D変換器ADC、入出力ポートIOP0〜11、割込コントローラIRCONTの各機能ブロックはバススレーブとして、中央処理装置CPU又はデータトランスファコントローラDTCによってリード/ライトされる。
【0023】
割込コントローラIRCONTは、タイマTMR、シリアルコミュニケーションインタフェースSCI、A/D変換器ADC、入出力ポートIOP11から出力される割込信号700を入力し、中央処理装置CPUに割込要求信号701とCPUベクタ番号702を、データトランスファコントローラDTCに転送起動要求信号801とDTCベクタ番号802を出力する。尚、データトランスファコントローラDTCと割り込みコントローラIRCONTとの間では801,802以外の図示しない信号も受け渡しされる。
【0024】
入出力ポートIOP0〜IOP11は、外部バスとの接続と入出力回路の入出力に兼用とされている。即ち、IOP0〜IOP3はアドレスバス出力、IOP4、IOP5はデータバス入出力、IOP6はバス制御信号入出力信号と兼用されている。外部アドレス、外部データは、それぞれ、これらの入出力ポートに含まれるバッファ回路を介して内部バスIAB,IDBと接続されている。ペリフェラルバスPAB,PDBは入出力ポートのレジスタをリード/ライトするために使用し、外部バスとは直接の関係はない。バス制御信号出力は、アドレスストローブ、ハイ/ロウデータストローブ、リードストローブ、ライトストローブ、バスアクノリッジ信号などがある。バス制御入力信号にはウェイト信号、バスリクエスト信号などがある。これらの入出力信号は図示はされない。外部バス拡張を行うことは、動作モードなどで選択され、これらの入出力ポートの機能も選択される。
【0025】
また、IOP7はタイマ入出力、IOP8はパルス出力、IOP9はSCI入出力、IOP10はアナログ入力、IOP11は外部割込要求(IRQ)入力と兼用されている。タイマTMR、シリアルコミュニケーションインタフェースSCI、A/D変換器ADCと入出力ポートIOP7,IOP9,IOP10との入出力信号は図示はされない。そのほかに本実施例のマイクロコンピュータは、電源端子Vcc、Vss、アナログ電源端子AVcc、AVss、リセット入力RES、スタンバイ入力STBY、マスク不可能な割込入力NMI、クロック入力EXTAL、XTAL、動作モード入力MD0、MD1、MD2などの入力端子を備える。
【0026】
図2及び図3には本実施例に係るシングルチップマイクロコンピュータの例外処理要因の一覧が示される。例外処理には、リセット、割込、トラップ(TRAP)命令がある。リセット、トラップ命令については、本発明に直接の関係はないので詳細な説明は省略する。
【0027】
割込要因として、外部端子からの外部割込要因が9要因(NMI,IRQ0〜IRQ7)、タイマA及びタイマBの割込要因が10要因、シリアルコミュニケーションインタフェースSCIの割り込み要因が3要因、A/D変換器ADCの割り込み要因が1要因がある。割込要因は、中央処理装置CPUに割込を要求するほか、データトランスファコントローラDTCの起動要因となる。但し、NMI割込、タイマのオーバフロー割込、シリアルコミュニケーションインタフェースSCIの受信エラー割込などは、その他の例外要因とは相違され、ソフトウェアでの処理にて必要な処理が完結するため、換言すればデータトランスファコントローラDTCを起動して対処しなければならないような処理を伴うことはないため、中央処理装置CPUの割込要求のみとされる。このため斯る割込要因に対応して図示されるDTCベクタアドレスには「−」が記入されている。データトランスファコントローラDTCの起動要因とされ得る割込要因には、DTC許可レジスタDTERA、DTERB、DTERC、DTERDに、DTC許可ビットが設けられている。例えば、IRQ0は、DTC許可レジスタDTERAのビット7(DTEA7)が”1”にセットされると、IRQ0はDTC起動要因とされ、割込要因が発生すると(IRQ0=”1”にされると)、データトランスファコントローラDTCが起動される。このとき中央処理装置CPUに対しては割込は要求されない。
【0028】
所定の例外処理要因は、中央処理装置CPUに対する割込要因として、及びデータトランスファコントローラDTCに対する起動要因として、それぞれ固有のベクタアドレスを有する。特に制限されないが、中央処理装置CPUのベクタアドレスとしてはH’00000000(H’は16進数であることを意味する)以降のリードオンリメモリROMのアドレス、データトランスファコントローラDTCのベクタアドレスとしてはH’FFFFFC00以降のランダムアクセスメモリRAMDのアドレスに配置されている。なお、図3において各機能ブロックの割込が4要因を単位とし、4乃至8要因に不足する部分が予約とされているが、これは4要因単位で割込優先順位を設定可能としたことに対応するものであり、本発明には直接の関係はない。予約とされた割込は、本実施例のシングルチップマイクロコンピュータでは発生しない。
【0029】
図4には本実施例のシングルチップマイクロコンピュータのアドレスマップが示される。本実施例のシングルチップマイクロコンピュータが管理するアドレス空間は、特に制限されないが、4ギガ(G)バイトとされ、1バイト毎にアドレスが割り当てられている。上記各機能ブロックは、接続されるバスに拘らず、中央処理装置CPUのアドレス空間上で、固有のアドレスを有する。なお、図4においてI/O(データ入出力手段)は、図1のタイマTMR、パルス出力回路PIO、シリアルコミュニケーションインタフェースSCI、A/D変換器ADC、入出力ポートIOP0〜IOP11、及び割込コントローラIRCONTの内蔵レジスタを含む。
【0030】
例えば上記リードオンリメモリROMには32kバイト分のアドレスH’00000000〜H’00007FFFが割り当てられ、ランダムアクセスメモリRAMCには1kバイト分のアドレスH’FFFFF780〜H’FFFFFB7Fが割り当てられ、ランダムアクセスメモリRAMDには1kバイト分のアドレスH’FFFFFB80〜H’FFFFFF7Fが与えられ、I/OはアドレスH’FFFFFF00〜H’FFFFFFFFに配置されている。リードオンリメモリROM、ランダムアクセスメモリRAMC及び外部アドレスに配置される機能ブロックは、内部バスIAB,IDBとインタフェースされ、ランダムアクセスメモリRAMDはIAB,IDB及びDTAB,DTDBとインタフェースされ、I/OはPAB,PDBにインタフェースされる。前記中央処理装置CPUのベクタアドレスはリードオンリメモリROMの領域に配置され、データトランスファコントローラDTCのベクタアドレスはランダムアクセスメモリRAMDの領域に配置されている。
【0031】
図5には本実施例のシングルチップマイクロコンピュータにおけるアドレスバス,データバスの接続状態を理解しやすく表現してある。前記の通り、I/Oには図1のタイマTMR、パルス出力回路PIO、シリアルコミュニケーションインタフェースSCI、A/D変換器ADC、入出力ポートIOP0〜IOP11、割込コントローラIRCONTの各内蔵レジスタを含む。クロックパルスジェネレータCPGなどの、バスと接続されていない機能ブロック或はモジュールは図示を省略してある。アドレスバスとして、中央処理装置CPU、リードオンリメモリROM、ランダムアクセスメモリRAMC,RAMD、外部バス(バッファ回路BUF)を接続するIAB、データトランスファコントローラDTCとランダムアクセスメモリRAMDを接続するDTAB、及びI/Oを接続するPABがある。内部アドレスバスIABとPABとはバスコントローラBSCONTでインタフェースされている。データバスとして、中央処理装置CPU、リードオンリメモリROM、ランダムアクセスメモリRAMC,RAMD、外部バス(バッファ回路BUF)を接続するIDB、データトランスファコントローラDTCとランダムアクセスメモリRAMDを接続するDTDB、及びI/Oを接続するPDBがある。内部データバスIDBとPDBはバスコントローラBSCONTでインタフェースされている。内部データバスIDBとPDBは必要に応じて接続され、相互間でデータの入出力が行なわれる。なお、内部バスIAB,IDBはバッファ回路BUFを介して、外部バスに接続される。かかるバッファ回路BUFは入出力ポートIOP0〜IOP5に含まれる。
【0032】
図6にはデータトランスファコントローラDTCに内蔵されているレジスタの構成が示される。データトランスファコントローラDTCの内蔵レジスタレジスタには、32ビット構成のベクタアドレスレジスタとして利用されるレジスタVAR、ソースアドレスレジスタとして利用されるレジスタSAR、デスティネーションレジスタとして利用されるレジスタDARを供え、更に、16ビット構成のブロック転送カウントレジスタなどとして利用されるレジスタBTCR、転送カウントレジスタなどとして利用されるレジスタTCR、モードレジスタなどとして利用されるレジスタDTMRを備える。レジスタTCRは8ビットずつ上位(TCRH)、下位(TCRL)に分割されている。32ビットを単位としたとき、余った最後の1ワード(モードレジスタDTMRの上位側1ワード)は予約領域とされる。レジスタVAR、SAR、DARはそれぞれ32ビット長であり、4Gバイトのアドレス空間全領域を指定できる。レジスタBTCR、TCRはそれぞれ16ビット長であり、最大64k回の転送を指定できる。最大値はH’0000とされ、65536と見なされる。
【0033】
上記レジスタVAR,SAR,DAR,BTCR,TCR(TCRH,TCRL))は、1組分の回路がデータトランスファコントローラDTCの内部に存在し、特に制限はされないものの、中央処理装置CPUのアドレス空間上には存在しない。これらに格納されるべき、転送制御情報(レジスタ情報若しくはレジスタファイルとも記す)は、DTC起動要因(DTCベクタ番号)毎にランダムアクセスメモリRAMD(又はRAMCなどのメモリ)に配置されている。
【0034】
DTC起動要因に対応するレジスタ情報は、いわゆるベクタ方式によってデータトランスファコントローラDTC内の上記レジスタASR,DARなどに取り込まれる。DTCベクタ番号とレジスタ情報との対応は、DTCベクタテーブルの内容によって決定される。DTCベクタテーブルは図2及び図3に示されるDTCベクタ先頭アドレスで規定される領域に形成される。このDTCベクタテーブルは、DTC起動要因毎のレジスタ情報を格納している領域の先頭アドレスを保有している。DTCベクタテーブルは、ランダムアクセスメモリRAMD上に配置されている。割り込み信号にてその例外要因に応じたDTC起動要求がデータトランスファコントローラDTCに与えられたとき、データトランスファコントローラDTCは、その要求に応ずるベクタ番号に基づいてベクタ先頭アドレスを求め、それによってランダムアクセスメモリ上のDTCベクタテーブルからその要因に応じたレジスタ情報の格納アドレスをレジスタVARに取得し、取得したアドレスからレジスタ情報を読み込んで、所定の内蔵レジスタに順次ロードする。DTCベクタテーブルと共にレジスタ情報もランダムアクセスメモリRAMDに格納されている場合には当該レジスタ情報の取り込みを直結バスDTAB,DTDBを介してランダムアクセスメモリRAMDから高速に行うことができる。レジスタ情報がランダムアクセスメモリRAMDに格納されていない場合であっても、ランダムアクセスメモリRAMD上のDTCベクタテーブルのアクセスは高速に行うことができる。データトランスファコントローラDTCがベクタリング及びレジスタ情報を直結バスDTAB,DTDBを介してランダムアクセスメモリRAMDから読み込むとき、中央処理装置CPUが別のバスIDB,IABを介してその他も回路モジュールをアクセスすることを妨げないので、シングルチップマイクロコンピュータ全体におけるデータ処理効率も向上させることができる。
【0035】
図7及び図8には上記モードレジスタDTMRのビット構成が示される。ビット15、ビット14は、SM1、SM0ビットであり、データ転送後にソースアドレスレジスタSARをインクリメントするか、デクリメントするか、固定にするかを指定する。SM1ビットを”0”にクリアすると、ソースアドレスレジスタSARは固定とされる。SM1ビットを”1”にセットした状態で、SM0ビットを”0”にクリアすると、インクリメント、SM0ビットを”1”にセットすると、デクリメントが行なわれる。
【0036】
ビット13、ビット12は、DM1、DM0ビットであり、データ転送後にディスティネーションアドレスレジスタDARをインクリメントするか、デクリメントするか、固定にするかを指定する。DM1ビットを”0”にクリアすると、ディスティネーションアドレスレジスタDARは固定とされる。DM1ビットを”1”にセットした状態で、DM0ビットを”0”にクリアすると、インクリメント、DM0ビットを”1”にセットすると、デクリメントが行なわれる。
【0037】
ビット11、ビット10は、MD1、MD0ビットであり、データ転送モードを選択する。MD1、MD0ビットを”0”にクリアすると、ノーマルモードとなる。ノーマルモードでは、データトランスファコントローラDTCへの1回のDTC起動要求で、ソースアドレスレジスタSARで示されるアドレスから、ディスティネーションアドレスレジスタDARで示されるアドレスへ、1回のデータ転送を行なう。この後、SM1、SM0、DM1、DM0ビットの指定に基づいて、アドレスレジスタSAR、DARの操作が行なわれ、転送カウントレジスタTCRがデクリメントされる。これを転送起動要因が発生する毎に転送カウントレジスタTCRで指定された回数だけ、繰り返す。転送カウントレジスタTCRで指定された回数のデータ転送が終了すると、後述するようにDTC動作が禁止されて、起動要因となった割込が中央処理装置CPUに要求される。
【0038】
MD1を”0”にクリア、MD0ビットを”1”にセットすると、リピートモードとなる。リピートモードでは、データトランスファコントローラDTCへの1回のDTC起動要求で、ソースアドレスレジスタSARで示されるアドレスから、ディスティネーションアドレスレジスタDARで示されるアドレスへ、1回のデータ転送を行なう。転送回数は8ビットのTCRH、TCRLで指定する。レジスタTCRHは転送カウンタとして利用され、レジスタTCRLはその初期値を保持する。データ転送後、SM1、SM0、DM1、DM0ビットの指定に基づいて、アドレスレジスタSAR,DARの操作が行なわれ、TCRHがデクリメントされる。これを起動要因が発生する毎にTCRHで指定された回数だけ、繰り返す。TCRHで指定された回数のデータ転送が終了すると、TCRLに保持した内容に基づいて、アドレスレジスタSAR又はDAR、TCRHの初期設定値が回復される。中央処理装置CPUによって起動要因となる割込を禁止するか、データトランスファコントローラDTCの動作を禁止するまで転送を繰り返す。
【0039】
MD1を”1”にセット、MD0ビットを”0”にクリアすると、ブロック転送モードとなる。ブロック転送モードでは、データトランスファコントローラDTCへの1回のDTC起動要求で、ソースアドレスレジスタSARで示されるアドレスから、ディスティネーションアドレスレジスタDARで示されるアドレスへ、複数回のデータ転送を行う。当該複数回のデータ転送が行われる毎にブロック転送カウントレジスタBTCRがデクリメントされる。1回のDTC起動要求で行うデータ転送の回数は8ビットのTCRH(転送カウント)、TCRL(初期値保持)で指定する。これをDTC起動要因が発生する毎にブロック転送カウントレジスタBTCRで指定された回数だけ、繰り返す。ブロック転送カウントレジスタBTCRで指定された回数のデータ転送が終了すると、データトランスファコントローラDTC動作が禁止され、起動要因となった割込が中央処理装置CPUに要求される。
【0040】
MD1、MD0ビットを”1”にセットすることはシステム予約とされ、禁止されている。
【0041】
ビット9はDTSビットであり、リピートモードまたはブロック転送モードのとき、ソース側、デスティネーション側のいずれをリピート領域またはブロック領域とするかを選択する。
【0042】
ビット8はSZ(サイズ)ビットであり、1回のデータ転送をバイトサイズで行なうか、ワードサイズで行なうかを選択する。SZビットを”0”にクリアするとバイトサイズ、”1”にセットするとワードサイズのデータ転送が行なわれる。なお、ワードサイズは2バイトである。
【0043】
ビット7はNXTEビットであり、1つの起動要因に対してデータ転送を終了するか、継続して次のデータ転送を行なうか、を選択する。NXTEビットを”0”にクリアするとランダムアクセスメモリRAMDからのレジスタ情報(レジスタファイル)のリード及びデータ転送後、レジスタファイルをライトし、データトランスファコントローラDTCの動作を終了する。NXTEビットを”1”にセットした状態では、レジスタファイルのリード及びデータ転送後、レジスタファイルをライトして、更に、連続した次のアドレスからレジスタファイルをリードして、このレジスタファイルに指定したデータ転送を行ない、レジスタファイルをライトする。
【0044】
図9にはデータトランスファコントローラDTCの各種転送モードにおけるレジスタの機能が示される。ノーマルモードでは、ソースアドレスレジスタSARを転送元アドレス指定レジスタ、ディスティネーションアドレスレジスタDARを転送先アドレス指定レジスタ、転送カウンタレジスタTCRの16ビットを転送カウントレジスタとして使用する。ブロック転送カウントレジスタBTCRは使用されない。ノーマルモードにおいては転送カウントレジスタTCRの値が0になるまで、転送要求を受け付ける。
【0045】
リピートモードでは、ソースアドレスレジスタSARを転送元アドレス指定レジスタ、ディスティネーションアドレスレジスタDARを転送先アドレス指定レジスタとして使用する。このとき、DTSビットが”0”にクリアされていれば、転送先がリピート領域とされ、DTSビットが”1”にセットされていれば、転送元がリピート領域とされる。このとき転送カウントレジスタ上位TCRHの8ビットが転送カウントレジスタ、転送カウントレジスタ下位TCRLが転送回数保持(転送回数の初期値保持)レジスタとして使用される。レジスタTCRHとTCRLには、初期設定時に、同じ値が設定される。レジスタTCRHの値が0になると、レジスタTCRLの内容がレジスタTCRHに転送され、SARまたはDARの初期設定時の値が回復される。すなわち、DTSビットが”1”にクリアされているとき、SAR−SM1・((−1)^SM0)・2^SZ・TCRLの演算が行なわれ、SARの初期設定時の値が回復される。また、DTSビットが”0”にセットされているとき(転送元がリピート領域)、DAR−DM1・((−1)^DM0)・2^SZ・TCRLの演算が行なわれ(記号^はべき乗を意味する)、DARの初期設定時の値が回復される。BTCRは使用しない。中央処理装置CPUが、割込を禁止するか、データトランスファコントローラDTCの動作を禁止するまで、転送要求を受け付ける。
【0046】
ブロック転送モードでは、ソースアドレスレジスタSARを転送元アドレス指定レジスタ、ディスティネーションアドレスレジスタDARを転送先アドレス指定レジスタ、転送カウントレジスタ上位TCRHの8ビットをブロックサイズカウントレジスタ、転送カウントレジスタ下位TCRLをブロックサイズ保持レジスタ、ブロック転送カウントレジスタBTCRをブロック転送カウントレジスタとして使用する。このとき、DTSビットが”0”にクリアされていれば、転送先がブロック領域とされ、DTSビットが”1”にセットされていれば、転送元がブロック領域とされる。1回の転送要求で、TCRHが0になるまで転送する。TCRHが0になると、BTCRをデクリメントし、TCRLの内容がTCRHに転送され、SARまたはDARの初期設定時の値が回復される。例えばDTSビットが”1”にクリアされているとき、SAR−SM1・((−1)^SM0)・2^Sz・TCRLの演算が行なわれる。また、DTSビットが”0”にセットされているとき、DAR−DM1・((−1)^DM0)・2^Sz・TCRLの演算が行なわれる。ブロック転送モードではブロック転送カウントレジスタBTCRの値が0になるまで、転送要求を受け付ける。
【0047】
リピートモード、ブロック転送モードのデータ転送動作の内容については、前記平成5年3月(株)日立製作所発行『H8/3003 ハードウェアマニュアル』に記載の内容と概略同様である。但し、本発明ではリピートモードのとき、アドレス指定レジスタ(SAR、DAR)のビット数を拡張し、アドレス空間の全領域を使用可能としている。
【0048】
図10にはデータトランスファコントローラDTCのブロック図が示される。データトランスファコントローラDTCは、制御回路DTCCONT、データバッファDB(DB7-0、DB15-8、DB16-23、DB24-31)、アドレスバッファAB(AB0-7、AB8-15、AB16-23、AB24-31)、バスインタフェースMIF(MIF0-7、MIF8-15、MIF16-23、MIF24-31)、モードレジスタDTMR(DTMRL,DTMRH)、ブロック転送カウントレジスタBTCR(BTCRL,BTCRH)、転送カウントレジスタTCR(TCRL,TCRH)、ディスティネーションアドレスレジスタDAR(DAR0-7、DAR8-15、DAR16-23、DAR24-31)、ソースアドレスレジスタSAR(SAR0-7、SAR8-15、SAR16-23、SAR24-31)、ベクタアドレスレジスタVAR(VAR0-7、VAR8-15、VAR16-23、VAR24-31)、算術演算回路AU(AU0-7、AU8-15、AU16-23、AU24-31)、セレクタSEL、シフタSFT、ベクタアドレス生成回路VAG(VAG0-7、VAG8-15、VAG16-23、VAG24-31)、アドレスデコード回路DEC(DEC0-7、DEC9-15,DEC16-23、DEC24-31)の各回路ブロックから成る。これらの回路ブロックは、Aバス(A−BUS)、Bバス(B−BUS)、Cバス(C−BUS)、インタフェースバスの4本の内部バスによって結合されている。インタフェースバスはデータバッファDBとバスインタフェースMIFとを接続するバスである。Aバス(A−BUS)はレジスタからデータバッファDBなどへのリードバスとされ、Bバス(B−BUS)はデータバッファDBなどからレジスタへのライトバスとされる。
【0049】
制御回路DTCCONTは、割込コントローラIRCONTの出力するDTC起動要求信号801が活性状態になると、動作を開始し、そのほかの各部の動作を制御する。また、内部バスIAB、IDBを使用する場合、バス権の要求を行なって、バスコントローラBSCONTの出力するバス権アクノリッジ信号が活性状態であるのを確認して、リード/ライト動作を行なう。リード/ライト動作を示すリード信号、ライト信号、データサイズ信号を出力する。バスの動作状態に応じて、ウェイト信号・データストローブ信号を入力して、動作する。
【0050】
内部バスIAB,IDB又はDTAB,DTDBの何れのバスを使用するか、即ちランダムアクセスメモリRAMDをリード/ライトするかを判定するためのアドレスデコード回路DECを有している。アドレスデコード回路DECはAバス(A−BUS)からアドレスを入力し、それに対するアドレスデコードを行なう。
【0051】
内部バスIAB,IDBを使用する場合、即ちランダムアクセスメモリRAMD以外をリード/ライトする場合、バスコントローラBSCONTにバス権を要求して、バスの使用が許可されればリード/ライト動作を行なう。データトランスファコントローラDTCがDTC専用バスDTAB,DTDBを使用する場合、即ちランダムアクセスメモリRAMDをリード/ライトする場合、当該バスの使用を要求するための信号DTBRQを活性状態にする。ランダムアクセスメモリRAMDのリード/ライトは1ステートで行なわれ、ランダムアクセスメモリRAMDに対するリードはデータトランスファコントローラDTCが優先されるので、直ちにそれに対する応答信号DTBAKが活性状態になり、次のステートからランダムアクセスメモリRAMDのリード/ライト動作が可能にされる。
【0052】
また、転送動作は、モードレジスタDTMRの保持する内容に従って、制御される。所定の動作終了時に転送終了信号、要因クリア信号、DTEクリア信号を割込コントローラIRCONTに出力する。かかる転送終了信号とベクタ番号に応じて、割込コントローラIRCONTは要因クリア信号などを出力する。特に制限はされないものの、割込コントローラIRCONTは起動要求を活性状態にしてから、転送終了信号が活性状態になるまでの期間、ベクタ番号を保持するようにされる。
【0053】
アドレスバッファABは、アドレス空間が4Gバイトであるのに対応して、32ビット構成であり、Aバス(A−BUS)からデータを入力し、データトランスファコントローラDTCのリード/ライトするアドレスを保持し、アドレスバスIAB,DTABに出力する。内部アドレスバスIABには32ビットのアドレスが出力されるが、専用アドレスバスDTABには16ビットのアドレスのみ出力される。ランダムアクセスメモリRAMDには容量に対応したビット数、即ち、1kバイトの場合10ビットが与えられる。尚、データトランスファコントローラDTCがバス権を獲得していない場合、アドレスバッファABの内部バスIABに対する出力はハイインピーダンス状態とされる。また、ビット1には反転回路を含む。これはロングワードサイズアクセスを16ビット構成のデータバスIDBなどに対して行う場合に、ワードサイズアクセスを2回行うことになり、この2回目のアクセス時にアドレスのビット1を反転するためである。
【0054】
データバッファDBは32ビット構成であり、データバスIDB及びDTDBと接続され、データトランスファコントローラDTCがリード/ライトするデータを格納する。データバッファDBは専用データバスDTDBとは32ビットで接続され、内部バスIDBには16ビットで接続される。データバッファDBは、バスインタフェースMIFを介して、データトランスファコントローラDTCの内部回路と接続されている。
【0055】
DTMR、BTCR、TCR、DAR、SAR、VARの各レジスタの機能は前記の通りである。Bバス(B−BUS)からデータを入力して、Aバス(A−BUS)に出力する。レジスタTCRLは、更にCバス(C−BUS)にデータを出力し、レジスタTCRHは、更にCバスからデータを入力する。
【0056】
算術演算回路AUは加減算処理を行なう。一方の入力はAバス(A−BUS)、他方の入力はシフタSFTの出力である。ただし上位ビット(AU16-23、AU24-31)はシフタの出力は”0”とみなされる。算術演算回路AUの演算結果はBバス(B−BUS)に出力される。
【0057】
シフタSFTは、セレクタSELの出力を入力し、1ビット及び2ビットの左(上位)方向へのシフトを可能とする。1ビットのシフトは、×2の処理と等価であり、ワードサイズの転送を可能としていることに対応する。同様に2ビットのシフトは、×4の処理と等価であり、RAMDとの間でロングワードサイズの転送を可能としていることに対応する。セレクタSELは、Cバス(C−BUS)の内容を入力し、図示はされない定数値”1”との選択を行なって、出力する。+2の演算は、セレクタSELが定数値”1”を出力し、シフタSFTで×2とし、算術演算器AUでAバス(A−BUS)の内容と加算を行う。
【0058】
リピートモード、ブロック転送モードのとき、レジスタTCRHの値が0になると、そのときレジスタTCRHの初期値を保持するレジスタTCRLの内容がCバスに出力され、レジスタTCRHに転送されると共に、セレクタSELを経由して、シフタSFTに入力される。サイズビットSZが”1”にセットされているとき(データサイズ=ワードサイズ)、シフトが行なわれ、サイズビットSZが”0”にクリアされているとき、そのまま算術演算器AUに入力される。この値は、(2^SZ)・TCRLで表現される。
【0059】
それと共に、算術演算器AUにはAバスを経由して、レジスタSAR又はレジスタDARの内容が入力される。DTSビットが”0”にクリアされているとき、レジスタDARが選択され、DTSビットが”1”にセットされているとき、レジスタSARが選択される。また、算術演算器AUの演算は、加算又は減算又はAバスの内容出力とされる。これは、SM1、SM0、またはDM1、DM0ビットの内容によって選択される。DTSビットが”0”にクリアされているとき、DM1、DM0ビットが選択され、DTSビットが”1”にセットされているとき、SM1、SM0ビットが選択される。SM1またはDM1ビットが”0”にクリアされている場合、算術演算器AUはAバスの内容出力とされる。SM1ビットが”1”にセットされ、SM0ビットが”0”にクリアされている場合またはDM1ビットが”1”にセットされ、DM0ビットが”0”にクリアされている場合(インクリメントを指定した場合)、算術演算器AUは減算とされる。SM1、SM0ビットがいずれも”1”にセットされている場合またはDM1、DM0ビットビットがいずれも”1”にセットされている場合(デクリメントを指定した場合)、算術演算器AUは加算とされる。この演算は、DTSビットが”0”にクリアされている場合、−DM1・((−1)^DM0)、DTSビットが”1”にセットされている場合、−SM1・((−1)^SM0)と表現される。すなわち、リピートモード又はブロック転送モードにおいて、1回のリピート又はブロック転送が終わったとき、リピート領域又はブロック領域側のレジスタSAR又はDARの値を回復させる演算は、次の通りとされる。DTSビットが”0”にクリアされている場合、DAR−DM1・((−1)^DM0)・(2^SZ)・TCRL、の演算が行なわれ、DTSビットが”1”にセットされている場合、SAR−SM1・((−1)^SM0)・(2^SZ)・TCRLの演算が行なわれる。
【0060】
ベクタアドレス生成回路VAGは、割込コントローラIRCONTの出力するベクタ番号を入力して、DTCベクタアドレス(DTCベクタ先頭アドレス)を生成する。上位24ビットはH’FFFFFCとし、下位8ビットには、ベクタ番号を2ビット左(上位)方向へシフトして入力するものである。最下位2ビットは”0”に固定されている。
【0061】
図11にはデータトランスファコントローラDTCのレジスタVAR,DTMR,BTCR,TCR,SAR,DARにベクタ方式で転送されるべきデータ転送制御情報(レジスタ情報)のメモリ上での構成例が示される。ベクタアドレスレジスタVARに格納すべき情報は起動要因毎に固有のDTCベクタ先頭アドレスに格納されている。レジスタVARに格納されるべきアドレスによって指定される領域には、DTMR、BTCR、TCRH、TCRL、SAR、及びDARの各レジスタへロードすべき情報が保有され、その領域は、予約領域を含み、アドレスm〜m+15の連続した領域とされる。
【0062】
データトランスファコントローラDTCが起動されると、起動要因に固有のDTCベクタ番号から得られるDTCベクタ先頭アドレスによって指し示される領域の情報がベクタアドレスレジスタVARに読み出される。次に、ベクタアドレスレジスタVARにロードされたアドレスを先頭アドレスとして、これを順次インクリメントしながらモードレジスタDTMRへロードすべき情報から順次読み出されてデータトランスファコントローラDTC内部のレジスタDTMRなどへ順次レジスタ情報が書き込まれる。そのようなレジスタ情報ロードのための読み出し終了時には、データトランスファコントローラDTC内のレジスタVARは初期値(m)を保持している。即ち、上記ベクタアドレスレジスタVARの内容のインクリメント動作は実際にはVARを利用することなく、最後に書込みが行われるDARをテンポラリレジスタとして利用しているからである。DTCの内部レジスタに設定された転送制御情報にてデータ転送が行われると、その後は、ベクタアドレスレジスタVARの内容をインクリメントしつつ、モードレジスタDTMRの内容を順次元のメモリ上のアドレスに書き戻す。書き込み終了時には、データトランスファコントローラDTC内のベクタアドレスレジスタVARは最後のアドレスの次のアドレス(m+16)を保持している。なお、各レジスタは16ビットを単位としており、内部バスは16ビット構成とされるために、前記インクリメントは+2とされる。
【0063】
モードレジスタDTMRのNXTEビットを”1”にセットすると、1つの転送が終了後、それに続けて次のデータ転送を行なう。当該次のデータ転送のレジスタ情報は、先のデータ転送に係るレジスタ情報の格納アドレスに連続したアドレスに保持されている情報とされ、前記同様に、レジスタDTMR、BTCR、TCR、SAR、DARに対する情報の順序で、アドレスm+16〜m+31に配置される。斯るレジスタ情報の読み込みには先のデータ転送に係るレジスタVARの値を先頭アドレスとして行えばよい。当該後続のデータ転送におけるレジスタDTMRのNXTEビットを”1”にセットすると、更に次のレジスタが配置される。同様に、DTMRのNXTEビットを”0”にクリアしたものまで、次のレジスタが配置されることになる。
【0064】
図11に示されるようにデータトランスファコントローラDTCの内部レジスタ1セット分の転送制御情報を格納するレジスタファイルには、16バイトの容量を必要とするため、このレジスタファイルをDTCベクタによって指し示されるベクタアドレスによらず、固定的なベクタアドレスで示すようにすると、DTCを使用しないベクタアドレスには、16バイトのメモリが余ってしまう。或いは、1つの起動要因に、複数のレジスタファイルを割り当てることが困難である。全起動要因に対して、一律に2組などとすると、多くの起動要因は1組で十分なので、1組分のメモリが余ってしまう。また、使用しない起動要因には2組分のメモリが余ってしまう。これらの分散したアドレスに残されたメモリを、そのほかの用途に有効に利用することは困難である。任意組数は使用できなくなってしまい、使用上の制約が発生し、システム構成上の自由度が低下する。本実施例のようにレジスタファイルの所在をベクタアドレスを用いて示すようにしたことで、レジスタファイルを任意のアドレスに配置して、メモリの利用効率を向上することができる。また、1つの起動要因に対応して、任意組数のレジスタを配置し、転送を行うことができる。使用しない起動要因に対しても、余るメモリはベクタアドレス(ベクタアドレスレジスタVARに転送されるアドレス情報)の為の4バイトである。これによって多様な使い方を可能とし、メモリの利用効率を向上することができる。ベクタアドレスをDTCベクタテーブルから読み出す手順が追加されるが、当該DTCベクタテーブルはデータトランスファコントローラDTCと専用バスDTAB,DTDBで直結されたランダムアクセスメモリRAMD上に配置されているため、中央処理装置CPUの動作を停止させずにベクタリング可能であるから、データ処理効率を低下させることは殆どない。
【0065】
図12にはDTC許可レジスタの構成が示される。DTC許可レジスタは、DTERA、DTERB、DTERC、DTERDの4本があり、特に制限はされないが、割込コントローラIRCONTに含まれる。割込要因が発生した場合に、中央処理装置CPUに割込を要求するか、データトランスファコントローラDTCに起動を要求するかを選択する。割込要因に対応して、1ビットが設けられている。これらのビットと割込要因との対応は、図2の通りである。図2に記載のないビット(DTEB1、DTEB0、DTEC5、DTEC4、DTECDTEC1、DTEC0、DTED6、DTED5、DTED4、DTED3、DTED2、DTED1、DTED0ビット)はリザーブビットである。上記DTC許可レジスタは、リセットによって”0”にクリアされ、中央処理装置CPUのライト動作によって、”1”にセットされると、データトランスファコントローラDTCに対する起動要求が許可される。データトランスファコントローラDTCによる転送動作が終了する、即ち、転送カウンタが0になると、対応するDTC許可ビットが”0”にクリアされる。リザーブビットは、特に制限はされないものの、”0”に保持されるものとし、中央処理装置CPUまたはデータトランスファコントローラDTCが”1”をライトすることは禁止されている。
【0066】
図13には割込コントローラIRCONTの概略ブロック図が示される。割込要因には内部割込と外部割込の2種類があり、それぞれ割込要因フラグを有する。夫々の割り込み要因フラグは割り込み要因フラグ回路11が保有する。内部割込の要因フラグは、タイマTMR、シリアルコミュニケーションインタフェースSCI、A/D変換器ADCの入出力回路が所定の状態になったとき”1”にセットされる。外部割込の要因フラグは、外部割込入力端子が所定のレベルになったとき、または、所定の信号変化が発生したとき、”1”にセットされる。割込要因フラグは、中央処理装置CPUのライト動作によって”0”にクリアされるほか、データトランスファコントローラDTCによる転送が終了したときに”0”にクリアされる。
【0067】
割込要因フラグ回路10の各割り込み要因フラグのビット出力は、割込許可回路11に入力される。割込許可回路11には、更に割込許可レジスタ(図示せず)の内容、すなわち割込許可ビットが入力される。割込許可レジスタは、中央処理装置CPUからリード/ライト可能なレジスタで、対応する割込を許可するか、禁止するかを選択する。割込要因フラグが”1”にセットされ、割込許可ビットが”1”にセットされていると、割込が要求される。すなわち、割込許可回路11は、対応する割込要因フラグと割込許可ビットとを入力とした論理積回路で構成される。
【0068】
割込許可回路11の出力は、割込/DTC判定回路12に入力される。割込許可回路11には、更に上記DTC許可レジスタDTER(レジスタDTERA〜DTERDの総称)の内容が入力される。前記の通り、DTC許可レジスタDTERは、割込が要求されたとき、データトランスファコントローラDTCを起動するか、中央処理装置CPUに割込を許可するかを選択する。DTC許可レジスタDTERのDTC許可ビットが”1”にセットされていると、データトランスファコントローラDTCの起動が要求され、中央処理CPUの割込は要求されない。DTC許可レジスタDTERのDTC許可ビットが”0”にクリアされていると、中央処理装置CPUの割込が要求され、データトランスファコントローラDTCの起動は要求されない。すなわち、割込/DTC判定回路12は、対応する割込信号とDTC許可ビットの論理積回路、及び割込信号とDTC許可ビットの反転信号の論理積回路で構成される。前者の論理積回路の出力がDTC起動要求信号801とされ、後者の論理積回路の出力が中央処理装置CPUへの割込要求信号701とされる。
【0069】
割込/DTC判定回路12の出力は、中央処理装置CPUへの割込要求とデータトランスファコントローラへDTCへの起動要求が独立に、優先順位判定回路13に入力される。優先順位判定回路13には、更にプライオリティレジスタ14の出力が入力される。プライオリティレジスタ14は割込要因のグループ毎に、例えば、2レベルの優先順位を設定する。優先順位判定回路13は、CPU割込要求、DTC起動要求のそれぞれについて優先順位を判定する。判定結果、優先順位の最高のものが選択され、ベクタ番号が生成され、CPU割込要求、DTC起動要求のそれぞれの要求信号701,801とベクタ番号702,802が出力される。尚、CPU割込要求信号701、ベクタ番号702はマスクレベル判定回路15を介して生成される。マスクレベル判定回路15には、更に中央処理装置CPUの割込マスクビットが入力される。要求された割込が中央処理装置CPUの割込マスクレベル以下であれば、割り込み要求は保留されるようになっている。
【0070】
中央処理装置CPUに対する割込要求信号701が活性状態になると、中央処理装置CPUは実行中の命令の終了時点で、割込例外処理を開始し、ベクタ番号702に対応するベクタアドレスから、分岐先アドレスを取り出し、割込処理ルーチンへ分岐する。斯る優先順位判定や割込マスクレベルについては、前記平成5年3月(株)日立製作所発行『H8/3003 ハードウェアマニュアル』などによって公知であるので、詳細な説明は省略する。
【0071】
DTC起動要求801はデータトランスファコントローラDTCに入力される。DTCベクタ番号802はラッチ回路16を介して生成される。DTC起動信号803及びDTC転送終了信号804がデータトランスファコントローラDTCから出力され、ラッチ回路16に入力される。データトランスファコントローラDTCが動作を開始すると、DTC起動信号803が活性状態になり、ラッチ回路16はDTCベクタ番号802をラッチする。DTCのデータ転送が終了して、DTC転送終了信号804が活性状態になると、ラッチ回路16のラッチ動作は解除される。従って、DTC動作中は、ラッチ回路16の出力するDTCベクタ番号802は保持される。また、DTCベクタ番号802とDTC転送終了信号804はデコーダ17に入力される。対応する割込要因フラグに対して要因クリア信号が活性状態になって、要因フラグまたはDTEビットがクリアされる。特に制限はされないものの、割込要因フラグ回路10、割込許可ビット、割込許可回路11は、各入出力回路に内蔵されている。割込コントローラIRCONTに有するようにしてもよい。
【0072】
図14にはランダムアクセスメモリRAMDの概略ブロック図が示される。ランダムアクセスメモリRAMDは32ビット(ロングワード)構成である。バイト、ワード、ロングワードのリード/ライトを行なうことができる。中央処理装置CPUから内部バスIAB・IDBを使用してリード/ライトする場合には、バイト又はワードのリード/ライトを可能とし、データトランスファコントローラDTCからバスDTAB,DTDBを使用してリード/ライトする場合には、バイト、ワード、又はロングワード何れによってもリード/ライトを可能とする。なお、ワードは偶数番地から、ロングワードは4の倍数番地から始まるデータに限定される。これによって、これらのバイト、ワード、ロングワードのデータは必ずランダムアクセスメモリRAMDの同一列上に配置されるようにし、1回の動作でリード/ライトが可能とされている。ランダムアクセスメモリRAMDのリード/ライトの基本動作は1ステートである。
【0073】
ランダムアクセスメモリRAMDは、メモリアレイ20、アドレスデコーダ21、入出力回路22、及び制御回路23から成るRAM部分、アドレス選択回路24、制御信号選択回路25、そしてデータ選択回路26から構成される。アドレス信号(IAB、DTAB)、モジュール選択信号、リード信号、ライト信号(ICNT、DTCNT)を入力し、データ(IDB、DTADB)を入出力する。メモリアレイはデータを記憶する記憶素子をマトリックス状に配置して成る。アドレスデコーダ21は、入力したアドレス信号を解読して、メモリアレイ上の1列乃至は1ロングワードを選択する。入出力回路22は、指定されたアドレスに相当するメモリ記憶素子とデータバスとの間の入出力を行なう。所謂センスアンプなどを含んでなる。制御信号(ICNT、DTCNT)に基づいてリード/ライトの選択を行なう。
【0074】
アドレスはランダムアクセスメモリRAMDの容量に対応して、10ビットが与えられる。アドレスデコーダ21の入力は、DTAB又はIABの何れか一方が、アドレス選択回路24で、選択信号DTBAKに基づき選択される。同様に、制御信号も、モジュール選択信号、リード信号、ライト信号を含む制御信号ICNT又はDTCNTの何れか一方が、制御信号選択回路25で、選択信号DTBAKに基づき選択される。データ選択回路26は16ビットのデータバスIDB又は32ビットのデータバスDTDBの何れか一方を選択したり、32ビットのRAMデータと、16ビットのデータバスIDBとの間のアライメントを行ったりする。
【0075】
データトランスファコントローラDTCがバスDTAB,DTDBを使用してランダムアクセスメモリRAMDのリード/ライトを行なう場合、まず、信号DTBRQを活性状態にする。この信号DTBRQが活性状態になると、次のステートでDTBAK信号を活性状態にして、DTAB,DTDB及びこれに対応するモジュール選択信号(DTMS)、リード信号(DTRD)、ライト信号(DTWR)を有効にして動作する。DTMS、DTRD、DTWR及びデータサイズ信号をまとめてDTCNTと表記する。また、DTBAK信号をバスコントローラBSCONTに与えて、バスIAB,IDBを使用したランダムアクセスメモリRAMDのリード/ライトは待機状態にする。中央処理装置CPUにはウェイト信号を与える。DTBAK信号が活性状態の場合、データは入出力回路22を介してバスDTDBと入出力される。この場合のデータサイズは、ロングワードサイズ(32ビット)とされる。
【0076】
データトランスファコントローラDTCがバスDTAB,DTDBを使用したランダムアクセスメモリRAMDのリード/ライトを終了する場合、最後のリード/ライトサイクルで信号DTBRQを非活性状態にする。この信号が非活性状態になると、次のステートでDTBAK信号を非活性状態にして、バスIAB,IDB及びこれに対応するモジュール選択信号(IMS)、リード信号(IRD)、ライト信号(IWR)を有効にして動作する。IMS、IRD、IWR及びデータサイズ信号をまとめてICNTと表記する。また、DTBAK信号をバスコントローラBSCONTに与えて、バスIAB,IDBを使用したランダムアクセスメモリRAMDのリード/ライトを許可状態にする。DTBAK信号が非活性状態のとき、データ選択回路26が有効であり、バイトサイズ、ワードサイズの選択を行なってIABとの入出力を行なう。例えば、ワードサイズの場合は、16ビットのIDBを用い、偶数アドレスが上位8ビット、奇数アドレスが下位8ビットに対応する。バイトサイズの場合は、偶数アドレス・奇数アドレス共に、IDBの上位8ビットを用いるようにされる。
【0077】
ランダムアクセスメモリRAMDのリード/ライトが1ステートを単位にしているため、調停を容易に行なうことができる。中央処理装置CPUがランダムアクセスメモリRAMDをリード/ライト中であっても、データトランスファコントローラDTCがランダムアクセスメモリRAMDのリード/ライト要求を行なうと、次の中央処理装置CPUのリード/ライトは保留させて、データトランスファコントローラDTCを待たせることなく、次のステートからデータトランスファコントローラDTCの動作を許可することができる。ランダムアクセスメモリRAMDのロングワードのリード/ライトを可能にしたことにより、ベクタのリード、レジスタのリード/ライトを高速化し、更には、転送要求が発生してから、転送を実行するまでの時間すなわち応答時間を短縮し、性能向上を実現することができる。また、CPUのリード/ライトを保留にさせる時間も短縮し、マイクロコンピュータ全体の性能向上を実現することができる。
【0078】
中央処理装置CPUのランダムアクセスメモリRAMDのリード/ライトが、データトランスファコントローラDTCのランダムアクセスメモリRAMDのリード/ライトと競合すると、中央処理装置CPUはバス権を保持したまま、リード/ライトを開始する。中央処理装置CPUにはウェイトが要求されて、データトランスファコントローラDTCのリード/ライトが終了するまで、待機状態とされる。ウェイトされたリード/ライトの実際の動作は、データトランスファコントローラDTCのリード/ライトが終了後に行なわれる。
【0079】
データトランスファコントローラDTCとランダムアクセスメモリRAMDの間のデータバスDTDBのみ32ビット幅、中央処理装置CPUとランダムアクセスメモリRAMDの間などのデータバスIDBは16ビット幅であるので、データトランスファコントローラDTCとランダムアクセスメモリRAMDを物理的な配置を近くにすることによって、配線領域を小さくすることができ、物理的規模ひいては製造費用を低減することができる。更には、データトランスファコントローラDTCとランダムアクセスメモリRAMDを一体にしたモジュール乃至は機能ブロックを形成してもよい。
【0080】
図15にはランダムアクセスメモリRAMD,RAMC、及びデータトランスファコントローラDTCの概略ブロック図が示される。図14に対して、データ選択回路26は削除され、アドレス選択回路24及び制御信号選択回路25は省略されている。図15においてメモリアレイ30及び入出力回路31がランダムアクセスメモリRAMDに相当し、メモリアレイ32及び入出力回路33がRAMCに相当する。アドレスデコーダ34は双方のメモリアレイ30,32に共通化されている。データトランスファコントローラDTCとランダムアクセスメモリRAMDとの間のDTDB(31:0)が専用信号として局在されている。これらのランダムアクセスメモリRAMD、RAMC、及びDTCを一体の機能ブロック乃至はモジュールとして構成すると、都合がよい。この場合、ランダムアクセスメモリRAMDのビット幅と、DTCの実行部35のビット幅では、DTCのビット幅が大きくなると考えられ、さらに制御回路36も付加されるために、データトランスファコントローラDTCの方がビット線方向(図の上下方向)に広くなってしまう。ランダムアクセスメモリRAMDとRAMCを含めて一体化することによって、自由度が向上する。例えば、レイアウト的に、長方形を構成し易くなり、ひいては、半導体集積回路全体のレイアウトがし易くなる。
【0081】
RAMCとRAMDのアドレスデコーダを共通化することにより、論理的、物理的規模を縮小できる。中央処理装置CPUのRAMCのアクセスとデータトランスファコントローラDTCのRAMDのアクセスを並列的に行うことができないが、中央処理装置CPUのデータアクセスの頻度が、命令フェッチの頻度に比較して小さいと、データトランスファコントローラDTCによるRAMDのアクセスが高速であるため、性能をさほど低下させずに、規模の縮小を図ることができる。
【0082】
前記の通り、メモリマット30,32は32ビット(ロングワード)以上で構成されている。これを入出力回路31,33で選択して入出力する。バイト,ワード,ロングワードのリード/ライトを行なうことができる。中央処理装置CPUからIAB,IDB(15:0)を使用してリード/ライトする場合にはバイト,ワードのリード/ライトを可能とし、データトランスファコントローラDTCからDTAB(31:0)を使用してリード/ライトする場合には、バイト,ワード,ロングワードのリード/ライトを可能とする。なお、ワードは偶数番地から、ロングワードは4の倍数番地から始まるデータに限定する。これによって、これらのバイト,ワード,ロングワードのデータは必ずランダムアクセスメモリRAMDの同一列上に配置されるようにし、1回の動作でリード/ライトが可能とされている。尚、図15の機能ブロックまたはモジュールの他に、更に別のランダムアクセスメモリを設けることも可能である。
【0083】
図16にはバスコントローラBSCONTの概略ブロック図が示される。バスコントローラBSCONTは、データバッファ回路40、アドレスバスバッファ回路41、アドレス判定回路42、バス権調停回路43、RAMDバス権制御回路44、選択回路45、タイミング制御回路46から成る。中央処理装置CPUはCPUバス権要求信号、CPU制御信号(CPUリード要求信号、CPUライト要求信号、データサイズ信号)及びIABを出力し、CPUバス権許可信号、CPUウェイト信号(CPUWAIT)を入力して動作する。同様に、データトランスファコントローラDTCは、ランダムアクセスメモリRAMD以外をリード/ライトする場合に、DTCバス権要求信号、DTC制御信号(DTCリード要求信号、DTCライト要求信号、データサイズ信号)及びIABを出力し、DTCバス権許可信号を入力して動作する。
【0084】
データトランスファコントローラDTCは、ランダムアクセスメモリRAMDをリード/ライトする場合には、RAMD要求信号(DTBRQ)を出力し、RAMDアクノリッジ信号(DTBAK)を入力して動作する。ランダムアクセスメモリRAMDのリード/ライトは1ステートで実行され、かつデータトランスファコントローラDTCのリード/ライトが優先されるので、DTBRQが活性状態になると、次のリード/ライトサイクルではDTBAKが活性状態になってデータトランスファコントローラDTCによるランダムアクセスメモリRAMDのリード/ライトが許可される。また、データトランスファコントローラDTCがランダムアクセスメモリRAMD以外をリード/ライトする場合には、DTCバス権要求信号を活性状態にする。所定のタイミングでDTCバス権許可信号が活性状態になると、IABにアドレスを出力し、DTCバス制御信号を出力し、これに基づき、タイミング制御回路46の制御によってリード/ライトを行なう。
【0085】
バス権調停回路43は、中央処理装置CPUまたはデータトランスファコントローラDTCの何れか一方がバスIAB,IDBを使用したバス権を要求した場合、CPUバス権許可信号又はDTCバス権許可信号を活性状態にして、バス権を与える。中央処理装置CPU及びデータトランスファコントローラDTCが、バス権を与えられていない場合には内部アドレスバスIABをハイインピーダンス状態にする。中央処理装置CPU及びデータトランスファコントローラDTCの両方がバス権を要求した場合、アドレスの判定とバス権の調停を行ない、データトランスファコントローラDTCにバス権を与える。データトランスファコントローラDTCがバス権を放棄するまで、中央処理装置CPUは待機状態とされる。バス権を与えられたバスマスタ(CPUまたはDTC)がバスIAB,IDBを使用する。バス権を持っていないバスマスタ(CPUまたはDTC)はバスIAB,IDBをハイインピーダンス状態とする。中央処理装置CPUが内部アドレスバスIABに出力したアドレスが、ランダムアクセスメモリRAMDに相当する場合、DTBAK信号が活性状態であり、データトランスファコントローラDTCがランダムアクセスメモリRAMDをリード/ライトしている場合には、CPUウェイト信号(CPUWAIT)が活性状態になり、データトランスファコントローラDTCによるランダムアクセスメモリRAMDのリード/ライトが終了するまで、中央処理装置CPUはウェイト状態とされる。
【0086】
選択回路45は中央処理装置CPU及びデータトランスファコントローラDTCの出力するバス制御信号(リード要求信号、ライト要求信号、データサイズ信号)を、バス権調停回路43の指示に基づいて選択し、タイミング制御回路46に与える。すなわち、DTCバス権許可信号がイネーブルレベル(活性化レベル)であれば、データトランスファコントローラDTCからのバス制御信号をタイミング制御回路46に与え、それ以外は中央処理装置CPUからのバス制御信号をタイミング制御回路46に与える。中央処理装置CPU及びデータトランスファコントローラDTCの何れかがバス権を有しても、バスコントローラBSCONTの内部のタイミング制御回路46などの動作は同一である。
【0087】
アドレス判定回路42は中央処理装置CPUまたはデータトランスファコントローラDTCが出力したアドレス(IAB)が、いずれのエリアに相当するかをデコードする。データバッファ回路40及びアドレスバッファ回路41の制御はタイミング制御回路46が行なう。
【0088】
タイミング制御回路46は、選択回路45の出力に基づいて、バスサイクルを生成し、内部及び外部のバス制御信号を出力する。IDB側のみ、またはIDB側,PDB側で、リードまたはライトのバスサイクルが起動される。前記アドレス判定回路42で判定した結果によって相違される。対象の機能ブロックまたはモジュールがIDB側に接続されていればIDB側のみを使用する。この場合、アドレスバッファ回路41及びデータバッファ回路40は解放(オフ)状態となる。また、対象の機能ブロックまたはモジュールがPDB側に接続されていればIDB側,PDB側を使用する。この場合、アドレスバッファ回路41はIABの内容をPABに出力する。リード時にはPDBからIDBへのバッファがオン状態になり、また、ライト時にはIDBからPDBへのバッファがオン状態になる。その他に、タイミング制御回路46は、中央処理装置CPU又はデータトランスファコントローラDTCの図示されないデータストローブ信号またはデータバッファ回路40に対する図示されない制御信号なども出力する。
【0089】
図17にはデータトランスファコントローラDTCの全体的な動作フローチャートが示される。中央処理装置CPUは予め、ランダムアクセスメモリRAMD上のDTCベクタテーブルに、レジスタファイルの先頭アドレス(m)をライトし、かかるアドレス(m)を先頭とする領域にレジスタファイルの初期値をライトする。その後、割込要因の許可ビットを”1”にセットし、DTC許可ビットを”1”にセットする。
【0090】
DTC許可ビットが”1”にセットされた状態で、所定の割込要求が発生して、データトランスファコントローラDTCが起動されると、まず、ステップS1で、起動要因に対応した、ベクタアドレスから、ベクタアドレスレジスタVARに格納すべき内容をリードし、データトランスファコントローラDTC内部の所定のレジスタに格納する。リード後、1ステートの待機状態または内部処理状態となる。
【0091】
ステップS2では、ベクタアドレスレジスタVARの内容で示されるアドレスから、モードレジスタDTMR、ブロック転送カウントレジスタBTCR、転送カウントレジスタTCR、ソースアドレスレジスタSAR、デスティネーションアドレスレジスタDARに設定すべき情報を順次リードし、それらがデータトランスファコントローラDTC内部の所定のレジスタに格納される。リード後、前記同様に、1ステートの待機状態または内部処理状態となる。
【0092】
ステップS3においては、上記ステップS2でレジスタにロードされた内容に従って、データ転送が行なわれる。これに伴って、ソースアドレス又はディスティネーションアドレスなどのレジスタの内容が更新される。ノーマルモード及びリピートモードでは、1回のデータ転送が行なわれる。ブロック転送モードでは、レジスタTCRH及びTCRLで指定された回数の転送が行なわれる。データ転送後、前記同様に、1ステートの待機状態または内部処理状態となる。
【0093】
ステップS4では、データトランスファコントローラDTC内部のレジスタの内容を、元のメモリ上のアドレスに格納する。このとき、NXTEビットが”1”にセットされていると、ステップS2に戻り、次のメモリアドレス上から次のレジスタ情報をリードして順次レジスタDTMR、BTCR、TCR、SAR、DARにロードし、前記動作を繰り返す。NXTEビットが”0”にクリアされていると、データトランスファコントローラDTCの動作は停止する。転送カウンタの内容が0でなければ、要因クリア信号を活性状態にし、割込コントローラIRCONTを介して割込要因フラグを”0”にクリアする。転送カウンタの内容が0のとき、割込要因のクリアは行なわず、DTC許可ビットを”0”にクリアする。なお、転送カウンタは、ノーマルモードのときTCR、リピートモードのときTCRH、ブロック転送モードのとき、BTCRが用いられる。データトランスファコントローラDTCの動作停止後、DTC許可ビットが”0”にクリアされ、割込要因が保持されているため、中央処理装置CPUの割込例外処理が実行され、割込処理ルーチンを実行する。中央処理装置CPUの割込処理ルーチンで、割込要因フラグを”0”にクリアする必要がある。なお、中央処理装置CPUは、データトランスファコントローラDTCによる転送が終了したことを、RAM上に配置されたレジスタ、特に、BTCRまたはTCRをリードし、内容が0であることを確認することによっても知ることができる。
【0094】
データトランスファコントローラDTCの動作中に、中央処理装置CPUがランダムアクセスメモリRAMDをリード/ライトする場合、及びデータトランスファコントローラDTCがランダムアクセスメモリRAMD以外をリード/ライトし、中央処理装置CPUのリード/ライトと競合した場合には、中央処理装置CPUは一旦停止状態になるが、前記の通り、データトランスファコントローラDTCの動作中でも、動作ステップの切れ目でバスを解放するので、中央処理装置CPUが長期間停止状態になることを回避できる。少なくとも、中央処理装置CPUが連続してランダムアクセスメモリRAMDをリード/ライトする場合以外はデータトランスファコントローラDTCの動作ステップの切れ目で、中央処理装置CPUが動作することができる。
【0095】
斯る並列動作を有効に利用するためには、データトランスファコントローラDTCによるデータ転送を、ランダムアクセスメモリRAMDとI/O間で行なうようにするとよい。また、中央処理装置CPUの命令をリードオンリメモリROMに配置し、作業領域をランダムアクセスメモリRAMCに配置するとよい。中央処理装置CPUのバスサイクルでは、命令のリードのほうが、データのリード/ライトよりも頻度が高いため、中央処理装置CPUによるデータトランスファコントローラDTC及びI/Oの初期設定を除けば、データトランスファコントローラDTCの転送終了後に、ランダムアクセスメモリRAMDに蓄積したデータを処理する場合を含めて、中央処理装置CPUによるランダムアクセスメモリRAMD及びI/Oのリード/ライトの頻度を小さくし、処理速度の低下を小さくし、ほぼ、中央処理装置CPUとデータトランスファコントローラDTCが並列動作したものと同等の処理速度とすることができる。従来技術に比較して処理速度を向上できる。
【0096】
図18には図17のステップS1の詳細な動作フローチャートを示す。まず、ステップS101で、割込コントローラIRCONTの出力するDTCベクタ番号に基づいて、起動要因に対応したベクタアドレスをベクタアドレス発生回路VAGが生成する。この内容がAバス(A−BUS)を経由して、アドレスバッファABに入力し、DTABに出力する。DTBRQ信号を活性状態にして、ランダムアクセスメモリRAMDのリードを要求する。ベクタアドレスはランダムアクセスメモリRAMDに固定され、ランダムアクセスメモリRAMDのリードはデータトランスファコントローラDTCが優先されるので、直ちにDTBAK信号が活性状態となり、ステップS102でランダムアクセスメモリRAMDのリードを行なう。データバスDTDBの内容をデータバッファDBに取り込む。DTBRQ信号を非活性状態にして、バス権を放棄する。
【0097】
ステップS103で、データバッファDBの内容をBバスを経由して、ベクタアドレスレジスタVARに格納する。レジスタファイルの次の情報リードのためにバス権を要求する。同時に、レジスタVARの内容(m)をAバスを経由して、アドレスデコーダDEC、アドレスバッファABに入力し、バス権を要求する。即ち、アドレスデコード結果により、アドレスがランダムアクセスメモリRAMDに相当すれば、DTBRQ信号を活性状態にする。また、アドレスがランダムアクセスメモリRAMD以外であればDTCバス権要求信号を活性状態にする。Aバスの内容を算術演算器に取込み、インクリメント(+4)を行なう。このとき、基準クロック信号φに同期したデータバッファDBのBバスからの入力が、クロック信号φ#に同期したAバスへの出力に先行して行なわれる。φ#はφの反転信号である。データバッファDBからBバス(B−BUS)へは、IFバス及びバスインタフェースMIFを介してデータ転送が行われるが、この記述は省略している。なお、レジスタファイルをランダムアクセスメモリRAMDとそれ以外のアドレスにまたがって配置することは禁止される。
【0098】
図19には図17のステップS2でランダムアクセスメモリRAMDをリード(32ビットアクセス)する場合の動作フローチャートが示される。ステップS2では、ステップS103に継続して動作が行なわれる。データトランスファコントローラDTCのランダムアクセスメモリRAMD(m)のリードが優先されるので、直ちにDTBAK信号が活性状態となり、ステップS201aでランダムアクセスメモリRAMDのリードを行なう。データバスDTDBの内容をデータバッファDBに取り込む。インクリメントされた内容をBバス(φ同期)経由でレジスタDARに格納する。更に、ディスティネーションアドレスレジスタDARに格納された、VAR+4の内容(m+4)をAバスを経由して、アドレスバッファABに入力し、アドレスバスDTABに出力する。Aバス(A−BUS)の内容を算術演算器に取込み、インクリメント(+4)を行なう。
【0099】
ステップS202aでランダムアクセスメモリRAMDのリードを行なう。データバスDTDBの内容をデータバッファDBに取り込む。インクリメントされた内容をBバス(φ同期)経由でディスティネーションアドレスレジスタDARに格納する。データバッファDBの内容をBバス(φ#同期)を経由して、モードレジスタDTMRに格納する。なお、Bバスは、φ同期・φ#同期で、1ステートに2回の転送を可能にしている。また、データバッファDBはマスタ−スレーブ構成になっている。レジスタDARに格納された、VAR+8の内容(m+8)をAバスを経由して、アドレスバッファABに入力し、アドレスバスDTABに出力する。Aバスの内容を算術演算器AUに取込み、インクリメント(+4)を行なう。
【0100】
ステップS203aでランダムアクセスメモリRAMDのリードを行なう。データバスDTDBの内容をデータバッファDBに取り込む。インクリメントされた内容をBバス(φ同期)経由でレジスタDARに格納する。データバッファDBの内容をBバス(φ#同期)を経由して、レジスタBTCR,TCRに格納する。レジスタDARに格納された、VAR+12の内容(m+12)をAバスを経由して、アドレスバッファABに入力し、アドレスバスDTABに出力する。Aバスの内容を算術演算器AUに取込み、インクリメント(+4)を行なう。ステップS204aでランダムアクセスメモリRAMDのリードを行なう。データバスDTDBの内容をデータバッファDBに取り込む。インクリメントされた内容をBバス(φ同期)経由でレジスタDARに格納する。データバッファDBの内容をBバス(φ#同期)を経由して、レジスタSARに格納する。DTBRQ信号を非活性状態にして、バス権要求を解除する。
【0101】
ステップS205aで、データバッファDBの内容をBバス(φ#同期)を経由して、レジスタDARに格納する。レジスタSARの内容をAバスを経由して、デコーダDEC及びアドレスバッファABに入力する。アドレスデコード結果に基づき、次のデータ転送のためにバス権を要求する。Aバスの内容を算術演算器AUに取込む。処理の内容は、SM1、SM0ビットに基づく。
【0102】
図20及び図21には図17のステップS2のランダムアクセスメモリRAMD以外のメモリをリードする場合の動作フローチャートが示される。ステップS2では、ステップS103に継続して動作が行なわれる。まず、バス権アクノリッジ信号を参照して、バス権が獲得されたかを判定する。保留とされた場合には、バス権が許可されるまで待機状態となる。同時に待機状態を示す信号として、DTCウェイト信号が活性状態とされる。
【0103】
バス権アクノリッジ信号が活性状態になり、DTCウェイト信号が非活性状態になると、ステップS201bでリードサイクルを開始する。インクリメントされた内容(m+4)をBバス経由でレジスタDARに格納する。リードサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。ステップS202bでリードサイクルを終了し、データバスの内容をデータバッファ上位DBHに取り込む。アドレスバッファABのビット1を反転し、m+2とし、IABに出力する。記号〜は論理反転を示す。
【0104】
ステップS203bでリードサイクルを開始する。リードサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。ステップS204bで、リードサイクルを終了し、データバスの内容をデータバッファ下位DBLに取り込む。また、レジスタDARに格納された、VAR+4の内容(m+4)をAバスを経由して、アドレスバッファABに入力し、アドレスバスIABに出力する。Aバスの内容を算術演算器AUに取込み、インクリメント(+4)を行なう。
【0105】
ステップS205bで、リードサイクルを開始する。インクリメントされた内容をBバス経由でレジスタDARに格納する。データバッファDBHの内容をBバス(φ#同期)を経由して、モードレジスタDTMRに格納する。データバッファDBLの内容は無視される。リードサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。
【0106】
ステップS206bで、リードサイクルを終了し、データバスの内容をデータバッファ上位DBHに取り込む。また、アドレスバッファABのビット1を反転し、m+6とし、内部アドレスバスIABに出力する。ステップS207bでリードサイクルを開始する。リードサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。ステップS208bで、リードサイクルを終了し、データバスの内容をデータバッファ下位DBLに取り込む。また、レジスタDARに格納された、VAR+8の内容(m+8)をAバスを経由して、アドレスバッファABに入力し、アドレスバスDTABに出力する。Aバスの内容を算術演算器AUに取込み、インクリメント(+4)を行なう。
【0107】
ステップS209bで、リードサイクルを開始する。インクリメントされた内容をBバス経由でレジスタDARに格納する。データバッファDBの内容をBバスを経由して、レジスタBTCR、TCRに格納する。データバッファDBHがレジスタBTCRに、DBLがTCRに対応する。リードサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。ステップS210bで、リードサイクルを終了し、データバスの内容をデータバッファ上位DBHに取り込む。また、アドレスバッファABのビット1を反転し、m+10とし、アドレスバスIABに出力する。ステップS211bでリードサイクルを開始する。リードサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。ステップS212bでリードサイクルを終了し、データバスの内容をデータバッファ下位DBLに取り込む。また、レジスタDARに格納された、VAR+12の内容(m+12)をAバスを経由して、アドレスバッファABに入力し、アドレスバスIABに出力する。
【0108】
ステップS213bで、データバッファDBの内容をBバス(φ#同期)を経由して、レジスタSARに格納する。リードサイクルを開始する。リードサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。ステップS214bで、リードサイクルを終了し、データバスの内容をデータバッファ上位DBHに取り込む。また、アドレスバッファABのビット1を反転し、m+14とし、アドレスバスIABに出力する。ステップS215bで、リードサイクルを開始する。リードサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。ステップS216bで、リードサイクルを終了し、データバスの内容をデータバッファ下位DBLに取り込む。バス権要求信号を非活性状態にして、バス権を放棄する。
【0109】
ステップS217bで、データバッファDBの内容をBバス(φ#同期)を経由して、レジスタDARに格納する。レジスタSARの内容をAバスを経由して、アドレスデコーダDEC及びアドレスバッファABに入力する。アドレスデコード結果に基づき、次のデータ転送のためにバス権を要求する。Aバスの内容を算術演算器AUに取込む。処理の内容は、SM1、SM0ビットに基づく。
【0110】
図22には図17のステップS3のノーマルモードの詳細な動作フローチャートが示される。図においてステップS301aa,S301ab,S302abはソースアドレスに対する処理、ステップS303aa,S303ab,S304abはディスティネーションアドレスに対する処理とされる。図22に示されるステップS3では、ステップS205aまたはステップS217bに継続して動作が行なわれる。
【0111】
まず、バス権アクノリッジ信号を参照して、バス権が獲得されたかを判定する。保留とされた場合には、バス権が許可されるまで待機状態となる。同時に待機状態を示す信号として、DTCウェイト信号が活性状態とされる。
【0112】
ソースアドレスレジスタSARのアドレスがランダムアクセスメモリRAMDであれば、ステップS301aaで、直ちに、ランダムアクセスメモリRAMDのリードを行なう。データバスDTDBの内容をデータバッファDBに取り込む。算術演算器AUで処理された内容をBバス経由でレジスタSARに格納する。また、レジスタDARの内容をAバスを経由して、アドレスバッファABに入力し、アドレスバスDTABに出力する。Aバスの内容を算術演算器AUに取込む。処理の内容は、DM1、DM0ビットに基づく。バス権要求を継続する。
【0113】
ソースアドレスレジスタSARのアドレスがランダムアクセスメモリRAMD以外であれば、バス権アクノリッジ信号が活性状態になり、DTCウェイト信号が非活性状態になると、ステップS301abでリードサイクルを開始する。算術演算器AUで処理された内容をBバス経由でレジスタSARに格納する。リードサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。
【0114】
ステップS302abで、リードサイクルを終了し、データバスの内容をデータバッファDBに取り込む。また、レジスタDARの内容をAバスを経由して、アドレスバッファABに入力し、アドレスバスDTABに出力する。Aバスの内容を算術演算器AUに取込む。処理の内容は、DM1、DM0ビットに基づく。バス権要求を継続する。
【0115】
レジスタDARのアドレスがランダムアクセスメモリRAMDであれば、ステップS303aaで、直ちに、ランダムアクセスメモリRAMDのライトを行なう。データバッファDBの内容をデータバスに出力する。バス権要求信号を非活性状態にして、バス権を放棄する。算術演算器AUで処理された内容をBバス(φ同期)経由でレジスタDARに格納する。レジスタTCRの内容を算術演算器AUに取込み、デクリメントを行う。
【0116】
レジスタDARのアドレスがランダムアクセスメモリRAMD以外であれば、ステップS303abでライトサイクルを開始する。データバッファDBの内容をデータバスに出力する。算術演算器AUで処理された内容をBバス(φ同期)経由でDARに格納する。ライトサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。ステップS304abでライトサイクルを終了する。レジスタTCRの内容を算術演算器AUに取込み、デクリメントを行う。バス権要求信号を非活性状態にして、バス権を放棄する。
【0117】
ステップS305aで、算術演算器AUでデクリメントされた内容をBバス経由でレジスタTCRに格納する。デクリメント結果が0であるか内部の状態フラグに保持する。次のレジスタファイルのライトのためにバス権を要求する。同時に、レジスタVARの内容(m)をAバスを経由して、アドレスバッファABに入力し、アドレスバスDTABに出力する。Aバス(A−BUS)の内容を算術演算器AUに取込み、インクリメント(+4)を行なう。
【0118】
図23及び図24には図17のステップS3のリピートモードの詳細な動作フローチャートが示される。図においてステップS301ba,S301bb,S302bbはソースアドレスに対する処理、ステップS303ba,S303bb,S304bbはディスティネーションアドレスに対する処理、ステップS305ba,S305bb,S306ba,S306bbはリピートのための処理とされる。図23のステップS3は、ステップS205aまたはステップS217bに継続して動作が行なわれる。
【0119】
まず、バス権アクノリッジ信号を参照して、バス権が獲得されたかを判定する。保留とされた場合には、バス権が許可されるまで待機状態となる。同時に待機状態を示す信号として、DTCウェイト信号が活性状態とされる。
【0120】
レジスタSARのアドレスがランダムアクセスメモリRAMDであれば、ステップS301baで、直ちに、ランダムアクセスメモリRAMDのリードを行なう。データバスDTDBの内容をデータバッファDBに取り込む。算術演算器AUで処理された内容をBバス経由でレジスタSARに格納する。また、レジスタDARの内容をAバスを経由して、アドレスバッファABに入力し、アドレスバスDTABに出力する。Aバスの内容を算術演算器AUに取込む。処理の内容は、DM1、DM0ビットに基づく。
【0121】
レジスタSARのアドレスがランダムアクセスメモリRAMD以外であれば、バス権アクノリッジ信号が活性状態になり、DTCウェイト信号が非活性状態になると、ステップS301bbでリードサイクルを開始する。算術演算器AUで処理された内容をBバス経由でレジスタSARに格納する。リードサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。ステップS302bbで、リードサイクルを終了し、データバスの内容をデータバッファDBに取り込む。また、レジスタDARの内容をAバスを経由して、アドレスバッファABに入力し、アドレスバスDTABに出力する。Aバスの内容を算術演算器AUに取込む。処理の内容は、DM1、DM0ビットに基づく。
【0122】
レジスタDARのアドレスがランダムアクセスメモリRAMDであれば、ステップS303baで、直ちに、ランダムアクセスメモリRAMDのライトを行なう。データバッファDBの内容をデータバスに出力する。バス権要求信号を非活性状態にして、バス権を放棄する。算術演算器AUで処理された内容をBバス(φ同期)経由でDARに格納する。レジスタTCRHの内容を算術演算器AUに取込み、デクリメントを行う。
【0123】
レジスタDARのアドレスがランダムアクセスメモリRAMD以外であれば、ステップS303bbでライトサイクルを開始する。データバッファDBの内容をデータバスに出力する。算術演算器AUで処理された内容をBバス(φ同期)経由でDARに格納する。ライトサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。ステップS304bbでライトサイクルを終了する。レジスタTCRHの内容を算術演算器AUに取込み、デクリメントを行う。バス権要求信号を非活性状態にして、バス権を放棄する。
【0124】
ステップS305bで、算術演算器AUでデクリメントされた内容をBバス経由でレジスタTCRHに格納する。デクリメント結果が0であれば(S305bb)、レジスタSARまたはDAR、及びレジスタTCRHの初期設定値が復帰される。即ち、前記の通り、DTSビットが”0”にクリアされていればレジスタSAR、また、DTSビットが”1”にセットされていればレジスタDARの内容がAバスを経由して算術演算器AUに入力される。レジスタTCRLの内容がCバスに出力され、レジスタTCRHに格納されるとともに、セレクタSEL、シフタSFT経由で算術演算器AUに入力される。セレクタSEL,シフタSFT,算術演算器AUの処理の内容は前記の通りである。ステップS306bで、デクリメント結果が0であれば(S306bb)、算術演算器AUで処理された内容をBバス経由でレジスタSARまたはDARに格納する。デクリメント結果に依らず、次のレジスタファイルのライトのためにバス権を要求する。同時に、レジスタVARの内容(m)をAバスを経由して、アドレスバッファABに入力し、アドレスバスDTABに出力する。Aバスの内容を算術演算器AUに取込み、インクリメント(+4)を行なう。
【0125】
図25及び図26には図17のステップS3のブロック転送モードの詳細な動作フローチャートが示される。図25のステップS301ca,S301cb,S302cbはソースアドレスに対する処理、図26のステップS303ca,S303cb,S304cbはディスティネーションアドレスに対する処理、ステップS305ca,S305cb,S306c,S307cは転送制御情報の書き戻しのための処理であり、ステップS305caから図25の先頭ステップへの帰還は一つのデータブロックの転送を繰り返すための帰還ループである。図25のステップS3は、ステップS205a又はステップS217bに継続して動作が行なわれる。
【0126】
まず、バス権アクノリッジ信号を参照して、バス権が獲得されたかを判定する。保留とされた場合には、バス権が許可されるまで待機状態となる。同時に待機状態を示す信号として、DTCウェイト信号が活性状態とされる。
【0127】
レジスタSARのアドレスがランダムアクセスメモリRAMDであれば、ステップS301caで、直ちに、ランダムアクセスメモリRAMDのリードを行なう。データバスDTDBの内容をデータバッファDBに取り込む。算術演算器AUで処理された内容をBバス経由でレジスタSARに格納する。また、レジスタDARの内容をAバスを経由して、アドレスバッファABに入力し、アドレスバスDTABに出力する。Aバスの内容を算術演算器AUに取込む。処理の内容は、DM1、DM0ビットに基づく。
【0128】
レジスタSARのアドレスがランダムアクセスメモリRAMD以外であれば、バス権アクノリッジ信号が活性状態になり、DTCウェイト信号が非活性状態になると、ステップS301cbでリードサイクルを開始する。算術演算器AUで処理された内容をBバス経由でレジスタSARに格納する。リードサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。ステップS302cbで、リードサイクルを終了し、データバスの内容をデータバッファDBに取り込む。また、レジスタDARの内容をAバスを経由して、アドレスバッファABに入力し、アドレスバスDTABに出力する。Aバスの内容を算術演算器AUに取込む。処理の内容は、DM1、DM0ビットに基づく。
【0129】
レジスタDARのアドレスがランダムアクセスメモリRAMDであれば、ステップS303caで、直ちに、ランダムアクセスメモリRAMDのライトを行なう。データバッファDBの内容をデータバスに出力する。バス権要求信号を非活性状態にして、バス権を放棄する。算術演算器AUで処理された内容をBバス(φ同期)経由でレジスタ格納する。レジスタTCRHの内容を算術演算器AUに取込み、デクリメントを行う。
【0130】
レジスタDARのアドレスがランダムアクセスメモリRAMD以外であれば、ステップS303cbでライトサイクルを開始する。データバッファDBの内容をデータバスに出力する。算術演算器AUで処理された内容をBバス(φ同期)経由でレジスタDARに格納する。ライトサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。ステップS304cbでライトサイクルを終了する。レジスタTCRHの内容を算術演算器AUに取込み、デクリメントを行う。バス権要求信号を非活性状態にして、バス権を放棄する。
【0131】
ステップS305cで、算術演算器AUでデクリメントされた内容をBバス経由でレジスタTCRHに格納する。デクリメント結果が0でなければ(S305ca)、レジスタSARの内容をAバスを経由して、アドレスバッファABに入力し、アドレスバスDTABに出力する。Aバスの内容を算術演算器AUに取込む。ステップS301caまたはステップS301cbに分岐する。デクリメント結果が0であれば(S305cb)、レジスタSARまたはDAR、及びレジスタTCRHの初期設定値が復帰される。前記の通り、DTSビットが”0”にクリアされていればレジスタSAR、また、DTSビットが”1”にセットされていればレジスタDARの内容がAバスを経由して算術演算器AUに入力される。レジスタTCRLの内容がCバスに出力され、レジスタTCRHに格納されるとともに、セレクタSEL、シフタSFT経由で算術演算器AUに入力される。セレクタSEL,シフタSFT,算術演算器AUの処理の内容は前記の通りである。ステップS306cで、算術演算器AUで処理された内容をBバス経由でレジスタSARまたはDARに格納する。レジスタBTCRの内容をAバス経由で算術演算器AUに取込み、デクリメントを行う。ステップS307cで、算術演算器AUでデクリメントされた内容をBバス経由でレジスタBTCRに格納する。デクリメント結果が0であるか内部の状態フラグに保持する。次のレジスタファイルのライトのためにバス権を要求する。同時に、レジスタVARの内容(m)をAバスを経由して、アドレスバッファABに入力し、アドレスバスDTABに出力する。Aバスの内容を算術演算器AUに取込み、インクリメント(+4)を行なう。
【0132】
図27には図17のステップS4のランダムアクセスメモリRAMDをライトする場合の詳細な動作フローチャートを示す。同図のステップS4は、ステップS305a、S305b又はステップS306cに継続して動作が行なわれる。データトランスファコントローラDTCのランダムアクセスメモリRAMD(m)のリードが優先されるので、直ちにDTBAK信号が活性状態となり、ステップS401aでランダムアクセスメモリRAMDのライトを行なう。モードレジスタDTMRの内容をAバス(φ同期)を経由して、データバッファDBHに入力し、データバスに出力する。インクリメントされた内容をBバス(φ同期)経由でレジスタVARに格納する。更に、レジスタVARの内容(m+4)をAバス(φ#同期)を経由して、アドレスバッファABに入力し、アドレスバスDTABに出力する。Aバスの内容を算術演算器AUに取込み、インクリメント(+4)を行なう。
【0133】
ステップS402aでランダムアクセスメモリRAMDのライトを行なう。レジスタBTCR、TCRの内容をAバス(φ同期)を経由して、データバッファDBH、DBLに入力し、データバスに出力する。インクリメントされた内容をBバス(φ同期)経由でレジスタVARに格納する。レジスタVARの内容(m+8)をAバス(φ#同期)を経由して、アドレスバッファABに入力し、アドレスバスDTABに出力する。Aバスの内容を算術演算器AUに取込み、インクリメント(+4)を行なう。
【0134】
ステップS403aでランダムアクセスメモリRAMDのライトを行なう。レジスタSARの内容をAバス(φ同期)を経由して、データバッファDBH、DBLに入力し、データバスに出力する。インクリメントされた内容をBバス(φ同期)経由でレジスタVARに格納する。レジスタVARの内容(m+12)をAバスを経由して、アドレスバッファABに入力し、アドレスバスDTABに出力する。Aバスの内容を算術演算器AUに取込み、インクリメント(+4)を行なう。
【0135】
ステップS404aでランダムアクセスメモリRAMDのライトを行なう。レジスタDARの内容をAバス(φ同期)を経由して、データバッファDBH、DBLに入力し、データバスに出力する。インクリメントされた内容をBバス(φ同期)経由でレジスタVARに格納する。DTBRQ信号を非活性状態にして、バス権要求を解除する。
【0136】
ステップS405aで、NXTEビットが”1”にセットされていれば、次のレジスタファイルのリードのためにバス権を要求する。レジスタVARの内容(m+16)をAバスを経由して、アドレスバッファABに入力しアドレスバスIABに出力する。デコーダDECに取込みアドレスをデコードして、ランダムアクセスメモリRAMDに相当するアドレスかどうかを判定する。Aバスの内容を算術演算器AUに取込み、インクリメント(+4)を行なう。ステップS2に戻る。NXTEビットが”0”にクリアされていれば、要因クリア信号またはDTC許可ビットクリア信号を活性状態とする。転送カウンタが0でなく、前記内部状態フラグが”0”にクリアされていれば要因クリア信号を活性状態とし、転送カウンタがであり、内部状態フラグが”1”にセットされていればDTC許可ビットクリア信号を活性状態とする。
【0137】
図28乃至図30には図17のステップS4のランダムアクセスメモリRAMD以外をライトする場合の詳細な動作フローチャートが示される。図28のステップS4は、ステップS305a、S305b又はステップS306cに継続して動作が行なわれる。
【0138】
まず、バス権アクノリッジ信号を参照して、バス権が獲得されたかを判定する。保留とされた場合には、バス権が許可されるまで待機状態となる。同時に待機状態を示す信号として、DTCウェイト信号が活性状態とされる。バス権アクノリッジ信号が活性状態になり、DTCウェイト信号が非活性状態になると、ステップS401bでライトサイクルを開始する。インクリメントされた内容をBバス(φ同期)経由でレジスタVARに格納する。モードレジスタDTMRの内容をAバス(φ同期)を経由して、データバッファDBHに入力し、データバスに出力する。特に制限はされないものの、データバッファDBLにはH’00が入力される。ライトサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。ステップ402(S402)bでライトサイクルを終了する。また、アドレスバッファABのビット1を反転し、m+2とし、IABに出力する。
【0139】
ステップS403bでライトサイクルを開始する。データバッファDBLの内容をデータバスに出力する。ライトサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。ステップS404bでライトサイクルを終了する。また、レジスタVARの内容(m+4)をAバスを経由して、アドレスバッファABに入力し、アドレスバスIABに出力する。Aバスの内容を算術演算器AUに取込み、インクリメント(+4)を行なう。
【0140】
ステップS405bでライトサイクルを開始する。レジスタBTCR、TCRの内容をAバス(φ同期)を経由して、データバッファDBH、DBLに入力する。データバッファDBHの内容(BTCR)をデータバスに出力する。ライトサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。ステップS406bでライトサイクルを終了する。また、アドレスバッファABのビット1を反転し、m+6とし、IABに出力する。
【0141】
ステップS407bでライトサイクルを開始する。データバッファDBLの内容(TCR)をデータバスに出力する。ライトサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。ステップS408bでライトサイクルを終了する。また、レジスタVARの内容(m+8)をAバス(φ#同期)を経由して、アドレスバッファABに入力し、アドレスバスIABに出力する。Aバスの内容を算術演算器AUに取込み、インクリメント(+4)を行なう。
【0142】
ステップS409bでライトサイクルを開始する。インクリメントされた内容をBバス経由でレジスタVARに格納する。レジスタSARのの内容をAバスを経由して、データバッファDBに入力する。データバッファDBHの内容(SARH)をデータバスに出力する。ライトサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。ステップS410bでライトサイクルを終了する。また、アドレスバッファABのビット1を反転し、m+10とし、アドレスバスIABに出力する。ステップS411bでライトサイクルを開始する。データバッファDBLの内容(SARL)をデータバスに出力する。ライトサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。ステップS412bでライトサイクルを終了する。また、レジスタVARの内容(m+12)をAバスを経由して、アドレスバッファABに入力し、アドレスバスIABに出力する。Aバスの内容を算術演算器AUに取込み、インクリメント(+4)を行なう。
【0143】
ステップS413bでライトサイクルを開始する。インクリメントされた内容をBバス経由でレジスタVARに格納する。レジスタDARのの内容をAバスを経由して、データバッファDBに入力する。データバッファDBHの内容(DARH)をデータバスに出力する。ライトサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。ステップS414bでライトサイクルを終了する。また、アドレスバッファ(AB)のビット1を反転し、m+14とし、アドレスバスIABに出力する。
【0144】
ステップS415bでライトサイクルを開始する。データバッファDBLの内容(DARL)をデータバスに出力する。ライトサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。ステップS416bでライトサイクルを終了する。バス権要求信号を非活性状態にして、バス権を放棄する。
【0145】
ステップS417bで、NXTEビットが”1”にセットされていれば、次のレジスタファイルのリードのためにバス権を要求する。レジスタVARの内容(m+16)をAバスを経由して、アドレスバッファABに入力しアドレスバスIABに出力する。Aバスの内容を算術演算器AUに取込み、インクリメント(+4)を行なう。ステップS2に戻る。NXTEビットが”0”にクリアされていれば、要因クリア信号またはDTC許可ビットクリア信号を活性状態とする。転送カウンタが0でなく、前記内部状態フラグが”0”にクリアされていれば要因クリア信号を活性状態とし、転送カウンタがであり、内部状態フラグが”1”にセットされていればDTC許可ビットクリア信号を活性状態とする。
【0146】
ステップS4では、更新されなかったレジスタを退避しないようにしてもよい。フローチャートのデータトランスファコントローラDTC内部の動作は同一とし、バス権を解放して、ライト動作を行わない様にすればよい。中央処理装置CPUをストールしなくてよい。あるいは内部の動作を変更して、ステップ数を削除してもよい。また、ステップ403b、404bは削除できる。必要に応じて、削除される前のインクリメントを+4ではなく+8とするようにする。あるいは、レジスタBTCRを使用しない場合には、ステップS2でのリード及びステップS4でのライトの両方を行わないようにしてもよい。メモリ上の配置からも削除してもよい。1つの起動要因で複数のデータ転送を行う場合に、起動要因が発生してから、最後のデータ転送を行うまでの時間を短縮できる。
【0147】
アドレスビット1反転機能を有することによって、ランダムアクセスメモリRAMDの他、16ビット構成のランダムアクセスメモリRAMCなどにベクタや転送情報を配置可能にする。すなわち、アドレスビット1反転機能とはロングワードアクセスを16ビットのデータバスIDBに対し、ワードアクセス2回に分割して行う場合の、2回目のワードアクセス時の+2の機能に相当するものであり、反転回路の追加によって算術演算器AUの動作の+2又は+4の切換えの必要をなくし、制御回路DTCCONTを単純化することができる。一方、ランダムアクセスメモリRAMDのみにレジスタ情報を配置可能にすることによって、ステップS2,ステップS4の動作フローを簡単にすることができ、ひいては、更に制御回路の単純化でき、また、アドレスビット1反転機能を削除でき、データトランスファコントローラDTCの論理規模・物理的規模を縮小することができる。ランダムアクセスメモリRAMDの容量が充分大きく、レジスタファイルや転送データを格納できれば不都合はない。この場合は、ベクタを16ビット長に固定し、この16ビットをRAMDの下位アドレス、上位アドレスはRAMDに相当する様にH’FFFFとすればよい。データトランスファコントローラDTCのレジスタを削減し、更に規模を縮小できる。ベクタを16ビット長にする場合には、これをROMに配置する様にしてもよい。中央処理装置CPUによるRAMDの初期設定の手間を軽減することができる。また、ROMに比較して容量の小さいRAMを有効に利用することができる。
【0148】
図31及び図32には内部バスの動作タイミングの一例が示される。同図にはランダムアクセスメモリRAMDからI/Oへのノーマルモードのデータ転送を2回行う例が示される。アドレスバスIAB,DTABは、クロック信号φの反転信号であるφ#に同期して出力される。中央処理装置CPUのリードオンリメモリROM及びランダムアクセスメモリRAMC,RAMDに対するリードは、1ステートで行なわれる。アドレスバスIABはクロック信号φ#に同期して、1ステート出力され、特に制限はされないものの、リードオンリメモリROM及びランダムアクセスメモリRAMC,RAMDの中でクロック信号φに同期してラッチされる。これに対応するリードデータはクロック信号φ#に同期して出力され、φ#が活性状態の期間に中央処理装置CPUに取り込まれる。例えば、T1のφ#に同期してアドレスバスIABに出力されたアドレスに対するデータはT2のφ#が活性状態の期間に中央処理装置CPUに取り込まれる。一方、PIOに対するリード/ライトは3ステートで行なわれる。φ#に同期したアドレスバスIABは、バスコントローラBSCONTでφに同期化される。
【0149】
割込コントローラIRCONTが、DTC起動要求信号を活性状態にして、データトランスファコントローラDTCを起動する。データトランスファコントローラDTCは、起動されると起動信号を活性状態にする。これによって、割込コントローラIRCONTのDTCベクタ番号がラッチされる。
【0150】
T1では、中央処理装置CPUのリードオンリメモリROMからの命令フェッチが行なわれ、アドレスバスIABにアドレスが出力される。データトランスファコントローラDTCが起動される。データトランスファコントローラDTCはDTBRQ信号を活性状態にし、ベクタアドレス生成回路VAGで生成したDTCベクタアドレスを、Aバスを経由して、アドレスバスDTABに出力する(ステップS101)。
【0151】
T2では、リードオンリメモリROMからデータバスIDBに読み出された命令コードを中央処理装置CPUが取り込むとともに、次の命令フェッチのアドレスがアドレスバスIABに出力される。以下同様にして、T5まで中央処理装置CPUによるROMのリードが繰り返される。DTBAK信号が活性状態になり、データトランスファコントローラDTCによるランダムアクセスメモリRAMDのリードが行なわれる。ランダムアクセスメモリRAMDからデータバスDTDBに読み出されたレジスタVARの32ビットの内容(m)が、データトランスファコントローラDTCのデータバッファDBに取り込まれる。DTCバス権要求信号を非活性状態にし、一旦バス権を解放する(ステップS102)。
【0152】
T3では、データトランスファコントローラDTCはDTBRQ信号を活性状態にし、データバッファDBの内容をBバスを経由してレジスタVARに格納する。レジスタVARの内容(m)をAバスを経由して、アドレスバスDTABに出力する。これがレジスタファイルの先頭アドレスとなる。Aバスの内容が算術演算器AUに取り込まれてインクリメント(+4)される(ステップS103)。
【0153】
T4では、DTBAK信号が活性状態になり、ランダムアクセスメモリRAMDのリードを行なう。ランダムアクセスメモリRAMDからデータバスDTDBに読み出されたモードレジスタDTMRの内容を、データトランスファコントローラDTCのデータバッファDBに取り込む。算術演算器AUのインクリメント結果をBバスを経由してアドレスレジスタDARに格納する。アドレスレジスタDARの内容(m+4)をAバスを経由して、アドレスバスDTABに出力する(ステップS201a)。
【0154】
T5〜T7では、レジスタファイルが順次読み出され、データバッファDB及びBバスを経由して、DTMR、BTCR、TCR、SARの各レジスタに格納する。T7では、DTBRQ信号を非活性状態にする(ステップS202a〜ステップS204a)。
【0155】
一方、中央処理装置CPUは、T5でランダムアクセスメモリRAMDのアドレスを出力するが、CPUバス権アクノリッジ信号が非活性状態になって、待機状態とされる。T7で、データトランスファコントローラDTCがDTBRQ信号を非活性状態にすると、CPUバス権アクノリッジ信号が活性状態になって、T8で、中央処理装置CPUのランダムアクセスメモリRAMDのリードが行なわれる。
【0156】
T8で、データバッファDBに格納した内容をBバスを経由して、アドレスレジスタDARに格納する。ソースアドレスレジスタSARの内容をAバスを経由して、アドレスバスDTABに出力する。Aバスの内容が算術演算器AUに取り込まれて処理される。また、アドレスデコーダDECに入力してアドレスの判定を行なう。DTCバス権要求信号を活性状態にし、バス権を要求する。アドレスがランダムアクセスメモリRAMDに相当する場合、DTBRQ信号を活性状態にする(ステップS205a)。
【0157】
T9で、DTBAK信号が活性状態になり、ランダムアクセスメモリRAMDのリードを行なう。ランダムアクセスメモリRAMDからデータバスDTDBに読み出された転送データを、データバッファDBに取り込む。算術演算器AUの演算結果をBバスを経由してソースアドレスレジスタSARに格納する。ディスティネーションアドレスレジスタDARの内容をAバスを経由して、アドレスバスDTABに出力する。アドレスがI/Oに相当する場合、DTCバス権要求信号を活性状態にする(ステップS301aa)。
【0158】
中央処理装置CPUは、I/Oのライトを要求するが、CPUバス権が非活性状態であって、待機状態とされる。CPU出力のアドレスバス・データバスはハイインピーダンス状態とされる。T10で、DTCバス権アクノリッジ信号が活性状態になり、データトランスファコントローラDTCが出力するアドレスバスIABの内容が、φに同期化してアドレスバスPABに出力され、I/Oのライトを開始する。データバッファDBの内容をデータバスIDBに出力する(ステップS303ab)。
【0159】
T11で、データトランスファコントローラDTCに1ステートのウェイトが挿入される。T12で、バス権要求信号を非活性状態にし、バス権を解放する。レジスタTCRの内容をAバスを経由して算術演算器AUに転送し、デクリメント(−1)を行なう(ステップS304ab)。T13で、デクリメント結果をBバスを経由して、レジスタTCRに格納する。本例では、デクリメント結果が0でないものとする。レジスタVARの内容(m)をAバスを経由して、アドレスバスDTABに出力する。Aバスの内容が算術演算器AUに取り込まれてインクリメント(+4)される。また、アドレスデコーダDECに入力される。アドレスに応じてDTBRQ信号を要求する(ステップS305a)。CPUバス権が活性状態になり、中央処理装置CPUはI/Oのライトを行なう。
【0160】
T14で、DTBAK信号が活性状態になり、ランダムアクセスメモリRAMDのライトを行なう。モードレジスタDTMRの内容を、Aバス・データバッファDBを経由してデータバスDTDBに出力する。算術演算器AUのインクリメント結果をBバスを経由してレジスタVARに格納する。レジスタVARの内容(m+4)をAバスを経由して、アドレスバスDTABに出力する(ステップS401a)。T15〜T17では、レジスタファイルが、Aバス及びデータバッファDBを経由して、BTCR、TCR、SAR、DARの各レジスタの内容がランダムアクセスメモリRAMDに順次書込まれる。T17では、DTBRQ信号を非活性状態にする(ステップS402a〜ステップS404a)。T18では、NXTEビットを判定する。本例ではNXTEビットが”1”にセットされているものとし、データトランスファコントローラDTCはDTBRQ信号を活性状態にする。ベクタアドレスレジスタVARの内容(m+16)をAバスを経由して、アドレスバスDTABに出力する。これが第2のレジスタファイルの先頭アドレスとなる。Aバスの内容が算術演算器AUに取り込まれてインクリメント(+4)される(ステップS405a)。
【0161】
以下、T4以降と概略同様の動作を繰り返す。T24で、レジスタDARの内容をAバスを経由して、アドレスバスDTABに出力する。本例ではアドレスがI/Oに相当し、DTCバス権要求信号を活性状態にする(ステップS301aa)。このとき、中央処理装置CPUがI/Oをアクセス状態であるので、DTCバス権アクノリッジ信号が非活性状態のままであり、データトランスファコントローラDTCは待機状態になる。T27で、データトランスファコントローラDTCのI/Oに対するライトを開始する(ステップS303ab)。T28で、TCRの内容をAバスを経由して算術演算器AUに転送し、デクリメント(−1)を行なう(ステップS304ab)。T29で、デクリメント結果をBバスを経由して、レジスタTCRに格納する。本例では、デクリメント結果が0であるものとする。データトランスファコントローラDTC内部の状態フラグをセットする。T35で、状態フラグに基づき、DTC転送終了信号を活性状態にする。NXTEビットが”0”にクリアされているものとし、データトランスファコントローラDTCは動作を終了する。
【0162】
中央処理装置CPUがリードオンリメモリROMをリードし、データトランスファコントローラDTCがランダムアクセスメモリRAMDをリード/ライトしている期間は、中央処理装置CPUとデータトランスファコントローラDTCが並列動作を行なっている。図23では、中央処理装置CPUがランダムアクセスメモリRAMDをリードするためにストールされたのが2ステート、I/OのライトとデータトランスファコントローラDTCのI/Oのライトで競合したためにストールされたのが2ステート、また、データトランスファコントローラDTCが、I/Oのライトと中央処理装置CPUのI/Oライトで競合したためにストールされたのが2ステートである。データトランスファコントローラDTCによってデータをI/Oに書き込む場合には、データ転送をランダムアクセスメモリRAMDからI/Oとすることによって、中央処理装置CPUとデータトランスファコントローラDTCとの並列動作を可能とし、処理効率を向上できる。
【0163】
また、中央処理装置CPUを待機状態にする最大の時間を、ベクタアドレスレジスタVARのリード、レジスタファイルのリード、データ転送、レジスタファイルのライトの時間以下とすることができる。この時間は、レジスタファイルのリード/ライトは4ロングワード分であるので、レジスタファイルをランダムアクセスメモリRAMDに配置した場合、最大4ステートである。レジスタファイルのリード/ライトの途中でバスを解放するようにすれば、中央処理装置CPUの待機状態にする時間を更に短縮することができる。
【0164】
また、データトランスファコントローラDTCによって、I/Oのデータを読み込む場合には、データ転送をI/OからランダムアクセスメモリRAMCとすることによって、蓄積されたデータを中央処理装置CPUが処理する場合に、IAB、IDBを使用するだけでよく、アクセスを高速化し、またデータトランスファコントローラDTCとの並列動作を可能とすることによって、処理効率を向上できる。
【0165】
図33には本実施例に係るたシングルチップマイクロコンピュータをプリンタ制御に適用した実施例ブロック図が示される。プリンタ制御システムは、本実施例のシングルチップマイクロコンピュータ50、セントロニクスインタフェース回路51、バッファRAM52、キャラクタジェネレートROM(CGROM)53、印字データバッファRAMとしての出力バッファ54、及び印字ヘッド55が、シングルチップマイクロコンピュータ50の外部バスを介して接続され、さらに、バッファ回路56、ラインフィードモータ57、そしてキャリッジリターンモータ58を含んで構成される。ラインフィードモータ57及びキャリッジリターンモータ58は、それぞれタイマの出力、パルス出力装置の出力によって制御される。それらモータ57,58は、特に制限はされないものの、ステッピングモータである。図示はされないものの、シリアルコミュニケーションインタフェースはホストとの通信に使用し、A/D変換器は紙枚数などのセンサ情報を入力する。データトランスファコントローラDTCはセントロニクスインタフェースによるデータの受信、印字データの出力、ラインフィードモータ、キャリッジリターンモータを駆動するパルス出力を行う。シリアルコミュニケーションインタフェースの送信データ、受信データの転送を行なう。
【0166】
図34には図33のシステムのデータトランスファコントローラDTCの使用例を示す。この例では5本の割込要因(起動要因)によって、合計8通りのデータ転送を行う。
【0167】
セントロニクスインタフェース回路51によるデータの受信では、データトランスファコントローラDTCは、外部信号をIRQ信号に入力して、IRQ割込で起動され、セントロニクスインタフェース回路51のデータレジスタから、バッファRAM52へのデータ転送を行なう。セントロニクスインタフェース回路51の所定の信号、所謂インプットストローブ信号を外部割込入力端子IRQ0に入力する。IRQ0割込に対応する、割込許可ビット及びDTC許可ビット(DTEA7)を”1”にセットする。データトランスファコントローラDTCはレジスタSARをセントロニクスインタフェース回路51のデータレジスタに相当するアドレスとし、SM1、SM0ビットをいずれも”0”にクリアして、ソースアドレスレジスタSARを固定にする。ディスティネーションアドレスレジスタDARは、例えば、バッファRAM52の所定のアドレスとし、DM1ビットを”1”にセット、DM0を”0”にクリアしてインクリメントを指定する。レジスタTCRに所望のデータ転送回数を指定する。レジスタBTCRは使用しない。動作モードは、MD1、MD0をいずれも”0”にクリアして、ノーマルモードとする。SZビット及びNXTEビットは”0”にクリアする。ホストから転送されるデータをインプットストローブ信号の所定の変化点で、セントロニクスインタフェース回路51に取り込む。同時にシングルチップマイクロコンピュータ50にIRQ0割込が発生し、データトランスファコントローラDTCを起動する。データトランスファコントローラDTCは、前記取り込まれたデータを、セントロニクスインタフェース回路51のデータレジスタから、バッファRAM52へ転送する。バッファRAM52のアドレスをインクリメントしつつ、インプットストローブ信号に所定の変化が発生する毎に、TCRに指定した回数だけ、前記転送を繰り返す。ホストから送られるデータを中央処理装置CPUの介在なく、データトランスファコントローラDTCが転送する。但し、内部バスIAB、IDBを経由して、外部バスに接続された、セントロニクスインタフェース回路51のデータレジスタ及びバッファRAM52のリード/ライトを行うために、中央処理装置CPUを転送毎にストールすることになる。
【0168】
ステッピングモータ57,58の駆動には、データトランスファコントローラDTCは、タイマAのコンペアマッチ0割込によるデータ転送で、第1のデータ転送はランダムアクセスメモリRAMDからパルス出力装置PIOの出力バッファレジスタへバイトサイズ・リピートモードで転送し、第2のデータ転送はランダムアクセスメモリRAMDからタイマAの比較レジスタへワードサイズ・ノーマルモードで転送する。第2のデータ転送はモータの加減速制御用である。
【0169】
印字データの転送において、データトランスファコントローラDTCはタイマBのコンペアマッチ0割込によるデータ転送では、印字データバッファ54から印字ヘッド55へ、バイトサイズ・ブロック転送モードで転送する。図34の例において出力バッファ1〜出力バッファ3はカラーデータの格納を想定しており、それらは出力バッファ54に割り当てられている。
【0170】
中央処理装置CPUは、前記バッファRAM52に格納されたデータに基づいてキャラクタジェネレートROM53を参照し、前記データをフォントデータに変換する。データを、例えば、一行分変換し、印字データバッファRAM54に格納する。その後、データトランスファコントローラDTC及びタイマ、パルス出力回路を用いて、キャリッジリターンモータ58を駆動する。キャリッジリターンモータ58の回転によって、印字ヘッド55が移動する。印字ヘッド55の移動に合わせて、印字データバッファRAM54から印字ヘッド55へのデータ転送を行なう。印字データは1フォントの各列のデータを1ブロックとして転送する。例えば1フォントが24×24ドットとし、前記1ブロックは24ビット即ち、3バイトである。タイマBは、コンペアマッチ0によってタイマ出力端子に0レベル(ロウレベル)を出力し、このときの割込によってデータトランスファコントローラDTCを起動して、3回のデータ転送を行う。3つのフォントデータの1列ずつを3回のブロック転送として転送する。コンペアマッチ1によってタイマ出力端子に1レベル(ハイレベル)を出力する。印字データはかかるタイマ出力端子の0レベルから1レベルへの変化時に24ドットずつの3列が一括して印字される。
【0171】
シリアルコミュニケーションインタフェース受信完了割込によるデータ転送では、シリアルコミュニケーションインタフェースの送信データレジスタから、ランダムアクセスメモリRAMDへ、バイトサイズ・ノーマルモードで転送する。モードレジスタDTMRはH’2000を設定する。レジスタSARは送信データレジスタのアドレスを設定し、固定とする。レジスタDARはランダムアクセスメモリRAMDの先頭アドレスを設定し、インクリメントとする。
【0172】
シリアルコミュニケーションインタフェース送信完了割込によるデータ転送では、ランダムアクセスメモリRAMDに用意された送信データをシリアルコミュニケーションインタフェースの送信データレジスタへ、バイトサイズ・ノーマルモードで転送する。モードレジスタDTMRはH’8000を設定する。ソースアドレスレジスタSARはランダムアクセスメモリRAMDの先頭アドレスを設定し、インクリメントとする。ディスティネーションアドレスレジスタDARは送信データレジスタのアドレスを設定し、固定とする。なお、送信完了割込フラグと送信開始ビットは共通とされる。
【0173】
上記プリンタシステムでは任意の数の複数のブロック転送を行なうことができる。例えば、多色の印刷を行なうのに好適である。3原色に対応した印字データを用意し、3回のブロック転送で、1色ずつの印字データをそれぞれの印字ヘッドに転送することができる。あるいは、3回のブロック転送で3行同時印刷を行うことなどにも好適である。3回のブロック転送は、同一の起動要因、例えばタイマのコンペアマッチであってもよいし、独立した起動要因、例えば、IRQ1、2、3などとしてもよい。従来技術、例えば、前記前記平成5年3月(株)日立製作所発行『H8/3003 ハードウェアマニュアル』などに記載されているDMACでは、全体のチャネル数が選択が制限されているために、上述のようなデータ転送を実現することはできない。複数のブロック転送を行なおうとすれば、そのほかの用途に用いることができるチャネルが減少してしまうためである。例えば、所謂フルアドレスモードで4チャネル、ショートアドレスモードで8チャネルの場合、ブロック転送モード3チャネルを使用すれば、残りはフルアドレスモードで1チャネル、ショートアドレスモードで2チャネルとなってしまう。これで、モータの駆動にショートアドレスモード2チャネルを使用すれば、セントロニクスインタフェースのデータ受信や、シリアルコミュニケーションインタフェースによるホストとのデータの送信及び受信に用いることができなくなってしまう。したがって本実施例によれば、論理的・物理的規模を増加させることなく、チャネル数の制限がなくしているために、任意の用途に任意の数の転送を実現することができ、使用上の制約をなくし、システム構成上の自由度を向上して、使い勝手を向上することができる。
【0174】
セントロニクスインタフェース51のデータ転送や、印字データのデータ転送においては、外部セントロニクスインタフェースのデータレジスタや、バッファRAM52、印字ヘッド55などをリード/ライトし、この間は中央処理装置CPUをストールする。しかしながら、これは、データ転送のデータリード及びデータライトの時間に限定され、処理効率の低下を最低限にすることができる。少なくとも、従来のDMACによるデータ転送と同等の処理性能を実現できる。
【0175】
また、中央処理装置CPUのプログラムをリードオンリメモリROMに配置し、中央処理装置CPUの外部バスの使用頻度がデータトランスファコントローラDTCよりも低い場合には、内部バスDTAB、DTDBを経由して、外部バスを利用するようにすることもできる。
【0176】
ランダムアクセスメモリRAMDに設定した、パルス出力データやコンペアマッチ周期は、システムに従って固定的であり、動作中に変更する必要はないと考えられる。このような動作中に中央処理装置CPUが処理しないデータをデータ転送元とする場合には、ランダムアクセスメモリRAMCを使用するより、ランダムアクセスメモリRAMDを使用することが得策である。中央処理装置CPUは初期設定時に1回だけRAMDにライトすればよい。
【0177】
図35には本発明の第2の実施例であるシングルチップマイクロコンピュータのブロック図が示される。図35のシングルチップマイクロコンピュータは、図1のシングルチップマイクロコンピュータに対して、ダイレクトメモリアクセスコントローラDMACが追加されている。かかるダイレクトメモリアクセスコントローラDMACは、中央処理装置CPUと同様に内部バスIAB、IDBに接続されている。中央処理装置CPUとダイレクトメモリアクセスコントローラDMACは、バスコントローラBSCONTのバス権調停に基づいて、互いに排他的に動作する。
【0178】
ダイレクトメモリアクセスコントローラDMACは、特に制限はされないものの4チャネルを有し、起動要因として、中央処理装置CPUが所定の制御ビットを”1”にセットすることによって、データ転送を行なうオートリクエストや、DMA要求端子に所定の信号が与えられたときに、データ転送を行なう外部リクエスト機能を持つ。また、転送モードとして、オートリクエストのとき、中央処理装置CPUを停止し、バスを専有してデータ転送を行なうバーストモードや、1回の転送毎にバス権を解放して、中央処理装置CPUと交互に動作しつつ、データ転送を行なうサイクルスチールモードを持つ。これらの点で、データトランスファコントローラDTCと相違される。ダイレクトメモリアクセスコントローラDMACは、大規模なデータを、1回に転送することに好適である。大規模データは、リードオンリメモリROM、ランダムアクセスメモリRAMCまたは外部メモリに格納するために、内部バスIAB、IDBに接続し、かつ、これらを介して外部バスを使用するのが適当である。
【0179】
割込のイベントによるデータ転送をデータトランスファコントローラDTCで実現し、大規模データの転送にはダイレクトメモリアクセスコントローラDMACで実現することができる。また、ダイレクトメモリアクセスコントローラDMACが、所定の転送を終了すると、転送終了割込を発生する。このダイレクトメモリアクセスコントローラDMAC転送終了割込によってもデータトランスファコントローラDTCを起動することができる。これによって、ダイレクトメモリアクセスコントローラDMACが複数種類の転送を順次行なう場合に、転送情報をランダムアクセスメモリRAMC上に展開しておき、1つの転送を行なった毎に、転送終了割込でデータトランスファコントローラDTCを起動して、次の転送情報をランダムアクセスメモリRAMCからダイレクトメモリアクセスコントローラDMACに転送することができるようにするとよい。
【0180】
図36にはダイレクトメモリアクセスコントローラDMACのレジスタ構成例が示される。図36には1チャネル分のレジスタが示されている。ダイレクトメモリアクセスコントローラDMACは、これと同等のものを4組有する。ダイレクトメモリアクセスコントローラDMACのレジスタには、32ビット構成のソースアドレスレジスタSARdma、デスティネーションレジスタDARdma、16ビット構成のブロック転送カウントレジスタBTCRdma、転送カウントレジスタTCRdma、モードレジスタDMRdmaからなり、これが4チャネル分存在する。転送カウントレジスタは8ビットずつ上位TCRHdma、下位TCRLdmaに分割されている。これらのレジスタはこの順にアドレス空間上に配置される。データトランスファコントローラDTCのレジスタ構成に対してベクタアドレスレジスタVARが削除されているほかは同等である。
【0181】
モードレジスタDMRdmaはDMAEビット、DMIEビット、DMS3〜DMS0ビットを含む。DMAEビットは”1”にセットされているとき、転送許可状態であり、この状態で転送要求が発生するとダイレクトメモリアクセスコントローラDMACが起動される。DMIEビットはダイレクトメモリアクセスコントローラDMAC転送終了割込の許可/禁止を設定する。DMIEビットが”1”にセットされているとき許可状態で、DMAEビットが”0”にクリアされると割込を要求する。DMIEビットが”0”にクリアされているとき禁止であり、割込は要求されない。DMS3〜DMS0ビットは転送要因を選択する。割込と外部リクエスト及びオートリクエストが選択できる。割込は、例えば、タイマAのコンペアマッチ0・1割込、タイマBのコンペアマッチ0・1割込、SCIの送信完了・受信完了割込、A/D変換器の受信完了割込を選択可能とする。かかるレジスタは、概略、前記平成5年3月(株)日立製作所発行『H8/3003 ハードウェアマニュアル』に記載のダイレクトメモリアクセスコントローラDMACと同様であり、詳細な説明は省略する。
【0182】
ダイレクトメモリアクセスコントローラDMACの起動要因は、チャネル毎にダイレクトメモリアクセスコントローラDMAC内部で保持する。これは、起動要因が活性状態になるエッジで内部保持する。このため、起動要因の発生1回に対して、各チャネル1回の転送を行なう。起動要因が非活性状態に変化しても、活性状態を保持しても同様である。後述するDTEビットが”1”にセットされている割込要因に対してはクリアを行なわない。これは、割込コントローラIRCONTのデコーダ17で制御する。ダイレクトメモリアクセスコントローラDMACは、別の起動要因の優先度の高いチャネルの転送を行ない、データトランスファコントローラDTCがデータ転送を行なって、起動要因がクリアされてしまっても、ダイレクトメモリアクセスコントローラDMACは起動要因を内部で保持して、優先度の高いチャネルの転送が終了次第、データ転送を行なうことができる。また、データトランスファコントローラDTCが所定回数の転送を行なって、起動要因を活性状態に保持しても、1回の起動要因に対して複数回のデータ転送を行なってしまうことはない。
【0183】
図37には第2の実施例で用いられる割込コントローラIRCONTのブロック図が示される。図13に対し、まず、割込要求信号によって、ダイレクトメモリアクセスコントローラDMACの起動要求を行なう。デコーダ17の出力による要因クリアを、データトランスファコントローラDTC及びダイレクトメモリアクセスコントローラDMACのクリア要求によって行なう。更に、レジスタCIERが追加されている。ダイレクトメモリアクセスコントローラDMACの転送終了割込に対しては要因クリア信号を与えないようにする。
【0184】
図38及び図39にはレジスタCIER,DTERの構成例が示される。レジスタCIERは、CIERA、CIERB、CIERC、CIETDの4本、レジスタDTERは、DTERA、DTERB、DTERC、DTERDの4本がある。レジスタDTERは割込要因が発生した場合に、中央処理装置CPUに割込を要求するか、データトランスファコントローラDTCに起動を要求するかを指定する。レジスタCIERはDTCデータ転送後に中央処理装置CPUに割込を要求するかを選択する。割込要因に対応して、1ビットが設けられている。DTERのビットと割込要因との対応は、図2及び図3に加えて、DMA転送終了割込チャネル0〜3がベクタ番号36〜39に追加され、CIED3、CIED2、CIED1、CIED0ビット、DTED3、DTED2、DTED1、DTED0ビットが対応する。そのほかのCIERのビットも、DTERの対応するビット位置のビットと同じ割込要因に対応する。図2及び図3に記載のないビット(CIEB1、CIEB0、CIEC5、CIEC4、CIEC1、CIEC0、CIED6、CIED5、CIED4ビット、及びDTEB1、DTEB0、DTEC5、DTEC4、DTEC1、DTEC0、DTED6、DTED5、DTED4)はリザーブビットである。
【0185】
レジスタCIER、DTERの各ビットはリセットによって”0”にクリアされる。中央処理装置CPUからリード/ライト可能である。DTEビットが”1”にセットされると、データトランスファコントローラDTCが許可される。データトランスファコントローラDTCの1回のデータ転送が終了した時、対応するCIEビットが”1”にセットされていると、DTEビットが”0”にクリアされる。対応するCIEビットが”0”にクリアされていると、DTEビットは”1”を保持する。指定した回数のデータ転送が終了すると、CIEビットの状態によらず、DTEビットが”0”にクリアされる。
【0186】
CIEビットは、中央処理装置CPUの設定したデータを保持する。リザーブビットは、特に制限はされないものの、”0”に保持するものとし、中央処理装置CPUまたはデータトランスファコントローラDTCが”1”をライトすることは禁止されている。
【0187】
図13の割込コントローラIRCONTでは、DTEビットを”1”にセットすると、対応する割込要因はデータトランスファコントローラDTCの起動要因になり、中央処理装置CPUに対する割込要求は禁止されていた。本実施例の図37の割込コントローラIRCONTにおいては、DTEビット及びCIEビットが存在し、データトランスファコントローラDTCのデータ転送後に中央処理装置CPUの割込処理を行なうことができる。即ち、データトランスファコントローラDTCの1回のデータ転送終了時に、CIEビットが”0”にクリアされていれば、起動要因となった割込要因をクリアし、DTEビットは”1”を保持するようにする。CIEビットが”1”にセットされていれば、起動要因となった割込要因をクリアせず、DTEビットを”0”にクリアする。データトランスファコントローラDTCが指定された回数のデータ転送を終了した時には、前記同様である。ダイレクトメモリアクセスコントローラDMAC転送時には、DTEビットが”0”にクリアされていること、かつ、CIEビットが”0”にクリアされているときにのみ、起動要因となった割込要因をクリアする。データトランスファコントローラDTCの起動時には、転送カウンタが0でないこと、かつ、CIEビットが”0”にクリアされている場合にのみ、起動要因となった割込要因をクリアする。
【0188】
割込を許可した場合には、以下の7通りの場合がある。(1)ダイレクトメモリアクセスコントローラDMACとデータトランスファコントローラDTCの起動要因、そして中央処理装置CPUの割込要因とする場合には、ダイレクトメモリアクセスコントローラDMACで要因を選択し、DMAEビットを”1”にセットする。データトランスファコントローラDTCは対応するDTEビットを”1”にセットする。また、CIEビットを”1”にセットする。割込が発生すると、まず、ダイレクトメモリアクセスコントローラDMACとデータトランスファコントローラDTCに起動要因が与えられる。これらは、動作状態によっていずれが先に受け付けられるかはわからない。ダイレクトメモリアクセスコントローラDMACは、起動要因を内部で保持し、転送時に起動要因をクリアしない。データトランスファコントローラDTCは、データ転送を行なうと、起動要因はクリアせず、DTEビットを”0”にクリアする。DTEビットが”0”にクリアされると、中央処理装置CPUに割込を要求する。中央処理装置CPUは割込処理ルーチンで、割込要因をクリアする。転送カウンタが0でないかを確認して、0でなければDTEビットを”1”にセットして、次のデータ転送を許可する。0であれば、所要の終了処理をする。
【0189】
(2)ダイレクトメモリアクセスコントローラDMACとデータトランスファコントローラDTCの起動要因とし、中央処理装置CPUの割込要因としない場合には、ダイレクトメモリアクセスコントローラDMACで要因を選択し、DMAEビットを”1”にセットする。データトランスファコントローラDTCは対応するDTEビットを”1”にセットする。また、CIEビットを”0”にクリアする。割込が発生すると、ダイレクトメモリアクセスコントローラDMACとデータトランスファコントローラDTCに起動要因が与えられる。これらは、動作状態によっていずれが先に受け付けられるかはわからない。ダイレクトメモリアクセスコントローラDMACは、起動要因を内部で保持し、転送時に起動要因をクリアしない。データトランスファコントローラDTCは、データ転送を行なうと、起動要因をクリアし、DTEビットは”1”に保持する。DTEビットが”1”にセットされているため、中央処理装置CPUには割込は要求されない。但し、転送カウンタが0になると、DTEビットを”0”にクリアする。DTEビットが”0”にクリアされると、中央処理装置CPUに割込を要求する。中央処理装置CPUは割込処理ルーチンで、所要の終了処理をする。
【0190】
(3)ダイレクトメモリアクセスコントローラDMACの起動要因と中央処理装置CPUの割込要因とし、データトランスファコントローラDTCの起動要因としない場合には、ダイレクトメモリアクセスコントローラDMACで要因を選択し、DMAEビットを”1”にセットする。データトランスファコントローラDTCは対応するDTEビットを”0”にクリアする。また、CIEビットを”1”にセットする。割込が発生すると、ダイレクトメモリアクセスコントローラDMACに起動要因が、中央処理装置CPUに割込要求が与えられる。これらは、動作状態によっていずれが先に受け付けられるかはわからない。ダイレクトメモリアクセスコントローラDMACは、起動要因を内部で保持し、CIEビットが”1”にセットしていることに対応して、転送時に起動要因をクリアしない。中央処理装置CPUは割込処理ルーチンで、割込要因をクリアする。所要の終了処理をする。ダイレクトメモリアクセスコントローラDMACが、指定した回数の転送を終了したかは、DMEビットの状態を検査すればよい。特に制限はされないが、ダイレクトメモリアクセスコントローラDMACが、指定した回数の転送を終了した時、DMEビットを”0”にクリアするようにする。
【0191】
(4)データトランスファコントローラDTCの起動要因と中央処理装置CPUの割込要因とし、ダイレクトメモリアクセスコントローラDMACの起動要因としない場合には、ダイレクトメモリアクセスコントローラDMACのDMAEビットを”0”にクリアする。データトランスファコントローラDTCは対応するDTEビットを”1”にセットする。また、CIEビットを”1”にセットする。割込が発生すると、まず、データトランスファコントローラDTCに起動要因が与えられる。データトランスファコントローラDTCは、データ転送を行なうと、起動要因はクリアせず、CIEビットが”1”にセットしていることに対応して、DTEビットを”0”にクリアする。DTEビットが”0”にクリアされると、中央処理装置CPUに割込を要求する。中央処理装置CPUは割込処理ルーチンで、割込要因をクリアする。転送カウンタが0でないかを確認して、0でなければDTEビットを”1”にセットして、次のデータ転送を許可する。0であれば、所要の終了処理をする。
【0192】
(5)ダイレクトメモリアクセスコントローラDMACの起動要因とし、データトランスファコントローラDTCの起動要因とせず且つ中央処理装置CPUの割込要因としない場合には、ダイレクトメモリアクセスコントローラDMACで要因を選択し、DMAEビットを”1”にセットする。データトランスファコントローラDTCは対応するDTEビットを”0”にクリアする。また、CIEビットを”0”にクリアする。割込が発生すると、ダイレクトメモリアクセスコントローラDMACに起動要因が与えられる。CIEビットが”0”にクリアされていることに対応して、ダイレクトメモリアクセスコントローラDMACは、起動要因を内部で保持し、転送時に起動要因をクリアする。ダイレクトメモリアクセスコントローラDMACが、指定した回数の転送を終了すると、転送終了割込が発生する。中央処理装置CPUは割込処理ルーチンで、所要の終了処理をする。
【0193】
(6)データトランスファコントローラDTCの起動要因とし、ダイレクトメモリアクセスコントローラDMACの起動要因とせず且つ中央処理装置CPUの割込要因としない場合には、ダイレクトメモリアクセスコントローラDMACのDMAEビットを”0”にクリアする。データトランスファコントローラDTCは対応するDTEビットを”1”にセットする。また、CIEビットを”0”にクリアする。割込が発生すると、まず、データトランスファコントローラDTCに起動要因が与えられる。データトランスファコントローラDTCは、データ転送を行なうと、起動要因をクリアし、DTEビットは”1”に保持する。DTEビットが”1”にセットされているため、中央処理装置CPUには割込は要求されない。但し、転送カウンタが0になると、DTEビットを”0”にクリアする。DTEビットが”0”にクリアされると、中央処理装置CPUに割込を要求する。中央処理装置CPUは割込処理ルーチンで、所要の終了処理をする。
【0194】
(7)中央処理装置CPUの割込要因とし、ダイレクトメモリアクセスコントローラDMAC及びデータトランスファコントローラDTCの起動要因としない場合には、ダイレクトメモリアクセスコントローラDMACのDMAEビットを”0”にクリアする。データトランスファコントローラDTCは対応するDTEビットを”0”にクリアする。また、CIEビットは動作に影響しない。割込が発生すると、中央処理装置CPUに割込を要求する。中央処理装置CPUは割込処理ルーチンで、割込要因をクリアし、所要の終了処理をする。
【0195】
データトランスファコントローラDTCでCIEビットを”1”にセットしておくと、最後の転送かどうかわからない。ソフトウェアでランダムアクセスメモリ上のレジスタファイルを検査してもよい。或は、最後の転送時、即ち転送カウンタが0である時にはCIEビットを自動的に”0”にクリアするようにし、このビットの状態を検査してもよい。必ず、データトランスファコントローラDTCのデータ転送後に、中央処理装置CPUの割込処理が受け付けられるので、割込処理ルーチンでの判定処理などが不要になり、使い勝手が向上する。
【0196】
デコーダ17による要因クリア信号は、DMAC要因クリア・(〜DTE)・(〜CIE)+DTC要因クリア・(〜CIE)・(〜DTEクリア)にて表現されるように、DMAC要因選択信号またはDTCベクタ番号をデコードした信号との論理積信号とされる。DTEクリア信号は、DTC要因クリア・CIE+DTEクリアとされる。記号〜は反転を意味する。
【0197】
ダイレクトメモリアクセスコントローラDMACは、DMAEビットが”1”にセットされた状態で転送を行なう。転送が終了(転送カウンタが0)すると自動的にDMAEビットは”0”にクリアされる。”1”をライトすることのみ可能であり、”0”をライトすることはできない。更に、”1”をライトする場合も、DTEビットが”0”の状態をリード後、”1”をライトすることによって行なう。ダイレクトメモリアクセスコントローラDMACが所定回数の転送を終了(転送カウンタが0)すると、DMAEビットが”0”にクリアされ、中央処理装置CPUにダイレクトメモリアクセスコントローラDMACの転送終了割込が要求される。モードレジスタDMRdmaレジスタの他のビットをセットするために、中央処理装置CPUがビット操作命令をモードレジスタDMRdmaに対して行なう場合、モードレジスタDMRdmaをバイト単位でリードし、中央処理装置CPU内部で所望のビットを操作し、バイト単位でモードレジスタDMRdmaにライトする。このとき、DMAEビットがリード時とライト時に同じ状態であればよいが、リード時には”1”にセットされた状態で、リード後ライト前までにDMAEビットが自動的に”0”にクリアされた場合、中央処理装置CPUからは”1”がライトされることになる。上記の”1”にセットする条件とすることにより、この場合に”0”の状態を保持することができる。一方、ダイレクトメモリアクセスコントローラDMACはその特性上、上記のような場合が存在しない。また、DMAEビットが”0”の状態をリード後、”1”をライトするという動作も困難である。従って、データトランスファコントローラDTCがDMAEビットに”1”をライトすると直ちに”1”にセットされるようにする。これはDTCバス権信号によって判断される。
【0198】
図40にはDMAEビットのブロック図が示される。DMAEビットはフリップフロップFF1で構成されている。フリップフロップFF1のクリア入力はリセット信号RESETとされる。フリップフロップFF1のリセット入力RはオアゲートOR1の出力とされる。オアゲートOR1の一方の入力はアンドゲートAND4であり、オアゲートOR1の出力は、転送が終了したとき、またはデータバスから”0”をライトされたときに、活性状態になる。フリップフロップFF1のセット入力SはアンドゲートAND3Bの出力とされる。
【0199】
フリップフロップFF1の出力は、図示しない制御回路に与えられて、ダイレクトメモリアクセスコントローラDMACの動作を許可する。また、クロックドインバータCIVを介して、モードレジスタDMRdmaのリード時にデータバスに出力され、アンドゲートAND5を介して、割込要求信号とされる。更に、反転信号がアンドゲートAND2を介して、フリップフロップFF2のセット入力Sとされる。アンドゲートAND2の他方の入力は、モードレジスタDMRdmaのリード信号である。従ってフリップフロップFF2は、DMAEビットが”0”の状態をリードしたとき、セットされる。
【0200】
フリップフロップFF2の出力はオアゲートOR3Aに入力される。一方の入力はDTCバス権アクノリッジ信号とされ、これらの論理和であるオアゲートOR3Aの出力が、モードレジスタDMRdmaのライト信号、データバスと共にアンドゲートAND3Bに入力される。従って、CPUバス権のとき、フリップフロップFF2がセット状態でデータ”1”をライトした場合、DTCバス権のとき、フリップフロップFF2に依らずデータ”1”をライトした場合に、アンドゲートAND3Bの出力は活性状態となる。この場合にフリップフロップFF1がセットされる。
【0201】
前記の通り、モードレジスタDMRdmaは、ダイレクトメモリアクセスコントローラDMACのレジスタの内、最後のアドレスに配置されているので、アドレスの順序に書込めば、設定の途中でDMAEビットを”1”にセットしてしまい、ダイレクトメモリアクセスコントローラDMACが誤動作することを防ぐことができる。或は、先頭アドレスに配置する場合は、データトランスファコントローラDTCのディスティネーションアドレスレジスタDARをデクリメントとして、最後にモードレジスタDMRdmaを書込む様にすればよい。いずれの場合も、モードレジスタDMRdmaは先頭または最後のアドレスとして、データトランスファコントローラDTCのデータ転送時に最後に書込めるようにすればよい。或は、データトランスファコントローラDTCのNEXTEビットを”1”にセットして、複数のデータ転送を行うことにより、ダイレクトメモリアクセスコントローラDMACのレジスタのアドレスの配置が任意であっても対応が可能である。
【0202】
図41にはダイレクトメモリアクセスコントローラDMACの転送終了後、データトランスファコントローラDTCによってダイレクトメモリアクセスコントローラDMACのレジスタ設定を行ってダイレクトメモリアクセスコントローラDMACを再起動させる例をメモリマップによって示してある。ダイレクトメモリアクセスコントローラDMACの第1のレジスタ設定は中央処理装置CPUが行なう。また、中央処理装置CPUは、ダイレクトメモリアクセスコントローラDMACの第2、第3のレジスタ設定を行う情報をランダムアクセスメモリRAMC上に配置しておく。第1〜第3のレジスタ設定は、いずれも転送終了割込を許可状態(DMIEビットを”1”にセット)に設定しておく。また、データトランスファコントローラDTCのレジスタファイルをランダムアクセスメモリRAMD上に配置し、DMA転送終了割込で起動する。即ち、DMACチャネル0を対象とし、DTED3ビットを”1”にセットする。転送元は、前記第2のレジスタ設定の先頭アドレス、転送先はダイレクトメモリアクセスコントローラDMACのレジスタの先頭アドレスとし、SAR・DARはインクリメントとし、転送回数(BTCR)は2とする。ブロック転送モードを使用し、データサイズはワード、ブロックサイズ(TCRH、TCRL)は7とする。
【0203】
中央処理装置CPUがDMAEビットを”1”にセットすると、ダイレクトメモリアクセスコントローラDMACに対して行われた第1のレジスタ設定情報により、所定の起動要因によって、ダイレクトメモリアクセスコントローラDMACを起動し、データ転送を行なう。指定した回数のデータ転送を行なうと、DMAEビットが”0”にクリアされて、転送終了割込が発生し、データトランスファコントローラDTCを起動する。これによって第2のレジスタ設定を行う情報をダイレクトメモリアクセスコントローラDMACのレジスタに転送する。レジスタ設定のDMAEビットに相当するビットを”1”にセットしておく。DMAEビットが”1”にセットされて、第2のデータ転送を行なう。
【0204】
ダイレクトメモリアクセスコントローラDMACの第2のレジスタ設定情報により、所定の起動要因によって、ダイレクトメモリアクセスコントローラDMACを起動し、データ転送を行なう。指定した回数のデータ転送を行なうと、DMAEビットが”0”にクリアされて、転送終了割込が発生し、データトランスファコントローラDTCを起動する。第3のレジスタ設定を行う情報をダイレクトメモリアクセスコントローラDMACのレジスタに転送する。レジスタ設定のDMAEビットに相当するビットを”0”にクリアしておく。DMAEビットが”1”にセットされずに、ダイレクトメモリアクセスコントローラDMACは待機状態・割込要求状態となる。
【0205】
データトランスファコントローラDTCが、指定回数の転送を終了したので、DTEビットを”0”にクリアして、中央処理装置CPUにダイレクトメモリアクセスコントローラDMACの転送終了割込要求を発生する。中央処理装置CPUは必要な終了処理を行なうことができる。なお、DMAEビットは負論理の割込要因フラグである。
【0206】
次に上記第2実施例の変形実施例を説明する。先ず、この変形実施例においては図42に示されるように、データトランスファコントローラDTCのモードレジスタDTMRのビット6にCIEビットを持たせてある。これによって、割込コントローラ内のレジスタCIERを削除することができる。
【0207】
この変形実施例におけるダイレクトメモリアクセスコントローラDMACのレジスタ構成は図43に示される。モードレジスタDMRdmaにENBビットが追加されている。かかるビットが”1”にセットされていると、ダイレクトメモリアクセスコントローラDMACのデータ転送時の起動要因となった割込要因のクリアが許可される。同時に、ダイレクトメモリアクセスコントローラDMACの起動要因となった割込要因は割込コントローラには、割込を要求しないようにされる。また、かかるビットが”0”にクリアされていると、ダイレクトメモリアクセスコントローラDMACのデータ転送時の起動要因となった割込要因のクリアは禁止される。同時に、ダイレクトメモリアクセスコントローラDMACの起動要因となった割込要因も割込コントローラに、割込を要求する。
【0208】
図44には第2の実施例の変形例で用いられる割込コントローラのブロック図が示される。図37に対し、CIERレジスタが削除され、制御回路18が追加されている。一方、ダイレクトメモリアクセスコントローラDMACは、ENBビットが”1”にセットされているときのみ、要因クリア信号が出力される。また、ENBビットと、要因選択ビットとが選択回路60に入力されて、ENBビットが”1”にセットされたチャネルの起動要因に選択された割込要因に対しては、選択信号が出力される。この選択信号が、制御回路18に入力されて、前記割込要因の割込コントローラへの割込要求を阻止する。レジスタCIERを削除したことにより、論理的、物理的規模を縮小できる。
【0209】
割込を許可した場合には、以下の7通りの場合がある。(1)ダイレクトメモリアクセスコントローラDMACと、データトランスファコントローラDTCの起動要因とし、中央処理装置CPUの割込要因とする場合には、ダイレクトメモリアクセスコントローラDMACで要因を選択し、DMAEビットを”1”にセット、ENBビットを”0”にクリアする。データトランスファコントローラDTCは対応するDTEビットを”1”にセットする。また、レジスタ情報のCIEビットを”1”にセットする。割込が発生すると、まず、ダイレクトメモリアクセスコントローラDMACとデータトランスファコントローラDTCに起動要因が与えられる。これらは、動作状態によっていずれが先に受け付けられるかはわからない。ダイレクトメモリアクセスコントローラDMACは、起動要因を内部で保持し、転送時に要因クリア信号を出力しない。データトランスファコントローラDTCは、データ転送を行なうと、起動要因はクリアせず、DTEビットを”0”にクリアする。DTEビットが”0”にクリアされると、中央処理装置CPUに割込を要求する。中央処理装置CPUは割込処理ルーチンで、割込要因をクリアする。転送カウンタが0でないかを確認して、0でなければDTEビットを”1”にセットして、次のデータ転送を許可する。0であれば、所要の終了処理をする。
【0210】
(2)ダイレクトメモリアクセスコントローラDMACと、データトランスファコントローラDTCの起動要因とし、中央処理装置CPUの割込要因としない場合には、ダイレクトメモリアクセスコントローラDMACで要因を選択し、DMAEビットを”1”にセット、ENBビットを”0”にクリアする。データトランスファコントローラDTCは対応するDTEビットを”1”にセットする。また、レジスタ情報のCIEビットを”0”にクリアする。割込が発生すると、ダイレクトメモリアクセスコントローラDMACとデータトランスファコントローラDTCに起動要因が与えられる。これらは、動作状態によっていずれが先に受け付けられるかはわからない。ダイレクトメモリアクセスコントローラDMACは、起動要因を内部で保持し、転送時に要因クリア信号を出力しない。データトランスファコントローラDTCは、データ転送を行なうと、起動要因をクリアし、DTEビットは”1”に保持する。DTEビットが”1”にセットされているため、中央処理装置CPUには割込は要求されない。但し、転送カウンタが0になると、DTEビットを”0”にクリアする。DTEビットが”0”にクリアされると、中央処理装置CPUに割込を要求する。中央処理装置CPUは割込処理ルーチンで、所要の終了処理をする。
【0211】
(3)ダイレクトメモリアクセスコントローラDMACの起動要因及び中央処理装置CPUの割込要因とし、データトランスファコントローラDTCの起動要因としない場合には、ダイレクトメモリアクセスコントローラDMACで要因を選択し、DMAEビットを”1”にセット、ENBビットを”0”にクリアする。データトランスファコントローラDTCは対応するDTEビットを”0”にクリアする。割込が発生すると、ダイレクトメモリアクセスコントローラDMACに起動要因が、中央処理装置CPUに割込要求が与えられる。これらは、動作状態によっていずれが先に受け付けられるかはわからない。ダイレクトメモリアクセスコントローラDMACは、起動要因を内部で保持し、転送時に要因クリア信号を出力しない。中央処理装置CPUは割込処理ルーチンで、割込要因をクリアする。所要の終了処理をする。ダイレクトメモリアクセスコントローラDMACが、指定した回数の転送を終了したかは、DMAEビットの状態を検査すればよい。特に制限はされないが、ダイレクトメモリアクセスコントローラDMACが、指定した回数の転送を終了した時、DMAEビットを”0”にクリアするようにする。
【0212】
(4)データトランスファコントローラDTCの起動要因及び中央処理装置CPUの割込要因とし、ダイレクトメモリアクセスコントローラDMACの起動要因としない場合には、ダイレクトメモリアクセスコントローラDMACのDMAEビットを”0”にクリアする。データトランスファコントローラDTCは対応するDTEビットを”1”にセットする。また、レジスタ情報のCIEビットを”1”にセットする。割込が発生すると、まず、データトランスファコントローラDTCに起動要因が与えられる。データトランスファコントローラDTCは、データ転送を行なうと、起動要因はクリアせず、DTEビットを”0”にクリアする。DTEビットが”0”にクリアされると、中央処理装置CPUに割込を要求する。中央処理装置CPUは割込処理ルーチンで、割込要因をクリアする。転送カウンタが0でないかを確認して、0でなければDTEビットを”1”にセットして、次のデータ転送を許可する。0であれば、所要の終了処理をする。
【0213】
(5)ダイレクトメモリアクセスコントローラDMACの起動要因とし、データトランスファコントローラDTCの起動要因と中央処理装置CPUの割込要因とはしない場合には、ダイレクトメモリアクセスコントローラDMACで要因を選択し、DMAEビット、ENBビットを”1”にセットする。データトランスファコントローラDTCは対応するDTEビットを”0”にクリアする。割込が発生すると、ダイレクトメモリアクセスコントローラDMACに起動要因が与えられる。ダイレクトメモリアクセスコントローラDMACは、起動要因を内部で保持し、転送時に要因クリア信号を出力する。ダイレクトメモリアクセスコントローラDMACが、指定した回数の転送を終了すると、転送終了割込が発生する。中央処理装置CPUは割込処理ルーチンで、所要の終了処理をする。
【0214】
(6)データトランスファコントローラDTCの起動要因とし、ダイレクトメモリアクセスコントローラDMACの起動要因と中央処理装置CPUの割込要因とはしない場合には、ダイレクトメモリアクセスコントローラDMACのDMAEビットを”0”にクリアする。データトランスファコントローラDTCは対応するDTEビットを”1”にセットする。また、レジスタ情報のCIEビットを”0”にクリアする。割込が発生すると、まず、データトランスファコントローラDTCに起動要因が与えられる。データトランスファコントローラDTCは、データ転送を行なうと、起動要因をクリアし、DTEビットは”1”に保持する。DTEビットが”1”にセットされているため、中央処理装置CPUには割込は要求されない。但し、転送カウンタが0になると、DTEビットを”0”にクリアする。DTEビットが”0”にクリアされると、中央処理装置CPUに割込を要求する。中央処理装置CPUは割込処理ルーチンで、所要の終了処理をする。
【0215】
(7)中央処理装置CPUの割込要因とし、ダイレクトメモリアクセスコントローラDMACとデータトランスファコントローラDTCの起動要因としない場合には、ダイレクトメモリアクセスコントローラDMACのDMAEビットを”0”にクリアする。データトランスファコントローラDTCは対応するDTEビットを”0”にクリアする。また、CIEビットは動作に影響しない。割込が発生すると、中央処理装置CPUに割込を要求する。中央処理装置CPUは割込処理ルーチンで、割込要因をクリアし、所要の終了処理をする。
【0216】
図45には上述の第2実施例の変形実施例におけるデータ転送制御の全体的なフローチャートが示される。ステップSS1、SS2、SS3、SS11、SS12、SS13が、中央処理装置CPUのソフトウェアによる動作、そのほかがハードウェアによる動作である。データトランスファコントローラDTCによるデータ転送を行う場合、まず、ランダムアクセスメモリRAMD(又はRAMDとRAMC)上に、ベクタとレジスタ情報を設定する(SS1)。対応するDTEビットを”1”にセットする(SS2)。割込許可ビットを”1”にセットして、割込を許可する(SS3)。以降、中央処理装置CPUは割込が要求されるまで、他の処理を行うことができる。指定された割込の発生を待ち(SS4)、割込が発生すると、割込コントローラがDTC起動要求を発生する(SS5)。データトランスファコントローラDTCは、前記の通り、ベクタのリードを行い、レジスタ情報のリード、データ転送、レジスタ情報のライトを指定された回数繰り返す(SS6)。転送カウンタが0でなく(SS7)、かつ、CIEビットが”0”にクリアされている(SS8)の場合、割込要因をクリアして(SS9a)、割込待ち状態になる(SS4)。転送カウンタが0であるか(SS7)、CIEビットが”1”にセットされているか(SS8)の場合、対応するDTEビットを”0”にクリアする(SS9b)。そして中央処理装置CPUに割込を要求する(SS10)。
【0217】
中央処理装置CPUがソフトウェアで、割込要因をクリアする(SS11)。CIEビットが”1”にセットしてある場合は、転送カウンタが0でなければ(SS12)、DTEビットを”1”にセットして(SS13)、割込待ち状態になる(SS4)。転送カウンタが0の後は、更に別のデータ転送を行うのであれば(SS14)、レジスタ情報から再設定を行う。なお、割込の許可(SS3)は、2回目からは省くこともできる。
【0218】
以上の各実施例によれば以下の作用効果を得るものである。(1)データトランスファコントローラDTCの、データ転送制御情報(レジスタ情報若しくはレジスタファイル)をランダムアクセスメモリRAMD(又はその他のランダムアクセスメモリ)上に配置し、データトランスファコントローラDTC起動時にランダムアクセスメモリRAMからデータトランスファコントローラDTCに格納して、データ転送を行ない、データ転送終了後にデータ転送情報をランダムアクセスメモリRAM上に退避することにより、データトランスファコントローラDTCの物理的・論理的規模の増加を防ぐことができ、或は、多数の起動要求または転送要求に対応できる。アドレスレジスタのビット数を十分に大きくできる。かつ、ランダムアクセスメモリRAMDはデータトランスファコントローラDTCと専用バスDTAB,DTDBで直結されているので、中央処理装置CPUとデータトランスファコントローラDTCの同時動作、特に、中央処理装置CPUのリードオンリメモリROMまたは外部メモリからの命令フェッチとデータトランスファコントローラDTCのランダムアクセスメモリRAMDのリード/ライトを同時動作させることが可能になるので、シングルチップマイクロコンピュータまたは半導体集積回路の処理速度を向上できる。望ましくは、DTCベクタテーブルとレジスタ情報の双方をランダムアクセスメモリRAMDに、或いはDTCベクタテーブルをランダムアクセスメモリRAMDに配置しておく。
【0219】
(2)データトランスファコントローラDTCとランダムアクセスメモリRAMDを32ビットバスで接続し、32ビット単位でリード/ライト可能にしたことにより、データトランスファコントローラDTCの動作を高速化し、応答時間を短縮し、マイクロコンピュータ及びマイクロコンピュータを用いたシステムの高性能化を実現できる。
【0220】
(3)データトランスファコントローラDTCとランダムアクセスメモリRAMDとの間を中央処理装置CPUとランダムアクセスメモリRAMDとの間より大きなビット数で結合することによって、配線領域の増加を最小限にすることができる。
【0221】
(4)ランダムアクセスメモリRAMDのリード/ライトを1ステートで行なうことにより、バスの調停動作を容易にし、データトランスファコントローラDTCの動作を高速化し、応答時間を短縮し、マイクロコンピュータ及びマイクロコンピュータを用いたシステムの高性能化を実現できる。
【0222】
(5)更に、データトランスファコントローラDTCに直接接続されないランダムアクセスメモリRAMCを設けることにより、中央処理装置CPUとデータトランスファコントローラDTCが互いに動作を制約することを少なくし、同時動作を容易にして、さらに、シングルチップマイクロコンピュータまたは半導体集積回路の処理速度を向上できる。
【0223】
(6)NEXTEビットを採用して1つの起動要求または転送要求で、複数のデータ転送を可能としたことにより、中央処理装置CPUの負荷をさらに軽減して、さらにシングルチップマイクロコンピュータまたは半導体集積回路の処理速度を向上できる。また、プログラムの作成効率を向上できる。任意の起動要因で、任意の数の転送を可能としたことにより、即ち、多数の若しくは実質的に全ての割り込み要因に対応して任意の数のデータ転送を起動できるようにしたことにより、任意の用途に任意のデータ転送を行なうことができ、使用上の制約をなくし、システム構成上の自由度を向上し、使い勝手を向上することができる。
【0224】
(7)データトランスファコントローラDTCのバス権優先順位を中央処理装置CPUより高くし、データトランスファコントローラDTCの動作にバスを使用しない状態を含めることによって、中央処理装置CPUが長期間に渡って、動作を停止させられることを防ぐことができ、処理速度の低下を最小限とすることができる。
【0225】
(8)データ転送制御情報(レジスタ情報)を、ベクタ方式によって間接的に指定可能とすることにより、任意組数の転送情報を配置し、任意組数の任意の転送モードの転送を実現することができる。また、メモリの利用効率を向上することができる。
【0226】
(9)更に、ダイレクトメモリアクセスコントローラDMACを設けて、ダイレクトメモリアクセスコントローラDMACの転送終了割込でデータトランスファコントローラDTCを起動して、データトランスファコントローラDTCのブロック転送モードを使用して、ダイレクトメモリアクセスコントローラDMACのレジスタの更新と再起動を可能にしたことにより、中央処理装置CPUの負荷なく、複数の異なった設定のダイレクトメモリアクセスコントローラDMACのデータ転送を順次実行することができる。ダイレクトメモリアクセスコントローラDMACの動作許可ビット(DMAE)をダイレクトメモリアクセスコントローラDMACのレジスタの先頭または最後のアドレスに配置することによって、レジスタ再設定後に動作を許可することが容易にできる。
【0227】
(10)ダイレクトメモリアクセスコントローラDMACは内部で起動要因を保持することによって、1つの起動要因によって、データトランスファコントローラDTC及びダイレクトメモリアクセスコントローラDMACを任意の組合せで動作させることができる。
【0228】
(11)中央処理装置CPU、データトランスファコントローラDTC、ダイレクトメモリアクセスコントローラDMACに対して、割込要因を互いに排他的に選択しないことによって、割込発生によって、データトランスファコントローラDTCによるデータ転送を行なった後に、中央処理装置CPUに割込を要求するかしないかを選択可能にし、データトランスファコントローラDTCによるデータ転送に、毎回中央処理装置CPUが必要な処理を行なうことができ、使い勝手を向上することができる。
【0229】
(12)CIEビットをデータトランスファコントローラDTCのレジスタ情報に含めることによって、レジスタCIERを削除して、論理的規模を削除することができる。特に、割込要因が大きくなったときに効果的である。
【0230】
(13)ダイレクトメモリアクセスコントローラDMACに要因クリア許可ビットを設けることによって、データトランスファコントローラDTC、中央処理装置CPUへの割込の要求を容易に制御することができる。
【0231】
以上本発明者によってなされた発明を実施例に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【0232】
例えば、アドレスレジスタのビット数は32ビットに限定されない。中央処理装置CPUまたは半導体集積回路装置のアドレス空間に応じて、変更できる。例えば、16Mバイトのアドレス空間であれば、24ビットとすればよい。或いは、転送対象を、I/OとランダムアクセスメモリRAMDを含むアドレスに限定すれば、16ビットなどとすることができる。また、ソースアドレスレジスタSARとディスティネーションアドレスレジスタDARのビット数を相異なるようにしてもよい。ビット数を小さくすれば、レジスタファイルの全体的なバイト数を縮小でき、レジスタファイルのリード/ライトに要する時間を短縮できる。これによって、起動が要求されてからデータ転送を行なうまでの時間を更に短縮できる。1つの起動要因で複数のデータ転送を行な場合に起動要求から最後のデータ転送を行なうまでの時間を更に短縮でき、リアルタイム性を向上できる。或は、データトランスファコントローラDTCの起動頻度が高い場合に、処理効率を向上できる。中央処理装置CPUがストールされる最大の時間を短縮できる。
【0233】
ランダムアクセスメモリRAMDのリード/ライトはバイト・ワードに限定してもよい。応答時間が長くなるが、データトランスファコントローラDTCの制御回路及びランダムアクセスメモリRAMDの入出力回路の論理的・物理的規模を縮小でき、DTDBのバス幅を縮小できるため、マイクロコンピュータ乃至は半導体集積回路全体の規模を縮小して、製造費用を削減できる。
【0234】
中央処理装置CPUのプログラムは、リードオンリメモリROMに配置するほか、外部メモリとすることができる。外部アドレス、外部データバスの入出力タイミングは、例えばPAB、PDBと同様にすることができる。同様に、中央処理装置CPUの作業領域であるメモリはランダムアクセスメモリRAMCに限らず、外部メモリとすることができる。リードオンリメモリROMまたはランダムアクセスメモリRAMCは内蔵しなくてもよい。データトランスファコントローラDTCとランダムアクセスメモリRAMD間のバス(DTAB、DTDB)とは独立したバス(IAB、IDB)を介して、中央処理装置CPUがプログラムのリードを行なうことができればよい。
【0235】
データトランスファコントローラDTCのベクタアドレスはランダムアクセスメモリRAMDとするほか、リードオンリメモリROMに配置してもよい。ベクタアドレスのリード時に中央処理装置CPUをストールすることになるが、シングルチップマイクロコンピュータの動作開始後に、ランダムアクセスメモリRAMDに所望のアドレス(レジスタ情報格納先アドレス)をライトする手順を省くことができる。特にデータトランスファコントローラDTCのレジスタ情報(レジスタファイル)の配置をRAMDに限定し、ベクタ長を16ビットに限定した場合などに好適である。データトランスファコントローラDTCのレジスタファイルについても、ランダムアクセスメモリRAMDに配置するほか、外部メモリとすることができる。PAB、PDBに接続された入出力ポートまたはバッファ回路を介して、外部アドレス入出力、データの入出力を行なうようにすればよい。また、ランダムアクセスメモリRAMDはリード/ライト可能な別のメモリ例えば、EEPROM(エレクトリカリ・イレーザブル・アンド・プログラマブルROM)などとすることができる。
【0236】
ランダムアクセスメモリRAMDは、いずれかのバス(DTAB、DTDBまたはIAB、IDB)を排他的に使用して動作するもののほか、両方のバスを同時に使用してリード/ライトできる、完全デュアルポート形式を採用してもよい。中央処理装置CPUがバスIAB・IDBを使用して、データトランスファコントローラDTCがバスDTAB・DTDBを使用して、同時にランダムアクセスメモリRAMDをリード/ライトした場合には、一方がウェイトされるようにしてもよい。これらの場合には、ランダムアクセスメモリRAMCを削除しても、使い勝手の低下を最小限にすることができる。
【0237】
また、データトランスファコントローラDTC、割込コントローラ、バスコントローラの具体的な回路構成についても種々変更可能である。データトランスファコントローラDTCは中央処理装置CPUまたはDMACのハードウェアの一部を共有してもよい。
【0238】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるシングルチップマイクロコンピュータに適用した場合について説明したが、それに限定されるものではなく、その他の半導体集積回路装置、例えば、デジタルシグナルプロセッサ(DSP)を中心にした半導体集積回路装置にも適用可能であり、本発明は少なくとも、データ処理装置とデータ転送装置を内蔵した半導体集積回路装置に適用することができる。
【0239】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【0240】
すなわち、データ転送装置の転送制御情報を第1の記憶手段に設け、データ転送装置と第1の記憶手段を第2のバス手段で直接接続し、かかる第1の記憶手段から転送情報を取り出して、データ転送装置が動作するようにしたから、データ転送装置が第1の記憶手段をリード/ライト中であっても、データ処理装置がバスを使用して、第1の記憶手段以外のメモリまたは機能ブロックまたはモジュールをリード/ライトすることができる。更にデータ転送装置が第1の記憶手段をリード/ライトしていない場合、データ処理装置が第1のバス手段を使用して、第1の記憶手段をリード/ライトできる。これによって、データ処理装置とデータ転送装置がバスアクセスを伴って並列的に動作でき、シングルチップマイクロコンピュータなどの半導体集積回路の処理速度若しくは処理能率を向上させることができる。さらに、データ転送装置の転送制御情報をデータ転送装置とは別体の第1の記憶手段に配置することによって、他種類の転送制御情報を記憶密度の高い記憶手段に置くことが容易になり、物理的規模を縮小し、シングルチップマイクロコンピュータのような半導体集積回路の製造費用を削減し、或は、適正な規模または製造費用で、転送チャネル数を増大することができるという効果を保証する。以上によって、システム構成上の自由度を向上し、使い勝手を向上させることができる。
【図面の簡単な説明】
【図1】本発明の第1実施例に係るシングルチップマイクロコンピュータの主要部のブロック図である。
【図2】第1実施例に係るシングルチップマイクロコンピュータの割込要因の一部を示す説明図である。
【図3】第1実施例に係るシングルチップマイクロコンピュータの割込要因の残りを示す説明図である。
【図4】第1実施例に係るシングルチップマイクロコンピュータのアドレスマップである。
【図5】内部のバス接続状態を主体として示した第1実施例に係るシングルチップマイクロコンピュータのブロック図である。
【図6】データトランスファコントローラのレジスタ構成図である。
【図7】モードレジスタDTMRの一部のビットの機能説明図である。
【図8】モードレジスタDTMRの残りのビットの機能説明図である。
【図9】データトランスファコントローラのレジスタ機能と動作モードとの対応を示す説明図である。
【図10】データトランスファコントローラの詳細な一例ブロック図である。
【図11】データトランスファコントローラの転送制御情報若しくはレジスタ情報のメモリ上でのマッピング例を示す説明図である。
【図12】DTC許可レジスタの一例説明図である。
【図13】割込コントローラの一例ブロック図である。
【図14】ランダムアクセスメモリRAMDの一例ブロック図である。
【図15】ランダムアクセスメモリとデータトランスファコントローラとの一例レイアウト図である。
【図16】バスコントローラの一例ブロック図である。
【図17】データトランスファコントローラの全体的な動作フローチャートである。
【図18】図17のステップS1の詳細な一例動作フローチャートである。
【図19】図17のステップS2においてRAMDをアクセスするときの当該ステップの詳細な一例動作フローチャートである。
【図20】図17のステップS2においてRAMD以外をアクセスするときの当該ステップの前半に係る詳細な一例動作フローチャートである。
【図21】図17のステップS2においてRAMD以外をアクセスするときの当該ステップの後半に係る詳細な一例動作フローチャートである。
【図22】図17のステップ3のノーマルモードにおける詳細な一例動作フローチャートである。
【図23】図17のステップ3のリピートモードにおける前半の詳細な一例動作フローチャートである。
【図24】図17のステップ3のリピートモードにおける後半の詳細な一例動作フローチャートである。
【図25】図17のステップ3のブロック転送モードにおける前半の詳細な一例動作フローチャートである。
【図26】図17のステップ3のブロック転送モードにおける後半の詳細な一例動作フローチャートである。
【図27】図17のステップ4においてRAMDをアクセスするときの当該ステップに係る詳細な一例動作フローチャートである。
【図28】図17のステップ4においてRAMD以外をアクセスするときの当該ステップに係る前半の詳細な一例動作フローチャートである。
【図29】同じく図17のステップ4においてRAMD以外をアクセスするときの当該ステップに係る図28に続く詳細な一例動作フローチャートである。
【図30】同じく図17のステップ4においてRAMD以外をアクセスするときの当該ステップに係る図29に続く詳細な一例動作フローチャートである。
【図31】データトランスファコントローラによるノーマルモードでの第1回目のデータ転送における内部バスの一例動作タイミング図である。
【図32】同じくデータトランスファコントローラによるノーマルモードでの図31に続く第2回目のデータ転送における内部バスの一例動作タイミング図である。
【図33】第1実施例に係るシングルチップマイクロコンピュータを用いたシステムの一例であるプリンタシステムの主要部を示すブロック図である。
【図34】図33のシステムにおけるデータトランスファコントローラの使用方法の一例を示す説明図である。
【図35】本発明の第2の実施例に係るシングルチップマイクロコンピュータの主要部のブロック図である。
【図36】第2実施例のシングルチップマイクロコンピュータに含まれるダイレクトメモリアクセスコントローラのレジスタ構成図である。
【図37】第2実施例のシングルチップマイクロコンピュータに含まれる割込コントローラのブロック図である。
【図38】第2実施例における一部のデータ転送許可レジスタ及び割込許可レジスタの構成図である。
【図39】第2実施例における残りのデータ転送許可レジスタ及び割込許可レジスタの構成図である。
【図40】ダイレクトメモリアクセスコントローラのDMAEビットの一例ブロック図である。
【図41】ダイレクトメモリアクセスコントローラ及びデータトランスファコントローラの双方を用いるデータ転送動作の一例をメモリマップで示す説明図である。
【図42】第2実施例の変形実施例に係るシングルチップマイクロコンピュータに用いるデータトランスファコントローラのレジスタ構成図である。
【図43】第2実施例の変形実施例に係るシングルチップマイクロコンピュータに用いるダイレクトメモリアクセスコントローラのレジスタ構成図である。
【図44】第2実施例の変形実施例に係るシングルチップマイクロコンピュータに用いる割込コントローラのブロック図である。
【図45】第2実施例の変形実施例に係るシングルチップマイクロコンピュータにおけるデータ転送制御の全体的なフローチャートである。
【符号の説明】
CPU 中央処理装置
DTC データトランスファコントローラ
IRCONT 割り込みコントローラ
701 割り込み要求信号
707 割り込みベクタ番号
801 DTC起動要求信号
802 DTCベクタ番号
RAMD ランダムアクセスメモリ
RAMC ランダムアクセスメモリ
ROM リードオンリメモリ
IAB,IDB 内部バス
DTAB,DTDB 内部バス
DMAC ダイレクトメモリアクセスコントローラ
Claims (9)
- 第1のバス手段に接続されるデータ処理装置、データ転送装置、第1の記憶手段、第2の記憶手段、及び外部との入出力手段を供え、前記データ転送装置と第1の記憶手段を第2のバス手段によって相互に接続し、
前記入出力手段から割り込みが要求される割り込み制御手段を更に有し、
前記割り込み制御手段は前記データ処理装置へ割込要求信号を出力すると共に前記データ転送装置へデータ転送の起動要求信号を出力し、前記入出力手段からの割り込み要求に対して前記割り込み信号又は前記起動要求信号を択一的に活性化し、
前記データ転送装置は、データ転送制御情報が設定されるレジスタ手段を更に有し、
前記第1の記憶手段に格納されたレジスタ情報を前記第2のバス手段を介して前記レジスタ手段に対しロードし、
前記レジスタ手段に格納されたレジスタ情報をもとにデータ転送制御が可能とされ、
前記割り込み制御手段は、前記起動要求信号の活性化と共に割り込み要因に応ずるベクタ番号を出力し、
前記データ転送装置は、そのベクタ番号に基づいて第1の記憶手段上のベクタテーブルを利用し、前記レジスタ情報の所在を得るものであることを特徴とする半導体集積回路。 - 前記データ転送装置による第2のバス手段を利用した前記第1の記憶手段に対するアクセスと、前記データ処理装置による前記第1のバス手段を利用した前記第2の記憶手段に対するアクセスとを並行して行なうことが可能にされたものであることを特徴とする請求項1記載の半導体集積回路。
- 前記入出力手段は前記割り込み制御手段に割り込みを要求するためのフラグ手段を有し、前記データ転送制御情報に、前記フラグ手段をクリアするか否かを決定するための情報を有するものであることを特徴とする請求項2記載の半導体集積回路。
- 第1の制御ビットと第2の制御ビットを有し、前記割り込み制御手段は、前記入出力手段からの割り込み要求に対し、第1の制御ビットが第1の状態のときは前記割り込み信号を活性化し且つ前記起動要求信号を非活性とし、第1の制御ビットが第2の状態のときは、前記起動要求信号を活性化し、このとき第2の制御ビットの第1の状態においては割り込み要求信号を非活性とし、また、第2の制御ビットの第2の状態においては前記データ転送装置のデータ転送後に前記割込要求信号を活性化するものであることを特徴とする請求項1記載の半導体集積回路。
- 前記第2のバス手段のデータバスのビット数が、前記第1のバス手段のデータバスのビット数より大きいことを特徴とする請求項4記載の半導体集積回路。
- データ処理装置と、データ転送装置と、前記データ転送装置のデータ転送制御情報を格納する第1の記憶装置と、前記データ処理装置が実行するプログラムを内蔵した第2の記憶装置と、データ処理装置の作業領域とされる第3の記憶装置と、前記データ処理装置と前記データ転送処理装置と前記第2の記憶装置と前記第3の記憶装置とを接続する第1のバスと、前記データ転送装置と第1の記憶装置とを接続する第2のバスと、前記データ転送装置の起動を要求することができる周辺回路に接続される第3のバスと、前記周辺回路から割り込み要求信号を受付可能な割り込み制御手段と、前記第1のバスと第3のバスを接続可能とするバス制御手段とを含み、
前記第1の記憶装置はデータ転送情報の所在を示すベクタテーブル情報を格納し、
前記データ転送装置は、前記ベクタテーブル情報を基に前記データ転送制御情報を前記データ転送装置に含まれるレジスタ手段に読み込むことによって前記データ転送装置のデータ転送動作が決定され、
前記割り込み制御手段は、前記割り込み要求信号に基づいてデータ転送装置に対する起動要求信号の活性化と共に割り込み要因に応ずるベクタ番号を出力し、
前記データ転送装置は、前記ベクタ番号に基づいて第1の記憶装置上の前記ベクタテーブル情報に格納される情報のうち、前記レジスタ手段にロードすべきデータ転送制御情報の所在を得るものであることを特徴とする半導体集積回路。 - 前記データ転送装置による第2のバスを利用した前記第1の記憶装置に対するアクセスと、前記データ処理装置による前記第1のバスを利用した前記第2の記憶装置に対するアクセスとを並行して行なうことが可能とされる請求項6記載の半導体集積回路。
- バスマスタ手段としてのデータ転送装置とデータ処理装置と、前記データ処理装置のアドレス空間上の所定の領域に配置される第1及び第2の記憶手段と、前記データ転送装置が前記第1記憶手段をアクセスするための第2のバスと、前記データ処理装置が前記第2のバスを介さずに前記第2の記憶手段をアクセスするための第1のバスと、前記データ転送装置に対する起動要求を示す割込信号を受け付け可能な割込制御手段とを有し、
前記第1の記憶手段は前記データ転送装置の転送動作を決定するための転送制御情報が複数種類格納可能にされ、
前記データ転送装置は、前記転送制御情報を格納可能なレジスタ手段を有し、
前記複数の転送制御情報は、前記データ転送装置の1回の起動要求に応じて、複数種類の前記転送制御情報を基にした複数のデータ転送を指定可能な情報を含み、
前記割り込み制御手段は、前記割り込み要求信号に基づいてデータ転送装置に対する起動要求信号の活性化と共に割り込み要因に応ずるベクタ番号を出力し、
前記データ転送装置は、前記ベクタ番号に基づいて第1の記憶装置上の前記ベクタテーブル情報に格納される情報のうち、前記レジスタ手段にロードすべきデータ転送制御情報の所在を得るものであることを特徴とする半導体集積回路。 - 前記データ転送装置による第2のバスを利用した前記第1の記憶手段に対するアクセスと、前記データ処理装置による前記第1のバスを利用した前記第2の記憶手段に対するアクセスとを並行して行なうことが可能とされる請求項8記載の半導体集積回路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP33554494A JP3708979B2 (ja) | 1994-12-21 | 1994-12-21 | 半導体集積回路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP33554494A JP3708979B2 (ja) | 1994-12-21 | 1994-12-21 | 半導体集積回路 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH08180008A JPH08180008A (ja) | 1996-07-12 |
JP3708979B2 true JP3708979B2 (ja) | 2005-10-19 |
Family
ID=18289769
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP33554494A Expired - Fee Related JP3708979B2 (ja) | 1994-12-21 | 1994-12-21 | 半導体集積回路 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3708979B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002312163A (ja) * | 2001-04-17 | 2002-10-25 | Denso Corp | 情報処理装置、情報処理方法 |
JP2005107873A (ja) | 2003-09-30 | 2005-04-21 | Oki Electric Ind Co Ltd | 半導体集積回路 |
JP2006107041A (ja) * | 2004-10-04 | 2006-04-20 | Hitachi Ltd | ハードウェアイベントハンドルモジュール |
JP5136000B2 (ja) * | 2007-11-05 | 2013-02-06 | トヨタ自動車株式会社 | 生産指示装置 |
-
1994
- 1994-12-21 JP JP33554494A patent/JP3708979B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH08180008A (ja) | 1996-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5634099A (en) | Direct memory access unit for transferring data between processor memories in multiprocessing systems | |
US7958298B2 (en) | System and method for providing address decode and virtual function (VF) migration support in a peripheral component interconnect express (PCIE) multi-root input/output virtualization (IOV) environment | |
JP3619532B2 (ja) | 半導体集積回路装置 | |
KR100225744B1 (ko) | 동적연쇄화조작동안레이스상태를막는방법및장치 | |
JP4226085B2 (ja) | マイクロプロセッサ及びマルチプロセッサシステム | |
JP2001216194A (ja) | 演算処理装置 | |
WO2002071239A2 (en) | Data processing apparatus and system and method for controlling memory access | |
JPWO2006098135A1 (ja) | バスコントローラ | |
JP3708979B2 (ja) | 半導体集積回路 | |
EP0301582B1 (en) | Memory address generation apparatus | |
JP2004227049A (ja) | データ転送装置、半導体集積回路及びマイクロコンピュータ | |
JP3936694B2 (ja) | 半導体集積回路装置および半導体集積回路装置のデータ転送方法 | |
JPH11232213A (ja) | 入出力装置におけるデータ転送方式 | |
US20080209085A1 (en) | Semiconductor device and dma transfer method | |
JP2001056793A (ja) | 情報処理装置 | |
JP3839068B2 (ja) | 半導体集積回路装置 | |
JP3905660B2 (ja) | マイクロコンピュータ及びマイクロコンピュータシステム | |
GB2107091A (en) | Device for data processing | |
JPH08137784A (ja) | 情報処理装置 | |
JP2594611B2 (ja) | Dma転送制御装置 | |
JP2687716B2 (ja) | 情報処理装置 | |
US20060064553A9 (en) | Data processing apparatus and system and method for controlling memory access | |
JP3474143B2 (ja) | 2ポートマイクロプロセッサ | |
JP3139310B2 (ja) | ディジタル信号処理装置 | |
JPH0736806A (ja) | Dma方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20041019 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20041109 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041228 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050802 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050805 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080812 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090812 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090812 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100812 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110812 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110812 Year of fee payment: 6 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110812 Year of fee payment: 6 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120812 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120812 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130812 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |