1.実施の形態の概要
まず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面の参照符号は、それが付された構成要素の概念に含まれるものを例示するに過ぎない。
〔1〕本発明の代表的な実施の形態による半導体集積回路(1)は、機能モジュール(2)と、内蔵メモリ(3)と、第1バッファメモリ(11)と、第2バッファメモリ(12)と、第1FIFOメモリ(13)と、第2FIFOメモリ(14)と、比較器(15)とを具備する。
前記半導体集積回路の検査のための多重冗長動作の第1動作の間に前記機能モジュールから出力される第1書き込みデータは前記内蔵メモリと前記第1バッファメモリに供給され、前記半導体集積回路の前記検査のための前記多重冗長動作の第2動作の間に前記機能モジュールから出力される第2書き込みデータは前記内蔵メモリと前記第2バッファメモリに供給される。
前記第1FIFOメモリは前記第1動作の間に前記第1バッファメモリから順次に出力される第1出力データの複数のデータから所定の出力回数のデータを選択して格納する一方、前記所定の出力回数と異なる出力回数の他のデータを非選択とする。
前記第2FIFOメモリは前記第2動作の間に前記第2バッファメモリから順次に出力される第2出力データの複数のデータから前記所定の出力回数のデータを選択して格納する一方、前記所定の出力回数と異なる出力回数の他のデータを非選択とする。
前記比較器は、前記第1FIFOメモリによって選択され出力される前記所定の出力回数の前記データと前記第2FIFOメモリによって選択され出力される前記所定の出力回数の前記データを比較することを特徴とするものである(図21参照)。
前記実施の形態によれば、半導体集積回路の検査のための多重冗長動作の間に内蔵メモリには連続した書き込みデータを格納可能とする一方、多重冗長動作の出力の比較器による比較のためのFIFOが書き込みデータによって容易に満杯となることを軽減することができる。
好適な実施の形態では、前記機能モジュールは、第1機能モジュール(2)と第2機能モジュール(6)とを少なくとも含むものである。
前記内蔵メモリは、第1内蔵メモリ(3)と第2内蔵メモリ(7)とを少なくとも含むものである。
前記第1動作の間に前記第1機能モジュールから出力される前記第1書き込みデータは、前記第1内蔵メモリと前記第1バッファメモリとに供給されるものである。
前記第2動作の間に前記第2機能モジュールから出力される前記第2書き込みデータは、前記第2内蔵メモリと前記第2バッファメモリとに供給されることを特徴とするものである(図1参照)。
他の好適な実施の形態では、前記第1機能モジュールと前記第2機能モジュールは、それぞれ第1中央処理ユニット(2)と第2中央処理ユニット(6)であることを特徴とするものである(図1参照)。
更に他の好適な実施の形態では、前記第1バッファメモリは、前記第1動作の間に順次に前記第1バッファメモリに供給される前記第1書き込みデータの前記複数のデータの第1出力回数(BCA)をカウント可能とされる。
前記第2バッファメモリは、前記第2動作の間に順次に前記第2バッファメモリに供給される前記第2書き込みデータの前記複数のデータの第2出力回数(BCB)をカウント可能とされたことを特徴とするものである(図2、図3参照)。
より好適な実施の形態による半導体集積回路は、前記第1バッファメモリと前記第2バッファメモリと前記第1FIFOメモリと前記第2FIFOメモリに接続された制御部(16)を更に具備する(図1参照)。
前記制御部は、前記所定の出力回数の情報(4、8、12…)を格納可能な第1レジスタ(1625)と第2レジスタ(1635)とを含む。
前記第1バッファメモリによってカウントされた前記第1出力回数(BCA)が前記第1レジスタに格納された前記情報(FCNA)と一致することに応答して、前記第1FIFOメモリが前記所定の出力回数の前記データを選択して格納するための第1FIFOライトイネーブル信号(FWEA)を前記制御部が前記第1FIFOメモリに供給可能とされる。
前記第2バッファメモリによってカウントされた前記第2出力回数(BCB)が前記第2レジスタに格納された前記情報(FCNB)と一致することに応答して、前記第2FIFOメモリが前記所定の出力回数の前記データを選択して格納するための第2FIFOライトイネーブル信号(FWEB)を前記制御部が前記第2FIFOメモリに供給可能とされたことを特徴とするものである(図8参照)。
他のより好適な実施の形態では、前記多重冗長動作の前記第1動作と前記第2動作の内容は、前記第1中央処理ユニットと前記第2中央処理ユニットとのいずれか一方で以前に実行されていた通常動作の内容とされることが可能であることを特徴とするものである(図18参照)。
更に他のより好適な実施の形態では、前記通常動作から前記多重冗長動作への移行は、前記通常動作を実行中の前記第1中央処理ユニットと前記第2中央処理ユニットとのいずれか一方から他方への割り込み(204)によって可能とされたことを特徴とするものである(図18参照)。
別のより好適な実施の形態では、前記第1バッファメモリは、前記第1FIFOメモリに出力される前記第1出力データを格納する第1フリップフロップ(1150)と、一方の入力端子と他方の入力端子とに前記第1書き込みデータと前記第1フリップフロップの出力端子の第1出力データ(1101)とがそれぞれ供給される第1演算回路(1170)とを含み、前記第1演算回路の出力端子から生成される出力信号は前記第1フリップフロップに格納可能とされる。
前記第2バッファメモリは、前記第2FIFOメモリに出力される前記第2出力データを格納する第2フリップフロップと、一方の入力端子と他方の入力端子とに前記第2書き込みデータと前記第2フリップフロップの出力端子の第2出力データとがそれぞれ供給される第2演算回路とを含み、前記第2演算回路の出力端子から生成される出力信号は前記第2フリップフロップに格納可能とされたことを特徴とするものである(図19参照)。
具体的な実施の形態では、前記比較器による前記第1FIFOメモリによって出力される前記所定の出力回数の前記データと前記第2FIFOメモリによって出力される前記所定の出力回数の前記データとの比較結果が両方のデータの一致を示す場合には、前記半導体集積回路は正常と判断されて、比較結果が両方のデータの不一致を示す場合には、前記半導体集積回路は異常と判断されることを特徴とするものである(図21参照)。
最も具体的な実施の形態では、前記第1中央処理ユニットは前記第1内蔵メモリに格納された前記通常動作のための命令を実行することに並列して、前記第2中央処理ユニットは前記第2内蔵メモリに格納された前記通常動作のための命令を実行することによって、前記半導体集積回路は多重コアのマイクロコントローラとして動作可能とされたことを特徴とするものである(図1参照)。
〔2〕本発明の別の観点の代表的な実施の形態は、機能モジュール(2)と、内蔵メモリ(3)と、第1バッファメモリ(11)と、第2バッファメモリ(12)と、第1FIFOメモリ(13)と、第2FIFOメモリ(14)と、比較器(15)とを具備する半導体集積回路(1)の動作方法である。
前記半導体集積回路の検査のための多重冗長動作の第1動作の間に前記機能モジュールから出力される第1書き込みデータは前記内蔵メモリと前記第1バッファメモリに供給され、前記半導体集積回路の前記検査のための前記多重冗長動作の第2動作の間に前記機能モジュールから出力される第2書き込みデータは前記内蔵メモリと前記第2バッファメモリに供給される。
前記第1FIFOメモリは前記第1動作の間に前記第1バッファメモリから順次に出力される第1出力データの複数のデータから所定の出力回数のデータを選択して格納する一方、前記所定の出力回数と異なる出力回数の他のデータを非選択とする。
前記第2FIFOメモリは前記第2動作の間に前記第2バッファメモリから順次に出力される第2出力データの複数のデータから前記所定の出力回数のデータを選択して格納する一方、前記所定の出力回数と異なる出力回数の他のデータを非選択とする。
前記比較器は、前記第1FIFOメモリによって選択され出力される前記所定の出力回数の前記データと前記第2FIFOメモリによって選択され出力される前記所定の出力回数の前記データを比較することを特徴とするものである(図21参照)。
前記実施の形態によれば、半導体集積回路の検査のための多重冗長動作の間に内蔵メモリには連続した書き込みデータを格納可能とする一方、多重冗長動作の出力の比較器による比較のためのFIFOが書き込みデータによって容易に満杯となることを軽減することができる。
2.実施の形態の詳細
実施の形態について更に詳述する。なお、発明を実施するための形態を説明するための全図において、同一の機能を有する要素には同一の符号を付して、その繰り返しの説明を省略する。
[実施の形態1]
《デュアルコアマイコンの構成》
図1は、本発明の実施の形態1によるデュアルコアマイコンMCU1の構成を示す図である。
図1に示した本発明の実施の形態1によるデュアルコアマイコンMCU1は、2つのCPUA2、CPUB6の出力を比較できるようにしたものである。尚、図1に示すデュアルコアマイコンMCU1の内部回路は、半導体集積回路の半導体チップ内部に集積化されている。
第1中央処理ユニットとしてのCPUA2は命令を実行することによって演算やデータ転送等の処理を実行するプロセッサであり、第1内蔵メモリとしてのメモリA3はCPUA2が実行する命令および処理するデータを記憶する。第1CPUバスとしてのCPUAバス4はCPUA2がメモリA3等のデバイスをアクセスするためのバスであり、第1バスブリッジとしてのブリッジA5はCPUA2がシステムバス10を経由してその他のデバイスをアクセスする場合にCPUAバス4とシステムバス10とを接続制御するコントローラである。
第2中央処理ユニットとしてのCPUB6は命令を実行することによって演算やデータ転送等の処理を実行するプロセッサであり、第2内蔵メモリとしてのメモリB7はCPUB6が実行する命令および処理するデータを記憶する。第2CPUバスとしてのCPUBバス8はCPUB6がメモリB7等のデバイスをアクセスするためのバスであり、第2バスブリッジとしてのブリッジB9はCPUB6がシステムバス10を経由してその他のデバイスをアクセスする場合にCPUBバス8とシステムバス10とを接続制御するコントローラである。
第1バッファメモリとしてのバッファA11は、CPUA2が特定のアドレス空間に出力する書き込みデータを保持して、その出力回数をカウントする。第2バッファメモリとしてのバッファB12も、CPUB6が特定のアドレス空間に出力する書き込みデータを保持して、その出力回数をカウントする。第1FIFOメモリとしてのFIFOA13はバッファA11の出力データ1101を保持する一方、第2FIFOメモリとしてのFIFOB14はバッファB12の出力データ1201を保持する。ここでの特定のアドレス空間と言う技術用語は、CPUA2、B6から出力される書き込みデータをメモリA3、B7とバッファA11、B12とに二重書き込みするためのアドレス空間を意味している。
比較器15は、FIFOA13の出力データ1300とFIFOB14の出力データ1400とを比較する。制御部16はシステムバス10に接続されており、CPUA2およびCPUB6からレジスタ設定可能とされている。制御部16の出力信号1600はバッファA11におけるカウンタのクリア信号およびデータ保持とカウントの許可信号である一方、制御部16の出力信号1601はバッファB12におけるカウンタのクリア信号およびデータ保持とカウントの許可信号である。制御部16にはバッファA11から出力されるカウント信号1100とバッファB12から出力されるカウント信号1200が供給され、制御部16はFIFOA13、FIFOB14の制御信号1602、1603を出力する。また、制御部16には比較器15からの比較結果信号1500が供給され、その比較結果は制御部16内部のレジスタに保持される。比較結果が不一致だった場合には、制御部16は、割り込み発生回路17に割り込み要求信号1604(C_INTREQ)を出力することができる。
割り込み発生回路17は、システムバス10に接続されており、CPUA2およびCPUB6からレジスタ設定可能とされている。この割り込み発生回路17には、割り込み要求端子100から割り込み要求が供給可能とされている。
図1には示していないが、デュアルコアマイコンMCU1にはA/D変換器、タイマ、シリアル通信等の機能モジュールが内蔵され、これら機能モジュールからの割り込み要求も割り込み発生回路17に供給可能とされている。割り込み発生回路17では複数の割り込み要求に関して優先順位が設定されており、最も優先順位の高い割り込み要求が選択されて、割り込み発生回路17からCPUA2への割り込み要求1700とCPUB6への割り込み要求1701とが出力される。
《デュアルコアマイコンでの通常動作》
図1に示した本発明の実施の形態1によるデュアルコアマイコンMCU1は高性能を実現するために、2個のCPUA2、B6にそれぞれ独立したデータ処理を並列に実行させる。2個のCPUA2、B6による並列処理結果は、2個のメモリA3、B7に並列に格納可能である。更に2個のメモリA3、B7のデータは、2個のブリッジA5、B9を介してシステムバス10に転送されることも可能である。
《デュアルコアマイコンでの冗長動作》
図1に示した本発明の実施の形態1によるデュアルコアマイコンMCU1は高信頼性を実現するために、2個のCPUA2、B6に同一のデータ処理を実行させその処理結果の不一致を検出して故障を検出するようにした冗長動作が実行される。
この冗長動作のために、2個のCPUA2、B6は同一のオペランドデータに関して同一の冗長タスクプログラムを実行する。図1のデュアルコアマイコンMCU1に故障が存在せず2個のCPUA2、B6が正常に動作している場合には、2個のCPUA2、B6から特定のアドレス空間に出力されメモリA3、B7とバッファA11、B12に二重書き込みされる書き込みデータは同一となる。しかし、図1のデュアルコアマイコンMCU1に故障が発生して2個のCPUA2、B6の一方が異常動作している場合には、2個のCPUA2、B6から特定のアドレス空間に出力されメモリA3、B7とバッファA11、B12とに二重書き込みされる書き込みデータは不一致となり、故障検出が可能となる。
2個のFIFOA13、B14は、2個のバッファA11、B12を経由して2個のCPUA2、B6から冗長タスク演算結果として順次に出力され供給される複数のデータから所定の出力回数のデータのみを選択して格納する一方、それ以外の出力回数のデータは非選択として破棄するものである。2個のFIFOA13、B14によって選択されて出力される所定の出力回数のデータは、比較器15によって比較される。比較器15による比較結果が一致する場合には、図1のデュアルコアマイコンMCU1に故障が存在しないと判定されて、比較器15による比較結果が不一致の場合には、図1のデュアルコアマイコンMCU1に故障が存在すると判定される。従って、高性能の2個のCPUA2、B6から順次に出力される複数のデータによって2個のFIFOA13、B14に短時間に空き領域がなくなり、2個のCPUA2、B6が容易にストールするかウェイトされると言う問題が解消されることが可能となる。
《バッファメモリの構成》
図2は、図1に示した本発明の実施の形態1によるデュアルコアマイコンMCU1に含まれるバッファメモリとしてのバッファA11、B12の構成を示す図である。
バッファA11、B12には、CPUAバス4、CPUBバス8からライトデータWDとレディ信号RDYとコマンド信号CMDとアドレス信号Aが供給され、制御部16からクロック信号CLKとカウントイネーブル信号CNEとカウンタリセット信号CNRとパワーオンリセット信号RSTとが供給される。
デコーダ(DEC)1110には、レディ信号RDYとコマンド信号CMDとアドレス信号Aとが供給される。コマンド信号CMDが有効であることを意味するハイレベル“1”のレディ信号RDYとライトコマンドであるコマンド信号CMDとバッファA11、B12をアクセスするアドレス信号Aとに応答して、デコーダ(DEC)1110は、ハイレベル“1”のライトイネーブル信号WEを生成する。
デコーダ(DEC)1110から生成されるライトイネーブル信号WEは、クロックCLKの立ち上がりに応答してフリップフロップ(FF)1120に供給される。フリップフロップ(FF)1120の出力信号がハイレベル“1”でかつカウントイネーブル信号CNEがハイレベル“1”の場合には、AND回路1130の出力から生成されるバッファライトイネーブル信号BWEがハイレベル“1”となる。
バッファライトイネーブル信号BWEがハイレベル“1”の場合に、ライトデータWDはクロック信号CLKの立ち上がりに応答してフリップフロップ(FF)1150に格納される。フリップフロップ(FF)1150は、バッファ出力信号BOを生成する。
バッファライトイネーブル信号BWEがハイレベル“1”の場合には、カウンタ(CNT)1160はクロック信号CLKをカウントする。カウンタ(CNT)1160は、バッファカウント信号BCを生成する。
制御部16からのパワーオンリセット信号RSTとカウンタリセット信号CNRとはOR回路1140で論理和され、OR回路1140の出力によってカウンタ(CNT)1160がリセットされる。
図1と図2に示した本発明の実施の形態1によるデュアルコアマイコンMCU1では、例えばバッファメモリとしてのバッファA11、B12のアドレスは固定されたものである。しかし、アドレス設定レジスタに、例えば開始アドレスから終了アドレスまでのアドレス範囲を、CPUA2、CPUB6によって設定可能とすることも可能である。従って、アドレス設定レジスタに設定されたアドレス範囲のアドレス信号Aのデコーダ(DEC)1110でのデコードによって、任意のメモリアドレスのメモリA3、B7への書き込みデータをバッファA11、B12にバッファ記憶することが可能である。
《バッファメモリの動作》
図3は、本発明の実施の形態1によるデュアルコアマイコンMCU1に含まれる図2に示したバッファメモリとしてのバッファA11、B12の動作を説明する図である。
図3に示したように、ハイレベル“1”のレディ信号RDYはコマンド信号CMDの有効を示し、ローレベル“0”のレディ信号RDYはコマンド信号CMDの無効を示す。コマンド信号CMDには、N(No Operation、非動作)と、R(Read、読み出し動作)と、W(Write、書き込み動作)の3種類がある。アドレス信号Aは、コマンド信号CMDと同様にクロック信号CLKによるクロックサイクルでCPUA2またはCPUB6からCPUAバス4またはCPUバス8に出力される。
図3に示した例では、クロック信号CLKの1番目と2番目と7番目と9番目と14番目とで、CPUA2またはCPUB6から読み出し動作Rのコマンド信号CMDが出力されている。更に、クロック信号CLKの1番目と2番目と7番目と8番目と14番目とで、CPUA2またはCPUB6から、アドレス信号A1とアドレス信号A2とアドレス信号A5とアドレス信号A6とアドレス信号A9がそれぞれ出力されている。従って、クロック信号CLKの2番目と3番目と9番目と10番目と15番目とで、データD1とデータD2とデータD5とデータD6とデータD9との各リードデータRDが、メモリA3またはメモリB7からCPUAバス4またはCPUバス8を介してCPUA2またはCPUB6に読み出される。
更に図3に示した例では、クロック信号CLKの5番目と6番目と10番目と13番目とで、CPUA2またはCPUB6から書き込み動作Wのコマンド信号CMDとが出力されている。更にクロック信号CLKの5番目と6番目と10番目と13番目とで、CPUA2またはCPUB6から、アドレス信号A3とアドレス信号A4とアドレス信号A7とアドレス信号A8とがそれぞれ出力されている。従って、クロック信号CLKの6番目と7番目と14番目とで、データD3とデータD4とデータD8との各ライトデータWDが、CPUA2またはCPUB6からCPUAバス4またはCPUバス8を介してメモリA3またはメモリB7とバッファA11またはバッファB12とに書き込まれる。尚、クロック信号CLKの10番目のアドレス信号A7は、メモリA3またはメモリB7とバッファA11またはバッファB12をアクセスするメモリアドレス以外のアドレスとなっている。例えば、クロック信号CLKの10番目のアドレス信号A7は、メモリマップドI/O等のその他のデバイスをアクセスするためのものである。
従って、他のデバイスをアクセスするためのアドレス信号A7以外のアドレス信号A3とアドレス信号A4とアドレス信号A8とに応答してデコーダ(DEC)1110は、クロック信号CLKの5番目と6番目との期間とクロック信号CLKの13番目の期間とに、ハイレベル“1”のライトイネーブル信号WEをそれぞれ生成する。
フリップフロップ(FF)1120はデコーダ(DEC)1110の出力から生成されたライトイネーブル信号WEをクロック信号CLKの1クロック分遅延するので、この1クロック分遅延されたハイレベル“1”のバッファライトイネーブル信号BWEがAND回路1130の出力から生成される。
その結果、ハイレベル“1”のバッファライトイネーブル信号BWEに応答して、データD3とデータD4とデータD8の各ライトデータWDがフリップフロップ(FF)1150に格納されるので、フリップフロップ(FF)1150の出力からデータD3とデータD4とデータD8とのバッファ出力信号BOが生成される。またカウンタ(CNT)1160はハイレベル“1”のバッファライトイネーブル信号BWEとクロック信号CLKに応答して、バッファ出力信号BOの出力回数としてのバッファカウント信号BCを出力する。
《FIFOメモリの構成》
図4は、図1に示した本発明の実施の形態1によるデュアルコアマイコンMCU1に含まれるFIFOメモリとしてのFIFOA13、B14の構成を示す図である。
図4に示したようにFIFOメモリとしてのFIFOA13、B14は、4段のフリップフロップ(FF)1310、1320、1330、1340と、デコーダ(DEC)1350と、セレクタ(SEL)1360とから構成されている。
4段のフリップフロップ(FF)1310〜1340のデータ入力端子には、図2に示したバッファメモリとしてのバッファA11、B12から生成されるバッファ出力信号BOが供給される。デコーダ(DEC)1350に制御部16からFIFOライトイネーブル信号FWEとFIFOライト番号信号FWNとが供給され、デコーダ(DEC)1350からライトイネーブル信号WE0、WE1、WE2、WE3が生成される。クロック信号CLKの立ち上がりのタイミングでデコーダ(DEC)1350からの複数のライトイネーブル信号WE0、WE1、WE2、WE3のいずれかの信号がハイレベル“1”となることによって、4段のフリップフロップ(FF)1310、1320、1330、1340のいずれかにバッファ出力信号BOが格納されるかが選択される。
制御部16からFIFOリード番号信号FRNがセレクタ(SEL)1360に供給され、FIFOリード番号信号FRNが示す番号のフリップフロップ(FF)1310、1320、1330、1340の出力信号FO0、FO1、FO2、FO3のいずれかが選択されてFIFO出力信号FOとなる。
《FIFOの動作》
図5は、本発明の実施の形態1によるデュアルコアマイコンMCU1に含まれる図4に示したFIFOメモリとしてのFIFOA13、B14の動作を説明する図である。
図5は、バッファA11、B12からFIFOA13、B14に順次に供給される4個のバッファ出力信号BOのうち最後の1個だけが、FIFOA13、B14に格納されることを示している。すなわち、順次に供給される4個のバッファ出力信号BOとしてのデータ入力信号D1、D2、D3、D4のうち最後の1個のデータ入力信号D4だけがFIFOA13、B14に格納され、その後順次に供給される4個のバッファ出力信号BOとしてのデータ入力信号D5、D6、D7、D8のうち最後の1個のデータ入力信号D8だけがFIFOA13、B14に格納される。
図5に示すように、FIFOライト番号信号FWNとFIFOリード番号信号FRNとは、最初は制御部16によって初期値“0”に設定されている。8番目のクロック信号CLKの立ち上がりのタイミングで制御部16によってFIFOライトイネーブル信号FWEがハイレベル“1”に制御されるので、4個目のデータ入力信号D4が9番目のクロック信号CLKの立ち上がりのタイミングにて1段目のフリップフロップ(FF)1310に格納される。この時には、FIFOリード番号信号FRNが初期値“0”に設定されているので、1段目のフリップフロップ(FF)1310の出力信号FO0がセレクタ(SEL)1360によって選択されてFIFO出力信号FOには4個目のデータ入力信号D4が出力される。一方、9番目のクロック信号CLKの立ち上がりのタイミングでの1段目のフリップフロップ(FF)1310への4個目のデータ入力信号D4の格納に応答して、制御部16はFIFOライト番号信号FWNを初期値“0”から次の更新値“1”に変更する。
FIFOメモリとしての2個のFIFOA13、FIFOB14に同一の4個目のデータ入力信号D4が格納されると、図1に示した本発明の実施の形態1によるデュアルコアマイコンMCU1内部の比較器15によって2個のFIFOA13、FIFOB14の両方のFIFO出力信号FOの比較が実行される。この比較が実行された後には、2個のFIFOA13、FIFOB14に格納された4個目のデータ入力信号D4は不要になる。図5に示した例では、8番目のクロック信号CLKの立ち上がりのタイミングで2個のFIFOA13、FIFOB14の一方に既に4個目のデータ入力信号D4が格納され、11番目のクロック信号CLKの立ち上がりのタイミングで2個のFIFOA13、FIFOB14の他方に4個目のデータ入力信号D4が格納され、比較器15によって2個のFIFOA13、FIFOB14の両方のFIFO出力信号FOの比較が実行される。その結果、12番目のクロック信号CLKの立ち上がりのタイミング以降では、1段目のフリップフロップ(FF)1310中には有効なデータ入力信号が格納されていないので、図5の網掛けに示すようにFIFO出力信号FOは不定となる。更に、比較器15による2個のFIFOA13、FIFOB14のFIFO出力信号FOの比較実行に応答して、制御部16はFIFOリード番号信号FRNを初期値“0”から次の更新値“1”に変更する。
更に、図5に示したように、13番目のクロック信号CLKの立ち上がりのタイミングで制御部16によってFIFOライトイネーブル信号FWEがハイレベル“1”に制御されるので、8個目のデータ入力信号D8が14番目のクロック信号CLKの立ち上がりのタイミングにて2段目のフリップフロップ(FF)1320に格納される。このように8個目のデータ入力信号D8が2段目のフリップフロップ(FF)1320に格納されるのは、制御部16によってFIFOライト番号信号FWNを初期値“0”から更新値“1”に変更されているためである。この時には、FIFOリード番号信号FRNが更新値“1”に設定されているので、2段目のフリップフロップ(FF)1320の出力信号FO1がセレクタ(SEL)1360によって選択されてFIFO出力信号FOには8個目のデータ入力信号D8が出力される。
《比較器の構成》
図6は、図1に示した本発明の実施の形態1によるデュアルコアマイコンMCU1に含まれる比較器15の構成を示す図である。
図6に示したように、比較器15はデジタル比較器1510を含み、デジタル比較器1510の一方の入力端子と他方の入力端子にはFIFOA13のFIFO出力信号FOA(1300)とFIFOB14のFIFO出力信号FOB(1400)とがそれぞれ供給され、デジタル比較器1510の出力端子から比較出力信号COが生成される。従って、FIFOA13のFIFO出力信号FOA(1300)とFIFOB14のFIFO出力信号FOB(1400)とが一致する場合には比較出力信号COはローレベル“1”となる一方、FIFOA13のFIFO出力信号FOA(1300)とFIFOB14のFIFO出力信号FOB(1400)とが不一致の場合には比較出力信号COはハイレベル“1”となる。
《比較器の動作》
図7は、本発明の実施の形態1によるデュアルコアマイコンMCU1に含まれる図6に示した比較器15の動作を説明する図である。
図7に示したように、FIFOA13のFIFO出力信号FOA(1300)として、5番目から7番目までのクロック信号CLKの期間で4個目のデータ入力信号D4が出力され、10番目から13番目までのクロック信号CLKの期間で8個目のデータ入力信号D8が出力され、それ以外の期間では不定となる。一方、FIFOB14のFIFO出力信号FOB(1400)として、7番目のクロック信号CLKの期間で4個目のデータ入力信号D4が出力され、13番目のクロック信号CLKの期間で他の8個目のデータ入力信号D8’(8個目のデータ入力信号D8と異なる値)が出力され、それ以外の期間では不定となる。
その結果、7番目のクロック信号CLKの期間でローレベル“0”(両方の入力が一致)の比較出力信号COが生成され、13番目のクロック信号CLKの期間でハイレベル“1”(両方の入力が不一致)の比較出力信号COが生成され、それ以外の期間では比較出力信号COは無効である。
《制御部の構成》
図8は、図1に示した本発明の実施の形態1によるデュアルコアマイコンMCU1に含まれる制御部16の構成を示す図である。
図8に示すように、制御部16は、デコーダ(DEC)1614と、比較制御レジスタ(CCR0)1610と、第1比較制御レジスタ(CCR1)1611と、第2比較制御レジスタ(CCR2)1612と、比較状態レジスタ(CSR)1613と、3入力AND回路1615と、2入力AND回路1616と、第1制御部(CTA)1626と、第2制御部(CTB)1636等によって構成されている。
図9は、本発明の実施の形態1によるデュアルコアマイコンMCU1の制御部16に含まれる図8に示した比較制御レジスタ(CCR0)1610の構成を示す図である。
図9に示すように、比較制御レジスタ(CCR0)1610のビット7〜0は比較サイクルCMPCYCであり、バッファA11、B12から順次に生成される複数個のバッファ出力信号BOが何個ごとにFIFOA13、14に保持され、何個ごとに比較器15によって比較されるかを設定する。例えば、図9のビット7〜0の比較サイクルCMPCYCでは、オール“0”のH00は比較サイクル256を示す一方、オール“0”を除外した値である設定値H01〜HFFが比較サイクル1〜255を示すようにされる。尚、図9に示した比較制御レジスタ(CCR0)1610のビット7〜0での比較サイクルCMPCYCの設定値は、システムバス10からのライトデータWDの値によって決定されることが可能である。
図9の比較制御レジスタ(CCR0)1610のビット8は比較イネーブル信号CMPENであり、例えば、ローレベル“0”は比較禁止を示し、ハイレベル“1”は比較許可を示す。図9の比較制御レジスタ(CCR0)1610のビット9は割り込みイネーブル信号INTENであり、例えばローレベル“0”は割り込み禁止を示し、ハイレベル“1”は割り込み許可を示す。尚、図9において、比較制御レジスタ(CCR0)1610のビット15〜10は、予約ビットRESERVEDである。
図10は、本発明の実施の形態1によるデュアルコアマイコンMCU1の制御部16に含まれる図8に示した第1比較制御レジスタ(CCR1)1611、第2比較制御レジスタ(CCR2)1612の構成を示す図である。
図10に示したように、ビット0はカウントイネーブル信号CNTENであり、第1比較制御レジスタ(CCR1)1611の場合にはCPUA2の出力データをバッファA11に保持してカウントするか否かを設定して、第2比較制御レジスタ(CCR2)1612の場合にはCPUB6の出力データをバッファB12に保持してカウントするか否かを設定する。例えばローレベル“0”で保持とカウントとを実行せず、ハイレベル“1”で保持とカウントとを実行するようにする。図10のビット1はカウントリセット信号CNTRSTであり、第1比較制御レジスタ(CCR1)1611の場合にはバッファA11のカウンタリセットを実行する一方、第2比較制御レジスタ(CCR2)1612の場合にはバッファB12のカウンタリセットを実行する。例えば、ローレベル“0”でバッファのカウンタリセットを実行せず、ハイレベル“1”でバッファのカウンタリセットを実行する。CNTRSTは書き込んだ値を保持せず、ハイレベル“1”が書き込まれることを検出してバッファA11およびバッファB12のカウンタリセットを行う。尚、図10でも、ビット15〜2は、予約ビットRESERVEDである。
図11は、本発明の実施の形態1によるデュアルコアマイコンMCU1の制御部16に含まれる図8に示した比較状態レジスタ(CSR)1613の構成を示す図である。
図11に示したように、比較状態レジスタ(CSR)1613のビット0は比較エラー信号CMPERRであり、例えばローレベル“0”は比較エラー無し(比較結果一致)を示す一方、ハイレベル“1”は比較エラー有り(比較結果不一致)を示すものとする。尚、このビット0の比較エラー信号CMPERRとしてハイレベル“1”(比較結果不一致)が書き込まれると、その後の比較器15による比較結果が一致してもローレベル“0”(比較結果一致)がこのビット0に書き込まれることはない。尚、図11でも、ビット15〜1は、予約ビットRESERVEDである。
図8に戻ると、システムバス10のレディ信号RDYとコマンド信号CMDとアドレス信号Aとはデコーダ(DEC)1614よってデコードされ、比較制御レジスタ(CCR0)1610、第1比較制御レジスタ(CCR1)1611、第2比較制御レジスタ(CCR2)1612、比較状態レジスタ(CSR)1613へのライトデータWDの書き込み制御が実行される。特に制御部16の比較制御レジスタ(CCR0)1610と第1比較制御レジスタ(CCR1)1611と第2比較制御レジスタ(CCR2)1612と比較状態レジスタ(CSR)1613とに書き込まれる種々のライトデータWDは、システムバス10を介してデュアルコアマイコンMCU1のオンチップの内蔵不揮発性メモリ(図示せず)から供給されることが可能であり、またシステムバス10とダイレクトメモリアクセスコントローラ(DMAC)とを介して、マザーボードに搭載されたオフチップの外部不揮発性メモリ(図示せず)から供給されることも可能である。
尚、図8には示されていないが、比較制御レジスタ(CCR0)1610、第1比較制御レジスタ(CCR1)1611、第2比較制御レジスタ(CCR2)1612、比較状態レジスタ(CSR)1613のシステムバス10への読み出し制御を実行して、リードデータRDをシステムバス10へ出力する機能を追加することも可能である。
また比較制御レジスタ(CCR0)1610からの割り込みイネーブル信号INTENと比較状態レジスタ(CSR)1613からの比較エラー信号CMPERRとは2入力AND回路1616で論理積され、2入力AND回路1616の出力から割り込み発生回路17への比較エラー割り込み信号C_INTREQが生成される。また第1比較制御レジスタ(CCR1)1611は、バッファA11へ供給されるカウントイネーブル信号CNEAとカウンタリセット信号CNRAとを生成する。更に第2比較制御レジスタ(CCR2)1612は、バッファB12へ供給されるカウントイネーブル信号CNEBとカウンタリセット信号CNRBとを生成する。
更に図8に示した制御部16では、FIFOカウンタとしてのレジスタ(FC0A)1620とレジスタ(FC1A)1621とレジスタ(FC2A)1622とレジスタ(FC3A)1623は、バッファA11から順次に生成されるデータの何個目のデータがFIFOA13のフリップフロップ(FF)1310とフリップフロップ(FF)1320とフリップフロップ(FF)1330とフリップフロップ(FF)1340とにそれぞれ格納されるかを示すデータを保持するものである。
レジスタ(FSTA)1624は、FIFOA13のフリップフロップ(FF)1310、1320、1330、1340の出力信号FO0、FO1、FO2、FO3の状態(データの有無)を保持する。レジスタ(FCNA)1625は、次にFIFOA13に保持されるべきバッファ出力信号BOがバッファA11から何個目に生成されるかの情報を保持する。制御部(CTA)1626は、上述したレジスタ1620、1621、1622、1623、1624、1625の制御を実行する。制御部(CTA)1626は比較制御レジスタ(CCR0)1610から比較イネーブル信号CMPENと比較サイクルCMPCYCを入力して、バッファA11からバッファカウント信号BCAを入力する。まず、比較制御レジスタ(CCR0)1610に書き込みが実行されると、比較サイクルCMPCYCがレジスタ(FCNA)1625にコピーされる。
制御部(CTA)1626はバッファカウント信号BCAをレジスタ(FCNA)1625の内容と比較して、両者が一致するとFIFOカウンタとしてのレジスタ1620、1621、1622、1623の中からレジスタ(FSTA)1624によってデータを含まないと最初に示されたレジスタにバッファカウント信号BCAが格納される。また同時に制御部(CTA)1626は、FIFOA13へのFIFOライトイネーブル信号FWEAとFIFOライト番号信号FWNAとを出力して、FIFOA13にバッファA11から供給されるバッファ出力信号BOAを書き込む。また制御部(CTA)1626は、その時点でのバッファカウント信号BCAの値と比較サイクルCMPCYCの値との加算値をレジスタ(FCNA)1625に書き込むものである。
更に図8に示した制御部16では、FIFOカウンタとしてのレジスタ(FC0B)1630とレジスタ(FC1B)1631とレジスタ(FC2B)1632とレジスタ(FC3B)1633は、バッファB12から順次に生成されるデータの何個目のデータがFIFOB14のフリップフロップ(FF)1310とフリップフロップ(FF)1320とフリップフロップ(FF)1330とフリップフロップ(FF)1340とにそれぞれ格納されるかを示すデータを保持するものである。
レジスタ(FSTB)1634は、FIFOB14のフリップフロップ(FF)1310、1320、1330、1340の出力信号FO0、FO1、FO2、FO3の状態(データの有無)を保持する。レジスタ(FCNB)1635は、次にFIFOB14に保持されるべきバッファ出力信号BOがバッファB12から何個目に生成されるかの情報を保持する。制御部(CTB)1636は、上述したレジスタ1630、1631、1632、1633、1634、1635の制御を実行する。制御部(CTB)1636は比較制御レジスタ(CCR0)1610から比較イネーブル信号CMPENと比較サイクルCMPCYCを入力して、バッファB12からバッファカウント信号BCBを入力する。まず、比較制御レジスタ(CCR0)1610に書き込みが実行されると、比較サイクルCMPCYCがレジスタ(FCNB)1635にコピーされる。
制御部(CTB)1636はバッファカウント信号BCBをレジスタ(FCNB)1635の内容と比較して、両者が一致するとFIFOカウンタとしてのレジスタ1630、1631、1632、1633の中からレジスタ(FSTB)1634によってデータを含まないと最初に示されたレジスタにバッファカウント信号BCBが格納される。また同時に制御部(CTB)1636は、FIFOB14へのFIFOライトイネーブル信号FWEBとFIFOライト番号信号FWNBとを出力して、FIFOB14にバッファB12から供給されるバッファ出力信号BOBを書き込む。また制御部(CTB)1636は、その時点でのバッファカウント信号BCBの値と比較サイクルCMPCYCの値との加算値をレジスタ(FCNB)1635に書き込むものである。
FIFOA13がデータで満杯になった場合には、バッファカウント信号BCAがレジスタ(FCNA)1625の内容と同一となったとしても、バッファA11から供給されるバッファ出力信号BOAをFIFOA13に書き込むことができない。一方、FIFOA13にデータの書き込みが実行されて、その後にFIFOB14に同一のデータ書き込みが実行されると、比較器15による比較が実行されてFIFOA13に空きができる。その時点のバッファカウント信号BCAが空いたFIFOカウンタに書き込まれ、バッファカウント信号BCAの値と比較サイクルCMPCYCの値との加算値がレジスタ(FCNA)1625に書き込まれる。また、その時点のバッファ出力信号BOAが、FIFOA13に書き込まれる。
FIFOB14がデータで満杯になった場合も、同様に書き込みが不可能となる。このようにFIFOB14が満杯になると、レジスタ(FCNB)1635に事前に設定した比較サイクルCMPCYCの整数倍となるバッファB12からの所定の個数番目のバッファ出力信号BOをFIFOB14に書き込めなくなってしまう。FIFOB14がデータで満杯になる以前にFIFOB14にデータの書き込みが実行されて、その後にFIFOA13に同一のデータ書き込みが実行されると、比較器15による比較が実行されてFIFOA13、FIFOB14に空きができる。従って、ようやくこのFIFOB14の空きに、バッファB12からのバッファ出力信号BOがFIFOB14に書き込まれることが可能となる。このように、FIFOB14では比較サイクルCMPCYCの整数倍毎のバッファB12からのバッファ出力信号BOBの書き込みが中断されるので、バッファ出力信号BOBの書き込み個数のスキップが発生する。従って、このスキップが発生した場合には、FIFOB14からFIFOA13へスキップの発生を通知する必要がある。スキップの発生が通知されたFIFOA13は、スキップに従ってFIFOA13のFIFOカウンタの内容を更新する。FIFOA13でバッファ出力信号BOAの書き込み個数のスキップが発生した場合には、FIFOA13からFIFOB14へスキップの発生を通知する必要がある。スキップの発生が通知されたFIFOB14は、スキップに従ってFIFOA13のFIFOカウンタの内容を更新する。すなわち、内部信号1627はFIFOA13からFIFOB14へのスキップの発生を通知するために使用され、内部信号1637はFIFOB14からFIFOA13へのスキップの発生を通知するために使用される。
制御部(CTA)1626は、FIFOA13に有効なデータがない場合には比較イネーブル信号CEAをローレベル“0”に設定する一方、FIFOA13に有効なデータがある場合にはハイレベル“1”に設定する。同様に、制御部(CTB)1636は、FIFOB14に有効なデータがない場合には比較イネーブル信号CEBをローレベル“0”に設定する一方、FIFOB14に有効なデータある場合にはハイレベル“1”に設定する。比較イネーブル信号CEAと比較イネーブル信号CEBとがハイレベル“1”になると、比較器15の比較出力信号COが3入力AND回路1615を介して比較状態レジスタ(CSR)1613の比較エラー信号CMPERRに書き込まれる。比較状態レジスタ(CSR)1613の比較エラー信号CMPERRは、比較状態レジスタ(CSR)1613にクリア信号H0000を書き込むことによってクリア可能である。
図12は、図1に示した本発明の実施の形態1によるデュアルコアマイコンMCU1に含まれる図4に示したFIFOA13、B14の動作と図8に示した制御部16の動作とを、FIFOA13を中心に示した図である。
図13は、図1に示した本発明の実施の形態1によるデュアルコアマイコンMCU1に含まれる図4に示したFIFOA13、B14の動作と図8に示した制御部16の動作とを、FIFOB14を中心に示した図である。
図12の動作と図13の動作では、制御部16の比較制御レジスタ(CCR0)1610のビット7〜0は比較サイクルCMPCYCは、所定の初期値として“H04”の値に設定されているとする。
図12において、6番目のクロック信号CLKでは、バッファA11から制御部16の制御部(CTA)1626に供給されるバッファカウント信号BCAの値は“3”で、制御部(CTA)1626に接続されたレジスタ(FCNA)1625の内容は“4”で、レジスタ(FSTA)1624の内容は“H0(データ無し)”である。
図12の9番目のクロック信号CLKで、バッファA11から供給されるバッファカウント信号BCAの値が“4”となってレジスタ(FCNA)1625の内容“4”と一致すると、次の10番目のクロック信号CLKのタイミングで、制御部(CTA)1626に接続されたレジスタ(FC0A)1620の内容FC0Aとしてバッファカウント信号BCAの値“4”が書き込まれる。また、この10番目のクロック信号CLKのタイミングで、この時点でのバッファカウント信号BCAの値“4”と比較サイクルCMPCYCの値“4”との加算値“8”が、レジスタ(FCNA)1625に書き込まれ、レジスタ(FSTA)1624の内容は“H0(データ無し)”から“H1(FO0にデータ有り)”に変更される。更に9番目のクロック信号CLKのタイミングで、制御部(CTA)1626からFIFOA13に供給される書き込みイネーブル信号FWEAがハイレベル“1”となるので、FIFOA13ではバッファA11から供給されるバッファ出力信号BOA(=D4)が1段目のフリップフロップ(FF)1310のデータFO0として書き込まれる。9番目のクロック信号CLKのタイミングでは制御部(CTA)1626からFIFOA13に供給されるFIFOリード番号信号FRNAの値は“0”であるので、FIFOA13の読み出しデータFOAには1段目のフリップフロップ(FF)1310のデータFO0が選択され、10番目のクロック信号CLKのタイミングからデータD4が出力される。また、制御部(CTA)1626から3入力AND回路1615に供給される比較イネーブル信号CEAの値は、ハイレベル“1”となる。
一方、図13において、6番目のクロック信号CLKのタイミングでは、バッファB12から供給されるバッファカウント信号BCBの値が“1”であり、レジスタ(FCNB)1635の値が“4”であり、レジスタ(FSTB)1634の内容は“H0(データ無し)”となっている。9番目のクロック信号CLKのタイミングでは、バッファカウント信号BCBの値が“2”で、レジスタ(FCNB)1635の値が“4”であり、レジスタ(FSTB)1634の内容は“H0(データ無し)”である。
図12に戻り、19番目のクロック信号CLKのタイミングでは、バッファA11から供給されるバッファカウント信号BCAの値が“8”となってレジスタ(FCNA)1625の内容“8”と一致すると、次の20番目のクロック信号CLKのタイミングで、制御部(CTA)1626に接続されたレジスタ(FC1A)1621の内容FC1Aとしてバッファカウント信号BCAの値“8”が書き込まれる。また、この20番目のクロック信号CLKのタイミングで、この時点でのバッファカウント信号BCAの値“8”と比較サイクルCMPCYCの値“4”との加算値“12”がレジスタ(FCNA)1625に書き込まれ、レジスタ(FSTA)1624の内容は“H1(FO0にデータ有り)”から“H3(FO0とFO1にデータ有り)”に変更される。更に、20番目のクロック信号CLKのタイミングでは、制御部(CTA)1626からFIFOA13に供給される書き込みイネーブル信号FWEAが既にハイレベル“1”となっているので、FIFOA13ではバッファA11から供給されるバッファ出力信号BOA(=D8)が、2段目のフリップフロップ(FF)1320のデータFO1として書き込まれる。
一方、図13において、19番目のクロック信号CLKのタイミングでバッファB12から供給されるバッファカウント信号BCBの値が“4”となってレジスタ(FCNB)1625の内容“4”と一致すると、次の20番目のクロック信号CLKのタイミングで、制御部(CTB)1636に接続されたレジスタ(FC0B)1630の内容FC0Bとしてバッファカウント信号BCBの値“4”が書き込まれる。この20番目のクロック信号CLKのタイミングで、この時点でのバッファカウント信号BCBの値“4”と比較サイクルCMPCYCの値“4”との加算値“8”がレジスタ(FCNB)1635に書き込まれて、レジスタ(FSTB)1634の内容は“H0(データ無し)”から“H1(FO0にデータ有り)”に変更される。また19番目のクロック信号CLKのタイミングでは制御部(CTB)1636からFIFOB14に供給される書き込みイネーブル信号FWEBがハイレベル“1”となるので、FIFOB14ではバッファB12から供給されるバッファ出力信号BOB(=D4)が1段目のフリップフロップ(FF)1310のデータFO0として書き込まれる。19番目のクロック信号CLKのタイミングでは、制御部(CTB)1636からFIFOB14に供給されるFIFOリード番号信号FRNBの値は“0”であるので、FIFOB14の読み出しデータFOBには1段目のフリップフロップ(FF)1310のデータFO0が選択され、20番目のクロック信号CLKのタイミングからデータD4が出力される。また制御部(CTB)1636から3入力AND回路1615に供給される比較イネーブル信号CEBの値は、ハイレベル“1”となる。
図12に戻り、20番目のクロック信号CLKのタイミングで比較イネーブル信号CEAと比較イネーブル信号CEBとがともにハイレベル“1”となったので、FIFOA13のFIFO出力信号FOA(1300)とFIFOB14のFIFO出力信号FOB(1400)を比較する比較器15の比較結果信号1500を示す比較出力信号CO(=C4)が有効な値となる。従って、次の21番目のクロック信号CLKのタイミングで、比較器15の比較出力信号CO(=C4)は3入力AND回路1615を介して比較状態レジスタ(CSR)1613の比較エラー信号CMPERRとして書き込まれる。また、同一のデータであるFIFO出力信号FOA(1300)とFIFO出力信号FOB(1400)との比較器15による比較が実行されたため、FIFOA13の1段目のフリップフロップ(FF)1310は空きとなり、レジスタ(FSTA)1624の内容は“H3(FO0とFO1にデータ有り)”から“H2(FO1にデータ有り)”に変更される。また21番目のクロック信号CLKのタイミングで制御部(CTA)1626からFIFOA13に供給されるFIFOリード番号信号FRNAの値が“0”から“1”に変更されたので、FIFOA13の読み出しデータFOAには2段目のフリップフロップ(FF)1320のデータFO1(=D8)が選択される。
一方、図13では20番目のクロック信号CLKのタイミングで同一のデータであるFIFO出力信号FOA(1300)とFIFO出力信号FOB(1400)の比較器15による比較が実行されたため、21番目のクロック信号CLKのタイミングではFIFOB14の1段目のフリップフロップ(FF)1310(FO0)が空きとなって、レジスタ(FSTB)1634の内容は“H1(FO0にデータ有り)”から“H0(データ無し)”に変更される。制御部(CTB)1636からFIFOB14に供給されるFIFOリード番号信号FRNBの値は“0”から“1”に変更されているので、FIFOB14の読み出しデータFOBには2段目のフリップフロップ(FF)1320のデータFO1(不定)が選択されて、21番目のクロック信号CLKのタイミングではFIFOB14のFIFO出力信号FOB(1400)は不定となる。
図12に戻り、30番目のクロック信号CLKのタイミングでバッファA11から供給されるバッファカウント信号BCAの値が“12”となってレジスタ(FCNA)1625の内容“12”と一致すると、次の31番目のクロック信号CLKのタイミングで、制御部(CTA)1626に接続されたレジスタ(FC2A)1622の内容FC2Aとしてバッファカウント信号BCAの値“12”が書き込まれる。この30番目のクロック信号CLKのタイミングで、この時点のバッファカウント信号BCAの値“12”と比較サイクルCMPCYCの値“4”の加算値“16”がレジスタ(FCNA)1625に書き込まれて、レジスタ(FSTA)1624の内容は“H2(FO1にデータ有り)”から“H6(FO1とFO2にデータ有り)”に変更される。更に30番目のクロック信号CLKのタイミングでは、制御部(CTA)1626からFIFOA13に供給される書き込みイネーブル信号FWEAが既にハイレベル“1”となっているので、FIFOA13ではバッファA11から供給されるバッファ出力信号BOA(=D12)が3段目のフリップフロップ(FF)1330のデータFO2として書き込まれる。また32番目のクロック信号CLKのタイミングで制御部(CTA)1626からFIFOA13に供給されるFIFOリード番号信号FRNAの値が“1”から“2”に変更されたので、FIFOA13の読み出しデータFOAに3段目のフリップフロップ(FF)1330のデータFO2(=D12)が選択される。
一方、図13において、30番目のクロック信号CLKのタイミングでバッファB12から供給されるバッファカウント信号BCBの値が“8”となってレジスタ(FCNB)1625の内容“8”と一致すると、次の31番目のクロック信号CLKのタイミングで、制御部(CTB)1636に接続されたレジスタ(FC1B)1631の内容FC1Bとしてバッファカウント信号BCBの値“8”が書き込まれる。この30番目のクロック信号CLKのタイミングで、この時点でのバッファカウント信号BCBの値“8”と比較サイクルCMPCYCの値“4”の加算値“12”がレジスタ(FCNB)1635に書き込まれて、レジスタ(FSTB)1634の内容は“H0(データ無し)”から“H2(FO1にデータ有り)”に変更される。また、30番目のクロック信号CLKのタイミングで制御部(CTB)1636からFIFOB14に供給される書き込みイネーブル信号FWEBがハイレベル“1”となるので、FIFOB14ではバッファB12から供給されるバッファ出力信号BOB(=D8)が2段目のフリップフロップ(FF)1320のデータFO1として書き込まれる。
図12に戻り、31番目のクロック信号CLKのタイミングでは比較イネーブル信号CEAと比較イネーブル信号CEBとがともにハイレベル“1”となったので、FIFOA13のFIFO出力信号FOA(1300)とFIFOB14のFIFO出力信号FOB(1400)を比較する比較器15の比較結果信号1500を示す比較出力信号CO(=C8)が有効な値となる。従って、次の32番目のクロック信号CLKのタイミングで、比較器15の比較出力信号CO(=C8)は3入力AND回路1615を介して比較状態レジスタ(CSR)1613の比較エラー信号CMPERRとして書き込まれる。また、同一のデータであるFIFO出力信号FOA(1300)とFIFO出力信号FOB(1400)の比較器15による比較が実行されたため、FIFOA13の2段目のフリップフロップ(FF)1320は空きとなり、レジスタ(FSTA)1624の内容は“H6(FO1とFO2にデータ有り)”から“H4(FO2にデータ有り)”に変更される。制御部(CTB)1636からFIFOA13に供給されるFIFOリード番号信号FRNAの値は“1”から“2”に変更されているので、FIFOA13の読み出しデータFOAには3段目のフリップフロップ(FF)1330のデータFO2(=D12)が選択され、32番目のクロック信号CLKのタイミングではFIFOA13のFIFO出力信号FOA(1300)はデータD12となる。
一方、図13において、31番目のクロック信号CLKのタイミングにて同一のデータであるFIFO出力信号FOA(1300)とFIFO出力信号FOB(1400)との比較器15による比較が実行されたため、FIFOB14の2段目のフリップフロップ(FF)1320は空きとなり、レジスタ(FSTB)1634の内容は“H2(FO1にデータ有り)”から“H0(データ無し)”に変更される。制御部(CTB)1636からFIFOB14に供給されるFIFOリード番号信号FRNBの値は“1”から“2”に変更されているので、FIFOB14の読み出しデータFOBには3段目のフリップフロップ(FF)1330のデータFO2(不定)が選択されて、32番目のクロック信号CLKのタイミングではFIFOB14のFIFO出力信号FOB(1400)は不定となる。
図14は、図1に示した本発明の実施の形態1によるデュアルコアマイコンMCU1の図12と図13とに示したFIFOA13、B14の動作タイミングチャートの重要なタイミングでのFIFOA13、B14の動作を示す図である。
図14の部分図(1−A)〜部分図(6−A)は、図12と図13とに示したFIFOA13、B14の動作タイミングチャートのタイミング(1)とタイミング(2)とタイミング(3)とタイミング(4)とタイミング(5)とタイミング(6)のタイミングにおけるFIFOA13の動作を示している。同様に、図14の部分図(1−B)〜部分図(6−B)は、図12と図13とに示したFIFOA13、B14の動作タイミングチャートのタイミング(1)とタイミング(2)とタイミング(3)とタイミング(4)とタイミング(5)とタイミング(6)のタイミングにおけるFIFOB14の動作を示している。
図14の部分図(1−A)において、FIFOカウンタのレジスタ(FC0A)1620とレジスタ(FC1A)1621とレジスタ(FC2A)1622とレジスタ(FC3A)1623の内容と、FIFOA13の4段のフリップフロップ(FF)1310、1320、1330、1340の出力信号FO0、FO1、FO2、FO3の内容とは全て無効であり、レジスタ(FSTA)1624の内容は“H0(データ無し)”であり、レジスタ(FCNA)1625の内容は“4”である。従って、図14の部分図(1−A)に示した状態のFIFOA13では、バッファカウント信号BCAの値が“3”となり、バッファA11からFIFOA13にバッファ出力信号BOA(=D3)が供給されても、FIFOA13への書き込みは、行われない。この時には、FIFOライト番号信号FWNAとFIFOリード番号信号FRNAとは、最初は制御部16によって初期値“0”に設定されている。
図14の部分図(1−B)において、FIFOカウンタのレジスタ(FC0B)1630とレジスタ(FC1B)1631とレジスタ(FC2B)1632とレジスタ(FC3B)1633の内容と、FIFOB14の4段のフリップフロップ(FF)1310、1320、1330、1340の出力信号FO0、FO1、FO2、FO3の内容とは全て無効であり、レジスタ(FSTA)1624の内容は“H0(データ無し)”であり、レジスタ(FCNB)1635の内容は“4”である。従って、図14の部分図(1−B)に示した状態のFIFOB14では、バッファカウント信号BCBの値が“1”となり、バッファB12からFIFOB14にバッファ出力信号BOB(=D1)が供給されても、FIFOB14への書き込みは、行われない。この時には、FIFOライト番号信号FWNBとFIFOリード番号信号FRNBとは、最初は制御部16によって初期値“0”に設定されている。
図14の部分図(2−A)において、バッファカウント信号BCAの値とレジスタ(FCNA)1625の内容とが“4”となったため、FIFOカウンタのレジスタ(FC0A)1620の内容FC0Aとしてバッファカウント信号BCAの値“4”が書き込まれ、バッファA11から供給されるバッファ出力信号BOA(=D4)がFIFOA13の1段目のフリップフロップ(FF)1310のデータFO0として書き込まれる。この時点でのバッファカウント信号BCAの値“4”と比較サイクルCMPCYCの値“4”との加算値“8”が、レジスタ(FCNA)1625に書き込まれ、レジスタ(FSTA)1624の内容は“H0(データ無し)”から“H1(FO0にデータ有り)”に変更され、FIFOライト番号信号FWNA値は“0”から“1”に変更される。
図14の部分図(2−B)において、バッファカウント信号BCAの値が“2”となり、バッファB12からFIFOB14にバッファ出力信号BOB(=D2)が供給されても、FIFOB14への書き込みは、行われない。
図14の部分図(3−A)において、バッファカウント信号BCAの値とレジスタ(FCNA)1625の内容とが“8”となったため、FIFOカウンタのレジスタ(FC1A)1621の内容FC1Aとしてバッファカウント信号BCAの値“8”が書き込まれ、バッファA11から供給されるバッファ出力信号BOA(=D8)がFIFOA13の2段目のフリップフロップ(FF)1320のデータFO1として書き込まれる。この時点でのバッファカウント信号BCAの値“8”と比較サイクルCMPCYCの値“4”との加算値“12”がレジスタ(FCNA)1625に書き込まれ、レジスタ(FSTA)1624の内容は“H1(FO0にデータ有り)”から“H3(FO0とFO1にデータ有り)”に変更されて、FIFOライト番号信号FWNA値は“1”から“2”に変更される。
図14の部分図(3−B)において、バッファカウント信号BCBの値とレジスタ(FCNB)1635の内容とが“4”となったため、FIFOカウンタのレジスタ(FC0B)1630の内容FC0Bとしてバッファカウント信号BCBの値“4”が書き込まれ、バッファB12から供給されるバッファ出力信号BOB(=D4)がFIFOB14の1段目のフリップフロップ(FF)1310のデータFO0として書き込まれる。この時点でのバッファカウント信号BCBの値“4”と比較サイクルCMPCYCの値“4”との加算値“8”が、レジスタ(FCNB)1635に書き込まれ、レジスタ(FSTB)1624の内容は“H0(データ無し)”から“H1(FO0にデータ有り)”に変更され、FIFOライト番号信号FWNB値は“0”から“1”に変更される。
図14の部分図(4−A)では、FIFOA13の1段目のフリップフロップ(FF)1310のデータFO0としてバッファA11から供給されたバッファ出力信号BOA(=D4)が格納済みであって、FIFOB14の1段目のフリップフロップ(FF)1310のデータFO0としてバッファB12から供給されたバッファ出力信号BOB(=D4)が格納済みである。従って、同一のデータ(=D4)であるFIFO出力信号FOAとFIFO出力信号FOBとの比較器15による比較が実行されたため、FIFOA13の1段目のフリップフロップ(FF)1310は空き(無効)となり、レジスタ(FSTA)1624の内容は“H3(FO0とFO1にデータ有り)”から“H2(FO1にデータ有り)”に変更される。またFIFOリード番号信号FRNAの値が“0”から“1”に変更されたので、FIFOA13の読み出しデータFOAには2段目のフリップフロップ(FF)1320のデータFO1(=D8)が選択される。
図14の部分図(4−B)でも、同一のデータ(=D4)であるFIFO出力信号FOA(1300)とFIFO出力信号FOB(1400)の比較器15による比較が実行されたため、FIFOB14の1段目のフリップフロップ(FF)1310(FO0)が空き(無効)となり、レジスタ(FSTB)1634の内容は“H1(FO0にデータ有り)”から“H0(データ無し)”に変更される。またFIFOリード番号信号FRNBの値は“0”から“1”に変更されたので、FIFOB14の読み出しデータFOBには2段目のフリップフロップ(FF)1320のデータFO1(不定)が選択される。
図14の部分図(5−A)では、バッファカウント信号BCAの値とレジスタ(FCNA)1625の内容とが“12”となると、レジスタ(FC2A)1622の内容FC2Aとしてバッファカウント信号BCAの値“12”が書き込まれる。この時点のバッファカウント信号BCAの値“12”と比較サイクルCMPCYCの値“4”の加算値“16”がレジスタ(FCNA)1625に書き込まれて、レジスタ(FSTA)1624の内容は“H2(FO1にデータ有り)”から“H6(FO1とFO2にデータ有り)”に変更される。書き込みイネーブル信号FWEAがハイレベル“1”であるので、FIFOA13ではバッファA11から供給されるバッファ出力信号BOA(=D12)が3段目のフリップフロップ(FF)1330のデータFO2として書き込まれる。FIFOリード番号信号FRNAの値が“0”から“1”に変更されているので、FIFOA13の読み出しデータFOAには2段目のフリップフロップ(FF)1320のデータFO1(=D8)が選択される。またFIFOライト番号信号FWNAの値は、“2”から“3”に変更される。
図14の部分図(5−B)では、一方、バッファカウント信号BCBの値とレジスタ(FCNB)1635の内容が“8”となると、レジスタ(FC1B)1631の内容FC1Bとしてバッファカウント信号BCBの値“8”が書き込まれる。この時点でのバッファカウント信号BCBの値“8”と比較サイクルCMPCYCの値“4”の加算値“12”がレジスタ(FCNB)1635に書き込まれて、レジスタ(FSTB)1634の内容は“H0(データ無し)”から“H2(FO1にデータ有り)”に変更される。また、書き込みイネーブル信号FWEBがハイレベル“1”なので、FIFOB14ではバッファB12から供給されるバッファ出力信号BOB(=D8)が2段目のフリップフロップ(FF)1320のデータFO1として書き込まれる。またFIFOライト番号信号FWNBの値は、“1”から“2”に変更される。
図14の部分図(6−A)では、同一のデータ(=D8)であるFIFO出力信号FOAとFIFO出力信号FOBとの比較器15による比較が実行されたため、FIFOA13の2段目のフリップフロップ(FF)1320は空き(無効)となり、レジスタ(FSTA)1624の内容は“H6(FO1とFO2にデータ有り)”から“H4(FO2にデータ有り)”に変更される。FIFOリード番号信号FRNAの値が“1”から“2”に変更されたので、FIFOA13の読み出しデータFOAには3段目のフリップフロップ(FF)1330のデータFO2(=D12)が選択される。
図14の部分図(6−B)でも、同一のデータ(=D8)であるFIFO出力信号FOA(1300)とFIFO出力信号FOB(1400)の比較器15による比較が実行されたため、FIFOB14の2段目のフリップフロップ(FF)1320(FO1)が空き(無効)となり、レジスタ(FSTB)1634の内容は“H2(FO1にデータ有り)”から“H0(データ無し)”に変更される。またFIFOリード番号信号FRNBの値は“1”から“2”に変更されたので、FIFOB14の読み出しデータFOBに3段目のフリップフロップ(FF)1330のデータFO2(不定)が選択される。
図15は、図1に示した本発明の実施の形態1によるデュアルコアマイコンMCU1に含まれる図4に示したFIFOA13、B14の動作と図8に示した制御部16の動作とを、FIFOA13を中心に示した図である。この図15は、図12に示した動作タイミングチャートの続きの動作タイミングチャートである。
図16は、図1に示した本発明の実施の形態1によるデュアルコアマイコンMCU1に含まれる図4に示したFIFOA13、B14の動作と図8に示した制御部16の動作とを、FIFOB14を中心に示した図である。この図16は、図13に示した動作タイミングチャートの続きの動作タイミングチャートである。
図15において、5番目のクロック信号CLKでは、バッファA11から制御部16の制御部(CTA)1626に供給されるバッファカウント信号BCAの値は“15”で、制御部(CTA)1626に接続されたレジスタ(FCNA)1625の内容は“16”で、レジスタ(FSTA)1624の内容は“H4(FC2にデータ有り)”となっている。
6番目のクロック信号CLKでは、バッファA11から供給されるバッファカウント信号BCAの値は“16”となってレジスタ(FCNA)1625の内容“16”と一致すると、次の7番目のクロック信号CLKでは制御部(CTA)1626に接続されたレジスタ(FC3A)1623の内容FC3Aとしてバッファカウント信号BCAの値“16”が書き込まれる。また、この7番目のクロック信号CLKのタイミングで、この時点でのバッファカウント信号BCAの値“16”と比較サイクルCMPCYCの値“4”との加算値“20”がレジスタ(FCNA)1625に書き込まれ、レジスタ(FSTA)1624の内容は“HC(FO2とFO3にデータ有り)”となる。更に6番目のクロック信号CLKのタイミングで、制御部(CTA)1626からFIFOA13に供給される書き込みイネーブル信号FWEAがハイレベル“1”となるので、FIFOA13ではバッファA11から供給されるバッファ出力信号BOA(=D16)が4段目のフリップフロップ(FF)1340のデータFO3として書き込まれる。6番目のクロック信号CLKのタイミングで、制御部(CTA)1626からFIFOA13に供給されるFIFOリード番号信号FRNAの値は“2”であるので、FIFOA13の読み出しデータFOAには3段目のフリップフロップ(FF)1330のデータFO2(=D12)が選択されている。
一方、図16において、5番目のクロック信号CLKでは、バッファB12から制御部16の制御部(CTB)1636に供給されるバッファカウント信号BCBの値は“10”であり、レジスタ(FCNB)1635の内容は“12”で、レジスタ(FSTB)1634の内容は“0(データ無し)”となっている。次の6番目のクロック信号CLKでも更にその次の7番目のクロック信号CLKでも、状態は変化しない。
図15に戻り、16番目のクロック信号CLKでは、バッファA11から供給されるバッファカウント信号BCAの値は“20”となってレジスタ(FCNA)1625の内容“20”と一致すると、次の17番目のクロック信号CLKのタイミングで、制御部(CTA)1626に接続されたレジスタ(FC0A)1620の内容FC0Aとしてバッファカウント信号BCAの値“20”が書き込まれる。また、この17番目のクロック信号CLKのタイミングで、この時点でのバッファカウント信号BCAの値“20”と比較サイクルCMPCYCの値“4”との加算値“24”がレジスタ(FCNA)1625に書き込まれ、レジスタ(FSTA)1624の内容は“HC(FO2とFO3とにデータ有り)”から“HD(FO2、FO3、FO0に、データ有り)”に変更される。更に、16番目のクロック信号CLKのタイミングでは、制御部(CTA)1626からFIFOA13に供給される書き込みイネーブル信号FWEAが既にハイレベル“1”となっているので、FIFOA13ではバッファA11から供給されるバッファ出力信号BOA(=D20)が、1段目のフリップフロップ(FF)1310のデータFO0として書き込まれる。
一方、図16において、16番目のクロック信号CLKでは、バッファB12から制御部16の制御部(CTB)1636に供給されるバッファカウント信号BCBの値は“11”であり、レジスタ(FCNB)1635の内容は“12”で、レジスタ(FSTB)1634の内容は“0(データ無し)”となっている。
図15に戻り、22番目のクロック信号CLKでは、バッファA11から供給されるバッファカウント信号BCAの値は“24”となってレジスタ(FCNA)1625の内容“24”と一致すると、次の23番目のクロック信号CLKのタイミングで、制御部(CTA)1626に接続されたレジスタ(FC1A)1621の内容FC1Aとしてバッファカウント信号BCAの値“24”が書き込まれる。また、この22番目のクロック信号CLKのタイミングで、この時点でのバッファカウント信号BCAの値“24”と比較サイクルCMPCYCの値“4”との加算値“28”がレジスタ(FCNA)1625に書き込まれ、レジスタ(FSTA)1624の内容は“HD(FO2、FO3、FO0に、データ有り)”から“HF(FO2、FO3、FO0、FO1にデータ有り)”に変更される。更に、21番目のクロック信号CLKのタイミングでは、制御部(CTA)1626からFIFOA13に供給される書き込みイネーブル信号FWEAが既にハイレベル“1”となっているので、FIFOA13ではバッファA11から供給されるバッファ出力信号BOA(=D24)が、2段目のフリップフロップ(FF)1320のデータFO1として書き込まれる。
一方、図16において、22番目のクロック信号CLKでは、バッファB12から制御部16の制御部(CTB)1636に供給されるバッファカウント信号BCBの値は“11”であり、レジスタ(FCNB)1635の内容は“12”で、レジスタ(FSTB)1634の内容は“0(データ無し)”となっている。
図15に戻り、27番目のクロック信号CLKでは、バッファA11から供給されるバッファカウント信号BCAの値は“28”となって、レジスタ(FCNA)1625の内容“28”と一致する。しかし、FIFOA13に空きが無いため、バッファカウント信号BCAの値“28”およびバッファ出力信号BOA(=D28)の書き込みは行われない。
一方、図16において、30番目のクロック信号CLKでは、バッファB12から制御部16の制御部(CTB)1636に供給されるバッファカウント信号BCBの値は“12”であり、レジスタ(FCNB)1635の内容“12”と一致すると、次の31番目のクロック信号CLKのタイミングで、制御部(CTB)1636に接続されたレジスタ(FC2B)1632の内容FC2Bとしてバッファカウント信号BCBの値“12”が書き込まれる。また30番目のクロック信号CLKのタイミングで、この時点でのバッファカウント信号BCBの値“12”と比較サイクルCMPCYCの値“4”との加算値“16”がレジスタ(FCNB)1635に書き込まれ、レジスタ(FSTB)1634の内容は“H0(データ無し)”から“H4(FO2にデータ有り)”に変更される。更に、29番目のクロック信号CLKのタイミングでは、制御部(CTA)1626からFIFOB14に供給される書き込みイネーブル信号FWEBが既にハイレベル“1”となっているので、FIFOB14ではバッファB12から供給されるバッファ出力信号BOB(=D12)が、3段目のフリップフロップ(FF)1330のデータFO2として書き込まれる。
30番目のクロック信号CLKでは、比較イネーブル信号CEAと比較イネーブル信号CEBとがハイレベル“1”となったので、FIFOA13のFIFO出力信号FOA(1300)とFIFOB14のFIFO出力信号FOB(1400)を比較する比較器15の比較結果信号1500を示す比較出力信号CO(=C12)が有効な値となる。従って、31番目のクロック信号CLKでは、比較器15の比較出力信号CO(=C12)は、3入力AND回路1615を介して、比較状態レジスタ(CSR)1613の比較エラー信号CMPERRとして書き込まれる。また、同一のデータ(D12)であるFIFO出力信号FOA(1300)とFIFO出力信号FOB(1400)との比較器15による比較が実行されたため、FIFOB14の3段目のフリップフロップ(FF)1330は空きとなり、レジスタ(FSTB)1634の内容は“H4(FO2にデータ有り)”から“H0(データ無し)”に変更される。また31番目のクロック信号CLKのタイミングで制御部(CTB)1636からFIFOB14に供給されるFIFOリード番号信号FRNBの値が“2”から“3”に変更されたので、FIFOB14の読み出しデータFOBには4段目のフリップフロップ(FF)1340のデータFO3(=不定)が選択される。
図15に戻って、30番目のクロック信号CLKで比較器15による比較が実行されたため、31番目のクロック信号CLKでは、FIFOA13では3段目のフリップフロップ(FF)1330には空きが生じる。32番目のクロック信号CLKで、バッファA11から供給されるバッファカウント信号BCAの値“31”が次の31番目のクロック信号CLKのタイミングで、制御部(CTA)1626に接続されたレジスタ(FC2A)1622の内容FC2Aとしてバッファカウント信号BCAの値“31”が書き込まれる。また30番目のクロック信号CLKのタイミングで、この時点でのバッファカウント信号BCAの値“31”と比較サイクルCMPCYCの値“4”との加算値“35”がレジスタ(FCNA)1625に書き込まれ、レジスタ(FSTA)1624の内容は“HF(FO2、FO3、FO0、FO1にデータ有り)”の値で維持される。32番目のクロック信号CLKのタイミングでは、制御部(CTB)1636からFIFOA13に供給されるFIFOリード番号信号FRNAの値は “2”に設定されているので、FIFOA13の読み出しデータFOAには3段目のフリップフロップ(FF)1330のデータFO2(=D31)が選択され、32番目のクロック信号CLKのタイミングではFIFOA13のFIFO出力信号FOA(1300)はデータD31となる。
図17は、図1に示した本発明の実施の形態1によるデュアルコアマイコンMCU1の図15と図16とに示したFIFOA13、B14の動作タイミングチャートの重要なタイミングでのFIFOA13、B14の動作を示す図である。
図17の部分図(1−A)〜部分図(6−A)は、図15と図16とに示したFIFOA13、B14の動作タイミングチャートのタイミング(1)とタイミング(2)とタイミング(3)とタイミング(4)とタイミング(5)とタイミング(6)のタイミングにおけるFIFOA13の動作を示している。同様に、図17の部分図(1−B)〜部分図(6−B)は、図15と図16とに示したFIFOA13、B14の動作タイミングチャートのタイミング(1)とタイミング(2)とタイミング(3)とタイミング(4)とタイミング(5)とタイミング(6)のタイミングにおけるFIFOB14の動作を示している。
図17の部分図(1−A)において、バッファA11から制御部16の制御部(CTA)1626に供給されるバッファカウント信号BCAの値が“15”であり、制御部(CTA)1626に接続されたレジスタ(FCNA)1625の内容が“16”であり、FIFOカウンタとしてのレジスタ(FC2A)1622の内容“12”と2段目のフリップフロップ(FF)1330のデータFO2(=D12)とが有効であり、その他のレジスタ(FC0A)1620、(FC1A)1621、(FC3A)1623とその他のフリップフロップ(FF)1310、1320、1340は無効である。この時には、レジスタ(FSTA)1624の内容は“H4(FO2にデータ有り)”となっており、FIFOリード番号信号FRNAの値は“2(FO2)”となっており、FIFOライト番号信号の値は“3(FO3)”となっている。
図17の部分図(1−B)において、FIFOカウンタのレジスタ(FC0B)1630とレジスタ(FC1B)1631とレジスタ(FC2B)1632とレジスタ(FC3B)1633の内容と、FIFOB14の4段のフリップフロップ(FF)1310、1320、1330、1340の出力信号FO0、FO1、FO2、FO3の内容とは全て無効であり、レジスタ(FSTA)1624の内容は“H0(データ無し)”であり、レジスタ(FCNB)1635の内容は“12”である。従って、図17の部分図(1−B)に示した状態でのFIFOB14では、バッファカウント信号BCBの値が“10”となり、バッファB12からFIFOB14にバッファ出力信号BOB(=D10)が供給されても、FIFOB14への書き込みは行われない。この時に、FIFOライト番号信号FWNBとFIFOリード番号信号FRNBは、制御部16によって値“2(FO2)”に設定されている。
図17の部分図(2−A)では、バッファカウント信号BCAの値とレジスタ(FCNA)1625の内容とが“16”となったため、バッファカウント信号BCAの値“16”がレジスタ(FC3A)1623に書き込まれて、FIFOA13ではバッファA11から供給されるバッファ出力信号BOA(=D16)が4段目のフリップフロップ(FF)1340にデータFO3として書き込まれる。この時点でのバッファカウント信号BCAの値“16”と比較サイクルCMPCYCの値“4”との加算値“20”がレジスタ(FCNA)1625に書き込まれて、レジスタ(FSTA)1624の内容は“H4(FO2にデータ有り)”から“HC(FO2とFO3にデータ有り)”に更新される。またFIFOライト番号信号FWNAの値は“3”から“0”に更新され、FIFOリード番号信号FRNAの値は“2(FO2)”に維持されている。
図17の部分図(2−B) において、バッファカウント信号BCBの値が“10”であり、バッファB12から供給されるバッファ出力信号BOB(=D10)のFIFOB14への書き込みは行われない。
図17の部分図(3−A)において、バッファA11から供給されるバッファカウント信号BCAの値は“20”となりレジスタ(FCNA)1625の内容“20”と一致したため、レジスタ(FC0A)1620の内容FC0Aとしてバッファカウント信号BCAの値“20”が書き込まれ、バッファ出力信号BOA(=D20)が、1段目のフリップフロップ(FF)1310のデータFO0として書き込まれる。バッファカウント信号BCAの値“20”と比較サイクルCMPCYCの値“4”との加算値“24”がレジスタ(FCNA)1625に書き込まれ、レジスタ(FSTA)1624の内容は“HC(FO2とFO3とに、データ有り)”から“HD(FO2、FO3、FO0に、データ有り)”に変更される。またFIFOライト番号信号FWNAの値は、“0”から“1”に更新される。
図17の部分図(3−B)において、バッファB12から制御部16の制御部(CTB)1636に供給されるバッファカウント信号BCBの値は“11”であり、レジスタ(FCNB)1635の内容は“12”で、レジスタ(FSTB)1634の内容は“0(データ無し)”となっており、FIFOB14へのバッファB12から供給されるバッファ出力信号BOB(=D11)の書き込みは行われない。
図17の部分図(4−A)において、バッファA11から供給されるバッファカウント信号BCAの値は“24”となりジスタ(FCNA)1625の内容“24”と一致したため、レジスタ(FC0A)1621の内容FC1Aとしてバッファカウント信号BCAの値“24”が書き込まれる。また、バッファカウント信号BCAの値“24”と比較サイクルCMPCYCの値“4”との加算値“28”が、レジスタ(FCNA)1625に書き込まれ、バッファA11から供給されるバッファ出力信号BOA(=D24)が、2段目のフリップフロップ(FF)1320のデータFO1として書き込まれる。またレジスタ(FSTA)1624の内容は“HD(FO2、FO3、FO0に、データ有り)”から“HF(FO2、FO3、FO0、FO1にデータ有り)”に変更され、FIFOライト番号信号FWNAの値は“1”から“2”に更新される。
図17の部分図(4−B)において、バッファB12から制御部16の制御部(CTB)1636に供給されるバッファカウント信号BCBの値は“11”であり、レジスタ(FCNB)1635の内容は“12”で、レジスタ(FSTB)1634の内容は“0(データ無し)”となっており、FIFOB14へのバッファB12から供給されるバッファ出力信号BOB(=D11)の書き込みは行われない。
図17の部分図(5−A)において、バッファB12から制御部16の制御部(CTB)1636に供給されるバッファカウント信号BCBの値は“30”であり、レジスタ(FCNA)1625の値“28”を超過しているが、FIFOA13の全てのフリップフロップ(FF)1310、1320、1330、1340には空きがないので、FIFOA13へのバッファA11から供給されるバッファ出力信号BOA(=D30)の書き込みは行われない。
図17の部分図(5−B)において、バッファB12から制御部16の制御部(CTB)1636に供給されるバッファカウント信号BCBの値“12”とレジスタ(FCNB)1635の内容“12”と一致すると、レジスタ(FC2B)1632の内容FC2Bとしてバッファカウント信号BCBの値“12”が書き込まれる。また、この時点でのバッファカウント信号BCBの値“12”と比較サイクルCMPCYCの値“4”との加算値“16”がレジスタ(FCNB)1635に書き込まれ、レジスタ(FSTB)1634の内容は“H0(データ無し)”から“H4(FO2にデータ有り)”に変更される。FIFOB14では、バッファB12から供給されるバッファ出力信号BOB(=D12)が、3段目のフリップフロップ(FF)1330のデータFO2として書き込まれる。またFIFOライト番号信号FWNBの値とFIFOリード番号信号FRNBの値とは、“2”から“3”に更新される。
図17の部分図(6−A)において、FIFOA13では3段目のフリップフロップ(FF)1330には空きが生じたので、バッファA11から供給されるバッファカウント信号BCAの値“31”が制御部(CTA)1626に接続されたレジスタ(FC2A)1622の内容FC2Aとして書き込まれる。またバッファA11から供給されるバッファ出力信号BOA(=D31)が、3段目のフリップフロップ(FF)1330のデータFO2として書き込まれる。この時点のバッファカウント信号BCAの値“31”と比較サイクルCMPCYCの値“4”との加算値“35”がレジスタ(FCNA)1625に書き込まれ、レジスタ(FSTA)1624の内容は“HF(FO2、FO3、FO0、FO1にデータ有り)”の値で維持される。FIFOリード番号信号FRNAの値は“2”に維持されて、FIFOライト番号信号FWNAの値は“2”から“3”に更新される。
図17の部分図(6−B)において、レジスタ(FSTB)1634の内容は“H0(データ無し)”に変更されているので、FIFOB14の4段のフリップフロップ(FF)1310、1320、1330、1340の出力信号FO0、FO1、FO2、FO3は全て無効であり、FIFOリード番号信号FRNBの値とFIFOライト番号信号FWNBの値とは“2”から“3”に更新される。
《通常動作の並列データ処理から故障検出動作の冗長動作への移行》
図18は、図1に示した本発明の実施の形態1において、デュアルコアマイコンMCU1の通常動作の2個のCPUA2、B6による並列データ処理から故障検出動作のための2個のCPUA2、B6による冗長動作に移行する様子を示す図である。
図18に示すように、図1に示した本発明の実施の形態1によるデュアルコアマイコンMCU1の通常動作の2個のCPUA2、B6による並列データ処理では、CPUA2は個別タスク200を実行して、CPUB6は個別タスク600を実行して、タスク200とタスク600はそれぞれ異なるタスクである。
その後、CPUA2は故障検出動作のための冗長タスク203を実行するために、冗長タスク起動処理201を実行する。CPUB6の故障検出動作のための冗長タスク603の起動は、例えば、CPUA2からCPUB6への割り込み処理等を用いて実現できる。
冗長タスク起動処理201の後の実行準備処理202において、CPUA2は比較制御レジスタ(CCR1)1611に設定値“H0003”を書き込み、バッファA11にカウンタリセット信号CNTRSTとカウントイネーブル信号CNTENとを供給する。すなわち、図10に示したように、カウントリセット信号CNTRSTによりバッファA11のカウンタリセットが実行されて、カウントイネーブル信号CNTENによりCPUA2の出力データがバッファA11に保持されカウントされるものとなる。その次にCPUA2は比較制御レジスタ(CCR0)1610に設定値“H0304”を書き込んで、比較器15の故障検出動作に関して割り込み許可信号INTENに設定値“1”を、比較許可比較イネーブル信号CMPENに設定値“1”を、比較周期比較サイクルCMPCYCに設定値“4”をそれぞれ設定する。
一方、CPUB6は個別タスク600の実行中にCPUA2からの割り込み204を受け付けて、実行準備処理602を実行する。この実行準備処理602において、CPUB6は比較制御レジスタ(CCR2)1612に設定値“H0003”を書き込んで、バッファB12にカウンタリセット信号CNTRSTとカウントイネーブル信号CNTENとを供給する。すなわち、図10に示したように、カウントリセット信号CNTRSTによりバッファB12のカウンタリセットが実行されて、カウントイネーブル信号CNTENによりCPUB6の出力データがバッファB12に保持されカウントされるものとなる。
実行準備処理202、602によって2個のCPUA2、B6による冗長動作の実行準備が完了すると、2個のCPUA2、B6は故障検出動作のため冗長タスク203、603をそれぞれ実行する。すなわち、2個のCPUA2、B6は、同一のオペランドデータに関して同一の冗長タスクプログラムを実行する。2個のFIFOA13、B14によって選択されて出力される所定の出力回数のデータは、比較器15によって比較される。比較器15による比較結果が一致する場合には、図1のデュアルコアマイコンMCU1に故障が存在しないと判定されて、比較器15による比較結果が不一致の場合には、図1のデュアルコアマイコンMCU1に故障が存在すると判定される。更に、比較器15による比較結果が不一致の場合には、比較器15の比較結果信号1500(CO)に応答して制御部16は割り込み発生回路17に割り込み要求信号1604(C_INTREQ)を発生する。従って、図1に示す本発明の実施の形態1によるデュアルコアマイコンMCU1に故障が発生して2個のCPUA2、B6の一方が異常動作している旨を通知する例外処理が、割り込み発生回路17による割り込み要求信号1604(C_INTREQ)に応答して起動される。この例外処理は、例えば、自動車の運転席のダッシュボードの表示機器によって、デュアルコアマイコンMCU1の故障発生を通知するものである。従って、自動車の所有者は、故障発生が通知されたデュアルコアマイコンMCU1を搭載する自動車の整備や修理が必要であることを知ることが可能となる。
CPUA2による冗長タスク203の実行が終了するとCPUA2は次のタスクの実行に移行する一方、CPUB6による冗長タスク603の実行が終了すると、CPUB6は割り込み復帰を行って、元の個別タスク600に復帰する。
また本発明において、故障検出動作のための2個のCPUA2、B6による冗長動作への移行は、上述した割り込み204の受け付けのみに限定されるものではない。それ以外に、図1に示した本発明の実施の形態1によるデュアルコアマイコンMCU1の電源投入時の初期化シーケンスにおいて、故障検出動作のための2個のCPUA2、B6による冗長動作を行うものとすることが可能である。すなわち、2個のCPUA2、B6による冗長動作を行い、デュアルコアマイコンMCU1に故障が存在しないと判定されてから、初めて通常動作の2個のCPUA2、B6の並列データ処理を開始するものである。更に、通常動作の2個のCPUA2、B6の並列データ処理を開始した後に、冗長動作を開始する命令や割り込みを2個のCPUA2、B6のいずれか一方から定期的に発行することによって、故障検出動作のための2個のCPUA2、B6による冗長動作を定期的に実行することも可能である。この時に故障検出動作のために2個のCPUA2、B6により実行される冗長動作の内容を、2個のCPUA2、B6のいずれか一方でそれ以前に実行されていた通常動作のデータ処理の内容とされることが可能である。
[実施の形態2]
《バッファメモリの他の構成》
図19は、図1に示すデュアルコアマイコンMCU1に含まれる本発明の実施の形態2によるバッファメモリとしてのバッファA11、B12の他の構成を示す図である。
図19に示す本発明の実施の形態2によるバッファメモリとしてのバッファA11、B12が図2に示した本発明の実施の形態1によるバッファメモリとしてのバッファA11、B12と相違するのは、以下の点である。
すなわち、図19に示す本発明の実施の形態2によるバッファメモリA11、B12に、図2に示した本発明の実施の形態1によるバッファメモリに含まれていない演算回路(OP)1170が追加されている。
図19に示したように、演算回路(OP)1170の一方の入力端子と他方の入力端子とにライトデータWDとフリップフロップ(FF)1150のバッファ出力信号BOとがそれぞれ供給され、演算回路(OP)1170の出力端子はフリップフロップ(FF)1150のデータ入力端子に接続されている。更に図19に示したように、制御部16からのパワーオンリセット信号RSTとカウンタリセット信号CNRはOR回路1140で論理和され、OR回路1140の出力によってカウンタ(CNT)1160とフリップフロップ(FF)1150とがリセットされる。
図19に示すバッファメモリA11、B12では、演算回路(OP)1170は一方の入力端子と他方の入力端子にそれぞれ供給されるライトデータWDとバッファ出力信号BOを所定の演算アルゴリズムに従って演算処理するので、この演算処理の結果に基づく出力信号が演算回路(OP)1170の出力端子から生成される。演算回路(OP)1170の出力端子から生成される出力信号は、AND回路1130の出力から生成されるバッファライトイネーブル信号BWEがハイレベル“1”の期間に、フリップフロップ(FF)1150に格納される。
従って、図19に示したバッファメモリA11、B12では、CPUA2、CPUB6から順次に供給される複数のライトデータWDの全ての値に依存した出力信号が演算回路(OP)1170の出力端子から生成される。その結果、CPUA2からバッファメモリA11へ順次供給される複数のライトデータWDとCPUB6からバッファメモリB12へ順次供給される複数のライトデータWDとが一部のみ相違するだけで、バッファメモリA11の演算回路(OP)1170の出力端子から生成される出力信号とバッファメモリB12の演算回路(OP)1170の出力端子から生成される出力信号とが相違する。
そのため、図19に示した本発明の実施の形態2によるバッファメモリA11、B12を図1に示したデュアルコアマイコンMCU1で使用することによって、2個のCPUA2、B6の一方での異常の検出確率を著しく向上することが可能となる。尚、バッファメモリA11、B12に順次に供給される複数のライトデータWDの値がバッファ出力信号BOの値に影響を与えるための演算回路(OP)1170の演算アルゴリズムとしては、論理和ORや論理積ANDや排他的論理和EXOR等の比較的単純な論理演算が選択される。比較的単純な論理演算とすることで、演算回路(OP)1170が高速化されると言う利点がある。
《演算機能付きのバッファメモリの動作》
図20は、図19に示した本発明の実施の形態2による演算機能付きのバッファメモリA11、B12の動作を説明する図である。
図20に示す本発明の実施の形態2による演算機能付きのバッファメモリA11、B12の動作が図3に示した本発明の実施の形態1によるバッファA11、B12の動作と相違するのは、以下の点である。
すなわち、図20に示す本発明の実施の形態2による演算機能付きのバッファメモリA11、B12の動作では、クロック信号CLKの1番目から6番目までの期間でフリップフロップ(FF)1150のバッファ出力信号BOの値は初期値BO0(=H0)に設定される。
次にクロック信号CLKの7番目と8番目との間の期間では、フリップフロップ(FF)1150のバッファ出力信号BOの値は初期値BO0とライトデータWDのデータD3との演算処理(OP)の演算結果の値BO1(=OP(BO0、D3))となる。
更に、クロック信号CLKの8番目と14番目との間の期間では、フリップフロップ(FF)1150のバッファ出力信号BOの値は以前の演算結果の値BO1とライトデータWDのデータD4との演算処理(OP)の演算結果の値BO2(=OP(BO1、D4))となる。
また、クロック信号CLKの14番目と15番目との間の期間では、フリップフロップ(FF)1150のバッファ出力信号BOの値は以前の演算結果の値BO2とライトデータWDのデータD8との演算処理(OP)の演算結果の値BO3(=OP(BO2、D8))となる。
以上説明したように、図19と図20に示した本発明の実施の形態2によれば、バッファメモリA11、B12では、CPUA2、CPUB6から順次に供給される複数のライトデータWDの全ての値に依存した出力信号が演算回路(OP)1170の出力端子から生成される。そのため、図19に示す本発明の実施の形態2によるバッファメモリA11、B12を図1に示したデュアルコアマイコンMCU1で使用することによって、2個のCPUA2、B6の一方での異常の検出確率を著しく向上することが可能となる。
[実施の形態3]
《シングルコアマイコンの構成》
図21は、本発明の実施の形態3によるシングルコアマイコンMCU1の構成を示す図である。
図21に示した本発明の実施の形態3によるシングルコアマイコンMCU1が、図1に示した本発明の実施の形態1によるデュアルコアマイコンMCU1と相違するのは、以下の点である。
すなわち、図21に示した本発明の実施の形態3によるシングルコアマイコンMCU1では、高信頼性を実現するための多重の冗長動作が図1に示したように2個のCPUA2、CPUB6による並列動作で実行されるのではなく、単一のCPUA2による2重動作で実行されることである。
従って、図21に示す本発明の実施の形態3によるシングルコアマイコンMCU1では、図1に示した本発明の実施の形態1によるデュアルコアマイコンMCU1に含まれていたCPUB6とメモリB7とCPUBバス8とブリッジB9とが省略されている。その代わりに、図21に示す本発明の実施の形態3によるシングルコアマイコンMCU1では、バッファB12がCPUAバス4に接続されているので、バッファB12はCPUA2から特定のアドレス空間に出力されるデータを保持してその出力回数をカウントするものである。
例えば、2重動作では、単一のCPUA2は同一のオペランドデータに関して同一の冗長タスクプログラムを2回実行する。1回目の動作すなわち2重動作の一方の動作によって、CPUA2から特定のアドレス空間に出力される書き込みデータは、メモリA3とバッファA11に二重書き込みされる。2回目の動作すなわち2重動作の他方の動作によって、CPUA2から特定のアドレス空間に出力される書き込みデータは、メモリA3とバッファB12に二重書き込みされる。
図21に示した本発明の実施の形態3によるシングルコアマイコンMCU1に故障が存在せずに単一のCPUA2が常に正常に動作している場合には、バッファA11、B12に格納された書き込みデータは同一となる。しかし、図21に示した本発明の実施の形態3によるシングルコアマイコンMCU1に故障が発生して単一のCPUA2が異常動作している場合には、バッファA11、B12に格納された書き込みデータは不一致となり、故障検出が可能となる。
図21に示した本発明の実施の形態3によるシングルコアマイコンMCU1でも、図1に示した本発明の実施の形態1と同様に、2個のFIFOA13、B14は、2個のバッファA11、B12を経由してCPUA2から冗長タスク演算結果として順次に出力され供給される複数のデータから所定の出力回数のデータのみを選択して格納する一方、それ以外の出力回数のデータは非選択として破棄するものである。2個のFIFOA13、B14によって選択されて出力される所定の出力回数のデータは、比較器15により比較される。比較器15による比較結果が一致する場合には、図21のシングルコアマイコンMCU1に故障が存在しないと判定されて、比較器15による比較結果が不一致の場合には、図21のシングルコアマイコンMCU1に故障が存在すると判定される。
更に図21に示した本発明の実施の形態3によるシングルコアマイコンMCU1では、バッファA11、B12として図19と図20に示した本発明の実施の形態2による演算機能付きのバッファメモリA11、B12を使用することで、単一のCPUA2の異常の検出確率を著しく向上することが可能となる。
[実施の形態4]
《トリプルコアマイコンの構成》
図22は、本発明の実施の形態4によるトリプルコアマイコンMCU1の構成を示す図である。
図22に示した本発明の実施の形態4によるトリプルマイコンMCU1が、図1に示した本発明の実施の形態1によるデュアルコアマイコンMCU1と相違するのは、以下の点である。
すなわち、図22に示した本発明の実施の形態4によるトリプルコアマイコンMCU1には、第3中央処理ユニットとしてのCPUC18と、第3内蔵メモリとしてのメモリC19と、第3CPUバスとしてのCPUCバス20、第3バスブリッジとしてのブリッジC21と、第3バッファメモリとしてのバッファC22、第3FIFOメモリとしてのFIFOC23が追加されている
第3バッファメモリとしてのバッファC22は、CPUC18とが特定のアドレス空間に出力する書き込みデータを保持して、その出力回数をカウントする。第3バッファメモリとしてのバッファC22も、CPUC18が特定のアドレス空間に出力する書き込みデータを保持して、その出力回数をカウントする。第3FIFOメモリとしてのFIFOC23はバッファC22の出力データ2201を保持する。
比較器15は、FIFOA13の出力データ1300とFIFOB14の出力データ1400とFIFOメモリの出力データ2300とを比較する。
《トリプルコアマイコンでの通常動作》
図22に示した本発明の実施の形態4によるトリプルコアマイコンMCU1は高性能を実現するために、3個のCPUA2、B6、C18にそれぞれ独立したデータ処理を並列に実行させる。3個のCPUA2、B6、C18による並列処理結果は、3個のメモリA3、B7、C19に並列に格納可能である。更に3個のメモリA3、B7、C19のデータは、3個のブリッジA5、B9、C21を介して、システムバス10に転送されることも可能である。
《トリプルコアマイコンでの冗長動作》
図22に示す本発明の実施の形態4によるトリプルコアマイコンMCU1は高信頼性を実現するために、3個のCPUA2、B6、C18に同一のデータ処理を実行させその処理結果の不一致を検出して故障を検出するようにした冗長動作が実行される。
この冗長動作のために、3個のCPUA2、B6、C18は、同一のオペランドデータに関して同一の冗長タスクプログラムを実行する。図22のトリプルコアマイコンMCU1に故障が存在せず3個のCPUA2、B6、C18が正常に動作している場合には、3個のCPUA2、B6、C18から特定のアドレス空間に出力されメモリA3、B7、C18とバッファA11、B12、C22に二重書き込みされる書き込みデータは同一となる。しかし、図22のトリプルコアマイコンMCU1に故障が発生して3個のCPUA2、B6、C18のいずれかが異常動作している場合には、3個のCPUA2、B6、C18から特定のアドレス空間に出力されメモリA3、B7、C18とバッファA11、B12、C22とに二重書き込みされる書き込みデータは不一致となり、故障検出が可能となる。
3個のFIFOA13、B14、C23は、3個のバッファA11、B12、C22を経由して3個のCPUA2、B6、C18から冗長タスク演算結果として順次に出力されて供給される複数のデータから所定の出力回数のデータのみを選択して格納する一方、それ以外の出力回数のデータは非選択として破棄するものである。3個のFIFOA13、B14、C23によって選択されて出力される所定の出力回数のデータは、比較器15によって比較される。比較器15による比較結果が一致する場合には、図22のトリプルコアマイコンMCU1に故障が存在しないと判定されて、比較器15による比較結果が不一致の場合には、図22のトリプルマイコンMCU1に故障が存在すると判定される。従って、高性能の3個のCPUA2、B6、C18から順次に出力される複数のデータによって3個のFIFOA13、B14、C23に短時間に空き領域がなくなり、3個のCPUA2、B6、C18が容易にストールするかウェイトされると言う問題が解消されることが可能となる。
更に図22に示した本発明の実施の形態4によるトリプルコアマイコンMCU1では、バッファA11、B12、C22として、図19と図20とに示した本発明の実施の形態2による演算機能付きのバッファメモリを使用することで、単一のCPUA2の異常の検出確率を著しく向上することが可能となる。
[実施の形態5]
《他のトリプルコアマイコンの構成》
図23は、本発明の実施の形態5による他のトリプルコアマイコンMCU1の構成を示す図である。
図23に示した本発明の実施の形態5によるトリプルマイコンMCU1が、図22に示す本発明の実施の形態4によるトリプルコアマイコンMCU1と相違するのは、以下の点である。
すなわち、図23に示した本発明の実施の形態5によるトリプルマイコンMCU1では、3個のCPUA2、B6、C18の処理結果の一致・不一致の検出を3つの機能ブロック24、25、26により実行するようにしたものである。
図23に示した本発明の実施の形態5によるトリプルマイコンMCU1に含まれた3つの機能ブロック24、25、26の構成は、同一である。特に、3つの機能ブロック24、25、26の各機能ブロックは、図1乃至図18に示した本発明の実施の形態1で説明したバッファA11とバッファB12とFIFOA13とFIFOB14と比較器15と制御部16とを含むものである。
従って、第1機能ブロック24は第1CPUA2の出力データと第2CPUB6の出力データとを比較して、両方の出力データが不一致となる場合には、割り込み発生回路17に割り込み要求2400を出力することが可能である。また第2機能ブロック25は第2CPUB6の出力データと第3CPUC18の出力データとを比較して、両方の出力データが不一致となる場合には、割り込み発生回路17に割り込み要求2500を出力することが可能である。最後の第3機能ブロック26は第1CPUA2の出力データと第3CPUC18の出力データとを比較して、両方の出力データが不一致となる場合には、割り込み発生回路17に割り込み要求2600を出力することが可能である。割り込み発生回路17は、3つの機能ブロック24、25、26からの3つの割り込み要求を受け付けることが可能である。従って、図23に示す本発明の実施の形態5によるトリプルコアマイコンMCU1に故障が発生して3個のCPUA2、B6、C18のいずれかが異常動作している旨を通知する例外処理が、割り込み発生回路17への割り込み要求信号2400、2500、2600のいずれかに応答して起動される。
[実施の形態6]
《自動車への高信頼性マイコンの搭載》
図24は、図1乃至図18に示した本発明の実施の形態1によるデュアルコアマイコンMCU1または図19と図20とに示した本発明の実施の形態2による演算機能付きのバッファメモリA11、B12を使用したデュアルコアマイコンMCU1または図21に示した本発明の実施の形態3によるシングルコアマイコンMCU1または図22に示した本発明の実施の形態4によるトリプルマイコンMCU1または図23に示した本発明の実施の形態5によるトリプルマイコンMCU1を搭載した本発明の実施の形態6による自動車の構成を示す図である。
上述したように本発明の種々の実施の形態によるマイコンMCU1は、高信頼性を実現するための多重の冗長動作の機能を有するように構成されたものである。特に、多重の冗長動作の機能を利用することによって、マイコンMCU1の故障検出が可能となったものである。その結果、マイコンMCU1の故障が検出されない限り、本発明の種々の実施の形態によるマイコンMCU1の演算結果は高信頼性を有するものであるので、高い安全性と高精度とが必要とされる自動車へのマイコンMCU1の搭載が可能とされたものである。
図24は、一例として、上述した本発明の種々の実施の形態によるマイコンMCU1が、自動車27のエンジン28を制御する電子制御装置(ECU:Electronic Control Unit)29の内部に搭載される様子を示したものである。従って、図24に示した本発明の実施の形態6によれば、自動車27のエンジン28の制御を、高信頼性かつ高精度とすることが可能となる。
以上、本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、本発明は、4個のCPUを有するクワッドコアマイコンMCU1にも適用可能であることは、言うもでもない。この際には、4個のバッファと4個のFIFOとが使用されて、4個のFIFOの出力信号は比較器に供給される。
また更に本発明は、マイクロコントローラの内蔵CPUの故障検出のための多重冗長動作にのみに限定されるものではない。本発明は、広範囲の用途の半導体集積回路の種々の内蔵機能モジュール、例えば、不動少数点演算ユニット(FPU:Floating Point number processing Unit)、暗号処理プロセッサ、MPEGデコーダ、2D画像処理プロセッサ、3D画像処理プロセッサ等の故障検出用の多重冗長動作に適用されることが可能である。
更に本発明は半導体集積回路の通常動作前の電源投入時の初期化シーケンスでの故障検出動作のための多重冗長動作や通常動作の開始後の故障検出動作のための多重冗長動作にのみに限定されるものではない。本発明による半導体集積回路の検査のための多重冗長動作は、例えば工場出荷前の半導体ウェハ段階での半導体集積回路の半導体チップの良品と不良品を判別する試験であるBIST(Built In Self Test)に適用することが可能である。