TEL:086-227-0113
info@gopher-tec.jp
TOP page 製品情報 FPGAソース CRC-5-USB Gen & Chk
CRC-5-USB Generator & Checker

USB2.0/1.1のトークンパケットで使用されるCRC-5-USBを、パラレルデータから生成・チェックする
サンプルコードです。

USBにおけるCRC5の計算対象は、トークンパケットのパケットIDに続く7ビットのファンクションアドレス
と4ビットのエンドポイントフィールドの合計11ビットだけです。送信側では、この11ビットに対して5
ビットのCRCを付加し、合計16ビットとして送出します。受信側では、同パケットIDに続く16ビット
データに対してCRCを再計算し、データの正当性をチェックします。

このCRCに関する生成多項式等の情報は次の通りで、本来であれば、これに従ってシリアルビット列から
LFSRを作ればほぼ完成ですが、本サンプルではシリアルデータからではなく、パラレルデータから
1クロックでCRCを生成、チェックする構成としています。CRCを生成するモジュールでは、11ビットの
パラレルデータを与えれば、次のクロックでCRCが生成されます。またチェックするモジュールでは、
CRC込みの16ビットのパラレルデータを与えれば、次のクロックでLFSRが確定し、CRCの判定結果
が分かります。
CRC-5-USB
Parameter  Description 
生成多項式 G(X)=X5+X2+1
LFSR初期値 0x1F
入出力順序 入力はLSBファーストで、D[10:0]のD[0]から入力
(つまり出力もLFSRをビットリバースする)
LFSRインバート インバートする。
CRC正常時のLFSR値 0x0C

簡単に使い方の分かるSIMトップファイルをオマケとして付けていますので、合わせて参照して下さい。


CRC5_USB_Gen モジュール:
Port I/O  Description 
CLK in クロック入力です。本モジュールはこの信号の立ち上がりエッジで動作します。
本サンプルコードにおけるCRCの生成とチェックは、パラレルデータに対して行うため、
本クロックは必ずしもUSBのビットクロックである必要はありません。
RST in 非同期リセット入力です。パワーオン時、またはシステムリセット時にアサートして
下さい。
INIT_LFSR in LFSRを初期値に戻すためのコントロール信号です。
フレーム開始の都度、1クロックだけアサートし、LFSRを初期化して下さい。
CALC_CRC in CRCを計算するためのコントロール信号です。
PDIN[10:0]にCRC計算対象が揃った時点で、1クロックだけアサートして下さい。
その次のクロックでLFSRとCRCが確定します。
PDIN[10:0] in CRCの計算対象となるパラレルデータです。
PDIN[10:4]がファンクションアドレス、同[3:0]がエンドポイントフィールドの想定です。
CRC[4:0] out CRC出力です。シリアライズする際、CRC[0]から送出して下さい。
CRC5_USB_Chk モジュール:
Port I/O  Description 
CLK in CRC5_USB_Genモジュールと同様です。
RST in CRC5_USB_Genモジュールと同様です。
INIT_LFSR in CRC5_USB_Genモジュールと同様です。
CALC_CRC in LFSR(CRC)を再計算するためのコントロール信号です。
PDIN[15:0]にCRC計算対象が揃った時点で、CALC_CRCを1クロックだけアサート
して下さい。その次のクロックでLFSRが確定します。
PDIN[15:0] in LFSR(CRC)の再計算対象となるパラレルデータです。
PDIN[15:9]がファンクションアドレス、同[8:5]がエンドポイントフィールド、同[4:0]
がCRCです。
CRC_CHK_TIM in 現在のLFSR値でCRCの正誤判定をするためのストローブ信号です。
CALC_CRCアサート以後、INIT_LFSRまたはCALC_CRCをアサートするまでの任意の
タイミングでアサート可能です。CRCが正しければ、その次のクロックでCRC_OKが
アサートされます。
CRC_OK out CRC_CHK_TIMをアサートした次のクロックで、本信号がアサートされればCRC正常、
ネゲートされればCRC異常と分かります。
※特に注記のない限り、信号は全て正論理です。
本ソースコードはVerilog版のみとなっております。
詳細は下記の資料ダウンロードをクリックください。
ソースコード自体は当社WEBストアにて販売しております。

CRC-5-USB Gen & Chk
資料ダウンロード