Throughout my undergraduate years at Penn State Behrend, I completed many different projects working with FPGA's, microcontrollers, Assembly language, and VLSI Layout Design.
Sponsored by SecureRF, I worked alongside 2 other computer engineering students with the goal of optimizing a computationally extensive function of SecureRF's crypto algorithms called. The optimization is device specific as provided by SecureRF (MicroSemi SmartFusion2 SoC FPGA). As a group, we took the provided C implementation and optimized the E-multiplication operation in hardware (FPGA + Verilog) as well as with modified Assembly routines in order to achieve the highest throughput, lowest latency, and least amount of memory usage as possible. We reached our goal by creating implementations that were significantly faster than the originally provided C implementation. To read about E-multiplication or other relevant information regarding these efforts, please head over to SecureRF's White Papers webpage.
Here are several projects using the PIC32 Microcontroller (MCU)
My final project in my embedded systems class my lab partner and I decided that we wanted to display our abilities to come up with our own project idea, purchase necessary materials, build, and demonstrate our final deliverable. Browsing online shops, we came across the Adafruit RGB Color Sensor with IR filter and White LED TCS34725. Inspired by the low cost and familiar communication protocol I2C, we decided to create an application that would sense a color and then show the same color on a display. Upon delivery, we quickly soldered the pins onto the sensor and began trying to communicate with it. Considering the very few number of pins on the device, it was simple to physically connect it to the MCU. The first true roadblock we came across was our inability to communicate with the device. We had a lot of trouble sending data or reading back. After lots of troubleshooting, we discovered that the datasheet had improperly defined the registers we needed for communication to the device. Once we found out the proper registers to be reading and writing from, creating the display was simple. Overall, the project went smoothly. As you can see, on the display there is a small circle which updates with the color sensed. It was found that using the onboard LED helped a lot with more accurate color recognition.
Using I2C, I connected a temperature sensor and an analog joystick to the PIC32 MCU.
Interfaced an accelerometer and IO expander to PIC32 using I2C communication
Interfaced an IO expander and TFT display to a PIC32 using SPI communication
Created a simple state machine with a PIC32 MCU with GPIO