cd[NotebookDirectory[]];

Bit diagram

Bar[x_,y1_,y2_]:={
Line[{{x,y1},{x,y2}}],
Line[{{x-0.5,y1},{x+0.5,y1}}],
Line[{{x-0.5,y2},{x+0.5,y2}}]
};
ts1=BaseStyle->{FontSize->20};
ts2=BaseStyle->{FontSize->18};
Graphics[{
Bar[0,0,12],
Bar[5,3,18],
Bar[10,8,18],
Dashing[{0.02}],
Line[{{-5,12},{7,12}}],
Line[{{-5,0},{2,0}}],
Line[{{3,3},{15,3}}],
Line[{{8,8},{15,8}}],
Line[{{2,18},{15,18}}],
Text["(Subscript[w, 1])",{-5,6},{-1,0},ts2],
Text["(Subscript[w, 2])",{15,13},{1,0},ts2],
Text["ofl",{2,15},{-1,0},ts2],
Text["in",{0,0},{0,1.5},ts1],
Text["accum",{5,3},{0,1.5},ts1],
Text["out",{10,8},{0,1.5},ts1],
Text["apb",{15,11/2},{1,0},ts2]
}]

Export["AccumulatorBits.png",%,ImageSize->250]

Bar[x_,y1_,y2_]:={
Line[{{x,y1},{x,y2}}],
Line[{{x-0.5,y1},{x+0.5,y1}}],
Line[{{x-0.5,y2},{x+0.5,y2}}]
};
SignBit[x_,y_]:=Line[{{x-0.35,y-0.5},{x+0.35,y-0.5}}];
ts1=BaseStyle->{FontSize->18};
ts2=BaseStyle->{FontSize->16};
Graphics[{
Bar[0,0,12],SignBit[0,12],SignBit[0,11.5],
Bar[5,3,18],SignBit[5,18],
Bar[10,8,18],SignBit[10,18],
Bar[-5,0,7],SignBit[-5,7],
Bar[-5,7,12],SignBit[-5,12],
Dashing[{0.015}],
Line[{{-8,12},{0,12}}],
Line[{{0,11.5},{4,11.5}}],
Line[{{-6,12},{0,12}}],
Line[{{-8,7},{-5,7}}],
Line[{{3,3},{13,3}}],
Line[{{8,8},{13,8}}],
Line[{{2,18},{13,18}}],
Line[{{-8,0},{2,0}}],
Text["wi1",{-8,9.5},{-1,0},ts2],
Text["wi2",{-8,3.5},{-1,0},ts2],
Text["wo",{13,13},{1,0},ts2],
Text["ofl",{2,14.5},{-1,0},ts2],
Text["prod",{0,0},{0,1.5},ts1],
Text["in1,2",{-5,0},{0,1.5},ts1],
Text["accum",{5,3},{0,1.5},ts1],
Text["out",{10,8},{0,1.5},ts1],
Text["apb",{13,11/2},{1,0},ts2]
}]

Export["SignedMultiplyAccumulateBits.png",%,ImageSize->350]

ff table and rf output data path figure
9/26/12

Module[
{h=1,d=2,tbx,tb,r},
tb[{x_,y_},w_,t_]:=
Line[{{x-w/2,y-h/2},{x-w/2,y+h/2},{x+w/2,y+h/2},{x+w/2,y-h/2},{x-w/2,y-h/2}}];
r={Arrowheads[0.14],
FoldList[
Module[
{y0=#1[[-1,1,-1,2]]-h/2,aux},
aux=If[Length[#2]>3,#2[[4]][y0],{}];
{
tbx[{0,y0},#2[[1]],#2[[2]]],
Text[Style[#2[[2]],FontSize->16],{0,y0},{0,0}],
Text[Style[#2[[3]],FontSize->14],{0.2,y0-d/2},{-1,0}],
aux,
Arrow[{{0,y0-h/2},{0,y0-d+h/2}}]
}
]&,
{
Text["Host interface",{0,d-h/2},{0,-1}],
Arrow[{{0,d-h/2},{0,h/2}}]
},
{
{1.5,"ff table","ff01"},
{1,"(z^(-n))","ff02"},
{1.5,"Network\nanalyzer","ff03\n(dout40)"},
{1.3,"jump5","din1_2",{Arrow[{{-1.5,#},{-1.3/2,#}}],
Text["fb_out",{-1.3/2,#},{1.2,-1.5}]}&},
{1.6,"Limiter","limOut"},
{1.8,"RFInhibit","inhOut"},
{2,"Up convert","ID",Text["DAC",{0,#-d+h/2},{0,1}]&}
}
]/.tbx->tb};
Graphics[r,ImageSize->140,BaseStyle->{FontSize->16}]
]

Export["FFDrivePath.png",%]

CoRotator.v figure
12/26/12

Module[
{vref=(E^(I 2.8)),vin=1.2(E^(I 0.8)),vmag,vout,voutp,ts=TextStyle->{FontSize->14}},
vmag=Abs[vin];
vout=vref/(vin/Abs[vin]);
voutp=vref/Conjugate[vin/Abs[vin]];
f[x_]:={Re[x],Im[x]};
Graphics[{
Arrow[{{0,0},f[#]}]&/@{vref,vin,vmag,vout},

Text["(Subscript[I, in]), (Subscript[Q, in])",f[vin],{-1,-1},ts],
Text["(Subscript[I, mag]), (Subscript[Q, mag])",f[vmag],{-1,-1},ts],
Circle[{0,0},0.7,Arg[vin]+{-Arg[vin],0}],
Arrow[f/@(0.7vmag/Abs[vmag]{(1+0.001I),1})],

Text["(Subscript[I, ref]), (Subscript[Q, ref])",f[vref],{-1,-1.7},ts],
Text["(Subscript[I, out]), (Subscript[Q, out]) (direction = 0)",f[vout],{-1,-1},ts],
Circle[{0,0},0.7,Arg[vref]+{-Arg[vin],0}],
Arrow[f/@(0.7vout/Abs[vout]{(1+0.001I),1})],

Dashing[{0.015}],
Arrow[{{0,0},f[#]}]&/@{voutp},
Text["(Subscript[I, out]), (Subscript[Q, out]) (direction = 1)",f[voutp],{-1,1},ts],
Circle[{0,0},0.7,-Arg[vref]+{-Arg[vin],0}],
Arrow[f/@(0.7voutp/Abs[voutp]{(1-0.001I),1})],

Text[Style["mag = 0\mode",Bold,TextAlignment->Right],Scaled[{1,0}],{-1,0},ts]
}]
]

Export["CoRotatorFigure1.png",%,ImageSize->350];

Module[
{vref=1,vin=1.3(E^(I 2)),vmag,vout,voutp,ts=TextStyle->{FontSize->14}},
vmag=Conjugate[vin];
vout=vref/(vin/Abs[vin]);
voutp=vref/Conjugate[vin/Abs[vin]];
f[x_]:={Re[x],Im[x]};
Graphics[{
Arrowheads[0.08],
Arrow[{{0,0},f[#]}]&/@{vref,vin,vout},

Text["(Subscript[I, in]), (Subscript[Q, in])",f[vin],{-1.6,0},ts],
Text["(Subscript[I, mag]), (Subscript[Q, mag])",{1,0},{-0.8,1.2},ts],
Circle[{0,0},0.7,Arg[vin]+{-Arg[vin],0}],
Arrow[f/@(0.7vmag/Abs[vmag]{(1+0.001I),1})],
Arrow[f/@(0.7{(1+0.001I),1})],

Text["I=mag, Q=0",f[vref],{-0.8,-1.4},ts],
Text[Style["(Subscript[I, out]), (Subscript[Q, out])\n(direction = 0)",TextAlignment->Left],f[(E^(-0.05I))vout],{-1.3,1},ts],
Circle[{0,0},0.7,Arg[vref]+{-Arg[vin],0}],
Arrow[f/@(0.7vout/Abs[vout]{(1+0.001I),1})],

Dashing[{0.015}],
Arrow[{{0,0},f[#(E^(-0.05I))]}]&/@{voutp},
Text["(Subscript[I, out]), (Subscript[Q, out]) (direction = 1)",f[voutp],{-1.3,0},ts],
Circle[{0,0},0.6,Arg[vref]+{0,Arg[vin]-0.05}],
Arrow[f/@(0.6(E^(-0.05I))voutp/Abs[voutp]{(1-0.001I),1})],

Text[Style["mag > 0",Bold,TextAlignment->Right],Scaled[{1,0}],{-1,1},ts]
},ImageSize->200]
]

Export["CoRotatorFigure2.png",%];

SC flag and gain figure
1/8/13

Module[
{r=Log[100]},
Show[
LogLogPlot[Abs[1/(1+I x)],{x,0.01,100},PlotStyle->Red],
LogLogPlot[Abs[1+I/x],{x,0.01,100},PlotStyle->Blue],
Graphics[{
Dashing[{0.02}],Line[{{0,-r},{0,r}}],
Text["Cavity",{1,-1}2,{-1,-1}],
Text["Feedback",-3{1,-1},{-1,-1}]
}],
PlotRange->{-1,1}r,
AspectRatio->0.8,
FrameTicks->{{{0,"pole"}},None},
ImageSize->250
]
]

Export["SCPoleZero.png",%];

Network analyser slices
9/19/2014

ListPlot[
{{0,41},{2,45},{5,48},{8,50},{11,52},{15,57}},
Axes->False,
Frame->True,
PlotRange->{{0,16},{40,60}},
PlotStyle->{PointSize[0.02]},
BaseStyle->{FontSize->14},
FrameLabel->{"Channels instantiated","Slices consumed (%)"}
]

Inter-system timing
2/3/2015

Module[
{d,dt=0.4,bits},
bits=RandomInteger[{0,1},60];
d=Graphics[{Line[Flatten[FoldList[
{{#1[[-1,1]],#2},{#1[[-1,1]]+dt,#2}}&,
{{0,0}},
bits
],1]
]}]
]

Clear[clock];
clock[period_,count_,vert_]:=Module[
{d,dt=period/2},
d=Graphics[{Line[Flatten[NestList[
{{#[[-1,1]],1-#[[-1,2]]},{#1[[-1,1]]+dt,1-#[[-1,2]]}}&,
{{0,0}},
count
],1]
]}/.{x:real,y:real}->{x,y+vert}]
]

Show[
clock[1,100,0],
clock[4,25,-2],
clock[25/2,8,-4]
]