锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

VCU128评估板的学习历程

时间:2023-01-23 12:30:00 sub板端连接器

VCU使用128评估板

    • vivado报错:[Labtoolstcl 44-513] HW Target shutdown.
  • FPGA差分时钟输入
    • 输入差分时钟
      • Vivado报错ERROR: [Place 30-675] Sub-optimal placement for a global clock-capable IO pin and BUFG pair.
    • 烧录比特文件的信息INFO: [Labtools 27-1434] Device xc7k410t (JTAG device index = 0)
    • 如何在电路图中找到全局时钟和晶振时钟?
    • Xilinx的7系列的SRCC和MRCC(转载)
    • Xilinx 使用芯片全局时钟资源的方法有以下五种:

vivado报错:[Labtoolstcl 44-513] HW Target shutdown.

ViVado打开硬件后,突然关闭开发板电源会报告错误。
在这里插入图片描述

FPGA输入差分时钟

输入差分时钟

将差分时钟转换为单端时钟clk_tmp,然后再将clk_tmp输入全局时钟bufg在约束文件中,请注意只限制差分钟的p端。
将差分时钟转换为单端时钟IBUFGDS这个原语。

IBUFDS 差分输入时使用; OBUFDS 差分输出时使用; IBUFGDS 时钟信号专用输入缓冲器。 

IBUFGDS u0 (       .O(data_clk_tmp),  // Buffer output       .I(data_clk_p),  // Diff_p buffer input        .IB(data_clk_n) // Diff_n buffer input     );    BUFG i0 (       .O(data_clk),          .I(data_clk_tmp)          ); 

差分管脚分配成对分配,只要分配一个,另一个就会自动分配,所以不用担心如何分配另一个信号。
只需约束差异端口的P侧;如果两者都受到约束,工具将其定义为两个独立的时钟,并分析它们之间的时钟路径。这可能会导致不正确的要求。
类似地,只有差分数据端口的p侧需要在输入延迟和输出延迟约束中受到约束。

set_property PACKAGE_PIN AD12 [get_ports { 
        clk_i_p}] set_property IOSTAND LVDS [get_ports { 
        clk_i_p}] 

总结:
需要使用输入信号IBUFDS为了实现差分转单端,还需要添加输入时钟BUFG
使用输出信号OBUFDS实现单端转差分
差分信号只需绑定P端管脚,IOSTANDARD要注意设置

Vivado报错ERROR: [Place 30-675] Sub-optimal placement for a global clock-capable IO pin and BUFG pair.

ERROR: [Place 30-675] Sub-optimal placement for a global clock-capable IO pin and BUFG pair.If this sub optimal condition is acceptable for this design, you may use the CLOCK_DEDICATED_ROUTE constraint in the .xdc file to demote this message to a WARNING. However, the use of this override is highly discouraged. These examples can be used directly in the .xdc file to override this clock rule. 

这是因为我在约束文件中错误地将时钟输入信号绑定到普通引脚上。后来,将时钟输入信号绑定到整个时钟输入引脚GC解决这个问题。

解释如下:
约束文件中时序例外约束部分的内容候,发现很多单位之前的FPGA项目中的约束文件里经常出现的一句时序例外约束是:

set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets NETS_NAME_IBUF]

约束的对象往往是除了sys_clk之外的、由外部引入作为一些通信接口比如SPI或者MDIO接口的时钟管脚的IBUF线。

如果不加这个约束,执行implement的时候往往就会报error或者critical warning、内容中也会提到加上这个约束的话、就会将严重警告或者错误降级为普通warning。

这是因为原来FPGA的管脚上有一类专用的时钟管脚、他们一般用于将外部的时钟信号引入FPGA、并在FPGA module中使用这些引入的时钟信号。但是如果设计时管脚分配没做好、或者管脚不够用了,那么就有可能将本该接入专用时钟管脚(或者叫做全局时钟管脚)的信号,接到了普通IO口上,这样只能通过添加CLOCK_DEDICETED_ROUTE FLASE绕过PAR的检查,但是没有解决根本问题。

必须使用片上的MRCC或者SRCC引脚来把外部时钟信号引入FPGA、然后再在FPGA上使用这些引入的时钟。MRCC/SRCC管脚这两类管脚在一般情况下、不做时钟引入的管脚的时候、也可以作为普通IO来使用。

烧录比特文件的信息INFO: [Labtools 27-1434] Device xc7k410t (JTAG device index = 0)

INFO: [Labtools 27-1434] Device xc7k410t (JTAG device index = 0) is programmed with a design that has no supported debug core(s) in it.

我在VCU128写了一个流水灯,发现烧录比特流文件后,板子灯没有任何变化。后来发现是我把时钟输入信号加错了,虽然我加的是全局时钟GC,但是该时钟不是上电就跑的时钟,而是依赖某些条件才有的。所以流水灯没有变化。后来我将晶振产生的时钟输入就解决了该问题。

如何在电路图中找全局时钟和晶振时钟

在电路图中搜索GC,则会出现全局时钟输入引脚。在说明手册中输入晶振的英文名称(oscilator),则会找出晶振时钟。

Xilinx的7系列的SRCC和MRCC(转载)

首先MRCC和SRCC都是可以连接到全局时钟的,但是全局时钟的资源有限。如果程序较大都使用全局时钟的话,那时钟资源就不够用了。SRCC可用于本区域时钟这个比较好了解,MRCC用于相邻的区域该这么理解,MRCC通过不同于全局时钟的渠道可以到达相邻的区域。如下图BANK1和BANK3可以使用BANK2的MRCC分上来的时钟,没必要先将BANK2的MRCC连接到全局时钟再连接到BANK1和BANK3,这样不但节省了全局时钟资源,而且路径更短。

Xilinx 芯片全局时钟资源的使用方法主要有下面5种:

  1. GCLK -> IBUFG --> BUFG.

    IBUFG 后面连接 BUFG的方法是最基本的全局时钟资源的使用方法, 其等效于 BUFGP

  2. GCLKP&&GCLKN --> IBUFGDS —> BUFG

当输入时钟为差分信号时候,需要使用 IBUFGDS 原语

  1. IBUFG + DCM + BUFG

通过 DCM(digital clock manage) 不仅能对时钟进行同步、移相、分频、倍频等变换,而且可以使用全局时钟的输出无抖动和小延迟。

  1. Logic + BUFG

    BUFG 不但可使用 IBUFG 的输出,还可以驱动其他普通信号的输出。当某个信号的扇出非常大,并且要求抖动延迟最小时,可以使用BUFG驱动该信号,使该信号利用全局时钟资源。

  2. Logic + DCM + BUFG

    DCM 可以改变也可以控制变换普通时钟信号。

时钟架构总览
链接: https://www.cnblogs.com/hcr1995/p/9800547.html.

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章