首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

时序分析/约束——Xilinx时钟资源 & ISE时序分析器(2)

时序分析/约束——Xilinx时钟资源 & ISE时序分析器(2)

    • assign GND_BIT = 0;  
    •    assign GND_BUS_7 = 7'b0000000;  
    •    assign GND_BUS_16 = 16'b0000000000000000;  
    •    assign CLKIN_IBUFG_OUT = CLKIN_IBUFG;  
    •    assign CLK0_OUT = CLKFB_IN;  
    •    IBUFG  CLKIN_IBUFG_INST (.I(CLKIN_IN),   
    •                            .O(CLKIN_IBUFG));  
    •    BUFG  CLK0_BUFG_INST (.I(CLK0_BUF),   
    •                         .O(CLKFB_IN));  
    •    BUFG  CLK2X_BUFG_INST (.I(CLK2X_BUF),   
    •                          .O(CLK2X_OUT));  
    •    DCM_ADV #( .CLK_FEEDBACK("1X"), .CLKDV_DIVIDE(2.0), .CLKFX_DIVIDE(1),   
    •          .CLKFX_MULTIPLY(4), .CLKIN_DIVIDE_BY_2("FALSE"),   
    •          .CLKIN_PERIOD(10.000), .CLKOUT_PHASE_SHIFT("NONE"),   
    •          .DCM_AUTOCALIBRATION("TRUE"), .DCM_PERFORMANCE_MODE("MAX_SPEED"),   
    •          .DESKEW_ADJUST("SYSTEM_SYNCHRONOUS"), .DFS_FREQUENCY_MODE("LOW"),   
    •          .DLL_FREQUENCY_MODE("LOW"), .DUTY_CYCLE_CORRECTION("TRUE"),   
    •          .FACTORY_JF(16'hF0F0), .PHASE_SHIFT(0), .STARTUP_WAIT("FALSE"),   
    •          .SIM_DEVICE("VIRTEX5") ) DCM_ADV_INST (.CLKFB(CLKFB_IN),   
    •                          .CLKIN(CLKIN_IBUFG),   
    •                          .DADDR(GND_BUS_7[6:0]),   
    •                          .DCLK(GND_BIT),   
    •                          .DEN(GND_BIT),   
    •                          .DI(GND_BUS_16[15:0]),   
    •                          .DWE(GND_BIT),   
    •                          .PSCLK(GND_BIT),   
    •                          .PSEN(GND_BIT),   
    •                          .PSINCDEC(GND_BIT),   
    •                          .RST(RST_IN),   
    •                          .CLKDV(),   
    •                          .CLKFX(),   
    •                          .CLKFX180(),   
    •                          .CLK0(CLK0_BUF),   
    •                          .CLK2X(CLK2X_BUF),   
    •                          .CLK2X180(),   
    •                          .CLK90(),   
    •                          .CLK180(),   
    •                          .CLK270(),   
    •                          .DO(),   
    •                          .DRDY(),   
    •                          .LOCKED(LOCKED_OUT),   
    •                          .PSDONE());  
    • endmodule  

    时钟从CLKIN_IN输入,经过IBUFG,输出为CLKIN_IBUFG,然后输入到DCM_ADV,输出为CLK0_BUF和CLK2X_BUF,CLK0_BUF经过BUFG得到CLKFB_IN,一方面反馈到DCM的,另一方面也从CLK0_OUT输出;CLK2X_BUF则经过BUFG后直接输出为CLK2X_OUT。
  • LOGIC + DCM + BUFG和前一种的区别在于DCM的输入是从内部输入还是外部输入。从外部输入则用IBUFG,保证时钟信号由芯片引脚输入;从内部输入则可以选择内部逻辑的任意信号,在FPGA内部是没有差分信号的,所有内部时钟信号都是单端信号。
Google到一篇不错的博客:如何正确使用FPGA的时钟资源

2.第二全局时钟资源
第二全局时钟资源属于长线资源,长度和驱动能力仅次于全局时钟资源,也可以驱动芯片内部的任何一个逻辑,抖动和延时仅次于全局时钟。在设计中,一般将高频率、高扇出的时钟使能信号以及高速路径上的关键信号指定为全局第二时钟信号。使用全局时钟资源并不占用逻辑资源,也不影响其他布线资源;第二时钟资源占用的是芯片内部的资源,占用部分逻辑资源,各个部分的布线会相互影响,所以建议在设计中逻辑占用资源不超过70%时使用。
使用第二时钟资源:可以在约束编辑器中的专用约束Misc选项中,指定所选信号使用低抖动延迟资源“LowSkew”来指定,也可以在ucf文件中添加“USELOWSKEWLINES"约束命令。比如:

[plain] viewplaincopy& ISE时序分析器【转】" height="12" width="12">& ISE时序分析器【转】" height="12" width="12">


  • NET "s1" USELOWSKEWLINES;  
继承事业,薪火相传
返回列表