不管你是一名逻辑设计师、硬件工程师或系统工程师,甚或拥有所有这些头衔,只要你在任何一种高速和多协议的复杂系统中使用了FPGA,你就很可能需要努力解决好器件配置、电源管理、IP集成、信号完整性和其他的一些关键设计问题。不过,你不必独自面对这些挑战,因为在当前业内领先的FPGA公司里工作的应用工程师每天都会面对这些问题,而且他们已经提出了一些将令你的设计工作变得更轻松的设计指导原则和解决方案。
I/O信号分配 可提供最多的多功能引脚、I/O标准、端接方案和差分对的FPGA在信号分配方面也具有最复杂的设计指导原则。尽管Altera的FPGA器件没有设计指导原则(因为它实现起来比较容易),但赛灵思的FPGA设计指导原则却很复杂。但不管是哪一种情况,在为I/O引脚分配信号时,都有一些需要牢记的共同步骤: 1. 使用一个电子数据表列出所有计划的信号分配,以及它们的重要属性,例如I/O标准、电压、需要的端接方法和相关的时钟。 2. 检查制造商的块/区域兼容性准则。 3. 考虑使用第二个电子数据表制订FPGA的布局,以确定哪些管脚是通用的、哪些是专用的、哪些支持差分信号对和全局及局部时钟、哪些需要参考电压。 4. 利用以上两个电子数据表的信息和区域兼容性准则,先分配受限制程度最大的信号到引脚上,最后分配受限制最小的。例如,你可能需要先分配串行总线和时钟信号,因为它们通常只分配到一些特定引脚。 5. 按照受限制程度重新分配信号总线。在这个阶段,可能需要仔细权衡同时开关输出(SSO)和不兼容I/O标准等设计问题,尤其是当你具有很多个高速输出或使用了好几个不同的I/O标准时。如果你的设计需要局部/区域时钟,你将可能需要使用高速总线附近的管脚,最好提前记住这个要求,以免最后无法为其安排最合适的引脚。如果某个特定块所选择的I/O标准需要参考电压信号,记住先不要分配这些引脚。差分信号的分配始终要先于单端信号。如果某个FPGA提供了片内端接,那么它也可能适用于其他兼容性规则。 6. 在合适的地方分配剩余的信号。 在这个阶段,考虑写一个只包含端口分配的HDL文件。然后通过使用供应商提供的工具或使用一个文本编辑器手动创建一个限制文件,为I/O标准和SSO等增加必要的支持信息。准备好这些基本文件后,你可以运行布局布线工具来确认是否忽视了一些准则或者做了一个错误的分配。 这将使你在设计的初始阶段就和布局工程师一起工作,共同规划PCB的走线、冗余规划、散热问题和信号完整性。FPGA工具可能可以在这些方面提供帮助,并协助你解决这些问题,因此你必须确保了解你的工具包的功能。 你咨询一位布局专家的时间越晚,你就越有可能需要去处理一些复杂的问题和设计反复,而这些可能可以通过一些前期分析加以避免。一旦你实现了满意的信号分配,你就要用限制文件锁定它们。 | 图:(a) 未采用Fusion架构的典型系统板结构;(b) 采用Fusion架构的典型系统板结构。 | 信号完整性 大多数先进FPGA能够处理速度为数百兆赫兹的并行总线和具有工作在千兆赫兹范围的串行接口。以这么快的速度工作时,你需要了解信号完整性的原理,因为高频信号的处理会给我们精确简单的数字世界带来一连串模拟设计问题。 安排一些时间阅读FPGA供应商提供的文献。即使你对某个器件或者供应商的信息已经烂熟于心,也有必要参考其他供应商提供的文档,因为不同公司的文档往往有不同的见解。你将会发现在很多问题上不同的供应商拥有不同的观点,如什么会产生高速信号、切换信号之间可以存在多少时延而仍然可以认为它们是同时的等等。FPGA供应商的工具通常可以很好地执行一些基本的信号完整性分析,因此你必须完全了解你所获得的工具包的所有潜能。 此外,目前市场上有几百种关于信号完整性和降噪的书。如果你是个新手或者需要一个进修课程,你可以考虑阅读Douglas Brooks编写的“信号完整性问题和PCB设计”。如果需要进行更深入的探讨,可以阅读Howard Johnson编写的“高速数字设计”。 |