基于 FPGA CARRY4 抽头延迟链的 TDC 延时仿真
1. 概述
在 FPGA 设计中,时间数字转换器(TDC)常用于高精度测时。基于 Xilinx FPGA 的 CARRY4 抽头延迟链 TDC,核心是利用进位单元的固定、低抖动级联延迟构建抽头延迟线。通过锁存信号传播位置实现亚纳秒级时间测量,单级进位延迟约 10–30 ps,级联后可覆盖更大时间量程并结合粗计数拓展动态范围。
虽然需要校准,但其性能优势和数字集成的便利性使其成为高精度时间测量的首选方案,这是传统纯数字方法难以达到的精度。
2. CARRY4 核心结构与抽头延迟链原理
2.1 CARRY4 单元结构(Xilinx 7 系列 / UltraScale)
每个 CARRY4 包含 4 个 MUXCY 进位选择器与 4 个 XORCY 异或门,形成 4 级进位链。CIN 为进位输入,COUT 为级联输出,CO0–CO3 为 4 个抽头输出,可引出每级进位节点信号。
级联方式上,上一级 CARRY4 的 COUT 接下一级 CIN,形成连续延迟链;抽头 CO0–CO3 分别连接 D 触发器,由停止信号(Stop)或全局时钟同步锁存。
2.2 抽头延迟链 TDC 工作原理
① 起始信号(Start)从链首 CIN 注入,沿 CARRY4 级联路径以固定延迟传播。 ② 停止信号触发所有抽头处的 D 触发器锁存当前传播状态,形成'温度计码'。 ③ 温度计码经编码器转换为二进制细时间值 T_fine,结合粗计数器(如系统时钟计数)得到总时间 T_total = T_coarse + T_fine。
3. Xilinx FPGA CARRY4 单元核
3.1 CARRY4 的工作原理
FPGA 的 CARRY4 进位单元,每个 CARRY4 的 COUT 连接到下一个 CARRY4 的 CIN,这样级联起来,形成延时链。
模拟内部结构如下:
`timescale 1ps/1ps
module CARRY4 (
output [3:0] CO,
output [3:0] O,
input CI,
input CYINIT,
input [3:0] DI,
input [3:0] S
);
// 模拟 Xilinx CARRY4 的行为
reg [3:0] co_int;
always @* begin
// 传播延迟:每个 CARRY4 约 10ps
#10;
// CARRY4 逻辑
co_int[0] = (CYINIT & S[0]) | (CI & S[0]) | DI[0];
co_int[1] = (co_int[0] & S[1]) | DI[1];
co_int[2] = (co_int[1] & S[2]) | DI[2];
co_int[3] = (co_int[2] & S[3]) | DI[3];
end
assign CO = co_int;
assign O = co_int;
endmodule
3.2 Xilinx FPGA 架构特性
在 Xilinx FPGA 架构中,CARRY4 资源是专用逻辑,无需占用通用查找表(LUT)。这种硬件特性保证了延迟的可预测性和低抖动,是实现高精度 TDC 的关键基础。实际应用中需注意约束文件对布局布线的控制,确保进位链不被打散。


