MFT2015に行ってきた

Maker Faire Tokyo 2015 に行ってきました。

Lチカコンピュータやintel4004を用いた電卓の展示、ペッパーの集団など普段なかなか見れないようなものがたくさんありました。
今回がMFT初参戦だったのですが来年もまた参加したいです。

スーパーLチカコンピュータ
DSC_0651www.flickr.com

ニキシー管時計
DSC_0639www.flickr.com

Flickrアルバム
MFT2015 | Flickr - Photo Sharing!

図形描画

これまでに作成したVGA表示回路で図形を描画できるようにしました.
NIOS IIでVRAMにアクセスして図形を描画しています.

図形の描画アルゴリズムはこちらのサイトを参考にしました.
アルゴリズムの紹介

まだ直線と画像の描画しか実装していないのですがとりあえず実行中の画像です.
f:id:taltalp:20150721024534j:plain
文字(画像)の描画と直線の描画


また今回は、DE0の起動毎にハードウェアの情報を書き込んで、ソフトを書き込むという作業が面倒だったため、下記の本の第9章を参考にブートコピアを実装しました.

ハードウェアの情報はEPCS4に、ソフトウェアはFlashに入れるため不揮発性になりCycloneIII内のメモリー使用量を減らすことができました.空いた分をVRAMにまわせそうです.

しかし、CPUの処理が重くなり描画に時間がかかるようになってしまいました.
今は静止画のみの描画なので速度が遅くても困りませんが、そのうちより複雑な計算が必要になってきたらソフトウェアでは厳しそうです.

また、VRAMもDE0に載っているCycloneIII内のメモリービット数では640×480ピクセル分のデータを保持することができないため, SDRAM上にVRAMの領域を取るなど改良が必要そうです.

これらの改良はまた後々にやってみようと思います.

DE0でVGA出力(VRAMを実装)

前回作成したVGAコントローラーにVRAMを実装した.taltalp.hatenablog.jp

前回までに作成したVGA表示回路は表示画像を回路で作成していたため特定の画像以外は表示することができなかった.

今回はVRAMとNIOS2を実装してソフトウェアから画像を変えられるようにした.


1.仕様
・画面サイズ・・・640×480
・描画可能領域・・・150×150
・256色カラーパレット


2.ブロック図
f:id:taltalp:20150713040228p:plain


3.VRAM
今回作成したVRAMはFPGA内のロジックセルを用いた.
MegaWizardの「ROM:2-PORT」を用いれば書き込みと読み出しが別々に行えた.

f:id:taltalp:20150713033848p:plain

VRAMにはそれぞれのドットごとに1byteのカラーパレット番号を記憶できるようにして,150×150ピクセルのデータを保持するために22500byte以上のデータが必要である.今回は32768byteを確保した.


4.カラーパレット
色はそれぞれのドットごとに12bitのデータを保存して8192色を使えるようにしたかったが,それだとオンチップのVRAMではロジックセル不足になってしまうため,カラーパレットを用いて最大で256色を表現できるようにした.

f:id:taltalp:20150713034351p:plain

今回は書き換えすることができないカラーパレットでとりあえず作成した.

5.描画領域
f:id:taltalp:20150713040631p:plain
図のようにカウンタが原点座標に来たら描画をスタートして,それ以外の領域ではパレット番号0(黒)を指定して等倍で表示をした.

6.動作の様子
f:id:taltalp:20150713041045j:plain
Nios2でパターンを描画させた.
(画像だと見えにくいが,青,緑,黄,赤の順に1ピクセルごとに描画した)

DE0でVGA出力

DE0でVGA出力をしてみた. 今回作成した回路はVGAを出力することが目的であるため,VRAM等の実装は今回はしない.


1.仕様
解像度・・・640×480
水平同期周波数・・・31.25kHz
垂直同期周波数・・・59.5Hz


2.タイミング
f:id:taltalp:20150705210359p:plain
HS, VSのタイミングチャートは図のようになる.
※非表示領域ではRGBの出力を0にしないと画面が映らなかったため,RGB出力のイネーブル入力を用意して非表示領域ではRGB出力されないようにした.

3.実行結果

Nios II で Hello World

Qsysを使用してDE0にNios IIを実装してPCに Hello World! を表示させました.
実際には自分でソースコードを書いたりだとかはほとんどしておらず,どちらかと言えばQuartusとQsysの使い方がメインです.


1.使用した環境
Windows7
・Quartus II Ver.13.1 Web Edition
・DE0ボード

続きを読む