1 摘要
基于 FPGA 的 CARRY4 抽头延迟链 TDC,核心是利用 Xilinx FPGA 中 CARRY4 进位单元的固定、低抖动级联延迟构建抽头延迟线,通过锁存信号传播位置实现亚纳秒级时间测量,单级进位延迟约 10–30 ps,级联后可覆盖更大时间量程并结合粗计数拓展动态范围。TDC 设计利用 FPGA 的专用进位链硬件,实现了亚纳秒级的时间测量精度,这是传统数字方法无法达到的。虽然需要校准,但其性能优势和数字集成的便利性使其成为高精度时间测量的首选方案。
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,这样级联起来,形成延时链。
CYINIT → MUXCY0 → CO[0] → MUXCY1 → CO[1] → MUXCY2 → CO[2] → MUXCY3 → CO[3]
DI[0] S[0] DI[1] S[1] DI[2] S[2] DI[3] S[3]
模拟内部结构:
`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


