Dear all, How do you guys reduce the gap between what you study at school in theoretical classes and real world implementation? For the most part what I learn in books doesn't give me enough intuition to convert it into an implementation. For example, for the past few days I have been learning about PLLs and although I understand all the math and the logic behind it, I find it difficult to convert it into a software module. I know I can find tonnes of solutions or codes online but what I am trying to tell here is how does one approach a theoretical problem and convert it into a practical implementation. Thanks, Mir
Theroretical study at schools vs real world implementation - how did you guys do it?
Started by ●February 1, 2011
Reply by ●February 1, 20112011-02-01
On 02/01/2011 12:59 PM, mir_aculous wrote:> Dear all, > How do you guys reduce the gap between what you study at school in > theoretical classes and real world implementation? For the most part what I > learn in books doesn't give me enough intuition to convert it into an > implementation. > > For example, for the past few days I have been learning about PLLs and > although I understand all the math and the logic behind it, I find it > difficult to convert it into a software module. I know I can find tonnes of > solutions or codes online but what I am trying to tell here is how does one > approach a theoretical problem and convert it into a practical > implementation.Take what you've learned in school on the one hand, and take a few of those solutions you've found on the other. Use what you've learned in school to analyze the behavior of the solutions you've found. Ask yourself why the author didn't do what you expected (the three most common possibilities are that he was taught in a different school, he knows the requirements are loose and he's saving money or time, or he's smarter than you are -- you don't know which one of those it is). There is a skill there. I learned design before I went to college -- I was essentially working as an apprentice mold maker at my dad's shop, I was flying model airplanes of my own design, and I was building and modifying small computers, back when you could still wrap your brain around a whole project with a course in high-school electronics and a few data books. I'm not sure what to tell _you_ to do to learn design, other than you have to get off your butt and _do_ it, and don't get too discouraged by the inevitable failures. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com Do you need to implement control loops in software? "Applied Control Theory for Embedded Systems" was written for you. See details at http://www.wescottdesign.com/actfes/actfes.html
Reply by ●February 1, 20112011-02-01
On 2/1/2011 12:59 PM, mir_aculous wrote:> Dear all, > How do you guys reduce the gap between what you study at school in > theoretical classes and real world implementation? For the most part what I > learn in books doesn't give me enough intuition to convert it into an > implementation. > > For example, for the past few days I have been learning about PLLs and > although I understand all the math and the logic behind it, I find it > difficult to convert it into a software module. I know I can find tonnes of > solutions or codes online but what I am trying to tell here is how does one > approach a theoretical problem and convert it into a practical > implementation. > > Thanks, > MirI hope I can help .... First, just a little terminilogy stuff: - I'd rather not call it a "theoretical problem" but rather a "theoretical treatment". - That's to differentiate between a theoretical treatment and a real-world "problem" or "objective" or "project". It's good to have the theoretical background because it very often helps to part of the real-world project. What always seemed to work for me was to be working in something or another in the real world. Then, as I gained theoretical knowledge, real problems would present themselves and I'd have an idea how to use theory to address part of the problem. I almost said that "theory doesn't help with implementation" but that's not correct either. In fact, the whole motivation in applying some theoretical treatment was to help in one way or another in implementation or solution..... Here's an example: I needed a tape drive with very low wow and flutter. We had a design using a DC motor drive that worked OK but needed better speed control. So we looked at controlling the motor speed (position really) by phase-locking to a 1000-line tachometer wheel on the motor shaft - with a stable oscillator as a reference. The real implementers never did "get it" that the reference had to be a stable oscillator - but that's another story. Another: I needed to design a "better" control system - starting with a system with bang-bang controls; that is full drive in one direction OR full drive in the other direction. I figured that a stable control system based on ON-OFF-ON would use less power and generate less noise. Upon investigation I learned that "Describing Functions" / analysis might be the ticket. It was. There was a huge improvement. But maybe your objective is to create a demonstration project that's centered on some theoretical treatment? Theory aside, I can't imagine a PLL that isn't part of a "physical system". And, by this, I mean a real-world system not a theoretical abstraction of one. So, for a real world implementation one is going to have to deal with things like bandwidths, sample rates, update rates, etc. that are all consistent. Software doesn't do that for you. Maybe Tim's book would be a good starting point. What are you trying to control with the PLL? Fred
Reply by ●February 1, 20112011-02-01
On Feb 1, 3:59�pm, "mir_aculous" <gnu.fanz@n_o_s_p_a_m.gmail.com> wrote:> Dear all, > How do you guys reduce the gap between what you study at school in > theoretical classes and real world implementation? For the most part what I > learn in books doesn't give me enough intuition to convert it into an > implementation. > > For example, for the past few days I have been learning about PLLs and > although I understand all the math and the logic behind it, I find it > difficult to convert it into a software module. I know I can find tonnes of > solutions or codes online but what I am trying to tell here is how does one > approach a theoretical problem and convert it into a practical > implementation. > > Thanks, > MirThis is a classic : "If I have to explain it to you you probably won't get it and if you get it I wouldn't have to explain it" However, I suspect you get it. Just get in there and do what you can and don't worry about not getting it right for many tries. A guy once told me that when you get something to work on the first pass often you were denied the opportunity to learn anything new. Don't feel like you need to impress people with getting it right the first time. But be tenacious about getting it right before you say to yourself that you got it right.
Reply by ●February 1, 20112011-02-01
Thanks guys. That is encouraging and you are right. Once, as a student worker my boss asked me to reduce the noise in an acoustic signals that he recorded in an experiment and the first thing that came to my mind was filters that I studied a few weeks ago in the class. I referred to the text that was prescribed in my course and soon I was able to do it. Soon, the concept of filters was clear to me once I did some real work with what I learned in the classroom. Fred, I am trying to wrap my head around PLLs as I want to design a code control loop for a spread spectrum system. I referred to Ziemer & Peterson's book on Spread Spectrum Communication and there is a whole chapter that discusses these loops. On my professor's advice I used a channel model in MATLAB to simulate clock error with zero frequency offset. Now, I want to correct the clock using this Early-Prompt-Late correlation method.
Reply by ●February 2, 20112011-02-02
On Feb 1, 3:59�pm, "mir_aculous" <gnu.fanz@n_o_s_p_a_m.gmail.com> wrote:> Dear all, > How do you guys reduce the gap between what you study at school in > theoretical classes and real world implementation? For the most part what I > learn in books doesn't give me enough intuition to convert it into an > implementation. > > For example, for the past few days I have been learning about PLLs and > although I understand all the math and the logic behind it, I find it > difficult to convert it into a software module. I know I can find tonnes of > solutions or codes online but what I am trying to tell here is how does one > approach a theoretical problem and convert it into a practical > implementation. > > Thanks, > MirGrad School, then trial by fire. Dirk
Reply by ●February 2, 20112011-02-02
On Feb 1, 9:59�pm, "mir_aculous" <gnu.fanz@n_o_s_p_a_m.gmail.com> wrote:> Dear all, > How do you guys reduce the gap between what you study at school in > theoretical classes and real world implementation? For the most part what I > learn in books doesn't give me enough intuition to convert it into an > implementation.I got interested in data analysis in my first summer vacancy, before I started 'engineering college'. As I was already interested, I chose programs and classes that seemed to aid my understanding. When I got to the point that I started playing with algorithms, I made a point of implementing the textbook stuff first, verify that it worked, and then see what it took to make the algorithm break down. To get started, I would suggest something like this: 1) All algorithms are based on assumptions about the data they are supposed to work with. Find out what those assumptions are. 2) Find out how to *simulate* a data set that complies with the assumtions you found under 1) 3) Find out what parameters of interest the algorithm is supposed to extract from the data. 4) Simulate a data set with *known* parameters of interest. Since you simulate the data *and* know what info the algorithm is supposed to extract from the data, you also know what numbers the algorithm is supposed to report at the end. 5) Implement your algorithm and verify that it works as expected - that it actualy is able to extract the desired, known (because you simulated the data) info from the data set. 6) Now simulate data that violate the assumtions you stated under 1) and see how the algorithm copes. If it breaks down, try and figure out why. 7) Once you understand why violating any particular assumption makes the algorithm break down, figure out a way to make it more robust. This could either be to change the algorithm, or it could be to measure the data more carefully, to avoid destructive effects. Mind you, this is hard work. There could be any number of reasons why the assumptions are violated, ranging from sensitivity to numerical round-off errors, to more subtle nonlinear interactions internal to the algorithm, or plain sensor imperfections ranging from cross-talk and other noise, to nonlinearities internal to the measuring device. Rune
Reply by ●February 2, 20112011-02-02
On 2011/02/01 12:59, mir_aculous wrote:> How do you guys reduce the gap between what you study at school in > theoretical classes and real world implementation? For the most part what I > learn in books doesn't give me enough intuition to convert it into an > implementation. > > For example, for the past few days I have been learning about PLLs and > although I understand all the math and the logic behind it, I find it > difficult to convert it into a software module. I know I can find tonnes of > solutions or codes online but what I am trying to tell here is how does one > approach a theoretical problem and convert it into a practical > implementation.What you need is to learn more about the industry. In the old days, you would grab data books and read about particular chips, and the better companies would have Application Notes. These days, PDF files have replaced the printed books, and things move a lot faster. One place to start is with the manufacturers. Key players in the industry are the likes of Texas Instruments, Analog Devices, Maxim, Microchip, ST Microelectronics, Fairchild, Linear, and National. You may find a slightly different list for your chosen specialty. At least half of the manufacturers I've listed probably offer PLL chips. The individual data sheets for each PLL chip should have a description of how their specific chips works (unless it's a completely generic standard), usually along with an example circuit show a particular use. Beyond the data sheet, data books will also have Application Notes that are not specific to one particular chip, but rather focus on a more real-world example. These days, the Application Notes are available in separate PDF files. You can search the manufacturer site, or search Google. I tend to find that it's easier to learn your way around a particular manufacturer's site, instead of following a lot of dead ends on Google or other search engine aggregates. Another place to learn is by actually looking at the circuit boards for products in the industry. If your PPL application is related to radio demodulation, then you might look inside various radio circuits to see which company's chips are popular in the industry. Caveat emptor: Please do not electrocute yourself taking things apart - I cannot be responsible for voided warranties or health. Between seeing what is already in use in the industry, plus staying on top of what is new from each chip manufacturer, you will gain more comfort in designing real world solutions. I find that the manufacturer's mailing lists are handy to keep up with new chips as the come out, although sometimes your product time line has to take into account whether some new chip will actually be ready by the time you need to build. If you're not comfortable taking things apart (and even if you are), the various manufacturers also give away sample chips and sell evaluation boards. The latter allow you to put your hands on an actual circuit that uses the technology you want to learn, and some can be modified to add your design specifics. Finally, as everyone else has been saying, the number one rule is to not be afraid to get started, make some mistakes, and learn from the process. Brian Willoughby Sound Consulting
Reply by ●February 3, 20112011-02-03
>On 2011/02/01 12:59, mir_aculous wrote: >> How do you guys reduce the gap between what you study at school in >> theoretical classes and real world implementation? For the most partwhat I>> learn in books doesn't give me enough intuition to convert it into an >> implementation. >> >> For example, for the past few days I have been learning about PLLs and >> although I understand all the math and the logic behind it, I find it >> difficult to convert it into a software module. I know I can find tonnesof>> solutions or codes online but what I am trying to tell here is how doesone>> approach a theoretical problem and convert it into a practical >> implementation. > >What you need is to learn more about the industry. In the old days, you >would grab data books and read about particular chips, and the better >companies would have Application Notes. These days, PDF files have >replaced the printed books, and things move a lot faster. > >One place to start is with the manufacturers. Key players in the >industry are the likes of Texas Instruments, Analog Devices, Maxim, >Microchip, ST Microelectronics, Fairchild, Linear, and National. You >may find a slightly different list for your chosen specialty. At least >half of the manufacturers I've listed probably offer PLL chips. The >individual data sheets for each PLL chip should have a description of >how their specific chips works (unless it's a completely generic >standard), usually along with an example circuit show a particular use. > Beyond the data sheet, data books will also have Application Notes >that are not specific to one particular chip, but rather focus on a more >real-world example. These days, the Application Notes are available in >separate PDF files.I can't believe how I missed the treasure trove called "Application Notes" until today. Thanks to you all and Jerry (for some reason his posts appear separate threads) I googled "Application Notes PLL" and found one for 74HC4046 and it has cleared a lot of questions. I might even order some so that I can make my own little PLL in the lab. A little work on hardware will definitely help me in writing a software PLL. See this is why we need an education system which focuses on practical implementations more often than having to write hours and hours of assignments and tests. We can learn more from data sheets than from the handout the Professors give out these days. In my university I have seen students preparing from these handouts solely and kicking their textbooks aside in order to get a passing grade. Wonder how many good engineers can come out from my university. Thanks guys, this is a great place to learn. You guys should think about passing on your knowledge to noobs like me. Take up blogging where you can write articles on introductory engineering topics. :) Most often I think engineering students think that this forum is for professionals working in the industry which is not true. This is a great place. Have a wonderful day. Mir
Reply by ●February 3, 20112011-02-03
On Thu, 03 Feb 2011 00:48:30 -0600, mir_aculous wrote:> I can't believe how I missed the treasure trove called "Application > Notes" until today. Thanks to you all and Jerry (for some reason his > posts appear separate threads) I googled "Application Notes PLL" and > found one for 74HC4046 and it has cleared a lot of questions. I might > even order some so that I can make my own little PLL in the lab. A > little work on hardware will definitely help me in writing a software > PLL.One of the tricks about app notes is understanding that they are written by people who are trying to sell their products (4046 chips in this case) and that they must be taken with a grain of salt. For example, one shouldn't ever use a '4046 in a new PLL design(*), but the '4046 app note won't give any indication of that. (*) I say that because there are (almost) pin compatible parts that can avoid some of its flaws and allow lower noise performance at similar cost and circuit complexity. There are also much newer parts that can have much better performance again. The '4046 is popular because it has been around a long time and has lots of app notes and design guides readily available. Regards, Allan






