完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨,
我一直试图在Spartan 6开发板上进行实验,我从板载CMOS振荡器接收100MHz时钟,将该时钟移位一些值,然后输出原始时钟和移位时钟以查看示波器。 我还使用原始时钟运行一些状态机逻辑来控制相移。 我尝试了几种DCM,BUFG原语和ODDR2块试图让它工作,但我得到错误说我的时钟不能驱动多个缓冲区,非法连接逻辑和时钟缓冲区,或时钟缓冲区 同一方向不能串联。 我只是希望能够看到输出引脚上的原始和移位时钟来观察变化。 这不可能吗? 任何帮助,将不胜感激! -Cody 以上来自于谷歌翻译 以下为原文 Hi, I've been trying to run an experiment a Spartan 6 development board where I take in a 100MHz clock from the on board CMOS oscillator, shift that clock by some value, and then output the original and shifted clocks to look at on a scope. I also use the original clock to run some state machine logic for controlling the phase shifting. I've tried several arrangements of DCMs, BUFG primitives and ODDR2 blocks trying to get it to work, but I either get the error saying that my clock cannot drive multiple buffers, has illegal connections to logic and a clock buffer, or that clock buffers of the same direction cannot be placed in series. I just want to be able to see the original and shifted clocks on output pins to observe the changes. Is this impossible? Any help would be appreciated! -Cody |
|
相关推荐
12个回答
|
|
在PS_test代码中,删除用于缓冲CLK_IN1模块输入的BUFG。
PS_test的输入时钟已经通过DCM1模块中的BUFG进行缓冲。 在PS_test模块内部,将CLK_IN1端口直接连接到DCM .CLKIN输入。 具体来说,在PS_test模块中 - 删除以下行: //输入缓冲// ------------------------------------ IBUFG clkin1_buf(.O(clkin1) ,.I(CLK_IN1)); 并进行以下更改(以红色标记): dcm_sp_inst //输入时钟(.CLKIN(CLK_IN1), - 鲍勃埃尔金德 签名:新手的自述文件在这里:http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369总结:1。 阅读手册或用户指南。 你读过手册了吗? 你能找到手册吗?2。 搜索论坛(并搜索网页)以寻找类似的主题。 不要在多个论坛上发布相同的问题。 不要在别人的主题上发布新主题或问题,开始新的主题!5。 学生:复制代码与学习设计不同.6“它不起作用”不是一个可以回答的问题。 提供有用的详细信息(请与网页,数据表链接).7。 您的代码中的评论不需要支付额外费用。 我没有支付论坛帖子的费用。 如果我写一篇好文章,那么我一无所获。 在原帖中查看解决方案 以上来自于谷歌翻译 以下为原文 In the PS_test code, remove the BUFG used to buffer the CLK_IN1 module input. The input clock to PS_test is already buffered with a BUFG in the DCM1 module. Inside the PS_test module, connect the CLK_IN1 port directly to the DCM .CLKIN input. Specifically, in the PS_test module -- Delete the following lines: // Input buffering //------------------------------------ IBUFG clkin1_buf (.O (clkin1), .I (CLK_IN1)); And make the following change (marked in RED): dcm_sp_inst // Input clock (.CLKIN (CLK_IN1), -- Bob Elkind SIGNATURE: README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369 Summary: 1. Read the manual or user guide. Have you read the manual? Can you find the manual? 2. Search the forums (and search the web) for similar topics. 3. Do not post the same question on multiple forums. 4. Do not post a new topic or question on someone else's thread, start a new thread! 5. Students: Copying code is not the same as learning to design. 6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please). 7. You are not charged extra fees for comments in your code. 8. I am not paid for forum posts. If I write a good post, then I have been good for nothing.View solution in original post |
|
|
|
科迪,
要将全局(内部)时钟转发到输出引脚,技术很简单:使用ODDR(ODDR2)块原语。 示例(200MHz时钟): ODDR2#(。DWDR_ALIGNMENT(“NONE”))//将输出对齐设置为“NONE”,“C0”或“C1”ODDR2_CLK200(.Q(CLK_BFR200),// 200MHz方波输出.C0(CLOCK200),// 200MHz输入时钟.C1(~CLOCK200),// 200MHz输入时钟,使用下降沿.CE(1'b1),//时钟使能,未使用.D0(1'b1),// 1位数据输入( 与C0相关联,始终为'1'.D1(1'b0),// 1位数据输入(与C1相关),始终为'0'.R(1'b0),//复位,未使用.S (1'b0)//设置,未使用); 请注意,全局时钟连接到.C0和.C1时钟输入,并取消.C1输入。 ODDR原语具有可编程时钟输入极性 - 换句话说,时钟反相器内置于块中。 这有意义吗? - 鲍勃埃尔金德 签名:新手的自述文件在这里:http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369总结:1。 阅读手册或用户指南。 你读过手册了吗? 你能找到手册吗?2。 搜索论坛(并搜索网页)以寻找类似的主题。 不要在多个论坛上发布相同的问题。 不要在别人的主题上发布新主题或问题,开始新的主题!5。 学生:复制代码与学习设计不同.6“它不起作用”不是一个可以回答的问题。 提供有用的详细信息(请与网页,数据表链接).7。 您的代码中的评论不需要支付额外费用。 我没有支付论坛帖子的费用。 如果我写一篇好文章,那么我一无所获。 以上来自于谷歌翻译 以下为原文 Cody, To forward a global (internal) clock to an output pin, the technique is simple: Use an ODDR (ODDR2) block primitive. Example (200MHz clock): ODDR2 #( .DDR_ALIGNMENT("NONE")) // Sets output alignment to "NONE", "C0" or "C1" ODDR2_CLK200 ( .Q(CLK_BFR200), // 200MHz square wave output .C0(CLOCK200), // 200MHz input clock .C1(~CLOCK200), // 200MHz input clock, use falling edge .CE(1'b1), // clock enable, not used .D0(1'b1), // 1-bit data input (associated with C0), always '1' .D1(1'b0), // 1-bit data input (associated with C1), always '0' .R(1'b0), // reset, not used .S(1'b0) // set, not used ); Note that the global clock is connected to both the .C0 and .C1 clock inputs, with a negation on the .C1 input. The ODDR primitive has programmable clock input polarity -- in other words, the clock inverter is built into the block. Does this make sense? -- Bob Elkind SIGNATURE: README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369 Summary: 1. Read the manual or user guide. Have you read the manual? Can you find the manual? 2. Search the forums (and search the web) for similar topics. 3. Do not post the same question on multiple forums. 4. Do not post a new topic or question on someone else's thread, start a new thread! 5. Students: Copying code is not the same as learning to design. 6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please). 7. You are not charged extra fees for comments in your code. 8. I am not paid for forum posts. If I write a good post, then I have been good for nothing. |
|
|
|
这就是我试图输出时钟信号的方式。
问题来自于尝试使用CLOCK200来驱动DCM输入以及驱动ODDR2输入。 我需要时钟进入DCM,以便我可以移位它,然后输出移位时钟来比较两者。 我得到错误说“CLOCK200驱动multipld缓冲区”。 我先尝试将时钟通过BUFG缓冲区,然后驱动DCM和ODDR2,但后来我得到一个错误,说明同一方向的时钟缓冲区不能串联。 我只是找不到生成两个时钟并输出它们的方法。 -Cody 以上来自于谷歌翻译 以下为原文 That's how I am trying to output the clock signals. The problem comes from trying to use CLOCK200 to drive a DCM input as well as drive the ODDR2 input. I need the clock to go into the DCM so that I can shift it, and then output the shifted clock to compare the two. I get the error saying "CLOCK200 drives multipld buffers". I've tried putting the clock through a BUFG buffer first, and then driving the DCM and ODDR2, but then I get an error saying that clock buffers in the same direction cannot be placed in series. I just can't find a way to generate both clocks and output them. -Cody |
|
|
|
发布你的代码。
让我们看看幕后的内容。 请尽可能具体地描述您要做的事情。 - 鲍勃埃尔金德 签名:新手的自述文件在这里:http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369总结:1。 阅读手册或用户指南。 你读过手册了吗? 你能找到手册吗?2。 搜索论坛(并搜索网页)以寻找类似的主题。 不要在多个论坛上发布相同的问题。 不要在别人的主题上发布新主题或问题,开始新的主题!5。 学生:复制代码与学习设计不同.6“它不起作用”不是一个可以回答的问题。 提供有用的详细信息(请与网页,数据表链接).7。 您的代码中的评论不需要支付额外费用。 我没有支付论坛帖子的费用。 如果我写一篇好文章,那么我一无所获。 以上来自于谷歌翻译 以下为原文 Post your code. Let's see what's under the hood. And please describe what you are trying to do, as specifically as possible. -- Bob Elkind SIGNATURE: README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369 Summary: 1. Read the manual or user guide. Have you read the manual? Can you find the manual? 2. Search the forums (and search the web) for similar topics. 3. Do not post the same question on multiple forums. 4. Do not post a new topic or question on someone else's thread, start a new thread! 5. Students: Copying code is not the same as learning to design. 6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please). 7. You are not charged extra fees for comments in your code. 8. I am not paid for forum posts. If I write a good post, then I have been good for nothing. |
|
|
|
我正在尝试生成可变移位时钟输出。
我想将100MHz原始时钟输出到一个引脚,并将100MHz移位时钟输出到另一个引脚。 移位是可变的,因此状态机从板上的开关读取8位数,然后根据按下的按钮(INC_Enable或DEC_Enable),状态机将时钟延迟改变指定的数量 时钟延迟步骤。 我将100MHz时钟馈入DCM以生成时钟,并将其反转以馈入其中一个ODDR2设备。 然后将DCM输出馈入另一个DCM以移位原始时钟。 然后将移位的时钟馈送到另一个ODDR2以输出到引脚。 我得到错误: 错误:NgdBuild:770 - 网络'Clk_100MHz'上的IBUFG'Stage_Shift_Test / clkin1_buf'和BUFG'DCM1 / clkout1_buf'串联排列。 相同方向的缓冲器不能串联.ERROR:NgdBuild:924 - 输入焊盘网'Clk_100MHz'驱动非缓冲原语: 模块DCM_test(Clk_100MHz_in,复位,Clk_100MHz_out,Clk_100MHz_shifted_out,INC_Enable,DEC_Enable,PS_Count);输入Clk_100MHz_in;输入复位;输入INC_Enable;输入DEC_Enable;输入[7:0] PS_Count;输出Clk_100MHz_out;输出Clk_100MHz_shifted_out;线路Clk_100MHz_shifted_n;线路Clk_100MHz; 导线Clk_100MHz_n;导线Clk_100MHz_internal; reg PS_Clk; reg PS_Enable; reg PS_IncDec; reg [7:0]计数器; reg counter1b; DCM1 DCM1(//端口中的时钟.CLK_IN1(Clk_100MHz_in),// IN //输出端口.CLK_OUT1 (Clk_100MHz),// OUT .CLK_OUT2(Clk_100MHz_n),// OUT //状态和控制信号.RESET(复位)); PS_test Phase_Shift_Test(//端口中的时钟.CLK_IN1(Clk_100MHz),// IN //时钟输出端口.CLK_OUT1(Clk_100MHz_shifted),// OUT .CLK_OUT2(Clk_100MHz_shifted_n),//动态相移端口.PSCLK(PS_Clk),/ / IN .PSEN(PS_Enable),// IN .PSINCDEC(PS_IncDec),// IN .PSDONE(PS_Done),// OUT //状态和控制信号.RESET(reset)); // INODDR2#(//以下参数指定组件的行为.DDR_ALIGNMENT(“NONE”),//将输出对齐//设置为“NONE”,“C0”或“C1”.INIT(1 'b0),//将Q //输出的初始状态设置为1'b0或1'b1 .SRTYPE(“SYNC”)//指定“SYNC”或“ASYNC”//设置/重置)ODDR2_normal(.Q (Clk_100MHz_out),// 1位DDR输出数据.C0(Clk_100MHz),// 1位时钟输入.C1(Clk_100MHz_n),// 1位时钟输入.CE(1'b1),// 1- 位时钟使能输入.D0(1'b1),// 1位数据输入(与C0相关).D1(1'b0),// 1位数据输入(与C1相关).R(1'b0 ),// 1位复位输入.S(1'b0)// 1位设置输入); ODDR2#(//以下参数指定组件的行为.DDR_ALIGNMENT(“NONE”), //将输出对齐设置为“NONE”,“C0”或“C1”.INIT(1'b0),//将Q //输出的初始状态设置为1'b0或1'b1 .SRTYPE(“ SYNC“)//指定”SYNC“或”ASYNC“//设置/复位)ODDR2_shifted(.Q(Clk_100MHz_shifted_out),// 1位DDR输出数据.C0(Clk_100MHz_) 移位),// 1位时钟输入.C1(Clk_100MHz_shifted_n),// 1位时钟输入.CE(1'b1),// 1位时钟使能输入.D0(1'b1),// 1 位数据输入(与C0相关).D1(1'b0),// 1位数据输入(与C1相关).R(1'b0),// 1位复位输入.S(1'b0 )// 1位设置输入); 参数WAIT_FOR_ENABLE = 3'b000,PS_CLOCKING = 3'b001,WAIT_FOR_DISABLE = 3'b010; reg [2:0]状态; 初始开始PS_Clk PS_Enable PS_IncDec endalways @(posedge Clk_100MHz_shifted或posedge reset)start if if(reset)begin counter PS_Enable PS_IncDec PS_Clk end else begin case(state)WAIT_FOR_ENABLE:begin if(INC_Enable)begin PS_Enable PS_IncDec PS_Clk state end else if if(DEC_Enable)begin PS_Enable PS_IncDec PS_Clk状态结束否则开始PS_Clk PS_Enable状态结束//结束WAIT_FOR_ENABLE PS_CLOCKING:开始if(计数器> = PS_Count)开始计数器PS_Enable PS_Clk状态结束否则开始计数器PS_Clk状态结束//结束PS_CLOCKING WAIT_FOR_DISABLE:begin if(INC_Enable | DEC_Enable)//如果其中任何一个仍处于打开状态,则等待此处开始状态结束,否则开始状态结束PS_Enable PS_Clk结束//结束WAIT_FOR_DISABLE endcase end // end if(reset)-elseend // end always @(posedge Clk_100MHz_in)endmodule 以上来自于谷歌翻译 以下为原文 I'm trying to generate a variable shifted clock output. I want to output a 100MHz original clock to one pin, and output the 100MHz shifted clock to another pin. The shift is variable, so the state machine reads in an 8 bit number from the switches on the board, and then depending on which push button (INC_Enable or DEC_Enable) is pushed, the state machine will change the clock delay by the specified number of clock delay steps. I feed the 100MHz clock into a DCM to generate the clock and its inverse to feed into one of the ODDR2 devices. The DCM output is then fed into another DCM to shift the original clock. The shifted clock is then fed to another ODDR2 to output to a pin. I get the errors: ERROR:NgdBuild:770 - IBUFG 'Phase_Shift_Test/clkin1_buf' and BUFG 'DCM1/clkout1_buf' on net 'Clk_100MHz' are lined up in series. Buffers of the same direction cannot be placed in series. ERROR:NgdBuild:924 - input pad net 'Clk_100MHz' is driving non-buffer primitives: module DCM_test( Clk_100MHz_in, reset, Clk_100MHz_out, Clk_100MHz_shifted_out, INC_Enable, DEC_Enable, PS_Count ); input Clk_100MHz_in; input reset; input INC_Enable; input DEC_Enable; input [7:0] PS_Count; output Clk_100MHz_out; output Clk_100MHz_shifted_out; wire Clk_100MHz_shifted_n; wire Clk_100MHz; wire Clk_100MHz_n; wire Clk_100MHz_internal; reg PS_Clk; reg PS_Enable; reg PS_IncDec; reg [7:0] counter; reg counter1b; DCM1 DCM1 (// Clock in ports .CLK_IN1(Clk_100MHz_in), // IN // Clock out ports .CLK_OUT1(Clk_100MHz), // OUT .CLK_OUT2(Clk_100MHz_n), // OUT // Status and control signals .RESET(reset)); PS_test Phase_Shift_Test (// Clock in ports .CLK_IN1(Clk_100MHz), // IN // Clock out ports .CLK_OUT1(Clk_100MHz_shifted), // OUT .CLK_OUT2(Clk_100MHz_shifted_n), // Dynamic phase shift ports .PSCLK(PS_Clk),// IN .PSEN(PS_Enable), // IN .PSINCDEC(PS_IncDec), // IN .PSDONE(PS_Done), // OUT // Status and control signals .RESET(reset)); // IN ODDR2 #( // The following parameters specify the behavior // of the component. .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 ) ODDR2_normal ( .Q(Clk_100MHz_out), // 1-bit DDR output data .C0(Clk_100MHz), // 1-bit clock input .C1(Clk_100MHz_n), // 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 ); ODDR2 #( // The following parameters specify the behavior // of the component. .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 ) ODDR2_shifted ( .Q(Clk_100MHz_shifted_out), // 1-bit DDR output data .C0(Clk_100MHz_shifted), // 1-bit clock input .C1(Clk_100MHz_shifted_n), // 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 ); parameterWAIT_FOR_ENABLE = 3'b000, PS_CLOCKING = 3'b001, WAIT_FOR_DISABLE = 3'b010; reg [2:0] state; initial begin PS_Clk <= 1'b0; PS_Enable <= 1'b0; PS_IncDec <= 1'b0; end always @(posedge Clk_100MHz_shifted or posedge reset) begin if(reset) begin counter <= 8'b0; PS_Enable <= 1'b0; PS_IncDec <= 1'b0; PS_Clk <= 1'b0; end else begin case (state) WAIT_FOR_ENABLE: begin if(INC_Enable) begin PS_Enable <= 1'b1; PS_IncDec <= 1'b1; PS_Clk <= 1'b0; state <= PS_CLOCKING; end else if(DEC_Enable) begin PS_Enable <= 1'b1; PS_IncDec <= 1'b0; PS_Clk <= 1'b0; state <= PS_CLOCKING; end else begin PS_Clk <= 1'b0; PS_Enable <= 1'b0; state <= WAIT_FOR_ENABLE; end end//end WAIT_FOR_ENABLE PS_CLOCKING: begin if(counter >= PS_Count) begin counter <= 8'b0; PS_Enable <= 1'b0; PS_Clk <= 1'b0; state <= WAIT_FOR_DISABLE; end else begin counter <= counter + 1'b1; PS_Clk <= !PS_Clk; state <= PS_CLOCKING; end end //end PS_CLOCKING WAIT_FOR_DISABLE: begin if(INC_Enable | DEC_Enable) //if either are still on, then wait here begin state <= WAIT_FOR_DISABLE; end else begin state <= WAIT_FOR_ENABLE; end PS_Enable <= 1'b0; PS_Clk <= 1'b0; end//end WAIT_FOR_DISABLE endcase end //end if(reset)-else end //end always @(posedge Clk_100MHz_in) endmodule |
|
|
|
DCM1和PS_test模块丢失。
- 鲍勃埃尔金德 签名:新手的自述文件在这里:http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369总结:1。 阅读手册或用户指南。 你读过手册了吗? 你能找到手册吗?2。 搜索论坛(并搜索网页)以寻找类似的主题。 不要在多个论坛上发布相同的问题。 不要在别人的主题上发布新主题或问题,开始新的主题!5。 学生:复制代码与学习设计不同.6“它不起作用”不是一个可以回答的问题。 提供有用的详细信息(请与网页,数据表链接).7。 您的代码中的评论不需要支付额外费用。 我没有支付论坛帖子的费用。 如果我写一篇好文章,那么我一无所获。 以上来自于谷歌翻译 以下为原文 DCM1 and PS_test modules are missing. -- Bob Elkind SIGNATURE: README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369 Summary: 1. Read the manual or user guide. Have you read the manual? Can you find the manual? 2. Search the forums (and search the web) for similar topics. 3. Do not post the same question on multiple forums. 4. Do not post a new topic or question on someone else's thread, start a new thread! 5. Students: Copying code is not the same as learning to design. 6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please). 7. You are not charged extra fees for comments in your code. 8. I am not paid for forum posts. If I write a good post, then I have been good for nothing. |
|
|
|
这些是我生成的核心。
我该如何发布? 以上来自于谷歌翻译 以下为原文 Those are cores that I generated. How do I post those? |
|
|
|
发布生成的核心:
在ISE中,选择设计层次结构面板中的核心。 在进程面板中,展开CORE Generator树,然后打开HDL Functional Model 这将打开核心生成的根源代码。 - 鲍勃埃尔金德 签名:新手的自述文件在这里:http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369总结:1。 阅读手册或用户指南。 你读过手册了吗? 你能找到手册吗?2。 搜索论坛(并搜索网页)以寻找类似的主题。 不要在多个论坛上发布相同的问题。 不要在别人的主题上发布新主题或问题,开始新的主题!5。 学生:复制代码与学习设计不同.6“它不起作用”不是一个可以回答的问题。 提供有用的详细信息(请与网页,数据表链接).7。 您的代码中的评论不需要支付额外费用。 我没有支付论坛帖子的费用。 如果我写一篇好文章,那么我一无所获。 以上来自于谷歌翻译 以下为原文 To post a generated core: In ISE, select the core in the design hierarchy panel. in the processes panel, expand the CORE Generator tree, and open the HDL Functional Model This opens the root source code generated by the core. -- Bob Elkind SIGNATURE: README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369 Summary: 1. Read the manual or user guide. Have you read the manual? Can you find the manual? 2. Search the forums (and search the web) for similar topics. 3. Do not post the same question on multiple forums. 4. Do not post a new topic or question on someone else's thread, start a new thread! 5. Students: Copying code is not the same as learning to design. 6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please). 7. You are not charged extra fees for comments in your code. 8. I am not paid for forum posts. If I write a good post, then I have been good for nothing. |
|
|
|
None
以上来自于谷歌翻译 以下为原文 It might also be easier to just regenerate them. The PS_test is another DCM. Just with the dynamic phase shift enabled. // file: DCM1.v// // (c) Copyright 2008 - 2011 Xilinx, Inc. All rights reserved.// // This file contains confidential and proprietary information// of Xilinx, Inc. and is protected under U.S. and// international copyright and other intellectual property// laws.// // DISCLAIMER// This disclaimer is not a license and does not grant any// rights to the materials distributed herewith. Except as// otherwise provided in a valid license issued to you by// Xilinx, and to the maximum extent permitted by applicable// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and// (2) Xilinx shall not be liable (whether in contract or tort,// including negligence, or under any other theory of// liability) for any loss or damage of any kind or nature// related to, arising under or in connection with these// materials, including for any direct, or any indirect,// special, incidental, or consequential loss or damage// (including loss of data, profits, goodwill, or any type of// loss or damage suffered as a result of any action brought// by a third party) even if such damage or loss was// reasonably foreseeable or Xilinx had been advised of the// possibility of the same.// // CRITICAL APPLICATIONS// Xilinx products are not designed or intended to be fail-// safe, or for use in any application requiring fail-safe// performance, such as life-support or safety devices or// systems, Class III medical devices, nuclear facilities,// applications related to the deployment of airbags, or any// other applications that could lead to death, personal// injury, or severe property or environmental damage// (individually and collectively, "Critical// Applications"). Customer assumes the sole risk and// liability of any use of Xilinx products in Critical// Applications, subject only to applicable laws and// regulations governing limitations on product liability.// // THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS// PART OF THIS FILE AT ALL TIMES.// //----------------------------------------------------------------------------// User entered comments//----------------------------------------------------------------------------// None////----------------------------------------------------------------------------// Output Output Phase Duty Cycle Pk-to-Pk Phase// Clock Freq (MHz) (degrees) (%) Jitter (ps) Error (ps)//----------------------------------------------------------------------------// CLK_OUT1 100.000 0.000 50.0 200.000 50.000// CLK_OUT2 100.000 180.000 50.0 300.000 50.000////----------------------------------------------------------------------------// Input Clock Input Freq (MHz) Input Jitter (UI)//----------------------------------------------------------------------------// primary 100.000 0.010`timescale 1ps/1ps(* CORE_GENERATION_INFO = "DCM1,clk_wiz_v3_1,{component_name=DCM1,use_phase_alignment=true,use_min_o_jitter=false,use_max_i_jitter=false,use_dyn_phase_shift=false,use_inclk_switchover=false,use_dyn_reconfig=false,feedback_source=FDBK_AUTO,primtype_sel=DCM_SP,num_out_clk=2,clkin1_period=10.0,clkin2_period=10.0,use_power_down=false,use_reset=true,use_locked=false,use_inclk_stopped=false,use_status=false,use_freeze=false,use_clk_valid=false,feedback_type=SINGLE,clock_mgr_type=AUTO,manual_override=false}" *)module DCM1 (// Clock in ports input CLK_IN1, // Clock out ports output CLK_OUT1, output CLK_OUT2, // Status and control signals input RESET ); // Input buffering //------------------------------------ IBUFG clkin1_buf (.O (clkin1), .I (CLK_IN1)); // Clocking primitive //------------------------------------ // Instantiation of the DCM primitive // * Unused inputs are tied off // * Unused outputs are labeled unused wire psdone_unused; wire locked_int; wire [7:0] status_int; wire clkfb; wire clk0; wire clk180; DCM_SP #(.CLKDV_DIVIDE (2.000), .CLKFX_DIVIDE (1), .CLKFX_MULTIPLY (4), .CLKIN_DIVIDE_BY_2 ("FALSE"), .CLKIN_PERIOD (10.0), .CLKOUT_PHASE_SHIFT ("NONE"), .CLK_FEEDBACK ("1X"), .DESKEW_ADJUST ("SYSTEM_SYNCHRONOUS"), .PHASE_SHIFT (0), .STARTUP_WAIT ("FALSE")) dcm_sp_inst // Input clock (.CLKIN (clkin1), .CLKFB (clkfb), // Output clocks .CLK0 (clk0), .CLK90 (), .CLK180 (clk180), .CLK270 (), .CLK2X (), .CLK2X180 (), .CLKFX (), .CLKFX180 (), .CLKDV (), // Ports for dynamic phase shift .PSCLK (1'b0), .PSEN (1'b0), .PSINCDEC (1'b0), .PSDONE (), // Other control and status signals .LOCKED (locked_int), .STATUS (status_int), .RST (RESET), // Unused pin- tie low .DSSEN (1'b0)); // Output buffering //----------------------------------- assign clkfb = CLK_OUT1; BUFG clkout1_buf (.O (CLK_OUT1), .I (clk0)); BUFG clkout2_buf (.O (CLK_OUT2), .I (clk180));endmodule // file: PS_test.v// // (c) Copyright 2008 - 2011 Xilinx, Inc. All rights reserved.// // This file contains confidential and proprietary information// of Xilinx, Inc. and is protected under U.S. and// international copyright and other intellectual property// laws.// // DISCLAIMER// This disclaimer is not a license and does not grant any// rights to the materials distributed herewith. Except as// otherwise provided in a valid license issued to you by// Xilinx, and to the maximum extent permitted by applicable// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and// (2) Xilinx shall not be liable (whether in contract or tort,// including negligence, or under any other theory of// liability) for any loss or damage of any kind or nature// related to, arising under or in connection with these// materials, including for any direct, or any indirect,// special, incidental, or consequential loss or damage// (including loss of data, profits, goodwill, or any type of// loss or damage suffered as a result of any action brought// by a third party) even if such damage or loss was// reasonably foreseeable or Xilinx had been advised of the// possibility of the same.// // CRITICAL APPLICATIONS// Xilinx products are not designed or intended to be fail-// safe, or for use in any application requiring fail-safe// performance, such as life-support or safety devices or// systems, Class III medical devices, nuclear facilities,// applications related to the deployment of airbags, or any// other applications that could lead to death, personal// injury, or severe property or environmental damage// (individually and collectively, "Critical// Applications"). Customer assumes the sole risk and// liability of any use of Xilinx products in Critical// Applications, subject only to applicable laws and// regulations governing limitations on product liability.// // THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS// PART OF THIS FILE AT ALL TIMES.// //----------------------------------------------------------------------------// User entered comments//----------------------------------------------------------------------------// None////----------------------------------------------------------------------------// Output Output Phase Duty Cycle Pk-to-Pk Phase// Clock Freq (MHz) (degrees) (%) Jitter (ps) Error (ps)//----------------------------------------------------------------------------// CLK_OUT1 100.000 0.000 50.0 200.000 50.000// CLK_OUT2 100.000 180.000 50.0 300.000 50.000////----------------------------------------------------------------------------// Input Clock Input Freq (MHz) Input Jitter (UI)//----------------------------------------------------------------------------// primary 100.000 0.010`timescale 1ps/1ps(* CORE_GENERATION_INFO = "PS_test,clk_wiz_v3_1,{component_name=PS_test,use_phase_alignment=true,use_min_o_jitter=false,use_max_i_jitter=false,use_dyn_phase_shift=true,use_inclk_switchover=false,use_dyn_reconfig=false,feedback_source=FDBK_AUTO,primtype_sel=DCM_SP,num_out_clk=2,clkin1_period=10.0,clkin2_period=10.0,use_power_down=false,use_reset=true,use_locked=false,use_inclk_stopped=false,use_status=false,use_freeze=false,use_clk_valid=false,feedback_type=SINGLE,clock_mgr_type=AUTO,manual_override=false}" *)module PS_test (// Clock in ports input CLK_IN1, // Clock out ports output CLK_OUT1, output CLK_OUT2, // Dynamic phase shift ports input PSCLK, input PSEN, input PSINCDEC, output PSDONE, // Status and control signals input RESET ); // Input buffering //------------------------------------ IBUFG clkin1_buf (.O (clkin1), .I (CLK_IN1)); // Clocking primitive //------------------------------------ // Instantiation of the DCM primitive // * Unused inputs are tied off // * Unused outputs are labeled unused wire locked_int; wire [7:0] status_int; wire clkfb; wire clk0; wire clk180; DCM_SP #(.CLKDV_DIVIDE (2.000), .CLKFX_DIVIDE (1), .CLKFX_MULTIPLY (4), .CLKIN_DIVIDE_BY_2 ("FALSE"), .CLKIN_PERIOD (10.0), .CLKOUT_PHASE_SHIFT ("VARIABLE"), .CLK_FEEDBACK ("1X"), .DESKEW_ADJUST ("SYSTEM_SYNCHRONOUS"), .PHASE_SHIFT (0), .STARTUP_WAIT ("FALSE")) dcm_sp_inst // Input clock (.CLKIN (clkin1), .CLKFB (clkfb), // Output clocks .CLK0 (clk0), .CLK90 (), .CLK180 (clk180), .CLK270 (), .CLK2X (), .CLK2X180 (), .CLKFX (), .CLKFX180 (), .CLKDV (), // Ports for dynamic phase shift .PSCLK (PSCLK), .PSEN (PSEN), .PSINCDEC (PSINCDEC), .PSDONE (PSDONE), // Other control and status signals .LOCKED (locked_int), .STATUS (status_int), .RST (RESET), // Unused pin- tie low .DSSEN (1'b0)); // Output buffering //----------------------------------- assign clkfb = CLK_OUT1; BUFG clkout1_buf (.O (CLK_OUT1), .I (clk0)); BUFG clkout2_buf (.O (CLK_OUT2), .I (clk180));endmodule |
|
|
|
在PS_test代码中,删除用于缓冲CLK_IN1模块输入的BUFG。
PS_test的输入时钟已经通过DCM1模块中的BUFG进行缓冲。 在PS_test模块内部,将CLK_IN1端口直接连接到DCM .CLKIN输入。 具体来说,在PS_test模块中 - 删除以下行: //输入缓冲// ------------------------------------ IBUFG clkin1_buf(.O(clkin1) ,.I(CLK_IN1)); 并进行以下更改(以红色标记): dcm_sp_inst //输入时钟(.CLKIN(CLK_IN1), - 鲍勃埃尔金德 签名:新手的自述文件在这里:http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369总结:1。 阅读手册或用户指南。 你读过手册了吗? 你能找到手册吗?2。 搜索论坛(并搜索网页)以寻找类似的主题。 不要在多个论坛上发布相同的问题。 不要在别人的主题上发布新主题或问题,开始新的主题!5。 学生:复制代码与学习设计不同.6“它不起作用”不是一个可以回答的问题。 提供有用的详细信息(请与网页,数据表链接).7。 您的代码中的评论不需要支付额外费用。 我没有支付论坛帖子的费用。 如果我写一篇好文章,那么我一无所获。 以上来自于谷歌翻译 以下为原文 In the PS_test code, remove the BUFG used to buffer the CLK_IN1 module input. The input clock to PS_test is already buffered with a BUFG in the DCM1 module. Inside the PS_test module, connect the CLK_IN1 port directly to the DCM .CLKIN input. Specifically, in the PS_test module -- Delete the following lines: // Input buffering //------------------------------------ IBUFG clkin1_buf (.O (clkin1), .I (CLK_IN1)); And make the following change (marked in RED): dcm_sp_inst // Input clock (.CLKIN (CLK_IN1), -- Bob Elkind SIGNATURE: README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369 Summary: 1. Read the manual or user guide. Have you read the manual? Can you find the manual? 2. Search the forums (and search the web) for similar topics. 3. Do not post the same question on multiple forums. 4. Do not post a new topic or question on someone else's thread, start a new thread! 5. Students: Copying code is not the same as learning to design. 6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please). 7. You are not charged extra fees for comments in your code. 8. I am not paid for forum posts. If I write a good post, then I have been good for nothing. |
|
|
|
太棒了,真有效!
感谢您的所有帮助,现在我知道如何深入挖掘核心生成器创建的代码。 谢谢, -Cody 以上来自于谷歌翻译 以下为原文 Great, that worked! Thanks for all your help, now I know how to dig deeper into the code that the core generator creates. Thanks, -Cody |
|
|
|
您可以通过对ODDR2实例进行以下更改(以红色标记)来节省一些(相当大的)设备功率:
)ODDR2_normal(.Q(Clk_100MHz_out),// 1位DDR输出数据.C0(Clk_100MHz),// 1位时钟输入.C1(~clk_100MHz),// 1位时钟输入.CE(1'b1 ),// 1位时钟使能输入.D0(1'b1),// 1位数据输入(与C0相关).D1(1'b0),// 1位数据输入(与C1相关) .R(1'b0),// 1位复位输入.S(1'b0)// 1位置位输入); ...)ODDR2_shifted(.Q(Clk_100MHz_shifted_out),// 1位DDR输出 数据.C0(Clk_100MHz_shifted),// 1位时钟输入.C1(~Clk_100MHz_shifted),// 1位时钟输入.CE(1'b1),// 1位时钟使能输入.D0(1'b1 ),// 1位数据输入(与C0相关).D1(1'b0),// 1位数据输入(与C1相关).R(1'b0),// 1位复位输入。 S(1'b0)// 1位置位输入); ODDR2模块的时钟输入具有内部可选极性(反相),使得除了最苛刻的应用之外,所有互补时钟的生成都是不必要的。 如果您有疑问,那么在单一设计中尝试(和比较)两种方法都很简单。 - 鲍勃埃尔金德 签名:新手的自述文件在这里:http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369总结:1。 阅读手册或用户指南。 你读过手册了吗? 你能找到手册吗?2。 搜索论坛(并搜索网页)以寻找类似的主题。 不要在多个论坛上发布相同的问题。 不要在别人的主题上发布新主题或问题,开始新的主题!5。 学生:复制代码与学习设计不同.6“它不起作用”不是一个可以回答的问题。 提供有用的详细信息(请与网页,数据表链接).7。 您的代码中的评论不需要支付额外费用。 我没有支付论坛帖子的费用。 如果我写一篇好文章,那么我一无所获。 以上来自于谷歌翻译 以下为原文 You can probably save some (considerable) device power by making the following changes to your ODDR2 instances, marked in RED: ) ODDR2_normal ( .Q(Clk_100MHz_out), // 1-bit DDR output data .C0(Clk_100MHz), // 1-bit clock input .C1(~Clk_100MHz), // 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 ); ... ) ODDR2_shifted ( .Q(Clk_100MHz_shifted_out), // 1-bit DDR output data .C0(Clk_100MHz_shifted), // 1-bit clock input .C1(~Clk_100MHz_shifted), // 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 ); The clock inputs to the ODDR2 blocks have internally selectable polarity (inversion), making the generation of complementary clocks unnecessary in all but the most demanding applications. If you have doubts, it's simple enough to try (and compare) both approaches in a single design. -- Bob Elkind SIGNATURE: README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369 Summary: 1. Read the manual or user guide. Have you read the manual? Can you find the manual? 2. Search the forums (and search the web) for similar topics. 3. Do not post the same question on multiple forums. 4. Do not post a new topic or question on someone else's thread, start a new thread! 5. Students: Copying code is not the same as learning to design. 6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please). 7. You are not charged extra fees for comments in your code. 8. I am not paid for forum posts. If I write a good post, then I have been good for nothing. |
|
|
|
只有小组成员才能发言,加入小组>>
2385 浏览 7 评论
2800 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2264 浏览 9 评论
3336 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2433 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
763浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
548浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
377浏览 1评论
1971浏览 0评论
688浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 20:06 , Processed in 1.728785 second(s), Total 98, Slave 81 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号