I/O引脚分配工作步骤
1. 选择FPGA器件
考虑器件的资源需求,结合PCB上关键路径的位置考虑器件封装的选择。
2. 选择器件的配置模式
不同的配置模式对应了不同的配置引脚,某些配置需要用到一定数量的用户IO,串行配置模式占用少,并行配置模型占用多。而在配置完成后这些用户IO可以被用于其他功能。但是在配置过程中,必须保证这些IO不受用户其他应用的信号的干扰。
若IO引脚数量充足,最好还是不要复用这些配置用IO引脚。
3. 选择吉比特收发器(GT)引脚
GTs通常有其专用引脚,并通常与其他GTs或IO时钟域共用时钟输入引脚(CCIO)。
此外,Xilinx列出了在各个FPGA家族中一系列不建议使用的位于GTs附近的IO引脚,不恰当地使用了这些引脚将会对GTs的信号完整性造成影响。
用户可以用Clock Resources视图和Device视图来放置GTs,还需要避免某些些硬核IP会阻碍GT ( ? )。
4. 定义外部存储器接口引脚
取决于对时钟频率和延迟(偏移),高速存储器接口(如DDR2、DDR3等)对IO引脚的选择有着特定的需求。
用户可以通过Memory Interface Generator(MIG)工具来配置相应的IO引脚约束,并将这些约束添加到最终的UCF文件中。
5. 定义IP接口引脚
某些IP核(如Ethernet以及PCIe)有特定的IO引脚需求,使用CORE generator工具可以创建各类IP核并自动分配引脚。
6. 定义普通用户功能IO引脚
可以使用IO Planning视图或项目进行可视化的用户IO引脚配置。
7. 定义IO电平标准和属性
用户可选择自动IO分配功能实现自动IO分配。
需要注意“差分IO对”的存在。
可运行设计规则检查(Design Rule Check, DRC),以检查IO电平标准与IO所在的Bank属性是否冲突。
有些IO电平标准可以在一个Bank中组合使用,有些则不能。
8. 定义时钟引脚与时钟拓扑结构
使用FPGA器件上提供的专用时钟输入引脚可获得最佳的时序性能。
使用比全局时钟资源数量更少的时钟的设计通常更简单。
对于更复杂的时钟拓扑结构,用户需要输入时钟树和足够的时钟负载,以便通过布局和布线来运行早期设计并验证其功能。
复杂的时钟拓扑结构包括高速时钟计数器的设计,需要自动或手动规划资源布局来使用区域时钟资源。
9. 布局和布线设计
至此,大部分主要结构(I/O、IP和时钟)都应该定义好了。
定义的和可用的上述主要结构越多,运行DRC的结果就越精确。
该阶段需要执行以下步骤:
> 锁定所有的IO引脚;
> 在布局和布线以前运行一次DRC;
> 运行布局和布线来验证当前的引脚配置方案;
(注意,当前阶段并不需要定义完整的用户逻辑,而只需要确定和IO有关的主要结构。)
> 对当前设计进行完全布局(Implementation)来验证IO引脚是否合法;
> 检查 ngdbuild report和map report所列出的与IO、时钟相关的消息。
11. 噪声分析(SSN和SSO)
噪声分析的方法有SSN和SSO两种:
当出现过大的噪声干扰时,需要优化设计:
> 使用低噪声冲击的IO电平标准;
> 降低驱动强度;
> 使用并行端接DCI标准;
> 降低驱动器的级别(如:Changing the SSTL Class II to an SSTL Class I);
> 重新定义引脚位置,远离噪声源;
> 将下降沿引脚分散到不同的IO Bank内从而降低单个Bank电源的突变噪声;
> 将下降沿组分散到多个同步相位上。
优化设计后:
> 重新进行第9步:布局和布线设计
> 重新进行第10步:噪声分析(SSN和SSO)
12. 板级考虑
需要通过专业仿真软件,利用特定FPGA器件的IBIS(Input/Output Buffer Informational Specification)或HSPICE模型进行信号完整性仿真分析。
可将FPGA器件的引脚布局导入到第三方PCB分析设计软件以设计出更好的引脚分配方案。
优化设计后:
> 重新进行第9步:布局和布线设计
> 重新进行第10步:噪声分析(SSN和SSO)