These projects were completed as part of ECE 150: Digital Logic Design, a course focused on designing combinational and sequential logic circuits.
Designed and implemented a 2-bit Arithmetic Logic Unit (ALU) using combinational logic with gates and multiplexers. It accepts two 2-bit inputs and a 4-bit operational code to produce a 2-bit output with an optional carry out (depends on the operation). This ALU performs eight operations, including logical shift and binary subtraction with two's complement. The modular design allows for multiple ALUs to be chained to form larger units, such as a 4-bit ALU.
Designed and implemented a sequential logic circuit to read and write 4-bit words to a static SRAM chip. The design uses a Moore finite-state machine with debounced read and write buttons to control the memory, and parallel-out resistors to display the data. It cycles through the various states of the finite-state machine using a counter created with D flip flops.
Worked in a team of four to design and implement a hardware-based Pong remix, featuring two balls instead of one. The game was displayed on an LED matrix and included user-controlled paddles, ball movement, collision detection, scoring, and dynamic ball speed. The design was modular, using counters, multiplexers, finite-state logic, and multiple clocks to manage game state and persistence of vision.
Collaborated in a team of five to design and implement a waste sorting system that distinguishes between organic and inorganic materials using a CO2 sensor. Programmed an Arduino microcontroller to coordinate sensor data acquisition, conveyor belt movement, and a mechanical sorting flap through a step-based control sequence. Gained experience in dealing with real world issues (and learning why they are so difficult to handle/unsolved), working in a larger team, and applying diverse skills to a single project.
Completed as a part of EID101.