首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >总线定时约束

总线定时约束
EN

Stack Overflow用户
提问于 2015-03-27 01:25:42
回答 2查看 2.1K关注 0票数 1

我正在为我的大学硕士论文在OpalKelly实现上编写一个XilinxSpartan-6。准确地说,这是我正在开发的FPGA (XEM6010-LX45):https://www.opalkelly.com/products/xem6010/

它安装在一个板上,它必须获取多个信号(8+),处理它们并生成多个信号(16+),以根据设置关闭一些反馈循环。

正如您可以想象的那样,我需要驱动多个DAC和ADC,但我很难找到在.ucf文件中施加时间限制的正确方法。

让我们从DACs开始,我们将讨论ADCs,如果我们搞清楚这一点:D

4片DAC芯片,每个芯片由4个信号驱动:时钟、复位、同步、数据。时钟在所有DACs中是共同的,它是一个来自all的27 the时钟,用DDR结构再生,并与其他信号一起发送。

我已经提出了相对于外部时钟(我正在发送的时钟)的正确的时间限制,但是由于它不是用来锁定数据/同步/重置触发器的,所以我似乎必须强制执行相对于内部时钟的约束。

我该如何处理这种情况,基本上是一个带时钟的公共汽车结构?

定时报告是可以的,除了每个定时都相对于内部时钟,而且它忽略了我的REFERENCE_PIN指令(可能是因为我使用它的方式不对)。

如何对输出引脚施加时间限制?毕竟,软件应该能够计算出将时钟从FPGA发送出去的延迟(就像对每一个引脚一样),所以这只是一个减法和总线倾斜的问题!

下面是我编写的.ucf文件(只有我们感兴趣的部分):

代码语言:javascript
复制
NET "clk_dac"        TNM_NET = "TNM_clk_dac";
TIMESPEC TS_clk_dac = PERIOD "TNM_clk_dac" 27 MHz HIGH 50%; #27MHz

# DAC SLOW
NET "dac_slow_sync_pin1" TNM = "dac_slow_sync";
NET "dac_slow_sync_pin2" TNM = "dac_slow_sync";
NET "dac_slow_sync_pin3" TNM = "dac_slow_sync";
NET "dac_slow_sync_pin4" TNM = "dac_slow_sync";
NET "dac_slow_data_pin1" TNM = "dac_slow_data";
NET "dac_slow_data_pin2" TNM = "dac_slow_data";
NET "dac_slow_data_pin3" TNM = "dac_slow_data";
NET "dac_slow_data_pin4" TNM = "dac_slow_data";

OFFSET = OUT AFTER "clk_dac" REFERENCE_PIN "dac_slow_clk" RISING;
OFFSET = OUT AFTER "clk_dac" REFERENCE_PIN "dac_slow_clk" FALLING;

TIMEGRP "dac_slow_sync" OFFSET = OUT 24 ns AFTER "clk_dac" REFERENCE_PIN "dac_slow_clk" FALLING;
TIMEGRP "dac_slow_data" OFFSET = OUT 35 ns AFTER "clk_dac" REFERENCE_PIN "dac_slow_clk" RISING;
EN

回答 2

Stack Overflow用户

发布于 2015-03-27 04:20:40

什么对我有用在慢的SDR接口上,比如你的DAC (我假设SDR.)是把所有的输出放在IOB寄存器上,并确保FPGA内的时间。

所有由同一个内部BUFG时钟时钟锁定的IOB寄存器具有非常相似的时钟到输出值(特别是相对于27 MHz时钟)。这一点尤其正确,因为时间延迟在很大程度上取决于温度,而且整个设备的温度基本上是恒定的。

通常,如果您发送时钟和数据边沿对齐,或者只反转时钟,您会发现您很容易满足时间要求。正如我说过的,如果在FPGA内满足时间要求,如果所有的输出都在IOB中注册并由相同的BUFG时钟,那么外面的情况仍然是如此。在DDR接口的情况下,发送延迟90度的时钟(需要PLL)通常可以工作。

在您这种情况下,我不需要考虑时间限制,只需要确保所有输出都在IOBs中注册。您应该知道,约束不会影响地图或位置和路线,因为它们只会被验证。设计人员的职责是确保系统满足界面时间,工具只为您的设计提供实际价值。

最后,他说,如果记录了输出,则时间延迟将是相同的,假设外部延迟是相同的。这对您来说不是这样的,因为当数据直接连接时,时钟似乎给了几个DAC (因此具有更大的电容和延迟)。再说一遍,你是那个必须做出必要调整的人。

术语表更新

SDR:单一数据速率。数据在所述时钟边缘中的一个上传输。

双倍数据率。数据在时钟边缘传输。

时钟缓冲器。所有的时钟都应该使用BUFG,它们是专门为时钟设计的特殊缓冲器和低倾斜线。

输入/输出块。在IO垫附近的特殊电路,可以配置为自定义IOs的路径。特别是,它有一个寄存器靠近垫。锁相环。用来修改时钟(频率/相位)的电路。

IODELAY: IOB中的一种特殊电路,用于在IOs中添加一个恒定的或可编程的延迟。

我建议你看看IOB数据表。Xilinx站点还有大量的数据表、教程和应用程序说明。

票数 2
EN

Stack Overflow用户

发布于 2015-03-27 16:44:47

附加资源

UG612 -定时闭包用户指南描述了如何指定时间约束。第三章介绍了静态时序分析(STA)的工作原理,以及应该定义什么来评估时间。还有许多很好的图片可以显示从哪里应用约束。

还有UG625 -约束指南描述了可以指定约束的地方(在ucf、xcf、ncf文件中,在VHDL/Verilog中,.)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29291796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档