Hardware and Parallel Computing
FPGA, CUDA, and digital systems projects spanning CORDIC, FFT, a MIPS processor, and GPU memory.
These projects come from coursework and lab work at Sharif. They are the hardware counterpart to the machine-learning work on the rest of this site, and the reason I still care about what happens after a model is trained: clocks, memory, and the device it actually has to run on.
FPGA and digital design
- CORDIC on Zynq FPGA — Verilog implementation in Vivado.
- FFT on Zynq FPGA — with VGA output.
- Multi-cycle MIPS processor — Verilog.
- ASIC/FPGA system design and VLSI coursework.
GPU computing
- Parallel merge sort on GPU with CUDA.
- Heat-transfer simulation using CUDA texture memory.
Communications and embedded systems
- Digital telecommunication system simulation.
- Smart IoT socket firmware on Arduino and ESP32/ESP8266 for the Artificial Creature Laboratory, after evaluating IoT platforms and network protocols for the lab’s AI platform.
Tools
Vivado, Xilinx ISE, ModelSim, LTspice, Zynq FPGA, Raspberry Pi, Arduino, ESP32/ESP8266, CUDA.