- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi
I want to translate KBA220252, please confirm to my work.
Regards,
Nino
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi, Nino-san
Confirm to work this KBA.
Thanks,
Jenna
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
CY15x104QSx F-RAM™へのCRC実装 – KBA220252
ChaitanyaV_61が 2019/06/25 22:26 に作成。ChaitanyaV_61が 2019/06/25 22:31 に変更。
Version: **
質問:
CY15x104QSx F-RAMにどうやってCRCを実装しますか?
回答:
サイプレスCY15x104QSx FRAMは2タイプのCRC動作をサポートします:
- データCRC: ユーザー定義されたメモリーブロック上でのCRC計算
- バスCRC: リアルタイムでSPIバス処理上でのCRC計算
データCRC: ユーザー定義されたメモリーブロック上でのCRC計算
CY15x104QSx F-RAMデバイスはチップ内のユーザー定義されたメモリーブロック上のCRCを計算することができます。メモリーブロックの開始アドレスと終了アドレスを特定でき、CRC計算は“CRC計算(CRCC、5Bh)”命令を使用して実行される必要があります。計算されたCRC値はCRCレジスタ(CRCR)に保存されます。いずれの読み出しレジスタ(RDAR、65H)コマンドも、CRCRから計算されたCRC値を読み出すために使用する事ができます。CRCアルゴリズムは、CRC[31:0]に割り当てられる{data[7:0],
data[15:8], data[23:16], data[31:24]} の順でデータを受信する32-ビットの多項式(CRC-32C)を使用します。32-ビット多項式(0x1EDC6F41)は下記の様に表されます:
X^32 + (X^28+X^27+X^26+X^25+X^23+X^22+X^20+X^19+X^18+X^14+X^13+X^11+X^10+X^9+X^8+X^6+1)
下記の点は、ユーザー定義されたメモリーブロックでCRCを計算している間、考慮に入れる必要があります。
- 最終アドレス(EA)は、開始アドレス(SA)よりも高い少なくとも1つの32-ビットアラインドワード(2つの最下位アドレスビットA[1:0]は[00]に設定する必要があります)にする必要があります。EA < SA + 4の場合、CRC計算は中断され、デバイスはスタンバイモードに戻ります。EA < SA + 4の場合、CRCレジスタは不確定データを保持します。
- CRCレジスタ(CRCR)ビットは、CRC計算が開始される毎にすべて1に初期化されます。POR、リセットまたはDPDモードの終了もまたCRCレジスタ値をすべて1にリセットします。
CRC計算が実行中の間、ステータスレジスタ(SR[0])のWIP(Work In Progress)ビットは‘1’に設定されます。CRC計算動作が完了すると、WIPビットは‘0’に設定されます。このビットはCRC動作の完了状態を確認するために使用できます。
CY15x104QSxデバイスはCRC中断動作をサポートします。CRC中断(EPCS、75h)命令は、メモリーにアクセスするためのメモリー読み出しコマンドを許可する実行中のCRC動作を中断するために使用する事ができます。CRC Resume(EPCR、7Ah)コマンドは、EPCSコマンドで中断したCRC動作を再開します。
バスCRC: バスリアルタイムでSPIバス処理上でのCRC計算
CY15x104QSxデバイスは、CRC-32C多項式を使用してコマンドエントリ、アドレスエントリ、モードビット、データ-入力、およびデータ-出力を含む全てのSPI処理毎にCRCを計算します。バスCRCは、データバスがドントケアになり、かつ動作中にCY15x104QSxまたはホストのどちらかによるドライブされないダミーバイトでは計算されません。CRC-32C多項式(0x1EDC6F41)は下記の様に表されます:
X^32 + (X^28+X^27+X^26+X^25+X^23+X^22+X^20+X^19+X^18+X^14+X^13+X^11+X^10+X^9+X^8+X^6+1)
計算されたバスCRC値は、バスCRC(BCRC)レジスタに格納され、読み出しバスCRCレジスタ(RBCRC、64h)コマンドを使用して読み出されます。BCRCレジスタは、RBCRC処理が完了するとすぐに0xFFFFFFFFにクリアされます。モードレジスタ(MR[7])のBCRC_DISビットはCY15x104QSxのバスCRC機能を有効化または無効化にします。BCRC_DISビットが‘1’に設定されると、バスCRCは無効になります; BCRC_DISビットが‘0’に設定されると、バスCRCは有効になります。バスCRCが無効になった場合、BCRCレジスタを読み出すと、不定値が戻されます。バスCRCが有効になった場合、RBCRCコマンドは、継続する前に初期状態に戻るためにCRC計算をリセットするために発行するがあります。
チップセレクトがLOWにアサートされ、バスCRCが有効でCY15x104QSxがアクティブな場合、CRC計算のためにSPIバス上の全ての処理(入力および/または出力)を取り込みます。アクセス中に有効になっているSPIモード ‐ シングルSPI、デュアルSPI(SPI)、またはクアッドSPI(QSPI) により、各々のクロックサイクルのサンプルされた1/2/4データビットは、CRCチェックサムを計算し、かつBCRCレジスタに結果を格納するCRC生成器にクロックされます。SPI動作が、CS#信号をデアサートすることにより途中で中断された場合、それまで転送されたデータは、CRC計算のためにCRC生成器にクロックされます。
バスCRC値は下記の条件で0xFFFFFFFFhにリセットされます。
- Power on reset (POR)
- Hardware reset
- Software reset
- RBCRC command
- Exit from Deep power down mode
- Exit from Hibernate mode
CY15x104QSxの両者これらのCRC機能は、アプリケーションで高いレベルのデータ整合性を保証します。
846 閲覧 カテゴリ: Other
タグ: wireless, serial, spi, reliability, crc, proc, wireless usb, cy15x104qsx, cycling redundancy check, data integrity, integrity, polynomial, bus crc, user defined memory