Sim's blog

電子工作はじめてみました

Altera DE0で使えそうなLCDを探してみました

2009-10-30 20:06:18 | FPGA
Altera DE0がきましたの続きになります。

Altera DE0には16x2LCDをつなげるためのパターンが基板にあります。

写真中央の横一列の穴です。

キットそのものにはLCDは含まれておらず別売りになっています。製品ページの下の方に16X2 LCD Module (Backlight) [Part No.:MMC-3000-XXX]が$12と書かれています。

付属CD-ROM(ダウンロードも可)には別売りのLCDのデータシートもはいっています。それによると型番はCFAH1602B-TMC-JPとなっています。Crystalfontzというメーカーの製品です。残念ながらぴったしの型番のものはホームページには見当たりませんでした。

データシートを見る限りでは通常の5V動作のLCDモジュールです。あとはピン配置と大きささえ合えば他のメーカーのものでも代用ができそうです。サイズは36x80x14(mm)です。ピン配置は
1 Vss
2 Vdd
3 Vo
4 RS
5 RW
6 E
7~14 DB0~DB7
15 A (LED+)
16 K (LED-)
で横一列になっています。

秋月のはピン配列が違うのでで駄目でした。aitendoを見るとよさげなのが2種類ありました。

(1) JHD162A
(2) SC162A

どちらもピン配置、サイズともにぴったりです。

気になるのは、DE0の回路図を見てもLCDのバックライトLED用の抵抗が見当たらないことです。回路図のp.7の中央辺りにLCD BL(LCDのバックライトLED)の回路があります。LCDモジュールの裏側に電流制限用の抵抗を増設してやる必要があるかもしれません。DE0のユーザーマニュアルのp.31の写真ではLCDモジュールの16ピン(LED-)は接続していないようにも見えます。また同じ写真からすると縦幅の36mmはちょうどぴったりのサイズみたいです。

なくても、そんなに困るものでもないのですが、とりあえず調べてみました。

Altera DE0がきました

2009-10-30 00:43:10 | FPGA
digikeyに頼んでいたAltera DE0が届きました。26日に頼んで届いたのは29日でした。用途の所を日本語にしたので翻訳に1日余分にかかったみたいです。

こんな箱にはいってました。


中身はこんな感じです。


出してみました。


さっそく・・・、Quartus IIをインストールしてませんでした。まずはダウンロードから。USB Blasterの機能があるのでUSBケーブルをつなぐだけでコンフィグレーションできます。USB BlasterのドライバはQuartus IIをインストールしたフォルダにあります。

Quartus IIって、System Verilogも使えるみたいです。

DVDもついてきますが、Terasicから最新版のCDイメージをダウンロードします。バージョンが1.1になっていて少しだけ新しいみたいです。

さっそく、お約束のRTLを作成しました。
`default_nettype none
module main(
    output reg [9:0] LED,
    output reg [7:0] HEX0,
    output reg [7:0] HEX1,
    output reg [7:0] HEX2,
    output reg [7:0] HEX3,
    input rst_x,
    input clk);

    reg [20:0] ctr;
    reg [3:0] ctr2;

    wire ctr_en = ctr == 21'h0;

    always @(posedge clk)
        ctr <= ctr + 21'h1;

    always @(posedge clk, negedge rst_x)
        if(~rst_x)
            LED <= 10'h200;
        else if(ctr_en)
            LED <= {LED[8:0], LED[9]};

    always @(posedge clk)
        if(ctr_en) ctr2 <= ctr2 + 4'h1;

    always @(posedge clk)
        if(ctr2[3]) begin
            HEX0 <= 8'b10011111;
            HEX1 <= 8'b10011111;
            HEX2 <= 8'b10011111;
            HEX3 <= 8'b10011111;
            end
        else begin
            HEX0 <= 8'b10111101;
            HEX1 <= 8'b10111101;
            HEX2 <= 8'b10111101;
            HEX3 <= 8'b10111101;
            end
endmodule

Quartusって、あんまり使ったことがないせいか、よく分からないです。ピン配置って毎回pin editorで作らないといけないんでしょうか?