ISE 时钟约束
记录一下项目中用到的知识,之前从来没用过ISE,由于目前公司原型验证的平台采用了较老的Vitex-6系列芯片,不得不学习下ISE的ucf约束,如有错误望指正~
系统架构如图所示:Image
系统的输入时钟有两个,一个板级的晶振为FPGA提供40M的时钟,另外射频SOC为FPGA提供一个16M的时钟,该时钟和送入FPGA的IQ ADC数据是同步的,因此在ISE中首先要对这两个时钟进行约束:
NET "Board_clk_40M" LOC PIN1;
NET "Board_clk_40M" TNM_NET = Board_clk_40M;
TIMESPEC TS_Board_clk_40M = PERIOD "Board_clk_40M" 25 ns HIGH 50%;
TNM/TNM_NET 在ISE的UCF约束文件中的语法表示分组约束,语法为{NET|INST|PIN}"ob_name" TNM_NET =“ New_group";其中NET表示从该ob_name的NET相连的所有时钟元素放入组New_group中,是比较常用的时钟约束,INST表示例化该模块上的时钟元素放在改组中,PIN就表示能够从该PIN访问的所有时钟元素放入组中。TNM_NET和TNM的区别大致就在于TNM_NET是可以穿过IBUF进行约束的,TNM则不行。TIMESPEC表示时序规范。
这里外部的40M时钟和16M时钟衍生了后面需要一系列时钟,UG612中推荐对每个使用的时钟进行周期约束,如下图所示: