表 网络化DDS信号发生器技术指标
|
序号
|
功能/指标描述
|
|
1
|
具有以太网接口和串行接口两种接口方式,总线接口自动识别。
|
|
2
|
+9V/1A桌面供电电源
|
|
3
|
嵌入式TCP/IP协议栈,包括TCP、IP、ARP、ICMP、UDP等协议,具有远程控制能力
|
|
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上实现的,采用了EPM7128。DDS的实现框图如下所示:
DDS内核有一个相位累加器,其根据频率控制字进行相位累加,输出一个寻址地址,该地址又和相位控制字相加,形成最终对RAM寻址的一个地址。这个RAM中存储了事先放置的波形表。所以通过控制频率控制字,就可以改变RAM的寻址步长,循环扫描波形表,抽样输出波形表中样点,就可以输出用户所需频率的波形了。所以,DDS的最核心就是加法器。
抽样扫描波形表之后输出量化之后的数字信号,所以需要通过DAC进行D/A转换。此处DAC采用了TI公司的DAC902,该芯片具有165Msps的转换率,12bit的转换精度。DAC902是电流输出型,所以需要外加采样电阻,通过OPA467进行I-V转换,得到具有一定阶梯性质的输出波形。但由于后继的运放具有低通滤波的作用,所以对DAC的输出进行了一定程度的平滑。
输出信号的幅度调节电路通过一个串行DAC完成。该DAC采用了TI的DAC7513,DAC7513的输出作为DAC902的转换参考电压,从而达到输出信号幅度控制的目的。我认为在一般应用中这种方案是可行的,但是在有很高精度以及大动态输出范围的应用中,这种方案是不可取的,DAC7513本身只有12的精度,作为DAC902的参考电压,需要足够的稳定和纯净,在输出小信号时,这一点很难保证。
信号输出的最后一级是偏置电路,该级电路由一个加法电路完成,加法器的一端为一个配置DAC输出的配置电压,另一端为输出信号。通过加法器之后的信号直接输出,如果用户需要功率需求,那后继再加功率放大等等。最后几级的运放都采用了+/-12的供电方式,所以系统采用了一个5v到+/-12v的DC-DC变换器。该DC-DC选用了Maxim的MAX743,由于整套系统运行起来还是比较耗电的,整体功耗在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