1.ソフトウェアバージョン
ISE14.7
2.このアルゴリズムの理論的知識
ROMリソースは、離散正弦波信号を生成するもう1つの効果的な方法として、CORDIC(Coordinate Rotation Numerical Computation)アルゴリズムがますます一般的になっています。基本的な考え方は、操作ベースに関連する一連の連続的に減少する往復たわみによって達成する必要がある最終的な回転角度に近づくことです。このアルゴリズムは、加算とシフトの2つの演算のみを使用して、ベクトルを反復的に回転します。CORDICアルゴリズムは、加算とシフトの演算のみを使用するため、FPGAでの実装に非常に適しています。NCOの実現に使用できます。デジタルダウンコンバージョン。周波数コンバーターと座標変換。
NCOを実現するもう1つの方法は、座標回転デジタルコンピュータに基づくアルゴリズム、つまり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.操作手順とシミュレーションの結論
5.参考文献
A35-11
[1] Wang Yuliang、Li Hongsheng、XiaDunzhu。CORDICアルゴリズムに基づくFPGAでのNCOの実装[J]。ComputerandDigital Engineering、2009、37(12):4。