1、 基于 FPGA 的数字信号发生器的设计 在现代电子测量技术的研究及应用领域中,常常需要高精度且参数可调的信号源。数字信号发生器已成为现代测量领域应用最为广泛的通用仪器之一,代表了信号源的发展方向。而随着大规模可编程逻辑器件 FPGA 的发展以及可编程片上系统( SOPC)设计技术的日渐成熟,为这类信号发生器的设计与实现提供了理论依据与技术支持。本文设计的数字信号发生器以直接数字频率合成( DDS)技术为核心,用现场可编程门阵列( FPGA)来实现频率和相位的预置和改变,并完成信号的频率和相位差显示。设计中采用的是直接数字频率合成( DDS)技术,该技术是一项关键的数字技术,能很好的实现信号在
2、幅度,频率以及相位等方面的移动。系统以EDA 软件为工具,采用 VHDL 语言,满足了对数字信号控制的更高要求。结果表明,采用 EDA 技术设计的数字信号发生器使得数控系统与其他的电路实现的数字信号发生器相比具有更高的可靠性、实时性、运算速度高以及集成度高等特点。该数字信号发生器的设计可像软件一样随时更改,这就为系统维护带来了方便,同时结合 FPGA 有效地扩展输出波形的频率范围,实现了输出两路高精度相位差的正弦信 号,使系统性能稳定可靠。 关键词 : 信号发生器; DDS;片上可编程系统; FPGA; 1 导言 FPGA 本质上是一种数字设备。然而,随着 FPGA 的资源合理使用,使用 FP
3、GA进行数字化多通道模拟波形成为了一种可能。数字化的波形可直接在 FPGA 内部处理。目前有几种模拟信号数字化的可能的方案。我们计划在 FPGA 模数转换器的研究中使用一种基于在图 1 所示的斜坡比较的方法 。 图 1 基于 FPGA 的模数转换器 模拟输入均直接连接到 FPGA 的输入引脚。一个无源 RC 网络连接到 FPGA 的输出引脚,以便生成定期参 考电压斜坡。当参考电压斜坡到达输入电压等级时,差分输入缓冲器被用作比较器来产生 FPGA 内部逻辑转换。转换时间是通过 TDC 块在FPGA 中实现被数字化的。从这段时间以后, RC 网络参数和坡道起动时间可以从已知的输入电压大小而得到。如
4、今, FPGA 器件被设计成与各种差分信号标准兼容以后,差分输入缓冲器由于其有效的大的输入电压范围成为了很好的比较器。许多基于比较器的 ADC 方案可以用 FPGA 来实现。例如,通过 -计划,在较大的 FPGA 资源使用下(通常是每通道 4 个 I / O 引脚),信号可以被迅速地跟踪,并且只产生很小的数字化误差。随着威尔金森破败的计划,负责窄脉冲一体化可以用数字化来结合,尽管越来越多的外部模拟电路是必要的。我们在此研究的斜坡比较方案(或者在分类借鉴基础上的单斜坡 ADC,尽管这两个坡道的斜坡可以被利用)是对于相对缓慢的信号大通道数的应用的一种合适的选择。 (在一些参考资料里,单斜坡计划被误
5、认为是参照基于双斜坡原则的威尔金森 ADC。)一个关键的功能块,时间数字转换器( TDC)在 FPGA 是需要的。有两种 TDC 方案可以在 FPGA 中实现:延迟链 方案和多采样方案。我们在 这项工作中使用的 TDC 是涉及四时钟的多采样方案。在参考文献 7中提到,四个抽样,边缘检测,脉冲滤波器和计数锁存器是由四个 90 度相分离时钟驱动。由四组电路收集到的四组数据过多,他们 在不同的时间内有效 ,这使得在稳定性消除和编码逻辑复杂化。在我们的 TDC 设计中,四个采样转移到在一个时钟域立即且只有一个边集检测的一个位模式,脉冲滤波器和计数锁存电路被使用。该稳定性在采样阶段才被限制 , 事实上,
6、该稳定性在采样阶段没有任何损失,而是携带着输入信号的到达时间信息。解码在我们的设计中变得非常简单。详细的描述在第二节。 在 FPGA 中的 TDC 已经非常有用了。为费米实验室 MIPP 升级项目设计的 TDC卡在论文中也有记载。 多采样结构可以有其他的应用。被熟知的“ 数字相位跟随” ( DPF)的解串器电路也有记载。使用 DPF,任何 FPGA 输入都可用于接收串行数据而无需专门的解串器,这些解串器只能由高端 FPGA 系列提供。该 DPF 可以补偿由于电缆温度的变化或者由于晶体振荡器发射机和接收机之间的频率差而造成的输入数据的相位漂移。 2 TDC 在 FPGA 中的运行 在 FPGA 中的 TDC 是基于多相位时钟的。 TDC 的输入是通过四个寄存器被采样的,这些 寄存器有四个相位的时钟。如图 2 所示 。 图 2 多抽样的 TDC 电路 输入被缓冲,然后以同样的传播延迟发送到四个寄存器。这四个寄存器连接到有 90相位差的四个内部时钟上。 0 度和 90 度的时钟通过相锁回路( PLL)时钟合成器产生。他们的倒置用于产生 180 度和 270 度的时钟。根据到达时间,有关的输入逻辑电平转换被记录在不同地点的四个寄存器内。我们在 Altera 的 Cyclone FPGA