Problem: A simplified schematic of an oversampling circuit is shown below. A data sequence, \$x[n]\$, is transmitted by REG1 which is in clock domain \$C_{tx}\$. \$x[n]\$ is oversampled by REG2 in the clock domain \$C_{rx}\$, resulting in the sample sequence \$y[m]\$. The clock \$C_{tx}\$ has frequency \$f_{tx}\$ and the clock \$C_{rx}\$ has frequency \$f_{rx}\$ and the oversampling rate is defined as \$ \beta \in \mathbb{R} \$.


simulate this circuit – Schematic created using CircuitLab


  1. \$n = 0,1,2,\ldots \$
  2. \$m = 0,1,2,\ldots \$
  3. \$ \beta = f_{rx}/f_{tx} \$


What is \$y[m]\$, expressed in terms of \$x, n, m\$ and/or \$ \beta \$? Assume \$ \beta \geq 1\$. Also, REG1 and REG2 may be treated as zero-delay models: \$T_{propagation} = T_{setup} = T_{hold} = 0\$. For simplicity, you may assume \$\phi_{tx}(0) = \phi_{rx}(0) = 0\$, where \$\phi_{tx}(t)\$ is the phase of \$C_{tx}\$ at time \$t\$, and \$\phi_{rx}(t)\$ is the phase of \$C_{rx}\$ at time \$t\$.

All answers are welcome, but the accepted answer must provide analytical proof of the proposed expression. Intuitive explanations or a few evaluated cases are not analytical proof.

  • 1
    \$\begingroup\$ Is this a homework problem? It also seems like a trick question. \$\endgroup\$ – user6972 Jun 22 '13 at 7:44
  • \$\begingroup\$ Its not a homework problem. This is a real problem I have run into while analyzing a clock-data recovery circuit I designed. It is no trick, I have evaluated an answer, but have not yet been able to prove it is correct. I wanted to get input from the community to see how people think about the problem, without contaminating people's ideas with my own. \$\endgroup\$ – travisbartley Jun 22 '13 at 23:49
  • 1
    \$\begingroup\$ @travis Ok. I see you moved y[m] to the output of reg2. When you posted it the first time y[m]=x[n]. By the way, what does this have to do with clock-data recovery? You're just changing the time scale. \$\endgroup\$ – user6972 Jun 23 '13 at 18:34
  • \$\begingroup\$ Yes, you're right, the figure was incorrect before so it was a trick question. So the problem above is a simplified example of asynchronous serial communication. The original data sequence, x[n], is sourced from REG1. It is received asynchronously by REG2, resulting in y[m]. y[m] is just an oversampled version of x[n]. The original data x[n] can be recovered in the digital domain from just y[m]. The recovery circuit is not shown because it is outside the scope of the question. \$\endgroup\$ – travisbartley Jun 24 '13 at 0:36
  • 1
    \$\begingroup\$ @travis Is there anything unclear with my answer? Accepting it would be fair I think as it really took some time. \$\endgroup\$ – Alexander Jun 30 '13 at 9:13

I go with the answer of Vasiliy and proofed it.

$$y\left[m\right] = x\left[{\Big\lfloor{\frac{m}{\beta}}\Big\rfloor}\right]$$

As I really can't think while writing TeX and you may need this before the end of the month, I wrote on a tablet.

The solution is to describe the input signal x in the time domain. Then the output signal y is derived from x using natural sampling. Based on the knowledge about the clock domains (

  • synchronized at time zero and
  • receiver clock equal or faster then transmitter clock
  • both clocks are exactly periodically

), the expression can be simplified.

enter image description here

Edit: The clock relation expression $$n\left[m\right] = {\Big\lfloor{\frac{m}{\beta}}\Big\rfloor}$$ is not really obvious, but can be expressed very well using system theory. The idea is to describe the clock cycle count of the TX clock (TX clock value) as an integer value signal over time. This signal can be expressed using the floor function.

Then this signal is sampled using natural sampling at the positions of the RX clock events. In this way the counter value n of the slower TX clock can be expressed for all RX clock event positions mT1. Because the positions only depend on m, n can be expressed as a function of m.

enter image description here

  • \$\begingroup\$ "The solution is to describe the input signal x in the time domain. Then the output signal y is derived from x using natural sampling." Solid gold solution, I should have thought of that... I haven't fully assimilated written equations, but I need to spend more time. \$\endgroup\$ – travisbartley Jun 26 '13 at 2:54
  • \$\begingroup\$ OK, could you elaborate the step in red? How did you get \$n= \lfloor m/ \beta \rfloor\$ from the circuit? To me it looks a little like ojotaylor.files.wordpress.com/2011/11/… \$\endgroup\$ – travisbartley Jun 26 '13 at 3:08
  • \$\begingroup\$ Also, I couldn't really understand how you get to the equation on the second to last line. Could you elaborate how you got \$y^*(t)\$? \$\endgroup\$ – travisbartley Jun 26 '13 at 3:29
  • 1
    \$\begingroup\$ Step in red: I agree, this is not really obvious, but I wasn't sure how to nail it down. Will update my post when I have some more time. \$\endgroup\$ – Alexander Jun 26 '13 at 11:20
  • 1
    \$\begingroup\$ @travis updated, hope it's reasonable \$\endgroup\$ – Alexander Jun 26 '13 at 20:22

Maybe this:

$$y\left[m\right] = x\left[{\Big\lfloor{\frac{m}{\beta}}\Big\rfloor}\right]$$

Draw one or two exmples with different Betha to perform a sanity check.

  • \$\begingroup\$ Just to clarify, you are taking the absolute value? Counter-example: m=1 and beta=1.5. Then we get y[m] = x[2/3] which is invalid. In x[n], n must be an integer. \$\endgroup\$ – travisbartley Jun 22 '13 at 23:52
  • \$\begingroup\$ Correction, y[1] = x[2/3]. \$\endgroup\$ – travisbartley Jun 23 '13 at 1:18
  • 1
    \$\begingroup\$ It is amazing how I can look at something wrong and claim it is right. Round, definitely round (down) :) \$\endgroup\$ – Vasiliy Jun 23 '13 at 13:15
  • 1
    \$\begingroup\$ Changing to math notation: we have it! I think what you mean by "round down" is the floor function. \$\endgroup\$ – Kaz Jun 23 '13 at 15:24
  • 1
    \$\begingroup\$ @ Vasiliy Zukanov Try this out. It's a web editor that allows you to pick what you want to show with your mouse. It will generate code that can be interpreted by this site. In the answer use /$ to open and close an inline block and $$ to open and close block centered on the screen. Code being used it called \$TeX\$ and is very popular in mathematics circles. Also there are numerous tutorials on the Internet as well. \$\endgroup\$ – AndrejaKo Jun 23 '13 at 16:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.