关于Kintex-7的IODELAY的使用问题

2020-02-02 12:33发布

最近正在学习使用K7的IODELAY模块,想利用IODELAY模块实现小于一个系统时钟的延时,代码如下:

端口声明和一些信号声明;
assign delay[0] = 要延迟的信号;


//***********IDELAYCTRL模块只例化了一次***********//
IDELAYCTRL IDELAYCTRL_inst (
      .RDY       (RDY           ),
      .REFCLK    (CLK_200M      ),     //参考时钟为200MHz
      .RST       (RST           )
);


//***********IDELAYE2例化了4次,前一个模块的输出为后一个模块的输入,想利用IDELAYE2做4次延时,总时间小于一个系统时钟周期***********//
genvar k;
generate
for (k=0;k<=3;k=k+1)
IDELAYE2 #(
      .CINVCTRL_SEL("FALSE"),                 
      .DELAY_SRC("DATAIN"),        // 内部资源的数据输入               
      .HIGH_PERFORMANCE_MODE("FALSE"),           
      .IDELAY_TYPE("FIXED"),                  
      .IDELAY_VALUE(3),                     
      .PIPE_SEL("FALSE"),                     
      .REFCLK_FREQUENCY(200.0),               
      .SIGNAL_PATTERN("DATA")
      )
IDELAYE2_inst (      
      .CNTVALUEOUT  (            ),  
      .DATAOUT      ( delay[k+1] ),
      .C            (1'b0        ),                           
      .CE           (1'b0        ),                          
      .CINVCTRL     (            ),              
      .CNTVALUEIN   (            ),         
      .DATAIN       ( delay[k]   ),      
      .IDATAIN      (1'b0        ),
      .INC          (1'b0        ),                        
      .LD           (            ),                          
      .LDPIPEEN     (            ),              
      .REGRST       (1'b0        )               
);

endgenerate


always @( * )
case ( sel )
3'b0     : delay_out = delay[0];
3'b1     : delay_out = delay[1];
3'b2     : delay_out = delay[2];
3'b3     : delay_out = delay[3];
3'b4     : delay_out = delay[4];
default  : delay_out = delay[0];
endcase
endmodule


在map时,出现错误ERROR:Pack:1107 - Pack was unable to combine the symbols listed below into a single IOB component because the site type selected is not compatible.

不知道问题出在什么地方,请各位大侠指点。

还有一个问题:为什么K7的tap数是32(一般的都是64啊),按照 5ns*3/32 计算出来的延时值和综合之后仿真的延时值不一样,why?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。