• WANTED: Happy members who like to discuss audio and other topics related to our interest. Desire to learn and share knowledge of science required. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

An Hi-Fi Preamplifier Journey

dartecchia

Member
Joined
Jan 5, 2025
Messages
7
Likes
4
Hello everyone!
I'm embarking onto the design of an hifi preamp and I'd like to share my view on different topics in a detailed way, so that it could be decently understandable, and to receive a feedback if you're interested in them. The following solutions will be nothing new, most of them are based on well established literature, I'm particularly fond of the following textbooks:
  • The Art of Electronics by Paul Horowitz, Winfield Hill
  • Small Signal Audio Design by Douglas Self
  • Microelectronic Circuits by Adel Sedra, Kenneth Smith
I hope it wouldn't be seen as much as a ripoff from some of them: this will be just an expression of what I learned from them.

The Philosophy
  1. Cost and Complexity: I think that simple solutions are, most of the time, the best one. Still there are elegant simple solutions and bad simple design: this preamp doesn't want to be simple at all costs and the design tradeoffs will be evaluated case by case. This means that the overall price is not gonna be in the tenth of thousands, but I want to implement good components and solutions, trying to mantain BoM cost (just components) less that 500€ (I'm european).
  2. Low Noise and Low Distortion: one of the main characteristic of a preamp is the ability to reproduce whatever input signal in the most linear way possible, adding the lowest amount of noise. This will be the main drive of the design, unless it will provide exceptional degrees of complexity with respect to very little improvements.
  3. Number of inputs: I want this preamp to have the following inputs:
    • MM Phono Balanced/Unbalanced
    • MC Phono Balanced/Unbalanced
    • Line IN Balanced/Unbalanced
    • CD Balanced/Unbalanced
    • USB (Integrated DAC)

Basic Design Choices
First thing first: main active device. I feel that in this case the most viable solution, with respect to cost and complexity, is an Op-Amp design: a complete and very careful discrete design could, maybe, provide a lower noise solution, but I don't feel good enough to dwelve into something like this given it would be a much more complex to design and a better result is not really assured.

So I had to choose an Op-Amp that suited the scope.
I know what you all are thinking: NE5532/34. For what it offers it's really difficult to beat: low cost (0.32€/pcs!), pretty low noise (5 nV/√Hz) but I wanted something better! And with a better drive capability, even at a higher cost.
Why a better drive capability? To drive lower value resistor and consequently have lower noise.
Let's evaluate some other Op-Amps:
As you can see they have exceptionally good voltage noise specs but they lack drive capability. I was almost going to choose the AD797 but then I found a new product (November 2023) from Texas Instruments and I knew that this one was the one:
This nasty boy has an output impedence open loop of 5Ω! Linearity is also very good:

THD+N vs Freq.jpg
THD+N vs Ampl.jpg
HD vs Freq.jpg


Unfortunately THD+N is not specified for a 150Ω load, and the harmonic distortion are not specified for less than 100kHz. It could be interesting to perform some measurements in this range, but given the reported specs we are in for a good time.
This is not a cheap Op-Amp though, on Mouser the dual version (OPA2891) goes for 6.34€/pcs.
Still, given the specs, it's the best shot for what I want to achieve.

To maximaze dynamic range and THD specs I'll power it up with a Dual 18V Linear Power Supply (not sure yet if I'll go for reg or unreg).

I want to implement an Equalization Stage with variable cut/boost and frequency controls for LF and HF, though I'm not yet sure which topology to use.

This preamp will also have an Headphone Amp capable to drive up to 32Ω loads.

Input Switching will be done with SPDT Relays, to minimize channel crosstalk.

That seems all the requirement I've given myself. Next topic to be addressed will be the MM Phono Stage, let me recollect my thoughts about it and I'll update the topic in a short time.
Let me know if this project could be of interest to someone and if you see any major flaw or technical difficulties!

Best Regards
 
Hello everyone!
I'm embarking onto the design of an hifi preamp and I'd like to share my view on different topics in a detailed way, so that it could be decently understandable, and to receive a feedback if you're interested in them. The following solutions will be nothing new, most of them are based on well established literature, I'm particularly fond of the following textbooks:
  • The Art of Electronics by Paul Horowitz, Winfield Hill
  • Small Signal Audio Design by Douglas Self
  • Microelectronic Circuits by Adel Sedra, Kenneth Smith
I hope it wouldn't be seen as much as a ripoff from some of them: this will be just an expression of what I learned from them.

The Philosophy
  1. Cost and Complexity: I think that simple solutions are, most of the time, the best one. Still there are elegant simple solutions and bad simple design: this preamp doesn't want to be simple at all costs and the design tradeoffs will be evaluated case by case. This means that the overall price is not gonna be in the tenth of thousands, but I want to implement good components and solutions, trying to mantain BoM cost (just components) less that 500€ (I'm european).
  2. Low Noise and Low Distortion: one of the main characteristic of a preamp is the ability to reproduce whatever input signal in the most linear way possible, adding the lowest amount of noise. This will be the main drive of the design, unless it will provide exceptional degrees of complexity with respect to very little improvements.
  3. Number of inputs: I want this preamp to have the following inputs:
    • MM Phono Balanced/Unbalanced
    • MC Phono Balanced/Unbalanced
    • Line IN Balanced/Unbalanced
    • CD Balanced/Unbalanced
    • USB (Integrated DAC)

Basic Design Choices
First thing first: main active device. I feel that in this case the most viable solution, with respect to cost and complexity, is an Op-Amp design: a complete and very careful discrete design could, maybe, provide a lower noise solution, but I don't feel good enough to dwelve into something like this given it would be a much more complex to design and a better result is not really assured.

So I had to choose an Op-Amp that suited the scope.
I know what you all are thinking: NE5532/34. For what it offers it's really difficult to beat: low cost (0.32€/pcs!), pretty low noise (5 nV/√Hz) but I wanted something better! And with a better drive capability, even at a higher cost.
Why a better drive capability? To drive lower value resistor and consequently have lower noise.
Let's evaluate some other Op-Amps:
As you can see they have exceptionally good voltage noise specs but they lack drive capability. I was almost going to choose the AD797 but then I found a new product (November 2023) from Texas Instruments and I knew that this one was the one:
This nasty boy has an output impedence open loop of 5Ω! Linearity is also very good:

View attachment 418875View attachment 418876View attachment 418877

Unfortunately THD+N is not specified for a 150Ω load, and the harmonic distortion are not specified for less than 100kHz. It could be interesting to perform some measurements in this range, but given the reported specs we are in for a good time.
This is not a cheap Op-Amp though, on Mouser the dual version (OPA2891) goes for 6.34€/pcs.
Still, given the specs, it's the best shot for what I want to achieve.

To maximaze dynamic range and THD specs I'll power it up with a Dual 18V Linear Power Supply (not sure yet if I'll go for reg or unreg).

I want to implement an Equalization Stage with variable cut/boost and frequency controls for LF and HF, though I'm not yet sure which topology to use.

This preamp will also have an Headphone Amp capable to drive up to 32Ω loads.

Input Switching will be done with SPDT Relays, to minimize channel crosstalk.

That seems all the requirement I've given myself. Next topic to be addressed will be the MM Phono Stage, let me recollect my thoughts about it and I'll update the topic in a short time.
Let me know if this project could be of interest to someone and if you see any major flaw or technical difficulties!

Best Regards
If it were me (and I have designed and built a lot of preamps over the years), I'd do a more comprehensive job of specifying the design target: gain, voltage output, source and input impedances, noise, offset, bandwidth. Quantitative, not just "low noise" or "high bandwidth."

I think your first issue is the quest for "drive." If a preamp had a high drive current, it would be a power amp. There's no need for a preamp to drive anything less that 2k in a non-pathological system. That means a current of (say) 4V/2k = 2mA.

One issue in device choice you'll need to pay attention and haven't so far is input bias current. The AD797, for example, is terrific with low source impedances, poor with higher ones. For "normal" input impedances like 10-100k, a FET input device (e.g., OPA2134) will do better for offset and noise.
 
I would look into books by Bob Cordell.
papers on the THAT Corp page.
The very old op-amp stuff by Walt Jung
Thanks for the references, I already knew about Cordell book, great one.
I didn't know about the Walt Jung stuff though, great papers!
 
If it were me (and I have designed and built a lot of preamps over the years), I'd do a more comprehensive job of specifying the design target: gain, voltage output, source and input impedances, noise, offset, bandwidth. Quantitative, not just "low noise" or "high bandwidth."

I think your first issue is the quest for "drive." If a preamp had a high drive current, it would be a power amp. There's no need for a preamp to drive anything less that 2k in a non-pathological system. That means a current of (say) 4V/2k = 2mA.

One issue in device choice you'll need to pay attention and haven't so far is input bias current. The AD797, for example, is terrific with low source impedances, poor with higher ones. For "normal" input impedances like 10-100k, a FET input device (e.g., OPA2134) will do better for offset and noise.

On the drive issue: I'd like to understand better what you mean, maybe I explained myself wrong. Let's take a non-inverting configuration like the following and let's say that Vin=1V:

Immagine 2025-01-05 194805.jpg


G = 1+R1/R2 = 3.3
Vout = 3.3V
Let's say that Vout Load is big, so that the output load on U1A would be only given by R1+R2 --> Vout/(R1+R2)=3.3V/4.3k=767 uA
Let's evaluate output voltage noise over a 20kHz bandwidth:
Op-amp (OPA2891): 0.95 nV/√Hz * √20000 = 134 nVrms
R2 (25°C): R2_themalnoise*(R1/R2) = 574nVrms*3.3= 1.9 uVrms
R1 (25°C): R1_themalnoise = 1 uVrms

Total Output Noise RMS (I'm not considering Op-amp current noise because it's low):
V_noiseRMS = √(Vn_opamp^2 + Vn_R2^2 + Vn_R1^2) = 2.15 uV
The total noise is effectively dominated by R2.

Now let's consider the following:
Immagine 2025-01-05 195307.jpg


G = 1+R1/R2 = 3.3
Vout = 3.3V
So functionally the same, but let's again suppose that the only load to the opamp is the feedback network:
Vout/(R1+R2)=3.3V/430=7.6 mA

Let's evaluate again output voltage noise:
Op-amp (OPA2891): 0.95 nV/√Hz * √20000 = 134 nVrms
R2 (25°C): R2_themalnoise*(R1/R2) = 181.5nVrms*3.3= 599 nVrms
R1 (25°C): R1_themalnoise = 330 nVrms

Total Output Noise RMS
V_noiseRMS = √(Vn_opamp^2 + Vn_R2^2 + Vn_R1^2) = 670 nV

To me the second circuit sounds a lot better.
7.6 mA are manageable also by an AD797, but it will be less linear than an op-amp designed for 150Ω loads. And in some case (MM Phono stage), it would be straight impossible to drive certain loads with an AD797.

On the input bias current: can you expand which kind of problems do you foresee for audio applications? I always tought that it was more of a problem in DC/precision circuits.

Best regards
 
Last edited:
On the input bias current: can you expand which kind of problems do you foresee for audio applications?
Besides offsets (it's never nice to have a volt of DC at the output), pulling current through the wiper of a volume control is a strong negative for reliability.

Yes, reducing the size of resistors will reduce Johnson noise, but your worse case at 1V in has a signal to noise of 20log(2.15E^-6/3.3) = -124dB, which is already ridiculously good.
 
I trust that you are aware of the Hypex DIY preamplifier?
https://www.audiosciencereview.com/forum/index.php?threads/hypex-diy-preamplifier-kit-review.43492/
Which can be further expanded with this:
https://www.diyclassd.com/products/diy-components/accessories/diy-predigin-add-on

The combination is just under €2000, but that's not the BOM price, that's for everything, including case, but minus optional Raspberry Pi (for streaming).
I was not aware, it seems a really nice piece of gear!
I'm doing this preamp for fun and to learn from it to be a better designer, so I'm not really looking into buying one
 
Besides offsets (it's never nice to have a volt of DC at the output), pulling current through the wiper of a volume control is a strong negative for reliability.

Yes, reducing the size of resistors will reduce Johnson noise, but your worse case at 1V in has a signal to noise of 20log(2.15E^-6/3.3) = -124dB, which is already ridiculously good.
Yeah, absolutely I don't want current into pots, solid good advice there! I'm still figuring out how I wanna do for the EQ and Volume pots, but probably I will AC couple them with capacitors. Generally most of the stages will be AC coupled, so I think input bias current (offset voltage also) will not be a real problem.

I agree with you that for a single stage that noise figure is really good, but considering a chain [Input+EQ+Volume+Output] it could contain several op-amps and noise will add up quickly. I didn't evaluate yet SNR at the output (still figuring it out EQ and Volume stages), but for now I wanna try keeping it as low as possible, and an Op-Amp like the OPAx891 can make for very low noise stages (at a price). Wanna try to push the boundaries of what's possible with modern op-amps :)
 
Hello,
in the following you will find the design for the MM Phono input stage. I'll also update my first message to easily keep track of the state of work.
I’ll make use of a number of software tools and I’ll make available all the files I used.
These are:
  • MATLAB -> Used to solve equations, any other similar math tool can be used
  • LTSpice -> To simulate designed circuits
  • TINA TI -> Texas Instruments Spice tool, I use it to check stability

MM Phono Stage
There are 3 fundamental issues to be addressed in RIAA networks:
  • Overload Margins (aka Headroom)
  • RIAA Accuracy
  • Noise

Overload Margins
I had to choose gain for the MM Phono stage. This design choice depended heavily on the maximum dynamic range that I wanted to achieve for the output and on the output voltage provided by the cartridge.
Modern music is heavily compressed (less than 10dB of dynamic), but classical music and jazz records can have up to 30dB. So that’s what I’m gonna aim for.
Hereafter you can find an assortment of moden MM cartridges and their output voltages at 1kHz.
  • Goldridge E3 -> 3.0 mV @1kHz
  • Ortophon 2M Blue -> 5.5 mV @1kHz
  • Ortophon 2M Black -> 5.0 mV @1kHz
  • Vertere Sabre -> 4.0 mV @1kHz
  • Sumiko Rainier -> 5.0 mV @1kHz
I chose to design the phono stage for a maximum input of 5.5mV.
So I had the following constraints:
  • Output Dynamic Range: 30 dB
  • Input Voltage: 5.5mV

RIAA Accuracy
Stanley Lipschitz paper form 1979 is the reference one to design an active de-emphasis circuit.
It provides precise equations that bound each component to the chosen design constraints.
I realized and used a very simple MATLAB script to obtain precise solutions given certain parameters.
Simulated results give an accuracy of the network of 0.015dB.
To realize uncommon values in the network I used various resistors in series, 0.1% tolerance, and capacitors in parallel, 1% tolerance.

Noise
A 1-stage solution will minimize overall noise.
It’s also well established that RIAA Passive or Semi-Active Network (2-stages) provide a bottleneck in signal dynamic.

Given these evaluations I chose the following topology:
Immagine 2025-01-06 184457.jpg


This is well documented in the Lipshitz papers and in D.Self book. Nonetheless its what I consider the best topology for an Op-Amp MM Stage: it provides better overload margin than the passive one, better noise figure than the semi-passive topology and it will give great accuracy if the Lipschitz equations are treated properly.

I will split this design into 3 parts:
  • RIAA Network Design
  • Circuit Design and Filters
  • Circuit Analisys and Performance

Part 1 - RIAA Network Design
I already said that I want to power the OPA2891 from ±18V supply.
Voltage Output swing is provided in the datasheet for a ±15V supply, and it’s ±12.9V supply (we have lost 2.1V).
If we supplied ±5V we would have a voltage swing of ±3.5V (1.5V lost).
Immagine 2025-01-06 184709.jpg


Considering this increasing trend, I supposed that, for a ±18V supply, around 2.5V will be lost, giving a maximum output swing of ±15.5V.
Having considered a maximum input voltage of 5.5mV, we will have a maximum allowable gain of:

G = V_out / V_in = 15.5V / 0.0055V = 2818 = 69 dB
Now we have to subtract, from the possible output swing, the maximum dynamic range of 30dB that I supposed before:

G_max = G – music_dyn_range = 69 dB – 30dB = 39 dB​

So I decided that this phono stage will have 40dB of gain at 1kHz: what can I say, I like rounded numbers and I guess there are not that much records that have more than 29dB of dynamic range.
We are ready now to set up the Lipschitz equations.

Why do we need the Lipschitz Equations?
The equations relate all the individual components of the circuit and use the RIAA time constants as variables.
We have 4 fixed time constants (RC) that identify the poles and zero of the RIAA transfer function.
Lipschitz refer to them as:
  • T2: 7950 us
  • T3: 3180 us
  • T4: 318 us
  • T5: 75 us
They corresponds to 4 frequencies (f=1/(2*pi*RC)):
  • F2: 20.02 Hz
  • F3: 50.05 Hz
  • F4: 500.5 Hz
  • F5: 2122.07 Hz
There are 2 more time constants that really define a design: T1 (IEC) and T6.
These are 2 zeros where the RIAA transfer function goes flat at 0dB at low frequency (T1) and high frequency (T6). This is caused by the chosen topology, ideally the RIAA response (at least at high freq) shoul continue to roll-off at 20dB/dec.

Immagine 2025-01-06 185404.jpg
Immagine 2025-01-06 185253.jpg


How Gain influence T0 and T6?
If the overall Inverse RIAA stage have higher gain it means that the overall transfer function is translated upward, as shown in the following:

Immagine 2025-01-06 173444.jpg


The green RIAA is amplified ten time (G(1kHz)=10) with respect to the blue.
This means that the transfer function will approach 0dB at a higher frequency.
Higher Gain means smaller T6, so higher f6.

Which are the equations?
There are 2 equation that allows to calculate T0 and T6.
First one is the gain equation, reported in the Lipschitz paper in table 4:
Immagine 2025-01-06 174146.jpg


The second one is reported in Table 3(a) [these are the formulae that need to be used for this topology]:
Immagine 2025-01-06 174335.jpg


This is a system of 2 equations in 2 variables (T0 and T6): it’s solvable!
We need to find a couple of values that satisfy the system.
We have everything else:
  • G(1kHz) = 40dB = 100
  • T2, T3, T4, T5
I’m lazy, so I made MATLAB solve them for me (they’re quite tedious to solve by hand).
I wanted a great degree of precision so I considered the exact value MATLAB gave me:
  • T0 = 7,87046043689416000000
  • T6 = 0,00000075757956574557
So:
  • F0 = 0,02022180841489640000 Hz
  • F6 = 210083,46883704900000000000 Hz
Now we need to do another choice: R0.
R0 will be the biggest source of noise where we can do something about it.

R0_tot_n = R0_n*G(1khz) = 100* R0_n​

Its Johnson noise is operatively amplified by the gain of the stage.
We need to choose a low resistor, but not so low that it will load too much our op-amp: at high frequency the capacitor in the feedback network will be operatively short circuits, leaving R0 as the biggest load for the op-amp output.
This is particularly true at high frequency, in my design, after 230kHz, we have less than 200Ω of load from the feedback, and high frequency components can be present and doing harm (RF coupling, disc scratches)!
Immagine 2025-01-06 180524.jpg


This is why a favor beefy op-amp, like the OPA2891, that is capable of driving 150Ω loads easily.
And that is why I chose R0 to be 150Ω.

From here it’s a calculation party, and being again quite lazy, I realized an Excel spreadsheet to calculate the values of R1, R2, C1 and C2.
Remember, we have:
  • G(1kHz) = 100
  • T0 = 7,87046043689416000000
  • T6 = 0,00000075757956574557
  • R0 = 150 Ω
These are our only design constraints.

We get from the following equations:
Immagine 2025-01-06 181312.jpg

Immagine 2025-01-06 181323.jpg


  • R1 = 136789,672947369
  • R2 = 11504,1797785502
  • C1 = 0,00000002324736898248
  • C2 = 0,00000000651936960685

That we can approximate to:

  • R1 = 136790 Ω
  • R2 = 11504 Ω
  • C1 = 23.247 nF
  • C2 = 6.519 nF
These are uncommon values, but they can be realized using a good number of series and parallel components.
I simulated the values into LTSpice and I got the following response matched against an ideal RIAA Network:
Immagine 2025-01-06 182449.jpg


You can see a maximum mismatch of 0.013 dB in the 5-6kHz region and an increment going forward in the high frequency region. This increment is bounded to the used topology but it’s easy to compensate with a subsequent HF filter.

That's all for part 1, I will provide a link to get the Excel spreadsheet and the MATLAB script

Best Regards
 
Last edited:
Back
Top Bottom