圖3.2 CORDIC流水線型設(shè)計(jì)流程圖
其VHDL程序設(shè)計(jì)的關(guān)鍵語(yǔ)句采用if語(yǔ)句實(shí)現(xiàn)。在同一個(gè)程序中,多條if語(yǔ)句是按順序執(zhí)行的。一個(gè)完整if語(yǔ)句如下:
if (theta(i)>0) then
x(i+1)<=x(i)-SRL(y(i), i);
y(i+1)<=y(i)+ (SRL(x(i), i));
theta (i+1)<= theta (i)-θi ;
else
x(i+1)<=x(i)+( SRL (y(i), i));
y(i+1)<=y(i)-( SRL (x(i), i));
theta (i+1)<= theta (i)+θi
end if;
其中,SRL (m, k)實(shí)現(xiàn)數(shù)據(jù)m右移k位,并返回值為移位后的結(jié)果。按照?qǐng)D3.2編寫(xiě)可產(chǎn)生正余弦信號(hào)的CORDIC運(yùn)算程序,如下:
module cordic(clk, phi, cos, sin);
parameter? W = 13, W_Z = 14;
input ??clk;
input [W_Z-1:0]? phi;
output [W-1:0]??? cos, sin;
reg [W-1:0]?? cos, sin;
reg [W-1:0]?? x[8:0], y[8:0];
reg [W_Z-1:0] z[7:0];
always(posedge clk)begin
x[0] <= 13'h4D; ? ? ??? ??? //修正CORDIC算法的比例因子,K的倒數(shù)
y[0] <= 13'h00;
z[0] <= phi;
//旋轉(zhuǎn)45度
if(z[0][W_Z-1]) begin
x[1] <= x[0] + y[0];???
y[1] <= y[0] - x[0];???
z[1] <= z[0] + 14'h65;
end
else begin
x[1] <= x[0] - y[0];???
y[1] <= y[0] + x[0];???
z[1] <= z[0] - 14'h65;
end
仿真結(jié)果及結(jié)論會(huì)在第四章給出。
哪里有射頻培訓(xùn)機(jī)構(gòu)
|