(57)【要約】【課題】ビット数が少ない及び／又はエラー検出率が高いエラー検出符号を生成することができる演算回路を提供することを課題とする。【解決手段】演算回路は、符号フィールド（Ｓ）、コンビネーションフィールド（Ｇ）及び後続仮数部フィールド（Ｔ）を有するＤＰＤ（densely-packed decimal）フォーマットの１０進浮動小数点数を保持するレジスタ（１１１）と、前記コンビネーションフィールドの値に対して排他的論理和演算及びモジュロ演算を含む演算を行う第１の論理演算回路（６０１）と、前記後続仮数部フィールドの値に対して排他的論理和演算及びモジュロ演算を含む演算を行う第２の論理演算回路（６０２）と、前記符号フィールドの値、前記第１の論理演算回路の演算結果及び前記第２の論理演算回路の演算結果に対して、論理演算を行う第３の論理演算回路（６０３，６０４）とを有する。【選択図】図６
2014038413.tif 000002
【特許請求の範囲】
【請求項１】
符号フィールド、コンビネーションフィールド及び後続仮数部フィールドを有するＤＰＤ（densely-packed decimal）フォーマットの１０進浮動小数点数を保持するレジスタと、
前記コンビネーションフィールドの値に対して排他的論理和演算及びモジュロ演算を含む演算を行う第１の論理演算回路と、
前記後続仮数部フィールドの値に対して排他的論理和演算及びモジュロ演算を含む演算を行う第２の論理演算回路と、
前記符号フィールドの値、前記第１の論理演算回路の演算結果及び前記第２の論理演算回路の演算結果に対して、論理演算を行う第３の論理演算回路と
を有することを特徴とする記載の演算回路。
【請求項２】
前記演算回路はさらに、
前記第１の論理演算回路が生成したエラー検出符号と前記１０進浮動小数点数のエラー検出符号の期待値とを比較することにより、前記１０進浮動小数点数のエラーを検出する比較回路を有することを特徴とする請求項１記載の演算回路。
【請求項３】
前記演算回路はさらに、
前記１０進浮動小数点数を前記第１の論理演算回路に送信するとともに、前記１０進浮動小数点数のエラー検出符号の期待値を前記比較回路に送信する送信回路を有し、
前記送信回路は、
前記１０進浮動小数点数に対して排他的論理和演算及びモジュロ演算を含む論理演算を行うことにより、前記エラー検出符号の期待値を生成する第５の論理演算回路を有することを特徴とする請求項２記載の演算回路。
【請求項４】
前記演算回路はさらに、
前記ＤＰＤフォーマットの１０進浮動小数点数をＢＣＤ（binary-coded decimal）フォーマットの１０進数に変換するフォーマット変換回路と、
前記ＢＣＤフォーマットの１０進数のエラー検出符号を生成するＢＣＤエラー検出符号生成回路と、
前記ＢＣＤフォーマットの１０進数のエラー検出符号と前記第１の論理演算回路が生成したエラー検出符号とを比較することにより、前記ＢＣＤフォーマットの１０進数のエラーを検出する比較回路と
を有することを特徴とする請求項３記載の演算回路。
【請求項５】
前記第１の論理演算回路は、
複数ビットのうちのいずれかのビットが１であるワンホットの値に対してモジュロ演算を行うことを特徴とする請求項１〜４のいずれか１項に記載の演算回路。
【請求項６】
符号フィールド、コンビネーションフィールド及び後続仮数部フィールドを有するＤＰＤ（densely-packed decimal）フォーマットの１０進浮動小数点数を保持するレジスタを有する演算回路の制御方法において、
前記演算回路が有する第１の論理演算回路が、前記コンビネーションフィールドの値に対して排他的論理和演算及びモジュロ演算を含む演算を行い、
前記演算回路が有する第２の論理演算回路が、前記後続仮数部フィールドの値に対して排他的論理和演算及びモジュロ演算を含む演算を行い、
前記演算回路が有する第３の論理演算回路が、前記符号フィールドの値、前記第１の論理演算回路の演算結果及び前記第２の論理演算回路の演算結果に対して、論理演算を行うことを特徴とする演算回路の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算回路及び演算回路の制御方法に関する。
【背景技術】
【０００２】
機能回路であるテスト対象回路のロジックＢＩＳＴ（Built-In Self Test）回路が知られている（例えば、特許文献１）。ロジックＢＩＳＴ回路は、テスト対象回路に供給する入力データから応答結果の期待値モジュロ値を生成し、テスト対象回路から出力される応答結果のモジュロ値を求め、応答結果のモジュロ値と期待値モジュロ値とを比較する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−１５７８６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
１つの側面では、本発明の目的は、ビット数が少ない及び／又はエラー検出率が高いエラー検出符号を生成することができる演算回路及び演算回路の制御方法を提供することである。
【課題を解決するための手段】
【０００５】
演算回路は、符号フィールド、コンビネーションフィールド及び後続仮数部フィールドを有するＤＰＤ（densely-packed decimal）フォーマットの１０進浮動小数点数を保持するレジスタと、前記コンビネーションフィールドの値に対して排他的論理和演算及びモジュロ演算を含む演算を行う第１の論理演算回路と、前記後続仮数部フィールドの値に対して排他的論理和演算及びモジュロ演算を含む演算を行う第２の論理演算回路と、前記符号フィールドの値、前記第１の論理演算回路の演算結果及び前記第２の論理演算回路の演算結果に対して、論理演算を行う第３の論理演算回路とを有する。
【発明の効果】
【０００６】
ビット数が少ない及び／又はエラー検出率が高いエラー検出符号を生成することができる。
【図面の簡単な説明】
【０００７】
【図１】図１は、実施形態による演算回路の構成例を示す図である。
【図２】図２（Ａ）〜（Ｃ）は、ＤＰＤフォーマットの１０進浮動小数点数を説明するための図である。
【図３】図３は、コンビネーションフィールドの上位５ビットを説明するための図である。
【図４】図４は、１０ビットの組ｄｅｃｌｅｔから３桁の１０進数への変換方法を示す図である。
【図５】図５は、３桁の１０進数から１０ビットの組ｄｅｃｌｅｔへの変換方法を示す図である。
【図６】図６は、図１のレジスタ及びＲＡＳ生成回路の構成例を示す図である。
【図７】図７（Ａ）は単精度のＤＰＤフォーマットの１０進浮動小数点数のフォーマットを示す図であり、図７（Ｂ）は倍精度のＤＰＤフォーマットの１０進浮動小数点数のフォーマットを示す図である。
【図８】図８は、図６のｐｇｕ及びｐｇｌ生成回路の構成例を示す図である。
【図９】図９は、図８のｐｇｕ生成回路の構成例を示す図である。
【図１０】図１０は、図６のｐｔ生成回路の構成例を示す図である。
【図１１】図１１は、図１０のｐｄ０生成回路の構成例を示す図である。
【図１２】図１２は、２ビットデータをワンホットの値に変換する回路の構成例を示す図である。
【図１３】図１３は、正値及び負値を表現する２ビットデータをワンホットの値に変換する回路の構成例を示す図である。
【図１４】図１４は、図１２及び図１３の変換回路を用いない場合のモジュロ演算回路の構成例を示す図である。
【図１５】図１５は、図１２又は図１３の変換回路を用いた場合のモジュロ演算回路の構成例を示す図である。
【図１６】図１６は、他の実施形態による図１の受信回路の構成例を示す図である。
【発明を実施するための形態】
【０００８】
図１は、実施形態による演算回路の構成例を示す図である。演算回路は、送信回路１０１及び受信回路１０２を有する。送信回路１０１は、レジスタ１１１及びＲＡＳ（信頼性、可用性及び保守性：reliability, availability and serviceability）生成回路１１２を有する。レジスタ１１１は、ＤＰＤ（densely-packed decimal）フォーマットの１０進浮動小数点数を記憶する。ＤＰＤフォーマットの１０進浮動小数点数は、IEEE Standard for Floating-Point Arithmetic (IEEE Std 754-2008)により定義されている。ＲＡＳ生成回路１１２は、論理演算回路を有し、レジスタ１１１に記憶されているＤＰＤフォーマットの１０進浮動小数点数に対して排他的論理和（ＸＯＲ）演算及びモジュロ演算を含む論理演算を行うことにより、エラー検出符号の期待値を生成する。送信回路１０１は、受信回路１０２に対して、レジスタ１１１に記憶されているＤＰＤフォーマットの１０進浮動小数点数、及びＲＡＳ生成回路１１２により生成されたエラー検出符号の期待値を送信する。
【０００９】
受信回路１０２は、レジスタ１２１，１２２、ＲＡＳ生成回路１２３及び比較回路１２４を有し、送信回路１０１から上記のＤＰＤフォーマットの１０進浮動小数点数及びエラー検出符号の期待値を受信する。このＤＰＤフォーマットの１０進浮動小数点数の通信により、受信したＤＰＤフォーマットの１０進浮動小数点数にエラーが発生する可能性がある。受信回路１０２は、そのエラーを検出するためにＲＡＳ生成回路１２３及び比較回路１２４を有する。レジスタ１２１は、送信回路１０１から受信したＤＰＤフォーマットの１０進浮動小数点数を記憶する。レジスタ１２２は、送信回路１０１から受信したエラー検出符号の期待値を記憶する。ＲＡＳ生成回路１２３は、上記のＲＡＳ生成回路１１２と同じ構成を有し、レジスタ１２１に記憶されているＤＰＤフォーマットの１０進浮動小数点数に対して排他的論理和演算及びモジュロ演算を含む論理演算を行うことにより、エラー検出符号を生成する。比較回路１２４は、ＲＡＳ生成回路１２３により生成されたエラー検出符号とレジスタ１２２に記憶されているエラー検出符号の期待値とを比較する。そして、比較回路１２４は、両者が同一であれば、レジスタ１２１に記憶されているＤＰＤフォーマットの１０進浮動小数点数にエラーが存在しないことを示す情報を出力し、両者が異なっていれば、レジスタ１２１に記憶されているＤＰＤフォーマットの１０進浮動小数点数にエラーが存在することを示す情報を出力する。
【００１０】
図２（Ａ）〜（Ｃ）は、ＤＰＤフォーマットの１０進浮動小数点数を説明するための図である。図２（Ａ）はＤＰＤフォーマットの１０進浮動小数点数のビット長を示す図であり、図２（Ｂ）は単精度のＤＰＤフォーマットの１０進浮動小数点数のフォーマットを示す図であり、図２（Ｃ）は倍精度のＤＰＤフォーマットの１０進浮動小数点数のフォーマットを示す図である。
【００１１】
図２（Ｂ）に示すように、単精度の１０進浮動小数点数は、１ビットの符号フィールドＳ、１１ビットのコンビネーションフィールドＧ及び２０ビットの後続仮数部フィールドＴを有し、全データ長が３２ビットである。１１ビットのコンビネーションフィールドＧは、ｗ（＝６）ビットの下位ビットＧＬ［ｗ−１：０］及び５ビットの上位ビットＧＵ［４：０］を有する。
【００１２】
図２（Ｃ）に示すように、倍精度の１０進浮動小数点数は、１ビットの符号フィールドＳ、１３ビットのコンビネーションフィールドＧ及び５０ビットの後続仮数部フィールドＴを有し、全データ長が６４ビットである。１３ビットのコンビネーションフィールドＧは、ｗ（＝８）ビットの下位ビットＧＬ［ｗ−１：０］及び５ビットの上位ビットＧＵ［４：０］を有する。
【００１３】
ＤＰＤフォーマットの１０進浮動小数点数は、正負符号ＳＧ、仮数ＳＦ及び指数ＥＸＰを用いて、次式で表される。正負符号ＳＧは、０が正値を示し、１が負値を示す。
（−１）SG×ＳＦ×１０EXP
【００１４】
正負符号ＳＧは、符号フィールドＳに格納される。指数ＥＸＰは、コンビネーションフィールドＧの一部に格納される。仮数ＳＦは、コンビネーションフィールドＧと後続仮数部フィールドＴとに分割して格納される。
【００１５】
次に、コンビネーションフィールドＧについて説明する。コンビネーションフィールドＧは、５ビットの上位ビットＧＵ［４：０］とｗビットの下位ビットＧＬ［ｗ−１：０］とに分けられる。図３に示すように、５ビットの上位ビットＧＵ［４：０］には、指数ＥＸＰの上位２ビットと、仮数ＳＦの最上位桁（leftmost digit：ＬＭＤ）の情報が格納される。図３の非数ＱＮａＮは、例えば、±０÷±０、±∞÷±∞、 √（−１） 等の演算が行われたときに出力される演算結果の非数である。非数ＳＮａＮは、例えば、ユーザーやソフトウェアが、バグ検出のトリガとして敢えて仕込む場合に使用される非数であり、通常演算（例えば、四則演算）に非数ＳＮａＮの入力があった場合、無効例外が報告される。これに対し、非数ＱＮａＮの入力があった場合、演算結果は各演算仕様に従った非数ＱＮａＮを出力し、非数ＳＮａＮの場合と異なり、無効例外を引き起こすことはない。ペイロード（payload）は、非数ＱＮａＮ又はＳＮａＮの情報を示す。
【００１６】
図３のように、仮数ＳＦがゼロになるのは、上位ビットＧＵ［４：０］が０００００（２進数）、０１０００（２進数）、１００００（２進数）のいずれかのときである。したがって、１０進数の「＋０」は、Ｓ＝０、 Ｔ＝０であり、かつ上位ビットＧＵ［４：０］が０００００（２進数）、０１０００（２進数）、１００００（２進数）のいずれかとなる。すなわち、２ビットＧＵ［４：３］の３パターンと下位ビットＧＬ［ｗ−１：０］のビット幅ｗの分だけゼロのバリエーション (コホート) がある。
【００１７】
次に、後続仮数部フィールドＴについて説明する。後続仮数部フィールドＴは、１０ビットの組ｄｅｃｌｅｔが複数個連なる。図２（Ａ）に示すように、単精度では後続仮数部フィールドＴは２個の１０ビットの組ｄｅｃｌｅｔを有し、倍精度では後続仮数部フィールドＴは５個の１０ビットの組ｄｅｃｌｅｔを有する。各１０ビットの組ｄｅｃｌｅｔは、０から９９９までの３桁の１０進数を表現する。図２（Ａ）に示すように、単精度では後続仮数部フィールドＴは３桁×２＝６桁の１０進数を表現可能であり、倍精度では後続仮数部フィールドＴは３桁×５＝１５桁の１０進数を表現可能である。
【００１８】
図４は、１０ビットの組ｄｅｃｌｅｔから３桁の１０進数への変換方法を示す図である。ここで、１０ビットの組ｄｅｃｌｅｔは１０ビットｂ［９：０］で表され、３桁の１０進数は「１００×ｈ＋１０×ｔ＋ｏ」で表される。ｈは、百の位を表す４ビットｈ０〜ｈ３のデータである。ｔは、十の位を表す４ビットｔ０〜ｔ３のデータである。ｏは、一の位を表す４ビットｏ０〜ｏ３のデータである。
【００１９】
図５は、３桁の１０進数から１０ビットの組ｄｅｃｌｅｔへの変換方法を示す図である。ここで、３桁の１０進数は「１００×ｈ＋１０×ｔ＋ｏ」で表され、１０ビットの組ｄｅｃｌｅｔは１０ビットｂ［９：０］で表される。ｈは、百の位を表す４ビットｈ０〜ｈ３のデータである。ｔは、十の位を表す４ビットｔ０〜ｔ３のデータである。ｏは、一の位を表す４ビットｏ０〜ｏ３のデータである。
【００２０】
１０ビットｂ［９：０］で表現できる数は１０２４種類であり、３桁の１０進数で表現できる数は１０００種類であり、両者は異なるため、２４個の１０ビットの組ｄｅｃｌｅｔについては、複数の１０ビットｂ［９：０］の表現が１つの１０進数に対応している。
【００２１】
図６は、図１のレジスタ１１１及びＲＡＳ生成回路１１２の構成例を示す図である。ＲＡＳ生成回路１１２の構成を例に説明するが、図１のＲＡＳ生成回路１２３の構成も、ＲＡＳ生成回路１１２の構成と同じである。レジスタ１１１には、上記のように、符号フィールドＳ、コンビネーションフィールドＧ及び後続仮数部フィールドＴを有するＤＰＤフォーマットの１０進浮動小数点数が記憶されている。符号フィールドＳは、１ビットの符号データｐｓを記憶する。コンビネーションフィールドＧは、上記のように、５ビットの上位ビットＧＵ［４：０］及びｗビットの下位ビットＧＬ［ｗ−１：０］を有する。後続仮数部フィールドＴは、倍精度の場合、４個の１０ビットの組ｄｅｃｌｅｔのデータＤ０〜Ｄ４を記憶する。
【００２２】
図７（Ａ）は、図２（Ｂ）に対応し、単精度のＤＰＤフォーマットの１０進浮動小数点数のフォーマットを示す図である。後続仮数部フィールドＴは、２個の１０ビットの組ｄｅｃｌｅｔのデータＤ０及びＤ１を記憶する。データＤ０及びＤ１は、それぞれ１０ビットのデータである。
【００２３】
図７（Ｂ）は、図２（Ｃ）に対応し、倍精度のＤＰＤフォーマットの１０進浮動小数点数のフォーマットを示す図である。後続仮数部フィールドＴは、５個の１０ビットの組ｄｅｃｌｅｔのデータＤ０〜Ｄ４を記憶する。データＤ０〜Ｄ４は、それぞれ１０ビットのデータである。
【００２４】
以下、図６では、倍精度の場合を例に示すが、単精度の場合も同様である。ＲＡＳ生成回路１１２は、ｐｇｕ及びｐｇｌ生成回路６０１、ｐｔ生成回路６０２、モジュロ演算回路６０３及び排他的論理和回路６０４を有する第１の論理演算回路を有する。
【００２５】
ｐｇｕ及びｐｇｌ生成回路６０１は、コンビネーションフィールドＧの値に対して排他的論理和演算及びモジュロ演算を含む演算を行う第２の論理演算回路であり、上位ビットＧＵ［４：０］及び下位ビットＧＬ［ｗ−１：０］に対して論理演算を行い、１ビットのデータｐｇＸ及び２ビットのデータｐｇｕＹ［１：０］を出力する。
【００２６】
ｐｔ生成回路６０２は、後続仮数部フィールドＴの値に対して排他的論理和演算及びモジュロ演算を含む演算を行う第３の論理演算回路であり、データＤ０〜Ｄ４に対して論理演算を行い、１ビットのデータｐｔＸ及び２ビットのデータｐｔＹ［１：０］を出力する。
【００２７】
モジュロ演算回路６０３及び排他的論理和回路６０４は、符号フィールドＳのデータｐｓ、ｐｇｕ及びｐｇｌ生成回路６０１の演算結果データｐｇＸ，ｐｇｕＹ［１：０］、及びｐｔ生成回路６０２の演算結果データｐｔＸ，ｐｔＹ［１：０］に対して、論理演算を行う第４の論理演算回路である。
【００２８】
モジュロ演算回路６０３は、（ｐｇｕＹ［１：０］＋ｐｔＹ［１：０］）％３のモジュロ演算を行い、２ビットのデータｐ［１：０］を出力する。ここで、記号「％」は、モジュロ演算を示す。例えば、ｘ％３は、ｘを３で割った余りを示す。また、２ビットデータｐｇｕＹ［１：０］の四則演算上の扱いは、ｐｇｕＹ［１：０］＝２×ｐｇｕＹ［１］＋ｐｇｕＹ［０］である。以下、同様である。排他的論理和回路６０４は、符号データｐｓ、データｐｇＸ及びデータｐｔＸの排他的論理和演算を行い、１ビットデータｐ［２］を出力する。ＲＡＳ生成回路１１２は、１ビットデータｐ［２］及び２ビットデータｐ［１：０］を合わせて、３ビットデータｐ［２：０］をエラー検出符号として出力する。
【００２９】
図８は、図６のｐｇｕ及びｐｇｌ生成回路６０１の構成例を示す図である。ｐｇｕ及びｐｇｌ生成回路６０１は、ｐｇｕ生成回路８０１、排他的論理和回路８０２及び８０３を有する。ｐｇｕ生成回路８０１は、上位ビットＧＵ［４：０］に対して論理演算を行い、２ビットデータｐｇｕＹ［１：０］及び１ビットデータｐｇｕＸを出力する。排他的論理和回路８０２は、ｗビットの下位ビットＧＬ［ｗ−１：０］の各ビットの排他的論理和演算を行い、１ビットデータｐｇｌを出力する。ここで、図８の記号「＾」は、排他的論理和演算を示す。排他的論理和回路８０３は、データｐｇｕＸ及びデータｐｇｌの排他的論理和演算を行い、１ビットデータｐｇｘを出力する。ｐｇｕ及びｐｇｌ生成回路６０１は、２ビットデータｐｇｕＹ［１：０］及び１ビットデータｐｇＸを出力する。
【００３０】
図９は、図８のｐｇｕ生成回路８０１の構成例を示す図である。論理回路９０１は、４ビットデータＧＵ［４：１］が「１１１０」（２進数）又は３ビットデータＧＵ［４：２］が「１１０」（２進数）であるときには「１」を出力し、それ以外のときには「０」を出力する。論理回路９０２は、２ビットデータＧＵ［４：３］が「１０」（２進数）又は１ビットデータＧＵ［４］が「０」（２進数）であるときには「１」を出力し、それ以外のときには「０」を出力する。
【００３１】
モジュロ演算回路９０３は、（２＋ＧＵ［０］）％３のモジュロ演算を行い、２ビットの演算結果データ（２＋ＧＵ［０］）％３を出力する。モジュロ演算回路９０４は、（２×ＧＵ［１］＋ＧＵ［２］＋ＧＵ［０］）％３のモジュロ演算を行い、２ビットの演算結果データ（２×ＧＵ［１］＋ＧＵ［２］＋ＧＵ［０］）％３を出力する。
【００３２】
論理積（ＡＮＤ）回路９０５は、論理回路９０１が「１」を出力するときには、モジュロ演算回路９０３の出力データ（２＋ＧＵ［０］）％３を出力し、論理回路９０１が「０」を出力するときには、「０」を出力する。論理積回路９０６は、論理回路９０２が「１」を出力するときには、モジュロ演算回路９０４の出力データ（２×ＧＵ［１］＋ＧＵ［２］＋ＧＵ［０］）％３を出力し、論理回路９０２が「０」を出力するときには、「０」を出力する。論理和（ＯＲ）回路９０７は、論理積回路９０５及び９０６の出力データの論理和を演算し、２ビットデータｐｇｕＹ［１：０］を出力する。
【００３３】
論理回路９０８は、４ビットデータＧＵ［４：１］が「１１１１」（２進数）であるときには「１」を出力し、それ以外のときには「０」を出力する。論理積回路９０９は、論理回路９０８が「１」を出力するときには、１ビットデータＧＵ［０］を出力し、論理回路９０８が「０」を出力するときには、「０」を出力する。排他的論理和回路９１０は、４ビットデータＧＵ［１］、ＧＵ［２］、ＧＵ［３］、ＧＵ［４］の各ビットデータと論理積回路９０９の出力データの排他的論理和演算を行い、１ビットデータｐｇｕＸを出力する。
【００３４】
以上のように、ＧＵ［４：１］＝「１１１１」（２進数）のとき、
ｐｇｕＸ＝ＧＵ［４］＾ＧＵ［３］＾ＧＵ［２］＾ＧＵ［１］＾ＧＵ［０］
ｐｇｕＹ［１：０］＝０
になる。ここで、記号「＾」は、排他的論理和演算を示す。
【００３５】
また、ＧＵ［４：１］＝「１１１０」（２進数）又は「１１０ｘ」（２進数）のとき、
ｐｇｕＸ＝ＧＵ［４］＾ＧＵ［３］＾ＧＵ［２］＾ＧＵ［１］
ｐｇｕＹ［１：０］＝（２＋ＧＵ［０］）％３
になる。ここで、「ｘ」は、任意の値を示す。
【００３６】
また、ＧＵ［４：１］＝「１０ｘｘ」（２進数）又は「０ｘｘｘ」（２進数）のとき、
ｐｇｕＸ＝ＧＵ［４］＾ＧＵ［３］＾ＧＵ［２］＾ＧＵ［１］
ｐｇｕＹ［１：０］＝（２×ＧＵ［１］＋ＧＵ［２］＋ＧＵ［０］）％３
になる。
【００３７】
図１０は、図６のｐｔ生成回路６０２の構成例を示す図である。後続仮数部フィールドＴは、上記のように、５個の１０ビットデータＤ０［９：０］、Ｄ１［９：０］、Ｄ２［９：０］、Ｄ３［９：０］、Ｄ４［９：０］を有する。ｐｄ０生成回路１００１は、１０ビットデータＤ０［９：０］に対して論理演算を行い、１ビットデータｐｄ０Ｘ及び２ビットデータｐｄ０Ｙ［１：０］を出力する。ｐｄ１生成回路１００２は、１０ビットデータＤ１［９：０］に対して論理演算を行い、１ビットデータｐｄ１Ｘ及び２ビットデータｐｄ１Ｙ［１：０］を出力する。ｐｄ２生成回路１００３は、１０ビットデータＤ２［９：０］に対して論理演算を行い、１ビットデータｐｄ２Ｘ及び２ビットデータｐｄ２Ｙ［１：０］を出力する。ｐｄ３生成回路１００４は、１０ビットデータＤ３［９：０］に対して論理演算を行い、１ビットデータｐｄ３Ｘ及び２ビットデータｐｄ３Ｙ［１：０］を出力する。ｐｄ４生成回路１００５は、１０ビットデータＤ４［９：０］に対して論理演算を行い、１ビットデータｐｄ４Ｘ及び２ビットデータｐｄ４Ｙ［１：０］を出力する。
【００３８】
モジュロ演算回路１００６は、次式のように、（ｐｄ４Ｙ［１：０］＋ｐｄ３Ｙ［１：０］＋ｐｄ２Ｙ［１：０］＋ｐｄ１Ｙ［１：０］＋ｐｄ０Ｙ［１：０］）％３のモジュロ演算を行い、２ビットデータｐｔＹ［１：０］を出力する。
ｐｔＹ［１：０］＝（ｐｄ４Ｙ［１：０］＋ｐｄ３Ｙ［１：０］＋ｐｄ２Ｙ［１：０］＋ｐｄ１Ｙ［１：０］＋ｐｄ０Ｙ［１：０］）％３
【００３９】
排他的論理和回路１００７は、次式のように、（ｐｄ０Ｘ＾ｐｄ１Ｘ＾ｐｄ２Ｘ＾ｐｄ３Ｘ＾ｐｄ４Ｘ）の排他的論理和演算を行い、１ビットデータｐｔＸを出力する。
ｐｔＸ＝ｐｄ４Ｘ＾ｐｄ３Ｘ＾ｐｄ２Ｘ＾ｐｄ１Ｘ＾ｐｄ０Ｘ
【００４０】
図１１は、図１０のｐｄ０生成回路１００１の構成例を示す図である。以下、ｐｄ０生成回路１００１の構成を例に説明するが、図１０のｐｄ１生成回路１００２、ｐｄ２生成回路１００３、ｐｄ３生成回路１００４、ｐｄ４生成回路１００５も、ｐｄ０生成回路１００１と同じ構成を有する。
【００４１】
論理回路１１０１は、３ビットデータＤ０［３：１］が「１１０」（２進数）又は５ビットデータＤ０［６，５，３：１］が「００１１１」（２進数）であるときには「１」を出力し、それ以外のときには「０」を出力する。
【００４２】
論理回路１１０２は、３ビットデータＤ０［３：１］が「１００」（２進数）又は５ビットデータＤ０［６，５，３：１］が「０１１１１」（２進数）であるときには「１」を出力し、それ以外のときには「０」を出力する。
【００４３】
論理回路１１０３は、５ビットデータＤ０［６，５，３：１］が「１１１１１」（２進数）であるときには「１」を出力し、それ以外のときには「０」を出力する。
【００４４】
論理積回路１１０６は、論理回路１１０１が「１」を出力するときには「１」を出力し、論理回路１１０１が「０」を出力するときには「０」を出力する。論理積回路１１０７は、論理回路１１０２が「１」を出力するときには「２」を出力し、論理回路１１０２が「０」を出力するときには「０」を出力する。
【００４５】
モジュロ演算回路１１０４は、（２×Ｄ０［９］＋Ｄ０［８］）％３のモジュロ演算を行い、（２×Ｄ０［９］＋Ｄ０［８］）％３の演算結果を出力する。論理積回路１１０８は、論理回路１１０３が「１」を出力するときには、モジュロ演算回路１１０４の出力データ（２×Ｄ０［９］＋Ｄ０［８］）％３を出力し、論理回路１１０３が「０」を出力するときには、「０」を出力する。
【００４６】
論理和回路１１０９は、論理積回路１１０６〜１１０８の出力データの論理和を演算し、その演算結果データＡ１を出力する。
【００４７】
モジュロ演算回路１１０５は、｛２×（Ｄ０［８］＋Ｄ０［５］＋Ｄ０［１］）＋Ｄ０［９］＋Ｄ０［７］＋Ｄ０［６］＋Ｄ０［４］＋Ｄ０［２］＋Ｄ０［０］｝％３のモジュロ演算を行い、その演算結果データＡ２を出力する。
【００４８】
モジュロ演算回路１１１０は、（Ａ１＋Ａ２）％３のモジュロ演算を行い、２ビットデータｐｄ０Ｙ［１：０］を出力する。
【００４９】
排他的論理和回路１１１１は、次式のように、Ｄ０［６］＾Ｄ０［５］＾Ｄ０［３］＾Ｄ０［２］＾Ｄ０［１］の排他的論理和演算を行い、１ビットデータｐｄ０Ｘを出力する。
ｐｄ０Ｘ＝Ｄ０［６］＾Ｄ０［５］＾Ｄ０［３］＾Ｄ０［２］＾Ｄ０［１］
【００５０】
以上のように、５ビットデータＤ０［６，５，３：１］が「ｘｘ０ｘｘ」（２進数）、「ｘｘ１０１」（２進数）又は「１０１１１」のとき、
ｐｄ０Ｙ［１：０］＝｛２×（Ｄ０［８］＋Ｄ０［５］＋Ｄ０［１］）＋Ｄ０［９］＋Ｄ０［７］＋Ｄ０［６］＋Ｄ０［４］＋Ｄ０［２］＋Ｄ０［０］｝％３
になる。
【００５１】
また、５ビットデータＤ０［６，５，３：１］が「ｘｘ１００」（２進数）又は「０１１１１」（２進数）のとき、
ｐｄ０Ｙ［１：０］＝｛２×（Ｄ０［８］＋Ｄ０［５］＋Ｄ０［１］）＋Ｄ０［９］＋Ｄ０［７］＋Ｄ０［６］＋Ｄ０［４］＋Ｄ０［２］＋Ｄ０［０］＋２｝％３
になる。
【００５２】
また、５ビットデータＤ０［６，５，３：１］が「ｘｘ１１０」（２進数）又は「 ００１１１」（２進数）のとき、
ｐｄ０Ｙ［１：０］＝｛２×（Ｄ０［８］＋Ｄ０［５］＋Ｄ０［１］）＋Ｄ０［９］＋Ｄ０［７］＋Ｄ０［６］＋Ｄ０［４］＋Ｄ０［２］＋Ｄ０［０］＋１｝％３
になる。
【００５３】
また、５ビットデータＤ０［６，５，３：１］が「１１１１１」（２進数）のとき、
ｐｄ０Ｙ［１：０］＝｛２×（Ｄ０［５］＋Ｄ０［１］）＋Ｄ０［７］＋Ｄ０［６］＋Ｄ０［４］＋Ｄ０［２］＋Ｄ０［０］｝％３
になる。
【００５４】
なお、Ｄ０［６，５，３：１］が「１１１１１」（２進数）のとき、Ｄ０［９：８］はドントケアなデータになる。よって、上記の方法ではＤ０［６，５，３：１］が「１１１１１」（２進数）のときに、Ｄ０［９：８］のデータ化けが発生しても、エラーを検出しないようになっている。もし、これもエラーとして検出したい場合は、Ｄ０［６，５，３：１］が「１１１１１」（２進数）のときだけ、次式により、データｐｄ０Ｘを演算すればよい。
ｐｄ０Ｘ＝Ｄ０［９］＾Ｄ０［８］＾Ｄ０［６］＾Ｄ０［５］＾Ｄ０［３］＾Ｄ０［２］＾Ｄ０［１］
【００５５】
図１２は、図１１の２ビットデータｐｄ０Ｙ［１：０］をワンホットの値ｒ［２：０］に変換する回路の構成例を示す図である。２ビットデータｐｄ０Ｙ［１：０］は、図１１のモジュロ演算回路１１１０において、３で割った余りなので、「００」（２進数）、「０１」（２進数）又は「１０」（２進数）である。図１２の変換回路は、２ビットデータｐｄ０Ｙ［１：０］を、３ビットのうちのいずれかのビットが１であるワンホットの値ｒ［２：０］に変換する。インバータ１２０１は、データｐｄ０Ｙ［１］の論理反転データを出力する。インバータ１２０２は、データｐｄ０Ｙ［０］の論理反転データを出力する。論理積回路１２０３は、データｐｄ０Ｙ［１］及びインバータ１２０２の出力データの論理積データを１ビットデータｒ［２］として出力する。論理積回路１２０４は、インバータ１２０１の出力データ及びデータｐｄ０Ｙ［０］の論理積データを１ビットデータｒ［１］として出力する。排他的論理和回路１２０５は、データｐｄ０Ｙ［１］及びｐｄ０Ｙ［０］の排他的論理和データを１ビットデータｒ［０］として出力する。
【００５６】
２ビットデータｐｄ０Ｙ［１：０］は、「００」（２進数）が「０」（１０進数）を示し、「０１」（２進数）が「１」（１０進数）を示し、「１０」（２進数）が「２」（１０進数）を示す。
【００５７】
２ビット入力データｐｄ０Ｙ［１：０］と３ビット出力データｒ［２：０］の関係は、下記のようになる。
ｐｄ０Ｙ［１：０］＝００  →  ｒ［２：０］＝００１
ｐｄ０Ｙ［１：０］＝０１  →  ｒ［２：０］＝０１０
ｐｄ０Ｙ［１：０］＝１０  →  ｒ［２：０］＝１００
【００５８】
上記のように、３ビットデータｒ［２：０］は、３ビットのうちのいずれかのビットが１であるワンホットの値である。データｐｄ１Ｙ［２：０］〜ｐｄ４Ｙ［２：０］も、データｐｄ０Ｙ［２：０］と同様に、ワンホットの値に変換される。なお、図１２の回路は、２ビットデータｐｄ０Ｙ［１：０］が正値のみを表現する場合の変換回路である。２ビットデータｐｄ０Ｙ［１：０］が正値及び負値を表現する場合の変換回路を図１３に示す。
【００５９】
図１３は、正値及び負値を表現する２ビットデータｐｄ０Ｙ［１：０］をワンホットの値ｒ［２：０］に変換する回路の構成例を示す図である。インバータ１３０１は、データｐｄ０Ｙ［１］の論理反転データを出力する。インバータ１３０２は、データｐｄ０Ｙ［０］の論理反転データを出力する。論理積回路１３０３は、データｐｄ０Ｙ［１］及びｐｄ０Ｙ［０］の論理積データを１ビットデータｒ［２］として出力する。否定排他的論理和（ＸＮＯＲ）回路１３０４は、データｐｄ０Ｙ［１］及びｐｄ０Ｙ［０］の否定排他的論理和データを１ビットデータｒ［１］として出力する。すなわち、否定排他的論理和（ＸＮＯＲ）回路１３０４は、データｐｄ０Ｙ［１］及びｐｄ０Ｙ［０］の排他的論理和データを演算し、その論理反転データを１ビットデータｒ［１］として出力する。論理積回路１３０５は、インバータ１３０１及び１３０２の論理積データを１ビットデータｒ［０］として出力する。
【００６０】
２ビットデータｐｄ０Ｙ［１：０］は、「０１」（２進数）が「＋１」（１０進数）を示し、「００」（２進数）が「０」（１０進数）を示し、「１１」（２進数）が「−１」（１０進数）を示し、「１０」（２進数）が「−２」（１０進数）を示す。
【００６１】
２ビット入力データｐｄ０Ｙ［１：０］と３ビット出力データｒ［２：０］の関係は、下記のようになる。
ｐｄ０Ｙ［１：０］＝００  →  ｒ［２：０］＝００１
ｐｄ０Ｙ［１：０］＝０１  →  ｒ［２：０］＝０１０
ｐｄ０Ｙ［１：０］＝１０  →  ｒ［２：０］＝０１０
ｐｄ０Ｙ［１：０］＝１１  →  ｒ［２：０］＝１００
【００６２】
以上のように、図１２又は図１３の変換回路を用いることにより、図１０のモジュロ演算回路１００６の処理速度を速くすることができる。
【００６３】
図１４は、図１２及び図１３の変換回路を用いない場合のモジュロ演算回路１００６の構成例を示す図である。図１０のモジュロ演算回路１００６は５個のデータｐｄ０Ｙ［１：０］〜ｄｐ４Ｙ［１：０］を入力するが、図１４のモジュロ演算回路１００６では、説明の簡単のため、２個のデータｐｄ０Ｙ［１：０］及びｐｄ１Ｙ［１：０］を入力する場合を例に説明する。
【００６４】
インバータ１４０１は、データｐｄ１Ｙ［１］の論理反転データを出力する。インバータ１４０２は、データｐｄ１Ｙ［０］の論理反転データを出力する。インバータ１４０３は、データｐｄ０Ｙ［１］の論理反転データを出力する。インバータ１４０４は、データｐｄ０Ｙ［０］の論理反転データを出力する。論理積回路１４０５は、インバータ１４０１の出力データ、インバータ１４０２の出力データ及びデータｐｄ０Ｙ［１］の論理積データを出力する。論理積回路１４０６は、インバータ１４０３の出力データ、インバータ１４０４の出力データ及びデータｐｄ１Ｙ［１］の論理積データを出力する。論理積回路１４０７は、データｐｄ０Ｙ［０］及びｐｄ１Ｙ［０］の論理積データを出力する。論理積回路１４０８は、インバータ１４０１の出力データ、インバータ１４０２の出力データ及びデータｐｄ０Ｙ［０］の論理積データを出力する。論理積回路１４０９は、インバータ１４０３の出力データ、インバータ１４０４の出力データ及びデータｐｄ１Ｙ［０］の論理積データを出力する。論理積回路１４１０は、データｐｄ１Ｙ［１］及びｐｄ０Ｙ［１］の論理積データを出力する。論理和回路１４１１は、論理積回路１４０５〜１４０７の出力データの論理和データを１ビットデータｐｔＹ［１］として出力する。論理和回路１４１２は、論理積回路１４０８〜１４１０の出力データの論理和データを１ビットデータｐｔＹ［０］として出力する。
【００６５】
以上のように、図１４のモジュロ演算回路１００６は、データｐｄ０Ｙ［１：０］及びｐｄ１Ｙ［１：０］が入力されてからデータｐｔＹ［１：０］が出力されるまでにゲート３段分の処理時間を要する。
【００６６】
図１５は、図１２又は図１３の変換回路を用いた場合のモジュロ演算回路１００６の構成例を示す図である。上記と同様に、図１５のモジュロ演算回路１００６では、説明の簡単のため、２個の３ビットデータｒ０［２：０］及びｒ１［２：０］を入力する場合を例に説明する。３ビットデータｒ０［２：０］は、２ビットデータｐｄＹ０［１：０］が図１２又は図１３の変換回路により変換された３ビットデータｒ［２：０］に対応する。３ビットデータｒ１［２：０］は、２ビットデータｐｄＹ１［１：０］が図１２又は図１３の変換回路により変換された３ビットデータｒ［２：０］に対応する。
【００６７】
論理積回路１５０１は、データｒ０［２］及びｒ１［０］の論理積データを出力する。論理積回路１５０２は、データｒ０［１］及びｒ１［１］の論理積データを出力する。論理積回路１５０３は、データｒ０［０］及びｒ１［２］の論理積データを出力する。論理積回路１５０４は、データｒ０［２］及びｒ１［２］の論理積データを出力する。論理積回路１５０５は、データｒ０［１］及びｒ１［０］の論理積データを出力する。論理積回路１５０６は、データｒ０［０］及びｒ１［１］の論理積データを出力する。論理積回路１５０７は、データｒ０［２］及びｒ１［１］の論理積データを出力する。論理積回路１５０８は、データｒ０［１］及びｒ１［２］の論理積データを出力する。論理積回路１５０９は、データｒ０［０］及びｒ１［０］の論理積データを出力する。論理和回路１５１０は、論理積回路１５０１〜１５０３の出力データの論理和データを１ビットデータｐｔＹ［２］として出力する。論理和回路１５１１は、論理積回路１５０４〜１５０６の出力データの論理和データを１ビットデータｐｔＹ［１］として出力する。論理和回路１５１２は、論理積回路１５０７〜１５０９の出力データの論理和データを１ビットデータｐｔＹ［０］として出力する。その結果、モジュロ演算回路１００６は、３ビットデータｐｔＹ［２：０］を出力する。
【００６８】
実際には、モジュロ演算回路１００６は、次式により、３ビットデータｐｔＹ［２：０］を演算する。ここで、データｒ４［２：０］、ｒ３［２：０］、ｒ２［２：０］は、それぞれ、データｐｄ４Ｙ［１：０］、ｐｄ３Ｙ［１：０］、ｐｄ２Ｙ［１：０］に対応するデータｒ［２：０］である。
ｐｔＹ［２：０］＝（ｒ４［２：０］＋ｒ３［２：０］＋ｒ２［２：０］＋ｒ１［２：０］＋ｒ０［２：０］）％３
【００６９】
また、図９のモジュロ演算も同様に行うと、２ビットデータｐｇｕＹ［１：０］は、３ビットデータｐｇｕＹ［２：０］になる。
【００７０】
その場合、図６の４ビットのエラー検出符号ｐ［３：０］は、次式により生成される。
ｐ［３］＝ｐｓ＾ｐｇｕＸ＾ｐｇｌ＾ｐｔＸ
ｐ［２：０］＝（ｐｇｕＹ［２：０］＋ｐｔＹ［２：０］）％３
【００７１】
なお、図１３の回路の場合、３ビットデータｒ０［２：０］及びｒ１［２：０］は、上記のように、１０進数で「＋１」、「０」、「−１」、「−２」の値をとり得る。その場合、ｘ％３のモジュロ演算は、ｘ＝＋１の場合には「＋１」％３＝１になり、ｘ＝０の場合には「０」％３＝０になり、ｘ＝−１の場合には「−１」％３＝３−１＝２になり、ｘ＝−２の場合には「−２」％３＝３−２＝１になる。
【００７２】
以上のように、図１５のモジュロ演算回路１００６は、データｒ０［２：０］及びｒ１［２：０］が入力されてからデータｐｔＹ［２：０］が出力されるまでにゲート２段分の処理時間を要し、図１４のモジュロ演算回路１００６の場合より処理時間を短くすることができる。他のモジュロ演算回路も同様である。以上のように、図１５のモジュロ演算回路１００６等は、複数ビットのうちのいずれかのビットが１であるワンホットの値に対してモジュロ演算を行うことにより、ＲＡＳ生成回路１１２の処理を高速化することができる。特に、ディレイ要件が厳しい場合には、メリットが大きい。
【００７３】
なお、上記では、図６のＲＡＳ生成回路１１２が３ビットのエラー検出符号ｐ［２：０］を生成する例を説明した。３ビットのエラー検出符号ｐ［２：０］は、最もビット数が少ないエラー検出符号であり、ＤＰＤフォーマットの１０進浮動小数点数の１ビットエラーを１００％検出することができる。しかし、２ビット以上のエラー検出率は、比較的低い。以下、エラー検出符号のビット数を増やすことにより、２ビット以上のエラー検出率を高くする例を説明する。
【００７４】
他の例として、図１０の排他的論理和回路１００７を削除し、５ビットデータｐｄ０Ｘ〜Ｐｄ４Ｘをそのままエラー検出符号として出力してもよい。
【００７５】
また、図１０のモジュロ演算回路１００６を削除し、５個の２ビットデータｐｄ０Ｙ［１：０］〜ｐｄ４Ｙ［１：０］をそのままエラー検出符号として出力してもよい。
【００７６】
また、図１０の排他的論理和回路１００７及びモジュロ演算回路１００６を削除し、５ビットデータｐｄ０Ｘ〜ｐｄ４Ｘ及び５個の２ビットデータｐｄ０Ｙ［１：０］〜ｐｄ４Ｙ［１：０］をそのままエラー検出符号として出力してもよい。
【００７７】
また、図１０のｐｄ０生成回路１００１、ｐｄ１生成回路１００２及びｐｄ２生成回路１００３のグループの出力データに対して論理演算を行い、ｐｄ３生成回路１００４及びｐｄ４生成回路１００５のグループの出力データに対して論理演算を行い、エラー検出符号を生成してもよい。
【００７８】
また、エラー検出符号の演算をし易くするため、下記の演算により、指数用の１ビットエラー検出符号ｐ［３］及び仮数用の３ビットエラー検出符号ｐ［２：０］に分けて生成してもよい。
ｐ［３］＝ｐｇｕＸ＾ｐｇｌ
ｐ［２］＝ｐｓ＾ｐｔＸ
ｐ［１：０］＝（ｐｇｕＹ［１：０］＋ｐｔＹ［１：０］）％３
【００７９】
図１６は、他の実施形態による図１の受信回路１０２の構成例を示す図である。レジスタ１２１は、図１のレジスタ１２１と同様に、送信回路１０１から受信したＤＰＤフォーマットの１０進浮動小数点数を記憶する。レジスタ１２２も、図１のレジスタ１２２と同様に、送信回路１０１から受信した３ビットのエラー検出符号ｐ［２：０］を記憶する。フォーマット変換回路１６０１は、レジスタ１２１に記憶されているＤＰＤフォーマットの１０進浮動小数点数をＢＣＤ（binary-coded decimal）フォーマットの１０進数に変換する。
【００８０】
ＢＣＤフォーマットの１０進数は、１０進数の１桁を２進数の４桁で表現する。例えば、「１２７」の１０進数は、「０００１  ００１０  ０１１１」の１２ビットの２進数で表現される。
【００８１】
レジスタ１６０２は、フォーマット変換回路１６０１により変換されたＢＣＤフォーマットの１０進数を記憶する。
【００８２】
ＲＡＳ生成回路１６０４は、ＢＣＤエラー検出符号生成回路であり、下記のように、レジスタ１６０２に記憶されているＢＣＤフォーマットの１０進数のエラー検出符号を生成する。
【００８３】
任意の１０進数Ｎを下記のように定義する。
Ｎ＝ｄi×１０i＋ｄ(i-1)×１０(i-1)＋・・・＋ｄ1×１０1＋ｄ0
（ｄi＝０〜９、ｉ=０，１,・・・）
ここで、（９×ｄ）％３＝０であるので、次式が成立する。
（ｄ×１０）％３＝ｄ×（９＋１）％３＝ｄ％３
これより、次式が成立する。
（ｄ×１０j）％３＝ｄ％３  （ｊ＝０，１，２,・・・）
よって、次式が成立する。
Ｎ％３＝｛ｄi＋ｄ(i-1)＋・・・＋ｄ1＋ｄ0｝％３
（ｄi＝０〜９、ｉ＝０，１,・・・）
ｄiが４ビットの２進数で表されているとすると、
ｄi＝ａ(i,3)×２3＋ａ(i,2)×２2＋ａ(i,1)×２1＋ａ(i,0)
ここで、ａ(i,j)＝は０又は１、ｉ＝０，１，２,・・・、ｊ＝０，１，２，３、各ａ(i,j) はｄiが０〜９の範囲となる組み合わせを取る。
よって、次式が成立する。
ｄi％３＝｛ａ(i,3)×２3＋ａ(i,2)×２2＋ａ(i,1)×２1＋ａ(i,0)｝％３
＝｛２×（ａ(i,3)＋ａ(i,1)）＋（ａ(i,2)＋ａ(i,0)）｝％３
これを元の式に当てはめると、次式が成立する。
Ｎ％３＝｛２×（ａ(i,3)＋ａ(i,1)＋・・・＋ａ(0,3)＋ａ(0,1)）
＋（ａ(i,2)＋ａ(i,0)＋・・・＋ａ(0,2)＋ａ(0,0)）｝％３
この式にはＮの全ビットが含まれている。すなわち、ドントケアなビットは存在しない。また、Ｎの任意の１ビットａ(i,j) にビット化けが発生したとすると、その値は必ず（Ｎ＋１）％３又は（Ｎ＋２）％３のどちらかになることも、この式からわかる。
次式が成立するから、Ｎの任意の１ビットが反転したとき、Ｎ％３は、必ず正常な値とは異なる値を示す。
Ｎ％３≠（Ｎ＋１）％３
Ｎ％３≠（Ｎ＋２）％３
【００８４】
ＲＡＳ生成回路１６０４は、上記のＮ％３のモジュロ演算により、２ビットのエラー検出符号を生成し、Ｎの１ビット化けを１００％検出可能である。
【００８５】
レジスタ１６０３は、レジスタ１２２に記憶されている３ビットのエラー検出符号ｐ［２：０］のうちの下位の２ビットのエラー検出符号［１：０］を記憶する。
【００８６】
比較回路１６０５は、ＲＡＳ生成回路１６０４により生成された２ビットのエラー検出符号と、レジスタ１６０３に記憶されている２ビットのエラー検出符号ｐ［１：０］とを比較することにより、レジスタ１６０２に記憶されているＢＣＤフォーマットの１０進数のエラーを検出する。具体的には、比較回路１６０５は、両者が同一であれば、レジスタ１６０２に記憶されているＢＣＤフォーマットの１０進数にエラーが存在しないことを示す情報を出力し、両者が異なっていれば、レジスタ１６０２に記憶されているＢＣＤフォーマットの１０進数にエラーが存在することを示す情報を出力する。
【００８７】
以上のように、ＤＰＤフォーマットの１０進浮動小数点数は、フォーマット変換回路１６０１により、一旦、ＢＣＤフォーマットの１０進数に変換される。ＲＡＳ生成回路１６０４は、１０進数を３で割った余りを２ビットのエラー検出符号として生成する。
【００８８】
レジスタ１６０３には、ＤＰＤフォーマットの１０進浮動小数点数の２ビットのエラー検出符号ｐ［１：０］が記憶されている。エラー検出符号ｐ［１：０］は、レジスタ１２２に記憶されている３ビットのエラー検出符号ｐ［２：０］の一部のビットであり、ＢＣＤフォーマットの１０進数のエラー検出符号としても、そのまま流用することができる。モジュロ演算結果は、四則演算と相性が良く、ＢＣＤフォーマットでの四則演算結果に対して、そのモジュロ演算結果も容易に予測が可能である。
【００８９】
以上のように、図６のＲＡＳ生成回路１１２は、ＤＰＤフォーマットの１０進浮動小数点数のエラー検出符号ｐ［２：０］を生成する。そのエラー検出符号ｐ［２：０］は、図１の受信回路１０２に示すように、ＤＰＤフォーマットの１０進浮動小数点数のエラー検出に使用可能であるのみならず、図１６の受信回路１０２に示すように、ＤＰＤフォーマットの１０進浮動小数点数から変換されたＢＣＤフォーマットの１０進数のエラー検出にも使用可能である点で、有用である。
【００９０】
上記実施形態によれば、ＤＰＤフォーマット及びＢＣＤフォーマットに対して別々のエラー検出符号を生成する場合と比較して同等以上のエラー検出率を持ち、かつＤＰＤフォーマット用の３ビットのエラー検出符号ｐ［２：０］からＢＣＤフォーマット用の２ビットのエラー検出符号ｐ［１：０］への変換を、小さな回路規模で実現することができる。
【００９１】
エラー検出率について説明する。１ビットエラーは、１００％検出可能である。２ビット以上のエラー検出率は、エラー検出符号のビット数に応じて、０％より大きく１００％未満になる。なお、エラー検出符号として、パリティを用いた場合には、２ビット以上のエラーを検出できないので、本実施形態のエラー検出率は高いと言える。
【００９２】
また、本実施形態は、上記のように、使い方に応じて、エラー検出符号のビット数を変えることができ、３ビットまで少なくすることができる。また、本実施形態は、エラー発生箇所を、細かく特定できる。例えば、１０ビットの組ｄｅｃｌｅｔ単位での特定が可能である。
【００９３】
また、ＤＰＤフォーマットの３ビットのエラー検出符号ｐ［２：０］のうちの２ビットのエラー検出符号ｐ［１：０］は、そのままＢＣＤフォーマットのエラー検出符号として流用できる。
【００９４】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００９５】
１０１  送信回路
１０２  受信回路
１１１，１２１，１２２  レジスタ
１１２，１２３  ＲＡＳ生成回路
１２４  比較回路
６０１  ｐｇｕ及びｐｇｌ生成回路
６０２  ｐｔ生成回路
６０３  モジュロ演算回路
６０４  排他的論理和回路
【図１】
2014038413.tif 000003
【図２】
2014038413.tif 000004
【図３】
2014038413.tif 000005
【図４】
2014038413.tif 000006
【図５】
2014038413.tif 000007
【図６】
2014038413.tif 000008
【図７】
2014038413.tif 000009
【図８】
2014038413.tif 000010
【図９】
2014038413.tif 000011
【図１０】
2014038413.tif 000012
【図１１】
2014038413.tif 000013
【図１２】
2014038413.tif 000014
【図１３】
2014038413.tif 000015
【図１４】
2014038413.tif 000016
【図１５】
2014038413.tif 000017
【図１６】
2014038413.tif 000018