Altera® SOPC Builder の DDR (1/2/3) SDRAM コントローラーを使用すると、データ破損が発生する可能性があります。 これは、SDRAM コントローラーと SOPC Builder バースト・アダプターが SDRAM コントローラーのスレーブ・ポートをシーケンシャル・バースト・マスター・ポートに適応させなかった場合に使用されるバーストライン・ストランプレーションが原因です。 スレーブポートのバースト境界は、次の式を使用して決定できます。
スレーブ・バースト境界サイズ [bytes] = スレーブ・データ幅 [bytes] * スレーブ最大バースト長 [beats]
例えば、X16 バースト長の 4 デバイスに DDR SDRAM コントローラーを使用する場合、バースト境界サイズは 8 バイトです。 その結果、シーケンシャル・バースト・マスターが 8 バイトの境界で起動せずにメモリーへのバースト読み取りまたは書き込みトランザクションを開始すると、データ破損が生じます。 マスターがこのメモリーのバイトアドレス 4 に 2 ビート・バースト・トランザクションを投稿すると、最初のビートの間に 4~7 バイト、2 番目のビートでバイト 0 から 3 にアクセスします (アドレス 8 から 11 ではなく)。
このデータ破損を回避するには、以下を使用してください。
- 上記の式を使用して、スレーブポートのバースト境界への転送を常に整列させます。
- マスター・バーストの次の境界に到達するまで、1 ビートのバーストをポストするようにマスターを構築します。
- 高性能 DDR SDRAM コントローラーの場合、マスターまたはスレーブのバーストサポートを無効にします。また、ハーフレート・モードを使用してバーストサポートを回避することもできます。