news 2026/8/25 11:20:18

FPGA实现TDC算法(FPGA实现延时)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
FPGA实现TDC算法(FPGA实现延时)

一、FPGA如何实现延时
1.关于ps级别的延时
2.关于ns级别的延时
3.关于10ns级别的延时
4.关于1ms级别的延时


参考:https://www.baidu.com/link?url=sojRDWma1MokFTKgGgf-i-d2hLSTZg2HX45zu5TtJ1YlmEATIqwTc6NexEPZIozYA314EHQVPEYFcWGDBOGFZXGVsz-i1kSbTa6KuoHIJm_&wd=&eqid=89e7a2d40503cda6000000066948d8ee
参考:https://baijiahao.baidu.com/s?id=1827942128414919469&wfr=spider&for=pc
参考:https://blog.csdn.net/gaoxcv/article/details/124591638
使用carry进位链实现ps级别延时
参考:http://www.360doc.com/content/25/0926/10/64556539_1162023558.shtml
参考:https://blog.csdn.net/ipfs8storage/article/details/154445402
(* keep_hierarchy = "TRUE" *)
module TDL
#(
parameter NUM_STAGES = 264
)(
//Inputs
iRST,
iHIT,
iSTORE_STOP,

//Outputs
oTHERMOMETER_VALUE,
oFED
);

//Singal type definition
//Inputs
input iRST;
input iHIT;
input iSTORE_STOP;

//Outputs
output [NUM_STAGES - 1 : 0] oTHERMOMETER_VALUE;
output oFED;


// Define interenal signals
(* dont_touch = "TRUE" *) wire [NUM_STAGES - 1 : 0] wFIS_VALUE;
(* dont_touch = "TRUE" *) wire STORE_STOP_BUFG;
/*(* dont_touch = "TRUE" *)*/ wire wFED;

wire [NUM_STAGES - 1 : 0] rVALUE;
BUFG bufg_inst (
.I(iSTORE_STOP), // 输入时钟信号
.O(STORE_STOP_BUFG) // 输出缓冲后的时钟信号
);

//FINE TDC DELAY CHAIN
genvar i;
generate
for(i = 0 ; i <= (NUM_STAGES / 4) - 1; i = i + 1)
begin : generate_block
if(i == 0)begin : CARRY4_first
(* dont_touch = "TRUE" *)
CARRY4 CARRY4_first_inst(
.CO (wFIS_VALUE[3 : 0]), // 4-bit carry out
.O (),
.CI (1'b0), // 1-bit carry cascade input
.CYINIT (iHIT), // 1-bit carry initialization
.DI (4'b0000), // 4-bit carry-MUX data in
.S (4'b1111) // 4-bit carry-MUX select input
);
end
else
begin : CARRY4_others
(* dont_touch = "TRUE" *)
CARRY4 CARRY4_others_inst(
.CO (wFIS_VALUE[4 * (i + 1) - 1 : 4 * i]),
.O (),
.CI (wFIS_VALUE[4 * i - 1]),
.CYINIT (1'b0), //0表示加法,1表示减法
.DI (4'b0000),
.S (4'b1111)
);
end
end
endgenerate

//FIRST STAGE D FLIP FLOPS TO SAMPLE DELAY CHAIN
genvar j;
generate
for(j = 0 ; j <= NUM_STAGES - 1 ; j = j + 1)
begin
(* dont_touch = "TRUE" *)
FDCE #(
.INIT(1'b0)
) rTDC_VALUE(
.Q (rVALUE[j]),
.C (STORE_STOP_BUFG),
.CE (1'b1),
.CLR (iRST),
.D (wFIS_VALUE[j])
);

end
endgenerate

assign wFED = wFIS_VALUE[0];
assign oFED = wFED;
assign oTHERMOMETER_VALUE = rVALUE;

endmodule


二、FPGA实现频率计
1.使用FPGA统计信号的长度
https://blog.csdn.net/SLAM_masterFei/article/details/105582220


三、FPGA实现延时
短延时(<10ns):IDELAYE2硬核 > 寄存器打拍
中延时(10ns~1ms):计数器 > 移位寄存器
长延时(>1ms):FIFO+外部DDR > 大容量BRAM
皮秒级需求:PLL相位插值 + IDELAYE2
皮秒级需求:使用carry4或者carry8进位链来实现
皮秒级需求:FPGA的DSP来实现延时

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/25 8:14:38

10万奖金,58人晋级!这场3D打印大赛谁将脱颖而出?

2025年12月19日&#xff0c;创想三维公布了其于9月底启动的“玩转K2系列”创作大赛第一轮评选结果。活动共收到192位用户提交的284件参赛作品&#xff0c;经过大众投票&#xff0c;最终有58位参赛者成功晋级。 第二轮专业评审将于12月20日至12月28日进行&#xff0c;最终获奖名…

作者头像 李华
网站建设 2026/8/25 14:04:13

论文搜索途径及高效文献检索方法探讨

一、wispaper 入口在这&#x1f449;https://www.wispaper.ai/ 追踪自己研究方向的前沿&#xff0c;其实是搞科研关键的技能之一 问题是&#xff0c;每天手动去检索新论文太麻烦&#xff01;看《Nature》《Science》这种综合期刊又太杂&#xff0c;想找对口内容很难&#xf…

作者头像 李华
网站建设 2026/8/25 20:17:51

springboot基于web在线医疗预约与咨询平台

SpringBoot基于Web的在线医疗预约与咨询平台介绍 一、平台开发背景与核心目标 随着互联网技术的普及和医疗需求的增长&#xff0c;传统就医模式面临排队时间长、流程繁琐、资源分配不均等问题。基于SpringBoot与Web技术的在线医疗预约与咨询平台应运而生&#xff0c;旨在实现以…

作者头像 李华
网站建设 2026/8/24 12:35:54

基于SpringBoot的勤工助学系统的介绍

一、系统目标 基于 SpringBoot 的勤工助学系统&#xff0c;旨在解决高校勤工助学管理中岗位发布分散、申请流程繁琐、考勤考核低效、薪资发放不透明等问题。通过构建 “岗位管理 - 申请录用 - 考勤考核 - 薪资结算” 的全流程数字化平台&#xff0c;实现勤工助学工作的规范化、…

作者头像 李华
网站建设 2026/8/25 11:26:25

数字孪生与AutoGLM融合难题,90%工程师忽略的3个关键控制节点

第一章&#xff1a;Open-AutoGLM 数字孪生联动控制Open-AutoGLM 是一个面向工业自动化场景的开源框架&#xff0c;结合大语言模型与数字孪生技术&#xff0c;实现对物理设备的智能感知、分析与闭环控制。该系统通过构建高保真的虚拟模型&#xff0c;实时同步产线设备运行状态&a…

作者头像 李华
网站建设 2026/8/26 3:51:31

SpringBoot + MQTT 如何实现取货就走的智能售货柜系统

昨天在办公楼底下&#xff0c;我用了一下那种开门拿货&#xff0c;关门自动扣费的智能售货柜&#xff0c;真挺方便的。其实这种售货柜并不少见&#xff0c;很多无人售货店、地铁站和景区都能经常看懂。那这种流程是怎么实现的呢&#xff1f;下面我们来分析一下整个实现的流程。…

作者头像 李华