gusucode.com > wlan工具箱matlab源码程序 > wlan/wlanexamples/VHTWaveformGenerationExample.m
%% 802.11ac Waveform Generation with MAC Frames % % This example shows how to generate an IEEE(R) 802.11ac(TM) transmission % containing MAC frames suitable for performing radio packet error rate % (PER) receiver tests. % Copyright 2015-2016 The MathWorks, Inc. %% Introduction % WLAN System Toolbox(TM) can be used to generate standard compliant % waveforms for performing receiver tests. A basic WLAN receiver test % scenario is shown in the diagram below. % % <<vhtWaveformGenerationDiagram.png>> % % The device under test (DUT) is stimulated with RF test vectors, usually % through a wired link. The packet error rate (PER) is a metric used to % test the performance of a receiver at a given receive signal power in % the presence of noise, interference, or other impairments. The PER is % defined as the number of incorrectly decoded packets divided by the total % number of transmitted packets. % % The frame check sum (FCS) within a MAC frame is used to determine whether % a MAC frame has been decoded correctly by the receiver, and therefore % whether the packet has been received in error. The general MAC frame for % IEEE 802.11ac contains the following fields: % % * MAC header % * Frame body % * FCS % % The data to transmit from a higher layer is contained within the frame % body of the MAC frame. The transmitter uses a cyclic redundancy check % over the MAC header and frame body field to generate the FCS value. The % receiver calculates the CRC and compares this to the received FCS field % to determine if an error has occurred during transmission. % % In this example an IEEE 802.11ac waveform consisting of multiple VHT % format packets is generated. The function % <matlab:doc('wlanWaveformGenerator') wlanWaveformGenerator> can be used % to generate a waveform containing one or more packets. % <matlab:doc('wlanWaveformGenerator') wlanWaveformGenerator> consumes % physical layer service data units (PSDUs) for each packet and performs % the appropriate physical layer processing to create the waveform. In this % example a multi-packet baseband waveform with a MAC header and valid FCS % is synthesized. This waveform may be downloaded to a signal generator for % RF transmission and used for receiver PER testing. Source code is % provided to download and play the waveform using a Keysight Technologies(TM) % N5172B signal generator. The example processing is illustrated in the % following diagram: % % <<vhtWaveformExampleDiagram.png>> %% IEEE 802.11ac VHT Format Configuration % The format specific configuration of a VHT waveform synthesized with % <matlab:doc('wlanWaveformGenerator') wlanWaveformGenerator> is described % by a VHT format configuration object. The object is created using the % <matlab:doc('wlanVHTConfig') wlanVHTConfig> function. The properties of % the object contain the configuration. In this example an object is % configured for a 160 MHz bandwidth, 1 transmit antenna, 1 space-time % stream and QPSK rate 1/2 (MCS 1). vhtCfg = wlanVHTConfig; % Create packet configuration vhtCfg.ChannelBandwidth = 'CBW160'; % 160 MHz channel bandwidth vhtCfg.NumTransmitAntennas = 1; % 1 transmit antenna vhtCfg.NumSpaceTimeStreams = 1; % 1 space-time stream vhtCfg.MCS = 1; % Modulation: QPSK Rate: 1/2 %% Waveform Generation Configuration % The waveform generator <matlab:doc('wlanWaveformGenerator') % wlanWaveformGenerator> can be configured to generate one or more packets % and add an idle time between each packet. In this example four packets % with a 20 microsecond idle period will be created. numPackets = 4; % Generate 4 packets idleTime = 20e-6; % 20 microseconds idle period after packet %% % The PSDU transmitted in each packet is scrambled using a random seed for % each packet. This is accomplished by specifying a vector of scrambler % initialization seeds. The valid range of the seed is between 1 and 127 % inclusive. % Initialize the scrambler with a random integer for each packet scramblerInitialization = randi([1 127],numPackets,1); %% Create a PSDU Containing a MAC Header, Body and FCS for each Packet % For an IEEE 802.11ac data transmission the MAC frame is termed a MAC % protocol data unit (MPDU), the MAC header is termed the MPDU header, and % the frame body is an aggregated MAC service data unit (A-MSDU). One or % more MPDUs are delimited, padded and aggregated to create an aggregated % MPDU (A-MPDU). The A-MPDU is delimited and padded to form the physical % layer service data unit (PSDU) which is coded and modulated to create the % transmitted packet. This process of encapsulation is shown in the % following diagram: % % <<vhtWaveformGenerationEncapsulation.png>> % % In this example a PSDU is created containing a single MPDU for each % packet. The MPDU consists of an MPDU header containing no content, random % frame body and valid FCS. The helper function % <matlab:edit('vhtWaveformMACHeader.m') vhtWaveformMACHeader.m> creates a % MPDU header with no content. A CRC is used to generate the FCS for the % A-MPDU. The 32 bit long FCS is appended to the MPDU header and frame % body. % % The helper function <matlab:edit('vhtWaveformGeneratePSDU.m') % vhtWaveformGeneratePSDU.m> pads and delimits the MPDU to form a PSDU % ready for physical layer processing and transmission by % <matlab:doc('wlanWaveformGenerator') wlanWaveformGenerator> as specified % in IEEE Std 802.11ac-2013 [ <#11 1> ]. The MPDU bits are delimited and % form an A-MPDU containing a single MPDU. The length of this A-MPDU in % bytes is the APEP Length, and the appropriate |vhtCfg.APEPLength| % property of the VHT configuration object is set accordingly. The A-MPDU % is then padded to form a PSDU of the required length, ready for physical % layer processing. A PSDU is generated for each packet and is concatenated % into a vector |data| for transmission with % <matlab:doc('wlanWaveformGenerator') wlanWaveformGenerator>. The % processing to create the concatenated PSDU bits |data| is shown in the % diagram below: % % <<vhtWaveformMPDUProcessing.png>> % Generate FCS and form MPDU, IEEE Std 802.11-2012 Section 8.2.4 crcGenerator = comm.CRCGenerator([32 26 23 22 16 12 11 10 8 7 5 4 2 1 0]); crcGenerator.InitialConditions = 1; crcGenerator.DirectMethod = true; crcGenerator.FinalXOR = 1; data = []; for i=1:numPackets % Generate a payload for the frame body, a random A-MSDU of 4048 octets amsdu = randi([0 1],4048*8,1); mpduHeader = vhtWaveformMACHeader; % Create MPDU with header, body and FCS mpdu = crcGenerator([mpduHeader; amsdu]); % Delimit and pad the MPDU to form the PSDU for a single packet [psdu,vhtCfg] = vhtWaveformGeneratePSDU(mpdu,vhtCfg); % Concatenate packet PSDUs for waveform generation data = [data; psdu]; %#ok<AGROW> end %% Generate a Baseband Waveform % The concatenated PSDU bits for all packets, |data|, are passed as an % argument to <matlab:doc('wlanWaveformGenerator') wlanWaveformGenerator> % along with the VHT packet configuration object |vhtCfg|. This configures % the waveform generator to synthesize an 802.11ac VHT waveform. To % generate 802.11n HT or other format waveforms different configuration % objects are used such as those created by <matlab:doc('wlanHTConfig') % wlanHTConfig> or <matlab:doc('wlanNonHTConfig') wlanNonHTConfig>. The % waveform generator is additionally configured using name-value pairs to % generate multiple packets with a specified idle time between packets, and % initial scrambler states. % Generate baseband VHT packets txWaveform = wlanWaveformGenerator(data,vhtCfg, ... 'NumPackets',numPackets,'IdleTime',idleTime, ... 'ScramblerInitialization',scramblerInitialization); fs = helperSampleRate(vhtCfg); disp(['Baseband sampling rate: ' num2str(fs/1e6) ' Msps']); %% % The magnitude of the baseband waveform is displayed below. Note the % number of packets and idle time configured. figure; plot(abs(txWaveform)); xlabel('Sample index'); ylabel('Magnitude'); title('Baseband IEEE 802.11ac Waveform'); legend('Transmit antenna 1'); %% % The frequency spectrum of the generated time domain waveform, % |txWaveform|, can be viewed using the % <http://www.mathworks.com/products/dsp-system/ DSP System Toolbox(TM)> % <matlab:doc('dsp.SpectrumAnalyzer') spectrum analyzer>. As expected, the % 160 MHz signal bandwidth is clearly visible at baseband. spectrumAnalyzer = dsp.SpectrumAnalyzer; spectrumAnalyzer.SampleRate = fs; spectrumAnalyzer.SpectrumType = 'Power density'; spectrumAnalyzer.RBWSource = 'Property'; spectrumAnalyzer.RBW = 100e3; spectrumAnalyzer.FrequencySpan = 'Span and center frequency'; spectrumAnalyzer.Span = fs; spectrumAnalyzer.SpectralAverages = 10; spectrumAnalyzer.YLabel = 'PSD'; spectrumAnalyzer.YLimits = [-80 -40]; spectrumAnalyzer.Title = 'Baseband IEEE 802.11ac Waveform'; spectrumAnalyzer(txWaveform); %% Generate an Over-the-Air Signal using an RF Signal Generator % The baseband waveform created by WLAN System Toolbox can now be % downloaded to a signal generator to perform receiver tests. % <http://www.mathworks.com/products/instrument/ Instrument Control Toolbox(TM)> % is used to generate an RF signal with a center frequency of 5.25 GHz RF % using the Keysight Technologies N5172B signal generator. % Control whether to download the waveform to the waveform generator playOverTheAir = false; % Download the baseband IQ waveform to the instrument. Generate the RF % signal at a center frequency of 5.25 GHz and output power of -10 dBm. if playOverTheAir fc = 5.25e9; %#ok<UNRCH> % Center frequency power = -10; % Output power hDownloadAndPlayWaveformUsingN5172B('192.168.0.1',txWaveform, ... fs,fc,power); end %% Appendix % This example uses the following helper functions: % % * <matlab:edit('vhtWaveformMACHeader.m') vhtWaveformMACHeader.m> % * <matlab:edit('vhtWaveformGeneratePSDU.m') vhtWaveformGeneratePSDU.m> % * <matlab:edit('hDownloadAndPlayWaveformUsingN5172B.m') hDownloadAndPlayWaveformUsingN5172B.m> % * <matlab:edit('helperSampleRate.m') helperSampleRate.m> %% Selected Bibliography % # IEEE Std 802.11ac(TM)-2013 IEEE Standard for Information technology - % Telecommunications and information exchange between systems - Local and % metropolitan area networks - Specific requirements - Part 11: Wireless % LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications - % Amendment 4: Enhancements for Very High Throughput for Operation in Bands % below 6 GHz. displayEndOfDemoMessage(mfilename)