您的位置 首页 系统

ISE 束缚文件 *.ucf的写法

之前一直相不明白,为什么从官网下载的AC97的IP不能跑起来,整个IP就像空壳一样,bit_clk输进去,没有任何信号输出来。从IP的RTL来看,即使

之前一向相不明白,为什么从官网下载的AC97的IP不能跑起来,整个IP就像空壳相同,bit_clk输进去,没有任何信号输出来。从IP的RTL来看,即使是IP不连到CPU的BUS上,只要是归纳进FPGA了,当BIT_CLK信号输进IP时,SD_OUT,SYNC就应该有数据和信号输出,但奇怪的是,它们不是为高便是为低,跳都不跳一下,很显然,IP的输出信号并没有成功的输出到管脚上。

后来才发现,原来是束缚的问题,看来关于FPGA规划来说,束缚真的很重要啊。

下面介绍几种常用的束缚句子,以备查阅。

NET “clk0” TNM_NET = “sys_clk_grp”;#在时钟网线clk上附加一个TNM_NET束缚,把clk0驱动的一切同步元件界说为一个名为sys_clk的分组

#运用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; # pads到ffs推迟10ns

#最大偏移束缚MAXSKEW用于阐明同一点驱动的时钟信号经过途径传达后,抵达两个或多个结尾的时间差

NET “AC97_Bit_Clk” MAXSKEW =10ns;

NETtft_wr LOC=C11 | IOSTANDARD = LVCMOS33;

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 SYNC DRIVE = 8 | SLEW = SLOW;# DRIVE :最小驱动电流,单位mA,能够有2,4,6,8,12,16这几种形式,SLEW ={FAST|SLOW|QUIETIO}, QUIETIO仅用在Spartan-3A。SLEW是压摆 ,假如slew=fast 会呈现过冲,此刻DRIVE假如很大(12mA)会导致输出功率的失真很厉害,有可能会不满足外接的器材的要求。

#通配符

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

# but just LOC them down to be safe

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 LOC = BUFGCTRL_X0Y0;

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 LOC = BUFGCTRL_X0Y31;

INST dcm_1/dcm_1/CLK90_BUFG_INST LOC = BUFGCTRL_X0Y30;

区域的束缚相当于将布局过程中指定特定类型的器材的方位,这完全能够经过FloorPlanner的GUI界面进行设置,用图形界面设置完后,装备信息会放到UCF中,这儿只介绍UCF的运用。

例如:

INST“Done”LOC= “SLICE_X32Y163″ ;#Done映射为一个寄存器,映射到SLICE_X32Y163的方位上。(32,163)相当于一个坐标,能够用FloorPlanner进行检查。INST”BRAM4/BU2/U0/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v4_init.ram/TRUE_DP.SINGLE_PRIM.TDP”LOC= “RAMB16_X2Y22” ;#RAM16的一个映射。

又例如,X,Y,Z是对应的是寄存器。现在想把它们放在一个指定的区域中,我能够这样写,

INST“X”AREA_GROUP= reg;

INST“X”AREA_GROUP= reg;

INST“X”AREA_GROUP= reg;

AREA_GROUPregRANGE= SLICE_X1Y1 :SLICE_X1Y6;

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/xitong/263001.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部