Fall 2013 Modeling a Quadcopter using Modelica (Open Modelica)
In this project, we are modeling a Quadcopter; the Quadcopter controls the thrust of each rotor to make itself stable and change them to move in each direction or rotate.
Fall 2012 3D Modeling using NIOS II on VGA Port, Dr. Tabandeh
I implemented soft-processor using HDL coding on DE2-70 board. Then, we used C program language to write the software we wanted. We created various C classes to do the basic functions for drawing, translating, rotating, and coloring 3D shapes. Finally, we included the classes created and used them to draw some shapes together and rotate them to make an 3D animation. The animation is transferred to the monitor via VGA port.20130126_134007
Fall 2012 Simulation of Leader Election and Global Computation in Asynchronous Networks Simulation by OPNET
The purpose of the project is to simulate a method of leader election in a network of nodes. OPNET was used to do the simulation. Beside simulating the Leader Election method, I also simulated the method of routing and transmitting packets using the leader. The Node, Process, and Packet Format were modeled and we connected them together to model the whole network (Grid and Ring Network); by generating packets, we analyzed the routing process of packets and how a leader was selected.modelmodel2         model3               model4
Fall 2012 Graphical Modeling of a Soccer Player using OpenGL
The purpose of the project is to model a moving object using OpenGL. We decided to model a soccer player that runs and shoots a ball. The hands and feet of the player are completely modeled.
Fall 2012 GUI and Digital Interface for a Multimedia Device
For this project, we need to control a colored LED tape light to react to the beats of a music in Real-Time manner. We made a wireless controller using AVR and wireless module to control the light remotely. The controller receives commands from a PC remotely and generates the signal voltages according to the commands; you can change each color of the light in range of 0-255. We made another software to analyze a music and finds out where there is a beat and change the color of the light based on that beat. (The project was continued up to Summer 2013)light
Fall 2012 Digital Interface for an Imaging Sensor using FPGA & Xilinx Microblaze
This was my undergraduate senior project. The purpose of the project is to design a digital interface which can let the PC user to control  an imaging sensor; the user can take picture and adjust the sensor setting completely; it kind of does the job of a digital camera but with more adjustment options and controlling.The imaging sensor was designed before hand; we needed to design the controller. To control the sensor, we needed to generate some timing signals which trigger the modules in the sensor. Some of the signals are for controlling shutter, transmitting and saving the pixels data. These signals are generated using Xilinx FPGA;  The FPGA was configure using VHDL coding.To save, load, and adjust the exact value of registers used for generating timing signals and also control the board from PC, we needed a micro controller; we implemented a soft-processor in Xilinx FPGA which is called Micro Blaze. Using C++ coding we wrote a software to receive the commands from the user and change the values of the registers as they are supposed to; the software also transmits the status of the board to the user for checking purposes.

To extend the memory space of the hardware, we used a SRAM for saving the application code and another FRAM for saving the register values; the user can have multiple profiles to save and load the register values. (The project was continued up to summer 2013)


Summer 2012 Serial, CAN Boot loader for PIC devices
This project was part of my summer internship. Suppose we have a network of hardware nodes (PIC based) which are connected using CAN (Controller Area Network); each node has its own firmware. To program each node with a newer firmware, we needed to disconnect the node and program it individually. Instead, in this project, I designed a light software (called Boot Loader) which is programmed into every node, to handle the updating process. The Boot Loader software checks for an update every time the node is restarted. The PC user or another node (Master Node) can send a command via CAN to the node which is supposed to be updated and transmit the new code to the node. The node will update the firmware and restart. The master node can save the code of each node with their IDs and send them separately.
Spring 2012 OFDM symbol detector using Verilog HDL and its implementation on ASIC and FPGA
In this project, using Verilog HDL coding, I implemented a hardware which can estimate and detect the start point of each OFDM (Orthogonal frequency-division multiplexing) symbol. To do this detection, we needed a convolution core that check the signals in Real-Time manner. After designing the convolution core, I pipelined the core so that we could run the calculation in higher clock rate. To check the module we implemented the hardware on FPGA and ASIC; also use Cadence to design the chip.
Spring 2012 Graphical Multiplayer (Serial Communication) Game
The game is a 2D shooting game. We used emulated x86 processors to run the game on. The game was programmed using Assembly Language. The x86 processors are connected using serial connection to an ARM board which controls the connection between each player and the sever processor (x86 Proecssor). The commands are sent from each player to the server and the results are transferred to all players.