3

I am trying to design the Symbol timing recovery(#STR) block of #DVBS Receiver. These are the specifications

  • Symbol rate ($f_s$) = $2\textrm{ MHz}$
  • Acquisition range = $10\%$ of Symbol rate
  • Acquisition time = better than $50\textrm{ ms}$
  • Interpolation rate = $4$
  • Roll off factor = $0.5$
  • Symbol time ($T_s$) = 1/$f_s$
  • Sample time ($T$) = $T_s$/Interpolation rate = $T_s$/4

The main thing I need for the design is to find out the loop filter coefficients $\mathbf{K1}$ and $\mathbf{K2}$ of PI filter which depends on $\zeta$, $B_n$, $T_s$(symbol time), $K_d$(TED gain) and $\mathbf{K0}$(VCO gain).

I am referring to the book Digital Communications: A Discrete-time Approach by Michael Rice, Appendix C, for the design of the loop filter.

From the acquisition range specs, I found:

  • The term $B_nT_s \geq 0.01125$.
  • Acquisition range $\approx$ $2\pi B_n\sqrt 2 \zeta$.

Besides I also figured out the following values

  • $K_d :(\text{I found out from S-curve})= 0.1751$ [Gardner TED]
  • $\mathbf{K0} =1$
  • $\zeta = 1$

I calculated $\mathbf{K1}$ and $\mathbf{K2}$ from these, but when I am simulating the timing recovery design for noise-free channel, it is not working. I found out through trial that $B_nT_s$ factor should be in the range $0.005$ for retrieved symbols bit amplitude close to the original symbol bit amplitude, not $0.01125$ which I got from my calculation. I am not understanding what possible mistake I could have done with calculation. Or I am missing any important factor in the calculation of $\mathbf{K1}$ and $\mathbf{K2}$.

This is the equation for loop filter coefficient $\mathbf{K1}$ $$ \mathbf{K0}\cdot K_{d}\cdot \mathbf{K1} = \frac{4\zeta\left (\frac{B_{n}T}{\zeta+ \frac{1}{4\zeta}}\right )}{1 + 2\zeta\left ( \frac{B_{n}T}{\zeta + \frac{1}{4\zeta}} \right ) + \left ( \frac{B_{n}T}{\zeta + \frac{1}{4\zeta}} \right )^{2}} $$

avi1987
  • 181
  • 1
  • 11
  • hi! I like your questions, but they are horribly hard to read. Could you add a lot more paragraphs into the text (empty line), and could you make your formulas stand out more? It's really hard to guess what is part of normal sentence structure and what is part of a formula. I typically go the very textbook-y way by using something like "$f_s = 2\,\text{MHz}$ (symbol rate)" in multi-line formulas so to give a comprehensive definition of all symbols I'll use and then just use the short symbols, so that my formulas stay readable. – Marcus Müller Jun 01 '16 at 10:33
  • Thank you for your feedback. In future I will post questions with necessary formatting required. I would like to say thanks to user Gilles to help me with the formatting with my present query. – avi1987 Jun 01 '16 at 11:26
  • @avi1987 you're welcome. A neatly formatted question is always well received. :) – Gilles Jun 01 '16 at 11:35
  • @avi1987 That is really so much nicer to read! Great job, you two! – Marcus Müller Jun 01 '16 at 11:41
  • @avi1987: Can you give more detail on what's not working, and/or provide simulation code that demonstrates your implementation? You could have an issue there. – Jason R Jun 01 '16 at 14:23
  • https://www.dropbox.com/s/5nz4wme60w09440/STR.m?dl=0 : Matlab Code link – avi1987 Jun 01 '16 at 15:16
  • In this link I am providing a doc which explains the problem I am getting with the simulation : https://www.dropbox.com/s/yi7j3z3gqxuph5a/Problem_query.docx?dl=0 – avi1987 Jun 01 '16 at 15:19
  • I am not sure about VCO gain K0 to be 1. The phase increases by 2pi for each Ts symbol time. I am a bit confused K0 should be 1 or may be (2pi/Ts). In that case, Ko becomes too high, and affects the loop filter coefficients. If K0 is indeed 1, then the only parameter that I am not calculating correctly will be the noise bandwidth Bn. This is the first time I am working with PLL and I have already taken a lot of time while understanding and designing the Symbol Timing Recovery Block. – avi1987 Jun 01 '16 at 18:51
  • @avi1987 - In reading your problem I wonder if the reason you are not getting the result you expected is that you did not multiply your integrator coefficient by T in the implementation? The z transform equivalent of 1/s in discrete time is z/(z-1) when the x axis is unit samples, but is Tz/(z-1) when the x axis is actual time, where T is the loop update interval. Therefore in your modeling you would see the accumulator path implemented as Kz/(z-1), but in your implementation you need to multiply the gain coefficient by T to be KTz/(z-1). Let me know if this the reason and I will add it below. – Dan Boschen Feb 04 '17 at 13:03

0 Answers0