2 Replies Latest reply on Aug 26, 2020 7:34 PM by keni_4440091

    Community Translation - CRC Implementation in CY15x104QSx F-RAM™ – KBA220252

    keni_4440091

      Hi

       

      I want to translate KBA220252, please confirm to my work.

       

      Regards,

      Nino

        • 1. Re: Community Translation - CRC Implementation in CY15x104QSx F-RAM™ – KBA220252
          JuyoungJ_06

          Hi, Nino-san

          Confirm to work this KBA.

           

          Thanks,

          Jenna

          • 2. Re: Community Translation - CRC Implementation in CY15x104QSx F-RAM™ – KBA220252
            keni_4440091

            CY15x104QSx F-RAM™へのCRC実装 – KBA220252

             

            バージョン 2

             

            ChaitanyaV_61 2019/06/25 22:26 に作成。ChaitanyaV_61 2019/06/25 22:31 に変更。

             

            Version: **

             

            質問:

            CY15x104QSx F-RAMにどうやってCRCを実装しますか?

             

            回答:

            サイプレスCY15x104QSx FRAM2タイプのCRC動作をサポートします:

            1. データCRC: ユーザー定義されたメモリーブロック上でのCRC計算
            2. バスCRC: リアルタイムでSPIバス処理上でのCRC計算

             

            データCRC: ユーザー定義されたメモリーブロック上でのCRC計算

             

            CY15x104QSx F-RAMデバイスはチップ内のユーザー定義されたメモリーブロック上のCRCを計算することができます。メモリーブロックの開始アドレスと終了アドレスを特定でき、CRC計算は“CRC計算(CRCC5Bh)”命令を使用して実行される必要があります。計算されたCRC値はCRCレジスタ(CRCR)に保存されます。いずれの読み出しレジスタ(RDAR65H)コマンドも、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])のWIPWork In Progress)ビットは‘1’に設定されます。CRC計算動作が完了すると、WIPビットは‘0’に設定されます。このビットはCRC動作の完了状態を確認するために使用できます。

             

            CY15x104QSxデバイスはCRC中断動作をサポートします。CRC中断(EPCS75h)命令は、メモリーにアクセスするためのメモリー読み出しコマンドを許可する実行中のCRC動作を中断するために使用する事ができます。CRC ResumeEPCR7Ah)コマンドは、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値は、バスCRCBCRC)レジスタに格納され、読み出しバスCRCレジスタ(RBCRC64h)コマンドを使用して読み出されます。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、デュアルSPISPI)、またはクアッドSPIQSPI) により、各々のクロックサイクルのサンプルされた1/2/4データビットは、CRCチェックサムを計算し、かつBCRCレジスタに結果を格納するCRC生成器にクロックされます。SPI動作が、CS#信号をデアサートすることにより途中で中断された場合、それまで転送されたデータは、CRC計算のためにCRC生成器にクロックされます。

             

            バスCRC値は下記の条件で0xFFFFFFFFhにリセットされます。

            1. Power on reset (POR)
            2. Hardware reset
            3. Software reset
            4. RBCRC command
            5. Exit from Deep power down mode
            6. 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