一旦了解了最基本的概念和操作,就可以开始察看FPGA构造。通常都从时钟逻辑开始。这包括数字时钟管理器(DCM)、锁相环(PLL)、全局时钟缓冲器(BUFG)、区域时钟缓冲器(BUFR)、I/O缓冲器(BUFIO)以及不同的时钟区域。(要想按字母列出项目表,可以到LIST窗口点击Type来排序。)点击一个DCM并按F11。ARRAY窗口会定位到选择的DCM并放大显示它。继续点击DCM并观察GUI底部的Console窗口,其中会显示与下面类似的内容:
comp “DCM_BASE_inst_star”, site “DCM_ADV_X0Y9”, type = DCM_ADV
(RPM grid X73Y202)
这是有用的数据。 拷贝并粘贴上述内容到UCF文件中,并作如下更改以锁定这一DCM逻辑:
INST “DCM_BASE_inst_star”
LOC=DCM_ADV_X0Y9;
利用这一方法,几乎可以锁定FPGA中的任何项目。 下面是BUFG锁定的另一个例子:
comp “BUFG_inst_star”, site “BUFGCTRL_X0Y20”, type = BUFG (RPM grid X73Y124)
INST “BUFG_inst_star”
LOC=BUFGCTRL_X0Y20;
再次回到List窗口并标注同一DCM。 双击之后将会在Block视图中显示该DCM以及所有设置和参数。这是一项非常强大的功能,可用于FPGA构造中的任何逻辑项目。如果选择一个逻辑片并双击它,就可以看到逻辑片是如何布线连接的,以及是否使用了进位链或本地触发器。
Block视图的按钮条包含许多其它选项。值得一提的是 F= button按钮,其功能是显示逻辑片中使用的项目的完整配置。例如,如果使用了一个LUT6和一个触发器,按下F= 按钮将会给出LUT的布尔方程以及触发器的配置模式。
阅读赛灵思用户指南是一回事,而从计算机屏幕上展开的视图上探察所有逻辑、开关和参数则是另一回事。一旦熟悉了FPGA构造及所有资源,那么在编写和验证设计时获得的帮助将会令人感到惊奇。
在设计流程中记录生成补丁脚本
当用户在GUI环境中编辑设计时,FPGA Editor能够记录用户动作。用户不仅可以保存记录动作流程,还可在以后重新使用记录的脚本并加以重复。当无法更改RTL,但又需要在设计过程中对设计进行修改时,这一功能特别有用。假设设计采用了第三方IP或赛灵思加密IP,其中包括一个全局时钟和一个DCM来生成称为 interface_clk的时钟。然后再假设接口所连接的ASIC出现问题,无法在预定的interface_clk的上升沿接收数据。如何修正这一问题?
当然,你可以改变PCB,更换出现问题的ASIC或者让第三方IP小组来修改时钟输出逻辑以提供90度相移的interface_clk。所有这些解决方案都既耗费时间又成本高昂。一个更简单的建议是利用FPGA Editor来记录修改动作,对interface_clk逻辑进行必要的更改,从而为出现问题的ASIC提供正确的时钟相位。一旦有了相关修改的FPGA Editor脚本,就可以回放这些命令行脚本记录的修改步骤,而你也可以正常继续你的FPGA设计流程。当出现问题的ASIC修复正常以后,你只需要将FPGA Editor脚本从编译脚本中移除就可以,而interface_clk也会恢复其正常的行为。