Huan Zhang – Research Projects

Past (undergrad) Research Project

Orthogonal Frequency Division Multiplexing (OFDM) Optical Wireless Communications

This project aims to build a LED-based free-space optical network utilizing the OFDM (Orthogonal Frequency Division Multiplexing) technique. We use cheap visible light LED (light-emitting diode) as transmitters. The wide modulation bandwidth (~10M) of LED along with the high spectral efficiency of OFDM technique makes high speed free-space optical communication possible.

This project is an extension of my “Optoelectronics Information Comprehensive Experiment” coursework project. In the coursework project, our group presented a prototype of LED visible light communication system using OFDM technique, and established a set of protocol and an encoding/decoding scheme specially designed for LED OFMD application. We combined OFDM with the QAM modulation and convolution code for high bandwidth efficiency and low bit error rate. A data transfer rate of up to 56 kbps over a 20 kHz channel was achieved. The result is limited by the narrow bandwidth of our AD/DA convertors; however, it predicts a promising result of more than 10Mbps if we generalize our result to the full bandwidth of LED.

Photo: Working LED transmitter and receiver

End Host for an Optically-connected System on Xilinx FPGA

Supervised by Prof. Venkatesh Akella.

In the summer of 2011, I was chosen to participate in the Global Research Experience in Advanced Technologies (GREAT) summer research program at UC Davis. I joined a project supervised by Prof. Venkatech Akella aimed at implementing a shared memory system connected by a novel optical switch[1]. I was responsible for building an end host system (the TX and RX parts in the figure below) on Xilinx FPGA based on MicroBlaze soft-core processor. This system mainly consists of a MicroBlaze soft-core processor, a DDR2 memory controller, several Direct Memory Access (DMA) units and a high speed RocketIO transceiver. Because Xilinx provided most of them as IP cores, I just needed to connect them together in Xilinx Platform Studio; but unfortunately there was no RocketIO transceiver peripheral IP core, so I had to write this peripheral using VHDL.

The transceiver peripheral employs the high-speed RocketIO serial interface running at 1.25GHz as its physical layer and connected to the Microblaze processor via PLB (Processor Local Bus) slave interface. The PLB interface involves a read packet FIFO, a write packet FIFO, eight configuration registers and five interrupt sources. The framing protocol and flow control are entirely performed by the peripheral's hardware, which makes data transfers completely transparent to the upper level. To measure network delay accurately, a hardware test mode which can assign a unique identifier and a time stamp for each packet is implemented in this peripheral. I also develope embedded software for Microblaze utilizing this peripheral to analyze packet loss and network delay.

Datacenter Optical Switch[1]

[1]Xiaohui Ye; Yawei Yin; Yoo, S.J.B.; Mejia, P.; Proietti, R.; Akella, V., “DOS - A scalable optical switch for datacenters,” Architectures for Networking and Communications Systems (ANCS) 2010

LED Matrix Sensor

Supervised by Prof. Kaiwei Wang.

This is my coursework for “Optoelectric Detection Technology and System”. While LEDs (light emitting diodes) are most commonly used as semiconductor light sources, they are fundamentally photodiodes and provide an inexpensive technology to measure light. The basic principle for using a single LED as both a photodiode and a light emitter have been well discussed and already used for sensing ambient light and bidirectional communications[2]. However, as the number of LEDs increases, separate operating these LEDs needs unmanageable level of hardware resource. Our design uses an 8x8 LED matrix with two levels of multiplexing to solve this problem. First, LEDs are scanned row by row with display multiplexing as normal LED matrices; second, in each row, the LEDs are multiplexed as both light sources and detectors.

I led a group of four students to build the proposed LED matrix. The LED Matrix is controlled by an enhanced 8051 microcontroller STC12C5A60S2. The microcontroller quickly switches LEDs in each row between the forward-biased (light-emitting) and back-biased (light-sensing) modes. The scanning process is so fast, that the LED matrix appears to be constantly on, displaying several characters and periodically measuring the ambient lighting level. Sensing data are then sent to computer via RS-232 port and showed as 3D graphics in real-time. My work in our group was to design the hardware and write the microcontroller program.

Video: LED Matrix Sensor

[2]Dietz Paul; William Yerazunis; Darren Leigh (2003). “Very Low-Cost Sensing and Communication Using Bidirectional LEDs”. Mitsubishi electric research laboratories.

USB Media Player

Supervised by Prof. Xiaoping Wang.

This is my coursework project for “Principle and Interface Technology of Microprocessor” course. I build a music player based on MCU + DSP heterogeneous architecture. I choose an enhanced MSC-51 microcontroller (STC12C5A60S2) to control dataflow and user interface, with a 16-bit RISC DSP core (VS1053) connected by SPI bus as a slave decoder. One of its unique features is that it utilized external USB mass storage device such as a USB flash disk as its storage media. FAT32/FAT16 file system with subdirectory and Chinese long filename is supported. User can use either six push buttons or RS232 serial terminal to control the player system. A 128x64 LCD module is employed to browse file and display status of the player. Thanks to the powerful VS1053 DSP with built-in decoder for a variety of music formats, I don't have too many concerns about the decoding algorithm; however, the microcontroller has to transfer data from USB interface to VS1053 continuously at a high speed, otherwise the sound will be influent. High bitrate lossless audio like FLAC and WAV requires about 2Mbps transfer rate, which is not easy for a simple 8-bit microcontroller running at a relative low clock rate. I put in great effort to optimize the data transfer routine in assembly language, minimize the interrupt response time and eliminate unnecessary delay. Finally, my player can play all formats fluently at 11.0592MHz.

Photo: USB Media Player

Click here for a video from my department's website.

One of the most challenging parts of my self-made player is the decoding for Monkey's Audio (also called APE or MAC), a lossless compression format. As a classical music lover, I have a great deal of APE files, and I really hope my player can play them. Unfortunately, VS1053 doesn't support this format officially; I have to write an audio decoder plugin for it. As there were no adequate documents at that time, I had to reverse engineer VS1053 firmware to make a working decoder plugin (see my post here). APE probably has the highest compression of all the lossless codecs, but it comes at a price – decoding is very CPU intensive. I port libdemac to VS1053 and almost optimize the whole decoder program in DSP assembly, endeavoring to play Monkey's Audio in real-time. I also implement a fast integer division subroutine in DSP assembly using Newton-Raphson method. Eventually, my player can play Monkey's Audio files with fast and normal compression level. With a little more effort my plugin might decode APE file with high compression, but unfortunately this project discontinued due to lack of time.

Blind Guide Device Based on Symbian Smart Phone

In the summer holiday of my sophomore year, I devoted myself to the National Undergraduate Optical Design Contest. I established a three-person team focusing on developing a novel blind guide device based on the Symbian smart phone Nokia C5 (at that time Android was not yet widely used in China). It's an application that captures scenes on the phone's camera, analyzes images in real-time and generates a voice to guide the blind. My work in our group focused on implementing the pattern recognition algorithm on the smart phone. Our design is a real challenge because existing algorithms are too complicated to run on a resource-constrained embedded platform like a mobile phone. We propose a high-efficient algorithm based on color filtering and differential edge detection. The program is written in C and a portion of it is highly optimized in ARM assembly. I optimized the critical subroutine with careful considerations of pipeline stalls and caches, and fully exploited SIMD instructions. Thanks to the powerful ARM11 architecture, we obtain a performance of about 10-12 fps after great efforts, just enough for real-time guiding. We ranked 8th nationally and got a China national patent[3].

Photo: Blind Guide Device Based on Symbian Smart Phone

[3]Blind Guide Device Based on Smart Phone, China Patent ZL.2010 2 0516516.9. Yang Yang, Huan Zhang, Ding Zhao, Li Chen et al. Issued on July, 20, 2011. (pdf)

ARM-based Dielectric Spectroscopy Measuring Instrument for Food Samples

Supervised by Prof. Xiaoping Wang.

Given my appetite for independent research, I became one of few students involved in laboratory research in their freshman year. I joined Prof. Xiaoping Wang's research group and was put in charge of developing a convenient instrument that measures the dielectric properties of food samples. This instrument consisted of: 1) a mixed-signal circuit mainly made up of an ARM-based microcontroller, a DDS Synthesizer, a RF gain/phase detector and an analog-to-digital converter; 2) a firmware controlling all low-level hardware and implementing an embedded USB device stack; 3) a computer program receiving data via USB port and carrying out necessary mathematical analysis. I designed a complex circuit and a PCB board all by myself and wrote the firmware in C and assembly. The PC software was written by my colleague. With the help of this device, our group investigated the dielectric properties of beer during fermentation, and found a method to monitor the fermentation process in real-time using dielectric spectroscopy.

Photo: Dielectric Spectroscopy Measuring Instrument

Back to Home