至此,石锤了如果不加入最基本的时钟约束,Quartus 软件可能真的不会按照最优秀的
布局布线规划给我们进行编译的问题,同时也打脸了我之前给网友的不严谨的回答。所以此
时,我必须要重新组织我对之前网友提问的答案了:无论什么样的系统,都建议加入完整的
时序约束,以保证 Quartus 软件去按照我们明确的时序约束对设计进行必要的优化。即使是
一个非常简单的系统,加入基本的约束也是有意义的,因为这能让我们养成无约束,不设计
的良好习惯。
冷汗过后,相信大家也应该明白我在第一节里面说的,越来越不敢写教程的原因了。不
过,不敢写教程,不等于不愿意分享,如果我自己写的笔记和分析之类的文章能够得到大家
的认可,相信不用我自己喊口号,大家也愿意将其当成教程来学习,来推荐。
到此为止,可能大多数人以为时序约束就差不多了。曾经我也是这样认为的,因为在之
前的网络上,能找到的资料大部分也都是详细介绍到这里就差不多了,其他的一些约束内容,
大多一笔带过,让人误以为那些并不重要,实际上,从一个完整的 PCB 板级系统可靠性来
讲,那些他们没有详细讲到的地方更加的重要,还记得我在第一节说过的 USB 的问题、VGA
的问题吧,那些问题,单靠通过加入简单的时钟约束是无法解决问题的。因为时钟约束只能
约束 FPGA 芯片内的各个路径,而对 FPGA 和其他芯片的连接,也就是 IO 口上的时序约束根
本无能为力,所以,要想解决这些问题,就涉及到另一个更加重要的约束了——IO 约束。什
么是 IO 约束,IO 约束真的能解决这些问题?预知后事如何,且听下回分解。
小梅哥时序分析和时序约束视频课程
(四)I/O 时序定成败——化险为夷
没有遇见过 I/O 时序问题,没有通过 I/O 约束方式实际解决过 I/O 时序问题,就很难明
白 I/O 约束的重要性,也很难相信各种 EDA 软件真的有那么的傻白甜。
我遇到的最典型的一个 I/O 不加约束导致设计异常,然后通过加入合理的 I/O 时序约束
解决问题的例子,就是第一节里面提到的基于 ADV7123 芯片的 RGB 数字时序转 VGA 模拟时
序的例子。
ADV7123 这个芯片,相信大凡接触过基于 FPGA 的 VGA 显示的网友都了解,无论是国际
大厂友晶的 DE1、DE2 开发板,还是我们(小梅哥 FPGA)的 24 位高动态 VGA 输出模块,都
是使用的该芯片实现的,这个芯片实际上就是一个集成 3 路 10bit 并行 DAC 的 DAC 芯片。
其系统架构如下图所示: