[笔记]Spartan6和Spartan3A

来源:http://bbs.ednchina.com/BLOG_ARTICLE_3003106.HTM

Spartan6时钟资源管理介绍

1.注意时钟的输入与输出范围,所有应用不能超过范围.。如Spartan-6 器件DCM的DLL模块的时钟输入范围如下(以下摘自Spartan-6 DATA SHEET):
速度等级为-1L的为器件5MHz~175MHz。
速度等级为2的为器件5MHz~250MHz。
速度等级为3和4的为器件5MHz~280MHz。

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就可以了。

你可能感兴趣的:(part)