基于FPGA的高精度时间数字转换电路的设计与实现
1.引言
时间数字转换电路 TDC (Time to Digital Converter)广泛应用于高能物理中粒子寿命检测、自动检测设备、激光探测、医疗图形扫描、相位测量、频率测量等研究领域[1]。如在医疗图象扫描仪 PET中广泛使用 TDC设备,其原理是检测人体内正电子对消失后产生的一对 gamma射线光子,利用模拟电路将所释放的 gamma射线光子与阈值比较,并在高于该阈值时产生一个触发脉冲,数字 TDC电路测量该触发脉冲到达的时间。早期该类设备中的 TDC的分辨率为 2.5ns,目前新型设备中分辨率已达 1.4ns [2]。在激光探测中,TDC电路用来测量 TOF(Time of Flight for Laser),即分辨从激光源到目标后再返回到激光检测器的时间[3]。另外,TDC也是间接实现 ADC的手段之一。如果在模拟信号前加一个 ATC(Analog to Time Conversion),加上后续的 TDC部分则可以完成 ADC过程。
早期 TDC电路通常由印刷线路板(PCB)上的分立元件组成,且通常是模拟-数字混合电路,因此功耗和体积较大、电路的一致性较差。超大规模集成电路(VLSI)工艺的进步使TDC设计在保持高分辨率的前提下向高集成度、低成本、低功耗方向发展。同时全数字集成(All DIGItal Integration)电路设计因工艺简单、设计成本较低、设计难度较小、流片成功率高等因素而一直是电路设计人员追求的目标,全数字的 TDC也是研究人员关注的问题。
文献[4]于 1993年报道了一种基于环形延时门的全数字 TDC设计。该设计以 1.5微米 CMOS工艺实现了 13位数字转换输出,芯片面积为 1.1mm 2,分辨率为 0.5ns。之后于 2003年,该作者在文献[5]报道了一种全数字化的模数变换电路,该电路基于环形延时门的全数字TDC实现。文献称以 0.8微米 CMOS工艺在 0.45mm 2面积上实现了 18位全数字的 ADC。
随着集成电路(IC)制造工艺的不断进步,以FPGA(Field Programmable Gate Array)和CPLD( Complex Programmable Logic Device)为代表可编程逻辑器件 PLD产业迅速发展,逐渐蚕食专用集成电路ASIC(Application Specific Integrated Circuit)所占市场份额。这一发展使得基于PLD的TDC设计成为可能。众所周知,基于PLD的设计可以有效地缩短研制周期,
提高设计灵活性和可靠性,降低设计成本且无流片风险。成功设计的IP核(Intellectual Property Core )与工艺相对独立,可灵活地移植到其他SOC,使设计重用变得十分方便。
本文借鉴文献[4]和文献[5]的环形延时门法提出一种基于 FPGA的高精度 TDC的设计方法,为了适应 FPGA设计,对延时门法做了改造。如果简单移植延时门设计,在 FPGA中实际是行不通的。因为与 ASIC设计不同,在 FPGA里门电路是由 EDA软件综合后实现,首先很难保证各门之间的延时一致性;其次,在时序上也很难保证和其他电路的配合。为了提高分辨率,与单纯计数型 TDC不同,本设计中也采用类似环形延时门设计的粗计数和细计数两部分电路对给定的时间量进行测量,粗计数部分控制测量范围,细计数部分则由环形移位寄存器代替环形延时门实现。本转换电路以 QuartusII 4.2为软件平台在 Altera系列芯品上实现,时序仿真表明昀高分辨率可达 3.3ns。
2.基本工作原理
基于环形延时门的 TDC系统的原理框图如图 1 所示,PA是起始脉冲,由非门组成的特定结构延时链提供脉冲 PA的延时信息。在 PB上升沿,延时信息经锁存编码电路锁存并编码后输出,脉冲 PB与 PA之间的时间差即由编码输出的数字量表示。实验结果表明,该方法适用于 ASIC实现,但不适用于 FPGA实现。原因是目前 EDA工具中综合器的综合结果是从设计对象的逻辑功能出发,而不注重设计者所特定的电路结构,而根据 FPGA电路的内部电路特点,文献[2]提供的延时链结构并不适于在 FGPA上实现。FPGA内部布线延时的不确定性会大大增加各单元延时信息的离散性。文献[6]介绍了该方法的 CPLD实现,但该法针对具体芯片附加了许多约束条件,延时链中每个非门由片内的一个逻辑宏单元 LE实现,由于 CPLD容量相对较小,导致芯片资源利率低,芯片间的移植性差,且由于 FPGA与 CPLD结构上的差异暂无法在 FPGA上实现。以下介绍一种全新的基于 FPGA的高精度 TDC设计方法。
基于 FPGA的 TDC电路原理如图 2所示,该电路包括 16位环形移位寄存器 (Ring Shift Register)、16位输入 4位输出的编码电路 (Encoder)、时钟管理模块(Clockmgr)、8位通用计数器单元(Counter)、复位逻辑(Reset Logic)和输出逻辑部分(Out Logic)。其中环型移位寄存器和编码器组成该电路的细计数器部分,用来控制电路测量精度;通用计数器作为粗计数部分,决定电路的时间测量范围;时钟管理模块通过调用 FPGA内部 PLL资源用来为移位寄存器提供合适的工作时钟;复位逻辑控制整个 TDC电路的复位动作;输出逻辑将转换数字量的细计数和粗计数部分组合为昀终系统输出。
16位移位寄存器构成如图 3,由 16个带异步复位和置位端的 D触发器组成,初始状态或复位后电路节点 p15被置位高电平,其他节点(p14至 p0)被复位至低电平;正常工作时,在移位脉冲 clk上升沿时高电平在 16个电路节点中循环出现,通过检查某时刻电路节点的状态(高电平的位置)可以判断系统所经历的移位脉冲 clk的数量,电路的时间分辨率即为 clk的时钟周期。编码器对移位寄存器节点状态编码并作为测量电路细计数部分的 4位输出。通用计数器工作在移位寄存器节点 p15的上升沿,其计数周期为移位脉冲周期的 16倍,完成低位到高位的进位计数,并作为测量电路的粗计数部分的 8位输出。复位逻辑负责环形移位寄存器和通用计数器的复位操作。输出逻辑分别将粗计数和细计数输出的 8位和 4位数据组合为测量电路的昀终输出,并完成数据的校验。
基于 FPGA的单计数器脉宽测量电路采用在脉冲宽度对应的时间内记数的方法,因高频工作时计数器会出现跳码或漏计现象,造成系统错误输出,所以分辨率很难提高 [7]。与单计数器脉宽测量电路相比采用结构简单的细计数电路能大大提高电路的时间分辨率,并避免了通用计数器极限工作频率下的跳码现象,且细计数电路占用极少的片上资源。
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 基于FPGA的快速并行FFT及其在空间太阳望远镜图像锁定系统中的应用(06-21)
- 3DES算法的FPGA高速实现(06-21)
- 用FPGA实现FFT算法(06-21)
- FPGA的DSP性能揭秘(06-16)