VGA 프로그래밍을 위해서 먼저 VGA Rx인 Monitor와 연결하기 위해서는 VGA D-Sub 3열 female connector의 핀 배열에 대해서 알아봐야 할 것 같습니다.

Pin Description

VGA female pin 번호는 다음과 같습니다. [1]

15 pin highdensity D-SUB female connector layout
실제로는 아래처럼 생겼습니다. [3] (당연한 얘기겠지만요 ^^;)
 


사실 VGA의 핀의 기능은 그동안 조금씩 바뀌어 왔습니다. [2] 그러나 그런 것들은 대부분 Tx (Graphic card)와 Rx (Monitor)간의 DDC (Display Data Channel) 컨트롤 (예를들어 모니터의 메뉴를 누르면 OSD -On Screen Display-가 뜨게 되고 여러 설정을 하면 그것을 Tx에게 보내게 됩니다. 이 때 DDC 채널을 통해서 제어가 되게 됩니다. 또한 초기에 어떤 모니터이고 어떤 해상도와 Display Range를 지원하는지를 Rx가 Tx에게 알려주는데 이것이 EDID 정보입니다. 이때도 DDC를 통해서 조절되게 됩니다.)과 관련된 것들입니다. 


What is important for test

위의 그런 복잡한 핀들이 많습니다만, 사실 OSD나 DDC컨트롤을 위해서 생각할 만큼 초기에는 여유가 없습니다. 가장 기본적으로 동작되어야 할 핀들은 다음과 같습니다.
RED, BLUE, GREEN은 Analog신호로 0.7V가 가장 높은 Intensity로 모든 값이 0.7V라면 흰색이 나오겠죠? 물론 모두 0V라면 검정색이 나오게 됩니다. 
R,G,B의 Ground는 0V를 연결하면 됩니다.
GND도 역시 0V를 연결하고, +5V는 5V VCC를 연결합니다. SGND는 0V로 연결하고, 제일 중요한 VSYNC, HSYNC는 +5V, 0V로 TTL레벨 디지털 신호로 보내면 됩니다. 
VSYNC와 HSYNC는 대부분 1값 (5V)를 갖다가 특정 시간이 되면 0으로(0V)내려가게 됩니다. (active edge가 low라는 말이겠죠?)

VSYNC, HSYNC timing
VGA는 오실레이터를 25.175MHz를 쓰면 딱 맞습니다. [4]

먼저 HSYNC신호를 위한 타이밍은 아래와 같습니다.
Horizonal Dots         640     640     640        
Vertical Scan Lines    350     400     480
Horiz. Sync Polarity   POS     NEG     NEG
A (us)                 31.77   31.77   31.77     Scanline time
B (us)                 3.77    3.77    3.77      Sync pulse lenght 
C (us)                 1.89    1.89    1.89      Back porch
D (us)                 25.17   25.17   25.17     Active video time
E (us)                 0.94    0.94    0.94      Front porch
         ______________________          ________
________|        VIDEO         |________| VIDEO (next line)
    |-C-|----------D-----------|-E-|
__   ______________________________   ___________
  |_|                              |_|
  |B|
  |---------------A----------------|

그리고 VSYNC를 위한 타이밍은 아래와 같습니다.

Horizonal Dots         640     640     640
Vertical Scan Lines    350     400     480
Vert. Sync Polarity    NEG     POS     NEG      
Vertical Frequency     70Hz    70Hz    60Hz
O (ms)                 14.27   14.27   16.68     Total frame time
P (ms)                 0.06    0.06    0.06      Sync length
Q (ms)                 1.88    1.08    1.02      Back porch
R (ms)                 11.13   12.72   15.25     Active video time
S (ms)                 1.2     0.41    0.35      Front porch
         ______________________          ________
________|        VIDEO         |________|  VIDEO (next frame)
    |-Q-|----------R-----------|-S-|
__   ______________________________   ___________
  |_|                              |_|
  |P|
  |---------------O----------------|

Put it all

전체적인 흐름은 다음과 같이 볼 수 있습니다.
저 같은 경우는 VGA connector를 wire wrap을 했지만 납땜을 해도 되겠죠?

보드 상 VGA (RGB신호 핀) --> wire wrap ---> 460 ohm --> D-Sub 15F (connector) ---> VGA cable ---> LCD Monitor

Rx단에 75Ohm이 있기 때문에 Tx 5V 신호를 0.7V로 맞추기 위해서
          V1*R2
V2 = ---------
          R1+R2
이기 때문에
   5V
--------- => 0.7V 정도
460 + 75
즉 RGB 신호에 460Ohm를 달아야 0.7V가 Rx로 전달되겠죠? (사실 이부분은 제가 확실치는 않네요.. ^^; )

RAMDAC
RAMDAC 칩이 있다면 RGB Analog신호로 변환 할 수 있습니다.
RAMDAC는 다음에 리스트를 참고하여 골라야 합니다. [5] 만일 RAMDAC가 없다면 R,G,B 디지털 신호레벨을 R2R resistor ladder를 활용하여 DAC를 통하게 해야 할것입니다.

Example

제가 진행한 부분에 대해 블로그를 참고하시면 됩니다. [6]


Reference

[1]. VGA (VESA DDC) pinout, http://pinouts.ru/Video/VGAVesaDdc_pinout.shtml

[2]. Old VGA Pin description, http://pinouts.ru/Video/VGA15.shtml

[3]. VGA connector, http://en.wikipedia.org/wiki/VGA_connector, Wikipedia
[4]. VGA Timing, http://www.epanorama.net/documents/pc/vga_timing.html
[5]. ramdac list, http://www-user.tu-chemnitz.de/~kzs/tools/whatvga/ramdac.txt

[6]. VGA example, broneri.tistory.com

'프로젝트 > CPU 설계' 카테고리의 다른 글

cpu isa design issue  (0) 2009.01.14
address/data bus issue  (2) 2008.12.22
compiler basic phase  (0) 2008.12.13
VGA Smile Image!  (0) 2008.12.05
about broneri homebrew computer  (0) 2008.12.04

+ Recent posts