エンベデッド・ペリフェラルIPユーザーガイド

ID 683130
日付 9/21/2020
Public
ドキュメント目次
1. 概要 2. Avalon® -ST Multi-Channel Shared Memory FIFOコア 3. Avalon® -STシングルクロックFIFOコアおよびデュアルクロックFIFOコア 4. Avalon® -STシリアル・ペリフェラル・インターフェイス・コア 5. SPIコア 6. SPI Slave to Avalon® Master Bridgeコア/JTAG to Avalon® Master Bridgeコア 7. インテル eSPIスレーブコア 8. eSPI to LPCブリッジコア 9. イーサネットMDIOコア 10. インテルFPGA 16550互換UARTコア 11. UARTコア 12. JTAG UARTコア 13. インテル FPGA Avalon® Mailboxコア 14. インテル FPGA Avalon® ミューテックス・コア 15. インテル FPGA Avalon® I2C (Master) コア 16. インテル FPGA I2C Slave to Avalon® -MM Master Bridgeコア 17. インテルFPGA Avalon® コンパクト・フラッシュ・コア 18. EPCS/EPCQAシリアル・フラッシュ・コントローラー・コア 19. インテルFPGAシリアル・フラッシュ・コントローラー・コア 20. インテルFPGAシリアル・フラッシュ・コントローラーIIコア 21. インテルFPGA汎用クアッドSPIコントローラー・コア 22. インテルFPGA汎用クアッドSPIコントローラーIIコア 23. インターバル・タイマー・コア 24. インテルFPGA Avalon FIFOメモリーコア 25. オンチップメモリー (RAMおよびROM) コア 26. Optrex 16207 LCDコントローラー・コア 27. PIOコア 28. PLLコア 29. DMAコントローラー・コア 30. Modular Scatter-Gather DMAコア 31. Scatter-Gather DMAコントローラー・コア 32. SDRAMコントローラー・コア 33. トライステートSDRAMコア 34. Video Sync GeneratorコアとPixel Converterコア 35. インテル FPGA Interrupt Latency Counterコア 36. パフォーマンス・カウンター・ユニット・コア 37. ベクトル割り込みコントローラー・コア 38. Avalon® -STデータ・パターン・ジェネレーター・コアとデータ・パターン・チェッカー・コア 39. Avalon® -STテスト・パターン・ジェネレーター・コアとテスト・パターン・チェッカー・コア 40. システムIDペリフェラル・コア 41. Avalon® Packets to Transactions Converterコア 42. Avalon® -STマルチプレクサー・コアとデマルチプレクサー・コア 43. Avalon® -ST Bytes to Packets ConverterコアとPackets to Bytes Converterコア 44. Avalon® -ST Delayコア 45. Avalon® -STラウンド・ロビン・スケジューラー・コア 46. Avalon® -ST Splitterコア 47. Avalon® -MM DDR Memory Half Rate Bridgeコア 48. インテル FPGA GMII to RGMIIコンバーター・コア 49. インテル FPGA MII to RMIIコンバーター・コア 50. インテルFPGA HPS GMII to TSE 1000BASE-X/SGMII PCSブリッジコア 51. インテル FPGA HPS EMAC to Multi-rate PHY GMIIアダプターコア 52. インテル FPGA MSI to GICジェネレーター・コア

29.4.3. レジスターマップ

HAL APIを使用しているプログラマーは、レジスターを介してDMAコントローラーのハードウェアに直接アクセスすることはありません。レジスターマップは通常、デバイスドライバーを作成するプログラマーにのみ有用です。

インテルで提供しているHALデバイスドライバーは、デバイスのレジスターに直接アクセスします。デバイスドライバーを作成しており、HALドライバーが同じデバイスに対してアクティブな場合は、ドライバーが競合し、作成したドライバーは正しく動作しません。

デバイスドライバーは、5つのメモリーマッピングされた32ビット・レジスターを介してハードウェアを制御し、ハードウェアと通信します。

表 282.  DMAコントローラーのレジスターマップ
オフセット レジスター名 読み出し/書き込み 31 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 status (1) RW (2)   LEN WEOP REOP BUSY DONE
1 readaddress RW 読み出しマスターの開始アドレス
2 writeaddress RW 書き込みマスターの開始アドレス
3 length RW DMAトランザクション長 (バイト単位)
4 予約済み (3)
5 予約済み (3)
6 control RW (2) SOFTWARERESET QUADWORD DOUBLEWORD WCON RCON LEEN WEEN REEN I_EN GO WORD HW BYTE
7 予約済み (3)
注意
  1. status レジスターに0を書き込むと、LENWEOPREOPDONEビットがクリアされます。
  2. これらのビットは予約されています。読み出し値は未定義です。0を書き込みます。
  3. このレジスターは予約されています。読み出し値は未定義です。書き込みの結果は未定義です。

statusレジスター

statusレジスターは、DMAコントローラー内の状態を示す個々のビットで構成されます。statusレジスターはいつでも読み取ることができます。statusレジスターの読み出しで、レジスターの値は変化しません。

表 283.  statusレジスターのビット
ビット番号 ビット名 読み出し/書き込み/クリア 説明
0 DONE R/C DMAトランザクションが完了しています。End of Packet条件が検出される、もしくは指定されているトランザクション長が完了すると、DONEビットが1に設定されます。statusレジスターに0を書き込み、DONEビットをクリアします。
1 BUSY R DMAトランザクションが進行中の場合、BUSYビットは1になります。
2 REOP R 読み出し側のEnd-of-Packetイベントによりトランザクションが完了すると、REOPビットが1になります。
3 WEOP R 書き込み側のEnd-of-Packetイベントによりトランザクションが完了すると、WEOPビットが1になります。
4 LEN R Lengthレジスターが0になると、LENビットが1に設定されます。

readaddressレジスター

readaddressレジスターは、DMAトランザクションで読み出される最初の位置を指定します。readaddressレジスターの幅はシステム生成時に決定します。幅は、読み出しポートがマスターとなるすべてのスレーブポートの全範囲に対応するのに十分な広さです。

writeaddressレジスター

writeaddressレジスターは、DMAトランザクションで書き込まれる最初の位置を指定します。writeaddressレジスターの幅はシステム生成時に決定します。幅は、書き込みポートがマスターとなるすべてのスレーブポートの全範囲に対応するのに十分な広さです。

lengthレジスター

lengthレジスターは、読み出しポートから書き込みポートに転送されるバイト数を指定します。lengthレジスターはバイト単位で指定します。例えば、ワード転送の場合は値を4の倍数にし、ハーフワード転送の場合は2の倍数にする必要があります。

lengthレジスターは、各データ値が書き込みマスターポートによって書き込まれるとデクリメントします。lengthが0に達すると、LENビットが設定されます。lengthレジスターは0より下にデクリメントしません。

lengthレジスターの幅はシステム生成時に決定します。幅は、少なくとも読み出しまたは書き込みマスターポートがマスターとなる任意のスレーブポートの広がりに十分な幅で、必要に応じてさらに広げることができます。

controlレジスター

controlレジスターは、DMAの内部動作を制御する個々のビットで構成されます。controlレジスターの値はいつでも読み取ることができます。controlレジスターのビットは、トランザクションの終了および割り込み要求をもたらすDMAトランザクションの条件を決定します。

表 284.  Controlレジスターのビット
ビット番号 ビット名 読み出し/書き込み/クリア 説明
0 BYTE RW バイト転送を指定します。
1 HW RW ハーフワード (16ビット) 転送を指定します。
2 WORD RW ワード (32ビット) 転送を指定します。
3 GO RW DMAトランザクションを有効にします。アイドル段階 (実行開始前) にGOビットが0に設定されると、DMAで転送を実行することはできません。アイドル段階にGOビットが1に設定され、Lengthレジスターが0以外の場合は、転送が発生します。

書き込みトランザクションが完了する前にGOビットがLowにデアサートされた場合、DONEビットがHighになることはありません。GOビットは、アイドル (実行が発生していない) 段階にのみ変更することが推奨されます。

4 I_EN RW 割り込み要求 (IRQ) を有効にします。I_ENビットが1の場合にステータスレジスターのDONEビットが1に設定されると、DMAコントローラーはIRQを生成します。I_ENビットが0の場合はIRQが無効になっています。
5 REEN RW 読み出し側のEnd-of-Packetでトランザクションを終了します。REENビットが1に設定されている場合、読み出し側のフロー制御を備えるスレーブポートでは、End-of-Packet信号をアサートしてDMAトランザクションを終了することが可能です。REENビットは0に設定する必要があります。
6 WEEN RW 書き込み側のEnd-of-Packetでトランザクションを終了します。WEENビットは0に設定する必要があります。
7 LEEN RW lengthレジスターが0に達すると、トランザクションを終了します。このビットが0の場合、lengthが0に到達してもトランザクションは終了しません。その場合、DMAトランザクションは読み出しまたは書き込みマスターポートからのEnd-of-Packet信号で終了する必要があります。LEENビットは1に設定する必要があります。
8 RCON RW 定数のアドレスから読み出します。RCONが0の場合、読み出しアドレスはデータ転送のたびにインクリメントします。これは、DMAコントローラーで一連のメモリーアドレスを読み出すメカニズムです。RCONが1の場合、読み出しアドレスはインクリメントしません。これは、DMAコントローラーでペリフェラルから一定のメモリーアドレスで読み出すメカニズムです。詳細は、アドレス指定とアドレス・インクリメントのセクションを参照してください。
9 WCON RW 定数のアドレスに書き込みます。RCONビットと同様に、WCONが0の場合、書き込みアドレスはデータ転送のたびにインクリメントします。WCONが1の場合、書き込みアドレスはインクリメントしません。詳細は、アドレス指定とアドレス・インクリメントを参照してください。
10 DOUBLEWORD RW ダブルワード転送を指定します。
11 QUADWORD RW クワッドワード転送を指定します。
12 SOFTWARERESET RW ソフトウェアでは、このビットに1を2回書き込むことにより、DMAエンジンをリセットできます。SOFTWARERESETビットへの2回目の1の書き込みで、DMAの制御はシステムリセットと同様にリセットされます。ソフトウェアのリセットプロセスをシーケンスにするロジックは、自動的にリセットされます。

DMAトランザクションのデータ幅は、BYTEHWWORDDOUBLEWORDQUADWORDビットで指定されます。これらのビットは、1つのみを一度に設定することができます。複数のビットが設定されている場合のDMAコントローラーの動作は未定義です。転送の幅は、読み書きされる2つのスレーブのうちの狭いスレーブによって決まります。例えば、16ビットのフラッシュメモリーから読み出し、32ビットのオンチップメモリーに書き込むDMAトランザクションでは、ハーフワード転送が必要です。この場合、HWを1に設定し、BYTEWORDDOUBLEWORDQUADWORDを0に設定する必要があります。

特定の幅のトランザクションを正常に実行するには、ハードウェアでその幅を有効にしている必要があります。これには、Allowed Transactionハードウェア・オプションを使用します。例えば、ハードウェアでクワッドワード転送が無効になっている場合に、QUADWORDビットがDMAトランザクションで設定されると、DMAコントローラーの動作は未定義になります。

DMA転送がアクティブな際にDMAソフトウェアのリセットを実行すると、永続的なバスのロックアップ (次のシステムリセットまで) が発生する可能性があります。そのため、SOFTWARERESETビットには、最後の手段の場合を除いて書き込みを行わないでください。