米国特許情報 | 欧州特許情報 | 国際公開(PCT)情報 | Google の米国特許検索
 
     特許分類
A 農業
B 衣類
C 家具
D 医学
E スポ−ツ;娯楽
F 加工処理操作
G 机上付属具
H 装飾
I 車両
J 包装;運搬
L 化学;冶金
M 繊維;紙;印刷
N 固定構造物
O 機械工学
P 武器
Q 照明
R 測定; 光学
S 写真;映画
T 計算機;電気通信
U 核技術
V 電気素子
W 発電
X 楽器;音響


  ホーム -> 計算機;電気通信 -> 株式会社日立製作所

発明の名称 半導体集積回路装置
発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開2003−162497(P2003−162497A)
公開日 平成15年6月6日(2003.6.6)
出願番号 特願2002−265192(P2002−265192)
出願日 平成4年4月30日(1992.4.30)
代理人 【識別番号】100089071
【弁理士】
【氏名又は名称】玉村 静世
【テーマコード(参考)】
5B061
5B062
【Fターム(参考)】
5B061 DD01 DD07 DD11 DD12 RR02 RR03 
5B062 DD08
発明者 池内 敏真 / 河野 辰彦 / 渡辺 照一 / 三ツ石 直幹
要約 課題
データ単位以上の任意のデータブロックに対して繰返しデータ転送を行うことができるデータ転送装置を提供する。

解決手段
転送先アドレスを指定可能な第1アドレスレジスタ(MARA)と、転送元アドレスを指定可能な第2アドレスレジスタ(MARB)と、データブロックサイズを指定可能な第1転送カウンタ(ETCRA:TCRA)と、前記データブロックサイズのデータ転送の回数を指定可能な第2転送カウンタ(ETCRA:TCRB)とを具備し、前記半導体集積回路装置は、前記転送先及び転送元アドレスを変化させることで前記データブロックサイズのデータ転送をした後、前記転送元のアドレスを初期値に設定する単位動作を、前記第2転送カウンタで指定した回数だけ行うブロック転送モードを有する。データ転送制御装置の応用範囲を容易に広げることが可能となる
特許請求の範囲
【請求項1】 転送先アドレスを指定可能な第1アドレスレジスタと、転送元アドレスを指定可能な第2アドレスレジスタと、データブロックサイズを指定可能な第1転送カウンタと、前記データブロックサイズのデータ転送の回数を指定可能な第2転送カウンタとを具備し、前記転送先及び転送元アドレスを変化させることで前記データブロックサイズのデータ転送をした後、前記転送元のアドレスを初期値に設定する単位動作を、前記第2転送カウンタで指定した回数だけ行うブロック転送モードを有する半導体集積回路装置。
【請求項2】 請求項1において、前記第1転送カウンタは、転送カウントレジスタと、実行転送カウントレジスタとを含み、前記ブロック転送モードにおいて、前記第1転送カウンタは、前記転送カウントレジスタを前記データブロックサイズのデータ転送より小さい第1サイズのデータ転送を何回行うかを指定するのに使用し、前記実行転送カウントレジスタを前記第1サイズのデータ転送を何回行ったかをカウントすることに使用することで前記データブロックサイズを指定する半導体集積回路装置。
【請求項3】 請求項1又は2において、制御回路と、転送制御レジスタとを更に具備し、前記制御回路は、前記転送制御レジスタの内容に基づいて、前記ブロック転送モードか否かを判定する半導体集積回路装置。
【請求項4】 転送先のアドレスを指定可能な第1アドレスレジスタと、転送元のアドレスを指定可能な第2アドレスレジスタと、前記第1アドレスレジスタと前記第2アドレスレジスタ間のデータ転送の回数を指定可能な転送カウントレジスタと、前記第1アドレスレジスタと前記第2アドレスレジスタ間のデータ転送の回数をカウント可能な実行転送カウントレジスタとを具備し、前記転送先又は転送元の一方のアドレスを変化させながら前記転送カウントレジスタで指定された回数のデータ転送を行う単位動作後、前記実行転送カウントレジスタの値及び前記転送先又は転送元の一方のアドレスを初期値に設定し直し、前記単位動作を繰り返すリピート転送モードを有する半導体集積回路装置。
【請求項5】 請求項4において、制御回路と、転送制御レジスタとを更に具備し、前記制御回路は、前記転送制御レジスタの内容に基づいて、前記リピート転送モードか否かを判定する半導体集積回路装置。
発明の詳細な説明
【0001】
【産業上の利用分野】本発明は、データ転送制御装置にかかり、例えば、データ転送制御装置を内蔵したシングルチップマイクロコンピュータに利用して有効な技術に関するものである。
【0002】
【従来の技術】シングルチップマイクロコンピュータは、昭和59年11月30日オーム社発行の『LSIハンドブック』P540およびP541に記載されるように、中央処理装置(CPU)を中心にしてプログラム保持用のROM(リードオンリメモリ)、データ保持用のRAM(ランダムアクセスメモリ)、およびデータの入出力を行うための入出力回路などの機能ブロックが1つの半導体基板上に形成されてなる。本発明者らは、かかるシングルチップマイクロコンピュータに前記CPUとは独立にデータ転送を行なうダイレクトメモリアクセスコントローラ(DMAC)を内蔵することを検討した。かかるDMACについて記載された文献の例として、昭和62年9月(株)日立製作所発行の『日立16ビットマイクロプロセッサHD641016』P169乃至P206がある。
【0003】かかるDMACは、CPUのソフトウエアによる起動あるいは外部端子による起動によってメモリ−メモリ間のデータ転送を行なうほか、タイマあるいはシリアルコミュニケーションインタフェース(SCI)などの入出力回路の要求する割込みによっても起動することが可能である。また、DMACはメモリ−メモリ間のデータ転送を行なうための2本のアドレスレジスタ(転送元アドレスと転送先アドレスを指定する)を、例えば4チャネル分内蔵している。前記アドレスレジスタはマイクロコンピュータのアドレス空間に相当するビット数、例えば、アドレス空間が16Mバイトであれば24ビットを有する。
【0004】
【発明が解決しようとする課題】しかしながら、本発明者らの検討によれば、かかるDMACについて以下の問題点のあることが明らかにされた。即ち、第1に、前記CPUのソフトウエアによる起動あるいは外部端子による起動によってメモリ−メモリ間のデータ転送を行なう場合には、転送元・転送先のアドレスを任意に選択できるように、アドレスレジスタはアドレス空間に対応したビット数、例えばアドレス空間が16Mバイトの場合は24ビットが必要であるが、前記割込みによってDMACを起動する場合には、前記データ転送の一方は前記入出力回路のいずれかであることが大部分であり、かかる入出力回路のアドレスの領域は多くの場合、アドレス空間に比較して小さく、例えば256バイトのような連続した領域とされる。このため、メモリ−入出力回路間などのデータ転送の場合には、データ転送元或はデータ転送先を指定する一方のアドレスの上位ビットは常に同一とされ、これによって、アドレスレジスタの上位ビットは無駄になっている。
【0005】第2に、割込みによってDMACを起動する要因は前記入出力回路の割込み要因に相応して多く必要とされることである。例えば、前記SCIの送信完了割込みによってDMACを起動し、CPUのソフトウエアの介在なく連続送信を行なう場合、転送先のアドレスはSCIの出力データレジスタであり、転送元はCPUのソフトウエアが予め用意しておく、例えばRAMのアドレスである。また、SCIを2チャネル内蔵している場合にはそれぞれのチャネルについて連続送信・連続受信を行なうようにすると、前記DMACの4チャネルすべてが必要となってしまい、タイマの割込みによるデータ転送やCPUのソフトウエア・外部端子によるデータ転送を行なうことができなくなってしまう。
【0006】また、第3に、一つの割込み要因によって1チャネルの転送しか行なうことができない。このため、例えば、タイマの割込みによって、データの出力値の変更と次のタイマ割込みの設定時間の変更を同時に行なうことはできず、CPUによりいずれかの変更を行なわなければならなかった。
【0007】第4に、転送元・転送先のアドレスはインクリメント・デクリメントあるいは固定であって、固定の場合はDMACのデータ転送単位である1バイトまたは1ワードのアドレスに対してリードまたはライトを行なうことになる。したがって、任意のデータブロックに対してくり返しデータ転送を行なうようなことはできない。
【0008】本発明の目的は、転送元並びに転送先を指定するレジスタなどの転送制御のための資源の利用効率を向上させることができるデータ転送制御装置を提供することにある。本発明の別の目的は、多数の割込み要因によるデータ転送制御を可能にすることができるデータ転送制御装置を提供することにある。本発明のその他の目的は、データ単位以上の任意のデータブロックに対して繰返しデータ転送を行うことができるデータ転送制御装置を提供することにある。
【0009】本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【0010】
【課題を解決するための手段】本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【0011】すなわち、メモリ−メモリ間のデータ転送を行なう場合の1チャネル分の資源に、最低限の資源を追加し、入出力回路の要求する割込みによっても起動するデータ転送チャネルとしては、2チャネル分として使用可能にする。このとき、入出力回路の割込みによっても起動する2チャンネル分の各データ転送チャネルにおいて、入出力回路を転送元・転送先として特定するためのレジスタは、アドレス空間に相応するビット数よりも少ないビット数を有するようにされる。
【0012】前記入出力回路の要求する割込みによっても起動する2つのデータ転送チャネルの一方のデータ転送チャネルの転送カウンタをデータブロック内の転送カウンタとし、他方のデータ転送チャネルの転送カウンタをデータブロックの転送カウンタとして利用して、メモリ−メモリ間でのデータブロック転送を実現する。
【0013】前記入出力回路の要求する割込みによっても起動するようなデータ転送チャネルを利用したデータ転送モードであって、転送カウンタを、転送回数を計数するためのカウンタと、転送回数を指定する手段とし、これによって指定された回数のデータ転送を転送カウンタとメモリアドレスレジスタとにおける計数動作を利用して行うデータ転送動作を単位動作とし、単位動作を完了する毎に、前記メモリアドレスレジスタのアドレスとカウンタの値を設定値に復帰させて、その単位動作を複数回繰返すリピート転送モードを実現する。
【0014】前記入出力回路の要求する割込みによっても起動するようなデータ転送チャネルの起動を指示するための外部からの単一信号によって与えられる起動要因を保持する保持手段を設け、前記単一信号によって与えられる起動要因を前記保持手段に保持することにより、単一の起動要因に従って、前記複数のデータ転送チャネルを介して複数のデータ転送を行なうマルチ転送モードを実現する。
【0015】
【作用】上記下手段によれば、メモリ−メモリ間のデータ転送を行なう場合の1チャネル分の資源に、最低限の資源を追加し、入出力回路の要求する割込みによっても起動するデータ転送チャネルとして2チャネル分として使用可能なデータ転送制御装置は、転送元並びに転送先を指定するレジスタなどの転送制御のための資源の利用効率を向上させ、さらに、多数の割込み要因への対応を容易化する。前記メモリ−メモリ間でのデータブロック転送、メモリ−入出力回路間でのリピート転送モードやマルチ転送モードは、データ転送制御装置の応用範囲を広げる。
【0016】
【実施例】図1には本発明にかかるデータ転送制御装置を内蔵したシングルチップマイクロコンピュータの一実施例が示される。
【0017】同図に示されるシングルチップマイクロコンピュータ100は、特に制限はされないものの、本発明にかかるデータ転送制御装置の一実施例であるDMAC1、全体の制御を司るCPU(中央処理装置)2、バスコントローラ3、ROM4、RAM5、タイマ6、SCI7、パルス出力装置(PSO)8、及び入出力ポート(IOP)91〜97などの機能ブロックからから構成され、公知の半導体製造技術により1つの半導体基板上に形成される。かかるシングルチップマイクロコンピュータの機能ブロックは相互に、アドレス・データ・リード信号・ライト信号・システムクロックなどを含む内部バス69によって相互に接続されている。CPU2,DMAC1はバスコントローラ3を介して内部バス69に接続されている。バスサイクルによるリードおよびライト動作は、CPU2,DMAC1のいずれか一方が行う。このための調停機能をバスコントローラ3が有している。前記タイマ6は、特に制限されないが、タイマA、タイマB、タイマC、及びタイマDによって構成され、前記SCI7は、特に制限されないが、SCIA及びSCIBによって構成される。シングルチップマイクロコンピュータ100はクロックパルスジェネレータCPGの端子XTAL,EXTALに接続される水晶発振子又は外部から入力される外部クロックに基づいて生成される基準クロックに同期して動作を行なう。この基準クロックの最小単位をステートと呼ぶ。尚、図においてVss,Vccは電源端子である。
【0018】特に制限はされないものの、CPU2のアドレス空間は16Mバイトであり、アドレスバスは24ビットである。ROM3、RAM4、およびDMAC1、タイマ5、SCI6、パルス出力装置8、入出力ポート91〜97などの機能ブロックのレジスタはCPU2のアドレス空間上に配置されている。図示はされないモード信号によって、シングルチップマイクロコンピュータの動作モードが選択され、入出力ポートの一部をアドレスバス,データバス,制御信号として使用し、外部バスを拡張することもできる。そのほかの入出力ポートもタイマ6,SCI7,DMAC1の入出力端子と兼用され、ソフトウェアによって端子機能が切り替わるようになっている。。
【0019】前記DMAC1は、CPU2によって指定される起動要因・転送アドレス・転送データ数などに基づいて、特に制限はされないものの、メモリ−メモリ間、またはメモリ−入出力回路間でデータ転送制御を行う。このときのメモリとしては、前記ROM4,RAM5の他に、図示はされないシングルチップコンピュータ外部のメモリをも含む。また、入出力回路としては、特に制限はされないものの、前記タイマ5、SCI6、パルス出力装置8、入出力ポート91〜97などの内蔵レジスタとされる。
【0020】図2には前記DMAC1の一実施例ブロック図が示される。
【0021】このDMAC1は、メモリ−入出力回路のデータ転送を行なうときはチャネルA,Bの合計2チャネルとして利用され、メモリ−メモリ間のデータ転送を行なうときは1チャネルとして使用される。チャンネルAは、24ビットのメモリアドレスレジスタMARA(MARA−L,MARA−H,MARA−E)、8ビットのI/OアドレスレジスタIOARA、8ビットの実行転送カウントレジスタETCRA、8ビットの転送カウントレジスタTCRA、8ビットの制御レジスタDTCRAを含む。チャンネルBは、24ビットのメモリアドレスレジスタMARB(MARB−L,MARB−H,MARB−E)、8ビットのI/OアドレスレジスタIOARB、8ビットの実行転送カウントレジスタETCRB、8ビットの転送カウントレジスタTCRB、8ビットの制御レジスタDTCRBを含む。これら2チャネルに共通して、24ビットの算術論理演算器ALU(ALU−L,ALU−H,ALU−E)、アドレスバッファAB(AB−L,AB−H,AB−E)、データバッファDB(DB−L,DB−H)、メモリインタフェースMIF(MIF−L,MIF−H,MIF−E,MIF−C)、そして制御部CONTを備える。制御部CONTは制御レジスタDTCRA,DTCRBの内容と、DMAC1外部から与えられる起動要因などに基づいて動作し、DMAC1各部の制御を行なう。なお、前記メモリアドレスレジスタMARA,MARBを総称して或はその何れか一方を単んにメモリアドレスレジスタMARとも称する。同様に、I/OアドレスレジスタIOARA,IOARBを単にI/OアドレスレジスタIOARと、実行転送カウントレジスタETCRA,ETCRBを単に実行転送カウントレジスタETCRと、転送カウントレジスタTCRA,TCRBを単に転送カウントレジスタTCRと、そして制御レジスタDTCRA,DTCRBを単に制御レジスタDTCRとも称する。
【0022】前記各レジスタ、算術論理演算器ALU、メモリインタフェースMIFは、DMAC内部バスとしてのAバス,Bバス等を介して接続されている。さらにAバスのビット23〜0はアドレスバッファABに接続されている。アドレスバッファAB−L,AB−H,AB−Eは内部バス69に含まれる24ビットのアドレスバスに接続される。データバッファDB−L,DB−Hは内部バス69に含まれる16ビットのデータバスに接続される。
【0023】各レジスタはAバスにデータを出力し、そのデータは、アドレスバッファAB、算術論理演算器ALU、又はメモリインタフェースMIFに転される。算術論理演算器ALU、メモリインタフェースMIFはBバスにデータを出力し、そのデータは、各レジスタに転送可能にされる。CPU2がライトしたデータは、バス69に含まれる内部データバス,メモリインタフェースMIF,及びBバスを経由して、各レジスタに書き込み可能にされる。CPU2がリードすべきデータは、Aバス,メモリインタフェースMIF,及びシングルチップマイクロコンピュータ100のバス69に含まれる内部データバスを経由して、CPU2に読み込まれる。さらに、転送カウントレジスタTCRはCバスにデータを出力することができ、実行転送カウントレジスタETCRと算術論理演算器ALUの下位8ビット(ALU−L)に転送することができる。算術論理演算器ALUは、Aバスの入力と、Cバスまたは定数値との演算が可能である。なお、図2においてSFTはシフタであり、SELはセレクタである。
【0024】図3には前記DMAC1のレジスタ構成がチャネルA,チャネルBに分けて示されている。
【0025】前述の通り、24ビットのメモリアドレスレジスタMAR、8ビットのI/OアドレスレジスタIOAR、実行転送カウントレジスタETCR、転送カウントレジスタTCR、制御レジスタDTCRをそれぞれ2本ずつ有している。制御レジスタDTCRA,DTCRBにはそれぞれ機能の異なる制御ビットが割り当てられる。
【0026】DMAC1は、メモリ−メモリ間のデータ転送を行なう1チャネルとして使用するか、それぞれメモリ−入出力回路のデータ転送を行なう2チャネルとして使用するかを選択することができる。この選択は制御レジスタDTCRAのビット1、2(TRSA1、TRSA2ビット)で行ない、前記ビットがすべて1にセットされていると、メモリ−メモリ間のデータ転送を行なう1チャネルとなり、それ以外の設定ではメモリ−入出力回路のデータ転送を行なう2チャネルとなる。
【0027】メモリ−メモリ間のデータ転送が選択されたとき、メモリアドレスレジスタMARAは転送元アドレスを指定し、メモリアドレスレジスタMARBは転送先のアドレスを指定するアドレスレジスタとして使用される。
【0028】メモリ−入出力回路のデータ転送が選択されたときは、各チャネルにおいて、メモリアドレスレジスタMARとI/OアドレスレジスタIOARが転送元と転送元を指定するアドレスレジスタとして使用される。このとき、I/OアドレスレジスタIOARは、必ず入出力回路のアドレスを指定するアドレスレジスタとなる。すなわち、転送元が入出力回路のとき、I/OアドレスレジスタIOARが転送元を指定し、メモリアドレスレジスタMARが転送先のアドレスを指定する。また、転送先が入出力回路のときは、メモリアドレスレジスタMARが転送元、I/OアドレスレジスタIOARが転送先のアドレスを指定するアドレスレジスタとして使用される。I/OアドレスレジスタIOARは8ビットであるため、上位16ビットのアドレスは固定値とされ、特に制限はされないものの上位16ビットはすべて1とされる。この場合、I/OアドレスレジスタIOARで指定できるアドレスはH’FFFF00〜H’FFFFFF(H’は16進数を意味する)の256バイトである。従って、斯るアドレスに入出力回路のアドレスが割り当てられている。
【0029】図4にはシングルチップマイクロコンピュータ100のアドレスマップが示される。
【0030】特に制限ははされないものの、内蔵ROM4は32kバイト、内蔵RAM5は1kバイトとされ、それぞれ、アドレスH’000000〜H’007FFF、H’FFFB00〜H’FFFEFFに配置され、タイマ6、SCI7、などの入出力回路及びDMAC1の各レジスタはアドレスはH’FFFF00〜H’FFFFFFに配置されている。このとき前記メモリアドレスレジスタMARはアドレス空間の全てを指定可能であるが、8ビットのI/OアドレスレジスタIOARは内蔵入出力回路だけをを指定可能であることが理解されよう。なお、アドレスH’FFFF00〜H’FFFFFFに外部空間を一部設けてもよい。
【0031】図5乃至図7にはメモリ−入出力回路間でのデータ転送を行なう場合の制御レジスタDTCRの機能が示される。
【0032】制御レジスタDTCRは、転送を許可するDTEビット、転送終了時に割込みを要求するかしないかを選択するDIEビット、転送をくり返すか終了するかを選択するRPEビット、転送サイズを選択するSZビット、転送後にMARのインクリメントを行うかデクリメントを行うかを選択するIDビット、起動要因を選択するTRS0〜2ビットによって構成されている。
【0033】DTEビットを0にクリアした状態ではDMAC1の該当チャネルは停止状態とされる。DTEビットを1にセットすると、図7に示されるTRS0〜2ビットで指定した起動要因が発生したときにデータ転送が行われる。ここで、TRSA2,TRSA1に夫々1が設定されているときはメモリ−メモリ間の転送とされるので、図7にも示されるように、メモリ−入出力回路間での転送では、各チャネルにおけるTRS2,TRS1の双方が共に1に設定される状態は除外されている。RPEビットが0にクリアされているときには、所定回の転送が終了して、ETCR:TCR(実行転送カウントレジスタETCRと転送カウントレジスタTCRとを連結して16ビットレジスタとして利用することを意味する)の内容が0になるとDTEビットは0にクリアされる。
【0034】DTEビットが0にクリアされているとき、DIEビットが1にセットされていれば、CPU1に対して転送終了割込みを要求する。DIEビットが0にクリアされていれば、DTEビットの状態によらず、CPU1に対しては割込みを要求しない。SZビットビットが0にクリアされている場合にはバイトデータの転送を行い、SZビットが1にセットされている場合にはワードデータの転送を行う。RPEビットとDIEビットは、図5に示されるように動作モードを指定する。
【0035】まず、転送カウンタを実行転送カウントレジスタETCRだけで8ビットレジスタとするか、実行転送カウントレジスタETCRと転送カウントレジスタTCRを連結して16ビットレジスタETCR:TCRとするかを指定する。RPEビットが0にクリアまたはDTIEビットが1にセットされているとき、転送カウンタを16ビットレジスタETCR:TCRとし、RPEビットが1にセットかつDTIEビットが0にクリアされているとき、転送カウンタを8ビットレジスタETCRとし、TCRは転送回数保持に使用される。
【0036】1回の転送終了後にはETCRまたはETCR:TCRのデクリメントが行われると共に、RPEビットとDIEビットの設定状態に応じて、メモリアドレスレジスタMARの保持アドレスがインクリメントまたはデクリメントされる。このときのメモリアドレスレジスタMARのインクリメントまたはデクリメントの指定はIDビットで行なう。インクリメントまたはデクリメントの値はSZビットによって指定され、バイトサイズのとき1、ワードサイズのとき2がインクリメントまたはデクリメントされる。
【0037】転送カウンタとして利用されるETCRまたはETCR:TCRの前記デクリメント結果が0でなければ、次に起動要因が発生するまで、該当チャネルは待機状態となる。デクリメント結果が0になったとき、RPEビットが0にクリアまたはDIEビットが1にセットされていれば、DTEビットを自動的に0にクリアして該当チャネルは停止状態となる。RPEビットが1にセットかつDIEビットが0にクリアされていれば、転送カウントレジスタTCRの内容を実行転送カウントレジスタETCRに転送し、メモリアドレスレジスタMARの内容に転送カウントレジスタTCRの内容を加算または減算して、該当チャネルは待機状態となり、さらに転送をくり返す。
【0038】TRS0〜2ビットによって指定される起動要因は、とくに制限はされないものの、図7に示されるように、タイマA、タイマB、タイマC、タイマDのコンペアマッチおよびSCIの送信終了、受信終了である。タイマA〜Dのコンペアマッチ、SCIの送信終了を起動要因に指定した場合には、メモリアドレスレジスタMARで示されるアドレスからI/OアドレスレジスタIOARで示されるアドレスへの転送が行われる。SCIの受信終了を起動要因に指定した場合には、I/OアドレスレジスタIOARで示されるアドレスからメモリアドレスレジスタMARで示されるアドレスへの転送が行われる。これらの起動要因については、前記昭和62年9月(株)日立製作所発行の『日立16ビットマイクロプロセッサHD641016』などによって公知であるので更に詳細な説明は省略する。なお、図5において、記号−は任意値を意味する。
【0039】図8にはメモリ−入出力回路間のデータ転送における、各レジスタの動作モード毎の機能が示される。
【0040】起動要因がSCI7の受信完了かそれ以外かによって、メモリアドレスレジスタMARとI/OアドレスレジスタIOARの何れが転送元アドレスを指定するか転送先アドレスを指定するかが相違される。ノーマルモード2ではメモリアドレスレジスタMARの内容が固定値とされる。また、リピートモードでは転送カウンタは8ビット長の実行転送カウントレジスタETCRとされ、ノーマルモードでは転送カウンタは16ビット長のETCR:TCRとされる。
【0041】図9にはDMAC1のメモリ−入出力回路間のデータ転送におけるノーマルモード1の一例フローチャートが示され、図10にはノーマルモード1によるデータ転送の一例タイミングチャートが示される。
【0042】ノーマルモード1は、連続したメモリ上のデータを、固定した1バイトまたは1ワードの入出力回路のレジスタとの間でデータ転送を行なうことができる。起動要因はタイマのコンペアマッチまたはSCIの受信完了・送信完了から選択できる。チャネルBは、さらに外部端子による起動を選択できる。これらの起動要因が発生したときに1回(1バイトまたは1ワード)の転送が行なわれ、転送が終了すると、再び起動要因が発生するまで待機状態とされる。これを転送カウンタ(ETCR:TCR)で指定した回数だけ繰り返す。
【0043】例えば、SCI7で複数バイトのデータを送信する場合に応用することができる。この場合、送信すべきデータをRAM上に用意し、制御レジスタDTCRのRPEビットを0にクリア、SZビットを0にクリア、IDビットを0にクリア、DIEビットを1にセットし、ETCR:TCRに送信データのバイト数(n)を、メモリアドレスレジスタMARに前記RAMの先頭アドレス(e)、I/OアドレスレジスタIOARにSCI7の送信データレジスタのアドレス(m)をライトする。この後にDTEビットを1にセットし、SCI7の送信完了割込みを許可する。SCI7が待機状態であればただちに、送信中であれば、送信完了後に、SCI送信完了割込みが発生して、DMAC1に起動が要求される。
【0044】DMACに起動が要求されると、第1ステップS1で、DMAC1は起動要因をDMAC1の内部に保持するとともに、BSC3にバス権要求を行なう。バス権が獲得できれば、第2ステップS2で、メモリアドレスレジスタMARの内容をAバスに出力し、アドレスバッファABと算術論理演算器ALUに転送する。算術論理演算器ALUではSZビットとIDビットで指定した演算(上記例では+1)を行ない、その結果をメモリアドレスレジスタMARに格納する。
【0045】第3ステップS3ではアドレスバッファABのアドレスに従ってメモリリード動作を開始する。また、転送カウンタETCR:TCRの内容をAバスに出力して、算術論理演算器ALUに転送し、デクリメントを行なう。第4ステップS4ではI/OアドレスレジスタIOARの内容をAバスに出力し、アドレスバッファABに転送する。さらに前記リードしたメモリデータをデータバスからデータバッファDBに格納する。
【0046】前記デクリメント結果が0であれば、第5ステップS5でDTEビットをクリアする。また、前記第4ステップS4でアドレスバッファABに転送されたアドレスにしたがってSCI内蔵レジスタに対するライト動作を開始し、前記データバッファDBの内容をデータバスに出力する。第6ステップS6ではライトを完了してDMAC1は停止する。DIEビットが1にセットされていれば、CPU2に対してDMAC1の転送完了割込みを発生する。
【0047】前記デクリメント結果が0でなければ、第7ステップでは前記第4ステップS4でアドレスバッファABに転送されたアドレスにしたがってSCI内蔵レジスタに対するライト動作を開始し、前記データバッファDBの内容をデータバスに出力する。これに続く第8ステップではライトを完了してDMAC1は待機状態となり、再度起動要因が発生するまで停止する。
【0048】転送終了時には、メモリアドレスレジスタMARは最後のデータの次のアドレスとされ、転送カウンタETCR:TCRは0とされている。転送カウンタETCR:TCRの最大値は65536である。なお、特に制限はされないものの、メモリ・入出力回路のリードライトは2ステートで行なうものとした。
【0049】図11にはDMAC1のメモリ−入出力回路間のデータ転送としてノーマルモード1によるSCI受信のフローチャートが示される。
【0050】このフローチャートにおいて、第2ステップS2ではI/OアドレスレジスタIOARの内容をAバスを経由してアドレスバッファABに転送し、第3ステップS3ではそのアドレスにしたがってSCI内蔵レジスタのリードを開始し、第4ステップS4ではメモリアドレスレジスタMARの内容をAバスを介してアドレスバッファABに転送すると共に算術論理演算器ALUでそのメモリアドレスを更新してこれを再度これをメモリアドレスレジスタMARに格納し、第5ステップS5及び第7ステップS7では前記SCI内蔵レジスタからリードしたデータをアドレスバッファABのメモリアドレスにしたがって書込みを行い、その外は図9の処理と同様とされる。
【0051】図12にはDMAC1のメモリ−入出力回路間のデータ転送としてノーマルモード2による動作の一例フローチャートが示される。
【0052】ノーマルモード2は、固定した1バイトまたは1ワードのメモリ上のデータと、入出力回路のレジスタ間でデータ転送を行なうことができる。起動要因はタイマのコンペアマッチまたはSCIの受信完了・送信完了から選択できる。これらの起動要因が発生した時1回(1バイトまたは1ワード)の転送を行ない、転送が終了すると、再び起動要因が発生するまで待機状態とされる。これを転送カウンタ(ETCR:TCR)で指定した回数だけ繰り返す。メモリアドレスレジスタMARの値が固定値とされる他はノーマルモード1と同様である。DIEビットが1にセットされているため、転送カウンタ(ETCR:TCR)で指定した回数の転送が終了すると、CPU2に割込みが要求される。
【0053】DMAC1に起動が要求されると、第1ステップS1では、DMAC1は起動要因をDMAC1の内部に保持するとともに、BSC3にバス権要求を行なう。バス権が獲得できれば、第2ステップS2で、メモリアドレスレジスタMARの内容をAバスに出力し、アドレスバッファABに転送する。
【0054】第3ステップS3ではアドレスバッファABが保持するアドレスでリード動作を開始する。また、転送カウンタETCR:TCRの内容をAバスに出力し、算術論理演算器ALUに転送し、デクリメントを行なう。第4ステップS4ではI/OアドレスレジスタIOARの内容をAバスに出力し、アドレスバッファABに転送する。第3ステップを介してリードしたデータをデータバスからデータバッファDBに格納する。
【0055】前記デクリメント結果が0であれば、第5ステップS5ではDTEビットをクリアする。また、アドレスバッファABのアドレスにしたがってライト動作を開始し、前記データバッファDBの内容をデータバスに出力する。これに続く第6ステップS6ではライトを完了してDMAC1は停止する。DIEビットが1にセットされていれば、CPU2に対してDMAC1の転送完了割込みを発生する。
【0056】前記デクリメント結果が0でなければ、第7ステップS7ではアドレスバッファABのアドレスにしたがってライト動作を開始し、前記データバッファDBの内容をデータバスに出力する。これに続く第8ステップS8でライト動作を完了してDMAC1は待機状態となり、起動要因が発生するまで停止される。
【0057】転送終了時に転送カウンタETCR:TCRは0となっている。なお、転送カウンタETCR:TCRの最大値は前記同様に65536であり、また、メモリ・入出力回路間のリードライトも2ステートで行われる。
【0058】図13にはDMAC1のメモリ−入出力回路間のデータ転送におけるリピートモードの一例動作フローチャートが示され、図14にはそのリピートモードによるデータ転送動作の一例タイミングチャートが示される。
【0059】リピートモードは、連続したメモリ上のデータと、固定した1バイトまたは1ワードの入出力回路のレジスタとの間で繰り返しデータ転送を行なうことができる動作モードである。起動要因はタイマ6のコンペアマッチまたはSCI7の受信完了・送信完了から選択できる。これらの起動要因が発生した時1回(1バイトまたは1ワード)の転送を行ない、転送が終了すると、再び起動要因が発生するまで待機状態とされる。これを転送カウンタ(ETCR)で指定した回数だけ繰り返すと、メモリアドレスレジスタMARと実行転送カウントレジスタETCRの内容を回復し、さらに転送を繰り返す。
【0060】例えば、シングルチップマイクロコンピュータ100が制御するステッピングモータの励磁データをパルス出力装置8を介して出力する場合に適用することができる。この場合、例えば、タイマAのコンペアマッチを起動要因に選択する。出力すべきデータをRAM5上に用意する。このデータは、例えばステッピングモータの1回転分の励磁データである。
【0061】制御レジスタDTCRのRPEビットを1にセット、SZビットを0にクリアし、IDビットを0にクリアし、DIEビットを0にクリアし、実行転送カウントレジスタETCR及び転送カウントレジスタTCRに送信データのバイト数(n)を、メモリアドレスレジスタMARに前記RAM5の先頭アドレス(e)、I/OアドレスレジスタIOARにパルス出力装置8内蔵の出力データレジスタのアドレス(m)をライトする。この後にDTEビットを1にセットし、タイマAのコンペアマッチ割込みを許可する。タイマAのコンペアマッチが発生すると、パルス出力装置8からパルスが出力されるとともに、DMAC1に起動が要求される。
【0062】DMAC1に起動が要求されると、第1ステップS1では、DMAC1は起動要因をDMAC1内部に保持するとともに、BSC3にバス権要求を行なう。バス権が獲得できれば、第2ステップS2で、メモリアドレスレジスタMARの内容をAバスに出力し、これをアドレスバッファABと算術論理演算器ALUに転送する。算術論理演算器ALUではSZビットとIDビットで指定した演算(この例では+1)を行ない、その結果をメモリアドレスレジスタMARに書き戻す。
【0063】第3ステップS3では、アドレスバッファABの保持アドレスにしたがってリード動作を開始する。また、転送カウンタETCRの内容をAバスに出力して、算術論理演算器ALUに転送し、デクリメントを行なう。第4ステップS4ではI/OアドレスレジスタIOARの内容をAバスに出力し、アドレスバッファABに転送する。また、前記リードを開始したデータをデータバスからデータバッファDBに格納する。
【0064】前記デクリメントの結果が0であれば、第5ステップS5に進み、転送カウントレジスタTCRの内容をCバスに出力して、実行転送カウントレジスタETCRに転送するとともに、算術論理演算器ALUに入力する。一方、メモリアドレスレジスタMARの内容をAバスに出力して、算術論理演算器ALUに与え、SZビットとIDビットに基づいく演算を行って、メモリアドレスレジスタMARの内容を初期値(e)に戻す。また、前記ABの保持アドレスにしたがってライト動作を開始し、前記データバッファDBの内容をデータバスに出力する。
【0065】前記デクリメント結果が0でなければ、第6ステップS6へ進み、アドレスバッファABの保持アドレスにしたがってライト動作を開始し、前記データバッファDBの内容をデータバスに出力する【0066】第7ステップS7ではライトを完了してDMAC1は待機状態となり、起動要因が発生するまで転送動作が停止される。実行転送カウントレジスタETCRと転送カウントレジスタTCRの最大値は256である。なお、前記同様に、メモリ・入出力回路間でのリード・ライトは2ステートで行なうものとした。タイマのコンペアマッチ及びパルス出力装置については、昭和63年2月(株)日立製作所発行の『日立8/16ビットマイクロコンピュータ周辺LSI』P538乃至P593などにより公知であるのでその詳細な説明は省略する。
【0067】図15乃至図18にはメモリ−メモリ間のデータ転送を行なう場合の制御レジスタDTCRA,DTCRBの機能が示される。
【0068】メモリ−メモリ間のデータ転送はTRSA1,TRAS2をいずれも1にセットすることによって選択される。メモリアドレスレジスタMARAで示されるアドレスとメモリアドレスレジスタMARBで示されるアドレスとの間でデータ転送が行なわれる。このときI/OアドレスレジスタIOARA及びIOARBは使用されない。
【0069】メモリ−メモリ間におけるデータ転送のための制御レジスタは、転送を許可するDTEAビット、転送終了時に割込みを要求するかしないかを選択するDIEAビット、転送サイズを選択するSZAビット、転送後にMARA,MARBのインクリメントを行うかデクリメントを行うかまたは固定とするかを選択するRPEA,RPEB及びIDA,IDBの各ビット、転送モードを選択するTRSA0ビット、転送中断を示すDTEBビット、メモリ−メモリ転送モード2(ブロック転送モード)のとき、転送元・転送先のいずれをブロック領域とするかを選択するDIEBビット、起動要因を選択するTRSB0〜TRSB2ビットから構成されている。
【0070】DTEAビットを0にクリアした状態ではDMAC1は停止状態とされる。DTEAビットを1にセットすると、TRSB0〜2ビットで指定した起動要因が発生したときにデータ転送が行われる。所定回数の転送が終了して、転送カウンタETCRA:TCRAの内容が0になると、DTEAビットは0にクリアされる。
【0071】DTEAビットが0にクリアされているとき、DIEAビットが1にセットされていれば、CPU1に対して転送終了割込みを要求する。DIEAビットが0にクリアされていれば、DTEAビットの状態によらず、CPU1に対しては割込みを要求しない。
【0072】前記SZAビットが0にクリアされている場合にはバイトデータの転送が行われ、SZAビットが1にセットされている場合にはワードデータの転送が行われる。
【0073】RPEA,RPEBビットとIDA,IDBビットは、メモリアドレスレジスタMARA,MARBの動作を指定する。RPEA,PREBビットが0にクリアされているときはメモリアドレスレジスタMARA,MARBの値は固定値とされる。RPEA,RPEBビットが1にセットされているときに、IDA,IDBビットが0にクリアされていればメモリアドレスレジスタMARA,MARBはインクリメントされ、またそのときIDA,IDBビットが1にセットされているれば、メモリアドレスレジスタMARA,MARBはデクリメントされる。インクリメントまたはデクリメントの値はSZAビットによって指定され、バイトサイズのときは1、ワードサイズのときは2がインクリメントまたはデクリメントされる。メモリアドレスレジスタMARA,MARBの動作はそれぞれ独立に指定できる。
【0074】TRSA0ビットは、図17に示されるように、メモリ−メモリ転送モード1とするか、メモリ−メモリ転送モード2(ブロック転送モード)とするかを選択する。TRSB0〜2ビットによって指定される起動要因は、とくに制限はされないものの、図18に示されるように、オートリクエスト、外部端子、及び前記タイマA、タイマB、タイマC、タイマDのコンペアマッチである。但し、メモリ−メモリ転送モード1とメモリ−メモリ転送モード2(ブロック転送モード)では選択できる起動要因が異なっている。
【0075】図19にはメモリ−メモリ間のデータ転送における各レジスタの動作モード毎の機能が示される。
【0076】メモリ−メモリ間転送におけるモード1及びメモリ−メモリ間転送におけるモード2(ブロック転送モード)はともに、メモリアドレスレジスタMARA,MARBがそれぞれ転送先・転送元を指定するためのアドレスレジスタとされ、ETCRA:TCRAが転送カウンタになる。メモリ−メモリ転送モード2(ブロック転送モード)ではさらに、ブロックサイズを指定するためにレジスタTCRBを使用し、ブロック内のデータをカウントするためにレジスタETCRBを使用する。I/OアドレスレジスタIOARA,IOARBは使用しない。特に制限されないが、ブロックの最大値は256(バイトまたはワード)である。
【0077】図20にはメモリ−メモリ転送モード1の一例動作フローチャートが示され、図21にはメモリ−メモリ転送モード1の一例動作タイミングチャートが示される。
【0078】メモリ−メモリ転送モード1のオートリクエストは、CPU1がDTEAビットを1にセットすると自動的に転送要求が発生して、転送を行なう動作モードである。バーストモードでは一旦DMAC1がバス権を獲得すると、転送カウンタETCRA:TCRAで指定した回数の転送を終了するまで転送を行ない、サイクルスチールモードでは一回の転送毎にCPU2にバス権を開放しつつ、転送を行なう。なお、バーストモードでは、外部端子による最優先の割込み要求(NMI)が発生すると、DTEAビットを1にセットしたまま、DTEBビットを0にクリアして、転送を中断し、CPU2にバス権を開放する。その後、CPU2がDTEAビットまたはDTEBビットを1にセットすると、これに基づいて転送を再開する。
【0079】外部端子による転送要求ではDTEAビットを1にセットした後、TRSB0〜2で指定した信号が外部端子(DREQ)に発生すると、転送を一回行ない、一回の転送が終了すると、指定した信号が外部端子(DREQ)に発生するまで待機状態となる。これを転送カウンタETCRA:TCRAで指定された回数だけ繰り返す。
【0080】DMAC1のこのような動作については、前記昭和62年9月(株)日立製作所発行『日立16ビットマイクロプロセッサHD641016』P169乃至P206などによって公知であるので更に詳細な説明は省略する。
【0081】図22にはメモリ−メモリ転送モード2の一例動作フローチャートが示される。
【0082】メモリ−メモリ転送モード2(ブロック転送モード)では、データブロックサイズをレジスタTCRB,ETCRBに格納し、データ転送の回数を転送カウンタETCRA:TCRAに指定する。
【0083】メモリ−メモリ転送モード2(ブロック転送モード)では、転送要因が発生すると、メモリアドレスレジスタMARAで示されるアドレスから、メモリアドレスレジスタMARBで示されるアドレスへデータ転送を行ない、そのメモリアドレスレジスタMARA,MARBの保持値を、RPEA,IDA,SZA,RPEB,IDB,SZBビットの指定に従ってインクリメントまたはデクリメントまたは固定とされる。さらに、レジスタETCRBの値をデクリメントする。これをレジスタETCRBの値が0になるまで繰り返す。レジスタETCRBの値が0になると、リピートモード同様にレジスタTCRBの内容をレジスタETCRBに転送し、メモリアドレスレジスタMARBの内容を初期状態に戻すとともに、転送カウンタETCRA:TCRAの内容をデクリメントする。デクリメント結果が0でなければ起動要因が発生するまで待機状態となる。起動要因が発生する毎に上記動作を転送カウンタETCRA:TCRAが0になるまで繰り返していく。
【0084】図23には前記算術論理演算器ALU、シフタSFT、及びセレクタSELの具体的な一例回路図が示される。
【0085】算術論理演算器ALUは、特に制限されないが、デクリメンタDECRMT、加算回路ADD、及びゼロ検出回路ZEROによって構成される。算術論理演算器ALUは24ビットで構成され、下位8ビット(ALU−L)は、Aバス(A0〜A7)からのデータ、さらに定数値またはCバス(C0〜C7)からの入力が選択され、かつこれらを上位に1ビットシフトするかしないか、反転するかしないかが選択されて、この選択結果が入力される。上位16ビット(ALU−H、ALU−E)はAバス(A8〜A23)からのデータと、定数値を入力する。定数値は反転するかしないかが選択される。ビット8はビット7からのシフト出力と定数値のいずれかが選択される。
【0086】定数値は、メモリアドレスレジスタMARの演算のときビット0に、転送カウンタETCR:TCRの演算のときビット8に、転送カウンタTCRの演算のときにビット16に、それぞれ1が入力され、それ以外の場合またはそれ以外のビットには0が入力される。Cバスからの入力は、リピートモードでETCRが0になったとき、またはブロック転送モードでETCRBが0になったときに選択されてTCRまたはTCRBの内容が入力され、Aバスから入力されるメモリアドレスレジスタMARAまたはMARBの内容と演算される。ワードサイズデータを転送している場合の、メモリアドレスレジスタMARのインクリメント・デクリメント及び上記演算時に、シフトが選択される。デクリメントまたは減算を行なう場合に反転が選択される。ゼロ検出回路ZEROは上位8ビットが0であり、かつ転送カウンタを8ビット長としているとき、または上位16ビットが0であるとき、1を出力して、転送終了を検出する。
【0087】図24にはレジスタの具体的な一例回路図が示される。
【0088】I/OアドレスレジスタIOARは8ビットのレジスタであり、システムクロックφが1レベルの期間にAバスに出力可能であり、システムクロックφが0レベルの期間にBバスから入力可能である。I/OアドレスレジスタIOARをAバスに出力する場合、上位16ビットのAバスには1レベルを出力するように構成している。これによってI/OアドレスレジスタIOARの指定アドレスはH’FFFF00〜H’FFFFFFとなる。特に制限はされないものの、Aバスをシステムクロックφが0レベルの期間にPチャネル型MOSによってプリチャージするようにしてもよい。このようにすればクロックゲートを削除できる。
【0089】転送カウントレジスタTCRは8ビットのレジスタであり、システムクロックφが1レベルの期間にAバスに出力可能であり、システムクロックφが0レベルの期間にBバスから入力可能であり、さらにでシステムクロックφが1レベルの期間にCバスに出力可能ある。
【0090】実行転送カウントレジスタETCRは8ビットのレジスタであり、システムクロックφが1レベルの期間にAバスに出力可能であり、システムクロックφが0レベルの期間にBバスから入力可能であり、さらにでシステムクロックφが1レベルの期間にCバスから入力可能ある。
【0091】図示はされないものの、メモリアドレスレジスタMARはI/OアドレスレジスタIOARと同じ構成のものが24ビット分設けられている。クロックゲートに相当するものは必要ない。
【0092】図25にはデータバッファ及びメモリインタフェースの具体的な一例回路図が示される。
【0093】本実施例においては、特に制限はされないものの、CPU2がDMAC1のレジスタをリードライトする場合には、8ビットバス即ち内部データバスの上位8ビットD15〜8を使用するものとした。従って、データバッファDBの下位側(DB−L)はDMAC1内部バスとは接続されていない。CPU2からライトされるデータは8ビットずつデータバッファDB−Hを介して、Bバスに出力され、下位アドレスを判定して選択されたレジスタに書き込まれる。CPU2がリードした場合には、下位アドレスを判定して、選択されたレジスタからAバスにデータが出力され、前記Aバスの内容がメモリインタフェースMIFで選択される。かかるデータはデータバッファDB−Hを介して、内部データバスに出力され、CPU2に読み込まれる。
【0094】DMAC1がデータ転送時にリードしたデータは、内部データバスから一旦データバッファDBに格納され、その後ライトデータとして内部データバスに出力する。リード時に内部データバスの上位・下位のいずれに有効データが出力されているか、およびライト時に内部データバスの上位・下位のいずれに有効データを出力するかは、バスコントローラ3が指示する。例えば、16ビットのメモリまたは入出力回路をバイトサイズでリード・ライトした場合、偶数アドレスであれば内部データバス上位に、奇数アドレスであれば下位にデータを出力するものとする。また、8ビットのメモリまたは入出力回路をリード・ライトした場合にはかならず、内部データバス上位にデータを出力するものとする。かかる8ビットのメモリまたは入出力回路をワードサイズでリードした場合には偶数アドレス・奇数アドレスの順にリードを連続して2回行なう。ライトについても同様である。特に制限はされないものの、ワードデータは偶数アドレスから始まるものに限定する。なお、DMAC1はバイトサイズデータはデータバッファの上位に、ワードサイズデータは上位・下位に格納するものとする。
【0095】図26にはDMAC1の制御部CONTに含まれる要因保持手段の具体的な一例回路図が示される。
【0096】要因保持手段は、要因選択回路(セレクタ)201,202、要因保持回路(フリップフロップ)211,212、優先順位判定回路(エンコーダ)221、タイミング制御回路231、及びクリア制御回路241によって構成される。要因選択回路201,202、要因保持回路211,212、優先順位判定回路221はDMAC1の起動を制御する。タイミング制御回路231は前記動作タイミングを生成する。なお、同図において記号*はそれが付されていない信号の反転信号であることを意味する。
【0097】選択可能な起動要因はDMAC1の外部から、要因選択回路201,202に入力される。前記TRS0〜TRS0ビットに基づいて、これらの起動要因が選択されて、要因保持回路211,212に入力される。DTEビットが0にクリアされている場合には、要因保持回路211,212は常にリセットされている。また、メモリ−メモリ転送モードのとき、チャネルBの要因保持回路212はリセットされている。
【0098】要因保持回路211,212のいずれかが1にセットされれば、優先順位判定回路221はバスコントローラ3にバス要求を行ない、タイミング制御回路231に動作指示を行なう。さらに、チャネルA、Bともに要因保持回路211,212が1にセットされていれば、チャネルAを優先する。
【0099】タイミング制御回路231はバス権アクノリッジ信号が1レベルになると、レジスタDTCRA,DTCRBの値に基づいて、前記の動作フローチャートの動作を制御する。クリア制御回路241は、タイミング制御回路231から指示される起動要因クリア信号と、優先順位判定回路221が指示するチャネル、及びTRS2〜TRS0ビットに基づいて、各起動要求元(タイマ・SCI)に起動要因のクリア信号を与える。また、実行中の要因保持回路211,212をリセットする。
【0100】チャネルA,Bが同一の起動要因を選択した場合には、2つの要因保持回路211,212がセットされ、優先度の高いチャネルAが最初に実行され、実行中に起動要因とチャネルAの要因保持回路211をクリアするが、チャネルBの要因保持回路212はセットされたままであり、チャネルAの実行終了後にチャネルBのデータ転送を実行することができる。
【0101】図27にはDMAC1の他の実施例が示される。
【0102】同図に示されるDMAC1は、夫々チャネルA、Bからなるレジスタ群を2組み有し、これらに共通のデータバッファDB(DB−L,DB−H)、算術論理演算器ALU(ALU−L,ALU−H,ALU−E)、シフタSFT、セレクタSEL、メモリインタフェースMIF(MIF−L,MIF−H,MIF−E,MIF−C)、及びアドレスバッファAB(AB−L,AB−H,AB−E)を有している。図2のDMAC1を2組設ける場合に比べて、ALUなどの回路を共通化できる分だけ、DMAC1の論理的・物理的な規模を縮小できる。
【0103】図27のDMAC1において各チャネルの優先順位は、チャネル1A>1B>2A>2Bの順に高くする。このとき、制御部CONTの要因保持手段は、図26で説明したような要因選択回路と要因保持回路を4個設け、これに応じて優先順位判定回路の論理を変更すれば、容易に実現できる。
【0104】図28にはDMAC1の状態遷移図が示される。
【0105】前記動作タイミングチャートの説明では、メモリ及び入出力回路共に2ステートでリード・ライトするものとしたが、外部に接続するメモリや入出力回路などからウェイトが要求される場合がある。ウェイトが要求されているか否かはバスコントローラ3が判定して、DMAC1に指示する。DMAC1の制御部CONTはウェイトが指示されると、リードサイクルであればTR1とTR2の間にTRWを挿入し、ライトサイクルであればTW1とTW2の間にTWWを挿入する。TRWおよびTWWでは、データバッファDB以外のDMAC1の各部は無操作状態とされる。また、8ビットのメモリまたは入出力回路をワードサイズでリード・ライトした場合に、偶数アドレス・奇数アドレス順にリード・ライトを連続して2回行なう場合などは、1回目のリード・ライトの最初のサイクルをTR1・TW1とし、2回めのリード・ライトの最後のサイクルをTR2・TW2とし、その他のサイクルは全てTRW・TWWとして、DMAC1が認識する。
【0106】図29には前記バスコントローラ3の一例ブロック図が示される。
【0107】このバスコントローラ3は、アドレスデコーダADRDEC、論理積回路ANDLOG、制御レジスタCONTREG、ウェイト制御回路WSCONT、及びアクセス制御回路ACSCONTによって構成される。アドレスデコーダADRDECはCPU2又はDMAC1が出力するアドレス信号を入力し、内蔵機能ブロックの選択信号を生成すると共に、アドレス信号を出力する。制御レジスタCONTREGは、前記バス幅指定レジスタBSWCR、アクセスステート指定レジスタASTCR、ウェイトステートコントロール許可指定レジスタWSCER、及びアドレスマルチプレクス指定レジスタMPXCRを備え、CPU2の制御でその内容が任意に設定されるようになっている。論理積回路ANDLOGは、アドレスデコーダADRDECを通して供給されるアドレス信号と制御レジスタCONTREGに含まれるレジスタBSWCR,ASTCR,WSCER,MPXCRの値の基づいて、ウェイト許可、バス幅、アクセスステート、及びアドレスマルチプレクスに関する制御信号を生成して、アクセス制御回路ACSCONTに与える。ウェイト制御回路WSCONTは内蔵機能ブロックなどから発せられるウェイト信号を受けて所要ステート数に応ずるウェイト要求をアクセス制御回路ACSCONTに与える。アクセス制御回路ACSCONTは、前記論理積回路ANDLOG及びウェイト制御回路WSCONTなどから与えられる信号を受けて、アクセス制御のための各種ストローブ信号AS,HRD,LRD,HWR,LWR、並びにCPU2やDMAC1のためのバッファ制御信号などを生成する。
【0108】DMAC1にデータ転送起動要因が発生すると、DMACバス要求の信号が1レベルにされる。このバス要求に対して、所定のタイミングでバスコントローラ3はDMAC1にバス使用を許可して、DMACバス許可の信号を1レベルとする。それ以外の時はCPU2がバスを使用できる。バスの起動信号やアドレス入力は、CPU2の出力とDMAC1の出力との間でマルチプレクスされている。すなわち、DMACバス許可の信号が1レベルであれば、DMAC1からのバスの起動信号やアドレス入力を受付け、それ以外はCPU2からのバスの起動信号やアドレス入力を受付ける。バスコントローラ3の内部の動作は、CPU2によるアクセスとDMAC1によるアクセスの何れの場合も同一とされる。リード/ライト中にCPU2/DMAC1に与えられるべきバッファ制御信号もマルチプレクスされる。
【0109】図30乃至図34には前記制御信号HH、LH、HL、LLの出力仕様が示される。
【0110】サイズはSZビットで指定される転送データのサイズであり、また、バス幅は転送の対象となるメモリまたは入出力回路のデータ幅である。T1は第1ステート、T2は第2ステート、T3は第3ステート、Twはウェイトステートである。図において記号−は対応ステートが無いことを意味する。ステートは特に制限はされないものの2ステートと、3ステート以上でリードまたはライトを行う2種類とされる。なお、4ステート以上は3ステートにウェイトを要求することによって実現する。A0はアドレスバスのビット0である。特に制限はされないものの、ワードサイズデータは必ず偶数アドレスから始まるものとされる。DMAC1のリード及びライト時には、かかる制御信号HH、LH、HL、LLに基づいて、図25のデータバッファDB−L,DB−Hの制御が行われる。CPU2のデータバッファも同様に構成することができる。
【0111】図35には本発明に係るデータ転送制御装置を適用したシングルチップマイクロコンピュータの他の実施例ブロック図が示される。
【0112】図35に示されるシングルチップマイクロコンピュータ101は、図1のシングルチップマイクロコンピュータに対して、上記説明に係るDMAC1を2個設けた点が相違される。便宜上双方のDMAC1をDMAC1−1とDMAC1−2に分けて記す。このとき、バスコントローラ33は、前記バスコントローラ3に対して、DMACバス要求信号、DMACバス許可信号を2組とし、マルチプレクサの入力を増加すれば、容易に実現することができる。バス権調停における優先順位は、例えばDMAC1−1>DMAC1−2とされる。斯る優先順位の制御は、バスコントローラ33の調停機能に含まれる。
【0113】図36には図35のシングルチップマイクロコンピュータ101を応用した制御システムの一例としてプリンタ制御システムが示される。
【0114】プリンタ制御システムは、シングルチップマイクロコンピュータ101、セントロニクスインタフェース回路301、バッファRAM302、キャラクタジェネレートROM(CGROM)303、印字データ出力用バッファとされる出力バッファRAM304、プリンタの印字ヘッド305含み、それらがシングルチップマイクロコンピュータ101の外部バス306を介して接続され、さらに印字ヘッドを機械的に移動させるためのラインフィードモータ307及びキャリッジリターンモータ308を含んで構成される。これらのモータ307及び308は、それぞれタイマ6の出力並びにパルス出力装置8の出力によって駆動制御される。ラインフィードモータ307及びキャリッジリターンモータ308は、特に制限はされないものの、ステッピングモータである。
【0115】図示しないホストプロセッサから送られてくるデータはセントロニクスインタフェース回路301を経由して、バッファRAM302に転送される。かかる転送にDMAC1−1のチャネル1(チャネル1Aと1Bを併せた構成)をメモリ−メモリ転送モード1の外部端子による起動によって使用することができる。セントロニクスインタフェース回路301のアドレスをメモリアドレスレジスタMARAに設定し、バッファRAM302のアドレスをメモリアドレスレジスタMARBに設定し、転送回数を転送カウンタETCRB:TCRBに設定する。例えば、メモリアドレスレジスタMARAは固定、メモリアドレスレジスタMARBはインクリメントモードとし、セントロニクスインタフェース回路301のストローブ信号をDREQ1端子に入力すればよい。
【0116】CPU2は、前記バッファRAM302に格納されたデータに基づいてキャラクタジェネレートROM303を参照し、前記データをフォントデータに変換する。データを例えば、一行分変換し、印字データバッファRAM304に格納する。
【0117】その後タイマA61とDMAC1−1のチャネル2A、2Bに起動をかけ、パルス出力を行ない、キャリッジリターンモータ308を駆動する。キャリッジリターンモータ308の回転によって、印字ヘッド305が移動する。印字ヘッド305の移動に合わせて、印字データバッファ304から印字データヘッド305へのデータ転送を行なう。印字データは1フォントの各列のデータを1ブロックとして転送する。例えば1フォントが24×24ドットであれば、前記1ブロックは24ビット即ち3バイトである。かかる転送にDMAC1−2のチャネル1をメモリ−メモリ転送モード2(ブロック転送モード)で、特に制限はされないものの、タイマB62のコンペアマッチによって使用することができる。
【0118】図37にはステッピングモータの制御方法の一例が示される。
【0119】本実施例では、DMAC1−1のチャネル2A、2B共にタイマAのコンペアマッチ信号によって起動する。チャネルAは内蔵RAM5からタイマAの比較レジスタTCMRへの転送を行なう。チャネル2Bは内蔵RAM5からパルス出力装置8の出力バッファレジスタNDRへの転送を行なう。パルス出力装置8は、タイマAのコンペアマッチ信号が発生すると、NDRの内容をパルス出力するものである。従って、タイマAのコンペアマッチ毎にチャネル2Aの転送により、タイマAの比較レジスタTCMRを書替え、コンペアマッチ周期即ち、パルス出力の間隔を変化させている。これによって、ステッピングモータの加速または減速を行なうことができる。モータの加速時には第1の比較レジスタの内容を次第に小さくして、パルス出力間隔を短くすれば良い。逆にモータの減速時には第1の比較レジスタの内容を次第に大きくして、パルス出力間隔を短くすれば良い。なお、タイマAのカウンタは、比較レジスタの内容と一致すると0にクリアされるように設定する。
【0120】チャネル2Bは、位相1〜位相3を通じてリピートモードで、内蔵RAM5に格納した、ステッピングモータモータの励磁データをNDRへ転送する。チャネル2Aでは、位相1及び位相3がノーマルモード1で、位相2がノーマルモード2で動作し、いずれも内蔵RAM5に格納したコンペアマッチ周期を比較レジスタTCMRへ転送する。
【0121】図38にはステッピングモータの制御時におけるメモリマップの一例が示される。
【0122】コンペアマッチ周期は、内蔵RAM5上に、アドレスRAMA1を先頭として、m2+1ワードを格納しておく。特に制限はされないものの比較レジスタは16ビットとし、コンペアマッチ周期の大きい順に格納しておく。励磁データはアドレスRAMA0を先頭として、nバイト格納しておく。
【0123】チャネル2BのレジスタETCR及びTCRにnを設定し、メモリアドレスレジスタMARに励磁データの先頭アドレスRAMA0を設定する。SZビットを0にクリア、IDビットを0にクリア、RPEビットを1にクリア、DIEビットを0にクリア、TRS2〜0ビットを全て0にクリアする。
【0124】全体の回転数をm1、加速・減速時の回転数をm2とすると、位相1では、チャネル2AのETCR:TCRにm2−1を設定し、メモリアドレスレジスタMARAにコンペアマッチ周期の先頭アドレスRAM1+2を設定する。SZビットを1にセット、IDビットを0にクリア、RPEビットを0にクリア、DIEビットを1にセット、TRS2〜0ビットを全て0にクリアする。その後、DTEビットを1にセットして、CPU2がアドレスRAMA0の内容を比較レジスタに書き込んで、タイマAを動作させ、コンペアマッチ信号を発生させればよい。かかるコンペアマッチ毎に1ワードずつRAM5の内容を比較レジスタに転送を行ない、コンペアマッチがm2回発生するとETCR:TCRが0になって、DTEビットが0にクリアされ、CPU2に割込みを要求して、チャネル2Aは停止状態になる。
【0125】位相2では、前記割込み要求により、CPU2は割込み処理ルーチンを実行して、ETCR:TCRにm1−m2×2を設定し、RPEビットを1にセットした後、DTEビットを1にセットする。コンペアマッチが発生すると、RAM1+(m2−1)×2番地の内容を比較レジスタに転送する。コンペアマッチがm1−m2×2回発生するとETCR:TCRが0になって、DTEビットが0にクリアされ、CPU2に割込みを要求して、チャネル2Aは停止状態になる。
【0126】位相3では、前記割込み要求によって、CPU2は割込み処理ルーチンを実行して、ETCR:TCRにm2を設定し、RPEビットを0にクリア、IDビットを1にセットした後、DTEビットを1にセットする。コンペアマッチが発生すると、RAM1+(m2−1)×2番地の内容からアドレスを順次を減算しつつ、RAM5の内容を比較レジスタに転送する。コンペアマッチがm2回発生するとETCR:TCRが0になって、DTEビットが0にクリアされ、CPU2に割込みを要求して、チャネル2Aは停止状態になる。
【0127】この割込み要求によって、CPU2は割込み処理ルーチンを実行して、m1回のコンペアマッチが発生し、ステッピングモータが所定回数回転し、印字ヘッド305が所定量移動したものとして、タイマAを停止し、またチャネルBのDTEビットを0にクリアして、停止する。パルス出力装置も最後の出力値を保持しつつ停止する。さらにパルス出力装置8の出力を0にクリアするようにしてもよい。
【0128】この後、ステッピングモータを逆回転する場合には、チャネル2Bは、メモリアドレスレジスタMARに励磁データの最後のアドレスRAM0+n−1を設定、IDビットを1にセットする。チャネルAは、上記動作をくり返せばよい。タイマAの比較レジスタの内容はアドレスRAMA0の内容となっているのでCPU2が転送を行なう必要はない。
【0129】あるいは、モータの停止した位置から逆回転する場合には、MARB、ETCRBの最後のデータを判定して、MARはRAMA0〜RAMA0+n−1、ETCRは1〜nの範囲で再設定すればよい。
【0130】図39にはステッピングモータの制御時における一例タイミングチャートが示される。
【0131】コンペアマッチの発生により、チャネル2A、2Bの両方の起動が要求されるが、チャネル2Aが優先度が高く、先に実行される。チャネル2Aが前記の通り1ワードの転送を行ない、比較レジスタの書き替えを行なったあと、チャネル2Bが1バイトの転送を行ない、励磁データの書き替えを行なう。この励磁データは次のコンペアマッチ時にパルス出力装置8から出力される。次のコンペアマッチは新しい比較レジスタの値によって行なわれる。
【0132】図40には前記パルス出力装置8の具体的な一例回路図が示される。
【0133】パルス出力装置8は、バッファレジスタNDR、出力データレジスタDR、バッファ許可レジスタNDER、データ方向レジスタDDRから構成される。パルス出力を行なう場合には、データ方向レジスタDDRを1にセットし、バッファ許可レジスタNDERを1にセットする。出力データレジスタDRの内部バスからのライトは禁止され、バッファレジスタNDRの内容がコンペアマッチ発生時に出力データレジスタDRに転送される。この内容は出力データレジスタDRで保持されると共に、端子Pから出力される。バッファレジスタNDRは常に内部バスからライト可能である。かかるライトはCPU2またはDMAC1のいずれであるかにはよらない。
【0134】図41には前記ステッピングモータ駆動回路の一例ブロック図が示される。
【0135】特に制限はされないものの、8極4相ステッピングモータに対して、パルス出力装置8のパルス出力信号をパワードライブ素子を介して与えている。例えば、パルス出力0、4にそれぞれ1、0レベルを出力することによって、パワードライブ素子を介して、ステッピングモータの極間に電流を流し、モータを駆動するものである。例えば、励磁データはH’1E、H’2D、H’4B、H’87を出力することによって、ステッピングモータは左方向に回転する。パワードライブ素子は、例えば、コンプリメンタリパワーMOSFETを用いることができる。
【0136】図42には印字データ出力時のメモリマップの一例が示される。
【0137】特に制限はされないものの、一行分のデータm×nバイトをアドレスBFR0を先頭とする印字データバッファに格納しておく。前記24×24ドットのフォントデータが、一行あたり40であれば、m=3、n=24×40であり、2880(3×24×40)バイトである。これを、印字データヘッドに対して一回に3バイトずつ転送する。
【0138】図43には印字データ出力時の一例タイミングチャートが示される。
【0139】印字データのタイミングはタイマBによって指定する。特に制限はされないものの、タイマBは第一、第二の比較レジスタを有し、第一のコンペアマッチによって、DMACを起動すると共に、図示はされないが入出力ポートと兼用されたタイマ出力端子に0レベルを出力する。また、第二のコンペアマッチによって、前記タイマ出力端子に1レベルを出力する。印字データは第二のコンペアマッチ時、即ち前記タイマ出力端子の0レベルから1レベルへの変化時に24ドット一括して印字され、第一のコンペアマッチ発生後、次の印字データがDMACによって転送される。
【0140】本実施例では、ラインフィードモータの駆動をタイマAで、印字タイミングをタイマBで発生したため、印字は前記位相2の定速回転の間に行なうことが望ましい。ラインフィードモータの駆動と印字タイミングの発生を、同一のタイマで行なえば、上記制約は発生しない。
【0141】図44には印字データの一例が示される。
【0142】文字データは特に制限はされないものの、ホストプロセッサから1文字2バイトで送られる。これをキャラクタジェネレートROMでフォントデータ96(3×24)バイトに展開する。1列分の3バイトデータを3バイトの印字ヘッドに割り当てている。
【0143】上記実施例では、印字ヘッドを互いに異なる連続した3バイトのアドレスとしたが、ファーストインファーストアウトのバッファとして、1バイトのアドレスとすることもできる。この場合は、RPEBビットを0にクリアして、MARBを固定とすればよい。
【0144】以上本発明者によってなされた発明を実施例に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【0145】例えば例えば、DMACの詳細な構成は、2チャネル(1組)あるいは4チャネル(2組)のほか任意のチャネル数でよい。DMACの内部バスの構成などは種々変更が可能である。また、シングルチップマイクロコンピュータの内部構成などにもなんら限定されない。タイマのチャネル数、タイマの機能、起動要因の種類等変更可能である。例えばチャネル毎に選択できる起動要因を変更することもできる。
【0146】以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるシングルチップマイクロコンピュータ及びプリンタ制御システムに適用した場合について説明したが、それに限定されるものではなく、その他の半導体集積回路装置あるいあは制御システムにも適用可能であり、本発明は少なくともデータ転送を行なう機能を有する半導体集積回路装置及び斯る半導体集積回路装置を使用した制御システムに適用することができる。例えば、FAXの読み取り・記録・搬出の3つのモータ駆動に、それぞれ2チャネル(1組)ずつのデータ転送制御装置で制御することができる。
【0147】
【発明の効果】本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【0148】すなわち、メモリ−メモリ間のデータ転送を行なう場合の1チャネル分の資源に、最低限の資源を追加して入出力回路の要求する割込みによっても起動するデータ転送の2チャネル分として使用可能にすることにより、転送元並びに転送先を指定するレジスタなどの転送制御のための資源の利用効率を向上させることができ、更に、多数の割込み要因への対応も容易に行うことができるという効果がある。また、メモリ−メモリ間でのデータブロック転送、メモリ−入出力回路間でのリピート転送モードやマルチ転送モードをデータ転送制御装置のハードウェアでサポートできるようにすることにより、データ転送制御装置の応用範囲を容易に広げることが可能になる。




 

 


     NEWS
会社検索順位 特許の出願数の順位が発表

URL変更
平成6年
平成7年
平成8年
平成9年
平成10年
平成11年
平成12年
平成13年


 
   お問い合わせ info@patentjp.com patentjp.com   Copyright 2007-2013