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



2. 구성부품

먼저 각 구성부품에 대해 간단히 소개한다.

 

2.1 Z80

Z80은 그림2에 나타낸바와 같이 40-pin으로 구성되어 중앙처리장치(CPU, Central Processing Unit)와 주변 레지스터로 구성된 CPU이다. Address Pin16개가 할당되어 총 64K Byte 메모리 공간을 사용할 수 있으며, 양방향성을 갖는 Data pin8개가 있다. 전원으로는 5VDC 단일 전원을 사용하고 클럭은 Chip의 사양에 따라 2MHz부터 10MHz까지 다양한 버전이 출시되어 있으며, 그 외 제어신호로 구성되어 있다. 제어 신호중에서 RD, WR는 메모리 혹은 IO에 데이터를 쓰거나 읽는다는 것을 표시하기 위한 신호이고, MREQ는 메모리에 있는 데이터에 접근하기 위한 신호, IORQ는 메모리 외의 IO 장치에 있는 데이터에 접근하기 위한 신호이다.

그림 2. Z-80 Diagram


RFSH 신호는 DRAM(Dynamic RAM)을 사용할 때 DRAMRefresh 신호를 주기 위한 신호인데, 우리는 사용하지 않을 것이다.

HALT 신호는 CPU가 동작을 멈췄다는 신호이고, WAIT 신호는 IO에서 데이터 처리시 발생하는 지연은 CPU에 알려주기 위한 신호이며, 우리는 사용하지 않는다.

INTNMI는 인터럽트와 Non-maskable 인터럽트를 CPU에 알려주기 위한 신호이며 우리는 사용하지 않는다.

BUSRQ신호는 어드레스 핀과 데이터 핀을 CPU에서 사용하지 못하도록 하는 신호인데 우리는 여기서 RAM에 데이터를 직접 써넣기 위해 프로그램을 하는 과정에서는 LOW로 만들어줄 것이고, BUSACKBUSRQ 신호에 대한 응답신호이다. BUSACK 신호를 이용하여 버퍼를 제어하여 어드레스와 데이터 핀을 우리가 직접제어 할 것이다.

Z80Package Type으로는 40-pin DIP(Dual-in-Line), 44-pin QFP(Quad Flat Pack) 등이 있는데 우리는 만능기판에 조립을 할 것이기 때문에 40-pin DIP type을 사용한다.

그림 3. DIP-40 Package


2.2 SRAM

프로그램이나 데이터를 저장하기 위해 CPU는 항상 RAM을 필요로 한다. RAM에는 DRAMSRAM(Static RAM)이라는 것이 있는데, DRAM은 전원이 공급되지 않으면 모든 데이터가 지워지며, 전원이 공급되고 있더라도 시간이 지남에 따라 데이터가 소실되기 때문에 일정 주기로 Refrash 시켜줘야 하는 반면 작은 면적에 많은 메모리 소자를 구현할 수 있기 때문에 고집적화에 유리한 메모리 소자이다. SRAM은 전원이 공급되고 있는 동안에는 데이터가 소실되지 않고 유지하고 있으며, 전원이 끊어져도 아주 적은 전류만 공급되면 데이터를 장시간 유지할 수 있는 특성이 있으나 면적을 많이 차지하고, 속도가 느려서 특정 용도로만 사용된다. 여기서는 고속이나 고집적 회로가 필요하지 않기 때문에 우리는 SRAM을 사용한다. 시장에는 다양한 SRAM을 구매할 수 있으나 우리는 32K Byte 용량의 SRAM을 선택하여 사용한다.

Chiplus 사의 CS18LV02565를 선정하였다. SRAMpin diagram은 그림과 같고, package는 역시 28-pin DIP type을 사용한다. SRAMVCC는 사용할 때는 5V를 공급하고, 사용하지 않을 때는 1.5V 이상의 건전지를 연결하면 아주 미세한 전류(1uA)를 사용하여 데이터를 유지할 수 있다.

그림 4. SRAM

2.3 Latch

Latch는 데이터를 홀드하기 위해 사용하는 소자이다. LatchFlip-Flop(F/F)이라고 하는 소자와 혼용하여 쓰는 용어인데, F/F의 종류 중에서 D-F/F은 클럭 신호가 Low에서 High로 올라가는 순간의 데이터를 HOLD하는 소자이고 우리가 사용하는 Latch74363이라는 TTL(Transistor Transostor Logic) 소자로 그림5에 나타낸 신호에서 E pinHIGH가 유지되는 동안에는 Dn pin으로 입력되는 신호가 Qn pin으로 출력되고, E pin의 신호가 LOW가 되면 Dn pin으로 입력되는 신호와 상관없이 Qn의 신호가 유지되는 특성을 갖는다.


그림 5. 74363

2.4 Buffer

버퍼는 신호라인에 여러신호가 함께 묶여 있을 때 어떤 신호원에서 신호를 신호 라인에 출력할 것인지 신호를 제어하기 위해 사용하는 소자이며 그림 6과 같이 신호원 4개가 1개의 신호선을 공통으로 사용하고자 할 때 공통의 신호선에 어떤 신호원의 신호가 흐르게 할 것인지를 제어할 때 사용한다. 우리는 흔히 이 공통의 신호선을 bus라고 부르며 제어신호 ALOW가 입력되면 신호원A의 신호가 버스에 흐르게 되고, 제어신호 BLOW가 되면 신호원 B의 신호가 버스에 흐르게 된다. 제어신호는 각각 다른 시간에 LOW가 되어야 하며 동시에 여러개의 제어신호가 LOW가 되면 버스에 여러개의 신호가 혼합되어 에러를 유발 할 수 있으므로 서로 시간이 다르게 제어하야야 한다. 그림에서 보여준 버퍼는 한쪽 방향만을 설명하였는데 신호의 목적지를 정하기 위해 양방향 버퍼를 사용할 수도 있고, 이러면 신호가 버스에 출발지와 목적지가 각각 다르게 실릴 수 있으므로 이 신호를 버스라고 명칭을 하게 된 것 같다.

그림 6. Buffer의 사용


본 문서에서는 단방향 버퍼만 사용하며, 단방향 버퍼로 사용할 수 있는 소자는 74244가 있다. 74244pin diagram은 그림 7에 나타내었다. 그림에서 보면 내부에 8개의 버퍼가 있고, 1G2G에 의해서 제어가 가능하며, G 신호에 LOW가 입력되면 An으로 입력된 신호가 Yn으로 출력되고 G 신호에 HIGH가 입력되면 Yn pin은 회로에서 끊어진 것과 마찬가지인 상태인 High Impedance 상태가 된다. 보통의 논리소자는 High 또는 Low 상태의 2가지 상태를 가지는데 여기서 설명하는 버퍼는 High, Low 또는 High Impedance 상태가 되므로 이를 tri-state buffer라고 부르기도 한다. High impedance 상태에서는 버스에 흐르는 신호가 LOW인지 HIGH인지 확실하지 않기 때문에 이 신호를 확실하게 하기 위해 대개 버스 신호는 pull-up 저항을 연결해서 HIGH 상태로 유지하게 한다. pull-up은 신호와 전원선 사이를 저항으로 연결하는 것을 말한다.


그림 7. 74244

2.5 기타 논리 소자

앞에서 설명한 버퍼를 제어하기 위해서는 CPU의 신호와 여러 제어신호를 제어하여 버퍼에 제어신호를 보내기 위해 논리 소자가 필요하며 여기서는 3-input NOR gate와 신호를 반대로 뒤집어 주는 NOT Gate를 사용한다. 논리 소자를 설명하기 위해 논리 신호 상태가 HIGH일 때 1이라고 표시하고, LOW 일 때를 표시하면 3-input NOR gatesymbol은 그림 8의 왼편같이 표현되고, 입력 A,B,C에 모두 0이 입력되어야만 출력 Y1이 출력되고, 그 이외에는 모두 0이 출력된다. 그림 8의 우측은 우리가 사용할 3-input NOR gate 소자인 7427pin diagram을 나타내었다. 7427에는 그림에서와 같이 NOR 3개가 14pin의 소자를 구성하고 있다.


그림 8. 3-input nor 소자 7427

그리고 신호를 반전시켜 주는 NOT gate7404를 사용하는데 7404의 구조는 그림 9와 같다.


그림 9. 7404

2.6 기타 전자 부품

앞에서 언급한 부품들 외에는 신호선에 흐르는 전류를 제한하기 위한 저항, 스위치 그리고, 데이터의 상태를 가시적으로 보여줄 LED(Light Emitting Diode)등이 사용된다.

댓글

이 블로그의 인기 게시물