10 個の PCI Express* IP レジスター値インテル® Arria®読み書きすることは、有効なデバッグ方法です。以下の手順に従って、インテル® Arria® 10 PCI Express IP コンポーネントのレジスター値を読み書きします。 最初のパートでは、Arria 10 トランシーバー・ネイティブ PHY IP チャネル、インテル Arria 10 トランシーバー ATX PLL IP コア、および 10 トランシーバー fPLL IP コアインテル Arria Alteraデバッグ・マスター・エンドポイント (ADME) を有効にする方法を説明します。第 2 部では、インテル® Quartus® Prime 開発ソフトウェア・プロ・エディション・システム・コンソールでレジスター値を読み書きする方法について説明します。
ADME 機能を有効にします。
Arria 10 トランシーバー・ネイティブ PHY IP
1. PCI Express* IP パラメーター・エディターで ADME を有効にします (構成、デバッグ、拡張オプションタブ)
2. HDL の生成 (インテル Quartus Prime 開発ソフトウェア・プロ・エディション・プラットフォーム・デザイナーで、[Generate --> HDL ....] をクリックします。
Arria 10 ATX PLL IP コア (Arria 10 PCI Express IP Gen3 モードのみ)
3. プラットフォーム・デザイナーが生成した PCI Express* デザインファイルを含むディレクトリーに移動します (\altera_pcie_a10_hip_171\synth など)。
4. テキスト・エディターで 「lcpll_g3xn.v」ファイルを開きます。
5. ATX/LC PLL のインスタンス化で以下のパラメーターを設定 (altera_xcvr_atx_pll_a10)
.rcfg_jtag_enable (1)
.dbg_embedded_debug_enable (1)
.dbg_capability_reg_enable (1)
.dbg_stat_soft_logic_enable (1)
.dbg_ctrl_soft_logic_enable (1)
6. リコンフィグレーション・クロックを配線し、同じインスタンス化用にリセットします。
.reconfig_clk1 (reconfig_clk0)
.reconfig_reset1 (reconfig_reset0)
7. lcpll_g3xn.v ファイルを保存して閉じます。
Arria 10 fPLL IP コア
8. テキスト・エディターで 「fpll_g3.v」ファイルを開きます。
9. fPLL in altera_xcvr_fpll_a10で次のパラメーターを設定します。
.rcfg_jtag_enable (1)
.dbg_embedded_debug_enable (1)
.dbg_capability_reg_enable (1)
.dbg_stat_soft_logic_enable (1)
.dbg_ctrl_soft_logic_enable (1)
10. 同じインスタンス化のためにクロックを配線し直し、リセットする
.reconfig_clk1 (reconfig_clk0)
.reconfig_reset1 (reconfig_reset0)
11. fpll_g3.v ファイルを保存して閉じます。
12. Quartus® コンパイルを開始する
13. SOF をダウンロードする
システムコンソールで読み取り / 書き込み操作を登録します。
1. Quartus® トランシーバー・ツールキットの起動とデザインの読み込み
2. 接続されているスレーブを確認します。
% get_service_paths スレーブ (XCVR、ATX PLL、fPLL を含むすべてのスレーブをリストします)
3. 各スレーブインデックスの IP 情報を確認し、インデックスに関連付けられている IP を書き留める
% marker_get_info [lindex [get_service_paths スレーブ] 0]
% marker_get_info [lindex [get_service_paths スレーブ] 1]
% marker_get_info [lindex [get_service_paths スレーブ] 2]
% marker_get_info [lindex [get_service_paths スレーブ] 3]
4. XCVR または PLL レジスターからの読み取り / 書き込み。書き込み時には、読み取り / 変更 / 書き込みを行います。 (例: ATX PLL m_counter)
% set s [lindex [get_service_paths スレーブ] 3] # インデックス 3 は ATX PLL
スレーブ・$s open_service %
% set base_addr 0x0000 トランシーバー・チャネルへのアクセスに使用される数
% set ー ー master_read_8 $s [expr $base_addr 0x109*4] 1] # ATX PLL アドレス0x109を読み取る (m_counter)
% set 00 (expr $ret & ~ 0xf0 |(0x1 <<7) # clear bit[7:4]、ビット [7] を 1 に設定
% master_write_8 $s [expr $base_addr 0x109*4] $ret # 書き込み変更された値
% set 0 ー [master_read_8 $s [expr $base_addr 0x109*4] 1] # 読み返しによる検証
完全なレジスターアドレスと値については 、インテル Arria 10 トランシーバー・レジスター・マップを参照してください。