Microelectronics | 80386DX ISA SINGLE BOARD MICROCOMPUTER

Synopsis

Living in the early 1990s along with the technological advancements in computing and microelectronics was a rewarding experience. Coming from a former communist country where we had no access to technology, let alone latest ones, everything shifted with the beginning of the decade. By chance I had the opportunity to own a very high performance computer for that period. It was an 80386SX based machine running at 25 MHz. Further equipment included 2 Mb RAM, integrated AcuMOS AVGA2 card with 256 K graphics memory, and a 40 Mb Seagate hard disk drive. All packed in a Kenitec desktop case and connected to a 12" AOC monochrome VGA monitor. I discovered modern operating systems, games, and -- drum roll, please -- computer programming. This is the context that marked my life in terms of computers. It changed it completely, shifting my perspective to 180 degrees.

Let's put history aside for a moment and let's concentrate on the motivation. Why would somebody ever attempt to build a vintage computer system? Let alone design one from scratch in 2019? This is over 30 years old technology that is pretty useless now. All period correct computer software can be now run in software emulators on any platform. Mobile phones have tremendous computing power. Tablet computers dominate the mobile market. Then why build such thing? The answer could be very biased. Let's say nostalgia and -- why not? -- because of the engineering challenges. Sure I can buy any 80386DX based mainboard from the big auction site. But it would be better if (sic) I'd built it myself.

Then let's dig into the specifications and my choice of components then.

Hardware Specifications

  • 32-bit 80386DX CPU
  • 32-bit 80387DX NPU
  • 128 K Cache System
  • 32 Mb RAM (16 Mb RAM in BANK0 and 16 Mb RAM in BANK1)
  • Standard 80386DX AMI BIOS
  • 8042-class PS/2 Keyboard and Mouse Controller
  • OPTi Chipset (82C495XLC and 82C206)
  • Minimal Glue Logic
  • Port 80h On-board Diagnostics
  • ISA-board class construction

These are the main specifications of this system design. I have chosen to go with simple approach, using a verified design solution based on OPTi chipset. This reduces the integrated circuit count, power consumption, and connection wiring design errors. Also a smaller ISA card footprint translates into smaller fabrication costs -- which unfortunately are expensive anyway. I tried to stay away from surface mounted parts as much as I could. However the 82C495XLC system control chip comes only in PQFP-160 package. That is a lot of pins to solder.

The schematic that I produced is the result of about one month of sustained work. In order to accomplish this system design, I studied thoroughly the following documents.

  • Intel 80386DX Datasheet
  • Intel 80387DX Datasheet
  • OPTi 82C495XLC Datasheet
  • OPTi 82C206 Datasheet
  • VIA VT82C42 Datasheet
  • ISA-bus Specifications and Pinout
  • SIMM Design and Pinout Documentation

However some parts involved in this system design have no datasheet available. I got to know them because I have seen them being used on a lot of period correct mainboards. This calls for reverse engineering as it is the only way I could accomplish the schematic. How I did it? I bought three or four generic 80386DX boards from the local flea market and observed the connections and layout. It was a tedious work and it accounted for most of the time spent designing this microcomputer. I hand-drew all these mini-schematics on paper and analyzed them by comparison to existing designs published in technical literature such as Integrated Circuit Systems Data Book, 1995 edition. And other data books and systems design literature that I have as well. Low-level programming background also helped a lot while working with address and data signals. I don't claim that the produced designs are entirely correct but it is the best I could do. Sometimes I just used my electrical engineering knowledge and engineering common sense to design and interconnect the modules. In the end I have translated everything into a CAD program. Oh, not to mention that I routed all the ~8,400 wires by hand on a four layer printed circuit board. Computer assisted design software has become a serious performer but the human brain far exceeds any existing software to date. At least this is what I like to believe...

So in addition the following work was carried in order to design this microcomputer.

  • Reverse Engineering of Wiring on HM8226
  • Reverse Engineering of Wiring on IMI SC425APB
  • Reverse Engineering of Wiring on Interfacing Cache Memory Banks
  • Reverse Engineering of Wiring on PS/2 Keyboard and Mouse Controller Interface
  • Reverse Engineering of ISA-bus Arbitration Signaling

In the end I should say that I have seen a lot of computer hardware over the time and I have also low-level repaired such hardware. Thus I am quite familiar with the x86 architecture.

Some parts of the schematic are optional. The system can run as expected without them. I am thinking here about the Port 80h On-Board Diagnostics section, buffered PC-SPEAKER output circuit, external battery support, 3.6 V LIR2032 lithium-ion battery charging circuit, Power Good internal signal generation, PS/2 mouse interface, and some jumpers. Sure the principial schematics can be reduced and the printed circuit board can simply omit these parts. Also jumpers can be hardwired. But I wanted to experiment a little bit so that I can expand my own knowledge.

Sourcing components for this project is not that hard at all. CPU, NPU, OPTi chips, ROM BIOS, and Keyboard controller can be acquired from auction sites. HM8226 and IMI SC425APB as well but you need to be patient to find them. Alternatively you can carefully rescue these from existing (dead, or not) PCBs. Just like I did. ROM BIOS can also be freely downloaded from the Internet and burned into any (EE)PROM integrated circuit of the right organization. You just need to make sure you find the right 80386DX 64K ROM BIOS image. The rest of the components are available at Mouser. I will put a bill of materials (BOM) down below for references. Printed circuit board can be ordered at OSHPark. It is expensive but built quality is high. You will find a link to the project in the BOM below.

Later Edit: Originally I wanted this page to be a simple presentation of my work. But it slowly morphed into this giant wall-of-text describing my research, issues, resolutions, and conclusions in the field of x86 microcomputer system design.

This project is in its final stage.
Current iteration of ASSY. 2486-SBMC-101 is VER. 1.8 REV. D
Previous iteration of ASSY. 2486-SBMC-101 was VER. 1.6 REV. C
I decided to keep it a long time in review so that I can correct all errors and produce the -- expensive -- prototype PCB only once.
I ended up building two distinct iterations.

* * *

Laudatur ab his, culpatur ab illis. This project is provided as-is and is not for commercial purposes. It reflects my experimental work in microcomputer system design and should be treated as such. I release the schematic and circuit boards to the public for educational purposes. I did all this on my expense and in my free time. So if you like my work, please consider a donation.

Schematics (VER. 1.8 REV. D)

Fig. 1: Electrical Principial Schematic

Printed Circuit Boards (VER. 1.8 REV. D)

Fig. 2: Top Silkscreen

Fig. 3: Top Layer Printed Circuit Board

Fig. 4: Inner Bottom Layer Printed Circuit Board

Fig. 5: Inner Top Layer Printed Circuit Board

Fig. 6: Bottom Layer Printed Circuit Board

Fig. 7: Top Layer Printed Circuit Board - Simulation

Fig. 8: Bottom Layer Printed Circuit Board - Simulation

If you want to see or hide older schematics please use the following function: Show Older Schematics

Bill of Materials (BOM)

The following list contains the parts that are required to assemble this microcomputer.

80386DX ISA SINGLE BOARD MICROCOMPUTER
IdentifierValueQtyNotesMouser Number
Printed Circuit BoardASSY. 2486-SBMC-1011VER. 1.8 REV. DOrder from OSHPark
IC1-IC461C256AH-204256 Kbit SRAMOrder from eBay
IC561C64AH-20164 Kbit SRAMOrder from eBay
IC674ACT3731Octal 3-state D Latch595-SN74ACT373N
IC7, IC1574F2442Octal 3-state Buffer595-SN74F244N
IC8, IC2774F082Quad 2-input AND595-SN74F08N
IC927C512 80386DX ROM BIOS1512 Kbit ROM556-AT27C512R70PU
IC10-IC1774LS2457Octal Bus Transceiver595-SN74LS245N
IC1874F1251Quad 3-state Buffer595-SN74F125N
IC1974LS321Quad 2-input OR595-SN74LS32N
IC2074ALS5741Octal D Flip-Flop595-SN74ALS574BN
IC2174LS6881Magnitude Comparer595-SN74LS688N
IC22, IC23DM936827-segment DecoderOrder from eBay
IC2474LS071Hex Buffer (OC)595-SN74LS07N
IC2574LS041Hex Inverter595-SN74LS04N
IC2674F321Quad 2-input OR595-SN74F32N
IC28SC425APB1Clock GeneratorOrder from eBay
IC29LM3861Audio Amplifier926-LM386N-1/NOPB
IC30VT82C421Keyboard ControllerOrder from eBay
IC31HM82261Order from eBay
IC3274LS061Hex Inverter (OC)595-SN74LS06N
IC33CD40691CMOS Hex Inverter595-CD4069UBE
IC34OPTi 82C495XLC1System ControllerOrder from eBay
IC35OPTi 82C2061Peripheral ControllerOrder from eBay
IC36Intel A80386DX-33 IV1CPUOrder from eBay
IC37Intel A80387DX-331NPUOrder from eBay
IC38MCP738311Battery Management579-MCP73831T-2ACIOT
T12N39061Small Signal Transistor512-2N3906BU
T22N39041Small Signal Transistor512-2N3904BU
T32N22221Small Signal Transistor610-2N2222
D1-D51N41485Small Signal Diode78-1N4148
C1-C37100 nF / 50 V38MLCC80-C322C104M5R-TR
C38-C39, C40-C4310 pF / 50 V6MLCC80-C315C100J5G
C44470 pF / 50 V1MLCC80-C315C471K5R
C45, C7147 nF / 50 V2MLCC80-C320C473K5R
C46, C63-C651 uF / 35 V4Tantalum Capacitor80-T350A105K035AT
C47-C50, C54-C5747 pF / 50 V8MLCC80-C315C470J5G
C51, C52, C58, C5956 pF / 50 V4MLCC80-C315C560J5G
C53, C60, C66, C68100 nF / 50 V4MLCC80-C322C104M5R-TR
C61, C62220 pF / 50 V2MLCC80-C315C221K5R
C672.7 nF / 50 V1MLCC80-C315C272K5R
C69, C70, C8410 uF / 16 V3MLCC810-FK24X5R1C106K
C72220 uF / 6.3 V1Polymer Capacitor80-A758BG227M0JAAE18
C73, C75-C8110 uF / 25 V8Tantalum Capacitor80-T350E106M025AT
C74100 pF / 50 V1MLCC80-C315C101K5R
C82100 nF / 50 V1MLCC80-C320C104M5R
C83, C854.7 uF / 16 V2MLCC810-FK14X7R1C475K
C8622 pF / 50 V1MLCC80-C315C220J5G
R1, R2547 kΩ2Carbon Resistor291-47K-RC
R2, R28, R29, R31, R381 kΩ5Carbon Resistor291-1K-RC
R3, R510 kΩ2Carbon Resistor291-10K-RC
R451 kΩ1Carbon Resistor291-51K-RC
R62 MΩ1Carbon Resistor291-2M-RC
R7, R8, R36, R44, R45470 Ω5Carbon Resistor291-470-RC
R9, R10, R15150 Ω3Carbon Resistor291-150-RC
R11-R1422 Ω4Carbon Resistor291-22-RC
R16, R17, R20, R22330 Ω4Carbon Resistor291-330-RC
R18, R2333 Ω2Carbon Resistor291-33-RC
R19100 Ω1Carbon Resistor291-100-RC
R21200 kΩ1Carbon Resistor291-200K-RC
R242.2 kΩ1Carbon Resistor291-2.2K-RC
R26, R374.7 kΩ2Carbon Resistor291-4.7K-RC
R2710 kΩ1Trimmer Resistor72-T7RYA103KT20
R3051 Ω1Carbon Resistor291-51-RC
R32-R35, R39-R41, R43330 Ω8Carbon Resistor291-330-RC
RN1-RN59 x 4.7 kΩ5Bussed Resistor Network652-4610X-1LF-4.7K
RN69 x 1 kΩ1Bussed Resistor Network652-4610X-1LF-1K
RN7, RN87 x 2.2 kΩ2Bussed Resistor Network652-4608X-1LF-2.2K
RN9-RN117 x 4.7 kΩ3Bussed Resistor Network652-4608X-1LF-4.7K
RN124 x 4.7 kΩ1Bussed Resistor Network652-4605X-1LF-4.7K
RA1-RA54 x 22 Ω5Resistor Array652-4608X-2LF-22
L1-L10BL03RN210Ferrite Bead81-BL03RN2R1P1A
X114.31818 MHz Crystal1Quartz Crystal73-XT49S1431-20
X232.768 kHz Crystal1Quartz Crystal695-CFS-20632768DZBB
DISP1, DISP2RFT VQB372Common CathodeOrder from eBay
LED15 mm Green LED1Power Indicator755-SLR-56MC3F
LED25 mm Orange LED1Turbo Indicator755-SLR-56DC3F
LED35 mm Green LED1Charged Indicator755-SLR-56MC3F
LED45 mm Orange LED1Charging Indicator755-SLR-56DC3F
IC Socket28-pin5IC1-IC5575-11043328
IC Socket20-pin12IC6, IC7, IC20, IC21, IC10-IC17575-193320
IC Socket14-pin10IC8, IC18, IC19, IC24-IC28, IC32, IC33575-193314
IC Socket16-pin2IC22, IC23575-110433161
IC Socket28-pin1IC9575-11043628
IC Socket8-pin2IC29, IC31575-193308
IC Socket40-pin1IC30575-193640
IC Socket132-pin1IC36575-510-313214
IC Socket68-pin1IC37437-5108706811061101
SIMM Socket30-pin8SIMM1-SIMM8Order from eBay
SPK1Electromagnetic Speaker185 dBA665-AT-1224TWTR
Battery Holder*20321BT1122-2420-GR
JP1, JP4-JP7, JP11, JP122-pin Header7Jumper649-68001-202HLF
JP2, JP3, JP8-JP103-pin Header5Jumper649-68001-203HLF
J3, J104-pin Header2Header649-68001-204HLF
J4-J7, J9, J112-pin Header6Header649-68001-202HLF
J83-pin Header1Header649-68001-203HLF
J16-pin Mini DIN Connector1PS/2 Keyboard571-5749265-1
J26-pin Mini DIN Connector1PS/2 Mouse571-5749265-1
ISA Card BracketCustom Built13D PrintedN/A

Alternatively you can use the following link to the Mouser project that I created for this microcomputer. It should make ordering of parts and removing typing faults pretty easy.

Mouser Project: 80386DX ISA SINGLE BOARD MICROCOMPUTER

Notes:

  • 61C64 and 61C256 are available at Mouser but not in the right package. Either you build an ugly and dirty adapter or you source the SRAMs in the required package from electronic parts auction sites.
  • TTL ICs need to be of Low-power Schottky (LS) type with a typical gate delay of about 10 ns. In some key places in the schematic I went for Advanced Schottky (74F) series parts with a typical gate delay of about 1.7 ns.
  • In place of the LS series ICs you can also use 74ALS, 74HCT, 74ACT, or 74AHC series parts. In place of the F series ICs you can use 74FC parts. For bus driving transceivers I would stick to 74LS series since they have hysteresis capabilities on their inputs.
  • 27C512 EPROM is largely unnecessary if you can't find one. You can go for a 28C256 EEPROM part instead. I went for the 27C series because of the looks. I always found UV erasable ROMs look quite nice.
  • 80386DX ROM BIOS image that I used is inscribed inside an original AMIBIOS integrated circuit. You can either source an original ROM BIOS integrated circuit or download the one I used and burn it into the said 27C512 or 28C512 (E)EPROM integrated circuit. Refer to 80386DX ROM BIOS section down-below for more information.
  • DM9368 decoders are mandatory for the Port 80h On-Board Diagnostics circuit. Sure other decoder ICs could -- and should partially -- work but DM9368 have internal current limiting resistors for the 7-segment elements. I went for this approach in order to reduce parts count.
  • SC425APB can be replaced with standard integrated metal-can oscillators. Although this approach would have made for a simpler parts sourcing procedure, it would have increased parts count in order to support multiple CPU clocks. If you don't succeed sourcing a SC425APB master clock generator then just build an adapter. Read the SC425APB Replacement section for more information.
  • VT82C42 can be replaced by other PS/2 capable keyboard controllers ICs such as HT6542B. Or one of the original 8242 microcontrollers. But you need to source one with PS/2 compatible software written inside.
  • If you don't find the Hualon Micro HM8226 integrated circuit then just install jumper in position JP11.
  • I have recovered the 82C495XLC from a working 80386DX mainboard. I have seen a lot of 82C495XL parts on eBay but I don't know what is the difference between the ones with the C suffix and the ones without it. They might work as well in this system design.
  • Instead of OPTi 82C206 I have used a Siemens SAB82C206N part. This came with a cheaper transportation fee than the OPTi part.
  • Ferrite beads are used to reduce electromagnetic noise on digital and analog transmission lines. Sure the circuit will work without them as well but it is better to be on the safe side. Less circuit debugging is better.
  • I chose to use the miniature bubble displays made by RFT because I have a box full of them, all NOS. These seldom appear on eBay. And while not as readable as conventional 7-segment displays, they sure look nice enough to be used in such a project. The deep red color is nice to observe as well.
  • The coin cell battery must be of LIR2032 type since these can source 3.6 V instead of the most common 3 V for CR2032 batteries. The reason for this choice is the added diode in series with the battery. This will add an additional 0.7 V drop so battery voltage seen by 82C206 is about 3 V. In case of the 3 V battery the voltage seen by this IC would've been too low, peaking at about 2.3 V. However the first PCB revision had some issues with the charging circuit. Lithium-Ion batteries are normally charged on a strictly controlled process. The original very basic charger with a resistor in series was more suitable for charging NiMH batteries. Of course the LIR battery could be charged as well but it was risky. Using such a simple circuit would require careful observation of the cell temperature while charging. Lithium-Ion batteries can burst in flames in a split second damaging the board and possibly injuring you. The first PCB revision would've been better to be used with the 6V external battery pack only.
  • For the ISA card bracket I went for a custom 3D printed one. Sure I could've adapted an existing bracket but building one on the exact requirements of this board would be better. Refer to 3D Printed ISA Bracket section down-below for more information.

Assembly Instructions and Notes

Here is a list of things you need to pay attention to should you decide to build such ISA system backplane.

  • Inspect the printed circuit board once you receive it. Normally OSHPark produces very good quality boards but one never knows. There must be absolutely no short circuits on the printed tracks. If the PCB is faulty then it can damage valuable electronic components and other ISA cards that you might install in the system.
  • Carefully observe polarity of the tantalum electrolytic capacitors on the silkscreen. I made sure there is no error on the printout so even if it appears weird, please do respect the markings. Tantalum capacitors will violently explode and burst in fire if mounted in reverse, possibly injuring you.
  • Take your time to solder all the components on the board. There are a lot of solder points and if you don't have patience in general, then this project might not be for you.
  • Use a temperature-controlled soldering station and quality solder. Take care not to leave solder bridges as any short circuit will most likely lead to failures.
  • In order to ease-up the PCB assembly, I would suggest mounting parts in the following order: OPTi 82C495XLC, diodes, resistors, ferrite beads, quartz crystals, 7-segment displays, IC sockets, resistor networks, transistors, MLCC capacitors, tantalum capacitors, polymer capacitor, variable resistor, LEDs, SIMM sockets, battery holder, speaker, various connectors, jumpers.
  • Install the metal card bracket only after you have soldered all components on the PCB.
  • At the end, clean any flux residues with isopropyl alcohol.

Principle of Operation

This microcomputer is PC AT compatible by all means. That means all software written originally for the PC AT platform will be fully compatible with this system. Think MS-DOS, Microsoft Windows, and DOS games. You can run Unix-class operating systems as well. For this reason I had to follow closely the PC AT architecture during the system design process.

The system block diagram allows for a better understanding of the principle of operation.

Fig. 1: System Block Diagram

The microcomputer is controlled by the OPTi 82C495XLC system controller integrated circuit. This chip has the following features.

  • support for 80386DX CPUs running at 16 MHz, 25 MHz, 33 MHz, and 40 MHz
  • support for 80387DX co-processor
  • internal buffers and termination to reduce external parts count
  • internal CD and CA bus pull-up resistors to reduce external parts count
  • write-back direct-mapped cache in 32/64/128/256 KB organization (2-1-1-1 or 3-2-2-2 cache cycles)
  • on-chip comparator determines cache hit/miss
  • burst line fill during cache read-miss
  • optional 0 WS or 1 WS for cache write-hit
  • up to 64MB of local high-speed, page mode DRAM memory space
  • shadow RAM support for system, video, and adapter card BIOS
  • optional caching of shadowed video BIOS
  • hidden refresh support to enhance system performance
  • turbo/slow speed selection
  • ISA bus clock selectable by division of the CLKI signal by /6, /5, /4, or /3
  • /CAS-before-/RAS refresh reduces power consumption

Additional mainboard logic is carried by the OPTi 82C206 integrated peripheral controller. This chip handles the following functions.

  • two 8237 DMA controllers with seven DMA channels operating in either single, block, demand, or cascade modes
  • two 8259A interrupt controllers with thirteen IRQ channels
  • one 8254 timer/counter with two timer/counter channels
  • one 146818A-compatible real-time clock
  • one 74LS612 memory mapper
  • an additional 64 bytes of CMOS RAM
  • 8 MHz DMA clock with programmable internal divider for 4 MHz operation
  • 16 MB DMA address space
  • programmable wait states for DMA cycles

PS/2 keyboard and mouse interfaces are carried by the VT82C42 chip. This is vastly superior to original 8042-class microcontrollers with embedded software. The VIA chip includes hardware logic for very fast decoding of keyboard and mouse commands.

To simplify a little bit the operation of this microcomputer, we can sum it up simply as follows.

  • Upon power application, the master clock generator begins oscillating to produce the required clock signals.
  • Then the chipset hardware is initialized by means of the PWRGD (Power Good) signal.
  • The chipset initializes the CPU, NPU, keyboard controller, and integrated peripheral controller.
  • The CPU begins fetching instructions from ROM BIOS.
  • BIOS does hardware tests and if everything passes it attempts to load an operating system from either a floppy or a hard disk drive.
  • Then software takes full control over the hardware logic.

Interface Connectors Description

Following are described all the interface connectors and their respective pinouts.

INTERFACE CONNECTORS DESCRIPTION
IdentifierValueNotesPinout
J1PS/2 Keyboard1 - Keyboard Data
2 - NC
3 - Ground
4 - +5 V
5 - Keyboard Clock
6 - NC
J2PS/2 Mouse1 - Mouse Data
2 - NC
3 - Ground
4 - +5 V
5 - Mouse Clock
6 - NC
J3External Battery6 V Battery Pack1 - +6 V
2 - NC
3 - Ground
4 - Ground
J4Reset Switch1 - Reset Signal
2 - Ground
J5Turbo Switch1 - Turbo Signal
2 - Ground
J6Turbo LED1 - LED Anode
2 - LED Cathode
J7Power LED1 - LED Anode
2 - LED Cathode
J8Keyboard Lock1 - Ground
2 - Keyboard Lock Signal
3 - Ground
J9Power Good200 msec Delayed +5 V Signal1 - Power Good Signal
2 - Ground
J10PC Speaker1 - Speaker Data Output
2 - Internal Speaker Data Output
3 - Ground
4 - +5 V
J11Amplified PC SpeakerConnect to Sound Card Line-In1 - Ground
2 - Audio Signal

About Power Good

The Power Good signal is used to let the board know that the power supply rails have reached operating voltages and amperages. Normally this is provided by all AT class power supplies on pin 1 of the mainboard power supply connector. Since this board is going to be powered directly from the ISA bus, there is absolutely no knowledge about this signal. Thus I designed a simple RC circuit to emulate it while also providing an option to connect to an external Power Good signal through J9. It is very unlikely that you will find an ISA system backplane that will have a Power Good signal header. But I have provided it anyway. However the internal RC circuit will provide the required 200 msec delayed VCC signal that will initialize the on-board logic. So normally connect jumper to JP3 pins 1-2.

About PC Speaker

My original PC back in 1993 was equipped only with a PC Speaker. Thus I have experimented all games only with PC Speaker sound. As much as I hate or love it, I have provided some extra PC Speaker configuration options for nostalgia reasons. So there are four PC Speaker modes as follows.

  • External PC Speaker: Off-board electrodynamic speaker connect directly to J10, polarity must be respected.
  • Internal PC Speaker: On-board speaker. Connect jumper between pins 1-2 of J10.
  • Amplified PC Speaker: Buffered, volume controlled line-out signal. Disconnect jumper from pins 1-2 of J10 and connect J11 directly to sound card Line-In, respecting the polarity. Alternatively you can connect an off-board electrodynamic speaker directly to this header. Note that pins 3 and 4 of the PC Speaker connector will overlap pins 4 and 3 (precisely in this order) of J10. This is as designed and it is mandatory for the PC Speaker to work in amplified, volume controlled mode. So the pinout for the amplified PC speaker will be 2-1(J11)-4-3(J10). While it might sound crazy it is the way I designed it.
  • Internal PC Speaker and Amplified PC Speaker: This mode is also available but I don't see any possible uses for it. Connect jumper to pins 1-2 of J10 and connect an off-board electrodynamic speaker directly to pins 2-1(J11)-4-3(J10). Or you can connect the J11 directly to the sound card Line-In connector for sound card pass-through of the PC Speaker.
  • No PC Speaker: Completely turned off. Disconnect jumper from pins 1-2 of J10 and disconnect any speaker connected to J10 or J11.

Historical Note: I always liked the PC Speaker soundtrack of the Konami Knightmare game ported by Andrey Zabolotny to MS-DOS. I always wondered why Todor Todorov is mentioned in an ASCII string directly inside the executable file a few bytes offset after start address. Anyway there was no way to turn up or down the volume. And there is the original Duke Nukem (DN1, DN2, and DN3) which I always would have liked to have the ability to turn down the volume for. Playing without sound effects was no fun and with sound effects was disturbing for the other people in the house.

About Port 80h On-board Diagnostics

As soon as the PC will perform the power on self-tests (POST) the BIOS will start to put human readable hexadecimal codes on hardware port 0x80h. This is very useful for debugging purposes should the PC freeze during the initialization procedure. In order to catch these codes a simple circuit based on an octal flip-flop and two 4-bit BCD to 7-segment decoders. During POST, hexadecimal codes will be displayed with very high speed. But in case the computer freezes, the last code remains visible on the two displays.

The decimal points of the two displays are hardwired as reset indicator. Thus while you press the reset button or if the hardware is in initialization mode -- Power Good signal is not yet active -- the H elements of the two displays will be lit.

Note: There is software out there in the wild that will perform casual writes to port 0x80h. This was a normal behavior for software programmers since they could do several tricks such as adding small delays in programs. So you might see different messages displayed during normal operation of several computer programs. However these do not represent diagnostic codes and can be safely ignored.

About Battery Charging Circuit

The original charging circuit that I designed was more or less a bad joke. So I came up with another design. This time it is constructed around a popular battery management IC called MCP73831.

This IC is found under the form of a SOT23-5 SMD package. It is very easy to design a complete single cell lithium-ion charging circuit around it. I used the schematic from the datasheet so I am not going to explain how it works. The nicest feature is that there is only one resistor that needs to be calculated for the specified cell charging current.

The formula for the battery charging current is Ic (mA) = 1000 (V) / R1 (kΩ). LIR2032 battery datasheet lists a maximum charging current of 35 mA. I went for a safe charging current of about 20 mA. Applying the formula reveals that R1 equals to 47 kΩ. Sure a complete charging cycle will last longer now. But who cares? The battery will slowly and safely completely charge while you play Supaplex for instance. Or Kings Quest VI.

System Configuration

I have provided some basic system configuration options under the form of jumpers.
The star (*) symbol signifies the default option.
The double star (**) symbol signifies an undocumented function in the schematics or the PCB silkscreen.

SYSTEM CONFIGURATION
IdentifierValueNotesConfiguration
JP1BATTInternal Battery ChargeCL: Charge
OP: Normal (*)
JP2CMOSNVRAM Status1-2: Clear
2-3: Normal (*)
JP3POWERGOODPower Good Signal Source1-2: Internal (*)
2-3: External
JP4MONITORMonitor TypeCL: Monochrome
OP: Color (*)
JP5, JP6, JP7CPU CLK80386DX ClockCL, CL, OP: 16 MHz (**)
CL, OP, OP: 25 MHz
OP, CL, OP: 33 MHz (*)
OP, CL, CL: 40 MHz
JP8NPU CLK80387DX Clock Type1-2: Buffered (*)
2-3: Non-Buffered
JP9NPU RST80387DX Reset Signal1-2: Software Port 0xF1h
2-3: Synchronous with 80386DX (*)
JP10IRQ12IRQ12 Routing1-2: ISA BUS
2-3: PS/2 Mouse (*)
JP11TMRCLKPIC Timers Clock SignalCL: Always
OP: On Request (/XIOW signal) (*)
JP12MCLKGMaster Clock GeneratorCL: Disabled
OP: Enabled (*)

System Memory Organization and Configuration

This microcomputer is equipped with dynamic random access memory (DRAM) under the form of eight SIMMs.

SYSTEM DRAM CONFIGURATION
RAM SizeBANK #0BANK #1Notes
1 MB4 x (256 K x 9)Empty
2 MB4 x (256 K x 9)4 x (256 K x 9)
4 MB4 x (1 M x 9)Empty
5 MB4 x (256 K x 9)4 x (1 M x 9)
5 MB4 x (1 M x 9)4 x (256 K x 9)
8 MB4 x (1 M x 9)4 x (1 M x 9)
16 MB4 x (4 M x 9)Empty
20 MB4 x (1 M x 9)4 x (4 M x 9)
20 MB4 x (4 M x 9)4 x (1 M x 9)
32 MB4 x (4 M x 9)4 x (4 M x 9)Entirely Cached

The main memory is entirely cached for faster access. System cache static random access memory (SRAM) organization is described in the following table.

SYSTEM CACHE SRAM CONFIGURATION
Cache SizeTag SRAM SizeCache SRAM SizeCacheable RAM Size
128 KB1 x (8 K x 8)4 x (32 K x 8)32 MB

Memory speed requirements are listed below.

MEMORY SPEED REQUIREMENTS
CPUTag SRAMCache SRAMDRAM
16 MHz25 ns25 ns (R/W: 1 WS)80 ns (R/W: 0 WS)
25 MHz25 ns25 ns (R/W: 1 WS)80 ns (R/W: 0 WS)
33 MHz15 ns20 ns (R/W: 1 WS)80 ns (R/W: 0 WS)
40 MHz15 ns20 ns (R/W: 1 WS)80 ns (R/W: 0 WS)

IRQ Mapping

OPTi 82C206 emulates two Intel 8259A interrupt controllers in a master-slave configuration. Thus a maximum of 16 interrupt requests are available for system hardware. The IRQ map is listed below.

IRQ MAPPING
IRQ ChannelPICMapOther Uses
IRQ0MasterSystem TimerN/A
IRQ1MasterPS/2 KeyboardN/A
IRQ2MasterIRQ9Cascaded IRQ8-IRQ15
IRQ3MasterFreeCOM2 and COM4
IRQ4MasterFreeCOM1 and COM3
IRQ5MasterFreeLPT2 and LPT3, Sound Card
IRQ6MasterFreeFloppy Disk Controller
IRQ7MasterFreeLPT1, Sound Card
IRQ8SlaveReal-Time Clock (RTC)N/A
IRQ9SlaveIRQ2IRQ2 maps to IRQ9
IRQ10SlaveFreeSCSI, NIC, T. IDE Channel
IRQ11SlaveFreeSCSI, NIC, Q. IDE Channel
IRQ12SlavePS/2 MouseFree
IRQ13SlaveNumeric Processor (NPU)N/A
IRQ14SlaveFreePrimary IDE Channel
IRQ15SlaveFreeSecondary IDE Channel

Notes on IDE interface IRQ mapping as follows.

  • Primary IDE channel uses I/O address 01F0h-01F7h and IRQ14.
  • Secondary IDE channel uses I/O address 0170h-0177h and IRQ15.
  • Tertiary IDE channel uses I/O address 01E8h-01EFh and IRQ11 or IRQ12.
  • Quaternary IDE channel uses I/O address 0168h-016Fh and IRQ10 or IRQ11.

DMA Mapping

OPTi 82C206 emulates two Intel 8237 direct memory access (DMA) controllers in a master-slave configuration. Thus a maximum of 7 DMA channels are available for system hardware. The DMA map is listed below.

DMA MAPPING
DMA ChannelBus TypeTransfersMap/Other Uses
DMA016-bit8-bitN/A
DMA18/16-bit8-bitSound Card, SCSI
DMA28/16-bit8-bitFloppy Disk Controller
DMA38/16-bit8-bitLPT1 (ECP Mode)
DMA4N/A16-bitDMA Controller Cascade
DMA516-bit16-bitSound Card, SCSI
DMA616-bit16-bitSCSI
DMA716-bit16-bitSound Card, SCSI

I/O Address Range

For the sake of completeness I am adding here the standard I/O address ranges of various ISA peripherals that can be part of a PC/AT-class microcomputer. Although the I/O address ranges could be wildly varied for exotic ISA cards, most of the dedicated hardware has well known addresses which are assigned as follows.

I/O ADDRESS RANGE
AddressAssignment
0x130hSCSI
0x140hSCSI
0x168hQuaternary IDE Channel
0x170hSecondary IDE Channel
0x1E8hTertiary IDE Channel
0x1F0hPrimary IDE Channel
0x200hGame Port
0x220hSound Card
0x240hSound Card
0x278hLPT2 or LPT3 using IRQ5
0x280hNIC, LCD Display I/O
0x2A0hNIC
0x2E8hCOM4 using IRQ3
0x2F8hCOM2 using IRQ3
0x300hNIC
0x320hSCSI, NIC, ESDI Hard Disk Drive Interface
0x330hSCSI, MPU-401 MIDI Interface
0x340hSCSI
0x360hNIC
0x378hLPT1 using IRQ7 in Color Systems
0x388hFM Sound Synthesis
0x3BChLPT1 using IRQ7 in Monochrome Systems
0x3E0hPCMCIA Controller
0x3E8hCOM3 using IRQ4
0x3F8hCOM1 using IRQ4
0x678hLPT2 or LPT3 Extended Parallel Port (EPP) using 0x278h
0x778hLPT1 Extended Parallel Port (EPP) using 0x378h (Color Systems)
0x7BChLPT1 Extended Parallel Port (EPP) using 0x3BCh (Monochrome Systems)

80386DX ROM BIOS

I have rescued this original AMIBIOS ROM integrated circuit from a working generic 80386DX / 40 MHz mainboard. Before I removed it from the board, I dumped its contents as a .BIN file which you can download. You need to program a 27C512 or a 28C512 (E)EPROM integrated circuit with this binary image in order to use the microcomputer. I don't know whether other BIOS types will work or not with this board, but this one does. I think mostly because the mainboard was based on the OPTi 82C495XLC system controller chip -- which I have also rescued for this project. The BIOS string identifies a Jetway branded mainboard but there is no visual identification or code on the printed circuit board to back-up this hypothesis. However I have seen a bunch of similar -- read: near identical -- mainboards with minimal layout differences; all unbranded. The attack of the clones, perhaps?

BIOS File: 80386DX.BIN
BIOS String: X0-0803-001276-00101111-080893-OP495XLC-H

While this BIOS image is created by American Megatrends Inc. (AMI), it would have been really fun if I had the time to program my own version of the BIOS but unfortunately it is not possible at this moment. But if you'd like to, please open a GitHub repository where collective effort could be helpful. I will surely put a link to that repository on this page.

SC425APB Replacement

An adapter can be build in order to replace the International Microcircuits Incorporated (IMI) SC425APB master clock generator integrated circuit. However in order to provide full functionality on changing CPU frequencies by means of the JP5, JP6, and JP7 jumpers, the circuit becomes a little bit complicated. For the sake of simplicity I will describe a replacement circuit locked for 33 MHz CPU clock. In this case, the CPU frequency selector jumpers become useless.

So the adapter circuit needs to provide three main frequencies as follows.

  • 66 MHz for the OPTi 82C495XLC internal state machine.
  • 33 MHz for the CPU and NPU clocks.
  • 14.31818 MHz for division within the OPTI 82C495XLC chip, source for the the OPTi 82C206 internal timers. This frequency is also used by ISA bus.

The adapter circuit to SC425APB IC socket pin mapping needs to be done according to the following description.

  • 66.66 MHz frequency from a metal can oscillator maps to pin 11.
  • 33.33 MHz frequency from a /2 divider built around the 74F74 integrated circuit maps to pin 8.
  • 14.31818 MHz frequency from a a series oscillator built around 74F04 maps to pin 13. Crystal input for this circuit maps to pins 2 and 3.
  • Pin 7 is VSS signal and pin 14 is VCC signal.
  • Pins 1, 4, 5, 6, 9, 10, and 12 are not connected.

This circuit can be made very compact in SMD technology. The 74F74 D-type dual flip-flop can be replaced by the SN74LVC1G74 single D-type flip-flop integrated circuit. 74F04 hex inverter can be replaced by SN74LVC3GU04 triple inverter. With a little bit of tweaking around you can build this adapter under the form of a DIP-14 PCB to insert directly in the SC425APB socket.

3D Printed ISA Bracket

Because my searches for a compatible ISA bracket were not that successful and because this is an entirely DIY project, I decided to attempt to build one myself. While I do have some experience with AutoCAD, I haven't used this computer program since 2006. Thus I decided to try a different approach for the sake of learning something new. So I went with OpenSCAD this time.

However, the ISA bracket is work in progress at this moment.

Construction and Pictures

Let's proceed to the actual construction then.

This printed circuit board (PCB) is very hard to photograph due to its large width and small height. Thus most of the pictures will suffer from barrel distortion. There is nothing that I can do here. I don't have a good digital camera. All pictures were taken either with my mobile phone or with my old Sony DSC RX-100 digital camera under very good lighting conditions.

This is the bare 4-layer PCB.

It sure does look nice.

The solder side looks nice as well.

Aligning the OPTi chipset for soldering. And then quickly a second thought: wait a minute, pin 1 is not on lower left corner but another 90 ° rotation to the left.

Like in this image. The chipset is now correctly soldered.

I started to solder the various passive parts.

SIMM sockets have these centering pins on their outer edges. Unfortunately these don't fit the socket fixture holes and need to be removed. The layout of the SIMM sockets that I used had these holes .5 mm offset to the left.

These plastic pins are very brittle and crack quickly.

Slowly progressing.

Soldered the beautiful miniature 7-segment elements.

Almost all passive parts are soldered in.

I have then inserted the CPU, FPU, and all other integrated circuits in their respective sockets.

Unfortunately I am missing a few components. I wasn't paying attention when I did the original Mouser order and forgot to order two 16-pin augat sockets, one additional 10 uF / 25 V tantalum capacitor, one additional 100 Ω resistor, and one 9-position 1 kΩ resistor array.

But even without the 7-segment driver chips and the other missing parts, I have decided to give this ISA card a try. I have temporarily attached a recovered 1 kΩ resistor array on the backside of the PCB and I have inserted it into an ISA slot on my DIY system backplane. Surprisingly nothing (!?) happened. At all. Total confusion. Thus I measured the voltages on the supply rails and all seemed within the ±5% specification rating. I measured close to 4.98 V on the supply pins of the ICs located near the ISA slot -- where the power source is -- and at least 4.78 V on the ICs located on the far edge of the ISA card. So it doesn't appear to be a power related problem. I hope it isn't since I cannot correct the supply rails which are located on inner bottom (2) and inner top (3) layers. That would mean a total disaster and the PCBs would be good only for hanging on the wall for display purposes. For comparison reasons I have performed some measurements on an old VGA card with a lot of TTL ICs and not surprisingly all the ICs were receiving a steady 4.93 V. So a first question mark here. Ground and supply planes? What I was thinking about when I designed the layout?

Here is my tiny workbench all crowded by the big tower case.

But for now let's dig deeper.

The machine is not emitting any beeps at all. This can only mean that the CPU doesn't have any chance of reading ROM instructions. Time to get the frequency counter and the oscilloscope out for some hardware debugging. Naturally I started with the master clock generator and surprisingly the CPU and NPU clock outputs were oscillating erratically. The frequency output was about 400 kHz and drifting badly within a ±100 kHz deviation. However the 14.31818 MHz signal was clean and stable. I also measured the output of the RTC frequency generator and it was a clean 32.768 kHz square wave.

Because I could find no on-line literature or datasheet that depicts the operation of the IMI SC425APB IC, I was forced to reverse engineer an existing implementation. Apparently there was a missing decoupling capacitor between pin 6 and ground. I have absolutely no idea what pin 6 stands for. But I installed a 100 nF MLCC part directly between pin 6 and pin 7 of the SC425APB IC and fired the PC again. I connected the frequency counter and got a steady reading of 66.66 MHz at the output of pin 8 (CLK2 signal). Reassuring was that flipping the frequency setting jumpers around produced the 32 MHz, 50 MHz, and 80 MHz frequencies as well. Half the frequency available at the output of pin 8 is available at pin 11 (CLKI signal). That is 33.33 MHz in my case. I also successfully measured 16 MHz, 25 MHz, and 40 MHz when setting the JP5, JP6, and JP7 accordingly. This means that the 82C495XLC internal state machine should be working properly now. So should the CPU and NPU.

Here is the back-mounted 1 kΩ resistor array.

A brief summary of all the measured frequencies on this ISA card can be found below. My counter cannot possibly measure accurately these frequencies since it isn't equipped with an OCXO (oven controller Xtal oscillator). Thus naturally it has an internal frequency drift caused by ambient temperature and quartz crystal aging -- it is old already. I let it warm up for an hour or so before taking the measurements.

  • Real Time Clock, RTC-CLK signal (IC33, pin 6): 32.762 kHz
  • 14.31818 MHz Clock, OSC signal (R11-C40 junction): 14.319 MHz
  • Internal State Machine Clock, CLKI signal (R12-C41 junction): 33.335 MHz
  • Processor Clock, CPUCLK signal (R13-C42 junction): 66.668 MHz
  • Co-processor Clock, NPUCLK signal (R14-C43 junction): 66.670 MHz
  • Keyboard Controller Clock, 8042-CLK signal (IC24, pin 6): 10.048 MHz
  • 82C206 Timer Clock, OSC12 signal (IC34, pin 121): 1.193 MHz
  • AT System ISA Clock, ISA-CLK signal (IC24, pin 5): 10.043 MHz

Funny though the way I named the clock signals. There is little uniformity between their names. I should have followed a better naming pattern for clock signals.

But let's come back to the problem: the PC is still not booting at all. While I'm waiting for the Mouser order to arrive, I'm thinking about what could be so wrong that the CPU isn't booting up to fetch the ROM instruction. I have my doubts that with all the expected parts mounted the system will start anyway. In order for the port 80h diagnostics to provide a valid response, the system should at least start-up. I carefully observed the activity LED (A7 signal) on the system backplane and it is stuck either ON or OFF upon system power-on. This means CPU is not initialized at all. Or it hangs somewhere during the initialization sequence. However one thing is sure. The internal PWRGD signal is correctly showing up. This is reflected by the decimal points of the two 7-segment displays. They briefly light-up at power-on or at system reset. So this subsystem works as expected. My best bet is still on the clock generation circuit implementation. I don't think all is solved yet.

Time for some more investigations then.

The frequency counter is a nice tool but it cannot tell me how the signals looks like. It will just count pulses of whatever shape they are. The best way to visualize signals is to use the oscilloscope. Mine has a bandwidth of 200 MHz thus it should be good for observing high frequency signals. I dare to say that I can detect a clock signal of a maximum 40 MHz but it will look like crap on the screen. However I can take a look at how the various clock waveforms look like.

Below are my experimental conclusions on the analyzed signals.

  • RTC-CLK signal looks perfect
  • OSC signal looks good but there is a lot of jitter (a slight overlapping effect at the end of the scope screen, more than one similar signals overlap each other)
  • CLKI signal looks like a crappy chopped sinewave -- but that is the limitation of my scope -- a little bit of jitter, otherwise it is as clean as it can be
  • CPUCLK signal looks like an even crappier chopped sinewave -- again scope limitation -- a little bit of jitter, otherwise it is as clean as it can be
  • NPUCLK signal, see CPUCLK signal above
  • 8042-CLK signal on the other hand looks nothing like what it should look like, it presents a lot of jitter, starting with the very first periodic cycle
  • OSC12 signal looks perfect, both before and after pass through the HM8226 IC
  • ISA-CLK signal looks very very bad: the first clock-beat looks OKish and the rest present very bad jitter

First I have to solve the ISA-CLK signal. Fixing this will also fix 8042-CLK signal. However because I don't have a better oscilloscope I can only guess that if the OSC signal would be jitter-free, I could rule it out as the root cause of all clock problems.

On the other side, high speed clock signals are difficult to correct without a good ground plane. Since I'm talking about improvements, pins 1, 4, 10, and 13 of IC27 could be better tied directly to the VCC signal. I would let L9 only for the benefit of IC28. RF interference should be reduced by L9 and not get into the inputs of the clock buffer IC.

And finally I am doing this last experiment of removing the ICs one by one and to measure the supply voltages on various points on the PCB. This will totally demystify the power variations.

I have measured the supply rail on each and every part of the PCB and the more ICs I removed, the more VCC signal approached the nominal 5 V reading, peaking at 4.98 V.

OK then, it is a power problem after all.

But even with all the ICs out, the clock signals are the same. Zero improvements whatsoever. So I decided to experiment a little with the master clock generator. I measured with the oscilloscope directly the power supply rails. Sure it should have shown a steady 5 V. In reality it shows a noisy 4.72 V to 4.78 V. If I measure directly on pin 14 of SC425APB IC then the noise is bigger. If I measure on pin 14 of the ICs in the first row next to the ISA slot, the noise is minimal. This means either the IMI chip is inserting noise in the power supply rails, or it is defective -- highly unlikely.

I removed IC27 and IC28 from their sockets and redid the measurements on the supply lines. A clean and steady 5 V shown up this time. Furthermore the voltage is now peaking at 4.98 V on the ICs on the first row next to the ISA slot and 4.93 on all ICs on the far edge of the ISA card. That's strange. I quickly inserted all the ICs back in their sockets and redid the measurements. 4.93 V to 4.98 V on all pin 14 of all ICs on the PCB assembly. So at this point I am inclined to think it is not a power supply problem. Now I get the same readings with and without the ICs.

The next logical step was to inject correct clock signals to pins 3, 6, and 8 of IC27. I improvised some connection cables from the same pins of 74F08 from an unbranded 80386DX ISA mainboard that I have lying around. I connected these cables to my SMBC card and fired up both the industrial grade mainboard and my DIY microcomputer board. Because I used different power supplies, I also routed a GND signal between pin 7 of IC27 and pin 7 of 74F08 on the industrial mainboard. I measured with the scope the usual suspects on my SBMC board. What a surprise: ISA-CLK looks perfect. It is a nice 5.55 MHz signal. So even with the crappy unshielded 30 cm wiring connected between different PCBs using different supplies, the clock signal is propagating nice. Furthermore here is no noise on the supply rails on the SMBC PCB.

As much as I wanted to test the microcomputer, it proved impossible. In my hurry and with tons of enthusiasm, I have connected the Intel 80386DX CPU in ... reverse. There was no magic smoke but the internal supply rails of the PCB heated up in such way that they burned the beautiful purple soldermask. Like an electric heater nonetheless. The PCB was so hot that I could barely hold it in my hands. Ups! I let the board cool down and then I removed the CPU and inserted it correctly. Hope dies last, but it dies in the end. I think this CPU is fried. There are no signaling pulses on the address or data buses. However I measured the supply voltages on various points on the PCB and everything appears to be working properly. The supply rails resisted without major damage. Even the clock signals were still correct. This means that the OPTi system controller chip is hopefully still in good working condition.

Damaged inner tracks.

More damage.

Burnt inner track apparently affected the sticlostratitex (FR-4) layer provoking a bulge. The fiberglass substrate is UL 94V-0 flame retardant but as it heated up due to the short-circuit I created by reverse installing the CPU, gas (smoke) was produced in the inner top (3) layer. It is still trapped inside.

Another quick test proved that at least some internal sections of the CPU are still good. Removing the 66 MHz clock lets the CPU cool down to a steady room temperature. Injecting the 66 MHz again slowly rises the CPU temperature to about 40 degrees. Which is a normal behavior. However I cannot vouch for the other CPU internal sections which received unexpected VCC or VSS signals. Also the other components experienced heating stress up to a certain point. So there is no guarantee that they are still good. $h*t.

That is what happens when you work with electronics at midnight after a long week full of hard work at the daytime job. My disappointment at this stage cannot be written in words. I feel ashamed.

Now I need to source another CPU before I continue my research.

RIP Intel A80386DX-33 IV CPU.

In the meantime I am trying to replicate the master clock generator on a breadboard. I am hoping to understand its operating principle and improve my circuit design. My goal is now to get rid of unwanted oscillations and produce clean OSC, CLKI, and CPUCLK signals. The rest of the clocks are derived from these three fundamental frequencies.

I decided to spend some time to perform a deep search on the Web for information related to the IMI SC425APB IC. I used my deep search knowledge (thanks +Fravia) and after a few hours I came up with a few related documents. One of them depicts the entire IMI SC4XX series ICs at a block diagram level. Another one is exactly the datasheet of IMI SC425APB. Who would've thought? One year later I found what I wanted in basically no time.

Block diagram and internal operating principle is depicted in the picture below. It generates the frequencies via a voltage controlled oscillator (VCO) and some ROM patterns. These are selectable via S0, S1, S2, and S3 signals.

Connection diagram and pinout as follows.

So pin 1 is TS signal. It will force outputs to be in tri-state mode. Apparently it has a pull-down resistor. That explains why it was not connected on the implementation circuit that I reverse engineered. And pin 6 is PD signal. It is used as a phase detector output for the clock generator. So the 100 nF capacitor is used to complete the loop filter.

Apparently this circuit can generate more frequencies than I thought. It can easily do 24 MHz, 32 MHz, 40 MHz, 50 MHz, 66.6 MHz, and 80 MHz as MCLK2 signal and half that as MCLK1 signal. Alternatively it can go even lower (division by 2) but that is out of scope.

In the connection diagram from the datasheet they recommend to use 10 pF capacitors for quartz crystal decoupling. I originally went with 22 pF. I think it is a good idea to replace C38 and C39 with 10 pF parts. They also recommend a 4.7 uF capacitor on the power supply rail. I will respect this recommendation and use a MLCC part for decoupling purposes.

OK, I have won a couple of 80386DX chips on eBay, but all are rated 25 MHz. No problem about this though. My goal is to get a running version of this microcomputer.

Me: Who wants to go in next?
CPUS, all in choir: Not me, not me!

Breadboard playground. I replicated the whole circuit in the first place. But I encountered some issues and I disconnected the 74F08 clock buffer IC. And the quartz crystal loading capacitors.

The disturbing fact is that I still cannot get steady MCLK1 and MCLK2 signals on the breadboard. An amount of jitter is present on the scope, as it was the case of the implementation on the SBMC PCB. Heck even the REF signal has jitter now. On a second thought this is kind of normal since RF circuits and breadboard hardware really don't mix up very well. Internally the breadboard has some long rows of metal that connect various holes together. These armatures act like small antennas.

Time for some air-wiring then.

This air-wired circuit remembered me of the old times when I was building a home-made transceiver.

I powered the thing up and: now we're talking. RF radiation is reduced and frequencies are very stable.

The REF signal.

The MCLK1 signal.

The MCLK2 signal.

However once I am connecting the circuit to the SBMC PCB, the clock signals look like crap again. I believe it is a problem of signal line loading now.

After some more research I have found out that the jitter appears when connecting the MCLK2 signal. If I connect only REF and MCLK1 signals, everything is alright. The two clock signals propagate throughout the PCB in a very clean fashion. PCB design problems? Path of least impedance? Not required. This is not high-speed. However once I go to a MCLK2 of 80 MHz, things will dramatically change.

Also I have experimented with an integrated quartz crystal oscillator running at 32 MHz. The clock signal propagates perfectly up until I also connect the 14.31818 MHz clock signal. At that point the 32 MHz signal looks still OK but the 14 MHz signal becomes dirty. I think the fact that this PCB is missing high frequency AC ground planes is a problem after all.

...

...

...

Conclusions and Reflections

I was dreaming of designing this microcomputer since the early 1990s. Thus I spent a lot of time to design and build everything to the best extent ever. I made a lot of mistakes which I corrected in early stages of design. However now that I completed this project I can already see some improvements.

  • OSHPark managed to slightly mistake the CNC router-cutting of the PCB. This mistake is clearly visible on the top edge of the board and on the left side. The cutting error is less than 1 mm and it is barely observable. It really doesn't matter in terms of functionality. Only aesthetics are affected.
  • Put large ground and power planes on the inner bottom (2) and inner top (3) layers. In this way the two supply planes will act like a big capacitor with the armatures being exactly the planes. The intrinsic capacity could thus help filtering out the supply rails of individual ICs and will also reduce clock interferences.
  • Clock carrier tracks on the PCB need to be widened up a little bit in order to ensure better signal transport. Also they should not switch layers many times. Or better never at all.
  • Memory /RAS and /CAS transport tracks also need to be widened up by a fair bit.
  • I should test on a breadboard the various circuit sections that cannot be simulated on the computer or that don't have a datasheet available. This will minimize the appearance of issues such as the ones presented above.
  • Master clock generator pin 6 phase detector capacitor needs to be mounted on the PCB, not under it. A slight change of layout is necessary for that. That is another drawback of the fact that the master clock generator circuit was not tested before the actual implementation. Additional local filtering should be carried near the IMI chip.
  • Provide an implementation for the TS signal. It might come in handy for testing purposes.
  • Clock buffer IC27 should have pins 1, 4, 10, and 13 tied directly to the VCC signal. L9 should be only for filtering the EMI interferences on the power supply rail to IC28. Speaking of which, local supply and ground planes just for IC28 would be great. Additionally another RFC bead could be used to separate the local ground plane from the main ground plane.
  • Power supply of IC29 could be additionally filtered through a RFC bead. Additionally the supply rail could have its own dedicated plane.
  • Analog signal ground for all the parts involved in the amplified PC Speaker circuit should have its own dedicated ground plane, decoupled from the digital ground plane through a RFC bead.
  • Better naming pattern for clock signals. This applies to other signals as well. But with a lot of *CLK signals, the traces are hard to follow on the schematic in case of debugging -- see the issues I encountered above.
  • The circuit board can be made smaller by compacting the tracks and reducing the space between the components. However this increases the routing effort. Remember that I did everything by hand. Zero automatic routers were used.
  • There is little longitudinal and transversal PCB stiffness right in the middle of the board. Right between the system controller and CPU chips and the NPU chip. Since there is no multi-pin component that would strengthen the board, it flexes and gives the impression of fragility. However it won't break anytime soon. But it requires bottom sustain when mounted in an ISA slot.
  • A dedicated lithium coin cell charger based on the MCP73831 integrated circuit would be an infinite better solution than the one I implemented. There is enough space on the PCB for this tiny SMD IC and additional components.
  • Rework the PCB traces in order to reduce complexity and number of vias and 45 ° angles. Also widening of certain tracks such as the ones that connect to the 7-segment displays.
  • SIMM socket layouts can be improved so that the socket connector edge plastic pins fit perfectly the PCB fixture holes.
  • Buzzer lead holes could be made 1 mm closer to each other. This is not a big problem but worths to be mentioned.
  • Fix the schematic symbol for IMI SC425APB IC according to the datasheet.
  • Silkscreen layout of the OPTi system controller part could better indicate pin 1. Also the 82C495XLC text would be better if rotated 90 degrees right so that it reflects the logical way the chip needs to be mounted. However once the chip is soldered in place, this text will never be visible. It is helpful only for aligning the part for soldering.
  • Minor improvements to the silkscreen layout of the NPU socket could be done so that it looks similar to that of the CPU. I bet you never observed they are slightly different in the corner that indicates pin 1.

Some of the remarks above are probably overkill and a good sign of overengineering. I will most certainly implement them up to such extent that I consider necessary for the new design to work properly.

Follow Up

Armed with the knowledge that I gathered from this experience, I designed a second iteration of this project. The schematics and the rendering of the printed circuit boards have already been updated in the first part of this page. The old schematics and layouts are still available in that same section. By default they are hidden but you have the option to display them if you want.

Thus let's forget VER. 1.6 REV. C and let's concentrate on VER. 1.8 REV. D from now on.

TO BE CONTINUED SOON At the moment I am waiting for the PCB to arrive from the Factory.


Copyright © 2004- Alexandru Groza
All rights reserved.
VER. 1.0 | REV. A