JP2017199052A - レジスタ異常検出装置 - Google Patents

レジスタ異常検出装置 Download PDF

Info

Publication number
JP2017199052A
JP2017199052A JP2016086764A JP2016086764A JP2017199052A JP 2017199052 A JP2017199052 A JP 2017199052A JP 2016086764 A JP2016086764 A JP 2016086764A JP 2016086764 A JP2016086764 A JP 2016086764A JP 2017199052 A JP2017199052 A JP 2017199052A
Authority
JP
Japan
Prior art keywords
register
current value
crc
determination result
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016086764A
Other languages
English (en)
Other versions
JP6718294B2 (ja
Inventor
英毅 栗林
Hideki Kuribayashi
英毅 栗林
平山 博文
Hirobumi Hirayama
博文 平山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Azbil Corp
Original Assignee
Azbil Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Azbil Corp filed Critical Azbil Corp
Priority to JP2016086764A priority Critical patent/JP6718294B2/ja
Priority to KR1020170049163A priority patent/KR101940906B1/ko
Priority to CN201710272530.5A priority patent/CN107402830B/zh
Publication of JP2017199052A publication Critical patent/JP2017199052A/ja
Application granted granted Critical
Publication of JP6718294B2 publication Critical patent/JP6718294B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Detection And Correction Of Errors (AREA)
  • Debugging And Monitoring (AREA)
  • Error Detection And Correction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】処理能力の高いCPUを用いることなく、異常検出の信頼性を高める。【解決手段】IC2において、レジスタ2Aに書き込まれたデータのCRC期待値の算出後、CRC現状値の算出を繰り返し、算出したCRC現状値をCRC現状値記憶部2Eに更新記憶する。CRC現状値を算出する毎に、CRC期待値とCRC現状値との一致/不一致を判定し、その判定結果をエラー検出レジスタ2Hに書き込む。CPU1は、エラー検出レジスタ2Hに書き込まれている判定結果およびCRC現状値記憶部2Eに記憶されているCRC現状値を定期的に読み出し、その読み出した判定結果(第1の判定結果)およびCRC現状値から得られる判定結果(第2の判定結果)に基づいてレジスタ2Aに書き込まれているデータの異常を検出する。【選択図】 図4

Description

本発明は、レジスタに書き込まれているデータの異常を検出するレジスタ異常検出装置に関する。
従来より、マイクロコンピュータを用いて各種の処理を行う電子回路では、演算処理部(CPU(Central Processing Unit))から送られてくるデータをIC(Integrated Circuit)内部のレジスタに書き込んでいる。このマイクロコンピュータを用いた電子回路において、IC内部のレジスタに書き込まれたデータ(レジスタ値)は、ノイズなどの要因で意図せずに書き変わってしまうことがある。
このため、従来においては、下記の(1),(2)のような処理をCPU側で行わせるようにしていた。
(1)動作中にレジスタ値を常時ポーリングすることにより、レジスタ値が変化していないかどうかを監視し、レジスタへの書き込みを行っていないにも関わらずレジスタ値が変化していた場合は、レジスタ値(レジスタに書き込まれているデータ)に異常が生じていると判断し、正しい値を書き込む。
(2)レジスタ初期設定後、初期設定時と同じ値を一定間隔で書き続ける。これにより、レジスタ値がノイズなどの影響で変化したとしても、レジスタ値が正しい値で上書きされる。
「20μsセトリング、250kSPSの24ビットΣ-Δ ADC - Analog Devices」、〔平成28年4月5日検索〕、インターネット<URL:http://www.analog.com/media/jp/technical-documentation/data-sheets/AD7176-2_jp.pdf#search='20+%CE%BCs%E3%82%BB%E3%83%88%E3%83%AA%E3%83%B3%E3%82%B0%E3%80%81250+kSPS%E3%81%AE'> 「8-Channel, Low Noise, Low Power, 24-Bit, Sigma-Delta ADC with PGA and Reference」、〔平成28年4月5日検索〕、インターネット<URL:http://www.analog.com/media/en/technical-documentation/data-sheets/AD7124-8.pdf#search='8Channel%2C+Low+Noise%2C+Low+Power%2C+24Bit%2C'>
しかしながら、上記の(1),(2)のような処理をCPU側で行わせるためには、処理能力の高いCPUを選定する必要がある。また、レジスタに書き込まれているデータの異常(レジスタ異常)を確認するためにCPUからICへのアクセスが増加することで、消費電力も増大してしまう。
なお、CPU側ではなくIC側に、下記の(3),(4)のような仕組みを内蔵させた例もある(例えば、非特許文献1,2参照)。
(3)2つのレジスタを用意し、片方のレジスタを動作設定用レジスタ、もう一方のレジスタを期待値格納用レジスタとする。CPUから動作設定用レジスタに対して書き込みを行うと同じ値が期待値格納用レジスタにもコピーされる。CPUから動作設定用レジスタへの書き込みが発生していないにも関わらず、動作設定用レジスタに書き込まれている値と期待値格納用レジスタに書き込まれている値とが異なった場合に、エラー検出レジスタを用いてCPUに対してレジスタ異常を通知する。
(4)レジスタに書き込まれているデータのCRC(Cyclic Redundancy Code)値を繰り返し算出し、CPUからレジスタへの書き込みをしていないにも関わらず、算出されたCRC値(CRC現状値)が期待値(CRC期待値)と不一致となった場合に、エラー検出レジスタを用いてCPUに対してレジスタ異常を通知する。なお、CRC値とは、レジスタに書き込まれているデータの異常を検出するための検査用の指標の一つであり、データを値とみなしてある定数で割った余り(余剰)として定義される値である。また、CRC期待値とは、レジスタに書き込んだデータの本来あるべき値として定義されるCRC値である。
しかしながら、上記の(3)の仕組みでは、通常の2倍のレジスタを使用するため面積的に不利となる。また、上記の(4)の仕組みでは、異常検出に必要なレジスタの数を減らすことはできるが、エラー検出レジスタ自体にビットが化けるなどの異常が発生してしまった場合、誤った検出を行ってしまう可能性がある。すなわち、エラー検出レジスタ自体の異常発生により、正常であるにも関わらず異常であると判断されてしまうことがある。逆に、異常であるにも関わらず正常であると判断されてしまうことがある。
本発明は、このような課題を解決するためになされたもので、その目的とするところは、処理能力の高いCPUを用いることなく、異常検出の信頼性を高めることが可能なレジスタ異常検出装置を提供することにある。
このような目的を達成するために本発明は、演算処理部(1)と、この演算処理部(1)からから送られてくるデータが書き込まれるレジスタ(2A)とを備え、レジスタ(2A)に書き込まれているデータの異常を検出するレジスタ異常検出装置(100)において、演算処理部(1)から送られてきたデータをレジスタ(2A)に書き込むデータ書込部(2B)と、レジスタ(2A)に書き込まれているデータの異常を検出するための検査用の指標の期待値を算出する期待値算出部(2C)と、レジスタ(2A)に書き込まれているデータの検査用の指標の期待値に対応する現状値の算出を繰り返す現状値算出部(2D)と、現状値算出部(2D)によって検査用の指標の現状値が算出される毎に、算出された検査用の指標の現状値を更新記憶する現状値記憶部(2E)と、現状値算出部(2D)によって検査用の指標の現状値が算出される毎に、算出された検査用の指標の現状値と期待値との一致/不一致を判定し、その判定結果を第1の判定結果としてエラー検出レジスタ(2H)に書き込む一致/不一致判定部(2G)とを備え、演算処理部(1)は、エラー検出レジスタ(2H)に書き込まれている第1の判定結果および現状値記憶部(2E)に記憶されている検査用の指標の現状値の少なくとも一方を読み出すことを特徴とする。
本発明において、演算処理部(1)から送られてきたデータがレジスタ(2A)に書き込まれると、このレジスタ(2A)に書き込まれているデータの異常を検出するための検査用の指標の期待値(CRC期待値)が算出される。そして、この検査用の指標の期待値の算出後、レジスタ(2A)に書き込まれているデータの検査用の指標の期待値に対応する現状値(CRC現状値)の算出が繰り返され、この算出された検査用の指標の現状値が現状値記憶部(2E)に更新記憶(上書き)される。また、検査用の指標の現状値の算出が繰り返される毎に、算出された検査用の指標の現状値と期待値との一致/不一致が判定され、その判定結果が第1の判定結果としてエラー検出レジスタ(2H)に書き込まれる。
演算処理部(1)は、エラー検出レジスタ(2H)に書き込まれている第1の判定結果および現状値記憶部(2E)に記憶されている検査用の指標の現状値から得られる第2の判定結果に基づいて、レジスタ(2A)に書き込まれているデータの異常を検出する。例えば、第1の判定結果が「一致」でかつ第2の判定結果も「一致」であった場合にレジスタ(2A)に書き込まれているデータが正常であると判断し、その他の場合は異常であると判断する。
本発明において、演算処理部(1)は、エラー検出レジスタ(2H)に書き込まれている第1の判定結果および現状値記憶部(2E)に記憶されている検査用の指標の現状値の少なくとも一方を読み出す。これにより、例えば、現状値記憶部(2E)に記憶されている検査用の指標の現状値から第2の判定結果を得るようにし、この検査用の指標の現状値から得られる第2の判定結果とエラー検出レジスタ(2H)に書き込まれている第1の判定結果とに基づいてレジスタ(2A)に書き込まれているデータの異常を検出するようにすることができる。
この場合、現状値記憶部(2E)から読み出した検査用の指標の現状値から第2の判定結果を得るが、例えば、現状値記憶部(2E)に記憶されている検査用の指標の現状値を定期的に読み出すようにし、この現状値記憶部(2E)から読み出した最初の検査用の指標の現状値を演算処理部(1)側での期待値とし、以降、現状値記憶部(2E)から検査用の指標の現状値を読み出す毎に、その読み出した検査用の指標の現状値と演算処理部(1)側での期待値との一致/不一致を判定し、その判定結果を第2の判定結果とする。
また、この場合、第1の判定結果と第2の判定結果とに基づいてレジスタ(2A)に書き込まれているデータの異常を検出するが、第1の判定結果のみでレジスタ(2A)に書き込まれているデータの異常を検出するようにしてもよく、第2の判定結果のみでレジスタ(2A)に書き込まれているデータの異常を検出するようにしてもよい。例えば、レジスタの異常検出方式として第1,第2,第3の方式を選択可能とし、第1の方式が選択されている場合には第1の判定結果のみで異常を検出するようにし、第2の方式が選択されている場合には第2の判定結果のみで異常を検出するようにし、第3の方式が選択されている場合には第1の判定結果と第2の判定結果とに基づいて異常を検出するようにする。
また、本発明において、エラー検出レジスタ(2H)に書き込まれている第1の判定結果は、演算処理部(1)が定期的に読み出すようにしてもよいし、チェックサム付きSPI(Serial Peripheral Interface)アクセスのレスポンスバイトに含めるなど、通信プロトコルに含めて演算処理部(1)に送られてくるものとしてもよい。
なお、上記説明では、一例として、発明の構成要素に対応する図面上の構成要素を、括弧を付した参照符号によって示している。
本発明によれば、エラー検出レジスタに書き込まれている第1の判定結果および現状値記憶部に記憶されている検査用の指標の現状値の少なくとも一方を読み出すようにしたので、例えば、現状値記憶部に記憶されている検査用の指標の現状値から第2の判定結果を得るようにし、この検査用の指標の現状値から得られる第2の判定結果とエラー検出レジスタに書き込まれている第1の判定結果とに基づいてレジスタに書き込まれているデータの異常を検出するなどして、処理能力の高いCPUを用いることなく、異常検出の信頼性を高めることが可能となる。
図1は、本発明の実施の形態に係るレジスタ異常検出装置の要部の構成を示す図である。 図2は、このレジスタ異常検出装置におけるCRC値算出部の内部のステートマシン図である。 図3は、CRC値算出部で行われる動作を示すタイミングチャートである。 図4は、IC側での処理を機能ブロック化した図である。 図5は、IC側での処理を示すフローチャートである。 図6は、CPU側での処理を示すフローチャートである。 図7は、第1の方式が選択されている場合のCPU側で行われる処理を示すフローチャートである。 図8は、第2の方式が選択されている場合のCPU側で行われる処理を示すフローチャートである。 図9は、エラー検出レジスタの値をチェックサム付きSPIアクセスのレスポンスバイトに含めるようにした例を示す図である。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。図1は本発明の実施の形態に係るレジスタ異常検出装置100の要部の構成を示す図である。
図1において、1はCPU(演算処理部)、2はICである。IC2には、データ受信回路21と、コマンド制御部22と、データ送信回路23と、内部レジスタ24とが設けられている。内部レジスタ24には、CRC値算出対象レジスタ24−1と、CRC値算出非対象レジスタ24−2と、CRC値算出部24−3と、エラー検出レジスタ24−4とが設けられている。
このレジスタ異常検出装置100において、CPU1から送られてくるデータはデータ受信回路21で受信され、シリアルパラレル変換された後、コマンド制御部22を介して内部レジスタ24へ送られ、CRC値算出対象レジスタ24−1に書き込まれる。
内部レジスタ24において、CRC値算出部24−3は、CRC値算出対象レジスタ24−1に書き込まれたデータのCRC期待値およびCRC現状値を算出し、算出したCRC現状値とCRC期待値との一致/不一致を判定し、その判定結果をエラー検出レジスタ24−4に書き込む。
また、CRC値算出非対象レジスタ24−2には、CRC値算出部24−3によって算出されたCRC現状値が書き込まれる。このCRC値算出非対象レジスタ24−2に書き込まれたCRC現状値およびエラー検出レジスタ24−4に書き込まれた判定結果はCPU1によって定期的に読み出される。
なお、図1中、CSはチップセレクト信号、SCLKはシリアルクロック信号、MISO(Master In Slave Out)はマスタ側入力・スレーブ側出力信号、MOSI(Master Output Slave Input)はマスタ側出力・スレーブ側入力信号、REG_ERR_DETはエラー検出レジスタ24−4から読み出される異常検出ステータス(判定結果)である。
図2にCRC値算出部24−3の内部のステートマシン図を示す。CRC値算出部24−3は、CRC算出イネーブルが有効な場合、CRC値算出対象レジスタ24−1に書き込まれているデータのCRCの現状値(CRC現状値)の算出(状態S1)と算出したCRC現状値とCRC期待値との比較を繰り返すが(状態S2)、CRC期待値算出コマンドをCPU1から受け取るとCRC期待値の算出を開始する(状態S3)。CRC期待値の算出を完了すると、エラー検出レジスタ24−4の値をクリアして「0」とし(状態S4)、CRC現状値の算出を繰り返す(状態S1)。
CRC値算出部24−3は、このCRC現状値の算出の繰り返し中、ノイズなどの異常により、CRC値算出対象レジスタ24−1に書き込まれているデータの値が書き変わり、CRC現状値とCRCS期待値との不一致が発生すると、エラー検出レジスタ24−4の値に「1」をセットする。
このステータスマシン図からも分かるように、CRC値算出部24−3は、CRC現状値の算出を繰り返す毎に、算出したCRC現状値とCRC期待値との一致/不一致を判定し、その判定結果をエラー検出レジスタ24−4に書き込む。
本実施の形態において、エラー検出レジスタ24−4の値は最初は「0」とされており、CRC現状値とCRC期待値との間に不一致が生じると、このエラー検出レジスタ24−4の値が「1」に書き替えられる。すなわち、エラー検出レジスタ24−4の値(異常検出ステータス)は、CRC現状値とCRC期待値との一致/不一致の判定結果が「一致」である場合には「0」とされ、「不一致」の場合には「1」とされる。「一致」である場合には、エラー検出レジスタ24−4の値は書き替えられないが、結果的には「0」を書き込んでいると言える。
なお、図2において、「IDLE」は初期状態(状態S0)、「CALC」はCRC現状値の算出を行う状態(状態S1)、「RESULT」はCRC現状値とCRC期待値との比較を行う状態(状態S2)、「REF_CALC」はCRC期待値の算出を行う状態(状態S3)、「REF_RESULT」は異常検出ステータスのクリアを行う状態(状態S4)を示す。
また、図2において、状態S1でCRC現状値が繰り返し算出されるが、このCRC現状値は算出される毎にCRC値算出非対象レジスタ24−2に更新記憶(上書き)される。また、状態S3でCRC期待値が算出されるが、このCRC期待値はCRC期待値算出コマンドにより1回だけ求められるものであり、CRC値算出部24−3内のメモリに記憶される。
図1において、CPU1は、エラー検出レジスタ24−4に書き込まれている判定結果およびCRC値算出非対象レジスタ24−2に記憶されているCRC現状値を定期的に読み出す。そして、この読み出した判定結果(第1の判定結果)およびCRC現状値から得られる判定結果(第2の判定結果)に基づいてCRC値算出対象レジスタ24−1に書き込まれているデータの異常を検出する。例えば、第1の判定結果が「一致」でかつ第2の判定結果も「一致」であった場合にCRC値算出対象レジスタ24−1に書き込まれているデータが正常であると判断し、その他の場合は異常であると判断する。
本実施の形態において、CPU1がIC2から読み出せるCRC値は、CRC現状値のみとされている。すなわち、CPU1は、CRC値算出対象レジスタ24−1に書き込んだデータのCRC期待値とIC2から読み出したCRC現状値との一致/不一致の判定結果をCRC現状値から得られる判定結果(第2の判定結果)として求めるわけだが、CRC値算出部24−3で算出されたCRC期待値は読み出せない。
この場合、CPU1側でCRC値算出対象レジスタ24−1に書き込むデータのCRC期待値を求めておいてもよいが、CPU1の処理負荷が増える。そこで、本実施の形態では、CPU1において、CRC値算出非対象レジスタ24−2から読み出した最初のCRC現状値(CRC期待値算出コマンド発行後の最初のCRC現状値)をCPU1側でのCRC期待値とし、以降、CRC値算出非対象レジスタ24−2からCRC現状値を読み出す毎に、その読み出したCRC現状値とCPU1側でのCRC期待値との一致/不一致を判定し、その判定結果をCRC現状値から得られる判定結果(第2の判定結果)とする。
図3にCRC値算出部24−3で行われる動作のタイミングチャートを示す。同図において、(a)〜(h)はCRC値算出部24−3の入出力信号、(i),(j)はCRC値算出部24−3の内部信号である。
CRC値算出部24−3は、CPU1からCRC期待算出コマンドを受け取ると(図3(c)に示すt1点)、CRC期待値の算出を開始する(図3(j)に示すt1点)。そして、CRC期待値の算出を終えると(図3(j)に示すt2〜t3点)、エラー検出レジスタ24−4の値をクリアし(図3(f)に示すt2〜t3点)、CRC現状値の算出を開始する(図3(j)に示すt3点)。
CRC値算出部24−3は、CRC現状値を算出する毎にCRC期待値との比較を行い、算出されたCRC現状値とCRC期待値との不一致を確認すると(図3(j)に示すt4〜t5点)、エラー検出レジスタ24−4の値(異常検出ステータス)を「1」とする(図3(g)に示すt4〜t5点)。
なお、このCRC値算出部24−3で行われる処理動作において、CRC値期待値の算出に要する時間(CRC期待値算出期間)TAとCRC現状値の算出に要する時間(CRC現状値算出期間)TBとは同じである。例えば、CRC値算出対象レジスタ24−1が60バイトであり、1バイトずつCRC算出を行ったとすると、CRCの算出に要する時間は60サイクルとなる。
図4は、上述したIC2側での処理を機能ブロック化した図である。IC2は、レジスタ2Aと、データ書込部2Bと、CRC期待値算出部2Cと、CRC現状値算出部2Dと、CRC現状値記憶部2Eと、CRC期待値記憶部2Fと、一致/不一致判定部2Gと、エラー検出レジスタ2Hとを備えている。
なお、この機能ブロック図において、レジスタ2Aは図1におけるCRC値算出対象レジスタ24−1に相当し、CRC現状値記憶部2EはCRC値算出非対象レジスタ24−2に相当し、エラー検出レジスタ2Hはエラー検出レジスタ24−4に相当する。また、CRC期待値算出部2C、CRC現状値算出部2D、CRC期待値記憶部2Fおよび一致/不一致判定部2Gは、CRC値算出部24−3内の処理機能に対応する。
また、この機能ブロック図において、CRC期待値算出部2CとCRC現状値算出部2Dとは、その処理機能を区別するために2つに分けて示しているが、ハードウェア的に別回路として存在しているわけではなく、共通の回路(同一の回路)とされている。すなわち、この共通の回路において、CRC期待値算出コマンドを受け付けた後に算出したCRC値をCRC期待値と判断してCRC期待値記憶部2Fに格納し、それ以外の時に算出したCRC値をCRC現状値としてCRC現状値記憶部2Eに格納する。つまり、CRC期待値の生成とCRC現状値の生成は全く同じ計算式で算出するので、別回路として存在させる必要はない。CRC期待値とCRC現状値を同時に算出するのであれば、別回路として用意する必要があるが、この例ではCRC期待値とCRC現状値の算出は排他的に実行する。勿論、重複した構成とはなるが、CRC期待値とCRC現状値を算出する回路を別回路として用意してもよい。
このIC2において、データ書込部2Bは、CPU1からのレジスタ書き込みコマンド(データ+コマンド)を受けて、レジスタ2AにCPU1からのデータを書き込む。CRC期待値算出部2Cは、CPU1からのCRC期待値算出コマンドを受けて、レジスタ2Aに書き込まれているデータのCRC期待値を算出する。CRC期待値記憶部2Fは、CRC期待値算出部2Cによって算出されたCRC期待値を記憶する。
CRC現状値算出部2Dは、CRC期待値算出部2CでCRC期待値が算出された後、レジスタ2Aに書き込まれているデータのCRC期待値に対応するCRC現状値の算出を繰り返す。CRC現状値記憶部2Eは、CRC現状値算出部2DによってCRC現状値が算出される毎に、算出されたCRC現状値を更新記憶する。
一致/不一致判定部2Gは、CRC現状値算出部2DによってCRC現状値が算出される毎に、算出されたCRC現状値とCRC期待値との一致/不一致を判定し、その判定結果(「0」/「1」)を第1の判定結果としてエラー検出レジスタ2Hに書き込む。なお、エラー検出レジスタ2Hに書き込まれている値は、CRC期待値算出部2CでのCRC期待値の算出が完了する毎にクリアされる。
図5は上述したIC2側での処理を示すフローチャートである。データ書込部2Bは、CPU1からレジスタ書き込みコマンドが送られてくると(ステップS101のYES)、レジスタ2Aにデータを書き込む(ステップS102)。CRC期待値算出部2Cは、レジスタ書き込みコマンドの発行後、CPU1からCRC期待値算出コマンドが送れてくると(ステップS103のYES)、CRC期待値を算出する(ステップS104)。また、このCRC期待値の算出後、エラー検出レジスタ2Hの値をクリアする(ステップS105)。
CRC現状値算出部2Dは、CRC期待値算出部2CでのCRC期待値の算出が完了すると、CRC現状値の算出を開始する(ステップS106)。一致/不一致判定部2Gは、CRC現状値算出部2DでのCRC現状値の算出が完了すると、この算出したCRC現状値とCRC期待値算出部2Cが算出したCRC期待値との一致/不一致を判定する(ステップS107)。
一致/不一致判定部2Gでの一致/不一致の判定は、CRC現状値算出部2DでCRC現状値が算出される毎に繰り返され(ステップS101→S106→S107の繰り返し)、このCRC現状値の算出の繰り返し中に「不一致」であるとの判定結果が得られた場合、一致/不一致判定部2Gはエラー検出レジスタ2Hの値を「1」とする(ステップS108)。
図6は上述したCPU1側での処理を示すフローチャートである。CPU1は、IC2のリセットを解除した後(ステップS201)、IC2に対してレジスタ書き込みコマンドを発行したか否かを確認する(ステップS202)。IC2に対するレジスタ書き込みコマンドの発行を確認すると(ステップS202のYES)、IC2に対してCRC期待値算出コマンドを発行する(ステップS203)。
そして、CPU1は、IC2においてCRC値の算出が完了するのを待って(ステップS204)、CRC現状値記憶部2Eに記憶されているCRC現状値(CRC期待値算出コマンド発行後の最初のCRC現状値)を読み出し、その読み出したCRC現状値をCPU1側でのCRC期待値として保存する(ステップS205)。
そして、CPU1は、エラー検出レジスタ2Hに書き込まれている判定結果(第1の判定結果)およびCRC現状値記憶部2Eに記憶されているCRC現状値を読み出し(ステップS206)、エラー検出レジスタ2Hから読み出した判定結果(第1の判定結果)が「0」で、かつCRC現状値記憶部2Eから読み出したCRC現状値とステップS205で保存したCPU1側のCRC期待値とが一致していた場合(第2の判定結果が「0」であった場合)(ステップS207のYES)、すなわち第1の判定結果が「一致」でかつ第2の判定結果も「一致」であった場合、レジスタ2Aに書き込まれているデータは正常であると判断し、ステップS202に戻る。
CPU1は、IC2に対してレジスタ書き込みコマンドを1度発行すると、次のレジスタ書き込みコマンドを発行するまで、ステップS202,S206,207の処理を繰り返す。このステップS202,S206,S207の処理の繰り返し中、第1の判定結果が「一致」でかつ第2の判定結果も「一致」であるという結果が得られなかった場合(ステップS207のNO)、すなわち第1の判定結果と第2の判定結果の少なくとも一方が「不一致」であった場合、CPU1は、レジスタ2Aに書き込まれているデータに異常が生じているものと判断し、異常処理を行う(ステップS208)。このステップS208での異常処理の内容は、各システムで適切な方法を決定する。
このようにして、本実施の形態のレジスタ異常検出装置100によれば、IC2側での判定結果(第1の判定結果)とCPU1側での判定結果(第2の判定結果)が共に「一致」となった場合にレジスタ2Aに書き込まれているデータが正常であると判断され、その他の場合は異常であると判断されるものとなる。これにより、CPU1として処理能力の高いCPUを用いることなく、異常検出の信頼性を高めることができるようになる。
なお、上述では説明を省略したが、このレジスタ異常検出装置100では、IC2側での第1の判定結果とCPU1側での第2の判定結果とに基づいてレジスタ2Aに書き込まれているデータの異常を検出するか、IC2側での第1の判定結果のみでレジスタ2Aに書き込まれているデータの異常を検出するか、CPU1側での第2の判定結果のみでレジスタ2Aに書き込まれているデータの異常を検出するかについて、選択することが可能とされている。
この場合、CPU1は、レジスタの異常検出方式として第1の方式が選択されている場合には、IC2側での第1の判定結果のみでレジスタ2Aに書き込まれているデータの異常を検出し、第2の方式が選択されている場合には、CPU1側での第2の判定結果のみでレジスタ2Aに書き込まれているデータの異常を検出し、第3の方式が選択されている場合には、IC2側での第1の判定結果とCPU1側での第2の判定結果とに基づいてレジスタ2Aに書き込まれているデータの異常を検出する。
図7に第1の方式が選択されている場合のCPU1側で行われる処理のフローチャートを示す。この場合、CPU1は、IC2のリセットを解除した後(ステップS301)、IC2に対してレジスタ書き込みコマンドを発行したか否かを確認する(ステップS302)。IC2に対するレジスタ書き込みコマンドの発行を確認すると(ステップS303のYES)、IC2に対してCRC期待値算出コマンドを発行する(ステップS303)。
そして、CPU1は、IC2においてCRC値の算出が完了するのを待って(ステップS304)、エラー検出レジスタ2Hに書き込まれている判定結果(第1の判定結果)を読み出し(ステップS305)、エラー検出レジスタ2Hから読み出した判定結果(第1の判定結果)が「1」でなかった場合には(ステップS306のNO)、すなわち第1の判定結果が「0」であった場合には、レジスタ2Aに書き込まれているデータは正常であると判断し、ステップS302に戻る。
CPU1は、IC2に対してレジスタ書き込みコマンドを1度発行すると、次のレジスタ書き込みコマンドを発行するまで、ステップS302,S305,S306の処理を繰り返す。このステップS302,S305,S306の処理の繰り返し中、第1の判定結果が「1」となった場合(ステップS306のYES)、すなわち第1の判定結果が「不一致」となった場合、CPU1は、レジスタ2Aに書き込まれているデータに異常が生じているものと判断し、異常処理を行う(ステップS307)。このステップS307での異常処理の内容は、各システムで適切な方法を決定する。
図8に第2の方式が選択されている場合のCPU1側で行われる処理動作のフローチャートを示す。この場合、CPU1は、IC2のリセットを解除した後(ステップS401)、IC2に対してレジスタ書き込みコマンドを発行したか否かを確認する(ステップS402)。IC2に対するレジスタ書き込みコマンドの発行を確認すると(ステップS403のYES)、IC2に対してCRC期待値算出コマンドを発行する(ステップS403)。
そして、CPU1は、IC2においてCRC値の算出が完了するのを待って(ステップS404)、CRC現状値記憶部2Eに記憶されているCRC現状値(CRC期待値算出コマンド発行後の最初のCRC現状値)を読み出し、その読み出したCRC現状値をCPU1側でのCRC期待値として保存する(ステップS405)。
そして、CPU1は、CRC現状値記憶部2Eに記憶されているCRC現状値を読み出し(ステップS406)、このCRC現状値記憶部2Eから読み出したCRC現状値とステップS405で保存したCPU1側のCRC期待値とが一致していた場合(ステップS407のYES)、すなわち第2の判定結果が「一致」であった場合、レジスタ2Aに書き込まれているデータは正常であると判断し、ステップS402に戻る。
CPU1は、IC2に対してレジスタ書き込みコマンドを1度発行すると、次のレジスタ書き込みコマンドを発行するまで、ステップS402,S406,S407の処理を繰り返す。このステップS402,S406,S407の処理の繰り返し中、第2の判定結果が「一致」であるという結果が得られなかった場合(ステップS407のNO)、すなわち第2の判定結果が「不一致」であった場合、CPU1は、レジスタ2Aに書き込まれているデータに異常が生じているものと判断し、異常処理を行う(ステップS408)。このステップS408での異常処理の内容は、各システムで適切な方法を決定する。
第3の方式が選択されている場合には図6を用いて説明した処理が行われる。なお、必ずしもこのような第1,第2,第3の方式が選択可能な構成としなくてもよく、第3の方式が単独で採用されていても構わない。また、本実施の形態において、CPU1はIC2から異常検出ステータスおよびCRC現状値の少なくとも一方を読み出すが、この読み出した異常検出ステータスやCRC現状値どのように利用するかはユーザ次第である。
また、上述した実施の形態では、CRC値の具体的な算出方法については述べなかったが、実際には多項式としてC「RC-16-CCITT(X^16+X^12+X^5+1)」を使用する。勿論、他の多項式(例えば、「CRC-16」や「CRC-32」)を使用してCRC値を算出してもよい。また、CRCではなく、「MODBUS ASCII」のチックサム算出で用いられている「2の補数和の2の補数」を使用するなどしてもよい。
〔派生効果〕
図1において、CRC値算出対象レジスタ24−1には動作前に必ず任意の値を書き込むため、CRC値算出対象レジスタ24−1に書き込まれているデータのCRC現状値はIC2の動作中、初期値とは異なる値となる。そのため、IC2の動作中にCPU1からCRC現状値を監視することで、ノイズなどの影響で予期せぬリセットがかかっていないかどうかを確認できる。すなわち、リセットがかかればCRC現状値が初期値になることを利用することによって、予期せぬリセットがかかっていないかどうかを確認することができる。
また、図1において、CPU1への異常通知方法として、エラー検出レジスタ24−4の値を通信プロトコルに含めるという方法もある。例えば、図9に示すように、MISO信号の「0x04」を内部レジスタ異常検出と割り当て、IC内部状態もチェックサム付きSPIアクセスのレスポンスに含めてしまうようにする。これにより、CPU1からエラー検出レジスタ24−4をポーリングする頻度を下げることができる。
〔実施の形態の拡張〕
以上、実施の形態を参照して本発明を説明したが、本発明は上記の実施の形態に限定されるものではない。本発明の構成や詳細には、本発明の技術思想の範囲内で当業者が理解し得る様々な変更をすることができる。
1…CPU(演算処理部)、2…IC、21…データ受信回路、22…コマンド制御部、23…データ送信回路、24…内部レジスタ、24−1…CRC値算出対象レジスタ、24−2…CRC値算出非対象レジスタ、24−3…CRC値算出部、24−4…エラー検出レジスタ、2A…レジスタ、2B…データ書込部、2C…CRC期待値算出部、2D…CRC現状値算出部、2E…CRC現状値記憶部、2F…CRC期待値記憶部、2G…一致/不一致判定部、2H…エラー検出レジスタ、100…レジスタ異常検出装置。

Claims (7)

  1. 演算処理部と、この演算処理部からから送られてくるデータが書き込まれるレジスタとを備え、前記レジスタに書き込まれているデータの異常を検出するレジスタ異常検出装置において、
    前記演算処理部から送られてきたデータを前記レジスタに書き込むデータ書込部と、
    前記レジスタに書き込まれているデータの異常を検出するための検査用の指標の期待値を算出する期待値算出部と、
    前記レジスタに書き込まれているデータの前記検査用の指標の期待値に対応する現状値の算出を繰り返す現状値算出部と、
    前記現状値算出部によって前記検査用の指標の現状値が算出される毎に、算出された検査用の指標の現状値を更新記憶する現状値記憶部と、
    前記現状値算出部によって前記検査用の指標の現状値が算出される毎に、算出された検査用の指標の現状値と前記期待値との一致/不一致を判定し、その判定結果を第1の判定結果としてエラー検出レジスタに書き込む一致/不一致判定部とを備え、
    前記演算処理部は、
    前記エラー検出レジスタに書き込まれている第1の判定結果および前記現状値記憶部に記憶されている検査用の指標の現状値の少なくとも一方を読み出す
    ことを特徴とするレジスタ異常検出装置。
  2. 請求項1に記載されたレジスタ異常検出装置において、
    前記演算処理部は、
    前記エラー検出レジスタに書き込まれている第1の判定結果および前記現状値記憶部に記憶されている検査用の指標の現状値から得られる第2の判定結果に基づいて前記レジスタに書き込まれているデータの異常を検出する
    ことを特徴とするレジスタ異常検出装置。
  3. 請求項1に記載されたレジスタ異常検出装置において、
    前記演算処理部は、
    前記エラー検出レジスタに書き込まれている第1の判定結果および前記現状値記憶部に記憶されている検査用の指標の現状値を定期的に読み出し、その読み出した第1の判定結果および検査用の指標の現状値から得られる第2の判定結果に基づいて前記レジスタに書き込まれているデータの異常を検出する
    ことを特徴とするレジスタ異常検出装置。
  4. 請求項3に記載されたレジスタ異常検出装置において、
    前記演算処理部は、
    前記現状値記憶部から読み出した最初の検査用の指標の現状値を演算処理部側での期待値とし、以降、前記現状値記憶部から検査用の指標の現状値を読み出す毎に、その読み出した検査用の指標の現状値と前記演算処理部側での期待値との一致/不一致を判定し、その判定結果を前記第2の判定結果とする
    ことを特徴とするレジスタ異常検出装置。
  5. 請求項2〜4の何れか1項に記載されたレジスタ異常検出装置において、
    前記演算処理部は、
    前記第1の判定結果が「一致」でかつ前記第2の判定結果も「一致」であった場合に前記レジスタに書き込まれているデータが正常であると判断し、その他の場合は異常であると判断する
    ことを特徴とするレジスタ異常検出装置。
  6. 請求項1に記載されたレジスタ異常検出装置において、
    前記演算処理部は、
    前記レジスタの異常検出方式として第1の方式が選択されている場合、
    前記エラー検出レジスタに書き込まれている第1の判定結果に基づいて前記レジスタに書き込まれているデータの異常を検出し、
    前記レジスタの異常検出方式として第2の方式が選択されている場合、
    前記現状値記憶部に記憶されている検査用の指標の現状値から得られる第2の判定結果に基づいて前記レジスタに書き込まれているデータの異常を検出し、
    前記レジスタの異常検出方式として第3の方式が選択されている場合、
    前記エラー検出レジスタに書き込まれている第1の判定結果および前記現状値記憶部に記憶されている検査用の指標の現状値から得られる第2の判定結果に基づいて前記レジスタに書き込まれているデータの異常を検出する
    ことを特徴とするレジスタ異常検出装置。
  7. 請求項1又は6に記載されたレジスタ異常検出装置において、
    前記エラー検出レジスタに書き込まれている第1の判定結果は、
    通信プロトコルに含めて前記演算処理部に送られてくる
    ことを特徴とするレジスタ異常検出装置。
JP2016086764A 2016-04-25 2016-04-25 レジスタ異常検出装置 Active JP6718294B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2016086764A JP6718294B2 (ja) 2016-04-25 2016-04-25 レジスタ異常検出装置
KR1020170049163A KR101940906B1 (ko) 2016-04-25 2017-04-17 레지스터 이상 검출 장치
CN201710272530.5A CN107402830B (zh) 2016-04-25 2017-04-24 寄存器异常检测装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016086764A JP6718294B2 (ja) 2016-04-25 2016-04-25 レジスタ異常検出装置

Publications (2)

Publication Number Publication Date
JP2017199052A true JP2017199052A (ja) 2017-11-02
JP6718294B2 JP6718294B2 (ja) 2020-07-08

Family

ID=60237913

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016086764A Active JP6718294B2 (ja) 2016-04-25 2016-04-25 レジスタ異常検出装置

Country Status (3)

Country Link
JP (1) JP6718294B2 (ja)
KR (1) KR101940906B1 (ja)
CN (1) CN107402830B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111506525A (zh) * 2019-01-30 2020-08-07 拉碧斯半导体株式会社 半导体装置、周边装置控制系统、以及周边装置控制方法
CN111949547A (zh) * 2020-08-22 2020-11-17 深圳市捷诚技术服务有限公司 基于单片机异常的问题定位方法、单片机、设备以及系统

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109739673B (zh) * 2018-12-05 2023-05-09 新华三技术有限公司合肥分公司 一种寄存器写入保护方法、逻辑装置及通信设备
CN115220972A (zh) * 2022-06-07 2022-10-21 中科驭数(北京)科技有限公司 设备故障检测方法、装置、设备及计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09311796A (ja) * 1996-05-24 1997-12-02 Matsushita Electric Ind Co Ltd デバイス動作自動復帰装置
JP2011523474A (ja) * 2008-04-23 2011-08-11 エーティーラブ・インコーポレーテッド 誤動作時に自動復元する通信システム及びその復元方法
JP2015198344A (ja) * 2014-04-01 2015-11-09 株式会社デンソー 制御装置、又は、制御システム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002025282A (ja) * 2000-07-12 2002-01-25 Hitachi Ltd 不揮発性半導体記憶装置
US6725406B2 (en) * 2001-01-09 2004-04-20 Intel Corporation Method and apparatus for failure detection utilizing functional test vectors and scan mode
EP1438662A2 (en) * 2001-10-11 2004-07-21 Altera Corporation Error detection on programmable logic resources
JP2006048783A (ja) * 2004-08-02 2006-02-16 Renesas Technology Corp 不揮発性メモリおよびメモリカード
JP4555834B2 (ja) * 2004-12-27 2010-10-06 富士通株式会社 転送データの正当性を判定する装置及び方法
EP1980946B1 (en) * 2006-01-31 2013-05-29 Fujitsu Limited Error correction code generation method and memory management device
KR100944480B1 (ko) * 2006-04-27 2010-03-03 후지쯔 마이크로일렉트로닉스 가부시키가이샤 반도체 장치 및 시스템
JP4343945B2 (ja) * 2006-12-28 2009-10-14 三菱電機株式会社 電子制御装置
JP2012150661A (ja) * 2011-01-19 2012-08-09 Toshiba Corp プロセッサ動作検査システム、及びその検査方法
US9087192B2 (en) * 2013-09-10 2015-07-21 Infineon Technologies Ag Electronic circuit and method for monitoring a data processing
CN104679196B (zh) * 2015-03-10 2018-07-06 江苏邦融微电子有限公司 基于处理器的自检测、异常时复位系统及其实现方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09311796A (ja) * 1996-05-24 1997-12-02 Matsushita Electric Ind Co Ltd デバイス動作自動復帰装置
JP2011523474A (ja) * 2008-04-23 2011-08-11 エーティーラブ・インコーポレーテッド 誤動作時に自動復元する通信システム及びその復元方法
JP2015198344A (ja) * 2014-04-01 2015-11-09 株式会社デンソー 制御装置、又は、制御システム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111506525A (zh) * 2019-01-30 2020-08-07 拉碧斯半导体株式会社 半导体装置、周边装置控制系统、以及周边装置控制方法
JP2020123137A (ja) * 2019-01-30 2020-08-13 ラピスセミコンダクタ株式会社 半導体装置、周辺装置制御システム、および周辺装置制御方法
JP7350488B2 (ja) 2019-01-30 2023-09-26 ラピスセミコンダクタ株式会社 周辺装置制御システム、および周辺装置制御方法
CN111949547A (zh) * 2020-08-22 2020-11-17 深圳市捷诚技术服务有限公司 基于单片机异常的问题定位方法、单片机、设备以及系统

Also Published As

Publication number Publication date
CN107402830A (zh) 2017-11-28
KR20170121695A (ko) 2017-11-02
CN107402830B (zh) 2020-11-24
JP6718294B2 (ja) 2020-07-08
KR101940906B1 (ko) 2019-01-21

Similar Documents

Publication Publication Date Title
CN107402830B (zh) 寄存器异常检测装置
US10248580B2 (en) Method and circuit for protecting and verifying address data
CN114328316B (zh) Dma控制器、soc系统及基于dma控制器的数据搬运方法
JP6280359B2 (ja) プログラマブルコントローラ
CN110442473B (zh) 一种非易失性数据存储方法、装置、电子设备及介质
US7860940B2 (en) System and method for bus transmission cancellation
US11631454B2 (en) Methods and apparatus for reduced area control register circuit
JP4941954B2 (ja) データエラー検出装置およびデータエラー検出方法
JP2009259113A (ja) 不揮発性メモリ管理装置
US8891302B2 (en) Electronic equipment
US20180011758A1 (en) System and method for reducing ecc overhead and memory access bandwidth
US11768731B2 (en) System and method for transparent register data error detection and correction via a communication bus
EP2194458A2 (en) Request processing device, request processing system, and access testing method
US10303542B2 (en) Semiconductor device, functional safety system and program
US9442788B2 (en) Bus protocol checker, system on chip including the same, bus protocol checking method
CN108829417B (zh) 一种cpld的升级装置、方法、设备及存储介质
JP2001117855A (ja) バスインタフェース回路作成装置及び記録媒体
CN111323149A (zh) 含纠正otp错误功能的温度传感器装置及otp错误的纠正方法
JPH04162300A (ja) 半導体メモリ
JP2011054221A (ja) 記憶装置及び電子機器
JP2005115957A (ja) システムオンチップ性能測定装置およびシステムオンチップ性能測定方法
JP7554924B2 (ja) 保安装置および保安方法
JP5545067B2 (ja) 情報処理装置、及び情報処理装置の自己診断方法
JP2010231362A (ja) 電子機器の制御装置及びその制御装置を用いた空気調和機
JP2006004377A (ja) データ処理装置およびデータ処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190311

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200417

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200602

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200612

R150 Certificate of patent or registration of utility model

Ref document number: 6718294

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250