(57)【要約】【課題】適切なタイミングでプログラムデータのチェックを実行しつつ、ＣＰＵにチェック処理の以外の処理を実施させることが可能なデータチェック回路を提供する。【解決手段】メモリにアクセスするためのバスにバスマスタとして接続されるＣＰＵから、メモリに格納されたデータが正しいか否かの検出開始を指示する指示信号が出力されると、バスの占有を調停する調停回路に対してバスの占有を要求するための要求信号を出力する要求信号出力回路と、調停回路が要求信号に基づいてバスの占有を許可する許可信号を出力すると、バスを介してメモリに格納されたデータを取得するデータ取得回路と、データ取得回路が取得した取得データに対し、取得データが正しいか否かを検出するための処理を施すデータ処理回路と、を備えることを特徴とするデータチェック回路。【選択図】図２
2010282296.tif 000002
【特許請求の範囲】
【請求項１】
メモリにアクセスするためのバスにバスマスタとして接続されるＣＰＵから、前記メモリに格納されたデータが正しいか否かの検出開始を指示する指示信号が出力されると、前記バスの占有を調停する調停回路に対して前記バスの占有を要求するための要求信号を出力する要求信号出力回路と、
前記調停回路が前記要求信号に基づいて前記バスの占有を許可する許可信号を出力すると、前記バスを介して前記メモリに格納されたデータを取得するデータ取得回路と、
前記データ取得回路が取得した取得データに対し、前記取得データが正しいか否かを検出するための処理を施すデータ処理回路と、
を備えることを特徴とするデータチェック回路。
【請求項２】
請求項１に記載のデータチェック回路であって、
前記要求信号出力回路は、
前記指示信号が入力されると、前記調停回路に所定の間隔で前記許可信号を出力させるべく前記所定の間隔で前記要求信号を出力し、
前記データ取得回路は、
前記許可信号が出力される度に、前記データ取得回路が取得すべきデータが格納されている前記メモリの記憶領域のデータを一部ずつ順次取得すること、
を備えることを特徴とするデータチェック回路。
【請求項３】
請求項２に記載のデータチェック回路であって、
前記データ取得回路が取得した前記取得データのデータサイズの合計が、前記記憶領域のサイズとなると、前記要求信号出力回路に前記要求信号の出力を停止させる停止回路を更に備えること、
を特徴とするデータチェック回路。
【請求項４】
請求項３に記載のデータチェック回路であって、
前記取得データが正しいか否かを検出するための基準となる基準データを記憶する基準データ記憶回路と、
前記停止回路が前記要求信号の出力を停止させると、前記データ処理回路の処理結果と、前記基準データとを比較する比較回路と、
を更に備えることを特徴とするデータチェック回路。
【請求項５】
請求項２〜４の何れか一項に記載のデータチェック回路であって、
前記要求信号出力回路は、
前記要求信号が出力される間隔を設定するための設定データを記憶する設定データ記憶回路と、
前記指示信号が入力されると、前記設定データに基づいて前記所定の間隔の前記要求信号を生成する要求信号生成回路と、
を含むこと、
を特徴とするデータチェック回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データチェック回路に関する。
【背景技術】
【０００２】
ＣＰＵ（Central Processing Unit）を搭載するシステムＬＳＩでは、例えばＣＰＵが実行する処理を柔軟に変更できるよう、システムＬＳＩの外部にＣＰＵのプログラムデータを記憶するメモリが設けられることがある。このようなシステムでは、ＣＰＵがプログラムデータ取得し易いよう、一般に、プログラムデータは、まず外部のメモリから、例えばシステムＬＳＩの内部に設けられたＲＡＭ（Random Access Memory）等に移される。そして、プログラムデータがＲＡＭに移されると、ＣＰＵはＲＡＭに格納されたプログラムデータを実行して様々な処理を行う。
【０００３】
ところで、外部のメモリから内部のＲＡＭへとプログラムデータが移される際には、静電気等のノイズの影響により誤ったプログラムデータがＲＡＭに格納されることがある。また、プログラムデータが正常にＲＡＭに格納された場合であっても、ノイズの影響により、事後的にプログラムデータが誤ることがある。このため、ＣＰＵはＲＡＭに格納されたプログラムデータを、例えば定期的に、誤りが有るか否かをチェックする必要がある（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−３８５４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
前述のようなＣＰＵは、ＣＰＵがプログラムデータの実行及びチェックを行うため、例えばＣＰＵの負荷の少ない適切なタイミングでプログラムデータをチェックすることが可能である。しかしながら、ＲＡＭに格納されるプログラムデータのデータサイズが大きくなると、一般にプログラムデータをチェックする際の期間は長くなる。このため、ＣＰＵが適切なタイミングでプログラムデータのチェックを開始した場合であっても、プログラムデータのチェックに負荷がかかり、ＣＰＵが本来実施すべき処理の効率が低下するという問題がある。
【０００６】
本発明は上記課題を鑑みてなされたものであり、適切なタイミングでプログラムデータのチェックを実行しつつ、ＣＰＵにチェック処理の以外の処理を実施させることが可能なデータチェック回路を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明の一つの側面に係るデータチェック回路は、メモリにアクセスするためのバスにバスマスタとして接続されるＣＰＵから、前記メモリに格納されたデータが正しいか否かの検出開始を指示する指示信号が出力されると、前記バスの占有を調停する調停回路に対して前記バスの占有を要求するための要求信号を出力する要求信号出力回路と、前記調停回路が前記要求信号に基づいて前記バスの占有を許可する許可信号を出力すると、前記バスを介して前記メモリに格納されたデータを取得するデータ取得回路と、前記データ取得回路が取得した取得データに対し、前記取得データが正しいか否かを検出するための処理を施すデータ処理回路と、を備える。
【発明の効果】
【０００８】
適切なタイミングでプログラムデータのチェックを実行しつつ、ＣＰＵにチェック処理の以外の処理を実施させることが可能なデータチェック回路を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態であるシステムＬＳＩ１０の構成を示す図である。
【図２】データチェック回路５２ａの構成を示す図である。
【図３】データ受信回路７１の構成を示す図である。
【図４】要求信号ＲＥＱ２の波形の一例を示す図である。
【図５】チェック回路７２の構成を示す図である。
【図６】ＣＰＵ５０と、データチェック回路５２で実行される処理の概要を示す図である。
【図７】データチェック回路５２ｂの構成を示す図である。
【発明を実施するための形態】
【００１０】
本明細書および添付図面の記載により、少なくとも以下の事項が明らかとなる。図１は、本発明の一実施形態であるシステムＬＳＩ１０の構成を示す図である。システムＬＳＩ１０は、ＳＲＡＭ（Static Random Access Memory）２０、アービタ２１、メモリコントローラ２２、バス３０〜３２、ＣＰＵ５０、ＩＦ（Interface）回路５１、データチェック回路５２、及びＤＳＰ（Digital Signal Processor）５３を含んで構成される。なお、システムＬＳＩ１０は、例えば光ディスク制御用の集積回路である。また、システムＬＳＩ１０の各回路は、例えば、ＣＰＵ５０のクロック生成回路（不図示）からのクロック信号に基づいて動作することとする。
【００１１】
シリアルフラッシュメモリ１１は、ＣＰＵ５０が実行するプログラムデータを記憶する。また、シリアルフラッシュメモリ１１は、記憶するプログラムデータに基づいて、例えば、チェックサムやパリティ等の誤り検出符号を生成して記憶する。
【００１２】
ＳＲＡＭ２０（メモリ）は、シリアルフラッシュメモリ１１から転送されたＣＰＵ５０のプログラムデータや、ＤＳＰ５３が処理すべきデータ等を格納する。
【００１３】
アービタ２１（調停回路）は、ＳＲＡＭ２０にアクセスするためのバス３０の使用権を調停する回路である。なお、本実施形態においては、ＣＰＵ５０、ＩＦ回路５１、データチェック回路５２、ＤＳＰ５３が、バス３０のバスマスタに相当する。また、バス３０には、ＳＲＡＭ２０の記憶領域を指定するためのアドレスや、ＳＲＡＭ２０に格納されるデータ等が出力される。アービタ２１には、ＣＰＵ５０、ＩＦ回路５１、データチェック回路５２、ＤＳＰ５３の夫々から、バス３０の占有を要求するための要求信号ＲＥＱ１〜ＲＥＱ４が、バス３１を介して入力される。そして、アービタ２１は、バス３０の占有を許可する許可信号ＡＣＫ１〜ＡＣＫ４を、バス３１を介してＣＰＵ５０、ＩＦ回路５１、データチェック回路５２、ＤＳＰ５３の夫々に出力する。本実施形態のアービタ２１は、入力される要求信号ＲＥＱ１〜ＲＥＱ４の優先度を示す優先度データを記憶するレジスタ（不図示）を含んで構成される。また、アービタ２１は、要求信号ＲＥＱ１〜ＲＥＱ４と、要求信号ＲＥＱ１〜ＲＥＱ４の優先度とに基づいて、バス３０の使用権を調停する。具体的には、例えば、複数の要求信号が同じタイミングで入力されると、アービタ２１は、優先度のより高い要求信号に応じた許可信号を順次出力する。一方、例えば、アービタ２１に要求信号ＲＥＱ１〜ＲＥＱ４の夫々が競合しないタイミングで入力されると、アービタ２１は、入力された要求信号ＲＥＱ１〜ＲＥＱ４に応じた許可信号ＡＣＫ１〜ＡＣＫ４を出力する。なお、各バスマスタにバス３０を占有させる期間は、例えば要求信号ＲＥＱ１〜ＲＥＱ４に基づいて定められる。また、要求信号ＲＥＱ１〜ＲＥＱ４の優先度、すなわち、レジスタに設定された優先度データは、例えば、システムＬＳＩ１０を制御するホストマイコン（不図示）により設定される。このため、要求信号ＲＥＱ１〜ＲＥＱ４の優先度は変更可能である。また、詳細は後述するが、バス３１は、要求信号ＲＥＱ１〜ＲＥＱ４、許可信号ＡＣＫ１〜ＡＣＫ４の夫々に対する配線を含んで構成される。
【００１４】
メモリコントローラ２２は、アービタ２１からの許可信号ＡＣＫ１〜ＡＣＫ４と、ＣＰＵ５０、ＩＦ回路５１、データチェック回路５２、ＤＳＰ５３からの指示とに基づいて、ＳＲＡＭ２０へのデータの格納、またはＳＲＡＭ２０に格納されたデータの読み出しを制御する。例えば、メモリコントローラ２２に許可信号ＡＣＫ１が入力されている際にＣＰＵ５０からＳＲＡＭ２０へのアクセス指示が入力されると、メモリコントローラ２２は、ＣＰＵ５０からのアクセス指示に応じてＳＲＡＭ２０にアクセスする。なお、メモリコントローラ２２は、メモリコントローラ２２に許可信号ＡＣＫ２〜ＡＫ４が入力されている際に、ＩＦ回路５１、データチェック回路５２、ＤＳＰ５３の夫々からアクセス指示が入力された場合も同様である。
【００１５】
ＣＰＵ５０は、ＳＲＡＭ２０に格納されるプログラムデータを実行することにより、システムＬＳＩ１０を統括制御する。ＣＰＵ５０は、ＳＲＡＭ２０のプログラムデータを取得すべく、アービタ２１に要求信号ＲＥＱ１を出力する。そして、許可信号ＡＣＫ１が入力されると、バス３０、メモリコントローラ２２を介してプログラムデータをＳＲＡＭ２０から取得する。また、ＣＰＵ５０は、バス３２を介して、ＩＦ回路５１、データチェック回路５２、ＤＳＰ５３の夫々を制御する。
【００１６】
ＩＦ回路５１は、シリアルフラッシュメモリ１１に記憶されたＣＰＵ５０のプログラムデータをＳＲＡＭ２０に格納する。ＩＦ回路５１は、ＣＰＵ５０から指示に基づいて、シリアルフラッシュメモリ１１に記憶されたプログラムデータを取得するとともに、アービタ２１に要求信号ＲＥＱ２を出力する。そして、許可信号ＡＣＫ２が入力されると、シリアルフラッシュメモリ１１から取得したプログラムデータを、バス３０、メモリコントローラ２２を介してＳＲＡＭ２０に格納する。また、ＩＦ回路５１は、ＣＰＵ５０からの指示に基づいて、シリアルフラッシュメモリ１１に記憶された誤り検出符号を取得し、データチェック回路５２に設けられた後述するレジスタに格納する。
【００１７】
データチェック回路５２は、ＳＲＡＭ２０に格納されたプログラムデータのチェックを実行する。データチェック回路５２は、ＣＰＵ５０からの指示に基づいて、ＳＲＡＭ２０のプログラムデータを取得すべくアービタ２１に要求信号ＲＥＱ３を出力する。そして、許可信号ＡＣＫ３が入力されると、バス３０、メモリコントローラ２２を介してプログラムデータを取得する。さらに、データチェック回路５２は、プログラムデータが正しいか否かを判別するために、取得したプログラムデータに対し誤り検出処理を施す。具体的には、例えば、シリアルフラッシュメモリ１１に記憶される誤り検出符号がチェックサムの場合、データチェック回路５２は、ＳＲＡＭ２０から取得したプログラムデータのチェックサムを計算する。なお、データチェック回路５２の詳細については後述する。
【００１８】
ＤＳＰ５３は、例えば、光ディスクの再生装置（不図示）を制御するための各種演算を実行する。また、ＤＳＰ５３は、演算処理する際に、ＳＲＡＭ２０をいわゆるバッファメモリとして使用する。ＤＳＰ５３は、ＣＰＵ５０からの指示に基づいて、ＳＲＡＭ２０にアクセスすべく、アービタ２１に要求信号ＲＥＱ４を出力する。そして、許可信号ＡＣＫ４が入力されると、バス３０、メモリコントローラ２２を介してＳＲＡＭ２０にアクセスする。
【００１９】
＜＜データチェック回路５２の第１の実施形態＞＞
ここで、図２を参照しつつ第１の実施形態のデータチェック回路５２ａについて説明する。データチェック回路５２ａは、ＳＲＡＭ２０から取得したプログラムデータの誤り検出符号を計算するのみならず、計算結果と、フラッシュメモリ１１に記憶された誤り検出符号とを比較する。データチェック回路５２ａは、タイマレジスタ６０、チェック開始設定レジスタ６１、開始アドレス設定レジスタ６２、チェックサイズ設定レジスタ６３、チェック方法設定レジスタ６４、期待値設定レジスタ６５、タイマ回路７０、データ受信回路７１、チェック回路７２、比較回路７３、及び終了通知レジスタ７４を含んで構成される。なお、タイマレジスタ６０及びタイマ回路７０は要求信号出力回路を構成する。
【００２０】
タイマレジスタ６０（設定データ記憶回路）は、データチェック回路５２ａから出力される要求信号ＲＥＱ２の間隔を設定するための間隔設定データを記憶する。
【００２１】
チェック開始設定レジスタ６１は、データチェック回路５２ａに、プログラムデータのチェックを開始させるための開始データを記憶する。
【００２２】
開始アドレス設定レジスタ６２は、ＳＲＡＭ２０の記憶領域において、プログラムデータが格納されている先頭を示す先頭アドレスを記憶する。
【００２３】
チェックサイズ設定レジスタ６３は、データチェック回路５２ａがチェックすべきプログラムデータのデータサイズを示すサイズ設定データを記憶する。
【００２４】
チェック方法設定レジスタ６４は、プログラムデータが正しいか否かをチェックする方法、すなわち、プログラムデータの誤り検出符号の算出方法を設定するためのチェック方法設定データを記憶する。前述のように、シリアルフラッシュメモリ１１が生成して記憶する誤り検出符号は、例えば、チェックサム、またはパリティである。したがって、本実施形態におけるチェック方法設定データは、チェックサム、またはパリティの何れかを示すデータである。
【００２５】
期待値設定レジスタ６５（基準データ記憶回路）は、フラッシュメモリ１１に記憶される誤り検出符号のうち、データチェック回路５２ａがチェックすべく指定した記憶領域のプログラムデータの誤り検出符号が格納される。具体的には、期待値設定レジスタ６５には、指定された記憶領域のプログラムデータに対するチェックサム、または、指定された記憶領域のプログラムデータに対するパリティの何れかが期待値データとして格納される。
【００２６】
なお、前述したタイマレジスタ６０〜チェック開始設定レジスタ６５の夫々のレジスタに記憶される各種データは、バス３２を介してＣＰＵ５０により設定される。
【００２７】
タイマ回路７０（要求信号生成回路）は、間隔設定データに応じた間隔で要求信号ＲＥＱ２を出力する回路である。具体的には、タイマ回路７０は、後述するデータ受信回路７１からチェック開始を示す開始信号Ｓ１が入力されると、間隔設定データに応じた間隔で、例えばハイレベル（以下、“Ｈ”レベル）の要求信号ＲＥＱ２をアービタ２１と、データ受信回路７１とに出力する。また、アービタ２１から許可信号ＡＣＫ２が出力されると、タイマ回路７０は、要求信号ＲＥＱ２をローレベル（以下、“Ｌ”レベル）へと変化させる。また、タイマ回路７０は、後述する終了フラグが“１”となると、要求信号ＲＥＱ２の出力を停止する。なお、ここで、要求信号ＲＥＱ２の出力とは、要求信号ＲＥＱ２を“Ｈ”レベルに変化させることをいい、要求信号ＲＥＱ２の停止とは、要求信号ＲＥＱ２を“Ｌ”レベルに変化させることをいう。
【００２８】
また、本実施形態において、要求信号ＲＥＱ２は、バス３１における配線３１ａを介してアービタ２１に出力され、許可信号ＡＣＫ２は、バス３１における配線３１ｂを介してタイマ回路７０に出力される。なお、ここでは図示していないが、他の要求信号や、許可信号の夫々にも、要求信号ＲＥＱ２、許可信号ＡＣＫ２と同様に、専用の配線が割り当てられていることとする。
【００２９】
データ受信回路７１は、先頭アドレス及びサイズ設定データに基づいて指定されるプログラムデータを、許可信号ＡＣＫ２が入力される度に一部ずつ順次取得する回路である。データ受信回路７１は、図３に示す様に、開始信号生成回路８０、カウンタ制御回路８１、カウンタ８２，８３、終了フラグレジスタ８４、アドレス生成回路８５、及びデータ取得回路８６を含んで構成される。なお、カウンタ制御回路８１、カウンタ８２、及び終了フラグレジスタ８４は停止回路を構成する。
【００３０】
開始信号生成回路８０は、開始データが入力されると、プログラムデータのチェックを開始させるための開始信号Ｓ１を生成する。
【００３１】
カウンタ制御回路８１は、要求信号ＲＥＱ２が“Ｈ”レベルから“Ｌ”レベルに変化する度に、カウンタ８２，８３のカウント値を変化させるための信号Ｓ２を出力する。
【００３２】
カウンタ８２は、初期値としてサイズ設定データに基づいたカウント値を記憶する。また、カウンタ８２は、信号Ｓ２が入力されると、データ受信回路７１に許可信号ＡＣＫ２が入力される度にデータ受信回路７１が取得するデータのデータサイズに応じた値だけカウント値をデクリメントする。例えば、取得すべきプログラムデータのデータサイズが２ＫＢ（キロバイト）場合、カウント値として“２０４８”が記憶される。また、許可信号ＡＣＫ２が入力される度に取得されるデータのデータサイズが１バイトの場合、カウンタ８２は、カウント値を“１”ずつデクリメントする。このため、カウンタ８２のカウント値は、データ受信回路７１が取得すべきプログラムデータの残りのデータサイズを示すこととなる。
【００３３】
カウンタ８３は、後述するアドレス生成回路８５がアドレスを生成する際に用いる、いわゆるアドレスカウンタである。カウンタ８３は、開始信号Ｓ１が入力されると、カウント値をリセットして“０”とする。そして、カウンタ８３は、信号Ｓ２が入力されると、許可信号ＡＣＫ２が入力される度に取得されるデータのデータサイズに応じた値だけカウント値をインクリメントする。例えば、許可信号ＡＣＫ２が入力される度に１バイトのデータが取得される場合、カウンタ８３のカウント値は“１”ずつインクリメントされる。
【００３４】
終了フラグレジスタ８４には、カウンタ８２のカウント値が“０”であるか、すなわち、データ受信回路７１が取得すべきプログラムデータを全て取得したか否かを示す終了フラグが記憶される。本実施形態においては、カウント値が“０”である場合、すなわち、取得すべきプログラムデータを全て取得した場合に終了フラグに“１”が設定される。一方、カウント値が“０”でない場合には終了フラグに“０”が設定される。なお、終了フラグレジスタ８４は、開始信号Ｓ１が入力されると終了フラグをクリア（ “０”）する。
【００３５】
また、前述のように、終了フラグが“１”となると、要求信号ＲＥＱ２の出力は停止される。このため、終了フラグが“１”となると、データ受信回路７１はプログラムデータの取得を終了する。
【００３６】
アドレス生成回路８５は、先頭アドレスと、カウンタ８３のカウント値とに基づいて、取得すべきプログラムデータが格納される記憶領域のアドレスを生成する。そして、アドレス生成回路８５は、許可信号ＡＣＫ２が入力されると、生成したアドレスをメモリコントローラ２２にバス３０を介して出力する。例えば、許可信号ＡＣＫ２が入力される度に１バイトのプログラムデータが取得される場合、アドレス生成回路８５は、カウンタ８３のカウント値に基づいて、プログラムデータを先頭アドレスから１バイトずつ順次取得できるようなアドレスを生成する。なお、例えば、カウンタ８３のカウント値が“０”の場合、アドレス生成回路８５は、先頭アドレスをアクセスすべきアドレスとして出力する。また、本実施形態のアドレス生成回路８５は、アクセスするアドレスを出力する際に、メモリコントローラ２２にプログラムデータを取得させるためのリードコマンドも出力する。
【００３７】
データ取得回路８６は、アドレス生成回路８５から出力されるアドレスに応じて出力されるプログラムデータを取得する。そして、データ取得回路８６は、取得したプログラムデータが誤っているか否かを判別すべく、チェック回路７２に転送する。なお、本実施形態では、データ取得回路８６から出力されるデータをデータＤ１とする。
【００３８】
このように、本実施形態におけるデータ受信回路７１は、開始データに基づいてＳＲＡＭ２０の指定された記憶領域に格納されるプログラムデータを一部ずつ順次取得する。そして、データ受信回路７１は、指定された記憶領域のプログラムデータの全てを取得すると、プログラムデータの取得を中止する。
【００３９】
ここで、データ受信回路７１が出力する要求信号ＲＥＱ２の波形を、図４を参照しつつ説明する。なお、以下、本実施形態では、許可信号ＡＣＫが出力される度にデータ受信回路７１が取得するデータのデータサイズが、例えば１バイトであることとする。
【００４０】
図４の上段は、要求信号ＲＥＱ２の出力間隔が短い場合の波形の一例を示す図である。なお、ここでは、アービタ２１には、要求信号ＲＥＱ２以外の要求信号は入力されないこととする。例えば時刻Ｔ０において要求信号ＲＥＱ２が“Ｈ”レベルとなると、アービタ２１は、要求信号ＲＥＱ２に応じて時刻Ｔ１に許可信号ＡＣＫ２を出力する。この結果、バス３０はデータチェック回路５２ａに占有され、前述のように、１バイトのデータをデータ取得回路８６が取得する。このため、要求信号ＲＥＱ２が周期Ｔａで“Ｈ”レベルとなる度に、１バイトのデータは周期Ｔａで取得されることとなる。また、要求信号ＲＥＱ２を発生させる周期Ｔｂとして周期Ｔａより長くすると、例えば、図４の下段に示すようにデータ取得回路８６が１バイトのデータを取得する間隔も長くなる。このように、データ受信回路７１は、要求信号ＲＥＱ２の出力間隔（“Ｈ”レベルとなる間隔）が短くなる程、指定されたプログラムデータを時間的に早く取得できる。
【００４１】
チェック回路７２（データ処理回路）は、図５に示す様に、選択回路９０，９３、加算器９１、パリティ生成回路９２、及びチェックデータ格納レジスタ９４を含んで構成される。
【００４２】
選択回路９０は、チェック方法設定データに基づいて、入力されるデータＤ１を、加算器９１または、パリティ生成回路９２の何れかに出力する。チェック方法設定データとしてチェックサムを示すデータが入力された場合、選択回路９０は、データＤ１を加算器９１に出力する。一方、チェック方法設定データとしてパリティ示すデータが入力された場合、選択回路９０は、データＤ１をパリティ生成回路９２に出力する。なお、選択回路９０は、例えばマルチプレクサで実現可能である。
【００４３】
加算器９１は、入力されるデータＤ１と、チェックデータ格納レジスタ９４に格納されるデータとを加算して、選択回路９３に出力する。なお、加算器９１は、例えばフルアダーにより実現可能である。
【００４４】
パリティ生成回路９２は、入力されるデータＤ１と、チェックデータ格納レジスタ９４に格納されるデータとに基づいて、パリティを生成して選択回路９３に出力する。なお、パリティ生成回路９２は、まず、データＤ１の排他的論理和を計算し、データＤ１に対するパリティを生成する。そしてパリティ生成回路９２は、データＤ１に対するパリティと、チェックデータ格納レジスタ９４に格納されたデータとの排他的論理和を計算して、パリティを生成する。
【００４５】
選択回路９３は、チェック方法設定データとして、チェックサムを示すデータが入力された場合、加算器９１からの出力をチェックデータ格納レジスタ９４に格納する。一方、選択回路９３は、チェック方法設定データとしてパリティ示すデータが入力された場合、パリティ生成回路からの出力をチェックデータ格納レジスタ９４に格納する。なお、選択回路９３は、選択回路９０と同様に、例えばマルチプレクサで実現可能である。
【００４６】
選択回路９０、加算器９１、選択回路９３、及びチェックデータ格納レジスタ９４は、順次入力されるデータＤ１を加算することとなるため、チェックサムを計算する回路として動作する。一方、選択回路９０、パリティ生成回路９２、選択回路９３、及びチェックデータ格納レジスタ９４は、順次入力されるデータＤ１の全てに対して排他的論理和を計算する。したがって、これらの回路は、順次入力されるデータＤ１の全てに対するパリティを生成する回路として動作する。つまり、本実施形態におけるデータ回路７２は、チェック方法としてチェックサムが指定される場合、チェックサムを計算する回路として動作し、チェック方法としてパリティが指定される場合、パリティを計算する回路として動作する。なお、本実施形態では、チェックデータ格納レジスタ９４に格納されるデータを、チェックデータとする。また、本実施形態の加算器９１及びパリティ生成回路９２に記憶されるデータと、チェックデータとは、開始信号Ｓ１によりクリアされる。
【００４７】
比較回路７３は、終了フラグが“１”となると、期待値データとチェックデータとを比較し、比較結果を終了通知レジスタ７４に格納する。なお、本実施形態では、期待値データとチェックデータとが一致している場合、比較結果は“０”となり、期待値データとチェックデータとが一致していない場合、比較結果は“１”となる。
【００４８】
終了通知レジスタ７４は、終了フラグが“１”となり、比較結果が格納されると、プログラムデータのチェックが終了したことを示す割り込みを、バス３２を介してＣＰＵ５０に通知する。
【００４９】
＜＜プログラムデータのチェック処理の一例＞＞
ここで、データチェック回路５２ａがプログラムデータをチェックする際のシステムＬＳＩ１０の動作の一例を、図６を参照しつつ説明する。図６は、ＣＰＵ５０と、チェック回路５３で実行される処理の概要を示す図である。なお、ここでは、シリアルフラッシュメモリ１１は、プログラムデータに基づいたチェックサムを生成して記憶することとする。
【００５０】
まず、システムＬＳＩ１０が起動されると、ＣＰＵ５０は、ＩＦ回路５１に対し、シリアルフラッシュメモリ１１に格納されたプログラムデータを取得させ、ＳＲＡＭ２０に格納させる指示を出力する。さらに、ＣＰＵ５０は、ＩＦ回路５１に対し、シリアルフラッシュメモリ１１に格納されたチェックサムを取得させ、期待値設定レジスタ６５に格納させる指示を出力する（Ｓ１００）。この結果、プログラムデータは、ＩＦ回路５１、バス３０、メモリコントローラ２２を介してＳＲＡＭ２０に格納される。また、チェックサムは、ＩＦ回路５１、バス３２を介して期待値設定レジスタ６５に期待値データとして格納される。なお、期待値設定レジスタ６５に格納されるチェックサムは、ＩＦ回路５１がシリアルフラッシュメモリ１１から取得したプログラムデータに対するチェックサムである。ＣＰＵ５０は、ＳＲＡＭ２０に格納されたプログラムデータをチェックすべく、間隔設定データ、先頭アドレス、サイズ設定データ、チェック方法設定データの夫々を、タイマレジスタ６０、開始アドレス設定レジスタ６２、チェックサイズ設定レジスタ６３、チェック方法設定レジスタ６４に設定する（Ｓ１０１）。なお、本実施形態においては、ＳＲＡＭ２０に格納されたプログラムデータのデータサイズの全てがチェックできるよう、サイズ設定データが設定される。また、チェック方法設定データとして、チェックサムを示すデータ設定される。
【００５１】
ところで、一般にプログラムデータは、シリアルフラッシュメモリ１１からＳＲＡＭ２０に移される際に誤ることが多い。このため、例えば、システムＬＳＩ１０が起動された直後には、プログラムデータのチェックは優先的かつ、短時間で実施される必要がある。このため、本実施形態のＣＰＵ５０は、処理Ｓ１０１においては、例えば、図４の周期Ｔａの様に、要求信号ＲＥＱ２の出力間隔が短くなるような間隔設定データを設定する。そして、ＣＰＵ５０は、プログラムデータのチェックを開始すべく、開始データをチェック開始設定レジスタ６２に設定する（Ｓ１０２）。
【００５２】
開始データが設定されると、タイマ回路７０は、要求信号ＲＥＱ２の出力を開始する（Ｓ１０３）。そして、データ取得回路８６は、許可信号ＡＣＫ２が出力される度に、プログラムデータが格納された記憶領域の先頭アドレスから、プログラムデータを１バイトずつ順次取得する（Ｓ１０４）。なお、起動直後においては、前述のようにプログラムデータのチェックは優先される必要があるため、アービタ２１における要求信号ＲＥＱ２の優先度は、例えば、要求信号ＲＥＱ１，４より高く設定されていることとする。また、処理Ｓ１０４は、ＳＲＡＭ２０に移されたプログラムデータの全てが取得されるまで継続される（Ｓ１０５：ＮＯ）。そして、プログラムデータの全てが取得されると（Ｓ１０５：ＹＥＳ）、終了フラグが“１”となるため、要求信号ＲＥＱ２の出力は停止される（Ｓ１０６）。そして、比較回路７３は、チェック回路７２が計算したチェックサム（チェックデータ）と、期待値設定レジスタ６５に記憶されたチェックサム（期待値データ）とを比較する（Ｓ１０６）。比較結果が終了通知レジスタ７４に格納されると、終了通知レジスタ７４は、ＣＰＵ５０に対して割り込みを通知する（Ｓ１０７）。その結果、ＣＰＵ５０、比較結果を取得する（Ｓ１０８）。このように、ＣＰＵ５０は、ＳＲＡＭ２０に格納されたプログラムデータを直接チェックする処理を実行することなく、プログラムデータが正しいか否かの結果を取得することが可能となる。
【００５３】
ＣＰＵ５０は、比較結果が“０”であると、プログラムデータが正常であると判定する。その後ＣＰＵ５０は、例えばＳＲＡＭ２０に格納されたプログラムデータを取得して実行する。なお、ＳＲＡＭ２０に格納されたプログラムデータは、事後的に誤ることもある。このため、ＣＰＵ５０は、定期的にデータチェック回路５２ａにＳＲＡＭ２０に格納されたプログラムデータのチェックを実行させる。
【００５４】
ところで、一般に、プログラムデータが事後的に誤る可能性は低い。このため、ＣＰＵ５０が、プログラムデータが正常であることを確認した後は、プログラムデータのチェック以外の処理が優先されることが好ましい。したがって、このような場合には、ＣＰＵ５０は、要求信号ＲＥＱ２の出力間隔を、例えば図４の周期Ｔｂのように、起動時直後の周期Ｔａよりも長くする。さらに、システムＬＳＩ１０を制御するホストマイコン（不図示）は、アービタ２１における要求信号ＲＥＱ２の優先度を、例えば、要求信号ＲＥＱ１，４より低く設定する。この結果、ＣＰＵ５０、ＤＳＰ５３は、バス３０を占有し易くなり、システムＬＳＩ１０は、プログラムデータのチェック以外の通常の処理を効率よく実行することが可能となる。
【００５５】
ＣＰＵ５０は、比較結果が“１”であると、プログラムデータが異常であると判定する。このような場合、ＣＰＵ５０は、ＳＲＡＭ２０に格納されるプログラムデータを実行すると、誤動作することがある。したがって、ＣＰＵ５０は、比較結果が“１”であると、再びシリアルフラッシュメモリ１１からプログラムデータをＳＲＡＭ２０に格納させる。そして、図６で説明した処理Ｓ１０１〜Ｓ１０８が再び実行されるよう、ＣＰＵ５０は各種指示を出力する。なお、本実施形態では、比較結果が“１”であると、再びシリアルフラッシュメモリ１１からプログラムデータをＳＲＡＭ２０に格納することとしたが、例えば、再度、チェック（Ｓ１００〜Ｓ１０８）を実行させても良い。そして、例えば、２回連続して比較結果が“１”となると、シリアルフラッシュメモリ１１からプログラムデータをＳＲＡＭ２０に格納させることとしても良い。
【００５６】
＜＜データチェック回路５２の第２の実施形態＞＞
図７は、データチェック回路５２の第２の実施形態に相当するデータチェック回路５２ｂである。データチェック回路５２ｂは、プログラムデータが正しいか否かを判別するために、取得したプログラムデータの誤り検出符号を計算し、計算結果をＣＰＵ５０に取得させる。つまり、データチェック回路５２ｂは、プログラムデータが正しいか否かの判別をＣＰＵ５０に実施させる。このため、データチェック回路５２ｂは、図２に示したデータチェック回路５２ａのうち、期待値設定レジスタ６５、比較回路７３を除く回路で構成される。また、データチェック回路５２ａにおける終了通知レジスタ７５は、終了フラグ“１”が格納されると、割り込みをＣＰＵ５０に通知する。
【００５７】
ＣＰＵ５０は、割り込みが通知されると、チェック回路７２のチェックデータ格納レジスタ９４にアクセスし、チェックデータ（誤り検出符号）を取得する。そして、ＣＰＵ５０は、シリアルフラッシュメモリ１１から誤り検出符号を取得し、チェックデータと比較する。このように、データチェック回路５２ｂは、ＣＰＵ５０からの指示に基づいて、プログラムデータを取得して誤り検出符合の計算を実施する。このため、例えば、ＣＰＵ５０にプログラムデータを取得させ、誤り検出符号の計算させる場合と比較すると、ＣＰＵ５０の負荷は軽減される。
【００５８】
以上に説明した構成からなる本実施形態のシステムＬＳＩ１０では、ＳＲＡＭ２０にプログラムデータのチェックは、システムＬＳＩ１０を統括制御するＣＰＵ５０の指示に基づいて開始される。このため、データチェック回路５２は、適切なタイミングでプログラムデータのチェックを実行することが可能である。また、ＣＰＵ５０は、データチェック回路５２がプログラムデータを取得し、チェックしている間に他の処理を実行することができる。このため、本実施形態では、システムＬＳＩ１０の処理の効率を上昇させることが可能となる。
【００５９】
また、本実施形態のデータチェック回路５２は、許可信号ＡＣＫ２が出力される度に、プログラムデータを先頭アドレスから１バイトずつ順次取得する。このため、データチェック回路５２は、プログラムデータを取得する際に、バス３０を占有し続けることは無い。したがって、データチェック回路５２がプログラムデータをチェックしている間に、例えばＤＳＰ５３等がＳＲＡＭ２０にアクセスすることが可能である。
【００６０】
また、本実施形態のデータ受信回路７１は、指定されたプログラムデータを全て取得すると、すなわち、取得したプログラムデータのサイズが、サイズ設定データに基づいて指定された記憶領域のサイズとなると、タイマ回路７０に要求信号ＲＥＱ２の出力を停止させる。そして、データチェック回路５２は、指定されたプログラムデータをチェックする（Ｓ１０３〜Ｓ１０７）。このため、ＣＰＵ５０は、一旦データチェック回路５２にプログラムデータのチェックを開始させると、ＣＰＵ５０は更に指示を出力する必要が無い。したがって、データチェック回路５２は、ＣＰＵ５０の負荷を軽減させることができる。
【００６１】
また、データチェック回路５２ａにおける比較回路７３は、チェック回路７２が計算したチェックサムと、期待値設定レジスタ６５に記憶されたチェックサムとを比較する。このため、例えば、ＣＰＵ５０に、チェック回路７２が計算したチェックサムと、シリアルフラッシュメモリ１１に記憶されるチェックサムとを比較させる場合と比べると、ＣＰＵ５０の負荷を軽減させることが可能である。
【００６２】
また、本実施形態のタイマ回路７０は、間隔設定データに基づいた間隔で要求信号ＲＥＱ２を出力する。このため、例えば、システムＬＳＩ１０が起動された直後は、要求信号ＲＥＱ２の出力間隔を短くし、プログラムデータが一旦チェックされた後は、要求信号ＲＥＱ２の出力間隔を長くすることができる。したがって、本実施形態のデータチェック回路５２は、状況に応じてプログラムデータのチェックを効率良く実施することができる。
【００６３】
なお、上記実施例は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物も含まれる。
【００６４】
例えば、本実施形態では、システムＬＳＩ１０の内部に設けられたＳＲＡＭ２０がプログラムデータを格納することとしたがこれに限られるものでは無い。例えば、ＳＲＡＭ２０の代わりに、システムＬＳＩ１０の外部にＤＲＡＭ（Dynamic Random Access Memory）等を設け、ＤＲＡＭにプログラムデータを格納することとしても良い。
【００６５】
また、本実施形態では、プログラムデータのチェックが終了すると、データチェック回路５２は割り込みを発生することとしたがこれに限られるものでは無い。例えば、ＣＰＵ５０がポーリングにより、終了通知レジスタ７４にアクセスし、終了フラグと、比較結果とを読み出しても良い。
【００６６】
また、本実施形態では、ＳＲＡＭ２０に格納されたプログラムデータの全てを一度にチェックすることとしたが、これに限られるものではない。例えば、プログラムデータのデータサイズが大きい場合、プログラムデータが格納された記憶領域を複数の領域に分割し、分割した領域ごとにデータチェック回路５２がチェックを実施することとしても良い。
【００６７】
本実施形態のデータチェック回路５２は、許可信号ＡＣＫ２が出力される度に、プログラムデータを先頭アドレスから１バイトずつ順次取得したが、これに限られるものでは無い。例えば、データチェック回路５２がバス３０を占有する期間がアービタ２１の出力に基づいて変化する場合、データチェック回路５２は、許可信号ＡＣＫ２が出力されると、バス３０の占有期間に応じたデータサイズのプログラムデータを取得することとしても良い。具体的には、データチェック回路５２は、例えば、バス３０の占有期間が短い場合は１バイト、バス３０の占有期間が長い場合は２バイトのプログラムデータを取得しても良い。このような構成であっても、本実施形態と同様にＣＰＵ５０の負荷を軽減可能である。
【符号の説明】
【００６８】
１０  システムＬＳＩ
１１  シリアルフラッシュメモリ
２０  ＳＲＡＭ
２１  アービタ
２２  メモリコントローラ
３０〜３２  バス
５０  ＣＰＵ
５１  ＩＦ回路
５２  データチェック回路
５３  ＤＳＰ
６０  タイマレジスタ
６１  チェック開始設定レジスタ
６２  開始アドレス設定レジスタ
６３  チェックサイズ設定レジスタ
６４  チェック方法設定レジスタ
６５  期待値設定レジスタ
７０  タイマ回路
７１  データ受信回路
７２  チェック回路
７３  比較回路
７４  終了通知レジスタ
８０  開始信号生成回路
８１  カウンタ制御回路
８２，８３  カウンタ
８４  終了フラグレジスタ
８５  アドレス生成回路
８６  データ取得回路
９０，９３  選択回路
９１  加算器
９２  パリティ生成回路
９４  チェックデータ格納レジスタ
【図１】
2010282296.tif 000003
【図２】
2010282296.tif 000004
【図３】
2010282296.tif 000005
【図４】
2010282296.tif 000006
【図５】
2010282296.tif 000007
【図６】
2010282296.tif 000008
【図７】
2010282296.tif 000009