と動作確認 - 東京工業大学...mierupc project 1 mierupc-2008...
TRANSCRIPT
1MieruPC Project
MieruPC-2008 ハードウェアのセットアップ
と動作確認
MieruPCMieruPC--2008 2008 ハードウェアのセットアップハードウェアのセットアップ
と動作確認と動作確認
Version 2009Version 2009--0202--24 24 吉瀬謙二吉瀬謙二 (東京工業大学)(東京工業大学)
2MieruPC Project
知識ユニット
• MieruPC-2008 ハードウェアのセットアップ(10分)
• MieruPC-2008 ハードウェアの動作確認(10分)
このスライドは,講義および演習などのために自由に利用することができます.ただし,スライドに含まれる画像などの取り扱いには注意してください.
3MieruPC Project
MieruPC-2008の内容
電源ケーブル
USB電源ケーブル
SDカードディスプレイケーブル
キーボード
本体とディスプレイ
4MieruPC Project
添付される2枚のSDカードについて
• アプリケーションのシールが添付されたSDカード1枚
– アプリケーションが保存されています.MieruPC-2008に挿入して実行を確認してください.
• シールが添付されていないSDカード1枚
– データが保存されていないSDカードです.
– アプリケーションは保存されていません.作成したアプリケーションをコピーしてご利用ください.
• MieruPC-2008では8MBのSDカードのみが利用可能です.
5MieruPC Project
(1) ディスプレイケーブルを接続しましょう.
6MieruPC Project
(2) 電源ケーブルを接続しましょう.
• 電源ケーブルには,コンセントに接続するタイプと,USBに接続するタイ
プに2種類があります.どちらも同様に電源を供給できます.
• ノートPCなどから電源を取るためにUSBタイプを利用すると便利です.
7MieruPC Project
(3) スイッチオン
電源スイッチ
リセットボタン
7
8MieruPC Project
(4) アプリケーションの入ったSDカードを挿入
リセットによりアプリケーションが起動(製品版には特別ゲームが付属)
キーボードコネクタ(キーボード入力が必要な場合には接続)
9MieruPC Project
本体とディスプレイは固定できます
• 付属のネジとナットを使って,本体とディスプレイを固定できます.強くネジを締めすぎないでください.
10MieruPC Project
FPGA開発のためのMieruPC-2008 ハード
ウェアのセットアップ
FPGAFPGA開発のための開発のためのMieruPCMieruPC--2008 2008 ハードハード
ウェアのセットアップウェアのセットアップ
Version 2009Version 2009--0505--14 14 吉瀬謙二吉瀬謙二 (東京工業大学)(東京工業大学)
11MieruPC Project
知識ユニット
• FPGA開発のためのMieruPC-2008 ハードウェアのセット
アップ(20分)
– MieruPC-2008に搭載されているFPGA (Field Programmable Gate Array) に独自開発の回路をコンフィ
ギュレーションする場合に必要となる設定です.
– CPUの構成変更やFPGA開発が必要ではない場合にはこの
設定は不要です.
このスライドは,講義および演習などのために自由に利用することができます.ただし,スライドに含まれる画像などの取り扱いには注意してください.
12MieruPC Project
Digilent USBケーブルと接続ケーブル
• Digilent USBケーブル (左)
– パソコンのUSB端子とFPGAとを接続するケーブルです.
– 精密機械です.取り扱いに十分注意してください.
• MieruPC-2008用の接続ケーブル(右)
– Digilent USBケーブルをMieruPC-2008のFPGAに接続するため
の変換ケーブルです.
Digilent USBケーブル
MieruPC-2008用の接続ケーブル
13MieruPC Project
コンフィギュレーション用ケーブルの接続
• Digilent USBケーブルのVDDとMieruPC-2008用の接続
ケーブルの赤い線が揃う様に接続します(下図参照).
• MieruPC-2008用の接続ケーブルをSUZAKUに図の様に
接続します.
14MieruPC Project
オプションのSUZAKU JP2 の設定
• この作業は通常は必要ありません.
– 電源投入後にSPIフラッシュメモリから自動でFPGAにコンフィギュレーションすることを禁止したい(電源投入後にMieruPCのコンフィギュレーションを停止したい)場合には,SUZAKU JP2 をショートしてください.
– 具体的には,JP2 にジャンパーピンを取り付けます.
15MieruPC Project
コンフィギュレーション用ケーブルを接続の補足
• コンフィギュレーション用ケーブルを接続するためには,MieruPC-2008基板をケースから取り外す必要があります.
• ケース裏の4つのネジを外して,基板をケースから取り出して作業をおこなってください.
16MieruPC Project
SUZAKUのLEDを点滅させる (sample01)SUZAKUSUZAKUののLEDLEDを点滅させるを点滅させる (sample01)(sample01)Version 2009Version 2009--0505--13 13
吉瀬謙二吉瀬謙二 (東京工業大学)(東京工業大学)
17MieruPC Project
知識ユニット
• Xilinx ISE の使い方の基礎 (30分)
• Verilog HDL記述の基礎 (10分)
• Digilent ExPortの使い方の基礎 (10分)
• MieruPCを用いた動作検証の基礎 (10分)
• 演習 (30分)
Xilinx ISE, Digilent ExPort のインストールが終了していること.MieruPC-2008とコンフィギュレーションケーブルの設定が終わっていること.
このスライドは,講義および演習などのために自由に利用することができます.ただし,スライドに含まれる画像などの取り扱いには注意してください.
18MieruPC Project
Xilinx ISEにてプロジェクトを新規作成(1)
• Xilinx ISEを起動する.
• File -> New Project
19MieruPC Project
Xilinx ISEにてプロジェクトを新規作成(2)
• New Project Wizard が起動する.
• この画面にてプロジェクト名 sample01 を指定
20MieruPC Project
Xilinx ISEにてプロジェクトを新規作成(3)
• デバイス名などを正しく設定する.
21MieruPC Project
Xilinx ISEにてプロジェクトを新規作成(4)
• ソースコードは後に追加するのでここでは設定しなくてよい.
22MieruPC Project
Xilinx ISEにてプロジェクトを新規作成(5)
• 確認画面.Finish をクリックする.
23MieruPC Project
Xilinx ISEにてプロジェクトを新規作成(6)
• xc3s1200e-4fg430 として登録される.
24MieruPC Project
Verilog HDLソースコード main.v の追加 (1)
• Project -> New Source
25MieruPC Project
Verilog HDLソースコード main.v の追加 (2)
• テキストエディタにて記述するので,ここでポート名などを追加しなくてもよい.
26MieruPC Project
Verilog HDLソースコード main.v の追加 (3)
• main.v が追加される.
27MieruPC Project
Verilog HDLソースコード main.v の編集(1)
module main(CLK, ULED);input CLK;output ULED;reg [31:0] cnt;assign ULED = cnt[20];
always @(posedge CLK) begincnt <= cnt + 1;
endendmodule
CLKは,3.6864MHz の入力クロックULEDは,ユーザ制御のLED
28MieruPC Project
Verilog HDLソースコード main.v の編集(2)
• ソースコードを記述
29MieruPC Project
UCFファイル main.ucf の追加 (1)
• Project -> New Source
30MieruPC Project
UCFファイル main.ucf の追加 (1)
• Implementation Constraints File(UCFファイル)を選択する.
• ファイル名 main.ucf を指定する.
31MieruPC Project
UCFファイルの編集(1)
• main (main.v) の左の + をクリックすることで,main.ucf が
現れる.
32MieruPC Project
UCFファイルの編集(2)
• User Constraints の左の + をクリックすることで,Edit Constraints (Text) が表示される.
33MieruPC Project
UCFファイルの編集(3)
• Edit Constraints (Text) をダブルクリックして編集する.
• エディタ画面にて,CLK, ULED のピンを指定する.
34MieruPC Project
論理合成,実装,プログラミングファイルの作成
• main (main.v) を選択する.
• Generate Programming File をダブルクリックする.
– プログラミングファイルの作成,時間を要することがある.
35MieruPC Project
FPGAのコンフィギュレーション(1)
• Digilent ExPort を起動する.
• Initialize Chain でデバイス (XC3S1200E) を認識する.
エラーが表示される場合には,ハードウェアの接続,電源が投入されているか,などを確認すること.
36MieruPC Project
FPGAのコンフィギュレーション(2)
• Browse -> main.bit を選択
• はい (Y) を選択
37MieruPC Project
FPGAのコンフィギュレーション(3)
• コンフィギュレーションが完了する.エラーが表示される場合には,ハードウェアの接続などを確認すること.
38MieruPC Project
MieruPCを用いた動作検証
• FPGAボード(SUZAKU)の赤色LED(発光ダイオード,Light Emitting Diode)が点滅する.
39MieruPC Project
演習問題(1)
module main(CLK, ULED);input CLK;output ULED;reg [31:0] cnt;assign ULED = cnt[21];
always @(posedge CLK) begincnt <= cnt + 1;
endendmodule
Verilog HDLの記述を右に変更するとLEDの点滅はどのように変化するか.
修正して確認すること.
40MieruPC Project
演習問題(2)
• 入力のクロックは 3.6864MHz である.
• 1秒の周期でLEDが点滅を繰り返す様にVerilog HDLを修
正せよ.
• ハードウェアを用いて,点滅の周期が正しいことを検証せよ.
41MieruPC Project
GPIOを用いたLEDの点滅 (sample02)GPIOGPIOを用いたを用いたLEDLEDの点滅の点滅 (sample02)(sample02)Version 2009Version 2009--0505--13 13
吉瀬謙二吉瀬謙二 (東京工業大学)(東京工業大学)
42MieruPC Project
知識ユニット
• MieruPC-2008 GPIOの使い方の基礎 (20分)
• シンプルな拡張ボードの実装 (20分)
「SUZAKUのLEDを点滅させる (sample01)」 を学習済みであること.
このスライドは,講義および演習などのために自由に利用することができます.ただし,スライドに含まれる画像などの取り扱いには注意してください.
43MieruPC Project
MieruPC-2008の汎用I/O (GPIO)
• 16本のGPIO, VDD 5.0V, VCC 3.3V, GND
GPIO[1]GPIO[3]
GPIO[5]
GPIO[7]
GPIO[9]
GPIO[11]
GPIO[13]
GPIO[15]
VDD 5.0V VCC 3.3V
GNDGND
GPIO[2]GPIO[4]
GPIO[6]
GPIO[8]
GPIO[10]
GPIO[12]
GPIO[14]
GPIO[16]
44MieruPC Project
UCFファイル main.ucf の編集
#### GPIO(CPU) ####NET GPIO[1] LOC="N5"; # SUZAKU CON2-07NET GPIO[2] LOC="N4"; # SUZAKU CON2-08NET GPIO[3] LOC="M6"; # SUZAKU CON2-09NET GPIO[4] LOC="M5"; # SUZAKU CON2-10NET GPIO[5] LOC="M3"; # SUZAKU CON2-11NET GPIO[6] LOC="M4"; # SUZAKU CON2-12NET GPIO[7] LOC="L5"; # SUZAKU CON2-13NET GPIO[8] LOC="L6"; # SUZAKU CON2-14NET GPIO[9] LOC="L4"; # SUZAKU CON2-15NET GPIO[10] LOC="L3"; # SUZAKU CON2-16NET GPIO[11] LOC="L2"; # SUZAKU CON2-17NET GPIO[12] LOC="L1"; # SUZAKU CON2-18NET GPIO[13] LOC="C9"; # SUZAKU CON2-20NET GPIO[14] LOC="D9"; # SUZAKU CON2-22NET GPIO[15] LOC="K5"; # SUZAKU CON2-23NET GPIO[16] LOC="K6"; # SUZAKU CON2-24
• 汎用I/O(GPIO)は GPIO[16:1] として利用する.
• main.ucf を編集して以下を追加する.
45MieruPC Project
MieruPC-2008の汎用I/O (GPIO)
• GPIO[11] を 0V に設定する.
• GPIO[15] を制御することでLEDを点滅させる.
GPIO[1]GPIO[3]
GPIO[5]
GPIO[7]
GPIO[9]GPIO[11]
GPIO[13]
GPIO[15]
VDD 5.0V VCC 3.3V
GNDGND
GPIO[2]GPIO[4]
GPIO[6]
GPIO[8]
GPIO[10]
GPIO[12]
GPIO[14]
GPIO[16]
LED
300Ω程度
46MieruPC Project
Verilog HDLソースコード main.v の編集
module main(CLK, ULED, GPIO);input CLK;output ULED;output [16:1] GPIO;reg [31:0] cnt;assign ULED = cnt[20];
assign GPIO[11] = 0;assign GPIO[15] = cnt[19];
always @(posedge CLK) begincnt <= cnt + 1;
endendmodule
sample01 の main.v をベースに修正.
CLKは,3.6864MHz の入力クロックULEDは,ユーザ制御のLEDGPIOは,汎用I/O
47MieruPC Project
論理合成,実装,プログラミングファイルの作成
• sample01 をベースに main.v と main.ucf を編集し,プロ
グラミングファイルを作成する.
48MieruPC Project
MieruPCを用いた動作検証
• ユニバーサル基板を用いて拡張ボードを実装する.
拡張ボード(表)
拡張ボード(裏) コンフィギュレーションして動作確認をおこなう.
49MieruPC Project
リセット付きのLED点滅回路 (sample03)リセット付きのリセット付きのLEDLED点滅回路点滅回路 (sample03)(sample03)Version 2009Version 2009--0505--13 13
吉瀬謙二吉瀬謙二 (東京工業大学)(東京工業大学)
50MieruPC Project
知識ユニット
• MieruPC-2008 リセットスイッチの使い方 (20分)
「SUZAKUのLEDを点滅させる (sample01)」 を学習済みであること.
このスライドは,講義および演習などのために自由に利用することができます.ただし,スライドに含まれる画像などの取り扱いには注意してください.
51MieruPC Project
UCFファイル main.ucf の編集
NET RST_X LOC="A14";
• リセット信号 RST_X を追加する.
52MieruPC Project
Verilog HDLソースコード main.v の編集
module main(CLK, RST_X, ULED);input CLK;input RST_X;output ULED;reg [31:0] cnt;assign ULED = cnt[20];
always @(posedge CLK or negedge RST_X) beginif(!RST_X)
cnt <= 0;else
cnt <= cnt + 1;end
endmodule
sample01 の main.v をベースに修正.
CLKは,3.6864MHz の入力クロックULEDは,ユーザ制御のLEDRST_Xは,リセット信号
53MieruPC Project
MieruPCを用いた動作検証
• FPGAボード(SUZAKU)の赤色LED(発光ダイオード,Light Emitting Diode)が点滅する.
• リセットスイッチを押すと,リセットされ,LEDが点灯する.
54MieruPC Project
ブザーの取り付けと利用方法 (sample06)ブザーの取り付けと利用方法ブザーの取り付けと利用方法 (sample06)(sample06)Version 2009Version 2009--0505--26 26
吉瀬謙二吉瀬謙二 (東京工業大学)(東京工業大学)
55MieruPC Project
知識ユニット
• ブザーと抵抗の取り付け (20分)
• ブザーの使い方 (20分)
このスライドは,講義および演習などのために自由に利用することができます.ただし,スライドに含まれる画像などの取り扱いには注意してください.
56MieruPC Project
ブザーの取り付け(オプションです)
• MieruPCのマザーボードにはブザーを取り付けることができます.
– 秋月電子商会 電子ブザー [HDB06LFPN] を想定しています.
– 33Ω程度の抵抗が必要です.
• 33Ω程度の抵抗を接続してください.
• ブザーを取り付けます.極性があるので注意してください.下図では,右がプラス,左がマイナスです.
+-
57MieruPC Project
Verilog HDLソースコード main.v と ucfファイル
module main(CLK, RST_X, ULED, BUZ);input CLK;input RST_X;output ULED;output BUZ;
reg [31:0] cnt;assign ULED = cnt[20];assign BUZ = cnt[20] & cnt[19] & cnt[18] & cnt[17];
always @(posedge CLK or negedge RST_X) beginif(!RST_X)
cnt <= 0;else
cnt <= cnt + 1;end
endmodule
NET CLK LOC="U10"; NET RST_X LOC="A14"; NET ULED LOC="T3"; NET BUZ LOC="K12";
BUZを1とすることでブザーが鳴ります.
58MieruPC Project
PS/2キーボードからの入力 (sample04)PS/2PS/2キーボードからの入力キーボードからの入力 (sample04)(sample04)Version 2009Version 2009--0505--25 25
吉瀬謙二吉瀬謙二 (東京工業大学)(東京工業大学)
59MieruPC Project
知識ユニット
• PS/2接続キーボード(シリアル転送)の理解 (60分)
• シンプルなキーボードモジュールの実装 (60分)
このスライドは,講義および演習などのために自由に利用することができます.ただし,スライドに含まれる画像などの取り扱いには注意してください.
60MieruPC Project
PS/2キーボードコネクタ(Mini-DIN 6ピン)
• 1 : KEY_IN• 3 : GND• 4 : 5V• 5 : KEY_CLK
1 (KEY_IN)2
3 (GND)
4 (5V)
5 (KEY_CLK)
6
4 (5V) 3 (GND)
1 (KEY_IN)5 (KEY_CLK)
61MieruPC Project
PS/2キーボードからシステムへの信号
St(0) D0 D1 D2 D3 D4 D5 D6 D7 Pa Sp(1)
• KEY_CLK, KEY_IN はキーボードが生成する点に注意.
• 入力データはクロックの立ち下がりで取得する.
KEY_CLK
KEY_IN
62MieruPC Project
Ps2keyboardモジュールのタイミングとインタフェース
St(0) D0 D1 D2 D3 D4 D5 D6 D7 Pa Sp(1)
KEY_CLK
KEY_IN
dataKEY_DOUT
KEY_READY
negedge ps2_clock
PS2KBD
module PS2KBD01(RST_X, KEY_CLK, KEY_IN, KEY_DOUT, KEY_READY)input RST_X, KEY_CLK, KEY_IN;output [7:0] KEY_DOUT;output KEY_READY;
RST_XKEY_CLKKEY_IN
KEY_DOUTKEY_READY
63MieruPC Project
Verilog HDLソースコード main.v の編集
module main(CLK, RST_X, ULED, KEY_IN, KEY_CLK);input CLK;input RST_X;input KEY_IN; // Keyboard input datainput KEY_CLK; // Keyboard input clockoutput ULED;
reg led;
wire key_ready;wire [7:0] key_dout;assign ULED = led;
always @(posedge CLK or negedge RST_X) beginif(!RST_X) led <= 0;else if(key_ready) begin
if(key_dout==8'h1c) led <= 1; // 'A' is pushedif(key_dout==8'h32) led <= 0; // 'B' is pushed
endend
PS2KBD01 ps2kbd(RST_X, KEY_CLK, KEY_IN, key_dout, key_ready);endmodule
64MieruPC Project
Verilog HDLソースコード keyboard.v の編集
mod
ule
PS2K
BD01
(RST
_X, K
EY_C
LK, K
EY_I
N, K
EY_D
OU
T, K
EY_R
EAD
Y);
inpu
t RS
T_X
, KEY
_CLK
, KEY
_IN
;ou
tput
[7:0
] KEY
_DO
UT;
outp
ut K
EY_R
EAD
Y;
reg
KEY_
REA
DY;
re
g[7
:0] K
EY_D
OU
T;re
g[4
:0] d
ata_
cnt;
alwa
ys @
(neg
edge
RST_
X o
r ne
gedg
eKE
Y_CL
K) b
egin
if (!
RST_
X) b
egin
KEY_
REA
DY
<= 0
;
KE
Y_D
OU
T <=
0;
data
_cnt
<= 0
;en
del
se b
egin
if (d
ata_
cnt=
=0 &
& KE
Y_IN
==0)
beg
in /
/ st
art
bit
data
_cnt
<= 1
;en
dif
(dat
a_cn
t!=0
) beg
in
if (d
ata_
cnt<
9) b
egin
//
rece
ive
8 bi
t da
taKE
Y_D
OU
T <=
{KEY
_IN
, KEY
_DO
UT[
7:1]
};da
ta_c
nt<=
dat
a_cn
t+
1;en
d el
se if
(dat
a_cn
t==9
&&
KEY_
DO
UT!
=8'h
f0) b
egin
//p
arit
yda
ta_c
nt<=
dat
a_cn
t+
1;KE
Y_RE
AD
Y <=
1;
end
else
if (d
ata_
cnt=
=10
&& K
EY_D
OU
T!=8
'hf0
) beg
in /
/ st
op b
itda
ta_c
nt<=
0;
KEY_
REA
DY
<= 0
;en
del
se if
(dat
a_cn
t==2
1) d
ata_
cnt
<= 0
; //
for
brea
k co
deel
se d
ata_
cnt
<= d
ata_
cnt
+ 1;
end
end
end
endm
odul
e
65MieruPC Project
UCFファイル main.ucf の編集
NET CLK LOC="U10"; NET ULED LOC="T3"; NET RST_X LOC="A14";
NET KEY_IN LOC="A16" | IOSTANDARD=LVTTL | SLEW=SLOW; NET KEY_CLK LOC="C14" | IOSTANDARD=LVTTL | SLEW=SLOW; NET KEY_CLK CLOCK_DEDICATED_ROUTE = FALSE;
66MieruPC Project
MieruPCを用いた動作検証
• キーボードのAを押すと,FPGAボード(SUZAKU)のLEDが消える.
• キーボードのBを押すと,FPGAボードのLEDが点灯する.
67MieruPC Project
補足
• PS/2キーボードは,キーが押されたときにメークコードを出
力し,キーが離されたときにブレークコードを出力する.
• if(key_dout==8‘h1c) led <= 1; のコードは,Aのメークコード 8’h1c が得られた時に,LEDの出力を変更する.
• メークコードとアスキーコードは対応しないので注意が必要.
• 実用的なキーボードコントローラとして利用するためには,アスキーコードへの変換,チャタリング対策などが必要です.
68MieruPC Project
液晶モジュールのテスト (sample05)液晶モジュールのテスト液晶モジュールのテスト (sample05)(sample05)Version 2009Version 2009--0505--25 25
吉瀬謙二吉瀬謙二 (東京工業大学)(東京工業大学)
69MieruPC Project
知識ユニット
• 液晶モジュールの使い方 (60分)
このスライドは,講義および演習などのために自由に利用することができます.ただし,スライドに含まれる画像などの取り扱いには注意してください.
70MieruPC Project
Verilog HDLソースコード main.v の編集
`define LCDPUT_WAIT 1000000module main(CLK, RST_X, ULED, LCD);
input CLK, RST_X;output ULED, LCD;
reg [31:0] bcnt; // counter for LCDPUT modulereg [7:0] data; //reg WE;
wire ready;assign ULED = ready;
always @(posedge CLK or negedge RST_X) beginif(!RST_X) begin
WE <= 0;bcnt <= 0;data <= 8'h40;
end else beginbcnt <= bcnt + 1;if(bcnt>`LCDPUT_WAIT && ready) begin
data <= data + 1;WE <= 1;bcnt <= 0;
end else if(WE) WE <= 0;end
end
LCDPUTC lcdc(CLK, RST_X, data, WE, ready, LCD);endmodule
71MieruPC Project
Verilog HDLソースコード lcdput.v の編集(1)m
odul
e LC
DPU
TC(C
LK, R
ST_X
, DA
TA, W
E, R
EAD
Y, T
XD
);in
put
CLK;
//
inpu
t cl
ock
inpu
t
RS
T_X
; //
inpu
t re
set
inpu
t
W
E;
//
Wri
te E
nabl
ein
put
[7:0
] DA
TA;
outp
ut
RE
AD
Y; /
/ fl
ag t
o in
dica
te t
he m
odul
e is
rea
dy o
rno
tou
tput
TXD
; /
/ Tr
ansm
it e
Xch
ange
Dat
a
reg
REA
DY;
//
reg
init
; //
init
==1
if t
he in
itia
lize
mod
ere
g[5
:0]
pos
; /
/re
g[7
:0]
dou
t; /
/ 1b
yte
asci
idat
a to
be
disp
laye
dre
g[7
:0]
dt;
/
/ da
ta o
ut s
ave
for
DA
TA1
wire
lcd_
read
y;wi
re T
XD
_X;
wi
re [1
35:0
] ini
t_cm
d; /
/ LC
D in
it c
omm
and
assi
gn T
XD
= ‾T
XD
_X;
assi
gn in
it_c
md
= {{
8'h2
7, 8
'h0d
},
/
/ '[
0d]
{8'h
43, 8
'h4c
, 8'h
57, 8
'h0d
}, //
CLW
:
whit
e ch
ar{8
'h44
, 8'h
53, 8
'h30
, 8'h
0d},
// D
S0[0
d]:
{8'h
50, 8
'h53
, 8'h
30, 8
'h0d
}, //
PS0
[0d]
:{8
'h45
, 8'h
52, 8
'h0d
}};
/
/ ER
[0d]
: er
ace
page
alwa
ys @
(pos
edge
CLK
or n
eged
geRS
T_X
) beg
inif
(!RST
_X) b
egin
init
<=
1;RE
AD
Y <=
0;
pos
<=
0;en
d el
se if
(init
==1)
beg
in /
/ in
itia
l com
man
dif
(lcd_
read
y) b
egin
if(p
os< 1
7) b
egin
pos
<= p
os+
1;do
ut<=
init
_cm
d>>
{16-
pos,
3'h
0};
end
else
beg
inin
it <
= 0;
REA
DY
<= 1
;en
den
den
d el
se b
egin
//
disp
lay
one
char
acte
rif
(REA
DY
&& W
E) b
egin
REA
DY
<= 0
;po
s <
= 0;
dt<=
DA
TA;
end
else
if(!R
EAD
Y&&
lcd_
read
y) b
egin
//
HW
'[dt
]'[0
d] t
o pr
int
pos
<= p
os+
1;if
(pos
==0)
dout
<= 8
'h48
; //
Hel
se if
(pos
==1)
dou
t<=
8'h
57; /
/ W
else
if(p
os==
2) d
out
<= 8
'h27
; //
'el
se if
(pos
==3)
dou
t<=
dt;
/
/ da
ta t
o be
dis
play
edel
se if
(pos
==4)
dou
t<=
8'h
27; /
/ '
else
if(p
os==
5) d
out
<= 8
'h0d
; //
[0d]
else
REA
DY
<= 1
;en
den
den
d
LCD
PUT1
B lc
dp1b
(CLK
, RST
_X, ‾
REA
DY,
dou
t, lc
d_re
ady,
TX
D_X
);en
dmod
ule
72MieruPC Project
Verilog HDLソースコード lcdput.v の編集(2)
`def
ine
LCD
PUT1
B_W
AIT
192
//
3.68
64M
Hz
cloc
k, 1
9200
bps
(368
6400
/192
00=1
92)
mod
ule
LCD
PUT1
B(CL
K, R
ST_X
, WE,
DA
TA, R
EAD
Y, T
XD
);in
put
CLK;
//
inpu
t cl
ock
inpu
t
RS
T_X
; //
inpu
t re
set
inpu
t
W
E;
//
Wri
te E
nabl
ein
put
[7:0
] DA
TA;
// in
put
1byt
e da
taou
tput
REA
DY;
//
flag
to
indi
cate
the
mod
ule
is r
eady
or
not
outp
ut
TX
D;
//
Tran
smit
eX
chan
geD
ata
reg
REA
DY;
reg
TXD
;re
g[7
:0]
mem
; //
buf
fer
to s
ave
the
inpu
t da
tare
g[1
5:0]
wcn
t; /
/ wa
it_c
ycle
_cou
ntre
g[3
:0]
cnt
; //
cou
nter
to
rem
embe
r th
e se
nd d
ata
bit
alwa
ys @
(neg
edge
RST_
X o
r po
sedg
eCL
K) b
egin
if(!R
ST_X
) beg
inRE
AD
Y <=
1; /
/ th
is m
odul
e is
rea
dy.
TXD
<=
1;
end
else
if(R
EAD
Y) b
egin
if(W
E) b
egin
REA
DY
<= 0
;TX
D
<= 0
; //
star
t bi
tm
em<=
DA
TA;
wcnt
<= 0
;cn
t<=
0;
end
end
else
beg
in /
/ th
is m
odul
e is
bus
y.if
(wcn
t< `
LCD
PUT1
B_W
AIT
) wcn
t<=
wcn
t+
1;el
se b
egin
wcnt
<= 0
;TX
D <
= m
em[0
];m
em<=
{1'b
1, m
em[7
:1]}
;cn
t<=
cnt
+ 1;
if(c
nt>=
10)
REA
DY
<= 1
; //
fini
sh t
he d
ata
send
end
end
end
endm
odul
e
73MieruPC Project
MieruPCを用いた動作検証
• 液晶モジュールにA,B,C … という文字が表示される.
• リセットにより画面がクリアされる.