tag:blogger.com,1999:blog-78966146267448179572024-03-05T07:38:23.490+00:00YADO Yet Another Digital OscilloscopeIn this Blog I will explain my experience in designing my Digital OscilloscopeThe nerd inventorhttp://www.blogger.com/profile/04009822639998750941noreply@blogger.comBlogger20125tag:blogger.com,1999:blog-7896614626744817957.post-37140278295928940582013-04-01T12:52:00.001+01:002013-04-01T12:52:17.285+01:00Running at 200MSPS<br />
<h2>
200 MSPS working now</h2>
<div class="separator" style="clear: both; text-align: left;">
I'm finally sampling at 200 MSPS. for some reason I'm an expert to misunderstand datasheet.</div>
<div class="separator" style="clear: both; text-align: left;">
This morning... I read carefully the ADC's datasheet and I wrote correct UCF file for my Xilinx device.</div>
<div class="separator" style="clear: both; text-align: left;">
look by yourself:</div>
<h3>
10 MHz square wave</h3>
<div>
The waveform compared with the same inoput signal published in my previous post looks much more like a square wave, obviously as I can only have the first 3 harmonics... it can't get better than that, even if I increase the input bandwidth. Therefore I'm really satisfied. </div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDPxwMEpCDfS10TfKtJXUvev9MtgiFAhGoBBhLkNVgpyrpWrs-W1R4rJI3buaLzrl8Vlc5HEDpFc5n33qE8EemLAqqKIQckhZiLYc1kCtVqTX0_b7WoMusdDhHd3HAWdeu92KnuHBcRR_s/s1600/10MHz+squarewave_200MSPS.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDPxwMEpCDfS10TfKtJXUvev9MtgiFAhGoBBhLkNVgpyrpWrs-W1R4rJI3buaLzrl8Vlc5HEDpFc5n33qE8EemLAqqKIQckhZiLYc1kCtVqTX0_b7WoMusdDhHd3HAWdeu92KnuHBcRR_s/s400/10MHz+squarewave_200MSPS.png" width="400" /></a></div>
<br />
<br />
Next:<br />
1) assemble and test channel 2<br />
2) finish to design the USB isolation module (I don't want to damaged my PC)<br />
3) to complete the SW!<br />
<br />The nerd inventorhttp://www.blogger.com/profile/04009822639998750941noreply@blogger.com0tag:blogger.com,1999:blog-7896614626744817957.post-26446854769192193362013-03-31T21:37:00.001+01:002013-03-31T22:03:35.916+01:00FFT and Spectrum Analyzer<h2>
How to use an oscilloscope as Spectrum analyzer...</h2>
<div>
I start to love my oscilloscope. I honestly can't say I have used something that works so well.</div>
<div>
I have just finished to add the FFT functionality... and I was amazed with the results, accuracy and speed!</div>
<div>
I'm sampling only @100MSPS , 2K buffer. </div>
<div>
<br /></div>
<h3>
1 MHz Sine wave</h3>
<div>
By applying 1 MHz sinewave, as you can see the spectrum analyzer is correctly indication 1 MHz. The smae indication you can get with the time cursor, but is not so funny with it. </div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHBbF3gU9HlwdZIeShybFGYNAX8jznk4bZqPn8BhCXnPM4d_wOcN2_xBcg_98g9osn5M_4yafVjTdiEaZb7jTV-wlzX4GT9PfdQi29ofiAOlGk7mkgIR4Lj4HI_x_dfiogiA2idjRaXPMI/s1600/1MHzsine.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHBbF3gU9HlwdZIeShybFGYNAX8jznk4bZqPn8BhCXnPM4d_wOcN2_xBcg_98g9osn5M_4yafVjTdiEaZb7jTV-wlzX4GT9PfdQi29ofiAOlGk7mkgIR4Lj4HI_x_dfiogiA2idjRaXPMI/s400/1MHzsine.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
after I have applied 1 MHz, I have then applied 2 MHz, 3MHz, and so up to 40 MHz.<br />
and the spectrum analyzer always gives the correct results:<br />
<br />
<h3>
2MHz sine wave</h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBf5SwOpRNUKdt0RG_u09FGJVTeV3U_hR9uIZS5AFs0-clRjMvyPMKs8FKz3H4X5_tQEe-XVBOL4pv6eignS2IcgRQ6QG7AeIXXse-Oyw8OoAQ_jc6PSB2UVH-lxX6tveTy9LlsRHQEsig/s1600/2MHzsine.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBf5SwOpRNUKdt0RG_u09FGJVTeV3U_hR9uIZS5AFs0-clRjMvyPMKs8FKz3H4X5_tQEe-XVBOL4pv6eignS2IcgRQ6QG7AeIXXse-Oyw8OoAQ_jc6PSB2UVH-lxX6tveTy9LlsRHQEsig/s400/2MHzsine.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<h3>
4 MHz sine wave</h3>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAuVUI-Jjq6UL1AELGac6yOjzHoYDulwmDHu3Lhp93T6vIf4O7LexpB8itBXuwS934H_zQ_OFFBANrejfCmkZzV8wE9GT8ZoYkd-alqnZsjld4LiWb-llyViB8knWbyaPLlB-ztw_ffhL3/s1600/3MHzsine.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAuVUI-Jjq6UL1AELGac6yOjzHoYDulwmDHu3Lhp93T6vIf4O7LexpB8itBXuwS934H_zQ_OFFBANrejfCmkZzV8wE9GT8ZoYkd-alqnZsjld4LiWb-llyViB8knWbyaPLlB-ztw_ffhL3/s400/3MHzsine.png" width="400" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<h3>
10 MHz Sine wave</h3>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpI0DjXedNBPDVdLk6IvSL3-djH9zTqUbJ-UpXmisbcahsYIUcer5oPkdXTe0x3wEwN1TO1N_h6kFLJV6EnPFDC-d2j-8SxC7a0OOxYuBWwCnb5hE4rW11EIbW9ZTpFLb14M3d4XAjt_Hs/s1600/10MHzsine.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="224" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpI0DjXedNBPDVdLk6IvSL3-djH9zTqUbJ-UpXmisbcahsYIUcer5oPkdXTe0x3wEwN1TO1N_h6kFLJV6EnPFDC-d2j-8SxC7a0OOxYuBWwCnb5hE4rW11EIbW9ZTpFLb14M3d4XAjt_Hs/s320/10MHzsine.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<h3>
20 MHz Sine </h3>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIPAaPUHeuEHGJPoapWavXahvfBbuS-9vAFSs8nhCpSsxmfdwLgUwfSLMmPDxjzBr5yA8PasB8zCFrEr4y9cuimjP72zT7g4-68s10ZCFWTBdqRmE9CxIEKuf6ZHxBV7d7EwhSR6L3Zsyi/s1600/20MHzsine.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIPAaPUHeuEHGJPoapWavXahvfBbuS-9vAFSs8nhCpSsxmfdwLgUwfSLMmPDxjzBr5yA8PasB8zCFrEr4y9cuimjP72zT7g4-68s10ZCFWTBdqRmE9CxIEKuf6ZHxBV7d7EwhSR6L3Zsyi/s400/20MHzsine.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<h3>
30 MHz sine</h3>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3lwyLAxgE7rHNGzCmLq0j04v57v8IlZz7vMmWyVyboMDfkZba-z2UlzS-qJt82uqkQlTC_30WJQUy_GWfms7CchgYBx82oTrk3gQIi4tnsId_oTgChOqEltk7u2Bhe3E_yKV7Fi2rK4_s/s1600/30MHzsine.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3lwyLAxgE7rHNGzCmLq0j04v57v8IlZz7vMmWyVyboMDfkZba-z2UlzS-qJt82uqkQlTC_30WJQUy_GWfms7CchgYBx82oTrk3gQIi4tnsId_oTgChOqEltk7u2Bhe3E_yKV7Fi2rK4_s/s400/30MHzsine.png" width="400" /></a></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<h3>
Square wave!</h3>
<div>
The square wave is the most interesting to watch from a spectrum point of view. As you probably know the square wave has got only odd harmonics, e.g. the 1st, 3rd , 5th etc.</div>
<div>
Let see the spectrum on a 1 MHz and a 10 MHz square wave:</div>
<div>
<br /></div>
<h3>
1 MHz Squarewave</h3>
<div>
As you can see, the spectrum analyzer correctly report the 1st, 3rf, 5th, 7th, etc. </div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgI3fDdsEyybyNRE0sqNF4SJFH5H9C2ivgddV1ibgaShlIzEvuMIJHG7Da8HuUaABcsoa42l2BGBIuNkEllnHIdOnxGUWS_-LmlcsjreE84vUSxU5cPhrgqKhfy5IYP9_-RfGV0DfpA1aN8/s1600/1MHzsquare.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgI3fDdsEyybyNRE0sqNF4SJFH5H9C2ivgddV1ibgaShlIzEvuMIJHG7Da8HuUaABcsoa42l2BGBIuNkEllnHIdOnxGUWS_-LmlcsjreE84vUSxU5cPhrgqKhfy5IYP9_-RfGV0DfpA1aN8/s400/1MHzsquare.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<h3>
10 MHz Square-wave</h3>
<div>
a 10 MHz square-wave, and we can still see all the odd harmonics! the Oscilloscope works very well!</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFFpZ6CkMvP3Ij2uwUsEa7z8spoyQSJXK8dZIbdr17c0NBHSLh1VZ7SRvo_qr7eowC3_s8BTkRE3PSMIU-xFbB_jRYL9W1fgSNA7-xfvpCkgrwT7L8kUWX6H8jA6lhNpyuU28T3jwnj6Yp/s1600/5MHzsquare.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFFpZ6CkMvP3Ij2uwUsEa7z8spoyQSJXK8dZIbdr17c0NBHSLh1VZ7SRvo_qr7eowC3_s8BTkRE3PSMIU-xFbB_jRYL9W1fgSNA7-xfvpCkgrwT7L8kUWX6H8jA6lhNpyuU28T3jwnj6Yp/s400/5MHzsquare.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<h3>
100 KHz Square-wave</h3>
<div>
100 KHz the spectrum analyzer still works OK, but the resolution is poor. the is due to the fact that with 2048 bytes of buffer, the minimum resolution I can get by sampling at 100 MHz is 100MHz/2048 = 48.8 KHz (approx)... so I was thinking that in the next prototype I will probably add more ram.... maybe changing the FPGA or adding extra ram on the board..</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZQkimKwUyifHmUf9U5tk3OxX6vFykIOO2RLESVpzejY_PuaJRQljco7bongPkUB3X-T5Cad7IWxgYwIDNs9z52hjjSUEWRFh-eUCEiZO-OZpnmoAgh97d1UocAx1NSq1SHfad0rqXd1Kg/s1600/100KHzsquare.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZQkimKwUyifHmUf9U5tk3OxX6vFykIOO2RLESVpzejY_PuaJRQljco7bongPkUB3X-T5Cad7IWxgYwIDNs9z52hjjSUEWRFh-eUCEiZO-OZpnmoAgh97d1UocAx1NSq1SHfad0rqXd1Kg/s400/100KHzsquare.png" width="400" /></a></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div>
<br /></div>
<h3>
</h3>
The nerd inventorhttp://www.blogger.com/profile/04009822639998750941noreply@blogger.com0tag:blogger.com,1999:blog-7896614626744817957.post-24993511749212969252013-03-29T20:14:00.001+00:002013-03-29T20:14:53.178+00:00Vertical and Horizontal cursors<h2>
Adding more functionality on the Oscilloscope</h2>
<h3>
Horizontal and vertical cursors</h3>
<div>
Designing a digital oscilloscope that is actually useful for a designer seems to be an hard task today for many company. Probably one reason is that the person who write the specs... most of the time.... is not a designer... It could be a very clever chap but sometime doesn't use the oscilloscope very often.</div>
<div>
For example one of the most useful function on a modern oscilloscope is to be able to make horizontal and vertical measurement. Now while most oscilloscope have this functionality, a functionality very useful is to bring an horizontal cursor back to the screen, without the need to turn 100 times the knob, or without the need to zoom out, then bring the cursor in the middle, then zoom in, and so on.</div>
<div>
I have added a simple button that does that for me! </div>
<div>
In many oscilloscope, for some reason the cursors interface is quite a mess, you need to press a button to switch between he cursor and when you press one more time you need to do again and again...</div>
<div>
why make the life difficult?</div>
<div>
see the GUI below and you immediately understand how it works.</div>
<div>
<br /></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQuvQheycegIe4RzjEGkfBGj88kVrnpJ8sBid82c5AzQme_6pXZXw0crS_2fr-lZGoR1mT8t-T4Viwg2nIuDMU8U4WlvOtuFY8HRRfezjEO3m7KE8aCQgt3hPQslblLmvcKmEoJhsF5xyj/s1600/OSC.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQuvQheycegIe4RzjEGkfBGj88kVrnpJ8sBid82c5AzQme_6pXZXw0crS_2fr-lZGoR1mT8t-T4Viwg2nIuDMU8U4WlvOtuFY8HRRfezjEO3m7KE8aCQgt3hPQslblLmvcKmEoJhsF5xyj/s400/OSC.png" width="400" /></a></div>
<div>
<br /></div>
<div>
Se you at next time.</div>
<div>
<br /></div>
<div>
<br /></div>
The nerd inventorhttp://www.blogger.com/profile/04009822639998750941noreply@blogger.com0tag:blogger.com,1999:blog-7896614626744817957.post-52951630135710449882013-03-28T21:49:00.004+00:002013-03-28T21:49:47.849+00:00AN oscilloscope that I would use in the lab<h2>
Getting better and better</h2>
<div>
The Oscilloscope it start to be good enough to bring it in the lab with me.</div>
<div>
On the screen the user has all the information he needs.</div>
<div>
I have slightly changed the look as well. </div>
<div>
I'm so happy to have started this project! I still can't believe I have done this!</div>
<div>
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNzyR34rdkttcTE5cX-eNDjbLk6IJijGPg9jr8Qa6KaXKweyD881UaeDvxfsmoiv0_McFVQl_StEt0ScHdVe0674nts_a21bGMqD_xvNTu-b2shaB2AEl3h4A5jNxZBv_w6narbo712TBv/s1600/OSC.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="287" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNzyR34rdkttcTE5cX-eNDjbLk6IJijGPg9jr8Qa6KaXKweyD881UaeDvxfsmoiv0_McFVQl_StEt0ScHdVe0674nts_a21bGMqD_xvNTu-b2shaB2AEl3h4A5jNxZBv_w6narbo712TBv/s400/OSC.png" width="400" /></a></div>
<br />
Next time... I will:<br />
adding the menu for Cursors, Measure, Math (with the FFT).<br />
<br />The nerd inventorhttp://www.blogger.com/profile/04009822639998750941noreply@blogger.com0tag:blogger.com,1999:blog-7896614626744817957.post-25707383999423788662013-03-26T21:48:00.001+00:002013-03-26T21:48:02.686+00:00a working USB Occilloscope<h2 style="text-align: center;">
The oscilloscope SW is very fast!</h2>
Last week end I finally found a working solution for the interpolation algorithmic and tonight I decided to work on the SW side to make the SW very responsive. I'm very impressed how the GUI react with the commands considering the amount of work is doing to calculate the interpolation of a waveform.<br />
I'm also impressed with the linearity displayed from the sinc(x) exp(-x^2/3) algorithm.<br />
So now my task for the next day is to assemble the second channel on the PCB and to finish the SW.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXOA7m-VabhQjT6P_rE1nvOxU8m5oQ_whLTSJEZxBPwRAJh3Gddo-pkmdF5ZpVLmTNzx6O81QH1K0Z0p7rIV0tFtbuX9o-mT64Pr92b66gsSz4YvesVqqurTUlXYISixHowfa6S0SKGYiX/s1600/saw_wave.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="287" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXOA7m-VabhQjT6P_rE1nvOxU8m5oQ_whLTSJEZxBPwRAJh3Gddo-pkmdF5ZpVLmTNzx6O81QH1K0Z0p7rIV0tFtbuX9o-mT64Pr92b66gsSz4YvesVqqurTUlXYISixHowfa6S0SKGYiX/s400/saw_wave.png" width="400" /></a></div>
<br />
<br />The nerd inventorhttp://www.blogger.com/profile/04009822639998750941noreply@blogger.com0tag:blogger.com,1999:blog-7896614626744817957.post-15246743447109109442013-03-24T21:30:00.002+00:002013-03-24T21:30:35.958+00:00The Oscilloscope is growing up<h2 style="text-align: center;">
More waveform</h2>
<div>
I made a bit more work on the interpolation algorithm, I haven't finished yet... but for the time being I will stop for now to work on the interpolation algorithm as I have achieved some good result today.</div>
<div>
So the Oscilloscope is still sampling only at 100 MHz! (200 MHz next week end I guess).</div>
<div>
Let see some waveform:</div>
<div>
<br /></div>
<div>
</div>
<div>
<br /></div>
<h2 style="text-align: center;">
1 MHz Sinewave</h2>
<div>
Not too bad I think... it is still possible to see some issues due to common mode noise that probably goes inside the input ( 1MHz) of the oscilloscope and is displayed, as at moment the oscilloscope is still not isolated from the PC I must leave with it until I isolate it.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitPCLuEbzeifejtG81R5r-qPckV7cuBvLHBwau97Rlzakf_VdfrZkisVM8Q6ShIdd6phWFyyvbYBWSkhB1rc1NarhdgsWXZ7LuIM4U9yeQDwxxMdlD08JGKPG5VbnPsCJ3_TPCbzwKkgPb/s1600/1MHz_sine.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="287" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitPCLuEbzeifejtG81R5r-qPckV7cuBvLHBwau97Rlzakf_VdfrZkisVM8Q6ShIdd6phWFyyvbYBWSkhB1rc1NarhdgsWXZ7LuIM4U9yeQDwxxMdlD08JGKPG5VbnPsCJ3_TPCbzwKkgPb/s400/1MHz_sine.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<h2 style="text-align: center;">
1 MHz squarewave</h2>
<div>
Not too bad I think, considering that the square wave is the function with lots of harmonics .</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiat5AlepcFj0YDWXAaOue3qqYWH5CEj1cmnWrcUxVxXoejFCU84ycG75Bew3yDxjECVmmrqSwxkg4ANe89wiqrY2tbKCZn-Xadl77NbUNLHTcnrqdFAWrnLQVqhByvfD2dxqN8eoWKnq7C/s1600/1MHz_square.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="287" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiat5AlepcFj0YDWXAaOue3qqYWH5CEj1cmnWrcUxVxXoejFCU84ycG75Bew3yDxjECVmmrqSwxkg4ANe89wiqrY2tbKCZn-Xadl77NbUNLHTcnrqdFAWrnLQVqhByvfD2dxqN8eoWKnq7C/s400/1MHz_square.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<h2 style="text-align: center;">
5 MHz sine wave </h2>
<div>
not too bad I think</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0BK-f1EcUa6Bsewg8sPiOuZYWdN9Vl0w-vxDG6nN1jayo9lzrYHvO-8IxFWyQrGt6vtg0CiLTUxB7_xg8lb4KCpdt-iVUaK8ewLVskHLyupwxtk1vd2diVq9QLaH8Y6lvZikPAIJ0wP2a/s1600/5MHz_sine.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="287" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0BK-f1EcUa6Bsewg8sPiOuZYWdN9Vl0w-vxDG6nN1jayo9lzrYHvO-8IxFWyQrGt6vtg0CiLTUxB7_xg8lb4KCpdt-iVUaK8ewLVskHLyupwxtk1vd2diVq9QLaH8Y6lvZikPAIJ0wP2a/s400/5MHz_sine.png" width="400" /></a></div>
<br />
<h2 style="text-align: center;">
5 MHz square wave</h2>
<div>
Not too bad considering I'm sampling at 100 MHz!</div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMzyU2XwSIdLI6McOrO2r5FE-61LWq9co3y71W29pR9RdMKYs_OOXxzvqS-5VZifKK0MDBsrfnHLDIyKlrF6DY77LOdACqcIgN2ujCU-pR_3Bnx-Xa0s4IppCX5mXQZtsbosebFD-qoQkq/s1600/5MHz_Square.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="287" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMzyU2XwSIdLI6McOrO2r5FE-61LWq9co3y71W29pR9RdMKYs_OOXxzvqS-5VZifKK0MDBsrfnHLDIyKlrF6DY77LOdACqcIgN2ujCU-pR_3Bnx-Xa0s4IppCX5mXQZtsbosebFD-qoQkq/s400/5MHz_Square.png" width="400" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<h2 style="text-align: center;">
10 MHz sine wave</h2>
<div>
pretty good!</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbP4H03oYXk6alcb_ULkF8pBWRZjAiqspGrtATYEsg-DmKvNp8RxwbbzNWzFLD0r-oIsP3cUZ_aVRMI5rs7WYlA7H4yoRt1ovVplMlD0ACY2eTulH5c4b2qf9OMXdyntyb9Btiec79VHNT/s1600/10MHz_sine.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="287" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbP4H03oYXk6alcb_ULkF8pBWRZjAiqspGrtATYEsg-DmKvNp8RxwbbzNWzFLD0r-oIsP3cUZ_aVRMI5rs7WYlA7H4yoRt1ovVplMlD0ACY2eTulH5c4b2qf9OMXdyntyb9Btiec79VHNT/s400/10MHz_sine.png" width="400" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<h2 style="text-align: center;">
10 MHz square wave</h2>
<div class="separator" style="clear: both; text-align: left;">
Not too bad considering that the input is a 10 MHz square wave and I've got only 10 samples to rebuilds.</div>
<div class="separator" style="clear: both; text-align: left;">
I wish to thanks all the person that are following this blog for the excellent suggestions on how to design the interpolation algorithm. When you buy an oscilloscope and you read sinc(x) interpolation. Don't believe it without a good windowing you have overshoot all over the place. in my case I'm using a sin(x)e(-x^2/3) interpolation, the Gaussian works pretty well in reducing the overshoot. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQTPI1rFNFs-MvjGJtciSdD6F0nQRbaghzsNnTVOAtZDfyMSfwaGAsbtWyDa5pA6WattSL18AnKiCiy6ACZxEDLNz8uePvSL9flXzCRvG94H1xCHzTSje82ouCGp6aY0rAVohtB6H7p1wk/s1600/10MHz_Square.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="287" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQTPI1rFNFs-MvjGJtciSdD6F0nQRbaghzsNnTVOAtZDfyMSfwaGAsbtWyDa5pA6WattSL18AnKiCiy6ACZxEDLNz8uePvSL9flXzCRvG94H1xCHzTSje82ouCGp6aY0rAVohtB6H7p1wk/s400/10MHz_Square.png" width="400" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<h2 style="text-align: center;">
What to do now?</h2>
<div>
1) improve the SW</div>
<div>
<br /></div>
<div>
2) finish to design the isolator ( the noise should further reduce)</div>
<div>
<br /></div>
<div>
3) sample at 200 MSPS ( so far I haven't done because of a mistake of mine in choosing the clock pin of the FPGA)</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
The nerd inventorhttp://www.blogger.com/profile/04009822639998750941noreply@blogger.com0tag:blogger.com,1999:blog-7896614626744817957.post-44475132129019654022013-03-23T21:54:00.001+00:002013-03-23T21:54:18.969+00:00Still problems on the interpolation<h2 style="text-align: center;">
I love DSP but I'm bad at it!</h2>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
It looks like I'm a bad SW designer... </div>
<div style="text-align: justify;">
I'm still not sure I understood how to interpolate a raw data from the FPGA buffer to the screen.</div>
<div style="text-align: justify;">
In the picture below I have in<span style="color: yellow;"> </span><b>yellow</b> the raw data from the FPGA, and in <b>red</b> the interpolated data using the sinc(x) algorithm.</div>
<div style="text-align: justify;">
Now how you can see, there is nothing that suggest why I should have all that ringing.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUXR0S-tTgPFe2hxYTHS1_4VXYiduE14Jz2UmaW6rpJxYdpDCcGB8TkUq3R-5x2_HM4ij9EVpEUaSrblu94VFEA9Pah3CYkd52FuMZHC1bkHyra8Qcc5bEJHIAoJsnLVa1Q4xyNp5KyMYB/s1600/sinc_problem.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="287" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUXR0S-tTgPFe2hxYTHS1_4VXYiduE14Jz2UmaW6rpJxYdpDCcGB8TkUq3R-5x2_HM4ij9EVpEUaSrblu94VFEA9Pah3CYkd52FuMZHC1bkHyra8Qcc5bEJHIAoJsnLVa1Q4xyNp5KyMYB/s400/sinc_problem.png" width="400" /></a></div>
<div>
<br /></div>
<div>
In order to show the problem even better I have zoomed the image(see below): in red I still have the interpolated data, while in yellow I have the raw data.</div>
<div>
From the raw data, I can see some small ringing that for some reason get amplified in red when I interpolate .</div>
<div>
For example if you look at that negative edge... it doesn't look right isn't it? </div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMgKbw_aWuqEV5pj2IpPrZ-wsGVVN2nTeZ18vJVWjiQ48KLl-pC0SD46-y00TqbZaYWS5stRr1NKnQs53_4ThVLKSp77OSGSMoeOhp-zrNvjkXSlUNn1_2QtW4ett1jVvD7p4SyIZCki1M/s1600/sinc_problem2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="287" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMgKbw_aWuqEV5pj2IpPrZ-wsGVVN2nTeZ18vJVWjiQ48KLl-pC0SD46-y00TqbZaYWS5stRr1NKnQs53_4ThVLKSp77OSGSMoeOhp-zrNvjkXSlUNn1_2QtW4ett1jVvD7p4SyIZCki1M/s400/sinc_problem2.png" width="400" /></a></div>
<br />
the above GUI is written using Lazarus . The function that create the interpolated data is :<br />
<br />
<br />
<b><i>function sinc_interpolation(buff: TCH_BUFF; Fsample: float; t: float): float;</i></b><br />
<b><i>var</i></b><br />
<b><i> i: integer;</i></b><br />
<b><i> sum: float = 0;</i></b><br />
<b><i> x_nt: float;</i></b><br />
<b><i> Ts: float = 0;</i></b><br />
<b><i><br /></i></b>
<b><i>begin</i></b><br />
<b><i><br /></i></b>
<b><i><span style="color: #93c47d;"> {</span></i></b><br />
<b><i><span style="color: #93c47d;"> x(t) = sum [ Xn sinc(pi/T(t-nT))] sum all the n...</span></i></b><br />
<b><i><span style="color: #93c47d;"> }</span></i></b><br />
<b><i><br /></i></b>
<b><i> Ts := 1 / FSample; <span style="color: #93c47d;">// sample time</span></i></b><br />
<b><i> sum := 0;</i></b><br />
<b><i> for i := 1 to BUF_SIZE - 2 do <span style="color: #6aa84f;">// remember to fix the bug inside the FPGA</span></i></b><br />
<b><i> begin</i></b><br />
<b><i> x_nt := buff[i] * sinc((t - i * Ts) / Ts);</i></b><br />
<b><i> sum := sum + x_nt;</i></b><br />
<b><i> end;</i></b><br />
<b><i> Result := Sum;</i></b><br />
<b><i><br /></i></b>
<b><i>end;</i></b> <br />
When I call that function I set:<br />
<b> Fsample</b> = 100000000.0; (100 MHz)<br />
<b>t </b>= time I want to diplay on the screen ( I start to calculate <b>t </b> starting from the middle of the buffer)<br />
and <b>buff </b>is the buffer from the FPGA<br />
<br />
Do you think the code above is correct?<br />
any comment is welcome.<br />
<br />
<br />
<br />
The nerd inventorhttp://www.blogger.com/profile/04009822639998750941noreply@blogger.com1tag:blogger.com,1999:blog-7896614626744817957.post-618314692157559762013-03-12T07:52:00.002+00:002013-03-12T07:52:56.472+00:00improving the sinc(x) interpolation<h2>
I need to improve the interpolation algorithm</h2>
<div>
I'm working on the sinc(x)/x algorithm... and I'm having some trouble understanding some effect I can see on the scope.</div>
<div>
in the picture below I'm displaying on CH1 the interpolated signal, while on CH2 I'm displaying the FPGA buffer</div>
<div>
<br /></div>
<div>
the first picture is is a sinewave 1 MHz as you can see the sinewave is a bit wobbly... the problem is that if I use a linear interpolation to display CH1... then it looks not too bad ( see old post)</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirF2ykS2_8qVdrTaBJePua8GzXwpGWKzzijoSlookxdXgxUIW5s91f3TcCroEOY1UHfAoPSndVmL9vbAoqp3rHF8Y8h1zFWh2xPHq01d0c1dDsr7voXVRhQYJcomLYNAJvQYyVK5zaYRU-/s1600/sine.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="287" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirF2ykS2_8qVdrTaBJePua8GzXwpGWKzzijoSlookxdXgxUIW5s91f3TcCroEOY1UHfAoPSndVmL9vbAoqp3rHF8Y8h1zFWh2xPHq01d0c1dDsr7voXVRhQYJcomLYNAJvQYyVK5zaYRU-/s400/sine.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The wobbly effect is more evident when I use a triangle wave... as you can see... I do have some problem...</div>
<div class="separator" style="clear: both; text-align: left;">
now I'm running out of idea... any suggestion is really welcome!</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQ3uvdm643D2lxDgtn1Fbc6pkECqc8KHzOp4g3JYyE3EGNEj-4XQaZS-7yJ1k5OHgtUkwLwcChypIY_8JPsIPY4Dxip88_Gr1Uq3EZmFZ-n95iWqF2DEmxJaT5BBSc-wlgiuc7yTbzCiDW/s1600/triangle.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="286" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQ3uvdm643D2lxDgtn1Fbc6pkECqc8KHzOp4g3JYyE3EGNEj-4XQaZS-7yJ1k5OHgtUkwLwcChypIY_8JPsIPY4Dxip88_Gr1Uq3EZmFZ-n95iWqF2DEmxJaT5BBSc-wlgiuc7yTbzCiDW/s400/triangle.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />The nerd inventorhttp://www.blogger.com/profile/04009822639998750941noreply@blogger.com0tag:blogger.com,1999:blog-7896614626744817957.post-15314358422880436052013-03-10T19:22:00.002+00:002013-03-10T19:22:17.194+00:00Oscilloscope specifications<br />
<div style="margin-bottom: 0cm;">
Oscilloscope DSO-2-200-B</div>
<br /><br />
<br />
<h2 class="western">
Characteristics</h2>
<br /><br />
<br />
<table border="1" bordercolor="#000000" cellpadding="4" cellspacing="0" style="width: 100%px;">
<colgroup><col width="92*"></col>
<col width="164*"></col>
</colgroup><thead>
<tr valign="TOP">
<th width="36%">
Characteristics<br />
</th>
<th width="64%">
DSO-2-200-B<br />
</th>
</tr>
</thead>
<tbody>
<tr valign="TOP">
<td width="36%">
Bandwidth<br />
</td>
<td width="64%">
<div align="LEFT">
20 MHz</div>
</td>
</tr>
<tr valign="TOP">
<td width="36%">
Channels<br />
</td>
<td sdnum="2057;" sdval="2" width="64%">
<div align="LEFT">
2</div>
</td>
</tr>
<tr valign="TOP">
<td width="36%">
Sample Rate on Each channel<br />
</td>
<td width="64%">
<div align="LEFT">
200 MS/s</div>
</td>
</tr>
<tr valign="TOP">
<td width="36%">
Record Length<br />
</td>
<td width="64%">
<div align="LEFT">
3K points at all time base on all mode</div>
</td>
</tr>
<tr valign="TOP">
<td width="36%">
Vertical resolution<br />
</td>
<td sdnum="2057;" sdval="8" width="64%">
<div align="LEFT">
8</div>
</td>
</tr>
<tr valign="TOP">
<td width="36%">
Vertical sensitivity<br />
</td>
<td width="64%">
<div align="LEFT">
5mV/div to 5 V/div on all modes</div>
</td>
</tr>
<tr valign="TOP">
<td width="36%">
DC Vertical accuracy<br />
</td>
<td sdnum="2057;0;0.00%" sdval="0.03" width="64%">
<div align="LEFT">
3.00%</div>
</td>
</tr>
<tr valign="TOP">
<td width="36%">
Vertical Zoom<br />
</td>
<td width="64%">
<div align="LEFT">
Vertically expand or compress a live or stopped
waveform</div>
</td>
</tr>
<tr valign="TOP">
<td width="36%">
Maximum input voltage
<br />
</td>
<td width="64%">
<div align="LEFT">
100 Vrms derated at 20 dB/decade above 50 Khz</div>
</td>
</tr>
<tr valign="TOP">
<td width="36%">
Position range<br />
</td>
<td width="64%">
<div align="LEFT">
5mV to 500 mV/div (1:1 probe)</div>
<div align="LEFT">
50 mV to 5V/div (1:10 probe)</div>
</td>
</tr>
<tr valign="TOP">
<td width="36%">
Input coupling<br />
</td>
<td width="64%">
<div align="LEFT">
AC, DC</div>
</td>
</tr>
<tr valign="TOP">
<td width="36%">
Input impedence<br />
</td>
<td width="64%">
<div align="LEFT">
1 Mohm, in parallel with 20pF</div>
</td>
</tr>
<tr valign="TOP">
<td width="36%">
Time Base Range<br />
</td>
<td width="64%">
<div align="LEFT">
20 ns to 5 s/div</div>
</td>
</tr>
<tr valign="TOP">
<td width="36%">
TimeBase accuracy<br />
</td>
<td width="64%">
<div align="LEFT">
50 ppm</div>
</td>
</tr>
<tr valign="TOP">
<td width="36%">
Horizontal Zoom<br />
</td>
<td width="64%">
<div align="LEFT">
Horizontally expand or compress a live or stopped
waveform</div>
</td>
</tr>
</tbody>
</table>
<br /><br />
<br />
<div style="margin-bottom: 0cm;">
<br />
</div>
<h2 class="western">
Acquisition mode</h2>
<br /><br />
<br />
<table border="1" bordercolor="#000000" cellpadding="4" cellspacing="0" style="width: 100%px;">
<colgroup><col width="128*"></col>
<col width="128*"></col>
</colgroup><thead>
<tr valign="TOP">
<th width="50%">
Mode<br />
</th>
<th width="50%">
Description<br />
</th>
</tr>
</thead>
<tbody>
<tr valign="TOP">
<td width="50%">
Peak Detect<br />
</td>
<td width="50%">
Capture Glitches as narrow as 30 ns at all base setting<br />
</td>
</tr>
<tr valign="TOP">
<td width="50%">
Sample<br />
</td>
<td width="50%">
Raw data<br />
</td>
</tr>
<tr valign="TOP">
<td width="50%">
Average<br />
</td>
<td width="50%">
Waveform avareged, selectable 4,16<br />
</td>
</tr>
<tr valign="TOP">
<td width="50%">
Single sequence<br />
</td>
<td width="50%">
To capture a single event<br />
</td>
</tr>
<tr valign="TOP">
<td width="50%">
Roll<br />
</td>
<td width="50%">
At acquisition time > 100 ms/div<br />
</td>
</tr>
</tbody>
</table>
<br /><br />
<br />
<br /><br />
<br />
<br /><br />
<br />
<br /><br />
<br />
<div style="page-break-before: always;">
<br /><br />
</div>
<br /><br />
<br />
<h2 class="western">
Trigger Types</h2>
<table border="1" bordercolor="#000000" cellpadding="4" cellspacing="0" style="width: 100%px;">
<colgroup><col width="128*"></col>
<col width="128*"></col>
</colgroup><thead>
<tr valign="TOP">
<th width="50%">
Trigger<br />
</th>
<th width="50%">
Description<br />
</th>
</tr>
</thead>
<tbody>
<tr valign="TOP">
<td width="50%">
Edge (rising, falling)<br />
</td>
<td width="50%">
Positive or negative slope on any channel, coupling selection
AC, DC<br />
</td>
</tr>
<tr valign="TOP">
<td width="50%">
Pulse width<br />
</td>
<td width="50%">
Trigger on a pulse width less than, greater than, equal to, or
not equal to, a selectable time limit from 30 ns to 1 sec<br />
</td>
</tr>
</tbody>
</table>
<br /><br />
<br />
<br /><br />
<br />
<h2 class="western">
Trigger source</h2>
CH1, CH2<br />
<br /><br />
<br />
<h2 class="western">
Cursors</h2>
<br /><br />
<br />
<table border="1" bordercolor="#000000" cellpadding="4" cellspacing="0" style="width: 100%px;">
<colgroup><col width="128*"></col>
<col width="128*"></col>
</colgroup><thead>
<tr valign="TOP">
<th width="50%">
Characteristic<br />
</th>
<th width="50%">
Description<br />
</th>
</tr>
</thead>
<tbody>
<tr valign="TOP">
<td width="50%">
Types<br />
</td>
<td width="50%">
Amplitude, Time<br />
</td>
</tr>
<tr valign="TOP">
<td width="50%">
Measurement
<br />
</td>
<td width="50%">
t1-t2,Freq, V1-V2<br />
</td>
</tr>
</tbody>
</table>
<br /><br />
<br />
<h2 class="western">
Automatic waveform measurement
</h2>
<div style="margin-bottom: 0cm;">
+Width, -Width, Rise time, Fall time,
Max, Min, Peak-Peak, RMS</div>
<div style="margin-bottom: 0cm;">
<br />
</div>
<div style="margin-bottom: 0cm;">
<br />
</div>
<h2 class="western">
Waveform Math</h2>
<table border="1" bordercolor="#000000" cellpadding="4" cellspacing="0" style="width: 100%px;">
<colgroup><col width="128*"></col>
<col width="128*"></col>
</colgroup><thead>
<tr valign="TOP">
<th width="50%">
Characteristic<br />
</th>
<th width="50%">
Description<br />
</th>
</tr>
</thead>
<tbody>
<tr valign="TOP">
<td width="50%">
Operators<br />
</td>
<td width="50%">
+ , - , * , FFT<br />
</td>
</tr>
<tr valign="TOP">
<td width="50%">
FFT<br />
</td>
<td width="50%">
Hanning, 2048 sample points<br />
</td>
</tr>
<tr valign="TOP">
<td width="50%">
Sources<br />
</td>
<td width="50%">
CH1, CH2 of any combination above<br />
</td>
</tr>
</tbody>
</table>
<br /><br />
<br />
<h2 class="western">
Connection to a PC </h2>
<table border="1" bordercolor="#000000" cellpadding="4" cellspacing="0" style="width: 100%px;">
<colgroup><col width="128*"></col>
<col width="128*"></col>
</colgroup><tbody>
<tr valign="TOP">
<th width="50%">
Characteristic<br />
</th>
<th width="50%">
Description<br />
</th>
</tr>
<tr valign="TOP">
<td width="50%">
Connection to a PC<br />
</td>
<td width="50%">
USB. Default, option Ethernet<br />
</td>
</tr>
<tr valign="TOP">
<td width="50%">
OS supported<br />
</td>
<td width="50%">
Windows7, Windows8<br />
</td>
</tr>
</tbody></table>
<br /><br />
<br />
The nerd inventorhttp://www.blogger.com/profile/04009822639998750941noreply@blogger.com0tag:blogger.com,1999:blog-7896614626744817957.post-91985918622162028922013-03-10T17:04:00.001+00:002013-03-10T17:04:51.778+00:0010 MHz Input square wave<h2>
Time to play!</h2>
<div>
I'm still sampling at 100 MHz! the input signal is a 10 MHz square wave.</div>
<div>
CH1 shows the actual square wave, while CH2 at moment shows the FPGA raw buffer.</div>
<div>
I'm using the sinc(x) interpolation to rebuild the original wave form, and I've learnt 2 things.</div>
<div>
1. From a spectrum point of view the beginning of the raw data is seen as a step gradient, which goes against the hypothesis of the Shannon theorem. That explain the first "distortion" of the CH1. </div>
<div>
So it's easy to fix.</div>
<div>
2. Now the second point is that the square wave is a little wavelike on the top and bottom... that I guess is because I haven't fixed the problem of the floor noise completely yet!</div>
<div>
Therefore I'm going to work on that now.</div>
<div>
1. by fixing the noise floor I think the square wave will look even better.</div>
<div>
2. I could further improve the waveform by play with the delay in the DLL, so I could create an equivalent sample of 1 GSPS and therefore the waveform should look very squared. ( Now I understand why so many USB oscilloscope use the ETS)</div>
<div>
<br /></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGzo4s-Xv018WW0E6s7U-DiNsbRYv92e-n0NzwvB2kTpEyTQ21v-BNAft8jJzdlQ-bSCBWDibYvtgB3pWIraC6LIrQbV7RbAWOh-WNEzwuj6saNlqiYOTBx0Ou0ykzkfW5OLcFaipOclE7/s1600/squarewave_10MHz.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="287" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGzo4s-Xv018WW0E6s7U-DiNsbRYv92e-n0NzwvB2kTpEyTQ21v-BNAft8jJzdlQ-bSCBWDibYvtgB3pWIraC6LIrQbV7RbAWOh-WNEzwuj6saNlqiYOTBx0Ou0ykzkfW5OLcFaipOclE7/s400/squarewave_10MHz.png" width="400" /></a></div>
<div>
<br /></div>
<div>
Any suggestion is welcome. </div>
The nerd inventorhttp://www.blogger.com/profile/04009822639998750941noreply@blogger.com0tag:blogger.com,1999:blog-7896614626744817957.post-91046913143349776942013-03-10T14:47:00.000+00:002013-03-10T14:51:01.246+00:00First experiment with the sinc(x) interpolation<br />
<h2>
Sinc(x) interpolation</h2>
<div>
The Shannon Theorem states that given a signal limited in bandwidth with the maximum harmonic fc <= 1/2 Fsample you can rebuild the original signal by interpolating :</div>
<div>
<br /></div>
<div>
<dl style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.1875px; margin-bottom: 0.5em; margin-top: 0.2em;"><dd style="line-height: 1.5em; margin-bottom: 0.1em; margin-left: 1.6em; margin-right: 0px; text-align: center;"><img alt="x(t) = \sum_{n=-\infty}^{\infty} x[n] \cdot {\rm sinc}\left(\frac{t - nT}{T}\right)\," class="tex" src="http://upload.wikimedia.org/math/9/4/6/946207f70f194bb9c56133577ffc0144.png" style="border: none; vertical-align: middle;" /></dd></dl>
</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLYJYuKJLLSo4IKH2XZZCCDAVLfRdNDnbNE_jiCKrbyjPWoCWMcgw9SEsV8abdC3M7tiIANWuHx8FgdPUZQ2WXRbm00lFSkFLVKWc3V1rhBR7OlNXOzTPKfSKSmb81Kwd9Dp_QzeWQy85v/s1600/interpolation.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="287" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLYJYuKJLLSo4IKH2XZZCCDAVLfRdNDnbNE_jiCKrbyjPWoCWMcgw9SEsV8abdC3M7tiIANWuHx8FgdPUZQ2WXRbm00lFSkFLVKWc3V1rhBR7OlNXOzTPKfSKSmb81Kwd9Dp_QzeWQy85v/s400/interpolation.png" width="400" /></a></div>
<div>
<br /></div>
I am applying on CH1 and CH2 a constant signal, and I'm plotting CH2 with a linear interpolation and CH1 with a Sinc(x) interpolation... unfortunately it looks like I'm a bad DSP designer as CH1 is the sinc itself! :-)<br />
I wanted to write it down because I found the CH1 waveform funny. Its actually pretty!<br />
So... last week I made lot's of progress, I'm now sampling at 100 MSPS... on the above picture the horizontal resolution is 20 nsec/div...<br />
I will post again once I fixed the sinc(x) problem!<br />
<br />The nerd inventorhttp://www.blogger.com/profile/04009822639998750941noreply@blogger.com0tag:blogger.com,1999:blog-7896614626744817957.post-64437450378897766912013-03-04T20:33:00.001+00:002013-03-04T20:33:09.572+00:00Another little step<h2>
Getting better</h2>
Yesterday night I promised myself to work on the SW side as I knew the noise issue was easy to fix... But as hardware engineer I wanted to fix it.<br />
As you can see, the Oscilloscope it start to be useful! The next 2 pictures are showing a sine wave and a square wave of 2.31 Vpp , 500 KHz. Please notice that the X, Y scale is still not working!<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhAetctOStUOFmHn1lXuE1FcMEcv1Wf1yBGMTRJ40q0KGwnyOYwz6k4htc86S7tlPdXaF0cg16YOK4Qm2C-GGmFTeKEy7wdb1-ZMN-y1viJn_B8_PjHvimw8PgzIn_RLEWCwCUxfIBgd-x/s1600/waveform3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="285" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhAetctOStUOFmHn1lXuE1FcMEcv1Wf1yBGMTRJ40q0KGwnyOYwz6k4htc86S7tlPdXaF0cg16YOK4Qm2C-GGmFTeKEy7wdb1-ZMN-y1viJn_B8_PjHvimw8PgzIn_RLEWCwCUxfIBgd-x/s400/waveform3.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi84sLbWgGMSLliUArHadbS8_eXptl-Y0V6_891sqTRGq_JCQAgGBvSoltR6rxGwiQustMimJEEhiPQzuHcBvM-Nwa06fkX2By-C62iRox7NPx5IDCXmyCIx6GChYSi-L17V8q4gMsZrvGN/s1600/waveform2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="285" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi84sLbWgGMSLliUArHadbS8_eXptl-Y0V6_891sqTRGq_JCQAgGBvSoltR6rxGwiQustMimJEEhiPQzuHcBvM-Nwa06fkX2By-C62iRox7NPx5IDCXmyCIx6GChYSi-L17V8q4gMsZrvGN/s400/waveform2.png" width="400" /></a></div>
<br />The nerd inventorhttp://www.blogger.com/profile/04009822639998750941noreply@blogger.com0tag:blogger.com,1999:blog-7896614626744817957.post-15469721483943759652013-03-03T21:16:00.003+00:002013-03-03T21:16:45.320+00:00The first waveform<h2>
It start to work!!</h2>
This is my first waveform! the X and Y scaling are still not working...<br />
I am applying an input signal of only 280 mVpp, 50 KHz sine wave . How you can see below at moment the scope has a floor noise of 4 - 5 mV which I believe I can fix.<br />
The noise floor is due to the FTDI chip .<br />
Unfortunately the FTDI USB chip (at moment) is not isolated from my Scope, and this seems causing some noise issues. My plan is to insert a galvanic insulation between the scope and the FTDI, and I guess the Noise floor should improve.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRq_CCHTJ7rWWpJyTTBjmsOjDdFm04xzY2kvei8jJWQcJ_m7GzbhE7pmPziDaGR1Yer5_TIDNWOukZTigwpddp3UyCLU98szJK6iUDQfZGEnf68_BhyphenhyphenyR3YplLpCvz_8acgmhSc64ZDq_8/s1600/waveform1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="282" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRq_CCHTJ7rWWpJyTTBjmsOjDdFm04xzY2kvei8jJWQcJ_m7GzbhE7pmPziDaGR1Yer5_TIDNWOukZTigwpddp3UyCLU98szJK6iUDQfZGEnf68_BhyphenhyphenyR3YplLpCvz_8acgmhSc64ZDq_8/s400/waveform1.png" width="400" /></a></div>
<br />
My plan for next week:<br />
work on the SW side only, so the scope start to behave like a proper scope.<br />
maybe (if I've got time ) solder the channel 2 .<br />
<br />The nerd inventorhttp://www.blogger.com/profile/04009822639998750941noreply@blogger.com0tag:blogger.com,1999:blog-7896614626744817957.post-68956539034184095142013-03-01T07:47:00.001+00:002013-03-01T07:48:32.260+00:00<h2>
API building</h2>
I started designing the API to communicate with the oscilloscope<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo2HaC3rxtCBRNDMPXRidIDf46RwO0eY84F4NO4PgKRj68GYVKVgdY0xVWhFwKommIa44q5w8fhvAPYxP3OVsQdBuCtJ1rIBZF3ymzfmdQjHww87Gh0Rc1SncnyMBn_tb8yWXMYkQZsFy7/s1600/DSO_Connected.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="451" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo2HaC3rxtCBRNDMPXRidIDf46RwO0eY84F4NO4PgKRj68GYVKVgdY0xVWhFwKommIa44q5w8fhvAPYxP3OVsQdBuCtJ1rIBZF3ymzfmdQjHww87Gh0Rc1SncnyMBn_tb8yWXMYkQZsFy7/s640/DSO_Connected.png" width="640" /></a></div>
<br />
When I run the SW and you press the connect button the SW check how many oscilloscopes are connected if more than one, then you need to select one. So... in theory you can connect as many oscilloscope you want on a PC.<br />
then check for the Device ID and the revision. it depend from the device ID, the behavior of the SW will be different.<br />
I can now control the AC/DC coupling, and control the overall GAIN and attenuation of the input stage amplifier!<br />
See you soon!The nerd inventorhttp://www.blogger.com/profile/04009822639998750941noreply@blogger.com0tag:blogger.com,1999:blog-7896614626744817957.post-56904879510801474342013-02-26T07:49:00.002+00:002013-02-26T07:49:55.856+00:00I have tested the input stage (with the exceptions of the 2 relays). I'm using as signal generator an HP 8116A, (50 MHz sin,saw,square)... the frequency response is quite flat, and I can compensate the input stage with the input compensation network I designed.<br />
I'm using an old Tektronix 2205-40 as oscilloscope... not the best this days... but good enough for the job.<br />
<br />
I have also finished to design the FPGA (for the time being) and in the next few days I need to go back on the SW side and design the API to communicate (from my SW) with the FPGA.<br />
To do this I'm using a FTDI chip that is delivered with a *.dll that simplify the design of the API!<br />
<br />
Keep watching the next few days this blog! I bet at the end of the week I will be able to see some waveforms from my GUI.<br />
<br />
<br />The nerd inventorhttp://www.blogger.com/profile/04009822639998750941noreply@blogger.com0tag:blogger.com,1999:blog-7896614626744817957.post-42609459069658956402013-02-21T21:00:00.000+00:002013-02-21T21:00:01.320+00:00Oscilloscope assembly part2 + FPGA JTAG<div class="separator" style="clear: both; text-align: center;">
</div>
I have almost finished to assemble channel 1 of the oscilloscope.<br />
so far everything seems working!<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirCHCpq2PYspjI_-i3grTd1xTw7rsDR9YtNeSfGqQV0iOud_Ou4feayFhyphenhyphenU62OmKN1K-bWs_-MO7u98Iol8W901iuIMcChX391eNAIYAqhVyGUK1lHSmxJB_YMxjZX6fBmOCmyN6xnyK8F/s1600/DSCF0251.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirCHCpq2PYspjI_-i3grTd1xTw7rsDR9YtNeSfGqQV0iOud_Ou4feayFhyphenhyphenU62OmKN1K-bWs_-MO7u98Iol8W901iuIMcChX391eNAIYAqhVyGUK1lHSmxJB_YMxjZX6fBmOCmyN6xnyK8F/s400/DSCF0251.JPG" width="400" /></a></div>
<br />
I connected the Xilinx's USB programmer to the JTAG chain of the FPGA ad Impact sees the FPGA:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2cvfF1Ppi09W05_6VMGMC7utc2FgEMsjQeuquKyaJNJCaHiJaJkh_2bLxhBBin06QsHqDTpwXHigG9Syh2VTPPrA1bSHNnGBJRQp9w_dIPcCKpglV1g4SgIcZt4jP5kd1RZhKaSl94jSL/s1600/Impact.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="287" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2cvfF1Ppi09W05_6VMGMC7utc2FgEMsjQeuquKyaJNJCaHiJaJkh_2bLxhBBin06QsHqDTpwXHigG9Syh2VTPPrA1bSHNnGBJRQp9w_dIPcCKpglV1g4SgIcZt4jP5kd1RZhKaSl94jSL/s400/Impact.png" width="400" /></a></div>
That is a very good news! I can now program the FPGA and start doing basic testing like switch the AC DC relays...control the attenuation, gain, etc.<br />
I'm still waiting an op amp from RS which is supposed arrive tomorrow.<br />
if everything goes well, next weekend I should be able to start to test the input amp. stage!<br />
<br />The nerd inventorhttp://www.blogger.com/profile/04009822639998750941noreply@blogger.com0tag:blogger.com,1999:blog-7896614626744817957.post-68439557047403700522013-02-20T22:28:00.001+00:002013-02-20T22:28:03.661+00:00Start to build the Oscilloscope + FPGA block diagram<div class="separator" style="clear: both; text-align: justify;">
I started to build the oscilloscope. I tested the 3V analog, the 1.2V digital, the 3.3V digital. and they seems OK. I'm waiting some components, tomorrow I should be able to test the -5V and check the susceptibility on the 5V analog as well. Each amplification stage can be powered individually, so if there is a fault on the board it should be easily fixed. I believe in the next 2 days I should manage to assemble the board.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhqpF4p3RQBcJqQb00pkUGuQVkUXf5lhjQ7DAzIDGuVsclfwvg7RbulM1RFQSs7uqu1j3erqiySCq3fHw6IoJGG0JwCbx6cNvCDnijtCgiH8ZuqhQJg-r6U9ofe1NeYogw-n_JhMTTSHc5/s1600/DSCF0246.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhqpF4p3RQBcJqQb00pkUGuQVkUXf5lhjQ7DAzIDGuVsclfwvg7RbulM1RFQSs7uqu1j3erqiySCq3fHw6IoJGG0JwCbx6cNvCDnijtCgiH8ZuqhQJg-r6U9ofe1NeYogw-n_JhMTTSHc5/s320/DSCF0246.JPG" width="320" /></a></div>
<br /><div class="separator" style="clear: both; text-align: justify;">
It would be nice to be so proficient at work, unfortunately I'm tagged as "digital" designer and I can only do 30% of what I could...I get very frustrated for that... well... life is too short to get too upset I guess...</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<h3>
FPGA Block diagram</h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWgQf_1wqNvN2Fv3BdLoqEBqOmbwvEuXGlTFVpIDq1qkT533aZ1k5sahxChMArFXprYqdnPhHR7jkB8IkEswtFyc2TDuWIdWtx3GatgBVlxogFlMfEpZu6im-iIcgCj2PVLlnBbDu1eEFY/s1600/DSCF0247.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWgQf_1wqNvN2Fv3BdLoqEBqOmbwvEuXGlTFVpIDq1qkT533aZ1k5sahxChMArFXprYqdnPhHR7jkB8IkEswtFyc2TDuWIdWtx3GatgBVlxogFlMfEpZu6im-iIcgCj2PVLlnBbDu1eEFY/s400/DSCF0247.JPG" width="400" /></a></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
The above is the FPGA block diagram. The FPGA has got an UART to communicate externally with an FTDI chip or a wiznet. the RX_UART (uups I wrote TX_UART above) send the received data to the interpreter which decode the input and drive the trigger unit, the AC_DC relay or the attenuator.</div>
<div class="separator" style="clear: both; text-align: justify;">
on the TX side the trigger unit gets the CH1, CH2 data, and accordingly to the command received from the INTERPRETER trigger CH1 or CH2. data are then send to a module that I call TX_CPU, and finally sent to the UART_TX.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<br />The nerd inventorhttp://www.blogger.com/profile/04009822639998750941noreply@blogger.com0tag:blogger.com,1999:blog-7896614626744817957.post-41936894642272908712013-02-20T07:40:00.004+00:002013-02-20T07:41:43.855+00:00THE PCB has just arrived<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYt9ECk2SmfH2tJSSG-uwBZJ8fOFdE3iyx9wGVoiffPUJ1bsoN5zpLXsDcrYT14pM2ReNcVanZFVHRLlwzJ9e3uGLy9WDWogPPHpL_9jnZZ79eQekspB4Q1WGov4Yp6oZnWC3xGOlu5KjB/s1600/DSCF0244.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYt9ECk2SmfH2tJSSG-uwBZJ8fOFdE3iyx9wGVoiffPUJ1bsoN5zpLXsDcrYT14pM2ReNcVanZFVHRLlwzJ9e3uGLy9WDWogPPHpL_9jnZZ79eQekspB4Q1WGov4Yp6oZnWC3xGOlu5KjB/s400/DSCF0244.JPG" width="400" /></a></div>
<br />
The PCB has just arrived.<br />
I'm starting populating the PCB next week end. Tonight I want to finish to design the FPGA which is almost done.<br />
the PCB fits perfectly in the metallic box<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfxkBkPbnmBv2I_WVtij5bawbjPBn-Rp3O1gCzgU4l7z7MLbmvt-VA5cHnA0QE3UjsxBvZHeTQG1qsHsTlZkjk2TjgXbKWr0xf-n0ARRe2-k51KjtQ55vWAQXnaEPyCvZvtS9h-Sygoyk9/s1600/DSCF0245.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfxkBkPbnmBv2I_WVtij5bawbjPBn-Rp3O1gCzgU4l7z7MLbmvt-VA5cHnA0QE3UjsxBvZHeTQG1qsHsTlZkjk2TjgXbKWr0xf-n0ARRe2-k51KjtQ55vWAQXnaEPyCvZvtS9h-Sygoyk9/s400/DSCF0245.JPG" width="400" /></a></div>
<br />
The box also looks quite pretty.<br />
<br />
<br />The nerd inventorhttp://www.blogger.com/profile/04009822639998750941noreply@blogger.com0tag:blogger.com,1999:blog-7896614626744817957.post-16173061697844527032013-02-18T19:06:00.001+00:002013-02-18T19:06:13.710+00:00FPGA for the Digital Oscilloscope<br />
<div>
<h3>
FPGA</h3>
</div>
<div>
The oscilloscope has a Xilinx FPGA Spartan-3AN-50-TQ144. I have chose this FPGA for 2 reasons:</div>
<div>
<ol>
<li> it doesn't need an external Flash memory, making therefore the assembly slightly easy.</li>
<li>the package</li>
</ol>
<div>
the negative side of the FPGA are:</div>
</div>
<div>
<ol>
<li>quite small ( I can't ecpect complex triggering functionality)</li>
<li>I can have only 2Kbyte of buffer for each channel. t</li>
</ol>
<div>
As I have designed FPGA for most of my career I believe I can manage to get the best from this small device. I'm using ISE Webpack 13.4. And I've just designed the UART to communicate with an FTDI chip.</div>
</div>
<div>
Follow a list of register to communicate with the FPGA:</div>
<div>
<br /></div>
<div>
<table border="0" cellspacing="0" cols="11" frame="VOID" rules="NONE"><colgroup><col width="86"></col><col width="134"></col><col width="86"></col><col width="41"></col><col width="27"></col><col width="35"></col><col width="14"></col><col width="39"></col><col width="66"></col><col width="65"></col><col width="57"></col></colgroup><tbody>
<tr><td align="CENTER" bgcolor="#CCCCCC" height="17" style="border: 1px solid rgb(0, 0, 0);" width="86"><b>ADDRESS</b></td><td align="CENTER" bgcolor="#CCCCCC" style="border: 1px solid rgb(0, 0, 0);" width="134"><b>REG NAME</b></td><td align="CENTER" bgcolor="#CCCCCC" style="border: 1px solid rgb(0, 0, 0);" width="86"><b>R/W</b></td><td align="CENTER" bgcolor="#CCCCCC" style="border: 1px solid rgb(0, 0, 0);" width="41"><b>D7</b></td><td align="CENTER" bgcolor="#CCCCCC" style="border: 1px solid rgb(0, 0, 0);" width="27"><b>D6</b></td><td align="CENTER" bgcolor="#CCCCCC" style="border: 1px solid rgb(0, 0, 0);" width="35"><b>D5</b></td><td align="CENTER" bgcolor="#CCCCCC" style="border: 1px solid rgb(0, 0, 0);" width="14"><b>D4</b></td><td align="CENTER" bgcolor="#CCCCCC" style="border: 1px solid rgb(0, 0, 0);" width="39"><b>D3</b></td><td align="CENTER" bgcolor="#CCCCCC" style="border: 1px solid rgb(0, 0, 0);" width="66"><b>D2</b></td><td align="CENTER" bgcolor="#CCCCCC" style="border: 1px solid rgb(0, 0, 0);" width="65"><b>D1</b></td><td align="CENTER" bgcolor="#CCCCCC" style="border: 1px solid rgb(0, 0, 0);" width="57"><b>D0</b></td></tr>
<tr><td align="CENTER" height="17" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td></tr>
<tr><td align="CENTER" bgcolor="#E6E6FF" height="17" sdnum="2057;" sdval="0" style="border: 1px solid rgb(0, 0, 0);">0</td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);">ID_PRODUCT</td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);">R</td><td align="CENTER" bgcolor="#E6E6FF" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px;"><br /></td><td align="CENTER" bgcolor="#E6E6FF" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px;"><br /></td><td align="CENTER" bgcolor="#E6E6FF" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px;">ID_PRODUCT</td><td align="CENTER" bgcolor="#E6E6FF" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px;"><br /></td><td align="CENTER" bgcolor="#E6E6FF" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px;"><br /></td><td align="CENTER" bgcolor="#E6E6FF" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px;"><br /></td><td align="CENTER" bgcolor="#E6E6FF" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px;"><br /></td><td align="CENTER" bgcolor="#E6E6FF" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px;"><br /></td></tr>
<tr><td align="CENTER" height="17" sdnum="2057;" sdval="1" style="border: 1px solid rgb(0, 0, 0);">1</td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);">REV.</td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);">R</td><td align="CENTER" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px;"><br /></td><td align="CENTER" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px;"><br /></td><td align="CENTER" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px;">REVISION</td><td align="LEFT" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px;"><br /></td><td align="LEFT" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px;"><br /></td><td align="LEFT" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px;"><br /></td><td align="LEFT" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px;"><br /></td><td align="LEFT" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px;"><br /></td></tr>
<tr><td align="CENTER" bgcolor="#E6E6FF" height="17" sdnum="2057;" sdval="2" style="border: 1px solid rgb(0, 0, 0);">2</td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);">CHAN_SEL</td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);">W</td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="LEFT" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);">CH4</td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);">CH3</td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);">CH2</td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);">CH1</td></tr>
<tr><td align="CENTER" height="17" sdnum="2057;" sdval="3" style="border: 1px solid rgb(0, 0, 0);">3</td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);">AC_DC</td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);">W</td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="LEFT" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);">AC/DC</td></tr>
<tr><td align="CENTER" bgcolor="#E6E6FF" height="17" sdnum="2057;" sdval="4" style="border: 1px solid rgb(0, 0, 0);">4</td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);">ATTN</td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);">W</td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="LEFT" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);">ATTN2</td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);">ATTN1</td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);">ATTN0</td></tr>
<tr><td align="CENTER" height="17" sdnum="2057;" sdval="5" style="border: 1px solid rgb(0, 0, 0);">5</td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);">TRIG_ARM</td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);">W</td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="LEFT" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);">FORCE</td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);">NORM</td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);">AUTO</td></tr>
<tr><td align="CENTER" bgcolor="#E6E6FF" height="17" sdnum="2057;" sdval="6" style="border: 1px solid rgb(0, 0, 0);">6</td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);">TRIG_TYPE</td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);">W</td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="LEFT" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);">FALLING</td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);">RISING</td></tr>
<tr><td align="CENTER" height="17" sdnum="2057;" sdval="7" style="border: 1px solid rgb(0, 0, 0);">7</td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);">TRIG_AMPLITUDE</td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);">W</td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td></tr>
<tr><td align="CENTER" bgcolor="#E6E6FF" height="17" sdnum="2057;" sdval="8" style="border: 1px solid rgb(0, 0, 0);">8</td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);">TRIG_OPTION</td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);">W</td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" bgcolor="#E6E6FF" style="border: 1px solid rgb(0, 0, 0);"><br /></td></tr>
<tr><td align="CENTER" height="17" sdnum="2057;" sdval="9" style="border: 1px solid rgb(0, 0, 0);">9</td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);">DATA_READY</td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);">R</td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="CENTER" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="LEFT" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="LEFT" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="LEFT" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="LEFT" style="border: 1px solid rgb(0, 0, 0);"><br /></td><td align="LEFT" style="border: 1px solid rgb(0, 0, 0);"><br /></td></tr>
</tbody></table>
</div>
<div>
<br /></div>
<div>
</div>
<div>
On the next post I will show the Oscilloscope block diagram.</div>
The nerd inventorhttp://www.blogger.com/profile/04009822639998750941noreply@blogger.com0tag:blogger.com,1999:blog-7896614626744817957.post-70473514063063570912013-02-16T21:09:00.002+00:002013-02-18T19:05:45.590+00:00<h2>
Yet Another Digital Oscilloscope</h2>
<div>
I discovered to love electronics from at the age of 12 when I started read my daddy's book "how to build your own radio". </div>
<div>
After that book I read another one and then another and another and so on...Today I'm one of the few lucky guys that get payed for something that would probably do for free. I design electronics ... but unfortunately at work I don't decide what to design... so one day I said..."why don't start to design something for fun?"</div>
<div>
<b>What about an Oscilloscope?</b></div>
<div>
<b><br /></b></div>
<div>
Designing a good oscilloscope is challenging...this will be my first real attempt to do it. As I am aware of the challenge I decided to design a low specs. If the experiment will be successful I will design an higher specs in the future.<br />
<br />
Let's start with some basic specifications:<br />
<br />
<ol>
<li>Analog Bandwidth, DC- 60 MHz with 1% max ripple or better</li>
<li> +-20V max input signal</li>
<li>USB/Ethernet connected</li>
<li> trigger AUTO, NORMAL, (rising, falling)</li>
<li>4 Kbyte buffer</li>
<li>2 channels</li>
</ol>
<div>
<br /></div>
<h3>
A few months later...</h3>
<div>
YES the PCB is done! I have used DesignSpark from RS. I think is probably the best free CAD around.</div>
<div>
<br /></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVRZXfhKxkdPUaOUhqSl_JHBeqED8Xg1hckodShBGsOn_SgidbKSDXsw1SLAFKueHvTB9uT_nEmRc1XlNxATPPBH25NyJu4ChMUfZm7179awG0xUx4vG30x3xj0O9IC0bEPBneYfFO3xta/s1600/OSC_PCB.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="313" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVRZXfhKxkdPUaOUhqSl_JHBeqED8Xg1hckodShBGsOn_SgidbKSDXsw1SLAFKueHvTB9uT_nEmRc1XlNxATPPBH25NyJu4ChMUfZm7179awG0xUx4vG30x3xj0O9IC0bEPBneYfFO3xta/s640/OSC_PCB.png" width="640" /></a></div>
<div>
<br /></div>
<div>
I have placed the order on <a href="http://www.pcbtrain.co.uk/">www.pcbtrain.co.uk</a> I have used them in the past and I think they are quite good!<br />
The PCB costed me around 115£ for one in 15 working day...<br />
While waiting the PCB coming I started designing the GUI interface.<br />
What tool to use? I wanted the GUI to work on Windows and Linux...<br />
I have found <b>Lazarus</b> from <a href="http://www.lazarus.freepascal.org/">http://www.lazarus.freepascal.org/</a> if you have used Delphi in the past you shouldn't found any problem using it. it looks like the old interface of Delphi.<br />
<br />
After 2 weeks of work mostly in the weekend and in the evening after work I managed to have that:<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguRXsVJQdwRPhUULseb8TQQ-Kwo5akXwHJDA8hMXJ4ZnFR0PmiddUp0bnc6eXmgidJ5jts7r6Z9fJKPkKOKJ4xUBQz_cWeIQKK_XEEGBPCzhVEiN43jER1TUJTHoYGAA4UloxK2v0qwDy-/s1600/DSO.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="448" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguRXsVJQdwRPhUULseb8TQQ-Kwo5akXwHJDA8hMXJ4ZnFR0PmiddUp0bnc6eXmgidJ5jts7r6Z9fJKPkKOKJ4xUBQz_cWeIQKK_XEEGBPCzhVEiN43jER1TUJTHoYGAA4UloxK2v0qwDy-/s640/DSO.png" width="640" /></a></div>
<br />
Not too bad... for a home project...<br />
In the next blogs I will explain more in details the project....<br />
<br />
<h3>
<br /></h3>
</div>
<div>
<br /></div>
<div>
<br /></div>
</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
The nerd inventorhttp://www.blogger.com/profile/04009822639998750941noreply@blogger.com0