EDN首页   博客首页

日志档案

发表于 2008-7-9 9:03:25

6

标签: 虚拟仪器  

DDS信号发生器的设计与实现

写在前面

      
    这几天看
blog上的文章,发现很多人在搞DDS信号发生器,不禁想起我几年前的一个作品——基于DDS技术的信号网络化信号发生器。该信号发生器可以连入以太网络,在客户端通过操作软件可以产生各种波形:三种标准波形和任意波形。下面我对这个东东的设计与实现做详细介绍。

网络化DDS信号发生器

      
    下图就是本文即将讲述的网络化
DDS信号发生器。标准6~9V供电电压,外部接口采用以太网络或者串口,单通道信号输出。具体技术指标如下表所示:

网络化DDS信号发生器技术指标

序号

功能/指标描述

1

具有以太网接口和串行接口两种接口方式,总线接口自动识别。

2

+9V/1A桌面供电电源

3

嵌入式TCP/IP协议栈,包括TCPIPARPICMPUDP等协议,具有远程控制能力

4

标准波形产生:包括正弦波、方波、三角波

5

任意波形产生:通过以太网接口或者串行接口产生任意波形

6

Chirp信号等特殊波形产生

7

输出频率范围:0.01Hz-6MHz

8

输出电压峰峰值:±5V

9

偏置调节范围:±10V

10

内嵌动态网页,可以通过浏览器对设备进行操作

11

应用软件通过Socket对设备操作

 

      对于这个东西,我一直觉得很有特点的地方在于嵌入了Web,通过浏览器对其进行控制,当时实现这个功能乐了我好长时间。下面show一下我的测控界面,另外还做了一个基于Labview的测控软件。
点击看大图

点击看大图

网络化DDS信号发生器设计原理

     
    
网络化DDS的信号发生器实现框图如下:

    其核心控制单元为52单片机,一方面用于和网络控制模块或者串行口进行数据通信,接收命令;另一方面解析执行命令,控制DDS模块以及模拟通道的电压幅度控制。

 

       网络控制模块是自行研制的,该模块就是一个基于MCU,内置TCP/IP协议栈的通信模块。该模块的实物如下所示:

    网络控制模块采用了winbond的单片机,该单片机具有较大的程序存储空间,MAC+PHY采用了常用的RTL8019,其具有10Mbps的通信速率,在工控领域也算满足要求了。该芯片是老款的以太网控制器,所以采用ISA的外围通信接口,简单易用。网络控制模块外扩了比较通用的接口,可以与其他处理器容易接口。所以该模块可以看成一个芯片进行使用。

 

       核心部分的DDS模块是自行设计的,没有采用当时市面上通用的DDS芯片。整个DDS的核心部分是在CPLD上实现的,采用了EPM7128DDS的实现框图如下所示:
点击看大图

        DDS内核有一个相位累加器,其根据频率控制字进行相位累加,输出一个寻址地址,该地址又和相位控制字相加,形成最终对RAM寻址的一个地址。这个RAM中存储了事先放置的波形表。所以通过控制频率控制字,就可以改变RAM的寻址步长,循环扫描波形表,抽样输出波形表中样点,就可以输出用户所需频率的波形了。所以,DDS的最核心就是加法器。

 

       抽样扫描波形表之后输出量化之后的数字信号,所以需要通过DAC进行D/A转换。此处DAC采用了TI公司的DAC902,该芯片具有165Msps的转换率,12bit的转换精度。DAC902是电流输出型,所以需要外加采样电阻,通过OPA467进行I-V转换,得到具有一定阶梯性质的输出波形。但由于后继的运放具有低通滤波的作用,所以对DAC的输出进行了一定程度的平滑。

 

       输出信号的幅度调节电路通过一个串行DAC完成。该DAC采用了TIDAC7513DAC7513的输出作为DAC902的转换参考电压,从而达到输出信号幅度控制的目的。我认为在一般应用中这种方案是可行的,但是在有很高精度以及大动态输出范围的应用中,这种方案是不可取的,DAC7513本身只有12的精度,作为DAC902的参考电压,需要足够的稳定和纯净,在输出小信号时,这一点很难保证。

 

       信号输出的最后一级是偏置电路,该级电路由一个加法电路完成,加法器的一端为一个配置DAC输出的配置电压,另一端为输出信号。通过加法器之后的信号直接输出,如果用户需要功率需求,那后继再加功率放大等等。最后几级的运放都采用了+/-12的供电方式,所以系统采用了一个5v+/-12vDC-DC变换器。该DC-DC选用了MaximMAX743,由于整套系统运行起来还是比较耗电的,整体功耗在500mA以上,所以MAX743的电感如果选择不好,那么带载能力极弱。

 

在本设计中,另一个比较有意思的地方是波形表的动态产生。正因为波形表能够根据用户需求动态产生,所以才可以采用RAM介质进行存储。基于这样的思想,本设计可以产生任意波形。最终实现在Labview平台上用鼠标随意画一个函数曲线,然后通过网络DDS信号发生模块就可以产生这样的波形。


测试波形

      
    设计实现之后,
DDS信号发生器进行了测试。如下两幅是产生762.9Hz时的时域和频域波形。从图中可以看出还是比较干净的,背景噪声很小。但是随着时间的增长,背景噪声会加大,这主要原因在于热噪声加大了。CPLD等器件工作在50MHz的时钟频率下发烫。所以该用FPGA或者低功耗的MAXII(那个时候还没有)会好很多。


DDS设计体会

    从原理上理解,DDS是比较简单的,通过抽样扫描波形表就可以了。为了达到抽样扫描的目的,设计了相位累加器。为了控制波形的初始相位,增加了相位加法器。DDS的输出频率分辨率由扫描频率和波形表的长度相关,如果扫描频率越高或者波形表越长,那么频率分辨率越高,但是,上述条件很难实现。所以很多设计中为了提高分辨率,通常进行相位截断,相位累加器采用40位,这样波形表需要2^40B空间,频率分辨率能够达到fs/2^40,在实际寻址波形表时进行截断,例如只用15位去寻址,截断了25位,实际存储数据的空间只需要32KB,这在一定程度上提高了频率分辨率。但是,相位截断有一个比较严重的问题,那就是频谱杂散。频谱杂散会导致在不需要的频点产生高能量谱信号,在相位截断的情况下,频谱杂散可以避免,但是需要满足k mod 2^B == 0,式中,k为频率控制字,B为截断长度。当上式满足时,频谱杂散的问题就解决了,但是很显然,频率不能以截断前的频率精度进行递增。

       有什么关于DDS方面的问题,可以一起讨论,我的邮箱:tl_wzj@yahoo.com.cn


系统分类: 测试测量   |   用户分类: 测试测量   |   来源: 原创   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(1500)    回复(3)  

投一票您将和博主都有获奖机会!

  • fpgasdr

    2008-7-10 20:24:54

    其实核心的东西也就那些 何必做的这么花哨!

  • tiloog

    2008-7-11 9:14:41

    这个东西的核心部分就是DDS,花哨的部分也就是网络通信接口啦,但是有远程控制的需求,所以看上去比较花哨。但是不管怎么花哨,核心的东西还是如何产生高精度、大动态范围、宽频、低噪的信号,DDS技术是核心,模数转换是核心,后端的模拟通道更是核心,各种补偿校正技术是核心。通用测试测量领域的仪器国内国外差距较大,差距就在这个地方。说实在的,为一台测试仪器加一个网络通信的功能,加一个非常美观的显示界面,加一个非常华丽的人机接口,这些都不是测试测量领域的核心技术,是外围技术。所以,作为测试测量领域的一员,我们有责任将核心技术做到位,外围技术做好它,这样我们的仪器才能立足世界之林!

  • wangxing

    2008-8-20 16:29:14

    同意提tiloog的说法