Tutorial on Waveform Shaping and Signal Constellation in an Optical Link

3D Constellation

In this episode Shahriar uses a few components to beyond what there were originally intended for in order to setup an optical link! By using a BlinkM RGB LED, a Color Sensor, and two PIC USB Boards from Sparkfun Electronics, a stand-alone optical link is established. Various theories of operation, including multilevel data transmission, signal constellation and detailed circuit diagrams are also presented. The final result is an 8-PAM, 3-Wavelength optical link with a colorful three-dimensional constellation graph. The code for the transmitter IC, receiver IC and Matlab functions are available to download from here.



  1. Justin says:

    Your time and effort is very much appreciated. I very much enjoyed this (and other) episode with clear and concise discussion as always. Please feel free to go into more detail anytime.

    A discussion on the matlab interface would be very welcome. I think it is time I looked into matlab.

    Again I very much appreciate the effort.

    Thank you.

  2. S Wood says:

    Thanks for the video and tutorial. I liked it!
    Is there a schematic for the signal conditioning portion of the circuit, after the signal is received by the photodetector?
    I’d like to know the specific inverter and RC filters used and why. I could do with a bit more of the theory for that portion of the experiment but if you could provide a schematic, I’ll try to take it from there.


  3. Dick says:

    If some one wants expert view on the topic of running a blog after that i propose him/her to go to
    see this blog, Keep up the nice job.

    my site dispose

  4. Kenny says:

    Thank you a lot for sharing this with all folks you really understand what you’re speaking approximately!

    Bookmarked. Kindly also visit my web site =).
    We could have a link exchange agreement among us

    Also visit my web blog – bessacarr motorhomes for sale

  5. nvr says:

    Please mail me the data sheet of your experiment at nikrodnvr@gmail.com

    Thank you.

  6. melbon says:

    can you please mail me the datasheet of this experiment because i m implementing this experiment in my college.

  7. Samantha says:

    Hey would you mind letting me know which webhost you’re working with?
    I’ve loaded your blog in 3 different web browsers and I must say this blog loads a lot faster then most.

    Can you recommend a good hosting provider at a reasonable price?
    Thank you, I appreciate it!

    Check out my site :: Clash of Clans Cheats (http://www.youtube.com/watch?v=JjqmdwjH2H8)

  8. Orlando says:

    Thanks for finally writing about > The Signal Path

  9. Lazaro Gandarillia says:

    You made some decent factors there. I regarded on the web for the issue and located most people will go along with with your website.

  10. faheem says:

    Really great stuff / approach / effort from theory to experimentation…..want to join your lab. great videos anyways !!! please keep it up.

  11. Proto Subcortex says:

    Your site and videos rock man.

    ‘Nuff said.

  12. Evert says:

    Nice video.
    Shows simple the concept of multicolor fibers.
    Thanks for sharing.

  13. Roger says:

    I realize you’re not optimizing the channel here, just doing an excellent job of demonstrating concepts. However, since you asked for suggestions, here you go:

    You would be able to bypass the slow RC filter section by feeding each PWM channel into an Input Capture peripheral on the PIC. This will make it different looking on the scope, but much faster symbol rate with higher resolution symbols. Another PIC peripheral you might leverage is the Change Notification interrupt and roll your own capture timer (since the 4550 has limited input capture pins). You would greatly reduce noise induced by the intermediate RC filter allowing you to have higher resolution (maybe not the full 8 bits, but close). Your symbol rate would probably be at least an 3 orders of magnitude faster. In theory you only need one period of the color PWM to capture the timing. So symbol rate could be on the order of the LED PWM. If you choose another PIC with 3 input capture pins, this function becomes much easier.

    Another concept you could explore (if you haven’t already) is the method of standard asynchronous bit timing in a UART. Essentially, in the above example you show a simple “start” bit function by zeroing the colors. If you implement a more standard UART type timing, you could send the equivalent “byte” of data with 1 “start” symbol, 8 “data” symbols, 1 “parity” symbol, and one “stop” symbol. Each “byte” would then consist of a total of 8×8=64 bits of data, 1 parity bit for each 8 bit symbol, and an additional parity symbol for the “byte”. Using these parity bits you could explore the idea of data integrity and/or recovery.

    Another concept to explore could be synchronous bit timing. You could demonstrate the power of the symbols and synchronous timing by using one color as a “control” or “clock” symbol. This might allow for another big speed increase. The cost is 1/3 of your symbols, but your symbol rate may be able to increase to more than compensate.

    Great video, by the way. I appreciate what you do!


  14. […] the code for the transmitter IC, receiver IC and Matlab functions please visit the link below!  http://thesignalpath.com/blogs/2012/06/04/tutorial-on-waveform-shaping-and-signal-constellation-i… Home⁄ blinkm⁄ BlinkM in a Waveform Shaping […]

  15. diloo says:

    Thank you for a great experiment! You Sir are an inspiration!

  16. cJones says:

    Love your videos, thanks for taking the time. I think it is great when you go into more detail on the theory but I understand that doesn’t interest everyone. I’ll enjoy going over the documents to fill in some so thanks for making everything available.

  17. […] current setup, it will transmit 9-bits per second (8-bits of data and 1-bit for a check sum). Check it out here. Share […]

  18. […] applications, fiber optic cable transmits data using one color of light. There’s a way to get more bandwidth out of a fiber optic cable, as [Shahriar] found out while experimenting with an RGB […]

  19. Chris says:

    Superb experimental work and very clearly explained. Very interesting! Thank you for taking the time you obviously spent in putting together this fascinating tutorial and then publishing it. It’s left me buzzing with ideas. I wish I had you as a lecturer at university when I did my electronics degree some (errr) very long time ago! :-)

  20. Vinod Cherian says:

    Have you tried to control the BlinkM through it’s I2C interface directly from MATLAB?

    See this for more info: http://www.mathworks.com/help/toolbox/instrument/i2c.html

  21. […] applications, fiber optic cable transmits data using one color of light. There’s a way to get more bandwidth out of a fiber optic cable, as [Shahriar] found out while experimenting with an RGB […]

  22. […] applications, fiber optic cable transmits data using one color of light. There’s a way to get more bandwidth out of a fiber optic cable, as [Shahriar] found out while experimenting with an RGB […]

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>