以下、本発明の実施形態について図面を参照して説明する。なお、第2実施形態以降の説明において、第1実施形態と同様の構成については、同一符号を付し、説明を省略する。
1.第1実施形態
本発明の第1実施形態について図1を参照して説明する。
図1は、本実施形態の集積回路装置1のブロック図である。集積回路装置1は、不揮発性メモリー10、第1のレジスター20、第2のレジスター22、比較部30を含む。
不揮発性メモリー10は、入力データ400を二重化して書き込むために第1のブロック100と第2のブロック102を含む。なお、本実施形態では不揮発性メモリー10は不揮発性であり例えばEEPROMであるが、書き換えが可能であれば他の種類のメモリーであっても構わない。例えば、揮発性のSRAMやDRAMであってもよい。本実施形態では不揮発性メモリー10がその内部に2つのメモリーブロック(以下、ブロックとする)を有しているが、物理的に異なる2つのメモリーが第1のブロック100と第2のブロック102として使用されてもよい。ブロックは、データのアクセスの際にCS信号(チップセレクト信号)などで選択される物理的な区分であってもよいし、同様の管理をソフトウェア等で行う論理的な区分であってもよい。また、本実施形態では取得データの二重化を行っているが、不揮発性メモリー10が3つ以上のブロックを含む多重化を行ってもよい。
入力データ400は第1のブロック100に書き込まれる。第1のブロック100に書き込まれたデータ(以下、第1メモリーデータとする)410は、所与の条件で第1のレジスター20に書き込まれる。ここで、所与の条件とは、例えば第1のレジスター20に入力されるクロックのエッジに同期することであってもよいし、予め定められた書き込み許可条件を満たすことでもよい。
第1のレジスター20に書き込まれたデータ(以下、第1レジスターデータとする)420は集積回路装置1の内部又は外部に出力されて、後段において例えばアナログ回路等の設定値や調整値として用いられる。例えば、集積回路装置1が車載用である場合、第1レジスターデータ420に基づいて、自動車の運行上重要な姿勢制御が行われるかもしれない。このとき、第1レジスターデータ420のエラーによって、自動車の安全運行に支障がでる恐れがある。このような用途においては特に、第1レジスターデータ420の誤り判定を行うことは重要である。なお、リセット端子にノイズの影響を受けた信号が入力されて、誤って第1レジスターデータ420が初期化されることを防ぐために、第1のレジスター20はリセット入力を持たないレジスターであることが好ましい。
第1メモリーデータ410の場合と同様に、入力データ400は第2のブロック102に書き込まれる。第2のブロック102に書き込まれたデータ(以下、第2メモリーデータとする)412は、所与の条件で第2のレジスター22に書き込まれる。ここで、所与の条件は、第1メモリーデータ410が第1のレジスター20に書き込まれる条件と同じでも異なっていてもよいが、比較部30において正確な誤り判定ができるように、同一の条件であることが好ましい。第2のレジスター22に書き込まれたデータ(以下、第2レジスターデータとする)422は、第1レジスターデータ420の誤り判定に用いる比較用データとして使用される。なお、第1のレジスター20と同様の理由により、第2のレジスター22もリセット入力を持たないレジスターであることが好ましい。
比較部30は、第1レジスターデータ420の誤り判定を行う。比較部30は第1メモリーデータ410、第2メモリーデータ412、第1レジスターデータ420、第2レジスターデータ422を受け取る。そして、比較部30は、次の第1〜第3の比較処理を行ってもよい。
比較部30は、例えば第1メモリーデータ410と第2メモリーデータ412とを比較し、データの値が一致するか否かを判定する第1の比較処理を行う。比較部30は、少なくとも初期設定の期間に第1の比較処理を行うが、初期設定完了後の通常動作時にも第1の比較処理を行ってもよい。
比較部30は、第1レジスターデータ420と対応付けられた第1のブロックに書き込まれたデータである第1メモリーデータ410とを比較し、データの値が一致するか否かを判定する第2の比較処理を行う。第2レジスターデータ422についても、対応付けられた第2のブロックに書き込まれたデータである第2メモリーデータ412と比較し、データの値が一致するか否かを判定する第2の比較処理を行う。それぞれの経路において、例えばノイズ等の影響によるレジスターへの書き込みエラーが生じていないかを判定するためである。なお、第2の比較処理では、全ての(本実施形態では4つの)データを比較してデータの値が一致するか否かを判定してもよい。このとき、より多くのデータと比較するので検出の信頼性が向上する。本実施形態において、第1の比較処理と同様に、比較部30は少なくとも初期設定の期間に第2の比較処理を行うが、通常動作時にも第2の比較処理を行ってもよい。
比較部30は、例えば第1レジスターデータ420と第2レジスターデータ422とを比較し、データの値が一致するか否かを判定する第3の比較処理を行う。本実施形態では、比較部30は通常動作において常時第3の比較処理を行うが、初期設定の期間に第3の比較処理を行ってもよい。
なお、第1の比較処理、第2の比較処理、第3の比較処理において、データの比較は1ビットずつ行ってもよいし、全体(全ビット)を一度に比較してもよい。1ビットずつの比較を行う場合には、比較に用いる回路(比較器)の規模が小さいとの利点があるが、比較を完了するまでに時間がかかる。逆に、全体を一度に比較する場合には、回路規模は大きくなるが比較の完了までの時間が短縮できる。そこで、例えば、第1の比較処理と第2の比較処理が初期設定の期間に行われ、第3の比較処理が通常動作時に行われるとする。このとき、誤りの発生を直ちに検出する必要がある第3の比較処理については全体を一度に比較し、誤り検出にそれほど緊急性が要求されない第1の比較処理と第2の比較処理については1ビットずつの比較を行ってもよい。
そして、比較部30は、第1〜第3の比較処理の結果からデータの不一致を検知した場合には、後段に出力される第1レジスターデータ420は誤りを含むデータであると判断する。このとき、比較部30は、第1レジスターデータ420が誤りを含むことを集積回路装置1の内部又は外部のモジュールに知らせるエラー検出信号430を出力してもよい。
なお、不揮発性メモリー10が3つ以上のブロックを含む多重化を行う場合には、レジスターの数や関連する信号もブロックの数に合わせて増やす必要がある。このとき、データの経路が多重化され、より多くの比較用データを用いて第1レジスターデータ420の誤り判定を行うことが可能になる。多くの比較用データを有することは、第1レジスターデータ420の誤り判定の正確さを向上させる。しかし一方で、比較部30の回路規模は増大する。よって、本実施形態のように2つのブロック100、102からなる不揮発性メモリー10と2つのレジスター20、22を含む構成は、回路規模を最小限に抑えながら故障検出を行うことを可能にする。そして、二重化であるとしても、第1〜第3の比較処理を行うことによってメモリーやレジスターへの書き込みエラーや偶発的なノイズによるエラー等を検出できるので、信頼性の高い故障検出が可能である。
また、レジスターのサイズは不揮発性メモリー10のブロックのサイズと同じであることが好ましい(例えば、共に64ビット)が、メモリーデータをレジスターへ書き込む際のデータサイズは別のサイズ(例えばバイト単位や32ビット単位)であってもよい。
2.第2実施形態
本発明の第2実施形態について図2〜図9を参照して説明する。なお、第1実施形態と同様の構成については、同一符号を付して説明を省略し、主として相違点について説明する。
図2は、本実施形態の集積回路装置1Aのブロック図である。集積回路装置1Aは、第1実施形態と同様に、不揮発性メモリー10、第1のレジスター20、第2のレジスター22、比較部30Aを含む。比較部30Aは、図1の比較部30に対応し、それぞれ第1、第2、第3の比較処理をおこなう第1の比較部301、第2の比較部302、第3の比較部303を含む。
そして、集積回路装置1Aは、入力データ400Aをブロック100、102に書き込み、メモリーデータのそれぞれを所与のタイミングで対応付けられたレジスター420、422に書き込む制御を行う書き込み制御部70を含む。書き込み制御部70は、シリアルインターフェース部(シリアルI/F部)50と初期設定部60を含む。なお、シリアルインターフェース部50は双方向のシリアルデータを扱うが、本実施形態では主にレジスター20、22への書き込み要求があるとして説明する。
シリアルインターフェース部50は、集積回路装置1Aの内部又は外部のモジュール等と不揮発性メモリー10、初期設定部60、レジスター20、22等がシリアル通信を行う場合のインターフェースとして機能する。例えば、シリアルインターフェース部50は、シリアルデータ450を受け取った場合に、パラレル形式に変換して不揮発性メモリー10の入力データ400Aとして出力してもよい。
なお、本実施形態ではシリアル通信を行うシリアルインターフェース部50であるが、パラレル通信を行うインターフェース部であってもよい。すなわち、集積回路装置1Aの内部、又は外部のモジュール等からレジスター20、22等にアクセスする通信におけるインターフェース部であれば、その通信形式は限定されない。また、シリアル通信の場合に、その方式はI2Cバスのプロトコルに従ってもよいし、SPI(Serial Peripheral Interface)に従ってもよいし、その他の通信方式であってもよい。
初期設定部60は、第1のレジスター20および第2のレジスター22にデータを書くために、その内部ステートマシンの遷移状態に応じた制御信号444を生成する。本実施形態では、集積回路装置1Aは通常動作時に、第1のレジスター20から後段のモジュールに第1レジスターデータ420を供給する必要がある。そのため、少なくとも初期設定の期間において初期設定部60が動作する。シリアルインターフェース部50は制御信号444に基づいて、不揮発性メモリー10の入力データ400Aや、後述するレジスター20、22のストローブ信号440、442や、図外のライトイネーブル信号などを生成してもよい。
また、初期設定部60は、通常動作時において第1のレジスター20および第2のレジスター22を書き換えるときに動作してもよい。例えばシリアルインターフェース部50がレジスター20、22を更新するデータをシリアルデータ450として受け取った場合に、初期設定部60は、初期設定と同様に制御信号444を生成して、同じ手順で第1のレジスター20および第2のレジスター22を書き換えることができる。
初期設定を行う場合には、例えば第1のレジスター20の後段に配置されたアナログ回路部から設定値を求めるリクエスト信号620が初期設定部60に入力される。以下、レジスター20、22のデータ更新を求める信号をリクエスト信号と呼ぶ。初期設定部60は、リクエスト信号620を受け取ることで制御信号444を出力してもよい。
ここで、予めシリアルインターフェース部50は、初期設定値をシリアルデータ450として受け取り、不揮発性メモリー10に書き込んでいる。二重化により第1のブロック100と第2のブロック102に書き込まれた初期設定値は、それぞれ第1メモリーデータ410、第2メモリーデータ412として不揮発性メモリー10から出力される。そして、制御信号444等が定めるタイミングで、それぞれレジスター20、22に書き込まれる。第1実施形態と同様に、第1の比較処理、第2の比較処理、第3の比較処理が比較部30Aにおいて行われ、データの一致又は不一致に応じた処理が行われる。そして、第1レジスターデータ420はアナログ回路部等へ設定値として出力される。
ここで、第1のレジスター20、第2のレジスター22は、それぞれストローブ信号440、442を用いて第1メモリーデータ410、第2メモリーデータ412を取り込む非同期レジスターであってもよい。加えて、制御信号444に基づいて、第1のレジスター20および第2のレジスター22のライトイネーブル信号(図外)がシリアルインターフェース部50から供給されてもよい。ライトイネーブル信号は、例えば、初期設定部60の内部ステートマシンの状態が設定時間内に遷移することを条件に出力されてもよい。第1の比較処理によってデータの不一致が検出された場合に内部ステートマシンの遷移を停止すれば、制御信号444によってシリアルインターフェース部50はエラーを認識し、ライトイネーブル信号を出力しない。このため、エラーを含むメモリーデータがレジスターに書き込まれることを防止できる。
なお、第1のレジスター20、第2のレジスター22は、ストローブ信号440、442の立ち上がりに同期してデータを取り込んでも良いし、立ち下がりに同期してもよい。そして、ストローブ信号440、442はシリアルインターフェース部50から供給されてもよい。シリアルインターフェース部50からストローブ信号440、442が供給されることは、テストモードにおいてシリアルインターフェース部50が直接にレジスター20、22にアクセスすることを容易にする。
通常動作時において第1のレジスター20および第2のレジスター22を書き換えるときも手順は初期設定と同様である。例えばシリアルインターフェース部50がレジスター20、22を更新するデータをシリアルデータ450として受け取った場合に、シリアルインターフェース部50はリクエスト信号604を初期設定部60に送る。リクエスト信号604はリクエスト信号620と同じ性質の信号であり、初期設定部60は初期設定時と同様に内部ステートマシンの状態を遷移させて制御信号444を生成する。
次に、シリアルインターフェース部50と初期設定部60を含む接続の具体例について図3を参照して説明する。なお、不揮発性メモリー10は、32ビットのデータ単位でアクセスが行われる。レジスターは32ビット単位での書き込みが可能であるが、出力は64ビットであるとする。
図3は、シリアルインターフェース部50、初期設定部60、不揮発性メモリー10、第1のレジスター20、第2のレジスター22、アナログ回路部80の間の接続例を示す。ここで、第1のレジスター20から出力される第1レジスターデータ(RegDataOut1)420はアナログ回路部が機能するのに必要な値を含み、初期設定時にも要求されるものとする。また、少なくとも不揮発性メモリーがクロックとして使用する内部クロック(InCLK)602は、アナログ回路部80から供給されてもよい。
シリアルインターフェース部50は、シリアル通信用チップイネーブル信号(CE)452、シリアルクロック(CLK)454、シリアルデータ(DATA)450を用いて集積回路装置1Aの内部又は外部のモジュールとシリアル通信を行う。なお、シリアル通信には不揮発性メモリー10、第1のレジスター20、又は第2のレジスター22のデータを読み出す機能も含まれるが、ここでは、シリアルインターフェース部50に送られたシリアルデータ(DATA)450を不揮発性メモリー10に書き込む場合について説明する。
本実施形態では、シリアルインターフェース部50はアナログ回路部80に、不揮発性メモリー10が必要な内部クロック信号(InCLK)602の供給を求めるクロックリクエスト信号(InCLKReqEEP)608を出力する。InCLK602は、CLK454よりも低速であってもよい。そして、シリアルインターフェース部50は、例えばシリアルデータ(DATA)450をパラレルデータに変換したRegWrData400Aを不揮発性メモリー10に出力する。シリアルインターフェース部50は、RegWrData400Aが書き込まれる対象(例えば、アドレスやブロック)を、アドレス(AddrSft)424で指定してもよいが、不揮発性メモリー10のサイズが小さくアドレス指定が不要な場合等はメモリーブロック選択信号(EEP_XCS)634だけで指定を行ってもよい。本実施形態では、RegWrData400Aは二重化されて不揮発性メモリー10内部の第1のブロック100と第2のブロック102(図2)の両方に書き込まれるとする。シリアルインターフェース部50は、不揮発性メモリー10に対する書き込み、読み出しを指定するのに、それぞれメモリーライトイネーブル信号(EEP_WrEn)630、メモリーリードイネーブル信号(EEP_RdEn)632を用いてもよい。
不揮発性メモリー10に書き込まれたデータの内容を後段のアナログ回路部80に反映させるには、第1のレジスター20を更新する必要がある。また、第1のレジスター20のデータが正しいという信頼性を高めるためには、比較対象となる第2のレジスター22も更新する必要がある。
シリアルインターフェース部50は、例えばEEP_RdEn632等によって、不揮発性メモリー10に書き込まれたデータが出力されるようにしてもよい。そして、不揮発性メモリー10内部の第1のブロック100と第2のブロック102からそれぞれ出力された第1メモリーデータ(EEP_RdData1)410と第2メモリーデータ(EEP_RdData2)412がレジスター20、22に書き込まれるように制御信号を出力する。ここで、第1のレジスター20は非同期レジスターであるとして、シリアルインターフェース部50は、ライトイネーブル信号(RegAnaXwrEn1)610とストローブ信号(RegXwrPls1)440によって適当なタイミングで第1のレジスター20の値を更新する。同様に、第2のレジスター22も非同期レジスターであり、シリアルインターフェース部50は、ライトイネーブル信号(RegAnaXwrEn2)612とストローブ信号(RegXwrPls2)442によって第2のレジスター22の値を更新する。RegAnaXwrEn1(610)とRegAnaXwrEn2(612)は同じタイミングで変化してもよいし、互いに独立していてもよい。また、RegXwrPls1(440)とRegXwrPls2(442)も同じタイミングで変化してもよいし、互いに独立していてもよい。更新された第1レジスターデータ(RegDataOut1)420はアナログ回路部80に入力される。また、更新された第2レジスターデータ(RegDataOut2)422は、比較部30A(図2)でデータを比較するのに用いられる。
例えば集積回路装置1Aのリセット後などの初期設定において、アナログ回路部80に含まれるアナログ回路が適切な出力値をとるように、レジスター20、22は不揮発性メモリー10からのデータを読み込み、データを更新する必要がある。
初期設定部60は、アナログ回路部80とシリアルインターフェース部50の状態を把握し、初期設定においてシリアルインターフェース部50に適切なタイミングでレジスター20、22のデータを更新させてもよい。本実施形態では、初期設定部60は内部にステートマシンを有しているが別の構成であってもよい。
初期設定部60は、リセット信号(InitRstPls_X)600で内部のステートマシンを初期化した後、アナログ回路部80から初期設定のリクエスト信号(ReqAnaData)620を受け取る。そして、初期設定部60は、制御信号444(図2)によってシリアルインターフェース部50に適切なタイミングでレジスター20、22のデータを更新させる。このとき、制御信号444の一つとして、初期設定部60は、レジスター20、22のデータの更新終了を示すアクノリッジ信号(AckAnaData)606を出力してもよい。なお、AckAnaData606は制御信号444の一つではなくアナログ回路部80に対して出力される信号であってもよいし、本実施形態のようにシリアルインターフェース部50とアナログ回路部80の両方に対して出力されてもよい。
ここで、初期設定においてレジスター20、22のデータを更新する手順は、シリアルインターフェース部50がシリアルデータ(DATA)450を不揮発性メモリー10に書き込んだ後にレジスター20、22を更新する手順と同じである。よって、この初期設定部60を、シリアルデータ(DATA)450を不揮発性メモリー10に書き込む場合に利用できれば、別途回路を用意する必要がないので回路規模の増大を抑制できる。
そこで、本実施形態では、シリアルインターフェース部50は不揮発性メモリー10に書き込むシリアルデータ(DATA)450を受け取ったときに、レジスター更新のリクエスト信号(ReqAnaData_Serial)604を初期設定部60に出力する。初期設定部60は、この場合にもAckAnaData606を含む制御信号444を生成する。
図4は、本実施形態における初期設定の例を示す波形図である。まず、負論理の信号であるInitRstPls_X600によって、初期設定部60の内部のステートマシンが初期化される(t0〜t1)。そして、不揮発性メモリー10の読み出し等に必要なInCLK602がアナログ回路部80から供給される(t2)。アナログ回路部80は、アナログ回路が安定するのに必要な時間の経過後等、所定のタイミングでReqAnaData620をアクティブにする(t3)。シリアルインターフェース部50のリード要求信号(例えば、EEP_RdEn632)に応じて不揮発性メモリー10から、下位32ビットのデータD1が出力される(t4)。ここでは、第1のブロック100からの出力EEP_RdData1(410)と第2のブロック102からの出力EEP_RdData2(412)に違いはないものとし、波形図をまとめて記載している。同時に(t4)、シリアルインターフェース部50は第1のレジスター20に負論理の書き込みイネーブル信号RegAnaXwrEn1(610)を出力する。また、シリアルインターフェース部50は第2のレジスター22に負論理の書き込みイネーブル信号RegAnaXwrEn1(612)を出力する。そして、第1のレジスター20に対してはRegXwrPls1(440)の立ち上がりで、第2のレジスター22に対してはRegXwrPls2(442)の立ち上がりで、D1[31:0]書き込みが行われる(t5)。そして、同様に上位32ビット(D1[63:32])についても同様に書き込みが行われる(t6〜t7)。その後、第1のレジスター20と第2のレジスター22がD1[63:0]に更新されたことを通知するため初期設定部60はAckAnaData606を出力する(t8)。アナログ回路部80は、ReqAnaData620を非アクティブにする(t9)。
図5は、本実施形態における通常動作時のデータ更新の例を示す波形図である。図4の初期設定の場合とは異なり、シリアルインターフェース部50は、CE452、CLK454、DATA450を用いてシリアル通信を行う。CE452はシリアル通信用チップイネーブル信号であり、論理レベルが1のときにシリアル通信が行われることを示す。CLK454はシリアルクロックであり、本実施形態ではCLK454の立ち上がりエッジでDATA450の値が確定するものとする。DATA450はシリアルデータであり、要求がリードかライトかを指定する書き込み要求、アドレス、書き込み用データ等をシリアルインターフェース部50に伝送する。図5のようにシリアルインターフェース部50は、レジスター20、22に書き込むデータD1[31:0]を取得する。ここで、本実施形態では通常動作時のデータ更新は32ビット単位で行われるものとする。そして、この例では、AddrSft424(A1[3:0])により、不揮発性メモリー10(ブロック100、102の両方)の下位32ビットを指定して書き換えるものとする。
CE452がアクティブになりシリアル通信が開始される(t0)。シリアルインターフェース部50は、CLK454の立ち上がりに同期してDATA450を取得する。なお、CLK454の立ち下がりに同期して、又はレベルを見てDATA450が取得されてもよい。本実施形態では、CLK454の立ち上がりでアドレス、データの順に送られたDATA450を取得して、パラレル変換したAddrSft424とRegWrData400Aを生成する(t1)。なお、アドレスの前にライト要求又はリード要求を示す信号が送られてもよい。本実施形態では、論理レベルが1の場合はライト要求であるとする。
少なくとも、通常動作時のデータ更新においてシリアルインターフェース部50は、不揮発性メモリー10が使用するInCLK602の供給を、InCLKReqEEP608によってアナログ回路部80に要求する(t2)。なお、図4はこの信号を含まないが、初期設定においてInCLKReqEEP608が使用されてもよい。
ここで、先にEEP_XCS634について説明する。この例において、負論理の信号EEP_XCS634は不揮発性メモリー10のメモリーブロック、すなわち第1のブロック100と第2のブロック102のどちらにアクセスするかを指定する信号である。具体的には、EEP_XCS634が10bのとき(t3)は第1のブロック100が選択され、EEP_XCS634が01bのとき(t5)は第2のブロック102が選択される。また、不揮発性メモリー10からの読み出し要求に限り、EEP_XCS634が00bであれば両方のブロックから同時に読み出すことが可能であるとする(t9)。非選択の場合には、EEP_XCS634は11bとなっている(t7)。EEP_XCS634は、シリアルインターフェース部50が出力するメモリーライトイネーブル信号(EEP_WrEn)630、メモリーリードイネーブル信号(EEP_RdEn)632と共に使われてもよい。具体的には不揮発性メモリー10へのアクセスは、EEP_WrEn630がアクティブのときには書き込み動作が行われ(t4、t6)、EEP_RdEn632がアクティブのときには読み出し動作が行われる(t9)。なお、図4はこの信号を含まないが、初期設定においてEEP_RdEn632が使用されてもよい。
再び時系列に沿って説明をすると、時刻t3で第1のブロック100が選択されて時刻t4でEEP_WrEn630がアクティブになることによりD1[31:0]が書き込まれる。そして、時刻t5で第2のブロック102が選択されて時刻t6でEEP_WrEn630がアクティブになることによりD1[31:0]が書き込まれる。レジスターに書くべきデータD1[31:0]が不揮発性メモリー10に保存されたので(t7)、続いてレジスターへのコピーを行う。
そのために、シリアルインターフェース部50は、リクエスト信号ReqAnaData_Serial604をアクティブにする(t8)。この信号は初期設定の場合のReqAnaData620と同様であり、初期設定部60は適当なタイミングでAckAnaData606を含む制御信号444等を出力する。シリアルインターフェース部50は、EEP_RdEn632をアクティブにして不揮発性メモリー10を読み出しモードにする(t9)。そして、初期設定の場合と同様に、時刻t10、時刻t11において、それぞれ第1のレジスター20、第2のレジスター22が、不揮発性メモリー10から読み出された値D1[31:0]に更新される。その後、不揮発性メモリー10の読み出しモードも解除され(t12)、シリアル通信も完了する(t13)。
図6は、本実施形態における比較部30Aの構成例を示すブロック図である。第1の比較部301は第1メモリーデータ(EEP_RdData1)410と第2メモリーデータ(EEP_RdData2)412を受け取って、第1の比較処理を行い、不一致の場合には第1のエラー信号431を出力する。
第2の比較部302はEEP_RdData1(410)、EEP_RdData2(412)、第1レジスターデータ(RegDataOut1)420、第2レジスターデータ(RegDataOut2)422を受け取って、第2の比較処理を行い、不一致の場合には第2のエラー信号432を出力する。
第3の比較部303はRegDataOut1(420)、RegDataOut2(422)を受け取って、第3の比較処理を行い、不一致の場合には第3のエラー信号433を出力する。このとき、第1のエラー信号および第2のエラー信号が発生していない場合に限って第3のエラー信号433を出力してもよい。
比較部30Aは、第1のエラー信号431、第2のエラー信号432、第3のエラー信号433のいずれかが出力されたことを示すエラー検出信号430Aを出力してもよい。エラー検出信号430Aは、例えば第1のエラー信号431、第2のエラー信号432、第3のエラー信号433の論理和をとったものでもよい。しかし、本実施形態のように、第2のエラー信号432に代えて不揮発性メモリーのデータをレジスターに再度書き込む処理(リトライ)の後の第2のエラー信号436を用いてもよい。なお、比較部30Aは、少なくとも第1のエラー信号431又は第2のエラー信号432を発生させた場合に、発生したエラー信号に応じてフラグをたててもよい。エラー発生原因をレジスター等に保存して区別できるようにすることで、例えば不良解析時の原因の特定を容易にすることができる。また、それぞれのエラー対して適切な対応をとることが可能となる。
ここで、比較部30Aは、少なくとも初期設定の期間に第1の比較処理と第2の比較処理とを行う。このうち、第1の比較処理におけるEEP_RdData1(410)とEEP_RdData2(412)の不一致は不揮発性メモリー10への書き込みが失敗したことを示すため、直ちにエラー検出信号430Aとして出力されることが望ましい。エラー検出信号430Aにより、集積回路装置1Aを含むシステムがリセットなどの対応をとることができるからである。
一方、第1のエラー信号431が出力されない場合において、第2の比較処理におけるEEP_RdData1(410)、EEP_RdData2(412)、RegDataOut1(420)、RegDataOut2(422)の不一致は、レジスターへの書き込みが失敗したことを示す。このとき、偶然のノイズ等の影響で失敗した可能性があるため、直ちにエラー検出信号430Aとして出力せずに前記のリトライを行うことが好ましい。そこで、第2の比較部302から第2のエラーの通知信号434をカウンター304に送り、第2のエラーの発生回数をカウントする。例えば、第2のエラー信号432が出力された場合にリトライを2回まで行うならば、カウンター304の値が3以上になった場合に出力イネーブル信号435を論理レベル1として、リトライ後の第2のエラー信号436が後段に伝わるようにしてもよい。なお、第2のエラーの通知信号434は第2のエラー信号432と同一の信号であってもよい。また、ビット数の異なるデータ間の比較を行う場合には、第2の比較部302はデータを一時保存するレジスターを含んでいてもよい。
比較部30Aは通常動作時に少なくとも第3の比較処理を常に行い、EEP_RdData1(410)における異常の発生を監視する。このとき第3のエラー信号433も直ちにエラー検出信号430Aとして出力されることが望ましい。
なお、比較部30Aは、エラー検出信号430Aだけでなく、例えば第1のエラー信号431、第2のエラー信号432、出力イネーブル信号435、第3のエラー信号433をそれぞれ出力してもよい。例えば、第2のエラー信号432が初期設定部60に入力されてリトライを行うか否かの判断を行い、初期設定部60が出力する制御信号444に基づいてシリアルインターフェース部50が必要な信号を出力してもよい。
図7(A)は、本実施形態におけるリトライを行うタイミングの例を示す図である。本実施形態の集積回路装置1AやCPUを含むシステムにおいて、システムが起動(t0)した後に例えば2〜3秒経過すると、CPUは集積回路装置1Aがアクティブ(正常状態)であるかのチェックを行うとする。図7(A)のCHECK入力信号は、CPUがチェックを要求していることを示す(t2)。また、その後にDIAG出力信号による応答や集積回路装置1AのIDコードの出力(t3)が求められることもある。この例においては、集積回路装置1Aの初期設定は時刻t2までに完了する必要がある。
ここで、DIAG出力信号には、エラー検出信号430Aも接続されているとする。しかし、専用の出力信号ではなく、一般に起動時には様々な信号がDIAGから出力される。例えば、システム起動直後の例えば約300ミリ秒の間はアナログ回路が安定したかを判断するのに用いられる(t0〜t1)。よって、集積回路装置1Aはリトライも含めて時刻t1〜時刻t2の間に完了させなければならない。この例の場合、InCLKの周波数が50KHz程度であっても、少なくとも2回のリトライは可能である。よって、第2の比較処理において不一致と判定された場合であって、ノイズの影響により偶然にエラーが発生した場合にはリトライによって短時間でのデータの修復が可能である。
図7(B)は、集積回路装置1Aがリトライ機能を有する場合における、比較部からの出力信号の接続例を示すブロック図である。初期設定部60は比較部30Aから第1のエラー信号431、第2のエラー信号432、出力イネーブル信号435を受け取る。例えば、第1のエラー信号431は出力されずに第2のエラー信号432が出力された場合には、初期設定部60はレジスター20、22への書き込みでエラーが発生したと判断する。さらに、出力イネーブル信号435が出力されていない場合は、初期設定部60はリトライを行う必要があると判断する。そして、初期設定部60は制御信号444によってシリアルインターフェース部50にリトライを実行させる。なお、初期設定部60に代わってシリアルインターフェース部50が比較部30Aから第1のエラー信号431、第2のエラー信号432、出力イネーブル信号435を受け取り、リトライの実行を判断してもよい。
リトライを行う場合には、RegAnaXwrEn1(610)、RegAnaXwrEn2(612)、RegXwrPls1(440)、RegXwrPls2(442)により第1のレジスター20、第2のレジスター22に書き込みが行われてもよい。また、別の信号も使用されてよい。
なお、実際に信号として出力しなくても、第1のエラー信号431、第2のエラー信号432、出力イネーブル信号435はステータスレジスターにマッピングされており、初期設定部60又はシリアルインターフェース部50がステータスレジスターをポーリングすることで前記のリトライについての制御を行ってもよい。
図8は、本実施形態におけるテストモード時の接続例を示すブロック図である。テストモードは、シリアルインターフェース部50から直接第1のレジスター20、第2のレジスター22へのアクセスを可能にする。テストモードによって、レジスター20、22に書き込まれた値を集積回路装置の外部に読み出したり、集積回路装置の外部から直接レジスター20、22に値を設定したりできる。そのため、故障の解析や出荷時等のテストを容易に短時間で行うことができる。また、例えば初期設定においてリトライを行ったにもかかわらず第2のエラー信号432が出力されエラーが解消されないような場合に、テストモードによって、集積回路装置1Aの外部から直接レジスター20、22に正しい値を書き込んでもよい。この操作によって、集積回路装置1Aの全体が動作しなくなることを回避することができる。なお、このように通常動作時にテストモードを利用している場合、レジスターに書き込まれたデータが不用意に上書きされる恐れがある。そのため、故障の解析や出荷時等のテスト以外で集積回路装置の外部からレジスターに書き込みを行うことを初期設定時に故障が発生した場合(例えば、第1のエラー信号431又は第2のエラー信号432が出力された場合やそれらのフラグがたった場合)に限定してもよい。
図8は、図3とは異なり、シリアルインターフェース部50がRegWrData400Aを直接第1のレジスター20と第2のレジスター22に出力している。つまり、テストモードではシリアルインターフェース部50はレジスター20、22に直接RegWrData400Aを書き込むことができる。このとき、ライトイネーブル信号610、612やストローブ信号440、442をCLK454に同期させて作成してもよい。すなわち、不揮発性メモリー10に用いる低速なInCLK602とは無関係に、より高速なシリアルクロック(CLK)454をクロックとして必要な信号を生成することが可能である。
また、シリアルインターフェース部50は、レジスター部90を経由して第1のレジスター20と第2のレジスター22の値を32ビット単位で読むことができる。レジスター20、22の出力はそれぞれ64ビットである。しかし、レジスター部90によってアドレス(AddrSft)424の値に応じた32ビット幅のテスト用第1レジスターデータ(RegRdData)421が選択されてシリアルインターフェース部50に出力される。テストモードにおいて、シリアルインターフェース部50は、テスト用レジスターリードイネーブル(RegRdEn)446によってレジスター20、22からのデータ読み出しを指示する。
図9は、本実施形態におけるテストモードを用いてレジスター20、22にデータを書き込む場合の波形図を示している。書き込みは下位32ビットと上位32ビットの順に2回行われる。CE452がアクティブになりシリアル通信が開始される(t0、t5)。シリアルインターフェース部50は、CLK454の立ち上がりに同期してDATA450を取得する。そして、パラレル変換したAddrSft424(t1、t6)とRegWrData400Aを生成する(t2、t7)。RegXwrPls1(440)、RegXwrPls2(442)の立ち上がりで第1のレジスター20、第2のレジスター22に書き込みが行われる(t3、t8)。その後、シリアル通信が完了する(t4、t9)。
3.第3実施形態
本発明の第3実施形態について図10〜図11を参照して説明する。なお、第1実施形態又は第2実施形態と同様の構成については、同一符号を付して説明を省略し、主として相違点について説明する。
図10は本実施形態に係る電子機器800のブロック図である。電子機器800は、集積回路装置810、入力部820、メモリー830、電源生成部840、LCD850、音出力部860を含む。集積回路装置810は、第1又は第2実施形態の集積回路装置1、集積回路装置1Aのいずれかに対応する。
ここで、入力部820は、種々のデータを入力するためのものである。集積回路装置810は、この入力部820により入力されたデータに基づいて種々の処理を行うことになる。メモリー830は、集積回路装置810などの作業領域となるものである。電源生成部840は、電子機器800で使用される各種電源を生成するためのものである。
LCD850は、電子機器800が表示する各種の画像(文字、アイコン、グラフィック等)を出力するためのものである。音出力部860は、電子機器800が出力する各種の音(音声、警告音、ゲーム音等)を出力するためのものであり、その機能は、スピーカーなどのハードウェアにより実現できる。
電子機器800の例としては、自動車の制御装置がある。例えば横滑り防止のヨーレートセンサーや加速度センサーとして集積回路装置810が含まれていてもよい。入力部820、LCD850、音出力部860は運転席付近に設けられていてもよい。自動車の制御装置は高い信頼性が求められるため、本発明に係る集積回路装置810が適している。
また、信頼性の高い故障検出はノイズの影響を受けやすい携帯機器でも必要とされる場合がある。
図11(A)に、電子機器の1つである携帯電話950の外観図の例を示す。この携帯電話950は、入力部として機能するダイヤルボタン952や、電話番号や名前やアイコンなどを表示するLCD954や、音出力部として機能し音声を出力するスピーカー956を備える。
図11(B)に、電子機器の1つである携帯型ゲーム装置960の外観図の例を示す。この携帯型ゲーム装置960は、入力部として機能する操作ボタン962、十字キー964や、ゲーム画像を表示するLCD966や、音出力部として機能しゲーム音を出力するスピーカー968を備える。
図11(C)に、電子機器の1つであるパーソナルコンピューター970の外観図の例を示す。このパーソナルコンピューター970は、入力部として機能するキーボード972や、文字、数字、グラフィックなどを表示するLCD974、音出力部976を備える。
本実施形態の集積回路装置を例えば自動車の制御装置や図11(A)〜図11(C)の電子機器に組み込むことにより、回路規模の増加を抑えながら信頼性の高い故障検出を行う電子機器800を提供することができる。
これらの例示に限らず、本発明は、実施の形態で説明した構成と実質的に同一の構成(例えば、機能、方法および結果が同一の構成、あるいは目的および効果が同一の構成)を含む。また、本発明は、実施の形態で説明した構成の本質的でない部分を置き換えた構成を含む。また、本発明は、実施の形態で説明した構成と同一の作用効果を奏する構成又は同一の目的を達成することができる構成を含む。また、本発明は、実施の形態で説明した構成に公知技術を付加した構成を含む。