Modulation Schemes for Frequency Hopped PHYs

by
Lourens Van Der Jagt
Knowledge Implementations, Inc.
32 Conklin Road, Warwick, NY 10990
Voice  (914) 986-3492
Fax (914) 986-6441
Email:kiilvdj@attmail.com

Commercial Introduction

The code listed in this document is executable using Wolfram Research's Mathematica.  This code has been developed by Knowledge Implementations Inc. and is considered to be Proprietary property of Knowledge Implementations, Inc.   KII makes no represententation regarding the suitability of this code for use in any analysis.  This code is distributed as shareware if you find the code useful, we would appreciate the payment of a shareware fee of $50.00 to be sent to Knowledge Implementations, Inc. 32 Conklin Road, Warwick, NY 10990 (U.S. Federal Tax ID. 22-2579700), ATTN:Document IEEE p802.11-93/32 Shareware. This code will be posted in soft form on the Californica Microwave Bulletin Board and on MathSource at Wolfram Research, Inc..

Abstract

Three possible waveforms that appear to be close to the emission mask requirements imposed by FCC Part 15.247 for frequency hopped PHY's operating at 1 MBps are presented.  One of these is .39 GMSK as proposed by Motorola at Agoura Hills, one is a variant of quaternary CPFSK as proposed by California Microwave and the final one is a duobinary scheme being introduced in this paper by KII.  The intent of this document is to provide a first cut at a very explicit definition of the waveform for a common air interface that might be standardized.

Transmitted Waveform Generation

The following cells define the transmit waveform for an arbitrary CPFSK waveform.  In general, the first set of cells build an information table containing random data.  The next set of cells defines the necessary parameters of the modulation scheme including the modulation index h and the iffrequency to be used.  Also defined are the alphabet size M the symbol time T and the amplitude.  The third cell calculates the phase history of the signal for later use in the generation of the transmit signal.   The fourth cell defines the modulation waveshaping function q.  A cell farther down in the code illustrates a function that generates the q function for techniques that use gaussian premodulation filters.

Finally, the cell that actually defines the transmit signal is listed.  This signal generating function uses the parameter, duration, that tells how long it takes for the impact of a particular information bit to be fully reflected in the phase of the transmitted signal and uses this information along with the phase history vector calculated earlier to generate the waveform.  The cells listed below were used to generate streams of data 10000 bits long that were stored to disk.  The illustrations of power spectrum read this stored data from disk and perform the required calculations.

(*Execute this cell if you are using a binary alphabet (including Duobinary)*)
Clear[info];SeedRandom[1];
info=Table[2 Random[Integer]-1,{10000}];

(*Execute this cell if you are using a quaternary alphabet*)
Clear[info];SeedRandom[1];
info=Table[2 Random[Integer,{1,4}]-5,{10000}];

(*This cell defines and executes the differential encoding function used
for Duobinary signalling*)
differntialinfo[a_,b_]:=-1/;(a==1&&b==1)||(a==-1&&b==-1);
differntialinfo[a_,b_]:=1/;(a==-1&&b==1)||(a==1&&b==-1);
diffinfo[information_]:=FoldList[differntialinfo,1,information];
info=diffinfo[info];

(*This cell defines the parameters for .39 GMSK*)
amplitude=1.;iffrequency=1.0;T=1;M=2;h=.5;
makegaussianq[.39,1];

(*This cell defines the parameters for Duobinary*)
amplitude=1.;iffrequency=1.0;T=1;M=2;h=.5;duration=2;
Clear[q]
q[t_]:=t/(2 duration T)/;t>=0&&t<=duration T;
q[t_]:=0/;t<0;
q[t_]:=1/2;t>duration T;

(*This cell defines the parameters for quaternary CPFSK*)
amplitude=1.;iffrequency=1.0;T=2;M=4;h=.25;duration=1;
Clear[q]
q[t_]:=t/(2 duration T)/;t>=0&&t<=duration T;
q[t_]:=0/;t<0;
q[t_]:=1/2;t>duration T;

(*This cell calculates the phase history vector for any of the schemes*)
Clear[theta];x=0;
theta=Table[x+=Pi h info[[k]]//N,{k,1,Length[info]}];

(*This cell defines the actual transmit waveform function for all cases*)
s[t_]:=0./;t<=(duration T);
s[t_]:=N[amplitude Cos[2 Pi iffrequency t+theta[[(n=Floor[t/T])-duration+1]]+
       Apply[Plus,Table[2 Pi h info[[k+1]] q[t-k T],
		{k,n-duration+1,n}]]]]/;t>(duration T);

Plot[s[t],{t,0,7},PlotRange->All,PlotStyle->Thickness[.001]]

The following cell defines a function that generates the q function required if a gaussian premodulation filter is used.  This function accepts two parameters, the first being the bandwidth symbol time product and the second being the symbol time.

makegaussianq[bt_,bitperiod_]:=(kg=N[Sqrt[2/Log[2]] Pi];
	filterb=bt;
	width=-1 (Ceiling[1/(2 bt)]);
	duration=(-2 width)+1;
	p[t_]:=(Erf[-1 kg filterb (t-bitperiod/2)]+
			Erf[kg filterb (t+bitperiod/2)])/(bitperiod 4);
	qfunc=Table[NIntegrate[p[t],{t,width,k}],
		{k,width,-1 width,.1}];
	gaussq=Interpolation[Table[{n/10,qfunc[[n+1]]}//N,
		{n,0,Length[qfunc]-1}]];
	Clear[q];
	q[t_]:=0/;t<0;
	q[t_]:=gaussq[t]/;0<=t<=(-2 width);
	q[t_]:=.5/;t>(-2 width))

Power Spectra of Proposed Waveforms

The cells that follow display simulated power spectrum of the above defined waveforms based on a sample of 200 bits of random data.  Also displayed is the power spectrum of MSK data for comparision purposes.

MSK Transmit Signal

The next set of cells calculates and plots the theoretical spectrum of an MSK signal tranmsitting random data.

Table[(16/(Pi Pi)) ((Cos[2 Pi f])/(1-16 f f))^2,{f,0,4,.005}];

10 Log[10,N[%]]+10;

ListPlot[Flatten[Join[Reverse[Take[%,{1,200}]],Take[%,{1,600}]]]
,PlotRange->{20,-60},PlotJoined->True,PlotStyle->{Thickness[.001]}]

Duobinary Transmit Signal

The next set of cells calculates and plots the spectrum of a duobinary data stream.  This spectrum is plotted in conjunction with the MSK plot generated above and the 20 dB bandwidth is calculated.

insig=OpenRead["Hard Disk:DUOBINSIG.MAC"];
txsignal=Table[N[Read[insig]],{8000}];
Fourier[txsignal];
test2Q=Abs[%] Abs[%];
ListPlot[10 Log[10,Take[test2Q,800]],
	PlotJoined->True,PlotRange->All,
PlotStyle->{Thickness[.001],RGBColor[0,1,0]}]
Close[insig];

tt=Max[test2Q];
ttt=Flatten[Position[Take[test2Q,400],x_/;x>(tt/100)]];
Print["Twenty dB width in KHz is ",N[5 (Max[ttt]-Min[ttt])]]

Show[Out[3],Out[28]]

.39 GMSK Transmit Signal

The next set of cells calculates and plots the spectrum of a .39 GMSK data stream.  This spectrum is plotted in conjunction with the MSK plot generated above and the 20 dB bandwidth is calculated.

insig=OpenRead["Hard Disk:GMSKSIG.MAC"];
txsignal=Table[N[Read[insig]],{8000}];
Fourier[txsignal];
test2Q=Abs[%] Abs[%];
ListPlot[10 Log[10,Take[test2Q,800]],
	PlotJoined->True,PlotRange->All,
PlotStyle->{Thickness[.001],RGBColor[0,0,1]}]
Close[insig];

tt=Max[test2Q];
ttt=Flatten[Position[Take[test2Q,400],x_/;x>(tt/100)]];
Print["Twenty dB width in KHz is ",N[5 (Max[ttt]-Min[ttt])]]

Show[Out[14],Out[5]]

Quaternary CPFSK Transmit Signal

The next set of cells calculates and plots the spectrum of a quaternary CPFSK data stream with T=2 and h=.25 using square pulse waveshaping.  This spectrum is plotted in conjunction with the MSK plot generated above and the 20 dB bandwidth is calculated.

insig=OpenRead["QUADCPSK.SIG"];
txsignal=Table[N[Read[insig]],{8000}];
Fourier[txsignal];
test2Q=Abs[%] Abs[%];
ListPlot[10 Log[10,Take[test2Q,800]],
	PlotJoined->True,PlotRange->All,
PlotStyle->{Thickness[.001],RGBColor[0,0,1]}]
Close[insig];

tt=Max[test2Q];
ttt=Flatten[Position[Take[test2Q,400],x_/;x>(tt/100)]];
Print["Twenty dB width in KHz is ",N[5 (Max[ttt]-Min[ttt])]]

Conclusion

The cells in this notebook provide the ability to generate an CPFSK waveform and to exhibit a sample of the tranmsit power spectrum of that waveform.  The waveforms generated above can be used in conjunction with channel, interference, noise and filter simulations to determine the expected BER performance of a specific modulation/demodulation combination.