Altera DE2-115でLCDに文字を表示する
Altera DE2-115を借りていろいろすることができたのでメモ.
いろいろやったけど一番情報が少なかったと思われるLCDを使って文字を表示する方法を書いておきます.
fopenでLCDを開いてfwriteを使ってLCDにデータを表示させる方法とか,どっかの大学の先生が作ったプログラムを使って表示させる方法とかさまざまあるようですが,今回は別の方法でやってみようと思います.
開発環境&使用ソフトウェア
- Windows 7 Enterprise x86_64
- Quartus II 12.0sp2 Web Edition
- Nios II Build Tool for Eclipse
- Terasic DE2-115 System Builder
ハードウェアを作る(?)
FPGAのことがよくわかっていなくて,なんといえばいいのかわからないけどハードウェアの論理合成をする.
一からVerilogを書いてもよかったんだけど,ほかの作業に追われていたのでTerasic DE2-115 System Builderを使ってサクッとVerilogファイルを生成してしまう.ある意味チート.
Generate ボタンを押すとプロジェクトファイルが生成される.生成されたプロジェクトファイルをQuartus IIで開く.
Qsysでサクッと画像のようにつなげる.
後は「プロジェクト名.v」となっているVerilogファイルの” Structural coding “というところにNios IIの設定を追記する.
[crayon]
assign LCD_ON = 1’b1;
assign LCD_BLON = 1’b1;
nios nios0 (
// 1) global signals:
.clk( CLOCK_50 ),
.reset_n( 1 ),
// the_lcd
.LCD_E_from_the_lcd( LCD_EN ),
.LCD_RS_from_the_lcd( LCD_RS ),
.LCD_RW_from_the_lcd( LCD_RW ),
.LCD_data_to_and_from_the_lcd( LCD_DATA )
)
;
[/crayon]
これで論理合成したあとDE2-115のボードにプログラミング.
プログラムを書く
サクッとテストプログラムを書いてみる.ただ以下のコードは何となく書いたので動くかわからん.
開発しててハマったのがEcripseでDE2-115を認識しないときがあったこと.これはEcripseをいったん閉じてQuartusIIから回路をプログラミングしてからもう一度Ecripseを立ち上げると認識するようになった.
ちなみにAltera Monitor Programを使って開発してる人はLCDを使うときLCDのアドレス+1してポインタつかっていろいろすると行けるっぽい.
動作
上に書いたプログラムで表示したわけではないけど,下の画像のように動く.
参考にしたサイト
- Hello World on your FPGA
- FPGA(DE2)でHello World
- 16×2 Character Display for Altera DE2-Series Boards
- LCD Module
- DE2 User Manual
- Altera DE2 Board Resources for Students
- LCD Controller
- How to “printf” to my 16207 Optrex lcd controller ?
- githubに上がってたプログラム
触ってからだいぶ時間が空いてからこれを書いたのであやふやになってる部分も多数...
触ってるときにアウトプットするのって大切ですね~
FPGAを使った開発はものすごく楽しかったけど,個人でやるんだったらPICが楽だなーと思ったり.