概述
本文主要记录在实际使用FPGA的LVDS模块初始阶段时候遇到的问题,这些问题都是些非典型问题。
C10器件LVDS-RX对接M10器件LVDS-TX遇到的问题
因为板子上有一片C10和一片M10器件,而且电路设计的时候安排了两个器件之间的LVDS接口连接。所以在C10与ADC对接之前,首先在C10与M10之间进行LVDS接口调试,这样可以将C10的LVDS-RX移植到与ADC采样数据的接口。
由于M10与FPGA之间并未安排随路时钟,所以打算使用FPGA的系统时钟来作为LVDS-RX的参考输入时钟。直接例化LVDS-RX后编译的时候遇到问题,在Fit的时候会出现如下所示的报错信息:
Error (14566): The Fitter cannot place 1 periphery component(s) due to conflicts with existing constraints (1 LVDS_CLOCK_TREE(s)). Fix the errors described in the submessages, and then rerun the Fitter. The Intel FPGA Knowledge Database may also contain articles with information on how to resolve this periphery placement failure. Review the errors and then visit the Knowledge Database at https://www.intel.com/content/www/us/en/support/programmable/kdb-filter.html and search for this specific error message number.
Error (175020): The Fitter cannot place logic LVDS_CLOCK_TREE that is part of LVDS SERDES Intel FPGA IP LVDS_1Ch6B_RX_altera_lvds_2001_3ymtrna in region (38, 32) to (38, 32), to which it is constrained, because there are no valid locations in the region for logic of this type.
Info (14596): Information about the failing component(s):
Info (175028): The LVDS_CLOCK_TREE name(s): u_LVDS_RX_Test|LVDS_1Ch6B_RX_inst|lvds_0|core|arch_inst|default_lvds_clock_tree.lvds_clock_tree_inst
Error (16234): No legal location could be found out of 2 considered location(s). Reasons why each location could not be used are summarized below:
Info (175013): The LVDS_CLOCK_TREE is constrained to the region (38, 32) to (38, 32) due to related logic
Info (175015): The I/O pad clkin is constrained to the location PIN_AA18 due to: User Location Constraints (PIN_AA18) File: E:/won/CSEP/C10GX_AD9633/src/C10GX_AD9633.vhd Line: 19
Info (14709): The constrained I/O pad drives a IOPLL, which drives this LVDS_CLOCK_TREE
Error (175006): There is no routing connectivity between the LVDS_CLOCK_TREE and destination LVDS_CHANNEL
Info (175027): Destination: LVDS_CHANNEL u_LVDS_RX_Test|LVDS_1Ch6B_RX_inst|lvds_0|core|arch_inst|channels[0].rx_non_dpa.serdes_dpa_inst~CHANNEL
Info (175015): The I/O pad M10_TO_C10_LVDS_RX is constrained to the location PIN_P3 due to: User Location Constraints (PIN_P3) File: E:/won/CSEP/C10GX_AD9633/src/C10GX_AD9633.vhd Line: 29
Info (14709): The constrained I/O pad is contained within a pin, which is contained within this LVDS_CHANNEL
Error (175022): The LVDS_CLOCK_TREE could not be placed in any location to satisfy its connectivity requirements
Info (175021): The destination LVDS_CHANNEL was placed in location LVDS_CHANNEL containing P3
Info (175029): 2 locations affected
Info (175029): LVDSCLOCKTREE_X38_Y32_N4
Info (175029): LVDSCLOCKTREE_X38_Y32_N5
Error (15307): Cannot apply project assignments to the design due to illegal or conflicting assignments. Refer to the other messages for corrective action.
Error (16297): An error has occurred while trying to initialize the plan stage.
Error: Quartus Prime Fitter was unsuccessful. 7 errors, 2 warnings
Error: Peak virtual memory: 1397 megabytes
Error: Processing ended: Mon Jul 29 17:45:25 2024
Error: Elapsed time: 00:00:09
Error: System process ID: 12428
后来检查发现该时钟输入引脚与LVDS-RX的引脚位于FPGA的不同bank,如图1所示,所以LVDS-RX例化时需要打开external PLL选项,如图2所示。
图1:LVDS-RX引脚与其参数输入时钟引脚位于FPGA的不同BANK
图2:LVDS-RX例化时PLL设置
如图2所示,LVDS模块例化的时候可以选择使用外部PLL。但是在设计C10与M10之间的LVDS通信的时候,即便因为上述原因使用外部PLL,依然未成功,因为FPGA主时钟输入I/O标准是单端的LVCMOS,LVDS模块似乎仅支持LVDS差分标准。
由于这对C10与M10之间的LVDS差分对正好与ADC差分对接入同一个FPGA的bank,所以在例化的时候,将LVDS-RX的参考输入时钟直接接入ADC的FCO,这样就成功了,可以实现M10串行发送,而C10进行串行接收。
根据正常理解,LVDS数据线可以与参考时钟位于不同的BANK,只是此时必须使用外部PLL形式。上述示例并未验证是否可行,因为如图1所示的不同bank的时钟是单端输入,应该是无法直接用作LVDS的参考时钟。另外,也尝试进行PLL级联,即在例化LVDS模块的时候,并未选择图2中“Use external PLL”,LVDS模块直接内置PLL,外部再例化一个PLL使用该单端时钟,再使用PLL的输出时钟来作为LVDS的参考时钟,但是这样使用并未获得通过,在编译的时候会出现下述报错信息。
Error (18694): The reference clock on PLL "u_LVDS_RX_Test|LVDS_1Ch10B_RX_inst|lvds_0|core|arch_inst|internal_pll.pll_inst|altera_lvds_core20_iopll", which feeds an Altera LVDS SERDES IP instance, is not driven by a dedicated reference clock pin from the same bank. Use a dedicated reference clock pin to guarantee meeting the LVDS SERDES IP max data rate specification.
Error: Failed to synthesize partition
Error: Quartus Prime Synthesis was unsuccessful. 2 errors, 22 warnings
Error: Peak virtual memory: 726 megabytes
Error: Processing ended: Mon Jul 29 15:20:58 2024
Error: Elapsed time: 00:00:39
Error: System process ID: 4044
参考
作者: coyoo, 来源:面包板社区
链接: https://mbb.eet-china.com/blog/uid-me-1010859.html
版权声明:本文为博主原创,未经本人允许,禁止转载!
文章评论(0条评论)
登录后参与讨论