时钟约束用于指定输入时钟的工作周期,通常需要至少做周期约束。在FPGA设计中,我们可以通过以下模板来设置时钟约束:
```create_clock -name <clock_name> -period <period> [get_ports <clock port>]```
举例来说,如果我们要对输入的100M时钟(有些板子是50M时钟)做周期约束,可以使用以下代码:
```create_clock -period 10.000 -name CLK_i [get_ports CLK_i]```
这样就可以确保时钟信号在每个周期内都按照指定的时钟频率工作。
压缩程序详解:
在FPGA编译后生成的程序往往较大,通过压缩可以减小程序大小,带来一些好处,比如下载速度加快、占用FLASH存储更小、加载速度变快等。具体的设置方法包括以下操作:
-
设置CFGBVS参数,根据连接至不同Bank的VCCO值设置为2.5V或3.3V。
-
配置CONFIG_VOLTAGE为对应的配置电压,例如设置为3.3V。
-
启用BITSTREAM.GENERAL.COMPRESS以压缩BIT文件。
-
设置BITSTREAM.CONFIG.CONFIGRATE来指定FLASH配置速度。
-
设定BITSTREAM.CONFIG.SPI_BUSWIDTH来设置FLASH配置的位宽。
-
使用BITSTREAM.CONFIG.SPI_FALL_EDGE来指定FLASH接口的时钟加载沿。
以上代码片段中涉及的含义解释如下:
-
CFGBVS参数:用于指定连接至不同Bank的VCCO值的参数。
-
CONFIG_VOLTAGE:设置为对应的配置电压,这里设定为3.3V。
-
BITSTREAM.GENERAL.COMPRESS:用于压缩BIT文件。
-
BITSTREAM.CONFIG.CONFIGRATE:指定FLASH配置速度,但仅对纯FPGA有效,不支持ZYNQ。
-
BITSTREAM.CONFIG.SPI_BUSWIDTH:设置FLASH配置的位宽,同样只对纯FPGA有效。
-
BITSTREAM.CONFIG.SPI_FALL_EDGE:指定FLASH接口的时钟加载沿,同样只对纯FPGA有效。
通过以上设置,可以有效地对FPGA程序进行压缩,从而优化程序大小和加载速度。