Development Process

Literature Review

The project began with the literature review process. During this time, we scoured the IEEE paper database for papers related to phased array calibration both to find applicable methods we could implement and get a sense of what kind of performance and limitations we should expect to encounter. This process took roughly a month with over 250 papers collected initially. This amount was cut down to 30 or so by skimming through them and identifying relevant key terms. Those 30 were then taken down to 8 candidates for possible methods we could use after we read thoroughly through each paper. From there we weighed the pros and cons of each method, in terms of complexity, speed, reliability, and other factors. We ended up settling on 3 different methods to implement those being the Mano REV, Sorace REV, and Linear Equation methods.

Initial Prototyping in MATLAB

Before we could start to implement and test these methods, we first had to familiarize ourselves with the MATLAB phased array toolbox and create a dummy model where we could learn the ins and outs of it. This proved to be extremely helpful, as there were a lot of initial issues with choosing which methods and types of objects to use. Once we had the baseline knowledge to begin the prototyping process, we got to work. Initially, we generated data ourselves, as MATLAB has a built in 5G signal generator, but eventually we switched to data collected from an external signal generator so we would have a reliable analogue for actual equipment that the algorithm could work with. The software started off in a very simple form., first with only 8 elements taking a single measurement then reporting the phase error. Actually getting the calibration algorithm implemented proved to be a daunting challenge and took longer than we expected. For example, there was a significant issue with the Linear Equation method where the corrected values correlated to the amplitude of the input signal rather than just having a magnitude of one. After weeks of hard work we were able to get successful simulations running that calibrated our theoretical phased array within the margin of error for both amplitude and phase.

Final Prototyping in C++

The final implementation in C++ was done in VS Project and was basically a continuation of what we had proved within out MATLAB simulation. The codebase we have developed was split into two main sections, an interface class, which would hold all the functions for importing the data collected from a system, and the phased array class which would hold the calibration functions and initialize all the properties of our system such as the number of elements and phase shifter resolution, just to name a few. The most difficult part of the implementation in C++ was getting started with how we should organize our code, this is why before we started actually coding, we made a outline of our software architecture and how our codebase should be laid out, what functions we would need, and a rough idea of the functions signatures which included the inputs and outputs of each function. A significant milestone in our code development process was creating a synchronous loop between our MATLAB simulation and our C++ environment. This was done by creating functions within our C++ code which would output a matrix of phase and gain settings for each measurement to be made by the actual system, which we would then import into our MATLAB simulation allowing us to generate data that should be similar to what we would expect from a phased array in real life. Then, with our data exported from MATLAB, we would use functions within our C++ interface to process our complex data and for the REV method convert it into processable power measurements that allowed a correction to be output for each element. This full loop of settings generation, data collection, and data processing proved that our C++ code was working and could now spend some time making the calibration process more user friendly and easy to implement.