6월, 2022의 게시물 표시

Z80으로 간단한 컴퓨터 만들기 5

5. 시험 보드 조립이 완료되면 회로도대로 보드 조립이 되었는지 꼼꼼히 확인하고 각 구성부를 시험하기 위한 프로그램을 작성하여 프로그램은 메모리에 입력하고 프로그램을 수행하여 정상적으로 프로그램이 수행되는지 확인하여야 한다. 프로그램을 작성하기 위해서는 Z80 데이터 시트에 나오는 Assembly 언어를 이용하여 프로그램을 작성하고, 이를 다시 Machine언어인 2진수로 변환하여 메모리에 써 넣고 프로그램을 수행시켜야 한다. 5.1. 메모리 쓰기 시험 우선 어드레스 스위치와 데이터 스위치를 이용하여 메모리에 데이터가 써지는지 확인하여본다. 메모리에 데이터를 써넣는 과정은 다음과 같다. ① 보드에 전원을 인가하여 전원 LED가 점등되는지 확인한다. ② BUSRQ SW(SW2)를 ON 한다. ③ 어드레스 스위치를 변경하면서 데이터 LED에 어떤 변화가 있는지 확인한다.  - 이때는 메모리에 저장되어 있는 데이터 값에 따라 LED가 점등되거나 소등되어야 한다. ④ 데이터 스위치를 원하는 값으로 설정하고 쓰기 스위치(SW21)을 눌러서 데이터 LED가 데이터 스위치 값에 따라 점등 또는 소등되는지 확인한다.  - 이때는 데이터 스위치에 설정한 값이 메모리에 써지고 다시 출력 LED부로 출력되어야 한다. ⑤ 어드레스 스위치를 변경하고 절차 4와 같이 데이터를 입력하여 데이터가 출력되는지 확인한다. ⑥ 어드레스 스위치를 절차 4에서 입력하였던 어드레스로 변경하여 절차 4에서 입력하였던 데이터가 출력되는지 확인한다. ⑦ 어드레스 스위치를 절차 5에서 입력하였던 어드레스로 변경하여 절차 5에서 입력하였던 데이터가 출력되는지 확인한다. ⑧ 절차 4에서 7의 과정을 반복하면서 여러 부분의 어드레스에 데이터가 정상적으로 써지고 출력되는지 확인한다.

Z80으로 간단한 컴퓨터 만들기 4

이미지
 4.  제작 설계된 전체 회로도는 그림 15~17 에 나타내었다 . 제작은 만능보드 (Univeral Board) 에 토글 스위치를 고정하기 위한 구멍을 아래쪽에 16 개 , 위쪽에 1 개 뚫어 토글스위치를 고정하고 , IC 를 꽂기 위한 Socket 을 사용하여 보드를 구성하였다 . IC Socket 은 wrapping wire 를 사용하기 위한 socket 을 사용하였고 배선은 wrapping wire 를 이용하여 구성하였다 . 완성된 보드는 그림 18~19 에 나타내었다 .   그림 15 회로도 1 그림 16 회로도 2 그림 17 회로도 3 그림 18 완성된 보드 전면 그림 19 완성된 보드 후면

Z80으로 간단한 컴퓨터 만들기 3

이미지
3.  설계 3.1 전원장치 전원은 5VDC 에 1A 이상의 전류를 출력할 수 있는 전원장치를 사용하면 되는데 , 구매하거나 설계할 수도 있겠지만 스마트폰 충전기가 대부부분 5VDC 를 출력하기 때문에 남는 스마트폰 충전기를 사용한다 .   3.2 입력스위치 설계 입력장치는 메모리에 프로그램을 직접 써 넣기 위해 Address 입력 스위치 , 데이터 입력 스위치를 가각 8 개씩 toggle switch 로 연결한다 . 스위치가 연결되면 GND 와 연결되어 버퍼의 입력이 0 이 되고 스위치가 끊어지면 버퍼의 입력이 1 이 되도록 하였고 , CPU 의 BUSACK 신호가 LOW 이면 어드레스 버스를 입력 스위치에 의해 제어한다 . 어드레스 버스의 하위 비트는 수시로 변경하여야 하기 때문에 Toggle Switch 를 사용하고 , 상위 7 비트는 수시로 바꾸지 않아도 될 것이기 때문에 조금 번거롭지만 DIP 스위치를 이용한다 . 그림 10. Address 입력 스위치 데이터 입력 스위치도 Toggle Switch 8 개로 구성한다 . 그런데 , 데이터 버스는 어드레스 버스와 달리 버스에 데이터가 입력되도록 하는 시점을 고려하여 버퍼를 제어하는 신호를 조금 달리 하여야 한다 . 데이터 스위치의 용도를 프로그램 수행시 입력장치로도 사용하고 , SRAM 에 데이터를 써 넣을 때도 입력장치로 사용할 것이다 . 따라서 , CPU 에서 IO 장치를 읽을 때도 데이터 스위치의 상태를 데이터 버스로 전달되도록 하여야 하고 , SRAM 에 데이터를 써 넣을 때도 데이터 스위치의 상태가 데이터 버스로 전달되도록 하여야 한다 . 즉 , BUSREQB 가 LOW 일때는 Write 스위치가 LOW 일 때 버퍼가 연결되어야 하고 , BUSREQB 가 HIGH 일 때는 IORQB 와 RDB 가 모두 LOW 일 때 버퍼가 연결되어야 한다 . 이러한 조건을 만족시키기 위해 논리회로를 구성하여 버퍼 Enable 신호를 생성하여 버퍼를 제어하여야 한다 . 그러나 본고에서는 ...

Z80으로 간단한 컴퓨터 만들기 2

이미지
2.  구성부품 먼저 각 구성부품에 대해 간단히 소개한다 .   2.1 Z80 Z80 은 그림 2 에 나타낸바와 같이 40-pin 으로 구성되어 중앙처리장치 (CPU, Central Processing Unit) 와 주변 레지스터로 구성된 CPU 이다 . Address Pin 이 16 개가 할당되어 총 64K Byte 메모리 공간을 사용할 수 있으며 , 양방향성을 갖는 Data pin 이 8 개가 있다 . 전원으로는 5VDC 단일 전원을 사용하고 클럭은 Chip 의 사양에 따라 2MHz 부터 10MHz 까지 다양한 버전이 출시되어 있으며 , 그 외 제어신호로 구성되어 있다 . 제어 신호중에서 RD, WR 는 메모리 혹은 IO 에 데이터를 쓰거나 읽는다는 것을 표시하기 위한 신호이고 , MREQ 는 메모리에 있는 데이터에 접근하기 위한 신호 , IORQ 는 메모리 외의 IO 장치에 있는 데이터에 접근하기 위한 신호이다 . 그림 2. Z-80 Diagram RFSH 신호는 DRAM(Dynamic RAM) 을 사용할 때 DRAM 에 Refresh 신호를 주기 위한 신호인데 , 우리는 사용하지 않을 것이다 . HALT 신호는 CPU 가 동작을 멈췄다는 신호이고 , WAIT 신호는 IO 에서 데이터 처리시 발생하는 지연은 CPU 에 알려주기 위한 신호이며 , 우리는 사용하지 않는다 . INT 와 NMI 는 인터럽트와 Non-maskable 인터럽트를 CPU 에 알려주기 위한 신호이며 우리는 사용하지 않는다 . BUSRQ 신호는 어드레스 핀과 데이터 핀을 CPU 에서 사용하지 못하도록 하는 신호인데 우리는 여기서 RAM 에 데이터를 직접 써넣기 위해 프로그램을 하는 과정에서는 LOW 로 만들어줄 것이고 , BUSACK 는 BUSRQ 신호에...