fpga时序相关—set_input_delay和set_output_delay

本文详细解析了FPGA设计中的set_input_delay与set_output_delay概念。set_input_delay用于确保外部数据进入FPGA时能够满足保持时间要求,通过增加输入延时来保障数据的正确锁存。而set_output_delay则是在数据从FPGA输出到外部时,通过调整延时确保满足建立时间要求,避免数据采样错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

set_input_delay与set_out_delay理解

set_input_delay

当fpga 外部送入fpga内部寄存器数据时,会有时钟launch clk以及latch clock,前者负责将数据从外部寄存器中送出,后者要在setup和hold都满足的情况下将数据锁入fpga内部寄存器,在这个过程中,如果launch clk将数据送出到达fpga内部寄存器端口,上一次的数据hold time(当前launch clk相当于上一个latch clk)没有满足,上一个数据就不能被正确锁存,而采用set_input_delay就是在数据到达时间上加延时,让latch时钟可以将数据正确锁存。(一般为hold time)

set_out_delay

当fpga 内部送入fpga外部寄存器数据时,也应该会有时钟launch clk以及latch clock,前者负责将数据从内部寄存器中送出,后者要在setup和hold都满足的情况下将数据锁入fpga外部寄存器,在这个过程中,如果latch clk已经到来,由于板级延时之类的关系,导致数据不能及时到达fpga外部寄存器端口,从而setup time不够,导致采样数据出错,这个时候在数据到达set_output_delay一个负值,或者对latch时钟延时一个正值,即可使得满足建立时间。


注意:

在设置约束的过程中,set_input_delay时launch clk应该为外部器件的数据发送时钟,如果没有,可以设置一个虚拟时钟,latch clk应该为fpga内部采样时钟;set_output_delay时launch clk应该为fpag内部的数据发送时钟,latch clk应该为fpga外部数据锁存时钟,如果没有,可以设置一个虚拟时钟;


就是描述时钟与数据的相位

set_input_delay 为了满足latch的建立时间而有一个最大延时,为了满足保持时间有个最小延迟

set_output_delay 


参考资源链接:[Vivado XDC约束技巧之I/O篇:时序约束与实现](https://wenku.youkuaiyun.com/doc/6412b791be7fbd1778d4ac24?utm_source=wenku_answer2doc_content) 在使用Vivado进行FPGA设计时,掌握XDC约束的使用是至关重要的,尤其是在进行时序分析时。XDC约束通过一系列命令来指导工具如何处理时序问题,确保设计满足特定的时间要求。下面将结合具体的XDC命令时序分析的要求,给出一个应用示例。 首先,我们需要了解set_input_delayset_output_delay这两个命令。set_input_delay用于设置输入端口的时序要求,而set_output_delay用于设置输出端口的时序要求。这两个命令的基本语法如下: set_input_delay -clock [clock_name] -max [max_delay] -min [min_delay] [input_ports] set_output_delay -clock [clock_name] -max [max_delay] -min [min_delay] [output_ports] 在实际应用中,你可能会遇到这样的情况:输入信号需要在特定的时钟边沿前到达FPGA的输入端口,而输出信号则需要在特定的时钟边沿后被驱动。例如,假设有一个外部时钟clk_ext,频率为100MHz,即周期为10ns,我们需要为FPGA的输入端口input_port设置一个最大延时为2ns,最小延时为1ns的约束,以确保信号能在时钟的上升沿前到达: set_input_delay -clock clk_ext -max 2.0 -min 1.0 [get_ports input_port] 对于输出端口,假设有一个输出信号output_port需要在下一个时钟周期的上升沿后至少1.5ns输出: set_output_delay -clock clk_ext -max 1.5 [get_ports output_port] 除了对输入输出端口直接进行时序约束外,还可以使用set_max_delayset_min_delay命令来指定不经过时序元件的组合逻辑路径的时序要求。例如,如果某个组合逻辑路径在实现时被识别为问题路径,我们可以指定其最大延迟为5ns: set_max_delay -from [get_ports input_port] -to [get_ports output_port] 5.0 使用这些命令时,需要确保为所有关键的输入输出端口添加约束,并针对每一个端口具体分析其在实际电路中的时序要求。同时,也需要注意FPGA的板级走线外部器件可能引入的延时。 在进行时序分析时,Vivado会根据这些约束进行检查,确保设计满足时序要求。如果发现违反约束的路径,Vivado会报告相关时序违规,并且可以提供修复建议。 为了更深入地掌握XDC约束时序分析技巧,建议阅读《Vivado XDC约束技巧之I/O篇:时序约束与实现》一书。这本书详细介绍了XDC约束在I/O时序控制方面的高级应用,将帮助你更好地理解XDC约束的细节以及如何有效地应用于你的FPGA设计中,从而提升设计的整体性能可靠性。 参考资源链接:[Vivado XDC约束技巧之I/O篇:时序约束与实现](https://wenku.youkuaiyun.com/doc/6412b791be7fbd1778d4ac24?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值