1.軟體版本
ISE14.7
2.本算法理論知識
ROM資源,作為産生離散正弦信号的另一種有效途徑,CORDIC(坐标旋轉數值計算)算法已越來越受到青睐。其基本思想是通過一系列逐次遞減的、與運算基數相關的往複偏擺以逼近最終需要達到的旋轉角度。該算法僅利用加法和移位兩種運算通過疊代方式進行矢量旋轉, CORDIC算法由于隻采用加法和移位運算,是以很适合在FPGA中實作,它可以用來實作數字下變頻中的NCO、混頻器和坐标變換等功能。
實作NCO的另一種方法是采用基于坐标旋轉數字式計算機的算法,即CORDIC算法,基本思想是采用逐次逼近的方法實作三角函數的計算。該算法的突出優點是,僅做加減和移位運算,結合流水線,可以實作每一個時鐘周期輸出一個經過n次疊代的結果。
3.核心代碼
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 23:07:56 04/30/2012
// Design Name:
// Module Name: Tops
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//
module Tops(
i_clk,
i_rst,
i_phase,
i_freq,
o_freq,
o_cos,
o_sin
);
input i_clk;
input i_rst;
input[15:0] i_phase;
input[31:0] i_freq;
output[15:0]o_freq;
output[15:0]o_cos;
output[15:0]o_sin;
//頻率相位累加器
//頻率相位累加器
phase_adder phase_adder_u(
.i_clk (i_clk),
.i_rst (i_rst),
.i_phase_in (i_phase),
.i_frequency_in (i_freq),
.o_freq (o_freq)
);
//cordic子產品//象限判決
//cordic子產品//象限判決
//cordic子產品//象限判決
wire [15:0] o_y;
wire [15:0] o_x;
cordic_top cordic_top_u(
.i_clk (i_clk),
.i_reset (i_reset),
.i_phase_in (o_freq[15:0]),
.i_phase_in2(o_freq[15:14]),//象限判決
.o_cos_out (o_cos),
.o_sin_out (o_sin)
);
endmodule
4.操作步驟與仿真結論