来源:http://bbs.ednchina.com/BLOG_ARTICLE_3003106.HTM
Spartan6时钟资源管理介绍
4.PLL与DCM的级联选择
a. PLL输出驱动DCM模块,优点是在输入DCM模块前可减少输入时钟的抖动,同时又可以使用户能构访问所有DCM模块的输出信号,一个PLL可以驱动多个DCM模块,并不要求PLL与DCM都是在同一CMT模块内。
b. DCM模块输出驱动PLL模块,这种情况可以减少输入时钟和DCM时钟输出的总体抖动。如果DCM输出直接连到PLL输入,要求PLL与DCM都是在同一CMT模块内,这种情况可减少的本地噪声与专用布线资源。如果PLL与DCM不在同一CMT模块内,DCM输出必须经过BUFG缓冲后连到PLL。由于PLL输入信号的限制, 最多只有两个DCM输出信号可以连到一个PLL模块.
c. PLL与PLL的级联, 级联PLL可以产生更大范围的时钟, 两个PLL的级联也要通过BUFG缓冲, 此时器件通路的抖动最小。
Spartan3A型号是XC3S400A-5FG320 ,板子采用100MHZ的系统时钟,单端接口
Spartan6型号是XC6SLX150T-3FGG900 ,板子采用74.25MHZ的系统时钟,双端差分接口
Spartan6型号是XC6SLX16-3CSG324 ,板子采用100MHZ的系统时钟,单端接口
2013-04-03 11:00:14
ISE工具下-->Edit-->Language Templates...有许多源语可以参考,再详细的可以看资料手册。
Spartan 6中CLOCK
www.xilinx.com Spartan-6 FPGA Clocking Resources UG382 (v1.6) May 12, 2011
Chapter 1: Clock Resources
Clock Resources
The Spartan-6 FPGA clock resources consist of four types of connections:
• Global clock input pads (GCLK)
• Global clock multiplexers (BUFG, BUFGMUX)
• I/O clock buffers (BUFIO2, BUFIO2_2CLK, BUFPLL)
• Horizontal clock routing buffers (BUFH)
Spartan 3A中ERROR解决:
问题一:ERROR:Place:864 - Incompatible IOB's are locked to the same bank 0
Conflicting IO Standards are:
IO Standard 1: Name = LVCMOS33, VREF = NR, VCCO = 3.30, TERM = NONE, DIR = OUTPUT, DRIVE_STR = 12
List of locked IOB's:
led10
led7
led8
错误产生的原因是Bank0中VCCO 电压不一致,详细情况可以查看编译产生的文件(*.par)报告。
在Kintex 7 中,编译产生的文件是(*.map)报告。
此外,在Kintex 7 中,我们可以通过编译产生的文件是(*.lpc)报告来看所有已分配和未分配引脚的约束,对于未分配的引脚我们就可以直接用它,只要这样做能编译通过,且能通过Chipscope来观察此信号就OK。
附件:PAR报告中提示如下:
ERROR:Place:864 - Incompatible IOB's are locked to the same bank 0
Conflicting IO Standards are:
IO Standard 1: Name = LVCMOS33, VREF = NR, VCCO = 3.30, TERM = NONE, DIR = OUTPUT, DRIVE_STR = 12
List of locked IOB's:
led10
led7
led8
IO Standard 2: Name = LVDS_25, VREF = NR, VCCO = 2.50, TERM = NONE, DIR = OUTPUT, DRIVE_STR = NR
List of locked IOB's:
TXCLK_N
TXCLK_P
TXDAT_N<0>
TXDAT_N<1>
TXDAT_N<2>
TXDAT_N<3>
TXDAT_P<0>
TXDAT_P<1>
TXDAT_P<2>
TXDAT_P<3>
TXCLK_N_1
TXCLK_P_1
TXDAT_N_1<0>
TXDAT_N_1<1>
TXDAT_N_1<2>
TXDAT_N_1<3>
TXDAT_P_1<0>
TXDAT_P_1<1>
TXDAT_P_1<2>
TXDAT_P_1<3>
These IO Standards are incompatible due to VCCO mismatch.
解决方法:我一直以为在UCF文件中约束了不同的电压,但是查看了很久都没有找到,后来请教师傅,原来是程序的源语中定义了差分电压为2.5V,而约束文件又在同一个BANK定义了3.3V,才会产生冲突。
附件:程序中内容如下:
genvar i,j ;
generate
for (i = 0 ; i <= 3 ; i = i + 1)
begin : loop0
OBUFDS #(.IOSTANDARD("LVDS_25"))
obuf_d (.I(tx_output_reg[i]), .O(dataouta_p[i]), .OB(dataouta_n[i]));
ODDR2 #(.DDR_ALIGNMENT("NONE")) fd_ioc (.C0(clkx3p5), .C1(clkx3p5not), .D0(tx_output_fix[i+4]), .D1(tx_output_fix[i]), .CE(1'b1), .R(1'b0), .S(1'b0), .Q(tx_output_reg[i])) ;
assign tx_output_fix[i] = outdata[i] ^ TX_SWAP_MASK[i] ;
assign tx_output_fix[i+4] = outdata[i+4] ^ TX_SWAP_MASK[i] ;
end
endgenerate
将红色部分的LVDS电压改成3.3V就可以了。