Z80으로 간단한 컴퓨터 만들기 3
3. 설계
3.1 전원장치
전원은 5VDC에 1A이상의 전류를 출력할 수 있는 전원장치를 사용하면 되는데, 구매하거나 설계할 수도 있겠지만 스마트폰 충전기가 대부부분 5VDC를 출력하기 때문에 남는 스마트폰 충전기를 사용한다.
3.2 입력스위치 설계
입력장치는 메모리에 프로그램을 직접 써 넣기 위해 Address 입력 스위치, 데이터 입력 스위치를 가각 8개씩 toggle switch로 연결한다. 스위치가 연결되면 GND와 연결되어 버퍼의 입력이 0이 되고 스위치가 끊어지면 버퍼의 입력이 1이 되도록 하였고, CPU의 BUSACK신호가 LOW이면 어드레스 버스를 입력 스위치에 의해 제어한다. 어드레스 버스의 하위 비트는 수시로 변경하여야 하기 때문에 Toggle Switch를 사용하고, 상위 7비트는 수시로 바꾸지 않아도 될 것이기 때문에 조금 번거롭지만 DIP 스위치를 이용한다.
데이터 입력 스위치도 Toggle Switch 8개로 구성한다. 그런데, 데이터 버스는 어드레스 버스와 달리 버스에 데이터가 입력되도록 하는 시점을 고려하여 버퍼를 제어하는 신호를 조금 달리 하여야 한다. 데이터 스위치의 용도를 프로그램 수행시 입력장치로도 사용하고, SRAM에 데이터를 써 넣을 때도 입력장치로 사용할 것이다. 따라서, CPU에서 IO 장치를 읽을 때도 데이터 스위치의 상태를 데이터 버스로 전달되도록 하여야 하고, SRAM에 데이터를 써 넣을 때도 데이터 스위치의 상태가 데이터 버스로 전달되도록 하여야 한다. 즉, BUSREQB가 LOW일때는 Write 스위치가 LOW 일 때 버퍼가 연결되어야 하고, BUSREQB가 HIGH 일 때는 IORQB와 RDB가 모두 LOW일 때 버퍼가 연결되어야 한다. 이러한 조건을 만족시키기 위해 논리회로를 구성하여 버퍼 Enable 신호를 생성하여 버퍼를 제어하여야 한다. 그러나 본고에서는 앞에서 설명한 논리 소자만으로 구현하기 위해 다음과 같이 설계하였다.
3.3 출력 LED 설계
출력 LED는 CPU가 동작중에서는 즉 BUSREQB가 HIGH일 때는 CPU가 출력하는 데이터를 Latch하여 LED를 점등하거나 소등하고, BUSREQB가 LOW 일때는 SRAM의 출력하는 데이터를 Latch하여 LED를 제어하도록 한다. 다음과 같이 설계하였다.
그림 12 출력 LED 주변 회로
3.4 CPU 주변 회로
CPU와 SRAM의 주변회로는 그림 13과 같다. OSC는 클럭 생성기로 CPU의 규격에 맞는 주파수의 Oscillator를 선정하여 연결하면 되는데 여기서는 2MHz의 Oscillator를 사용한다. 회로도에는 지면상 생략하였는데, CPU에서 출력되는 BUSACKB, RDB, WRB, IORQB, MREQB 신호들에는 4.7K의 저항을 이용하여 pull-up을 해 줘야 한다. 또한 DRDB, DWRB 신호에도 pull-up 저항을 연결하여야 한다. SRAM의 전원은 별로로 분리하였다. 이는 외부 전원을 Off 했을 때 Battery(1.5V이상)로부터 전원을 공급받아 SRAM의 데이터를 유지시키기 위한 것이다.
3.5 전원부
전원부는 그림 14와 같이 전원을 연결하기 위한 코넥터와 6 position을 갖는 토글 스위치 등으로 구성한다. 전원이 입력되는 것을 확인하기 위한 LED를 추가하였으며, 외부 전원이 제거되어도 SRAM의 데이터를 유지하기 위해 Battery를 연결하였다.
댓글
댓글 쓰기