420 likes | 866 Views
Character LCD Controller 구현. Lecture #13. 학습목표. 다양한 실습을 통해 VHDL 의 응용능력을 기른다 기본적인 타이밍도의 이해 및 응용능력을 배양한다 주로 사용되는 출력 장치인 Character LCD 장치의 특성을 이해한다. 강의순서. Character LCD 장치 PXA255-FPGA – LCD 회로도 구성 Character LCD Controller 설계 Character LCD Controller 테스트.
E N D
Character LCD Controller 구현 Lecture #13
학습목표 • 다양한 실습을 통해 VHDL의 응용능력을 기른다 • 기본적인 타이밍도의 이해 및 응용능력을 배양한다 • 주로 사용되는 출력 장치인 Character LCD 장치의 특성을 이해한다
강의순서 • Character LCD 장치 • PXA255-FPGA – LCD 회로도 구성 • Character LCD Controller 설계 • Character LCDController 테스트
Output Device – Character LCD (1) • Character LCD • ASCII 코드를 받아 문자를 출력하는 LCD 장치 • 임베디드 장치에 가장 많이 사용되는 출력 장치 • 휴인스 교재 p.327 ~p.356 참고
Output Device – Character LCD (2) • Character LCD 내부 모듈 구조
Output Device – Character LCD (3) • Character LCD의 핀번호(HD44780, HD44780A) • 16 Characters x 2 Lines
Output Device – Character LCD (4) • HD44780의 내부 블록도
Output Device – Character 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이다
Output Device – Character LCD (6) • 텍스트 LCD모듈의 제어
Output Device – Character LCD (7) • Display Data RAM의 주소와 LCD의 문자위치의 관계 • D.D.RAM은 8비트 문자코드에 상응하는 디스플레이 데이터를 저장한다 • 80개의 문자를 저장하며, 아래는 16문자 2라인 LCD의 경우를 나타낸 것임 • 첫 번째 라인의 끝과 두 번째 라인의 시작의 주소가 연결되지 않으므로 각각의 라인이 끝나게 되면 D.D.RAM의 주소를 새로이 설정해야 한다 D.D.RAM의 주소
Output Device – Character LCD (8) • 사용자 정의 문자 출력하기 • 사용자 정의 문자 패턴의 크기 5x7 8 바이트 정보로 표현 • IR 레지스터에 CG-RAM 주소 설정 • DR 레지스터에 문자 패턴 정보 1 바이트 설정 • 8 바이트 정보 입력이 완료될 때까지 2, 3번 과정 반복 • DD-RAM에 출력하고자 하는 사용자 정의 문자의 코드(0x00~ 0x07)을 설정 • 사용자 정의 문자 출력
Output Device – Character 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;
min=20ns min=60ns min=450ns min=195ns min=10ns min=1000ns Output Device – Character LCD (10) tAS : Address Setup Time tAH : Address Hold Time PWEH : Enable Pulse Width tDSW : Data Setup Time tH : Data Hold Time tcycE : Enable Cycle Time • Timing Diagram(Write)
min=60ns min=20ns min=450ns max=360ns min=5ns min=1000ns Output Device – Character LCD (11) tAS : Address Setup Time tAH : Address Hold Time PWEH : Enable Pulse Width tDDR : Data Delay Time tH : Data Hold Time tcycE : Enable Cycle Time • Timing Diagram(Read)
Character LCD Controller 설계 (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 설정에 따라 동작 모드를 결정
Character LCD Controller 설계 (2) • Character LCD Controller 구성 • io_top.bdf - top-level block diagram file
Character LCD Controller 설계 (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 파일 소스는 별도의 유인물 참조
Quartus II Project 파일 생성 (1) • New Project Wizard를 통한 Quartus II Project 생성하기 • File 메뉴에서 New Project Wizard를 실행하여 새로운 프로젝트를 생성
Quartus II Project 파일 생성 (2) • New Project Wizard ① • Project를 설치할 경로 와 프로젝트의 이름과 top-level entity 이름을 지정
Quartus II Project 파일 생성 (3) • New Project Wizard ② • 오른쪽의 그림은 다음 단계인 설계된 파일이 있으면 추가 하는 단계 • 추가할 파일이 프로젝트 디렉토리에 있다면 [ADD ALL] 버튼을 클릭하면 모두 추가 • [...] 버튼을 클릭하여 그림과 같이 4개의 파일을 추가 • [Next]버튼을 눌러 다음 설정으로 이동
Quartus II Project 파일 생성 (4) • New Project Wizard ③ • EDA Tool 에 대한 설정을 하는 부분 • Thirth party EDA tool을 사용한다면 설정하고, 사용하지 않는다면 [Next]버튼을 눌러 다음 설정으로 이동
Quartus II Project 파일 생성 (5) • New Project Wizard ④ • Device Family를 설정하는 부분 • PXA255-FPGA보드는 Cyclone을 사용
Quartus II Project 파일 생성 (6) • New Project Wizard ⑤ • PXA255-FPGA에는 EP1C12Q240C8을 사용하고 있으므로 해당 Device를 선택 • 오른쪽 메뉴의 Filter사용 하면 쉽게 선택할 수 있다
Quartus II Project 파일 생성 (7) • New Project Wizard ⑥ • 지금까지 설정을 확인하는 단계 • 프로젝트경로와 프로젝트 이름, top-level design entity 이름, 추가한 파일의 개수를 확인
Quartus II Project 파일 생성 (8) • Project 생성
Quartus II Project 파일 생성 (9) • Pin Assignment • Pin assignment 메뉴를 이용하여 pin 정보 입력 • Pin Assign File 수정 - io_top.qps 파일을 열어서 옆 그림에 제시된 정보를 고려하여 핀 매핑에 대한 정보를 수정
Quartus II Project 파일 생성 (11) • 사용하지 않는 핀들에 대한 설정 • Device 설정 창에서 Device & Pin Options을 선택
Quartus II Project 파일 생성 (12) • Unused Pin에 대한 설정 • Reserve all unused pins에서 As Input, tri stated를 선택 • 외부에 아무런 영향을 주지 않기 위함
Quartus II Project 파일 생성 (13) • Configuration에 대한 설정 • 그림과 같이 Configuration scheme와 device를 설정
Quartus II Project 파일 생성 (14) • 기타 설정 • General 탭에서 Auto-restart configuration after error을 선택 • FPGA에서 에러가 발생하면 자동으로 다시 Configuration하게 설정
Quartus II Project 파일 생성 (15) • Compilation • 지금까지의 설정이 정상적으로 이루어졌다면 Processing 메뉴에서 Start Compilation을 실행 • 컴파일이 완료되면 ‘Full compilation was successful‘ 이라는 메시지를 보여주며 컴파일이 끝나게 된다
Quartus II Project 파일 생성 (16) • Configuration • 지금까지의 과정이 모두 끝났다면 FPGA로 Configuration을 하여야 한다 • Programmer 실행 - EPC2에 다운로드 하거나 FPGA에 Configuration 하기 위해서 Programmer를 실행
Quartus II Project 파일 생성 (17) • Configuration 파일 불러오기 • Byteblaster 케이블이 JTAG 포트에 연결된 상태에서 [Auto Detect] 를 하면 EPC2와 EP1C6 두 개의 장치를 검출 • <none>를 더블 클릭하여 EPC2에는 io_top.pof 파일을, EP1C6에는 io_top.sof파일을 설정한다
Quartus II Project 파일 생성 (18) • Configuration • Program/Configure에 체크 옵션에 체크를 한다 • [Start]버튼을 클릭하면 체크한 항목에 대해서만 Download 및 Configuration을 수행한다 • [Start]버튼을 클릭하여 실행한다
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