新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > FPGA时序收敛分析

FPGA时序收敛分析

作者:时间:2012-08-01来源:网络收藏

您编写的代码是不是虽然在仿真器中表现正常,但是在现场却断断续续出错?要不然就是有可能在您使用更高版本的工具链进行编译时,它开始出错。您检查自己的测试平台,并确认测试已经做到 100% 的完全覆盖,而且所有测试均未出现任何差错,但是问题仍然顽疾难除。

本文引用地址:http://www.eepw.com.cn/article/148674.htm

  虽然设计人员极其重视编码和仿真,但是他们对芯片在 FGPA 中的内部操作却知之甚少,这是情有可原的。因此,不正确的逻辑综合和问题(而非逻辑错误)成为大多数逻辑故障的根源。

  但是,只要设计人员措施得当,就能轻松编写出能够创建可预测、可靠逻辑的 代码。

  在 设计过程中,需要在编译阶段进行逻辑综合与相关。而包括 I/O 单元结构、异步逻辑和约束等众多方面,都会对编译进程产生巨大影响,致使其每一轮都会在工具链中产生不同的结果。为了更好、更快地完成时序,我们来进一步探讨如何消除这些差异。

  I/O 单元结构

  所有 都具有可实现高度定制的 I/O 引脚。定制会影响到时序、驱动强度、终端以及许多其它方面。如果您未明确定义 I/O 单元结构,则您的工具链往往会采用您预期或者不希望采用的默认结构。如下 VHDL 代码的目的是采用“sda: inout std_logic;”声明创建一个称为 sda 的双向 I/O 缓冲器。

  


  

FPGA 编辑器视图显示了部分双向I/O散布在I/O缓冲器之外

  图1 – FPGA 编辑器视图显示了部分双向I/O散布在I/O缓冲器之外。

  当综合工具发现这组代码时,其中缺乏如何实施双向缓冲器的明确指示。因此,工具会做出最合理的猜测。

  实现上述任务的一种方法是,在 FPGA 的 I/O 环上采用双向缓冲器(事实上,这是一种理想的实施方式)。另一种选择是采用三态输出缓冲器和输入缓冲器,二者都在查询表 (LUT) 逻辑中实施。最后一种可行方法是,在 I/O 环上采用三态输出缓冲器,同时在 LUT 中采用输入缓冲器,这是大多数综合器选用的方法。这三种方法都可以生成有效逻辑,但是后两种实施方式会在I/O 引脚与 LUT 之间传输信号时产生更长的路由延迟。此外,它们还需要附加的时序约束,以确保时序。FPGA 编辑器清晰表明:在图 1 中,我们的双向 I/O 有一部分散布在 I/O 缓冲器之外。

  教训是切记不要让综合工具猜测如何实施代码的关键部分。即使综合后的逻辑碰巧达到您的预期,在综合工具进入新版本时情况也有可能发生改变。应当明确定义您的 I/O 逻辑和所有关键逻辑。以下 VHDL 代码显示了如何采用 Xilinx® IOBUF 原语对 I/O 缓冲器进行隐含定义。另外需要注意的是,采用相似方式明确定义缓冲器的所有电气特性。

  

  在图 2 中,FPGA 编辑器明确显示,我们已完全在 I/O 缓冲器内部实施了双向 I/O。


上一页 1 2 3 下一页

关键词: 分析 收敛 时序 FPGA

评论


相关推荐

技术专区

关闭