我假设您使用的是 ISE 而不是新的 Vivado,因为只有 ISE 使用 UCF 约束文件。
## Clock signal
此行是对以下行相关内容的注释。
#NET "clk" LOC=L16 | IOSTANDARD=LVCMOS33; #IO_L11P_T1_SRCC_35
此行指定来自片外的时钟输入(VHDL 顶层中名为“clk”的输入网络)连接到 FPGA 上的哪个物理引脚(LOC=L16)。它还指定该信号使用低压 CMOS 3.3v 信号。
#NET "clk" TNM_NET = sys_clk_pin;
这只是为网络分配了一个时序名称。对于时序特定的约束,将使用时序名称而不是(VHDL 内部)网络名称。
#TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 125 MHz HIGH 50%;
这指定“sys_clk_pin”的时序(解析为 VHDL 网络“clk”)应具有 125 MHz 的频率和 50% 的占空比。该工具需要知道这一点,以确定如何在不违反触发器设置或保持时间的情况下路由信号。名称“TS_sys_clk_pin”只是这个特定约束的标识符。
当您快要填满一个零件或者您想以更高的时钟速度运行它时,正确约束设计非常重要。您可以在赛灵思 ISE 约束指南中找到大量信息:http ://www.xilinx.com/itp/xilinx10/books/docs/cgd/cgd.pdf
如果你不给你的设计时序约束,这些工具通常会抛出一个关于缺乏约束的警告,它会告诉你最后可以多快运行它而不会导致错误。时钟的时序约束是最重要的。您通常只需要同步输入和跨时钟边界的其他时序约束。
请注意,实际上,所有 4 行都已被注释掉(以 # 开头)。如果要使用 3 个功能行,则需要删除注释指定。