JP6275474B2 - 半導体装置及びデータ転送装置 - Google Patents

半導体装置及びデータ転送装置 Download PDF

Info

Publication number
JP6275474B2
JP6275474B2 JP2013266791A JP2013266791A JP6275474B2 JP 6275474 B2 JP6275474 B2 JP 6275474B2 JP 2013266791 A JP2013266791 A JP 2013266791A JP 2013266791 A JP2013266791 A JP 2013266791A JP 6275474 B2 JP6275474 B2 JP 6275474B2
Authority
JP
Japan
Prior art keywords
data
transfer
data transfer
dtc
block
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.)
Active
Application number
JP2013266791A
Other languages
English (en)
Other versions
JP2015122036A (ja
Inventor
三ッ石 直幹
直幹 三ッ石
誠司 猪狩
誠司 猪狩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2013266791A priority Critical patent/JP6275474B2/ja
Priority to US14/574,710 priority patent/US9652229B2/en
Publication of JP2015122036A publication Critical patent/JP2015122036A/ja
Priority to US15/483,041 priority patent/US9977753B2/en
Application granted granted Critical
Publication of JP6275474B2 publication Critical patent/JP6275474B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Description

本発明は半導体装置に関し、例えばマイクロコンピュータに関する。
一般に、シングルチップマイクロコンピュータは、中央処理装置(CPU:Central Processing Unit)を中心にして、プログラム保持用のROM(Read Only Memory:リードオンリメモリ)、データ保持用のRAM(Random Access Memory:ランダムアクセスメモリ)、及びデータ又は信号の入出力を行うための入出力回路などの機能ブロックが、一つの半導体基板上に形成されている。このようなシングルチップマイクロコンピュータは、様々な機器制御に用いられる。
シングルチップマイクロコンピュータの機器制御において、割り込みなどのイベントに呼応して、データ転送を行う要求がある。CPUは命令の組み合わせによって任意の処理を実現できるものの、割り込み処理を行う場合には、処理の流れを切り替えるために例外処理、スタックの退避・復帰処理、復帰命令の実行が必要になる。この場合、データ転送行う際の命令リードなどのCPUの動作時間が大きくなりがちである。
上記のデータ転送の問題点を解消するため、シングルチップマイクロコンピュータにデータ転送装置を設け、少ないハードウェアで多数の周辺処理装置(入出力回路)からの要求に応じたデータ転送を行う技術が提案されている(特許文献1)。この技術では、転送すべきデータが格納されているメモリの位置を示す転送元アドレスなどのデータ転送情報が、記憶装置(RAM)に格納される。また、データ転送に必要なすべての情報が記憶装置(RAM)のどこに格納してあるかを示すアドレスを格納するベクタテーブルが設けられる。そして、データ転送の起動要求があった場合に、起動要求に対応してベクタテーブルの内容を参照する手段と、ベクタテーブルの内容からデータ転送に必要なすべての情報を得る手段が設けられる。この技術では、少ないハードウェアでデータ転送を実現することができるが、データ転送の内容については考慮されていない。
これに対し、データ転送装置でのデータ転送の応用範囲を広げるため、データ転送のモードによって異なるデータ転送を行う技術も提案されている(特許文献2)。この技術では、データ転送のモードとして、リピート転送モード、ブロック転送モードが提案されている。これにより、転送先や転送元のアドレスの制御や、転送回数の選択などを行うことが可能である。例えば、本技術をプリンタなどのシステムに適用すれば、ステッピングモータの制御、プリンタの印字データ制御が可能である。また、受信データのメモリへの蓄積に好適である。また、この技術では、データ転送情報を、データ転送装置内部に専用のハードウェアとして保有し、このハードウェアを有効に利用するため、ショートアドレスモード/フルアドレスモードの転送情報の構成を選択可能にすることも示されている。本例では、ステッピングモータは回転角と移動量が対応しており、フィードバックが不要であり、所定の数のデータを、所定の順番で転送することができればよい。本技術では、転送元アドレス及び転送先アドレスの一方はRAMなどとなるが、RAMの記憶内容を更新しながら使用することは考えられていない。
データ転送に必要な情報を記憶装置に格納して、データ転送装置の1回の動作で、少なくとも1つ以上の情報によるデータ転送が指定可能(チェイン転送ないしチェイン動作)な技術も提案されている(特許文献3)。本技術によれば、任意の起動要因で、任意の数の転送を可能としたことにより、様々な用途に適用可能となる。その結果、システム構成上の自由度を向上し、使い勝手を向上させることができる。
データ転送装置内にあらかじめ設定したデータと転送するデータとの間で比較や簡単な演算が行える演算器を内蔵した技術も提案されている(特許文献4)。この技術では、データ転送を、専用のハードウェアであるデータ転送装置で実行するので、CPUより高速なデータ転送を実現できる。その結果、CPUの割り込み処理の頻度を低減できるので、効率的な処理を行うことができる。
特開平1−125644号公報 特開平5−307516号公報 特開平7−129537号公報 特開2000−194647号公報
ところが、発明者らは、上述の技術には、以下に示す問題点が有ることを見出した。近年、マイクロコンピュータが内蔵する機能及び制御対象は増加しており、マイクロコンピュータの制御もより高い精度が求められるようになっている。このため、FIR(Finite Impulse Response)フィルタ演算やIIR(Infinite Impulse Response)フィルタ演算を行うことが求められる。こうしたフィルタ演算は、積和演算で実現される。フィルタ演算は、CPUが所定の割り込み(イベント)などに呼応して行うこともできるが、CPUがデータ転送を行う場合と同様に、CPUの効率的な処理を阻害する。
また、マイクロコンピュータの制御対象は多いので、フィルタ演算も制御対象ごとに実行する必要がある。フィルタ演算器をハードウェアとして設ける場合、物理的な規模の増加の抑制の観点から、1つのフィルタ演算器を複数の制御対象に利用できることが望ましい。また、フィルタ演算においては、時間的にサンプリングされた複数の時系列データをフィルタ演算器に入力することになる。よって、1つのフィルタ演算器を複数の制御対象に利用するには、使用する複数のデータを、フィルタ演算に先立ってフィルタ演算器に与える必要がある。また、積和演算の係数は、制御対象毎に変更する必要がある場合が考え得る。よって、積和演算の係数についても、フィルタ演算に先立ってフィルタ演算器に与える必要がある。
フィルタ演算器の演算が高速であるとしても、フィルタ演算器にデータを与えるのに時間を要してしまうと、フィルタ演算器の処理の律速要因となる。その結果、マイクロコンピュータ全体としての処理ないし制御動作の高速化を実現することができない。そのため、マイクロコンピュータにおいて、フィルタ演算のような複数のデータを用いた演算を行う場合、演算器に効率的にデータを入力する技術の確立が必要である。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
一実施の形態によれば、半導体装置は、データ転送情報に基づいて転送元アドレス領域から転送先アドレス領域へ複数のデータを連続して転送するデータ転送装置と、前記複数のデータを同時に用いた演算を行う演算器と、を備えるものである。
一実施の形態によれば、複数のデータを同時に処理する演算器に対し、演算に要する複数のデータを効率的に与えることができる。
実施の形態1にかかるマイクロコンピュータの構成を模式的に表したブロック図である。 実施の形態1にかかるマイクロコンピュータ100のうち、データ転送にかかる部分を表示した図を示す。 データ転送情報の構成を示す図である。 データ転送装置(DTC)の構成を模式的に表したブロック図である。 転送モードの概要を示す図である。 シフトブロックモードでのデータ転送装置(DTC)のデータ転送動作を示す図である。 シフトブロックモードでのデータ転送装置(DTC)のデータ転送動作を示す図である。 シフトブロックモードでのデータ転送装置(DTC)のデータ転送動作を示す図である。 データ転送装置(DTC)の状態遷移図を示す図である。 データ転送装置(DTC)のシフトブロックモードのデータ転送の内部動作の第1の例を示す図である。 データ転送装置(DTC)のシフトブロックモードのデータ転送の内部動作の第2の例を示す図である。 シフトブロックモードでのデータ転送装置(DTC)のデータ転送の動作例を示す図である。 実施の形態2にかかるフィルタ演算器(FLT)の構成を模式的に表したブロック図を示す。 実施の形態2にかかるフィルタ演算器(FLT)の使用例を示す図である。 実施の形態3にかかるフィルタ演算器(FLT)の構成を模式的に表したブロック図を示す。 実施の形態3にかかるフィルタ演算器(FLT)の使用例を示す図である。 実施の形態4にかかるフィルタ演算器(FLT)の構成を模式的に表したブロック図である。 実施の形態4にかかるフィルタ演算器(FLT)の使用例を示す図である。 実施の形態5にかかるデータ転送情報の構成を模式的に示す図である。 ブロックバッファモードでのデータ転送装置(DTC)の動作を示す図である。 ブロックバッファモードでのフィルタ演算器(FLT)の使用例を示す図である。 実施の形態6にかかるデータ転送情報の構成を模式的に示す図である。 デュアルブロックモードでのデータ転送装置(DTC)のラウンド動作を示す図である。 デュアルブロックモードのラウンド動作を用いる場合のフィルタ演算器(FLT)の使用例を示す図である。 割り込みコントローラ(INT)のブロック図である。 マイクロコンピュータ(MCU)を含むカメラシステムのブロック図である。
以下、図面を参照して本発明の実施の形態について説明する。各図面においては、同一要素には同一の符号が付されており、必要に応じて重複説明は省略される。
実施の形態1
実施の形態1にかかるマイクロコンピュータ100について説明する。図1Aに、実施の形態1にかかるマイクロコンピュータ100の構成を模式的に表したブロック図を示す。図1Bに、実施の形態1にかかる半導体装置であるマイクロコンピュータ100のうち、データ転送にかかる部分を表示した図を示す。以下、図1を参照して、マイクロコンピュータ100の構成を説明する。なお、マイクロコンピュータは、以下ではMCU(Micro Controller Unit)と略記する。
MCU100は、中央処理装置(CPU)1、割り込みコントローラ(Interrupt Controller:以下、INTと称する)2、データ転送装置(データトランスファコントローラ(Data Transfer Controller:以下、DTCと称する))3、リードオンリメモリ(ROM)4、ランダムアクセスメモリ(RAM)5、バスコントローラ(Bus Controller:以下、BSCと称する)6、タイマ7、通信モジュール8、アナログモジュール9、入出力ポート(I/O)10、内部バス11及びフィルタ演算器(以下、FLTと称する)21などを有する。通信モジュール8として、例えばシリアルコミュニケーションインタフェースなどが設けられる。アナログモジュール9として、例えばアナログ/デジタル(A/D)変換器およびデジタル/アナログ(D/A)変換器などが設けられる。
MCU100では、動作の主体となるのはCPU1である。CPU1は、主にROM4から命令を読込んで動作する。DTC3は、CPU1の設定に基づき、CPU1に代ってデータ転送を行う。
INT2は、タイマ7、通信モジュール8及びアナログモジュール9などからの割み込み要求や、MCU100の外部からの複数の外部割り込み要求信号に基づくI/O10からの割り込み要求を受けて、CPU1又はDTC3に割り込み要求又はデータ転送要求を出力する。また、INT2は、割り込み信号による処理を開始又は終了したときに、割り込みをクリアする信号である割込みクリア信号を、タイマ7、通信モジュール8、アナログモジュール9及びI/O10のそれぞれの割込み信号又は割り込み要因フラグに対応して出力する。
BSC6は、CPU1及びDTC3からのバスリクエスト信号を受けて、内部バス11の占有に対する調停をして、バス使用許可信号を出力する。BSC6は、CPU1及びDTC3と、バスリクエスト、バスアクノレジ、バスコマンド、ウェイト、アドレス及びデータなどのインタフェースを行い、内部バス11に接続されたRAMやその他の機能ブロック及びモジュールに対するリード/ライトを実現する。
FLT21は、内部バス11によってリード/ライト可能な複数のデータレジスタを有し、データレジスタに与えられたデータに従って、積和演算などを行う。
上述の通り、DTC3は、データ転送情報に基づいて、データ転送を行う。図2に、データ転送情報の構成を示す。データ転送情報は、モードレジスタ(MRとも称する)、ソースアドレスレジスタ(SARとも称する)、デスティネーションレジスタ(DARとも称する)及び転送カウントレジスタ(CRとも称する)からなる。
MRは、DTC3が行うデータ転送のモードを指定する。DTC3は、MRが指定するデータ転送のモードによって、SAR、DAR及びCRのうちから必要なデータを利用する。
CRは、ブロック転送カウントレジスタ(BTCRとも称する)と転送カウントレジスタ(TCRとも称する)とに分割される。BTCRは、8ビットのBTCRHと8ビットのBTCRLとに分割される。TCRは、8ビットのTCRHと8ビットのTCRLと に分割される。
これらのレジスタは、1組分の回路がDTC3の内部に存在し、特に制限はされないものの、CPU1のアドレス空間上には存在しない。これらのレジスタに格納されるべきデータ転送情報は、必要組数がCPU1のアドレス空間上の、RAM5などの所定のデータ転送情報配置領域に配置される。
次いで、MRのビット構成について説明する。MRのビット15及びビット14は、それぞれSM1ビット及びSM0ビットであり、データ転送後にSARをインクリメントするか、デクリメントするか、又は固定にするかを指定する。
MRのビット13及びビット12は、DM1ビット及びDM0ビットであり、データ転送後にDARをインクリメントするか、デクリメントするか、又は固定にするかを指定する。
MRのビット11はDIRビットであり、転送元または転送先のアドレス制御を指定する。
MRのビット10〜8は、それぞれTMD2ビット、TMD1ビット及びTMD0ビットであり、データの転送モードを指定する。TMD2〜0ビットが「000」のとき、転送モードはノーマルモードとなる。TMD2〜0ビットが「001」のとき、転送モードはリピートモードとなる。TMD2〜0ビットが「100」とき、転送モードはブロック転送モードとなる。TMD2〜0ビットが「101」とき、転送モードはデュアルブロックモードとなる。TMD2〜0ビットが「110」とき、転送モードはシフトブロックモードとなる。各転送モードの詳細については、後述する。
MRのビット7及び6は、それぞれSz1ビット及びSz0ビットであり、1回のデータ転送をバイトサイズ、ワードサイズ及びロングワードサイズのいずれで行うかを指定する。
MRのビット1はNXTE1ビットであり、1つの起動要因に対してデータ転送を終了するか、次のデータ転送を行うかを指定する。NXTE1ビットを0にクリアした場合、データ転送情報リード及びデータ転送後、データ転送情報をライトしてDTC3の動作を終了する。NXTE1ビットを1にセットした場合、データ転送情報リード及びデータ転送後、データ転送情報をライトする。更に、連続したアドレスからデータ転送情報をリードする。そして、このデータ転送情報で指定されるデータ転送を行った後、データ転送情報をライトする。このように、データ転送情報のライト、データ転送及びデータ転送情報のライトの一連の処理を複数回連続して行う動作を、チェイン動作と称する。MRのビット0はNXTE0ビットであり、CRが0になったときに、チェイン動作を行うかを指定する。
DTC3の構成について説明する。図3に、DTC3の構成を模式的に表したブロック図を示す。DTC3は、データ転送制御ブロック(DTCCNTとも称する)31、バスインタフェース(BIFとも称する)32、ベクタ生成ブロック(VGとも称する)33、ベクタアドレスレジスタ(VARとも称する)34、MR、SAR、DAR、CR、テンポラリレジスタ(TRとも称する)、演算器(ALUとも称する)35及び内部バス36を有する。内部バス6は、内部バスBS1〜BS5を含む。
DTCCNT31は、INT2からの起動要求信号DCTREQ及びMRの内容に基づき、DTC3の制御を行う。
BIF32は、DTC3の内部バス36とMCU100の内部バス11とのインタフェースを行う。このインタフェースには、バスリクエスト、バスアクノレジ、バスコマンド、ウェイト、アドレス、データなどが含まれる。
VG33は、INT2から与えられるベクタ番号DTCVECに従って、ベクタアドレスを生成する。例えば、ベクタ番号DTCVECを4倍などとし、所定のオフセットを加算する。
VAR34は、ベクタアドレスからリードしたデータ転送情報の先頭アドレスを格納する。
MR、SAR、DAR及びCRは、データ転送情報の先頭アドレスから順次リードしたデータ転送情報を格納する。
ALU35は、論理演算、シフト及び算術演算などの機能を持ち、所定の順序でこれらの演算を実行する。
また、内部バスBS1〜BS5を介して、SAR、DAR、CR及びTRの内容を、ALU35に与えることができる。ALU35は、与えられた情報に基づいた演算を行う。
以下、ALU35について説明する。ALU35は、インクリメンタ(INCとも称する)41、シフタ(SFTとも称する)42、算術演算器(AUとも称する)43、デクリメンタ(DECとも称する)44を有する。その他、ALU35には、論理演算器などを設けることも可能である。
転送元アドレスのリード、転送先アドレスのライトのためのアドレス出力は、内部バスBS1を用いて行われる。INC41は、内部バスBS1を介して入力するSM1ビット、SM0ビット、DM1ビット及びDM0ビットの指定に基づいて、SAR及びDARのインクリメント/デクリメントを行う。INC41は、SAR及びDARをインクリメント/デクリメントした結果を、内部バスBS3を介して、それぞれSAR及びDARに格納する。
SFT42は、内部バスBS2を介して入力するSz1ビット及びSz0ビットに基づいて、TCRLの内容をシフトする。AU43は、INC41の出力とSFT42の出力とを加算又は減算する。AU43は、演算結果を、内部バスBS3を介して、SAR又はDARに格納する。
CR、TCRH、TR及びBTCRの内容は、内部バスBS4に出力される。DEC44は、内部バスBS4を介して入力するCR、TCRH、TR及びBTCRをデクリメントする。そして、DE45は、CR、TCRH、TR及びBTCRのデクリメント結果を、内部バスBS5を介して、CR、TCRH、TR及びBTCRのそれぞれに格納する。
次に、転送モードについて説明する。図4に、転送モードの概要を示す。
ノーマルモード
TMD2〜0ビットが「000」の場合、転送モードはノーマルモードとなる。ノーマルモードでは、1回の起動で、SARで示される転送元アドレスからDARで示される転送先アドレスへ、1回のデータ転送を行う。データ転送の終了後、SARは、SM1ビット及びSM0ビットに応じて、インクリメント、デクリメント又は固定される。DARは、DM1ビット及びDM0ビットに応じて、インクリメント、デクリメント又は固定される。その後、TCRがデクリメントされる。
ノーマルモードでは、以上で説明したデータ転送とレジスタ操作を、起動要因が発生するごとに、TCRで指定された回数だけ繰り返す。
CRで指定された回数だけ繰り返し動作を行った後、起動要因となった割り込みがCPUに要求される。
リピートモード
TMD2〜0ビットが「001」の場合、転送モードはリピートモードとなる。DIRビットが0にクリアされている場合、転送元アドレスをリピート領域として設定する。DIRビットが1にセットされている場合、転送先アドレスをリピート領域として設定する。リピートモードでは、TCRHを転送カウントレジスタ、TCRLを転送回数保持レジスタとして使用する。リピート領域の大きさは、TCRHで指定される。データ転送の開始前には、TCRHとTCRLとには、同じ値が初期値として設定される。
リピートモードでは、1回の起動で、SARで示される転送元アドレスからDARで示される転送先アドレスへ、1回のデータ転送を行う。データ転送の終了後、SARは、SM1ビット及びSM0ビットに応じて、インクリメント、デクリメント又は固定される。DARは、DM1ビット及びDM0ビットに応じて、インクリメント、デクリメント又は固定される。その後、TCR(TCRH)がデクリメントされる。リピートモードでは、以上で説明したデータ転送とレジスタ操作を、起動要因が発生するごとに、TCR(TCRH及びTCRL)で指定された回数だけ繰り返す。
指定された回数のデータ転送が終了すると、TCRHは0となる。その後、TCRLに保持した内容に基づいて、SAR、DAR及びTCRHの一部又は全部の初期設定値が回復される。
TCRHが0になった場合、TCRLの内容が転送カウンタレジスタのTCRHに転送される。これにより、TCRHは初期値に回復される。また、SAR又はDARは、以下の演算により、初期設定値に回復される。
DIRビットが1にセットされているとき、式(1)に示す演算OP1が行われ、SARは初期設定値に回復される。
Figure 0006275474
DIRビットが0にクリアされているとき、式(2)に示す演算OP2が行われ、DARは初期設定値に回復される。
Figure 0006275474
上記の演算を行うには、リピート領域に指定したSAR又はDARに対して、TCRLの内容を、内部バスBS2を介してALU35に入力する。そして、SFT42が、Sz1ビットと及びSz0ビットの指定に基づいて、TCRLをシフトする。そして、AU43がSFT42の出力とINC41の出力と加算又は減算することで実現される。
ブロック転送モード
TMD2〜0ビットが「100」の場合、転送モードはブロック転送モードとなる。DIRビットが0にクリアされている場合、転送元アドレスをブロック領域として設定する。DIRビットが1にセットされている場合、転送先アドレスをブロック領域として設定する。ブロック転送モードでは、SARを転送元アドレス指定レジスタ、DARを転送先アドレス指定レジスタ、TCRH(8ビット)をブロックサイズカウントレジスタ、TCRLをブロックサイズ保持レジスタ、BTCRをブロック転送カウントレジスタとして使用する。
ブロック転送モードでは、1回の起動で、SARで示される転送元アドレスからDARで示される転送先アドレスへ、ブロックサイズ分のデータ転送を行う。データ転送ごとに、SARは、SM1ビット及びSM0ビットに応じて、インクリメント、デクリメント又は固定される。DARは、DM1ビット及びDM0ビットに応じて、インクリメント、デクリメント又は固定される。その後、TCR(TCRH)がデクリメントされる。
指定された回数のデータ転送が終了すると、TCRHが0となる。この場合、リピートモードと同様に、TCRLに保持した内容に基づいて、SAR、DAR及びTCRHの一部又は全部の初期設定値が回復される。
また、ブロック領域のデータ転送が終了すると、BTCR(BTCRH及びBTCRL)をデクリメントする。ブロック転送モードでは、以上で説明したブロック領域のデータ転送を、起動要因が発生するごとに、BTCR(BTCRH及びBTCRL)で指定された回数だけ(BTCRがゼロになるまで)繰り返す。
ブロックエリア分のデータ転送が終了すると、BTCRHがデクリメントされる。BTCRHが0になると、BTCRLに保持した内容に基づいて、BTCRHの初期設定値が回復される。
デュアルブロックモード
TMD2〜0ビットが「101」の場合、転送モードはデュアルブロックモードとなる。デュアルブロックモードでは、DIRビットによらず、転送元アドレス及び転送先アドレスがブロック領域となる。デュアルブロックモードでは、ブロック転送モードと同様に、SARを転送元アドレス指定レジスタ、DARを転送先アドレス指定レジスタ、TCRH(8ビット)をブロックサイズカウントレジスタ、TCRLをブロックサイズ保持レジスタ、BTCRをブロック転送カウントレジスタとして使用する。
デュアルブロックモードでは、ブロック転送モードと同様に、1回の起動で、SARで示される転送元アドレスからDARで示される転送先アドレスへ、ブロックサイズ分のデータ転送を行う。データ転送ごとに、SARは、SM1ビット及びSM0ビットに応じて、インクリメント、デクリメント又は固定される。DARは、DM1ビット及びDM0ビットに応じて、インクリメント、デクリメント又は固定される。その後、TCR(TCRH)がデクリメントされる。
指定された回数のデータ転送が終了すると、TCRHが0となる。この場合、リピートモードと同様に、TCRLに保持した内容に基づいて、SAR、DAR及びTCRHの一部又は全部の初期設定値が回復される。
また、ブロック領域のデータ転送が終了すると、BTCR(BTCRH及びBTCRL)をデクリメントする。ブロック転送モードでは、以上で説明したブロック領域のデータ転送を、起動要因が発生するごとに、BTCR(BTCRH及びBTCRL)で指定された回数だけ(BTCRがゼロになるまで)繰り返す。
ブロックエリア分のデータ転送が終了すると、BTCRHがデクリメントされる。BTCRHが0になると、BTCRLに保持した内容に基づいて、BTCRHの初期設定値が回復される。
シフトブロックモード
TMD2〜0ビットが「110」の場合、転送モードはシフトブロックモードとなる。DIRビットが0にクリアされている場合、転送元アドレスをローテーション付ブロック領域として、転送先アドレスをブロック領域として設定する。DIRビットが1にセットされている場合、転送元アドレスをブロック領域として、転送先アドレスをローテーション付ブロック領域として設定する。シフトブロックモードでは、ブロック転送モードと同様に、SARを転送元アドレス指定レジスタ、DARを転送先アドレス指定レジスタ、TCRH(8ビット)をブロックサイズカウントレジスタ、TCRLをブロックサイズ保持レジスタ、BTCRをブロック転送カウントレジスタとして使用する。
シフトブロックモードでは、ブロック転送モードと同様に、1回の起動で、SARで示される転送元アドレスからDARで示される転送先アドレスへ、ブロックサイズ分のデータ転送を行う。データ転送ごとに、SARは、SM1ビット及びSM0ビットに応じて、インクリメント、デクリメント又は固定される。DARは、DM1ビット及びDM0ビットに応じて、インクリメント、デクリメント又は固定される。その後、TCR(TCRH)がデクリメントされる。
指定された回数のデータ転送が終了すると、TCRHが0となる。この場合、リピートモードと同様に、TCRLに保持した内容に基づいて、SAR、DAR及びTCRHの一部又は全部の初期設定値が回復される。
また、ブロック領域のデータ転送が終了すると、BTCR(BTCRH及びBTCRL)をデクリメントする。ブロック転送モードでは、以上で説明したブロック領域のデータ転送を、起動要因が発生するごとに、BTCR(BTCRH及びBTCRL)で指定された回数だけ(BTCRがゼロになるまで)繰り返す。
ローテーション付ブロック領域は、その最後のデータ転送を行った後、BTCRLに保持した内容に基づいて、SAR又はDARを、ローテーション付ブロック領域の先頭アドレスに戻すようにする。
ブロックエリア分のデータ転送が終了すると、BTCRHがデクリメントされる。BTCRHが0になると、BTCRLに保持した内容に基づいて、BTCRHの初期設定値が回復される。
シフトブロックモードの場合、所定のブロックのデータ終了後、ローテーション付ブロック領域に指定したSARまたはDARを内部バスBS1に出力し、INC41でインクリメント/デクリメントを行う。さらに、TCRLの内容を、内部バスBS2を経由して、ALU35に入力して、Szビットの指定に基づいてSFT42でシフトし、INC41の出力と加算または減算する。この結果を、内部バスBS3を介して、SARまたはDARに格納する。
上記のSAR又はDARの初期化は、上述の式(1)及び(2)で行う演算において、TCRLをBTCRLに置き換えることで実現できる。
シフトブロックモードについて、更に詳細に説明する。図5〜7に、シフトブロックモードでのDTC3のデータ転送動作を示す。図5はk回目のデータ転送、図6は(k+1)回目のデータ転送、図7は(k+2)回目のデータ転送を示している。
シフトブロックモードでは、DTC3の起動毎に、例えば入力データブロックのデータが古い順に、出力データブロックにデータ転送を行うことが可能である。この転送モードでは、入力データブロックは、1つのデータブロックの転送が終わるごとに、ブロック内の1つのデータが更新される。具体的には、1つのデータブロックの転送が終わるごとに、入力データブロック内のデータの順番が1つ繰り下がり、最も古いデータは破棄される。そして、繰り下がりで空きとなった先頭のデータは新しいデータに更新される。このような入力データブロックの更新は、上述のリピートモードのデータ転送により実現可能であるので、詳細については説明を省略する。
図5〜7は、ブロックサイズが3、DIRビットが0である場合の例である。この場合、アドレス転送元アドレスがローテーション付ブロック領域(図5〜7では、RBと表記
、転送先アドレスがブロック領域となる。
k(kは正の整数)回目のシフトブロックモードのデータ転送時には、入力データブロックには入力データu、v及びwが格納される。このうち、入力データuが最も古く、入力データvがその次に古く、入力データwが最も新しいデータである。
シフトブロックモードでは、DTC3は入力データu、v、wの順にリードを行い、出力データブロックの出力データi、i+1、i+2そそれぞれにライトを行う。
その後、入力データブロックの更新を行う。このとき、最も古い入力データuが置き換えられる。そして、(k+1)回目のシフトブロックモードのデータ転送では、リードする順序を1データすらし(ローテーション)、入力データv、w、uの順にリードを行い、出力データブロックの出力データi、i+1、i+2のそれぞれにライトを行う。
同様に、起動毎に、ローテーション付ブロック領域(入力データブロック)をリードする順序を1データずつずらすようにして、ブロックサイズのデータ転送を行う。言い換えれば、入力データの書き込みにリピートモードを使用し、入力データの読み出しにシフトブロックモードを使用することで、汎用的なメモリをFIFOとして利用できることになる。ハードウェアとしてFIFOを実現することもできるが、FIFOの数および大きさは固定になってしまう。これに対し、DTCを利用することで、任意の数および任意の大きさのFIFOを構成することができる。
図8に、DTC3の状態遷移図を示す。図8に示す状態遷移は、主として、DTC3のデータ転送制御ブロック(DTCCNT)31に実装される。
DTC3は、INT2から起動要求信号DTCREQが与えられると、VRステートに遷移する。VRステートに遷移後、DTC3は、ベクタ番号DTCVECに従って、VG33で生成したベクタアドレスに基づき、ベクタ領域(データ転送情報先頭アドレス配置領域)に格納されたデータ転送情報の先頭アドレスをリードする。DTC3は、リードした内容を、VAR34に格納する。
次に、DTC3は、IRステートに遷移する。VRステートにてリードした先頭アドレスに従って、データ転送情報配置領域に格納されたデータ転送情報をリードする。この際、DTC3は、MR、SAR、DAR及びCRをリードする。
DTC3は、MRの内容に従い、ノーマルモード又はリピートモードのデータ転送を行う場合は、SRステート、DWステートと遷移する。図8では、ノーマルモード又はリピートモードのデータ転送を行う場合の遷移を、「ノーマル」、「リピート」と表記している。SRステートでは、DTC3は、SARの内容に従い、転送元アドレスの内容をリードする。また、DTC3は、MRの内容に従い、SARのインクリメントなどを行う。DWステートでは、DTC3は、リードした内容を、DARの内容に従い、転送先アドレスへライトする。また、DTC3は、MRの内容に従い、DARのインクリメントやCRのデクリメントなどを行う。その後、DTC3は、IWステートに遷移する。IWステートでは、DTC3は、VAR34の内容に従って、MR、SAR、DAR及びCRをデータ転送情報配置領域に書き戻す。但し、IWステートでは、MR、SAR、DAR及びCRの内で更新されなかったもののライトを行わないようにすることができる。例えば、DARが固定の場合、DARのライトは行わない。
チェイン動作を行わない場合、DTC3は、CRの内容に従って、起動要因となった割り込み要因フラグ又はDTEビットをクリアし、動作を終了して、停止状態に戻る。
チェイン動作を行う場合、IWステートからVRステートへと戻り、別のデータ転送を行うことができる。
DTC3は、MRの内容に従い、ブロック転送モード、デュアルブロックモード又はシフトブロックモードのデータ転送を行う場合には、SRステート、DWステートと遷移する。SRステート及びDWステートは、上述と同様であるので、説明を省略する。図8では、ブロック転送モード、デュアルブロックモード又はシフトブロックモードのデータ転送を行う場合の遷移を、「ブロック」と表記している。そして、DTC3は、TCRHで指定された回数だけ、SRステートからDWステートへの遷移を繰り返す。
DWステートにおいてTCRHが0のとき、DTC3は、DWステートからOPステート、IWステートと遷移する。DTC3は、OPステートでは、BTCRのデクリメント、ローテーション付ブロック領域に指定したSAR又はDARの操作などを行う。その後のIWステートとチェイン動作については、ノーマルモード及びリピートモードの場合と同様であるので、説明を省略する。
以下、DTC3のシフトブロックモードのデータ転送について具体的に説明する。図9に、DTC3のシフトブロックモードのデータ転送の内部動作の第1の例を示す。この例では、保持する入力データの数はブロックサイズと同じである。
初期状態においては、SARに入力データブロックの先頭アドレスm(入力データuに相当する)を、BTCRH、BTCRL、TCRH及びTCRLにはそれぞれブロックサイズn(本例では3)を設定する。
初期状態及び初期状態これと同じ状態の場合をk回目とする。DTC3の起動時は、SARはm、BTCRHはnである。TCRHの内容をALU35のDEC44でデクリメントし、SARの内容をALU35のINC41でインクリメントしながら、ブロックサイズで指定した3回のデータ転送を行う。同時に、BTCRHの内容をTRに保持しつつ、ALU35のDEC44でBTCRHの内容のデクリメントを行う。
3番目のデータ転送後に、SARの内容(m+2)を、ALU35のINC41でインクリメントした結果(m+3)にする。さらに、TCRHのデクリメント結果が0になり、ブロックデータの転送が終了するので、OPステート(内部動作)において、INC41−AU43の動作を指定し、INC41でインクリメント(m+4)し、TCRLの内容を減算した結果(m+1)をSARに格納する。また、TCRLの内容を、TCRHにコピーする。BTCRHのデクリメントを行う。
k+1回目のDTC起動時に、SARはm+1、BTCRHはn−1である。それ以外は、同様に3回のデータ転送を行う。
2番目のデータ転送後に、TRのデクリメント結果が0になるので、INC41−AU43の動作を指定し、SARの内容(m+2)を、ALU35のINC41でインクリメントした結果(m+3)から、BTCRLの内容を減算した結果(m)を、SARに格納する。
3番目のデータ転送後に、TCRHのデクリメント結果が0になるので、OPステート(内部動作)において、TCRLの内容を、TCRHにコピーする。BTCRHのデクリメントを行う。
この場合、2番目のデータ転送時にTCRLの内容を減算しており、BTCRHも0ではないので、SARの内容(m)を、ALU35のINC41でインクリメント(m+1)する。さらに、INC41でインクリメントした結果(m+2)を、SARに格納する。
k+2回目のDTC起動時に、SARはm+2、BTCRHはn−2(本例では1)である。それ以外は、同様に3回のデータ転送を行う。
1番目のデータ転送後に、TRのデクリメント結果が0になるので、INC41−AU43の動作を指定し、SARの内容(m+2)を、ALU35のINC41でインクリメントした結果(m+3)から、BTCRLの内容を減算した結果(m)を、SARに格納する。
3番目のデータ転送後に、TCRHのデクリメント結果が0になるので、OPステート(内部動作)において、TCRLの内容を、TCRHにコピーする。また、BTCRHのデクリメントを行い、0になるので、BTCRLの内容を、BTCRHにコピーする。
SARの内容(m+1)を、ALU35のINC41でインクリメントした結果(m+2)に対し、BTCRHが0になったことに対応して、INC41−AU43の動作を指定し、SARの内容(m+2)を、ALU35のINC41でインクリメントした結果(m+3)から、BTCRLの内容を減算した結果(m)を、SARに格納する。
次いで、DTC3のシフトブロックモードのデータ転送の別の例について具体的に説明する。図10に、DTC3のシフトブロックモードのデータ転送の内部動作の第2の例を示す。この例では、保持する入力データ数(ni)は、ブロックサイズ(n)より大きい。
初期状態においては、SARに入力データブロックの先頭アドレスm(入力データuに相当する)を、BTCRH及びBTCRLには入力データ数ni、TCRH及びTCRLにはブロックサイズn(本例では3)を設定する。
初期状態及び初期状態と同じ状態の場合をk回目とする。DTC3の起動時は、SARはm、BTCRHはniである。図9に示す例と同様に、TCRHの内容をALU35のDEC44でデクリメントし、SARの内容をALU35のINC41でインクリメントしながら、ブロックサイズで指定した3回のデータ転送を行う。同時に、BTCRHの内容をTRに保持しつつ、ALU35のDEC44でBTCRHの内容のデクリメントを行う。
k+1回目のDTC起動時では、SARはm+1、BTCRHはni−1である。そして、k回目と同様に、3回のデータ転送を行う。
k+2回目のDTC起動時では、SARはm+2、BTCRHはni−2である。そして、k回目と同様に、3回のデータ転送を行う。
1番目のデータ転送後に、TRのデクリメント結果が0になる。これにより、SARの内容(m+2)を、ALU35のINC41でインクリメントした結果(m+3)から、TCRLの内容を減算した結果(m)を、SARに格納する。
3番目のデータ転送後に、TCRHのデクリメント結果が0になるので、TCRLの内容を、TCRHにコピーする。さらに、BTCRHが1であり、デクリメント後に0になる。SARの内容(m+1)を、ALU35のINC41でインクリメントした結果(m+2)から、TCRLの内容を減算した結果(m−1)をALU35のINC41でインクリメントした結果(m)を、SARに格納する。
BTCRHのデクリメントを行って0となると、BTCRLの内容をBTCRHにコピーする。
図11に、シフトブロックモードでのDTC3のデータ転送の動作例を示す。図11において、破線矢印はアドレスの指定、実線矢印はデータの転送を示す。この例では、保持する入力データの数がブロックサイズと同じでる。また、この例では、入力データブロックへのデータ転送と、入力データブロックから出力データブロックへのデータ転送とが、同一の起動要因で、チェイン動作によって連続して実行される。
初期状態においては、SARに入力データブロックの先頭アドレスm(入力データuに相当する)を設定する。BTCRH、BTCRL、TCRH及びTCRLにはそれぞれブロックサイズn(本例では3)を設定する。
そして、チェイン動作で結合された2つのデータ転送を行う。ここで、1つ目のデータ転送で用いるデータ転送情報を、データ転送情報INF11とする。2つ目のデータ転送で用いるデータ転送情報を、データ転送情報INF12とする。
CPU1は、所要のデータ転送情報を、所定の転送情報アドレス領域にライトし、起動要因とする割り込み要因に対応したDTEビットを1にセットしておく。この状態で、当該割り込み要因が発生してDTC3が起動されると、DTC3はデータ転送情報先頭アドレスをリード(ステートVR)し、データ転送情報配置領域からデータ転送情報INF11をリードする(ステートIR)。
データ転送情報INF11において、MRは、TMD2〜0ビットを「001」(リピートモード)に、DIRビットを1(転送先アドレスがリピート領域)に、NXTE1ビットを1(チェイン動作)にセットされる。
DTC3は、SARで指定したアドレスから入力データをリードする(ステートSR)。DTC3は、リードした入力データを、DARで指定した入力データブロックの所定のアドレスにライトする(ステートDW)。
例えば、DARがインクリメントされる場合に、TCRLで指定した回数(本例では3)のデータ転送を行うと、DARは入力データブロックの先頭アドレスに戻る。このときの演算は、上述の式(2)で表される。
また、DTC3は、TCRHをデクリメントする。その後、DTC3は、データ転送情報の内で更新が行われたものを、元のアドレスにライトする(ステートIW)。具体的には、DTC3は、DAR及びCRを、元のアドレスにライトする。
次いで、DTC3は、データ転送情報INF11に連続したアドレスから、データ転送情報INF12をリードする(ステートIR)。
データ転送情報INF12におけるMRの内容は以下の通りである。TMD2〜0ビットは「110」(シフトブロックモード)であり、DIRビットは0にクリア(転送元アドレスをローテーション付ブロック領域)されている。SARの初期設定値は、データ転送情報INF11のDARより1データ分ずれている。BTCRHの初期設定値は、BTCRLの初期設定値(本例では3)より1だけ小さい。
DTC3は、SARで指定した入力データブロックのアドレスから、DARで指定した出力データブロックのアドレスへ、BTCRH及びTCRHをデクリメントしながら、TCRLで指定したブロックサイズ分のデータ転送を行う(ステートSR、ステートDW)。BTCRHが0になると、SARはローテーション付ブロック領域の先頭アドレス、BTCRHはローテーション付ブロック領域のブロックサイズになる。
TCRHが0になると、DTC3は、DARとTCRHの内容を初期設定値に戻す(ステートOP)。その後、DTC3は、データ転送情報の内で更新が行われたものを、元のアドレスにライトする(ステートIW)。具体的には、DTC3は、SAR、DAR及びCRを、元のアドレスにライトする。
この例では、データ転送情報INF11のDARが入力データuのアドレスを示している場合、データ転送情報INF12のDARは入力データvのアドレスを示すように初期設定しておく。これにより、データ転送情報INF11により、入力データuが置き換えられ、入力データv、w、uの順に古いデータとなる。その後、データ転送情報INF12で、入力データv、w、uの順で、ブロックのデータ転送を行うことができる。
なお、図11に示す例では、チェイン動作を指定するものとしたが、データ転送情報INF11及びデータ転送情報INF12は、別の起動要因とすることもできる。
以上、本構成によれば、フィルタ演算に必要な複数のデータ、すなわち、RAMなどに用意した入力データ、あるいはROMなどに用意した係数データを、1回の起動で、フィルタ演算器の複数のレジスタにデータ転送できる。これにより、フィルタ演算を用いた処理ないし制御動作の高速化することができる。
また、本構成によれば、複数のデータ(係数データや入力データ)の格納領域が連続していない場合も、チェイン動作で複数のブロックのデータ転送を、1回の起動で連続して実行することができる。また、出力データのデータ転送を、1回の起動で連続して実行することも可能である。つまり、データの配置に応じたデータ転送モードを適宜選択することができる。
本構成によれば、フィルタ演算器に、フィルタ演算前に所要のデータを与えることができる。よって、フィルタ演算器の直前の状態に依存することなく、1つのDTCと1つのフィルタ演算器とを用いた所要の複数の処理ないし制御動作を実現できる。本構成では、DTCがフィルタ演算器へのデータのライトからリードまでを一連の動作として実行することで、フィルタ演算器を排他的に使用することができるので、競合を回避することもできる。
本構成によれば、イベントに呼応した通常のデータ転送機能に加えて、フィルタ演算器へのデータ転送に好適なデュアルブロックモード、シフトブロックモードのデータ転送ができる。また、これらのデータ転送情報の形式を共通にすることで、マイクロコンピュータ全体の物理的な規模の増加を抑制することができる。これにより、割込みコントローラやDTCベクタなどを共通化に利用でき、ハードウェア構成を簡略化することができる。
また、本実施の形態で説明したデータ転送装置は、特に使用用途は限定されず、RAMなどの汎用的な記憶装置にデータ転送情報を格納できるものである。このようなデータ転送装置には、以下の利点がある。
(1)データ転送の数を増やすことができる。いわゆるDMA(Direct Memory Access)コントローラのように、データ転送情報をデータ転送装置自身の専用のハードウェアとして持つ方式では、実装されたハードウェアによってデータ転送の数が制限される。これに対し、データ転送装置は、データ転送情報を使用用途の限定されないRAMに格納するので、データ転送の数を増やすことが容易であり、利用者の種々の使用方法に対応することができる。
(2)いわゆるDMAコントローラのように、起動要因の選択をデータ転送装置自身の制御レジスタによる指定およびマイクロコンピュータのインタフェースとして実装する方式では、多くの割り込みないしイベントに対応するのが困難である。これに対し、データ転送装置は、割り込み要因を利用して、CPUに割り込みを要求するか、DTCにデータ転送を要求するかを選択することができる。これにより、多くの割り込みないしイベント発生に対して、データ転送を行うことができる。
(3)チェイン動作など1回の起動時に実行するデータ転送の数を増やすことができ、異なるデータ転送を組み合わせて機能を実現できる。
(4)データ転送情報の構成を変更できる。また、データ転送情報を構成するデータの増減ができる。
(5)専用のハードウェア(DTCやFLT)は、最低限(1回)のデータ転送に必要な分をもうければよい。そのため、MCUの機能を追加して、ハードウェア規模が増えても、MCU全体の物理的な規模の増加を抑制することができる。
(6)データ転送装置自身の専用のハードウェアとして、制御レジスタなどを持たないため、CPUからのライトとの競合など、複雑な動作条件を考慮する必要がない。よって、MCUの物理的な規模の増加を抑止することに寄与できる。
実施の形態2
実施の形態2にかかるマイクロコンピュータについて説明する。本実施の形態では、MCU100のFLT21の具体例について説明する。図12に、実施の形態2にかかるFLT21の構成を模式的に表したブロック図を示す。
FLT21は、FIR(Finite Impulse Response)フィルタであり、3つの入力データレジスタX[n]、X[n−1]及びX[n−2]と、3つの係数データレジスタA0、A1及びA2と、出力データレジスタY[n]と、乗算器211〜213と、加算器214とを有する。
入力データレジスタX[n]、X[n−1]及びX[n−2]と、係数データレジスタA0、A1及びA2と、出力データレジスタY[n]とは、それぞれ内部バス11と接続される。3つの入力データレジスタX[n]、X[n−1]及びX[n−2]と、係数データレジスタA0、A1及びA2は、逆の順に、それぞれ連続したアドレスに配置する。
これらのデータに対し、FLT21は、式(3)に示す演算を行う。
Figure 0006275474
なお、特に制限はされないものの、入力データレジスタX[n]へのライトが行われたことによって、FLT21は演算動作を開始するものとする。また、FLT21の演算動作は2クロックで完了するものとする。
例えば、マイクロコンピュータの制御するモータの状態を、A/D変換器(アナログモジュール9に含まれる)で入力し、この変換データに対してFLT21によるフィルタ演算を行う場合が考え得る。この場合、フィルタ演算結果によって、タイマ7のデータレジスタを設定し、タイマ7のパルス出力を制御することができる。
このとき、DTC3は、A/D変換完了割り込みで起動され、図11に示す通り、A/D変換器変換データ(入力データ)をリピートモードで、入力データブロックとなるRAMにデータ転送する。更に、DTC3は、チェイン動作によって、シフトブロックモードにて入力データブロックの3つのデータを古い順に、FLT21の入力データレジスタX[n−2]、X[n−1]及びX[n]へ、データが古い順にデータ転送を行う。この場合には、データ転送情報のSARにA/D変換データレジスタを指定し、データ転送情報のDARに入力データレジスタX[n−2]を指定すればよい。
入力データレジスタX[n]へのライトによって、FLT21での演算が行われ、演算結果が出力データレジスタY[n]で得られる。
更に、DTC3は、チェイン動作によって、出力データレジスタY[n]をリードしてする。そして、DTC3は、リードしたデータを所定のタイマのデータレジスタにライトすることができる。その結果、所要のパルス又は波形出力を得ることができる。
この際、入力データレジスタX[n]へのライトから出力データレジスタY[n]のライトの間には、データ転送情報ライト(IWステート)及びデータ転送情報リード(IRステート)が存在する。よって、FLT21の演算に要する期間を確保できる。
次いで、FLT21の使用例について説明する。図13に、実施の形態2にかかるFLT21の使用例を示す。FLT21は、複数の制御に対して異なるタイミングで使用し、異なる係数データを使用するものとする。このため、例えば、DTC3は、ROM4上に用意した係数データを、FLT21の係数データレジスタA0、A1及びA2にデータ転送する(デュアルブロックモード)。このデータ転送は、データ転送情報INF22により実行される。
入力データブロックから入力データレジスタX[n−2]、X[n−1]及びX[n]へのデータ転送(図11におけるシフトブロックモードでのデータ転送)を、データ転送情報INF23とする。
データ転送情報INF21によるデータ転送後、チェイン動作により、データ転送情報INF22がリードされる(ステートIR)。データ転送情報INF22によるデータ転送後、チェイン動作により、データ転送情報INF23がリードされる(ステートIR)。
データ転送情報INF22では、MRのTMD2〜0ビットは「101」(デュアルブロックモード)である。この状態で、DTC3は、SARで指定した係数データのアドレスから、DARで指定したFLT21の係数データレジスタA2、A1及びA0のアドレスへ、TCRHをデクリメントしながら、TCRLで指定したブロックサイズ分のデータ転送を行う(ステートSR、ステートDW)。
TCRHが0になると、DTC3は、DAR及びTCRHの内容を初期設定値に戻す(ステートOP)。その後、DTC3は、データ転送情報の内で更新が行われたもの、具体的にはCRを、元のアドレスにライトする(ステートIW)。
その後、DTC3は、チェイン動作により、データ転送情報INF23によるデータ転送を行う。FLT21は、入力データレジスタX[n]へのライトにより、上述のフィルタ演算動作を開始する。図示はしないが、DTC3は、その後チェイン動作によって、出力データレジスタY[n]をリードする。そして、DTC3は、リードしたデータを、所定のタイマのデータレジスタにライトする。
以上、本構成によれば、FIRフィルタによる複数の入力データの演算を行うことができる。
実施の形態3
実施の形態3にかかるマイクロコンピュータについて説明する。本実施の形態では、MCU100のFLT21の変形例について説明する。図14に、実施の形態3にかかるFLT22の構成を模式的に表したブロック図を示す。
FLT22は、IIR(Infinite Impulse Response)フィルタであり、5つの入力データレジスタX[n]、X[n−1]、X[n−2]、Y[n−1]及びY[n−2]と、5つの係数データレジスタA0、A1、A2、B1及びB2と、出力データレジスタY[n]と、乗算器211〜213、221及び222と、加算器214とを有する。つまり、 FLT22は、FLT21に、出力データレジスタY[n−1]及びY[n−2]と、係数データレジスタB1及びB2と、乗算器221及び222を追加した構成を有する。
入力データレジスタX[n]、X[n−1]、X[n−2]、Y[n−1]及びY[n−2]と、係数データレジスタA0、A1、A2、B1及びB2と、出力データレジスタY[n]とは、それぞれ内部バス11と接続される。入力データレジスタX[n]、X[n−1]、X[n−2]、Y[n−1]及びY[n−2]と、係数データレジスタA0、A1、A2、B1及びB2と、出力データレジスタY[n]とは、逆の順に、それぞれ連続したアドレスに配置する。
これらのデータに対し、FLT22は、式(4)に示す演算を行う。
Figure 0006275474
なお、FLT22は、係数データB1及びB2に0を設定することで、FIRフィルタであるFLT21と同等のフィルタとなる。また、係数データの設定によって、次数あるいは使用する遅延データ数なども変更することができる。算術演算器(FLT)は、1つのハードウェアで複数の制御に共通に使用するため、次数などを大きくし、ハードウェア構成を大きくしても、マイクロコンピュータの物理的な規模に与える影響を抑制することができる。
次いで、FLT22の使用例について説明する。図15に、実施の形態3にかかるFLT22の使用例を示す。DTC3は、データ転送情報INF32により、ROM4上に用意した係数データを、FLT22の係数データレジスタA0、A1、A2、B1及びB2にデータ転送する。このときの転送モードはデュアルブロックモード、ブロックサイズは5である。なお、データ転送情報INF31及びINF32にかかるデータ転送は、実施の形態2でのデータ転送情報INF21及びINF22かかるデータ転送と同様である。
DTC3は、データ転送情報INF33により、例えばRAM5上に確保した遅延データ(フィードバックデータブロック)を、FLT22の出力データレジスタY[n−1]及びY[n−2]にデータ転送する。このときの転送モードはシフトブロックモード、ブロックサイズは2である。
DTC3は、データ転送情報INF34により、入力データブロックから入力データレジスタX[n−2]、X[n−1]及びX[n]にデータ転送を行う。これにより、FLT22は、フィルタ演算動作を開始する。
DTC3は、データ転送情報INF35により、出力データレジスタY[n]を、フィードバックデータブロックにデータ転送する。このときの転送モードはリピートモード、リピートサイズは2である。
図示しないが、DTC3は、チェイン動作により、出力データレジスタY[n]をリードして、リードしたデータを所定のタイマのデータレジスタにライトすることができる。
以上、本構成によれば、FLTでのフィルタ演算に、過去のFLTの出力データによる遅延データを用いることができる。これにより、より複雑なフィルタ演算が可能となり、例えばIIRフィルタが実現できる。
実施の形態4
実施の形態4にかかるマイクロコンピュータについて説明する。本実施の形態では、FLT22の変形例について説明する。図16に、実施の形態4にかかるFLT23の構成を模式的に表したブロック図を示す。
以下、FLT23の構成のFLT22に対する差異について説明する。FLT23では、フィルタ演算動作完了時に、入力データレジスタX[n]からX[n−1]へ、X[n−1]からX[n−2]へ、Y[n−1]からY[n−2]へ、Y[n]からY[n−1]へのデータ転送を行う。また、出力データレジスタY[n−2]、Y[n−1]、X[n−2]、X[n−1]、X[n]を連続したアドレスに配置する。
次いで、FLT22の使用例について説明する。図17に、実施の形態4にかかるFLT23の使用例を示す。DTC3は、フィルタ演算後に、次回に必要なデータをフィードバック領域に確保する。入力データは直接データ転送することができる。なお、データ転送情報INF41及びINF42にかかるデータ転送は、実施の形態2でのデータ転送情報INF21及びINF22にかかるデータ転送と同様である。
DTC3は、データ転送情報INF41により、ROM4上に用意した係数データを、FLT23の係数データレジスタA0、A1、A2、B1及びB2にデータ転送する。このときの転送モードはデュアルブロックモード、ブロックサイズは5である。
DTC3は、データ転送情報INF42により、例えばRAM5上に確保したフィードバックデータブロックを、FLT23の入力データレジスタX[n−1]、X[n−2]、Y[n−1]及びY[n−2]にデータ転送する。このときの転送モードはデュアルブロックモード、ブロックサイズは4である。
DTC3は、データ転送情報INF43により、A/D変換器変換データ(入力データ)を、FLT23の入力データレジスタX[n]にデータ転送する。このときの転送モードはノーマルモードである。これにより、FLT23は、フィルタ演算動作を開始する。フィルタ演算動作完了時に、入力データレジスタX[n]からX[n−1]へ、X[n−1]からX[n−2]へ、Y[n−1]からY[n−2]へ、Y[n]からY[n−1]へのデータ転送をFLT23内で行う。これにより、次のフィルタ演算の遅延データを得ることができる。
DTC3は、データ転送情報INF44により、入力データレジスタX[n−2]、X[n−1]、Y[n−1]及びY[n−2]を、フィードバックデータブロックにデータ転送する。このときの転送モードはデュアルブロックモード、ブロックサイズは4である。
DTC3は、データ転送情報INF45により、出力データレジスタY[n]をリードして、リードしたデータを所定のタイマのデータレジスタにライトする。このときの転送モードはノーマルモードである。
なお、係数データを、フィードバックデータブロックと連続したアドレスに配置しておけば、データ転送情報INF41及びINF42によるデータ転送は、1つのデュアルブロックモードでのデータ転送で行うことができる。
また、必要に応じてFLT23の演算終了割り込みを設け、これによりDTC3を起動することもできる。しかし、FLT23を複数の制御に用いる場合、いずれの制御の演算が終了したかの判断が必要になってしまう。起動要因が決まれば、いずれの制御を行うかも決まるので、本例のように、出力データのデータ転送までチェイン動作で連続して実行することが望ましい。複数の制御用途でFLT23を使用する場合に、競合の回避をDTC3に委ねることができる。
以上、本構成によれば、FLTでのフィルタ演算に、過去のFLTの出力データによる遅延データを用いることができる。これにより、より複雑なフィルタ演算が可能となり、例えばIIRフィルタが実現できる。また、遅延データの転送をFLTの内部で行うことができるので、DTCとFLTとの間で転送するデータ数を低減できる。これにより、MCUの処理の高速化を実現できる。
実施の形態5
実施の形態5にかかるマイクロコンピュータについて説明する。本実施の形態では、データ転送情報の変形例について説明する。図18に、実施の形態5にかかるデータ転送情報の構成を模式的に示す。
本実施の形態では、TMD2〜0ビットが「111」のときの転送モードを、ブロックバッファモードとする。また、本実施の形態では、実施の形態1と比較して、データ転送情報にデータレジスタ(DRとも称する)が追加される。DRのデータサイズはSz1ビット及びSz0ビットで指定される。DRの本数は、TCRH及びTCRLで指定される。また、後述するように、ブロックバッファモードではアドレスレジスタは1本で足りる。よって、この例では、SARを使用しないものとして説明する。
次いで、ブロックバッファモードでのDTC3の動作について説明する。図19に、ブロックバッファモードでのDTC3の動作を示す。CPU1は、所要のデータ転送情報を所定の転送情報アドレス領域にライトする。また、CPU1は、起動要因とする割り込み要因に対応したDTEビットを1にセットする。この状態で、割り込みが発生してDTC3が起動される場合、起動要求信号DTCREQ及びベクタ番号DTCVECが、INT2からDTC3に与えられる。
DTC3は、ベクタ番号DTCVECに対応したベクタ領域をリードする(VRステート)。DTC3は、リードした内容であるデータ転送情報の先頭アドレスをVAR34に格納し、かつ、データ転送情報の先頭アドレスをインクリメントする。そして、DTC3は、MR、DAR及びCRをリードし(IRステート)、リードしたデータ転送情報をDTC3のレジスタファイルに格納する。
DTC3は、VAR34に従って、DRをリードし(DRRステート)、リードした内容をDARで指定された転送先アドレスへライトする(DDWステート)。そして、DTC3は、TCRHをデクリメントする。この動作を、TCRH及びTCRLで指定される回数だけ繰り返す。TCRHが0になると、DTC3は、TCRLの内容をTCRHにコピーする。
DTC3は、DARで指定された転送先アドレスをリードし(DDRステート)、リードした内容、VAR34に従ってDRへライトする(DRWステート)。DARは、DM1ビット及びDM0ビットの指定と逆方向に、VAR34をデクリメントする。この動作を、TCRH及びTCRLで指定された回数だけ繰り返す。TCRHが0になると、DTC3は、TCRLの内容をTCRHにコピーする。
DTC3は、データ転送情報の内で更新されたものを、元のアドレスへライトする(IW)。
なお、チェイン動作が指定されている場合は、VAR34に基づき、次のデータ転送情報をリード(IR)して、次のデータ転送を行う。
なお、上述においてTCRHが0になったとき、ブロック転送モードと同様の動作で、DAR及びVAR34を先頭アドレスに戻し、DDRステート及びDRWステートにおいて、DARをDM1ビット及びDM0ビットの指定に従ってインクリメント/デクリメントし、かつVAR34をインクリメントしてもよい。
DTC3の状態遷移は、DRRステート、DDWステート、DDRステート及びDRWステートが追加されることとなる。なお、DDWステートは、DWステートと兼用することもできる。
次いで、実施の形態5におけるFLT23の使用例について説明する。図20に、ブロックバッファモードでのFLT23の使用例を示す。
この例では、係数データ(B2、B1、A2、A1及びA0)、フィードバックデータ(Y[n−2]、Y[n−1]、X[n−2]及びX[n−1])、入力データ(X[n])がデータ転送情報INF52のDR内に確保される。
DTC3は、データ転送情報INF51により、A/D変換器変換データ(入力データ)を、例えばRAM5などに配置されているデータ転送情報INF52のDRの入力データ(X[n])に対応するアドレスにデータ転送する。このときの転送モードはノーマルモードである。
DTC3は、データ転送情報INF52により、DRとして保持しているRAM5の内容を、FLT23の係数データレジスタ(B2、B1、A2、A1及びA0)、入力データレジスタ(Y[n−2]、Y[n−1]、X[n−2]、X[n−1]及びX[n])にデータ転送する。このときの転送モードはブロックバッファモードであり、ブロックサイズは10である。FLT23は、入力データレジスタX[n]へのライトが行われることで、フィルタ演算動作を開始する。
DTC3は、データ転送情報INF52により、更に演算後のFLT23の係数データレジスタ(B2、B1、A2、A1及びA0)、入力データレジスタ(Y[n−2]、Y[n−1]、X[n−2]、X[n−1]及びX[n])の内容を、DRとして使用しているRAM5へデータ転送する。
DTC3は、データ転送情報INF53により、出力データレジスタY[n]をリードして、リードしたデータを所定のタイマのデータレジスタにライトする。このときの転送モードはノーマルモードである。
この例において、DRはRAM5などに配置されるので、CPUによる初期設定などを行うことができる。
上述の通り、本実施の形態では、ブロックバッファモードによりデータ転送により、2つの逆方向のデータ転送を1組のデータ転送として実行することができる。その結果、フィルタ演算器へのデータ設定のためのデータ転送や遅延データなどの演算結果の保持のためのデータ転送を、少ないデータ転送情報で行うことができる。これにより、データ転送情報を保持するRAMの領域を節約できる。また、データ転送情報のリード/ライトの回数を減らして、データ転送を高速化することができる。
実施の形態6
実施の形態6にかかるマイクロコンピュータについて説明する。本実施の形態では、データ転送情報の変形例について説明する。図21に、実施の形態6にかかるデータ転送情報の構成を模式的に示す。
本実施の形態では、MRのビット3にRNDビットを設ける。RNDビットが1にセットされているとき、転送元アドレスから転送先アドレスへのデータ転送の後、転送先アドレスから転送元アドレスへのデータ転送を行う。この動作を、ラウンド動作と称する。ラウンド動作は、ノーマルモード及びデュアルブロックモードと組み合わせて使用することができる。
次いで、デュアルブロックモードのラウンド動作について説明する。図22に、デュアルブロックモードでのDTC3のラウンド動作を示す。DTC3は、ベクタ番号DTCVECに対応したベクタ領域をリードする(VRステート)。DTC3は、リードした内容に従って、データ転送情報をリードする(IRステート)。DTC3は、リードしたデータ転送情報を、DTC3のレジスタファイルに格納する。
DTC3は、SARで指定された転送元アドレスをリードし(SRステート)、これをDARで指定された転送先アドレスへライトする(DWステート)。この動作をTCRH及びTCRLで指定された回数だけ繰り返す。TCRHが0になったとき、DTC3は、SAR及びDARを先頭アドレスに戻し、TCRLの内容をTCRHにコピーする。
DTC3は、DARで指定された転送先アドレスをリードし(DRステート)、これをSARで指定された転送元アドレスへライトする(SWステート)。この動作をTCRH及びTCRLで指定された回数だけ繰り返す。TCRHが0になったとき、DTC3は、SAR及びDARを先頭アドレスに戻し、TCRLの内容をTCRHにコピーする。
DTC3は、データ転送情報の内で更新されたものを、元のアドレスへライトする(IWステート)。
なお、チェイン動作が指定されている場合は、VAR34に基づき、次のデータ転送情報をリード(IRステート)して次のデータ転送を行う。
なお、SRステート及びDWステートにおいて、TCRHが0になったとき、DTC3は、SAR及びDARを先頭アドレスに戻さず、DRステート及びSWステートにおいて、SARをSM1ビット及びSM0ビットの指定と逆方向に、DARをDM1ビット及び DM0ビットの指定と逆方向に、インクリメント/デクリメントしてもよい。
DTC3の状態遷移は、DRステート、SWステートを追加するように拡張する。
次いで、実施の形態6におけるFLT23の使用例について説明する。図23に、デュアルブロックモードのラウンド動作を用いる場合のFLT23の使用例を示す。
DTC3は、係数データ(B2、B1、A2、A1及びA0)と、フィードバックデータ(Y[n−2]、Y[n−1]、X[n−2]及びX[n−1])と、入力データ(X[n])とを保持する領域を、RAM5上の連続したアドレスに設ける。
DTC3は、データ転送情報INF61により、A/D変換器変換データ(入力データ)を、RAM5上の入力データ領域にデータ転送する。このときの転送モードは、ノーマルモードである。
DTC3は、データ転送情報INF62により、RAM5上の係数データ、フィードバックデータ及び入力データ領域の内容を、FLT23の係数データレジスタ(B2、B1、A2、A1及びA0)、入力データレジスタ(Y[n−2]、Y[n−1]、X[n−2]、X[n−1]及びX[n])にデータ転送する。このときの転送モードは、デュアルブロックモードであり、ラウンド動作を用いる。このときのブロックサイズは10である。入力データレジスタX[n]へのライトが行われることで、FLT23がフィルタ演算動作を開始する。
DTC3は、データ転送情報INF62により、更に演算後のFLT23の係数データレジスタ(B2、B1、A2、A1及びA0)、入力データレジスタ(Y[n−2]、Y[n−1]、X[n−2]、X[n−1]及びX[n])の内容を、RAM5上の係数データ、フィードバックデータ及び入力データ領域へデータ転送する。
DTC3は、データ転送情報INF63により、出力データレジスタY[n]をリードして、リードしたデータを、所定のタイマのデータレジスタにライトする。このときの転送モードは、ノーマルモードである。
上述の通り、本実施の形態では、ラウンド動作を行うことにより、2つの逆方向のデータ転送を1組のデータ転送として実行することができる。その結果、フィルタ演算器へのデータ設定のためのデータ転送や遅延データなどの演算結果の保持のためのデータ転送を、少ないデータ転送情報で行うことができる。これにより、データ転送情報を保持するRAMの領域を節約できる。また、データ転送情報のリード/ライトの回数を減らして、データ転送を高速化することができる。
実施の形態7
実施の形態7にかかるマイクロコンピュータについて説明する。本実施の形態では、MCU100のINT2の具体例について説明する。図24に、割り込みコントローラ(INT)2のブロック図を示す。
INT2は、割り込み/DTC判定回路51、DTC許可レジスタ(DTERとも称する)52、優先順位判定回路53、ラッチ回路54及びデコーダ回路55を有する。
MCU100の割り込み要因には、内部割り込み及び外部割り込みの2種類があり、それぞれ割り込み要因フラグを有する。割り込みの要因フラグは、タイマ、通信、アナログの機能ブロックが所定の状態になったときに、「1」にセットされる。例えば、外部割り込み要因フラグは、外部割り込み入力端子が所定のレベルになったとき、又は、所定の信号変化が発生したときに「1」にセットされる。割り込み要因フラグは、CPU1のライト動作によって「0」にクリアされるほか、DTC3によるデータ転送が終了したときに「0」にクリアされる。
割り込み要因フラグの各ビットの出力は、割り込み許可回路に入力される。この割り込み許可回路には、さらに割り込み許可レジスタの内容、すなわち割り込み許可ビットが入力される。割り込み許可レジスタは、CPU1からリード/ライト可能なレジスタで、対応する割り込みを許可するか、禁止するか、を選択する。
割り込み要因フラグが「1」にセットされ、割り込み許可ビットが「1」にセットされていると割り込みが要求される。割り込みを要求である割り込み許可回路の出力は、割り込み/DTC判定回路51に入力される。
また、割り込み/DTC判定回路51には、DTC許可レジスタ(DTERとも称する)52の内容が入力される。割り込み/DTC判定回路51は、割り込みが要求されたとき、DTC3を起動するか、CPU1に割り込みを許可するかを選択する。
DTC許可レジスタ52の割り込み要因に対応したビットが「1」にセットされていると、割り込み/DTC判定回路51は、DTC3の起動を要求し、CPU1の割り込みを要求しない。DTC許可レジスタ52の割り込み要因に対応したビットが「0」にクリアされていると、割り込み/DTC判定回路51は、CPU1の割り込みを要求し、DTC3の起動を要求しない。割り込み/DTC判定回路51は、起動要求を優先順位判定回路53に出力する。
優先順位判定回路53は、CPU1の割り込み要求、DTC3の起動要求のそれぞれについて、複数の割り込み要求が発生している場合に優先順位を判定する。CPU1の起動要求の優先順位判定を行う際には、マスクレベルの判定を併せて行うことができる。CPU1の起動要求の優先順位の判定は、プライオリティレジスタや割り込みマスクレベルなどに従って制御される。
優先順位判定回路53は、最高の優先順位を有する起動要求を選択し、ベクタ番号を生成する。CPU1の起動要求を選択した場合、優先順位判定回路53は、CPU1の割り込み要求CPUINTとベクタ番号CPUVECとを生成する。DTC3の起動要求を選択した場合、DTC3の起動要求信号DTCREQとベクタ番号DTCVECとを生成する。起動要求信号DTCREQは、DTC3に入力される。ベクタ番号DTCVECはラッチ回路54に入力される。
また、ラッチ回路54には、DTC動作開始信号及びDTC動作終了信号がDTC3から入力される。すなわち、DTC3が動作を開始するとDTC動作信号が活性状態になり、ラッチ回路54はベクタ番号DTCVECのラッチないし保持する。DTC3のデータ転送が終了してDTC動作終了信号が活性状態になると、ラッチ回路54によるラッチは解除される。
ベクタ番号DTCVECとDTC動作終了信号とは、デコーダ回路55に入力される。これにより、対応する割り込み要因フラグに対する要因クリア信号が活性状態になって、対応する割り込み要因フラグ又はDTEビットがクリアされる。
所要の割り込み要因でDTC3を起動する場合、CPU1は予めデータ転送情報などを所要のアドレスにライトするとともに、当該割り込み要因に対応する割り込み許可ビットと、DTC許可レジスタ52の当該割り込み要因に対応するDTEビットを「1」にセットしておく。
当該割り込み要因フラグが「1」にセットされると、DTC3が起動される。DTC3が所定のデータ転送を実行している状態では、DTC3はデータ転送毎に当該割り込み要因フラグを「0」にクリアする。このとき、CPU1に割り込みは要求されない。
所定のデータ転送を終了すると、DTC3はデータ転送後にDTEビットを「0」にクリアする。このとき、当該割り込み要因フラグは「1」に保持され、DTEビットが「0」にクリアされているので、CPU1に割り込みが要求される。CPU1は、所定のデータ転送の終了に対応した処理を実行するとともに、データ転送情報やDTEビットの再設定を行う。
実施の形態8
実施の形態8にかかるマイクロコンピュータについて説明する。本実施の形態では、カメラを制御するカメラシステムに上述のMCUを適用した例について説明する。図25に、MCUを含むカメラシステム1000のブロック図を示す。
カメラシステム1000は、カメラボディMCU1001、カメラレンズMCU1002、防振モータ1003、レンズの速度および角速度を測定するセンサ1004を含む。このうち、カメラレンズMCU1002には、実施の形態1〜7で説明したMCUのいずれかが用いられる。カメラレンズMCU1002は、所要の制御対象の制御、防振モータの制御のほか、焦点や絞りのモータ制御(不図示)を行う。
カメラレンズMCU1002は、防振モータ用のタイマS(TSとも称する)、焦点モータ用のタイマF(TFとも称する)、絞りモータ用のタイマD(TDとも称する)、インターバルタイマ機能を持つタイマI(TIとも称する)を含む。これらのタイマS、タイマF、タイマD及びタイマIは、それぞれ、タイマ7に相当する。また、防振用センサの出力は、A/D変換器ADCに入力される。A/D変換器ADCは、アナログモジュール9に相当する。
防振制御の場合、カメラレンズMCU1002は、ヨー方向とピッチ方向などの複数の軸に対して、シフトブレと角度ブレなどの複数の制御を行う。例えば、シフトブレに対しては、レンズの速度のセンサの出力をA/D変換器ADCで変換し、入力データ(速度)を得る。入力データ(速度)を、RAM5に所要個数保持(遅延データ)するとともに、FLTに与えて、フィルタ演算を行う。そして、FLTの演算結果を、防振用タイマの所定のデータレジスタなどに与えることで、防振(シフトブレ)制御を実現される。
この場合、タイマIのコンペアマッチなどで、所定のA/D変換器ADCの変換開始を行うようにする。A/D変換器ADCの変換終了割り込みでDTC3を起動し、係数データ及び遅延データとともに、入力データ(速度)をFLTに与える。さらに、DTC3は、フィルタ演算結果を所定のタイマのデータレジスタにデータ転送する。
カメラレンズMCU1002は、1つのDTCと1つのFLTを用いて、ヨー方向とピッチ方向、シフトブレと角度ブレに対して、この制御動作を行うことができる。
この際、CPU1はスリープないしスタンバイモードなどの低消費電力状態とすることもできる。防振は、フレーミング中なども含め、カメラ使用中の多くの場合に動作するので、カメラシステムの低消費電力化に大きく寄与できる。DTCはCPUより論理規模が小さく、かつ高速に処理を行うことができるので、低消費電力化の効果を高めることができる。バッテリで駆動されるカメラシステムなどにおいては、低消費電力化が重要であることは言うまでもない。
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、データ転送情報は32ビット単位としたが、データ転送情報は任意のビット単位とすることができる。データ転送情報の配置も任意に変更することができる。具体的には、アドレスレジスタのビット数は32ビットに限定されるものではなく、CPUまたはマイクロコンピュータのアドレス空間に応じて変更でき、例えば16Mバイトのアドレス空間であれば24ビットとすればよい。MRのビット配置を分割して、24ビットのSAR及びDARと組み合わせてもよい。
CPUで動作するプログラムは、ROMに配置するほか、外部メモリに配置してもよい。同様に、CPUの作業領域であるメモリはRAMに限らず、外部メモリとしてもよい。また、マイクロコンピュータは、ROM及びRAMの一方又は両方を内蔵しなくてもよい。
DTCのデータ転送情報、入力データブロック、係数データブロックについては、処理速度や消費電力などの点で、マイクロコンピュータ内蔵のRAMに格納するのが有利であるものの、外部メモリに格納してもよい。
フィルタ演算器は、FIRフィルタ又はIIRフィルタに限定されず、フィルタ演算器以外にも、複数のデータの設定が必要な任意の演算器に適用可能である。
上述の実施の形態では、データ転送情報をRAMなどの記憶装置に格納する方式に基づき、説明を行った。しかし、使用できるデータ転送情報が実装されたハードウェアによって制限されるものの、いわゆるDMAコントローラに対しても上述の実施の形態で説明したデータ転送を適用可能である。
また、DTCのほかに、DMAコントローラなどの他のデータ転送装置を設けることもできる。DTCとDMAコントローラの機能を1つの機能モジュールとすることもできる。
DTC、割り込みコントローラの具体的な回路構成については、上述の実施の形態で説明した機能と同等の機能を有する種々の回路構成に変更可能である。BSCや、バスやウェイトなどのバス動作の詳細については省略したが、これらは適宜実装可能である。マイクロコンピュータの構成についても、例示に過ぎず、適宜変更可能である。
上述の実施の形態では、マイクロコンピュータついて説明したが、これは例示に過ぎない。上述の実施の形態で説明したDTCは、データ処理装置、データ処理装置と独立した演算器を内蔵した半導体集積回路などの各種の装置に適用することができる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
1 中央処理装置(CPU)
2 割り込みコントローラ(INT)
3 データ転送装置(DTC)
4 ROM
5 RAM
6 バスコントローラ(BSC)
7 タイマ
8 通信モジュール
9 アナログモジュール
10 入出力ポート(I/O)
11 内部バス
21−23 フィルタ演算器
31 DTCCNT
32 BIF
33 VG
34 VAR
35 ALU
36 内部バス
41 INC
42 シフタ
43 AU
44 DEC
51 割り込み/DTC判定回路
52 割り込み許可レジスタ
53 優先順位判定回路
54 ラッチ回路
55 デコーダ回路
100 マイクロコンピュータ(MCU)
211−213、221、222 乗算器
214 加算器
1000 カメラシステム
1001 カメラボディMCU
1002 カメラレンズMCU
1003 防振モータ
1004 センサ
ADC A/D変換器
BS1−BS5 内部バス
CPUVEC ベクタ番号
DTCREQ 起動要求信号
DTCVEC ベクタ番号
INF11、INF12、INF21−INF23、INF31−INF35、INF41−INF45、INF51−INF53、INF61−INF62 データ転送情報
X[n]、X[n−1]、X[n−2] 入力データレジスタ
Y[n]、Y[n−1]、Y[n−2] 出力データレジスタ
CR 転送カウントレジスタ
DAR デスティネーションレジスタ
DR データレジスタ
MR モードレジスタ
SAR ソースアドレスレジスタ
TR テンポラリレジスタ
B1〜B5 内部バス
DTCREQ データ転送要求信号
DTCVEC ベクタ番号

Claims (13)

  1. 起動要求を受けたときに、転送モード指定情報と転送動作回数指定情報を含むデータ転送情報に基づいて転送元アドレス領域から転送先アドレス領域へ複数のデータを連続して転送するデータ転送装置と、
    前記データ転送装置から受け取った複数のデータを同時に用いた演算を行う演算器と、
    を備え、
    前記データ転送装置は、
    前記転送モード指定情報に基づいて、第1の転送モードが選択可能であり、
    前記第1の転送モードでは、前記転送元アドレス領域から前記複数のデータを順に読み込み、読み込んだ前記複数のデータを、読み込んだ順に前記演算器へ転送する転送動作を行い、
    前記転送動作回数指定情報に基づいて、指定された回数だけ前記転送動作を行い、
    前記転送動作である第1の転送動作で第1の複数のデータを転送し、
    前記第1の転送動作に続けて、前記転送動作である第2の転送動作で第2の複数のデータを転送し、
    前記第2の複数のデータは、前記第1の複数のデータのうちで最も早く読み込んだデータを、新しいデータに置き換えたものである、
    半導体装置。
  2. 前記第2の複数のデータは、前記第1の複数のデータのうちで最も早く読み込んだデータと置き換えられたデータを、最も遅く読み込むデータとするように順序を変更したものである、
    請求項に記載の半導体装置。
  3. 前記複数のデータは、
    前記演算器の演算対象となる複数の入力データと、
    前記演算器演算で用いる複数の係数データと、を含み、
    前記演算器は、
    前記複数の係数データのうちで前記複数の入力データに対応するものを用いて前記複数の入力データに対する演算を行った結果のそれぞれを加算して、出力データを生成する、
    請求項に記載の半導体装置。
  4. 前記演算器は、
    前記複数の係数データのうちで前記複数の入力データに対応するものを、それぞれ前記複数の入力データに乗算する、
    請求項に記載の半導体装置。
  5. 前記演算器は、
    前記転送動作である第3の転送動作に対応して1の出力データを生成する第1の演算動作を行い、
    前記第3の転送動作に続けて行われる前記転送動作である第4の転送動作に対応して、1の出力データを生成する第2の演算動作を行い、
    前記第1の演算動作で行ったk(kは正の整数)番目の入力データの演算結果を、前記第2の演算動作で(k−1)番目の入力データとして用いる、
    請求項に記載の半導体装置。
  6. 前記演算器は、前記出力データを記憶装置に格納し、
    前記データ転送装置は、
    前記記憶装置に格納された1又は連続する複数の過去の前記出力データを読み込み、
    読み込んだ前記1又は連続する複数の過去の出力データを前記演算器に転送し、
    前記演算器は、
    前記複数の係数データのうちで前記複数の入力データに対応するものを用いて前記複数の入力データに対応する演算を行った結果と、前記1又は連続する複数の係数データを用いて前記1又は連続する複数の過去の出力データに対する演算を行った結果と、のそれぞれを加算して、前記出力データを生成する、
    請求項に記載の半導体装置。
  7. 前記演算器は、
    前記転送動作である第5の転送動作に対して1の出力データを生成する第3の演算動作を行い、
    前記第5の転送動作に続けて行われる前記転送動作である第6の転送動作に対応して、1の出力データを生成する第4の演算動作を行い、
    前記第3の演算動作で行ったj(jは正の整数)番目の出力データの演算結果を、前記第4の演算動作で(j−1)番目の出力データとして用いる、
    請求項に記載の半導体装置。
  8. 前記データ転送装置は、複数の転送モードのデータ転送を連続して行う、
    請求項1に記載の半導体装置。
  9. データ入出力部と、
    割り込み制御手段と、を更に備え、
    前記データ入出力部は、前記割り込み制御手段に対して割り込み要求を行い、
    前記割り込み制御手段は、前記割り込み要求に応じて、前記データ転送装置に対して起動要求を出力する、
    請求項1に記載の半導体装置。
  10. 中央処理装置を更に備え、
    前記割り込み制御手段は、前記データ転送装置がデータ転送を終了したら、前記中央処理装置に割り込み要求を出力する、
    請求項に記載の半導体装置。
  11. 前記中央処理装置は、前記データ転送情報を設定する、
    請求項10に記載の半導体装置。
  12. 起動要求を受けたときに、データ転送情報に基づいて、転送元アドレス領域から複数のデータを順に読み込み、読み込んだ前記複数のデータを読み込んだ順に転送先アドレス領域へデータ転送する転送動作を行うデータ転送装置であって、
    前記転送動作である第1の転送動作で第1の複数のデータを転送し、
    前記第1の転送動作に続く第2の転送動作で第2の複数のデータを転送し、
    前記第2の複数のデータは、前記第1の複数のデータのうちで最も早く読み込んだ第1のデータを第2のデータに置き換えたものである、
    データ転送装置。
  13. 前記第2の複数のデータは、前記第2のデータを最も遅く読み込むデータとするように順序を変更したものである、
    請求項12に記載のデータ転送装置。
JP2013266791A 2013-12-25 2013-12-25 半導体装置及びデータ転送装置 Active JP6275474B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013266791A JP6275474B2 (ja) 2013-12-25 2013-12-25 半導体装置及びデータ転送装置
US14/574,710 US9652229B2 (en) 2013-12-25 2014-12-18 Semiconductor device
US15/483,041 US9977753B2 (en) 2013-12-25 2017-04-10 Semiconductor device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013266791A JP6275474B2 (ja) 2013-12-25 2013-12-25 半導体装置及びデータ転送装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2018001840A Division JP2018085130A (ja) 2018-01-10 2018-01-10 データ転送装置及び半導体装置

Publications (2)

Publication Number Publication Date
JP2015122036A JP2015122036A (ja) 2015-07-02
JP6275474B2 true JP6275474B2 (ja) 2018-02-07

Family

ID=53400063

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013266791A Active JP6275474B2 (ja) 2013-12-25 2013-12-25 半導体装置及びデータ転送装置

Country Status (2)

Country Link
US (2) US9652229B2 (ja)
JP (1) JP6275474B2 (ja)

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01125644A (ja) 1987-11-11 1989-05-18 Hitachi Ltd データ転送装置
JPH0377418A (ja) * 1989-08-18 1991-04-03 Mitsubishi Electric Corp ディジタルフィルタ
JP3490101B2 (ja) 1992-04-30 2004-01-26 株式会社ルネサステクノロジ データ転送制御装置、及び半導体集積回路装置
JP3619532B2 (ja) * 1993-11-08 2005-02-09 株式会社ルネサステクノロジ 半導体集積回路装置
JPH07253965A (ja) * 1994-03-16 1995-10-03 Fujitsu Ltd 積和演算器
US5600582A (en) * 1994-04-05 1997-02-04 Texas Instruments Incorporated Programmable horizontal line filter implemented with synchronous vector processor
JP3226426B2 (ja) * 1994-09-27 2001-11-05 松下電器産業株式会社 半導体メモリ及びその使用方法並びに画像プロセッサ
JPH10187659A (ja) * 1996-12-19 1998-07-21 Toshiba Corp 積和演算器
EP0992917B1 (en) * 1998-10-06 2007-07-04 Texas Instruments Inc. Linear vector computation
JP2000194647A (ja) 1998-12-28 2000-07-14 Hitachi Ltd デ―タ転送装置
US8176238B2 (en) * 2003-12-02 2012-05-08 Super Talent Electronics, Inc. Command queuing smart storage transfer manager for striping data to raw-NAND flash modules
JP4300151B2 (ja) * 2004-04-19 2009-07-22 Okiセミコンダクタ株式会社 演算処理装置
US7676611B2 (en) * 2004-10-01 2010-03-09 Qlogic, Corporation Method and system for processing out of orders frames
JP2008192264A (ja) * 2007-02-07 2008-08-21 Nec Electronics Corp 半導体記憶装置
US8239875B2 (en) * 2007-12-21 2012-08-07 Spansion Llc Command queuing for next operations of memory devices
JP2012133405A (ja) * 2009-07-24 2012-07-12 Hitachi Ltd ストレージ装置及びそのデータ転送制御方法
US8924606B2 (en) * 2012-03-02 2014-12-30 Hitachi, Ltd. Storage system and data transfer control method
US9690953B2 (en) * 2013-03-14 2017-06-27 Apple Inc. Generating efficient reads for a system having non-volatile memory

Also Published As

Publication number Publication date
US20170212853A1 (en) 2017-07-27
US9977753B2 (en) 2018-05-22
US9652229B2 (en) 2017-05-16
JP2015122036A (ja) 2015-07-02
US20150178003A1 (en) 2015-06-25

Similar Documents

Publication Publication Date Title
US7500028B2 (en) DMA controller providing for ring buffer and rectangular block transfers
JP5573134B2 (ja) ベクトル型計算機及びベクトル型計算機の命令制御方法
JP3759647B2 (ja) 24ビットおよび16ビット算術演算の双方を実行するための装置および方法
JP2010027032A (ja) Fifo装置及びfifoバッファへのデータ格納方法
US20070052557A1 (en) Shared memory and shared multiplier programmable digital-filter implementation
US6728797B2 (en) DMA controller
US20180322079A1 (en) Semiconductor apparatus
US20040068590A1 (en) Data processor
US6738837B1 (en) Digital system with split transaction memory access
JPH08221272A (ja) 命令キャッシュに命令をロードする方法
JP6433191B2 (ja) マイクロコンピュータ
JP2005057374A (ja) A/d変換装置およびマイクロコントローラ
JP6275474B2 (ja) 半導体装置及びデータ転送装置
JP2518293B2 (ja) デ−タフロ−プロセツサ
JP2000322235A (ja) 情報処理装置
JP2018085130A (ja) データ転送装置及び半導体装置
JP2010117806A (ja) 半導体装置、および、半導体装置によるデータ処理方法
JP2018101448A (ja) 半導体装置
JP3821198B2 (ja) 信号処理装置
JP2008083827A (ja) データ幅可変fifoメモリ、fifoメモリ及び記憶装置
US20230409323A1 (en) Signal processing apparatus and non-transitory computer-readable storage medium
JP4408113B2 (ja) 信号処理方法
JP2668987B2 (ja) データ処理装置
JP2001216136A (ja) 加算回路およびプロセッサ
JP2001265593A (ja) 情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161003

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170621

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170704

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170829

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: 20171212

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180110

R150 Certificate of patent or registration of utility model

Ref document number: 6275474

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150