I'm writing a GPS receiver SDR software, and I have calculated the PLL discriminator ouptut as atan(Q_Prompt,I_Prompt) I would like to know the formula that converts the discrminator output to doppler error
Frequency is the derivative of phase versus time, so you can estimate the frequency by calculating the difference between the phase of two successive samples and dividing by the sample time which is the radian frequency in radians/sec- so divide by $2\pi$ to get Hz.
For efficient receiver implementation instead of computing the arctangent and performing the computations above consider using the cross product frequency discriminator given by the imaginary term of the complex conjugate multiplication of the current I,Q symbol with the previous, which is beautiful as it simplifies to:
Which is proportional to the phase difference between the two symbols and therefore the proportional frequency error term. This would provide the frequency error for a frequency lock loop. Similarly by comparing it to a sample on the real axis we see that the phase error for a phase lock loop is simply proportional to Q for each sample.
The I,Q samples above would be the prompt correlation samples and the complex vector I+jQ should be normalized to constant magnitude for the computations above.