半導体集積回路
【課題】シーケンサを用いて制御を行う装置において性能の追加などの変更を容易にし、柔軟なLSI設計を可能にする。
【解決手段】継続的に入力されるデータに対して所定の処理を順次行う半導体LSI100において、ホストCPU110、複数のシーケンサ、データエンジン190は、ホストCPU110とデータエンジン190を夫々最上段と最下段にして階層的に接続されている。各シーケンサは、自身の実行用のパラメータを格納するメモリ、メモリコントローラ、ループカウンタ、シーケンスコントローラ、該シーケンサの外部との信号の送受信を行うインタフェース部を備える。これらの複数のシーケンサのインタフェース部は、同一の仕様を有する。
【解決手段】継続的に入力されるデータに対して所定の処理を順次行う半導体LSI100において、ホストCPU110、複数のシーケンサ、データエンジン190は、ホストCPU110とデータエンジン190を夫々最上段と最下段にして階層的に接続されている。各シーケンサは、自身の実行用のパラメータを格納するメモリ、メモリコントローラ、ループカウンタ、シーケンスコントローラ、該シーケンサの外部との信号の送受信を行うインタフェース部を備える。これらの複数のシーケンサのインタフェース部は、同一の仕様を有する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体集積回路、具体的には、複数のシーケンサを備える半導体集積回路に関する。
【背景技術】
【0002】
データが継続的に入力される動画像処理装置や通信装置などに備えられた、入力データに対して所定の処理を順次行う半導体集積回路に、シーケンサが多く用いられており、これらの半導体集積回路に対して、種々の視点からの提案がなされている。
【0003】
例えば、特許文献1には、2値画像信号符号化LSI(半導体集積回路)の高速化やコスト効果を実現するために、制御ブロックをライン周期で制御する全体制御ブロックと符号語単位の制御に分割し、符号語単位のシーケンス制御を符号化演算ブロックに組み込んだ技術が開示されている。図14を参照して説明する。
【0004】
図14は、特許文献1における図1に対して各機能ブロックの符号を変更したものである。図14に示すように、符号化LSI31は、制御MPU42と接続するシステムバスI/F33、システムバスI/F33を介して制御MPU42と接続される全体制御シーケンサ32、画像バスI/F34、ラインメモリ部35、符号化演算部40を備える。符号化演算部40は、変化点検出&モード判定処理部36、符号生成部37、符号パック部38、符号出力FIFO39を有し、これらはパイプライン処理を行う。
【0005】
画像データは、画像データ入力装置41から画像バスI/F34を介してラインメモリ部35に入力され、さらに、ラインメモリ部35から符号化演算部40の変化点検出&モード判定処理部36に出力され、変化点検出&モード判定処理部36、符号生成部37、符号パック部38、符号出力FIFO39の処理を経て符号化バスへ出力される。
【0006】
符号化演算部40に含まれる各機能ブロックは、該機能ブロックが行う処理を制御するブロックシーケンサ(図示せず)を有し、これらのブロックシーケンサは、全体制御シーケンサ32によって制御される。なお、全体制御シーケンサ32は、主に各ブロックシーケンサの処理のスタート/ストップの制御を行い、ブロックシーケンサは、その機能ブロックが行う処理に特化した制御を行う。
【0007】
特許文献2には、揚運炭設備に備えられたシーケンサの故障状態をモニタリングする装置が開示されている。図15を参照してこの装置を説明する。
【0008】
図15は、特許文献2における図1である。図示の故障状態モニタリング装置10は、モニタリング制御装置を構成するCPU11と、該CPU11に対する2つの入力装置13を有する。2つの入力装置13は、信号伝送ユニットで構成され、2つの揚運炭ラインA、Bそれぞれのシーケンサ12からシーケンサ接点のオン・オフ信号をCPU11の記憶装置14に入力する。
【0009】
この装置で、記憶装置14にシーケンサ12の接点のオン・オフ信号を故障原因に対応して入力すると共に、階層化して記憶させておき、故障原因を含む階層とその上流側の階層をディスプレイ15で故障と表示させ、この表示に基づき、マウス17で上層から下層に向かって展開することを繰り返して故障原因の調整ができるようになり、シーケンサプログラムを解読することなく、簡単に故障原因が分かると開示されている。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開平6−253157号公報
【特許文献2】特平10−198421号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
近年、動画像処理装置や通信装置などに対する高速化の要求が高まる一方であり、これらの装置に使用されるシステムLSIも、並列処理数が増加し、回路規模が大きくなる。また、システムLSIの設計に当たっては、用途、顧客のニーズ、市場状況などの影響を受けて、性能向上のために、機能ブロックの新規追加、機能ブロックの並列処理数の増加、機能ブロックの制御方法の細分化などが要求され、様々に変更される実態がある。
【0012】
このような背景において、上述した各変更の容易性を実現できる制御構成が求められている。
【0013】
図14に示すような符号化LSI31では、全体制御シーケンサ32と、符号化演算部40の各ブロックシーケンサとは、別々の仕様を有するため、新しい機能の追加や制御の変更が困難である。
【0014】
図14に示すような符号化LSI31では、全体制御シーケンサ32と、符号化演算部40の各ブロックシーケンサとは、入出力する信号の種類が異なるなど、別々のインタフェース仕様を有するため、新しい機能の追加や制御の変更が困難である。例えば、符号化演算部40の各ブロックシーケンサは、自身の属する機能ブロックが行う処理に特化した制御を行うために、それぞれ異なる制御信号が必要であると考えられる。この場合、なんらかの新しい機能をその機能ブロックに行わせようとして回路等の追加を行うと、当該ブロックシーケンサの制御の動作まで変更しなければならず、機能ブロック全体を大きく設定変更する必要がある。
【課題を解決するための手段】
【0015】
本発明の一つの態様は、継続的に入力されるデータに対して所定の処理を順次行う半導体集積回路である。この半導体集積回路は、ホストCPUと、前記所定の処理を実行するデータエンジンと、複数のシーケンサを備える。
【0016】
ホストCPUとデータエンジンと複数のシーケンサは、ホストCPUとデータエンジンを夫々最上段と最下段にして階層的に接続されている。
【0017】
各シーケンサは、自身の実行用のパラメータを格納するメモリと、メモリコントローラと、ループカウンタと、シーケンスコントローラと、該シーケンサの外部との信号の送受信を行うインタフェース部とを備える。
【0018】
なお、「パラメータ」とは、当該シーケンサの実行に用いられる種々のデータを意味し、例えば、該シーケンサが実行するプログラムのコード、シーケンス制御を行う上で必要な値などを含むことができる。なお、「シーケンス制御を行う上で必要な値」は、例えば、画像処理の場合における画像サイズや、画素の行数、列数などである。
【0019】
データエンジンは、自身の実行用のパラメータを格納するメモリと、該データエンジンの外部との信号の送受信を行うインタフェース部を備える。ここの「パラメータ」も、データエンジンの実行に用いられる種々のデータを意味する。
【0020】
ホストCPUは、該ホストCPUの外部との信号の送受信を行うインタフェース部を備える。
【0021】
これらの複数のシーケンサのインタフェース部は、同一の仕様を有し、それぞれが、第1のマスタインタフェース部と、第2のマスタインタフェース部と、第1のスレーブインタフェース部と、第2のスレーブインタフェース部を有する。
【0022】
各シーケンサのインタフェース部が「同一の仕様を有する」とは、これらのインタフェース部は、同一の構成を有し、それらの上を流れる信号のビット幅や、各ビットの意義が同一であることを意味する。
【0023】
シーケンサの第1のマスタインタフェース部は、該シーケンサの外部の機能ブロックにおけるメモリにアクセスするためのインタフェースである。
【0024】
シーケンサの第2のマスタインタフェース部は、該シーケンサの外部の機能ブロックの実行を制御するためのインタフェースである。なお、「実行を制御」することは、例えば実行の開始と停止などの制御である。
【0025】
シーケンサの第1のスレーブインタフェース部は、該シーケンサの外部の機能ブロックにより該シーケンサのメモリをアクセスされるためのインタフェースである。
【0026】
シーケンサの第2のスレーブインタフェース部は、該シーケンサの外部の機能ブロックにより該シーケンサの実行を制御されるためのインタフェースである。
【0027】
ホストCPUのインタフェース部は、シーケンサの第1のマスタインタフェース部と第2のマスタインタフェース部と夫々同一の仕様を有する第1のマスタインタフェース部と第2のマスタインタフェース部を有する。ホストCPUの第1のマスタインタフェース部は、ホストCPUが、自身の外部の機能ブロックにおけるメモリにアクセスするためのインタフェースであり、ホストCPUの第2のマスタインタフェース部は、ホストCPUが、自身の外部の機能ブロックの実行を制御するためのインタフェースである。
【0028】
データエンジンのインタフェース部は、シーケンサの第1のスレーブインタフェース部と第2のスレーブインタフェース部と夫々同一の仕様を有する第1のスレーブインタフェース部と第2のスレーブインタフェース部を有する。データエンジンの第1のスレーブインタフェース部は、データエンジンが、データエンジンの外部の機能ブロックによりメモリをアクセスされるためのインタフェースであり、データエンジンの第2のスレーブインタフェース部は、データエンジンが、データエンジンの外部の機能ブロックにより実行を制御されるためのインタフェースである。
【0029】
ホストCPUとデータエンジンと複数のシーケンサは、上段が、自身の第1のマスタインタフェース部と、1つまたは複数の下段の第1のスレーブインタフェース部とを介して、該1つまたは複数の下段のメモリにアクセスするように、さらに、上段が、自身の第2のマスタインタフェース部と、直下段の第2のスレーブインタフェース部とを介して、該直下段の実行を制御するように接続されている。
【0030】
なお、「上段」とは、注目する機能ブロックの直上の段(ホストCPUまたはシーケンサ)に限らず、該機能ブロックより上の階層に設けられたホストCPUとシーケンサのいずれも含む。
【0031】
また、「下段」は、注目する機能ブロックの直下の段(シーケンサまたはデータエンジン)に限らず、該機能ブロックより下の階層に設けられたシーケンサとデータエンジンのいずれも含む。
【0032】
なお、上記態様の半導体集積回路を方法やシステムなどに置き換えて表現したものや、該半導体集積回路を備えた動画像処理装置や通信装置なども、本発明の態様としては有効である。
【発明の効果】
【0033】
本発明にかかる技術によれば、シーケンサを用いて制御を行う装置に対して性能の追加などの変更が容易であり、柔軟なLSI設計が可能である。
【図面の簡単な説明】
【0034】
【図1】本発明の第1の実施の形態にかかる半導体LSIを示す図である。
【図2】図1に示す半導体LSIに対してインタフェース部を詳細に示した図である。
【図3】図1と図2に示す半導体LSI100におけるホストCPUが出力するクロック/電源制御信号の例を示す図である。
【図4】図1と図2に示す半導体LSIにおける各シーケンサが出力するクロック/電源制御信号の例を示す図である。
【図5】本発明の第2の実施の形態にかかる半導体LSIを示す図である。
【図6】図5における半導体LSIの各シーケンサとデータエンジンのメモリを示す図である。
【図7】フレームの画素構成例を示す図である。
【図8】図5に示す半導体LSIにおけるシーケンサの動作例を説明するための図である。
【図9】図5に示す半導体LSIの全体の動作例を説明するための図である。
【図10】本発明の第3の実施の形態にかかる半導体LSIを示す図である。
【図11】図10に示す半導体LSIの各機能ブロックのクロックと電源の供給状況の例を示す図である。
【図12】シーケンサまたはデータエンジンが上段のシーケンサに格納されたパラメータを共有する例を説明するための図である。
【図13】本発明の第4の実施の形態にかかる半導体LSIを示す図である。
【図14】従来技術を説明するための図である(その1)。
【図15】従来技術を説明するための図である(その2)。
【発明を実施するための形態】
【0035】
以下、図面を参照して本発明の実施の形態について説明する。説明の明確化のため、以下の記載及び図面は、本発明と関連する部分を除き、適宜、省略、及び簡略化がなされている。
<第1の実施の形態>
【0036】
図1は、本発明の第1の実施の形態にかかる半導体集積回路(以下半導体LSIという)100を示す。半導体LSI100は、例えば動画像処理装置に設けられ、継続的に入力されるフレームのデータ(図中入力データ)に対して所定の処理を順次行って出力するものであり、ホストCPU110、シーケンサ130、シーケンサ160、データエンジン190、クロック/電源制御部200を備える。上記所定の処理は、例えば入力された動画像の撮影モードに応じた画質改善処理である。また、画質改善処理は、例えば、ノイズ除去処理である。
【0037】
ホストCPU110、シーケンサ130、シーケンサ160、データエンジン190は、ホストCPU110とデータエンジン190を夫々最上段と最下段にして階層的に接続されている。図示の例の場合、シーケンサの数が2つであり、シーケンサ130は上位シーケンサとなり、シーケンサ160は下位シーケンサとなる。
【0038】
データエンジン190は、上記所定の処理を実行するものである。
クロック/電源制御部200は、クロックCLKが入力され、シーケンサ130、シーケンサ160、データエンジン190へのクロックの供給を制御すると共に、これらの機能ブロックへの電源供給も制御する。なお、この制御は、ホストCPU110、シーケンサ130、シーケンサ160からの後述するクロック/電源制御信号に従って行われる。
【0039】
以下の説明において、電源が供給される一方、クロックの供給が遮断されている機能ブロックの状態を「スリープ」という。また、電源の供給が遮断されている機能ブロックの状態を「電源OFF」という。また、クロックと電源の両方が供給されている機能ブロックの状態を「アクティブ」という。
【0040】
ホストCPU110は、外部との送受信を行うインタフェース部119を備える。
【0041】
シーケンサ130は、自身の実行用のパラメータを格納するメモリ131、メモリコントローラ132、シーケンスコントローラ133、ループカウンタ134、外部との送受信を行うインタフェース部149を備える。
【0042】
シーケンサ160は、自身の実行用のパラメータを格納するメモリ161、メモリコントローラ162、シーケンスコントローラ163、ループカウンタ164、外部との送受信を行うインタフェース部179を備える。
【0043】
データエンジン190は、自身の実行用のパラメータを格納するメモリ195、外部との送受信を行うインタフェース部199を備える。
【0044】
シーケンサ130とシーケンサ160のインタフェース部は、同一の仕様を有する。すなわち、インタフェース部149とインタフェース部179は、同一の構成を有し、それらを流れる信号のビット幅や、各ビットの意義が同一である。
【0045】
ホストCPU110のインタフェース部119とシーケンサ130のインタフェース部149との間に、メモリバス121と制御バス122が接続されている。
【0046】
また、ホストCPU110のインタフェース部119は、クロック/電源制御バス115によりクロック/電源制御部200と接続されており、クロック/電源制御バス115を介して、直下段のシーケンサ130に対するクロックと電源の供給を制御するクロック/電源制御信号をクロック/電源制御部200に送信する。
【0047】
また、シーケンサ130のインタフェース部149は、クロック/電源ライン123とクロック/電源制御バス125によりクロック/電源制御部200と接続されており、クロック/電源ライン123を介して、クロック/電源制御部200からのクロックと電源の供給を受けてシーケンサ130に供給し、クロック/電源制御バス125を介して、シーケンサ130と直下段のシーケンサ160に対するクロックと電源の供給を制御するクロック/電源制御信号をクロック/電源制御部200に送信する。
【0048】
シーケンサ130のインタフェース部149は、さらに、クロック/電源ライン123とは別のライン124と接続されており、該ライン124を介して、シーケンサ130がスリープ状態にあるときのクロック供給を受けてシーケンサ130に供給する。
【0049】
分かりやすいように、以下、「クロック/電源ライン123」を「第1のライン123」といい、「ライン124」を「第2のライン124」という。
【0050】
シーケンサ130のインタフェース部149とシーケンサ160のインタフェース部179との間に、メモリバス151と制御バス152が接続されている。
【0051】
また、シーケンサ160のインタフェース部179は、クロック/電源ライン153とクロック/電源制御バス155によりクロック/電源制御部200と接続されており、クロック/電源ライン153を介して、クロック/電源制御部200からのクロックと電源の供給を受けてシーケンサ160に供給し、クロック/電源制御バス155を介して、シーケンサ160と直下段のデータエンジン190に対するクロックと電源の供給を制御するクロック/電源制御信号をクロック/電源制御部200に送信する。
【0052】
シーケンサ160のインタフェース部179は、さらに、クロック/電源ライン153とは別のライン154と接続されており、該ライン154を介して、シーケンサ160がスリープ状態にあるときのクロック供給を受けてシーケンサ160に供給する。
【0053】
分かりやすいように、以下、「クロック/電源ライン153」を「第1のライン153」といい、「ライン154」を「第2のライン154」という。
【0054】
シーケンサ160のインタフェース部179とデータエンジン190のインタフェース部199との間に、メモリバス181と制御バス182が接続されている。
【0055】
また、データエンジン190のインタフェース部199は、クロック/電源ライン183によりクロック/電源制御部200と接続されており、クロック/電源ライン183を介して、クロック/電源制御部200からのクロックと電源の供給を受けてデータエンジン190に供給する。
【0056】
データエンジン190のインタフェース部199は、さらに、クロック/電源ライン183とは別のライン184と接続されており、該ライン184を介して、データエンジン190がスリープ状態にあるときのクロック供給を受けてデータエンジン190に供給する。
【0057】
分かりやすいように、以下、「クロック/電源ライン183」を「第1のライン183」といい、「ライン184」を「第2のライン184」という。
【0058】
図2は、図1に対して、各機能ブロックのインタフェース部をより詳細に示した図である。図2を参照して半導体LSI100をより詳しく説明する。
【0059】
ホストCPU110のインタフェース部119は、第1のマスタインタフェース部111、第2のマスタインタフェース部112、クロック/電源制御インタフェース部113を有する。
【0060】
シーケンサ130のインタフェース部149は、第1のスレーブインタフェース部141、第2のスレーブインタフェース部142、第1の入力インタフェース部143、第1のマスタインタフェース部144、第2のマスタインタフェース部145、クロック/電源制御インタフェース部146、第2の入力インタフェース部147を有する。
【0061】
シーケンサ160のインタフェース部179は、第1のスレーブインタフェース部171、第2のスレーブインタフェース部172、第1の入力インタフェース部173、第1のマスタインタフェース部174、第2のマスタインタフェース部175、クロック/電源制御インタフェース部176、第2の入力インタフェース部177を有する。
【0062】
データエンジン190のインタフェース部199は、第1のスレーブインタフェース部191、第2のスレーブインタフェース部192、第1の入力インタフェース部193、第2の入力インタフェース部194を有する。
【0063】
各機能ブロックの第1のマスタインタフェース部は、該機能ブロックがマスタ側として、外部の機能ブロックにおけるメモリにアクセスするためのインタフェースである。また、各機能ブロックの第1のマスタインタフェース部、すなわちホストCPU110の第1のマスタインタフェース部111、シーケンサ130の第1のマスタインタフェース部144、シーケンサ160の第1のマスタインタフェース部174は、同一の仕様を有する。
【0064】
各機能ブロックの第2のマスタインタフェース部は、該機能ブロックがマスタ側として、外部の機能ブロックの実行を制御するためのインタフェースである。また、各機能ブロックの第2のマスタインタフェース部、すなわちホストCPU110の第2のマスタインタフェース部112、シーケンサ130の第2のマスタインタフェース部145、シーケンサ160の第2のマスタインタフェース部175も、同一の仕様を有する。
【0065】
各機能ブロックの第1のスレーブインタフェース部は、該機能ブロックが、スレーブ側として、外部の機能ブロックによりメモリをアクセスされるためのインタフェースである。また、各機能ブロックの第1のスレーブインタフェース部、すなわちシーケンサ130の第1のスレーブインタフェース部141、シーケンサ160の第1のスレーブインタフェース部171、データエンジン190の第1のスレーブインタフェース部191は、同一の、第1のマスタインタフェース部に対応した仕様を有する。
【0066】
各機能ブロックの第2のスレーブインタフェース部は、該機能ブロックがスレーブ側として、外部の機能ブロックにより実行を制御されるためのインタフェースである。また、各機能ブロックの第2のスレーブインタフェース部、すなわちシーケンサ130の第2のスレーブインタフェース部142、シーケンサ160の第2のスレーブインタフェース部172、データエンジン190の第2のスレーブインタフェース部192は、同一の、第2のマスタインタフェース部に対応した仕様を有する。
【0067】
本実施の形態において、ホストCPU110、シーケンサ130、シーケンサ160、データエンジン190は、上段(ホストCPU110またはシーケンサ)が、自身の第1のマスタインタフェース部と、直下段(シーケンサまたはデータエンジン190)の第1のスレーブインタフェース部とを介して、該直下段のメモリにアクセスし、かつ、上段が、自身の第2のマスタインタフェース部と、直下段の第2のスレーブインタフェース部とを介して、該直下段の実行を制御するように接続されている。
【0068】
図2に示すように、ホストCPU110の第1のマスタインタフェース部111と、ホストCPU110の直下段のシーケンサ130の第1のスレーブインタフェース部141は、メモリバス121により接続されており、第1のスレーブインタフェース部141は、さらにメモリコントローラ132と接続されている。従って、ホストCPU110は、第1のマスタインタフェース部111、メモリバス121、第1のスレーブインタフェース部141、メモリコントローラ132を介して、シーケンサ130のメモリ131にアクセスできる。
【0069】
同様に、シーケンサ130は、第1のマスタインタフェース部144、メモリバス151、第1のスレーブインタフェース部171、メモリコントローラ162を介して、シーケンサ160のメモリ161にアクセスできる。
【0070】
また、シーケンサ160も、第1のマスタインタフェース部174、メモリバス181、第1のスレーブインタフェース部191、データエンジン190においてメモリコントローラと同様の機能を果たす機能ブロック(図示せず)を介して、データエンジン190のメモリ195にアクセスできる。
【0071】
また、ホストCPU110の第2のマスタインタフェース部112と、シーケンサ130の第2のスレーブインタフェース部142は、制御バス122により接続されており、第2のスレーブインタフェース部142は、さらにシーケンスコントローラ133と接続されている。従って、ホストCPU110は、第2のマスタインタフェース部112、制御バス122、第2のスレーブインタフェース部142を介してシーケンスコントローラ133を制御することにより、シーケンサ130の実行の制御を行うことができる。
【0072】
同様に、シーケンサ130は、第2のマスタインタフェース部145、制御バス152、第2のスレーブインタフェース部172を介して、シーケンサ160の実行の制御を行うことができる。
【0073】
また、シーケンサ160も、第2のマスタインタフェース部175、制御バス182、第2のスレーブインタフェース部192を介して、データエンジン190の実行の制御を行うことができる。
【0074】
本実施の形態において、ホストCPU110、シーケンサ130、シーケンサ160は、直下段に対してパラメータを設定する場合と、直下段の実行を制御するために該直下段のメモリを参照する場合に、直下段のメモリにアクセスする。
【0075】
シーケンサ130、シーケンサ160、データエンジン190は、自身のメモリに設定されたパラメータを参照しながら処理を実行する。この処理の進行により、メモリに格納されたパラメータの状態が変化する。
【0076】
ホストCPU110、シーケンサ130、シーケンサ160は、直下段のメモリにアクセスして該直下段に対してパラメータを設定する。その後、直下段のメモリにアクセスしてパラメータの状態を参照し、パラメータの状態に応じて、直下段のその後の実行の制御を行う。
【0077】
ホストCPU110のクロック/電源制御インタフェース部113は、ホストCPU110が、直下段(ここではシーケンサ130)へのクロック及び電源の供給を制御するクロック/電源制御信号をクロック/電源制御部200に送信するためのものであり、クロック/電源制御バス115を介してクロック/電源制御部200に接続される。
【0078】
シーケンサ130の第1の入力インタフェース部143は、クロック/電源制御部200からのクロック及び電源の供給を受けてシーケンサ130に供給するクロック/電源入力インタフェースであり、第1のライン123を介してクロック/電源制御部200と接続される。
【0079】
シーケンサ130のクロック/電源制御インタフェース部146は、シーケンサ130が自身または直下段(シーケンサ160)へのクロック及び電源の供給を制御するクロック/電源制御信号をクロック/電源制御部200に送信するためのものであり、クロック/電源制御バス125を介してクロック/電源制御部200に接続される。
【0080】
シーケンサ130の第2の入力インタフェース部147は、シーケンサ130がスリープ状態にあるときのクロック供給を第2のライン124から受けてシーケンサ130に供給するためのインタフェースである。
【0081】
シーケンサ160の第1の入力インタフェース部173、クロック/電源制御インタフェース部176、第2の入力インタフェース部177は、シーケンサ130の第1の入力インタフェース部143、クロック/電源制御インタフェース部146、第2の入力インタフェース部147に夫々対応した機能を有するため、ここで詳細な説明を省略する。
【0082】
データエンジン190の第1の入力インタフェース部193は、クロック/電源制御部200からのクロック及び電源の供給を受けてデータエンジン190に供給するクロック/電源入力インタフェースであり、第1のライン183を介してクロック/電源制御部200と接続される。
【0083】
データエンジン190の第2の入力インタフェース部194は、データエンジン190がスリープ状態にあるときのクロック供給を第2のライン184から受けてデータエンジン190に供給するためのインタフェースである。
【0084】
ここで、ホストCPU110がクロック/電源制御部200に出力するクロック/電源制御信号、及びシーケンサ130とシーケンサ160がクロック/電源制御部200に出力するクロック/電源制御信号の例を用いて、シーケンサ130、シーケンサ160、データエンジン190へのクロック供給と電源供給の制御を説明する。
【0085】
図3は、ホストCPU110がクロック/電源制御部200に出力するクロック/電源制御信号、すなわちクロック/電源制御バス115を流れる信号の例を示す。
【0086】
図3の例に示すように、ホストCPU110が出力するクロック/制御信号は、2ビットのクロック/電源制御部分により構成される。その片方の1ビット(例えば下位ビット)は、ホストCPU110の直下段(シーケンサ130)へのクロック供給を制御するためのクロック制御ビットであり、他方の1ビットは、シーケンサ130への電源供給を制御するための電源制御ビットである。
【0087】
図示の例では、クロック制御ビットが「0」であれば、シーケンサ130へのクロック供給を遮断することを意味する。なお、シーケンサ130へのクロック供給が既に遮断されている状態では、引き続き、シーケンサ130へのクロック供給を遮断することを意味する。また、クロック制御ビットが「1」であれば、シーケンサ130へのクロック供給を行うことを意味する。なお、シーケンサ130へのクロック供給が既に行われている状態では、引き続き、シーケンサ130へのクロック供給を行うことを意味する。
【0088】
同様に、電源制御ビットが「0」であれば、シーケンサ130への電源供給を遮断することを意味する。なお、シーケンサ130への電源供給が既に遮断されている状態では、引き続き、シーケンサ130への電源供給を遮断することを意味する。また、電源制御ビットが「1」であれば、シーケンサ130への電源供給を行うことを意味する。なお、シーケンサ130への電源供給が既に行われている状態では、引き続き、シーケンサ130への電源供給を行うことを意味する。
【0089】
例えば、シーケンサ130がクロック/電源制御部200からクロックと電源のいずれも供給されている状態で、ホストCPU110がからクロック/電源制御部200に「10」となるクロック/制御信号が出力されると、シーケンサ130への電源供給が継続されるが、シーケンサ130へのクロック供給が遮断される。
【0090】
図4は、シーケンサ130とシーケンサ160がクロック/電源制御部200に出力するクロック/電源制御信号、すなわちクロック/電源制御バス125とクロック/電源制御バス155を流れる信号の例を示す図である。
【0091】
図4の例に示すように、シーケンサ130とシーケンサ160が出力するクロック/電源制御信号は、1ビットの制御対象指示部分と、2ビットのクロック/電源制御部分とを有する。
【0092】
制御対象指示部分の1ビットは、該制御信号が、該制御信号を出力したシーケンサと、該シーケンサの直下段のうちのいずれのクロック/電源の供給を制御するものなのかを示す。例えば、制御対象指示部分の1ビットが「0」である場合、該制御信号が該シーケンサ自身のクロック/電源の供給を制御するものであることを示す。また、制御対象指示部分の1ビットが「1」である場合、該制御信号が該シーケンサの直下段のクロック/電源の供給を制御するものであることを示す。
【0093】
すなわち、シーケンサ130が出力するクロック/制御信号の場合、制御対象指示部分の1ビットは、シーケンサ130自身、シーケンサ160(直下段)のいずれかを示し、シーケンサ160が出力するクロック/制御信号の場合、制御対象指示部分の1ビットは、シーケンサ160自身、データエンジン190(直下段)のいずれかを示す。
【0094】
なお、シーケンサ130とシーケンサ160が出力するクロック/電源制御信号に含まれるクロック/電源制御部分は、その制御対象が、該クロック/電源制御信号に含まれる制御対象指示部分が示す機能ブロックである点を除き、ホストCPU110が出力クロック/電源制御信号(クロック/電源制御部分のみ)と同様であり、ここで詳細な説明を省略する。
【0095】
例えば、シーケンサ130とシーケンサ160がクロックと電源のいずれも供給されている状態で、シーケンサ130からクロック/電源制御部200に「110」となるクロック/制御信号が出力されると、シーケンサ130の直下段(シーケンサ160)への電源供給は継続されるが、シーケンサ160へのクロック供給は遮断される。また、同じ状態で、シーケンサ130からクロック/電源制御部200に「010」となるクロック/電源制御信号が出力されると、シーケンサ130自身への電源供給は継続されるが、シーケンサ130自身へのクロック供給が遮断される。
【0096】
同様に、シーケンサ160とデータエンジン190がクロックと電源のいずれも供給されている状態で、シーケンサ160からクロック/電源制御部200に「110」となるクロック/制御信号が出力されると、シーケンサ160の直下段(データエンジン190)への電源供給は継続されるが、データエンジン190へのクロック供給は遮断される。また、同じ状態で、シーケンサ160からクロック/電源制御部200に「010」となるクロック/電源制御信号が出力されると、シーケンサ160自身への電源供給は継続されるが、シーケンサ160自身へのクロック供給が遮断される。
【0097】
なお、シーケンサ130とシーケンサ160が出力するクロック/電源制御信号は、どの機能ブロックか、及び該機能ブロックへのクロック供給および電源供給を「行う」と「遮断する」のいずれかを示すことができれば、図4に示す構成に限られることがない。
【0098】
シーケンサ130は、スリープ状態においても動作する機能ブロック(図示せず)を有する。この機能ブロックは、シーケンスコントローラ133に設けられており、第2の入力インタフェース部147を介して第2のライン124からクロックが供給される。以下、この機能ブロックをスリープ制御ブロックと称する。なお、シーケンサ130は、スリープ状態において、そのループカウンタ134が、カウント値を保持する。
【0099】
同様に、シーケンサ160とデータエンジン190も、図示しないスリープ制御ブロックを有する。また、シーケンサ160も、スリープ状態において、そのループカウンタ164が、カウント値を保持する。
【0100】
シーケンサ130は、スリープ状態にあるときに、ホストCPU110が出力するクロック/電源制御信号、またはシーケンサ130自身が出力するクロック/電源制御信号によりスリープ状態を解除することができる。「スリープ状態を解除する」とは、クロックの供給を開始させることを意味する。
【0101】
シーケンサ130のスリープ状態の解除は、直上段(ホストCPU110)とシーケンサ130自身により行うことができる。シーケンサ130自身によるスリープ状態の解除は、シーケンサ130に備えられたスリープ制御ブロックにより行われる。例えば、シーケンサ130がシーケンサ160の実行を開始させた後、スリープ状態に入ったとする。シーケンサ160の実行が進み、シーケンサ130のスリープ状態を解除すべき所定のタイミングでシーケンサ130にトリガ信号を出力する。このトリガ信号は、例えば制御バス152を介してシーケンサ160のシーケンスコントローラ163からシーケンサ130のシーケンスコントローラ133に出力される。シーケンサ130のシーケンスコントローラ133における図示しないスリープ制御ブロックは、シーケンサ160からのトリガ信号を受信すると、シーケンサ130へのクロック供給を行うことを示すクロック/電源制御信号をクロック/電源制御部200に出力する。これにより、クロック/電源制御部200からシーケンサ130へのクロック供給が再開され、シーケンサ130のスリープ状態は解除される。
【0102】
なお、シーケンサ130の電源OFF状態の解除は、シーケンサ130自身ではできず、直上段(ホストCPU110)により行われる。
【0103】
同様に、シーケンサ160のスリープ状態の解除は、直上段(シーケンサ130)とシーケンサ160自身により行われることができる。シーケンサ160自身によるスリープ状態の解除も、シーケンサ160に備えられたスリープ制御ブロックにより行われる。この場合、シーケンサ160のスリープ制御ブロックは、例えば下段(データエンジン190)からのトリガ信号に応じて、シーケンサ160へのクロック供給を行うことを示すクロック/電源制御信号をクロック/電源制御部200に出力する。これにより、クロック/電源制御部200からシーケンサ160へのクロック供給が再開され、シーケンサ160のスリープ状態は解除される。
【0104】
なお、シーケンサ160の電源OFF状態の解除も、シーケンサ160自身ではできず、直上段(シーケンサ130)により行われる。
【0105】
本実施の形態の半導体LSI100において、各シーケンサは、自身の実行用のプログラムを含むパラメータを格納するメモリとメモリコントローラを備えると共に、各シーケンサのインタフェース部は、同一の仕様を有する。そのため、新しい機能の追加や、機能の変更などが容易である。
【0106】
例えば、各シーケンサがメモリとメモリコントローラを備えるため、上段により該シーケンサの実行用のプログラムコードを書き換えることができ、すなわち、プログラマブルなシーケンサを実現することができる。また、各シーケンサのインタフェース部が同一の仕様を有することから、プログラムコードを書き換える際に、各シーケンサの送受信する信号の仕様をインタフェース部の仕様に合わせることさえすれば、半導体LSI全体のシーケンサ制御の手法を変更せずに機能の変更ができる。
【0107】
また、例えば、新しい機能を追加するために、シーケンサ160と同じ層(シーケンサ130により制御される層)に別のシーケンサを設ける必要がある場合、シーケンサ130とシーケンサ160と同様のシーケンサをシーケンサ130に接続すれば、シーケンサ130は、シーケンサ160に加え、追加されたシーケンサに対しても同様の制御を行うことができる。
【0108】
また、各シーケンサがプログラマブルであると共に、各シーケンサのインタフェース部が同一の仕様を有することから、半導体LSIの機能を変更するためにシーケンサの階層数を増す必要がある場合にも、設計が簡単である。すなわち、本発明にかかる技術により、シーケンサの階層の細分化が容易である。勿論、シーケンサの階層数を減らす必要がある場合においても、同様である。
【0109】
本実施の形態の半導体LSI100において、ホストCPU110と各シーケンサは、直下段(いずれかのシーケンサまたはデータエンジン190)の実行を制御するために、自身の第1のマスタインタフェース部、直下段の第1のスレーブインタフェース部を介して、直下段のメモリにアクセスして該メモリに格納されたパラメータの状態を参照する。また、ホストCPU110と各シーケンサは、自身の第2のマスタインタフェース部と、直下段の第2のスレーブインタフェース部を介して、直下段の実行を制御する。すなわち、実行を制御するマスタ側の機能ブロック(ホストCPU110またはシーケンサ)と、実行を制御されるスレーブ側の機能ブロック(シーケンサまたはデータエンジン190)との間に、スレーブ側のメモリを参照するためのチャネル(参照チャネルという)と、スレーブ側の実行を制御するためのチャネル(制御チャネル)とが独立している。
【0110】
参照チャネルと制御チャネルが同一である場合に、スレーブ側のメモリの参照と、スレーブ側の実行の制御とが排他的に実行されるため、参照、または実行の制御を行う際に1サイクル以上の待ち状態が発生する。
【0111】
これに対して、本実施の形態の半導体LSI100において、参照チャネルと制御チャネルとが独立しているため、上述した待ち状態を回避し、高速化を図ることができる。
【0112】
また、本実施の形態の半導体LSI100において、各シーケンサは、自身、直下段のクロック及び電源の供給を制御し得る構成となっている。シーケンサ130とシーケンサ160を例にする。また、各シーケンサおよびデータエンジン190において、ループカウンタの前回のカウントアップから今回のカウントアップの間までの期間を、1ループという。ここで、シーケンサ130とシーケンサ160におけるループを夫々「上位ループ」と「下位ループ」という。
【0113】
シーケンサ130は、2つの上位ループの間では動作する必要がないので、1つの上位ループが開始されると自身へのクロック供給を遮断し、スリープ状態に入ることができる。そして、シーケンサ160は、該上位ループの下の各下位ループが完了すると、シーケンサ130にトリガ信号を送信することによりシーケンサ130にスリープ状態を解除させるので、次の上位ループが開始できる。このようにして、半導体LSI100の各機能ブロックのクロックや電源の供給をこまめに制御することができ、半導体LSI100の消費電力を効率良く抑制することができる。なお、消費電力をより細かく制御したければ、ホストCPUとデータエンジン間のシーケンサの段数を増やせばよい。これについては、後に第4の実施の形態を用いてさらに説明する。
<第2の実施の形態>
【0114】
図2は、本発明の第2の実施の形態にかかる半導体LSI300を示す。半導体LSI300も、例えば動画像処理装置に設けられ、継続的に入力されるフレームのデータ(入力データ)に対して所定の処理を順次行って出力するものであり、ホストCPU310、シーケンサ330、シーケンサ360、データエンジン390、クロック/電源制御部400を備える。上記所定の処理は、例えば入力された動画像の撮影モードに応じた画質改善処理である。また、画質改善処理は、例えば、ノイズ除去処理である。
【0115】
ホストCPU310、シーケンサ330、シーケンサ360、データエンジン390は、ホストCPU310とデータエンジン390を夫々最上段と最下段にして階層的に接続されている。
データエンジン390は、上記所定の処理を実行するものである。
【0116】
クロック/電源制御部400は、クロックCLKが入力され、シーケンサ330、シーケンサ360、データエンジン390へのクロックの供給を制御すると共に、これらの機能ブロックへの電源供給も制御する。なお、この制御は、ホストCPU310、シーケンサ330、シーケンサ360からのクロック/電源制御信号に従って行われる。
【0117】
ホストCPU310は、第1のマスタインタフェース部311、第2のマスタインタフェース部312、クロック/電源制御インタフェース部313を備える。
【0118】
シーケンサ330は、メモリ331、メモリコントローラ332、シーケンスコントローラ333、ループカウンタ334、第1のスレーブインタフェース部341、第2のスレーブインタフェース部342、第1の入力インタフェース部343、第1のマスタインタフェース部344、第2のマスタインタフェース部345、クロック/電源制御インタフェース部346、第2の入力インタフェース部347を備える。
【0119】
シーケンサ360は、メモリ361、メモリコントローラ362、シーケンスコントローラ363、ループカウンタ364、第1のスレーブインタフェース部371、第2のスレーブインタフェース部372、第1の入力インタフェース部373、第1のマスタインタフェース部374、第2のマスタインタフェース部375、クロック/電源制御インタフェース部376、第2の入力インタフェース部377を備える。
【0120】
データエンジン390は、メモリ395、第1のスレーブインタフェース部391、第2のスレーブインタフェース部392、第1の入力インタフェース部393、第2の入力インタフェース部394、第1のマスタインタフェース部396を備える。
【0121】
なお、図面の簡潔にために、図5において、メモリバスや制御バス、クロックと電源を供給するためのラインなどについて、符号を省略している。
【0122】
本実施の形態半導体LSI300は、以下に説明する点を除き、各機能ブロックの構成や、各機能ブロック間の接続関係などは、第2に示す半導体LSI100と同一である。そのため、半導体LSI300に対して、半導体LSI100と異なる点についてのみ説明する。
【0123】
半導体LSI100において、ホストCPU110と各シーケンサは、自身の直下段のメモリにのみアクセスするようになっている。本実施の形態の半導体LSI300において、ホストCPU110、シーケンサ330は、自身の直下段を含む全ての下段のメモリにアクセスできるように接続されている。
【0124】
具体的には、ホストCPU310の第1のマスタインタフェース部311は、シーケンサ330の第1のスレーブインタフェース部341に接続されていると共に、シーケンサ360の第1のスレーブインタフェース部371、データエンジン390の第1のスレーブインタフェース部391とも接続されている。そのため、ホストCPU310は、メモリ331、メモリ361、メモリ395のいずれにもアクセスでき、シーケンサ330、シーケンサ360、データエンジン390のいずれに対してもパラメータを設定することができる。
【0125】
同様に、シーケンサ330は、シーケンサ360とデータエンジン390のいずれに対してもパラメータを設定することができる。
【0126】
すなわち、本実施の形態の半導体LSI300では、各シーケンサがメモリとメモリコントローラを備えるため、上段(ホストCPUまたはシーケンサ)は、直下段に限らず、階層を跨った下段(シーケンサまたはデータエンジン)に対してもパラメータを設定することができる。そのため、半導体LSIの設計の自由度を高めることができる。
【0127】
また、本実施の形態の半導体LSI300において、シーケンサ360は、上段のシーケンサ330のメモリ331にアクセス可能に接続されている。
【0128】
具体的には、シーケンサ360の第1のマスタインタフェース部374と、シーケンサ330の第1のスレーブインタフェース部341とがメモリバスを介して接続されているため、シーケンサ360は、シーケンサ330のメモリ331にアクセスすることができる。
【0129】
さらに、本実施の形態の半導体LSI300において、データエンジン390は、第1のマスタインタフェース部396を備える。該第1のマスタインタフェース部396は、各シーケンサの第1のマスタインタフェース部と同一の仕様を有する。また、データエンジン390は、シーケンサ330とシーケンサ360のメモリにアクセス可能に接続されている。
【0130】
具体的には、データエンジン390の第1のマスタインタフェース部396と、シーケンサ330の第1のスレーブインタフェース部341とがメモリバスを介して接続されているため、データエンジン390は、シーケンサ330のメモリ331にアクセスすることができる。同様に、データエンジン390の第1のマスタインタフェース部396と、シーケンサ360の第1のスレーブインタフェース部371とがメモリバスを介して接続されているため、データエンジン390は、シーケンサ360のメモリ361にアクセスできる。
【0131】
すなわち、本実施の形態の半導体LSI300では、各シーケンサとデータエンジンが、上段のメモリにアクセス可能に接続されている。これにより、これにより、メモリの容量を削減することができる。例えば、ホストCPUとデータエンジンの間にシーケンサ1、シーケンサ2、シーケンサ3が階層的に接続され、動画像処理を行う半導体LSIにおいて、ホストCPUがシーケンサ1に対して設定したパラメータのうち、「撮影モード」やフレームの「画像サイズ」が含まれており、シーケンサ2が撮影モードを使用するときがあり、シーケンサ3が画像サイズを使用するときがあると仮定する。この場合、シーケンサ2がシーケンサ1のメモリから「撮影モード」を読み出すことができるため、シーケンサ2に対して「撮影モード」を設定する必要がない。同様に、シーケンサ3がシーケンサ1のメモリから「画像サイズ」を読み出すことができるため、シーケンサに対して「画像サイズ」を設定する必要がない。従って、シーケンサ2とシーケンサ3のメモリの容量を削減することができる。
【0132】
図6は、半導体LSI300における各シーケンサとデータエンジン390におけるメモリの構成を示す。図示のように、シーケンサ330のメモリ331は、例えばレジスタである第1のメモリ331Aと第2のメモリ331Bを有し、シーケンサ360のメモリ361は、第1のメモリ361Aと第2のメモリ361Bを有し、データエンジン390のメモリ395は、第1のメモリ395Aと第2のメモリ395Bを有する。
【0133】
本実施の形態の半導体LSI300において、各シーケンサとデータエンジン390は、自身の第1のメモリに設定されたパラメータを第2のメモリにコピーして、該第2のメモリにコピーされた前記パラメータを参照しながら処理を実行する。ホストCPU310と各シーケンサは、下段に対してパラメータを設定する際に、該下段の第1のメモリにパラメータを設定し、直下段の実行を制御する際に、該直下段の第2のメモリにおけるパラメータの状態を参照する。
【0134】
例えば、データエンジン390は、今のループの開始時に、メモリ395における第1のメモリ395Aに設定されたパラメータを第2のメモリ395Bにコピーして、第2のメモリ395Bを参照しながら処理を実行する。今のループの処理を終了すると、再び第1のメモリ395Aに設定されたパラメータを第2のメモリ395Bにコピーして、第2のメモリ395Bを参照しながら処理を実行する。
【0135】
ホストCPU310、シーケンサ330、シーケンサ360は、データエンジン390に対してパラメータを設定する際に、第1のメモリ395Aに設定する。
【0136】
シーケンサ360は、データエンジン390の実行を制御するために、データエンジン390の第2のメモリ395Bを参照してパラメータの状態を把握する。
【0137】
シーケンサまたはデータエンジンがループ中の処理を実行しているときに、該シーケンサまたはデータエンジンが処理に使用しているメモリにデータを書き込むことができない。しかし、時間的なスケジューリングなどの都合から、どうしても上位側のホストCPUやシーケンサが、ループ処理中の下段のパラメータを設定し直す場合がある。本実施の形態の半導体LSI300は、各シーケンサとデータエンジンのメモリが、上段によりパラメータを設定される第1のメモリと、第1のメモリからコピーしたパラメータを格納してシーケンサまたはデータエンジンの処理に供する構成を有する。そのため、ホストCPU310またはシーケンサは、下段のシーケンサまたはデータエンジン390のループ処理中に、該下段のシーケンサまたはデータエンジン390の第1のメモリ395Aに、変更されたパラメータを設定することができる。
【0138】
ここで、半導体LSI300が処理する動画像におけるフレームの具体例を用いて、半導体LSI300の動作例を説明する。
【0139】
図7は、動画像のフレームの画素構成例を示す。図示のように、該フレームのサイズは、「Cmax×Rmax」であり、横方向すなわち行方向(R方向)においてCmax個の画素があり、縦方向すなわち列方向(C方向)においてRmax個の画素がある。半導体LSI300は、上の行から下の行の順、各行については左の列の画素から右の画素の順で画素単位の処理をしていく。すなわち、図7の例では、R1行、R2行、R3行、・・・、Rmax行の順、各行については、C1の列の画素、C2の列の画素、C3の列の画素、・・・、Cmaxの列の画素の順で処理が行われる。
【0140】
シーケンサ330は、フレーム単位のシーケンス制御を行い、ループカウンタ334のカウント値は、現在処理中のフレームの番号を示すものである。シーケンサ360は、行単位のシーケンス制御を行い、ループカウンタ364のカウント値は、現在処理中の行の番号を示すものである。
【0141】
データエンジン390は、順次入力される各行の画素データに対して、画素毎にノイズ除去処理を行う。ノイズ除去処理は、例えば該画素の画素値と、前後の画素の画素値との重付け平均処理である。なお、本実施の形態におけるデータエンジン390は、現在処理中の画素の列の番号をカウントするループカウンタ(図示せず)を有する。
【0142】
半導体LSI300全体の動作の前に、まず、図8を参照して、シーケンサ360を代表にして、本実施の形態におけるシーケンサが行う処理の流れの例を説明する。なお、シーケンサ360とデータエンジン390は、既にパラメータの設定がなされ、クロック/電源制御部400から電源が供給されているとする。また、シーケンサ360は、クロック/電源制御部400からクロックを供給されているが、データエンジン390は、クロック/電源制御部400からのクロック供給を遮断されている。なお、シーケンサ360に対して設定されたパラメータは、例えば、シーケンサ360が実行するプログラムのコードや、フレームの行数(Rmax)などであり、データエンジン390に対して設定されたパラメータは、例えば、データエンジン390が実行するプログラムのコードや、1行の画素数すなわちフレームの列数(Cmax)などである。
【0143】
図8の左端のフローチャートは、シーケンサ360におけるループカウンタ364と、データエンジン390の図示しないループカウンタの動作を示す。中央のフローチャートは、シーケンサ360の動作を示す。右端のフローチャートは、データエンジン390の動作を示す。
【0144】
まず、シーケンサ360は、自身のメモリ331に設定されたパラメータに応じて、フレームを処理するための種々の初期設定を行う(S50)。そして、ループカウンタ334は1つカウントアップをし、これにより1つ目の上位ループ(上位ループ0)がスタートする(S10)。各シーケンサおよびデータエンジン390において、ループカウンタの前回のカウントアップから今回のカウントアップの間までの期間は、1ループであり、シーケンサとその直下段(シーケンサまたはデータエンジン390)のうちの上段におけるループが上位ループであり、下段におけるループが下位ループである。ここでは、シーケンサ360におけるループが上位ループとなり、データエンジン390におけるループが下位ループとなる。
【0145】
また、前述したように、シーケンサ360におけるループカウンタ364は、現在処理中の画素の行の番号を示すものである。そのため、このタイミングでは、ループカウンタ364のカウント値は、R1行を示すものとなる。
【0146】
R1行の処理を行うために、シーケンサ360のシーケンスコントローラ363は、データエンジン390へのクロック供給の開始を示すクロック/電源制御信号をクロック/電源制御部400に出力すると共に、実行開始を示す制御信号をデータエンジン390に出力する(S52)。
【0147】
これにより、クロック/電源制御部400からデータエンジン390へのクロック供給が開始され、データエンジン390は動作を開始し、現在の行の画素に対してノイズ除去処理を実行する(S70)。
【0148】
データエンジン390の動作開始に伴って、データエンジン390の図示しないループカウンタがカウントアップを開始し、これにより、1つ目の下位ループ(下位ループ0)がスタートする(S12)。前述したように、データエンジン390の図示しないループカウンタは、現在処理中の画素の列の番号を示すものである。そのため、ここでは、データエンジン390のループカウンタのカウント値は、C1行を示すものとなる。すなわち、R1行、C1列の画素の処理が開始される。
【0149】
シーケンサ360は、ステップS52の実行制御を行った後、現在処理中の行の次の行(R2行)を処理するための種々の設定を行ってから、スリープ状態に入る(S54、S56)。なお、シーケンサ360は、クロック/電源制御部400に対して、自身へのクロック供給を遮断させるクロック/電源制御信号を出力することにより、スリープ状態にされる。
【0150】
データエンジン390の実行中に(S70)、処理の進行に伴って、データエンジン390のループカウンタがカウントアップを続け、下位ループは、下位ループ0から、下位ループ1、下位ループ2、・・・、下位ループ(Cmax−2)、下位ループ(Cmax−1)と遷移する(S14〜S24)。
【0151】
下位ループ(Cmax−1)が完了すると、データエンジン390のループカウンタのカウント値がCmaxになる。これにて、現在の行(R1行)の全ての画素の処理が完了する。
【0152】
データエンジン390のループカウンタのカウント値がCmaxになると、データエンジン390は、自身のループカウンタのカウント値をクリアすると共に、シーケンサ360にトリガ信号を出力する(S71)。
【0153】
スリープ状態にあるシーケンサ360のスリープ制御ブロックは、データエンジン390からのトリガ信号を受信すると、クロック/電源制御部400に対して、シーケンサ360へのクロック供給を行わせるクロック/電源制御信号を出力する。これにより、シーケンサ360のスリープ状態が解除される(S57)。
【0154】
シーケンサ360は、クロック/電源制御部400からクロックの供給が再開されると、ループ制御を行う(S58)。このループ制御は、最後の上位ループが完了したか否か(ここではループカウンタ364のカウント値がRmaxである否か)に応じて行う。ループカウンタ364のカウント値がRmaxではない場合、シーケンサ360は、ステップS52に戻り、データエンジン390の実行制御を行う。また、ループカウンタ364は、1つカウントアップする(上位ループ+1)(S30)。そして、ステップS12からの下位ループが繰り返される。
【0155】
ステップS58において、シーケンサ330は、最後の上位ループの完了を確認すると、終了時の種々の設定を行い(S60)、シーケンサ360の実行停止とクロック供給の停止の制御を行う(S62)。これにて、データエンジン390がスリープ状態に入り、1フレーム分の処理が完了する(S64、S72)。
【0156】
なお、図8に対して、行数Cmaxを動画像のフレーム数に置換え、さらに、左端の「ループカウンタ364、データエンジン390の図示しないループカウンタ」を「ループカウンタ334、ループカウンタ364」に、中央の「シーケンサ360」を「シーケンサ330」に、右端の「データエンジン390」を「シーケンサ360」に置換えれば、シーケンサ330が行う処理の流れの例を示すフローチャートになる。これについては、詳細を省略する。
【0157】
図9は、半導体LSI300の全体の動作の流れの例を示す。半導体LSI300の電源が入ったときから説明する。このとき、ホストCPU310はアクティブ状態であり、シーケンサ330、シーケンサ360、データエンジン390は、スリープ状態であるとする。
【0158】
ホストCPU310は、シーケンサ330、シーケンサ360、データエンジン390に対してパラメータの設定を行う(S300)。前述したように、半導体LSI300において、ホストCPU310は、直下段のみならず、階層を跨った下段に対してもパラメータを設定できる。
【0159】
ここの例では、ホストCPU310により全ての下段の機能ブロックのパラメータを設定するようにしているが、ホストCPU310がシーケンサ330のパラメータを設定し、シーケンサ330はシーケンサ360のパラメータを設定し、シーケンサ360はデータエンジン390のパラメータの設定を行うようにしてもよい。勿論、シーケンサ330がシーケンサ360とデータエンジン390のパラメータを設定するようにしてもよい。
【0160】
さらに、シーケンサ330以下の各機能ブロックの一部のパラメータ(例えば該機能ブロックの実行用プログラムのコード)は、全てホストCPU310により設定され、他のパラメータ(例えば実行時に用いられるフレーム数や行数などの値)は、該機能ブロックの直上段により設定されるようにしてもよい。
【0161】
次に、ホストCPU310は、シーケンサ330へのクロック供給と、シーケンサ330の実行が開始されるよう制御を行う(S102)。
【0162】
実行を開始したシーケンサ330は、シーケンサ360に対するクロック供給と、シーケンサ360の実行が開始されるよう制御を行う(S120)。そして、シーケンサ330は、スリープ状態に入る(S122)。
【0163】
実行を開始したシーケンサ360は、データエンジン390に対するクロック供給と、データエンジン390の実行が開始されるように制御を行う(S140)。そして、シーケンサ360は、スリープ状態に入る(S142)。
【0164】
実行を開始したデータエンジン390は、現在の行の各画素を順次処理する(S160)。該行の最後の画素の処理が完了すれば、シーケンサ360にトリガ信号を送信する。これにより、シーケンサ360は、自身のスリープ状態を解除する。
【0165】
クロック/電源制御部400からクロックの供給を再開されたシーケンサ360は、次の行の処理を行うようにデータエンジン390を制御する(S144)。そして、再びスリープ状態に入る(S146)。
【0166】
データエンジン390は、次の行の各画素を順次処理し(S162)、最後の画素の処理が完了すれば、シーケンサ360にトリガ信号を出力する。これにより、シーケンサ360は、自身のスリープ状態を解除する。
【0167】
ここで、シーケンサ360の最後のループ(データエンジン390にとっては上位ループ、シーケンサ330にとっては下位ループ)が完了した、すなわち、現在のフレームの処理が完了したとする。そのため、シーケンサ360は、シーケンサ330にトリガ信号を出力する。これにより、シーケンサ330は、自身のスリープ状態を解除する。
【0168】
なお、シーケンサ330のスリープ中に、ホストCPU310は、シーケンサ330のパラメータを変更することもできる(S104)。ホストCPU310は、シーケンサ330のパラメータの変更が完了すれば、スリープ状態に入ってもよい(S106)。
【0169】
このように処理が繰り返され、動画像の全てのフレームの処理が完了すれば、ホストCPU310は、実行終了の処理、例えば終了時の種々の設定などを行う(S108)。これにて、ホストCPU310、シーケンサ330、シーケンサ360、データエンジン390は、処理を終了する(S110、S128、S152、S166)。
【0170】
なお、これらの機能ブロックは、処理を終了すると、自身または直上段の制御により、スリープ状態や電源OFF状態に入ってもよい。
【0171】
本実施の形態の半導体LSI300は、上述した各効果以外に、より効率良く電力消費を抑制する効果を得ることができる。半導体LSI300では、シーケンサとデータエンジンは、制御バスを介して直上段にトリガ信号を送信する通知チャネルが構成されており、直上段のスリープ解除が高速にできる。この構成と、前述した、参照チャネルと制御チャネルとが独立して設けられている構成とにより、クロックサイクル精度レベルのクイックな電力制御が実現でき、無駄な電力消費期間を少なくすることができる。
<第3の実施の形態>
本発明にかかる技術は、並列して処理を行うデータエンジンの数が多い場合に大きなメリットを有する。第3の実施の形態として、この場合の半導体LSIの1例を説明する。
【0172】
図10は、本発明の第3の実施の形態にかかる半導体LSI500を示す。該半導体LSI500は、ホストCPU、複数のシーケンサ(A1、B1、D1、・・・、Dn、C1、・・・、Cm)、複数のデータエンジン(X1、・・・、Xn、Y1、・・・、Yn)、クロック/電源制御部510を備える。なお、分かりやすいように、以下の図面において、各機能ブロックのインタフェース部や、スリープ状態のときにクロックを供給するラインなどを省略する。
【0173】
シーケンサA1は、ホストCPUの直下に設けられ、ホストCPUにより制御される。
【0174】
シーケンサB1、シーケンサC1、・・・、シーケンサCmは、シーケンサA1の直下に設けられ、シーケンサA1により制御される。
【0175】
シーケンサC1、・・・、Cmは、直下に、データエンジンY1、・・・、Ymが夫々接続されており、これらのデータエンジンを夫々制御する。
【0176】
一方、シーケンサB1の直下には、データエンジンではなく、さらに、シーケンサD1、・・・、Dnが接続されている。これらのシーケンサは、シーケンサB1により制御される。
【0177】
シーケンサD1、・・・、Dnは、直下に、データエンジンX1、・・・Xnが夫々接続されており、これらのデータエンジンを夫々制御する。
【0178】
半導体LSI500に含まれる各シーケンサは、半導体LSI100の各シーケンサと同様な構成を有するので、ここで詳細な説明を省略する。
【0179】
本発明にかかる電力消費の制御技術をデータエンジン数が多い半導体LSIに適用することにより、細かな電力消費の制御が可能である。図11にその一例を示す。
【0180】
図11において、斜線のハッチングがされた矩形は、該矩形により表わされる機能ブロックの状態が「スリープ」であることを示し、点のハッチングがされた矩形は、該矩形により表わされる機能ブロックの状態が「電源OFF」であることを示す。また、ハッチングされていない矩形は、該矩形により表わされる機能ブロックの状態が「アクティブ」であることを示す。
【0181】
図11の例では、半導体LSI500のデータエンジンX1、・・・、Xnは、クロック及び電源が供給され、アクティブ状態である。ホストCPUは、電源が供給されているがクロックの供給が遮断されたスリープ状態である。また、データエンジンX1、・・・、Xnをそれぞれ制御するシーケンサD1、・・・、Dn、及びこれらのシーケンサを制御するシーケンサB1、シーケンサB1を制御するシーケンサA1も、電源が供給されているが、クロックの供給が遮断されたスリープ状態である。なお、これらの機能ブロックのループカウンタ(RCA1、RCB1、RCD1、・・・、RCDn)は、スリープ状態中にはカウント値を保持する。また、データエンジンY1、・・・、Ymは電源とクロックのいずれの供給も遮断された「電源OFF」状態であり、これらのデータエンジンをそれぞれ制御するシーケンサC1、・・・、Cmも、電源OFF状態であり、それぞれのループカウンタ(RCC1、・・・、RCCm)は、カウント値をクリアされている。
【0182】
図11に示す例から、半導体LSI500の各機能ブロックのクロックと電源の供給が細かく制御可能であることが分かる。
【0183】
図10に示す半導体LSI500を一例として、本発明にかかる技術により、メモリの容量を削減できることを具体的に説明する。図12の例を参照して説明する。
【0184】
図12は、図10に示す半導体LSI500に対して、トップマクロ520とサブマクロ530を明記した図である。サブマクロ530は、シーケンサB1、シーケンサD1、・・・、Dn、データエンジンX1、・・・、Xnにより構成され、トップマクロ520は、シーケンサA1、シーケンサC1、・・・、Cm、データエンジンY1、・・・、Ymにより構成される。MA1、MB1、MC1、・・・、MCm、MD1、・・・、MDmは、それぞれのシーケンサにおいて、パラメータを格納するメモリである。
【0185】
例えば、サブマクロ530の各データエンジンX1、・・・、Xnは、シーケンサD1のメモリMD1、・・・、シーケンサDnのメモリMDnに格納されたパラメータをそれぞれ必要とすると共に、シーケンサB1のメモリMB1に格納されたパラメータも必要とする。データエンジンX1、・・・、XnがシーケンサB1のメモリMB1にアクセスできない場合には、これらの各データエンジンのメモリにも、シーケンサB1のメモリMB1に格納されたパラメータを格納する必要がある。本発明の技術により、各シーケンサがメモリコントローラを備え、かつインタフェース部の仕様が同一であるため、データエンジンX1、・・・、XnがシーケンサB1のメモリMB1にアクセスできる。従って、これらのデータエンジンがシーケンサB1のメモリMB1からパラメータを取得することができるため、当該パラメータを各データエンジンに格納する必要がなく、データエンジンのメモリ容量を削減することができる。
【0186】
トップマクロ520の各データエンジンについても同様である。例えば、データエンジンY1、・・・、Ymは、シーケンサC1のメモリMC1、・・・、シーケンサCmのメモリMCmに格納されたパラメータをそれぞれ必要とすると共に、シーケンサB1のメモリMB1に格納されたパラメータと、シーケンサA1のメモリMA1に格納されたパラメータも必要とする。この場合、本発明の技術により、データエンジンY1、・・・、YmがシーケンサA1のメモリMA1とシーケンサB1のメモリMB1にアクセスできるので、これらのデータエンジンがシーケンサA1とシーケンサB1のメモリからパラメータを取得することができる。従って、当該パラメータを各データエンジンに格納する必要がなく、データエンジンのメモリ容量を削減することができる。
<第4の実施の形態>
【0187】
半導体LSIの電力消費の制御を細かく行う点について、様々なバリエーションが考えられる。例えば、半導体LSIの機能ブロック毎に、シーケンサの階層数を増減することにより、半導体LSIの機能ブロック毎に異なる細かさで電力消費の制御ができる。図13を参照して一例を説明する。
【0188】
図13に示す例の半導体LSI600は、4つのドメイン(左上ドメイン610、右上ドメイン620、左下ドメイン630、右下ドメイン640)に大きく分けられている。左上ドメイン610は、さらに4つのドメイン(左上ドメイン611、右上ドメイン612、左下ドメイン613、右下ドメイン614)に分けられている。また、右上ドメイン612は、さらに上下左右の4つのドメインに分けられている。
【0189】
半導体LSI600において、最も上位のシーケンサはシーケンサK1である。シーケンサK1の直下に、左上ドメイン610、右上ドメイン620、左下ドメイン630、右下ドメイン640のシーケンス制御をそれぞれ行う4つのシーケンサ(シーケンサL1、シーケンサL2、シーケンサL3、シーケンサL4)が並列に接続されている。シーケンサL1は、左上ドメイン610における最も上位のシーケンサであり、その直下に、右上ドメイン612における最も上位のシーケンサ(シーケンサM1)が接続されている。シーケンサM1の直下に、右上ドメイン612の上下左右の4つのドメインをそれぞれ制御する4つのシーケンサ(シーケンサN1、シーケンサN2、シーケンサN3、シーケンサN4が並列に接続されている。
【0190】
なお、半導体LSI600は、シーケンサK1は、直上段のホストCPUが接続されており、シーケンサL2、L3、L4、N1、N2、N3、N4は、自身の直下段のデータエンジンが接続されているが、分かりやすいように、図13では示していない。
【0191】
この半導体LSI600では、本発明の技術を適用することにより、ドメイン毎にクロックと電源の供給を制御可能である。図示の例では、右上ドメイン620、左下ドメイン630、右下ドメイン640は、クロックと電源が遮断された「電源OFF」状態である。左上ドメイン610では、左上ドメイン611、左下ドメイン613、右下ドメイン614は、クロックと電源が供給されているアクティブ状態であり、右上ドメイン612では、シーケンサN1が制御する左上のドメインを除き、他の3つのドメインは、電源が供給されているが、クロックの供給が遮断されているスリープ状態である。なお、シーケンサN1が制御する左上のドメインは、アクティブ状態である。
【0192】
本発明にかかる技術による、シーケンサの階層の細分化の容易性は、図13に示すような細かな電源消費の制御を実現する。
【0193】
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、上述した各実施の形態に対してさまざまな変更、増減を行ってもよい。これらの変更、増減が行われた変形例も本発明の範囲にあることは当業者に理解されるところである。
【0194】
例えば、図5に示す第2の実施の形態の半導体LSI300において、各シーケンサとデータエンジンのメモリが、上段によりパラメータを設定される第1のメモリと、第1のメモリからコピーしたパラメータを格納してシーケンサまたはデータエンジンの処理に供する構成を有する。そのため、半導体LSI300におけるホストCPU310またはシーケンサは、下段のシーケンサまたはデータエンジン390のループ処理中に、該下段のシーケンサまたはデータエンジン390の第1のメモリ395Aに、変更されたパラメータを設定することができる。この場合、各シーケンサとデータエンジンにおいて、変更されたパラメータを第2のメモリへの反映は、1クロックででき、高速である。
【0195】
各シーケンサとデータエンジンのメモリを第1のメモリと第2のメモリに分けることをせずに、該シーケンサまたはデータエンジンのループ処理中に、上段(ホストCPU390またはシーケンサ)は、変更されたパラメータを設定することもできる。この場合、例えば、ホストCPU390とシーケンサは、下段に対してパラメータを設定する際に、該下段がループ処理中であれば、該下段に対して設定すべきパラメータを、自身のメモリに一時的に保持しておく。そして、下段のループ処理の完了時に、一時的に保存しておいたパラメータを該下段のメモリに転送する。
【0196】
このような構成によれば、変更されたパラメータを、下段が参照できるように反映するタイミングは、複数のサイクルを必要とするが、下段のメモリ容量を削減することができ、パラメータの変更の反映が低速でも良い場合には、有利である。
【0197】
なお、上述した各実施の形態において、各シーケンサは、クロック/電源制御インタフェース部を備え、自身、直下段へのクロック及び電源の供給を制御できるようになっている。クロックの供給のみまたは電源の供給のみを制御するように各シーケンサを構成してもよい。勿論、クロック/電源制御バスをクロック制御バスと電源制御バスとに別々に設けたり、第1のラインをクロックラインと電源ラインとに別々に設けたりするなどをしてもよい。さらに、クロック/電源制御部をクロック制御部と電源制御部とに分けるようにしてもよい。
【0198】
また、機能ブロックへのクロック供給の制御は、クロック供給のオン/オフに限られることがない。例えば、クロック供給を「通常モード」と「省電力モード」に分け、「通常モード」時には、200MHzのクロックを供給するが、「省電力モード」時には、クロック供給を遮断する(クロック供給のオフ)代わりに、供給するクロックの周波数を通常時の200MHzより低い100MHzや50MHzに下げるようにしてもよい。
【0199】
電源供給についても同様である。例えば、電源供給も「通常モード」と「省電力モード」に分け、「通常モード」時には、1.2vの電源を供給するが、「省電力モード」時には、電源供給を遮断する代わりに、供給する電源の電圧を通常時の1.2vより低い1.1vや1.0vなどに下げるようにしてもよい。
【符号の説明】
【0200】
10 故障状態モニタリング装置 11 CPU
12 シーケンサ 13 入力装置
14 記憶装置 15 ディスプレイ
16 キーボード 17 マウス
31 符号化LSI 32 全体制御シーケンサ
33 システムバスI/F 34 画像バスI/F
35 ラインメモリ部 36 変化点検出&モード判定処理部
37 符号生成部 38 符号パック部
39 符号出力FIFO 40 符号化演算部
41 画像データ入力装置 42 制御MPU
100 半導体LSI 110 ホストCPU
111 第1のマスタインタフェース部 112 第2のマスタインタフェース部
113 クロック/電源制御インタフェース部 115 クロック/電源制御バス
119 インタフェース部 121 メモリバス
122 制御バス 123 第1のライン
124 第2のライン 125 クロック/電源制御バス
130 シーケンサ 131 メモリ
132 メモリコントローラ 133 シーケンスコントローラ
134 ループカウンタ 141 第1のスレーブインタフェース部
142 第2のスレーブインタフェース部 143 第1の入力インタフェース部
144 第1のマスタインタフェース部 145 第2のマスタインタフェース部
146 クロック/電源制御インタフェース部 147 第2の入力インタフェース部
149 インタフェース部 151 メモリバス
152 制御バス 153 第1のライン
154 第2のライン 155 クロック/電源制御バス
160 シーケンサ 161 メモリ
162 メモリコントローラ 163 シーケンスコントローラ
164 ループカウンタ 171 第1のスレーブインタフェース部
172 第2のスレーブインタフェース部 173 第1の入力インタフェース部
174 第1のマスタインタフェース部 175 第2のマスタインタフェース部
176 クロック/電源制御インタフェース部 177 第2の入力インタフェース部
179 インタフェース部 181 メモリバス
182 制御バス 183 第1のライン
184 第2のライン 190 データエンジン
191 第1のスレーブインタフェース部 192 第2のスレーブインタフェース部
193 第1の入力インタフェース部 194 第2の入力インタフェース部
195 メモリ 199 インタフェース部
200 クロック/電源制御部 300 半導体LSI
310 ホストCPU 311 第1のマスタインタフェース部
312 第2のマスタインタフェース部
313 クロック/電源制御インタフェース部
330 シーケンサ 331 メモリ
331A 第1のメモリ 331B 第2のメモリ
332 メモリコントローラ 333 シーケンスコントローラ
334 ループカウンタ 341 第1のスレーブインタフェース部
342 第2のスレーブインタフェース部 343 第1の入力インタフェース部
344 第1のマスタインタフェース部 345 第2のマスタインタフェース部
346 クロック/電源制御インタフェース部 347 第2の入力インタフェース部
360 シーケンサ 361 メモリ
361A 第1のメモリ 361B 第2のメモリ
362 メモリコントローラ 363 シーケンスコントローラ
364 ループカウンタ 371 第1のスレーブインタフェース部
372 第2のスレーブインタフェース部 373 第1の入力インタフェース部
374 第1のマスタインタフェース部 375 第2のマスタインタフェース部
376 クロック/電源制御インタフェース部 377 第2の入力インタフェース部
390 データエンジン 391 第1のスレーブインタフェース部
392 第2のスレーブインタフェース部 393 第1の入力インタフェース部
394 第2の入力インタフェース部 395 メモリ
395A 第1のメモリ 395B 第2のメモリ
396 第1のマスタインタフェース部 400 クロック/電源制御部
500 半導体LSI 510 クロック/電源制御部
520 トップマクロ 530 サブマクロ
600 半導体LSI 610 左上ドメイン
611 左上ドメイン 612 右上ドメイン
613 左下ドメイン 614 右下ドメイン
620 右上ドメイン 630 左下ドメイン
640 右下ドメイン
【技術分野】
【0001】
本発明は、半導体集積回路、具体的には、複数のシーケンサを備える半導体集積回路に関する。
【背景技術】
【0002】
データが継続的に入力される動画像処理装置や通信装置などに備えられた、入力データに対して所定の処理を順次行う半導体集積回路に、シーケンサが多く用いられており、これらの半導体集積回路に対して、種々の視点からの提案がなされている。
【0003】
例えば、特許文献1には、2値画像信号符号化LSI(半導体集積回路)の高速化やコスト効果を実現するために、制御ブロックをライン周期で制御する全体制御ブロックと符号語単位の制御に分割し、符号語単位のシーケンス制御を符号化演算ブロックに組み込んだ技術が開示されている。図14を参照して説明する。
【0004】
図14は、特許文献1における図1に対して各機能ブロックの符号を変更したものである。図14に示すように、符号化LSI31は、制御MPU42と接続するシステムバスI/F33、システムバスI/F33を介して制御MPU42と接続される全体制御シーケンサ32、画像バスI/F34、ラインメモリ部35、符号化演算部40を備える。符号化演算部40は、変化点検出&モード判定処理部36、符号生成部37、符号パック部38、符号出力FIFO39を有し、これらはパイプライン処理を行う。
【0005】
画像データは、画像データ入力装置41から画像バスI/F34を介してラインメモリ部35に入力され、さらに、ラインメモリ部35から符号化演算部40の変化点検出&モード判定処理部36に出力され、変化点検出&モード判定処理部36、符号生成部37、符号パック部38、符号出力FIFO39の処理を経て符号化バスへ出力される。
【0006】
符号化演算部40に含まれる各機能ブロックは、該機能ブロックが行う処理を制御するブロックシーケンサ(図示せず)を有し、これらのブロックシーケンサは、全体制御シーケンサ32によって制御される。なお、全体制御シーケンサ32は、主に各ブロックシーケンサの処理のスタート/ストップの制御を行い、ブロックシーケンサは、その機能ブロックが行う処理に特化した制御を行う。
【0007】
特許文献2には、揚運炭設備に備えられたシーケンサの故障状態をモニタリングする装置が開示されている。図15を参照してこの装置を説明する。
【0008】
図15は、特許文献2における図1である。図示の故障状態モニタリング装置10は、モニタリング制御装置を構成するCPU11と、該CPU11に対する2つの入力装置13を有する。2つの入力装置13は、信号伝送ユニットで構成され、2つの揚運炭ラインA、Bそれぞれのシーケンサ12からシーケンサ接点のオン・オフ信号をCPU11の記憶装置14に入力する。
【0009】
この装置で、記憶装置14にシーケンサ12の接点のオン・オフ信号を故障原因に対応して入力すると共に、階層化して記憶させておき、故障原因を含む階層とその上流側の階層をディスプレイ15で故障と表示させ、この表示に基づき、マウス17で上層から下層に向かって展開することを繰り返して故障原因の調整ができるようになり、シーケンサプログラムを解読することなく、簡単に故障原因が分かると開示されている。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開平6−253157号公報
【特許文献2】特平10−198421号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
近年、動画像処理装置や通信装置などに対する高速化の要求が高まる一方であり、これらの装置に使用されるシステムLSIも、並列処理数が増加し、回路規模が大きくなる。また、システムLSIの設計に当たっては、用途、顧客のニーズ、市場状況などの影響を受けて、性能向上のために、機能ブロックの新規追加、機能ブロックの並列処理数の増加、機能ブロックの制御方法の細分化などが要求され、様々に変更される実態がある。
【0012】
このような背景において、上述した各変更の容易性を実現できる制御構成が求められている。
【0013】
図14に示すような符号化LSI31では、全体制御シーケンサ32と、符号化演算部40の各ブロックシーケンサとは、別々の仕様を有するため、新しい機能の追加や制御の変更が困難である。
【0014】
図14に示すような符号化LSI31では、全体制御シーケンサ32と、符号化演算部40の各ブロックシーケンサとは、入出力する信号の種類が異なるなど、別々のインタフェース仕様を有するため、新しい機能の追加や制御の変更が困難である。例えば、符号化演算部40の各ブロックシーケンサは、自身の属する機能ブロックが行う処理に特化した制御を行うために、それぞれ異なる制御信号が必要であると考えられる。この場合、なんらかの新しい機能をその機能ブロックに行わせようとして回路等の追加を行うと、当該ブロックシーケンサの制御の動作まで変更しなければならず、機能ブロック全体を大きく設定変更する必要がある。
【課題を解決するための手段】
【0015】
本発明の一つの態様は、継続的に入力されるデータに対して所定の処理を順次行う半導体集積回路である。この半導体集積回路は、ホストCPUと、前記所定の処理を実行するデータエンジンと、複数のシーケンサを備える。
【0016】
ホストCPUとデータエンジンと複数のシーケンサは、ホストCPUとデータエンジンを夫々最上段と最下段にして階層的に接続されている。
【0017】
各シーケンサは、自身の実行用のパラメータを格納するメモリと、メモリコントローラと、ループカウンタと、シーケンスコントローラと、該シーケンサの外部との信号の送受信を行うインタフェース部とを備える。
【0018】
なお、「パラメータ」とは、当該シーケンサの実行に用いられる種々のデータを意味し、例えば、該シーケンサが実行するプログラムのコード、シーケンス制御を行う上で必要な値などを含むことができる。なお、「シーケンス制御を行う上で必要な値」は、例えば、画像処理の場合における画像サイズや、画素の行数、列数などである。
【0019】
データエンジンは、自身の実行用のパラメータを格納するメモリと、該データエンジンの外部との信号の送受信を行うインタフェース部を備える。ここの「パラメータ」も、データエンジンの実行に用いられる種々のデータを意味する。
【0020】
ホストCPUは、該ホストCPUの外部との信号の送受信を行うインタフェース部を備える。
【0021】
これらの複数のシーケンサのインタフェース部は、同一の仕様を有し、それぞれが、第1のマスタインタフェース部と、第2のマスタインタフェース部と、第1のスレーブインタフェース部と、第2のスレーブインタフェース部を有する。
【0022】
各シーケンサのインタフェース部が「同一の仕様を有する」とは、これらのインタフェース部は、同一の構成を有し、それらの上を流れる信号のビット幅や、各ビットの意義が同一であることを意味する。
【0023】
シーケンサの第1のマスタインタフェース部は、該シーケンサの外部の機能ブロックにおけるメモリにアクセスするためのインタフェースである。
【0024】
シーケンサの第2のマスタインタフェース部は、該シーケンサの外部の機能ブロックの実行を制御するためのインタフェースである。なお、「実行を制御」することは、例えば実行の開始と停止などの制御である。
【0025】
シーケンサの第1のスレーブインタフェース部は、該シーケンサの外部の機能ブロックにより該シーケンサのメモリをアクセスされるためのインタフェースである。
【0026】
シーケンサの第2のスレーブインタフェース部は、該シーケンサの外部の機能ブロックにより該シーケンサの実行を制御されるためのインタフェースである。
【0027】
ホストCPUのインタフェース部は、シーケンサの第1のマスタインタフェース部と第2のマスタインタフェース部と夫々同一の仕様を有する第1のマスタインタフェース部と第2のマスタインタフェース部を有する。ホストCPUの第1のマスタインタフェース部は、ホストCPUが、自身の外部の機能ブロックにおけるメモリにアクセスするためのインタフェースであり、ホストCPUの第2のマスタインタフェース部は、ホストCPUが、自身の外部の機能ブロックの実行を制御するためのインタフェースである。
【0028】
データエンジンのインタフェース部は、シーケンサの第1のスレーブインタフェース部と第2のスレーブインタフェース部と夫々同一の仕様を有する第1のスレーブインタフェース部と第2のスレーブインタフェース部を有する。データエンジンの第1のスレーブインタフェース部は、データエンジンが、データエンジンの外部の機能ブロックによりメモリをアクセスされるためのインタフェースであり、データエンジンの第2のスレーブインタフェース部は、データエンジンが、データエンジンの外部の機能ブロックにより実行を制御されるためのインタフェースである。
【0029】
ホストCPUとデータエンジンと複数のシーケンサは、上段が、自身の第1のマスタインタフェース部と、1つまたは複数の下段の第1のスレーブインタフェース部とを介して、該1つまたは複数の下段のメモリにアクセスするように、さらに、上段が、自身の第2のマスタインタフェース部と、直下段の第2のスレーブインタフェース部とを介して、該直下段の実行を制御するように接続されている。
【0030】
なお、「上段」とは、注目する機能ブロックの直上の段(ホストCPUまたはシーケンサ)に限らず、該機能ブロックより上の階層に設けられたホストCPUとシーケンサのいずれも含む。
【0031】
また、「下段」は、注目する機能ブロックの直下の段(シーケンサまたはデータエンジン)に限らず、該機能ブロックより下の階層に設けられたシーケンサとデータエンジンのいずれも含む。
【0032】
なお、上記態様の半導体集積回路を方法やシステムなどに置き換えて表現したものや、該半導体集積回路を備えた動画像処理装置や通信装置なども、本発明の態様としては有効である。
【発明の効果】
【0033】
本発明にかかる技術によれば、シーケンサを用いて制御を行う装置に対して性能の追加などの変更が容易であり、柔軟なLSI設計が可能である。
【図面の簡単な説明】
【0034】
【図1】本発明の第1の実施の形態にかかる半導体LSIを示す図である。
【図2】図1に示す半導体LSIに対してインタフェース部を詳細に示した図である。
【図3】図1と図2に示す半導体LSI100におけるホストCPUが出力するクロック/電源制御信号の例を示す図である。
【図4】図1と図2に示す半導体LSIにおける各シーケンサが出力するクロック/電源制御信号の例を示す図である。
【図5】本発明の第2の実施の形態にかかる半導体LSIを示す図である。
【図6】図5における半導体LSIの各シーケンサとデータエンジンのメモリを示す図である。
【図7】フレームの画素構成例を示す図である。
【図8】図5に示す半導体LSIにおけるシーケンサの動作例を説明するための図である。
【図9】図5に示す半導体LSIの全体の動作例を説明するための図である。
【図10】本発明の第3の実施の形態にかかる半導体LSIを示す図である。
【図11】図10に示す半導体LSIの各機能ブロックのクロックと電源の供給状況の例を示す図である。
【図12】シーケンサまたはデータエンジンが上段のシーケンサに格納されたパラメータを共有する例を説明するための図である。
【図13】本発明の第4の実施の形態にかかる半導体LSIを示す図である。
【図14】従来技術を説明するための図である(その1)。
【図15】従来技術を説明するための図である(その2)。
【発明を実施するための形態】
【0035】
以下、図面を参照して本発明の実施の形態について説明する。説明の明確化のため、以下の記載及び図面は、本発明と関連する部分を除き、適宜、省略、及び簡略化がなされている。
<第1の実施の形態>
【0036】
図1は、本発明の第1の実施の形態にかかる半導体集積回路(以下半導体LSIという)100を示す。半導体LSI100は、例えば動画像処理装置に設けられ、継続的に入力されるフレームのデータ(図中入力データ)に対して所定の処理を順次行って出力するものであり、ホストCPU110、シーケンサ130、シーケンサ160、データエンジン190、クロック/電源制御部200を備える。上記所定の処理は、例えば入力された動画像の撮影モードに応じた画質改善処理である。また、画質改善処理は、例えば、ノイズ除去処理である。
【0037】
ホストCPU110、シーケンサ130、シーケンサ160、データエンジン190は、ホストCPU110とデータエンジン190を夫々最上段と最下段にして階層的に接続されている。図示の例の場合、シーケンサの数が2つであり、シーケンサ130は上位シーケンサとなり、シーケンサ160は下位シーケンサとなる。
【0038】
データエンジン190は、上記所定の処理を実行するものである。
クロック/電源制御部200は、クロックCLKが入力され、シーケンサ130、シーケンサ160、データエンジン190へのクロックの供給を制御すると共に、これらの機能ブロックへの電源供給も制御する。なお、この制御は、ホストCPU110、シーケンサ130、シーケンサ160からの後述するクロック/電源制御信号に従って行われる。
【0039】
以下の説明において、電源が供給される一方、クロックの供給が遮断されている機能ブロックの状態を「スリープ」という。また、電源の供給が遮断されている機能ブロックの状態を「電源OFF」という。また、クロックと電源の両方が供給されている機能ブロックの状態を「アクティブ」という。
【0040】
ホストCPU110は、外部との送受信を行うインタフェース部119を備える。
【0041】
シーケンサ130は、自身の実行用のパラメータを格納するメモリ131、メモリコントローラ132、シーケンスコントローラ133、ループカウンタ134、外部との送受信を行うインタフェース部149を備える。
【0042】
シーケンサ160は、自身の実行用のパラメータを格納するメモリ161、メモリコントローラ162、シーケンスコントローラ163、ループカウンタ164、外部との送受信を行うインタフェース部179を備える。
【0043】
データエンジン190は、自身の実行用のパラメータを格納するメモリ195、外部との送受信を行うインタフェース部199を備える。
【0044】
シーケンサ130とシーケンサ160のインタフェース部は、同一の仕様を有する。すなわち、インタフェース部149とインタフェース部179は、同一の構成を有し、それらを流れる信号のビット幅や、各ビットの意義が同一である。
【0045】
ホストCPU110のインタフェース部119とシーケンサ130のインタフェース部149との間に、メモリバス121と制御バス122が接続されている。
【0046】
また、ホストCPU110のインタフェース部119は、クロック/電源制御バス115によりクロック/電源制御部200と接続されており、クロック/電源制御バス115を介して、直下段のシーケンサ130に対するクロックと電源の供給を制御するクロック/電源制御信号をクロック/電源制御部200に送信する。
【0047】
また、シーケンサ130のインタフェース部149は、クロック/電源ライン123とクロック/電源制御バス125によりクロック/電源制御部200と接続されており、クロック/電源ライン123を介して、クロック/電源制御部200からのクロックと電源の供給を受けてシーケンサ130に供給し、クロック/電源制御バス125を介して、シーケンサ130と直下段のシーケンサ160に対するクロックと電源の供給を制御するクロック/電源制御信号をクロック/電源制御部200に送信する。
【0048】
シーケンサ130のインタフェース部149は、さらに、クロック/電源ライン123とは別のライン124と接続されており、該ライン124を介して、シーケンサ130がスリープ状態にあるときのクロック供給を受けてシーケンサ130に供給する。
【0049】
分かりやすいように、以下、「クロック/電源ライン123」を「第1のライン123」といい、「ライン124」を「第2のライン124」という。
【0050】
シーケンサ130のインタフェース部149とシーケンサ160のインタフェース部179との間に、メモリバス151と制御バス152が接続されている。
【0051】
また、シーケンサ160のインタフェース部179は、クロック/電源ライン153とクロック/電源制御バス155によりクロック/電源制御部200と接続されており、クロック/電源ライン153を介して、クロック/電源制御部200からのクロックと電源の供給を受けてシーケンサ160に供給し、クロック/電源制御バス155を介して、シーケンサ160と直下段のデータエンジン190に対するクロックと電源の供給を制御するクロック/電源制御信号をクロック/電源制御部200に送信する。
【0052】
シーケンサ160のインタフェース部179は、さらに、クロック/電源ライン153とは別のライン154と接続されており、該ライン154を介して、シーケンサ160がスリープ状態にあるときのクロック供給を受けてシーケンサ160に供給する。
【0053】
分かりやすいように、以下、「クロック/電源ライン153」を「第1のライン153」といい、「ライン154」を「第2のライン154」という。
【0054】
シーケンサ160のインタフェース部179とデータエンジン190のインタフェース部199との間に、メモリバス181と制御バス182が接続されている。
【0055】
また、データエンジン190のインタフェース部199は、クロック/電源ライン183によりクロック/電源制御部200と接続されており、クロック/電源ライン183を介して、クロック/電源制御部200からのクロックと電源の供給を受けてデータエンジン190に供給する。
【0056】
データエンジン190のインタフェース部199は、さらに、クロック/電源ライン183とは別のライン184と接続されており、該ライン184を介して、データエンジン190がスリープ状態にあるときのクロック供給を受けてデータエンジン190に供給する。
【0057】
分かりやすいように、以下、「クロック/電源ライン183」を「第1のライン183」といい、「ライン184」を「第2のライン184」という。
【0058】
図2は、図1に対して、各機能ブロックのインタフェース部をより詳細に示した図である。図2を参照して半導体LSI100をより詳しく説明する。
【0059】
ホストCPU110のインタフェース部119は、第1のマスタインタフェース部111、第2のマスタインタフェース部112、クロック/電源制御インタフェース部113を有する。
【0060】
シーケンサ130のインタフェース部149は、第1のスレーブインタフェース部141、第2のスレーブインタフェース部142、第1の入力インタフェース部143、第1のマスタインタフェース部144、第2のマスタインタフェース部145、クロック/電源制御インタフェース部146、第2の入力インタフェース部147を有する。
【0061】
シーケンサ160のインタフェース部179は、第1のスレーブインタフェース部171、第2のスレーブインタフェース部172、第1の入力インタフェース部173、第1のマスタインタフェース部174、第2のマスタインタフェース部175、クロック/電源制御インタフェース部176、第2の入力インタフェース部177を有する。
【0062】
データエンジン190のインタフェース部199は、第1のスレーブインタフェース部191、第2のスレーブインタフェース部192、第1の入力インタフェース部193、第2の入力インタフェース部194を有する。
【0063】
各機能ブロックの第1のマスタインタフェース部は、該機能ブロックがマスタ側として、外部の機能ブロックにおけるメモリにアクセスするためのインタフェースである。また、各機能ブロックの第1のマスタインタフェース部、すなわちホストCPU110の第1のマスタインタフェース部111、シーケンサ130の第1のマスタインタフェース部144、シーケンサ160の第1のマスタインタフェース部174は、同一の仕様を有する。
【0064】
各機能ブロックの第2のマスタインタフェース部は、該機能ブロックがマスタ側として、外部の機能ブロックの実行を制御するためのインタフェースである。また、各機能ブロックの第2のマスタインタフェース部、すなわちホストCPU110の第2のマスタインタフェース部112、シーケンサ130の第2のマスタインタフェース部145、シーケンサ160の第2のマスタインタフェース部175も、同一の仕様を有する。
【0065】
各機能ブロックの第1のスレーブインタフェース部は、該機能ブロックが、スレーブ側として、外部の機能ブロックによりメモリをアクセスされるためのインタフェースである。また、各機能ブロックの第1のスレーブインタフェース部、すなわちシーケンサ130の第1のスレーブインタフェース部141、シーケンサ160の第1のスレーブインタフェース部171、データエンジン190の第1のスレーブインタフェース部191は、同一の、第1のマスタインタフェース部に対応した仕様を有する。
【0066】
各機能ブロックの第2のスレーブインタフェース部は、該機能ブロックがスレーブ側として、外部の機能ブロックにより実行を制御されるためのインタフェースである。また、各機能ブロックの第2のスレーブインタフェース部、すなわちシーケンサ130の第2のスレーブインタフェース部142、シーケンサ160の第2のスレーブインタフェース部172、データエンジン190の第2のスレーブインタフェース部192は、同一の、第2のマスタインタフェース部に対応した仕様を有する。
【0067】
本実施の形態において、ホストCPU110、シーケンサ130、シーケンサ160、データエンジン190は、上段(ホストCPU110またはシーケンサ)が、自身の第1のマスタインタフェース部と、直下段(シーケンサまたはデータエンジン190)の第1のスレーブインタフェース部とを介して、該直下段のメモリにアクセスし、かつ、上段が、自身の第2のマスタインタフェース部と、直下段の第2のスレーブインタフェース部とを介して、該直下段の実行を制御するように接続されている。
【0068】
図2に示すように、ホストCPU110の第1のマスタインタフェース部111と、ホストCPU110の直下段のシーケンサ130の第1のスレーブインタフェース部141は、メモリバス121により接続されており、第1のスレーブインタフェース部141は、さらにメモリコントローラ132と接続されている。従って、ホストCPU110は、第1のマスタインタフェース部111、メモリバス121、第1のスレーブインタフェース部141、メモリコントローラ132を介して、シーケンサ130のメモリ131にアクセスできる。
【0069】
同様に、シーケンサ130は、第1のマスタインタフェース部144、メモリバス151、第1のスレーブインタフェース部171、メモリコントローラ162を介して、シーケンサ160のメモリ161にアクセスできる。
【0070】
また、シーケンサ160も、第1のマスタインタフェース部174、メモリバス181、第1のスレーブインタフェース部191、データエンジン190においてメモリコントローラと同様の機能を果たす機能ブロック(図示せず)を介して、データエンジン190のメモリ195にアクセスできる。
【0071】
また、ホストCPU110の第2のマスタインタフェース部112と、シーケンサ130の第2のスレーブインタフェース部142は、制御バス122により接続されており、第2のスレーブインタフェース部142は、さらにシーケンスコントローラ133と接続されている。従って、ホストCPU110は、第2のマスタインタフェース部112、制御バス122、第2のスレーブインタフェース部142を介してシーケンスコントローラ133を制御することにより、シーケンサ130の実行の制御を行うことができる。
【0072】
同様に、シーケンサ130は、第2のマスタインタフェース部145、制御バス152、第2のスレーブインタフェース部172を介して、シーケンサ160の実行の制御を行うことができる。
【0073】
また、シーケンサ160も、第2のマスタインタフェース部175、制御バス182、第2のスレーブインタフェース部192を介して、データエンジン190の実行の制御を行うことができる。
【0074】
本実施の形態において、ホストCPU110、シーケンサ130、シーケンサ160は、直下段に対してパラメータを設定する場合と、直下段の実行を制御するために該直下段のメモリを参照する場合に、直下段のメモリにアクセスする。
【0075】
シーケンサ130、シーケンサ160、データエンジン190は、自身のメモリに設定されたパラメータを参照しながら処理を実行する。この処理の進行により、メモリに格納されたパラメータの状態が変化する。
【0076】
ホストCPU110、シーケンサ130、シーケンサ160は、直下段のメモリにアクセスして該直下段に対してパラメータを設定する。その後、直下段のメモリにアクセスしてパラメータの状態を参照し、パラメータの状態に応じて、直下段のその後の実行の制御を行う。
【0077】
ホストCPU110のクロック/電源制御インタフェース部113は、ホストCPU110が、直下段(ここではシーケンサ130)へのクロック及び電源の供給を制御するクロック/電源制御信号をクロック/電源制御部200に送信するためのものであり、クロック/電源制御バス115を介してクロック/電源制御部200に接続される。
【0078】
シーケンサ130の第1の入力インタフェース部143は、クロック/電源制御部200からのクロック及び電源の供給を受けてシーケンサ130に供給するクロック/電源入力インタフェースであり、第1のライン123を介してクロック/電源制御部200と接続される。
【0079】
シーケンサ130のクロック/電源制御インタフェース部146は、シーケンサ130が自身または直下段(シーケンサ160)へのクロック及び電源の供給を制御するクロック/電源制御信号をクロック/電源制御部200に送信するためのものであり、クロック/電源制御バス125を介してクロック/電源制御部200に接続される。
【0080】
シーケンサ130の第2の入力インタフェース部147は、シーケンサ130がスリープ状態にあるときのクロック供給を第2のライン124から受けてシーケンサ130に供給するためのインタフェースである。
【0081】
シーケンサ160の第1の入力インタフェース部173、クロック/電源制御インタフェース部176、第2の入力インタフェース部177は、シーケンサ130の第1の入力インタフェース部143、クロック/電源制御インタフェース部146、第2の入力インタフェース部147に夫々対応した機能を有するため、ここで詳細な説明を省略する。
【0082】
データエンジン190の第1の入力インタフェース部193は、クロック/電源制御部200からのクロック及び電源の供給を受けてデータエンジン190に供給するクロック/電源入力インタフェースであり、第1のライン183を介してクロック/電源制御部200と接続される。
【0083】
データエンジン190の第2の入力インタフェース部194は、データエンジン190がスリープ状態にあるときのクロック供給を第2のライン184から受けてデータエンジン190に供給するためのインタフェースである。
【0084】
ここで、ホストCPU110がクロック/電源制御部200に出力するクロック/電源制御信号、及びシーケンサ130とシーケンサ160がクロック/電源制御部200に出力するクロック/電源制御信号の例を用いて、シーケンサ130、シーケンサ160、データエンジン190へのクロック供給と電源供給の制御を説明する。
【0085】
図3は、ホストCPU110がクロック/電源制御部200に出力するクロック/電源制御信号、すなわちクロック/電源制御バス115を流れる信号の例を示す。
【0086】
図3の例に示すように、ホストCPU110が出力するクロック/制御信号は、2ビットのクロック/電源制御部分により構成される。その片方の1ビット(例えば下位ビット)は、ホストCPU110の直下段(シーケンサ130)へのクロック供給を制御するためのクロック制御ビットであり、他方の1ビットは、シーケンサ130への電源供給を制御するための電源制御ビットである。
【0087】
図示の例では、クロック制御ビットが「0」であれば、シーケンサ130へのクロック供給を遮断することを意味する。なお、シーケンサ130へのクロック供給が既に遮断されている状態では、引き続き、シーケンサ130へのクロック供給を遮断することを意味する。また、クロック制御ビットが「1」であれば、シーケンサ130へのクロック供給を行うことを意味する。なお、シーケンサ130へのクロック供給が既に行われている状態では、引き続き、シーケンサ130へのクロック供給を行うことを意味する。
【0088】
同様に、電源制御ビットが「0」であれば、シーケンサ130への電源供給を遮断することを意味する。なお、シーケンサ130への電源供給が既に遮断されている状態では、引き続き、シーケンサ130への電源供給を遮断することを意味する。また、電源制御ビットが「1」であれば、シーケンサ130への電源供給を行うことを意味する。なお、シーケンサ130への電源供給が既に行われている状態では、引き続き、シーケンサ130への電源供給を行うことを意味する。
【0089】
例えば、シーケンサ130がクロック/電源制御部200からクロックと電源のいずれも供給されている状態で、ホストCPU110がからクロック/電源制御部200に「10」となるクロック/制御信号が出力されると、シーケンサ130への電源供給が継続されるが、シーケンサ130へのクロック供給が遮断される。
【0090】
図4は、シーケンサ130とシーケンサ160がクロック/電源制御部200に出力するクロック/電源制御信号、すなわちクロック/電源制御バス125とクロック/電源制御バス155を流れる信号の例を示す図である。
【0091】
図4の例に示すように、シーケンサ130とシーケンサ160が出力するクロック/電源制御信号は、1ビットの制御対象指示部分と、2ビットのクロック/電源制御部分とを有する。
【0092】
制御対象指示部分の1ビットは、該制御信号が、該制御信号を出力したシーケンサと、該シーケンサの直下段のうちのいずれのクロック/電源の供給を制御するものなのかを示す。例えば、制御対象指示部分の1ビットが「0」である場合、該制御信号が該シーケンサ自身のクロック/電源の供給を制御するものであることを示す。また、制御対象指示部分の1ビットが「1」である場合、該制御信号が該シーケンサの直下段のクロック/電源の供給を制御するものであることを示す。
【0093】
すなわち、シーケンサ130が出力するクロック/制御信号の場合、制御対象指示部分の1ビットは、シーケンサ130自身、シーケンサ160(直下段)のいずれかを示し、シーケンサ160が出力するクロック/制御信号の場合、制御対象指示部分の1ビットは、シーケンサ160自身、データエンジン190(直下段)のいずれかを示す。
【0094】
なお、シーケンサ130とシーケンサ160が出力するクロック/電源制御信号に含まれるクロック/電源制御部分は、その制御対象が、該クロック/電源制御信号に含まれる制御対象指示部分が示す機能ブロックである点を除き、ホストCPU110が出力クロック/電源制御信号(クロック/電源制御部分のみ)と同様であり、ここで詳細な説明を省略する。
【0095】
例えば、シーケンサ130とシーケンサ160がクロックと電源のいずれも供給されている状態で、シーケンサ130からクロック/電源制御部200に「110」となるクロック/制御信号が出力されると、シーケンサ130の直下段(シーケンサ160)への電源供給は継続されるが、シーケンサ160へのクロック供給は遮断される。また、同じ状態で、シーケンサ130からクロック/電源制御部200に「010」となるクロック/電源制御信号が出力されると、シーケンサ130自身への電源供給は継続されるが、シーケンサ130自身へのクロック供給が遮断される。
【0096】
同様に、シーケンサ160とデータエンジン190がクロックと電源のいずれも供給されている状態で、シーケンサ160からクロック/電源制御部200に「110」となるクロック/制御信号が出力されると、シーケンサ160の直下段(データエンジン190)への電源供給は継続されるが、データエンジン190へのクロック供給は遮断される。また、同じ状態で、シーケンサ160からクロック/電源制御部200に「010」となるクロック/電源制御信号が出力されると、シーケンサ160自身への電源供給は継続されるが、シーケンサ160自身へのクロック供給が遮断される。
【0097】
なお、シーケンサ130とシーケンサ160が出力するクロック/電源制御信号は、どの機能ブロックか、及び該機能ブロックへのクロック供給および電源供給を「行う」と「遮断する」のいずれかを示すことができれば、図4に示す構成に限られることがない。
【0098】
シーケンサ130は、スリープ状態においても動作する機能ブロック(図示せず)を有する。この機能ブロックは、シーケンスコントローラ133に設けられており、第2の入力インタフェース部147を介して第2のライン124からクロックが供給される。以下、この機能ブロックをスリープ制御ブロックと称する。なお、シーケンサ130は、スリープ状態において、そのループカウンタ134が、カウント値を保持する。
【0099】
同様に、シーケンサ160とデータエンジン190も、図示しないスリープ制御ブロックを有する。また、シーケンサ160も、スリープ状態において、そのループカウンタ164が、カウント値を保持する。
【0100】
シーケンサ130は、スリープ状態にあるときに、ホストCPU110が出力するクロック/電源制御信号、またはシーケンサ130自身が出力するクロック/電源制御信号によりスリープ状態を解除することができる。「スリープ状態を解除する」とは、クロックの供給を開始させることを意味する。
【0101】
シーケンサ130のスリープ状態の解除は、直上段(ホストCPU110)とシーケンサ130自身により行うことができる。シーケンサ130自身によるスリープ状態の解除は、シーケンサ130に備えられたスリープ制御ブロックにより行われる。例えば、シーケンサ130がシーケンサ160の実行を開始させた後、スリープ状態に入ったとする。シーケンサ160の実行が進み、シーケンサ130のスリープ状態を解除すべき所定のタイミングでシーケンサ130にトリガ信号を出力する。このトリガ信号は、例えば制御バス152を介してシーケンサ160のシーケンスコントローラ163からシーケンサ130のシーケンスコントローラ133に出力される。シーケンサ130のシーケンスコントローラ133における図示しないスリープ制御ブロックは、シーケンサ160からのトリガ信号を受信すると、シーケンサ130へのクロック供給を行うことを示すクロック/電源制御信号をクロック/電源制御部200に出力する。これにより、クロック/電源制御部200からシーケンサ130へのクロック供給が再開され、シーケンサ130のスリープ状態は解除される。
【0102】
なお、シーケンサ130の電源OFF状態の解除は、シーケンサ130自身ではできず、直上段(ホストCPU110)により行われる。
【0103】
同様に、シーケンサ160のスリープ状態の解除は、直上段(シーケンサ130)とシーケンサ160自身により行われることができる。シーケンサ160自身によるスリープ状態の解除も、シーケンサ160に備えられたスリープ制御ブロックにより行われる。この場合、シーケンサ160のスリープ制御ブロックは、例えば下段(データエンジン190)からのトリガ信号に応じて、シーケンサ160へのクロック供給を行うことを示すクロック/電源制御信号をクロック/電源制御部200に出力する。これにより、クロック/電源制御部200からシーケンサ160へのクロック供給が再開され、シーケンサ160のスリープ状態は解除される。
【0104】
なお、シーケンサ160の電源OFF状態の解除も、シーケンサ160自身ではできず、直上段(シーケンサ130)により行われる。
【0105】
本実施の形態の半導体LSI100において、各シーケンサは、自身の実行用のプログラムを含むパラメータを格納するメモリとメモリコントローラを備えると共に、各シーケンサのインタフェース部は、同一の仕様を有する。そのため、新しい機能の追加や、機能の変更などが容易である。
【0106】
例えば、各シーケンサがメモリとメモリコントローラを備えるため、上段により該シーケンサの実行用のプログラムコードを書き換えることができ、すなわち、プログラマブルなシーケンサを実現することができる。また、各シーケンサのインタフェース部が同一の仕様を有することから、プログラムコードを書き換える際に、各シーケンサの送受信する信号の仕様をインタフェース部の仕様に合わせることさえすれば、半導体LSI全体のシーケンサ制御の手法を変更せずに機能の変更ができる。
【0107】
また、例えば、新しい機能を追加するために、シーケンサ160と同じ層(シーケンサ130により制御される層)に別のシーケンサを設ける必要がある場合、シーケンサ130とシーケンサ160と同様のシーケンサをシーケンサ130に接続すれば、シーケンサ130は、シーケンサ160に加え、追加されたシーケンサに対しても同様の制御を行うことができる。
【0108】
また、各シーケンサがプログラマブルであると共に、各シーケンサのインタフェース部が同一の仕様を有することから、半導体LSIの機能を変更するためにシーケンサの階層数を増す必要がある場合にも、設計が簡単である。すなわち、本発明にかかる技術により、シーケンサの階層の細分化が容易である。勿論、シーケンサの階層数を減らす必要がある場合においても、同様である。
【0109】
本実施の形態の半導体LSI100において、ホストCPU110と各シーケンサは、直下段(いずれかのシーケンサまたはデータエンジン190)の実行を制御するために、自身の第1のマスタインタフェース部、直下段の第1のスレーブインタフェース部を介して、直下段のメモリにアクセスして該メモリに格納されたパラメータの状態を参照する。また、ホストCPU110と各シーケンサは、自身の第2のマスタインタフェース部と、直下段の第2のスレーブインタフェース部を介して、直下段の実行を制御する。すなわち、実行を制御するマスタ側の機能ブロック(ホストCPU110またはシーケンサ)と、実行を制御されるスレーブ側の機能ブロック(シーケンサまたはデータエンジン190)との間に、スレーブ側のメモリを参照するためのチャネル(参照チャネルという)と、スレーブ側の実行を制御するためのチャネル(制御チャネル)とが独立している。
【0110】
参照チャネルと制御チャネルが同一である場合に、スレーブ側のメモリの参照と、スレーブ側の実行の制御とが排他的に実行されるため、参照、または実行の制御を行う際に1サイクル以上の待ち状態が発生する。
【0111】
これに対して、本実施の形態の半導体LSI100において、参照チャネルと制御チャネルとが独立しているため、上述した待ち状態を回避し、高速化を図ることができる。
【0112】
また、本実施の形態の半導体LSI100において、各シーケンサは、自身、直下段のクロック及び電源の供給を制御し得る構成となっている。シーケンサ130とシーケンサ160を例にする。また、各シーケンサおよびデータエンジン190において、ループカウンタの前回のカウントアップから今回のカウントアップの間までの期間を、1ループという。ここで、シーケンサ130とシーケンサ160におけるループを夫々「上位ループ」と「下位ループ」という。
【0113】
シーケンサ130は、2つの上位ループの間では動作する必要がないので、1つの上位ループが開始されると自身へのクロック供給を遮断し、スリープ状態に入ることができる。そして、シーケンサ160は、該上位ループの下の各下位ループが完了すると、シーケンサ130にトリガ信号を送信することによりシーケンサ130にスリープ状態を解除させるので、次の上位ループが開始できる。このようにして、半導体LSI100の各機能ブロックのクロックや電源の供給をこまめに制御することができ、半導体LSI100の消費電力を効率良く抑制することができる。なお、消費電力をより細かく制御したければ、ホストCPUとデータエンジン間のシーケンサの段数を増やせばよい。これについては、後に第4の実施の形態を用いてさらに説明する。
<第2の実施の形態>
【0114】
図2は、本発明の第2の実施の形態にかかる半導体LSI300を示す。半導体LSI300も、例えば動画像処理装置に設けられ、継続的に入力されるフレームのデータ(入力データ)に対して所定の処理を順次行って出力するものであり、ホストCPU310、シーケンサ330、シーケンサ360、データエンジン390、クロック/電源制御部400を備える。上記所定の処理は、例えば入力された動画像の撮影モードに応じた画質改善処理である。また、画質改善処理は、例えば、ノイズ除去処理である。
【0115】
ホストCPU310、シーケンサ330、シーケンサ360、データエンジン390は、ホストCPU310とデータエンジン390を夫々最上段と最下段にして階層的に接続されている。
データエンジン390は、上記所定の処理を実行するものである。
【0116】
クロック/電源制御部400は、クロックCLKが入力され、シーケンサ330、シーケンサ360、データエンジン390へのクロックの供給を制御すると共に、これらの機能ブロックへの電源供給も制御する。なお、この制御は、ホストCPU310、シーケンサ330、シーケンサ360からのクロック/電源制御信号に従って行われる。
【0117】
ホストCPU310は、第1のマスタインタフェース部311、第2のマスタインタフェース部312、クロック/電源制御インタフェース部313を備える。
【0118】
シーケンサ330は、メモリ331、メモリコントローラ332、シーケンスコントローラ333、ループカウンタ334、第1のスレーブインタフェース部341、第2のスレーブインタフェース部342、第1の入力インタフェース部343、第1のマスタインタフェース部344、第2のマスタインタフェース部345、クロック/電源制御インタフェース部346、第2の入力インタフェース部347を備える。
【0119】
シーケンサ360は、メモリ361、メモリコントローラ362、シーケンスコントローラ363、ループカウンタ364、第1のスレーブインタフェース部371、第2のスレーブインタフェース部372、第1の入力インタフェース部373、第1のマスタインタフェース部374、第2のマスタインタフェース部375、クロック/電源制御インタフェース部376、第2の入力インタフェース部377を備える。
【0120】
データエンジン390は、メモリ395、第1のスレーブインタフェース部391、第2のスレーブインタフェース部392、第1の入力インタフェース部393、第2の入力インタフェース部394、第1のマスタインタフェース部396を備える。
【0121】
なお、図面の簡潔にために、図5において、メモリバスや制御バス、クロックと電源を供給するためのラインなどについて、符号を省略している。
【0122】
本実施の形態半導体LSI300は、以下に説明する点を除き、各機能ブロックの構成や、各機能ブロック間の接続関係などは、第2に示す半導体LSI100と同一である。そのため、半導体LSI300に対して、半導体LSI100と異なる点についてのみ説明する。
【0123】
半導体LSI100において、ホストCPU110と各シーケンサは、自身の直下段のメモリにのみアクセスするようになっている。本実施の形態の半導体LSI300において、ホストCPU110、シーケンサ330は、自身の直下段を含む全ての下段のメモリにアクセスできるように接続されている。
【0124】
具体的には、ホストCPU310の第1のマスタインタフェース部311は、シーケンサ330の第1のスレーブインタフェース部341に接続されていると共に、シーケンサ360の第1のスレーブインタフェース部371、データエンジン390の第1のスレーブインタフェース部391とも接続されている。そのため、ホストCPU310は、メモリ331、メモリ361、メモリ395のいずれにもアクセスでき、シーケンサ330、シーケンサ360、データエンジン390のいずれに対してもパラメータを設定することができる。
【0125】
同様に、シーケンサ330は、シーケンサ360とデータエンジン390のいずれに対してもパラメータを設定することができる。
【0126】
すなわち、本実施の形態の半導体LSI300では、各シーケンサがメモリとメモリコントローラを備えるため、上段(ホストCPUまたはシーケンサ)は、直下段に限らず、階層を跨った下段(シーケンサまたはデータエンジン)に対してもパラメータを設定することができる。そのため、半導体LSIの設計の自由度を高めることができる。
【0127】
また、本実施の形態の半導体LSI300において、シーケンサ360は、上段のシーケンサ330のメモリ331にアクセス可能に接続されている。
【0128】
具体的には、シーケンサ360の第1のマスタインタフェース部374と、シーケンサ330の第1のスレーブインタフェース部341とがメモリバスを介して接続されているため、シーケンサ360は、シーケンサ330のメモリ331にアクセスすることができる。
【0129】
さらに、本実施の形態の半導体LSI300において、データエンジン390は、第1のマスタインタフェース部396を備える。該第1のマスタインタフェース部396は、各シーケンサの第1のマスタインタフェース部と同一の仕様を有する。また、データエンジン390は、シーケンサ330とシーケンサ360のメモリにアクセス可能に接続されている。
【0130】
具体的には、データエンジン390の第1のマスタインタフェース部396と、シーケンサ330の第1のスレーブインタフェース部341とがメモリバスを介して接続されているため、データエンジン390は、シーケンサ330のメモリ331にアクセスすることができる。同様に、データエンジン390の第1のマスタインタフェース部396と、シーケンサ360の第1のスレーブインタフェース部371とがメモリバスを介して接続されているため、データエンジン390は、シーケンサ360のメモリ361にアクセスできる。
【0131】
すなわち、本実施の形態の半導体LSI300では、各シーケンサとデータエンジンが、上段のメモリにアクセス可能に接続されている。これにより、これにより、メモリの容量を削減することができる。例えば、ホストCPUとデータエンジンの間にシーケンサ1、シーケンサ2、シーケンサ3が階層的に接続され、動画像処理を行う半導体LSIにおいて、ホストCPUがシーケンサ1に対して設定したパラメータのうち、「撮影モード」やフレームの「画像サイズ」が含まれており、シーケンサ2が撮影モードを使用するときがあり、シーケンサ3が画像サイズを使用するときがあると仮定する。この場合、シーケンサ2がシーケンサ1のメモリから「撮影モード」を読み出すことができるため、シーケンサ2に対して「撮影モード」を設定する必要がない。同様に、シーケンサ3がシーケンサ1のメモリから「画像サイズ」を読み出すことができるため、シーケンサに対して「画像サイズ」を設定する必要がない。従って、シーケンサ2とシーケンサ3のメモリの容量を削減することができる。
【0132】
図6は、半導体LSI300における各シーケンサとデータエンジン390におけるメモリの構成を示す。図示のように、シーケンサ330のメモリ331は、例えばレジスタである第1のメモリ331Aと第2のメモリ331Bを有し、シーケンサ360のメモリ361は、第1のメモリ361Aと第2のメモリ361Bを有し、データエンジン390のメモリ395は、第1のメモリ395Aと第2のメモリ395Bを有する。
【0133】
本実施の形態の半導体LSI300において、各シーケンサとデータエンジン390は、自身の第1のメモリに設定されたパラメータを第2のメモリにコピーして、該第2のメモリにコピーされた前記パラメータを参照しながら処理を実行する。ホストCPU310と各シーケンサは、下段に対してパラメータを設定する際に、該下段の第1のメモリにパラメータを設定し、直下段の実行を制御する際に、該直下段の第2のメモリにおけるパラメータの状態を参照する。
【0134】
例えば、データエンジン390は、今のループの開始時に、メモリ395における第1のメモリ395Aに設定されたパラメータを第2のメモリ395Bにコピーして、第2のメモリ395Bを参照しながら処理を実行する。今のループの処理を終了すると、再び第1のメモリ395Aに設定されたパラメータを第2のメモリ395Bにコピーして、第2のメモリ395Bを参照しながら処理を実行する。
【0135】
ホストCPU310、シーケンサ330、シーケンサ360は、データエンジン390に対してパラメータを設定する際に、第1のメモリ395Aに設定する。
【0136】
シーケンサ360は、データエンジン390の実行を制御するために、データエンジン390の第2のメモリ395Bを参照してパラメータの状態を把握する。
【0137】
シーケンサまたはデータエンジンがループ中の処理を実行しているときに、該シーケンサまたはデータエンジンが処理に使用しているメモリにデータを書き込むことができない。しかし、時間的なスケジューリングなどの都合から、どうしても上位側のホストCPUやシーケンサが、ループ処理中の下段のパラメータを設定し直す場合がある。本実施の形態の半導体LSI300は、各シーケンサとデータエンジンのメモリが、上段によりパラメータを設定される第1のメモリと、第1のメモリからコピーしたパラメータを格納してシーケンサまたはデータエンジンの処理に供する構成を有する。そのため、ホストCPU310またはシーケンサは、下段のシーケンサまたはデータエンジン390のループ処理中に、該下段のシーケンサまたはデータエンジン390の第1のメモリ395Aに、変更されたパラメータを設定することができる。
【0138】
ここで、半導体LSI300が処理する動画像におけるフレームの具体例を用いて、半導体LSI300の動作例を説明する。
【0139】
図7は、動画像のフレームの画素構成例を示す。図示のように、該フレームのサイズは、「Cmax×Rmax」であり、横方向すなわち行方向(R方向)においてCmax個の画素があり、縦方向すなわち列方向(C方向)においてRmax個の画素がある。半導体LSI300は、上の行から下の行の順、各行については左の列の画素から右の画素の順で画素単位の処理をしていく。すなわち、図7の例では、R1行、R2行、R3行、・・・、Rmax行の順、各行については、C1の列の画素、C2の列の画素、C3の列の画素、・・・、Cmaxの列の画素の順で処理が行われる。
【0140】
シーケンサ330は、フレーム単位のシーケンス制御を行い、ループカウンタ334のカウント値は、現在処理中のフレームの番号を示すものである。シーケンサ360は、行単位のシーケンス制御を行い、ループカウンタ364のカウント値は、現在処理中の行の番号を示すものである。
【0141】
データエンジン390は、順次入力される各行の画素データに対して、画素毎にノイズ除去処理を行う。ノイズ除去処理は、例えば該画素の画素値と、前後の画素の画素値との重付け平均処理である。なお、本実施の形態におけるデータエンジン390は、現在処理中の画素の列の番号をカウントするループカウンタ(図示せず)を有する。
【0142】
半導体LSI300全体の動作の前に、まず、図8を参照して、シーケンサ360を代表にして、本実施の形態におけるシーケンサが行う処理の流れの例を説明する。なお、シーケンサ360とデータエンジン390は、既にパラメータの設定がなされ、クロック/電源制御部400から電源が供給されているとする。また、シーケンサ360は、クロック/電源制御部400からクロックを供給されているが、データエンジン390は、クロック/電源制御部400からのクロック供給を遮断されている。なお、シーケンサ360に対して設定されたパラメータは、例えば、シーケンサ360が実行するプログラムのコードや、フレームの行数(Rmax)などであり、データエンジン390に対して設定されたパラメータは、例えば、データエンジン390が実行するプログラムのコードや、1行の画素数すなわちフレームの列数(Cmax)などである。
【0143】
図8の左端のフローチャートは、シーケンサ360におけるループカウンタ364と、データエンジン390の図示しないループカウンタの動作を示す。中央のフローチャートは、シーケンサ360の動作を示す。右端のフローチャートは、データエンジン390の動作を示す。
【0144】
まず、シーケンサ360は、自身のメモリ331に設定されたパラメータに応じて、フレームを処理するための種々の初期設定を行う(S50)。そして、ループカウンタ334は1つカウントアップをし、これにより1つ目の上位ループ(上位ループ0)がスタートする(S10)。各シーケンサおよびデータエンジン390において、ループカウンタの前回のカウントアップから今回のカウントアップの間までの期間は、1ループであり、シーケンサとその直下段(シーケンサまたはデータエンジン390)のうちの上段におけるループが上位ループであり、下段におけるループが下位ループである。ここでは、シーケンサ360におけるループが上位ループとなり、データエンジン390におけるループが下位ループとなる。
【0145】
また、前述したように、シーケンサ360におけるループカウンタ364は、現在処理中の画素の行の番号を示すものである。そのため、このタイミングでは、ループカウンタ364のカウント値は、R1行を示すものとなる。
【0146】
R1行の処理を行うために、シーケンサ360のシーケンスコントローラ363は、データエンジン390へのクロック供給の開始を示すクロック/電源制御信号をクロック/電源制御部400に出力すると共に、実行開始を示す制御信号をデータエンジン390に出力する(S52)。
【0147】
これにより、クロック/電源制御部400からデータエンジン390へのクロック供給が開始され、データエンジン390は動作を開始し、現在の行の画素に対してノイズ除去処理を実行する(S70)。
【0148】
データエンジン390の動作開始に伴って、データエンジン390の図示しないループカウンタがカウントアップを開始し、これにより、1つ目の下位ループ(下位ループ0)がスタートする(S12)。前述したように、データエンジン390の図示しないループカウンタは、現在処理中の画素の列の番号を示すものである。そのため、ここでは、データエンジン390のループカウンタのカウント値は、C1行を示すものとなる。すなわち、R1行、C1列の画素の処理が開始される。
【0149】
シーケンサ360は、ステップS52の実行制御を行った後、現在処理中の行の次の行(R2行)を処理するための種々の設定を行ってから、スリープ状態に入る(S54、S56)。なお、シーケンサ360は、クロック/電源制御部400に対して、自身へのクロック供給を遮断させるクロック/電源制御信号を出力することにより、スリープ状態にされる。
【0150】
データエンジン390の実行中に(S70)、処理の進行に伴って、データエンジン390のループカウンタがカウントアップを続け、下位ループは、下位ループ0から、下位ループ1、下位ループ2、・・・、下位ループ(Cmax−2)、下位ループ(Cmax−1)と遷移する(S14〜S24)。
【0151】
下位ループ(Cmax−1)が完了すると、データエンジン390のループカウンタのカウント値がCmaxになる。これにて、現在の行(R1行)の全ての画素の処理が完了する。
【0152】
データエンジン390のループカウンタのカウント値がCmaxになると、データエンジン390は、自身のループカウンタのカウント値をクリアすると共に、シーケンサ360にトリガ信号を出力する(S71)。
【0153】
スリープ状態にあるシーケンサ360のスリープ制御ブロックは、データエンジン390からのトリガ信号を受信すると、クロック/電源制御部400に対して、シーケンサ360へのクロック供給を行わせるクロック/電源制御信号を出力する。これにより、シーケンサ360のスリープ状態が解除される(S57)。
【0154】
シーケンサ360は、クロック/電源制御部400からクロックの供給が再開されると、ループ制御を行う(S58)。このループ制御は、最後の上位ループが完了したか否か(ここではループカウンタ364のカウント値がRmaxである否か)に応じて行う。ループカウンタ364のカウント値がRmaxではない場合、シーケンサ360は、ステップS52に戻り、データエンジン390の実行制御を行う。また、ループカウンタ364は、1つカウントアップする(上位ループ+1)(S30)。そして、ステップS12からの下位ループが繰り返される。
【0155】
ステップS58において、シーケンサ330は、最後の上位ループの完了を確認すると、終了時の種々の設定を行い(S60)、シーケンサ360の実行停止とクロック供給の停止の制御を行う(S62)。これにて、データエンジン390がスリープ状態に入り、1フレーム分の処理が完了する(S64、S72)。
【0156】
なお、図8に対して、行数Cmaxを動画像のフレーム数に置換え、さらに、左端の「ループカウンタ364、データエンジン390の図示しないループカウンタ」を「ループカウンタ334、ループカウンタ364」に、中央の「シーケンサ360」を「シーケンサ330」に、右端の「データエンジン390」を「シーケンサ360」に置換えれば、シーケンサ330が行う処理の流れの例を示すフローチャートになる。これについては、詳細を省略する。
【0157】
図9は、半導体LSI300の全体の動作の流れの例を示す。半導体LSI300の電源が入ったときから説明する。このとき、ホストCPU310はアクティブ状態であり、シーケンサ330、シーケンサ360、データエンジン390は、スリープ状態であるとする。
【0158】
ホストCPU310は、シーケンサ330、シーケンサ360、データエンジン390に対してパラメータの設定を行う(S300)。前述したように、半導体LSI300において、ホストCPU310は、直下段のみならず、階層を跨った下段に対してもパラメータを設定できる。
【0159】
ここの例では、ホストCPU310により全ての下段の機能ブロックのパラメータを設定するようにしているが、ホストCPU310がシーケンサ330のパラメータを設定し、シーケンサ330はシーケンサ360のパラメータを設定し、シーケンサ360はデータエンジン390のパラメータの設定を行うようにしてもよい。勿論、シーケンサ330がシーケンサ360とデータエンジン390のパラメータを設定するようにしてもよい。
【0160】
さらに、シーケンサ330以下の各機能ブロックの一部のパラメータ(例えば該機能ブロックの実行用プログラムのコード)は、全てホストCPU310により設定され、他のパラメータ(例えば実行時に用いられるフレーム数や行数などの値)は、該機能ブロックの直上段により設定されるようにしてもよい。
【0161】
次に、ホストCPU310は、シーケンサ330へのクロック供給と、シーケンサ330の実行が開始されるよう制御を行う(S102)。
【0162】
実行を開始したシーケンサ330は、シーケンサ360に対するクロック供給と、シーケンサ360の実行が開始されるよう制御を行う(S120)。そして、シーケンサ330は、スリープ状態に入る(S122)。
【0163】
実行を開始したシーケンサ360は、データエンジン390に対するクロック供給と、データエンジン390の実行が開始されるように制御を行う(S140)。そして、シーケンサ360は、スリープ状態に入る(S142)。
【0164】
実行を開始したデータエンジン390は、現在の行の各画素を順次処理する(S160)。該行の最後の画素の処理が完了すれば、シーケンサ360にトリガ信号を送信する。これにより、シーケンサ360は、自身のスリープ状態を解除する。
【0165】
クロック/電源制御部400からクロックの供給を再開されたシーケンサ360は、次の行の処理を行うようにデータエンジン390を制御する(S144)。そして、再びスリープ状態に入る(S146)。
【0166】
データエンジン390は、次の行の各画素を順次処理し(S162)、最後の画素の処理が完了すれば、シーケンサ360にトリガ信号を出力する。これにより、シーケンサ360は、自身のスリープ状態を解除する。
【0167】
ここで、シーケンサ360の最後のループ(データエンジン390にとっては上位ループ、シーケンサ330にとっては下位ループ)が完了した、すなわち、現在のフレームの処理が完了したとする。そのため、シーケンサ360は、シーケンサ330にトリガ信号を出力する。これにより、シーケンサ330は、自身のスリープ状態を解除する。
【0168】
なお、シーケンサ330のスリープ中に、ホストCPU310は、シーケンサ330のパラメータを変更することもできる(S104)。ホストCPU310は、シーケンサ330のパラメータの変更が完了すれば、スリープ状態に入ってもよい(S106)。
【0169】
このように処理が繰り返され、動画像の全てのフレームの処理が完了すれば、ホストCPU310は、実行終了の処理、例えば終了時の種々の設定などを行う(S108)。これにて、ホストCPU310、シーケンサ330、シーケンサ360、データエンジン390は、処理を終了する(S110、S128、S152、S166)。
【0170】
なお、これらの機能ブロックは、処理を終了すると、自身または直上段の制御により、スリープ状態や電源OFF状態に入ってもよい。
【0171】
本実施の形態の半導体LSI300は、上述した各効果以外に、より効率良く電力消費を抑制する効果を得ることができる。半導体LSI300では、シーケンサとデータエンジンは、制御バスを介して直上段にトリガ信号を送信する通知チャネルが構成されており、直上段のスリープ解除が高速にできる。この構成と、前述した、参照チャネルと制御チャネルとが独立して設けられている構成とにより、クロックサイクル精度レベルのクイックな電力制御が実現でき、無駄な電力消費期間を少なくすることができる。
<第3の実施の形態>
本発明にかかる技術は、並列して処理を行うデータエンジンの数が多い場合に大きなメリットを有する。第3の実施の形態として、この場合の半導体LSIの1例を説明する。
【0172】
図10は、本発明の第3の実施の形態にかかる半導体LSI500を示す。該半導体LSI500は、ホストCPU、複数のシーケンサ(A1、B1、D1、・・・、Dn、C1、・・・、Cm)、複数のデータエンジン(X1、・・・、Xn、Y1、・・・、Yn)、クロック/電源制御部510を備える。なお、分かりやすいように、以下の図面において、各機能ブロックのインタフェース部や、スリープ状態のときにクロックを供給するラインなどを省略する。
【0173】
シーケンサA1は、ホストCPUの直下に設けられ、ホストCPUにより制御される。
【0174】
シーケンサB1、シーケンサC1、・・・、シーケンサCmは、シーケンサA1の直下に設けられ、シーケンサA1により制御される。
【0175】
シーケンサC1、・・・、Cmは、直下に、データエンジンY1、・・・、Ymが夫々接続されており、これらのデータエンジンを夫々制御する。
【0176】
一方、シーケンサB1の直下には、データエンジンではなく、さらに、シーケンサD1、・・・、Dnが接続されている。これらのシーケンサは、シーケンサB1により制御される。
【0177】
シーケンサD1、・・・、Dnは、直下に、データエンジンX1、・・・Xnが夫々接続されており、これらのデータエンジンを夫々制御する。
【0178】
半導体LSI500に含まれる各シーケンサは、半導体LSI100の各シーケンサと同様な構成を有するので、ここで詳細な説明を省略する。
【0179】
本発明にかかる電力消費の制御技術をデータエンジン数が多い半導体LSIに適用することにより、細かな電力消費の制御が可能である。図11にその一例を示す。
【0180】
図11において、斜線のハッチングがされた矩形は、該矩形により表わされる機能ブロックの状態が「スリープ」であることを示し、点のハッチングがされた矩形は、該矩形により表わされる機能ブロックの状態が「電源OFF」であることを示す。また、ハッチングされていない矩形は、該矩形により表わされる機能ブロックの状態が「アクティブ」であることを示す。
【0181】
図11の例では、半導体LSI500のデータエンジンX1、・・・、Xnは、クロック及び電源が供給され、アクティブ状態である。ホストCPUは、電源が供給されているがクロックの供給が遮断されたスリープ状態である。また、データエンジンX1、・・・、Xnをそれぞれ制御するシーケンサD1、・・・、Dn、及びこれらのシーケンサを制御するシーケンサB1、シーケンサB1を制御するシーケンサA1も、電源が供給されているが、クロックの供給が遮断されたスリープ状態である。なお、これらの機能ブロックのループカウンタ(RCA1、RCB1、RCD1、・・・、RCDn)は、スリープ状態中にはカウント値を保持する。また、データエンジンY1、・・・、Ymは電源とクロックのいずれの供給も遮断された「電源OFF」状態であり、これらのデータエンジンをそれぞれ制御するシーケンサC1、・・・、Cmも、電源OFF状態であり、それぞれのループカウンタ(RCC1、・・・、RCCm)は、カウント値をクリアされている。
【0182】
図11に示す例から、半導体LSI500の各機能ブロックのクロックと電源の供給が細かく制御可能であることが分かる。
【0183】
図10に示す半導体LSI500を一例として、本発明にかかる技術により、メモリの容量を削減できることを具体的に説明する。図12の例を参照して説明する。
【0184】
図12は、図10に示す半導体LSI500に対して、トップマクロ520とサブマクロ530を明記した図である。サブマクロ530は、シーケンサB1、シーケンサD1、・・・、Dn、データエンジンX1、・・・、Xnにより構成され、トップマクロ520は、シーケンサA1、シーケンサC1、・・・、Cm、データエンジンY1、・・・、Ymにより構成される。MA1、MB1、MC1、・・・、MCm、MD1、・・・、MDmは、それぞれのシーケンサにおいて、パラメータを格納するメモリである。
【0185】
例えば、サブマクロ530の各データエンジンX1、・・・、Xnは、シーケンサD1のメモリMD1、・・・、シーケンサDnのメモリMDnに格納されたパラメータをそれぞれ必要とすると共に、シーケンサB1のメモリMB1に格納されたパラメータも必要とする。データエンジンX1、・・・、XnがシーケンサB1のメモリMB1にアクセスできない場合には、これらの各データエンジンのメモリにも、シーケンサB1のメモリMB1に格納されたパラメータを格納する必要がある。本発明の技術により、各シーケンサがメモリコントローラを備え、かつインタフェース部の仕様が同一であるため、データエンジンX1、・・・、XnがシーケンサB1のメモリMB1にアクセスできる。従って、これらのデータエンジンがシーケンサB1のメモリMB1からパラメータを取得することができるため、当該パラメータを各データエンジンに格納する必要がなく、データエンジンのメモリ容量を削減することができる。
【0186】
トップマクロ520の各データエンジンについても同様である。例えば、データエンジンY1、・・・、Ymは、シーケンサC1のメモリMC1、・・・、シーケンサCmのメモリMCmに格納されたパラメータをそれぞれ必要とすると共に、シーケンサB1のメモリMB1に格納されたパラメータと、シーケンサA1のメモリMA1に格納されたパラメータも必要とする。この場合、本発明の技術により、データエンジンY1、・・・、YmがシーケンサA1のメモリMA1とシーケンサB1のメモリMB1にアクセスできるので、これらのデータエンジンがシーケンサA1とシーケンサB1のメモリからパラメータを取得することができる。従って、当該パラメータを各データエンジンに格納する必要がなく、データエンジンのメモリ容量を削減することができる。
<第4の実施の形態>
【0187】
半導体LSIの電力消費の制御を細かく行う点について、様々なバリエーションが考えられる。例えば、半導体LSIの機能ブロック毎に、シーケンサの階層数を増減することにより、半導体LSIの機能ブロック毎に異なる細かさで電力消費の制御ができる。図13を参照して一例を説明する。
【0188】
図13に示す例の半導体LSI600は、4つのドメイン(左上ドメイン610、右上ドメイン620、左下ドメイン630、右下ドメイン640)に大きく分けられている。左上ドメイン610は、さらに4つのドメイン(左上ドメイン611、右上ドメイン612、左下ドメイン613、右下ドメイン614)に分けられている。また、右上ドメイン612は、さらに上下左右の4つのドメインに分けられている。
【0189】
半導体LSI600において、最も上位のシーケンサはシーケンサK1である。シーケンサK1の直下に、左上ドメイン610、右上ドメイン620、左下ドメイン630、右下ドメイン640のシーケンス制御をそれぞれ行う4つのシーケンサ(シーケンサL1、シーケンサL2、シーケンサL3、シーケンサL4)が並列に接続されている。シーケンサL1は、左上ドメイン610における最も上位のシーケンサであり、その直下に、右上ドメイン612における最も上位のシーケンサ(シーケンサM1)が接続されている。シーケンサM1の直下に、右上ドメイン612の上下左右の4つのドメインをそれぞれ制御する4つのシーケンサ(シーケンサN1、シーケンサN2、シーケンサN3、シーケンサN4が並列に接続されている。
【0190】
なお、半導体LSI600は、シーケンサK1は、直上段のホストCPUが接続されており、シーケンサL2、L3、L4、N1、N2、N3、N4は、自身の直下段のデータエンジンが接続されているが、分かりやすいように、図13では示していない。
【0191】
この半導体LSI600では、本発明の技術を適用することにより、ドメイン毎にクロックと電源の供給を制御可能である。図示の例では、右上ドメイン620、左下ドメイン630、右下ドメイン640は、クロックと電源が遮断された「電源OFF」状態である。左上ドメイン610では、左上ドメイン611、左下ドメイン613、右下ドメイン614は、クロックと電源が供給されているアクティブ状態であり、右上ドメイン612では、シーケンサN1が制御する左上のドメインを除き、他の3つのドメインは、電源が供給されているが、クロックの供給が遮断されているスリープ状態である。なお、シーケンサN1が制御する左上のドメインは、アクティブ状態である。
【0192】
本発明にかかる技術による、シーケンサの階層の細分化の容易性は、図13に示すような細かな電源消費の制御を実現する。
【0193】
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、上述した各実施の形態に対してさまざまな変更、増減を行ってもよい。これらの変更、増減が行われた変形例も本発明の範囲にあることは当業者に理解されるところである。
【0194】
例えば、図5に示す第2の実施の形態の半導体LSI300において、各シーケンサとデータエンジンのメモリが、上段によりパラメータを設定される第1のメモリと、第1のメモリからコピーしたパラメータを格納してシーケンサまたはデータエンジンの処理に供する構成を有する。そのため、半導体LSI300におけるホストCPU310またはシーケンサは、下段のシーケンサまたはデータエンジン390のループ処理中に、該下段のシーケンサまたはデータエンジン390の第1のメモリ395Aに、変更されたパラメータを設定することができる。この場合、各シーケンサとデータエンジンにおいて、変更されたパラメータを第2のメモリへの反映は、1クロックででき、高速である。
【0195】
各シーケンサとデータエンジンのメモリを第1のメモリと第2のメモリに分けることをせずに、該シーケンサまたはデータエンジンのループ処理中に、上段(ホストCPU390またはシーケンサ)は、変更されたパラメータを設定することもできる。この場合、例えば、ホストCPU390とシーケンサは、下段に対してパラメータを設定する際に、該下段がループ処理中であれば、該下段に対して設定すべきパラメータを、自身のメモリに一時的に保持しておく。そして、下段のループ処理の完了時に、一時的に保存しておいたパラメータを該下段のメモリに転送する。
【0196】
このような構成によれば、変更されたパラメータを、下段が参照できるように反映するタイミングは、複数のサイクルを必要とするが、下段のメモリ容量を削減することができ、パラメータの変更の反映が低速でも良い場合には、有利である。
【0197】
なお、上述した各実施の形態において、各シーケンサは、クロック/電源制御インタフェース部を備え、自身、直下段へのクロック及び電源の供給を制御できるようになっている。クロックの供給のみまたは電源の供給のみを制御するように各シーケンサを構成してもよい。勿論、クロック/電源制御バスをクロック制御バスと電源制御バスとに別々に設けたり、第1のラインをクロックラインと電源ラインとに別々に設けたりするなどをしてもよい。さらに、クロック/電源制御部をクロック制御部と電源制御部とに分けるようにしてもよい。
【0198】
また、機能ブロックへのクロック供給の制御は、クロック供給のオン/オフに限られることがない。例えば、クロック供給を「通常モード」と「省電力モード」に分け、「通常モード」時には、200MHzのクロックを供給するが、「省電力モード」時には、クロック供給を遮断する(クロック供給のオフ)代わりに、供給するクロックの周波数を通常時の200MHzより低い100MHzや50MHzに下げるようにしてもよい。
【0199】
電源供給についても同様である。例えば、電源供給も「通常モード」と「省電力モード」に分け、「通常モード」時には、1.2vの電源を供給するが、「省電力モード」時には、電源供給を遮断する代わりに、供給する電源の電圧を通常時の1.2vより低い1.1vや1.0vなどに下げるようにしてもよい。
【符号の説明】
【0200】
10 故障状態モニタリング装置 11 CPU
12 シーケンサ 13 入力装置
14 記憶装置 15 ディスプレイ
16 キーボード 17 マウス
31 符号化LSI 32 全体制御シーケンサ
33 システムバスI/F 34 画像バスI/F
35 ラインメモリ部 36 変化点検出&モード判定処理部
37 符号生成部 38 符号パック部
39 符号出力FIFO 40 符号化演算部
41 画像データ入力装置 42 制御MPU
100 半導体LSI 110 ホストCPU
111 第1のマスタインタフェース部 112 第2のマスタインタフェース部
113 クロック/電源制御インタフェース部 115 クロック/電源制御バス
119 インタフェース部 121 メモリバス
122 制御バス 123 第1のライン
124 第2のライン 125 クロック/電源制御バス
130 シーケンサ 131 メモリ
132 メモリコントローラ 133 シーケンスコントローラ
134 ループカウンタ 141 第1のスレーブインタフェース部
142 第2のスレーブインタフェース部 143 第1の入力インタフェース部
144 第1のマスタインタフェース部 145 第2のマスタインタフェース部
146 クロック/電源制御インタフェース部 147 第2の入力インタフェース部
149 インタフェース部 151 メモリバス
152 制御バス 153 第1のライン
154 第2のライン 155 クロック/電源制御バス
160 シーケンサ 161 メモリ
162 メモリコントローラ 163 シーケンスコントローラ
164 ループカウンタ 171 第1のスレーブインタフェース部
172 第2のスレーブインタフェース部 173 第1の入力インタフェース部
174 第1のマスタインタフェース部 175 第2のマスタインタフェース部
176 クロック/電源制御インタフェース部 177 第2の入力インタフェース部
179 インタフェース部 181 メモリバス
182 制御バス 183 第1のライン
184 第2のライン 190 データエンジン
191 第1のスレーブインタフェース部 192 第2のスレーブインタフェース部
193 第1の入力インタフェース部 194 第2の入力インタフェース部
195 メモリ 199 インタフェース部
200 クロック/電源制御部 300 半導体LSI
310 ホストCPU 311 第1のマスタインタフェース部
312 第2のマスタインタフェース部
313 クロック/電源制御インタフェース部
330 シーケンサ 331 メモリ
331A 第1のメモリ 331B 第2のメモリ
332 メモリコントローラ 333 シーケンスコントローラ
334 ループカウンタ 341 第1のスレーブインタフェース部
342 第2のスレーブインタフェース部 343 第1の入力インタフェース部
344 第1のマスタインタフェース部 345 第2のマスタインタフェース部
346 クロック/電源制御インタフェース部 347 第2の入力インタフェース部
360 シーケンサ 361 メモリ
361A 第1のメモリ 361B 第2のメモリ
362 メモリコントローラ 363 シーケンスコントローラ
364 ループカウンタ 371 第1のスレーブインタフェース部
372 第2のスレーブインタフェース部 373 第1の入力インタフェース部
374 第1のマスタインタフェース部 375 第2のマスタインタフェース部
376 クロック/電源制御インタフェース部 377 第2の入力インタフェース部
390 データエンジン 391 第1のスレーブインタフェース部
392 第2のスレーブインタフェース部 393 第1の入力インタフェース部
394 第2の入力インタフェース部 395 メモリ
395A 第1のメモリ 395B 第2のメモリ
396 第1のマスタインタフェース部 400 クロック/電源制御部
500 半導体LSI 510 クロック/電源制御部
520 トップマクロ 530 サブマクロ
600 半導体LSI 610 左上ドメイン
611 左上ドメイン 612 右上ドメイン
613 左下ドメイン 614 右下ドメイン
620 右上ドメイン 630 左下ドメイン
640 右下ドメイン
【特許請求の範囲】
【請求項1】
継続的に入力されるデータに対して所定の処理を順次行う半導体集積回路において、
ホストCPUと、
前記所定の処理を実行するデータエンジンと、
複数のシーケンサとを備え、
前記ホストCPUと前記データエンジンと前記複数のシーケンサは、前記ホストCPUと前記データエンジンを夫々最上段と最下段にして階層的に接続されており、
各前記シーケンサは、
自身の実行用のパラメータを格納するメモリと、
メモリコントローラと、
ループカウンタと、
シーケンスコントローラと、
該シーケンサの外部との信号の送受信を行うインタフェース部とを備え、
前記データエンジンは、
自身の実行用のパラメータを格納するメモリと、
該データエンジンの外部との信号の送受信を行うインタフェース部とを備え、
前記ホストCPUは、該ホストCPUの外部との信号の送受信を行うインタフェース部を備え、
前記複数のシーケンサのインタフェース部は、同一の仕様を有し、それぞれが、
該シーケンサの外部の機能ブロックにおけるメモリにアクセスするための第1のマスタインタフェース部と、
該シーケンサの外部の機能ブロックの実行を制御するための第2のマスタインタフェース部と、
該シーケンサの外部の機能ブロックにより該シーケンサのメモリをアクセスされるための第1のスレーブインタフェース部と、
該シーケンサの外部の機能ブロックにより該シーケンサの実行を制御されるための第2のスレーブインタフェース部とを有し、
前記ホストCPUのインタフェース部は、前記複数のシーケンサの第1のマスタインタフェース部と第2のマスタインタフェース部と夫々同一の仕様を有する第1のマスタインタフェース部と第2のマスタインタフェース部とを有し、
前記データエンジンのインタフェース部は、前記複数のシーケンサの第1のスレーブインタフェース部と第2のスレーブインタフェース部と夫々同一の仕様を有する第1のスレーブインタフェース部と第2のスレーブインタフェース部とを有し、
前記ホストCPUと、前記複数のシーケンサと、前記データエンジンは、
上段が、自身の第1のマスタインタフェース部と、1つまたは複数の下段の第1のスレーブインタフェース部とを介して、該1つまたは複数の下段のメモリにアクセスし、
上段が、自身の第2のマスタインタフェース部と、直下段の第2のスレーブインタフェース部とを介して、該直下段の実行を制御するように接続されていることを特徴とする半導体集積回路。
【請求項2】
前記複数のシーケンサと前記データエンジンは、自身のメモリに設定された前記パラメータを参照しながら処理を実行し、
前記ホストCPUと前記複数のシーケンサは、
1つまたは複数の下段のメモリに前記パラメータを設定すると共に、
直下段のメモリに格納された、前記処理の進行に伴って変化する前記パラメータの状態を参照して、該直下段の実行を制御することを特徴とする請求項1に記載の半導体集積回路。
【請求項3】
前記複数のシーケンサと前記データエンジンの夫々のメモリは、第1のメモリと第2のメモリを有し、
前記複数のシーケンサと前記データエンジンは、
自身の第1のメモリに設定された前記パラメータを第2のメモリにコピーして、該第2のメモリにコピーされた前記パラメータを参照しながら処理を実行し、
前記ホストCPUと前記複数のシーケンサは、
1つまたは複数の下段に対して前記パラメータを設定する際に、該1つまたは複数の下段の第1のメモリに前記パラメータを設定し、
直下段の実行を制御する際に、該直下段の第2のメモリにおける前記パラメータの状態を参照することを特徴とする2に記載の半導体集積回路。
【請求項4】
前記ホストCPUと前記複数のシーケンサは、
下段が前記処理を実行しているときに、
該下段に対して次に設定するパラメータを自身のメモリに一時的に格納し、
該下段が前記処理を完了したときに、
自身のメモリに一時的に格納した前記次に設定するパラメータを前記下段のメモリに転送することを特徴とする請求項2に記載の半導体集積回路。
【請求項5】
前記複数のシーケンサと前記データエンジンに対して、クロック供給の制御を行うクロック制御部をさらに備え、
前記複数のシーケンサのインタフェース部は、夫々が、
前記クロック制御部からのクロックの供給を受けて該シーケンサに供給するクロック入力インタフェース部と、
該シーケンサと、該シーケンサの直下段のいずれか一方または両方に対するクロックの供給を制御可能なクロック制御信号を前記クロック制御部に出力するクロック制御インタフェース部とをさらに有し、
前記データエンジンのインタフェース部は、前記クロック制御部からのクロックの供給を受けて該データエンジンに供給するクロック入力インタフェース部をさらに有し、
前記クロック制御部は、各前記シーケンサからの前記クロック制御信号に従って、該シーケンサまたは該シーケンサの直下段へのクロックの供給の制御を行うことを特徴とする請求項1から4のいずれ1項に記載の半導体集積回路。
【請求項6】
前記複数のシーケンサと前記データエンジンに対して、電源供給の制御を行う電源制御部をさらに備え、
前記複数のシーケンサの前記インタフェース部は、夫々が、
前記電源制御部からの電源の供給を受けて該シーケンサに供給する電源入力インタフェース部と、
該シーケンサと、該シーケンサ直下段のいずれか一方または両方に対する電源の供給を制御可能な電源制御信号を前記電源制御部に出力する電源制御インタフェース部とをさらに有し、
前記データエンジンのインタフェース部は、前記電源制御部からの電源の供給を受けて該データエンジンに供給する電源入力インタフェース部をさらに有し、
前記電源制御部は、各前記シーケンサからの前記電源制御信号に従って、該シーケンサまたは該シーケンサの直下段への電源の供給を行うことを特徴とする請求項1から5のいずれか1項に記載の半導体集積回路。
【請求項7】
前記複数のシーケンサと前記データエンジンは、
直上段により実行を制御されて開始した処理の完了時に、前記直上段にトリガ信号を送信することを特徴とする請求項5または6に記載の半導体集積回路。
【請求項8】
前記複数のシーケンサは、
下段のシーケンサが、自身の第1のマスタインタフェース部と、1つまたは複数の上段のシーケンサの第1のスレーブインタフェース部とを介して、該1つまたは複数の上段のシーケンサのメモリにアクセス可能に接続されていることを特徴とする請求項1から7のいずれか1項に記載の半導体集積回路。
【請求項9】
前記データエンジンのインタフェース部は、前記複数のシーケンサの前記第1のマスタインタフェース部と同一の仕様を有する第1のマスタインタフェース部をさらに備え、
前記データエンジンは、
自身の第1のマスタインタフェース部と、1つまたは複数のシーケンサの第1のスレーブインタフェース部とを介して、該1つまたは複数のシーケンサのメモリにアクセス可能に接続されていることを特徴とする請求項1から8のいずれか1項に記載の半導体集積回路。
【請求項1】
継続的に入力されるデータに対して所定の処理を順次行う半導体集積回路において、
ホストCPUと、
前記所定の処理を実行するデータエンジンと、
複数のシーケンサとを備え、
前記ホストCPUと前記データエンジンと前記複数のシーケンサは、前記ホストCPUと前記データエンジンを夫々最上段と最下段にして階層的に接続されており、
各前記シーケンサは、
自身の実行用のパラメータを格納するメモリと、
メモリコントローラと、
ループカウンタと、
シーケンスコントローラと、
該シーケンサの外部との信号の送受信を行うインタフェース部とを備え、
前記データエンジンは、
自身の実行用のパラメータを格納するメモリと、
該データエンジンの外部との信号の送受信を行うインタフェース部とを備え、
前記ホストCPUは、該ホストCPUの外部との信号の送受信を行うインタフェース部を備え、
前記複数のシーケンサのインタフェース部は、同一の仕様を有し、それぞれが、
該シーケンサの外部の機能ブロックにおけるメモリにアクセスするための第1のマスタインタフェース部と、
該シーケンサの外部の機能ブロックの実行を制御するための第2のマスタインタフェース部と、
該シーケンサの外部の機能ブロックにより該シーケンサのメモリをアクセスされるための第1のスレーブインタフェース部と、
該シーケンサの外部の機能ブロックにより該シーケンサの実行を制御されるための第2のスレーブインタフェース部とを有し、
前記ホストCPUのインタフェース部は、前記複数のシーケンサの第1のマスタインタフェース部と第2のマスタインタフェース部と夫々同一の仕様を有する第1のマスタインタフェース部と第2のマスタインタフェース部とを有し、
前記データエンジンのインタフェース部は、前記複数のシーケンサの第1のスレーブインタフェース部と第2のスレーブインタフェース部と夫々同一の仕様を有する第1のスレーブインタフェース部と第2のスレーブインタフェース部とを有し、
前記ホストCPUと、前記複数のシーケンサと、前記データエンジンは、
上段が、自身の第1のマスタインタフェース部と、1つまたは複数の下段の第1のスレーブインタフェース部とを介して、該1つまたは複数の下段のメモリにアクセスし、
上段が、自身の第2のマスタインタフェース部と、直下段の第2のスレーブインタフェース部とを介して、該直下段の実行を制御するように接続されていることを特徴とする半導体集積回路。
【請求項2】
前記複数のシーケンサと前記データエンジンは、自身のメモリに設定された前記パラメータを参照しながら処理を実行し、
前記ホストCPUと前記複数のシーケンサは、
1つまたは複数の下段のメモリに前記パラメータを設定すると共に、
直下段のメモリに格納された、前記処理の進行に伴って変化する前記パラメータの状態を参照して、該直下段の実行を制御することを特徴とする請求項1に記載の半導体集積回路。
【請求項3】
前記複数のシーケンサと前記データエンジンの夫々のメモリは、第1のメモリと第2のメモリを有し、
前記複数のシーケンサと前記データエンジンは、
自身の第1のメモリに設定された前記パラメータを第2のメモリにコピーして、該第2のメモリにコピーされた前記パラメータを参照しながら処理を実行し、
前記ホストCPUと前記複数のシーケンサは、
1つまたは複数の下段に対して前記パラメータを設定する際に、該1つまたは複数の下段の第1のメモリに前記パラメータを設定し、
直下段の実行を制御する際に、該直下段の第2のメモリにおける前記パラメータの状態を参照することを特徴とする2に記載の半導体集積回路。
【請求項4】
前記ホストCPUと前記複数のシーケンサは、
下段が前記処理を実行しているときに、
該下段に対して次に設定するパラメータを自身のメモリに一時的に格納し、
該下段が前記処理を完了したときに、
自身のメモリに一時的に格納した前記次に設定するパラメータを前記下段のメモリに転送することを特徴とする請求項2に記載の半導体集積回路。
【請求項5】
前記複数のシーケンサと前記データエンジンに対して、クロック供給の制御を行うクロック制御部をさらに備え、
前記複数のシーケンサのインタフェース部は、夫々が、
前記クロック制御部からのクロックの供給を受けて該シーケンサに供給するクロック入力インタフェース部と、
該シーケンサと、該シーケンサの直下段のいずれか一方または両方に対するクロックの供給を制御可能なクロック制御信号を前記クロック制御部に出力するクロック制御インタフェース部とをさらに有し、
前記データエンジンのインタフェース部は、前記クロック制御部からのクロックの供給を受けて該データエンジンに供給するクロック入力インタフェース部をさらに有し、
前記クロック制御部は、各前記シーケンサからの前記クロック制御信号に従って、該シーケンサまたは該シーケンサの直下段へのクロックの供給の制御を行うことを特徴とする請求項1から4のいずれ1項に記載の半導体集積回路。
【請求項6】
前記複数のシーケンサと前記データエンジンに対して、電源供給の制御を行う電源制御部をさらに備え、
前記複数のシーケンサの前記インタフェース部は、夫々が、
前記電源制御部からの電源の供給を受けて該シーケンサに供給する電源入力インタフェース部と、
該シーケンサと、該シーケンサ直下段のいずれか一方または両方に対する電源の供給を制御可能な電源制御信号を前記電源制御部に出力する電源制御インタフェース部とをさらに有し、
前記データエンジンのインタフェース部は、前記電源制御部からの電源の供給を受けて該データエンジンに供給する電源入力インタフェース部をさらに有し、
前記電源制御部は、各前記シーケンサからの前記電源制御信号に従って、該シーケンサまたは該シーケンサの直下段への電源の供給を行うことを特徴とする請求項1から5のいずれか1項に記載の半導体集積回路。
【請求項7】
前記複数のシーケンサと前記データエンジンは、
直上段により実行を制御されて開始した処理の完了時に、前記直上段にトリガ信号を送信することを特徴とする請求項5または6に記載の半導体集積回路。
【請求項8】
前記複数のシーケンサは、
下段のシーケンサが、自身の第1のマスタインタフェース部と、1つまたは複数の上段のシーケンサの第1のスレーブインタフェース部とを介して、該1つまたは複数の上段のシーケンサのメモリにアクセス可能に接続されていることを特徴とする請求項1から7のいずれか1項に記載の半導体集積回路。
【請求項9】
前記データエンジンのインタフェース部は、前記複数のシーケンサの前記第1のマスタインタフェース部と同一の仕様を有する第1のマスタインタフェース部をさらに備え、
前記データエンジンは、
自身の第1のマスタインタフェース部と、1つまたは複数のシーケンサの第1のスレーブインタフェース部とを介して、該1つまたは複数のシーケンサのメモリにアクセス可能に接続されていることを特徴とする請求項1から8のいずれか1項に記載の半導体集積回路。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2012−43198(P2012−43198A)
【公開日】平成24年3月1日(2012.3.1)
【国際特許分類】
【出願番号】特願2010−184090(P2010−184090)
【出願日】平成22年8月19日(2010.8.19)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】
【公開日】平成24年3月1日(2012.3.1)
【国際特許分類】
【出願日】平成22年8月19日(2010.8.19)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】
[ Back to top ]