After building a poweramp, the weakest link in my audio system turned out to be my Harman Kardonn AVR330 receiver, with a specified (and measured) Total Harmonic Distortion of 0.07 %. I decided to start building a 5.1 preamplifier. This turned out to be the longest and most complex project I had undertaken and took me almost two years to complete. But at the moment it is already standing in my living room for half a year and I am very pleased with the result.
Related work
The first idea of building a preamp was made after reading an article in Elektor. It describes a stereo preamp, based on BurrBrown's PGA2311 volume control chip:
On the internet, some other interesting web sites have inspired me in building this preamp:
Mark Hennessy's 5.1 Hi-Fi Preamp
Design
The PreAmplifier has lots of inputs and outputs:
- 7 analog inputs (6x stereo, 1x 5.1)
- 4 digital inputs (1x optical, 3x coaxial)
- 2 monitor outputs (stereo)
- 1 variable output (5.1)
The preamplifier should have:
- Large volume range (-80dB to +20dB)
- Very low distortion (< 0.001%) from 20-20kHz @ 0dB
- Large SNR ratio (> 100dB ) @ 0dB
- Convenient user interface (remote control, buttons, leds, display, encoder)
This resulted in the following components
- VFD module for information (chosen input, volume, etc)
- Texas Instruments PGA2311 stereo volume control chip (3x for 6 channels)
- Main control board using PIC18F452 microcontroller
- Separate digital/analog supply
User Interface
The front panel is equipped with 5 push buttons, 2 leds, an IR-receiver for remote control, a rotary encoder for volume adjustment and a 20x2 VFD display. The leds are a standby led and a power led. Using the power button on the left, the preamp can be switched from standby to normal operation and vice versa.
The preamplifier has a modular design, with the following pcb's:
Control pcb
The heart of the preamp is a PIC18F452 microprocessor. This control board controls the display, various leds, relays, the PGA2311 chip and the other pcb's. It receives its input from the buttons, rotary encoder and IR receiver.
Input selection pcb
This pcb has 8 miniature relays to select the chosen input, 7 of them are available for analog inputs, 1 comes from the DAC pcb. Each relay is controlled with a BC547 transistor.
Volume pcb
The preamp contains 3 similar volume pcb's. The first one is used for the Front left and Front right channel. The output of the relay pcb is buffered using a NE5532 opamp to the 2 fixed outputs. It is also buffered using an OPA2134 opamp to the PGA2311PA volume control chip. The PIC18F452 controller uses the 3-wire hardware SPI function to control the volume. Furthermore, there are two outputs to control a Mute relay and the software mute function of the PGA2311 to prevent startup and powerdown clicks and thumps.
Hafler pcb
This pcb is used to create virtual surround for the surround/center/bass channels from the stereo channels. The difference of the front channels goes to the surround channels, the sum of the front channels goes to the center/bass channels. Using an output of the PIC18F452 you can select whether to use the Hafler virtual surround or pass the surround/center/bass inputs directly to the volume pcb.
DAC pcb
I purchased and modified a cheap DAC kit from Hong-Kong. This pcb was not designed by me, but I consider it a valuable add-on to the preamp, because it adds the convenience of digital inputs to the preamplifier. Besides that, it sounds great! I modified the pcb and added 2 more coaxial inputs, giving a total of 4 digital inputs, which are selectable using 2 outputs of the PIC18F452. More information on the board and the modifications can be found in a separate article.
Digital supply
A separate 10VA transformer is used for the supply of the digital electronics.
Analog supply
A separate 10VA transformer is used for the supply of the analog signal paths.
DAC supply
The DAC kit had a separate transformer and regulator pcb. There was some room left in the preamp, so I mounted it.
Software
Because I was familiar with C/C++ programming, I tried to find a C compiler for the PIC micro-controller. There are a couple of commercial variants available, but the SDCC (small device c-compiler) was used. It was the only free and unrestricted C-compiler for PIC micro controllers. Only drawback was a quite steep learning curve, as there are not a lot of programming examples available. Fortunately the PikLab IDE integrates well with SDCC, so after a couple of simple programs to switch some LED's on and off the real programming work was started.
In the software, the following features are implemented on hardware-level:
- Reading buttons
- Setting output led's and various relays
- Encoder reading
- Infrared sensor reading and RC5 code extracting
- PGA2311 volume control using the PIC Hardware SPI function
- VFD display control
- reading from and writing to EEPROM
On a higher preamp-level the following functions exist:
- Input offset can be set per input, between -9.5dB and +9.5dB in steps of 0.5dB
- Channel offset can be set per channel, between -9.5dB and +9.5dB in steps of 0.5dB
- Input can be enabled/disabled to prevent showing it in main view
- Name can be selected from a list per input
- The settings are read from EEPROM (if checksum check failes, default settings are loaded) on startup and saved when going to standby mode (only when settings have changed)
- etc
Measurements
Measurements are performed with Rightmark Audio Analyser using an E-mu 1212m sound card, which is about the best you can get for audio measurements. Results of a loopback test @ 48kHz (soundcard analog out -> analog in) with this card can be found here.
Stereo channels
Measurements are done @ 48kHz. Amplification is set to 0dB. Measurement summary:
Frequency response (from 40 Hz to 15 kHz), dB |
+0.02, -0.14
|
Very good
|
Noise level, dB (A) |
-112.7
|
Excellent
|
Dynamic range, dB (A) |
112.8
|
Excellent
|
THD, % |
0.0006
|
Excellent
|
THD + Noise, dB (A) |
-98.4
|
Excellent
|
IMD + Noise, % |
0.0015
|
Excellent
|
Stereo crosstalk, dB |
-104.0
|
Excellent
|
IMD at 10 kHz, % |
0.0023
|
Excellent
|
General performance |
Excellent
|
RMAA results of the complete test can be found here. Comparing the stereo channels with the E-mu loopback test shows no major differences, so the performance of this pre-amplifier is so good that it is hard to measure.
Surround channels
Amplification is set to 0dB. Measurement summary:
RMAA results can be found here. Similar results as for the stereo channels.
Center/bass channels
Amplification is set to 0dB. RMAA results can be found here. Similar results as for the stereo channels.
Monitor/LineOut channels
RMAA results can be found here. Similar results as for the stereo channels.
Comparison
48kHz
The above-mentioned channels are compared, measurement summary:
Test | DjukePreamp Ch1+2 | DjukePreamp Ch3+4 | DjukePreamp Ch5+6 | DjukePreamp AnalogOut |
Frequency response (from 40 Hz to 15 kHz), dB: | +0.02, -0.14 | +0.02, -0.14 | +0.02, -0.14 | +0.02, -0.10 |
Noise level, dB (A): | -112.7 | -113.1 | -112.8 | -113.3 |
Dynamic range, dB (A): | 112.8 | 113.1 | 112.7 | 113.2 |
THD, %: | 0.0006 | 0.0006 | 0.0006 | 0.0004 |
IMD + Noise, %: | 0.0015 | 0.0015 | 0.0015 | 0.0014 |
Stereo crosstalk, dB: | -104.0 | -112.3 | -111.8 | -104.3 |
Complete results can be found here. The comparison shows similar results for both distortion and noise level. Only the stereo crosstalk for the front channels is a little bit worse, which is caused by the Hafler pcb.
96kHz
Measurements have been performed also at 96kHz, with the soundcard connected to Preamp DAC using optical out. Then measurements are done while connecting to the soundcard analog inputs:
- output of the DAC
- output of the FrontOut channels, with volume set at 0dB (no amplification)
- output of the LineOut channels
Comparison:
Test | DjukePreamp DAC | DjukePreamp FrontOut | DjukePreamp LineOut |
Frequency response (from 40 Hz to 15 kHz), dB: | +0.04, -0.37 | +0.05, -0.41 | +0.04, -0.37 |
Noise level, dB (A): | -104.7 | -104.4 | -104.6 |
Dynamic range, dB (A): | 104.8 | 104.4 | 104.6 |
THD, %: | 0.0003 | 0.0005 | 0.0003 |
IMD + Noise, %: | 0.0017 | 0.0022 | 0.0018 |
Stereo crosstalk, dB: | -98.9 | -100.9 | -101.1 |
Complete results can be found here. Compared to the 48kHz reults, the soundcard optical output is used in combination with the DAC resulting in even lower THD. Noise figures seem to be worse, but this is a result of different volume settings for the sound card. Nice to see is that the LineOut (with NE5534N opamp) adds effectively no (measurable) distortion and the FrontOut channels (with OPA2134 input buffer and PGA2311PA) gives only a slight increase in distortion.