40
Character LCD Controller Character LCD Controller 구구 구구 Lecture #13

Character LCD Controller 구현

  • Upload
    niles

  • View
    191

  • Download
    0

Embed Size (px)

DESCRIPTION

Character LCD Controller 구현. Lecture #13. 학습목표. 다양한 실습을 통해 VHDL 의 응용능력을 기른다 기본적인 타이밍도의 이해 및 응용능력을 배양한다 주로 사용되는 출력 장치인 Character LCD 장치의 특성을 이해한다. 강의순서. Character LCD 장치 PXA255-FPGA – LCD 회로도 구성 Character LCD Controller 설계 Character LCD Controller 테스트. - PowerPoint PPT Presentation

Citation preview

Page 1: Character LCD Controller  구현

Character LCD Controller Character LCD Controller 구현구현

Lecture #13

Page 2: Character LCD Controller  구현

2

학습목표학습목표 다양한 실습을 통해 VHDL 의 응용능력을 기른다 기본적인 타이밍도의 이해 및 응용능력을 배양한다 주로 사용되는 출력 장치인 Character LCD 장치의 특성을

이해한다

Page 3: Character LCD Controller  구현

3

강의순서강의순서 Character LCD 장치 PXA255-FPGA – LCD 회로도 구성 Character LCD Controller 설계 Character LCD Controller 테스트

Page 4: Character LCD Controller  구현

4

Output Device – Character Output Device – Character LCD (1)LCD (1)

Character LCD ASCII 코드를 받아 문자를 출력하는 LCD 장치 임베디드 장치에 가장 많이 사용되는 출력 장치

휴인스 교재 p.327 ~p.356 참고

Page 5: Character LCD Controller  구현

5

Output Device – Character Output Device – Character LCD (2)LCD (2)

Character LCD 내부 모듈 구조

Page 6: Character LCD Controller  구현

6

Output Device – Character Output Device – Character LCD (3)LCD (3)

핀번호 기호 입 / 출력 기능

1 VSS 입력 0V (GND)

2 VDD 입력 +5V

3 VO 입력 가변저항 10K 를 달아서 LCD 글자의 밝기를 조절

4 RS 입력 LCD 자체의 명령과 데이터 입력을 제어 .   ‘0’= 명령입력 ‘ 1’= 데이터입력

5 R/W 입력 ‘1’= Read,  '0'= Write

6 E 입력 Enable 신호로 명령이 하나 입력될 때마다 펄스를 하나씩 내주어야 한다 .

7 DB0

양방향 데이터 버스

8 DB1

9 DB2

10 DB3

11 DB4

12 DB5

13 DB6

14 DB7

Character LCD 의 핀번호 (HD44780, HD44780A) 16 Characters x 2 Lines

Page 7: Character LCD Controller  구현

7

Output Device – Character Output Device – Character LCD (4)LCD (4)

HD44780 의 내부 블록도

Page 8: Character LCD Controller  구현

8

Output Device – Character Output Device – Character LCD (5)LCD (5)

내부 레지스터 IR (Instruction Register)

D.D.RAM 과 C.G.RAM 에 대한 주소정보와 클리어 , 커서이동에 대한 명령코드를 가지고 있다

DR(Data Register) D.D.RAM 과 C.G.RAM 에 데이터를 읽거나 써넣을 때

사용되는 레지스터 AC(Address Counter)

D.D.RAM 과 C.G.RAM 의 어드레스를 지정할 때 사용됨 D.D.RAM(Display Data RAM)

8 비트 문자코드의 디스플레이 데이터를 가지고있으며 최대용량은 80x8 비트인 80 문자이다

C.G.ROM(Character Generator ROM) 문자코드를 저장하고 있다

C.G.RAM(Character Generator RAM) 사용자가 문자를 새로이 만들 때 사용되는 RAM 이다

Page 9: Character LCD Controller  구현

9

Output Device – Character Output Device – Character LCD (6)LCD (6)

텍스트 LCD 모듈의 제어

기 능제어신호 제어 명령

Execute TimeRS R/W D7 D6 D5 D4 D3 D2 D1 D0

Clear Display 0 0 0 0 0 0 0 0 0 1 1.64mS

Return Home 0 0 0 0 0 0 0 0 1 0 40uS

Entry Mode Set 0 0 0 0 0 0 0 1 I/D S 40uS

Display on/off Control 0 0 0 0 0 0 1 D C S 40uS

Cursor or Display Shift 0 0 0 0 0 1 S/C R/L 0 0 40uS

Function Set 0 0 0 0 1D/L

N F 0 0 40uS

Set CG RAM Address 0 0 0 1 CG RAM Address 40uS

Set DD RAM Address 0 0 1 DD RAM Address 40uS

Read Busy Flag and Address

0 1 BF Address Counter 40uS

Data Write to CG RAM or DD RAM

1 0 Write Address 40uS

Data Read to CG RAM or DD RAM

1 1 Read Address 40uS

Page 10: Character LCD Controller  구현

10

Output Device – Character Output Device – Character LCD (7)LCD (7)

Display Data RAM 의 주소와 LCD 의 문자위치의 관계 D.D.RAM 은 8 비트 문자코드에 상응하는 디스플레이 데이터를

저장한다 80 개의 문자를 저장하며 , 아래는 16 문자 2 라인 LCD 의

경우를 나타낸 것임 첫 번째 라인의 끝과 두 번째 라인의 시작의 주소가 연결되지

않으므로 각각의 라인이 끝나게 되면 D.D.RAM 의 주소를 새로이 설정해야 한다

열위치 -> 1 2 3 4 5 6 7 8 9 10

11

12

13 14

15

16

1 행 -> 00 01

02

03

04

05

06 07

08

09

0A

0B

0C 0D

0E

0F

2 행 -> 40 41

42

43

44

45

46 47

48

49

4A

4B

4C 4D

4E

4FD.D.RAM 의

주소

Page 11: Character LCD Controller  구현

11

Output Device – Character Output Device – Character LCD (8)LCD (8)

사용자 정의 문자 출력하기1. 사용자 정의 문자 패턴의 크기

5x7 8 바이트 정보로 표현2. IR 레지스터에 CG-RAM

주소 설정3. DR 레지스터에 문자 패턴

정보 1 바이트 설정4. 8 바이트 정보 입력이 완료될

때까지 2, 3 번 과정 반복5. DD-RAM 에 출력하고자 하는

사용자 정의 문자의 코드(0x00~ 0x07) 을 설정

6. 사용자 정의 문자 출력

Page 12: Character LCD Controller  구현

12

Output Device – Character Output Device – Character LCD (9)LCD (9)

Character LCD 의 초기화 과정 Function Set( 이진수 :001x xx00). Display ON/OFF Control(0000 1xxx) Setting. Entry Mode Set(0000 01xx). DD RAM 주소 Setting. 문자 데이터를 연속으로 보낸다

( 예 )process( LCD_mode )begin case LCD_mode is when "0001" => data<="00111100"; -- Function Setting : D/L=1(8bits Interface),NF=11(5x7 문자 2 lines) when "0010" => data<="00111100"; when "0011" => data<="00111100"; when "0100" => data<="00111100"; when "0101" => data<="00000001"; -- Display Clear : LCD 화면 지움 , 커서위치는 홈 , DDRAM 의 주소카운터는 0 when "0110" => data<="00000110"; -- Entry Mode Setting : I/D=1, S=0 디스플레이는 시프트되지 않음 . when "0111" => data<="00001100"; -- Display On/Off setting : DCS=100 ( 모든 글자가 나타남 . 커서는 없음 .) when "1000" => data<= Dsp_Data; -- Display Data when others => data<="00000000"; end case;end process;

Page 13: Character LCD Controller  구현

13

Output Device – Character LCD Output Device – Character LCD (10)(10)

Timing Diagram(Write)

min=60ns min=20ns

min=450ns

min=195ns min=10ns

min=1000ns

tAS : Address Setup TimetAH : Address Hold TimePWEH : Enable Pulse WidthtDSW : Data Setup TimetH : Data Hold TimetcycE : Enable Cycle Time

tAS : Address Setup TimetAH : Address Hold TimePWEH : Enable Pulse WidthtDSW : Data Setup TimetH : Data Hold TimetcycE : Enable Cycle Time

Page 14: Character LCD Controller  구현

14

Output Device – Character LCD Output Device – Character LCD (11)(11)

Timing Diagram(Read)

min=60ns min=20ns

min=450ns

max=360ns min=5ns

min=1000ns

tAS : Address Setup TimetAH : Address Hold TimePWEH : Enable Pulse WidthtDDR : Data Delay TimetH : Data Hold TimetcycE : Enable Cycle Time

tAS : Address Setup TimetAH : Address Hold TimePWEH : Enable Pulse WidthtDDR : Data Delay TimetH : Data Hold TimetcycE : Enable Cycle Time

Page 15: Character LCD Controller  구현

15

PXA255-FPGA – LCD PXA255-FPGA – LCD 회로 구성 회로 구성 (1)(1)

Page 16: Character LCD Controller  구현

16

PXA255-FPGA – LCD PXA255-FPGA – LCD 회로 구성 회로 구성 (2)(2)

Page 17: Character LCD Controller  구현

17

PXA255-FPGA – LCD PXA255-FPGA – LCD 회로 구성 회로 구성 (3)(3)

Page 18: Character LCD Controller  구현

18

PXA255-FPGA – LCD PXA255-FPGA – LCD 회로 구성 회로 구성 (4)(4)

Page 19: Character LCD Controller  구현

19

Character LCD Controller Character LCD Controller 설계 설계 (1)(1) Character LCD Controller 동작 모드

단독 모드 (FPGA Mode Dip S/W – off, on) PXA255-FPGA 보드의 8-bit dip switch 값을 읽어 일련의

메시지와 함께 LCD 장치에 출력 연동 모드 (FPGA Mode Dip S/W – on, on)

PXA255-Pro3 main board 에서 전송된 I/O 신호를 받아 LCD 장치에 출력

FPGA Mode Dip S/W 설정에 따라 동작 모드를 결정

Page 20: Character LCD Controller  구현

20

Character LCD Controller Character LCD Controller 설계 설계 (2)(2) Character LCD Controller 구성

io_top.bdf - top-level block diagram file

Page 21: Character LCD Controller  구현

21

Character LCD Controller Character LCD Controller 설계 설계 (3)(3) Character LCD Controller 구성요소 설계

lcd_2x16.vhd – 단독 동작 모드를 설계한 VHDL 파일 dip_sw.vhd – 8-bit dip switch 값을 읽는 구성요소를

설계한 VHDL 파일 iom_mode.vhd – 연동 동작 모드를 설계한 VHDL 파일 mux_iom.vhd – FPGA Mode Dip S/W 설정에 따라 I/O 을

선택하는 multiplexing 기능을 설계한 VHDL 파일 상기의 VHDL 파일 소스는 별도의 유인물 참조

Page 22: Character LCD Controller  구현

22

Quartus II Project Quartus II Project 파일 생성 파일 생성 (1)(1) New Project Wizard 를 통한

Quartus II Project 생성하기 File 메뉴에서 New Project

Wizard 를 실행하여 새로운 프로젝트를 생성

Page 23: Character LCD Controller  구현

23

Quartus II Project Quartus II Project 파일 생성 파일 생성 (2)(2) New Project Wizard ①

Project 를 설치할 경로 와 프로젝트의 이름과 top-level entity 이름을 지정

Page 24: Character LCD Controller  구현

24

Quartus II Project Quartus II Project 파일 생성 파일 생성 (3)(3) New Project Wizard ②

오른쪽의 그림은 다음 단계인 설계된 파일이 있으면 추가 하는 단계

추가할 파일이 프로젝트 디렉토리에 있다면 [ADD ALL] 버튼을 클릭하면 모두 추가

[...] 버튼을 클릭하여 그림과 같이 4 개의 파일을 추가

[Next] 버튼을 눌러 다음 설정으로 이동

Page 25: Character LCD Controller  구현

25

Quartus II Project Quartus II Project 파일 생성 파일 생성 (4)(4) New Project Wizard ③

EDA Tool 에 대한 설정을 하는 부분 Thirth party EDA tool 을 사용한다면 설정하고 , 사용하지

않는다면 [Next] 버튼을 눌러 다음 설정으로 이동

Page 26: Character LCD Controller  구현

26

Quartus II Project Quartus II Project 파일 생성 파일 생성 (5)(5) New Project Wizard ④

Device Family 를 설정하는 부분 PXA255-FPGA 보드는 Cyclone 을 사용

Page 27: Character LCD Controller  구현

27

Quartus II Project Quartus II Project 파일 생성 파일 생성 (6)(6) New Project Wizard ⑤

PXA255-FPGA 에는 EP1C12Q240C8 을 사용하고 있으므로 해당 Device 를 선택

오른쪽 메뉴의 Filter 사용 하면 쉽게 선택할 수 있다

Page 28: Character LCD Controller  구현

28

Quartus II Project Quartus II Project 파일 생성 파일 생성 (7)(7) New Project Wizard ⑥

지금까지 설정을 확인하는 단계 프로젝트경로와 프로젝트 이름 , top-level design entity 이름 , 추가한

파일의 개수를 확인

Page 29: Character LCD Controller  구현

29

Quartus II Project Quartus II Project 파일 생성 파일 생성 (8)(8) Project 생성

Page 30: Character LCD Controller  구현

30

Quartus II Project Quartus II Project 파일 생성 파일 생성 (9)(9) Pin Assignment

Pin assignment 메뉴를 이용하여 pin 정보 입력

Pin Assign File 수정 - io_top.qps 파일을 열어서 옆 그림에 제시된 정보를 고려하여 핀 매핑에 대한 정보를 수정

Page 31: Character LCD Controller  구현

31

Quartus II Project Quartus II Project 파일 생성 파일 생성 (10)(10)

Page 32: Character LCD Controller  구현

32

Quartus II Project Quartus II Project 파일 생성 파일 생성 (11)(11) 사용하지 않는 핀들에 대한 설정

Device 설정 창에서 Device & Pin Options 을 선택

Page 33: Character LCD Controller  구현

33

Quartus II Project Quartus II Project 파일 생성 파일 생성 (12)(12) Unused Pin 에 대한 설정

Reserve all unused pins 에서 As Input, tri stated 를 선택 외부에 아무런 영향을 주지 않기 위함

Page 34: Character LCD Controller  구현

34

Quartus II Project Quartus II Project 파일 생성 파일 생성 (13)(13) Configuration 에 대한 설정

그림과 같이 Configuration scheme 와 device 를 설정

Page 35: Character LCD Controller  구현

35

Quartus II Project Quartus II Project 파일 생성 파일 생성 (14)(14) 기타 설정

General 탭에서 Auto-restart configuration after error 을 선택 FPGA 에서 에러가 발생하면 자동으로 다시 Configuration 하게 설정

Page 36: Character LCD Controller  구현

36

Quartus II Project Quartus II Project 파일 생성 파일 생성 (15)(15) Compilation

지금까지의 설정이 정상적으로 이루어졌다면 Processing 메뉴에서 Start Compilation 을 실행

컴파일이 완료되면 ‘ Full compilation was successful‘ 이라는 메시지를 보여주며 컴파일이 끝나게 된다

Page 37: Character LCD Controller  구현

37

Quartus II Project Quartus II Project 파일 생성 파일 생성 (16)(16) Configuration

지금까지의 과정이 모두 끝났다면 FPGA 로 Configuration 을 하여야 한다

Programmer 실행 - EPC2 에 다운로드 하거나 FPGA 에 Configuration 하기 위해서 Programmer 를 실행

Page 38: Character LCD Controller  구현

38

Quartus II Project Quartus II Project 파일 생성 파일 생성 (17)(17) Configuration 파일 불러오기

Byteblaster 케이블이 JTAG 포트에 연결된 상태에서 [Auto Detect] 를 하면 EPC2 와 EP1C6 두 개의 장치를 검출

<none> 를 더블 클릭하여 EPC2 에는 io_top.pof 파일을 , EP1C6에는 io_top.sof 파일을 설정한다

Page 39: Character LCD Controller  구현

39

Quartus II Project Quartus II Project 파일 생성 파일 생성 (18)(18) Configuration

Program/Configure 에 체크 옵션에 체크를 한다 [Start] 버튼을 클릭하면 체크한 항목에 대해서만 Download 및

Configuration 을 수행한다 [Start] 버튼을 클릭하여 실행한다

Page 40: Character LCD Controller  구현

40

Character LCD Controller Character LCD Controller 테스트테스트

디바이스 드라이버 설치 및 테스트 프로그램 실행 FPGA Mode Dip S/W 를 (on, on) 으로 설정하여 연동 모드

선택 디바이스 드라이버와 테스트 프로그램을 타겟 보드에

다운로드하고 실행시킨다

# mknod /dev/TXTLCD c 242 0

# insmod lcd_driver.o

# chmod 777 test_lcd

# ./test_fnd