説明

データチェック回路

【課題】適切なタイミングでプログラムデータのチェックを実行しつつ、CPUにチェック処理の以外の処理を実施させることが可能なデータチェック回路を提供する。
【解決手段】メモリにアクセスするためのバスにバスマスタとして接続されるCPUから、メモリに格納されたデータが正しいか否かの検出開始を指示する指示信号が出力されると、バスの占有を調停する調停回路に対してバスの占有を要求するための要求信号を出力する要求信号出力回路と、調停回路が要求信号に基づいてバスの占有を許可する許可信号を出力すると、バスを介してメモリに格納されたデータを取得するデータ取得回路と、データ取得回路が取得した取得データに対し、取得データが正しいか否かを検出するための処理を施すデータ処理回路と、を備えることを特徴とするデータチェック回路。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データチェック回路に関する。
【背景技術】
【0002】
CPU(Central Processing Unit)を搭載するシステムLSIでは、例えばCPUが実行する処理を柔軟に変更できるよう、システムLSIの外部にCPUのプログラムデータを記憶するメモリが設けられることがある。このようなシステムでは、CPUがプログラムデータ取得し易いよう、一般に、プログラムデータは、まず外部のメモリから、例えばシステムLSIの内部に設けられたRAM(Random Access Memory)等に移される。そして、プログラムデータがRAMに移されると、CPUはRAMに格納されたプログラムデータを実行して様々な処理を行う。
【0003】
ところで、外部のメモリから内部のRAMへとプログラムデータが移される際には、静電気等のノイズの影響により誤ったプログラムデータがRAMに格納されることがある。また、プログラムデータが正常にRAMに格納された場合であっても、ノイズの影響により、事後的にプログラムデータが誤ることがある。このため、CPUはRAMに格納されたプログラムデータを、例えば定期的に、誤りが有るか否かをチェックする必要がある(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2004−38541号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
前述のようなCPUは、CPUがプログラムデータの実行及びチェックを行うため、例えばCPUの負荷の少ない適切なタイミングでプログラムデータをチェックすることが可能である。しかしながら、RAMに格納されるプログラムデータのデータサイズが大きくなると、一般にプログラムデータをチェックする際の期間は長くなる。このため、CPUが適切なタイミングでプログラムデータのチェックを開始した場合であっても、プログラムデータのチェックに負荷がかかり、CPUが本来実施すべき処理の効率が低下するという問題がある。
【0006】
本発明は上記課題を鑑みてなされたものであり、適切なタイミングでプログラムデータのチェックを実行しつつ、CPUにチェック処理の以外の処理を実施させることが可能なデータチェック回路を提供することを目的とする。
【課題を解決するための手段】
【0007】
上記目的を達成するため、本発明の一つの側面に係るデータチェック回路は、メモリにアクセスするためのバスにバスマスタとして接続されるCPUから、前記メモリに格納されたデータが正しいか否かの検出開始を指示する指示信号が出力されると、前記バスの占有を調停する調停回路に対して前記バスの占有を要求するための要求信号を出力する要求信号出力回路と、前記調停回路が前記要求信号に基づいて前記バスの占有を許可する許可信号を出力すると、前記バスを介して前記メモリに格納されたデータを取得するデータ取得回路と、前記データ取得回路が取得した取得データに対し、前記取得データが正しいか否かを検出するための処理を施すデータ処理回路と、を備える。
【発明の効果】
【0008】
適切なタイミングでプログラムデータのチェックを実行しつつ、CPUにチェック処理の以外の処理を実施させることが可能なデータチェック回路を提供することができる。
【図面の簡単な説明】
【0009】
【図1】本発明の一実施形態であるシステムLSI10の構成を示す図である。
【図2】データチェック回路52aの構成を示す図である。
【図3】データ受信回路71の構成を示す図である。
【図4】要求信号REQ2の波形の一例を示す図である。
【図5】チェック回路72の構成を示す図である。
【図6】CPU50と、データチェック回路52で実行される処理の概要を示す図である。
【図7】データチェック回路52bの構成を示す図である。
【発明を実施するための形態】
【0010】
本明細書および添付図面の記載により、少なくとも以下の事項が明らかとなる。図1は、本発明の一実施形態であるシステムLSI10の構成を示す図である。システムLSI10は、SRAM(Static Random Access Memory)20、アービタ21、メモリコントローラ22、バス30〜32、CPU50、IF(Interface)回路51、データチェック回路52、及びDSP(Digital Signal Processor)53を含んで構成される。なお、システムLSI10は、例えば光ディスク制御用の集積回路である。また、システムLSI10の各回路は、例えば、CPU50のクロック生成回路(不図示)からのクロック信号に基づいて動作することとする。
【0011】
シリアルフラッシュメモリ11は、CPU50が実行するプログラムデータを記憶する。また、シリアルフラッシュメモリ11は、記憶するプログラムデータに基づいて、例えば、チェックサムやパリティ等の誤り検出符号を生成して記憶する。
【0012】
SRAM20(メモリ)は、シリアルフラッシュメモリ11から転送されたCPU50のプログラムデータや、DSP53が処理すべきデータ等を格納する。
【0013】
アービタ21(調停回路)は、SRAM20にアクセスするためのバス30の使用権を調停する回路である。なお、本実施形態においては、CPU50、IF回路51、データチェック回路52、DSP53が、バス30のバスマスタに相当する。また、バス30には、SRAM20の記憶領域を指定するためのアドレスや、SRAM20に格納されるデータ等が出力される。アービタ21には、CPU50、IF回路51、データチェック回路52、DSP53の夫々から、バス30の占有を要求するための要求信号REQ1〜REQ4が、バス31を介して入力される。そして、アービタ21は、バス30の占有を許可する許可信号ACK1〜ACK4を、バス31を介してCPU50、IF回路51、データチェック回路52、DSP53の夫々に出力する。本実施形態のアービタ21は、入力される要求信号REQ1〜REQ4の優先度を示す優先度データを記憶するレジスタ(不図示)を含んで構成される。また、アービタ21は、要求信号REQ1〜REQ4と、要求信号REQ1〜REQ4の優先度とに基づいて、バス30の使用権を調停する。具体的には、例えば、複数の要求信号が同じタイミングで入力されると、アービタ21は、優先度のより高い要求信号に応じた許可信号を順次出力する。一方、例えば、アービタ21に要求信号REQ1〜REQ4の夫々が競合しないタイミングで入力されると、アービタ21は、入力された要求信号REQ1〜REQ4に応じた許可信号ACK1〜ACK4を出力する。なお、各バスマスタにバス30を占有させる期間は、例えば要求信号REQ1〜REQ4に基づいて定められる。また、要求信号REQ1〜REQ4の優先度、すなわち、レジスタに設定された優先度データは、例えば、システムLSI10を制御するホストマイコン(不図示)により設定される。このため、要求信号REQ1〜REQ4の優先度は変更可能である。また、詳細は後述するが、バス31は、要求信号REQ1〜REQ4、許可信号ACK1〜ACK4の夫々に対する配線を含んで構成される。
【0014】
メモリコントローラ22は、アービタ21からの許可信号ACK1〜ACK4と、CPU50、IF回路51、データチェック回路52、DSP53からの指示とに基づいて、SRAM20へのデータの格納、またはSRAM20に格納されたデータの読み出しを制御する。例えば、メモリコントローラ22に許可信号ACK1が入力されている際にCPU50からSRAM20へのアクセス指示が入力されると、メモリコントローラ22は、CPU50からのアクセス指示に応じてSRAM20にアクセスする。なお、メモリコントローラ22は、メモリコントローラ22に許可信号ACK2〜AK4が入力されている際に、IF回路51、データチェック回路52、DSP53の夫々からアクセス指示が入力された場合も同様である。
【0015】
CPU50は、SRAM20に格納されるプログラムデータを実行することにより、システムLSI10を統括制御する。CPU50は、SRAM20のプログラムデータを取得すべく、アービタ21に要求信号REQ1を出力する。そして、許可信号ACK1が入力されると、バス30、メモリコントローラ22を介してプログラムデータをSRAM20から取得する。また、CPU50は、バス32を介して、IF回路51、データチェック回路52、DSP53の夫々を制御する。
【0016】
IF回路51は、シリアルフラッシュメモリ11に記憶されたCPU50のプログラムデータをSRAM20に格納する。IF回路51は、CPU50から指示に基づいて、シリアルフラッシュメモリ11に記憶されたプログラムデータを取得するとともに、アービタ21に要求信号REQ2を出力する。そして、許可信号ACK2が入力されると、シリアルフラッシュメモリ11から取得したプログラムデータを、バス30、メモリコントローラ22を介してSRAM20に格納する。また、IF回路51は、CPU50からの指示に基づいて、シリアルフラッシュメモリ11に記憶された誤り検出符号を取得し、データチェック回路52に設けられた後述するレジスタに格納する。
【0017】
データチェック回路52は、SRAM20に格納されたプログラムデータのチェックを実行する。データチェック回路52は、CPU50からの指示に基づいて、SRAM20のプログラムデータを取得すべくアービタ21に要求信号REQ3を出力する。そして、許可信号ACK3が入力されると、バス30、メモリコントローラ22を介してプログラムデータを取得する。さらに、データチェック回路52は、プログラムデータが正しいか否かを判別するために、取得したプログラムデータに対し誤り検出処理を施す。具体的には、例えば、シリアルフラッシュメモリ11に記憶される誤り検出符号がチェックサムの場合、データチェック回路52は、SRAM20から取得したプログラムデータのチェックサムを計算する。なお、データチェック回路52の詳細については後述する。
【0018】
DSP53は、例えば、光ディスクの再生装置(不図示)を制御するための各種演算を実行する。また、DSP53は、演算処理する際に、SRAM20をいわゆるバッファメモリとして使用する。DSP53は、CPU50からの指示に基づいて、SRAM20にアクセスすべく、アービタ21に要求信号REQ4を出力する。そして、許可信号ACK4が入力されると、バス30、メモリコントローラ22を介してSRAM20にアクセスする。
【0019】
<<データチェック回路52の第1の実施形態>>
ここで、図2を参照しつつ第1の実施形態のデータチェック回路52aについて説明する。データチェック回路52aは、SRAM20から取得したプログラムデータの誤り検出符号を計算するのみならず、計算結果と、フラッシュメモリ11に記憶された誤り検出符号とを比較する。データチェック回路52aは、タイマレジスタ60、チェック開始設定レジスタ61、開始アドレス設定レジスタ62、チェックサイズ設定レジスタ63、チェック方法設定レジスタ64、期待値設定レジスタ65、タイマ回路70、データ受信回路71、チェック回路72、比較回路73、及び終了通知レジスタ74を含んで構成される。なお、タイマレジスタ60及びタイマ回路70は要求信号出力回路を構成する。
【0020】
タイマレジスタ60(設定データ記憶回路)は、データチェック回路52aから出力される要求信号REQ2の間隔を設定するための間隔設定データを記憶する。
【0021】
チェック開始設定レジスタ61は、データチェック回路52aに、プログラムデータのチェックを開始させるための開始データを記憶する。
【0022】
開始アドレス設定レジスタ62は、SRAM20の記憶領域において、プログラムデータが格納されている先頭を示す先頭アドレスを記憶する。
【0023】
チェックサイズ設定レジスタ63は、データチェック回路52aがチェックすべきプログラムデータのデータサイズを示すサイズ設定データを記憶する。
【0024】
チェック方法設定レジスタ64は、プログラムデータが正しいか否かをチェックする方法、すなわち、プログラムデータの誤り検出符号の算出方法を設定するためのチェック方法設定データを記憶する。前述のように、シリアルフラッシュメモリ11が生成して記憶する誤り検出符号は、例えば、チェックサム、またはパリティである。したがって、本実施形態におけるチェック方法設定データは、チェックサム、またはパリティの何れかを示すデータである。
【0025】
期待値設定レジスタ65(基準データ記憶回路)は、フラッシュメモリ11に記憶される誤り検出符号のうち、データチェック回路52aがチェックすべく指定した記憶領域のプログラムデータの誤り検出符号が格納される。具体的には、期待値設定レジスタ65には、指定された記憶領域のプログラムデータに対するチェックサム、または、指定された記憶領域のプログラムデータに対するパリティの何れかが期待値データとして格納される。
【0026】
なお、前述したタイマレジスタ60〜チェック開始設定レジスタ65の夫々のレジスタに記憶される各種データは、バス32を介してCPU50により設定される。
【0027】
タイマ回路70(要求信号生成回路)は、間隔設定データに応じた間隔で要求信号REQ2を出力する回路である。具体的には、タイマ回路70は、後述するデータ受信回路71からチェック開始を示す開始信号S1が入力されると、間隔設定データに応じた間隔で、例えばハイレベル(以下、“H”レベル)の要求信号REQ2をアービタ21と、データ受信回路71とに出力する。また、アービタ21から許可信号ACK2が出力されると、タイマ回路70は、要求信号REQ2をローレベル(以下、“L”レベル)へと変化させる。また、タイマ回路70は、後述する終了フラグが“1”となると、要求信号REQ2の出力を停止する。なお、ここで、要求信号REQ2の出力とは、要求信号REQ2を“H”レベルに変化させることをいい、要求信号REQ2の停止とは、要求信号REQ2を“L”レベルに変化させることをいう。
【0028】
また、本実施形態において、要求信号REQ2は、バス31における配線31aを介してアービタ21に出力され、許可信号ACK2は、バス31における配線31bを介してタイマ回路70に出力される。なお、ここでは図示していないが、他の要求信号や、許可信号の夫々にも、要求信号REQ2、許可信号ACK2と同様に、専用の配線が割り当てられていることとする。
【0029】
データ受信回路71は、先頭アドレス及びサイズ設定データに基づいて指定されるプログラムデータを、許可信号ACK2が入力される度に一部ずつ順次取得する回路である。データ受信回路71は、図3に示す様に、開始信号生成回路80、カウンタ制御回路81、カウンタ82,83、終了フラグレジスタ84、アドレス生成回路85、及びデータ取得回路86を含んで構成される。なお、カウンタ制御回路81、カウンタ82、及び終了フラグレジスタ84は停止回路を構成する。
【0030】
開始信号生成回路80は、開始データが入力されると、プログラムデータのチェックを開始させるための開始信号S1を生成する。
【0031】
カウンタ制御回路81は、要求信号REQ2が“H”レベルから“L”レベルに変化する度に、カウンタ82,83のカウント値を変化させるための信号S2を出力する。
【0032】
カウンタ82は、初期値としてサイズ設定データに基づいたカウント値を記憶する。また、カウンタ82は、信号S2が入力されると、データ受信回路71に許可信号ACK2が入力される度にデータ受信回路71が取得するデータのデータサイズに応じた値だけカウント値をデクリメントする。例えば、取得すべきプログラムデータのデータサイズが2KB(キロバイト)場合、カウント値として“2048”が記憶される。また、許可信号ACK2が入力される度に取得されるデータのデータサイズが1バイトの場合、カウンタ82は、カウント値を“1”ずつデクリメントする。このため、カウンタ82のカウント値は、データ受信回路71が取得すべきプログラムデータの残りのデータサイズを示すこととなる。
【0033】
カウンタ83は、後述するアドレス生成回路85がアドレスを生成する際に用いる、いわゆるアドレスカウンタである。カウンタ83は、開始信号S1が入力されると、カウント値をリセットして“0”とする。そして、カウンタ83は、信号S2が入力されると、許可信号ACK2が入力される度に取得されるデータのデータサイズに応じた値だけカウント値をインクリメントする。例えば、許可信号ACK2が入力される度に1バイトのデータが取得される場合、カウンタ83のカウント値は“1”ずつインクリメントされる。
【0034】
終了フラグレジスタ84には、カウンタ82のカウント値が“0”であるか、すなわち、データ受信回路71が取得すべきプログラムデータを全て取得したか否かを示す終了フラグが記憶される。本実施形態においては、カウント値が“0”である場合、すなわち、取得すべきプログラムデータを全て取得した場合に終了フラグに“1”が設定される。一方、カウント値が“0”でない場合には終了フラグに“0”が設定される。なお、終了フラグレジスタ84は、開始信号S1が入力されると終了フラグをクリア( “0”)する。
【0035】
また、前述のように、終了フラグが“1”となると、要求信号REQ2の出力は停止される。このため、終了フラグが“1”となると、データ受信回路71はプログラムデータの取得を終了する。
【0036】
アドレス生成回路85は、先頭アドレスと、カウンタ83のカウント値とに基づいて、取得すべきプログラムデータが格納される記憶領域のアドレスを生成する。そして、アドレス生成回路85は、許可信号ACK2が入力されると、生成したアドレスをメモリコントローラ22にバス30を介して出力する。例えば、許可信号ACK2が入力される度に1バイトのプログラムデータが取得される場合、アドレス生成回路85は、カウンタ83のカウント値に基づいて、プログラムデータを先頭アドレスから1バイトずつ順次取得できるようなアドレスを生成する。なお、例えば、カウンタ83のカウント値が“0”の場合、アドレス生成回路85は、先頭アドレスをアクセスすべきアドレスとして出力する。また、本実施形態のアドレス生成回路85は、アクセスするアドレスを出力する際に、メモリコントローラ22にプログラムデータを取得させるためのリードコマンドも出力する。
【0037】
データ取得回路86は、アドレス生成回路85から出力されるアドレスに応じて出力されるプログラムデータを取得する。そして、データ取得回路86は、取得したプログラムデータが誤っているか否かを判別すべく、チェック回路72に転送する。なお、本実施形態では、データ取得回路86から出力されるデータをデータD1とする。
【0038】
このように、本実施形態におけるデータ受信回路71は、開始データに基づいてSRAM20の指定された記憶領域に格納されるプログラムデータを一部ずつ順次取得する。そして、データ受信回路71は、指定された記憶領域のプログラムデータの全てを取得すると、プログラムデータの取得を中止する。
【0039】
ここで、データ受信回路71が出力する要求信号REQ2の波形を、図4を参照しつつ説明する。なお、以下、本実施形態では、許可信号ACKが出力される度にデータ受信回路71が取得するデータのデータサイズが、例えば1バイトであることとする。
【0040】
図4の上段は、要求信号REQ2の出力間隔が短い場合の波形の一例を示す図である。なお、ここでは、アービタ21には、要求信号REQ2以外の要求信号は入力されないこととする。例えば時刻T0において要求信号REQ2が“H”レベルとなると、アービタ21は、要求信号REQ2に応じて時刻T1に許可信号ACK2を出力する。この結果、バス30はデータチェック回路52aに占有され、前述のように、1バイトのデータをデータ取得回路86が取得する。このため、要求信号REQ2が周期Taで“H”レベルとなる度に、1バイトのデータは周期Taで取得されることとなる。また、要求信号REQ2を発生させる周期Tbとして周期Taより長くすると、例えば、図4の下段に示すようにデータ取得回路86が1バイトのデータを取得する間隔も長くなる。このように、データ受信回路71は、要求信号REQ2の出力間隔(“H”レベルとなる間隔)が短くなる程、指定されたプログラムデータを時間的に早く取得できる。
【0041】
チェック回路72(データ処理回路)は、図5に示す様に、選択回路90,93、加算器91、パリティ生成回路92、及びチェックデータ格納レジスタ94を含んで構成される。
【0042】
選択回路90は、チェック方法設定データに基づいて、入力されるデータD1を、加算器91または、パリティ生成回路92の何れかに出力する。チェック方法設定データとしてチェックサムを示すデータが入力された場合、選択回路90は、データD1を加算器91に出力する。一方、チェック方法設定データとしてパリティ示すデータが入力された場合、選択回路90は、データD1をパリティ生成回路92に出力する。なお、選択回路90は、例えばマルチプレクサで実現可能である。
【0043】
加算器91は、入力されるデータD1と、チェックデータ格納レジスタ94に格納されるデータとを加算して、選択回路93に出力する。なお、加算器91は、例えばフルアダーにより実現可能である。
【0044】
パリティ生成回路92は、入力されるデータD1と、チェックデータ格納レジスタ94に格納されるデータとに基づいて、パリティを生成して選択回路93に出力する。なお、パリティ生成回路92は、まず、データD1の排他的論理和を計算し、データD1に対するパリティを生成する。そしてパリティ生成回路92は、データD1に対するパリティと、チェックデータ格納レジスタ94に格納されたデータとの排他的論理和を計算して、パリティを生成する。
【0045】
選択回路93は、チェック方法設定データとして、チェックサムを示すデータが入力された場合、加算器91からの出力をチェックデータ格納レジスタ94に格納する。一方、選択回路93は、チェック方法設定データとしてパリティ示すデータが入力された場合、パリティ生成回路からの出力をチェックデータ格納レジスタ94に格納する。なお、選択回路93は、選択回路90と同様に、例えばマルチプレクサで実現可能である。
【0046】
選択回路90、加算器91、選択回路93、及びチェックデータ格納レジスタ94は、順次入力されるデータD1を加算することとなるため、チェックサムを計算する回路として動作する。一方、選択回路90、パリティ生成回路92、選択回路93、及びチェックデータ格納レジスタ94は、順次入力されるデータD1の全てに対して排他的論理和を計算する。したがって、これらの回路は、順次入力されるデータD1の全てに対するパリティを生成する回路として動作する。つまり、本実施形態におけるデータ回路72は、チェック方法としてチェックサムが指定される場合、チェックサムを計算する回路として動作し、チェック方法としてパリティが指定される場合、パリティを計算する回路として動作する。なお、本実施形態では、チェックデータ格納レジスタ94に格納されるデータを、チェックデータとする。また、本実施形態の加算器91及びパリティ生成回路92に記憶されるデータと、チェックデータとは、開始信号S1によりクリアされる。
【0047】
比較回路73は、終了フラグが“1”となると、期待値データとチェックデータとを比較し、比較結果を終了通知レジスタ74に格納する。なお、本実施形態では、期待値データとチェックデータとが一致している場合、比較結果は“0”となり、期待値データとチェックデータとが一致していない場合、比較結果は“1”となる。
【0048】
終了通知レジスタ74は、終了フラグが“1”となり、比較結果が格納されると、プログラムデータのチェックが終了したことを示す割り込みを、バス32を介してCPU50に通知する。
【0049】
<<プログラムデータのチェック処理の一例>>
ここで、データチェック回路52aがプログラムデータをチェックする際のシステムLSI10の動作の一例を、図6を参照しつつ説明する。図6は、CPU50と、チェック回路53で実行される処理の概要を示す図である。なお、ここでは、シリアルフラッシュメモリ11は、プログラムデータに基づいたチェックサムを生成して記憶することとする。
【0050】
まず、システムLSI10が起動されると、CPU50は、IF回路51に対し、シリアルフラッシュメモリ11に格納されたプログラムデータを取得させ、SRAM20に格納させる指示を出力する。さらに、CPU50は、IF回路51に対し、シリアルフラッシュメモリ11に格納されたチェックサムを取得させ、期待値設定レジスタ65に格納させる指示を出力する(S100)。この結果、プログラムデータは、IF回路51、バス30、メモリコントローラ22を介してSRAM20に格納される。また、チェックサムは、IF回路51、バス32を介して期待値設定レジスタ65に期待値データとして格納される。なお、期待値設定レジスタ65に格納されるチェックサムは、IF回路51がシリアルフラッシュメモリ11から取得したプログラムデータに対するチェックサムである。CPU50は、SRAM20に格納されたプログラムデータをチェックすべく、間隔設定データ、先頭アドレス、サイズ設定データ、チェック方法設定データの夫々を、タイマレジスタ60、開始アドレス設定レジスタ62、チェックサイズ設定レジスタ63、チェック方法設定レジスタ64に設定する(S101)。なお、本実施形態においては、SRAM20に格納されたプログラムデータのデータサイズの全てがチェックできるよう、サイズ設定データが設定される。また、チェック方法設定データとして、チェックサムを示すデータ設定される。
【0051】
ところで、一般にプログラムデータは、シリアルフラッシュメモリ11からSRAM20に移される際に誤ることが多い。このため、例えば、システムLSI10が起動された直後には、プログラムデータのチェックは優先的かつ、短時間で実施される必要がある。このため、本実施形態のCPU50は、処理S101においては、例えば、図4の周期Taの様に、要求信号REQ2の出力間隔が短くなるような間隔設定データを設定する。そして、CPU50は、プログラムデータのチェックを開始すべく、開始データをチェック開始設定レジスタ62に設定する(S102)。
【0052】
開始データが設定されると、タイマ回路70は、要求信号REQ2の出力を開始する(S103)。そして、データ取得回路86は、許可信号ACK2が出力される度に、プログラムデータが格納された記憶領域の先頭アドレスから、プログラムデータを1バイトずつ順次取得する(S104)。なお、起動直後においては、前述のようにプログラムデータのチェックは優先される必要があるため、アービタ21における要求信号REQ2の優先度は、例えば、要求信号REQ1,4より高く設定されていることとする。また、処理S104は、SRAM20に移されたプログラムデータの全てが取得されるまで継続される(S105:NO)。そして、プログラムデータの全てが取得されると(S105:YES)、終了フラグが“1”となるため、要求信号REQ2の出力は停止される(S106)。そして、比較回路73は、チェック回路72が計算したチェックサム(チェックデータ)と、期待値設定レジスタ65に記憶されたチェックサム(期待値データ)とを比較する(S106)。比較結果が終了通知レジスタ74に格納されると、終了通知レジスタ74は、CPU50に対して割り込みを通知する(S107)。その結果、CPU50、比較結果を取得する(S108)。このように、CPU50は、SRAM20に格納されたプログラムデータを直接チェックする処理を実行することなく、プログラムデータが正しいか否かの結果を取得することが可能となる。
【0053】
CPU50は、比較結果が“0”であると、プログラムデータが正常であると判定する。その後CPU50は、例えばSRAM20に格納されたプログラムデータを取得して実行する。なお、SRAM20に格納されたプログラムデータは、事後的に誤ることもある。このため、CPU50は、定期的にデータチェック回路52aにSRAM20に格納されたプログラムデータのチェックを実行させる。
【0054】
ところで、一般に、プログラムデータが事後的に誤る可能性は低い。このため、CPU50が、プログラムデータが正常であることを確認した後は、プログラムデータのチェック以外の処理が優先されることが好ましい。したがって、このような場合には、CPU50は、要求信号REQ2の出力間隔を、例えば図4の周期Tbのように、起動時直後の周期Taよりも長くする。さらに、システムLSI10を制御するホストマイコン(不図示)は、アービタ21における要求信号REQ2の優先度を、例えば、要求信号REQ1,4より低く設定する。この結果、CPU50、DSP53は、バス30を占有し易くなり、システムLSI10は、プログラムデータのチェック以外の通常の処理を効率よく実行することが可能となる。
【0055】
CPU50は、比較結果が“1”であると、プログラムデータが異常であると判定する。このような場合、CPU50は、SRAM20に格納されるプログラムデータを実行すると、誤動作することがある。したがって、CPU50は、比較結果が“1”であると、再びシリアルフラッシュメモリ11からプログラムデータをSRAM20に格納させる。そして、図6で説明した処理S101〜S108が再び実行されるよう、CPU50は各種指示を出力する。なお、本実施形態では、比較結果が“1”であると、再びシリアルフラッシュメモリ11からプログラムデータをSRAM20に格納することとしたが、例えば、再度、チェック(S100〜S108)を実行させても良い。そして、例えば、2回連続して比較結果が“1”となると、シリアルフラッシュメモリ11からプログラムデータをSRAM20に格納させることとしても良い。
【0056】
<<データチェック回路52の第2の実施形態>>
図7は、データチェック回路52の第2の実施形態に相当するデータチェック回路52bである。データチェック回路52bは、プログラムデータが正しいか否かを判別するために、取得したプログラムデータの誤り検出符号を計算し、計算結果をCPU50に取得させる。つまり、データチェック回路52bは、プログラムデータが正しいか否かの判別をCPU50に実施させる。このため、データチェック回路52bは、図2に示したデータチェック回路52aのうち、期待値設定レジスタ65、比較回路73を除く回路で構成される。また、データチェック回路52aにおける終了通知レジスタ75は、終了フラグ“1”が格納されると、割り込みをCPU50に通知する。
【0057】
CPU50は、割り込みが通知されると、チェック回路72のチェックデータ格納レジスタ94にアクセスし、チェックデータ(誤り検出符号)を取得する。そして、CPU50は、シリアルフラッシュメモリ11から誤り検出符号を取得し、チェックデータと比較する。このように、データチェック回路52bは、CPU50からの指示に基づいて、プログラムデータを取得して誤り検出符合の計算を実施する。このため、例えば、CPU50にプログラムデータを取得させ、誤り検出符号の計算させる場合と比較すると、CPU50の負荷は軽減される。
【0058】
以上に説明した構成からなる本実施形態のシステムLSI10では、SRAM20にプログラムデータのチェックは、システムLSI10を統括制御するCPU50の指示に基づいて開始される。このため、データチェック回路52は、適切なタイミングでプログラムデータのチェックを実行することが可能である。また、CPU50は、データチェック回路52がプログラムデータを取得し、チェックしている間に他の処理を実行することができる。このため、本実施形態では、システムLSI10の処理の効率を上昇させることが可能となる。
【0059】
また、本実施形態のデータチェック回路52は、許可信号ACK2が出力される度に、プログラムデータを先頭アドレスから1バイトずつ順次取得する。このため、データチェック回路52は、プログラムデータを取得する際に、バス30を占有し続けることは無い。したがって、データチェック回路52がプログラムデータをチェックしている間に、例えばDSP53等がSRAM20にアクセスすることが可能である。
【0060】
また、本実施形態のデータ受信回路71は、指定されたプログラムデータを全て取得すると、すなわち、取得したプログラムデータのサイズが、サイズ設定データに基づいて指定された記憶領域のサイズとなると、タイマ回路70に要求信号REQ2の出力を停止させる。そして、データチェック回路52は、指定されたプログラムデータをチェックする(S103〜S107)。このため、CPU50は、一旦データチェック回路52にプログラムデータのチェックを開始させると、CPU50は更に指示を出力する必要が無い。したがって、データチェック回路52は、CPU50の負荷を軽減させることができる。
【0061】
また、データチェック回路52aにおける比較回路73は、チェック回路72が計算したチェックサムと、期待値設定レジスタ65に記憶されたチェックサムとを比較する。このため、例えば、CPU50に、チェック回路72が計算したチェックサムと、シリアルフラッシュメモリ11に記憶されるチェックサムとを比較させる場合と比べると、CPU50の負荷を軽減させることが可能である。
【0062】
また、本実施形態のタイマ回路70は、間隔設定データに基づいた間隔で要求信号REQ2を出力する。このため、例えば、システムLSI10が起動された直後は、要求信号REQ2の出力間隔を短くし、プログラムデータが一旦チェックされた後は、要求信号REQ2の出力間隔を長くすることができる。したがって、本実施形態のデータチェック回路52は、状況に応じてプログラムデータのチェックを効率良く実施することができる。
【0063】
なお、上記実施例は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物も含まれる。
【0064】
例えば、本実施形態では、システムLSI10の内部に設けられたSRAM20がプログラムデータを格納することとしたがこれに限られるものでは無い。例えば、SRAM20の代わりに、システムLSI10の外部にDRAM(Dynamic Random Access Memory)等を設け、DRAMにプログラムデータを格納することとしても良い。
【0065】
また、本実施形態では、プログラムデータのチェックが終了すると、データチェック回路52は割り込みを発生することとしたがこれに限られるものでは無い。例えば、CPU50がポーリングにより、終了通知レジスタ74にアクセスし、終了フラグと、比較結果とを読み出しても良い。
【0066】
また、本実施形態では、SRAM20に格納されたプログラムデータの全てを一度にチェックすることとしたが、これに限られるものではない。例えば、プログラムデータのデータサイズが大きい場合、プログラムデータが格納された記憶領域を複数の領域に分割し、分割した領域ごとにデータチェック回路52がチェックを実施することとしても良い。
【0067】
本実施形態のデータチェック回路52は、許可信号ACK2が出力される度に、プログラムデータを先頭アドレスから1バイトずつ順次取得したが、これに限られるものでは無い。例えば、データチェック回路52がバス30を占有する期間がアービタ21の出力に基づいて変化する場合、データチェック回路52は、許可信号ACK2が出力されると、バス30の占有期間に応じたデータサイズのプログラムデータを取得することとしても良い。具体的には、データチェック回路52は、例えば、バス30の占有期間が短い場合は1バイト、バス30の占有期間が長い場合は2バイトのプログラムデータを取得しても良い。このような構成であっても、本実施形態と同様にCPU50の負荷を軽減可能である。
【符号の説明】
【0068】
10 システムLSI
11 シリアルフラッシュメモリ
20 SRAM
21 アービタ
22 メモリコントローラ
30〜32 バス
50 CPU
51 IF回路
52 データチェック回路
53 DSP
60 タイマレジスタ
61 チェック開始設定レジスタ
62 開始アドレス設定レジスタ
63 チェックサイズ設定レジスタ
64 チェック方法設定レジスタ
65 期待値設定レジスタ
70 タイマ回路
71 データ受信回路
72 チェック回路
73 比較回路
74 終了通知レジスタ
80 開始信号生成回路
81 カウンタ制御回路
82,83 カウンタ
84 終了フラグレジスタ
85 アドレス生成回路
86 データ取得回路
90,93 選択回路
91 加算器
92 パリティ生成回路
94 チェックデータ格納レジスタ

【特許請求の範囲】
【請求項1】
メモリにアクセスするためのバスにバスマスタとして接続されるCPUから、前記メモリに格納されたデータが正しいか否かの検出開始を指示する指示信号が出力されると、前記バスの占有を調停する調停回路に対して前記バスの占有を要求するための要求信号を出力する要求信号出力回路と、
前記調停回路が前記要求信号に基づいて前記バスの占有を許可する許可信号を出力すると、前記バスを介して前記メモリに格納されたデータを取得するデータ取得回路と、
前記データ取得回路が取得した取得データに対し、前記取得データが正しいか否かを検出するための処理を施すデータ処理回路と、
を備えることを特徴とするデータチェック回路。
【請求項2】
請求項1に記載のデータチェック回路であって、
前記要求信号出力回路は、
前記指示信号が入力されると、前記調停回路に所定の間隔で前記許可信号を出力させるべく前記所定の間隔で前記要求信号を出力し、
前記データ取得回路は、
前記許可信号が出力される度に、前記データ取得回路が取得すべきデータが格納されている前記メモリの記憶領域のデータを一部ずつ順次取得すること、
を備えることを特徴とするデータチェック回路。
【請求項3】
請求項2に記載のデータチェック回路であって、
前記データ取得回路が取得した前記取得データのデータサイズの合計が、前記記憶領域のサイズとなると、前記要求信号出力回路に前記要求信号の出力を停止させる停止回路を更に備えること、
を特徴とするデータチェック回路。
【請求項4】
請求項3に記載のデータチェック回路であって、
前記取得データが正しいか否かを検出するための基準となる基準データを記憶する基準データ記憶回路と、
前記停止回路が前記要求信号の出力を停止させると、前記データ処理回路の処理結果と、前記基準データとを比較する比較回路と、
を更に備えることを特徴とするデータチェック回路。
【請求項5】
請求項2〜4の何れか一項に記載のデータチェック回路であって、
前記要求信号出力回路は、
前記要求信号が出力される間隔を設定するための設定データを記憶する設定データ記憶回路と、
前記指示信号が入力されると、前記設定データに基づいて前記所定の間隔の前記要求信号を生成する要求信号生成回路と、
を含むこと、
を特徴とするデータチェック回路。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate