JP5937485B2 - 送信装置 - Google Patents

送信装置 Download PDF

Info

Publication number
JP5937485B2
JP5937485B2 JP2012235186A JP2012235186A JP5937485B2 JP 5937485 B2 JP5937485 B2 JP 5937485B2 JP 2012235186 A JP2012235186 A JP 2012235186A JP 2012235186 A JP2012235186 A JP 2012235186A JP 5937485 B2 JP5937485 B2 JP 5937485B2
Authority
JP
Japan
Prior art keywords
data
transmission
exclusive
reception
eor
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.)
Expired - Fee Related
Application number
JP2012235186A
Other languages
English (en)
Other versions
JP2014086924A (ja
Inventor
田中 伸明
伸明 田中
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.)
Fujitsu Frontech Ltd
Original Assignee
Fujitsu Frontech Ltd
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 Fujitsu Frontech Ltd filed Critical Fujitsu Frontech Ltd
Priority to JP2012235186A priority Critical patent/JP5937485B2/ja
Publication of JP2014086924A publication Critical patent/JP2014086924A/ja
Application granted granted Critical
Publication of JP5937485B2 publication Critical patent/JP5937485B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Detection And Prevention Of Errors In Transmission (AREA)

Description

本発明は、送信装置に関する。
メモリに記録された「0」または「1」のデータが、回路が正常であっても放射線の影響などで自然にデータ反転する、ソフトエラーという現象が知られている。信頼性が要求されるサーバなどでは、メモリのソフトエラーの対策として、パリティビットやError Correcting Code(ECC)を付加することなどが行われている。
パリティビットは、通常のメモリに対し、たとえば8ビット毎に1ビットなどの割合で追加される冗長ビットである。メモリへの書き込み時に、「1」の数が奇数または偶数となるようにパリティビットに「0」または「1」が書込まれ、読み出し時に通常のメモリとパリティビットの「1」の数が奇数、偶数のいずれであるかにより、メモリの正当性が確認される。パリティエラーが検出された場合は、プログラムやデータの正当性が保証されないため、システムダウンし、予備系に切替られる。
ECCは、例えば、32ビット幅のメモリの場合、7ビットの冗長ビットである。ECCを用いるエラー検出では、メモリへの書込み時にECCが書き込まれ、読み出し時には、1ビットエラーであれば通常のメモリデータとECCのデータにより自動訂正され、2ビットエラーの検出が行われるものである。ECCの場合は、1ビットエラーはデータが正しく訂正されて読み出せるので、より信頼性が向上する。2ビットエラーの場合はパリティエラー同様、システムダウンし、予備系に切り替えるなどの対応を行う。
一方、バッファメモリへのデータの読み書き時に発生したソフトエラーに起因する不都合を回避するため、以下のような方法が知られている。すなわち、バッファメモリ装置は、データをバッファ内の領域に書込み、当該バッファ内の領域からデータを読み出す際に、バッファ内の領域を順次指定する。その指定が、指定されるべきではない領域の指定である誤指定であった場合には、当該誤指定より後の指定に基づいて、当該誤指定により指定されるべきであった領域を検出する方法である。(例えば、特許文献1参照)
分布Exclusive OR(XOR)デバイスを用いたエラー検出方法も知られている。分布XORデバイスは、少なくとも二つのデータブロックをインターリーブ化した態様で格納するデータバッファを好適に含む。これらデータブロックはデータワードを含み、各データブロックのある特定のデータワードがCyclic Redundancy Check(CRC)ビットを含む。この方法では、CRCビットを用いてエラーを検出する。(例えば、特許文献2参照)
また、Static Random Access Memory(SRAM)に回路構成の情報を保持させるField Programable Gate Arrey(FPGA)において、SRAMのソフトエラーを修復する方法が知られている。このエラー修復方法では、FPGAに論理回路を定義するための属性情報が読み出され予め用意しておいた期待値と比較される。これにより、FPGAに書き込まれている属性情報にソフトエラーに起因する誤りや欠落がないかを判定することができる。ソフトエラーが検出された場合、期待値をFPGAに書き込み、問題のあった属性情報を上書きすることで、問題のあったFPGAの回路構成を定義し直し、ソフトエラーの影響を修復する。(例えば、特許文献3参照)
特開2011−113404号公報 特表2001−518211号公報 特開2008−15965号公報
上記のようなメモリのビット化け対策は、メインメモリやCentral Processing Unit(CPU)内部のキャッシュなど重要なメモリに対して付加される。一方、シリアル通信などのバッファ用のメモリについては、対策を設けることが困難である場合が多い。例えば、冗長ビットや属性情報を付加する方法では、冗長ビット等を付加することによるコストが問題となる場合がある。また、FPGAなど予めメモリ内蔵の素子の内部メモリをバッファとして利用する場合には、もともと冗長ビットを追加できない場合もある。よって、上記のような従来の方法では、バッファ用のメモリについて、メモリ幅を変えずに、ビット化けなどのエラーを検出することはできない。
しかしながら、通信のバッファ用メモリもソフトエラーが発生する可能性は当然ある。通信相手への送信データや相手からの受信データに金額情報などがあった場合、1ビット化けが、高額の桁、たとえば100万円の桁で発生すると、100万円単位の間違いが発生し、その間違いに気付かずに処理されてしまうという危険性がある。
上記課題に鑑み、本発明では、バッファ用のメモリにおいて、メモリ幅を変えずにメモリのソフトエラーを検出することにより、信頼性が高い通信を実現することを目的としている。
本発明の一つの態様によれば、所定の長さの入力データを一時的に記憶し、前記所定の長さの出力データを出力する記憶装置により前記入力データを転送する際のエラーを検出するエラー検出装置であって、前記所定の長さの保持データを記憶する記憶部と、前記保持データの初期値を前記記憶部に設定し、前記入力データと前記保持データとの第1の排他的論理和を算出し、前記出力データと前記第1の排他的論理和との第2の排他的論理和を算出する論理制御回路と、前記第2の排他的論理和が前記初期値と一致しない場合に、エラーが発生していると判別する判別回路と、を有するエラー検出装置と、前記出力データを送信する送信回路と、前記記憶装置から出力された出力データと、前記記憶部に保持された更新前の前記第2の排他的論理和とを比較する比較回路と、を有し、前記記憶装置は、対象データを前記所定の長さに順次分割した複数の前記入力データを分割された順番で一時的に記憶し、前記複数の入力データに対応した複数の前記出力データを前記順番で出力し、前記論理制御回路は、算出された前記第1の排他的論理和と次の前記入力データとの第3の排他的論理和を算出して、前記第1の排他的論理和を前記第3の排他的論理和に更新することを最後に記憶される前記入力データまで前記順番で繰り返し、前記第1の排他的論理和と最初の出力データに基づき算出された前記第2の排他的論理和と、次の出力データとの第4の排他的論理和を算出し、前記第2の排他的論理和を前記第4の排他的論理和に更新することを、少なくとも最後から2番目に出力された前記出力データまで前記順番で繰り返し、前記判別回路は、最後に出力される前記出力データに基づく前記第2の排他論理和が前記初期値と一致しない場合にエラーが発生していると判別し、前記判別回路は、エラー有りと判別すると、前記送信回路への前記出力データの書込を停止し、前記判別回路は、前記比較回路による比較の結果として、最後に出力された前記出力データと、最後から2番目に出力された前記出力データに基づく前記第2の排他的論理和とが前記初期値に応じた関係にない場合、前記最後の出力データの書込を抑止する送信装置が提供される。
本発明による送信装置によれば、バッファメモリのメモリ幅を変えることなく、エラー検出を行なうことができる。
第1の実施の形態による送信装置の構成を示すブロック図である。 第1の実施の形態によるメインメモリから送信用バッファメモリへのデータの書込について説明する図である。 第1の実施の形態による送信用バッファメモリへのデータ書込み時のFPGAの動作を説明するタイミングチャートである。 第1の実施の形態による送信用バッファメモリからのデータ読出し時のFPGAの動作を説明するタイミングチャートである。 第1の実施の形態による送信データを送信用バッファメモリに格納する場合のCPUの動作を示すフローチャートである。 第1の実施の形態による送信データを送信回路に格納する場合のCPUの動作を示すフローチャートである。 第2の実施の形態による受信装置の構成を示すブロック図である。 第2の実施の形態による受信データを受信用バッファメモリに書き込む際のFPGAの動作を説明するタイミングチャートである。 第2の実施の形態による受信用バッファメモリから受信データを読み出す際のFPGAの動作を説明するタイミングチャートである。 第2の実施の形態によるCPUによる受信用DMAコントローラの起動処理を示すフローチャートである。 第2の実施の形態による受信データをメインメモリに格納する場合のCPUの動作を示すフローチャートである。
以下、図面を参照しながら、第1の実施の形態によるエラー検出装置について説明する。第1の実施の形態においては、送信用のバッファメモリに対するエラー検出装置を例にして説明する。
図1は、第1の実施の形態による送信装置の構成を示すブロック図である。図1に示すように、送信装置1は、CPU3、メインメモリ5、FPGA10を有している。CPU3は、送信装置1の動作を制御する中央演算処理装置である。メインメモリ5は、送信装置1の動作に必要な各種データを格納する記憶装置である。FPGA10は、送信を制御する送信制御回路である。CPU3、メインメモリ5、FPGA10は、いずれもデータバス7に接続されており、CPU3の管理の下で各種のデータを相互に授受することができる。
FPGA10は、送信用バッファメモリ12、送信用Exclusive OR(EOR)レジスタ14、送信用EOR制御回路16、送信用Direct Memory Access(DMA)コントローラ18、比較回路24、送信回路26を有している。これらの構成要素は、いずれもデータバス7に接続されており、各種のデータを相互に授受することができる。
送信用バッファメモリ12は、CPU3がメインメモリ5から読み出した送信データを一時的に記憶する記憶装置である。このとき、送信用バッファメモリ12は、送信データを所定の長さに分割した状態の入力データとして記憶し、出力する際には所定の長さの出力データとして出力する。送信用EORレジスタ14は、送信用バッファメモリ12と同一の長さのデータを記憶する記憶部である。送信用EOR制御回路16は、送信用バッファメモリ12の入力データまたは出力データと送信用EORレジスタ14に保持されている保持データとのEOR演算を実行させる演算制御回路である。
送信用DMAコントローラ18は、転送カウンタ20、書込制御回路22を有しており、送信用バッファメモリ12から送信データを読出し、送信回路26に書き込む動作を制御する。すなわち、送信用DMAコントローラ18は、送信用バッファメモリ12へリード信号を出力して、送信データに対応する出力データを読み出す。また、送信用DMAコントローラ18は、送信回路26へライト信号を出力して、送信用バッファメモリ12から読み出した出力データを送信回路26へ転送する。転送カウンタ20は、送信回路26へ出力データを転送する際のデータ量をカウントするカウンタである。書込制御回路22は、転送カウンタ20の値及び後述する比較回路24からの比較結果に基づき、送信回路26への出力データの書込を制御する。
比較回路24は、各出力データに基づくEOR演算を実行した際の送信用EORレジスタ14の保持データと、各出力データとを比較し、比較結果を書込制御回路22へ出力する。書込制御回路22は、転送カウンタ20のカウンタ値と比較回路24の比較結果とに基づき、送信用バッファメモリ12の入力データと出力データとが異なっていることを示している場合には、送信回路26への送信データの書込を行わないように制御する。送信回路26は、書き込まれた送信データ110を外部へ送信する。
図2は、メインメモリ5から送信用バッファメモリ12へのデータの書込について説明する図である。図2に示すように、メインメモリ5に送信データ100が記憶されている。送信データ100は、例えば1バイトなど、所定のデータ長の「D0」で表される送信データ100−0、・・・、「Dn」で表される送信データ100−n等を含んでいる。CPU3は、メインメモリ5から所定のデータ長の送信データ100−0、100−1、・・・、100−n毎にデータを送信用バッファメモリ12に転送して書き込む。すなわち、送信データ100−0、100−1、・・・、100−nが送信用バッファメモリ12へ転送され、送信用バッファメモリ12には、送信データ110が記憶される。送信データ110は、送信データ100−1、100−2、・・・、100−nに対応する、所定の長さの送信データ110−1、・・・、110−nが含まれる。なお、正常に書込みが行われ、その後のビット化けなどがなければ、送信データ110は送信データ100と同一のものであるが、ここでは異なる名称として記載している。
図3は、送信用バッファメモリ12へのデータ書込み時のFPGA10の動作を説明するタイミングチャートである。図3は、バッファライト信号120、レジスタ更新信号122、送信データ100、レジスタライト信号126、レジスタデータ128を示している。
バッファライト信号120は、送信用バッファメモリ12に送信データ100を書き込むタイミングを示す信号であり、図3の例では負論理となっている。バッファライト信号120は、CPU3から出力され、送信用バッファメモリ12、送信用EOR制御回路16に入力される。
レジスタ更新信号122は、送信用EORレジスタ14のレジスタ値を更新するタイミングを示す信号である。レジスタ更新信号122は、送信用EOR制御回路16から出力され、送信用EORレジスタ14に入力される。
送信データ100は、メインメモリ5から読み出され、送信用バッファメモリ12に書き込まれるデータである。送信データ100は、送信データ100−0、100−1、・・・、100−nを含んでいる。レジスタライト信号126は、CPU3から出力され、送信用EORレジスタ14への書込みを開始するための信号であり、図3の例では、負論理となっている。
レジスタデータ128は、送信用EORレジスタ14に保持されているデータであり、送信用EORレジスタ14のデータと、送信データ100とを順次EOR演算した結果により逐次更新される。例えば、レジスタデータ128の「0X00」は、送信用EORレジスタ14の初期値であり、レジスタライト信号126に応じてCPU3により設定される。レジスタデータ128の「EOR0」は、レジスタデータ128の「0X00」と送信データ100の「D0」とのEORの結果である。レジスタデータ128の「EOR1」は、レジスタデータ128の「EOR0」と送信データ100の「D1」とのEORの結果である。同様に順次EOR演算が行われ、レジスタデータ128の「EORn」は、レジスタデータ128の「EORn―1」と送信データ100の「Dn」とのEORの結果である。このとき、送信データ100は、例えばECCなどでデータの正確性が保証されたデータであるため、送信用EORレジスタ14に更新されるデータも正しいことが保証される。
図4は、送信用バッファメモリ12からのデータ読出し時のFPGA10の動作を説明するタイミングチャートである。図4は、送信DMA要求130、バッファリード信号132、レジスタ更新信号134、バッファデータ136、転送カウンタ値138、送信回路ライト信号140、レジスタデータ142、比較結果144、書込抑止信号146を示している。
送信DMA要求130は、送信回路26が送信用DMAコントローラ18へ、送信データを要求するタイミングを示す信号であり、図4の例では負論理となっている。バッファリード信号132は、送信用DMAコントローラ18が送信用バッファメモリ12から送信データを読み込むタイミングを示す信号であり、図4の例では負論理となっている。バッファリード信号132は、送信用DMAコントローラ18から出力され、送信用EOR制御回路16及び送信用バッファメモリ12に入力されている。レジスタ更新信号134は、送信用EORレジスタ14を更新するタイミングを示す信号であり、送信用EOR制御回路16から出力される。
バッファデータ136は、送信用バッファメモリ12から読み出されたデータであり、バッファデータ136−0、136−1、・・・、136−nを含んでいる。転送カウンタ値138は、送信用バッファメモリ12から読み出されて送信回路26へ転送されるバッファデータ136のうちの未転送データの数(例えば、バイト数)を示す数である。送信回路ライト信号140は、送信回路26へのデータ書込みを制御する信号であり、書込制御回路22から出力される。バッファデータ136は、送信回路ライト信号140に基づき、順次送信回路26に書き込まれる。
レジスタデータ142は、送信用EORレジスタ14に保持されたデータであり、送信用EORレジスタ14のデータと、バッファデータ136とを順次EOR演算した結果に逐次更新されるデータである。例えば、レジスタデータ142の「EORn」は、図3に示したレジスタデータ128の「EORn」である。レジスタデータ142の「EOR0’」は、レジスタデータ142の「EORn」とバッファデータ136の「D0」とのEORの結果である。レジスタデータ142の「EOR1’」は、レジスタデータ142の「EOR0’」とバッファデータ136の「D1」とのEORの結果である。同様に順次EOR演算が行われ、レジスタデータ142の「EORn’」は、レジスタデータ142の「EORn―1’」とバッファデータ136の「Dn」とのEORの結果である。
比較結果144は、レジスタデータ142が送信データ100に等しいか否かを示す信号であり、比較回路24から出力される。送信データ100とレジスタデータ142とが等しくない場合には、比較結果144として、例えば「ON」信号が出力される。
書込抑止信号146は、送信回路26への送信データの書込を抑止する信号である。本実施の形態では、比較結果144が「ON」で、転送カウンタ20のカウンタ値が「0」のとき、図4の点線のように、書込抑止信号が出力される。すなわち、送信用バッファメモリ12の入力データと出力データとの間に相違が生じていると判断されることになる。これにより、送信回路26において、「Dn」に対応する書込みが行われなくなる。
以下、送信装置1におけるエラー検出処理を、フローチャートを参照しながらさらに説明する。図5は、送信データを送信用バッファメモリ12に格納する場合のCPU3の動作を示すフローチャートである。図6は、送信データを送信回路26に格納する場合のCPU3の動作を示すフローチャートである。
図5に示すように、CPU3は、メインメモリ5に送信データ100を格納する(S151)。CPU3は、送信用EORレジスタ14をクリアして、初期化する(S152)。初期値は、「0」とする。このとき、図3を参照しながら説明したように、レジスタライト信号126により、EOR演算及び送信用EORレジスタ14の更新が開始される。
CPU3は、転送元アドレスを、メインメモリ5の送信データ100の格納先頭アドレスに設定し(S153)、転送先アドレスを、送信用バッファメモリ12の先頭アドレスに設定する(S154)。また、CPU3は、ループカウンタを、残りの転送データ数(例えば、n)に設定する(S155)。
CPU3は、ループカウンタ=0であるか否か判別し(S156)、ループカウンタがゼロであれば(S156:YES)処理を終了する。ループカウンタがゼロでない場合には(S156:NO)、図3を参照しながら説明したように、FPGA10では、送信用EOR制御回路16が、メインメモリ5から読み出された送信データ100と送信用EORレジスタ14とのEORを計算する。送信用EOR制御回路16は、送信用EORレジスタ14の値(レジスタデータ142)を、EORの計算結果に更新する。
一方、CPU3は、送信用バッファメモリ12の転送先アドレスに、メインメモリ5の転送元アドレスの送信データ100を格納する(S157)。図2の例では、送信データ100は、送信用バッファメモリ12に、送信データ110として格納される。
CPU3は、転送元アドレスを、(転送元アドレス+1)に更新し(S158)、転送先アドレスを、(転送先アドレス+1)に更新し(S159)、ループカウンタを、(ループカウンタ−1)に更新し(S160)、処理をS156に戻す。
上記の処理により、CPU3は、送信用バッファメモリ12に、送信データ110を例えば1バイトずつ格納する。送信用EOR制御回路16は、送信データ110が送信用バッファメモリ12に書き込まれるたびに、送信用EORレジスタ14のレジスタ値と送信データ100とのEOR演算を行い、その演算結果で、送信用EORレジスタ14を更新する。全ての送信データ110を送信用バッファメモリ12に書き込み終わると、送信用EORレジスタ14には、全送信データ100を順次EORした結果が格納されていることになる。
図6に示すように、CPU3は、送信回路26の起動設定(S171)、及び送信用DMAコントローラ18の起動設定を行う(S172)。CPU3は、データの転送元アドレスを、送信用バッファメモリ12の先頭アドレスに設定するとともに、転送カウンタに転送バイト数などを設定(S173)し、送信用DMAコントローラ18を起動し(S174)、FPGA10による送信処理を行う。
図4を参照しながら説明したように、FPGA10では、シリアル通信の送信回路26の送信DMA要求130に応じて、送信用DMAコントローラ18は、送信用バッファメモリ12から、送信データ110を順次読み出していく。このとき、送信用EOR制御回路16は、送信用DMAコントローラ18が送信用バッファメモリ12から送信データ110を読み出すたびにEOR計算を行い、送信用EORレジスタ14を更新する。
比較回路24は、送信用DMAコントローラ18が、送信用バッファメモリ12から送信データ110の読み出しを行うタイミングで、送信データ100と、送信用EORレジスタ14との値を比較し、その結果を、送信用DMAコントローラ18へ通知する。
送信用DMAコントローラ18内の書込制御回路22は、転送カウンタ20のカウンタ値が「0」、つまり、最終データ書込みのときに、比較回路24の比較結果に基づき、書込みを抑止するか否かを判定する。すなわち、比較結果が一致していた場合は、書込制御回路22は、メモリのビット化けがないと判定し、送信用DMAコントローラ18が、送信回路26に最終データを書き込むことを許容する。不一致だった場合は、書込制御回路22は、ビット化けが発生していると判定し、送信回路26への最終データ書き込みを抑止する書込抑止信号146を出力する。
以上説明したように、第1の実施の形態による送信装置1によれば、送信用バッファメモリ12に送信データ100を書き込むたびに送信用EORレジスタ14の値とのEOR演算が行われ、送信用EORレジスタ14が更新される。このとき、送信データ100はデータの正確性が保証されたデータであるため、送信用EORレジスタ14に更新されるデータも正しいことが保証される。さらに、送信用バッファメモリ12に格納された送信データ110が読み出されるたびに、送信用EORレジスタ14との値とのEOR演算が行われ、送信用EORレジスタ14が更新される。
全ての送信データ110に基づくEOR演算が終了した場合、全ての送信データ110が全ての送信データ100と一致している場合には、送信用EORレジスタ14の値は初期値に戻る。よって、送信用EORレジスタ14の初期値を「0」に設定しておけば、最後の送信データ110−nとのEOR演算を行う直前の送信用EORレジスタ14の値は、送信データ110−nに等しくなる。これを利用して、送信データ110が送信データ100と等しくない場合をエラーとして検出し、最後の送信データ110−nを送信回路26に書き込むことを抑止する。
以上のように、本実施の形態による送信装置1によれば、送信用バッファメモリ12のメモリ幅を増加させることなく、送信用バッファメモリ12におけるビット化けを検出することが可能になる。また、送信回路26により送信データ110が送信された場合には、受信側では、最後の送信データ110−nが抜けた中途半端なデータ受信となるため、伝送エラーを検出することができる。その後は、受信側で、ソフトウェア的なリトライ動作により、リカバリが可能である。
以下、図7から図10を参照しながら、第2の実施の形態によるエラー検出装置について説明する。第2の実施の形態においては、受信用のバッファメモリに対するエラー検出装置を例にして説明する。
図7は、第2の実施の形態による受信装置の構成を示すブロック図である。図7に示すように、受信装置50は、CPU53、メインメモリ55、FPGA60を有している。CPU53は、受信装置50の動作を制御する中央演算処理装置である。メインメモリ55は、受信装置50の動作に必要な各種データを格納する記憶装置である。FPGA60は、受信を制御する受信制御回路である。CPU53、メインメモリ55、FPGA60は、いずれもデータバス57に接続されており、CPU53の管理の下で各種のデータを相互に授受することができる。
FPGA60は、受信用バッファメモリ62、受信用EORレジスタ64、受信用EOR制御回路66、受信用DMAコントローラ68、受信回路70を有している。これらの構成要素は、いずれもデータバス57に接続されており、各種のデータを相互に授受することができる。
受信用バッファメモリ62は、受信回路70から読み出された受信データを一時的に記憶する記憶装置である。このとき、受信用バッファメモリ62は、送信データを所定の長さに分割した状態の入力データとして記憶し、出力する際には所定の長さの出力データとして出力する。受信用EORレジスタ64は、受信用バッファメモリ62と同一の長さのデータを記憶する記憶部である。受信用EOR制御回路66は、受信用バッファメモリ62の入力データまたは出力データと受信用EORレジスタ64に保持されている保持データとのEOR演算を実行させる演算制御回路である。
受信用DMAコントローラ68は、受信回路70から受信データを読出し、受信用バッファメモリ62に書き込む動作を制御する制御回路である。すなわち、受信用DMAコントローラ68は、受信回路70へリード信号を出力して、外部からの受信データを読み出す。また、受信用DMAコントローラ68は、受信用バッファメモリ62へライト信号を出力して、受信回路70から読み出した受信データを受信用バッファメモリ62へ出力する。受信回路70は、外部からのデータを受信し、データを受信すると受信用DMAコントローラ68へデータ読み出しを要求する受信回路である。
図8は、受信データを受信用バッファメモリ62に書き込む際のFPGA60の動作を説明するタイミングチャートである。図8は、受信DMA要求180、受信回路リード信号182、受信データ184、バッファライト信号186、レジスタ更新信号188、レジスタデータ190を示している。
受信DMA要求180は、受信回路70が受信用DMAコントローラ68に受信データの読み出しを要求するタイミングを示す信号であり、図8の例では負論理となっている。受信回路リード信号182は、受信用DMAコントローラ68が、受信回路70から受信データを読み出すタイミングを示す信号であり、図8の例では負論理になっている。
受信データ184は、受信用バッファメモリ62に書き込むデータを示す信号である。受信データ184は、例えば1バイトなど、所定のデータ長の「D0」で表される受信データ184−1、・・・、「Dn」で表される受信データ184−n等を含んでおり、所定のデータ長毎に受信用バッファメモリ62に格納される。
バッファライト信号186は、受信用バッファメモリ62に受信データ184を書き込むタイミングを示す信号であり、図8の例では負論理になっている。バッファライト信号186は、受信用DMAコントローラ68から出力される。レジスタ更新信号188は、受信用EORレジスタ64を更新するタイミングを示す信号であり、受信用EOR制御回路66から出力され、受信用EORレジスタ64に入力される。
レジスタデータ190は、受信用EORレジスタ64に保持されているデータであり、受信用EORレジスタ64のデータと、受信データ184とを順次EOR演算した結果により逐次更新される。例えば、レジスタデータ190の「0X00」は、受信用EORレジスタ64の初期値であり、CPU53により設定される。レジスタデータ190の「EOR0」は、レジスタデータ190の「0X00」と受信データ184−1の「D0」とのEORの結果である。レジスタデータ190の「EOR1」は、レジスタデータ190の「EOR0」と受信データ184の「D1」とのEORの結果である。同様に順次EOR演算が行われ、レジスタデータ190の「EORn」は、レジスタデータ190の「EORn―1」と受信データ184の「Dn」とのEORの結果である。
図9は、受信用バッファメモリ62から受信データを読み出す際のFPGA60の動作を説明するタイミングチャートである。図9は、バッファリード信号192、バッファデータ194、レジスタ更新信号196、レジスタ値198を示している。
バッファリード信号192は、受信用バッファメモリ62から受信データを読み出すタイミングを示す信号であり、図9の例では負論理になっている。バッファリード信号192は、CPU53により出力され、受信用バッファメモリ62および受信用EORレジスタ64に入力されている。バッファデータ194は、受信用バッファメモリ62より読み出されたデータであり、バッファデータ194−0、194−1、・・・、194−nを含んでいる。バッファデータ194は、CPU53によりメインメモリ55へ転送される。レジスタ更新信号196は、受信用EORレジスタ64を更新するタイミングを示す信号であり、受信用EOR制御回路66により出力される。
レジスタデータ198は、受信用EORレジスタ64に保持されたデータであり、バッファデータ194とレジスタデータ198とを順次EOR演算した結果に逐次更新されるデータである。例えば、レジスタデータ198の「EOR0’」は、レジスタデータ198の「EORn」とバッファデータ194の「D0」とのEORの結果である。「EORn」は、レジスタデータ190の「EORn」である。レジスタデータ198の「EOR1’」は、レジスタデータ198の「EOR0’」とバッファデータ194の「D1」とのEORの結果である。同様に順次EOR演算が行われ、レジスタデータ198の「EORn’」は、レジスタデータ198の「EORn―1」とバッファデータ194の「Dn」とのEORの結果である。受信用EOR制御回路66は、受信用EORレジスタ64のレジスタデータ198の「EORn’」をメインメモリ55へ出力する。
以下、受信装置50におけるエラー検出処理を、フローチャートを参照しながらさらに説明する。図10は、CPU53による受信用DMAコントローラ68の起動処理を示すフローチャートである。図11は、受信データをメインメモリ55に格納する場合のCPU53の動作を示すフローチャートである。
図10に示すように、CPU53は、受信動作を開始する前に、まず受信用EORレジスタ64を「0」に初期化する(S201)。CPU53は、受信回路70に起動設定を行う(S202)。また、CPU53は、受信用DMAコントローラ68に起動設定を行う(S203)。CPU53は、転送先アドレスを、受信用バッファメモリ62の先頭アドレスに指定する(S204)。そしてCPU53は、受信用DMAコントローラ68を起動する(S205)。
図8を参照しながら説明したように、FPGA60では、受信回路70が受信データを受信すると、受信DMA要求180を受信用DMAコントローラ68に出力する。受信用DMAコントローラ68は、受信回路70からの受信DMA要求180を受信すると、受信回路70から、受信データ184を読み出し、受信用バッファメモリ62に受信データ184を書き込む。
受信用EOR制御回路66は、受信用DMAコントローラ68が受信回路70から受信データ184を読み出して、受信用バッファメモリ62に書き込むたびに、受信用EORレジスタ64のレジスタデータ190と受信データ184のEOR演算を行う。また、受信用EOR制御回路66は、EOR演算の結果で、受信用EORレジスタ64を更新する。
受信用DMAコントローラ68が、受信回路70が受信した受信データ184を全て受信用バッファメモリ62に書き込み終わると、受信用EORレジスタ64には、全受信データ184を順次EORした結果が格納されていることになる。
図11に示すように、CPU53は、転送先アドレスを、メインメモリ55の受信データ格納先頭アドレスに設定し(S211)、転送元アドレスを、受信用バッファメモリ62の先頭アドレスに設定する(S212)。CPU53は、ループカウンタを、受信データの残数(例えばn)に設定する(S213)。
CPU53は、ループカウンタ=0であるか否か判別し(S214)、ループカウンタがゼロであれば(S214:YES)、S219の処理に進む。ループカウンタがゼロでない場合には(S214:NO)、図9を参照しながら説明したように、FPGA60では、受信用EOR制御回路66が、受信用バッファメモリ62から読み出されたバッファデータ194と受信用EORレジスタ64とのEORを計算する。受信用EOR制御回路66は、受信用EORレジスタ64の値(レジスタデータ198)を、EORの計算結果に更新する。
一方、CPU53は、メインメモリ55の転送先アドレスに、受信用バッファメモリ62の転送元アドレスのバッファデータ194を格納する(S215)。CPU53は、転送元アドレスを、(転送元アドレス+1)に更新し(S216)、転送先アドレスを、(転送先アドレス+1)に更新し(S217)、ループカウンタを、(ループカウンタ−1)に更新し(S218)、処理をS214に戻す。
S219では、CPU53は、受信用EORレジスタ64が「0」であるか否かを判別する。受信用EORレジスタ64の値が「0」である場合には(S219:YES)、CPU53は、処理を正常終了させ、「0」でない場合には(S219:NO)、リトライ処理などを行う(S221)。
上記の処理において、受信用DMAコントローラ68は、受信用バッファメモリ62に、受信データ184を例えば1バイトずつ格納する。受信用EOR制御回路66は、受信データ184が受信用バッファメモリ62に書き込まれるたびに、受信用EORレジスタ64のレジスタ値と受信データ184とのEOR演算を行い、その演算結果で、受信用EORレジスタ64を更新する。全ての受信データ184を受信用バッファメモリ62に書き込み終わると、受信用EORレジスタ64には、全受信データ184を順次EORした結果が格納されていることになる。
さらにCPU53は、受信用バッファメモリ62に格納されたバッファデータ194を例えば1バイトずつ読み出し、メインメモリ55に転送する。受信用EOR制御回路66は、バッファデータ194が受信用バッファメモリ62から読み出されるたびに、受信用EORレジスタ64のレジスタ値とのEOR演算を行い、その演算結果で、受信用EORレジスタ64を更新する。全てのバッファデータ194を受信用バッファメモリ62から読み出すと、受信用EORレジスタ64には、全受信データ184および全バッファデータ194を順次EORした結果が格納されることになる。
CPU53は、受信用EORレジスタ64から、全バッファデータ194が読み出された際の受信用EORレジスタ64のレジスタデータ198を読出す。そのレジスタデータ198が「0」である場合には、全データが正しく受信されたものと判断できるため、読みだしたバッファデータ194を受信データとして使って継続処理する。受信用EORレジスタ64に格納されているデータが「0」でない場合には、エラーがあったと判断して、読み出されたバッファデータ194を破棄し、リトライ処理などの起動を行う。
このとき、CPU53は、受信用バッファメモリ62からバッファデータ194を順次読み出しするが、ハード的には受信用EORレジスタ64の更新は行わず、CPU53が順次バッファデータ194のEOR計算を実施することもできる。この場合には、CPU53は、全バッファデータ194のEORを計算した結果と受信用EORレジスタ64のEOR結果を比較し、一致なら正常、不一致ならビット化けなどのエラーが発生したものと判定する。
以上説明したように、第2の実施の形態による受信装置50によれば、受信用バッファメモリ62に受信データ184を書き込むたびに、受信用EORレジスタ64の値とのEOR演算が行われ、受信用EORレジスタ64が更新される。さらに、受信用バッファメモリ62に格納されたバッファデータ194が読み出されるたびに、受信用EORレジスタ64との値とのEOR演算が行われ、受信用EORレジスタ64が更新される。
受信用バッファメモリ62から全てのバッファデータ194が読み出され、EOR演算が終了した際に、受信データ184が全てバッファデータ194と一致している場合には、受信用EORレジスタ64のレジスタ値は初期値に戻る。よって、受信用EORレジスタ64が初期値に等しいか否かを確認することにより、受信データ184のデータの欠損や、受信用EORレジスタ64におけるビット化け等のエラー検出を行なうことができる。
以上のように、本実施の形態による受信装置50によれば、受信用バッファメモリ62のメモリ幅を増加させることなく、受信用バッファメモリ62におけるビット化け等のエラーを検出することが可能になる。また、送信装置1によりエラーが検出されて最後の送信データ110−nが抜けた中途半端なデータが受信された場合など、伝送エラーを検出することもできる。その後は、ソフトウェア的なリトライ動作により、リカバリが可能である。
以上のように、本発明の第1及び第2の実施の形態によれば、ビット幅を増やさずにバッファメモリのビット化け等のエラーを検出することができ、より信頼性の高いデータ送受信が可能である。
なお、送信データ100、受信データ184は、対象データの一例であり、送信データ100−0、・・・、100−n、受信データ184−0、・・・、184−nは、入力データの一例である。レジスタデータ128、レジスタデータ190は、保持データの一例である。バッファデータ136−0、・・・、136−n、バッファデータ194―0、・・・、194−nは、出力データの一例である。また、送信用バッファメモリ12,受信用バッファメモリ62は、記憶装置の一例であり、送信用EORレジスタ14、受信用EORレジスタ64は、記憶部の一例である。
送信用バッファメモリ12、受信用バッファメモリ62は、記憶装置の一例であり、送信用EORレジスタ14、受信用EORレジスタ64は、記憶部の一例である。送信用EOR制御回路16、受信用EOR制御回路66は、論理制御回路の一例であり、書込制御回路22、CPU53は、判別回路の一例である。
なお、本発明は、以上に述べた実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の構成または実施形態を採ることができる。上記各実施の形態においては、FPGAを例にして説明したが、同様の動作が可能なものであればこれに限定されない。また、例えば、FPGA10、FPGA60を簡略化するため、EOR演算をCPU3、またはCPU53側で行うようにしてもよい。すなわち、CPU3、53側のバッファメモリ5、55のデータ書き込み・読み出しの際に、送信用EORレジスタ14、受信用EORレジスタ64EORレジスタを更新する制御回路なしに、CPUのソフトウェア処理にまかせる方法である。この場合、CPU3、53側の処理は増えるが、上記実施の形態による送信装置1、受信装置50と同様に、送信用バッファメモリ12、受信用バッファメモリ62のメモリ幅を変えずに、エラー検出を行なうことができる。
この場合、送信時は、CPU3がメモリ5に書き込みする際の送信用EORレジスタ14の更新制御は行わず、あらかじめCPU3で実行されるソストウェアが、全送信データ100のEOR結果を、送信用EORレジスタ14に書き込みしておく。送信用EOR制御回路16は、送信用DMAコントローラ18が、送信用バッファメモリ12からバッファデータ136を読み出すときに、送信用EORレジスタ14の計算を実施する。書込制御回路22は、比較回路24、転送カウンタ20からの信号に基づき、送信回路26への書き込み処理を抑止する。
受信装置50におけるエラー判別時においては、入力データと出力データを順次EOR演算したが、これに限定されない。例えば、入力データに関するEOR演算と、出力データに関するEOR演算とを受信用EOR制御回路66が別々に計算し、互いに一致しているか否かをCPU53で判別するといった方法でもよい。また、受信装置50においては、受信用EORレジスタ64に設定される初期値は「0」に限定されない。初期値を「0」以外にしたときには、判別を行う際に、最後の入力データと比較対象の送信用EORレジスタ14または受信用EORレジスタ64の値が、初期値に応じた関係になっていない場合にエラーが発生すると判別すればよい。例えば、4ビットのデータで初期値を「1111」とした場合には、比較対象の値が、最後の入力データの各ビットを反転させた値になっていればよい。
1 送信装置
3 CPU
5 メインメモリ
7 データバス
10 FPGA
12 送信用バッファメモリ
14 送信用EORレジスタ
16 送信用EOR制御回路
18 送信用DMAコントローラ
20 転送カウンタ
22 書込制御回路
24 比較回路
26 送信回路
50 受信装置
53 CPU
55 メインメモリ
57 データバス
60 FPGA
62 受信用バッファメモリ
64 受信用EORレジスタ
66 受信用EOR制御回路
68 受信用DMAコントローラ
70 受信回路
100 送信データ
110 送信データ
120 バッファライト信号
122 レジスタ更新信号
126 レジスタライト信号
128 レジスタデータ
130 送信DMA要求
132 バッファリード信号
134 レジスタ更新信号
136 バッファデータ
138 転送カウンタ値
140 送信回路ライト信号
142 レジスタデータ
144 比較結果
146 書込抑止信号

Claims (3)

  1. 所定の長さの入力データを一時的に記憶し、前記所定の長さの出力データを出力する記憶装置により前記入力データを転送する際のエラーを検出するエラー検出装置であって、
    前記所定の長さの保持データを記憶する記憶部と、
    前記保持データの初期値を前記記憶部に設定し、前記入力データと前記保持データとの第1の排他的論理和を算出し、前記出力データと前記第1の排他的論理和との第2の排他的論理和を算出する論理制御回路と、
    前記第2の排他的論理和が前記初期値と一致しない場合に、エラーが発生していると判別する判別回路と、
    を有するエラー検出装置と、
    前記出力データを送信する送信回路と、
    前記記憶装置から出力された出力データと、前記記憶部に保持された更新前の前記第2の排他的論理和とを比較する比較回路
    有し、
    前記記憶装置は、対象データを前記所定の長さに順次分割した複数の前記入力データを分割された順番で一時的に記憶し、前記複数の入力データに対応した複数の前記出力データを前記順番で出力し、
    前記論理制御回路は、算出された前記第1の排他的論理和と次の前記入力データとの第3の排他的論理和を算出して、前記第1の排他的論理和を前記第3の排他的論理和に更新することを最後に記憶される前記入力データまで前記順番で繰り返し、前記第1の排他的論理和と最初の出力データに基づき算出された前記第2の排他的論理和と、次の出力データとの第4の排他的論理和を算出し、前記第2の排他的論理和を前記第4の排他的論理和に更新することを、少なくとも最後から2番目に出力された前記出力データまで前記順番で繰り返し、
    前記判別回路は、最後に出力される前記出力データに基づく前記第2の排他論理和が前記初期値と一致しない場合にエラーが発生していると判別し、
    前記判別回路は、エラー有りと判別すると、前記送信回路への前記出力データの書込を停止し、
    前記判別回路は、前記比較回路による比較の結果として、最後に出力された前記出力データと、最後から2番目に出力された前記出力データに基づく前記第2の排他的論理和とが前記初期値に応じた関係にない場合、前記最後の出力データの書込を抑止することを特徴とす送信装置。
  2. 前記対象データを保持する主記憶部と、
    前記主記憶部の動作を制御する中央演算処理装置と、
    をさらに有し、
    前記対象データは、前記中央演算処理装置により、前記主記憶部から読み出され、前記記憶装置に前記所定の長さ毎に記憶されることを特徴とする請求項に記載の送信装置。
  3. 前記中央演算処理装置は、前記主記憶部において前記所定の長さの初期値を設定し、前記記憶装置に最初に記憶される前記入力データと前記初期値との第1の排他的論理和を算出し、算出された前記第1の排他的論理和と、次に記憶される前記入力データとの第3の排他的論理和を算出し、前記第1の排他的論理和を算出された前記第3の排他的論理和に更新することを、最後に記憶される前記入力データまで繰り返し、更新された結果の前記第1の排他的論理和を前記記憶部に書き込み、
    前記論理制御回路は、前記記憶部に書き込まれた前記第1の排他的論理和に基づき、前記第2の排他的論理和を算出する
    ことを特徴とする請求項に記載の送信装置。
JP2012235186A 2012-10-24 2012-10-24 送信装置 Expired - Fee Related JP5937485B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012235186A JP5937485B2 (ja) 2012-10-24 2012-10-24 送信装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012235186A JP5937485B2 (ja) 2012-10-24 2012-10-24 送信装置

Publications (2)

Publication Number Publication Date
JP2014086924A JP2014086924A (ja) 2014-05-12
JP5937485B2 true JP5937485B2 (ja) 2016-06-22

Family

ID=50789600

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012235186A Expired - Fee Related JP5937485B2 (ja) 2012-10-24 2012-10-24 送信装置

Country Status (1)

Country Link
JP (1) JP5937485B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7129161B2 (ja) * 2017-11-20 2022-09-01 池上通信機株式会社 時間インタリーブ動作チェック回路

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63257334A (ja) * 1987-04-14 1988-10-25 Mitsubishi Electric Corp デ−タ誤り検出回路
JPH0793224A (ja) * 1993-09-21 1995-04-07 Fujitsu Ltd メモリ異常監視回路
JP2001523861A (ja) * 1997-11-17 2001-11-27 シーゲイト テクノロジー エルエルシー フレーム受信のための方法及び専用のフレームバッファ
JP2001037963A (ja) * 1999-08-02 2001-02-13 Sankyo Kk 遊技機
JP5430369B2 (ja) * 2009-11-27 2014-02-26 富士通株式会社 バッファメモリ装置、及び、バッファリング方法

Also Published As

Publication number Publication date
JP2014086924A (ja) 2014-05-12

Similar Documents

Publication Publication Date Title
EP3566138B1 (en) Transaction identification synchronization
KR101750662B1 (ko) 데이터 에러 교정용 회로, 장치, 및 방법
TWI546814B (zh) 具有錯誤校正邏輯之記憶體裝置
US7865804B2 (en) System and method for enhanced error detection in memory peripherals
US8479062B2 (en) Program disturb error logging and correction for flash memory
US9003260B2 (en) Partial-writes to ECC (error check code) enabled memories
US9423972B2 (en) Error recovery in a data processing system which implements partial writes
CN114328316B (zh) Dma控制器、soc系统及基于dma控制器的数据搬运方法
US11055173B2 (en) Redundant storage of error correction code (ECC) checkbits for validating proper operation of a static random access memory (SRAM)
JP2013137708A (ja) メモリコントローラ、データ記憶装置およびメモリ制御方法
US20120185752A1 (en) Dram address protection
KR20160046225A (ko) 고장 제어 기능을 구비한 캐시 메모리
CN117280328A (zh) 存储器地址保护
JP6799262B2 (ja) 演算処理装置及び演算処理装置の制御方法
KR101999288B1 (ko) 메모리 데이터의 에러 보정 장치 및 방법
JP5937485B2 (ja) 送信装置
WO2023093173A1 (zh) 一种内存硬件故障检测方法、装置以及内存控制器
WO2022116706A1 (zh) 一种纠错方法及装置
US10740179B2 (en) Memory and method for operating the memory
CN118394281B (zh) 数据读取方法、装置和芯片
US9519539B2 (en) Monitoring data error status in a memory
CN113808642B (zh) 数据存取系统和操作数据存取系统的方法
JP5916204B2 (ja) メモリ装置及びメモリパトロールによるデータ化け回避方法
CN116820829A (zh) 一种数据纠错方法及装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141104

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150820

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150825

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151009

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160216

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160323

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20160418

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: 20160510

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160512

R150 Certificate of patent or registration of utility model

Ref document number: 5937485

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees