集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1835|回复: 1

哪位高人用过xilinx的 ODDR2 ?

[复制链接]
lanpad 发表于 2012-10-28 21:06:28 | 显示全部楼层 |阅读模式
本帖最后由 lanpad 于 2012-10-28 21:07 编辑

芯片是xilinx的XC6SLX9
用了DCM模块倍频
发现倍频输出后的时钟不能用
看了很多资料,说是要加一个叫“ODDR2”的东西

加上去之后又产生了新的错误:

ERROR:Pack:2531 - The dual data rate register "U_ODDR2_clk200M" failed to join
   the "OLOGIC2" component as required.  The output signal for register symbol
   U_ODDR2_clk200M requires general routing to fabric, but the register can only
   be routed to ILOGIC, IODELAY, and IOB.



源代码如下:

module XXXXX(
        clk10M,
        rst,
        sig_1,
        sig_2,
        clk200M_out,
       .......
       ........
);
         
         input clk10M;
         input rst;
         input sig_1;
         input sig_2;
         output clk200M_out;       
         .........
         .........

         
         wire clk200M;
         wire clk200M_out;
                  
        clk_dcm        Unit1(//倍频模块
                                                        .CLK_IN1(clk10M),
                                                        .RESET(rst),
                                                        .CLK_OUT1(clk200M),
                                                        .LOCKED(clk_lock)
                                                );
                                               
ODDR2 #(
    .DDR_ALIGNMENT("NONE"), // Sets output alignment to "NONE", "C0" or "C1"
    .INIT(1'b0),    // Sets initial state of the Q output to 1'b0 or 1'b1
    .SRTYPE("SYNC") // Specifies "SYNC" or "ASYNC" set/reset
    ) U_ODDR2_clk200M
(
      .Q(clk200M_out),   // 1-bit DDR output data
      .C0(clk200M),   // 1-bit clock input
      .C1(~clk200M),   // 1-bit clock input
      .CE(1'b1), // 1-bit clock enable input
      .D0(1'b1), // 1-bit data input (associated with C0)
      .D1(1'b0), // 1-bit data input (associated with C1)
      .R(1'b0),   // 1-bit reset input
      .S(1'b0)    // 1-bit set input
);

                                       
       
        XXXXX        Unit2(
                                                                .clk(clk200M_out),
                                                                .clk_com(clk_com),
                                                                .rst(rst),
                                                                .d(XX)
                                                        );                                                               
       
        com_t        Unit3(//串口输出模块
                                                .reset(rst),
                                                .clk16x(clk_com),
                                                .din(dout),
                                                .wrn(comt_en),
                                                .com1_sdo(PF_out)
                                        );
                                       
        clk_div        Unit4(//串口时钟产生模块
                                                        .rst(rst),
                                                        .clk(clk200M_out),/
                                                        .clk_com(clk_com)
                                                );

endmodule
 楼主| lanpad 发表于 2012-10-29 17:37:26 | 显示全部楼层
高人给的方案:

7楼:
说白了:ODDR2是用来FPGA输出的。ILOGIC、IODELAY、IOB都是接口上的输入/出单元。
比如你想把某个时钟clk200M_out输出给片外,就这么用,clk200M_out是一个PIN。但是,你这种把clk200M_out又用到片内逻辑的,是不行的。好比说,你只能在某间屋子里去完成某工作。现在把你关在屋子外边,可还要你去完成只能在屋子里完成的工作,咋整?
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-6-26 16:51 , Processed in 0.065232 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表