레이블이 _SVU인 게시물을 표시합니다. 모든 게시물 표시
레이블이 _SVU인 게시물을 표시합니다. 모든 게시물 표시

2009년 3월 31일 화요일

SVU 제작 #2 출력 테스트

좀 더 진행된 모습입니다.

납땜에 정신력을 집중하던 모습이 생각나네요.ㅋ





전원만 연결되어있던 슬롯 커넥터쪽도 작업이 진행되었습니다.

기본적인 Addr/Data 버스 및 어드레스 디코더 등이 올라가있습니다.




노란선 묶음 위로 지나가는 파란선들이 중요 컨트롤 신호입니다.




메인 클럭단과 CPU R/W 컨트롤에 관계된 부분은 작은 보드를 2층으로 쌓도록 되었습니다.





합체씬입니다. 테스트용으로 대충 연결한 선들이 좀 보이네요.




터보알 후면 슬롯(2번)에 꽂은 모습입니다.

비디오 신호는 우측 하단으로 받아서 8핀 DIN 커넥터로 믹스해서 출력합니다.




간단하게 컨트롤 레지스터 몇개 테스트해봤습니다.

0~3   -> 출력 On/Off등의 각종 스위치

8~23 -> Layer Scroll

24     -> H Position

25     -> V Position

26,27 -> Width

28     -> Height


255x80 크기의 윈도가 표시된 모습입니다.




이번엔 동영상으로 찍어봤습니다.

간단하게 위치/크기 조절하는 모습입니다.




결론...

일단 화면 보시면 느끼실수도 있는데,

VRAM용 어드레스 카운터와 먹스쪽이 제대로 동작 안되는 것 같습니다.

노이즈가 일정 간격으로 연속되는게 보이네요.

아직 VRAM RW/WR는 안되기 때문에 애매하긴 하지만, 전체적으로 좀 문제가 있어보입니다. ㅜ.ㅜ

게다가 클럭 페이즈가 좀 안맞으면 출력이 엉망되는 문제도 있고. 흠냐.


결정적으로 칩들에게서 열도 좀 나네요. 쇼트된건 아닌 듯한데...

아직 좀 더 살펴봐야겠지만, 제대로 완성되긴 좀 힘들 것 같습니다.

아무래도 가내수공업(?)으로는 좀 무리인것 같네요. ㅜ.ㅜㅋ


2008년 12월 17일 수요일

SVU 제작 #1 시작

드디어 SVU 제작에 들어갑니다.


대략적인 스펙은,


- 메모리 페이지

  1024 x 512


- 출력 해상도 :

  가로 픽셀 = 145, 290, 580

  세로 픽셀 = 110, 220, 440 (인터레이스)


- 출력 모드 :

  24BPP 1레이어 + 8BPP 1레이어 모드

    - 항상 8BPP가 상위에 오버레이 됨

  8BPP 4레이어 모드

    - 각 레이어의 오버레이 우선순위 설정 가능.

    - 컬러키는 0xFF (100% 흰색은 출력 불가능)


- 컬러 모드

  24BPP : RGB 888

  8BPP : RGB 332 (MSX2 스크린8 모드와 동일)


- 부가 기능

  HW 수평/수직 스크롤 : 메모리 페이지 범위 내에서 Rolling 됨

  Active Window 설정 : H/V Start 및 Width/Height 픽셀 설정 가능




이제 작업중인 사진이 나갑니다요.

넓직한 만능 기판에 MSX 슬롯용 보드와 연결했습니다.


너무 넓어서 사용이 불편할 것 같은 느낌도 드는군요.

반정도 되는 기판을 층층으로 쌓으면 더 좋겠다는 생각이 듭니다.

뭐, 첫 시도이니 이대로라도, 성공하면 만사 OK입니다. ㅎ.ㅎ


왼쪽은 HW 스크롤을 담당할 레지스터입니다.

2층으로 쌓아놔서 16개 칩이 들어갔습니다.


오른쪽은 각 레이어의 프레임 메모리용 어드레스 출력을 담당할 카운터입니다.

73LS193 칩 3개가 한조로 12비트 출력을 합니다.




왼쪽의 2층으로 쌓은 칩의 모습입니다.

74HC574의 입력핀이 데이터 버스 공통이라서 이렇게 연결하는 것이,

공간도 덜 차지하고 납땜할 부분을 줄여줍니다. ㅎ.ㅎ




중앙에는 MSX의 CPU I/O와 그래픽 출력을 위한 어드레스 래치들입니다.

요넘들도 2층으로 쌓았습니다. ㅋ

오른쪽에는 512KB 고속 SRAM(10ns) 4개가 자리잡고 있습니다.

SOP 변환기판으로 얹었습니다.

사진에는 안보이지만, SRAM 아래에는 8BPP 모드에서 컬러키(0xFF) 체크용 NAND 게이트가 숨어있습니다. ㅎ.ㅎ

보드 윗면은 전원 라인들이 지나가고요. 아랫면에는 신호선들이 연결되있습니다.




SRAM을 확대해서 찍은 것입니다.

요즘은 5V 8BIT SRAM을 구하기 힘든데, icbank에서 팔고 있더군요.

삼성 K6R4008C1D 8개를 사놨습니다.

이중 4개가 프레임 메모리로 쓰입니다.

24BPP 모드에서는 칩 하나가 8BIT DAC으로 출력용으로 쓰이고,

8BPP 모드에서는 칩 하나가 레이어 한개를 담당합니다.




보드 밑면입니다.

우후... 다시봐도 아찔하네요. 제발 완성했을때 실수한 부분이 많이 없길 빌어봅니다.




왼쪽 하단에 출력 윈도 설정용 레지스터 및 카운터가 자리잡고 있습니다.

윈도 설정 블럭은 H/V Sync 및 Back porch 구간의 BLANK 영역도 같이 처리합니다.

출력이 Black으로 되는 것이지요.

MSX VDP처럼 윈도 외각(Border)의 색을 지정하는 기능은 없습니다.


오른쪽에는 8BPP/24BPP 모드시 데이터 선택을 할수 있는 래치가 있습니다.

그 옆으로는 8BIT R2R DAC이 놓일 자리이고요.

MSB에 쓰일 50옴짜리 가변저항들이 보이네요.




밑면에는 선들이 점점 늘어나고 있습니다.

무게도 꽤 묵직하네요.

언제나 '취급주의'!!!  손에 걸려서 선이라도 끊어지면 완전 좌절입니다요. ㅋ




여기까지 작업하는데만 3주 넘게 걸린 듯 합니다.

요즘 평일엔 계속 국내 출장... 주말엔 아들내미랑 놀아야하고...

아무리 취미고 하는 것이지만 올해 안에 완성하는 게 목표였는데, 2008년도 2주밖에 안남았네요. 어흥~


2008년 12월 16일 화요일

Z80 20MHz

얼마전 ebay에서 구입한 Z80 CPU입니다.

중고라서 값도 싸더군요. CPU 6개를 해외 운송료 포함해서 3만5천원 정도에 구했습니다.


Z84C0020FEC는 오리지널 Z80과 100% 동일한 기능을 갖고 있습니다.

44PQFP라서 크기도 작고 CMOS타입의 저전력고요.

속도만 20MHz로 동작합니다. 생산되는 구형 Z80 코어로는 20MHz가 가장 빠른 칩이더군요.


지금 딱히 쓸데는 없지만, 나중에 시간 나면 MSX 엑셀레이터나 MSX 호환의 SBC를 만들어볼까 생각중입니다.

그래픽 엑셀레이터, 사운드 프로세서도 순수 Z80에 I/O 붙여서 만들어보고 싶고요.

물론 MSX 주변기기가 되겠지요.


요즘 나오는 MCU들에 비하면 초라한 성능이지만,

MSX와의 인연때문인지, Z80이라면 그냥 기분이 좋네요. ^^


아래는 2.54mm 변환 기판에 붙여놓은 모습입니다.

CPU보다 변환 기판이 더 비싸요. ㅎ.ㅎ;

음, 칩 마킹을 보니 98년 39주차 생산품인것 같군요. 10년 묵은 칩이네요. ㅋ




2008년 9월 29일 월요일

그래픽 보드 #5 수평 576픽셀

이번엔 가로 해상도를 두배로 키워 보았습니다.

단순히 어드레스 카운트만 두배로 만들면 되지만,

H-Sync와의 페이즈 에러를 줄이기 위한 보완도 같이 해봤습니다.

비디오 출력은 576 x 220 이지만, 메모리가 128KB뿐이라 수평 512픽셀까지만 저장됩니다.


WOW 공식 홈에서 다운받은 월페이퍼를 수정해서 올려봤습니다.




아래가 원본 그림입니다.

개인적으로, 와우의 배경들의 색감이 참 이쁘더군요. ^^




기존 MSX의 스크린 모드7(512 픽셀)의 수평해상도 보다 약간 높은데,

인터레이스를 이용한 두배 해상도를 만들면, VGA와 비슷한 해상도가 나오겠지요.


그림을 로딩한 상태에서 게임을 한번 구동해봤습니다.

캐슬 엑셀런트인데요. 게임 자체 배경이 검정색이라 믹스하면 잘 어울리네요.




빨간색 출력이면 아래처럼 무서운 게임이 됩니다. 헙헙ㅋ



2008년 8월 30일 토요일

그래픽 보드 #4 프레임 버퍼

32KB SRAM 4개(128kb)를 이용하여 프레임 메모리를 구현해봤습니다.

해상도는 512 x 256이 되겠네요.




뒷면은 처절한 바느질 납땜으로 갑니다. 어헝~




MSX turboR의 후면 슬롯에 꼽으면 아래처럼 됩니다.

MSX RGB 출력을 받아서 비디오 믹스 후, 다시 출력되는 것이지요.




이번엔 256회색톤의 그림파일을 올려봤습니다.

제 모니터에서, 픽셀클럭 6MHz일때가 도트의 가로/세로 비율이 1:1에 가까운 것 같더군요.

이상태에서 출력 해상도가 288x220 정도 됩니다.


아래는 256 단계의 박스를 그려본 것인데, 가로 방향은 밝기차가 잘 보이지 않네요.

가로 16개, 세로 16개, 총 256개 박스를 그린 것입니다.




웹에서 구한 MSX turboR 사진입니다.




아래는 우리 아들 돌사진입니다. 얼굴만 오려서 넣어봤습니다.

생각보다 잘 나오는 것 같아요. ㅋ




MSX의 스크린0 고해상도 모드(512x192)의 텍스트와 믹스된 모습입니다.

그냥 도스에서 DIR한번 해봤습니다.




아래는 유투브에 올린 동영상입니다.

부팅해서 그림파일 슬라이드 쇼를 하는 것인데요.

비디오 메모리 로딩시, 그냥 Write하는 경우와, V-Blank 구간에서 Write하는 경우 두가지를 보여줍니다.




2008년 8월 3일 일요일

그래픽 보드 #3 라인 버퍼

본격적인 비디오램을 구현하기 전에,

간단한 수평 1라인 메모리를 만들어봅니다.

서랍에 굴러다니던 20ns짜리 32KB SRAM이 사용되었습니다.





MSX의 버스 인터페이스를 위해, 폐기 직전의 사라만다 PCB가 사용되었습니다.

예전 MMC/SD Drive V1 만들때 희생된 팩이지요.

잠시, 묵념...  ㅡ.ㅡ


이제, 본격적으로 라인 메모리를 써봅니다.

아래는 V-Sync와 적당한 간격을 두고 메모리를 3번 Writing 한 경우입니다.




1픽셀 토글 패턴과, UP/DOWN RAMP패턴을 출력해보았습니다.

패턴 사이 노이즈 처럼 보이는 것은 CPU의 메모리 Write와 DAC의 Read가 간섭이 되어서 나타나는 것이지요.

이건 회피 방법이 많으니 차후에 고려해보기로 합니다.


아래는 실제 MSX에서 동작되는 모습을 영상으로 찍은 것입니다.



2008년 7월 9일 수요일

그래픽 보드 #2 Video DAC

이번엔 간이 8BIT DAC을 만들어서 출력해봤습니다.

R2R 사다리로 구현했는데요.

일단 74LS273 플립플롭으로 뽑았습니다. (나중에 74HC 타입으로 바꾸면 전압 오차가 좀 줄겠지요.)

모니터마다 다를 수는 있는데, 기본적으로 AGC가 Back porch를 클램핑하기 때문에

싱크 및 백포치 영역을 Black 레벨로 묶으려면, 클리어 핀이 있는 74LS273이 쓰기 편합니다.

574처럼 핀이 순서데로 정렬되어 있으면 좋겠는데... 암튼 납땜하려면 좀 귀찮지요. ㅋ




이번엔 모니터의 GREEN 신호로 출력했습니다.

지난번 클럭의 H-Sync와 Phase 에러는 반으로 줄여보았고요.

기존 25MHz 클럭에서 50MHz로 바꾸고 한번 더 분주했지요.

클럭 카운터 (차후 어드레스 카운터로 쓰이겠네요.)의 출력이 DAC으로 나오는 모습입니다.

그럭저럭 256단계 같네요. 음...




아래는 VDP의 파란색 바탕과 믹스해본 것입니다.

좋아보이네요. ㅎ



2008년 7월 5일 토요일

그래픽 보드 #1 Clock & Sync

기존 MSX VDP 출력과 MIX하여 간단한 비디오 기기를 만들까 생각중입니다.

VDP의 컴퍼짓 비디오에서 싱크를 분리하여, 클럭과 동기시키는 방법이 있어야겠지요.


높은 클럭을 사용하여 픽셀 클럭으로 분주 시킬때, H-sync의 Rising Edge에 맞추면,

얼추 Line Locked 클럭 제네레이터 같은 효과를 얻을 수 있는데요.

작은 보드에 얹어서 실험해봅니다.




25MHz 클럭을 1/4으로 분주하면 6.25MHz 클럭이 나오는데, 이때 LM1881로 분리된 H-Sync로 카운터를 초기화해서

싱크와 픽셀 클럭이 어느정도 동기될수 있도록 해봤습니다.

화면에 표시해보면, 아래처럼 되는데요.




빨간색 수직선이 클럭 출력을 그대로 모니터의 RED 신호로 넣은 것이고,

테두리의 보라/흰색은 기존 MSX VDP의 스크린5의 바탕면입니다.


픽셀 비교를 위해, MSX 스크린0 모드(256x192)에서 문자와 겹쳐서 표시해봤습니다.

가까이서 보니 수직선이 지글거리는군요.

전용의 Line Locked 클럭 제레레이터를 쓰면 좋겠지만, 돈 많이 드는 취미활동은 만드는 재미가 없으니 신경 끄고요. ㅎ.ㅎ;

일단 어느정도 처리가 가능한지, 눈으로 봐줄만 한지를 테스트해봅니다.




아래는 MSX의 스크린 모드5에서 VDP의 수직선과 비교한 모습인데요.

이때 VDP의 픽셀 클럭은 5.37MHz입니다.

6.25MHz의 새로 만든 클럭이 좀 더 촘촘해 보이네요.

1/4 분주해서 페이즈 조정되니까, H-Sync와 약 25% 에러가 생기는데, 실제로 보면 뱀 같네요. 꼬물꼬물 ㅎ.ㅎ;