forked from Github_Repos/cvw
509 lines
11 KiB
Mathematica
509 lines
11 KiB
Mathematica
|
%
|
||
|
% PD Region for Np = 3; Nd = 4;
|
||
|
% w/CPA
|
||
|
%
|
||
|
% Clear all variables and screen
|
||
|
clear
|
||
|
clf
|
||
|
% Define the number of bits (input Dividend)
|
||
|
n = 4;
|
||
|
%
|
||
|
% Define Divisor Range
|
||
|
% Normalized Floating Point [Dmin,Dmax] = [1,2]
|
||
|
% Normalized Fixed Point [Dmin, Dmax] =[1/2,1]
|
||
|
%
|
||
|
Dminimum = 1.0/2;
|
||
|
Dmaximum = 2.0/2;
|
||
|
% Define an ulp
|
||
|
ulp = 2^(-n);
|
||
|
% radix = beta
|
||
|
beta = 4;
|
||
|
% rho = redundancy factor -> SHOULD ALWAYS BE >= THAN 1/2
|
||
|
%
|
||
|
% SD representations have alpha < beta - 1
|
||
|
%
|
||
|
% alpha = ceil(beta/2) minimially redundant
|
||
|
% alpha = beta -1 maximally redundant (rho = 1)
|
||
|
% alpha = (beta-1)/2 nonredundant
|
||
|
% alpha > beta - 1 over-redundant
|
||
|
%
|
||
|
rho = 2/3;
|
||
|
% Calculation of max digit set
|
||
|
alpha = rho*(beta-1);
|
||
|
% Da contains digit set
|
||
|
q = [];
|
||
|
for i = -alpha:alpha
|
||
|
q = [q; i];
|
||
|
end
|
||
|
% 4r(i-1)/D values
|
||
|
hold on
|
||
|
% figure(1)
|
||
|
grid off
|
||
|
for i = 1:length(q)
|
||
|
x = -rho+q(i):ulp:rho+q(i);
|
||
|
% Plot redundancy (overlap) Positive
|
||
|
z = [rho+q(i),rho+q(i)];
|
||
|
y = [x(length(x))-q(i),0];
|
||
|
% Plot redundancy (overlap) Negative
|
||
|
if (i ~= length(q))
|
||
|
w = [-rho+q(i+1)-q(i+1),0];
|
||
|
u = [-rho+q(i+1),-rho+q(i+1)];
|
||
|
% plot(u,w,'b')
|
||
|
end
|
||
|
% plot(x,x-q(i))
|
||
|
% plot(z,y,'r')
|
||
|
|
||
|
end
|
||
|
% title('Robertson Diagram for Radix-4 SRT Divison')
|
||
|
|
||
|
Np = 3;
|
||
|
Nd = 4;
|
||
|
Dmin = Dminimum;
|
||
|
Dmax = Dmaximum;
|
||
|
ulpd = 2^(-Nd);
|
||
|
ulpp = 2^(-Np);
|
||
|
|
||
|
%
|
||
|
% Plot Atkins P-D plot
|
||
|
% Normalized Floating Point [Dmin,Dmax] = [1,2]
|
||
|
% Normalized Fixed Point [Dmin, Dmax] =[1/2,1]
|
||
|
%
|
||
|
Dmin = Dminimum;
|
||
|
Dmax = Dmaximum;
|
||
|
for i = 1:length(q)
|
||
|
D = Dmin:ulp:Dmax;
|
||
|
P1 = (rho+q(i))*D;
|
||
|
P2 = (-rho+q(i))*D;
|
||
|
hold on
|
||
|
p1 = plot(D,P1);
|
||
|
p1.Color = '#0000ff';
|
||
|
p2 = plot(D,P2);
|
||
|
p2.Color = '#ff0000';
|
||
|
axis([Dmin Dmax -beta*rho*Dmaximum beta*rho*Dmaximum])
|
||
|
xticks(D)
|
||
|
p1.LineWidth = 2.0;
|
||
|
p2.LineWidth = 2.0;
|
||
|
end
|
||
|
|
||
|
% Let's make x/y axis binary
|
||
|
j = [];
|
||
|
for i=1:length(D)
|
||
|
j = [j disp_bin(D(i), 1, 4)];
|
||
|
end
|
||
|
yk = [];
|
||
|
yk2 = [];
|
||
|
for i=-2.5:0.5:2.5;
|
||
|
yk = [yk disp_bin(i, 3, 3)];
|
||
|
yk2 = [yk2 i];
|
||
|
end
|
||
|
xtickangle(90)
|
||
|
xticklabels(j)
|
||
|
yticklabels(yk)
|
||
|
|
||
|
% Let's draw allow points on PD plot
|
||
|
% Positive Portions
|
||
|
index = 1;
|
||
|
i = 0:ulpp:rho*beta*Dmaximum;
|
||
|
for j = Dmin:ulpd:Dmax
|
||
|
plot(j*ones(1,length(i)),i,'k')
|
||
|
end
|
||
|
|
||
|
j = Dmin:ulpd:Dmax;
|
||
|
for i = 0:ulpp:rho*beta*Dmaximum
|
||
|
plot(j,i*ones(length(j)),'k')
|
||
|
end
|
||
|
|
||
|
% Negative Portions
|
||
|
index = 1;
|
||
|
i = 0:-ulpp:rho*-beta*Dmaximum;
|
||
|
for j = Dmin:ulpd:Dmax
|
||
|
plot(j*ones(1,length(i)),i,'k')
|
||
|
end
|
||
|
|
||
|
j = Dmin:ulpd:Dmax;
|
||
|
for i = 0:-ulpp:-rho*beta*Dmaximum
|
||
|
plot(j,i*ones(length(j)),'k')
|
||
|
end
|
||
|
|
||
|
% Labels and Printing
|
||
|
xlh = xlabel(['Divisor (d)']);
|
||
|
%xlh.FontSize = 18;
|
||
|
xlh.Position(2) = xlh.Position(2) - 0.1;
|
||
|
ylh = ylabel(['P = 4 \cdot w_i']);
|
||
|
ylh.Position(1) = ylh.Position(1)-0.02;
|
||
|
%ylh.FontSize = 18;
|
||
|
|
||
|
% Containment Values (placed manually although not bad)
|
||
|
m2 = [3/4 7/8 1.0 1.0 5/4 5/4 5/4 3/2 3/2];
|
||
|
m1 = [1/4 1/4 1/4 1/4 1/2 1/2 1/2 1/2 1/2];
|
||
|
m0 = [-1/4 -1/4 -1/4 -1/4 -1/2 -1/2 -1/2 -1/2 -1/2];
|
||
|
m1b = [-3/4 -7/8 -1 -1 -5/4 -5/4 -5/4 -3/2 -3/2];
|
||
|
x2 = Dmin:ulpd:Dmax;
|
||
|
s2 = stairs(x2, m2);
|
||
|
s2.Color = '#8f08d1';
|
||
|
s2.LineWidth = 3.0;
|
||
|
%s2.LineStyle = '--';
|
||
|
s1 = stairs(x2, m1);
|
||
|
s1.Color = '#8f08d1';
|
||
|
s1.LineWidth = 3.0;
|
||
|
s0 = stairs(x2, m0);
|
||
|
s0.Color = '#8f08d1';
|
||
|
s0.LineWidth = 3.0;
|
||
|
s1b = stairs(x2, m1b);
|
||
|
s1b.Color = '#8f08d1';
|
||
|
s1b.LineWidth = 3.0;
|
||
|
|
||
|
% Place manually Quotient (ugh)
|
||
|
j = Dmin+ulpd/2:ulpd:Dmax;
|
||
|
i = rho*beta*Dmaximum-ulpp*3/4:-ulpp:-rho*beta*Dmaximum;
|
||
|
text(j(1), i(1), '2')
|
||
|
text(j(1), i(2), '2')
|
||
|
text(j(1), i(3), '2')
|
||
|
text(j(1), i(4), '2')
|
||
|
text(j(1), i(5), '2')
|
||
|
text(j(1), i(6), '2')
|
||
|
text(j(1), i(7), '2')
|
||
|
text(j(1), i(8), '2')
|
||
|
text(j(1), i(9), '2')
|
||
|
text(j(1), i(10), '2')
|
||
|
text(j(1), i(11), '2')
|
||
|
text(j(1), i(12), '2')
|
||
|
text(j(1), i(13), '2')
|
||
|
text(j(1), i(14), '2')
|
||
|
text(j(1), i(15), '2')
|
||
|
text(j(1), i(16), '1')
|
||
|
text(j(1), i(17), '1')
|
||
|
text(j(1), i(18), '1')
|
||
|
text(j(1), i(19), '1')
|
||
|
text(j(1), i(20), '0')
|
||
|
text(j(1), i(21), '0')
|
||
|
text(j(1), i(22), '0')
|
||
|
text(j(1), i(23), '0')
|
||
|
text(j(1), i(24), '-1')
|
||
|
text(j(1), i(25), '-1')
|
||
|
text(j(1), i(26), '-1')
|
||
|
text(j(1), i(27), '-1')
|
||
|
text(j(1), i(28), '-2')
|
||
|
text(j(1), i(29), '-2')
|
||
|
text(j(1), i(30), '-2')
|
||
|
text(j(1), i(31), '-2')
|
||
|
text(j(1), i(32), '-2')
|
||
|
text(j(1), i(33), '-2')
|
||
|
text(j(1), i(34), '-2')
|
||
|
text(j(1), i(35), '-2')
|
||
|
text(j(1), i(36), '-2')
|
||
|
text(j(1), i(37), '-2')
|
||
|
text(j(1), i(38), '-2')
|
||
|
text(j(1), i(39), '-2')
|
||
|
text(j(1), i(40), '-2')
|
||
|
text(j(1), i(41), '-2')
|
||
|
text(j(1), i(42), '-2')
|
||
|
|
||
|
text(j(2), i(1), '2')
|
||
|
text(j(2), i(2), '2')
|
||
|
text(j(2), i(3), '2')
|
||
|
text(j(2), i(4), '2')
|
||
|
text(j(2), i(5), '2')
|
||
|
text(j(2), i(6), '2')
|
||
|
text(j(2), i(7), '2')
|
||
|
text(j(2), i(8), '2')
|
||
|
text(j(2), i(9), '2')
|
||
|
text(j(2), i(10), '2')
|
||
|
text(j(2), i(11), '2')
|
||
|
text(j(2), i(12), '2')
|
||
|
text(j(2), i(13), '2')
|
||
|
text(j(2), i(14), '2')
|
||
|
text(j(2), i(15), '1')
|
||
|
text(j(2), i(16), '1')
|
||
|
text(j(2), i(17), '1')
|
||
|
text(j(2), i(18), '1')
|
||
|
text(j(2), i(19), '1')
|
||
|
text(j(2), i(20), '0')
|
||
|
text(j(2), i(21), '0')
|
||
|
text(j(2), i(22), '0')
|
||
|
text(j(2), i(23), '0')
|
||
|
text(j(2), i(24), '-1')
|
||
|
text(j(2), i(25), '-1')
|
||
|
text(j(2), i(26), '-1')
|
||
|
text(j(2), i(27), '-1')
|
||
|
text(j(2), i(28), '-1')
|
||
|
text(j(2), i(29), '-2')
|
||
|
text(j(2), i(30), '-2')
|
||
|
text(j(2), i(31), '-2')
|
||
|
text(j(2), i(32), '-2')
|
||
|
text(j(2), i(33), '-2')
|
||
|
text(j(2), i(34), '-2')
|
||
|
text(j(2), i(35), '-2')
|
||
|
text(j(2), i(36), '-2')
|
||
|
text(j(2), i(37), '-2')
|
||
|
text(j(2), i(38), '-2')
|
||
|
text(j(2), i(39), '-2')
|
||
|
text(j(2), i(40), '-2')
|
||
|
text(j(2), i(41), '-2')
|
||
|
text(j(2), i(42), '-2')
|
||
|
|
||
|
text(j(3), i(1), '2')
|
||
|
text(j(3), i(2), '2')
|
||
|
text(j(3), i(3), '2')
|
||
|
text(j(3), i(4), '2')
|
||
|
text(j(3), i(5), '2')
|
||
|
text(j(3), i(6), '2')
|
||
|
text(j(3), i(7), '2')
|
||
|
text(j(3), i(8), '2')
|
||
|
text(j(3), i(9), '2')
|
||
|
text(j(3), i(10), '2')
|
||
|
text(j(3), i(11), '2')
|
||
|
text(j(3), i(12), '2')
|
||
|
text(j(3), i(13), '2')
|
||
|
text(j(3), i(14), '1')
|
||
|
text(j(3), i(15), '1')
|
||
|
text(j(3), i(16), '1')
|
||
|
text(j(3), i(17), '1')
|
||
|
text(j(3), i(18), '1')
|
||
|
text(j(3), i(19), '1')
|
||
|
text(j(3), i(20), '0')
|
||
|
text(j(3), i(21), '0')
|
||
|
text(j(3), i(22), '0')
|
||
|
text(j(3), i(23), '0')
|
||
|
text(j(3), i(24), '-1')
|
||
|
text(j(3), i(25), '-1')
|
||
|
text(j(3), i(26), '-1')
|
||
|
text(j(3), i(27), '-1')
|
||
|
text(j(3), i(28), '-1')
|
||
|
text(j(3), i(29), '-1')
|
||
|
text(j(3), i(30), '-2')
|
||
|
text(j(3), i(31), '-2')
|
||
|
text(j(3), i(32), '-2')
|
||
|
text(j(3), i(33), '-2')
|
||
|
text(j(3), i(34), '-2')
|
||
|
text(j(3), i(35), '-2')
|
||
|
text(j(3), i(36), '-2')
|
||
|
text(j(3), i(37), '-2')
|
||
|
text(j(3), i(38), '-2')
|
||
|
text(j(3), i(39), '-2')
|
||
|
text(j(3), i(40), '-2')
|
||
|
text(j(3), i(41), '-2')
|
||
|
text(j(3), i(42), '-2')
|
||
|
|
||
|
text(j(4), i(1), '2')
|
||
|
text(j(4), i(2), '2')
|
||
|
text(j(4), i(3), '2')
|
||
|
text(j(4), i(4), '2')
|
||
|
text(j(4), i(5), '2')
|
||
|
text(j(4), i(6), '2')
|
||
|
text(j(4), i(7), '2')
|
||
|
text(j(4), i(8), '2')
|
||
|
text(j(4), i(9), '2')
|
||
|
text(j(4), i(10), '2')
|
||
|
text(j(4), i(11), '2')
|
||
|
text(j(4), i(12), '2')
|
||
|
text(j(4), i(13), '2')
|
||
|
text(j(4), i(14), '1')
|
||
|
text(j(4), i(15), '1')
|
||
|
text(j(4), i(16), '1')
|
||
|
text(j(4), i(17), '1')
|
||
|
text(j(4), i(18), '1')
|
||
|
text(j(4), i(19), '1')
|
||
|
text(j(4), i(20), '0')
|
||
|
text(j(4), i(21), '0')
|
||
|
text(j(4), i(22), '0')
|
||
|
text(j(4), i(23), '0')
|
||
|
text(j(4), i(24), '-1')
|
||
|
text(j(4), i(25), '-1')
|
||
|
text(j(4), i(26), '-1')
|
||
|
text(j(4), i(27), '-1')
|
||
|
text(j(4), i(28), '-1')
|
||
|
text(j(4), i(29), '-1')
|
||
|
text(j(4), i(30), '-2')
|
||
|
text(j(4), i(31), '-2')
|
||
|
text(j(4), i(32), '-2')
|
||
|
text(j(4), i(33), '-2')
|
||
|
text(j(4), i(34), '-2')
|
||
|
text(j(4), i(35), '-2')
|
||
|
text(j(4), i(36), '-2')
|
||
|
text(j(4), i(37), '-2')
|
||
|
text(j(4), i(38), '-2')
|
||
|
text(j(4), i(39), '-2')
|
||
|
text(j(4), i(40), '-2')
|
||
|
text(j(4), i(41), '-2')
|
||
|
text(j(4), i(42), '-2')
|
||
|
|
||
|
text(j(5), i(1), '2')
|
||
|
text(j(5), i(2), '2')
|
||
|
text(j(5), i(3), '2')
|
||
|
text(j(5), i(4), '2')
|
||
|
text(j(5), i(5), '2')
|
||
|
text(j(5), i(6), '2')
|
||
|
text(j(5), i(7), '2')
|
||
|
text(j(5), i(8), '2')
|
||
|
text(j(5), i(9), '2')
|
||
|
text(j(5), i(10), '2')
|
||
|
text(j(5), i(11), '2')
|
||
|
text(j(5), i(12), '1')
|
||
|
text(j(5), i(13), '1')
|
||
|
text(j(5), i(14), '1')
|
||
|
text(j(5), i(15), '1')
|
||
|
text(j(5), i(16), '1')
|
||
|
text(j(5), i(17), '1')
|
||
|
text(j(5), i(18), '0')
|
||
|
text(j(5), i(19), '0')
|
||
|
text(j(5), i(20), '0')
|
||
|
text(j(5), i(21), '0')
|
||
|
text(j(5), i(22), '0')
|
||
|
text(j(5), i(23), '0')
|
||
|
text(j(5), i(24), '0')
|
||
|
text(j(5), i(25), '0')
|
||
|
text(j(5), i(26), '-1')
|
||
|
text(j(5), i(27), '-1')
|
||
|
text(j(5), i(28), '-1')
|
||
|
text(j(5), i(29), '-1')
|
||
|
text(j(5), i(30), '-1')
|
||
|
text(j(5), i(31), '-1')
|
||
|
text(j(5), i(32), '-2')
|
||
|
text(j(5), i(33), '-2')
|
||
|
text(j(5), i(34), '-2')
|
||
|
text(j(5), i(35), '-2')
|
||
|
text(j(5), i(36), '-2')
|
||
|
text(j(5), i(37), '-2')
|
||
|
text(j(5), i(38), '-2')
|
||
|
text(j(5), i(39), '-2')
|
||
|
text(j(5), i(40), '-2')
|
||
|
text(j(5), i(41), '-2')
|
||
|
text(j(5), i(42), '-2')
|
||
|
|
||
|
text(j(6), i(1), '2')
|
||
|
text(j(6), i(2), '2')
|
||
|
text(j(6), i(3), '2')
|
||
|
text(j(6), i(4), '2')
|
||
|
text(j(6), i(5), '2')
|
||
|
text(j(6), i(6), '2')
|
||
|
text(j(6), i(7), '2')
|
||
|
text(j(6), i(8), '2')
|
||
|
text(j(6), i(9), '2')
|
||
|
text(j(6), i(10), '2')
|
||
|
text(j(6), i(11), '2')
|
||
|
text(j(6), i(12), '1')
|
||
|
text(j(6), i(13), '1')
|
||
|
text(j(6), i(14), '1')
|
||
|
text(j(6), i(15), '1')
|
||
|
text(j(6), i(16), '1')
|
||
|
text(j(6), i(17), '1')
|
||
|
text(j(6), i(18), '0')
|
||
|
text(j(6), i(19), '0')
|
||
|
text(j(6), i(20), '0')
|
||
|
text(j(6), i(21), '0')
|
||
|
text(j(6), i(22), '0')
|
||
|
text(j(6), i(23), '0')
|
||
|
text(j(6), i(24), '0')
|
||
|
text(j(6), i(25), '0')
|
||
|
text(j(6), i(26), '-1')
|
||
|
text(j(6), i(27), '-1')
|
||
|
text(j(6), i(28), '-1')
|
||
|
text(j(6), i(29), '-1')
|
||
|
text(j(6), i(30), '-1')
|
||
|
text(j(6), i(31), '-1')
|
||
|
text(j(6), i(32), '-2')
|
||
|
text(j(6), i(33), '-2')
|
||
|
text(j(6), i(34), '-2')
|
||
|
text(j(6), i(35), '-2')
|
||
|
text(j(6), i(36), '-2')
|
||
|
text(j(6), i(37), '-2')
|
||
|
text(j(6), i(38), '-2')
|
||
|
text(j(6), i(39), '-2')
|
||
|
text(j(6), i(40), '-2')
|
||
|
text(j(6), i(41), '-2')
|
||
|
text(j(6), i(42), '-2')
|
||
|
|
||
|
text(j(7), i(1), '2')
|
||
|
text(j(7), i(2), '2')
|
||
|
text(j(7), i(3), '2')
|
||
|
text(j(7), i(4), '2')
|
||
|
text(j(7), i(5), '2')
|
||
|
text(j(7), i(6), '2')
|
||
|
text(j(7), i(7), '2')
|
||
|
text(j(7), i(8), '2')
|
||
|
text(j(7), i(9), '2')
|
||
|
text(j(7), i(10), '2')
|
||
|
text(j(7), i(11), '2')
|
||
|
text(j(7), i(12), '1')
|
||
|
text(j(7), i(13), '1')
|
||
|
text(j(7), i(14), '1')
|
||
|
text(j(7), i(15), '1')
|
||
|
text(j(7), i(16), '1')
|
||
|
text(j(7), i(17), '1')
|
||
|
text(j(7), i(18), '0')
|
||
|
text(j(7), i(19), '0')
|
||
|
text(j(7), i(20), '0')
|
||
|
text(j(7), i(21), '0')
|
||
|
text(j(7), i(22), '0')
|
||
|
text(j(7), i(23), '0')
|
||
|
text(j(7), i(24), '0')
|
||
|
text(j(7), i(25), '0')
|
||
|
text(j(7), i(26), '-1')
|
||
|
text(j(7), i(27), '-1')
|
||
|
text(j(7), i(28), '-1')
|
||
|
text(j(7), i(29), '-1')
|
||
|
text(j(7), i(30), '-1')
|
||
|
text(j(7), i(31), '-1')
|
||
|
text(j(7), i(32), '-2')
|
||
|
text(j(7), i(33), '-2')
|
||
|
text(j(7), i(34), '-2')
|
||
|
text(j(7), i(35), '-2')
|
||
|
text(j(7), i(36), '-2')
|
||
|
text(j(7), i(37), '-2')
|
||
|
text(j(7), i(38), '-2')
|
||
|
text(j(7), i(39), '-2')
|
||
|
text(j(7), i(40), '-2')
|
||
|
text(j(7), i(41), '-2')
|
||
|
text(j(7), i(42), '-2')
|
||
|
|
||
|
text(j(8), i(1), '2')
|
||
|
text(j(8), i(2), '2')
|
||
|
text(j(8), i(3), '2')
|
||
|
text(j(8), i(4), '2')
|
||
|
text(j(8), i(5), '2')
|
||
|
text(j(8), i(6), '2')
|
||
|
text(j(8), i(7), '2')
|
||
|
text(j(8), i(8), '2')
|
||
|
text(j(8), i(9), '2')
|
||
|
text(j(8), i(10), '1')
|
||
|
text(j(8), i(11), '1')
|
||
|
text(j(8), i(12), '1')
|
||
|
text(j(8), i(13), '1')
|
||
|
text(j(8), i(14), '1')
|
||
|
text(j(8), i(15), '1')
|
||
|
text(j(8), i(16), '1')
|
||
|
text(j(8), i(17), '1')
|
||
|
text(j(8), i(18), '0')
|
||
|
text(j(8), i(19), '0')
|
||
|
text(j(8), i(20), '0')
|
||
|
text(j(8), i(21), '0')
|
||
|
text(j(8), i(22), '0')
|
||
|
text(j(8), i(23), '0')
|
||
|
text(j(8), i(24), '0')
|
||
|
text(j(8), i(25), '0')
|
||
|
text(j(8), i(26), '-1')
|
||
|
text(j(8), i(27), '-1')
|
||
|
text(j(8), i(28), '-1')
|
||
|
text(j(8), i(29), '-1')
|
||
|
text(j(8), i(30), '-2')
|
||
|
text(j(8), i(31), '-2')
|
||
|
text(j(8), i(32), '-2')
|
||
|
text(j(8), i(33), '-2')
|
||
|
text(j(8), i(34), '-2')
|
||
|
text(j(8), i(35), '-2')
|
||
|
text(j(8), i(36), '-2')
|
||
|
text(j(8), i(37), '-2')
|
||
|
text(j(8), i(38), '-2')
|
||
|
text(j(8), i(39), '-2')
|
||
|
text(j(8), i(40), '-2')
|
||
|
text(j(8), i(41), '-2')
|
||
|
text(j(8), i(42), '-2')
|
||
|
|
||
|
print -dpng pd_cpa.png
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|