ROM存储1-4周期正弦信号构造DDS详解.doc

ROM存储1-4周期正弦信号构造DDS详解.doc

ID:27524236

大小:55.50 KB

页数:7页

时间:2018-12-04

ROM存储1-4周期正弦信号构造DDS详解.doc_第1页
ROM存储1-4周期正弦信号构造DDS详解.doc_第2页
ROM存储1-4周期正弦信号构造DDS详解.doc_第3页
ROM存储1-4周期正弦信号构造DDS详解.doc_第4页
ROM存储1-4周期正弦信号构造DDS详解.doc_第5页
资源描述:

《ROM存储1-4周期正弦信号构造DDS详解.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、ROM存储1/4周期正弦信号构造DDS详解DATA(2047-addr(i)+1);  elseif(flag(i)==2)  dds_out(i)=-ROM_DATA(addr(i)-2048+1);  else  dds_out(i)=-ROM_DATA(4095-addr(i)+1);  end  end  end  end  plot(dds_out);  3.DDS的解释  Xilinx的DDS核的UserGuide中队DDS做了很详细的说明,本节不再重复此内容,本节将叙述一种全新的DDS理解方式。这种理解方式解决了频率控制字长于ROM表深度时DDS的理解上的问题

2、。  连续还是离散?  连续还是离散,在于我们用什么眼光去看待。如下图所示,我们可以理解蓝色的图是离散的,而红色的线是连续的。然而,对于我们要获取的信息而言,这两幅图是完全没有区别的。抽样定理中有理想抽样和平顶抽样(采样保持电路)之分,然而在频域效果上,是并没有很大区别的。    ROM表存储的是连续的数值  按照上面的理论,可以认为ROM表中存储的是正弦信号的平顶采样结果。如下图所示(一个全周期的ROM表,对称性满足1/4周期存储的要求)    上图的频谱在信号与系统中有提及,上述波形的形成方式可以认为是在乘以周期为T的冲击函数,之后卷积一个宽度为T的窗函数。对应可以求得

3、其频域。(具体可参考平顶抽样)  频率控制字  频率控制字控制对上述的阶梯函数的采样,如果这样理解的话,就没有所谓的相位截取取ROM表的值的疑惑了。频谱图能够清晰的表现这一过程,然而由于blog表达不便,此处不做详细说明。  此处能够解释DDS产生的杂散。  4.Verilog实现  老师教导我们,Verilog和Matlab代码应该是完全一致的,也就是说程序的思路,命名是一样的。但是下面的程序没有做到一致性……  `timescale1ns/1ps  moduleDDS_10k(  inputclk_10M,  inputrst,  output[13:0]D_SIN, 

4、 output[13:0]D_COS  );  parameterpinc=32’d4294967;//10k  reg[31:0]addr_temp=32’d0;  reg[9:0]addra,addrb;  regmark_a,mark_b;  always@(posedge(clk_10M))//复位  begin  if(rst==0)  addr_temp《=32‘d0;  else  addr_temp《=addr_temp+pinc;  end  always@(posedge(clk_10M))//1/4周期控制  begin  case(addr_temp

5、[31:30])  2’b00:  begin  addra《=addr_temp[29:20];  mark_a《=0;  addrb《=~addr_temp[29:20];  mark_b《=0;  end  2‘b01:  begin  addra《=~addr_temp[29:20];  mark_a《=0;  addrb《=addr_temp[29:20];  mark_b《=1;  end  2’b10:  begin  addra《=addr_temp[29:20];  mark_a《=1;  addrb《=~addr_temp[29:20];  mark_b

6、《=1;  end  2‘b11:  begin  addra《=~addr_temp[29:20];  mark_a《=1;  addrb《=addr_temp[29:20];  mark_b《=0;  end  endcase  end  //ROM表读取  ROM_SIN_1k18rom_dds(  .clka(clk_10M),//inputclka  .addra(addra),//input[9:0]addra  .douta(D_SIN[12:0]),//output[12:0]douta  .clkb(clk_10M),//inputclkb  .addrb

7、(addrb),//input[9:0]addrb  .doutb(D_COS[12:0])//output[12:0]doutb  );  regsin_mark_temp;  regcos_mark_temp;  assignD_SIN[13]=sin_mark_temp;  assignD_COS[13]=cos_mark_temp;  //此处ROM没有添加register,因此输出和地址有一个周期的延时,故Mark也要有一周期延时  always@(posedge(clk_10M))  begin  si

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。