No BSD License  

Highlights from
UWB Fixed-Point Model (Multiband OFDM)

image thumbnail

UWB Fixed-Point Model (Multiband OFDM)

by

 

04 Mar 2004 (Updated )

Ultrawideband (UWB) multiband OFDM physical layer with fixed-point transmitter/receiver modeling.

UWB_settings(OFDMDataSymPerFrame, OFDMWordLength);
function params = UWB_settings(OFDMDataSymPerFrame, OFDMWordLength);

% Modulation and coding
p.bitsPerBlock = 125; 
p.trellisStructure = poly2trellis(7, [133 145 175]);
p.punctureVector = [1 0 1 1 0 0 1 0 1 0 0 1 1 0 1].';
p.codeRate = 5/8;
p.codedBitsPerBlock = p.bitsPerBlock / p.codeRate;
p.codedBitsPerQPSKSymbol = 2;
p.spreadFactor = 2;

% OFDM/FFT
p.NSD = 100;  % data subcarriers in OFDM symbol (variable name as in IEEE 802.15.3a proposal)
p.NST = 122;  % subcarriers used in OFDM symbol (variable name as in IEEE 802.15.3a proposal)
p.NFFT = 128; % number of points for FFT
p.NCyclicPrefix = 32;
p.NFFT2 = p.NFFT + p.NCyclicPrefix;

% FFT-related indices
p.TXFFTShiftIndices = [p.NST/2+1:p.NFFT 1:p.NST/2];
p.TXCyclicPrefixIndices = [p.NFFT-[p.NCyclicPrefix-1:-1:0] 1:p.NFFT];
p.RXCyclicPrefixIndices = [p.NCyclicPrefix+1:p.NFFT2];
p.RXSelectFFTIndices = [p.NFFT-[p.NST/2-1:-1:0] 1:p.NST/2+1];

% Number of OFDM symbols
p.OFDMDataSymPerFrame = OFDMDataSymPerFrame;  % payload
p.OFDMSpreadSymPerFrame = OFDMDataSymPerFrame * p.spreadFactor;
p.CEPerFrame = 6;  % channel estimation preamble
p.PSPerFrame = 3;  % Packet sync sequence
p.FSPerFrame = 6;  % Frame sync sequence
p.OFDMTotSymPerFrame = p.OFDMSpreadSymPerFrame + p.CEPerFrame + p.PSPerFrame + p.FSPerFrame;
p.NGuard = 5;  % Guard period (samples)

%p.filterDelay = 2;  % OFDM frame delay for tx/rx filtering

% Viterbi trace back depth and link delay
p.vtbd = 34;
p.linkDelay = (floor(p.OFDMSpreadSymPerFrame/2)+3)*3*p.bitsPerBlock+p.vtbd - 250;

% Fixed point word length and data type
p.OFDMWordLength = OFDMWordLength;
p.OFDMDataType = sfix(OFDMWordLength);  % Signed

% Channel
p.channel.chan = 1;
p.channel.chan_idx = 12;

p.PSSequence = PSMatrix;
p.FSSequence = -p.PSSequence;

% Channel estimation sequence (frequency domain)
CM = CEMatrix;
p.CESequence = [CM(11:15).'; CM(1:56).'; 0; CM(57:112).'; CM(11:15).'];
% make sure user defined pilots are compatible

% Timing-related parameters
p.W = 528e6;  % two-sided bandwidth (output samples)
p.bitPeriod = 1/p.W ...
            * 1/p.codeRate ...
            * (p.NFFT2+p.NGuard)/p.NSD ...
            * p.OFDMTotSymPerFrame/p.OFDMSpreadSymPerFrame;

params = p;


function s = CEMatrix;
s = [...
 1-j	 1-j	 1+j	 1+j
-1+j	 1-j	-1-j	-1-j
-1+j	-1+j	 1+j	-1-j
 1-j	-1+j	-1-j	 1+j
 1-j	-1+j	-1-j	-1-j
 1-j	 1-j	-1-j	-1-j
-1+j	-1+j	-1-j	-1-j
 1-j	-1+j	-1-j	 1+j
-1+j	 1-j	 1+j	-1-j
-1+j	-1+j	 1+j	 1+j
-1+j	-1+j	 1+j	-1-j
 1-j	-1+j	-1-j	-1-j
-1+j	-1+j	 1+j	-1-j
-1+j	 1-j	-1-j	-1-j
-1+j	-1+j	 1+j	-1-j
-1+j	 1-j	-1-j	-1-j
-1+j	-1+j	-1-j	 1+j
-1+j	 1-j	-1-j	-1-j
 1-j	 1-j	-1-j	-1-j
-1+j	 1-j	 1+j	-1-j
 1-j	-1+j	-1-j	 1+j
-1+j	-1+j	-1-j	-1-j
-1+j	-1+j	 1+j	 1+j
-1+j	-1+j	-1-j	 1+j
 1-j	-1+j	-1-j	 1+j
-1+j	 1-j	-1-j	-1-j
-1+j	-1+j	 1+j	-1-j
 1-j	 1-j	 1+j	 1+j
]/sqrt(2);

function s = PSMatrix;
s = [...
 1   1   1   1
 1   1  -1  -1
 1  -1   1  -1
-1   1   1  -1
-1   1  -1   1
 1  -1  -1   1
-1  -1  -1  -1
-1  -1   1   1
-1   1  -1   1
-1   1   1  -1
-1  -1  -1  -1
 1   1  -1  -1
 1   1   1   1
-1  -1   1   1
 1  -1   1  -1
 1  -1  -1   1
-1  -1  -1   1
-1  -1   1  -1
-1   1  -1  -1
 1  -1  -1  -1
 1  -1   1   1
-1   1   1   1
 1   1   1  -1
 1   1  -1   1
 1  -1  -1   1
 1  -1   1  -1
 1   1  -1  -1
-1  -1  -1  -1
-1  -1   1   1
 1   1   1   1
-1   1   1  -1
-1   1  -1   1
-1  -1  -1  -1
-1  -1   1   1
-1   1  -1   1
 1  -1  -1   1
 1  -1   1  -1
-1   1   1  -1
 1   1   1   1
 1   1  -1  -1
 1   1  -1  -1
 1   1   1   1
 1  -1  -1   1
-1   1  -1   1
-1   1   1  -1
 1  -1   1  -1
-1  -1   1   1
-1  -1  -1  -1
-1  -1   1   1
-1  -1  -1  -1
-1   1   1  -1
 1  -1   1  -1
 1  -1  -1   1
-1   1  -1   1
 1   1  -1  -1
 1   1   1   1
-1  -1  -1   1
-1  -1   1  -1
-1   1  -1  -1
 1  -1  -1  -1
 1  -1   1   1
-1   1   1   1
 1   1   1  -1
 1   1  -1   1
 1  -1   1  -1
 1  -1  -1   1
 1   1   1   1
-1  -1   1   1
-1  -1  -1  -1
 1   1  -1  -1
-1   1  -1   1
-1   1   1  -1
 1   1  -1  -1
 1   1   1   1
 1  -1  -1   1
-1   1  -1   1
-1   1   1  -1
 1  -1   1  -1
-1  -1   1   1
-1  -1  -1  -1
-1  -1  -1   1
-1  -1   1  -1
-1   1  -1  -1
 1  -1  -1  -1
 1  -1   1   1
-1   1   1   1
 1   1   1  -1
 1   1  -1   1
-1  -1   1  -1
-1  -1  -1   1
-1   1   1   1
 1  -1   1   1
 1  -1  -1  -1
-1   1  -1  -1
 1   1  -1   1
 1   1   1  -1
-1   1   1   1
-1   1  -1  -1
-1  -1   1  -1
 1   1   1  -1
 1   1  -1   1
-1  -1  -1   1
 1  -1  -1  -1
 1  -1   1   1
-1  -1  -1  -1
-1  -1   1   1
-1   1  -1   1
 1  -1  -1   1
 1  -1   1  -1
-1   1   1  -1
 1   1   1   1
 1   1  -1  -1
-1   1  -1   1
-1   1   1  -1
-1  -1  -1  -1
 1   1  -1  -1
 1   1   1   1
-1  -1   1   1
 1  -1   1  -1
 1  -1  -1   1
 1   1   1   1
 1   1  -1  -1
 1  -1   1  -1
-1   1   1  -1
-1   1  -1   1
 1  -1  -1   1
-1  -1  -1  -1
-1  -1   1   1
];

Contact us