elizabethsimon

image
engineer

Biography has not been added

elizabethsimon

's contributions
Articles
Comments
    • Good questions. It will be really interesting to see how they handle the two cores, especially for debugging. It's hard enough debugging one CPU at a time. I hope they've given enough thought to the tools for this.

    • If you're thinking about an Arduino based board, what about the Digispark board http://digistump.com/products/1 they also have an LED breakout http://digistump.com/products/118. Package the two of them together and you have a nice compact module... I also think that instead of wiring all the neurons together with stiff wire to provide the internal structure, it might be interesting to have the neurons surrounded by (or encased in) clear or translucent balls (or similar) and using thin wire for the connections.

    • If you're thinking about an Arduino based board, what about the Digispark board http://digistump.com/products/1 they also have an LED breakout http://digistump.com/products/118. Package the two of them together and you have a nice compact module... I also think that instead of wiring all the neurons together with stiff wire to provide the internal structure, it might be interesting to have the neurons surrounded by (or encased in) clear or translucent balls (or similar) and using thin wire for the connections.

    • Nothing on the roadmap to cover 15V input??? Where I work, we have an internally developed supply that delivers 15V to our boards... Also, those of us who power things off car batteries would be more interested if you had something that would work from say 10 to 16V

    • Whenever possible, I'll have a board review with the engineers and PCB layout to go over the board. The main things we check for are layout of Switching supplies, inadvertent "slots" in ground and power planes due to via placement, traces that meander around the board etc. I also prefer to do a signal integrity check using HyperLynx for any high speed signals on the board layout. Better to find that you need a series resistor before you build the board.

    • But as the USC/L.A. Times poll showed (since it was closer than any other major poll to being right) the correct weighting of the data is key to getting an accurate result. According to the article below, if you take their data and use the same weighting that everyone else uses, you get very similar results to what everyone else did. http://www.latimes.com/politics/la-na-pol-usc-latimes-poll-20161108-story.html So where the data comes from isn't as important as what you do with it.

    • The rural vs urban divide has been known about since at least 2000 so it should be taken into account by now. There may also be a divide between younger and older although that's much less pronounced. Those most active on social networks tend to be younger and more urban than the average voting population. To get a real picture you need metadata on age as well as location. Even then you miss people like me whose idea of participating in social media is posting on embedded.com

    • We have a database that includes ALL parts (including revision info) that are in the products we build. This database is somehow linked into Mentor Graphics so when we create a schematic we use parts from the database. The resulting schematic / PCB / assemblies are also linked back into the database. This master parts database is used to create BOMs for manufacturing. Since it's a custom database, we can handle revisions however we want :) The database also has history so we can go back and see what changed when.

    • We have the same issue where I work. The way we handled it is by introducing the concept of "schematic" or "board" variants. We're using Mentor Graphics tools that support this philosophy so I'm not sure how to implement it with other tools. The idea is this: Say you have a schematic W1234 that is used with component variations on several products. In the scheme we use, you would have the "master" schematic that is used to generate the netlist etc for the PCB which in our example would be W1234A (where the character at the end is the PCB rev). If you want to use the PCB on a product you create a variant with the correct component values which would be W1234-1A where you just increment the dash number for each variant. If you need to change the variant without changing the PCB rev, the variant becomes W1234-1A1. In our system, if you change the PCB rev, the master schematic and ALL variants move to the next rev letter. It's not a perfect system but works well enough for us. You really need to have support for something like this in your tools though. And it really helps to have people who really know how to use the tools....

    • For File naming, I usually use the big-endian format preferred by Max although I've found that I'm not always consistent. Fortunately I don't have as many files as Max does to keep track of. For dates within documents I usually use dd MMM yyyy. That is the preferred format for dating official test documents at work. It also happens to be the preferred format for recording date information for a Ham radio contact.

    • Thanks Jack for the many columns and articles that have enriched my life over the years. I always looked forward to hearing your practical advice. Best of luck, smooth sailing and may the wind always be at your back.

    • Office 365 for "free" sounds like a good deal except that about once a week Word does something (or doesn't do something) that causes great gnashing of teeth. I've been using it for over a year and am still annoyed by some of the changes from the previous version. I'm using LibreOffice at home which has it's own quirks but at least they're different quirks and I don't have to pay for them. LOL

    • Obviously you're not having enough good ideas...

    • Of course, the best ideas occur when you have all green lights for the remainder of your trip. LOL

    • I think it's not so much that they are smarter. It's just that they have devoted a lot of time to figuring these things out. The way I look at it, it takes folk like us to turn this stuff into real products. As much fun as it would be to work on some cutting edge technology like this, my career has been more in the realm of reliable systems which tends to put me a bit behind the edge.

    • In my experience, household projects / repairs require an average three trips to a hardware store.... While I can (and do) fix most smaller problems, I've learned when to call someone more experienced with better tools to do something.

    • Back when I was doing a lot of sailing, I remember reading about a self steering lashup for a tiller-steered boat where you used bungee cords to balance the tiller against the force from the sheets attached to the sail. Not nearly as good as what you described but easy enough to put together in an emergency.

    • I'm a year older than you and I haven't given up "middle age" completely. I wouldn't have given it up at all were it not for the phrase "senior discount" LOL

    • I have an intense dislike for loud noises early in the morning so I was thinking about making an alarm that gradually increases the LED brightness to cause me to think that the sun was coming up. My current "alarm" is a lamp on a timer...

    • This is something that causes one to say "Oh Shiny!" and have it be the literal truth. This does look like a very nice setup. Much less expensive and looks like its easier to use than the setup I have. At that price I'm tempted. I managed to find the creator's website but was unable to find any documentation so it appears to be well hidden. I wanted to find out what the computer / software requirements are for the USB camera. This seems like something that should be noted up front but if it's there I missed it. Which, of course, gets us back to your other blog on documentation...

    • Recently, I was on a team that was working to bring up a board with a programmable power sequencer IC. We had used the manufacturers PC software to generate a program but couldn't get it on the chip without the custom script that someone in our company wrote. It seems that whoever wrote their PC software failed dot anticipate that we might want to use it on something other than their eval board.... And you guessed it, the documentation to that effect was entirely lacking. We also discovered (the hard way) that the reset pin on the chip had to be connected to the JTAG header and not just pulled up so that you could reprogram it when you accidentally got the IC into a continuous loop where it detected an error and restarted. Another bit of angst that could have been avoided with proper documentation. And that was one part on one board... Fortunately, the FPGA documentation was more complete (the problem there was remembering which user guide had that bit of information that I remembered reading)

    • If it makes you feel any better, their library code is not exactly easy to understand.... They added too many #ifdef statements to make it universal without documenting what products they apply to... #ifdef statements make the code hard to follow in the best case....

    • First to answer the question of stripping out the error checking. Yes you could strip out the checks but you won't gain much since the checks only run when you first open the file. The two things that are likely to be slowing things down are the necessity to stream the pixels in small groups and sending all 259,200 bytes over SPI twice. I suspect that the real issue is how fast (or not) the SPI interface is but you can try increasing the number of pixels that you process at a time to see if that helps.

    • I remember seeing (and using) a convention once where variables started with a lower case letter to indicate type. For instance pBuffer is a pointer where cBuffer is a character and sBuffer might be a string etc. This convention went a long way toward helping to keep things straight (as a part of readable names) I hadn't thought about the units though. I don't recall that being an issue on that project but it's been a while and I haven't written much code since.

    • Fortunately for Max, DST in the USA starts at 2AM not at midnight so the date issue is not a problem. I don't know about the UK... Also, there are a couple flaws in the way Max implemented his final if statement. The way it's written, I don't think it would ever be true...

    • I assume that you are referring to the "EM2 current" (Why does the data sheet has to use these cryptic designations?). If so, the 0.9 uA is TYPICAL at 25C. It's 1.5 uA max at 25C and goes up to 6.0 uA max at 85C. You need to use max current for this calculation.

    • I'm inclined to agree about leaving the names off. For proprietary software the year(s) should be included in the copyright notice. Some comments in a revision history may be useful to give a general idea what changes were made when (or to which versions)

    • I was getting flash backs as I read to my first job as an intern. I was assigned the task of getting an EPROM programmer to work. To load the code that ran the programmer involved several steps which included using toggle switches to load the machine language code into the microprocessor. It was a very happy day when I programmed the first EPROM with the code that allowed us to program the EPROM. These days I'm quite happy to do my programming in C with only a rare foray into assembly language .

    • Hmmm, I don't remember checking or changing this setting on my Arduino setup. I'll have to go and change it to "All" to be sure that it finds everything. When I was writing code, we ran lint and also had our compiler set to give us all warnings. Our code had to compile with NO warnings and a minimum of things that lint didn't like (most of which were in the library headers). It eliminated a lot of debugging by catching the errors at the source. I have to admit that the first time we ran lint it was scary how many errors it found. And now that I know that there's a free version of lint, I'll have to check it out. I agree that it's probably too much of a learning curve for a hobby project but I might use it any way just to keep myself up to snuff.

    • In the school of programming that I grew up in, leaving variables uninitialized is very bad practice. As far as I know, there is no reason to NOT explicitly initialize a variable when you declare it and getting into the habit could save you some grief if you run across a compiler that doesn't do it for you.

    • This is a rather clever solution but... Since the 40 AWG enameled copper wire is less than 0.1mm, three of them twisted together would be less than 0.3mm which should be a reasonable size cable for your scale...

    • Re GPS clocks... I mostly know about them because the company I work for makes them. They're priced for the industrial market so a bit out of the normal household budget. On the other hand, Adafruit has a tutorial on how to make one using an Arduino... https://learn.adafruit.com/arduino-clock/hardware I might have to add something like this to my Cunning Chronograph. Assuming that I find time to work on it this year...

    • This clock (and ones like it) receive time signals sent out by NIST and use that signal to synchronize. Not sure if that signal (or equivalent) can be received much outside the US/Canada. I had a clock like that. It took forever to sync up (and didn't have a manual set). It also went nuts every time I used my ham radio so I got rid of it. i suspect that it would have worked better if I didn't live in a house with metal siding. By the way, if you have a shortwave receiver, you can tune in to the NIST signal. I usually catch it on 10MHz but I believe they also transmit on 5MHz and 15MHz. For real accuracy, there are GPS clocks.

    • Thanks for the reminder... My mother died this year which meant that most of my vacation time was eaten up by three extra unplanned trips to California. That plus the high intensity project I'm on now means that I'm really feeling the lack of time off for relaxation. Fortunately the holidays do provide a bit of a break but I'm going to need a real vacation in 2016.

    • The company I work for uses similar circuits to protect against outputs being active when the micro dies. We typically have an output enable circuit that has to be strobed and use the output of that circuit to enable all the outputs. This has the advantage that the outputs are disabled during power-up.

    • I was once the victim of a design using an undocumented feature of a TTL multiplexer. As a very junior engineer, I was put in charge of bringing up a piece of test equipment. The design had at least two 4-bit multiplexers being used as latches by bringing the outputs around to the B inputs. I'd traced the problem I was having to one of these multiplexer-latches. To add to my confusion, when I probed the outputs with the scope, the signals appeared to be OK but the downstream IC wasn't getting the correct values. After some time of trying to figure this out, I tracked down the engineer who designed the circuit and he told me I needed to use a different manufacturers part for the multiplexer. I changed the chips and that problem went away. I learned several things from that experience, one of which was to avoid undocumented features. I also learned about the effect of scope probe capacitance on sensitive circuits.

    • I think there's a problem with your code using the xref[] arrays.... Instead of using xref[i]-1 I think you need to use xref[i-1] Aside from that, it is a reasonably clever solution. I need to take a closer look at your code for the fading tail. Or maybe I should wait for you to debug it first....

    • It sounds like a wonderful opportunity. Unfortunately, I'm wearing my sad face because I'm not going to be able to get away from my project to be there... We need someone to invent a transporter so I could just pop over there instead of it taking over 1/2 day to get there (and requiring flights at hours when I'd prefer to sleep)

    • Where and when is the nearest hamfest to you? There's also your friendly neighborhood electronics surplus store. Of course the most likely one went out of business as I recall... Look for an old PLC or other industrial control. They usually have relays on their I/O.

    • I wonder if it's possible that the undergarments only have shielding in the area of the "sensitive male organs" In which case, just crumpling the undergarments over the antenna might not give the full attenuation... That being said, I appreciate your efforts in behalf of truth in advertising. I know a number of ham radio operators who are still in reasonably good health in their 80s and 90s after 40+ years of exposure to radiation.

    • What about a hologram globe? Would that be any easier? Or maybe interior projection with projectors inside the globe....

    • My point was that your encoding scheme was very similar to one devised by an experienced software guy. I'd send you the code but the implementation depends on a RTOS that he also wrote so it would require a bit of fiddling to compile for an Arduino. Besides, I'm not sure he'd appreciate his code getting spread over the internet since I suspect it's used in a product that we're currently still selling...

    • The mention of repeater controllers reminded me that I have access to repeater controller code which includes a Morse sender so I took a look last night. The encoding scheme is very similar to the byte encoding that Max used except that the count is in the LSB instead of the MSB with a tricky bit for extracting the 6th bit of a 6 bit character. This code was written by an experienced software guy so it must be a good approach... One of the things I noticed is that the encoding scheme was VERY well documented in the comments (including special notes for the tricky bits) so it was easy to follow. There's also a few other characters you might want to add to the list; slant "/" -..-. question "?" ..--.. dash "-" -...-

    • Maybe we can convince the good folk at Silego to make adapter boards for us. They would just have to make a board with only the center portion of their evaluation board. Jameco has some SMT breakout boards but none that I've seen will handle this package. Sadly, I'm not getting one of the development kits but looking forward to seeing what everyone is making.

    • As I suspected, when they say select cinemas, what they mean is cinemas nowhere near me :( The closest one was a film festival in Bend Oregon that already happened. I didn't even know they had a film festival in Bend....

    • I was always good at science and math then when i went to college, I discovered engineering. I discovered microprocessors when I got an internship during my junior year. This caused me to take a few more digital logic and computer science classes than I otherwise might have while getting my EE degree. Most of my career has been on the hardware side of things but I've also written code. First in assembly language then as processors got more powerful and compilers got much better I switched to C and C++. I've also learned enough VHDL that I can read and modify short blocks. I'm currently working as a hardware engineer (EE type) and have started to play with Arduino and other similar platforms on hobby projects.

    • So now that Jacob has successfully created a mini BADASS display, the next thing - in line with the discussion on power consumption - is to ask how you could make it work if you only had say 250 mA instead of 500. This could introduce him to the joys of time multiplexing LEDs. Of course you probably will want to introduce him to motors and sensors and such. Maybe a simple version of the anamatronic eyes or something that will turn on a fan if it gets too hot.

    • Most "high end" FPGAs have processor cores (either hard or soft) so what's available now is the MCU inside the FPGA. The problem with that is that FPGAs generally don't have Flash so then you need external memory for program storage and the cost goes up... At one point Atmel had a chip that combined an AVR with FPGA fabric. Not sure what happened to that but I thought it was a neat idea (probably ahead of it's time). And of course there's the Cypress PSoC family Intel buying Altera may lead to MCU with FPGA type chips. Will be interesting to see what comes out of that.

    • Bob make a very good point about the effects of cache on obtaining a deterministic response. For those hard real time cases where you need a fast deterministic response, then cache is not appropriate. However, there are a lot of hard real time industrial control applications where a 1ms (or slower) response is needed. In those cases it may be appropriate to just throw MIPS at the problem. Of course, you still need to do a worse case analysis to make sure that you will meet timing. Another trend that may not be visible in the embedded survey is the increased use of FPGAs. Where I work, we're using 32 bit processors but all the time critical processing is done in the FPGAs. I think it would be interesting to track the use of FPGAs in embedded designs if it's not being done already.

    • Flickering Lights I've got some LED "tealight" candles. They have an amber LED connected to some kind of circuit that causes it to flicker. There's a translucent "flame" that the LED fits in. In the dark, the effect isn't too bad. The flame part looks something like silicon sealant. I've seen two packs of these at the local dollar store so it wouldn't cost a lot to get some to be disassembled for experimental purposes. If nothing else they could stand in for the real thing...

    • The Anderson Powerpole connectors are quite popular among Amateur radio operators for DC power. There is a standard configuration for this purpose and various commercially available distribution boxes and other accessories. These are much nicer than the Moleex type of connectors we used to use.

    • Yes, flexibility is definitely a mixed blessing. The problem is that, no matter what features are put in to insure that only authorized code or IP blocks are run, the burden is still on the designer to make sure that nothing malicious is hidden in code or IP included from a third party. Unfortunately, there is usually no access to the source for these modules which makes it almost impossible to check them. This does NOT make me feel more secure.

    • But Intel bought Altera not Microsemi LOL Seriously, I'm not familiar with what Altera has for security in their configuration process but I know that some newer Xilinx parts have an option to encrypt the bitstream and only allow it to be loaded if it was encrypted using the right key. Given the competitiveness between the two, I'd expect Altera to have something similar.

    • Very slow progress here. Work seems to be eating up my time and energy these days. I feel like I'm so far behind that I'll never catch up. I did get the 60 pixel ring assembled but didn't have time to power it up... At least I think I now have all the electronics parts. But with the ring assembled, the parts no longer fit in the box I was storing them in. So I need a bigger box and some way to mount things...

    • Re Impressions of multiple Red peak LEDs I suspect that what you are seeing is that you are changing the display faster than the LEDs can keep up. It looks like there's a similar effect on the version with the red LEDs and the white peak where you can see that several LEDs appear to be more white than red. I'm working on some code that will have the peaks persist and fade out. At least that's what it's supposed to do...

    • I've managed to crash both Word and Excel but only when trying to undo something complex and I haven't lost a lot of data when it happened. This is in contrast to some other software that I've used which seems to crash fairly often while losing everything since the last save. My main beef with Office is that when I was "upgraded" to Office365, several features that I use frequently were no longer as easy to use (the split window feature has developed some particularly annoying quarks) and I'm inclined to agree with Antedeluvian that getting all the features to work together is more difficult than it should be. Still, we've certainly come a long ways...

    • One possibility that occurred to me is that ambulance/fire/police vehicles have some sort of device to turn the lights in their path to green. What happens if say an ambulance and a fire truck approach the intersection at the same time going in different directions? If the controller is not properly designed it could get "stuck". The possibility also exists that some hacker could have triggered this event. In either case, of course, the controller should have entered a safe default state. I think it's also true that in many cases traffic lights are linked together to improve traffic flow in one direction at certain times of the day. This also causes increased complexity...

    • I did a search a few months back for PC logbook software. I didn't find anything that met the requirements. An app for a tablet would be even better. The thing is, these days, almost everything I do is on the computer so it seems a bit redundant to write notes in a log book. For a while I tried just writing notes in the paper logbook on where to find stuff on the computer. Sadly, I've been so busy that I haven't kept that up. On the other hand I've gotten good at keeping everything for a project in one directory on the network drive. What I need to get better at is naming the files...

    • I've found that you get better results when looking for a house if you make mention of a hobby that may impose requirements on the search. In my case, as a ham radio operator, I made sure that the relator was aware that I wished to put up antennas. I'm sure that someone who builds model railways would probably want a room dedicated to that hobby.

    • Actually what I'd like to see is a tool that allows you to draw a block diagram and then further define what's in each block with either another block diagram or VHDL/Vreilog. This approach would allow you to work at whatever level of abstraction is appropriate. It would be especially useful if you could reuse blocks...

    • So you're the one who got the last of the 24 and 12 pixel rings.... I'm going to use my Handibot to make a mount for the LED rings. I'll need to practice at making something that's a bit too big for it though. The problem is I need a jig to make a jig to line things up properly....

    • The designs I typically work on don't have enough volume to justify the upfront expense of an ASIC so we just stick with the FPGA for production. Of course if you're building millions then that's the way to go (assuming you have a design set in stone)

    • One thing that helps reduce the time required for the iterative process is to use the simulation tools (ModelSim is included with both Altera and Xilinx compilers). It's much faster to do the simulate/modify until you've got the logic right. It's also necessary if you're doing a complex design with a lot of internal signals that don't find their way to the I/O pins.

    • Great minds think alike.... I had thought about doing a three ring (or at least a two ring) NeoPixel clock after seeing Duane's comment on your last NeoPixel blog where he mentioned his. Of course I hadn't thought about putting it in a wood enclosure... Of course having it sense movement etc would be much more fun if it was battery powered...

    • They wanted to ban ALL single source components but that obviously wasn't practical since it would eliminate all MCUs and FPGAs. It does put a crimp in my style but since I've spent a lot of the last few years redesigning old products because of obsolete parts, I can understand the reasoning behind it.

    • I'm also intrigued by these parts but for the company I work for, a single source part from a company that doesn't own their own fab is a really hard sell. The size is definitely a drawback for hobby / personal use. I really prefer to use parts that I can have a chance of soldering. Have you ever looked at the Atmel ATtiny parts? They've got an ADC and PWM capability. AdaFruit has the Trinket which is an Arduino compatible board using an ATtiny.

    • I had a couple thoughts on how to do the diagonal rainbow. The first approach that I though of was to use a 16 x 16 array of bytes with each byte being an index into an array containing the colors you want to use. Something like this byte colors[3][numDiags]; // array for colors generated by rainbow function byte colormap[numRows][numCols] = { // array to map colors into { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }, ... { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 }}; then you'd do something like this. rainbowEffects(); // load colors array for(i = 0;i LT numRows; i++) { for(j = 0; j LT numCols; j++) { colorIndex = colormap[i][j]; strip[j].setPixelColor(i, colors[0][colorIndex]; } } Of course then it occured to me that you could skip the colormap array and just do colorIndex = i + j; You could also do other effects with a minimum of additional code. A diagonal in the other direction would be something like this colorIndex = i + numRows - j;

    • @Max, I figured out how to do an array. You need to declare the array like this... Adafruit_NeoPixel strip[16] = { Adafruit_NeoPixel(numRows, pinsStrips[0], NEO_GRB + NEO_KHZ800), ... Adafruit_NeoPixel(numRows, pinsStrips[15], NEO_GRB + NEO_KHZ800) }; I sent you a file using this that compiles. Of course you're probably on your way to England by now...

    • Looks like the approach that I'd use except that I'm not sure the compiler would like it. The problem is that when you declare Adafruit_NeoPixel strips[numCols]; the compiler doesn't know how big to make the array because it doesn't know how many LEDs there are per strip... Of course this depends on the compiler... It wouldn't work in C but I think it might work in C++ and I think Arduino uses C++ rules. It's been a while since I've done this and I think it depends on what the definition of Adafruit_NeoPixel looks like.

    • As far as the power bus wiring, If it was mine, I would have had heat shrink on all the solder joints. Unfortunately, it's a bit late for that since the heat shrink needs to be added as you go... I would recommend that you insulate the joints somehow to prevent some inadvertent dropped wire or tool from shorting out the bus. Since it's low voltage, hot glue would work but there's also a brush-on "liquid electrical tape" that you can use as well. Actually your power bus reminds me of some power adapter/splitter cables that I've created in the past except that no one can see what I did because it's covered in heat shrink. LOL

    • Whenever possible I purchase things with the minimum possible feature set to do the job. For instance, when I purchased a pedometer a while back to track my walking, I determined that I wanted a multi-axis accelerometer based pedometer (the mechanical ones are too picky about orientation) but didn't really need any of the extra features (especially any of those requiring it to be connected to anything else). I ended up with something which has a few more features than needed but at least they don't get in the way.

    • When I refinanced a few years ago, I got a 15 year mortgage with about the same payment as the 30 year one that I had before. So it should be paid off by the time I'm 70... LOL

    • I'm in the same boat you are. I expect that I'll have more than enough to do when I retire. The one problem that I see is that it's likely that the income will go down substantially so I'll have to do some things that I'm currently able to hire out.

    • I can use a fork adequately with either hand but you don't want to see me try to use a cutting tool or soldering iron with my right hand LOL. Of course, I'm the only person I know who has managed to burn a finger on the same hand that was holding the soldering iron so maybe you don't want to see me us a soldering iron with either hand....

    • I'm almost as left handed as you are right handed but I've been forced to learn to do some things with my right hand because the world is oriented toward right handed people. For instance, because of having to share a computer, I've actually learned to mouse with my right hand.

    • I agree that for now the best use of self driven car would be for long drives on the highway. I for one would like to have a car that could drive itself on the highway. I think I would be a safer driver on the city streets if I wasn't tired from hours on the highway.

    • I know of one place that implements most of Bob C's criteria for an undergrad program. Oregon Institute of Technology requires Computer Engineering students to complete a Junior Project that includes creating a custom circuit and software for a 8/16 bit micro-controller. These are team projects that includes sensors and actuators. The Senior Project requires a fairly sophisticated FPGA design. The main thing that most of these students lack is some of the math and their analog skills leave something to be desired also.