入力されたデジタル情報がデータ経路を通過する際に、そのデータ経路で発生する配線の不良や信号の揺らぎ等により、受信情報が送信情報と異なるビットエラーが生じる場合がある。そして、ビットエラーを検出するために、送信側で生成した冗長コードを、別途データ経路を通じて受信側に送付し、受信側で受信情報の正しさを検証するビットエラー検出方法が一般的に用いられている。
図1は、冗長コードにより受信情報のビットエラーの有無を検証する一般的なビットエラー検出システムの例であるビットエラー検出システム500の構成を表す概念図である。なお、本明細書において、ビットエラー検出システムは、データ経路を介して送信側から受信側に送付した情報にビットエラーが発生した場合に、ビットエラーが発生したことを検出するシステムをいうこととする。
図1においては、情報A[31:0]及び情報B[6:0]の二種類のデジタル情報が、送信側191からデータ経路301を介して受信側291へ送付されることが想定されている。
なお、情報に付された[a:b]のaはビット位置を表す値の最大値(以下、「最大ビット」という。)であり、bはビット位置を表す値の最小値を表す値(以下、「最小ビット」という。)であり、この点は、図2以降の各図においても同じである。最大ビットから最小ビットを減じ1を加算した値はビット長(ビット幅)である。以下、ビット長がaビット(aは整数)であることを単に「aビットの」と表記する場合がある。情報Aは、最小ビットが0で最大ビットが31の32ビットの情報である。情報Bは、最小ビットが0で最大ビットが6の7ビットの情報である。
ビットエラー検出システム500は、送信側データ処理部101と受信側データ処理部201とを備える。送信側データ処理部101は、符号生成部1061及び1062を備える。受信側データ処理部201は、ビットエラー検出部2261及び2262を備える。
情報Aは、送信側191からデータ経路301を介して受信側291へ送付されるとともに、送信側191の符号生成部1061に入力される。情報Aは通信線801により送信側191から受信側291へ送付され、通信線802により符号生成部1061へ入力される。通信線801及び802の各々は32本の配線からなる配線群である。そして、情報Aの各ビット位置のデータは、同じタイミングで異なる配線を通じて受信側291へ送付され、また、符号生成部1061に入力される。
符号生成部1061は、入力された、32ビットの情報Aのデータから、例えば、7ビットの冗長コードを生成する。7ビットの冗長コードは、冗長コードが非特許文献1及び2のECC(Error Correction Code)である場合に対応する。以下、冗長コードが非特許文献1及び2のECC以外である場合は、冗長コードのビット長が他の値になる場合がある。非特許文献1及び2のECCは、受信側において、受信情報のECCによる復号データがゼロになるか否かにより、受信情報のビットエラーの有無の判定を可能にするものである。
ビットエラー検出部2261は、7ビットの冗長コードにより32ビットの情報Aを復号する。当該復号の方式は符号生成部1061が生成する符号に対応する方式によるものである。そして、ビットエラー検出部2261は、情報Aに冗長コードにより復号する。そして、ビットエラー検出部2261は、復号データの検査により、情報Aにビットエラーが生じたか否かを判定する。冗長コードが非特許文献1及び2のECCである場合は、ビットエラー検出部2261が行う復号は、情報AにECCを追加したデータと検査行列との積を求めるものである。そして、ビットエラー検出部2261は、情報AにECCを追加したデータと検査行列との積がゼロ行列にならない場合は、情報Aにビットエラーが生じた旨を判定する。そして、ビットエラー検出部2261は、当該判定結果を出力する。
情報Bについても同様で、情報Bは、送信側191からデータ経路301を介して受信側291へ送付されるとともに、送信側191において符号生成部1062に入力される。情報Bは、通信線806により送信側191から受信側291へ送付され、また、通信線807により符号生成部1062に入力される。通信線806及び807の各々は7本の配線からなる配線群である。そして、情報Bの各ビット位置のデータは、同じタイミングで、通信線806及び807の異なる配線を通じて受信側291へ送付され、また、符号生成部1062に入力される。
送信側データ処理部101の符号生成部1061は、ビット長7の情報Bから7ビットの冗長コードを生成する。そして、ビットエラー検出部2262は、受信された情報Bを同じく受信された冗長コードで復号する。そして、ビットエラー検出部2062は、情報AにECCを追加したデータと検査行列との積がゼロ行列になるか否かを調べ、ビットエラーが生じたか否かを判定する。
なお、ビットエラー検出部2061及び2062がビットエラーの発生を判定する場合には、符号生成部1061及び1062で生成された冗長コードがデータ経路301で変更された場合が含まれる。その場合は、情報A及びBには、ビットエラーが生じていなくても、ビットエラー検出部2061及び2062はビットエラーを誤検出する。
次に、AXITMに準拠したデータを、データ経路を介して送付する場合のデータを非特許文献1及び2のECCにより検証する一般的ビットエラー検出システムについて説明する。ここで、AXITMはARMTM社により提案されたバスに関する規格であり周知である(非特許文献3参照)。
図2は、AXITMに準拠したデータを、データ経路を介して送付する場合のデータを非特許文献1及び2のECCにより検証する一般的ビットエラー検出システムの例であるビットエラー検出システム500の構成を表す概念図である。
ビットエラー検出システム500は、送信側データ処理部101と受信側データ処理部201とを備える。送信側データ処理部101は、ECC符号生成部1063乃至1065を備える。また、受信側データ処理部201は、ビットエラー検出部2063乃至2065を備える。なお図2に表すデータ経路301の説明は、図1に表すデータ経路の説明と同じである。
送信側191からは、全部で8種類の情報が受信側291へ送付される。これら8種類の情報は、ARADDR、ARID、ARSIZE、ARLEN、ARBURST、ARLOCK、ARCACHE、ARPROT及びARUSERである。これらの情報の内容はAXITMに定められており公知である(非特許文献3参照)。なお、各情報が送付される通信線は、各情報のビット幅に対応する本数の配線からなる配線群である。各情報の各ビット位置のデータは、通信線の異なる配線を通じて、同じタイミングで送付される。
ARADDRは、送信側191から受信側291へ送付されるとともに、送信側191のECC符号生成部1063に入力される。ECC符号生成部1063は32ビットのARADDRから、7ビットのECC冗長コードであるARADDR_ECCを生成する。ARADDR_ECCは、データ経路301を介してビットエラー検出部2063へ送付される。
ビットエラー検出部2063は、送信側191から送付されたARADDRを、ECC符号生成部1063から送付されたARADDR_ECCにより復号する。当該復号は、ARADDRにARADDR_ECCを追加したデータと、ECCに対応する検査行列との積を求めるものである。そして、ビットエラー検出部2063は、当該積がゼロ行列であるか否かを調べ、その結果を出力する。当該積がゼロ行列でない場合が、ARADDRにビットエラーが発生した場合に相当する。
また、送信側191から受信側291には、ARID、ARSIZE、ARLEN、ARBURST、ARLOCK、ARCACHE及びARPROTが送付される。これらは、ECC符号生成部1064にも入力される。ECC符号生成部1064は、ARID、ARSIZE、ARLEN、ARBURST、ARLOCK、ARCACHE及びARPROTを順番に組み合わせた組データを生成する。ここで、前記組データのビット幅は32ビットを超えないものとする。符号生成部1046は、前記組データのビット幅が32ビットより小さい場合は、組データに0のビットを加え、32ビットの送信側組データを生成する。そして、ECC符号生成部1064は、32ビットの前記送信側組データから7ビットのECC冗長コードであるARNFO_ECCを生成する。ARNFO_ECCは、送信側191から受信側291のビットエラー検出部2064へ送付される。
ビットエラー検出部2064は、送信側191から送付されたARID、ARSIZE、ARLEN、ARBURST、ARLOCK、ARCACHE及びARPROTを順番に組み合わせる。そして、ビットエラー検出部2064は、さらに、必要に応じて0のビットを追加した、32ビットの受信側組データを生成する。そして、ビットエラー検出部2064は、受信側組データをECC符号生成部1064から送付されたARNFO_ECCにより復号する。当該復号は、前記受信側組データにARNFO_ECCを追加したデータと、ECCに対応する検査行列との積を求めるものである。そして、ビットエラー検出部2064は、当該積がゼロ行列であるか否かを調べ、その結果を出力する。当該積がゼロ行列でない場合が、前記受信側組データにビットエラーが生じた場合に相当する。
また、送信側191から受信側291にはnビットのARUSERが送付される。nは32以下の数であるとする。ARUSERはECC符号生成部1065にも入力される。符号生成部105はARUSERのビット幅が32ビットより小さい場合は、ARUSERに0のビットを加え、32ビットの第二送信側組データを生成する。そして、ECC符号生成部1064は、32ビットの第二送信側補正組データから7ビットのECC冗長コードであるARUSER_ECCを生成する。ARUSER_ECCは、送信側191から受信側291のビットエラー検出部2065へ送付される。
ビットエラー検出部2065は、送信側191から送付されたARUSERに必要に応じて0のビットを追加した、32ビットの第二受信側組データを生成する。そして、ビットエラー検出部2065は、第二受信側組データをECC符号生成部1065から送付されたARUER_ECCにより復号する。当該復号は、前記第二受信側組データにARUER_ECCを追加したデータと、ECCに対応する検査行列との積を求めるものである。そして、ビットエラー検出部2065は、当該積がゼロ行列であるか否かを調べ、その結果を出力する。当該積がゼロ行列でない場合が、前記第二受信側組データにビットエラーが生じた場合に相当する。
なお、特許文献1は、データに関係した補助データを冗長コードのビット長を増大させることなく含ませた新冗長コードを生成し、新冗長コードから補助データを検出するデータ記憶装置を開示する。
本実施形態のビットエラー検出システムは、送信側において、第一情報から生成した冗長コードと第二情報との第一排他的論理和を生成する。ここで、前記第一及び第二情報は、送信側からデータ経路を介して受信側に送付される情報である。そして、前記ビットエラー検出システムは、受信側で受信された第一排他的論理和と、同じく受信された第二情報とにより、第二排他的論理和を生成する。そして、前記ビットエラー検出システムは、第二排他的論理和により、受信された前記第一情報の各ビット位置のデータを復号する。前記ビットエラー検出システムは、さらに、復号後のデータと受信された前記第一情報との関係が前記冗長コードについて設定されたものか否かを調べる。
上記場合において、データ経路において前記第一情報にビットエラーが生じた場合は、受信された第一情報のデータは送信前と異なる。また、受信後の第二データにビットエラーが生じた場合は、前記第二排他的論理和は前記冗長コードと異なる。従い、復号データと第一情報との関係は冗長コードについて設定されたものとは異なるものになる。従い、前記ビットエラー検出システムは、第一情報及び第二情報のいずれにビットエラーが生じた場合にも、復号後の第一情報と復号前の第一情報との関係が設定されたものと異なることを検出することにより、ビットエラーが発生したことを検出し得る。
ここで、本実施形態のビットエラー検出システムは、第二情報については冗長コードの生成も復号も行わない。そのため、本実施形態のビットエラー検出システムは、第二情報についての冗長コードの生成及び復号のための構成を必要としない。すなわち、本実施形態のビットエラー検出システムは、より小規模な符号生成回路及び復号回路の構成によりビットエラーの検出を行い得る。
以下、図面を参照して、本実施形態のビットエラー検出システムの詳細を説明する。
図3は、本実施形態のビットエラー検出システムの例であるビットエラー検出システム500の構成を表す概念図である。なお、図3における情報A及びB並びにデータ経路301の説明は、以下の説明を除いて、図1の場合と同じである。
情報Aは、冗長コードの生成に用いられる前述の第一情報である。また、情報Bは、冗長コードとの間で排他的論理和を生成する前述の第二情報である。
ビットエラー検出システム500は、送信側データ処理部101と受信側データ処理部201とを備える。
送信側データ処理部101は、符号生成部1061と送信側データ変換部118とを備える。送信側データ変換部118は、送信側EXOR回路1210乃至1216を備える。
受信側データ処理部201は、受信側データ変換部218とビットエラー検出部2061とを備える。受信側データ変換部218は、受信側EXOR回路2210乃至2216を備える。
情報Aは、送信側191からデータ経路301を介して受信側291へ送付されるとともに、送信側191において符号生成部1061に入力される。情報Aは通信線801により送信側191から受信側291へ送付され、通信線802により符号生成部1061へ入力される。通信線801及び802の各々は32本の配線からなる配線群である。そして、情報Aの各ビット位置のデータは、同じタイミングで、通信線801及び802の異なる配線を通じて受信側291へ送付され、また、符号生成部1061に入力される。
一方、情報Bは、送信側191からデータ経路301を介して受信側291へ送付されるとともに、送信側191において送信側データ変換部118の各EXOR回路に入力される。情報Bは通信線806により送信側191から受信側291へ送付される。通信線806は7本の配線からなる配線群である。そして、情報Bの各ビット位置のデータは、同じタイミングで、通信線806の異なる配線を通じて受信側291へ送付される。また、位置991の左方の通信線807と右方の7本の配線とは、同じものを単に異なる表記で表したものである。
符号生成部1061は、図1に表す符号生成部1061と同様に、入力された、32ビットの情報Aから7ビットの冗長コードを生成する。7ビットの冗長コードは、冗長コードが非特許文献1及び2のECCである場合に相当する。冗長コードが非特許文献1及び2のECC以外である場合は、冗長コードのビット幅が他の値になる場合がある。
符号生成部1061は、生成した7ビットの冗長コードのそれぞれのビット位置のデータを、同じタイミングで、送信側EXOR回路1210乃至1216に入力する。当該タイミングは、例えば、クロックタイミングである。なお、[]内の整数が1個の場合、その整数は、対象データのビット位置を表す。
送信側EXOR回路1210乃至1216の各々は、入力された二つのデータの排他的論理和である第一排他的論理和を出力する。なお、入力データの排他的論理和を出力する回路の構成は周知であるので、ここでは、その説明は省略される。送信側EXOR回路1210乃至1216から出力された第一排他的論理和は、データ経路301を介して、受信側291へ送付される。
受信側291へ送付された前記第一排他的論理和は、受信側EXOR回路2210乃至2216の各々に同じタイミングで入力される。
受信側291へ送付された情報Aは外部へ送付されるとともにビットエラー検出部2061にも入力される。当該外部は、例えば、情報Aを利用する他の装置である。一方、受信側291へ送付された情報Bは外部へ送付されるとともに受信側EXOR回路2210乃至2216の各々にも入力される。当該外部は、例えば、情報Bを利用する他の装置である。なお、位置992の左方の通信線808と、右方の7本の配線とは、互いに、同じものを異なる表記で表したものである。
受信側EXOR回路2210乃至2216は、同じタイミングで入力された二つのデータの排他的論理和である第二排他的論理和を出力する。
受信側EXOR回路2210乃至2216から出力された第二排他的論理和はビットエラー検出部2061に入力される。
通信線801同様に通信線803は32本の配線からなる配線群である。そして、情報Aの各ビット位置のデータは、同じタイミングで、通信線803の異なる配線を通じてビットエラー検出部2061に入力される。
ビットエラー検出部2061は、入力された第二排他的論理和からなるコードにより、入力された情報Aを復号する。そして、ビットエラー検出部2061は、復号情報が符号生成部1061が生成する冗長コードについて設定されたものであるか否かを判定する。ビットエラー検出部2061は、当該判定結果を外部に出力する。
ここで、ビットエラー検出部2061がビットエラーを検出する場合として、次の、三通りの場合が想定される。
上記場合は、第一には、情報Aがデータ経路301において変更された場合である。
上記場合は、第二には、情報Bがデータ経路で変更された場合である。この場合は、各送信側EXOR回路により導出された第一排他的論理和について、各受信側EXOR回路によりさらに第二排他的論理和が導出されても、その第二排他的論理和は符号生成部1061が生成した冗長コードには戻らない。そのため、復号後の情報Aは符号生成部1061が生成する冗長コードについて設定されたものにならない。
上記場合は、第三には、送信側191から受信側291へ送付された第一排他的論理和が、データ経路301において変更された場合である。この場合は、情報A及びBにビットエラーが生じていなくてもビットエラーを検出する誤検出になる。
図3に表すビットエラー検出システム500は、上記第一及び第二の場合により、情報A及びBのいずれのビットエラーも検出し得る。
さらに、図1の構成では符号生成部が符号生成部1061及び1062の二つであり、ビットエラー検出部もビットエラー検出部2061及び2062の二つである。これに対し、図3の構成では符号生成部1061及びビットエラー検出部2061の各々1台ずつである。従い、図3に表すビットエラー検出システム500は、冗長コードの生成及び復号のための回路構成を簡略化し得る。
なお、図3の構成においては、前記第三の場合として、第一排他的論理和のデータ経路301におけるビットエラーによるビットエラーの誤検出があり得る。これは、図1の構成における冗長コードのデータ経路301におけるビットエラーによるビットエラーの誤検出に相当する。しかしながら、図3の構成で送付される第一排他的論理和のビット数の7は図1の構成により送付される冗長コードのビット数の14より少ない。従い、図3の構成における第一排他的論理和のビットエラーの発生確率は、図1の構成と比較して小さいと考えられる。そのため、図3の構成は図1の構成と比較して、ビットエラーの誤検出の発生確率を低減し得る。
図4は、AXIに準拠したデータを、データ経路を介して送付する場合のデータを非特許文献1及び2のECCにより検証する本実施形態のビットエラー検出システムの例であるビットエラー検出システム500の構成を表す概念図である。
ビットエラー検出システム500は、送信側データ処理部101と受信側データ処理部201とを備える。送信側データ処理部101は、ECC符号生成部106と送信側データ変換部118とを備える。また、受信側データ処理部201は、ビットエラー検出部206と受信側データ変換部218とを備える。
送信側191からは、全部で8種類の情報が受信側291へ送付される。これら8種類の情報は、ARADDR、ARID、ARSIZE、ARLEN、ARBURST、ARLOCK、ARCACHE、ARPROT及びARUSERである。これらの情報の内容はAXITMに定められており公知である。なお、各情報送付される通信線は、各情報のビット幅に対応する本数の配線からなる配線群である。各情報の各ビット位置のデータは、通信線の異なる配線を通じて、同じタイミングで送付される。
これらのうち、ARADDRは、ECC冗長コードの生成元の情報であり、前述の第一情報である。また、ARID、ARSIZE、ARLEN、ARBURST、ARLOCK、ARCACHE、ARPROT及びARUSERは、冗長コードの生成元にならない前述の第二情報である。
第一情報であるARADDRは、送信側191から受信側291へ送付されるとともに、送信側191においてECC符号生成部106に入力される。ECC符号生成部106は32ビットのARADDRから、7ビットのECC冗長コードであるARADDR_ECCを生成する。ARADDR_ECCは、送信側データ変換部118に入力される。
送信側データ変換部118には、また、第二情報である、ARID、ARSIZE,ARLEN、ARBURST、ARLOCK、ARCACHE、ARPROT及びARUSERが入力される。
送信側データ変換部118は、7ビットのARADDR_ECCの各ビットと、第二情報を構成するデータ又は第二情報の縮退データとの排他的論理和である7ビットのARADDR_ECCを導出する。なお、送信側データ変換部118の構成例は図5、図7、図9、図11及び図13を参照して後述される。また、縮退データの入力例は図11及び図13を参照して後述される。
ARADDR_ECCは、データ経路301を介して、受信側291へ送付される。
受信側291の受信側データ変換部218には、AR_ECC並びに第二情報が入力される。第二情報は、前述のように、ARID、ARSIZE、ARLEN、ARBURST、ARLOCK、ARCACHE、ARPROT及びARUSERである。
受信側データ変換部218は、7ビットのAR_ECCの各ビットと、第二情報を構成する各ビット位置のデータ又は第二情報の縮退データとの排他的論理和である7ビットの第二排他的論理和を導出する。当該導出の際に、AR_ECCの各ビットと、そのビットのデータが送信側データ変換部118でARADDR_ECCとの排他的論理和の演算を行う際に用いられたデータの、データ経路301通過後のもの、との間の排他的論理和演算が行われる。第二排他的論理和はビットエラー検出部206に入力される。受信側データ変換部218の構成例は、図6、図8、図10、図12及び図14を参照して後述される。
ビットエラー検出部206には、第二排他的論理和に加えて、データ経路301を通過した後の第一情報であるARADDRが入力される。
ビットエラー検出部206は、入力された7ビットの第二排他的論理和を復号用コードとして、第一情報であるARADDRを復号する。当該復号は、ARADDRに前記第二排他的論理和を追加したデータと、ECCに対応する検査行列との積を求めるものである。そして、ビットエラー検出部206は、当該積がゼロ行列であるか否かを調べ、その結果を出力する。当該積がゼロ行列でない場合が、前記第ARADDRにビットエラーが生じたか、前記第二排他的論理和がECC符号生成部106が生成したECCに等しくないかのいずれかの場合である。そして、前記第二排他的論理和がECC符号生成部106が生成したECCに等しくない場合には、第二情報にビットエラーが生じた場合が含まれる。従い、ビットエラー検出部206が前記積がゼロ行列でない旨の判定結果を出力した場合には、第一情報が第二情報化のいずれかにビットエラーが生じた場合が含まれる。
図5は、図4に表す送信側データ変換部118の構成例を表す概念図である。
送信側データ変換部118は、送信側EXOR回路1210乃至1216を備える。
7bitのARADDR_ECCの各ビット位置のデータは送信側EXOR回路1210乃至1216の各々に入力される。送信側EXOR回路1210乃至1216の符号の末尾の数字は、入力されるデータのARADDR_ECCにおけるビット位置に対応している。
一方、第二情報の各ビット位置のデータについては、入力される送信側EXOR回路の選択は任意である。当該選択の例については、図7、図9及び図13を参照して後述される。
また、第二情報の所定のデータ範囲は縮退データに変換されて送信側EXOR回路に入力されても構わない。それらの所定のデータ範囲が縮退データにされて送信側EXOR回路に入力される例は、図11及び図13を参照して後述される。
また、一つの送信側EXOR回路に同じタイミングで入力されるデータ数は1以上の任意である。当該データ数が1の場合は、ARADDR_ECCのあるビット位置のデータのみが入力される場合である。
また、送信側EXOR回路に入力されることが想定されたデータがARADDR_ECCのあるビット位置のデータのみである場合には、その送信側EXOR回路はなくても構わない。
各送信側EXOR回路は、同じタイミングで入力されたデータについての排他的論理和であるAR_ECCを出力する。
AR_ECCは、図4に表すデータ経路301を介して受信側291の受信側データ変換部218に送付される。
図6は、図4に表す受信側データ変換部218の構成例を表す概念図である。図6に表す受信側データ変換部218は、図4に表す送信側データ変換部118が図5に表すものである場合に対応するものである。
受信側データ変換部218は、受信側EXOR回路2210乃至2216を備える。
7bitのAR_ECCの各ビット位置のデータを受信側EXOR回路2210乃至2216の各々に同じタイミングで入力される。ここでは、受信側EXOR回路2210乃至2216の符号の末尾の数字が、入力されるデータのAR_ECCにおけるビット位置に対応している。
一方、第二情報の各ビット位置の各データが入力される受信側EXOR回路2210乃至2216の符号の末尾の数字は、図5においてそのデータが入力された送信側EXOR回路1210乃至1216のものと同じである。
受信側EXOR回路に入力されるデータの例は、図8、図10及び図14を参照して後述される。
また、図5において第二情報の所定のデータ範囲が縮退データにされて送信側EXOR回路に入力された場合は、受信側においても当該データ範囲は同様の縮退データにされて、対応する受信側EXOR回路に入力される。所定のデータ範囲が縮退データにされて対応する受信側EXOR回路に入力される例は、図12及び図14を参照して後述される。
また、対応する送信側EXOR回路がないことが想定される場合は、受信側EXOR回路は存在しない。
各受信側EXOR回路は、同じタイミングで入力されたデータについての排他的論理和である第二排他的論理和を出力する。
第二排他的論理和は、図4に表すビットエラー検出部206に入力される。
以下、図5の送信側EXOR回路及び図6の受信側EXOR回路への入力データ例を、図7乃至図14を参照して説明する。
図7は、図5に表す送信側EXOR回路への入力データ例(その1)を表す概念図である。図7は、図5に表す第二情報のうちARSIZEとARLENのみについての入力例を表す。
前述のように、各送信側EXOR回路には、ARADDR[31:0]から生成したECC冗長コードであるARADDR_ECCの各ビット位置のデータが入力される。図7の例では、送信側EXOR回路の符号の最右方の数字は、入力されるARADDR_ECCのビット位置を表す値と一致している。また、図7の例では、各送信側EXOR回路に入力されるARADDR_ECC以外のデータのビット位置も、送信側EXOR回路の符号の最右方の数字と一致している。送信側EXOR回路の各々からは、その送信側EXOR回路を表す符号の最右方の数字を、ビット位置を表す値とするAR_ECCが出力される。
なお、図7においては、一つの送信側EXOR回路に同じタイミングで入力されるデータの数は、2又は3であるが、4以上のデータが同じタイミングで入力されても構わない。
図8は、図6に表す受信側EXOR回路への入力データ例(その1)を表す概念図である。図8は、図5に表す送信側EXOR回路への入力データが図7のものである場合に対応する、図6に表す受信側EXOR回路への入力データ例を表す。図8に表す構成は、図7に表す構成の、各ARADDR_ECCを同じビット位置のAR_ECCで、送信側EXOR回路1210乃至1213を受信側EXOR回路2210乃至2213で、各々置き換えたものである。図8に表す構成は、さらに、図7に表す構成の、各ビット位置のAR_ECCを同じビット位置のARADDR_ECCで、置き換えたものである。
図9は、図5に表す送信側EXOR回路への入力データの例(その2)を表す概念図である。図9は、図5に表す第二情報のうちARSIZEとARLENのみについての入力例を表している。
前述のように、各送信側EXOR回路には、ARADDR[31:0]から生成したECC冗長コードであるARADDR_ECCの各ビット位置のデータが入力される。送信側EXOR回路の符号の最右方の数字は、入力されるARADDR_ECCのビット位置と一致している。一方、各送信側EXOR回路に入力されるARADDR_ECC以外のデータのビット位置は、送信側EXOR回路の符号の最右方の数字と必ずしも一致していない。送信側EXOR回路の各々からは、その送信側EXOR回路を表す符号の最右方の数字を、ビット位置を表す値とするAR_ECCが出力される。
なお、図9では、一つの送信側EXOR回路に同じタイミングで入力されるデータの数は、2であるが、3以上のデータが同じタイミングで入力されても構わない。
図10は図6に表す受信側EXOR回路への入力データ例(その2)を表す概念図である。図10は、図5に表す送信側EXOR回路への入力データが図9のものである場合に対応する、図6に表す受信側EXOR回路への入力データ例を表す。図10に表す構成は、図9に表す構成の、各ARADDR_ECCを同じビット位置のAR_ECCで、送信側EXOR回路1210乃至1216を受信側EXOR回路2210乃至2216で、各々置き換えたものである。図10に表す構成は、さらに、図9に表す構成の、各AR_ECCを同じビット位置のARADDR_ECCで置き換えたものである。
図11は、図5に表す送信側EXOR回路への入力データ例(その3)を表す概念図である。図11は、図5に表す第二情報のうちARUSERのみについての入力例を表している。
ARUSER[0]乃至[n−1]の各々は、同じタイミングで、縮退部131に入力される。縮退部131は、入力されたARUSER[0]乃至[n−1]から1ビットの縮退データを生成する。当該縮退データは、例えば、公知のパリティ符号である。なお、複数のデータからパリティ符号を生成する縮退部の構成は公知である。縮退部131により生成された縮退データはARADDR_ECC[4]と同じタイミングで、送信側EXOR回路1214に入力される。
送信側EXOR回路1214は、ARADDR_ECC[4]と縮退データとの排他的論理和であるAR_ECC[4]を出力する。
なお、図11では、ARUSER[0]乃至[n−1]から、縮退データを生成しているが、第二情報のいずれの情報から縮退データが生成され、送信側EXOR回路に入力されてもよい。
また、第二情報から選択された2つ以上の情報の組合せから、縮退データが生成されて、送信側EXOR回路に入力されてもよい。
また、縮退データの数が2ビット以上であり、それぞれが、送信側EXOR回路に入力されてもよい。
なお、縮退データが送信側EXOR回路に入力される場合は、送信側回路に入力される情報の入力のタイミングは、縮退データの入力のタイミングに合わせて調整される。
図12は図6に表す受信側EXOR回路への入力データ例(その3)を表す概念図である。図12は、図5に表す送信側EXOR回路への入力データが図11のものである場合に対応する、図6に表す受信側EXOR回路への入力データ例を表す。図12は、図11において、ARADDR_ECC[4]をAR_ECC[4]で、送信側EXOR回路1214を受信側EXOR回路2214で、AR_ECC[4]をARADDR_ECC[4]で、各々、置き換えたものである。
図13は、図5に表す送信側EXOR回路への入力データ例(その4)を表す概念図である。図9は、図5に表すすべての第二情報についていずれかの送信側EXOR回路に入力される場合の入力データ例を表す。
前述のように、各送信側EXOR回路には、ARADDR[31:0]から生成したECC冗長コードであるARADDR_ECCの各ビット位置のデータが入力される。送信側EXOR回路の符号の最右方の数字は、入力されるARADDR_ECCのビット位置と一致している。
また、各送信側EXOR回路に同じタイミングに入力されるデータの数は、4又は3である。
また、ARID[0]乃至[m−1]については、縮退部1311により生成された縮退データが送信側EXOR回路1210に入力される。また、ARUSER[0]乃至[n−1]については、縮退部1312により生成された縮退データが送信側EXOR回路1215に入力される。
送信側EXOR回路の各々からは、その送信側EXOR回路を表す符号の最右方の数字をビット位置とするAR_ECCが出力される。
なお、図13には、一つの送信側EXOR回路に同じタイミングで入力されるデータの数は、3又は4であるが、一つの送信側EXOR回路に5以上のデータが同じタイミングで入力されても構わない。
また、送信側EXOR回路に各データが入力されるタイミングは、図示されないバッファ等により、同じタイミングになるように、調整される。
図14は図6に表す受信側EXOR回路への入力データ例(その4)を表す概念図である。図14は、図5に表す送信側EXOR回路への入力データが図13のものである場合に対応する、図6に表す受信側EXOR回路への入力データを表す。図14に表す構成は、図13に表す構成の、各ARADDR_ECCを同じビット位置のAR_ECCで、送信側EXOR回路1210乃至1213を受信側EXOR回路2210乃至2213で、各々置き換えたものである。図14に表す構成は、さらに、図13に表す構成の、各AR_ECCを同じビット位置のARADDR_ECCで置き換えたものである。
以上説明したように、本実施形態のビットエラー検出システム500は、まず、送信側191において、第一情報の各ビット位置のデータから生成した冗長コードの各々と第二情報の各ビット位置のデータ又は縮退データから選択されたデータとの第一排他的論理和を生成する。この際に、ビットエラー検出システム500は、前記第二情報のすべてのビット位置のデータが、前記第一排他的論理和の生成に用いられるようにする。前記第一及び第二情報並びに前記第一排他的論理和は、データ経路301を介して受信側291へ送付される。
そして、ビットエラー検出システム500は、受信側291で受信された第一排他的論理和の各ビット位置のデータと、同じく受信された前記第二情報のデータ又は縮退データとの間で、第二排他的論理和を生成する。ここで、前記第二情報のデータは、送信側191でそのビット位置のデータを生成するのに用いられたものである。そして、ビットエラー検出システム500は、第二排他的論理和により、受信された前記第一情報の各ビット位置のデータを復号する。ビットエラー検出システム500は、さらに、復号後のデータが、符号生成部が生成した冗長コードについて設定されたものか否かを判定する。
その際に、データ経路301において前記第一情報のあるデータが変更されるビットエラーが生じた場合は、復号後のデータは設定されたものと異なる。
一方、受信後の第二データが送信前の第二データと異なるものとなるビットエラーが生じた場合は、前記第二排他的論理和が前記冗長コードと異なるものになる。そのため、復号後のデータは、設定されたものと異なる。
このように、復号後のデータが設定されたものと異なる場合には、第一情報及び第二情報にビットエラーが生じた場合が含まれる。これにより、本実施形態のビットエラー検出システムは、第一情報及び第二情報のいずれかにビットエラーが発生したことの検出が可能である。
[効果]
本実施形態のビットエラー検出システムは、第一情報と第二情報とが送信側から受信側に送付される場合に、第一情報については冗長コードを生成するが、第二情報については冗長コードを生成しない。従い、第二データについては受信側での冗長コードによる復号も行われない。そのため、前記ビットエラー検出システムは、ビットエラーの検出を、図1及び図2に表すような一般的なビットエラー検出システムと比較して、より小規模な符号生成回路及び復号回路で行い得る。例えば、図3のビットエラー検出システムは、符号生成部及びビットエラー検出部の数は、同じデータ範囲の対しデータを監視する図1に表す場合が各二個であるのに対し、半分の各一個である。また、図4のビットエラー検出システムは同じデータ範囲のビットエラーを監視する図2のビットエラー検出システムの各三個の三分の一の各一個である。
復号後のデータが前記冗長コードについて設定されたものとならない場合には、前記第一排他的論理和がデータ経路で変更された場合が含まれ得る。その場合は、前記ビットエラー検出システムは、前記第一及び第二情報のデータがデータ経路で変更されるビットエラーが生じなくても、前記ビットエラー検出システムがビットエラーを検出する誤検出が生じ得る。しかしながら、先行技術の項で説明した一般的なビットエラー検出システムにおいては、送信側から受信側へ送付された冗長コードがデータ経路で変更されることによるビットエラーの誤検出が生じうる。そして、本実施形態のビットエラー検出システムが送信側から受信側に送付する前記第一排他的論理和のデータ数は、先行技術の項で説明した一般的なビットエラー検出システムが送信側から受信側に送付する冗長コードのデータ数より少ない。従い、本実施形態のビットエラー検出システムは、先行技術の項で説明した一般的なビットエラー検出システムと比較して、誤検出の原因となる送付データの数が少ない分、誤検出の発生確率が小さい。
本実施形態のビットエラー検出システムは、前記第一排他的論理和を生成するために用いるデータとして、前記第二情報に含まれるデータを縮退させた縮退データを縮退させたデータを用いる場合がある。その場合は、第二情報として多くのデータがある場合に、冗長コードや第一排他的論理和の1データと組み合わせて排他的論理和を導出する第二情報のデータ数を減らすことができる。上記場合は、その分、前記第一排他的論理和情報及び前記第二排他的論理和情報の生成が容易になる。
以上の説明では、ビットエラー検出用の冗長コードとして、主に、非特許文献1及び2のECCを用いた場合を説明した。しかしながら、実施形態の冗長コードは、冗長コード又は元データにビットエラーが生じた場合に、その旨を検証できるものであれば構わない。そのような冗長コードには、例えば、CRC(Cyclic Redundancy Check)やリードソロモン方式の冗長コードが含まれる。
図15は、実施形態の最小限の検出装置である検出装置201xの構成を表すブロック図である。
検出装置201xは、受信側排他的論理和生成部221xと、出力部206xとを備える。
受信側排他的論理和生成部221xは、データ経路を介して第一受信された第一排他的論理和と前記データ経路を介して第二受信された第二情報又は前記第二情報から導かれる情報との第二排他的論理和を生成する。
出力部206xは、前記データ経路を介して第三受信された第一情報の前記第二排他的論理和による検査に係る検査結果を出力する前記第一排他的論理和の各データが、前記第三受信に係る送信の前の前記第一情報から生成された冗長コードと、前記第二受信に係る送信の前の前記第二情報又は前記第二受信に係る送信の前の前記第二情報から導かれる情報と、により生成されたものである。
検出装置201xを用いる場合、前記第二情報についての冗長コードの生成は行われない。そのため、前記第二情報について冗長コードを生成する構成は必要ない。そのため、検出装置201xは、より小規模な符号生成回路でビットエラーの検出を可能にする。
そのため、検出装置201xは、前記構成により、[発明の効果]の項に記載した効果を奏する。
なお、図15に表す検出装置201xは、例えば、図3又は図4に表す受信側データ処理部201である。
また、受信側排他的論理和生成部221xは、例えば、図3又は図4に表す、受信側データ変換部218である。
また、出力部206xは、例えば、図3又は図4に表すビットエラー検出部206のうち、ビットエラーの検出結果の出力を行う部分である。
また、前記データ経路は、例えば、図3又は図4に表す、データ経路301である。
また、前記第一排他的論理和は、例えば、前述の第一排他的論理和であり、例えば、図4乃至図14に表すAR_ECCである。
また、前記第二排他的論理和は、例えば、前述の第二排他的論理和である。
また、前記第一情報は、例えば、図3に表す情報A、並びに、図4、図5、図7、図9、図11及び図13に表すARADDRである。
また、前記第二情報は、例えば、前述の第二情報であり、図3に表す情報B、並びに、図4、図5、図13に表すARID、ARSIZE、ARLEN、ARBURST、ARLOCK、ARCACHE、ARPROT及びARUSERの少なくとも一部である。
また、前記第一受信は、例えば、前記第一排他的論理和の、図3及び図4に表す受信側での受信である。
また、前記第二受信は、例えば、前記第二情報の図3及び図4に表す受信側での受信である。
また、前記第三受信は、例えば、前記第一情報の図3及び図4に表す受信側での受信である。
以上、本発明の各実施形態を説明したが、本発明は、前記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で更なる変形、置換、調整を加えることができる。例えば、各図面に示した要素の構成は、本発明の理解を助けるための一例であり、これらの図面に示した構成に限定されるものではない。
また、前記の実施形態の一部又は全部は、以下の付記のようにも記述され得るが、以下には限られない。
(付記1)
データ経路を介して第一受信された第一排他的論理和と前記データ経路を介して第二受信された第二情報又は前記第二情報から導かれる情報との第二排他的論理和を生成する受信側排他的論理和生成部と、
前記データ経路を介して第三受信された第一情報の前記第二排他的論理和による検査に係る検査結果を出力する出力部と、
を備え、
前記第一排他的論理和の各データが、前記第三受信に係る送信の前の前記第一情報から生成された冗長コードと、前記第二受信に係る送信の前の前記第二情報又は前記第二受信に係る送信の前の前記第二情報から導かれる情報と、により生成されたものである、
検出装置。
(付記2)
前記検査が、前記第一情報の前記冗長コードによる復号データが前記冗長コードについて設定されたものであるかについてのものである、付記1に記載された検出装置。
(付記3)
前記第二情報から導かれる情報が、前記第二情報の少なくとも一部のデータから生成された縮退データを含む、付記1又は付記2に記載された検出装置。
(付記4)
前記縮退データが、前記第二情報の少なくとも一部のデータから生成されたパリティ符号である、付記3に記載された検出装置。
(付記5)
前記第一排他的論理和の任意のデータの生成元の前記冗長コードのデータは、前記第一排他的論理和の他のデータの生成元の前記冗長コードのデータと異なる、付記1乃至付記4のうちのいずれか一に記載された検出装置。
(付記6)
前記第一排他的論理和の任意のデータの生成元の前記第二情報のデータは、前記第一排他的論理和の他のデータの生成元の前記第二情報のデータと異なる、付記1乃至付記5のうちのいずれか一に記載された検出装置。
(付記7)
前記第一排他的論理和の任意のデータの生成元の前記第二情報のデータが、互いに異なる二以上のデータである場合がある、付記1乃至付記6のうちのいずれか一に記載された検出装置。
(付記8)
前記第一排他的論理和の任意のデータの生成元の前記第二情報のデータが、互いに異なる三以上のデータである場合がある、付記1乃至付記7のうちのいずれか一に記載された検出装置。
(付記9)
前記第一排他的論理和の任意のデータの生成元の前記第二情報のデータが、互いに異なる四以上のデータである場合がある、付記1乃至付記8のうちのいずれか一に記載された検出装置。
(付記10)
前記第一排他的論理和のあるデータの生成元のデータのデータ数が、前記第一排他的論理和の他のデータの生成元のデータのデータ数と異なる、付記1乃至付記9のうちのいずれか一に記載された検出装置。
(付記11)
データ経路を介して第一受信された第一排他的論理和と前記データ経路を介して第二受信された第二情報との第二排他的論理和を生成し、前記データ経路を介して第三受信された第一情報を前記第二排他的論理和により復号した復号データを生成し、前記復号データと前記データ経路を介して前記第三受信された前記第一情報との関係が冗長コードについて設定されたものであるかについての判定結果を出力する検出装置がある場合において、
前記第三受信に係る送信の前の前記第一情報から前記冗長コードを生成する符号生成部と、
前記第一排他的論理和の各データを、前記冗長コードと前記第二受信に係る送信の前の前記第二情報とにより生成する、送信側排他的論理和生成部と、
を備える、
生成装置。
(付記12)
第一排他的論理和の各データを、第三送信の前の第一情報から生成された冗長コードと第二送信の前の第二情報とにより生成する生成装置と、
データ経路を介して第一受信された第一排他的論理和と前記データ経路を介して第二送信に係る受信がされた前記第二情報との第二排他的論理和を生成し、前記データ経路を介して前記第三送信に係る受信がされた前記第一情報を前記第二排他的論理和により復号した復号データを生成し、前記復号データと前記データ経路を介して前記第三送信に係る受信がされた前記第一情報との関係が前記冗長コードについて設定されたものであるかについての判定結果を出力する、検出装置と、
を備える、
検出システム。
(付記13)
第一排他的論理和の各データを、第三送信の前の第一情報から生成された冗長コードと、第二送信の前の第二情報とにより生成し、
データ経路を介して第一受信された第一排他的論理和と前記データ経路を介して前記第二送信に係る受信がされた前記第二情報との第二排他的論理和を生成し、前記データ経路を介して前記第三送信に係る受信がされた前記第一情報を前記第二排他的論理和により復号した復号データを生成し、前記復号データと前記データ経路を介して前記第三送信に係る受信がされた前記第一情報との関係が前記冗長コードについて設定されたものであるかについての判定結果を出力する、
検出方法。
(付記14)
第一排他的論理和の各データを、第三送信の前の第一情報から生成された冗長コードと、第二送信の前の第二情報とにより生成する処理と、
データ経路を介して第一受信された第一排他的論理和と前記データ経路を介して前記第二送信に係る受信がされた前記第二情報との第二排他的論理和を生成する処理と、前記データ経路を介して前記第三送信に係る受信がされた前記第一情報を前記第二排他的論理和により復号した復号データを生成する処理と、前記復号データと前記データ経路を介して前記第三送信に係る受信がされた前記第一情報との関係が前記冗長コードについて設定されたものであるかについての判定結果を出力する処理と
をコンピュータに実行させる検出プログラム。