当前位置: 首页 > news >正文

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来实现延时

http://www.cnnetsun.cn/news/180851.html

相关文章:

  • EasyGBS助力智慧医院打造全方位视频监控联网服务体系
  • 【收藏级】全面拆解GraphRAG:从原理到实践,大模型知识库升级必备
  • Java多态——Java的三大特性之一,零基础小白到精通,收藏这篇就够了
  • 【Open-AutoGLM元宇宙适配终极指南】:揭秘三大核心技术突破与落地实践
  • Open-AutoGLM如何实现自主学习?:深度剖析其进化机制与训练闭环设计
  • [驱动之路——GPIO子系统]学习总结,万字长篇,一文彻底搞懂GPIO子系统(含GPIO控制器驱动框架解析)
  • Open-AutoGLM如何重塑城市治理?:3个真实案例揭示AI协同调度的颠覆性力量
  • 智能体式AI实战指南:从零构建IT自动化系统,程序员必学收藏教程
  • 家长用Realme手机,怎样远程管理孩子iPhone的屏幕使用时长?
  • 【Open-AutoGLM智慧城市协同调度】:揭秘未来城市交通智能调度的5大核心技术
  • Java SpringBoot+Vue3+MyBatis 宠物爱心组织管理系统系统源码|前后端分离+MySQL数据库
  • 【Open-AutoGLM自动驾驶交互核心技术】:揭秘AI驱动的车载人机协同新范式
  • 揭秘Open-AutoGLM如何重构电子病历管理:医生工作效率翻倍的底层逻辑
  • NMOS的 G和D并联一个小电容作用和目的
  • 【网络空间安全】P2P网络及限制策略
  • Open-AutoGLM与AppDynamics监控策略剖析(仅限资深架构师掌握的3种模式)
  • 2025年北京大学计算机考研复试机试真题(附 AC 代码 + 解题思路)
  • 【高并发场景下的救星】:Open-AutoGLM智能会话销毁算法详解
  • 为什么你的请假申请总被驳回?,深度剖析Open-AutoGLM流程提交常见陷阱
  • 基于STM32自动售货机控制系统设计
  • Open-AutoGLM会话销毁机制大揭秘:如何实现毫秒级资源释放
  • 【光伏风电功率预测】调度员最需要什么样的 AI 预测?从一条曲线到“可执行方案”
  • 【企业级报销系统深度解读】:Open-AutoGLM单据提交的7个核心要点
  • 揭秘Open-AutoGLM会话超时机制:3步实现稳定可靠的对话控制
  • 别再盲目选型了,Open-AutoGLM与NeoLoad的3个核心差异你必须知道
  • 【Open-AutoGLM多模态理解突破】:揭秘下一代AI视觉语言模型核心技术
  • Open-AutoGLM与NeoLoad压测结果为何大相径庭(独家实测数据披露)
  • 稀缺技术揭秘:Open-AutoGLM分布式任务断点恢复的5个关键设计原则
  • 21世纪全球哲学灯塔:颜廷利——欧美认知度最高的华人思想家
  • 破解APP同质化:在“复制风暴”中寻找破局之道