Untitled diff

Created Diff never expires
2 हटाए गए
लाइनें
कुल
हटाया गया
शब्द
कुल
हटाया गया
इस सुविधा का उपयोग जारी रखने के लिए, अपग्रेड करें
Diffchecker logo
Diffchecker Pro
60 लाइनें
2 जोड़े गए
लाइनें
कुल
जोड़ा गया
शब्द
कुल
जोड़ा गया
इस सुविधा का उपयोग जारी रखने के लिए, अपग्रेड करें
Diffchecker logo
Diffchecker Pro
60 लाइनें
module cordic(clk, z0, xn, yn);
module cordic(clk, z0, xn, yn);
input clk;
input clk;
input [10:0] z0;
input [10:0] z0;
output [16:0] xn, yn;
output [16:0] xn, yn;


parameter N= 10; // number of iterations
parameter N= 10; // number of iterations
reg [(N-1):0] d;
reg [(N-1):0] d;
reg [16:0] x [N:0];
reg [16:0] x [N:0];
reg [16:0] y [N:0];
reg [16:0] y [N:0];
reg [10:0] z [N:0];
reg [10:0] z [N:0];
reg [10:0] arctan [(N-1):0];
reg [10:0] arctan [(N-1):0];


initial begin
initial begin
x[0] = 'b0_10011_0110_1110_1001; // 0.60725 in binary
x[0] = 'b0_10011_0110_1110_1001; // 0.60725 in binary
y[0] = 0;
y[0] = 0;
z[0] = z0;
arctan[0] = 'b010_1101_0000; // 45.0;
arctan[0] = 'b010_1101_0000; // 45.0;
arctan[1] = 'b001_1010_1001; // 26.6;
arctan[1] = 'b001_1010_1001; // 26.6;
arctan[2] = 'b000_1110_0000; // 14.0;
arctan[2] = 'b000_1110_0000; // 14.0;
arctan[3] = 'b000_0111_0001; // 7.1;
arctan[3] = 'b000_0111_0001; // 7.1;
arctan[4] = 'b000_0011_1001; // 3.6;
arctan[4] = 'b000_0011_1001; // 3.6;
arctan[5] = 'b000_0001_1100; // 1.8;
arctan[5] = 'b000_0001_1100; // 1.8;
arctan[6] = 'b000_0000_1110; // 0.9;
arctan[6] = 'b000_0000_1110; // 0.9;
arctan[7] = 'b000_0000_0110; // 0.4;
arctan[7] = 'b000_0000_0110; // 0.4;
arctan[8] = 'b000_0000_0011; // 0.2;
arctan[8] = 'b000_0000_0011; // 0.2;
arctan[9] = 'b000_0000_0001; // 0.1;
arctan[9] = 'b000_0000_0001; // 0.1;
end
end


integer i;
integer i;


always @(posedge clk)
always @(posedge clk)
begin z[0] = z0;
begin
for(i=0; i<N; i=i+1)
for(i=0; i<N; i=i+1)
begin
begin
d[i] = (z[i][10] == 0) ? 0 : 1;
d[i] = (z[i][10] == 0) ? 0 : 1;


if(d[i] == 0) begin
if(d[i] == 0) begin
x[i+1] = x[i] - (y[i] >> i);
x[i+1] = x[i] - (y[i] >> i);
y[i+1] = y[i] + (x[i] >> i);
y[i+1] = y[i] + (x[i] >> i);
z[i+1] = z[i] - arctan[i];
z[i+1] = z[i] - arctan[i];
end
end
else begin
else begin
x[i+1] = x[i] + (y[i] >> i);
x[i+1] = x[i] + (y[i] >> i);
y[i+1] = y[i] - (x[i] >> i);
y[i+1] = y[i] - (x[i] >> i);
z[i+1] = z[i] + arctan[i];
z[i+1] = z[i] + arctan[i];
end
end
$display("i=%2d, x[i]=%b, y[i]=%b, z[i]=%b, d[i]=%2d, arctan[i]=%b", i,x[i],y[i],z[i],d[i],arctan[i]);
$display("i=%2d, x[i]=%b, y[i]=%b, z[i]=%b, d[i]=%2d, arctan[i]=%b", i,x[i],y[i],z[i],d[i],arctan[i]);
end
end
end
end


assign xn = x[N]; // xn = cos(z0)
assign xn = x[N]; // xn = cos(z0)
assign yn = y[N]; // yn = sin(z0)
assign yn = y[N]; // yn = sin(z0)


endmodule
endmodule