インテル® Arria® 10 FPGA HPS ハード・メモリー・コントローラー (HMC) は、FPGA・ファブリックが構成されていない間に使用できますが、フェーズロック・ループ (PLL) リファレンス・クロックおよびリセット信号は、特定の方法で構成する必要があります。
HPS HMC を使用できるようにするには、最初に I/O 列のみを構成する必要があります。FPGA ファブリックを設定する必要はありません。
HPS HMC 向け PLL リファレンス・クロックは、I/O バンクの専用入力クロックピンからの入力をお勧めします。プラットフォーム・デザイナーでは、HPS HMC のクロック入力 (pll_ref_clk_clock_sink) ポートを、エクスポートされたクロックソースに接続して専用入力クロック・ピンに接続するか、この信号を直接エクスポートします。
FPGA・ファブリックが構成されていない場合、HPS HMC のglobal_reset_n入力を使用できません。さらに、このグローバル・リセットにより、HPS HMC に使用される I/O バンクだけでなく、I/O 列全体もリセットされます。プラットフォーム・デザイナーでは、HPS HMC のリセット入力 (global_reset_reset_sink) 信号をエクスポートするか、FPGA・ファブリックの構成後に使用できるリセット・ソースに結び付けることができます。
HPS は、HPS がアクセスできる IOAUX キャリブレーション・スペースのレジスターを介して、間接的に HPS HMC をリセットすることができます。HPS 列と I/O 列の間には 2 つの 8 ビット・バス (core2seq および seq2core) が存在し、ソフトウェアはNios® IIメモリー・スペース内のレジスターへの書き込みおよび読み取りを可能にします。HPS のリセット・マネージャーは、これらのバスを介したNios® II・プロセッサーとのハンドシェイクを処理します (ポート hmc_gpio_core2seq および hmc_gpio_seq2coreとして定義されます)。これらの GPIO ポートは、HPS と I/O 列間のハード接続です。HPS HMC のリセットと再キャリブレーションを要求するには、ソフトウェアが core2seq レジスターに0x0fを書き込んで、ハンドシェイクを開始できます。
HPS とNios II・プロセッサー間のハンドシェイク
Nios IIプロセッサーは、ソフトウェアが core2seq レジスターに0x0fを書き込むまで、core2seq レジスターをポーリングします。
Nios IIプロセッサーは、 seq2core バスに0x07を書き込み、リセット要求が見られ、プロセスを開始したことを認識します。
HPS は、Nios II・プロセッサーがリセットと再キャリブレーションが完了したことを示す0x08を記述したことを確認するまで、 seq2core をポーリングします。
HPS は core2seq に0x00を書き込み、Nios II・プロセッサーが終了したことを確認します。
Nios IIプロセッサーは、ハンドシェイクを完了するために 、0x00を seq2core に書き込みます。
要約すると
最初に HPS をリセットしてから、HPS にNios II・プロセッサーを通じて間接的に HMC をリセットする必要があります。