原创 基于FPGA的DDS设计(原创)

2009-2-6 20:24 7332 7 7 分类: FPGA/CPLD

      基于FPGADDS设计(原创)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


初始频率设置为7.3682307MHz,系统频率为100MHz,根据DDS输出频率公式能计算出相位累加字:


 


de4eb6cb-8e0b-4214-9fec-4f64f20a8d60.JPG


 

其中fDDS输出频率;


    fclkDDS系统频率;


    N为相位累加器的位数;


    DATA为相位累加器的累加值。


 


要得到7.3682307MHz的输出频率,相位累加值


DATA=1001011011100110101111111101011011011110111002


 


     FPGA采用Xilinx Spartan3E XC3S500EIP+VerilogHDL+Sch编程。下图为整个FPGA原理框图



 


点击看大图


 


DCM_100MHz


其中DCM_100MHz用了Spartan3E里面的DCM(时钟管理单元),由于输入的时钟为有正负的正弦波(100MHz 幅值5V 峰峰10V的正弦信号),所以经过DCM后,能得到一个很好的方波。输出100MHzDA作为DA的时钟,其中还经过一个BUFG,目的是使ROM的正弦数据输出稳定后,时钟才到来,DA才能读入数字值,这可以参考AD9744Datasheet



 


0e3385c9-3085-412b-b469-0c0514999e5f.JPG


 


其中ts至少为2.0ns,如果少于2.0ns或时钟和DA数据同时甚至提前到达的话,DA输出的模拟值会出错。所以要加一个BUFG,但BUFG延时不太确定,.....(方面的我还不懂L)


 


MCU_FPGA


51单片机通过串口接受PC机给出的DATA(相位累加值),再通过与FPGA的通信,告诉FPGA相位累加模块(Accumulator)累加值。MCU_FPGA所做的工作是把收到的数据出入模块内的ROM里,使得改变模块里的ROM地址,就能改变输出的累加值。FPGA_MCU通信的时序为:



 


点击看大图


 


      DIN48位累加值串行输入


     CLK_WR输入写信号时钟,DIN的数据稳定后,CLK_WR上升沿写入FPGA内部的寄存器,寄存器的数据移位。


     DIN_PRO写保护,DIN_PRO=0时,模块内ROM的输出随地址变化而变化;DIN_PRO=1,模块内ROM的输出锁存,输出保持DIN_PRO=0ROM地址所对应的ROM值。


     WR写信号,WR=1时,把FPGA内部寄存器的值写入此时ADDRESS[2:0]地址的ROM空间。


     ADDRESSROM地址位3根地址线决定ROM深度为8ROM的大小为248x8 bit


 


Accumulator


   48位相位累加器。


 


Wire48_14


   截取相位累加器的高14位作为存储正弦波数据的ROM的地址。


 


ROM


存取一个周期的正弦波数据,而这个正弦波数据应该是有水平移位的,最低点(270°)为0,最高点(90°)为1,直流偏移0.5。所要得到的数据有LabView编程得到。


 



点击看大图 


 


DDS输出结果


没加滤波器



 


39a787bf-4a30-41e9-8e96-c3d8d913a687.JPG


 


设计的输出频率为7.3682307MHz,但是示波器显示为7.599MHz,示波器显示的频率是不准确的,实际可以用频谱仪看输出的频率。




 


         26651ceb-b849-4c49-9290-d02f93d529f4.JPG


 


         0c37c179-5bec-45ba-89a3-a34847ad0d84.JPG


 


放大来看,可以看到正弦波是由一个台阶一个台阶组成的,这就是DA的模拟输出。


 


加低通滤波器


自己也设计了低通的椭圆滤波器,但实际焊接出来的椭圆滤波器达不到仿真效果,设计截止频率为10MHz,但实际在1~2MHz时幅值衰减就很大(大约1半),到5MHz时,就完全截止了,所以最后还是放弃自己设计的低通椭圆滤波器,选用商用的低通滤波器(minicircuits 公司SLP-10.7+)。



 


                                        bff16c73-556e-4430-b670-b9db04272006.JPG


 


SLP-10.7+ DataSheet




 


点击看大图


   


 


点击看大图


                  SLP-10.7插入损耗与频率的关系     SLP-10.7回波损耗与频率的关系


 


在想要的频率(7.3682307MHz)上插入损耗越小越好,回波损耗越大越好,而在杂散或谐波频率(主要为14MHz这个2倍谐波)上则相反,目的是要把杂散和谐波分量都滤除。SLP-10.7截止频率为11MHz,对于我要的输出频率7.3682307MHz有很好的滤波效果。


下面是加上SLP-10.7低通滤波器后,示波器的输出。



          


           


0b8a492c-afe8-4f67-8f88-c3ecf91a7289.JPG


 


52234e18-0da3-4bf7-8d64-d9fe3592aa75.JPG


 


6e255239-3a9a-43eb-aaf3-59e8769bb316.JPG


 

  


   可以看到台阶没有了,正弦波变得比较光滑,这是因为高阶的谐波分量都被滤除了J

文章评论0条评论)

登录后参与讨论
我要评论
0
7
关闭 站长推荐上一条 /2 下一条