(57)【要約】【課題】DMA転送中に発生したDMA転送要求信号DREQを受け付ける機能がなく、DMA転送中に発生したDREQが無視されてしまう。【解決手段】DMA転送中にDREQがアサートされたことを記憶するための記憶回路と、DMA転送が終了する毎に、CPUに記憶回路の内容を確認させ、DMA転送中にDREQがアサートされていた場合には、DMACに対して新しいDMA転送要求信をアサートする手段とを備えた。【選択図】  図４
2007219641.tif 000002
【特許請求の範囲】
【請求項１】
DMA転送中にDREQがアサートされたことを記憶するための記憶回路と、
DMA転送が終了する毎に、CPUに記憶回路の内容を確認させ、DMA転送中にDREQがアサートされていた場合には、DMACに対して新しいDMA転送要求信号をアサートする手段とを有することを特徴とするダイレクトメモリアクセスコントローラ。
【請求項２】
DMA転送中にアサートされたDREQを保持し、1回のDMA転送終了後に、DMACに対して再度DREQをアサートする機能を持つステートマシンとを有することを特徴とする請求項１記載のダイレクトメモリアクセスコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコントローラLSI(以下、マイコンと呼ぶ)などに内蔵されるダイレクトメモリアクセスコントローラ（以下、DMACと呼ぶ）に関するものであり、特にDMACを使用したデータ転送中に発生した次のデータ転送要求に対しても、要求を受け付け、確実にDMACがデータ転送を行なうための方法に関するものである。
【背景技術】
【０００２】
DMACは主にマイコンに内蔵され、メモリ−メモリ間、I/O−メモリ間、I/O−I/O間のデータ転送をCPUに代わって行い、CPUの負担を減らすとともにLSIの動作効率を上げることを可能にする回路であり、DMACを使用したデータ転送はDMA転送と呼ばれている。
DMACはDMA転送要求を受け付けると、バス権を獲得し、予め設定されたデバイス間のデータ転送をCPUに代わって効率的に行い、データ転送を完了するとバス権を開放する。
【０００３】
従来例として、I/O−メモリ間でDMA転送をする場合のハードウェア構成を図1に示す。マイコン(11)にはDMAC(12)が内蔵されており、外部メモリバスにI/O(13)と外部メモリ(14)が接続され、I/O(13)から外部メモリ(14)にDMA転送を行なうものとする。I/O(13)とマイコン(11)は、I/O(13)からマイコン(11)へ出力されるDMA転送要求信号DREQと、マイコン(11)からI/O(13)に出力されるDMAC(12)がバス権を獲得したことを示す信号DACKとで接続されている。I/O(13)から出力されるDREQはマイコン(11)内部の2段FF(15)で同期化され、同期化された信号DREQiはDMAC(12)に入力される。マイコン(11)から出力されるDACKはDMAC(12)から出力される信号そのものである。
【０００４】
次に、DMA転送要求発生からDMA転送完了までのタイミングチャートを図2に示す。1回のDMA転送毎にバス権の獲得、開放を繰り返しながらデータ転送を行なう場合のものであり、以下、動作を説明する。I/O(13)からマイコン(11)にDMA転送要求信号であるDREQがアサートされると、DREQはマイコン(11)内部の2段FF(15)で同期化され、同期化された信号DREQiがDMAC(12)に入力される。DMAC(12)はDREQiが入力されるとバス権を獲得し、I/O(13)に対しバス権を獲得したことを示す信号DACKをアサートし、I/O(13)からメモリ(14)へDMA転送を開始する。I/O(13)はDACKがアサートされたことを確認して、DREQをネゲートする。1回のDMA転送が終了すると、DMAC(12)はバス権を開放し、DACKをネゲートする。その後、次のDREQがアサートされる毎に同じ動作を繰り返す。
【０００５】
次に、DMA転送中に次のDMA転送要求が発生した場合のタイミングチャートを図3に示す。I/O(13)からマイコン(11)にDREQがアサートされ、同期化された信号DREQiがDMAC(12)に入力されるとDMAC(12)はバス権を獲得し、I/O(13)に対してDACKをアサートする。I/O(13)はDACKがアサートされたことを確認してDREQをネゲートするが、DMA転送中に再度DREQをアサートする。しかし、従来のDMAC(12)は、DMA転送中に発生したDREQを受け付ける機能を持たないため、1回のDMA転送を終了しても、転送中に発生したDREQに対するDMA転送は開始せず、DMA転送中に発生したDREQは無視されていた。
なお、本技術に関連する技術としては、例えば、特許文献１に記載されているものがある。
【特許文献１】特開平５−３２４５３６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来のDMACは、DMA転送中に発生したDMA転送要求信号DREQを受け付ける機能を持たず、DMA転送中に発生したDREQは無視されてしまうため、DMA転送中にDREQをアサートしてくるデバイスを接続することができなかった。そこで本発明では、DMA転送中に発生したDREQを受け付ける機能をマイコン内部に持たせることにより、DMA転送中に発生したDREQに対しても確実にDMA転送を行なうことを目的としている。
【課題を解決するための手段】
【０００７】
本発明は、上記課題を克服するために考え出されたものである。本願において開示される発明のうち、代表的なものの概要は以下の通りである。
すなわち、DMA転送中にDREQがアサートされたことを記憶するための記憶回路と、DMA転送が終了する毎に、CPUに記憶回路の内容を確認させ、DMA転送中にDREQがアサートされていた場合には、DMACに対して新しいDMA転送要求信号をアサートする手段とを有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、DMA転送中にDREQがアサートされたことを記憶するための記憶回路を持ち、DMA転送が終了する毎に、CPUが記憶回路の内容を確認し、DMA転送中にDREQがアサートされていた場合は、CPUがDMACに対して新しいDMA転送要求信号をアサートする機能を持つため、DMA転送中にアサートされたDREQに対しても確実にDMA転送を行なうことができる。
【発明を実施するための最良の形態】
【０００９】
（第１の実施の形態）  
（構成の説明）
第1の実施例を図4に示す。図1に示した従来例と異なり、マイコン(11)内部に、DMA転送中にI/O(13)からDREQがアサートされたことを記憶するための記憶回路(41)を持つ。記憶回路(41)は、内部にレジスタ(42)を持ち、DMA転送中にDREQがアサートされると(DACK="H"の時、DREQiの立ち上がりエッジを検出すると)、レジスタ(42)に"1"をセットし、DMA転送が開始されると(DREQi="H"の時、DACKの立ち上がりエッジを検出すると)、レジスタ(42)を"0"にクリアする仕様である。
【００１０】
DMAC(12)に入力されるDMA転送要求信号は、I/O(13)からアサートされたDREQを2段FF(15)で同期化した信号DREQiと、DMA転送中にDREQがアサートされた時CPU(16)から新たにアサートされる信号DREQcとのセレクト信号DREQoであり、セレクタ(43)の制御信号は、レジスタ(42)の出力DREQrである。
【００１１】
（動作の説明）
DMA転送中にDMA転送要求が発生した場合のタイミングチャートを図5に示し、動作を説明する。レジスタ(42)の出力DREQrと、CPU(16)から出力DREQcの初期値は共に"L"となっている。I/O(13)からマイコン(11)にDREQがアサートされると、DREQはマイコン(11)内部の2段FF(15)で同期化され、同期化された信号DREQiとなる。セレクタ(43)の制御信号DREQrは"L"となっているため、DREQiはセレクタ(43)で選択され、セレクタ(43)の出力信号DREQoとなり、DMAC(12)に入力される。DMAC(12)はDREQoの立ち上がりエッジを検出すると、バス権を獲得し、I/O(13)に対しバス権を獲得したことを示す信号DACKをアサートした後、I/O(13)からメモリ(14)へDMA転送を開始する。I/O(13)はDACKがアサートされたことを確認して、DREQをネゲートするが、DMA転送中に再度マイコン(11)に対してDREQをアサートする。
【００１２】
DMA転送中にDREQがアサートされると、記憶回路(41)は、DACK="H"の時のDREQiの立ち上がりエッジを検出することにより、DMA転送中にDREQがアサートされたと判断し、レジスタ(42)に"1"をセットする。レジスタ(42)に"1"がセットされると、レジスタ(42)の出力信号DREQrは"H"となり、DREQiに代わってDREQcがセレクタ(43)の出力DREQoとなる。1回のDMA転送が終了すると、DMAC(12)はバス権を開放し、DACKをネゲートする。
【００１３】
1回のDMA転送が終了すると、CPU(16)はレジスタ(42)の値を確認する。レジスタ(42)の値が"H"であることを確認すると、CPU(16)はDMA転送中にDREQがアサートされたと判断し、DMAC(12)に対して新しいDMA転送要求信号DREQcをアサートする。DMAC(12)はCPU(16)からアサートされたDREQcを受け取ると、バス権を獲得し、DACKをアサートした後、DMA転送を開始する。DMA転送が開始されると、記憶回路(41)は、DREQi="H"の時のDACKの立ち上がりエッジを検出することによりDMA転送開始を判断し、レジスタ(42)を"0"にクリアする。レジスタ(42)を"0"にクリアすることにより、セレクタ(43)はDREQiを選択した状態に戻る。DMA転送が終了すると、CPU(16)はレジスタ(42)の値を確認し、レジスタ(42)の値が"0"であることを確認すると、DRECcをネゲートする。
【００１４】
以上の説明したように、第１の実施の形態によれば、DMA転送中にDREQがアサートされたことを記憶するための記憶回路(41)を持ち、DMA転送が終了する毎に、CPUが記憶回路(41)の内容を確認し、DMA転送中にDREQがアサートされていた場合は、CPUがDMACに対して新しいDMA転送要求信号をアサートする機能を持つため、DMA転送中にアサートされたDREQに対しても確実にDMA転送を行なうことができる。
【００１５】
（第２の実施の形態）  
（構成の説明）
第2の実施例を図6に示す。図1の従来例に対して、2段FF(15)とDMAC(12)の間に、DMA転送中にアサートされたDREQを保持する機能を持つWrapper(61)を挿入した構成である。Wrapper(61)には、2段FF(15)の出力DREQi以外に、DMACからアサートされるDACKが入力される。次にWrapper(61)の構成を図7に示す。Wrapper(61)は、DREQiの立ち上がりエッジを検出するためのFF(71)と、ステートマシン(72)から構成される。ステートマシン(72)の入力は、DREQiと、DREQiを1clk遅延させた信号DREQi_dと、DMAC(12)からアサートされるDACKであり、出力はDMAC(12)に対してアサートするDREQoである。ステートマシンは図8に示した状態遷移表に従って動作する仕様である。
【００１６】
(動作の説明)
まず、図7に示したステートマシン(72)の動作を図8に示した状態遷移表に従って説明する。ステートマシンはS0からS4までの5つの状態からなる。
(1)  状態S0は、DMA転送はしておらず、DREQがアサートされる(DREQi="H"、かつDREQi_d="L"となる)のを待っている状態である。DREQがアサートされると状態S1へ遷移する。リセット後の初期状態はS0となる。
(2)  状態S1は、DMACに対してDREQoをアサートし、DMACがバス権を獲得する(DACKがアサートされる)のを待っている状態である。DACKがアサートされると状態S2に遷移する。
(3)  状態S2は、1回のDMA転送が終了する(DACKがネゲートされる)のを待っている状態である。転送が終了したら状態S0に遷移する。ただし、DMA転送中に次のDREQがアサートされた場合は状態S3に遷移する。
(4)  状態S3は、DMA転送中に発生したDREQを保持し、実行中のDMA転送が終了するのを待っている状態である。DMA転送が終了したら状態S4に遷移する。
(5)  状態S4は、DMACに対してDREQoをネゲートし、無条件に状態S1へ遷移する。状態S1でDREQoが再度アサートされるので、S4からS1に遷移することにより、保留していたDREQが有効になる。
【００１７】
次に、図6の実施例にて、DMA転送中に次のDREQがアサートされた場合のタイミングチャートを図9に示し、動作を説明する。Wrapper(61)を構成するステートマシン(72)の状態S0で、I/O(13)からDREQがアサートされ、2段FF(15)で同期化した信号DREQiの立ち上がりエッジを検出すると、ステートマシン(72)は状態S1に遷移し、DMAC(12)に対してDREQoをアサートする。DMAC(12)はDREQoがアサートされると、バス権獲得後DACKをアサートし、DMA転送を開始する。
【００１８】
ステートマシン(72)は状態S2に遷移し、I/O(13)はDACKがアサートされたことを確認してDREQをネゲートする。次に、I/O(13)がDMA転送中にDREQを再度アサートすると、ステートマシン(72)は、DREQiの立ち上がりエッジを検出後、状態S3に遷移し、実行中のDMA転送が終了するのを待つ。ここで、DREQの同期化処理はDMA転送中に行なわれることになる。実行中のDMA転送が終了し、DACKがネゲートされると、ステートマシン(72)は状態S4に遷移し、DREQoをネゲートした後、無条件に状態S1に遷移する。状態S1に遷移すると、DMAC(12)に対してDREQoが再度アサートされるため、以降、DMA転送中に受け付けたDREQに対するDMA転送を開始する。
【００１９】
以上説明したように、第２の実施の形態によれば、DMA転送中にアサートされたDREQを保持し、1回のDMA転送終了後に、DMACに対して再度DREQをアサートする機能を持つWrapperを持つため、DMA転送中にアサートされたDREQに対しても確実にDMA転送を行なうことができる。また、第1の実施例と異なり、DMA転送中にアサートされたDREQの確認、及び確認後の各制御にCPUを使用しないため、DMA転送とDMA転送の間の時間が短く、転送効率を向上させることができる。さらに、従来の実施例と比較しても、DMA転送中にアサートされたDREQを受け付けることができる利点がある上に、2段FFによるDREQの同期化処理をDMA転送中に行なうため、転送効率を向上させることができる。
【図面の簡単な説明】
【００２０】
【図１】I/O−メモリ間でDMA転送をする場合の従来のハードウェア構成を示す図である。
【図２】図１におけるDMA転送要求発生からDMA転送完了までのタイミングチャートを示す図である。
【図３】図１におけるDMA転送中に次のDMA転送要求が発生した場合のタイミングチャートを示す図である。
【図４】本発明の第１の実施形態のハードウエア構成を示す図である。
【図５】図４におけるDMA転送中にDMA転送要求が発生した場合のタイミングチャートを示す図である。
【図６】本発明の第２の実施形態のハードウエア構成を示す図である。
【図７】Wrapper(61)の構成を示す図である。
【図８】図7に示したステートマシン(72)の動作を示した状態遷移表である。
【図９】図６におけるDMA転送中に次のDREQがアサートされた場合のタイミングチャートを図9に示す図である。
【図１】
2007219641.tif 000003
【図２】
2007219641.tif 000004
【図３】
2007219641.tif 000005
【図４】
2007219641.tif 000006
【図５】
2007219641.tif 000007
【図６】
2007219641.tif 000008
【図７】
2007219641.tif 000009
【図８】
2007219641.tif 000010
【図９】
2007219641.tif 000011