こんにちは。
マクニカでインテル® FPGA 製品の技術サポートをしている インテル・F・ハナコ です。
Can't recognize silicon ID for device
インテル FPGA ダウンロード・ケーブル II(通称 USB-Blaster™ II)を使用して FPGA にデータ転送したり、インテル製のコンフィギュレーション・デバイスにプログラミングをする際に、このエラー・メッセージが出た場合は、まず以下の FAQ を確認しましょう。
Can’t recognize silicon ID for device というエラーが表示され、プログラミングができません。
この要因の5番目にある "ノイズの影響" だった場合に試してもらいたいことがあります。
それは USB-Blaster II の TCK 周波数を変える!!
USB-Blaster II の TCK 周波数は、デフォルト 24MHz です。
信号品質(シグナル・インテグリティ)低下の度合いにもよりますが、TCK の周波数を下げることで回避できるかもしれません。 また、FPGA へのダウンロードのタイミングが 24MHz 動作を許容しないときにも、有効な方法です。
Notes :
・ USB-Blaster は TCK 周波数を変更できません。TCK 周波数は 6MHz (typ) です。
TCK 周波数はいくつに変更できる?
TCK の周波数に指定できるラインナップは、下記のとおりです。
- 24 MHz
- 16 MHz
- 6 MHz
- 24/n MHz (10 KHz ~ 6 MHz;n は整数)
TCK 周波数を変更する方法
USB-Blaster II の TCK 周波数を変更する方法は、Quartus® Prime のエディションやバージョンによって異なります。
Quartus Prime | 変更手法 |
※ Quartus Prime Standard および Lite Edition の 19.1 以降をご利用の場合にもこちらをご覧ください。 |
Programmer の GUI により変更 |
Quartus Prime Standard Edition / Lite Edition (ver.18.1 以前) | コマンドにより変更 |
Notes :
事前にパソコンと USB-Blaster II を接続してから変更作業を行ってください。
変更した TCK 周波数は、パソコンからケーブルを外すと初期化されます。その都度変更作業を行ってください。
Quartus Prime Pro Edition における TCK 変更方法
1. Quartus Prime Pro Edition の Programmer を起動します。
2. Programmer の Hardware Setup ボタンをクリックし、
Currently selected hardware のプルダウン・リストから USB-Blaster II を選択します。
Hardware frequency 欄に、24000000 (Hz) が表示されます。
3. 設定したい TCK の周波数の値を、Hardware frequency 欄に入力します。
例えば、16MHz に変更したい場合はこのように設定します。
4. [Close] ボタンをクリックします。
以上で TCK 周波数の変更作業は完了です!
5. (オプション作業) 現在設定されている TCK 周波数は、再び Programmer の Hardware Setup 画面を起動して確認できます。
Quartus Prime Standard および Lite Edition における TCK 変更方法
1. Quartus Prime Standard (Lite) Edition の Programmer を起動します。
2. Programmer の Hardware Setup ボタンをクリックし、
Currently selected hardware のプルダウン・リストから USB-Blaster II を選択します。
3. コマンドプロンプトを起動します。(Nios® II Command Shell でもOK。)
4. cd コマンドで Quartus Prime のインストール・フォルダ下の bin64 フォルダ へ移動します。
5. jtagconfig コマンドで “cable number” を確認します。
jtagconfig
パソコンに装着されている USB-Blaster 系のダウンロード・ケーブルの本数分が表示されます。
下記は、ダウンロード・ケーブル1つだけが装着されている状態です。
この、USB-Blaster II の先頭に表示された番号(cable number)を覚えておきます。
6. 以下のコマンドにより、TCK の周波数を設定します。
jtagconfig --setparam <cable number> JtagClock <frequency><unit prefix>
cable number | 操作3で確認した番号 |
frequency | 設定した TCK 周波数の数値 |
unit prefix | 周波数の単位 (Hz を除く)。MHz の場合は M、KHz の場合は K を入力する。Hz の場合は未入力。 |
例えば、16MHz に変更したい場合はこのように設定します。
TCK = 150KHz に変更したい場合は、"24/160" ではなく "150K" または "150000" を入力します。
以上で TCK 周波数の変更作業は完了です!
7. (オプション作業) 現在設定されている TCK 周波数は、以下のコマンドで確認できます。
jtagconfig --getparam <cable number> JtagClock
以下のように、現在の設定値が表示されます。
私が検証したときに確認できたエラー・メッセージの一部を以下に書いておきます。これらは、TCK の周波数を下げることでエラーを回避することができました。
[エラー・メッセージの一例]
・ Can't recognize silicon ID for device 1
・ Connected stsyem ID hash not found on target at expected base address.
・ Flash Loader IP not loaded on device 1
・ No Nios II target connection paths were located. Check connections and that a Nios II .sof is downloaded.
参考にしてください。
おすすめ記事/資料はこちら
USB-Blaster II のドライバをインストールしてみよう
インテル® FPGA の開発フロー/FPGA トップページ