完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我有一个从Core Generator生成的模块,它使用来自100Mhz输入时钟的PLL_base原语生成时钟。
现在由于一些错误,我不得不在原语的输出中添加一个非门和一个ODDR2, 我通过编辑由核心生成器生成的verilog模块文件来做到这一点。 然而,这似乎不太方便,因为当我通过更新设计重新生成我的核心生成器模块时,它会清理.v文件并且我手动进行的更改将丢失。 我想要做的是在我实例化PLL_base时可能连接not和ODDR2,我在顶级模块中执行此操作。 我的顶级模块看起来像这样, 模块测试(CLK_INP1,CLK_OUTP1,RST,LOCD); 输入CLK_INP1,RST; 输出CLK_OUTP1,LOCD; // INST_TAG clk_wiz_v1_5 camclk (//端口时钟 .CLK_IN1(CLK_INP1),// IN //输出端口 .CLK_OUT1(CLK_OUTP1),// OUT //状态和控制信号 .RESET(RST),// IN .LOCKED(LOCD)); // OUT // INST_TAG_END endmodule “clk_wiz_v1_5”是在这里实例化的PLL_base原语。 但是现在我想把它的输出连接到一个非门和ODDR2,我不知道如何在这个顶级模块中做到这一点? 以上来自于谷歌翻译 以下为原文 I have a module generated from Core Generator that generates clocks with PLL_base primitive from a 100Mhz input clock. Now due to some errors I had to add a not gate and a ODDR2 to the output of the primitive, I did that by editing the verilog module file that was generated by core generator. However this doesn't seem very convenient as when I regenerate my core generator module by updating the design it cleans up the .v file and the changes that I had manually made are lost. What I would want to do is possilbly connect the not and the ODDR2 at the point that I instantiate the PLL_base, I do this in the top level module. My top level module looks like this, module test( CLK_INP1, CLK_OUTP1, RST, LOCD); input CLK_INP1, RST; output CLK_OUTP1, LOCD;// INST_TAG clk_wiz_v1_5 camclk (// Clock in ports .CLK_IN1 (CLK_INP1), // IN // Clock out ports .CLK_OUT1 (CLK_OUTP1), // OUT // Status and control signals .RESET (RST), // IN .LOCKED (LOCD)); // OUT// INST_TAG_ENDendmodule the "clk_wiz_v1_5" is the PLL_base primitive that is being instantiated here. However now I want to connect the output of this to a not gate and ODDR2, I'm not sure how to do this in this top level module? |
|
相关推荐
9个回答
|
|
你应该永远不要修改其中一个向导的代码,原因是你提到它听起来像你不必要的。
如果我理解这一点,您需要做的就是将模块的输出馈送到ODDR2并反转输入。 ODDR2 oddr2Inst( ... .D0(!moduleOutA)。 ·D1(!moduleOutB) ... 如果您只是将时钟输出到引脚,那就是 ODDR2 oddr2Inst( ... .D0(1'b1的), .D1(1'b0), ... 并且在这种情况下改变极性只需交换0和1。 [R -------------------------------------------------- --------------------------不要忘记回复,不要接受作为解决方案----------- -------------------------------------------------- --------------- 以上来自于谷歌翻译 以下为原文 You should never modify the code from one of the wizards for the reasons that you mention and it sounds like you don't have to. All you need to do, if I understand this right, is to feed the output of the module to an ODDR2 and invert the input. ODDR2 oddr2Inst( ... .D0(!moduleOutA). .D1(!moduleOutB), ... If you are just outputing the clock to a pin it would be ODDR2 oddr2Inst( ... .D0(1'b1), .D1(1'b0), ... and in this case to change the polarity just swap the 0 and 1. R ---------------------------------------------------------------------------- Don't forget to reply, kudo, and accept as solution ---------------------------------------------------------------------------- |
|
|
|
我已经习惯于像软件开发人员那样思考,也许我必须改变它?
我所想的是“可见性”(与面向对象编程中的访问修饰符相同,例如public,private等)。 现在,如果我想到pll_base模块是暴露给其他模块的行为,其他模块可以“查看其内容”,其寄存器,端口引脚,输入/输出等。 其他模块可以修改这些思想的内容。 什么可以看到,什么不可以? 让我们说其他模块只能看到另一个模块的输入和输出,然后例如通过pll_base原语有以下内容,这个模块是由核心生成器生成的。 `timescale 1ps / 1ps 模块clk_wiz_v1_5 (//端口时钟 输入CLK_IN1, //输出端口 输出CLK_OUT1, //状态和控制信号 输入RESET, 输出已锁定 ); //输入缓冲 // ------------------------------------ IBUFG clkin1_buf (.O(clkin1), .I(CLK_IN1)); //时钟原语 // ------------------------------------ // PLL原语的实例化 // *未使用的输入被绑定 // *未使用的输出标记为未使用 wire [15:0] do_unused; wire drdy_unused; wire clkfbout; wire clkfbout_buf; wire clkout1_unused; wire clkout2_unused; wire clkout3_unused; wire clkout4_unused; wire clkout5_unused; PLL_BASE #(.BANDWIDTH(“HIGH”), .CLK_FEEDBACK(“CLKFBOUT”), .COMPENSATION(“SYSTEM_SYNCHRONOUS”), .DIVCLK_DIVIDE(5), .CLKFBOUT_MULT(48), .CLKFBOUT_PHASE(0.000), .CLKOUT0_DIVIDE(40), .CLKOUT0_PHASE(0.000), .CLKOUT0_DUTY_CYCLE(0.500), .CLKIN_PERIOD(10.0), .REF_JITTER(0.010)) pll_base_inst //输出时钟 (.CLKFBOUT(clkfbout), .CLKOUT0(clkout0), .CLKOUT1(clkout1_unused), .CLKOUT2(clkout2_unused), .CLKOUT3(clkout3_unused), .CLKOUT4(clkout4_unused), .CLKOUT5(clkout5_unused), //状态和控制信号 .LOCKED(已锁定), .RST(重置), //输入时钟控制 .CLKFBIN(clkfbout_buf), .CLKIN(clkin1)); //输出缓冲 // ----------------------------------- BUFG clkf_buf (.O(clkfbout_buf), .I(clkfbout)); BUFG clkout1_buf (.O(clkout_buf), .I(clkout0)); ); endmodule PLL_base已由核心生成器在此模块中实例化,现在我想知道如何访问“clkout_buf”这是BUFG的输出,我想将其输入ODDR2,ODDR2需要倒置时钟,所以我目前 使用非门。 以上来自于谷歌翻译 以下为原文 I'm so used to thinking like at software developer and maybe I got to change that? What I was thinking of was "visibility" (same as access modifiers in object oriented programming for instance public, private etc.).
`timescale 1ps/1psmodule clk_wiz_v1_5 (// Clock in ports input CLK_IN1, // Clock out ports output CLK_OUT1, // Status and control signals input RESET, output LOCKED ); // Input buffering //------------------------------------ IBUFG clkin1_buf (.O (clkin1), .I (CLK_IN1)); // Clocking primitive //------------------------------------ // Instantiation of the PLL primitive // * Unused inputs are tied off // * Unused outputs are labeled unused wire [15:0] do_unused; wire drdy_unused; wire clkfbout; wire clkfbout_buf; wire clkout1_unused; wire clkout2_unused; wire clkout3_unused; wire clkout4_unused; wire clkout5_unused; PLL_BASE #(.BANDWIDTH ("HIGH"), .CLK_FEEDBACK ("CLKFBOUT"), .COMPENSATION ("SYSTEM_SYNCHRONOUS"), .DIVCLK_DIVIDE (5), .CLKFBOUT_MULT (48), .CLKFBOUT_PHASE (0.000), .CLKOUT0_DIVIDE (40), .CLKOUT0_PHASE (0.000), .CLKOUT0_DUTY_CYCLE (0.500), .CLKIN_PERIOD (10.0), .REF_JITTER (0.010)) pll_base_inst // Output clocks (.CLKFBOUT (clkfbout), .CLKOUT0 (clkout0), .CLKOUT1 (clkout1_unused), .CLKOUT2 (clkout2_unused), .CLKOUT3 (clkout3_unused), .CLKOUT4 (clkout4_unused), .CLKOUT5 (clkout5_unused), // Status and control signals .LOCKED (LOCKED), .RST (RESET), // Input clock control .CLKFBIN (clkfbout_buf), .CLKIN (clkin1)); // Output buffering //----------------------------------- BUFG clkf_buf (.O (clkfbout_buf), .I (clkfbout)); BUFG clkout1_buf (.O (clkout_buf), .I (clkout0)););endmodule the PLL_base has been instantiated inside this module by the core generator, now I was wondering how to access the "clkout_buf " this is the output of the BUFG that I would like to feed into a ODDR2, the ODDR2 needs inverted clocks so I am currently using a not gate. |
|
|
|
我不明白你想做什么。
您是否正在尝试从FPGA输出时钟到电路板? 如果是这样,那么mcgett的帖子就是正确答案。 请指教。 - 鲍勃埃尔金德 签名:新手的自述文件在这里:http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369总结:1。 阅读手册或用户指南。 你读过手册了吗? 你能找到手册吗?2。 搜索论坛(并搜索网页)以寻找类似的主题。 不要在多个论坛上发布相同的问题。 不要在别人的主题上发布新主题或问题,开始新的主题!5。 学生:复制代码与学习设计不同.6“它不起作用”不是一个可以回答的问题。 提供有用的详细信息(请与网页,数据表链接).7。 您的代码中的评论不需要支付额外费用。 我没有支付论坛帖子的费用。 如果我写一篇好文章,那么我一无所获。 以上来自于谷歌翻译 以下为原文 I do not understand what you are trying to do. Are you trying output a clock from the FPGA to the board? If so, then mcgett's post is the correct answer. Please advise. - 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. |
|
|
|
eteam00写道:
我不明白你想做什么。 您是否正在尝试从FPGA输出时钟到电路板? 如果是这样,那么mcgett的帖子就是正确答案。 请指教。 - 鲍勃埃尔金德 我想将24Mhz时钟输出到Spartan 6 FPGA的IO引脚之一。 编译器说我无法直接路由全局时钟并告诉我将ODDR2添加到输出。 然而到目前为止,我一直在编辑核心生成器文件并添加ODDR2而不是自己的门,现在我不想再这样做但是在我实例化clk生成器模块的位置添加ODDR2而不是门。 截至目前我这样做(错误的方式) not not1(clkout_buf_n,clkout_buf); ODDR2 #( .DDR_ALIGNMENT(“NONE”),//将输出对齐设置为“NONE”,“C0”或“C1” .INIT(1'b0),//将Q输出的初始状态设置为1'b0或1'b1 .SRTYPE(“SYNC”)//指定“SYNC”或“ASYNC”设置/复位 )ODDR2_inst( .Q(CLK_OUT1),// 1位DDR输出数据 .C0(clkout_buf),// 1位时钟输入 .C1(clkout_buf_n),// 1位时钟输入 .CE(1'b1),// 1位时钟使能输入 .D0(1'b1),// 1位数据输入(与C0相关) .D1(1'b0),// 1位数据输入(与C1相关) .R(1'b0),// 1位复位输入 .S(1'b0)// 1位置位输入 非门的“clkout_buf”输入来自PLL_base原语的输出。 以上来自于谷歌翻译 以下为原文 eteam00 wrote: I want to output a 24Mhz clock to one of the IO pins of the Spartan 6 FPGA. And the compiler says I cannot route a global clock directly and tells me to add a ODDR2 to the output . However so far I have been editing the core generator file and adding the ODDR2 and not gate there itself, now Idon't want to do that any more but add the ODDR2 and not gate at the location where I instantiate the clk generator module. As of now I am doing it this way (the wrong way) not not1(clkout_buf_n ,clkout_buf);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) ODDR2_inst (.Q(CLK_OUT1), // 1-bit DDR output data.C0(clkout_buf), // 1-bit clock input.C1(clkout_buf_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 inputthe "clkout_buf" input to the not gate comes from the output of the PLL_base primitive. |
|
|
|
我想将24Mhz时钟输出到Spartan 6的IO引脚之一
FPGA。 编译器说我不能直接路由全局时钟 告诉我将ODDR2添加到输出中。 全局时钟与输出引脚或输出缓冲器没有直接连接(路由)。 输出24MHz时钟的最简单方法是 生成48MHz全局时钟(您可以使用时钟发生器向导为您执行此操作) 切换以48MHz时钟为时钟的触发器。 触发器输出为24MHz。 使24MHz触发器输出为输出信号(顶级输出端口)。 24MHz触发器输出不是全局时钟,而是简单的数字逻辑信号。 编译器将此信号路由到输出没有问题。 - 鲍勃埃尔金德 签名:新手的自述文件在这里:http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369总结:1。 阅读手册或用户指南。 你读过手册了吗? 你能找到手册吗?2。 搜索论坛(并搜索网页)以寻找类似的主题。 不要在多个论坛上发布相同的问题。 不要在别人的主题上发布新主题或问题,开始新的主题!5。 学生:复制代码与学习设计不同.6“它不起作用”不是一个可以回答的问题。 提供有用的详细信息(请与网页,数据表链接).7。 您的代码中的评论不需要支付额外费用。 我没有支付论坛帖子的费用。 如果我写一篇好文章,那么我一无所获。 以上来自于谷歌翻译 以下为原文 I want to output a 24Mhz clock to one of the IO pins of the Spartan 6 FPGA. And the compiler says I cannot route a global clock directly and tells me to add a ODDR2 to the output.There is no direct connection (routing) of a global clock to an output pin or output buffer. The simplest way to output a 24MHz clock is to
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. |
|
|
|
>生成48MHz全局时钟(您可以使用时钟发生器向导为您执行此操作)
通过时钟发生器向导,你的意思是核心生成器中的定时向导吗? >使24MHz触发器输出为输出信号(顶级输出端口)。 要使输出信号成为顶级输出端口,我需要在UCF文件中将其链接起来吗? 或者你打算在这里提出任何其他建议吗? - 鲍勃埃尔金德 以上来自于谷歌翻译 以下为原文 >generate a 48MHz global clock (you can use the clock generator wizard to do this for you) By clock generator wizard you mean the wizard for timing in the Core Generator right? >make the 24MHz flip-flop output an output signal (a top-level output port). To make a output signal a top-level output port, I need to link it up in the UCF file right? or there any other thing you meant to suggest here? - Bob Elkind |
|
|
|
>生成48MHz全局时钟(您可以使用时钟发生器向导为您执行此操作)
通过时钟发生器向导,你的意思是核心生成器中的定时向导吗? 不,向导(在ISE中)被称为“时钟向导”。 >使24MHz触发器输出为输出信号(顶级输出端口)。 为了使输出信号成为顶级输出端口,我需要 将它链接到UCF文件中吧? 或者你还有其他意思 在这里建议? 输出线clk24MHzOut,//顶层模块端口列表的一部分... reg clk24MHz;分配clk24MHzOut = clk24MHz;总是@(posedge clk48MHz)clk24MHz 在上面的例子中,.UCF文件中应该有一个用于net clk24MHzOut的条目,用于指定标准和引脚分配以及驱动强度。 - 鲍勃埃尔金德 签名:新手的自述文件在这里:http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369总结:1。 阅读手册或用户指南。 你读过手册了吗? 你能找到手册吗?2。 搜索论坛(并搜索网页)以寻找类似的主题。 不要在多个论坛上发布相同的问题。 不要在别人的主题上发布新主题或问题,开始新的主题!5。 学生:复制代码与学习设计不同.6“它不起作用”不是一个可以回答的问题。 提供有用的详细信息(请与网页,数据表链接).7。 您的代码中的评论不需要支付额外费用。 我没有支付论坛帖子的费用。 如果我写一篇好文章,那么我一无所获。 以上来自于谷歌翻译 以下为原文 >generate a 48MHz global clock (you can use the clock generator wizard to do this for you)No, the wizard (in ISE) is called the "Clocking Wizard". >make the 24MHz flip-flop output an output signal (a top-level output port).outputwire clk24MHzOut, // part of the top level module port list ... reg clk24MHz; assign clk24MHzOut = clk24MHz; always@(posedge clk48MHz) clk24MHz <= ~clk24MHz;In the above example, there should be an entry in the .UCF file for net clk24MHzOut specifying io standard and pin assignment and drive strength. - 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. |
|
|
|
>>不,向导(在ISE中)被称为“时钟向导”。
经过几天的搜索,我仍然找不到ISE中的“时钟向导”,你能让我知道它的位置吗? 以上来自于谷歌翻译 以下为原文 >>No, the wizard (in ISE) is called the "Clocking Wizard". After days of searching I still couldn't find the ''Clocking Wizard" in the ISE, could you let me know where it's located?? |
|
|
|
经过几天的搜索,我仍然找不到ISE中的“时钟向导”,你能让我知道它的位置吗?
我真的希望你没有花几天时间搜索......以下屏幕截图来自在WinVista64下运行的ISE12.4。 - 鲍勃埃尔金德 签名:新手的自述文件在这里:http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369总结:1。 阅读手册或用户指南。 你读过手册了吗? 你能找到手册吗?2。 搜索论坛(并搜索网页)以寻找类似的主题。 不要在多个论坛上发布相同的问题。 不要在别人的主题上发布新主题或问题,开始新的主题!5。 学生:复制代码与学习设计不同.6“它不起作用”不是一个可以回答的问题。 提供有用的详细信息(请与网页,数据表链接).7。 您的代码中的评论不需要支付额外费用。 我没有支付论坛帖子的费用。 如果我写一篇好文章,那么我一无所获。 以上来自于谷歌翻译 以下为原文 After days of searching I still couldn't find the ''Clocking Wizard" in the ISE, could you let me know where it's located??I really hope you haven't spent days searching... The following screen shots are from ISE12.4 running under WinVista64. - 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. |
|
|
|
只有小组成员才能发言,加入小组>>
2388 浏览 7 评论
2803 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2270 浏览 9 评论
3338 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2438 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
767浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
551浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
381浏览 1评论
1974浏览 0评论
691浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 15:58 , Processed in 1.434980 second(s), Total 92, Slave 75 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号