DisplayPort IP コア・ハードウェアのサンプルデザイン例 (バージョン 16.0 以前) の問題により、DisplayPort IP コアシンクがインテル® GPU に接続されていると画像が表示されない場合があります。RX および TX MSA の値が正しく表示される場合がありますが、モニターに画像は表示されません。これは、インテル® GPU と DisplayPort IP コアソースで使用されるクロッキング・モードの不一致が原因です。インテル® GPU は同期クロッキングを使用し、DisplayPort IP コアソースは非同期クロッキングを使用します。これにより、ハードウェア・デモのデザイン例に 2 つの問題が生じます。
まず、ハードウェア・デモサンプル・デザインでは、ピクセル・クロック・リカバリー (インテル® ピクセル・クロック・リカバリー) モジュールに固定 NVID 値を使用します。この設定は、非同期クロッキングを使用し、インテル® GPU では動作しない GPU を対象としています。
次に、クロックモードにより、インテル® GPU は RX MSA MISC0 レジスターのビット 0 を 1 に設定し、DisplayPort IP コア・ソースは TX MSA MISC0 レジスターのビット 0 を 0 に設定します。これらのビットの仕様は異なりますが、Nios® II ソフトウェア (具体的には EDID パススルー・コード) は RX MSA MISC0 が TX MSA MISC0 と完全に一致すると想定し、不一致がある場合は DisplayPort IP コアソースを無効にします。
まず、最上位の Verilog ファイルを変更して、固定の NVID 値を使用して無効にします。メインのプロジェクト・ディレクトリーで、ファイル a10_dp_demo.v を変更して 1 行変更します。
差出人:
defparam bitec_clkrec_i.FIXED_NVID = 1;
宛先:
defparam bitec_clkrec_i.FIXED_NVID = 0;
次に、RX MSA MISC0 および TX MSA MISC0 レジスターを比較する際に、Nios II・ソフトウェアを変更してビット 0 を無視します。メインのプロジェクト・ディレクトリーで、ファイル main.c を変更して 2 行変更します。
差出人:
rx_misc0 = IORD(btc_dprx_baseaddr(0)、DPRX0_REG_MSA_MISC0) & 0xFFFF;
tx_misc0 = IORD(btc_dptx_baseaddr()、DPTX0_REG_MSA_MISC0) & 0xFFFF;
宛先:
rx_misc0 = IORD(btc_dprx_baseaddr(0)、DPRX0_REG_MSA_MISC0) & 0xFFFE;
tx_misc0 = IORD(btc_dptx_baseaddr()、DPTX0_REG_MSA_MISC0) & 0xFFFE;
これらの変更を行った後で、 スクリプト build_sw.sh を実行してソフトウェア・プロジェクトを再構築し、インテル® Quartus® Prime 開発ソフトウェアでプロジェクトを再コンパイルします。または、スクリプト runall.tclを再実行して、これらの手順を実行することもできます。
これらの問題は、Quartus® Prime 開発ソフトウェア v16.1 DisplayPort ハードウェアのサンプルデザインで修正されています。