[数据转换器-信号链] 【转】将BUFG上的时钟信号通过FPGA的普通IO输出

[复制链接]
948|1
 楼主| 一代掌门 发表于 2016-12-23 12:43 | 显示全部楼层 |阅读模式
声明:以下内容仅指Xilinx Spartan6系列,其他FPGA并不一定适用。
   
    FPGA的设计中,时钟系统的设计极其重要,通常时钟信号会使用BUFG网络减少传输延迟,提高系统性能并增强系统的稳定性。
    在实际使用中,经常会遇到需要将某个BUFG上的时钟信号通过FPGA的普通IO输出。如果直接从BUFG上连接到OBUF上,在编译器map的过程中就会出现错误,并提示规避错误的方法,就是在约束文件中加上一条约束,让编译器忽略时序约束的要求,直接通过普通逻辑资源连接。虽然这个约束能规避这个错误,但中间的时序将无法评估,因此可能会导致错误的发生。
    Xilinx Spartan6对于这种应用给出的解决方案是通过ODDR2来连接,每个IO都有ODDR2资源,这些资源可以连接到BUFG网络上。
    使用举例:
    ODDR2 #(
      .DDR_ALIGNMENT("NONE"), // Sets output alignment to "NONE", "C0" or "C1"
      .INIT(1'b0),    // Sets initial state of the Q output to 1'b0 or 1'b1
      .SRTYPE("SYNC") // Specifies "SYNC" or "ASYNC" set/reset
    ) ODDR2_inst (
      .Q(需要输出的时钟信号连线),   // 1-bit DDR output data
      .C0(BUFG上的时钟信号),   // 1-bit clock input
      .C1(BUFG上的时钟信号的180度反相信号),   // 1-bit clock input
      .CE(1'b1), // 1-bit clock enable input
      .D0(1'b1), // 1-bit data input (associated with C0)
      .D1(1'b0), // 1-bit data input (associated with C1)
      .R(1'b0),   // 1-bit reset input
      .S(1'b0)    // 1-bit set input
    );

原味_郭 发表于 2016-12-24 21:49 | 显示全部楼层
这么做有什么用呢,拿个逻辑分析仪抓波形就OK了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

69

主题

191

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部