Quartus で最初に詰まるのは回路ではなく環境
※本記事にはアフィリエイトリンクを含む場合があります。内容は広告の有無に影響されません。
結論
DE10-Lite の7セグメント表示は 0 で点灯する active LOW のため、直感どおりに 1 を書くと表示が反転する。
環境
Quartus Prime Lite Edition(18.1) と、Intel MAX10 搭載の DE10-Lite。入門は無料版で問題ありません。
詰まる場所3つ
① 書き込み機のドライバ
最初のつまずきは USB Blaster のドライバでした。ボードを繋いでも認識されず、ここで時間を取られます。
FPGA 入門の最初の壁は、回路そのものよりドライバまわりです。
② ピン配置
書いた信号を、ボードのどのスイッチ・LED・7セグに繋ぐか、ピン配置を一つずつ指定する必要があります(例:入力を PIN_C10、I/O 標準は 3.3-V LVTTL)。
慣れれば流れ作業ですが、最初は「コードは合っているのに動かない = ピン設定漏れ」で戸惑います。
③ 7セグは 0 で点灯する
DE10-Lite の7セグメント表示は active LOW、つまり 0 で点灯します。
1 で点灯すると思って書くと、表示が反転します。
Verilog 作例(易しい順)
基本ゲート
assign outC = inA & inB; // AND
assign outD = inA | inB; // OR
1行で論理が形になります。
ビットの取り出し
assign LED = SW[7:4]; // 8bit スイッチの上位4bit を LED へ
2桁7セグに10進表示
6bit(0〜63)を %10 と /10 で一の位・十の位に分け、7セグのパターンに変換して2桁に出力します。ここで③の active LOW を踏みます。
後半はレジスタ配列や `define マクロも使い、少しずつソフトウェア寄りの書き方も試しました。
3つに共通していること
並べると、どれも回路の知識では解けません。
- ①は OS 側の問題
- ②はツールの設定
- ③はボードの電気的な仕様
FPGA を学び始めるとき、身構えるのは論理回路のほうです。ところが実際に手を止めるのは、回路の外側でした。
これは裏を返せば、一度越えれば繰り返し詰まらないということでもあります。①〜③は環境に固有の問題なので、2枚目のボードでは起きません。最初の1回だけ重いという性質を知っておくと、詰まったときに諦めずに済みます。
よくある質問
Q1コードは正しいのに動きません。
ピン配置の設定漏れを疑ってください。書いた信号をボードのどのスイッチ・LED・7セグに割り当てるかを一つずつ指定する必要があり、ここが抜けているとコードが正しくても動きません。
Q2ボードを繋いだのに書き込めません。
書き込み機(USB Blaster)のドライバが認識されていない可能性があります。FPGA 入門で最初の壁になりやすいのは回路ではなく、この環境まわりです。
Q37セグの表示がおかしいのはなぜですか?
DE10-Lite の7セグは 0 で点灯する active LOW だからです。1 で点灯すると思って書くと、表示が反転します。