LOGIC BOY で実際に回路を動かすぜ!

このチュートリアルでは、以前、西田ラヂオで販売していた LOGIC BOY という Spartan 3A FPGA 実験ボードで、cherry syn が生成した回路を動作させる手順を紹介しています。cherry syn は、Xilinx の Spartan 3A、Spartan 6 シリーズで実行できる回路を生成します。最近は Spartan 6 の安い実験ボードも沢山販売されていますので、それらを使う場合は、それらの説明書を参考にして下さい。

それじゃ cherry syn で作った回路を LOGIC BOY で実際に動作させてみよう、と言いたいところだけど、その前に準備が必要だ。準備というのは本当につまらない。でも必要なので仕方ないね。。

ISE WebPack のインストール

まず、PC に Xilinx ISE WebPack というツール(以下 ISE)をインストールしなければならない。これは、VHDL 等の言語で RTL 回路を書いて、FPGA のコンフィグレーションファイルを生成するツールだよ。残念ながら ISE は Windows 10、11 では動かないので、僕は WSL2 に Linux を入れ、Linux 版を使っています。

ISE でプロジェクトを作成

はい、こちらに既にインストールされた PC が用意されております^^

ISE を起動するたびに、今日の Tip とか言って毎回、色んな細かい事を教えてくれるんだけど、とりあえず無視しよう。ISE を使いこなせるようになったら参考にしよう。

ISE を起動したら、まず File->New Project... で新しいプロジェクトを作る。プロジェクト名は何でもいいけど、とりあえず LOGICBOYTEST としておこう。僕の環境の場合、パスに日本語があると上手く行かなかったので、日本語のパスは避けよう。Top-level source type は HDL のままで良い。

Next > をクリックすると、Project Settings というのが出てくる。Evaluation Development Board は None Specified で良い。Family は Spartan 3A and Spartan 3AN、DeviceはXC3S50A、PackageはVQ100、Speed は -4 とする。LOGIC BOY に付いてる FPGA ね。Preferred Language は VHDL、VHDL Source Analysis Standard は VHDL-93 で OK だ。

Next >をクリックして、Project Summary を確認して、Finish をクリックするとようやく準備ができる。

左上の Hierarchy と書いてある下に、プロジェクト名 LOGICBOYTEST と書いてある。そこで右クリックしてみよう。New Source... というメニューが出てくる。それを選択すると、Select Source Type というダイアログが出てくるので、表示されているリストから VHDL Module というのを選択、右にファイル名を入力するところがあるので、ファイル名を LOGICBOYTEST.vhd とでも入力して Next > をクリックしよう。Define Module というダイアログが出てくるから、何も入力せずに Next > をクリックしよう。Summary を確認して Finish をクリック。これで LOGICBOYTEST.vhd というファイルを編集可能になる。最初から色々かいてあるけど、全部消して空のテキストファイルにしておこう。これで VHDL ファイルが用意できた。

次に FPGA のピン割り当てを指定できる UCF ファイルを作るよ。同じように左上の Hierarchy と書いてある下のプロジェクト名 LOGICBOYTEST を右クリックする。Select Source Type というダイアログが出てくるので、Implementation Constrants File を選択。右にファイル名を入力するところがあるので、ファイル名を LOGICBOYTEST.ucf とでも入力して Next > をクリックしよう。Summary を確認して Finish をクリック。これで LOGICBOYTEST.ucf というファイルを編集可能になる。これで UCF ファイルが用意できた!

cherry syn で VHDL ファイルと UCF ファイルを生成

それでは cherry syn の方に戻ろう。今回は、LED を点滅させるだけの簡単な例題 (tutorial2_1.chc) をやってみる。実はこれ、Makers Faire 2015 で FlashAir のデモに使ったのと同じ。


process logicboy (clkin uint#1 pin<85> clk, rstin uint#1 pin<49> rst, out uint#1 pin<27> led)
{
	uint#1 st = 1;
	while (1) {
		uint#24 i;
		for (i=0; i != 0xffffff; i++) ;
		st = ~st;
		led = st;
	}
}

前回のチュートリアルを復習すれば、何をやってるのかわかると思う。今回、新しいことは、in、out に FPGA のピン番号を指定してある点。pin<85> で、clk が FPGA の 85 ピンに割り当てられる。同様に rst は 49 ピン、led は 27 ピンね。

FPGA でどのピンが使えるのかは、FPGA のデータシートを参考にしよう。FPGA のピン番号の指定は、例えば入出力が 3 ビット幅ならば pin<27-29> とか、pin<27,28,29> という風に書く。

さぁ、cherry syn で tutorial2_1.chc を Synthesis して、VHDL ファイルと UCF ファイルを生成させてみよう!

出来た?出来たら、VHDL ファイルと UCF ファイルの内容をコピー&ペーストで、ISE のプロジェクトで作った VHDL ファイルと UCF ファイルにコピーして、セーブしよう。

ISE でマッピング

いよいよ、ISE でマッピングをやって、FPGA のコンフィグレーションファイルを生成させてみよう。ISE で左上の Hierarchy って書いてある上に Top Module: っていうテキストボックスがある。そこに LOGICBOY と入力する。そして、少し下、LOGICBOYTEST.vhd のところで左クリックして選択。左下に、Synthesize - XST とか、Implement Design とか、色々書いてあるところを見てみよう。最終的に Programming File を生成したいので、Generate Programming File というのをクリックすると、合成、マッピングが始まる。成功すれば、プロジェクトを作ったフォルダにlogicboy.bitというファイルができる。これが、FPGA のコンフィグレーションファイルだ。

LOGIC BOYの 配線

さて、LOGIC BOY に LED を付けて、クロックとリセットの配線をしよう。

LOGIC BOY

こんな感じで、FPGA の 27 ピンから 330 オームの抵抗を介し、LED のアノードへ配線。カソードはもちろん GND ね。マイコンの PB3 ポートを FPGA の 49 ピンに、PD7 ポートを FPGA の 85 ピンに配線しよう。LOGIC BOY の PB3 ポートは出力に設定されていて、FPGA のダウンロードが終わったら負論理のリセット信号が出るようになってる。PD7 ポートも出力で、32MHz のクロックが出力されている。

いよいよ動かしてみよう

SD カードのルートディレクトリに logicboy.bit を置いて LOGIC BOY に挿入。スライドスイッチを左 (Program&Download) にスライドし、5 Vの電源を接続。電源コネクタはセンターがプラスだよ。SD->FPGA(direct) を押して、ボード上の LED が一回点滅すればコンフィグレーションのダウンロードは成功だ。配線した LED が点滅を始めるはず。

というわけで、めでたく LOGIC BOY を動作させることが出来たかな?出来ない場合は試行錯誤してみよう。僕の説明不足があると思うけど、自分で色々やってみるのは大事なことだよ。

今回はここまで。もうこれで順序回路を作って遊ぶことができるはず。色々試してみよう!