図面 (/)

技術 DMA制御装置、マイクロコントローラおよびDMA制御方法

出願人 富士通株式会社
発明者 川上健太郎
出願日 2015年1月20日 (4年6ヶ月経過) 出願番号 2015-008626
公開日 2016年7月25日 (3年0ヶ月経過) 公開番号 2016-134018
状態 特許登録済
技術分野 バス制御
主要キーワード センサー電源 SPIインターフェース センサー電圧 コンフィギュレーション値 ペリフェラルインターフェース 削減割合 振動発電素子 センサー出力電圧
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2016年7月25日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (20)

課題

スキャッタギャザーモードにおける処理サイクルを削減することによって消費電力を低減するDMA(Direct Memory Access)制御装置マイクロコントローラ及びDMA制御方法の提供する。

解決手段

基本機能設定レジスタ11〜13と、基本機能設定レジスタ11〜13に書き込むデータを、バスを介して読み出しせずに直接設定してタスク16−0〜16−15を実行するスキャッタギャザー設定レジスタ14〜16と、を有する。

概要

背景

近年、様々なシステムにおいて、CPU(Central Processing Unit:中央処理装置)を介さずに、メモリ間、或いは、メモリ周辺回路間でデータ転送を行なうDMA(Direct Memory Access)転送機能が設けられている。

例えば、MCU(Micro Control Unit:マイクロコントローラ)には、CPU(CPUコア),メモリおよび周辺回路などと共に、DMA制御装置(DMAコントローラ:Direct Memory Access Controller:DMAC)が内蔵されている。なお、メモリとしては、例えば、SRAM((Static Random Access Memory)が利用されている。

さらに、例えば、MCUには、DMA転送時において、散り散りになっている(scatter)メモリブロックに対して、まとめて(gather)連続転送を行うことが可能なスキャッタギャザー(Scatter-gather)モードが設けられている。

ここで、スキャッタギャザーモードとスキャッタギャザーモードで実行するタスク開始トリガー信号として種々の信号が使える機能を組み合わせることにより、周辺回路の制御を、CPUを動作させないで行うことが提案されている。

ところで、従来、DMA制御技術としては、様々な提案がなされている。

概要

スキャッタギャザーモードにおける処理サイクルを削減することによって消費電力を低減するDMA(Direct Memory Access)制御装置、マイクロコントローラ及びDMA制御方法の提供する。基本機能設定レジスタ11〜13と、基本機能設定レジスタ11〜13に書き込むデータを、バスを介して読み出しせずに直接設定してタスク16−0〜16−15を実行するスキャッタギャザー設定レジスタ14〜16と、を有する。

目的

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

基本機能設定レジスタと、前記基本機能設定レジスタに書き込むデータを、バスを介して読み出しせずに直接設定してタスクを実行するスキャッタギャザー設定レジスタと、を有する、ことを特徴とするDMA制御装置

請求項2

前記基本機能設定レジスタは、データ数を規定するコンフィギュレーションレジスタを含み、前記DMA制御装置は、さらに、前記コンフィギュレーションレジスタに対して、前記コンフィギュレーションレジスタの値または予め定められた値を選択するコンフィギュレーション値選択回路を有する、ことを特徴とする請求項1に記載のDMA制御装置。

請求項3

前記基本機能設定レジスタは、コピー先アドレスを設定するデスティネーションアドレスレジスタを含み、前記DMA制御装置は、さらに、前記デスティネーションアドレスレジスタに対して、直接書き込む値を生成する書き込み値生成回路を有する、ことを特徴とする請求項1に記載のDMA制御装置。

請求項4

前記スキャッタギャザー設定レジスタは、複数のスキャッタギャザー動作を切り替える第1レジスタを含む、ことを特徴とする請求項1乃至請求項3のいずれか1項に記載のDMA制御装置。

請求項5

前記スキャッタギャザー設定レジスタは、一連のタスクを連続して何回実行するかを指定する第2レジスタを含む、ことを特徴とする請求項4に記載のDMA制御装置。

請求項6

さらに、前記第2レジスタの値を受け取り、スキャッタギャザー動作中に、前記一連のタスクの実行を何回繰り返したか判定する繰り返し回数判定回路を有する、ことを特徴とする請求項5に記載のDMA制御装置。

請求項7

請求項1乃至請求項6のいずれか1項に記載のDMA制御装置と、メモリと、CPUと、複数の周辺回路と、前記DMA制御装置,前記メモリ,前記CPUおよび複数の前記周辺回路を繋ぐバスと、を有する、ことを特徴とするマイクロコントローラ

請求項8

スキャッタギャザーモードを有するDMA制御方法であって、前記スキャッタギャザーモードは、基本機能設定レジスタに書き込むデータを、バスを介して読み出しせずに直接設定してタスクを実行する、のを含む、ことを特徴とするDMA制御方法。

請求項9

前記基本機能設定レジスタにおける、データ数を規定するコンフィギュレーションレジスタに設定する値を、前記バスを介してメモリから読み出すことなく、予め定められた値に設定する、のを含む、ことを特徴とする請求項8に記載のDMA制御方法。

請求項10

前記基本機能設定レジスタにおける、コピー先アドレスを規定するデスティネーションアドレスレジスタに設定する値を、前記バスを介してメモリから読み出すことなく、直接生成して書き込む、のを含む、ことを特徴とする請求項8に記載のDMA制御方法。

技術分野

0001

本明細書で言及する実施例は、DMA制御装置マイクロコントローラおよびDMA制御方法に関する。

背景技術

0002

近年、様々なシステムにおいて、CPU(Central Processing Unit:中央処理装置)を介さずに、メモリ間、或いは、メモリ周辺回路間でデータ転送を行なうDMA(Direct Memory Access)転送機能が設けられている。

0003

例えば、MCU(Micro Control Unit:マイクロコントローラ)には、CPU(CPUコア),メモリおよび周辺回路などと共に、DMA制御装置(DMAコントローラ:Direct Memory Access Controller:DMAC)が内蔵されている。なお、メモリとしては、例えば、SRAM((Static Random Access Memory)が利用されている。

0004

さらに、例えば、MCUには、DMA転送時において、散り散りになっている(scatter)メモリブロックに対して、まとめて(gather)連続転送を行うことが可能なスキャッタギャザー(Scatter-gather)モードが設けられている。

0005

ここで、スキャッタギャザーモードとスキャッタギャザーモードで実行するタスク開始トリガー信号として種々の信号が使える機能を組み合わせることにより、周辺回路の制御を、CPUを動作させないで行うことが提案されている。

0006

ところで、従来、DMA制御技術としては、様々な提案がなされている。

先行技術

0007

特開平06−060013号公報
特開2003−058491号公報
特開2011−070372号公報

発明が解決しようとする課題

0008

上述したように、スキャッタギャザーモードとして、CPUを動作させないで周辺回路の制御を行うことが提案されている。この周辺回路の制御は、各周辺回路に備わった各種レジスタへの書き込みおよび読み出しで行うことになる。

0009

しかしながら、通常これらのレジスタアドレスは連続しているとは限らないため、例えば、DMACは、書き込みや読み出しを行うレジスタごとに1つのタスクとして実行する。そのため、処理サイクルが増大し、消費電力の増大を招くことになる。

0010

また、複数回の不連続なアドレスに対するDMACによるアクセス効率化のために、基準アドレス相対アドレスを用いて1つのタスクで実行することが考えられる。しかしながら、周辺回路の操作で頻出するレジスタへ1回だけ書き込んだり読み出したりするタスクを行う場合、処理サイクルを削減することは困難である。

課題を解決するための手段

0011

一実施形態によれば、基本機能設定レジスタと、前記基本機能設定レジスタに書き込むデータを、バスを介して読み出しせずに直接設定してタスクを実行するスキャッタギャザー設定レジスタと、を有するDMA制御装置が提供される。

発明の効果

0012

開示のDMA制御装置、マイクロコントローラおよびDMA制御方法は、スキャッタギャザーモードにおける処理サイクルを削減して消費電力を低減することができるという効果を奏する。

図面の簡単な説明

0013

図1は、マイクロコントローラの一例を示すブロック図である。
図2は、DMA制御装置の一例における設定レジスタ構成を示すブロック図である。
図3は、DMA制御装置の第1実施例における設定レジスタ構成を示すブロック図である。
図4は、図3に示すDMA制御装置における基本機能の動作を説明するための図である。
図5は、図3に示すDMA制御装置におけるスキャッタギャザー機能の動作を説明するための図である。
図6は、図3に示すDMA制御装置の設定レジスタ構成の一例を説明するための図である。
図7は、図6に示す設定レジスタ構成において、設定ビット=0の動作の一例を説明するためのフローチャートである。
図8は、図6に示す設定レジスタ構成において、設定ビット=1の動作の一例を説明するためのフローチャートである。
図9は、図6に示す設定レジスタ構成において、設定ビット=2の動作の一例を説明するためのフローチャートである。
図10は、図6に示す設定レジスタ構成において、設定ビット=3の動作の一例を説明するためのフローチャートである。
図11は、第1実施例のDMA制御装置におけるバスを介したアクセス回数削減効果を説明するための図である。
図12は、ペリフェラルの操作の一例を説明するための図である。
図13は、DMA制御装置の第2実施例における設定レジスタ構成を示すブロック図である。
図14は、図13に示すDMA制御装置の設定レジスタ構成の一例を説明するための図である。
図15は、図14に示す設定レジスタ構成において、設定ビット=4の動作の一例を説明するためのフローチャートである。
図16は、図14に示す設定レジスタ構成において、設定ビット=5の動作の一例を説明するためのフローチャートである。
図17は、第2実施例のDMA制御装置におけるバスを介したアクセス回数の削減効果を説明するための図である。
図18は、DMA制御装置の第3実施例における設定レジスタ構成を示すブロック図である。
図19は、図18に示すDMA制御装置の動作を説明するための図(その1)である。
図20は、図18に示すDMA制御装置の動作を説明するための図(その2)である。
図21は、DMA制御装置の第4実施例における設定レジスタ構成のレジスタDMAC_SCATTERを説明するための図である。
図22は、図21に示す設定レジスタ構成の一例を説明するための図である。
図23は、本実施例のDMA制御装置が適用されるワイヤレスセンサノードの一例を示すブロック図である。
図24は、図23のワイヤレスセンサーノードにおけるスキャッタギャザー設定レジスタのDMAC_SCATTERの設定の一例を説明するための図である。
図25は、図23に示すワイヤレスセンサーノードの動作の一例を説明するための図である。
図26は、図23に示すSRAMに保存されている各タスクの実行開始前にDMA制御装置の基本機能設定レジスタに読み込まれる値の一例を示す図である。
図27は、本実施例のDMA制御装置の一例を示すブロック図である。
図28は、図27に示すDMA制御装置におけるコンフィギュレーション値選択回路および書き込み値生成回路の一例を示すブロック図である。
図29は、図27に示すDMA制御装置におけるタスク数判定回路および繰り返し回数判定回路の一例を示すブロック図である。
図30は、図27に示すDMA制御装置における設定値アドレス生成回路の一例を示すブロック図である。

実施例

0014

まず、本実施例のDMA制御装置、マイクロコントローラおよびDMA制御方法を詳述する前に、図1および図2を参照して、DMA制御装置の一例およびその問題点を説明する。図1は、マイクロコントローラの一例を示すブロック図である。

0015

図1に示されるように、マイクロコントローラ(MCU)は、DMA制御装置(DMAコントローラ:DMAC)1,メモリ(SRAM)2,CPUコア(CPU)3,複数の周辺回路(ペリフェラル#0〜#3)およびそれらを繋ぐバス5などを含む。

0016

ここで、例えば、ペリフェラル#0は、シリアルペリフェラルインターフェース(Serial Peripheral Interface:SPI)であり、ペリフェラル#1は、汎用入出力ポート(General Purpose Input/Output:GPIO)である。さらに、例えば、ペリフェラル#2は、タイマ(Timer)であり、ペリフェラル#3は、アナログ-デジタル変換器(Analog-to-Digital Converter:ADC)である。

0017

また、図23を参照して後に詳述するように、例えば、ペリフェラル#0(SPI)は、SPIインターフェース(I/F)を介して外部の無線モジュールに接続され、ペリフェラル#1(GPIO)は、外部のセンサー電源に接続される。さらに、例えば、ペリフェラル#3(ADC)は、ADC I/Fを介して外部の温度センサーに接続される。そして、これらペリフェラル#0〜#3,DMAC1,SRAM2およびCPUコア3は、例えば、32ビットバス5を介して相互に接続されている。

0018

なお、ペリフェラル#0〜#3の数および種類、並びに、バス5のビット幅(32ビット)などは、単なる例であり、様々な構成があり得るのはいうまでもない。また、DMA制御装置が設けられたMCUは、様々な電子機器に対して幅広く適用することができるが、例えば、低消費電力が求められるワイヤレスセンサーネットワーク無線端末(ワイヤレスセンサーノード)に適用することができる。

0019

図2は、DMA制御装置の一例における設定レジスタ構成を示すブロック図であり、基本機能設定レジスタを示すものである。図2に示されるようにDMAC(DMA制御装置)1は、基本機能設定レジスタとして、コンフィギュレーションレジスタ(DMAC_CONFIG)101、DMAC_DST(デスティネーションアドレスレジスタ)102、および、ソースアドレスレジスタ(DMAC_SRC)103などを含む。

0020

DMAC1は、DMAC_SRC 103で指定されたアドレスから始まりDMAC_CONFIG 101で指定された区間のアドレスまでのデータを読み出し、それを、DMAC_DST 102で指定されたアドレスから始まりDMAC_CONFIG 101で指定された区間のアドレスまで書き込む機能を持つ。このように、あるアドレスから始まる一定領域のデータを別のあるアドレスから始まる一定領域にコピーする処理を、タスクと呼ぶことにする。

0021

このように、例えば、データのコピーを、DMAC1を用いて行うことで、その間、CPUコア3は、別の処理プログラムを実行できるというメリットがある。また、消費エネルギー(消費電力)に関して、CPUコア3とDMAC1を比較すると、回路サイズは、一般的にDMAC1の方が小さく、CPUコア3上で動作するプログラムでデータをコピーした場合には、DMAC1で行った場合よりも消費電力が大きくなる。

0022

これは、CPUコア3でデータのコピーを行うと、例えば、プログラムが格納されているSRAM(或いは、図示しないフラッシュメモリ)2からのプログラム読み出しなどにエネルギー消費し、また、CPUコア3自体の電力消費も大きいためである。そのため、例えば、ワイヤレスセンサーノードなどの低消費電力が強く求められる場合を始めとして、DMAC1でデータのコピーを行うのが好ましい。

0023

ところで、DMACに1つのタスクを実行させるためには、DMAC_SRC 103、DMAC_DST 102およびDMAC_CONFIG 101の設定を行うことになるが、通常、これらのレジスタへの設定値の書き込みは、CPUコア3により行われる。

0024

そこで、複数のタスクに対応したDMAC_SRC 103、DMAC_DST 102およびDMAC_CONFIG 101の設定内容を予めSRAM2に格納しておき、タスクを開始するタイミングになったら、DMAC1がSRAM2から設定内容を読み出してタスクを実行するものが考えられる。すなわち、CPUコア3の介在なしに、複数のタスクを連続実行できるスキャッタギャザー機能(Scatter-Gather機能:スキャッタギャザーモード)を備えるDMAC1が提案されている。

0025

しかしながら、図1を参照して説明したように、MCUは、周辺回路(ペリフェラル#0〜#3)として、GPIOやADC、或いは、SPI,I2CおよびUART(Universal Asynchronous Receiver Transmitter)などのシリアルI/Fを搭載している。

0026

さらに、MCUは、周辺回路として、タイマ、DAC(Digital-to-Analog Converter)およびPWM(Pulse Width Modulation)などを搭載している。これら周辺回路の制御およびデータのやりとりは、周辺回路ごとに備わっている各種レジスタを介して行われる。

0027

具体的に、例えば、GPIOでは、GPIO_MODE(入出力モードレジスタ),GPIO_OUT(出力データレジスタ)およびGPIO_IN(入力データレジスタ)が備わっている。そして、GPIO_MODEに書き込む値によってポート入出力方向を制御し、入力モードの時は、GPIO_INの値を読み出すことによってMCUの外部からGPIOに入力されている電圧レベルの値を知ることができる。また、出力モードの時は、GPIO_OUTに値を書き込むことによってMCUの外部に出力する信号の電圧レベルを高レベル『H』または低レベル『L』のいずれかに切り替えることができる。

0028

さらに、例えば、UARTなどのシリアルI/Fでは、ContReg(制御レジスタ)とDataReg(データレジスタ)が備わっており、データを出力したいときはDataRegに出力したい値を書き込み、その後、ContRegにデータ出力を指示する値を書き込む。これにより、例えば、UARTから所望のデータを出力させることができる。

0029

ところで、近年、スキャッタギャザーモードで次のタスク開始のトリガー信号として、周辺回路からの様々な状態信号を利用できるようにしたMCUが提案されている。ここで、トリガー信号は、例えば、GPIO(ペリフェラル#1)41で所定の値を受信したとき、または、ADC(ペリフェラル#3)43でのデータ変換が完了したときを検出して出力される信号である。

0030

或いは、トリガー信号は、例えば、SPI(ペリフェラル#0)40でのデータ送信または受信が完了したとき、または、タイマ(ペリフェラル#2)42のカウント値が所望の値になったときを検出して出力される信号である。若しくは、トリガー信号は、例えば、DACでの出力が完了したとき、または、PWMでの出力が完了したなどを検出して出力される信号である。

0031

このように、スキャッタギャザーモードとスキャッタギャザーモードで実行するタスク開始のトリガー信号として種々の信号が使える機能を組み合わせると、周辺回路(ペリフェラル#0〜#3等)の制御を、CPUコア3を動作させないで行うことができる。

0032

上述したように、周辺回路の制御は、各周辺回路に備わった各種レジスタへの書き込みおよび読み出しで行うことができる。ここで、使用するレジスタへの書き込みおよび読み出しは、タスクとしてDMAC1で行い、そのタスクの起動タイミングは、各種トリガー信号を利用すればよい。

0033

このとき、周辺回路の複数のレジスタへの書き込みや読み出しを行うことになるが、通常これらのレジスタアドレスは連続しているとは限らない。そのため、例えば、DMAC1は、書き込みや読み出しを行うレジスタごとに1つのタスクとして実行することになるため処理サイクルが増大し、消費電力の増大を招くことになる。

0034

なお、複数回の不連続なアドレスに対するDMACによるアクセス効率化のために、基準アドレスと相対アドレスを用いて1つのタスクで実行することが考えられる。しかしながら、周辺回路の操作で頻出するレジスタへ1回だけ書き込んだり読み出したりするタスクを行う場合、処理サイクルを削減することは困難である。

0035

以下、本実施例のDMA制御装置、マイクロコントローラおよびDMA制御方法を、添付図面を参照して詳述する。図3は、DMA制御装置の第1実施例における設定レジスタ構成を示すブロック図である。

0036

図3に示されるように、第1実施例のDMA制御装置(DMAC)1は、図2を参照して説明した基本機能設定レジスタ101〜103に対応する11〜13と共に、スキャッタギャザー設定レジスタ14〜16を含む。

0037

すなわち、DMAC1は、基本機能設定レジスタとして、コンフィギュレーションレジスタ(DMAC_CONFIG)11、DMAC_DST(デスティネーションアドレスレジスタ)12、および、ソースアドレスレジスタ(DMAC_SRC)13などを含む。

0038

前述したように、DMAC1は、DMAC_SRC13で指定されたアドレスからDMAC_CONFIG11で指定された区間までのデータを読み出し、そのデータを、DMAC_DST12で指定されたアドレスからDMAC_CONFIG11で指定された区間まで書き込む機能を有する。ここで、本第1実施例のDMAC1において、基本機能設定レジスタのDMAC_SRC13は、イミディエイト(即値)レジスタ(DMAC_IMMEDIATE)とすることができる。すなわち、レジスタDMAC_SRC13は、設定ビットの値によってDMAC_IMMEDIATEとして使うようになっている。

0039

また、DMAC1は、スキャッタギャザー設定レジスタとして、実行するタスク数を設定するレジスタ(DMAC_TASK_NUM)14および最初に実行するタスク(#0)の基本機能設定レジスタの内容が格納されたアドレスを設定するレジスタ(DMAC_TASK_ADDR)15を含む。これらDMAC_TASK_NUM14およびDMAC_TASK_ADDR15は、例えば、図2に示すDMACに設けられていてもよい。本第1実施例のDMAC1は、さらに、スキャッタギャザー設定レジスタとして、スキャッタギャザー動作(モード)の切り替え用のレジスタ(DMAC_SCATTER:第1レジスタ)16が追加されている。

0040

図3に示されるように、DMAC_SCATTER16は、例えば、タスク#0〜#15の16個のタスクに対して32ビットが割り当てられ、タスクごとに2ビットで4つの値が設定できるようになっている。すなわち、DMAC_SCATTER16により、スキャッタギャザーで順次実行するタスクの動作をそれぞれ2ビットで設定し、設定によって各タスクでの処理内容を変更するようになっている。

0041

図4は、図3に示すDMA制御装置における基本機能の動作を説明するための図である。ここで、図4は、各基本機能設定レジスタ(DMAC_CONFIG11、DMAC_DST12,DMAC_SRC13)の詳細と通常の(スキャッタギャザーモードでない)タスクを1つ処理する際におけるデータのコピーの様子を示している。

0042

具体的に、DMAC1における基本機能の動作の例として、レジスタDMAC_CONFIG11、レジスタDMAC_DST12およびレジスタDMAC_SRC13に対して、次の値(アドレス)を設定した場合を考える。
DMAC_CONFIG = 0x0000_0003
DMAC_DST = 0x0000_2400
DMAC_SRC = 0x0000_1000

0043

すなわち、DMAC_CONFIG11には、コピーしたいデータの数(3個:0x0000_0003)を設定し、DMAC_SR13Cには、コピー元先頭アドレス(0x0000_1000)を設定し、DMAC_DST12には、コピー先の先頭アドレス(0x0000_2400)を設定する。

0044

さらに、各基本機能設定レジスタ11〜13に対して、上記のように設定(レジスタに書き込み(write))した後、DMAC_ENABLEに対して、次の値を設定する。
DMAC_ENABLE = 0x0000_00001

0045

或いは、各基本機能設定レジスタ11〜13に対して所望の値を書き込んだ後、レジスタDMAC_START(図示しない)に対して「1(通常の1つのタスク実行開始を指示する値)」を書き込む。

0046

これにより、図4に示されるように、DMAC1は、0x0000_1000から0x0000_1008のデータ(データ数=3)が、バス5を介して読み出(read)され、0x0000_2400から0x0000_2408に対して、バス5を介して書き込まれる(3つの32ビットデータがコピーされる)。

0047

図5は、図3に示すDMA制御装置におけるスキャッタギャザー機能の動作を説明するための図であり、スキャッタギャザーモードを実行する際、複数タスクの実行にDMAC_CONFIG11,DMAC_DST12,DMAC_SRC13の値がどのように読み出されるかを示している。

0048

なお、スキャッタギャザー設定レジスタのDMAC_TASK_NUM14には、実行したいタスクの数が設定され、DMAC_TASK_ADDR15には、複数のタスクの実行に使用するレジスタの値が格納されているメモリ(SRAM2)のアドレスが設定される。

0049

まず、SRAM2に対して、タスク#0〜#2を実行するための基本機能設定レジスタの内容を準備しておく。すなわち、図5に示されるように、3つのタスク#0〜#2に対応したDMAC_SRC13、DMAC_DST12およびDMAC_CONFIG11の設定内容を予めSRAM2に格納しておく。

0050

具体的に、DMAC_TASK_NUM14(スキャッタギャザーで実行するタスク数)=3とし、DMAC_TASK_ADDR15(最初に実行するタスク#0の基本機能設定レジスタの内容が保存されているアドレス)=0x2000_0000を設定する。

0051

すなわち、DMAC_TASK_NUM=3,DMAC_TASK_ADDR=0x20000000が設定されているとき、例えば、レジスタDMAC_START(図示しない)に「2(スキャッタギャザーモード実行開始を指示する値)」を書き込むことで、DMAC1はスキャッタギャザーモードを開始する。

0052

最初、DMAC_TASK_ADDR15に書き込まれているアドレスから順にSRAM2の値を読み出してDMAC_SRC13,DMAC_DST12,DMAC_CONFIG11にコピーし、これら3つのレジスタの値に基づいて、DMAC1は、タスク#0を実行する。すなわち、図5に示されるように、スキャッタギャザー機能(モード)を起動すると、DMAC1は、SRAM2の0x2000_0000から0x2000_0008の値を基本機能設定レジスタ(DMAC_SRC13,DMAC_DST12,DMAC_CONFIG11)にコピーし、タスク#0を実行する。

0053

また、タスク#0が完了したら、DMAC1は、SRAM2の0x2000_000Cから0x2000_0014の値を読み出して基本機能設定レジスタにコピーし、これら3つのレジスタの値に基づいてタスク#1を実行する。さらに、DMAC1は、タスク#1と同様に、タスク#2も実行する。

0054

図6は、図3に示すDMA制御装置の設定レジスタ構成の一例を説明するための図である。図3を参照して説明したように、各タスク#0〜#15の設定ビットとしては2ビットが割り当てられているため、設定ビットの値(モード)としては、『0』〜『3』の4つを設定することができる。

0055

すなわち、図6に示されるように、設定ビットの値(設定値)が『0』のとき、DMAC1は、通常の(一般的な)スキャッタギャザーに対応した動作を行う。また、設定値が『1』のとき、DMAC1は、SRAM2からDMAC_CONFIG11の設定値を読み出さずに、例えば、DMAC1が直接DMAC_CONFIG = 0x0000_0001としてタスクを実行する。

0056

さらに、設定値が『2』のとき、DMAC1は、例えば、SRAM2からコピー元データの読み出しをせずに、タスク実行の際、DMAC_SRC13に書かれた値をDMAC_DST12に書き込み、書き込み値を即値指定する。そして、設定値が『3』のとき、DMAC1は、SRAM2からDMAC_CONFIG11の設定値を読み出さずに、例えば、DMAC1が直接DMAC_CONFIG = 0x0000_0001とし、かつ、書き込み値を即値指定する。

0057

このように、第1実施例のDMA制御装置は、例えば、スキャッタギャザーモードで実行されるタスクは4つの動作モード(設定値『0』〜『3』)を備え、16個分のタスク(#0〜#15)について、それぞれ動作モードを設定できるようになっている。

0058

次に、図7図10を参照して、上述した設定ビット=0〜3の動作を説明する、なお、図7図10に示すフローチャートおいて、太線処理ブロックは、バス5を介したSRAM2(メモリ)からの読み出しアクセス処理を示し、二重線の処理ブロックは、バス5を介したSRAM2への書き込みアクセス処理を示す。

0059

図7は、図6に示す設定レジスタ構成において、設定ビット=0(設定値が『0』)の動作の一例を説明するためのフローチャートである。上述したように、設定値が『0』のときの動作は、通常のスキャッタギャザーモードの処理と同様のものである。

0060

図7に示されるように、設定値が『0』のとき、タスク設定および実行処理が開始すると、ステップST01において、SRAM2からDMAC_SRC13の値を読み出してDMAC_SRC13に設定し、ステップST02に進む。

0061

ステップST02では、SRAM2からDMAC_DST12の値を読み出してDMAC_DST12に設定し、ステップST03に進み、SRAM2からDMAC_CONFIG11の値を読み出してDMAC_CONFIG11に設定し、ステップST04に進む。

0062

ステップST04では、DMAC_SRC13に設定された値(コピー元の先頭アドレス)を読み出し、ステップST05に進んで、DMAC_DST12に設定された値(コピー先の先頭アドレス)に、読み出した値(データ)を書き込む。

0063

ここで、ステップST01〜ST04の処理は、バス5を介したSRAM2からの読み出しアクセスになり、ステップST05の処理は、バス5を介したSRAM2への書き込みアクセスになる。

0064

さらに、ステップST06に進んで、DMAC_SRC13を「+4」インクリメントし、また、ステップST07に進んで、DMAC_DST12を「+4」インクリメントし、ステップST08に進む。ここで、ステップST06およびST07における「+4」のインクリメントは単なる例であり、「+4」に限定されるものではない。

0065

ステップST08では、DMAC_CONFIG11のデータ数を「−1」デクリメントし、ステップST09に進んで、データ数が1以上かどうか(データ数≧1)を判定する。ステップST09において、データ数≧1が成立すると判定すると、ステップST04に戻って同様の処理を繰り返し、データ数≧1が成立しない、すなわち、データ数が存在しないと判定すると、タスク設定および実行処理を完了(終了)する。

0066

図8は、図6に示す設定レジスタ構成において、設定ビット=1(設定値が『1』)の動作の一例を説明するためのフローチャートである。図8と、上述した図7の比較から明らかなように、設定値が『1』のとき、図7におけるステップST03の処理は、ステップST13に示されるバス5を使用しない処理に置き換えられている。

0067

なお、図8におけるステップST11,ST12およびST14〜ST19の処理は、図7におけるステップST01,ST02およびST04〜ST09の処理と同様のものであり、その説明は省略する。

0068

図8に示されるように、ステップST12において、SRAM2からDMAC_DST12の値を読み出してDMAC_DST12に設定した後、ステップST13に進んで、DMAC1がDMAC_CONFIG11のデータ数を「1」に設定する。すなわち、設定値が『1』のとき、DMAC1は、SRAM2からDMAC_CONFIG11の設定値を読み出さずに、DMAC_CONFIG = 0x0000_0001として、直接、データ数を「1」に設定する。

0069

なお、設定値が『1』のとき、上述したように、DMAC1が直接DMAC_CONFIG = 0x0000_0001としている(データ数を1に設定している)ので、ステップST19の判定は、必ずNOになってタスク設定および実行処理を完了することになる。

0070

このように、設定値が『1』のときは、図7を参照して説明した設定値が『0』の処理におけるステップST03のバス5を介したSRAM2からの読み出しアクセスをなくすことができ、バスを介したメモリアクセスを1回削減することが可能になる。

0071

図9は、図6に示す設定レジスタ構成において、設定ビット=2(設定値が『2』)の動作の一例を説明するためのフローチャートである。図9と、前述した図7の比較から明らかなように、設定値が『2』のとき、図7におけるステップST01の処理は、ステップST21のように、レジスタDMAC_IMMEDIATE(13)を使用した処理に置き換えられている。

0072

さらに、図7におけるステップST04およびST05の処理は、ステップST24の処理に置き換えられている。なお、図9におけるステップST22,ST23およびST25〜ST28の処理は、図7におけるステップST02,ST03およびST06〜ST09の処理と同様のものであり、その説明は省略する。

0073

図9に示されるように、設定値が『2』のとき、タスク設定および実行処理が開始すると、ステップST21において、SRAM2からDMAC_IMMEDIATE13の値を読み出して、DMAC_IMMEDIATE13に設定し、ステップST22に進む。

0074

さらに、ステップST22において、SRAM2からDMAC_DST12の値を読み出してDMAC_DST12に設定し、ステップST23で、SRAM2からDMAC_CONFIG11の値を読み出してDMAC_CONFIG11に設定した後、ステップST24に進む。

0075

ステップST24では、DMAC_DST12に対してDMAC_IMMEDIATE13の値を書き込む。すなわち、DMAC_DST12で示されるアドレスに書き込む値は、DMAC_IMMEDIATE(DMAC_SRCと共用)13になるため、書き込む値を、SRAM2を介して読み出す処理(図7におけるステップST04)が不要になる。その結果、前述した設定値が『0』の場合と比較して、メモリからの値の読み出し処理を1回削減することが可能になる。

0076

図10は、図6に示す設定レジスタ構成において、設定ビット=3(設定値が『3』)の動作の一例を説明するためのフローチャートであり、上述した設定値が『1』のときの処理と設定値が『2』のときの処理を組み合わせたものに相当する。すなわち、図10において、ステップST33は、図8のステップST13に対応し、ステップST31およびST34は、図9のステップST21およびST24に対応する。

0077

図10に示されるように、設定値が『3』のとき、タスク設定および実行処理が開始すると、ステップST31において、SRAM2からDMAC_IMMEDIATE13の値を読み出して、DMAC_IMMEDIATE13に設定し、ステップST32に進む。

0078

さらに、ステップST32において、SRAM2からDMAC_DST12の値を読み出してDMAC_DST12に設定し、ステップST33に進んで、DMAC1がDMAC_CONFIG11のデータ数を「1」に設定し、ステップST34に進む。すなわち、設定値が『3』のとき、DMAC1は、SRAM2からDMAC_CONFIG11の設定値を読み出さずに、DMAC_CONFIG = 0x0000_0001として、直接、データ数を「1」に設定する。

0079

ステップST34では、DMAC_DST12に対してDMAC_IMMEDIATE13の値を書き込む。すなわち、DMAC_DST12で示されるアドレスに書き込む値は、DMAC_IMMEDIATE(DMAC_SRCと共用)13になるため、書き込む値を、SRAM2を介して読み出す処理(図7におけるステップST04)が不要になる。以上により、前述した設定値が『0』の場合と比較して、メモリからの値の読み出し処理を2回削減することが可能になる。

0080

図11は、第1実施例のDMA制御装置におけるバスを介したアクセス回数の削減効果を説明するための図であり、上述した設定値が『0』〜『3』(設定ビット=1〜3)の場合におけるバス5のアクセス回数の削減割合を示すものである。

0081

図11、並びに、図7図10を参照して説明したように、バス5を介した書き込みアクセス回数は、設定値が『0』〜『3』のいずれの場合でも、1回(ステップST05,ST15,ST24,ST34)である。

0082

一方、バス5を介した読み出しアクセス回数は、設定値が『0』の場合は4回(ステップST01〜ST04)であるのに対して、設定値が『1』の場合は3回(ステップST11,ST12,ST14)になる。

0083

また、バス5を介した読み出しアクセス回数は、設定値が『2』の場合も3回(ステップST21〜ST23)になる。さらに、バス5を介した読み出しアクセス回数は、設定値が『3』の場合は2回(ステップST31,ST32)になる。ただし、設定値が『1』〜『3』の場合、タスク設定および実行開始の前に、予めレジスタDMAC_SCATTER16に対して適切な値を設定しておくことが求められる。

0084

すなわち、図11に示されるように、アクセス回数の削減割合(削減率)は、設定値が『0』の場合(5回)を基準として、設定値が『1』および『2』の場合(4回)は、20%となり、そして、設定値が『3』の場合(3回)は、40%となる。

0085

このように、本実施例のDMA制御装置(DMA制御方法)によれば、DMA処理に求められるサイクル数を削減して消費電力を低減することができる。なお、図11は、バス5を介したアクセス回数を示すのみであり、例えば、DMAC1およびCPU2の消費電力を考慮すると、本実施例を適用することによる消費電力低減の効果は、より一層大きなものとなる。

0086

図12は、ペリフェラル(周辺回路)の操作の一例を説明するための図であり、スキャッタギャザーモードを用いてGPIO(汎用入出力ポート:図1におけるGPIO(41))のport#0から高レベル『H』(「1」)を出力させる処理を示すものである。

0087

ここで、GPIOにおいて、例えば、『H』を出力するには、レジスタGPIO_MODEに「1」(=出力モード)を書き込み、レジスタGPIO_OUTに「1」(=『H』出力)を書き込むことで実現可能なものとする。

0088

すなわち、GPIOのポート#0の出力値を設定するために、レジスタGPIO_OUTの0ビットに「1」を書き込む。さらに、GPIOのポート#0を出力モードに設定するために、レジスタGPIO_MODEの[3:0]ビットに4‘h1(16進数で設定ビット=1)を書き込む。

0089

なお、設定したいペリフェラルの制御レジスタ(GPIO_OUT,GPIO_MODE)のアドレス(0xXXXX,0xYYYY)は、連続していないので、レジスタGPIO_OUTへの設定をタスク#0で実行し、レジスタGPIO_MODEへの設定をタスク#1としたスキャッタギャザーで実行する。

0090

この場合、例えば、タスク#0として、レジスタGPIO_OUTに「1」を書き込むタスク、タスク#1として、レジスタGPIO_MODEに「1」を書き込むタスクとし、スキャッタギャザーモードを実行すればよいことになる。

0091

なお、タスク#0および#1は、両方とも1つのアドレス(レジスタGPIO_OUTのアドレスとレジスタGPIO_MODEのアドレス)に対する書き込みで、書き込むべき値が予め「1」と分かっているので、設定値『3』の動作モードを用いたタスクとすればよい。

0092

前述した図3に示されるように、レジスタDMAC_SCATTER16は、例えば、32ビットとされ、下位ビットから2ビットごとに1つのタスクの設定値を示すものとすれば、1回のレジスタ書き込みで16個分のタスクの設定値を書き込むことが可能になる。こにより、レジスタDMAC_SCATTER16の書き込みに要する処理サイクルの増加を抑えることができる。

0093

上述したように、第1実施例のDMA制御装置によれば、例えば、CPUコア3を動作させることなく、DMAC1を用いて少ない処理サイクルで周辺回路(41)を制御するためのレジスタアクセスを行うことが可能になる。

0094

これにより、MCUの回路規模のうち大きな割合を占めるCPUコア3を動作させずにDMAC1によって処理を行うことができ、さらに、動作するDMAC1の動作時間を短縮して、消費電力を低減することが可能になる。これらの効果は、第1実施例に限定されるものではなく、後述する各実施例でも、同様に発揮される。

0095

なお、本実施例のDMA制御装置、マイクロコントローラおよびDMA制御方法は、様々な電子機器に対して適用可能である。特に、本実施例は、太陽電池熱発電素子および振動発電素子など環境に存在するエネルギーをエネルギー源として利用する、超低消費電力が求められるようなワイヤレスセンサーノードに用いられるMCUなどへの適用が有効なものと考えられる。

0096

図13は、DMA制御装置の第2実施例における設定レジスタ構成を示すブロック図であり、図14は、図13に示すDMA制御装置の設定レジスタ構成の一例を説明するための図である。

0097

図13と、前述した図3の比較から明らかなように、第2実施例のDMAC(DMA制御装置)1は、図3に示す第1実施例と同様の構成を有している。すなわち、DMAC1は、基本機能設定レジスタとして、コンフィギュレーションレジスタ(DMAC_CONFIG)11、DMAC_DST(デスティネーションアドレスレジスタ)12、および、ソースアドレスレジスタ(DMAC_SRC)13などを含む。

0098

また、DMAC1は、スキャッタギャザー設定レジスタとして、実行するタスク数を設定するレジスタ(DMAC_TASK_NUM)14および最初に実行するタスク(#0)の基本機能設定レジスタの内容が格納されたアドレスを設定するレジスタ(DMAC_TASK_ADDR)15を含む。さらに、DMAC1は、スキャッタギャザー設定レジスタとして、スキャッタギャザーモード切り替え用のレジスタ(DMAC_SCATTER)16を含む。

0099

ここで、図13に示す第2実施例のDMAC1におけるDMAC_SCATTER16は、例えば、タスク#0〜#9の10個のタスク16-0〜16-9に対して32ビットが割り当てられ、タスクごとに3ビットで8つの値が設定できるようになっている。なお、残りの2ビットは、未使用ビットとされている。

0100

このDMAC_SCATTER16により、スキャッタギャザーで順次実行するタスクの動作をそれぞれ3ビットで設定し、設定によって各タスクでの処理内容を変更するようになっている。すなわち、図14に示されるように、設定ビット=1(設定値が『0』)〜設定ビット=5(設定値が『5』)の6種類の動作モードが設定されるようになっている。

0101

なお、図14では、設定ビット=6および設定ビット=7は、未定義とされているが、これらに対しても動作モードを設定すれば、最大8種類の動作モードを設定することができる。

0102

また、図21を参照して後述する第4実施例では、スキャッタギャザーで順次実行するタスクの動作をそれぞれ4ビット(最大16種類)で設定するが、この割り当てるビットの数は様々に変更することができる。さらに、ビット幅は、一例として32ビットとしているが、64ビット等であってもよいのはいうまでもない。

0103

図14に示されるように、本第2実施例のDMAC1による6種類のスキャッタギャザーの動作モードは、例えば、図6を参照して説明した4種類(設定値が『0』〜『3』)に加え、設定値が『4』および『5』の動作モードが設定されている。

0104

すなわち、図14に示されるように、設定ビットの値(設定値)が『4』のとき、DMAC1は、SRAM2からDMAC_CONFIG11の設定値を読み出さずに、例えば、DMAC1が直接DMAC_CONFIG = 0x0000_0001とし、かつ、書き込み値を全て「0」に設定する。

0105

また、設定ビットの値(設定値)が『5』のとき、DMAC1は、SRAM2からDMAC_CONFIG11の設定値を読み出さずに、例えば、DMAC1が直接DMAC_CONFIG = 0x0000_0001とし、かつ、書き込み値を全て「1」に設定する。

0106

このように、第2実施例のDMA制御装置は、例えば、スキャッタギャザーモードで実行されるタスクは6つの動作モード(設定値『0』〜『5』)を備え、10個分のタスク(#0〜#9)について、それぞれ動作モードを設定できるようになっている。

0107

図15は、図14に示す設定レジスタ構成において、設定ビット=4(設定値が『4』)の動作の一例を説明するためのフローチャートである。図15と、前述した図10の比較から明らかなように、設定値が『4』のとき、図10におけるステップST31の処理は、省略されている。

0108

すなわち、設定値が『4』の動作モードでは、ステップST42において、DMAC1が直接DMAC_CONFIG = 0x0000_0001とし、さらに、ステップST43において、DMAC_DST12に対して0x0000_0000を書き込む。

0109

すなわち、図15では、図10のステップST34におけるDMAC_DST12に対してDMAC_IMMEDIATE13を書き込む代わりに、ステップST43において、DMAC_DST12に対して0x0000_0000を書き込むようになっている。

0110

なお、図15におけるステップST41,ST42,ST44〜ST46の処理は、図10におけるステップST32,ST33,ST35〜ST37の処理と同様のものであり、その説明は省略する。

0111

このように、図15に示す設定値が『4』の動作モードでは、書き込む値が0x0000_0000と決まっているので、図10に示す設定値が『3』の動作モードと比較すると、SRAM2からDMAC_CONFIG11の設定値を読み込む動作が不要となる。

0112

これにより、図10を参照して説明した設定値が『3』の場合と比較して、メモリからの値の読み出し処理(バス5を介したアクセス回数)を、さらに、1回削減することが可能になる。すなわち、前述した設定値が『0』の場合と比較して、メモリからの値の読み出し処理を3回削減することができる。

0113

図16は、図14に示す設定レジスタ構成において、設定ビット=5(設定値が『5』)の動作の一例を説明するためのフローチャートである。図16と、上述した図15の比較から明らかなように、設定値が『5』のとき、図15におけるステップST43の処理がST53に置き換えられている。

0114

すなわち、設定値が『5』の動作モードでは、図15のステップST43におけるDMAC_DST12に0x0000_0000を書き込む代わりに、ステップST53において、DMAC_DST12に0xFFFF_FFFFを書き込むようになっている。

0115

なお、図16におけるステップST51,ST52,ST54〜ST56の処理は、上述した図15におけるステップST41,ST42,ST44〜ST46の処理と同様のものである。

0116

すなわち、図16に示す設定値が『5』の動作モードでは、設定値が『4』の動作モードにおけるステップST43のDMAC_DST12に0x0000_0000を書き込む処理を除いて、図15に示す設定値が『4』の動作モードと同様である。

0117

これにより、図10を参照して説明した設定値が『3』の場合と比較して、メモリからの値の読み出し処理(バス5を介したアクセス回数)を、さらに、1回削減することが可能になる。すなわち、前述した設定値が『0』の場合と比較して、メモリからの値の読み出し処理を3回削減することができる。

0118

なお、以上において、設定ビット=7(設定値が『7』)として、例えば、次に実行するタスクの設定ビットの位置を、レジスタDMAC_SCATTER16の最初に戻すことを指示するモードを設けてもよい。

0119

図17は、第2実施例のDMA制御装置におけるバスを介したアクセス回数の削減効果を説明するための図であり、上述した設定値が『0』〜『5』(設定ビット=1〜5)の場合におけるバス5のアクセス回数の削減割合を示すものである。すなわち、前述した図11の設定値が『0』〜『3』の場合に加え、設定値が『4』および『5』の場合も含めて示すものである。

0120

図17、並びに、図15および図16を参照して説明したように、バス5を介した書き込みアクセス回数は、設定値が『4』および『5』のいずれの場合も、2回(ステップST41,ST43、および、ST51,ST53)である。

0121

すなわち、バス5を介した読み出しアクセス回数は、設定値が『0』の場合の4回(ステップST01〜ST04)に対して、設定値が『4』および『5』の場合(2回)となり、アクセス回数の削減割合は、60%となる。このように、第2実施例のDMA制御装置(DMA制御方法)によれば、DMA処理に求められるサイクル数をさらに削減して、消費電力を低減することが可能なのが分かる。

0122

図18は、DMA制御装置の第3実施例における設定レジスタ構成を示すブロック図である。図18と、前述した図3の比較から明らかなように、第3実施例のDMA制御装置において、DMAC1は、さらに、タスクリピートレジスタ(DMAC_TASK_REPEAT:第2レジスタ)17を含む。レジスタDMAC_TASK_REPEAT17は、DMAC_TASK_NUM14により数が指定される一連のタスクを連続して何回実行するかを指定するためのレジスタである。

0123

図19および図20は、図18に示すDMA制御装置の動作を説明するための図である。ここで、図19は、DMAC_TASK_NUM14およびDMAC_TASK_REPEAT17に対して、DMAC_TASK_NUM = 4,DMAC_TASK_REPEAT = 3と指定されたときに実行されるタスクの数と順序を示している。

0124

また、図20は、このときの各タスク実行前に設定される基本機能設定レジスタ(DMAC_CONFIG11,DMAC_DST12,DMAC_SRCまたはDMAC_IMMEDIATE13)の値がメモリ2上のどこから読み出されるかを示している。

0125

図19に示されるように、レジスタDMAC_TASK_NUM14には、DMAC_TASK_NUM = 4が指定されているため、タスク#0,#1,#2,#3の3個のタスクが実行され、このシーケンスが、レジスタDMAC_TASK_REPEAT17に設定されている3回だけ繰り返される。

0126

このとき、各タスク実行前に設定される基本機能設定レジスタの値は、図20に示されるようにしてメモリ2から読み出される。具体的に、タスク#0のSrc addr(DMAC_SRCまたはDMAC_IMMEDIATE13)は0x2000_0000から、タスク#0のDst addr(DMAC_DST12)は0x2000_0004から、タスク#0のconfig(DMAC_CONFIG11)は0x2000_0008から、それぞれ設定値が読み出される。

0127

また、タスク#1のSrc addrは0x2000_000Cから、タスク#1のDst addrは0x2000_0010から、タスク#1のconfigは0x2000_0014から、それぞれ設定値が読み出される。さらに、タスク#2のSrc addrは0x2000_0018から、タスク#2のDst addrは0x2000_001Cから、タスク#2のconfigは0x2000_0020から、それぞれ設定値が読み出される。そして、タスク#3のSrc addrは0x2000_0024から、タスク#3のDst addrは0x2000_0028から、タスク#3のconfigは0x2000_0020から、それぞれ設定値が読み出される。

0128

このように、第3実施例のDMA制御装置によれば、レジスタDMAC_TASK_REPEAT17を設けることにより、DMAC_TASK_NUM14により指定された一連のタスク(#0〜#3)を、DMAC_TASK_REPEAT17に設定された回数だけ繰り返して実行させることができる。

0129

図21は、DMA制御装置の第4実施例における設定レジスタ構成のレジスタDMAC_SCATTER16を説明するための図である。図21に示されるように、タスク#0〜#7の設定ビットは、それぞれ4ビットであり、また、各タスク(例えば、#0)の動作モード指定ビットは、3ビット(例えば、図14に示す設定ビットの値0〜7に相当)とされている。さらに、各タスクのトリガー指定ビット(タスク実行開始のトリガーの種類を指定するためビット)は、1ビットとされている。

0130

ところで、近年開発されている組込機器用MCUでは、DMAC1によるタスク実行のトリガーを与える方法として、CPU3からDMAC1内のタスク実行を指示するためのレジスタへ書き込む以外の方法が準備されている。

0131

すなわち、近年のMCUは、CPU3からDMAC1内のタスク実行を指示するためのレジスタへ書き込む機能に加えて、SPI40,GPIO41,タイマ42およびADC43などの周辺回路から、DMAC1へトリガー信号を出力する機能を備えている。

0132

具体的に、例えば、SPI40は、SPI I/Fからデータの送信や受信が完了したとき、また、GPIO41は、入力信号信号レベルに変化があったときに、トリガー信号を出力する。

0133

さらに、タイマ42は、カウンタの値が所定の値になったとき、そして、ADC43は、ADC I/Fから入力されるアナログ信号デジタル値への変換が完了したときに、トリガー信号を出力する。

0134

図22は、図21に示す設定レジスタ構成の一例を説明するための図である。図22と、前述した図14の比較から明らかなように、本第4実施例において、各タスク#0〜#7の設定ビットの値0〜7(下位3ビット)は、図14に示す第2実施例における設定ビット0〜7(3ビット)と同様の動作を指定する。

0135

また、本第4実施例において、各タスク#0〜#7の設定ビットの上位1ビットは、タスク実行開始のトリガーの種類を指定するために使用され、例えば、設定ビット(上位1ビット)の値が0の場合、タスク開始トリガーは、前のタスクが完了したときが指定される。また、例えば、設定ビット(上位1ビット)の値が0の場合、タスク開始トリガーは、DMAC1が周辺回路からトリガー信号を受信したときが指定される。

0136

図23は、本実施例のDMA制御装置が適用されるワイヤレスセンサーノードの一例を示すブロック図である。図23に示されるように、ワイヤレスセンサーノード(無線端末)は、MCU(マイクロコントローラ),無線モジュール60,センサー電源61および温度センサー63を含む。

0137

MCUは、前述した図1と同様のものであり、DMAC1,メモリ2,CPU3,SPI40,GPIO41,タイマ42およびADC43を含み、それぞれバス5を介して接続されている。なお、DMAC1に対しては、各周辺回路(SPI40,GPIO41,タイマ42およびADC43)からトリガー信号が入力されるようになっている。

0138

図23を参照して、CPU3を用いることなく、温度センサー63からのセンサー出力電圧Vosを一定間隔でデジタル値に変換し、SPI I/F(SPI40)を介して外部の無線モジュール60に出力する処理動作を説明する。

0139

ここで、SPI40は、例えば、無線通信機能を持つ無線モジュール60に繋がっており、無線モジュール60は、例えば、SPI40を介して受け取ったデータをサーバ無線送信する。

0140

センサー電源61は、例えば、MCUのGPIO41からの入力信号が高レベル『H』=MCUの電源電圧、または、低レベル『L』=MCUの設置電圧受け取り、『H』のときは温度センサー63への電力供給を行い、『L』のときは電力供給を行わない。温度センサー63は、センサー電源61から電力供給を受けている間、周囲の温度を測定し、アナログセンサー電圧VosとしてADC43に出力する。

0141

SPI40,GPIO41,タイマ42並びにADC43の制御および動作に関わる各種設定レジスタは、予め適切に設定されている。ここで、SPI40は、例えば、SPI内部に設けられた送信データレジスタに対して送信したいデータを書き込むことで、データの送信を開始する。

0142

また、GPIO41は、例えば、GPIO内部に設けられたレジスタGPIO_OUTに『1』を書き込むと『H』を出力し、『0』を書き込むと『L』を出力する。さらに、ADC43は、例えば、ADC内部に設けられたレジスタSTARTに『1』を書き込むことで、アナログ-デジタル変換動作を開始する。

0143

図24は、図23のワイヤレスセンサーノード(DMAC1)におけるスキャッタギャザー設定レジスタのDMAC_SCATTER16の設定の一例を説明するための図である。図24に示されるように、タスク#0の設定ビット(4ビット)=13,タスク#1の設定ビット=5,タスク#2の設定ビット=12,そして,タスク#3の設定ビット=1とする。なお、レジスタDMAC_TASK_NUM14は、DMAC_TASK_NUM = 4と設定されているものとする。

0144

図25は、図23に示すワイヤレスセンサーノードの動作の一例を説明するための図である。図25の概略を説明すると、まず、(A)において、タイマ42がDMAC1へトリガー信号を出力し、(B)において、DMAC1がGPIO41のレジスタGPIO_OUTに『1』を書き込む(タスク#0)。

0145

次に、(C)において、DMAC1がADC43のレジスタSTARTに『1』を書き込み(タスク#1)、(D)において、ADC43が温度センサー63からのセンサー出力電圧Vosをデジタル値に変換する。さらに、(E)において、ADC43がDMAC1へトリガー信号を出力し、(F)において、DMAC1がGPIO41のレジスタGPIO_OUTに『0』を書き込む(タスク#2)。

0146

そして、(G)において、DMAC1がADC43のデジタル値を読み出し、SPI40の送信データレジスタに対して読み出したデジタル値(データ)を書き込み(タスク#3)、(H)において、SPI40がデータを出力する。

0147

すなわち、(A)において、タイマ42は、DMAC1に対して、一定間隔でトリガー信号を出力する。さらに、(B)において、タイマ42からのトリガー信号を受信したDMAC1は、タスク#0の設定ビットの上位1ビットが『1』であるか否かを確認する。

0148

図24に示されるように、タスク#0の上位1ビットは『1』であることから、DMAC1は、トリガー信号によるタスク実行を開始するべく、SRAM(メモリ)2に割り当てられている0x2000_0000から0x2000_0008の値を読み出す。そして、読み出した値を、基本機能設定レジスタに書き込む。

0149

基本機能設定レジスタに対する書き込み処理が終了すると、基本機能設定レジスタの値に従ってタスク#0の実行、すなわち、GPIO41のレジスタGPIO_OUTに『1』を書き込む。

0150

さらに、GPIO_OUTに『1』が書き込まれたGPIO41は、出力信号を『H』に設定する。この『H』信号を受け取ったセンサー電源61は、温度センサー63に対する電力供給を開始する。電力が供給された温度センサー63は、周囲温度を測定し、アナログ電圧としてセンサー出力電圧Vosを出力する。

0151

そして、(C)において、タスク#0を完了したDMAC1は、タスク#1の設定ビットの上位1ビットが『1』であるか否かを確認する。図24に示されるように、タスク#1の上位1ビットは『0』であることから、DMAC1は、前のタスク完了により次のタスク実行を開始するべく、SRAM2に割り当てられている0x2000_000Cから0x2000_0014の値を読み出し、基本機能設定レジスタに書き込む。この書き込み処理の終了後、基本機能設定レジスタの値に従ってタスク#1の実行、すなわち、ADC43のレジスタSTARTに『1』を書き込む。

0152

ここで、タスク#1を完了したDMAC1は、タスク#2の設定ビットの上位ビットが『1』であるか否かを確認する。図24に示されるように、タスク#2の上位1ビットは『1』であることから、DMAC1は、タスク#2の実行開始信号であるトリガー信号の受信を待つ。

0153

さらに、(D)において、レジスタSTARTに『1』が書き込まれたADC43は、アナログ入力電圧(Vos)をデジタル値に変換し、変換した値をデータレジスタに書き込み、(E)において、ADC43がDMAC1へトリガー信号を出力する。

0154

次に、(F)において、ADC43からのトリガーを受信したDMAC1は、タスク#2の設定ビットの上位1ビットが『1』であるか否かを確認する。図24に示されるように、タスク#2の上位1ビットは『1』であることから、DMAC1は、トリガー信号受信によるタスク実行を開始するべく、SRAM2に割り当てられている0x2000_0018から0x2000_0020の値を読み出し、基本機能設定レジスタへ書き込む。

0155

書き込み処理の終了後、基本機能設定レジスタの値に従ってタスク#2の実行、すなわち、GPIO41のレジスタGPIO_OUTに『0』を書き込む。また、レジスタGPIO_OUTに『0』が書き込まれたGPIO41は、出力信号を『L』に設定する。この『L』の信号を受け取ったセンサー電源61は、温度センサー63に対する電力供給を停止する。

0156

さらに、(G)において、タスク#2を完了したDMAC1は、タスク#3の設定ビットの上位1ビットが『1』であるか否かを確認する。図24に示されるように、タスク#3の上位1ビットは『0』であることから、DMAC1は、前のタスク完了により次のタスク実行を開始するべく、SRAMに割り当てられている0x20000024から0x2000_002Cの値を読み出し、基本機能設定レジスタへ書き込む。書き込み終了後、基本機能設定レジスタの値に従ってタスク#の実行、すなわち、ADC43のデータレジスタの値を読み出し、SPI40の送信データレジスタに書き込む。

0157

ここで、DMAC1は、DMAC_TASK_NUM = 4であることからスキャッタギャザーモードで実行するタスクの数が4であり、既に、タスク#0〜#3の4つのタスクを実行済みであることから、次に実行するタスクがないことを判定し、動作を終了する。

0158

そして、(H)において、送信データレジスタに値が書き込まれたSPI40は、その書き込まれた値をSPI I/Fを介して無線モジュール60に出力する。SPI I/Fを介してデータを受け取った無線モジュール60は、無線チャネルを介してサーバなどに対して、受け取ったデータを送信する。なお、上述した(A)〜(H)の一連の処理は、タイマ42から出力されるトリガー信号に基づいて、一定間隔で行われることになる。

0159

図26は、図23に示すSRAM(メモリ)2に保存されている各タスクの実行開始前にDMA制御装置(DMAC1)の基本機能設定レジスタに読み込まれる値の一例を示す図である。

0160

ここで、タスク#0および#1は、前述した図22の設定ビットの下位3ビットにおいて、設定ビット=5(設定値が『5』)で指定されるモードで動作する。なお、設定値が『5』の動作モードは、図14および図16を参照して説明した通りである。

0161

そのため、レジスタSrc addr(DMAC_SRCまたはDMAC_IMMEDIATE13)、レジスタconfig(DMAC_CONFIG11)に設定される0x2000_0000,0x2000_0008,0x2000_000C,0x2000_0014には、どんな値が設定されていてもよい(don't care)。

0162

ここで、書き込み先アドレスであるレジスタGPIO_OUT(例えば、タスク#0のDst addr:DMAC_DST12)とレジスタSTART(例えば、タスク#1のDst addr:DMAC_DST12)の値は、それぞれ0x2000_0004および0x2000_0010に設定されている。

0163

また、タスク#2は、前述した図22の設定ビットの下位3ビットにおいて、設定ビット=4(設定値が『4』)で指定されるモードで動作する。なお、設定値が『4』の動作モードは、図14および図15を参照して説明した通りである。

0164

そのため、レジスタSrc addr(13)、レジスタconfig(11)に設定される0x2000_0018,0x2000_0020には、どんな値が設定されていてもよい(don't care)。ここで、書き込み先アドレスであるレジスタGPIO_OUT(12)の値は、0x2000_001Cに設定されている。

0165

さらに、タスク#3は、前述した図22の設定ビットの下位3ビットにおいて、設定ビット=1(設定値が『1』)で指定されるモードで動作する。なお、設定値が『1』の動作モードは、図6および図8を参照して説明した通りである。

0166

そのため、レジスタconfig(11)に設定される0x2000_002Cには、どんな値が設定されていてもよい(don't care)。ここで、読み出し先アドレスであるADC43のデータレジスタの値と、書き込み先アドレスであるSPI40の送信データレジスタの値は、それぞれ0x2000_0024および0x2000_0028に設定されている。

0167

上述した動作により、DMAC1を用いて温度センサー63の値を取得し、無線チャネルを介してサーバへ送信するワイヤレスセンサーノードの機能が実現される。なお、上述した各種レジスタの値の読み出しおよび書き込みは、例えば、CPU3を用いて行うこともできるが、CPU3はDMAC1と比較して回路規模が大きいため、DMAC1を用いて行う場合よりも消費電力が大きくなる。

0168

また、CPU3で実行するプログラムは、例えば、SRAM2から読み出すことになるため、バス5のアクセス回数が増えることからも、DMAC1を用いて行う場合よりも消費電力が大きくなる。

0169

さらに、同じスキャッタギャザーモードを備えるDMACを用いて行う場合と比較しても、本実施例によれば、各タスクの処理サイクルは、図17を参照して説明したように、最大60%削減することができる。すなわち、本実施例によれば、より少ない処理サイクル、すなわち、より短い時間で処理を完了することができ、しかも、消費電力を削減することが可能である。

0170

図27は、本実施例のDMA制御装置の一例を示すブロック図である。図27に示されるように、DMA制御装置(DMAC)1は、制御部81,コンフィギュレーション値選択回路82,書き込み値生成回路83,タスク数判定回路84,繰り返し回数判定回路85および設定値アドレス生成回路86を含む。

0171

ここで、コンフィギュレーション値選択回路82,書き込み値生成回路83,タスク数判定回路84,繰り返し回数判定回路85および設定値アドレス生成回路86は、制御部81を介してバス5に繋がれている。

0172

さらに、DMAC1は、例えば、図18を参照して説明したように、基本機能設定レジスタおよびスキャッタギャザー設定レジスタを含む。基本機能設定レジスタは、DMAC_CONFIG11、DMAC_DST12、および、DMAC_SRCまたはDMAC_IMMEDIATE13を含む。また、スキャッタギャザー設定レジスタは、DMAC_TASK_NUM14、DMAC_TASK_ADDR15、DMAC_SCATTER(第1レジスタ)16およびDMAC_TASK_REPEAT(第2レジスタ)17を含む。

0173

さらに、基本機能設定レジスタ(11〜13)およびスキャッタギャザー設定レジスタ(14〜17)は、図示しないが、各回路(82〜86)および制御部81に接続されている。なお、図27は、DMAC1の単なる一例を示すものであり、様々な変形および変更が可能なのはいうまでもない。

0174

図28は、図27に示すDMA制御装置におけるコンフィギュレーション値選択回路82および書き込み値生成回路83の一例を示すブロック図である。図28に示されるように、コンフィギュレーション値選択回路82は、選択切り出し部821および選択部822を含む。このコンフィギュレーション値選択回路82は、レジスタDMAC_SRCまたはDMAC_IMMEDIATE13が出力する値をDMAC_SRCのアドレスとして使うかレジスタDMAC_IMMEDIATEとして使うかの選択信号を生成する。

0175

選択切り出し部821は、32ビットのレジスタDMAC_SCATTER16の値のうち、例えば、現在実行中のタスク番号の位置の4ビットを切り出して出力する。選択部822は、入力される4ビットの値から1つのタスク実行でDMAC1によって書き込まれる値の数を、レジスタDMAC_CONFIG11の値にするか『1』にするかを選択する。

0176

選択部822は、例えば、図14を参照して説明したように、4ビットの入力値が『1』,『3』,『4』および『5』のときは『1』を選択し、それ以外のときはレジスタDMAC_CONFIG11の値を選択して出力する。

0177

また、図28に示されるように、書き込み値生成回路83は、書き込みデータバッファ831および選択部832を含み、例えば、DMAC1がコピー先アドレスに書き込む値を生成する。選択部832は、コンフィギュレーション値選択回路82(選択切り出し部821)から出力される4ビットの値に基づいて、レジスタDMAC_IMMEDIATEの値,『0』,『1』,または,読み込みデータバッファ831の値にするかを選択する。

0178

例えば、図14を参照して説明したように、4ビットの入力値が『0』および『1』のときは読み込みデータバッファ831の値を選択し、『2』および『3』のときはレジスタDMAC_IMMEDIATE(13)の値を選択する。そして、4ビットの入力値が『4』のときは『0』を選択し、4ビットの入力値が『5』のときは『1』を選択する。

0179

読み込みデータバッファ831には、設定ビットの値が『0』,『1』のとき、制御部81は、バス5を介してレジスタDMAC_SRC(13)に設定されているアドレスから始まり、レジスタDMAC_CONFIG11に設定されている個数のデータが保存される。

0180

なお、4ビットの入力値が『0』,『1』のときは、このデータをレジスタDMAC_DST12に設定されているアドレスから始まるメモリ空間に対して、レジスタDMAC_CONFIG11に設定されている個数のデータを書き込むことでタスクを実行する。

0181

図29は、図27に示すDMA制御装置におけるタスク数判定回路および繰り返し回数判定回路の一例を示すブロック図であり、図29(a)はタスク数判定回路84を示し、図29(b)は繰り返し回数判定回路85を示す。

0182

図29(a)に示されるように、タスク数判定回路84は、比較部841,レジスタ(TASK_COUNT)842およびインクリメント部843を含み、スキャッタギャザーモード実行中(スキャッタギャザー動作中)に、何番のタスクを実行するかの制御信号を出力する。レジスタTASK_COUNT842は、制御部81からタスクの完了通知を受け取り、インクリメント部843により値をインクリメント(+1)する。

0183

比較部841は、レジスタDMAC_TASK_NUM14から1回のスキャッタギャザーモードにより実行するタスク数を受け取り、TAK_COUNT842の値と比較し、2つの値が同一のときは、所望の数のタスク完了を制御部81に通知する。

0184

図29(b)に示されるように、繰り返し回数判定回路85は、比較部851,レジスタ(REPEAT_COUNT)852およびインクリメント部853を含み、スキャッタギャザーモード実行中に、一連のタスク実行を何回繰り返したか判定する。レジスタREPEAT_COUNT852は、制御部81から一連のタスク実行完了通知を受け取り、インクリメント部853により値をインクリメントする。

0185

比較部851は、レジスタDMAC_TASK_REPEAT17の値を受け取り、REPEAT_COUNT852の値と比較し、2つの値が同一のときは、所望の繰り返し回数だけ一連のタスク実行を完了したとして制御部81に通知する。

0186

図30は、図27に示すDMA制御装置における設定値アドレス生成回路の一例を示すブロック図である。図30に示されるように、設定値アドレス生成回路86は、加算部861および乗算部862を含み、一連のタスク実行前に基本機能設定レジスタに読み込まれる値がメモリ2のどのアドレスに書き込まれているかを制御部81に通知する。

0187

すなわち、設定値アドレス生成回路86は、レジスタDMAC_SRC(13),DMAC_DST12およびDMAC_CONFIG11の値が、SRAM2におけるどのアドレスに書き込まれているかを制御部81に通知する。

0188

例えば、タスク#0を実行するのに求められる基本機能設定レジスタの値が保存されているアドレスは、レジスタDMAC_TASK_ADDR15に保存されている。具体的に、1つのタスクに対して、レジスタDMAC_SRC,DMAC_DSTおよびDMAC_CONFIGの32ビットデータが3個の場合を考える。さらに、本実施例のDMAC1が搭載されているMCUがバイアドレッシング方式(8ビットごとに1つのアドレスを割り当てる)を採用しているものとする。

0189

このとき、タスク#0の基本機能設定レジスタの値は、レジスタDMAC_TASK_ADDR15に保存されているアドレスをnとすると、例えば、nからn+11で示されるアドレスのSRAM2上に保存されている。

0190

また、タスク#1nに対しては、n+12からn+23になり、同様に、タスク#mに対しては、n+12×mからn+12×(m+1)−1になる。従って、設定値アドレス生成回路86は、(レジスタDMAC_TASK_ADDR15のアドレス)+(レジスタTACK_COUNT842の値)×12を制御部81に出力する。

0191

なお、制御部81は、CPU3からバス5を介して行われる基本機能設定レジスタ(11〜13)およびスキャッタギャザー設定レジスタ(14〜17)への値の書き込みおよび読み出し、並びに、各種回路(82〜86)の制御を行う。

0192

すなわち、制御部81は、各種回路からの信号を受け取って1つのタスク、或いは、スキャッタギャザーモードを実行するための各種制御信号を各種回路に出力する。さらに、制御部81は、タスク実行時に行われるバス5を介したデータの読み込みおよび書き込みも制御する。

0193

以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではない。また、明細書のそのような記載は、発明の利点および欠点を示すものでもない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。

0194

以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
(付記1)
基本機能設定レジスタと、
前記基本機能設定レジスタに書き込むデータを、バスを介して読み出しせずに直接設定してタスクを実行するスキャッタギャザー設定レジスタと、を有する、
ことを特徴とするDMA制御装置。

0195

(付記2)
前記基本機能設定レジスタは、データ数を規定するコンフィギュレーションレジスタを含み、
前記DMA制御装置は、さらに、前記コンフィギュレーションレジスタに対して、前記コンフィギュレーションレジスタの値または予め定められた値を選択するコンフィギュレーション値選択回路を有する、
ことを特徴とする付記1に記載のDMA制御装置。

0196

(付記3)
前記基本機能設定レジスタは、コピー先アドレスを設定するデスティネーションアドレスレジスタを含み、
前記DMA制御装置は、さらに、前記デスティネーションアドレスレジスタに対して、直接書き込む値を生成する書き込み値生成回路を有する、
ことを特徴とする付記1に記載のDMA制御装置。

0197

(付記4)
前記スキャッタギャザー設定レジスタは、複数のスキャッタギャザー動作を切り替える第1レジスタを含む、
ことを特徴とする付記1乃至付記3のいずれか1項に記載のDMA制御装置。

0198

(付記5)
前記スキャッタギャザー設定レジスタは、一連のタスクを連続して何回実行するかを指定する第2レジスタを含む、
ことを特徴とする付記4に記載のDMA制御装置。

0199

(付記6)
さらに、前記第2レジスタの値を受け取り、スキャッタギャザー動作中に、前記一連のタスクの実行を何回繰り返したか判定する繰り返し回数判定回路を有する、
ことを特徴とする付記5に記載のDMA制御装置。

0200

(付記7)
さらに、前記一連のタスクの実行前に、前記基本機能設定レジスタに読み込まれる値がメモリのどのアドレスに書き込まれているかを出力する設定値アドレス生成回路を有する、
ことを特徴とする付記5または付記6に記載のDMA制御装置。

0201

(付記8)
さらに、スキャッタギャザー動作中に、何番のタスクを実行するかの制御信号を出力するタスク数判定回路を有する、
ことを特徴とする付記1乃至付記7のいずれか1項に記載のDMA制御装置。

0202

(付記9)
付記1乃至付記8のいずれか1項に記載のDMA制御装置と、
メモリと、
CPUと、
複数の周辺回路と、
前記DMA制御装置,前記メモリ,前記CPUおよび複数の前記周辺回路を繋ぐバスと、を有する、
ことを特徴とするマイクロコントローラ。

0203

(付記10)
スキャッタギャザーモードを有するDMA制御方法であって、
前記スキャッタギャザーモードは、基本機能設定レジスタに書き込むデータを、バスを介して読み出しせずに直接設定してタスクを実行する、のを含む、
ことを特徴とするDMA制御方法。

0204

(付記11)
前記基本機能設定レジスタにおける、データ数を規定するコンフィギュレーションレジスタに設定する値を、前記バスを介してメモリから読み出すことなく、予め定められた値に設定する、のを含む、
ことを特徴とする付記10に記載のDMA制御方法。

0205

(付記12)
前記基本機能設定レジスタにおける、コピー先アドレスを規定するデスティネーションアドレスレジスタに設定する値を、前記バスを介してメモリから読み出すことなく、直接生成して書き込む、のを含む、
ことを特徴とする付記10に記載のDMA制御方法。

0206

(付記13)
前記スキャッタギャザーモードは、複数設けられ、
複数の前記スキャッタギャザーモードの設定によって、各タスクによる処理内容を変更する、のを含む、
ことを特徴とする付記10乃至付記12のいずれか1項に記載のDMA制御方法。

0207

(付記14)
前記スキャッタギャザーモードは、一連のタスクを連続して何回実行するかを指定する、のを含む、
ことを特徴とする付記13に記載のDMA制御方法。

0208

(付記15)
前記スキャッタギャザーモードは、前記一連のタスクの実行を何回繰り返したか判定する、のを含む、
ことを特徴とする付記14に記載のDMA制御方法。

0209

1DMA制御装置(DMAC)
2メモリ(SRAM)
3 CPU(CPUコア)
5バス
40シリアルペリフェラルインターフェース(SPI)
41汎用入出力ポート(GPIO)
42タイマ
43アナログ-デジタル変換器(ADC)
11,101 DMAC_CONFIG
12,102 DMAC_DST
13,103 DMAC_SRC
14 DMAC_TASK_NUM
15 DMAC_TASK_ADDR
16 DMAC_SCATTER(第1レジスタ)
17 DMAC_TASK_REPEAT(第2レジスタ)
81 制御部
82コンフィギュレーション値選択回路
83書き込み値生成回路
84タスク数判定回路
85繰り返し回数判定回路
86設定値アドレス生成回路

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

該当するデータがありません

関連する公募課題

該当するデータがありません

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

該当するデータがありません

この 技術と関連する公募課題

該当するデータがありません

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ