실 CPU 설계 부터 해야하지만, 뭔가 화면에 보이면 신나고 좋을거 같았다. 그래서 시작한 것이 VGA 잡기..
어차피 목표가 겜이 동작되는 거니까 (-- 일단 목표는 크게.. ) 언젠간 부딪혀야할 주변장치이긴 하다.
원래 VGA는 25.175MHz의 오실레이터가 필요하다만... 구하기 녹녹찮아서 20MHz를 사용하였다.;;;
물론 납땜인두도 없기 때문에 vga 커넥터를 wire wrap으로 하기로 했다.

목표 VGA Mode는 640x480x60Hz 16color (IBM VGA Mode중 12h이다)
실제 Horizontal Blank와 Vertical Blank구간을 합친 Total resolution은 800x525이다.
근데 20MHz밖에 없어서 Horizontal은 800대신 635로 쭐였다. 실제 active 해상도는 524x480정도 된다.

정말 쉬울줄 알았다.
근데 정말 어렵다. 오실로스코프가 없을때 그 암담함이란 ;;;;;;;
결국 오실로스코프를 미리 장만하게 하는 계기가 되었다 ㅡ,.ㅡ;
정말 일주일 넘게 이거만 붙들고 있었다. 정말 많은 삽질을 했다 --;

먼저 VGA 15pin 3열 d-sub female connector를 이쁘게 wire wrap 하였다. 난 땜쟁이가 아니니까..;


그리고 HSYNC를 위해서 4bit 74LS193P 듀얼카운터 3개를 할당하고; VSYNC를 위해서 역시 4비트 카운터 3개를 마련했다;
그리고 HSYNC, VSYNC및 카운터 리셋을 하는 신호를 20v8 GAL 2개를 사용하여 생성시켰다.
사실 삽질이다. GAL22v10 을 사용하면 4bit 카운터 안써도 된다. 20v8은 매크로셀이 8bit d-ff라서 너무 할것이 없다.
이거 하면서 xc9500 cpld쪽도 한번 발을 담궈야 겠다는 마음이 불끈들었다.;;


잘 동작하는지 이번에 산 100MHz ReadOut Kenwood 오실로스코프로 프로브를 했다.
음 대충 HSYNC를 위한 scan line인 31.77 us를 맞춘거 같다.

음 VSYNC역시 1 frame 인 16.68 ms을 대충 맞춘거 같다.

RGB 중 B를 HSYNC용 카운터의 적절한 비트(?)에 두고 화면에 출력! 오예 드뎌 ㅠㅠ...

신이난 나는 미친듯이 R,G,B를 꽂았다. 오 전혀 촌스럽지 않아..!!

이미지를 넣으려면 EEPROM이 있어야 겠다.. 또 사야겠네..;
VSYNC카운터 쪽에도 RGB를 물려봤다. 이 땐 330Ohm저항에 함께 놓았다.



삽질 내용
- wirewrap이 헐렁하다.. 잘쪼여 놓자 ;;; (이래서 납땜을 해야 하는 건가...)
- VGA Dsub connector 핀을 잘못 연결.. 이건 뭐..커넥터 매뉴얼도 없고 헤매다가 HSYNC 핀 female 구멍에 프로브로 꽂아보고 잘못된걸 알았다. -- 오실로스코프 만세. 이것이 되니까 겨우 일주일동안 본 Disconnected 화면을 벗어나고 행복한 Signal out of range 에러를 볼 수 있었다.. ㅠㅠ
- 나중에 보니 VSYNC카운트를 잘못하고 있었다.... 잘 맞추니 위처럼 나왔다. 근데 역시 25.175MHz 를 사용안하고 근사치로 20MHz로 맞추다보니 몇초 지나니까 VSYNC를 잠깐 잃어서 모니터가 잠깐 꺼져따가 다시 켜진다. ㅋㅋ 뭐... 그래도 넘 좋당..

배운내용
- 삽질한다고 될일이 아니다. 디버그 장비가 필요 ...
- 하드웨어는 타이밍맞는 놈 돈이 들어도 미리 갖고 있는게 정신건강에 좋다.
- 모니터 테스트할땐 전용 모니터 한대쯤은 마련하자. 스펙을 보고 있는 메인 PC의 모니터를 계속 빼따 꼈다하면 대략 정신건강 저하 및 의욕상실을 부른다. --;

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

microcode  (2) 2010.12.08
cpu isa design issue  (0) 2009.01.14
address/data bus issue  (2) 2008.12.22
compiler basic phase  (0) 2008.12.13
VGA programming  (2) 2008.12.09

+ Recent posts