基于CORDIC算法的实现方法

时间:2025-07-26  作者:Diven  阅读:0

基于LUT的DDS的设计

基于CORDIC算法的实现方法

DDS(Direct Digital Synthesis)直接数字频率合成技术由USA J.Tierncy首先提出。是以数字信号处理理论为基础,从相位概念出发直接合成所需波形的新的全数字技术的频率合成方法。DDS主要出现在数字混频系统中。在数字混频中,通过DDS产生正交的本地振荡信号即正、余弦信号与输入信号相乘实现频谱搬移,如通信系统的调制、解调。目前FPGA实现DDS有三种途径:基于IIR滤波器的实现方法、基于查找表LUT的实现方法以及基于CORDIC算法的实现方法。其中采用LUT的方法较为通用且比较容易实现。

1 基于LUT的DDS理论

    一个典型的基于LUT的DDS系统由相位累加器和波形存储器两部分构成,如图1所示。图中相位累加器的位宽为nbit,步进值为μ,LUT的深度N为2n,宽度为Lbit。LUT中依相位顺序存储一个周期的波形数据。

 

 

图1 基于LUT的DDS架构

2 matlab 仿真

图2 相位累加器位宽为4bit时LUT地址与存储数据的对应关系

如图2所示,我们要制作地址位宽为10bit数据位宽为32bit的LUT查找表。Matlab源码如下:

clear all

close all

clc

FS = 44100;%采样率

fc = 1000;

N  = 1024;%1024点一个正玄周期

t =0:2*pi/(N-1):2*pi;

sin_dds = sin(t);

figure,

hold on

plot(t,sin_dds,'*');

legend('sin');

grid;

hold off

 

图3 matlab 1024点1个周期的正玄波

3 FPGA仿真

    整个仿真结构如图1所示,由相位累加控制器和sin波形存储器组成。仿真生成采样率为44.1KHZ @1KHZ正玄波和余弦波(相位相差90度)。

tb_dds源码:

1.     `timescale 1ns / 1ps  

2.     `define NULL 0  

3.     Module tb_dds();  

4.       

5.     parameter KHZ1 =44;  

6.     parameter KHZ2 =22;  

7.     parameter KHZ4 =11;  

8.     reg clk;   

9.     initial begin   

10.   clk = 0;   

11.   #313333 clk = 0;   

12.   forever #11.072 clk = ~clk;   

13. end//45.1584MHZ  

14.   

15. reg reset_n;   

16. initial begin   

17.   reset_n = 1;   

18.   #10000 reset_n = 0;   

19.   #100000 reset_n = 1;   

20. end   

21.   

22. reg [9:0] addr;  

23. reg [9:0] cnt;  

24. reg [31:0] k;  

25. integer fb;  

26.   

27. wire signed [31:0]     sin;  

28. wire signed [31:0]     cos;  

29.   

30. //Phase accumulation controller  

31. always @(posedge clk or negedge reset_n) begin  

32.   if(!reset_n) begin  

33.       addr <= 0;  

34.       cnt  <= 0;  

35.     end  

36.   else if(cnt == KHZ1-1) begin  

37.     cnt <= 0;  

38.     addr <= addr +10'd1;  

39.   end  

40.   else begin  

41.     cnt <= cnt + 1;  

42.     addr <= addr;  

43.   end  

44. end  

45.   

46. //reg [8:0] i;//88.2khz  

47. reg [9:0] i;//44.1khz Sample rate  

48. reg signed [31:0] sin_slow;  

49. reg signed [31:0] cos_slow;  

50.   

51. always @(posedge clk or negedge reset_n) begin  

52.   if(!reset_n) begin  

53.     i <= 0;  

54.     sin_slow <= 0;  

55.     cos_slow <= 0;  

56.     k <=0;  

57.     fb = $fopen("sin.dat","w");  

58.     if(fb == `NULL) begin  

59.       $display("Can not open sin.dat");  

60.       $finish;  

61.     end   

62.   end  

63.   else begin  

64.     i <= i+1;  

65.     if(i == 0) begin  

66.       sin_slow <= sin;  

67.       cos_slow <= cos;  

68.       k <= k +1;  

69.       $display("time=[%d],%d",$realtime,sin);  

70.       $fwrite(fb,"%d ",sin);  

71.       if(k == 4096) begin   

72.         $fclose(fb);  

73.         $stop;  

74.     end  

75.     end  

76.   end   

77. end   

78.   

79.   

80.   

81. dds_rom U_dds_rom(   

82.        .clk(clk),  

83.        .addr(addr),//0-1023 1T  

84.        .sin(sin),  

85.        .cos(cos)  

86.        );  

87. endModule  

仿真结果:

  生成Sample rate 44.1KHZ@1KHZ的正玄和余弦波相位相差90°。

图4 modelsim 仿真结果

Matlab FFT分析:

图5 FFT分析结果

由图5可知产生的正玄波频率为1KHZ。基于LUT的DDS设计完成,此节将是后期基于FPGA数字信号处理的基础和关键。

编辑:黄飞


猜您喜欢

垃圾钳是实用的环保工具,具备多项显著优势。能够有效减少人们在清理垃圾时的身体接触,保护双手免受污染和伤害。垃圾钳的设计使得用户可以轻松拾取地面上的垃圾,无论是小...
2013-10-03 00:00:00

贴片电阻,这种小小的电子元件,在电路板中是很重要的配件。对于电子爱好者和工程师来说,理解其编号很重要,尤其是常用的10kΩ电阻。本文将带您快速解读贴片电阻10k...
2024-11-29 10:26:08

饰面板是用于建筑和室内设计的材料,主要用于提升空间的美观性和实用性。通常由不同的基材制成,如木材、塑料或金属,并在其表面涂覆或贴合一层装饰性材料。这种层面不仅可...
2021-02-18 00:00:00

贴片电阻阻值变小,通常表明它已经损坏或性能下降。电阻的主要功能是阻碍电流流动,其阻值大小决定了它对电流的阻碍程度。如果阻值变小,意味着它对电流的阻碍能力降低,这...
2024-11-26 11:29:12

贴片电阻,顾名思义,就是贴在电路板表面的一种小型电子元件。它在电子设备中扮演着至关重要的角色,就像电路中的小小守护者,默默地维持着电路的正常工作。它的主要功能是...
2024-11-26 11:29:53

开关电源,作为现代电子设备中重要的一部分,其稳定的电压输出很重要。而在这稳定电压输出的背后,开关电源芯片中的反馈信号是重要的配件,如同一位精准的调节器,确保电源...
2024-11-11 00:00:00

1022贴片电阻表示的是电阻的尺寸,而不是阻值。其中的「1022」遵循的是EIA(美国电子工业协会)的尺寸代码标准,前两位数字「10」表示长度为1.0mm,后两...
2024-11-26 11:30:00

音频变压器在音频系统中是非常重要的配件。主要作用是实现信号的隔离、匹配和转换,确保音频信号的高质量传输。音频变压器可以有效隔离不同设备之间的电气干扰,防止噪音和...
2011-08-04 00:00:00

1206贴片电阻的耐压值并非固定不变,而是与具体型号和厂商有关。一般来说,常见的1206贴片电阻的耐压值在100V到200V之间。 一些特殊用途或高功率的120...
2024-11-29 10:25:47

贴片电阻100欧姆的表示方法主要有三种:数字编码表示法、字母数字编码表示法和特殊情况。最常见的是三位数字编码表示法。前两位数字代表有效数值,第三位数字代表10的...
2024-11-29 10:26:05