Rethinking Digital Logic with the RPiSoC

For any Engineers out there, I’m sure you remember the unending tedium of Digital Electronics. First you have to commit to learning the principles of combinational and sequential logic through the use of logic gates, latches, flip flops, counters, adders, comparators, multiplexing, timing analysis, minimization, boolean algebra, and the list just goes on and on. Then (as if that wasn’t enough already) you had to learn how to use a myriad of simulation tools and software to see if your designs even worked. But that wasn’t even the end of it, because the worst part of all is that lab time is almost entirely wasted building something that looks like this…

2013-12-04 17.48.11

Yes, that is an actual circuit I had to build as a Sophomore Electrical Engineering student, and no, it did not even do anything special. It was a four floor elevator (that only went up.) Not to mention, the clock was too fast, the output was in Binary instead of Decimal, so the results weren’t even tangible. The input even required entering the desired floor in binary using switches, instead of just being able to hit a button for the desired floor, because implementation of that logic on a breadboard would be too messy. I think I’d rather take the stairs than deal with all that…

This project took all of twenty minutes to design, an hour to simulate, and 3 weeks of agony to build and debug on a breadboard. Needless to say, this brings back nightmares.

So we at Embedit were thinking– What if there is a better way? What if you could go straight from design to tangible results? What if you could actually take the time to design complex projects, without having to worry about translation to a messy breadboard? And what if you could do all this, and still get that tangible, real output like you would with a traditional breadboard? With the RPiSoC, you can do just that.

Sequential Logic for determining the desired floor using push-buttons instead of binary numbers as inputs? Easy

PSoC_desired_floor

Want to implement a custom 3-bit bi-directional counter without overflow, straight from your transition table? Sure.

State_Machine_Counter_PSoC

How about a minimized 3-bit magnitude comparator using combinational logic? No problem.

Comparator_PSoC

The result? A simulated 7 floor elevator that can go up AND down (at speeds between 1Hz and 67 MHz, so hold on tight).

elevator

 

Results are being displayed on a TFT screen right now (because we don’t have any hex displays lying around and we figured virtual ones would be even cooler), but other than that, there is absolutely no C-code. The design is entirely schematic based, and it was easy to make using the PSoC Creator GUI. Not to mention it barely put a dent in our boards resources. Even with the screen (which sucks up some of the digital resources because it is SPI-driven, and SPI is implemented using PLD on the PSoC) we are barely using 10% of our digital blocks, and less than a quarter of our PLD. So, we can have programs MUCH more complex than this running without having to worry about wasting precious clock cycles of our CPU.

Imagine how much time (and headaches) will be saved without the dreaded breadboard! That is the power of the PSoC.

 

Leave a Reply

Your email address will not be published.

Published on: 20 June 2014
Posted by: admin
Discussion: Leave a comment