■ S3C2443 지원 리스트
▪ S3C2443의 LCD 컨트롤러는 시스템 메모리의 비디오 버퍼에서 외부의 LCD 드라이버에 LCD 이미지 데이터를 전송하는 로직으로 구성
▪ LCD 컨트롤러
수평/수직 픽셀, 데이터 라인 너비, 인터페이스 타이밍, 리프레쉬 비율과 관련된 스크린 상에 요구되는 기능 지원 프로그래밍이 가능
■ OVERVIEW
1. 2가지의 인터페이스 지원
(1) RGB Interface
(2) i-80 System Interface
2. 디스플레이 컨트롤러 지원 내역
(1) 2 overlay Image
(2) 다양한 컬러 포맷
(3) 16 단계 알파 블랜딩
(4) 컬러 키
(5) x-y 축 포지션 컨트롤
(6) 소프트 스크롤링 컨트롤
(7) 윈도우 크기 변경 등
■ LCD SUB BLOCK DISCRIPTION (ARM920T BUS INTERFACE)
- AHB (Advanced High-Performance Bus)
■ LCD SUB BLOCK DISCRIPTION (LCD CONTROLLER STRUCTURE)
1. VSFR
▪ 71개의 프로그래밍 레지스터 블록 / 2개의 256x25 Palette Memory 설정 가능
2. VDMA
▪ Frame Buffer에 저장 되어 있는 비디오 데이터를 VPRCS로 DMA 방식 전송 담당
3. VPRCS
▪ VDMA로 부터 받은 비디오 데이터를 LCD (Device)로 전송
▪ 전송 전 적합한 데이터 포맷으로 변환
▪ 전송 데이터 포트 : RGB_VD, VEN_VD, SYS_VD
4. VTIME
▪ Timing Checking 담당
■ S3C2443 – LCD Interface (RGB Interface)
* RGB Interface Signal
- SYNC 신호 제어 가능, 일반적인 R,G,B 인터페이스로서 사용자 제어 용이
(1) RGB Data Signal
(2) Vertical / Horizontal Sync Signal
(3) Data Valid Signal
(4) Data Sync Clock Signal
■ S3C2443 – LCD Interface (CPU Interface)
* CPU Interface Signal (i80 – System Interface)
-SYNC 신호 제어 불가능, 별도의 신호 셋팅 없이 Video Mux에서 모든 신호를 관리하며, 단순 Chipset 제어만 거침
(1) Address Signal
(2) Data Signal
(3) Chip Select Signal
(4) Register / Status Indicating Signal
■ S3C2443 – PIN MAP (RGB Interface)
■ S3C2443 – Register Setting
* Register Option : Eboot 및 Kernel 단, Driver 단 에서 설정하게 되는 레지스터 설명
■ S3C2443 – Display Driver Structure & Description
(1) Eboot 내부 main.c – InitDisplay 함수 (Eboot Entry Point)
* Eboot 상 LCD 구동을 위한 디스플레이 셋팅 목적 함수
* Eboot 단에서 관련 레지스트 셋팅이 LCD Module 과 SYNC 동작하게 되면 Eboot 단 로고 확인 가능
(2) Kernel 내부 Init.c – InitDisplay 함수(Kernel Entry Point)
* Eboot 상에 존재하는 main.c와 동일 한 목적으로 작성 (디스플레이 셋팅 목적)
* Kernel 단에서 관련 레지스트 셋팅이 LCD Module 과 SYNC 동작하게 되면 Window CE 진입 시 화면 동작 확인 가능(
(3) 참조 Header File 정보
* src/inc 디렉토리에 존재하는 display.h 헤더파일 참조 (레지스터 셋팅값의 대부분이 이 헤더파일 상에 정의 - 필수)
* Local 헤더파일 참조하면 Error / 반드시 INC 전역 헤더파일 참조해야 LCD 레지스터 값이 적용이 됨
(Eboot 단 및 kernel 단 레지스트 셋팅을 동기화하기 위하여 inc 공용 헤더파일 측을 수정해야 함)
* Eboot 단에서 레지스트 셋팅이 완료되어 Eboot LCD 동작을 확인 하여도, Kernel 단 셋팅이 틀어지면 CE상 동작 불가
(4) src/drivers/Display/S3C2443DISP.cpp – 드라이버 단 소스 파일
* Kernel 단에서 모든 동작 관련 셋팅 정의가 되며, 본 소스 파일 상에서는 GWES 기반의 동작 정의
(화면 회전 / 블랜더 효과 등 Application 기반의 동작 환경 설정이 가능)
* src/inc 디렉토리에 존재하는 s3c2443_lcd.h 헤더파일 참조
(드라이버 단 동작 정의가 아닌 GWES 기반의 Application 동작 중 필요한 사이즈 및 기타 컬러 옵션 설정 가능)
-----------------------------------------------------------------------------------------------------------
S3C6410 PIP 동작구조
S3C6410 PIP의 화면의 위치 선정
---------------------------------------------------------------------------------------------------
S3C6410의 Image Rotator 동작 구조
S3C6410 Image Rotator 동작 원리
-----------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
<S3C6410의 Overlay 및 Color Key 동작원리>
<S3C6410 Frame Buffer>
■ S3C6410의 프레임 버퍼 공간
◆ S3C6410에서는 기본적으로 Window 1Layer만 사용하여 화면 출력
◆ 각 Layer의 Size = 480 X 272 X 2(16/8)
= 255 Byte
※ 12MB 확보이유 : Post Processor 및 Rotator 등의 여러가지 출력 FrameBuffer와 공용 사용
-----------------------------------------------------------------------------------------------------------
■ NTSC
- 초당 29.97 개의 비월 주사된 비디오 프레임으로 이루어짐
- 각 프레임은 전체 신호인 525 라인 중에서 480 라인으로 구성되며 나머지는 동기 신호나 수직
귀선 및 자막과 같은 다른 데이터의 전송을 위해 쓰인다
■ BT656 (ITU656)
- 압축되지 않은 PAL 또는 NTSC 표준 화질 텔레비전을 스트리밍하기 위한 단순한 디지털 영상
프로토콜을 정의
- BT.656 스트림은 27 MHz 로 동작하는 픽셀 클럭 신호에 따라 동시에 8 비트를 병렬로 전송
■ Composite (Video)
- 색 신호와 휘도 신호를 동시에 혼합
- 일반적으로 노란색의 출력 단자
- 음성선 2개와 붙어있는 것을 합쳐서 말하기도 하지만 정확히는 노란 영상선만을 의미
- 구성 재질은 동축 RCA 케이블이며, 전송 가능한 최대 해상도는 NTSC (480i)
- 아날로그 케이블 중에서도 화질은 최저수준
- 서로 상이한 신호를 혼합해 표현하기 때문
■ S-Video (Video)
- 화질 개선을 위하여 색 신호와 휘도 신호를 서로 분리
- S-Video의 앞 굴자 S는 Separate의 약자
- Y/C Connection이라 명칭 (Y = 휘도 정보, C = 색 정보)
- 480i 해상도 전송 가능
- Composite 방식에 비해 고화질
-----------------------------------------------------------------------------------------------------------
< WMB2443 Board의 NTSC와 RGB I/F 동시 출력 구조 >
1. S3C2443의 LCD Controller에서 640 X 480의 RGB I/F 로 출력
2. 640 X 480 Image를 TV Endoer 입력과 LCD 출력으로 분기
3. TV Encoder에서 입력된 RGB I/F 영상을 Scaling과 RGB to NTSC 처리과정 후 모니터에 출력
-----------------------------------------------------------------------------------------------------------
< S3C6410의 Post Processor를 이용한 PIP 기능 동작구조 및 원리 (Direct Mode) >
■ Preview Path를 통한 YCbCr420 Format 입력된 영상이 Preview DMA 을 통해 Camera Frame Buffer에 저장 (RGB)
■ Post Processor 를 사용하지 않고 LCD Window 0 Frame Buffer에 저장 (RGB565)
■ Display Controller에서 두 영상을 Overlay 하여 LCD로 출력
-----------------------------------------------------------------------------------------------------------
< S3C6410의 Post Processor를 이용한 PIP 기능 동작구조 및 원리 (FIFO Mode) >
■ Preview Path를 통한 YCbCr420 Format 입력된 영상이 Preview DMA 을 통해 Camera Frame Buffer에 저장 (RGB)
■ Post Processor에서 Source Image를 Scale 및 Video Fomat / 색 공간 변환 후 Display Controller Window 0 FIFO로 전송
■ Display Controller에서 두 영상을 Overlay 하여 LCD로 출력
-----------------------------------------------------------------------------------------------------------
< S3C6410의 Post Processor를 이용한 PIP 기능 동작구조 및 원리 (DMA Mode) >
■ Preview Path를 통한 YCbCr420 Format 입력된 영상이 Preview DMA 을 통해 Camera Frame Buffer에 저장 (RGB)
■ Post Processor에서 Source Image Address를 Camera Frame Buffer 주소로 설정,
Destination Image Address를 LCD Frame Buffer Window 0 Frame Buffer로 설정
■ WinCE의 Defalut 출력인 Window 1 Frame Buffer의 Image와 카메라의 영상이 저장된 Window 0 Frame Buffer를
DMA를 이용하여 LCD 측으로 전송
■ Display Controller에서 두 영상을 Overlay 하여 LCD로 출력
-----------------------------------------------------------------------------------------------------------
■Porch 값의 의미
- Vertical Back Porch (VBP) : 수직 신호 출력 대기 시간
- Vertical Front Porch (VFP) : 수직 신호 출력 후 대기 시간
- Vertical Sync Pulse Width (VSPW) : 수직 신호 High Level 유지 시간
- Horizontal Back Porch (HBP) : 수평 신호 출력 대기 시간
- Horizontal Front Porch (HFP) : 수평 신호 출력 후 대기 시간
- Horizontal Sync Pulse Width (HSPW) : 수평 신호 High Level 유지 시간
■ Porch 값 적용 전 후의 Frame Buffer 화면
- Porch 값 적용 전
- Porch 값 적용 후
-----------------------------------------------------------------------------------------------------------
■ S3C2443 CPU Interface Control Sequence
- Disable Video Oupput : 출력 정지
- Set Video Signal : Main LDI(S3C2443에서 CPU I/F 방식의 Display 듀얼 출력 지원)선택, 클럭 설정
- System Interface Control : CPU I/F의 제어 신호 동작 설정
CS(Chip Select) - Active Low
WR(Write) - Active Low
-----------------------------------------------------------------------------------------------------------
■ SPI Interface Timing
- Transfer Start Bit에 의해 데이터 전송 시작을 알림
- Device ID Code에 의해 Device 확인 (Value = 0x1D)
- RS Bit 로 인해 Index Data와 Instruction Data 구분
- 16bit Data 전송
- Transfer End bit에의해 데이터 전송 종료 알림
-----------------------------------------------------------------------------------------------------------
■ I80 Interface Control Signal
■ I80 Interface Bus Timing 분석
- RS 신호 상태를 High에서 Low로 인가 상태에서 Register 주소 값을 전송하는 것을 알림
- Low에서 High로 변화 시 Data 값을 입력 받는 Register 주소를 알림
- CS 신호 상태를 High에서 Low로 인가 상태에서 LDI을 Enable을 하여 Address을 활성화
- Write Enable를 High에서 Low로 인가 상태에서 LDI에 Write 할 것이라는 것을 알림
- Write Data 출력 (High = ‘1’, Low = ‘0’)
-----------------------------------------------------------------------------------------------------------
■ S3C2443의 Display Controller의 PAD
- VIDSEL 값이 '1'이고 VIDOUT이 '10'일 경우 VCLK PAD에서는 CPU(I80) Interface의 WE(Write Enable) 신호 출력
- VIDSEL 값이 '1'이고 VIDOUT이 '00'일 경우 VCLK PAD에서는 RGB Interface의 VCLK 신호 출력
- SYS_CS0와 SYS_CS1은 I80 Interface에서는 듀얼 출력이 가능하기 때문에 CS(Chip Select)가 2개 존재
- 이하 VLINE, VFRAM, VM, LEND, VD 동일
-----------------------------------------------------------------------------------------------------------
■ RGB와 CPU(I80) I/F 구성 비교
- S3C2410 Display Controller의 I80 Interface 미지원으로 인한 LCD Module을 Memory Controller에 연결
* LDI의 Register를 이용하여 LCD 초기화
* Virtual Frame Buffer의 내용을 LCD 모듈 내 SRAM 측으로 전송
- S3C2443 Display Controller의 I80 Interface를 지원하기 때문에 Display Controller에 연결
* Virtual Frame Buffer에 화면 구성
* SDRAM의 Frame Buffer의 내용을 DMA을 통해 Display Controller 측으로 전송
* Display Controller에서 LCD 모듈 측으로 데이터 전송
-----------------------------------------------------------------------------------------------------------
■ LCD 인터페이스 종류
- RGB 인터페이스
- CPU 인터페이스 (I80, M68)
- SPI 인터페이스
- MDDI 인터페이스
- MIPI 인터페이스
■ LCD 인터페이스 별 제어신호
- RGB 인터페이스
* VSYNC (Vertical Sync)
* HSYNC (Horizontal Sync)
* ENABLE
* DOTCLK (Clock)
* 드라이버 IC 제어를 위한 Serial 인터페이스 사용
- CPU 인터페이스
* WR (Write) / RD (Read)
* RS (Command / Data)
* CS (Chip Select)
* 드라이버 IC 내부 RAM 사용
- SPI 인터페이스
* SDI / SDO / SCL 등을 이용하여 데이터 전송
- MDDI 인터페이스
* 신호선을 감소한 Serial Link Type 인터페이스
■ RGB 인터페이스 상세 설명
- 동영상을 많이 사용하는 TFT-LCD에 주로 적용
- CPU 인터페이스와는 달리 Display RAM이 필요 없음
- VSYNC Enable 구간 앞/뒤에 Porch 값과 같은 Non-Display 영역 설정
- 한개의 HSYNC 발생 시 여러개의 Clock을 가짐
- Clock 수를 카운트하여 Enable 구간 설정 및 Enable 구간 Active 시 Data 표현
- VSYNC : VFP, VBP, VSW는 HSYNC가 기준이 됨
- HSYNC : HFP, HBP, HSW는 Dot Clock 기준이 됨
- VSYNC, HSYNC, Dot Clock SYNC를 통하애 한 Frame 주파수가 결정 됨
- 위와 같은 설정이 맞지 않을 시 LCD 화면 상 플리커 현상 발생 (화면 밀림)
■ CPU 인터페이스 상세 설명
- MPU 인터페이스 명칭
- Intel 80 계열 혹은 Motorola 68 계열 제어신호에 따라 Data 전송 방식
- RS 신호에 따라 Command와 Data가 분리되어 전송
- CS : Chip Select 신호로서 Low일 때 Chip이 동작
- WR : Write 신호로서 Low->High 상태일때 Data를 Display RAM에 기록
- RS : Read 신호로서 Data를 읽어옴
- Command 기록 시 : RS = Low / WR 신호를 Address와 Command Latch
----------------------------------------------------------------------------------------------------------------
■ RGB Interface의 LCD Module의 Clock 동기화
- LCD Module DCLK Frequency는 33.26MHz
- S3C6410 Display Controller의 Clock 신호 관련 Register
CLKSEL_F : CPU에서 공급하는 Clock(HCLK)으로 133Mhz 임 (즉, 소스 Clock)
CLKDIR : 소스 Clock을 CLKVAL_F Register 값으로 분배하여 사용
CLKVAL_F : 소스 Clock 분배 값을 나타내는 Register
■ Porch값의 의미
- Vertical Back Porch (VBP) : 수직 신호 출력 대기 시간
- Vertical Front Porch (VFP) : 수직 신호 출력 후 대기 시간
- Vertical Sync Pulse Width (VSPW) : 수직 신호 High Level 유지 시간
- Horizontal Back Porch (HBP) : 수평 신호 출력 대기 시간
- Horizontal Front Porch (HFP) : 수평 신호 출력 후 대기 시간
- Horizontal Sync Pulse Width (HSPW) : 수평 신호 High Level 유지 시간
출처 : http://blog.daum.net/insopack77/268