之前一向相不明白,为什么从官网下载的AC97的IP不能跑起来,整个IP就像空壳相同,bit_clk输进去,没有任何信号输出来。从IP的RTL来看,即使是IP不连到CPU的BUS上,只要是归纳进FPGA了,当BIT_CLK信号输进IP时,SD_OUT,SYNC就应该有数据和信号输出,但奇怪的是,它们不是为高便是为低,跳都不跳一下,很显然,IP的输出信号并没有成功的输出到管脚上。
后来才发现,原来是束缚的问题,看来关于FPGA规划来说,束缚真的很重要啊。
下面介绍几种常用的束缚句子,以备查阅。
NET “clk0”
#运用TIMESPEC束缚sys_clk_grp的周期
TIMESPEC “TS_ sys_clk_grp ” = PERIOD ” sys_clk_grp ” 9.9 ns HIGH 50 %;#周期9.9ns,HIGH指出时钟周期里的第一个脉冲是高电平,假如是LOW表明是低电平,占空比50%
# FROM_TO用来界说两个逻辑组之间的时序束缚
#语法:TIMESPEC “TS_name ” = FROM “group1″ TO ” group2″ value;
TIMESPEC “TS_p2s” = FROM “pads” TO “ffs” 10;
#最大偏移束缚MAXSKEW用于阐明同一点驱动的时钟信号经过途径传达后,抵达两个或多个结尾的时间差
NET “AC97_Bit_Clk” MAXSKEW =10ns;
NET clk0 IOSTANDARD = LVCMOS33;#IO电平规范有LVCMOS25、LVTTL、SSTL2_I、LVDCI_33等
NET sys_rst_in LOC = D6;
NET sys_rst_in PULLUP;# PULLUP、 PULLDOWN上拉和下拉设置
NET sys_rst_in TIG;# TIG(Timing Ignore)不进行时序束缚
#通配符
NET gpio_char_lcd<6> LOC = AE13;
NET gpio_char_lcd<5> LOC = AC17;
NET gpio_char_lcd<4> LOC = AB17;
NET gpio_char_lcd<3> LOC = AF12;
NET gpio_char_lcd<2> LOC = AE12;
NET gpio_char_lcd<1> LOC = AC10;
NET gpio_char_lcd<0> LOC = AB10;
NET gpio_char_lcd<*> IOSTANDARD = LVCMOS33;
NET gpio_char_lcd<*> TIG;
NET gpio_char_lcd<*> PULLDOWN;
# Locate DCM/BUFG – Tools can probably figure them out automatically
#
INST dcm_0/dcm_0/DCM_ADV_INST LOC = DCM_ADV_X0Y1;
INST dcm_1/dcm_1/DCM_ADV_INST LOC = DCM_ADV_X0Y2;
INST dcm_2/dcm_2/DCM_ADV_INST LOC = DCM_ADV_X0Y0;
INST dcm_0/dcm_0/CLK0_BUFG_INST
INST dcm_0/dcm_0/CLK90_BUFG_INST LOC = BUFGCTRL_X0Y1;
INST dcm_0/dcm_0/CLKDV_BUFG_INST LOC = BUFGCTRL_X0Y2;
INST dcm_1/dcm_1/CLK0_BUFG_INST
INST dcm_1/dcm_1/CLK90_BUFG_INST LOC = BUFGCTRL_X0Y30;
例如:
INST
又例如,X,Y,Z是对应的是寄存器。现在想把它们放在一个指定的区域中,我能够这样写,
INST
INST
INST