8080 Microprocessor Kit

Wichit Sirichote, wichit.sirichote@gmail.com

Build a Microprocessor training kit with the 8080 Microprocessor.


I got a very nice suggestion from ebay buyer that "your next design must be 8080". This brought me to design the 8080 microprocessor kit in the Year 2016. The age of CPU chip is more than 40 Years.

This design is three chips system with 8080 CPU, 8224 Oscillator and 8228 bus controller. I used the same platform of my design for microprocessor trainer kit. The board is square PCB with approx. 170mm x 170mm dimensions. The 8080 CPU needs three power supplies, +5V, +12V and -5V. The old day design simply uses linear power supply with multiple turns of a low frequency transformer. However I got the idea to use switching regulators to provide +12V and -5V. For +5V, I used LM2940 low dropout linear regulator. For +12V, I used DC-to-DC converter MC34063. And for -5V I used Intersil 7660. These voltage regulators are placed on the PCB, so the DC input will need only single jack. The kit can be powered with AC adapter +7.5VDC.

I also got suggestion to add the HALT LED as well. So I added the latch, 74HC74 for capturing CPU status. Bit D3 is HALT status. Now if we test the code 76 (HALT instruction), when CPU halted, the HALT LED will be lit. The 74HC74 has two data latch, so I use the rest for indicating the interrupt enable bit. When we enable interrupt, this LED will be ready for interrupt indicator.

The 8288 bus controller provides RST 7 instruction code strobing when we pull INTA pin to +12V with a 1k resistor. This feature makes simple testing for external interrupt. No need additional hardware.

The software UART is also included for connecting the 2400 bit/s terminal, and 10ms tick generator for time trigger experiments.

Build the 8080 computer kit and play it is a very enjoyable time.
Figure 1: Intel 8080 Microprocessor kit

A new design for keypad is shown in Figure 2. Left hand indicators are HALT and INTE Led.
Figure 2: New design hex keypad, clear and nice with classic color PCB. 

Hardware descriptions: U1 is NMOS 8080 microprocessor. It needs three power supplies, +5V (80mA), +12V(70mA) and -5V(1mA).

The CPU clock is generated by 8224 chip. The Xtal frequency is 18.432MHz. CPU clock is 18.432MHz/9 = 2.048000MHz.

The system bus controller, U5 is 8228 chip. Icc is approx. 190mA. The 8228 provides data bus buffering and interface signals. INTA is tied to 1k pull-up resistor, to provide RTS7 instruction strobing. Student can test interrupt without the need of external device to supply the RTS instructions on the data bus.

U1, U5 and U7 form three chips 8080 microcomputer system. All are put on the single chip 8085 CPU that used in my design, MTK85, 8085 trainer kit..

U3 is 32kB EPROM, 27C256. The address space for EPROM is decoded at 0x0000-0x7FFF. U2 is 32kB static RAM, 62256. The RAM space is located at 0x8000-0xFFFF. Total memory is 64kB, full of memory space.

U6, memory and I/O spaces decoder chip is made with GAL16V8D. It provides chip selected signals for memory and I/O chips.

The power supply is made with U10, LM2940 for +5V, U8 KA34063 DC-to-DC converter for +12V and U9 ICL7660 for -5V. This design will use only one DC source from AC adapter. The AC adapter with +7.5V 1A is recommended.

U27A, 1/2 of 74HC74 is used to latch the CPU status signal. It captured HALT status from bit D3 of the data bus. U27B is for INTE bit indicator LED.

U16, the 20-pin 89C2051 microcontroller chip produces 10ms tick. SW1 selects between 10ms tick or manual INTR button.

U15, 74HC541 is 8-bit input port (PORT0). Four bits, PA0-PA3 are input signals of the row keypad. PA6 and PA7 are function keys. PA5 pin is RxD pin of 2400 bit/s software controlled UART.

U13, 74HC573 is 8-bit output port (PORT2). The 8-bit output drives the 7-segment LED directly. No current limit resistor. U14 (PORT1) drives 6-digit common cathode pin. The brightness is controlled by PWM. PC7 is speaker output for beep signal and PC6 is TxD pin for 2400 bit/s UART.

U4, 74HC573 is 8-bit output port for 8-bit binary number display. D9 lifts the forward biasing for proper brightness. JR1 is 16-pin socket for text LCD interface. U17, MAX232 converts TTL level to RS232 level.

Q1, KIA7042 is reset chip for power brownout.  
Figure 3: Hardware schematic. 

PLD equations : U6 is a PLD chip used to select the memory and I/O ports. The address and I/O spaceS can be programmed using PLD equations. The source file of PLD equations is shown in Figure 4. The PLD compiler is ATMELWinCupl. The output file, JEDEC will be used to program the PLD chip by a PLD programmer.
Name     8080Kit ;
PartNo 16V8 ;
Date 12/1/2014 ;
Revision 01 ;
Designer Engineer ;
Company Fangkhao ;
Assembly None ;
Location ;
Device g16v8a;

/* *************** INPUT PINS *********************/
PIN 2 = A15;
PIN 3 = INTR;
PIN 4 = A14;
PIN 5 = A5;
PIN 6 = A6;
PIN 7 = A7;
PIN 8 = IORD;
PIN 9 = IOWR;
PIN 1 = A13;
PIN 11 = A12;

/* *************** OUTPUT PINS *********************/
PIN 12 = RAMCE;
PIN 13 = ROMCE;
PIN 14 = INT;
PIN 15 = GPIO1;
PIN 16 = LCD_E;
PIN 17 = PORT0;
PIN 18 = PORT1;
PIN 19 = PORT2;

/******************* EQUATIONS *********************/

ROMCE = A15; // 0000-7FFF

RAMCE = !A15; // 8000-FFFF

!GPIO1 = A7 # A6 # A5 # IOWR; // 00

PORT0 = A7 # A6 # !A5 # IORD; // 20

!PORT1 = A7 # !A6 # A5 # IOWR; // 40

!PORT2 = A7 # !A6 # !A5 # IOWR; // 60

!LCD_E = (IOWR & IORD) # !A7 # A6 # A5; // 80-83

INT = !INTR;

Figure 4: PLD equations for 8080 kit. 

10ms System Tick: U16, 8051 compatible microcontroller is used to generate 10ms tick. The circuit runs with TTL clock from 8224 chip. The frequency is 18.432MHz/9. The tick signal is output at P3.7. TP1 is 50% duty cycle with frequency of tick/2. D13 is for indicating tick signal. Calibrating the correct tick frequency can be done by testing the pulse frequency at TP1.
Figure 5: 10ms tick generator built with AT89C2051 microcontroller. 

SW1 is selector for 10ms tick or SW2 INTR button. The INTR signal is active low. It will be inverterd with PLD to provide active high signal at INT pin of the 8080 CPU.

The source code was written in assembly code. The sample below produces a fixed frequency 100Hz or 10ms tick.
; 10ms systemTick TIMER CHIP FOR 8080 KIT
$mod52
 dseg at 30h
TICK: DS 1
 cseg at 0
   jmp main
       
 org 00bh
timer0_vector:
 JMP timer0_SERVICE
           
   org 100h
;-----initialize data-----------------------------
main: mov r7,#0
   djnz r7,$ 
 mov sp,#60h ; set stack pointer to 60h
 MOV P1,#0FFH
 MOV TICK,#0
 mov tmod,#1 ; set timer mode 1
 setb et0 ; enable timer0 interrupt
 setb ea ; enable all interrupt
 setb tr0 ; run timer0
 SJMP $
; 8080 TTL clock is 18.432MHz/9=2048000 Hz
; Timer 1 clock is 2048000Hz/12 = 170666Hz.
; For 100Hz interrupt, counting must be 1707.
; Load value is 65536-1707=63829 = F955
TIMER0_SERVICE: 
           
   PUSH ACC
   ORL TH0,#0F9H
   ORL TL0,#055H ; COMUPTED VALUE IS F955H 
   
    
   CLR P3.7 ; produce interrupt trigger to 8080
   NOP
   SETB P3.7
   CPL P1.6 ; CHECK TICK FREQUENCY 
   INC TICK
   MOV A,TICK
   CJNE A,#100,SKIP
   
   MOV TICK,#0
   Clr P1.7
   MOV R7,#30
   DJNZ R7,$
   SETB P1.7
SKIP: 
READ_MORE: POP ACC
           RETI
      end
Figure 5: Source code listing of 10ms tick generator. 

Hardware Features:

-CPU: NEC 8080 Microprocessor, 2.048MHz (18.432MHz/9)
-Oscillator: 8224
-Bus controller: 8228 with RST 7 strobing for interrupt vector
-Memory: 32kB RAM, 32kB EPROM
-Memory and I/O Decoder chip: Programmable Logic Device GAL16V8D
-Display: high brightness 6-digit 7-segment LED
-Keyboard: 28 keys
-RS232 port: software controlled UART 2400 bit/s 8n1
-Debugging LED: 8-bit GPIO1 LED at location 00H
-Tick: 10ms tick produced by 89C2051 for time trigger experiment
-Text LCD interface: direct CPU bus interface text LCD
-Brownout reset: KIA7042 reset chip for power brownout reset
- HALT and INTE bit indicator LEDs.
-+12V and -5V power supply: MC34063 DC-to-DC converter and Intersil ICL7660.
- Power consumption: 500mA @7.5V AC adapter
-Expansion header: 40-pin header

Monitor commands features:

-Enter 8080 instructions using hex code directly
-Test code running with break point
-User registers for status capturing, direct status flag display
-Insert/delete byte
-Beep ON/OFF
-Simple terminal connecting with 2400 bit/s RS232 port.

The kit is connected to terminal by hitting any key on the terminal automatically. The help commands is displayed with key "?". Most commands are compatible with MTK85 kit.

Figure 6: With Big letter LCD. 

Sample code for tetsing interrupt with RST 7 strobing by 8228 bus controller.

     0002 8038 					.ORG 8038H
     0003 8038 C3 04 81 			JMP SERVICE_RST7
     0004 803B 
     0005 8100 					.ORG 8100H
     0006 8100 
     0007 8100 FB 		MAIN		EI
     0008 8101 C3 01 81 			JMP $
     0009 8104 
     0010 8104 
     0011 8104 SERVICE_RST7
     0012 8104 
     0013 8104 3C 				INR A
     0014 8105 D3 00 				OUT 0
     0015 8107 FB 				EI
     0016 8108 C9 				RET
     0017 8109 
     0018 8109 .END
     0019 8109 
     0020 8109 
   tasm: Number of errors = 0

The interrupt vector for RST 7 instruction is located at 0038H in ROM, the kit has relocated it to 8038 in RAM. User can enter the service routine for RST 7 then.

To test this code, enter the instruction hex code to memory 8100 to 8108 and the code for jump instruction at 8038.

Set SW1 to INTR. Press key HOME, then GO. The INTE led will be lit waiting for INTR signal. Try pressing the INTR key. What is happening at the GPIO1 LED?

Now if we set SW1 to 10ms tick signal, try run it again. We will see the binary counting with 100Hz rate.

PARTS LIST

Semiconductors

U1 NEC D8080AP, 8-bit Microprocessor, gold plated pins ceramic package
U2 HM62256B, 32kB SRAM
U3 27C256, 32kB EPROM
U5 AM8228, BUS controller
U4,U13,U14 74HC573, 8-bit data latch
U6 GAL16V8B, PLD
U7 AM8224, oscillator
U8 MC34063A, DC-to-DC converter for +12V generation
U9 ICL7660, voltage converter for -5V generation
U10 LM2940/TO, low drop out +5V regulator
U12,U11 LTC-4727JR, 7-segment LED
U15 74HC541, 8-bit tri-state buffer
U16 AT89C2051, microcontroller
U17 MAX232A, rs232 converter
U27 74HC74, dual data latch for HALT and INTE indicators.

D1,D2,D4,D5,D6,D7,D8,D13 LED
D3 LED 3mm
D9 1N5236A
D10,D14 1N4148
D11 POWER
D12 1N4007
D15 TVS15V DO-214AC
D18 HALT LED (RED)
D19 INTE LED (Yellow)

Q1 KIA7042, voltage detector
Q2 BC557, PNP transistor

Resistors (all resistors are 1/8W +/-5%)

R1,R9,R12 4.7k
R2,R3,R10 10K
R4 0.5
R5 20k
R13,R6 10
R7 220
R8 2.2k
R14,R11 10k RESISTOR SIP 9
R15 680
R17 1k

Capacitors

C1 22uF
C7,C2 100nF
C3,C4,C9,C10,C21,C22,C23 10uF
C5 220pF
C20,C6 10uF 10V
C8 100uF35V
C11 10uF 16V
C12 1000uF 16V
C13,C14,C15,C16,C17 0.1uF
C18,C19 0.1uF
C24 10pF

Additional parts

JP1 HEADER 20X2
JR1 CONN RECT 16
J1 DC input
J2 CON3
LS1 SPEAKER
L1 100uH

SW1 ESP switch
SW2 INT
S1 RESET
S2,S3,S4,S5,S6,S7,S8,S9, SW PUSHBUTTON
S10,S11,S12,S13,S14,S15,
S16,S17,S18,S19,S20,S21,
S22,S23,S24,S25,S26,S27
TP1 +5V
TP2 GND
TP3 TEST POINT

VB1 SUB-D 9, Male (cross cable)
Y1 18.432MHz

PCB double side plate through hole
LED cover Clear RED color acrylic plastic
Keyboard sticker printable SVG file

 

Kit information, please contact Wichit Sirichote

New color display and rare CPU, Tesla 8080A!

Download Hardware schematic, Quick Start , PLD files, monitor program.

Available soon, the Programming book and User's manual. Monitor commands with keypad and serial interface are compatible with 8085 Kit.

16 January 2017 updated monitor program for new color 7-segment display, B8080.rar


<

10 May 2016