Sound Blaster 1.0 Principles of Operation

Cleverness No Comments

The Sound Blaster 1.0 was not the first PC sound card, but it was the first to support digital sound, two different types of sound synthesis, MIDI, and a joystick all in one card. Let’s lift the hood and examine how the card does its magic.
You can follow along by looking at the schematic here.

Sound Playback
There are three methods a Sound Blaster card uses to play back digital audio.

Direct DAC
The first is called Direct DAC and it means that the PC software has to feed the sound card each sample at just the right time. It works a lot like the parallel-port DACs that people used to build in the 80s and 90s, or like the Disney Sound Source. When you send a data byte to the sound card, it immediately changes the analog signal going into the speaker amplifier.

Software using this method typically sets up a periodic timer interrupt. In the interrupt handler, the new sample is calculated and then fed to the sound card for playback.

Although it’s a simple method, it produces extra noisy playback to due the timing jitter of the interrupt handler. Because PC interrupts are non-deterministic, the samples don’t occur at precisely the sampling rate. This timing difference means that the waveform being reproduced doesn’t match the source material, and the difference in voltage sounds like noise or hiss.

DMA DAC
The other method uses the DMA (Direct Memory Access) controller on the PC motherboard to automatically send samples to the sound card. It does require a little bit more work to set up the operation.

  1. The software configures the PC’s DMA controller (historically an Intel 8237) with the source address and length. The DMA controller is set to perform a single transfer per DMA request (DREQ).
  2. The Sound Blaster is configured for a particular sampling rate. It programs an internal timer to generate a DREQ signal at the sampling rate.
  3. The software sends the playback command to the Sound Blaster.

The next operations happen in a loop until all the samples have been played back. Notice that the software is not involved at all—just the DMA controller, the Sound Blaster, and main memory.

  1. The Sound Blaster asserts DREQ.
  2. The DMA controller responds by asserting DACK (DMA Acknowledge) at the same time it places the memory address and memory chip select onto the bus. The data byte gets transferred directly from main memory into the Sound Blaster input register!
  3. The Sound Blaster takes this data and sends it to the audio DAC.

Finally, the Sound Blaster ends playback then triggers an interrupt to let the software know that it is done with playback.

Auto-Initialize DMA DAC
The final method, introduced with the Sound Blaster 2.0, is very similar to the previous method, except the ending. The Sound Blaster triggers an interrupt as before, but then it reloads the sample counter to the original value and continues requesting samples from the DMA controller!

The usual way software uses this feature is to create a seamless digital audio stream using a double buffer. The DMA controller gets a buffer that is twice as big as the number of samples that the Sound Blaster is programmed to play back. Because of that, the interrupt gets triggered halfway through buffer playback. In the interrupt handler, the software then loads a new set of samples into the buffer half that has already been played. When playback hits the end of the DMA buffer, the interrupt triggers again, only this time the software refills the last half of the DMA buffer. The DMA controller then wraps around to the beginning of the buffer and playback continues unbroken.

One of the side effects of this approach is that if the software crashes, the DMA controller and sound card continue to play back the sample buffer in a loop. You may have heard this when playing old DOS games back in the day.

Sound Recording
This works in very much the same way as playback including the Direct mode, DMA mode, and Auto-Init DMA modes, except data gets transferred in the opposite direction, from the sound card into main memory.

One interesting wrinkle is that the Sound Blaster doesn’t actually have a proper ADC (analog-to-digital converter)! Instead it uses a clever circuit and an algorithm to accomplish the same thing:

  1. An input filter processes the incoming sound to smooth out any high frequency transients. This is common practice, even with an ADC, to help prevent sampling-induced aliasing, but it it’s helpful for making the trick work.
  2. A comparator looks at the difference between the audio DAC and the incoming signal. The output of the comparator is only one bit; it can only tell if the incoming signal is greater than or less than the setting of the audio DAC.
  3. The DSP starts the audio DAC at the halfway point, then looks at the comparator output. The comparator output gets recorded as the most significant bit of the audio sample.
  4. Depending on the bit, the DSP sets the audio DAC up or down half again—either 25% or 75%.
  5. The DSP repeats steps 3 and 4, going halfway again and again until it’s obtained the 8 bits of a complete sample.

This technique is known as successive approximation, and it’s a technique used in many ADC chips. The code looks something like this:

mov p1,#80h ; Start DAC at the halfway point, 1000 0000
mov c,t1 ; 1 Put comparator output into carry bit
mov p1.7,c ; 2 If greater, then leave MSB as is. If less, clear MSB
setb p1.6 ; 1 Set DAC to upper or lower halfway point
mov c,t1 ; 1 Check comparator output again
mov p1.6,c ; 2 Rinse and repeat
setb p1.5
mov c,t1
mov p1.5,c
setb p1.4
mov c,t1
mov p1.4,c
setb p1.3
mov c,t1
mov p1.3,c
setb p1.2
mov c,t1
mov p1.2,c
setb p1.1
mov c,t1
mov p1.1,c
setb p1.0
mov c,t1
mov p1.0,c
mov a,p1 ; We are done, copy DAC code into accumulator.

The Hardware, Section By Section

Address Decoder
The address decoder takes the I/O port address off the ISA bus and looks for accesses at 210h, 220h, 230h, 240h, 250h, or 260h depending on the jumper setting. It also looks for 388h and 389h so that it can make the Yamaha OPL2 chip appear there for Adlib compatibility. It also decodes 0x200-207h as the joystick port (each address is actually the same).

A jumper, JP1, can be pulled to shut off the PC joystick port. The MIDI function still works, however. Many combo-IO boards came with a built-in joystick port so the one on the Sound Blaster may not always be needed.

Reset Circuit
It’s important to make sure the card powers up in a good state without generating spurious noises, so the SB uses the ISA RESET signal to clear the OPL2, the CMS chips, the joystick one-shot, and basically all of the other internal state latches.

There is also an IO port that, if you write a 1 to it, resets the DSP and its associated bus interface. (You also have to write a 0 to it afterwards to allow the DSP to start operating.) Later versions of the DSP require this to exit high speed auto-init DMA mode, since in this mode, the DSP devotes 100% CPU to servicing DMA requests.

DSP
The core of the digital sound capabilities of the Sound Blaster is the Digital Sound Processor, or DSP for short. It’s not actually a Digital Signal Processor in the traditional sense—it’s just an 8051 microcontroller with custom firmware.

The DSP also handles MIDI transmit and receive using the 8051’s built-in UART.

DSP Bus Interface
The bus interface allows the host PC to talk to the DSP. It uses two unidirectional 8-bit registers as a “mailbox,” temporary holding areas for a single data byte. One is for PC-to-DSP communications, and the other is for DSP-to-PC communications. There are also two data flip flops that are used to signal when data is available in one of the registers.

When the PC sends data to the DSP (I/O port 2XCh), the data gets stored in an 8-bit register and the flip-flop is automatically set high (DAV_DSP).

When the DSP reads the register, the flip-flop gets cleared automatically.

When the DSP sends data to the PC, the data goes into the other 8-bit register and the other flip-flop automatically gets set (DAV_PC). The PC can check this bit by reading from I/O port 2XEh. When it reads from I/O port 2XAh, it receives the byte of data and the flip-flop automatically gets cleared. The DSP can see that the PC has read the byte by checking the DAV_PC input. The DSP often checks this pin to make sure the PC has read a data byte before writing a new data byte to the register, otherwise the byte in the register will be lost before the PC has a chance to read it.

Interrupts
When the DSP is done with a particular (often lengthy) task, it can signal the host PC by asserting the interrupt line. It does this by pulsing IREQUEST which triggers a flip-flop that asserts the IRQ line on the PC bus. On the host PC, the interrupt handler is supposed to clear the interrupt by reading from I/O port 2XEh. This simply clears the flip-flop which then deasserts the IRQ line.

DMA
When the DSP needs a new sample from the PC (or needs to transfer a new sample to the PC during record mode), it pulses the DREQUEST line. Note that the DSP also needs to enable DMA by asserting its DMA_EN# line. When DREQUEST pulses, it causes the DMA request flip-flop to output a 1 on the DRQ1 line. The PC’s DMA controller responds by asserting DACK1#, which clears the flip-flop. DACK1# also bypasses the address decode logic of the Sound Blaster and forces it to either accept data from or place data on the ISA bus lines. This data transfer happens between the ISA bus and the mailbox registers.

Digital Audio Output
An 8-bit DAC connected to the 8051 generates an analog current corresponding with the digital code on its inputs. A current-to-voltage converter (U5C) changes the current into a voltage that is used by the rest of the circuit. This voltage goes through an antialiasing filter which removes distinctive- and ugly-sounding artifacts from the audio signal. U5A implements this filter using a Sallen-Key design. The filter cutoff frequency is about 4KHz, meaning that it’s designed to prevent aliasing for sample rates of 8KHz and above.

Next, the signal goes through an op-amp circuit which mixes the digital sound with the audio from the FM synthesis chip as well as the CMS chips. Unlike later Sound Blaster cards, the mixer is fixed and cannot be adjusted.

Finally, the signal goes through the volume control wheel and the built-in audio speaker amplifier before coming out the audio jack on the back of the card.

Since there is only one DAC, playback is mono, not stereo.

Audio Input
The Sound Blaster has a microphone jack on the back. It is only compatible with dynamic microphones or electret microphones that have built-in batteries because it has no bias power supply, unlike more modern sound interfaces. The input signal goes through a series DC-blocking capacitor and then into a preamplifier that converts the high impedance microphone signal into a low impedance signal needed by the rest of the internal circuit.
The preamplifier is also a Sallen-Key low-pass filter with a cutoff frequency of 4KHz. It is a 2nd order filter which means the attenuation increases by 40dB per decade. At 40KHz, the signal is down by 40dB.

The signal passes through a gain stage that amplifies the low-level signal, then passes it into the AGC (Automatic Gain Control) circuit. This circuit rectifies the AC input signal and filters it into a slow-moving voltage that represents the average level of the output (an envelope signal). This signal goes into a transistor that can attenuate the gain stage’s input signal level if it gets too high.

The gain stage uses an LM324 with a gain of 47 (about 17dB). Looking at the LM324’s datasheet, that gives us a bandwidth of about 30-50KHz. A small feedback capacitor (C41) makes this amplifier a single-pole low-pass filter with a cutoff frequency of 7.2KHz.

This filtered and amplified input signal goes into one input of the ADC comparator. The other comparator input comes from the audio DAC which generates the successive approximation signal.

There is something missing from the circuit, however. A true successive approximation ADC uses a sample-and-hold circuit to prevent the signal from changing voltage during an acquisition cycle. The Sound Blaster cheats and just pretends that the antialiasing filter will slow the signal down enough. It’s probably a bit noiser than it could be.

During ADC sampling, the DSP activates a mute circuit that prevents the successive approximation signal from bleeding out into the speakers, which is important because it would sound terrible! Because the audio DAC is used for both playback and recording, the Sound Blaster is only half duplex and cannot play back audio at the same time it is recording it.

MIDI I/O
The DSP, since it is just an 8051, has a built-in UART. The DSP firmware configures the UART for the MIDI baud rate (31250) and handles the MIDI messages.

There is a jumper bank just above the DSP that has some wires installed instead of a normal 0.1″ header pin array. The shorting wires route the UART RX and TX lines from the DSP out through the joystick connector. If the wires were removed, then a serial cable could be installed on the headers. I suspect this is how the engineers at Creative Labs debugged firmware issues.

To use the MIDI I/O with standard MIDI devices, you have to use a special adapter cable that includes the optoisolators required by the MIDI standard.

FM Synthesis
Two Yamaha chips produce FM-synthesized sound. The famous YM3812 OPL2 chip generates a digital serial PCM signal that gets converted into an analog waveform by the YM3014B DAC. The OPL2 chip has already been described extensively elsewhere.

One interesting thing is that the Sound Blaster uses two daisy-chained flip-flops to divide the ISA bus’s 14.318MHz clock signal down to 3.579MHz for use by the OPL2 chip.

To sum up, this part of the Sound Blaster behaves exactly like an Ad Lib sound card. Since there is only one single-channel YM3812, the FM synthesis output is mono.

CMS Music
The CMS (Creative Music System) chips are actually Philips SAA1099 audio chips.

The clock signal for these chips comes from a 7.159MHz signal which is just the ISA 14.318MHz clock divided by two. It’s a tap off the same clock divider chain used by the FM synthesis chip.

These two chips generate a left and a right channel, and they’re the only source of stereo sound on the Sound Blaster!

There is a flip-flop, U20B, that drives the ISA bus’s IO CHRDY signal to lengthen the host PC’s bus write cycle for the SAA1099 chips because they are quite slow.

Joystick Circuit
Here’s another place where the Sound Blaster cheats and doesn’t use an analog-to-digital converter. Just like the IBM joystick card (and clones), it uses an NE558 (the “quad” version of the classic 555 timer) as a variable one-shot timer. Each joystick axis is a variable resistor, that, along with a fixed capacitor in the Sound Blaster, controls a time delay. Writing to the joystick port triggers all four timers (one per joystick axis). The software then polls the joystick port and times how long it takes for each axis to reset. The time delay correlates with the position of the joystick.

In the above capture, the circuit has been connected to a resistance of 38.1K. Since the fixed capacitor is 0.01uF and the 558 threshold voltage is 2/3 of 5V or 3.33V, we get a time delay of about 420us.

Conclusion

The Sound Blaster 1.0 met a market need for a low-cost sound card with lots of features and backwards compatibility. It supported digital sampling using some clever hacks to keep the costs down, worked with all existing software that supported the Ad Lib sound card, and even integrated joystick support and MIDI functionality. No wonder the Sound Blaster series became the most popular sound card of all time!

If you want to try one out in your retro PC, consider building my replica design, the Snark Barker. The design files are available at my GitHub repository.

Announcing The Snark Barker, a 100% Compatible SB 1.0 Replica!

Projects 7 Comments

In December 1989, Creative Labs launched the now-famous Sound Blaster card. Almost 30 years later, I’d like to announce the Snark Barker, a replica of the original card designed to satisfy all your retrocomputing cravings!

Snark Barker Image

Check out my GitHub repository for all the design files.

The design has been tested and works with a number of old DOS games, and is compatible with the CMS chips (actually Philips SAA1099 devices).

The Best Op-Amp in the World

Uncategorized No Comments

Ever wonder what the best op-amp in the world is? Wonder no more, it is the IC01 Ideal Operational Amplifier! Good luck buying one — they seem to be having some lead time issues.

MPU-IMC Clone

Projects 1 Comment

Here’s another cloned card for your retro PC: may I present the MPU-IMC clone! (The what?)

It’s a clone of an old card that Roland made for interfacing PS/2 computers (MCA bus) with MIDI equipment like musical keyboards.

Files may be found at GitHub.

Don’t get too excited though because it’s not complete. Well, the board layout and schematic are fine, but there are two chips on the board that are special.

  • The HD6801VD855P (Roland part number 15179222) is a mask-ROM microcontroller that runs the entire card. I’m not aware of anyone who’s dumped the ROM, but maybe now there is an incentive to do so. 😉
  • The HG62E08R10FS (Roland part number 15239133) is a gate array device. Think of a CPLD but these were “programmed” by customizing the top layer of metal during the IC fabrication process. Roland calls it the “Handshake controller” but nothing is known about the internal logic. If someone sacrifices a card and decaps this chip, a simple image of the top metal should be enough to deduce the functionality. There are rumors this chip is used on other Roland cards, but I am hesitate to say they are identical. I suspect Roland had various versions of this chip with different logic depending on the card and the computer’s bus. More work needs to be done.

Anyway, I hope this is useful to someone out there!

IBM 5161 Expansion Chassis Extender and Receiver Cards

Projects 3 Comments

Today is an exciting day for people who collect vintage IBM PCs and XTs! IBM had a somewhat obscure add-on product called the 5161 expansion chassis, which looked exactly like an IBM PC but with a difference case badge. It allowed customers to add two additional full-height drives (typically 10MB MFM hard drives) and 7 usable expansion slots (excluding the one used for the MFM disk controller). And yes, with those full-height hard drives, it sounded like a jet engine.

Connecting the expansion chassis to the host PC were two expansion cards. One, the extender, was placed in the host PC. The other, the receiver, went into the expansion chassis. A 62-pin D-sub connector tethered the two together.

One small problem: with the few remaining 5161 units, the extender card was typically separated and lost. Often the connecting cable was as well. If you got lucky, you might find a PC with the extender card still in it. Regardless, people often own more expansion chassis than extender cards, making them useless. Until now.

Based on careful study of high resolution photos of the cards and the schematics published in the IBM technical reference manuals, I’ve been able to design duplicates of both the extender and receiver cards. Details are in my GitHub repository.

Even if you don’t own an IBM 5161 (and I don’t blame you, it’s a bit obscure!), you might still find the cards useful. The receiver card works fine in common passive ISA backplanes! One small caveat: The backplane in the 5161 provides the 14.318MHz OSC signal which many ISA cards need. Passive backplanes do not provides this signal. You can check edge contact B30 on the back of the card edge. If there’s a missing contact or a contact that doesn’t connect to a trace, the card should work.

This card also needs some initialization to function. The BIOS in the PC/XT take care of this automatically, but this may not be true for all BIOSes. I’ve only tested it in my IBM PC. Even so, it may be possible to get it working by poking at the card’s I/O ports.

Enjoy!

A Vacuum Tube ROM?

Uncategorized 4 Comments

Is such a thing possible?

Turns out it is, and it’s called a Monoscope. I recently got a Raytheon CK1414 Monoscope with a good getter and a working filament–naturally, I decided to fire it up.

The Monoscope is essentially a CRT; it has an electron gun and deflection plates which create a thin electron beam and points it towards the screen. Unlike a CRT, there is no phosphorescent coating on the end of the glass envelope. Instead, there is a metal plate that has an alphanumeric character set printed on it (an 8×8 array for 64 possible characters). There is also a conductive band around the glass called the collector which has a slight positive charge compared to the target. When the electron beam hits the target, secondary electrons “splash” off and are attracted to the collector. Fewer secondary electrons come off when the beam passes over part of the printed character. There is a wire coming out of the front of the tube that is attached to the target, and by measuring the current in this wire while you scan the electron beam across the target, you can pick up an analog video signal corresponding to the printed characters.

My early experimental setup suffered from a few problems (how do you focus the electron beam when you can’t see a spot on a phosphor screen?) but eventually I got this fuzzy image on my Tek 465M in XY mode:

You can see the round shape of the target along with some marks in the edges. The darker bit in the middle are characters, but things are just too fuzzy to see them. Part of the reason was that the video amplifier I used had a gain-bandwidth product of only 4.5MHz. In a non-inverting amplifier circuit with a gain of 100, the bandwidth was only about 45KHz! This just was not enough. There was also some distortion in the deflection amplifiers.

After adding another gain stage to the video amplifier and rearranging the circuit so that I could drive the deflection plates directly with some function generators, I saw this on my oscilloscope screen!

After a little research, I found out that the tube was used in some very early computer terminals including Raytheon’s DIDS-400 (c. 1967). To generate the display, the Monoscope was connected to a standard CRT. There were two sets of deflection circuits: one picked the character from the Monoscope while the other selected the location on the CRT. A pair of sine waves (really!) was fed to both sets of vertical and horizontal deflection plates, producing a raster scan which copied the character from one tube to another.

This worked quite well in the days before character generator ROMs. The tube acts essentially as an analog ROM.

Other companies combined both the Monoscope and the CRT into a single monster tube that had deflection plates, a mask with the character set, and a set of electromagnets that could rotate and position the character on the phosphor screen! Such a tube was called a Charactron(Convair) or Typotron(Hughes). A version of this tube was used in the computer terminals of the SAGE computer used in the US early warning radar system.

I decided to switch back to the higher-voltage deflection amplifiers to see if I could look at the entire character set at once. With the improved circuit, I got a better image:

It took a bit of tweaking to get the image. You can see alignment marks and other features on the metal target disk.

My setup looks like this:

In the middle there are three potentiometers which control brightness (really beam current), focus, and astigmatism.

As I was shutting off the high voltage supply, the image shrank on my oscilloscope screen since the deflection factor decreased, and I saw something interesting:

The target is in the middle, but there are odd shadows on the top, bottom, and sides. These are actually the deflection plates! The left and right plates are nearer to the electron gun so they block the view of the top and bottom plates which are closer to the target. When I saw this, I realized that this tube is essentially a miniature scanning electron microscope–only there’s just a single, permanent sample since the tube is sealed.

If you have one of these tubes and you want to experiment, the circuit I used looks like this (click for larger version):

You will need a 1000V power supply such as one designed for operating a photomultiplier tube. Needless to say, high voltages can kill you and should be treated with respect; please take proper precautions when experimenting with this stuff. Ground the metal cases of the potentiometers or use insulated knobs so you don’t shock yourself.

Connect the oscilloscope channels 1 and 2 (in XY mode) to the deflection plate inputs. Connect the oscilloscope’s Z-axis input to the video output from the amplifiers. I’ve only shown one stage, but you’ll need more gain to get a good signal. The function generators should be generating rising ramp sawtooth waveforms, but even sine waves will work. If you can synchronize the two, then you’ll get a more stable picture.

The vacuum tube’s filament needs 6.3VAC, so I’ve provided that with a transformer. Please check the transformer’s datasheet to make sure it can withstand the 1000V between the primary and secondary. Often this is called out as the maximum isolation voltage.

Well, there you have it–when ROM chips didn’t exist, people stored data in miniaturized scanning electron microscopes!

Simple Commodore PET Tape Interface

Projects 1 Comment

Before I put together a long term solution, I wanted a quick way to transfer software from my PC to my Commodore PET. There are other circuits, but I wanted something that used just one part.

The PET input is TTL level, so I needed something to go from audio level to TTL. Ideally a comparator circuit with plenty of gain. Well, I couldn’t find a decent comparator in my junk box, but I did find a CA3140 op-amp. This is way faster than I needed, but should work OK as a comparator. If you build this circuit, try to find a comparator or an op-amp with a rail-to-rail output.

Here is the circuit:

And here’s what it looks like:

It works quite well. The circuit is not very sensitive to the output audio level from the PC–I set mine halfway (line level) and it was fine.

New MOnSter6502 updates, with video!

Uncategorized 7 Comments

It’s been a while since we’ve had an update to the MOnSter6502 project–we’ve been very busy getting the second revision ready. At the same time, I’ve been designing a simple yet powerful 6502-based computer that can operate at the slow clock speeds required by the MOnSter6502.

But before I go into detail about that, take a look at this video update. It’s one thing to see photos of the MOnSter6502, but the video really brings out just how awesome this thing is in person! (Shameless plug for Maker Faire Bay Area 2017 where you should come visit us.)


The MOnSter6502 runs up to about 60KHz clock, which is quite a bit slower than the original. The computer I’ve designed for it uses another microcontroller to simulate hardware peripherals, inspired by capabilities of various ’80s computers and gaming consoles. The idea is to offload CPU-intensive video and sound tasks to the microcontroller, freeing up the 6502 so that it can be used in real time despite the slow clock.

Right now, I’ve implemented several software-defined peripherals

  • VGA video output with 256 color graphics, tiles, and sprites
  • Multichannel stereo sound synthesizer
  • PS/2 keyboard interface
  • KIM-1 style front-panel debugging keypad and LED display
  • USB-CDC interface with a 6502-accessible UART for communications with a host PC

The computer can also run a full validation suite on the connected 6502, which has been quite useful troubleshooting the highly complex MOnSter6502 boards.

The computer is still a prototype, but you can see some shots of it in the video above.

You can find more updates and information at the project site.

Maker Faire 2017

Uncategorized 4 Comments

The MOnSter6502 will be at the Bay Area Maker Faire this year! If you’re around, come by and say hi.

A Reproduction AdLib Sound Card

Projects 16 Comments

Edit: Someone who goes by W9EO has recorded assembly videos on YouTube which you may find helpful for building this card. He is also selling completed cards if you don’t want to solder it yourself.

Growing up, I used to play some games on an AST 286 computer, including Commander Keen, Wing Commander, and a few others.

Sound in those days was primitive compared to modern machines, but I still have a soft spot for the bleeps and bloops of the OPL2 synthesizer cards (which includes the AdLib).

Recently I have been fixing up an IBM XT (with original CGA card!) and I needed a sound card. It turns out that early sound cards like the AdLib or the Sound Blaster are quite expensive on the used market, so I thought I’d make a clone of the AdLib sound card (1990 version). Being me, I couldn’t just make an electrical equivalent. It had to look as close as possible to the real thing.

Here it is.
my_adlib2

Compare it with the original 1990 version of the AdLib sound card.

I started with Sergey’s OPL2 card and corrected some differences between it and the genuine AdLib card. Since I don’t own a physical card, I found photos on the net of the front and back of the card to use as a reference. To make sure everything matched up exactly, I figured out the design grid of the original and duplicated the traces and component placement as closely as possible. All the library footprints are custom designed to match!

The KiCad design files are available on GitHub. Mouser part numbers are embedded in the KiCad design but they are also included in the table below. The Yamaha OPL2 chipset, the YM3812 and YM3014B pair, can be found at various sources online. They were socketed on many older Sound Blaster cards, so I suspect quite a few were recovered by the scrappers.

Q Designator Description Mouser Part
1 J1 CONN_01X05 490-SJ1-3553NG
1 U6 YM3812
11 C4,C5,C24,C2,C25,C20,C19,C26,C1,C14,C16 0.1uF 581-AR215C104K4R
1 D1 D 512-1N4148
1 Q1 2N3904 512-2N3904BU
2 R1,R13 8.2K 291-8.2K-RC
6 R2,R3,R6,R7,R11,R12 2.2K 291-2.2K-RC
1 R4 12K 291-12K-RC
4 R5,R9,R10,R16 10K 291-10K-RC
1 R8 1.5K 291-1.5K-RC
1 R14 POT 652-91A1A-B24-D15L
3 R15,R18,R19 10 291-10-RC
1 U1 74LS109 595-SN74LS109AN
2 U2,U3 74LS138 595-SN74LS138N
1 U4 74LS245 595-SN74LS245N
1 U5 74LS04 595-SN74LS04N
1 U7 YM3014B
1 U8 RC4136 595-RC4136N
1 U9 LM386N 926-LM386N-4/NOPB
1 C18 220uF 647-TVX1C221MAD
4 C7,C6,C9,C8 4700pF 581-AR211C472K4R
1 C12 1000pF 581-AR211C102K4R
1 C17 0.047uF 581-AR215C473K4R
1 C13 270pF 594-S271K43SL0N6TK5R
6 C23,C21,C22,C11,C3,C15 10uF 581-TAP106M025CRW
1 C10 4.7uF 581-TAP475K016SCS
1 MNT1 CONN_01X01 534-9202

To install the card in a computer, you’ll need to get a Keystone 9202 bracket. The KiCad layout includes a drawing showing where the holes need to be punched in the bracket. I recommend using a hand-held sheet metal punch with a 7mm or 9/32 die. You could also drill it but the punch makes a much cleaner hole.

Here’s a bonus photo showing all the parts laid out before soldering. The components were chosen to match the colors on the original card.

adlib_knolled

« Previous Entries