(57)【要約】【課題】簡易な構成で様々な生成多項式に対応することが可能なＣＲＣ演算回路を提供する。【解決手段】ＣＲＣ演算回路１００は、多項式データを記憶する生成多項式レジスタ１１０と、入力データのビット数に対応して直列に接続された複数のＣＲＣ演算部１２０と、を備える。複数のＣＲＣ演算部１２０は、入力データまたは前段のＣＲＣ演算部１２０の出力データを被演算データとして、被演算データを１ビットシフトするバレルシフタ１２１と、シフトしたシフトデータと多項式データとの排他的論理和演算を行うＸＯＲ回路１２２と、シフトデータと演算結果データとのいずれかを、被演算データに基づいて選択し出力するマルチプレクサ１２３とを備える【選択図】図６
2018023000.tif 000002
【特許請求の範囲】
【請求項１】
生成多項式に対応した多項式データを記憶する生成多項式記憶部と、
演算対象である入力データのビット数に対応して設けられ、直列に接続された複数のＣＲＣ演算部と、
を備え、
前記複数のＣＲＣ演算部は、
前記入力データまたは前段の前記ＣＲＣ演算部の出力データを被演算データとして、前記被演算データを１ビットシフトするバレルシフタと、
前記バレルシフタがシフトしたシフトデータと前記多項式データとの排他的論理和演算を行う排他的論理和回路と、
前記シフトデータと前記排他的論理和回路が演算した演算結果データとのいずれかを、前記被演算データに基づいて選択し出力する選択回路と、
を備えるＣＲＣ演算回路。
【請求項２】
前記選択回路は、前記被演算データの最下位ビットまたは最上位ビットに基づいて、出力するデータを選択する、
請求項１に記載のＣＲＣ演算回路。
【請求項３】
前記選択回路は、前記被演算データの最下位ビットまたは最上位ビットが“１”である場合、前記演算結果データを選択し、前記最下位ビットまたは前記最上位ビットが“０”である場合、前記シフトデータを選択する、
請求項２に記載のＣＲＣ演算回路。
【請求項４】
前記選択回路は、前記被演算データのビットのうち、前記バレルシフタのシフト方向端部のビットに基づいて、出力するデータを選択する、
請求項１に記載のＣＲＣ演算回路。
【請求項５】
前記選択回路は、前記シフト方向端部のビットが“１”である場合、前記演算結果データを選択し、前記シフト方向端部のビットが“０”である場合、前記シフトデータを選択する、
請求項４に記載のＣＲＣ演算回路。
【請求項６】
前記多項式データのビット順序を反転するビット反転部を備える、
請求項１に記載のＣＲＣ演算回路。
【請求項７】
前記ビット反転部は、前記多項式データの最下位ビットから最上位ビットまでのビット順序を反転する、
請求項６に記載のＣＲＣ演算回路。
【請求項８】
前記ビット反転部は、前記複数のＣＲＣ演算部から最終的に得られる出力データに対し、前記多項式データと同じ反転方法でビットを反転する、
請求項６に記載のＣＲＣ演算回路。
【請求項９】
前記入力データのビット順序を反転するビット反転部を備える、
請求項１に記載のＣＲＣ演算回路。
【請求項１０】
前記ビット反転部は、前記入力データをバイト単位に分割し、各バイト内で最下位ビットから最上位ビットまでのビット順序を反転する、
請求項９に記載のＣＲＣ演算回路。
【請求項１１】
前記ＣＲＣ演算部は、前記入力データが８ビット単位で入力され、
前記ＣＲＣ演算部を８段備えている、
請求項１に記載のＣＲＣ演算回路。
【請求項１２】
前記入力データが１６ビットの場合、前記８段のＣＲＣ演算部が演算を２回繰り返す、
請求項１１に記載のＣＲＣ演算回路。
【請求項１３】
前記入力データが３２ビットの場合、前記８段のＣＲＣ演算部が演算を４回繰り返す、
請求項１１に記載のＣＲＣ演算回路。
【請求項１４】
ＣＲＣ演算回路を有し、前記ＣＲＣ演算回路の演算結果であるＣＲＣ符号を送信データに付加するＣＲＣ付加部と、
前記ＣＲＣ演算回路を有し、前記ＣＲＣ演算回路の演算結果であるＣＲＣ符号に基づいて受信データの誤りを検査するＣＲＣ検査部と、
を備え、
前記ＣＲＣ演算回路は、
生成多項式に対応した多項式データを記憶する生成多項式記憶部と、
演算対象データである入力データのビット数に対応して設けられ、直列に接続された複数のＣＲＣ演算部と、
を備え、
前記複数のＣＲＣ演算部は、
前記入力データまたは前段の前記ＣＲＣ演算部の出力データを被演算データとして、前記被演算データを１ビットシフトするバレルシフタと、
前記バレルシフタがシフトしたシフトデータと前記多項式データとの排他的論理和演算を行う排他的論理和回路と、
前記シフトデータと前記排他的論理和回路が演算した演算結果データとのいずれかを、前記被演算データに基づいて選択し出力する選択回路と、
を備える半導体装置。
【請求項１５】
電波の送受信を行う電波送受信部と、前記電波送受信部を制御する制御部と、を備えたレーダーシステムであって、
前記制御部は、
前記電波送受信部の電波の送信を制御する制御データを生成する制御データ生成部と、
ＣＲＣ演算回路を有し、前記ＣＲＣ演算回路の演算結果であるＣＲＣ符号を前記制御データに付加するＣＲＣ付加部と、
前記ＣＲＣ符号が付加された制御データを前記電波送受信部へ送信する送信部と、
前記電波送受信部が受信した電波を示す受信電波データを、前記ＣＲＣ符号とともに前記電波送受信部から受信する受信部と、
前記ＣＲＣ演算回路を有し、前記ＣＲＣ演算回路の演算結果であるＣＲＣ符号と前記受信したＣＲＣ符号に基づいて、前記受信電波データの誤りを検査するＣＲＣ検査部と、
前記誤りの無い受信電波データに基づいて、物体を検出する物体検出部と、
を備え、
前記ＣＲＣ演算回路は、
生成多項式に対応した多項式データを記憶する生成多項式記憶部と、
演算対象データである入力データのビット数に対応して設けられ、直列に接続された複数のＣＲＣ演算部と、
を備え、
前記複数のＣＲＣ演算部は、
前記入力データまたは前段の前記ＣＲＣ演算部の出力データを被演算データとして、前記被演算データを１ビットシフトするバレルシフタと、
前記バレルシフタがシフトしたシフトデータと前記多項式データとの排他的論理和演算を行う排他的論理和回路と、
前記シフトデータと前記排他的論理和回路が演算した演算結果データとのいずれかを、前記被演算データに基づいて選択し出力する選択回路と、
を備える、レーダーシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＲＣ演算回路、半導体装置及びレーダーシステムに関し、例えば、ＣＲＣ演算を行うＣＲＣ演算回路、半導体装置及びレーダーシステムに関する。
【背景技術】
【０００２】
様々なシステムにおけるデータ通信等の誤り検出方式として、ＣＲＣ（Cyclic Redundancy Check：巡回冗長検査）方式が広く利用されている。ＣＲＣ方式では、送信側と受信側で同じ生成多項式を用いてＣＲＣ演算を行うことにより、誤り検出が可能となる。生成多項式は誤り検出能力に影響するため、通信規格やシステムの要求にあわせて種々の生成多項式が採用されている。
【０００３】
関連する技術として、例えば、特許文献１や２が知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０７−０９５０９６号公報
【特許文献２】特開２００１−０３６４１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
近年、ＣＲＣ方式を採用するシステムの多様化が進んでいるため、ＣＲＣ演算を行うＣＲＣ演算回路では、多くの種類の生成多項式へ対応することが望まれている。しかしながら、関連する技術では、簡易な構成で様々な生成多項式に対応することが困難であるという問題がある。
【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態によれば、ＣＲＣ演算回路は、生成多項式記憶部と複数のＣＲＣ演算部を備えている。生成多項式記憶部は、生成多項式に対応した多項式データを記憶し、複数のＣＲＣ演算部は、演算対象である入力データのビット数に対応して設けられ、直列に接続されている。
【０００８】
複数のＣＲＣ演算部は、バレルシフタ、排他的論理和回路、選択回路を備えている。バレルシフタは、入力データまたは前段のＣＲＣ演算部の出力データを被演算データとして、被演算データを１ビットシフトする。排他的論理和回路は、バレルシフタがシフトしたシフトデータと記憶された多項式データとの排他的論理和演算を行う。選択回路は、シフトされたシフトデータと排他的論理和回路が演算した演算結果データとのいずれかを、被演算データに基づいて選択し出力する。
【発明の効果】
【０００９】
前記一実施の形態によれば、簡易な構成で様々な生成多項式に対応することができる。
【図面の簡単な説明】
【００１０】
【図１】参考例１のＣＲＣ演算回路の構成例を示す構成図である。
【図２】参考例２のＣＲＣ演算回路の構成例を示す構成図である。
【図３】実施の形態１に係る車載用レーダーシステムの構成例を示す構成図である。
【図４】実施の形態１に係るＣＲＣ付加部の構成例を示す構成図である。
【図５】実施の形態１に係るＣＲＣ検査部の構成例を示す構成図である。
【図６】実施の形態１に係るＣＲＣ演算回路の主要な構成例を示す構成図である。
【図７Ａ】実施の形態１に係るＣＲＣ演算回路の具体的な構成例を示す構成図である。
【図７Ｂ】実施の形態１に係るＣＲＣ演算回路の具体的な構成例を示す構成図である。
【図８】実施の形態２に係る制御ユニット構成例を示す構成図である。
【発明を実施するための形態】
【００１１】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１２】
（実施の形態に至る検討）
一例として、半導体装置を備える車載用レーダーシステムでは、レーダーアナログ用（ＲＦ）チップとマイコン（マイクロコントローラ）チップ間の通信にＣＲＣ方式が使用される。このようなシステムでは、高い信頼性が要求されるため、チップ間通信の情報信頼度を向上させる必要がある。そこで、このチップ間における制御信号やデータの通信に用いられるＣＲＣ符号の生成多項式には、より高効率な式が選択される。
【００１３】
さらに、同じレーダーシステムであっても、車種や世代などによって要求される性能は多種多様であり、必要となる生成多項式をあらかじめ予測することは困難である。このように、システムの要求などによって使用する生成多項式が異なっているため、ＣＲＣ演算回路において複数の生成多項式に対応することが望まれている。
【００１４】
参考例１として、特定の多項式に固定した回路にてＣＲＣ演算を実行する例が考えられる。すなわち、この参考例１では、固定のＸＯＲ（排他的論理和）回路の組み合わせで演算回路を構成する。図１は、参考例１のＣＲＣ演算回路の構成イメージを示している。参考例１のＣＲＣ演算回路９００は、生成多項式＝ｘ＾３＋ｘ＋１の場合の例であり、この生成多項式に合わせた固定の組み合わせ回路である演算回路９０１〜９０３を備えている。なお、図１において、“cpre”は、１つ前の演算結果を示している。参考例１は、回路は簡素であるが、対応する生成多項式の数だけ回路が必要となるため、多種の生成多項式に柔軟に対応することはできない。
【００１５】
汎用的な生成多項式に対応するためには、例えば、ＣＰＵにて生成多項式の演算を実行する方法が考えられる。しかし、ＣＰＵのリソースおよびメモリ空間が消費されてしまうため、ＣＰＵの性能への影響を抑えるためには、ハードウェアで実現することが好ましい。
【００１６】
ハードウェアで多種の生成多項式に対応する例として、逐次ビット演算方式とルックアップテーブル方式が考えられる。逐次ビット演算方式では、１クロック毎に逐次ビットシフトしＸＯＲ演算を行うため、必要なクロック数が多くなり、処理速度が遅いという問題がある。
【００１７】
図２は、ルックアップテーブル方式の例として、特許文献１に記載された参考例２のＣＲＣ演算回路の構成を示している。参考例２では、データ設定部９１３にてあらかじめ計算されたデータ（ルックアップテーブル）をデータ格納部９１２に格納し、並列ＣＲＣ計算部９１１は格納されたデータと入力データから演算結果を選択する。なお、並列ＣＲＣ計算部の代わりにＣＰＵにても実装することも可能であり、ルックアップテーブルを用いることで高速かつ汎用的にＣＲＣの計算を行うことができる。参考例２では、生成多項式の変更は、データ格納部の構成の変更や、ＣＰＵの場合はルックアップテーブルを更新することによって切り替えが可能である。
【００１８】
参考例２のルックアップテーブル方式では高速かつ汎用的に実装することが可能であるが、ハードウェアにて実装を行うと、データ格納部に生成多項式を展開してルックアップテーブルを格納するため、多数のフリップフロップ（ＦＦ）が必要となる。このため、ＣＲＣ演算結果を得るためには、多数のフリップフロップを組み合わせた論理的接続が必要となる。
【００１９】
ＬＳＩの出荷時やスタートアップ時に自己診断を行うことを考えると、多数のフリップフロップを組み合わせた構成では、疑似乱数を用いるＳＣＡＮテストに対して故障検出率が低くなり、精度よく自己診断や故障検出を行うことができないという問題が発生する。
【００２０】
車載向けシステムでは高い信頼性を確保するために起動後に自己診断回路（ＢＩＳＴ回路）によって自己診断を実施し、高い故障検出率と、短い初期化時間が要求される。このため、短期間に高検出可能となる構成が求められるが、参考例２のようにデータ格納部でテーブルを保持する構成では、高速な検出が難しいことが課題となる。
【００２１】
なお、ルックアップテーブル方式では、生成多項式が変更になると全テーブルを入れ替える必要がある。ルックアップテーブル方式では、テーブル生成にテーブル数分のクロックが必要であるため、生成多項式を切り替えるために時間かかってしまう。また、ルックアップテーブル方式では、多数のフリップフロップが必要となるため回路面積が大きくなるという問題もある。
【００２２】
このため、実施の形態では、汎用かつ少面積、自己診断回路に対応したＣＲＣ演算回路を提供可能とする。
【００２３】
（実施の形態１）
以下、図面を参照して実施の形態１について説明する。図３は、本実施の形態に係る車載用レーダーシステムの構成例を示している。なお、ここでは一例として車載用レーダーシステムについて説明するが、ＣＲＣ方式を採用するその他のシステムや半導体装置に、後述する本実施の形態に係るＣＲＣ演算回路を適用してもよい。
【００２４】
図３に示すように、本実施の形態に係る車載用レーダーシステム１は、ＭＣＵ（マイクロコントローラ）１０、ＲＦ信号処理部２０、送信アンテナ３１、受信アンテナ３２を備えている。ＭＣＵ１０とＲＦ信号処理部２０は、それぞれ別の半導体装置（半導体チップ）であり、ＭＣＵ１０とＲＦ信号処理部２０間は、シリアルインタフェース等により通信可能に接続されている。送信アンテナ３１及び受信アンテナ３２は、レーダー用アンテナであり、例えば、車体のエンブレム等に搭載されている。
【００２５】
ＭＣＵ１０は、ＲＦ信号処理部２０の動作を制御する制御部であり、ＲＦ信号処理部２０が送受信した電波に基づいて物体の検出等を行う。ＭＣＵ１０は、ＣＲＣ付加部１１、ＣＲＣ検査部１２、通信ＩＦ（インタフェース）１３、通信ＩＦ１４、ＤＳＰ１５、自己診断回路１６を備えている。
【００２６】
ＣＲＣ付加部１１は、ＤＳＰ１５が生成した制御データをもとにＣＲＣ符号を生成し、生成したＣＲＣ符号を制御データに付加する。通信ＩＦ１３は、制御データ送信用のインタフェースであり、ＣＲＣ付加部１１からの制御データ及びＣＲＣ符号をＲＦ信号処理部２０へ送信する。
【００２７】
通信ＩＦ１４は、受信電波データ受信用のインタフェースであり、ＲＦ信号処理部２０から受信電波データ及びＣＲＣ符号を受信する。ＣＲＣ検査部１２は、通信ＩＦ１４が受信した受信電波データをもとにＣＲＣ符号を生成し、生成したＣＲＣ符号と受信したＣＲＣ符号に基づいてＣＲＣ検査（データ誤り検出）を行う。
【００２８】
ＤＳＰ１５は、ＲＦ信号処理部２０の電波の送信を制御する制御データを生成し、また、ＲＦ信号処理部２０から受信した受信電波データに基づいて物体の検出処理を行う。ＤＳＰ１５は、制御データを生成する生成部と物体検出を行う物体検出部とを含む。自己診断回路１６は、ＭＣＵ１０の起動時、ＭＣＵ１０内の各回路の自己診断処理を実行する。すなわち、自己診断回路１６は、各回路のフリップフロップを接続するスキャンパスに対しスキャンテストを行う。
【００２９】
ＲＦ信号処理部２０は、ＭＣＵ１０の制御に基づいて電波を送受信する。ＲＦ信号処理部２０は、ＣＲＣ付加部２１、ＣＲＣ検査部２２、通信ＩＦ２３、通信ＩＦ２４、ＲＦ部２５、ＲＦ部２６、Ａ／Ｄコンバータ２７を備えている。
【００３０】
通信ＩＦ２４は、制御データ受信用のインタフェースであり、ＭＣＵ１０から制御データ及びＣＲＣ符号を受信する。ＣＲＣ検査部２２は、通信ＩＦ２４が受信した制御データをもとにＣＲＣ符号を生成し、生成したＣＲＣ符号と受信したＣＲＣ符号に基づいてＣＲＣ検査を行う。ＲＦ部２５は、受信した制御データに応じてＲＦ信号を生成し、生成したＲＦ信号によって送信アンテナ３１から電波を送信する。
【００３１】
ＲＦ部２６は、受信アンテナ３２が受信した電波をもとにＲＦ信号を生成する。Ａ／Ｄコンバータ２７は受信したＲＦ信号をデジタル信号（受信電波データ）に変換する。ＣＲＣ付加部２１は、Ａ／Ｄコンバータ２７が生成した受信電波データをもとにＣＲＣ符号を生成し、生成したＣＲＣ符号を受信電波データに付加する。通信ＩＦ２３は、受信電波データ送信用のインタフェースであり、ＣＲＣ付加部２１からの受信電波データ及びＣＲＣ符号をＭＣＵ１０へ送信する。
【００３２】
車載用レーダーシステム１におけるレーダーの物体検出動作では、まず、受信アンテナ３２からの電波をＲＦ部２６で処理し、Ａ／Ｄコンバータ２７にて受信電波データに変換する。このときに、ＣＲＣ付加部２１は、受信電波データにＣＲＣ符号を付加して通信ＩＦ２３経由にてＭＣＵ１０へ受信電波データを送付する。ＣＲＣ符号が付加された受信電波データが、インタフェースを介して通信（転送）される。
【００３３】
ＭＣＵ１０側では、ＣＲＣ符号を検査するＣＲＣ検査部１２が、受信電波データの通信途中でデータの破損が無いことを確認する。通信の最初から最後に至るまでＣＲＣ符号にてデータが守られるために通信データの安全性が保障される。受信電波データ（レーダーデータ）の処理をＭＣＵ１０側で行い、次の電波照射のために制御データがＲＦ信号処理部２０へ送られる。この時、ＣＲＣ付加部１１は、送信データ（設定データ）にＣＲＣ符号を付加する。このデータを受け取るＲＦ信号処理部２０側でＣＲＣ符号の計算を行い、問題の無いデータであることが確認されたならば、設定情報を反映し、次の電波を照射する。
【００３４】
図４は、ＭＣＵ１０におけるＣＲＣ付加部１１の構成例を示している。なお、ＲＦ信号処理部２０におけるＣＲＣ付加部２１も同じ回路で構成可能である。
【００３５】
図４に示すように、ＣＲＣ付加部１１は、ＣＲＣ演算回路１００と付加回路１０１を備えている。ＣＲＣ演算回路１００は、予め設定された生成多項式を用いて、入力されるデータ（制御データ等）に対しＣＲＣ演算を行い、演算結果としてＣＲＣ符号を生成する。付加回路１０１は、入力されるデータに生成されたＣＲＣ符号を付加して出力する。
【００３６】
図５は、ＭＣＵ１０におけるＣＲＣ検査部１２の構成例を示している。なお、ＲＦ信号処理部２０におけるＣＲＣ検査部２２も同じ回路で構成可能である。
【００３７】
図５に示すように、ＣＲＣ検査部１２は、ＣＲＣ演算回路１００と比較回路１０２を備えている。ＣＲＣ演算回路１００は、図４のＣＲＣ付加部１１と同じ回路であり、予め設定された生成多項式を用いて、入力されるデータ（受信電波データ等）に対しＣＲＣ演算を行い、演算結果としてＣＲＣ符号を生成する。比較回路１０２は、生成されたＣＲＣ符号と、入力されたデータに付加されているＣＲＣ符号を比較し、一致または不一致をＣＲＣ検査結果として出力する。なお、ＣＲＣ検査が可能であれば、その他の構成であってもよい。例えば、ＣＲＣ符号を含むデータに対してＣＲＣ演算を行い、そのＣＲＣ演算結果を出力してもよい。
【００３８】
図６は、図４及び図５で示した、本実施の形態に係るＣＲＣ演算回路１００の主要な構成を示している。図６に示すように、ＣＲＣ演算回路１００は、主に、生成多項式レジスタ１１０と複数のＣＲＣ演算部１２０を備えている。生成多項式レジスタ（生成多項式記憶部）１１０は、生成多項式に対応した多項式データを記憶する。ＣＲＣ演算部１２０は、入力されるデータをビットシフトしつつ、生成多項式（多項式データ）を用いてＣＲＣ演算（排他的論理和）を行う。ＣＲＣ演算部１２０は、演算対象である入力データのビット数に対応して設けられ、直列に接続されている。
【００３９】
ＣＲＣ演算部１２０は、バレルシフタ１２１、ＸＯＲ（排他的論理和）回路１２２、マルチプレクサ１２３を備えている。バレルシフタ１２１は、入力データまたは前段のＣＲＣ演算部１２０の出力データを被演算データとして、被演算データを１ビットシフトする。例えば、下位ビット側へ１ビットシフト（右シフト）するが、上位ビット側へ１ビットシフト（左シフト）してもよい。バレルシフタ１２１は、入力ビット位置と出力ビット位置を切り替えることでビットシフトする論理回路である。
【００４０】
ＸＯＲ（排他的論理和）回路１２２は、バレルシフタ１２１がシフトしたシフトデータと生成多項式レジスタ１１０の多項式データとの排他的論理和演算を行う論理回路である。マルチプレクサ（選択回路）１２３は、バレルシフタ１２１がシフトしたシフトデータとＸＯＲ回路１２２が演算した演算結果データとのいずれかを、被演算データ（シフト前のデータ）に基づいて選択し出力する論理回路である。マルチプレクサ１２３は、被演算データの最下位ビットまたは最上位ビットに基づいて、シフトデータまたは演算結果データを選択してもよい。例えば、マルチプレクサ１２３は、被演算データの最下位ビットまたは最上位ビットが“１”である場合、演算結果データを選択し、被演算データの最下位ビットまたは最上位ビットが“０”である場合、シフトデータを選択してもよい。言い換えると、マルチプレクサ１２３は、被演算データのビットのうち、バレルシフタのシフト方向（右シフト方向または左シフト方向）端部のビット（例えば最下位ビットまたは最上位ビット）に基づいて、シフトデータまたは演算結果データを選択してもよく、シフト方向端部のビットが“１”である場合、演算結果データを選択し、シフト方向端部のビットが“０”である場合、シフトデータを選択してもよい。被演算データの最下位ビットまたは最上位ビットやシフト方向端部のビットに基づいて、ＸＯＲ演算を選択することで、ＣＲＣ演算を論理回路で実現することができる。
【００４１】
図７Ａ及び図７Ｂは、１バイト（８ビット）のデータのＣＲＣ演算を行うＣＲＣ演算回路１００の具体例を示している。図７Ａ及び図７Ｂの例では、ＣＲＣ演算部１２０は、生成多項式レジスタ１１０、８ビットに対応した８段のＣＲＣ演算部１２０−１〜１２０−８を備えている。
【００４２】
さらに、ＣＲＣ演算回路１００は、ビット反転（シフト及びリバース設定）レジスタ１３１、データレジスタ１３２、前データレジスタ（初期値または前値レジスタ）１３３、ＸＯＲ回路１３４を備えている。ＣＲＣ演算回路１００では、フリップフロップから構成されるレジスタ１１０、１３１〜１３３以外は、すべて組み合わせ論理回路で構成されている。
【００４３】
ビット反転レジスタ１３１は、生成多項式レジスタ１１０に格納される多項式データ、データレジスタ１３２に入力される入力データ、前データレジスタ１３３から出力される出力データのビット反転を設定する。なお、ビット反転とは、ＭＳＢ（Most Significant Bit：最上位ビット）側とＬＳＢ（Least Significant Bit：最下位ビット）側との間のビット順番を入れ替える（ビットスワップする）ことである。
【００４４】
ビット反転レジスタ１３１は、生成多項式及び出力データのデータ単位のビット反転の有無の設定、入力データのバイト単位のビット反転の有無の設定を格納する。例えば、ビット反転レジスタ１３１に格納されたビット反転の設定に応じて、各データのビットを反転させるビット反転回路を備えてもよい。ビット反転レジスタ１３１やビット反転回路がビット反転部を構成してもよい。
【００４５】
ビット反転レジスタ１３１（もしくはビット反転回路）は、生成多項式のビット反転が有りの場合、生成多項式レジスタ１１０の多項式データをデータ全体でビット反転させる。すなわち、多項式データのＭＳＢからＬＳＢまでのビット順序を反転する。例えば、図７Ｂでは、生成多項式が１６ビット幅で“0x8005”の場合、データ全体をビット反転し“0xA001”とする。また、生成多項式レジスタ１１０のデータ最大処理幅が６４ビットである場合、一度データ（６４ビット）をビット反転した後、実際に使用する１６ビット分をＬＳＢ側にシフトしてもよい。例えば、“0x0000000000008005”の全体を反転して“0xA001000000000000”とし、“0xA001”をＬＳＢ側へシフトして“0x000000000000A001”とする。この場合、未使用ビット（１６ビットより上位側のビット）は全部“０”としておくと処理に影響しない。
【００４６】
また、ビット反転レジスタ１３１（もしくはビット反転回路）は、入力データのビット反転が有りの場合、データレジスタ１３２の入力データをバイト単位でビット反転させる。すなわち、入力データをバイト単位に分割し、各バイト内でＭＳＢからＬＳＢまでのビット順序を反転する。バイト単位で反転することで、入力データのアドレズがずれることを防ぐことができる。
【００４７】
例えば、入力データが“0x12345678”の場合、１バイト目の“0x12”を反転して“0x48”とし、２バイト目の“0x34”を反転して“0x2C”とし、３バイト目の“0x56”を反転して“0x6A”とし、４バイト目の“0x78”を反転して“0x1E”とする。その結果、入力データ“0x12345678”をビット反転すると、“0x482C6A1E”となる。図７Ｂでは、ビット反転後の入力データを“0x31”とする。
【００４８】
図７Ｂに示すように、ＣＲＣ演算部１２０−１〜１２０−８は、データレジスタ１３２の入力データ“0x31”に対し、生成多項式レジスタ１１０の多項式データ“0xA001”を用いてＣＲＣ演算を行う。データレジスタ１３２とＣＲＣ演算部１２０−１との間に、前回の演算結果を加える（排他的論理和をとる）ためのＸＯＲ回路１３４が接続されている。図７Ｂでは、ＸＯＲ回路１３４は、入力データ“0x31”と前データレジスタ１３３の初期値“0x0000”をＸＯＲ演算し、演算したデータ“0x31”をＣＲＣ演算部１２０−１に出力する。
【００４９】
ＣＲＣ演算部１２０−１では、ＸＯＲ回路１３４から入力されたデータ“0x31”をバレルシフタ１２１−１が１ビット右へシフトし、シフトされたデータ“0x18”を生成する。マルチプレクサ１２３−１は、入力されたデータ“0x31”のＬＳＢが“1”であるため、ＸＯＲ回路１２２−１の出力を選択する。すなわち、ＸＯＲ回路１２２−１は、多項式データ“0xA001”とシフトされたデータ“0x18”をＸＯＲ演算し、マルチプレクサ１２３−１は、演算されたデータ“0xA019”をＣＲＣ演算部１２０−２に出力する。
【００５０】
ＣＲＣ演算部１２０−２では、ＣＲＣ演算部１２０−１から入力されたデータ“0xA019”をバレルシフタ１２１−２が１ビット右へシフトし、シフトされたデータ“0x500C”を生成する。マルチプレクサ１２３−２は、入力されたデータ“0xA019”のＬＳＢが“1”であるため、ＸＯＲ回路１２２−２の出力を選択する。すなわち、ＸＯＲ回路１２２−２は、多項式データ“0xA001”とシフトされたデータ“0x500C”をＸＯＲ演算し、
マルチプレクサ１２３−２は、演算されデータ“0xF00D”をＣＲＣ演算部１２０−３に出力する。
【００５１】
ＣＲＣ演算部１２０−３では、ＣＲＣ演算部１２０−２から入力されたデータ“0xF00D”をバレルシフタ１２１−３が１ビット右へシフトし、シフトされたデータ“0x7806”を生成する。マルチプレクサ１２３−３は、入力されたデータ“0xF00D”のＬＳＢが“1”であるため、ＸＯＲ回路１２２−３の出力を選択する。すなわち、ＸＯＲ回路１２２−３は、多項式データ“0xA001”とシフトされたデータ“0x7806”をＸＯＲ演算し、マルチプレクサ１２３−３は、演算されたデータ“0xD807”をＣＲＣ演算部１２０−４に出力する。
【００５２】
ＣＲＣ演算部１２０−４では、ＣＲＣ演算部１２０−３から入力されたデータ“0xD807”をバレルシフタ１２１−４が１ビット右へシフトし、シフトされたデータ“0x6C03”を生成する。マルチプレクサ１２３−４は、入力されたデータ“0xD807”のＬＳＢが“1”であるため、ＸＯＲ回路１２２−４の出力を選択する。すなわち、ＸＯＲ回路１２２−４は、多項式データ“0xA001”とシフトされたデータ“0x6C03”をＸＯＲ演算し、マルチプレクサ１２３−４は、演算されデータ“0xCC02”をＣＲＣ演算部１２０−５に出力する。
【００５３】
図７Ａに示すように、ＣＲＣ演算部１２０−５では、ＣＲＣ演算部１２０−４から入力されたデータ“0xCC02”をバレルシフタ１２１−５が１ビット右へシフトし、シフトされたデータ“0x6601”を生成する。マルチプレクサ１２３−５は、入力されたデータ“0xCC02”のＬＳＢが“0”であるため、ＸＯＲ回路１２２−５の出力を選択しない（バレルシフタ１２１−５の出力を選択する）。すなわち、マルチプレクサ１２３−５は、シフトされたデータ“0x6601”をＣＲＣ演算部１２０−６に出力する。
【００５４】
ＣＲＣ演算部１２０−６では、ＣＲＣ演算部１２０−５から入力されたデータ“0x6601”をバレルシフタ１２１−６が１ビット右へシフトし、シフトされたデータ“0x3300”を生成する。マルチプレクサ１２３−６は、入力されたデータ“0x6601”のＬＳＢが“1”であるため、ＸＯＲ回路１２２−６の出力を選択する。すなわち、ＸＯＲ回路１２２−６は、多項式データ“0xA001”とシフトされたデータ“0x3300”をＸＯＲ演算し、マルチプレクサ１２３−６は、演算されたデータ“0x9301”をＣＲＣ演算部１２０−７に出力する。
【００５５】
ＣＲＣ演算部１２０−７では、ＣＲＣ演算部１２０−６から入力されたデータ“0x9301”をバレルシフタ１２１−７が１ビット右へシフトし、シフトされたデータ“0x4980”を生成する。マルチプレクサ１２３−７は、入力されたデータ“0x9301”のＬＳＢが“1”であるため、ＸＯＲ回路１２２−７の出力を選択する。すなわち、ＸＯＲ回路１２２−７は、多項式データ“0xA001”とシフトされたデータ“0x4980”をＸＯＲ演算し、マルチプレクサ１２３−７は、演算されたデータ“0xE981”をＣＲＣ演算部１２０−８に出力する。
【００５６】
ＣＲＣ演算部１２０−８では、ＣＲＣ演算部１２０−７から入力されたデータ“0xE981”をバレルシフタ１２１−８が１ビット右へシフトし、シフトされたデータ“0x74C0”を生成する。マルチプレクサ１２３−８は、入力されたデータ“0xE981”のＬＳＢが“1”であるため、ＸＯＲ回路１２２−８の出力を選択する。すなわち、ＸＯＲ回路１２２０８は、多項式データ“0xA001”とシフトされたデータ“0x74C0”をＸＯＲ演算し、マルチプレクサ１２３−８は、演算されたデータ“0xD4C1”を前データレジスタ１３３に出力する。
【００５７】
以上のＣＲＣ演算部１２０−１〜１２０−８の動作によりＣＲＣ演算が終了した場合、図７Ｂに示すように、前データレジスタ１３３のデータ“0xD4C1”を出力データとして出力する。出力する際に、ビット反転レジスタ１３１の設定に応じて、生成多項式と同様にビット反転を行う。
【００５８】
ＣＲＣ演算の対象となる入力データが１バイト（８ビット）単位で入力され、８段のＣＲＣ演算部１２０−１〜１２０−８により、入力データの単位に合わせて演算処理を行うことができる。演算対象のデータが１バイト（８ビット）の場合、ＣＲＣ演算部１２０−１〜１２０−８の処理を１回実行して演算を終了し、データが２バイト（１６ビット：１ワード）の場合、ＣＲＣ演算部１２０−１〜１２０−８の処理を２回実行して演算を終了し、データが４バイト（３２ビット：１ロングワード）の場合、ＣＲＣ演算部１２０−１〜１２０−８の処理を４回実行して演算を終了する。データのサイズに合わせて繰り返し演算を実行することで、８段のＣＲＣ演算部１２０−１〜１２０−８により、様々なサイズのデータに対し演算処理を行うことができる。
【００５９】
図６、図７Ａ及び図７Ｂのように、本実施の形態では、各ＣＲＣ演算部において入力されるデータ（前段の演算結果）を元に、生成多項式（ＰＯＬＹ）とのＸＯＲ論理演算を選択できるようにマルチプレクサを構成する。ＣＲＣ符号の計算アルゴリズムには左シフト方式と右シフト方式が存在するが、同一回路にて計算を実現するため、入力データおよび生成多項式の多項式データに対するビット反転設定を行うことで、マルチプレクサ及びＸＯＲ回路部分（ＣＲＣ演算部）の構成を共用可能とする。
【００６０】
本実施の形態の構成では、関連するルックアップテーブル方式におけるフリップフロップ部分を、組み合わせ回路で構成することができる。このため、生成多項式の切り替え自体は１サイクルで実施可能となる。本実施の形態では、フリップフロップの使用数は、入力データ幅（８ビット）、多項式データ幅（６４ビット）、一部設定のデータ幅で必要な数となり、これらのフリップフロップのみで最終的なデータが出力される構成となる。
【００６１】
一方、ルックアップテーブル方式では中間データを保持するフリップフロップの個数が出力データに関連する構成となる。ルックアップテーブル方式のように、多数のフリップフロップにてデータが出力される構成では、乱数を用いたＳＣＡＮテストにおける最終出力が所望の組合せとなるまでの確率が非常に小さくなるため、故障を検出し難い構成となる。本実施の形態では、少数のフリップフロップのみの構成となるため、ＳＣＡＮテストにおける故障検出が容易な構成となる。例えば、一般的な自動車向け半導体で用いられるスタートアップ診断では、短い時間に高い検出率が要求されるため、故障検出容易な本実施の形態の構成は車載向けの製品に適した構成となる。
【００６２】
以上のように、本実施の形態では、各ＣＲＣ演算部において、入力されるデータ（前段の演算結果）をシフトするバレルシフタと、入力されるデータに基づいて、シフトデータと多項式データとのＸＯＲ論理演算を選択可能とすることで、簡易な構成で多種の生成多項式に対応することができる。関連するルックアップテーブル方式のようにデータ格納部を持つことが無く、データ格納部と同等の機能を論理演算のみで実現することが可能となる。このため、ＣＲＣ符号の出力に影響を及ぼすフリップフロップの数を少なくすることができる。したがって、汎用的かつ故障検出容易な構成となり、車載向けのＣＲＣ演算に適した構成となる。また、多項式を変更する場合に、ルックアップテーブルの変更が不要であり、高速に生成多項式を切り替えることができる。さらに、フリップフロップが少ない構成となるため、回路面積の増加を抑えることもできる。
【００６３】
（実施の形態２）
以下、図面を参照して実施の形態２について説明する。図８は、本実施の形態に係る制御ユニットの構成例を示している。この例は、複数の通信インタフェースを有する制御ユニット（通信システム）に実施の形態のＣＲＣ演算回路を応用した例である。
【００６４】
図８に示すように、本実施の形態に係る制御ユニット２００は、例えば車載用の制御ユニットであり、実施の形態１のＣＲＣ演算回路１００、ＣＡＮ−ＦＤインタフェース２０１、ＳＰＩインタフェース２０２、ＵＡＲＴインタフェース２０３、ＲＡＭ２０４を備えている。ＣＡＮ−ＦＤインタフェース２０１は、ＣＡＮ−ＦＤネットワークを介して上位システムに接続され、ＳＰＩインタフェース２０２は、ＳＰＩバスを介して下位システムに接続され、ＵＡＲＴインタフェース２０３は、ＵＡＲＴシリアルバスを介して下位システムに接続されている。
【００６５】
ＣＲＣ演算回路１００では、実施の形態１で説明したように、生成多項式の切り替えに要するサイクルが１サイクルとなるため、高速な切り替えが可能である。この特徴を利用することで、本実施の形態では、次のような動作及び効果を実現することが可能である。
【００６６】
ここでは、上位システム（ＣＡＮ−ＦＤ側）から送信される情報を下位システムへ転送するシステムを考え、上位システムからの情報は比較的大きなデータ量であるとする。ＣＲＣ符号の生成多項式は、長大なデータに対しては大きなビット数の生成多項式を用いることが一般的である。また、想定されるデータの破損に対応した効率の良い生成多項式が各インタフェースに応じて決められている。このため、データ量および通信ＩＦの特長に応じて生成多項式は変わってくる。
【００６７】
例えば、ＣＲＣ演算回路１００は、上位システム側からの長大なデータに対しては大きなビット数の生成多項式を用いてＣＲＣ演算を実施し、演算結果をＲＡＭ２０４に格納する。ＣＲＣ演算回路１００は、ＲＡＭ２０４のデータを下位システム側への転送に使用する場合、小さなビット数の生成多項式を用いてＣＲＣ演算を実施し通信を行う。このように、本実施の形態では、高速に多項式を切り替えることが可能であるため、データ量やインタフェースに応じて多項式を切り替えることで、１つの演算モジュールにて複数の通信に対応した演算を高速に実施することが可能となる。
【００６８】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【００６９】
１      車載用レーダーシステム
１０    ＭＣＵ
１１    ＣＲＣ付加部
１２    ＣＲＣ検査部
１３、１４    通信ＩＦ
１５    ＤＳＰ
１６    自己診断回路
２０    ＲＦ信号処理部
２１    ＣＲＣ付加部
２２    ＣＲＣ検査部
２３、２４  通信ＩＦ
２５、２６  ＲＦ部
２７    Ａ／Ｄコンバータ
３１    送信アンテナ
３２    受信アンテナ
１００  ＣＲＣ演算回路
１０１  付加回路
１０２  比較回路
１１０  生成多項式レジスタ
１２０  ＣＲＣ演算部
１２１  バレルシフタ
１２２  ＸＯＲ回路
１２３  マルチプレクサ
１３１  ビット反転レジスタ
１３２  データレジスタ
１３３  前データレジスタ
１３４  ＸＯＲ回路
２００  制御ユニット
２０１  ＣＡＮ−ＦＤインタフェース
２０２  ＳＰＩインタフェース
２０３  ＵＡＲＴインタフェース
【図１】
2018023000.tif 000003
【図２】
2018023000.tif 000004
【図３】
2018023000.tif 000005
【図４】
2018023000.tif 000006
【図５】
2018023000.tif 000007
【図６】
2018023000.tif 000008
【図７Ａ】
2018023000.tif 000009
【図７Ｂ】
2018023000.tif 000010
【図８】
2018023000.tif 000011