はじめに
『ぽき』です。
製作実習で FPGA を用いて自分の所望動作をさせられるような基板の作成、
回路の作成を行いました。
一通り基板が出来上がった時のこと、
先輩から「コンフィギュレーションが正常に終了して、ユーザモードに入ったかかどうか
オシロスコープで確認してみたら?」と言われました。
今回はインテルのコンフィギュレーション専用 ROM 「 EPCS16 」を使用しています。
EPCS16 を使用する場合は、Active Serial (以下 AS ) コンフィギュレーション・モードになります。
確かに AS コンフィギュレーションを行う際には JTAG コンフィギュレーションのように
PC 上の Quartus® II で成否が表示されないため、
ユーザ回路が動作しているかどうかでしかコンフィギュレーションが成功したのか分かりません。
ちなみにコンフィギュレーション・モードについては過去に先輩が記事にしておりましたのでご活用ください。
そこでコンフィギュレーションが正常終了したことを確認できる信号を見てみることにしました。
どのピンを見ればよいか?
コンフィギュレーション関係のピンはたくさんあります。
図 1 は AS コンフィギュレーション時のタイミングチャートです。
コンフィギュレーションの完了を示す FPGA ピンとして 2 種類あります。
CONF_DONE : すべてのコンフィギュレーションデータがエラーなく受信完了すると、
Low -> High (外部プルアップ) になる信号
INIT_DONE : すべてのコンフィギュレーションデータを受信完了し、イニシャライズ
完了後、ユーザモードになると High (外部プルアップ) になる信号
今回は用いたことのない INIT_DONE ピンを見てみることにしました。
INIT_DONE ピンのコンフィギュレーション中の動作は以下の通りです。
電源投入時 “ High ” → コンフィギュレーション中 “ Low “
→ イニシャライズ終了 ” High ”
あれ?どこにあるの?
この INIT_DONE ピンは Option 扱いとなっていますのでまずはこのピンを有効にします。
INIT_DONE ピンを有効にするためには Quartus II 上のメニューより
Assignments → Device… → Device & Pin Options… の Category 中の General で
Enable INIT_DONE output にチェックを入れます。
INIT_DONE ピンを有効にし、INIT_DONE のピン配置を Pin Planner 上で行おうとしたところ、、、
あれ? INIT_DONE ピンがない!!
その他、図 1 中の nCS0 , DCLK , ASD0 , DATA0 もありません。
そこで先輩に助けを求めることにしました。
元々決まっている信号
ぽき「先輩、コンフィギュレーション系のピンが Pin Planner 上で出てこないのですが、
どうやって ピン配置すれば良いのでしょう?」
先輩「 nCS0 , DCLK , ASD0 , DATA0 あと INIT_DONE は
元々デバイス上のどこのピンを使うか決まっている信号だからピン配置はしなくてもいいよ。」
ぽき「ということは Pin Planner 上には表れないのですか?」
先輩「いや、 Back-Annotate Assignmentsをすることで表示されるよ。」
Back-Annotate Assignments
Back-Annotate Assignments はコンパイル時に
インテル® Quartus® Prime が自動で設定したピン配置などの情報を自分の設定に反映するものです。
やり方はコンパイル後に Quartus II のメニュー Assignments → Back-Annotate Assignments… で
Pin & Device assignments にチェックが入っていることを確認して OK を押すだけです。
これで反映されます。
Pin Planner を見てみると、、、
配置が決まっている専用ピンの情報が現れました!
これで安心です♪
と思っていると先輩からアドバイスが。
Back-Annotate assignmentする時の注意とピンの情報
先輩「でも Back-Annotate Assignments を実行すると、ピン配置されていないユーザ I/O ピンを自動で任意のピンに設定するから、
ピン配置が決まっているピンは先に設定してね。」
自分のデザイン内のユーザ I/O ピンは、作成した基板に合わせてピン配置する必要があります。
このピン配置は自分で行わないと、コンパイル時に インテル® Quartus® Prime が基板の情報とは全く関係なしにピンを配置してしまうので、注意が必要です。
先輩「あと元々配置が決まっている専用ピンの情報はデバイスのピンアウト・ファイルに記載されているから、
それを見てからユーザ I/O ピンを配置しようね。」
インテルのホームページ上よりデバイスのピン情報が記載されているピンアウト・ファイルをダウンロードすることができます。
配置が決まっている専用ピンにユーザ I/O ピンを配置すると、以下のような Error が発生します。
( INIT_DONE のピンである PIN_98 のピン配置情報を削除して、無理やり他のピンを配置してみました。)
基板の設計段階でこのような専用ピンを避けて設計を行うことでこの Error は回避できますね。
オシロスコープで波形確認
NIT_DONE ピンがどのピンにアサインされているか分かったので、プルアップ抵抗を入れて AS コンフィギュレーション時の波形を見てみました。
INIT_DONE ピンのコンフィギュレーション中の動作である “High” → “Low” → “High” が確認でき、
AS コンフィギュレーションが成功しユーザモードに移行したことが分かります。
これで AS コンフィギュレーションが完了できたことが分かりました。
今日の POINT
・ピンアウト・ファイルで専用ピンをチェックしてからユーザピンの配置を行う
・コンフィギュレーション関係の専用ピンはコンパイル後に Back-Annotate AssignmentsすることでPin Planner上に表示される。
・Back-Annotate Assignmentsは Quartus IIがコンパイル時にピン配置されていないピンを自動で配置するものなので、ユーザピンを配置してから行う。