Skip to content

Instantly share code, notes, and snippets.

@jfosorio
Created September 2, 2014 20:07
Show Gist options
  • Save jfosorio/942dc95201b807e837c8 to your computer and use it in GitHub Desktop.
Save jfosorio/942dc95201b807e837c8 to your computer and use it in GitHub Desktop.
{
"metadata": {
"name": "",
"signature": "sha256:2f2babf2baa2a851b1fc8528925f8891de8b4ab83e4595a80eaf01e72b109cf6"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"$\\Sigma-\\Delta$-modulator phase noise in fractional-N PLL's\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The first time that I needed to design a fractional-N PLL if took me quite some time to gain confidence over the model I was using to calculate the phase noise produced by the $\\Sigma\\Delta$-modulators(SDM). The reason it took me so long is that there are a couple of mathematical pitfalls that are difficult to avoid at first. Many times I tough that a reference code would have made my life much simpler.\n",
"\n",
"This is one of those topics where a notebook including both theory and code seems particular appealing. This notebook is about that. This entry expose first the SDM theory in the first section, the second section shows how a mash SDM works and explain the model in Python and the last section show the results and the comparison with the theoretical model. The SDM model is part of a more general package to design PLL's that is available in github."
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Linear phase noise analysis for the excess of phase noise at the output of a fractional divider using a $\\Sigma-\\Delta$ modulator "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The circuit in figure 1 implements the fractional division of input $f_{in}$ by the fractional\n",
"period defined by $N+f(z)$ using a SDM. As it is difficult to design a reliable circuit that divides a input frequency by a fractional number a integer divider with a division factor that is in average the desired value is used. As this operation introduces unwanted phase changes in the output signal we are interested in finding the power spectral density of these disturbances.\n",
"<br>\n",
"<img src=\"images/fractional_divider.png\" alt=\"Fractional divider\" height=400px/>\n",
"<center> Figure 1. Topology of a fractional divider made with a SDM </center>\n",
"<br>"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Add the path with the pnoise and pll modules \n",
"import sys\n",
"sys.path.append('../')\n",
"import scipy.signal as sig\n",
"# Import all pylab (I prefer this option while working with notebooks)\n",
"from pylab import *\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"The instantaneous frequency division is given by:\n",
"\n",
"\n",
"$$\n",
" N_{div}(z) = N+f(z)+H_{s}(z) \\Delta_{q}(z),\n",
"$$\n",
"\n",
"Where $N$ is that integer part of the division ratio, $f(z)$ is the fractional part, and \n",
"$H_s(z) \\Delta_{q}(z)$ is the instantaneous error made by a SDM of order m. The instantaneous noise of the SDM has to components $\\Delta_{q}(z)$ is the quantization noise and the term $H_s(z)$ is the noise shaping transfer function. \n",
"\n",
"The output frequency of the SD modulator is given by: \n",
"\n",
"$$\n",
" f_{div}(z) = \\cfrac{f_{in}}{N+f(z)+H_s(z) \\Delta_{q}(z)},\n",
"$$\n",
"\n",
"that can be simplify, using the approximation $\\cfrac{1}{1+x} \\approx 1-x \\: \\text{for } x << 1$, as:\n",
"\n",
"$$\n",
" f_{div}(z) = \\cfrac{f_{in}}{N+f(z)}\\left(1 - \\cfrac{H_s(z) \\Delta_{q}(z)}{N+f(z)}\\right),\n",
"$$\n",
"\n",
"As $\\cfrac{f_{in}}{N+f(z)}$ equals the target frequency, which in a PLL is the reference frequency $f_{ref}$, the frequency error as a function of the target frequency equals:\n",
"\n",
"$$\n",
" \\Delta_{f_{div}}(z) = - f_{ref} \\cfrac{ H_s(z) \\Delta_{q}(z)}{N+f(z)}.\n",
"$$\n",
"\n",
"The power spectral density of the quantization noise can be approximated using a similar assumption than the one used to calculate the spectrum of the quantization noise of a ADC. In the case of a SDM the phase error increases linearly during a single period of the reference until it reaches the minimum integer division ratio of the divider. For a divider with a minimum step of one the quantization noise rms value can be approximated by:\n",
"\n",
"$$\n",
" \\Delta_{q,rms} = \\frac{1}{12} (rad, rms),\n",
"$$\n",
"\n",
"this noise is uniformly distributed over Nyquist bandwidth of the sampler than in the case of a PLL is $f_{ref}/2$. Then the noise power spectral density of the sampling noise is given by:\n",
"\n",
"$$\n",
" \\Delta_{q}^2 = \\frac{1}{6 f_{ref}} (rad^2/Hz). \n",
"$$\n",
"\n",
"The other aspect that needs to be accounted for, in order to find a close expression for the phase noise, is the shaping of the SDM, for Mash-1-1-1 SDM this is given by[1]:\n",
"\n",
"$$\n",
" H_s(z)= (1-z^{-1})^m, \n",
"$$\n",
"\n",
"where m is the SDM order. \n",
"\n",
"With this elements in place it is possible to have a better expression for the error made approximating the frequency thus:\n",
"\n",
"$$\n",
" \\Delta_{f_{div}}(z)^2 = \\left|f_{ref} \\cfrac{ (1-z^{-1})^m}{N+f(z)}\\right|^2 \\cfrac{1}{6 f_{ref}}.\n",
"$$\n",
"\n",
"As it happens we are interesting in the phase, so integrating the last expression in the z-domain we have: \n",
"\n",
"$$\n",
"\\Phi_{div}(z) = \\frac{2 \\pi T_{ref} \\Delta_{f_{div}}(z)}{1-z^{-1}},\n",
"$$\n",
"\n",
"that putting everything together ends being:\n",
" \n",
"$$\n",
"\\Phi_{div}(z)^2 = \\frac{(2 \\pi)^2}{6 f_{ref}} \\frac{|1-z^{-1}|^{2m-1}}{(N+f(z))^2}(Rad^2/Hz)\n",
"$$\n",
"\n",
"\n",
"by definition $\\mathcal{L}(z)= \\Phi_{div}(z)^2/2$ the phase noise is given by: \n",
"\n",
"$$\n",
"\t\\mathcal{L}(z) = \\frac{(2 \\pi)^2}{12 f_{ref}} \\frac{|1-z^{-1}|^{2m-1}}{(N+f(z))^2}(Rad^2/Hz),\n",
"$$\n",
"\n",
"that can be replaced by a more useful expression replacing $z$ by $e^{sT_{ref}}$ and calling the frequency $f_m$ to emphasis that this is the frequency offset due to the modulation:\n",
"\n",
"$$\n",
" \\mathcal{L}(f_m) = \\frac{(2 \\pi)^2}{12 f_{ref}} \\cfrac{[2 sin(\\pi f_m/ f_{ref})]^{2(m-1)}}{(N+f(z))^2}.\n",
"$$\n",
"\n",
"As presented here this is the noise at the output of the divider, normally in previous references [1] and [2] the noise is scaled to the divider output, that is multiplying the last equation by $(N+f(z))^2$.\n",
"\n",
" \n",
"[1]B. Miller and R. J. Conley, \u201cA multiple modulator fractional divider,\u201d IEEE Transactions on Instrumentation and Measurement, vol. 40, no. 3, pp. 578\u2013583, 1991.\n",
"\n",
"[2]T. A. D. Riley, M. A. Copeland, and T. A. Kwasniewski, \u201cDelta-sigma modulation in fractional-N frequency synthesis,\u201d IEEE Journal of Solid-State Circuits, vol. 28, no. 5, pp. 553\u2013559, May 1993.\n"
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Using the pnoise module and the sdmod to simulate a SDM"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Within the [plldesigner](https://github.com/jfosorio/plldesigner) project two modules implement a class for adding pnoise frequency domain signals and and create sequences of SDM's.\n",
"\n",
"The sigma delta modulator is implemented by an algorithm that uses a counter that add every time the input word K and overflows when the value reaches MAX value that is equivalent in to the maximum value of a register, that is: $2^N-1$. The next example shows how a first order modulator is implemented:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"``` python:\n",
"for j in arange(1, L):\n",
" stat1[j] = stat1[j-1] + K[j-1]\n",
" if stat1[j] > MAXVAL:\n",
" over1[j] = 1\n",
" stat1[j] -= MAXVAL + 1\n",
"div = over1\n",
"```\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The implementation of first, second and third order Sigma-delta modulators can be found in: [plldesigner](https://github.com/jfosorio/plldesigner)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Load the pnoise and SDM modules\n",
"import pnoise as pn\n",
"import sdmod"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Creating a SDM sequence with gen_mash"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In order to create a 1-1-1 Mash sequence the gen_mash function was created in the sdmod module. The function has as inputs, the order of the modulator m, number of bits of the accumulator and the\n",
"input vector $k[n]$. The following code shows the sequence created by a SDM of third order."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Parameters \n",
"NsdBits = 19\n",
"fref = 27.6e6\n",
"Tref = 1.0/fref\n",
"\n",
"# Create a SDM sequency \n",
"fracnum = ((0.253232*2**NsdBits)*ones(100000)).astype(int)\n",
"sd, per = sdmod.gen_mash(3,NsdBits,fracnum)\n",
"step(np.r_[0:200],sd[:200]);\n",
"print(\"Mean value of the sequence: {:2.6f}\\n\".format(sd.mean()))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Mean value of the sequence: 0.253230\n",
"\n"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAXYAAAEACAYAAACnJV25AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAADbFJREFUeJzt3G2sbFddx/Hvbm+bW2yDcyD2Fii5TYGEpyCEkBowjvHp\n1sRgSQySYBAS3qBClMTa8qJjjFExRF+Y+EZQxIgvQJs2PFbSiRKlpNpbLqVX2htIWsUi3iuxIYRi\nty/WnJ45c/bMflhrZs75n+8nOZmZ/bDWf6+95nfPWXPOBUmSJEmSJEmSJEmSJEmSpNBOAvcBZ4Gv\nAL+33XIkSSU8a/Z4AvgC8IYt1iJJx95lBdr4zuzxSuBy4GKBNiVJA5UI9stISzFPAPeSlmQkSQE8\nm7QUM95yHZJ0rJ0o2Na3gU8ArwWmuxtvvPHG+sKFCwW7kaRj4QLwoiEnVpkdPxf4PvA/wFXAZ4Df\nBj43d0xd1/XyAiqo671HrTaZTJhMJmtpe/5ewNG8L/O1t1nnWPatJYKqmlDXkyM3Z7ZpVf5VaQIN\nyujc79ivAz5MWme/DPgI+0NdkrRhucF+DnhNiUIkSWWU+K0YbdB4PN52CWE4lqWNt12AZnLX2Ltw\njf2IOG5r7Ot2mGrZBN/L/a1rjd3v2CUpGINdkoIx2CUpGINdkoIx2CUpGINdkoIx2CUpGINdkoIx\n2CUpGINdkoIx2CUpGINdkoIx2CUpGINdkoIx2CUpGINdkoIx2CUpGINdkoIx2CUpGINdkoIx2CUp\nGINdkoIx2CUpGINdkoIx2CUpGINdkoLJDfbrgXuBh4AvA+/OrkiSlKXKPP/U7OsscDXwL8DPAw/P\nHVPXdb28gArqeu9R2zN/L+Bo3pf52rftMNWyCb6X+1s1ZlWaQIMyOvc79v8khTrAk6RAf15mm5Kk\nDCXX2E8DrwbuK9imJKmnUsF+NfAx4D2k79wlSVtyokAbVwAfB/4KuLPpgMlk8szz8XjMm9405tIl\nGI3yOt7Z4Zl2Ll5MryE9X5fFPhf3Lfa/rKa2dpbtK21dY9an3U1e7zoNvY4h53U9p/TY5vQ79NxN\nXus6M6Stvul0ynQ6LdJX7oenFfBh4L+BX19yzIEPT0t9SLf4wcMmPqxa/WHHwf6X1dTWzqY+hGq6\nByU+PO1zL0pe7zY/sBw6H4dcf9dzSs+lrvMWDh43tOZNXus6509TfYf1w9PXA28Ffhx4YPZ1JrNN\nSVKG3KWYz+MfOUnSoWIoS1IwBrskBWOwS1IwBrskBWOwS1IwBrskBWOwS1IwBrskBWOwS1IwBrsk\nBWOwS1IwBrskBWOwS1IwBrskBWOwS1IwBrskBWOwS1IwBrskBWOwS1IwBrskBWOwS1IwBrskBWOw\nS1IwBrskBWOwS1IwBrskBWOwS1IwBrskBWOwS1IwJYL9Q8ATwLkCbUmSMpUI9j8HzhRoR5JUQIlg\n/0fgUoF2JEkFuMYuScFsJNgnkwlXXZW+ptPpymN3dtLX7vOq2nvdx/y5i+3M99HU76qalvWxbqv6\narue3XNzam1rr8tYdK2jT19d++0yFsv6GtpvWy3L9jdd6+K20ai99j79N11P37FtMhp1G6e+49l2\nfJdxbGun6/3u+95cZjqdMplMnvnKUWWdvec0cDfwyoZ9dV3XVNXuizQIu49dt9V1Q/HV8PZ2t823\ntbitaV+pdlddW9O+tuNX9dvUTs61raqrbSya6uhyH7selzsWTX3ljMWqWhb7bZv7fbd1rWlI26Xu\nQZ8x6FNbl3Eccj1d36+rrrv7+7qCgRntUowkBVMi2D8K/BPwEuAx4O0F2pQkDXSiQBtvKdCGJKkQ\nl2IkKRiDXZKCMdglKRiDXZKCMdglKRiDXZKCMdglKRiDXZKCMdglKRiDXZKCMdglKRiDXZKCMdgl\nKRiDXZKCMdglKRiDXZKCMdglKRiDXZKCMdglKRiDXZKCMdglKRiDXZKCMdglKRiDXZKCMdglKRiD\nXZKCMdglKRiDXZKCKRHsZ4DzwCPArQXakyRlyA32y4E/IYX7y4C3AC/NLUqSNFxusL8OeBT4OvAU\n8DfAGzPblCRlyA325wOPzb1+fLZNkrQlJzLPr7scVFUTTp6E734XptMxMF55/GgEVZUe5183Hddm\n2TGLbe4et6yfS5fa+5q3s5POmT93d1tTXcv2zbfTVPey2ttqbqqvtPn7ePHi8jq63Mdl7a/Sdo1d\n6ls8btm+ZfU09bFs7nXts03buavmUNP15NTSt/+u5616j3RtZ/74+W2Lc6XpuKb9y/Y1tbezc3DO\nXXPNlCefnAJwxx3drmWZhhjr5SZgQlpjB7gNeBr4g7lj6rpO+V9VUNf7H9MBB/f1saq9Zcfl9LGq\n9qb+V/Xbtm+3vSGa2u6yLefahva5uC1nHHPO7Xr8bh854950Xsl2S72/2tpbta3rtQ2tua2vIfex\n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\nSUVORK5CYII=\n",
"text": [
"<matplotlib.figure.Figure at 0x1074e80d0>"
]
}
],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The phase error $\\phi_{out}[n]$ can be calculated accumulating the error in the frequency. Then the power spectrum density is estimated with the [welch periodogram](http://docs.scipy.org/doc/scipy-dev/reference/generated/scipy.signal.welch.html)."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Phi_er at the output equals \\sum{\\DeltaN*fref}*Tref\n",
"phi_div = 2*pi*(sd-fracnum[0]/2**NsdBits).cumsum()\n",
"\n",
"# Calculate the spectrum\n",
"npoints = 2**7\n",
"f, Phi2_div = sig.welch(phi_div, fref, window='blackman', nperseg=npoints)\n",
"rbw = fref/2/(len(f)-1)\n",
"ind = (f>1e5) & (f<1e9)\n",
"sim = pn.Pnoise(f[ind],10*log10(Phi2_div[ind]/2), label='simulated')\n",
"\n",
"# calcualte the L teorical\n",
"Ltheory = sdmod.L_mash_dB(3,f[ind],fref)\n",
"theory = pn.Pnoise(f[ind],Ltheory, label='theoretical')\n",
"\n",
"# Calculate the integral value of the two\n",
"print('''\n",
"Integrated phase noise\n",
"======================\n",
"Theory: {:2.3f} (rad,rms)\n",
"Sim : {:2.3f} (rad,rms)'''.format(theory.integrate(),sim.integrate()))\n",
"\n",
"# plot both the spectrums\n",
"sim.plot('o-')\n",
"theory.plot()\n",
"legend(bbox_to_anchor=(1.05, 1), loc=2)\n",
"title('RBW: {:2.3f} (KHz)'.format(rbw/1e3))\n",
"ylim([-140,-40])\n",
"grid(True)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"Integrated phase noise\n",
"======================\n",
"Theory: 4.443 (rad,rms)\n",
"Sim : 4.427 (rad,rms)\n"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\ndSLip/SHR6RsjAHexbwp0JncDHxB4S2Mi9/K+Ey3Ns4GVuBZkCIiUqYUOIiUjQhgA7DTg2OHAJ+X\nsN/m9PxOYKP98Ruw1F4+334dERERsZgHgFTgeg+ODQX2FSvLpTA42AjsAqYXOyYMc3iij307HMg4\nu+qKiJy9MF9XQCQAbMDsvSupF8EhBjhWrOwk0MZp+1agXbFjpgNLgGT7drb9NSOALC/rKyJy1hQ4\niJTeRcAPXhxv83J/ItAYGO3iuDPlQ4iIlCnlOIiU3sV4HjgcAs7x4tqXYQ6FDC9WHg7kYfY8iIhU\nGAUOIqXXADPf4AogCbgEeAzoAIwodmwe8CNwgVOZq1kVjrK7gWhgGWb+wxv28jbA6jKpvYiIFzRU\nIXL2bgAqA3vt278BBzBzGHYA+cDfLs57F3Mq5TP27erF9r9tf8DpgYfDdfbriIhUKPU4iJy9HMzc\nA8diTR0xExivtP/bktMTIQHew5wdcaZcB3fCgauAz87yfBERERERERERERERERERERERERERERER\nEREREREREREREREREREREREREQk4/w+dtC7neEuExwAAAABJRU5ErkJggg==\n",
"text": [
"<matplotlib.figure.Figure at 0x107c3efd0>"
]
}
],
"prompt_number": 4
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Non-linear behavior of the $\\Sigma-\\Delta$ modulator"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The previous theory fails to predict spurs that can occur when the input is a rational number. This is demonstrated using the same SDM but with a input equivalent to 1/8. It is important to understand these spurs as they can fall in band after they are folded back by the non-linearity of the CP and the PFD."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Fraction number\n",
"fracnum = (2/8*2**NsdBits)*ones(100000)\n",
"\n",
"# Produce the SDM sequence\n",
"sd, per = sdmod.gen_mash(3,NsdBits,fracnum)\n",
"\n",
"# Calculate the phase error and its PSD\n",
"phi_div = 2*pi*(sd-fracnum[0]/2**NsdBits).cumsum()\n",
"f, Phi2_div = sig.welch(phi_div, fref, window=\"blackman\", nperseg=npoints)\n",
"sim = pn.Pnoise(f[ind],10*log10(Phi2_div[ind]/2), label='simulated')\n",
"\n",
"# plot the sequence\n",
"figure(figsize=(14,4))\n",
"subplot(121)\n",
"step(np.r_[0:200],sd[:200]);\n",
"print(\"Mean value of the sequence: {:2.5f}\\n\".format(sd.mean()))\n",
"\n",
"#Plot the power spectrum density\n",
"subplot(122)\n",
"sim.plot('o-')\n",
"theory.plot()\n",
"legend(bbox_to_anchor=(1.05, 1), loc=2)\n",
"title('RBW: {:2.3f} (KHz)'.format(rbw/1e3))\n",
"ylim([-130,-40])\n",
"grid(True)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Mean value of the sequence: 0.25000\n",
"\n"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nDB48mIMHD5bvnzNnDueddx5JSUlcddVV/Pjjj+X7kpOTefrpp+nSpQuNGjWirKyMlStXcumll5KU\nlETXrl1ZunQpAGPHjmXZsmXce++9NGrUiMzMTABq1arFL7/8AsCJEyf417/+RXJyMk2aNOGKK66g\nqKgIgEGDBtGqVSuaNGnClVdeycaNGwO+VkpcRUREJOZojGvsyc7OJS3tEb75JoNXX72LNWtGkJqa\nRVraI2Rn59ZYX12FJRrNmDGD9u3b89lnn3HkyBFuvvlmAL788ks2bdrEokWL+Pe//81PP/0EwOTJ\nk5kzZw65ubns2rWLpKQk/vGPfwCwadMmhgwZwuTJk9m3bx/9+vVjwIABlVpX33//fb744gsOHTrE\nrl276N+/P48++igHDx7k2WefZeDAgezfv58JEyZwxRVX8J///IcjR44wefLkKrE/8MADrF27lhUr\nVnDgwAGeeeaZ8lba9PR0Nm/ezN69e7nooou47bbbAr5WSlxFREREJKplZ+cyatR8cnKeoKTkQjZv\nbklx8SssXZpFTs4TjBo1v8bkVV2FxQwcXWjHjx9PYmIiXbp04Y9//CPffvstAK+++ipPPPEErVu3\npk6dOowfP57Zs2dTWlrKBx98QP/+/enVqxcJCQk88MADnDhxgq+++gowuv5mZmbSpk0bEhMTmTlz\nJv369aNv374AXHPNNXTr1o3s7Owq8bgqKyvjrbfeYtKkSbRq1YpatWpxySWXUNf+nywjI4OGDRuW\nx/jtt99y5MiRgK6NlsMRERGRmKMxrrFl8uQc8vMn2Lf2AhMq7c/Pn8BLL42rdj1XdRWW6lgeC854\nTtv44IxVPf3008tfN2jQgKNHjwKwdetWbrzxRmrVqmh/rF27Nnv27GHXrl20b9++vNxisdCuXTsK\nCgrKy9q1a1f+euvWrcyaNYu5c+eWl5WUlHD11VdXOoY7+/bto7CwkI4dO1bZV1ZWxpgxY5g9ezZ7\n9+4tj3Xfvn00atTI62vgSomriIiIiES1oiLnX1nd//paWJhQ7THUVViqE6yE0x++TILUvn173nrr\nLXr27FllX+vWrdmwYUP5ts1mY/v27bRp08btudq3b8/QoUN5/fXXfY6refPm1KtXj82bN9OlS5dK\n+9555x3mzJnDokWL6NChA4cOHaJp06YBT0ClrsIiIiISczTGNbYkJjrPgJrv9j316pVWewx1FZZo\n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\nQmCC\n",
"text": [
"<matplotlib.figure.Figure at 0x107f16d50>"
]
}
],
"prompt_number": 5
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Several works can be traced in the literature predicting under which circumstances these spurs occur and what is their magnitude. The spurs appearance and amplitude depend both of the input word and the initial state of the registers of the modulator. The same work demonstrate that initializing the first register of the first register of the SDM creates enough dithering to reduce the spurs. \n",
"\n",
"The gen_mash accepts a fourth argument to initialize the mash registers. This argument is a tuple with a number of elements that equals the order of the SDM.\n",
"\n",
"[Kozak] Kozak, M., Kale, I., 2004. Rigorous analysis of delta-sigma modulators for fractional-N PLL frequency synthesis. IEEE Transactions on Circuits and Systems I: Regular Papers 51, 1148\u20131162. (doi:10.1109/TCSI.2004.829308)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"sd, per = sdmod.gen_mash(3,NsdBits,fracnum,(1,0,0))\n",
"\n",
"# Calculate the phase error and its PSD\n",
"phi_div = 2*pi*(sd-fracnum[0]/2**NsdBits).cumsum()\n",
"f, Phi2_div = sig.welch(phi_div, fref, window=\"blackman\", nperseg=npoints)\n",
"sim = pn.Pnoise(f[ind],10*log10(Phi2_div[ind]/2), label='simulated')\n",
"\n",
"# plot the sequence\n",
"figure(figsize=(14,4))\n",
"subplot(121)\n",
"step(np.r_[0:200],sd[:200]);\n",
"print(\"Mean value of the sequence: {:2.5f}\\n\".format(sd.mean()))\n",
"\n",
"#Plot the power spectrum density\n",
"subplot(122)\n",
"sim.plot('o-')\n",
"theory.plot()\n",
"legend(bbox_to_anchor=(1.05, 1), loc=2)\n",
"title('RBW: {:2.3f} (KHz)'.format(rbw/1e3))\n",
"ylim([-130,-40])\n",
"grid(True)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Mean value of the sequence: 0.25001\n",
"\n"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n/sMXX3zB0qVL+eyzz/K7Cu/bt4+ePXsyefJkunfvzoIFC+jduzdbt26ldu3aPPLII9x6660sWLCA\njIwMEhISuO+++8pUHlfU4ioiIiJBR+Mgg5eerXhKauq8QgEnQGbmaMaOne+1c1SuXJns7Gw2btzI\nhQsXaNq0KVdccUWR3XOHDRtGtWrV6Nq1K5GRkTzyyCPUqVOHhg0bcvvtt7N27VqAMnXtjY2N5c47\n76Rq1arUqVOHv//974VaUJ1NnjyZHj160L17dwDuuusu2rZti9lsZvfu3axevZqRI0dStWpVbr/9\ndnr16uWxrsYKXEVEREREJORkZxfd+XTu3MqYTJTqNW9e0efIyqpcqjI0b96c//u//yM5OZl69erx\n8MMPc+DAgSKPrVevXv7niIiIi7bPnDlTqms6OnToEA899BCNGzfm0ksvpV+/fhw9etTl8bt27eLb\nb78lOjo6/7Vs2TIOHjzI/v37iY6OJiIiIv/4Zs2alblMrihwFRERkaCjcZDBS89WPCUsLKfI9Pj4\nXKxWSvXq1q3oc4SH55a6HA8//DBLlixh165dmEwmXnnlFbdm461RowZnz57N3z548KDLY4cMGULl\nypXZsGEDJ0+e5Isvvig0Fta5HE2bNqVfv34cP348/3Xq1ClefvllGjRowPHjxwtd235PnqDAVURE\nREREQs7Agd2IjR1aKC02dghJSV29do5t27axcOFCsrOzCQsLIzw8nMqVS9da68zeJbd169akp6ez\nZ88eTp48yRtvvOEyz+nTp6levTo1a9Zk3759vP3224X216tXj8zMzPztxx57jFmzZjFv3jxyc3PJ\nysrCYrGwb98+mjVrRtu2bRk+fDgXLlxg6dKlzJ49u1z3UhQFriIiEuiSgb3AWtvrbod9g4HfgC1A\nN6+XTHxG4yCDl56teEpCQidSUuKJjx9G587JxMcPIyWle6knZvLEObKzsxk8eDB169alQYMGHDly\nJD/QdGypLE2rpf2Yu+66i759+9KqVStuvvlmevXq5TL/8OHD+d///sell15Kr1696N27d6FjBw8e\nzKhRo4iOjua9996jcePGzJgxgzFjxnDZZZfRtGlT3n333fxW2ilTprBy5Upq1arFiBEjeOKJJ0pV\nD6XhuRVhXbOWNCDXZDKa2u3vpRUo+ex5oXz5AuEeVTeez2fPC6obV3lBdeMqLxTOZ/sS8sbPfF8Y\n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\nJCln/wPV5UC1z4+t3wAAAABJRU5ErkJggg==\n",
"text": [
"<matplotlib.figure.Figure at 0x107d52a10>"
]
}
],
"prompt_number": 6
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Conclution"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With this entry I revisited the theory of SD modulators using a module written in Python. The fundamental aspects of Mash SDM modulators are explained and documented. To analyse the output I used the nice Scipy library. In this way, and with the help of the Ipython notebook, the linear theory of mash SDM and its limitations are well documented and results are easily replicated.\n",
"\n",
"This shows a bit what would be the intention with the plldesigner toolkit. This a project that I have been developing and aims to add specific functionality to the numpy+scipy+ipython ecosystem to simulate and model PLL's.\n",
"\n",
"\n"
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Changes"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"After publication some changes have been made:\n",
"\n",
"- The text was corrected, although not perfect is definitely more readable.\n",
"\n",
"- The pnoise class was renamed to be Pnoise, according with Python conventions, so the notebook was updated accordingly.\n",
"\n",
"- The notebook imports pylab as \"from pylab import *\", what I consider is the best practice in a Notebook were clarity is more desired than follow software writing best practices.\n",
"\n",
"- Some equations that were not displayed correctly were corrected. "
]
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment