When verifying overall system performance in modern communications systems, traditional test and measurement equipment such as vector signal generators and vector signal analyzers (VSA) are required. These instruments generate or measure characteristics of digitally modulated radio signals1). Since most modern digital communication systems are almost all based on, or derived from a well-defined industry standard, 2) most traditional test and measurement equipment works well with these types of waveforms. This type of equipment is available from many different test and measurement companies. These include, but are not limited to Keysight, Tektronics, National Instruments or Rohde & Schwarz.
While the use and need for this sort of traditional test and measurement equipment can not be replaced, they are everything a software or waveform developer does not like -- large, noisy, expensive, normally lives in the lab (away from a developers desk), and is a shared resource for the entire development team. Typically near the end of a project, everyone wants on this equipment.
Providing system level developers the ability to verify some measurements before they take the system into the lab to be tested with traditional test and measurement equipment would augment the developer's ability to ensure system performance is met in the shortest time possible.
In this example, we introduce a development methodology for basic system verification for a Long-Term Evolution (LTE) based system, consisting of an AD-FMCOMMS3-EBZ RF transceiver board (that includes the AD9361) along with a suite of software, which includes MathWorks LTE System Toolbox. In this example, the baseband IQ waveforms are generated by LTE System Toolbox. They are up converted to RF band by AD9361 and then transmitted over the air. On the other end, these RF signals are captured by AD-FMCOMMS3-EBZ, down converted to baseband and saved in the workspace. Consequently, these baseband signals are analyzed by LTE System Toolbox. Typical RF/LTE performance characteristics such as Error Vector Magnitude (EVM) can be obtained.
In order to run this example, you need:
If you want to enable a static IP, use the script found here
Like all engineering solutions, there are many different ways to implement and automate a specific task. Here we will review two different methods,
The specific solution which is most appropriate for your task at hand depends on what limitations you might face (like your IS department not wanting to connect Ethernet to the Xilinx development platforms), or your familiarity with MATLAB.
This part of the example we do things by hand, and copy files around via USB or SD Card or Network. There are many labs where moving things around via USB is the only way to connect instruments.
Setting up the AD9361 is done via the AD9361 Wizard. This will set the sample rate, and RF bandwidth for the signal you want to send.
For this example, we will be creating an LTE10 signal and filter settings. There are some tweaks necessary for the DCXO outside this, which will be necessary to ensure that we don't have any frequency error.
The details can be found on the MATLAB AD9361 Filter Wizard section, but it should be a simple matter of selecting LTE10, designing the Tx and Rx filters, and connecting to the target, and writing the coefficients to the target.
This is very similar (exactly similar) to the example in the MATLAB documentation for lteTestModelTool.
We will provide a few more pointers:
E-TMn.nin section 6 of the pdf. Care should be taken to ensure that the proper test waveform is generated for the proper tests. (i.e. E-UTRA Test Models 1.1 & 1.2 should not be used for EVM testing).
Launch the tool to generate an E-UTRA Test Model (E-TM) waveform. In this case, we will generated a waveform for a few different tests.
All should be generated for 20MHz, FDD, and we change the output variable three times (
The output needs to be scaled, to +/- 1.0 (for full scale), (and then backed off a bit, the below example is backed off -3dBFS). This can be done quickly and easily with a little MATLAB. If you don't do this, the output from the
lteTestModelTool is very small, (+/- 0.0606 FS, which on the AD9361 is about +/- 62 LSBs, or about a 7 bit system, which is going to give pretty poor results).
>> db_backoff = 3; >> QAM64_20MHz = tmwaveform * (10^(-db_backoff/20))/max([max(real(tmwaveform)) abs(min(real(tmwaveform))) max(imag(tmwaveform)) abs(min(imag(tmwaveform)))]);
Once the 307200×1 complex double variables are magnitude adjusted, it's just a matter of right clicking on them, and saving them to the host. Save them as a
.mat file. The IIO Oscilliscope can read in *.mat files, and send these files out a typical DAC (like the one inside the AD9361). If you would rather have a tab delimited text file, try:
>> QAM64_20MHz_iq = [real(QAM64_20MHz) imag(QAM64_20MHz)]; >> dlmwrite('QAM64_20MHz.txt',QAM64_20MHz_iq, 'precision',4, 'delimiter','\t', 'newline', 'pc');If you need you own format (comma delimited, or space delimited), check out the docs for dlmwrite, or if you want binary, check out frwrite, or if you really want, try Excel with xlswrite. For a 12-bit converter (like the AD9361) 4 decimal places of precision is necessary; for higher numbers of bits, you will need more precision.
If you use a different bandwidth than 20MHz, expect to see a different length vector, as you are generating a constant time, and the different bandwidths have different sample rates (which are detailed in the Filter Page).
There are many ways to copy files to the target, which are explained in the Zynq getting started guide.
Once it's on the target, you just run the osc application, this should include a method to play the files via FMCOMMS2/3/4 plugin. Simply select
DAC Buffer Output, and then select the file, and the channels that you want to output things on.
That's it - you are now broadcasting LTE waveforms.
Since the libiio interface is available in MATLAB, and the LTE System Toolbox runs in MATLAB environment, we can implement the whole transmitting and receiving process in MATLAB.
The MATLAB version LTE example can be found here:
In order to run this example, you need to get the libiio interface from here and include them in the same folder as your example:
The main function is ad9361_LTE.m. This function mainly consists of four parts:
Detailed comments have been provided in the function to describe the purpose of each part.
In order to run this example, simply use the following command:
ip is the IP address of your board,
LTE mode is the LTE mode you would like to simulate. Currently, this example supports LTE-1.4, 3, 5 and 10. Make sure you specify
plots as output parameter, so that these plots will not close automatically at the end of simulation.
For example, the following command simulates the transmit and receive of LTE-10 signal:
At the end of the simulation, you will get the RSSI values on both channels, EVM result in the command window, as well as the following plots:
One other important feature of this example is to calculate the EVM of the Tx and Rx, which provides a performance metric of the system. In this example, the EVM is calculated by PDSCHEVM function, which is based on PDSCH Error Vector Magnitude (EVM) Measurement.
In the command window, the average EVM for a downlink RMC is displayed. First the results for low and high edge EVM are calculated for each subframe within a frame and their averages are displayed. The max of these averages is the EVM per frame. The final EVM for the downlink RMC is the average of the EVM across all frames, as highlighted below. According to the experiment, when the digital Tx - digital Rx loopback is used (RF bypassed), the overall EVM is around 0.077%. When a loopback cable is used between Tx and Rx (RF included), the overall EVM is below 2%.
As a conclusion, in this model, the combination of AD-FMCOMMS2/3 and MathWorks LTE System Toolbox replaces the traditional test and measurement equipment, which makes the instrumentation and verification process more affordable and flexible.