Hardware Verification Engineer Sabrina Herman

ECE 3400 - Intelligent Physical Systems Maze Robot

For our class robot competition, my team of four made a robot cabable of the following things.

  • Start via a pushbutton
  • Differentiate a 950Hz frequency from other frequencies
  • Line follow, including line correcting and turning right/left
  • Detect and avoid walls
  • Detect and avoid other robots (by reading the other robot's ir emitter)
  • Do a depth first search of the maze
  • Communicate via radios to an FPGA monitor
  • Display the maze on the monitor in real-time.

This robot project was programmed on an Arduino, and the monitor was programmed with Verilog. My two largest contributions were creating an iterative, non-stack based depth first search of our maze and using Verilog on the FPGA to receive and display the maze on the monitor

ECE 4750 - Computer Architecture Multicore Processor

This semester long project is broken up into four lab assignments. For each lab we built a baseline design and an alternative design. We implemented our own testing strategies. We then evaluated the impacts of the baseline and alternative designs based on cycle time, area, and energy.

  • We exercised RTL design skills using Verilog as our hardware description language
  • We developed skills including version control using Git, Linux/Unix development, and working as a team of design and verification engineers
  • We learned functional level and register transfer level modeling
  • We designed a control unit and datapath with a split design pattern, requiring us to learn how to build a datapath and an FSM control unit as well as how the control unit and datapath communicate.
  • We learned about the encapsulation design principle and message interface design pattern through the ready/valid signal protocol
  • We practiced hierarchy design principles by defining and instantiating modules.
  • We used an incremental development design methodology by beginning with a baseline design before moving on to an alternate design.

All the computer architecture themes practiced in the labs are relevant to how computer architecture, design, and verification are implemented in industry.

Download Lab 1: Iterative Multiplier

Download Lab 2: Pipeline Processor

Download Lab 3: Cache

Download Lab 4: Multicore Processor

ECE 5725 - Embedded Operating Systems Music Motion

Music motion is an interactive dance game in which users can

  • Move to dance steps that are synced to the music playing
  • Wave accelerometers in the direction indicated by the GUI to perform the dance step
  • Be scored according to how well they were able to follow the dance movements
  • Have fun!

The project design consists of three main components: the game GUI, the accelerometer controllers, and the song movements. The game GUI uses PyGame, and the entire project is done in Python on a RaspberryPi. The GUI has a home screen with options to choose a song, start, or quit. The player can navigate options on the home screen by touching the PiTFT screen or using an external mouse. Choosing a song will open up a game session displaying the current motion for each controller as well as upcoming motions. A value for the player's score will update depending on the type of motion and timing of the player.

ECE 3140 - Embedded Systems Bop It

We programmed our Bop-It on the FRDM-K64F microcontroller using µVision with programming language C. We used the board's existing accelerometer, magnetometer, and push buttons to create a single-player Bop-It game. The game works in rounds. To win a round, the player will need to hit one of the two pushbuttons, shake the board (measured with accelerometer), or turn the board (measured with magnetometer). The player loses when they fail to complete the exercise within the required time. The game ends when the player loses a round, and then the player gets a score based on how many rounds they were able to win before the failure.

Download Bop-It Lab Report