(日々の記録)デジタルオシロを買った。(月)FPGAで7セグLEDのカウンターがやっと動く7セグLEDが点灯した(3/26/10)VerilogHDLで書いた自前の7セグLED表示回路にタクトスイッチの回路を組み込む。生意気にシステムクロックを使ったチャタリング防止回路を入れる。always節の中の処理は順序処理なのでソフト屋にはコーディングしやすい。サブモジュール間のデータの受け渡しは、まだ完全に理解できていない。基本は、regでデータを作り、ネット(wire)で受けるというのだが、サブモジュール間のデータの受け渡しのとき、メインモジュールに変数を定義しておかなくてもよいのか、サブモジュールでwireで受けた変数をそのまま変化させてよいのか、まだ確信がない。Errorにするという対症療法でしのぐ。次は、いよいよピンアサインである。おっと、まだFPGA基板の配線をすましていない。バラックでも良いが、デバッグに専念したいので、ベース基板にテスト用のソケットをつけてFPGA基板とLED基板の間を接続することにする。これが結構、時間がかかる。たかが10数本の配線だが、ピンアサインを良い加減にするとあとでひどいことになるので、なるべく元の基板の配置と同じで、しかも流用したストレートの電光掲示板のコネクターが入るようにピンアサインを決めようと苦心する。7セグのエレメントの接続も気を抜いてハンダ付けするとすぐ間違える。メモをとり何度もテスターで導通を確かめながらの作業だ。2列20ピンのソケットは印をつけておかないとすぐ間違える。基板のハンダ付けも終わった。今度こそピンアサインだ。雑誌記事の基板回路図を何度も確認しながら慎重にピン配置の.ucfファイルを作る。Xilinxの開発環境ISEは操作性に問題があり余り評判が良くないが、このピン配置を決めるucfファイルの編集もやりにくい。Constraints(ユーザー制約定義)のGUI画面では編集できない。編集はucfファイルをテキストエディターで開いて修正しないといけない(追記:GUIメニューにPre-SynthesisとPost-Synthesisの2つがあり、後者で修正が出来ることがわかった)。この開発環境はすべて無料なので(登録が必要だが)余り文句は言えない。これは統合環境というより、それぞれが別の仕事をするバッチジョブのランチャーに近い。バッチジョブとして独立しているかと思うと、沢山の中間ファイルが相互のジョブの途中経過を引き継いでいるので油断がならない。うまく行っているときは良いが、どこかのステップを失敗すると、とたんにご機嫌を損ねて先に進んでくれない。このときも二重に追記されたucfファイルを消したのだが、これに関係する内部ファイルが残っていて、新規にucfファイルを作っても同じエラーを吐いて動かない。Projectというのをやれば良いらしい)。ピンアサインが無事終わった。FPGAを動かすまでの道は遠い。このあともまだたくさん手順がある。付録基板の号には詳しい手順が出ているのでもう一度おさらいし、慎重に進める。以前に1回通したというのが自信になっている(2008/8/8「FPGAでLEDピコピコ」記事)。File(実行可能ファイルを作る。リンカーか)は順調に終わった。残るは問題のiMPACTを使ったファーム書き込み(コンフィギュレーション)である。「鬼のように使いにくい」「難解きわまる」とWebで評判(?)のライターである。前回は、コンフィギュレーションROMをバイパスする手順を抜かして大はまりした。手順どおりiMPACTを始動させる。この始動方法にも色々な方法があるようで、おっかなびっくりである。ROMとFPGAのアイコンが出るConfigurationの画面が出た。手順どおりProgramの矢印アイコンをダブルクリックして書き込みを開始する。やった、やった、ブルーのSucceeded(出来たよ)のメッセージが出た。7セグLEDが点灯した。