完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨,
我正在尝试使用Spartan 3E500生成一个4相数字时钟(每个占空比为25%)。 DCM提供完美的相移,但无法调整占空比。 无论如何我可以获得如下的时钟信号?(只要时钟与时钟之间没有重叠,就会很好)。 谢谢! |
|
相关推荐
8个回答
|
|
你没有提到你需要的频率。
如果它不是太高,你可以从4x输入时钟开始,然后使用结构生成带触发器的4个相位。 我的问题是你想用这个时钟做什么。 你打算在FPGA里面使用它吗? 如果是这样,我怀疑你正在尝试做一些异步的事情而且不太可能在FPGA中运行良好。 如果它要走出FPGA,你也可以使用DDR输出寄存器。 假设2x时钟占空比为50%,那么你只需要一个2x时钟来驱动DDR寄存器。 - Gabor |
|
|
|
嗨Gabor,
感谢您的回复。 我的项目应该在8MHz到32MHz之间运行,如果它不能达到那么高,则频率较低。 我之前尝试过4x时钟和一个触发器,但它给了我可怕的时钟输出。 我的代码部分如下,我使用的是由Digilent Inc.制造的Nexys 2板。 // reg [1:0] qcounter = 0; // reg q1 = 0; // reg q2 = 0; // reg q3 = 0; // reg q4 = 0; //总是@(posedge clk_source)//开始// case(qcounter)// 1:开始// q2 // q1 //结束// 2:开始// q3 // q2 //结束// 3:开始 // q4 // q3 //结束//默认:开始// q1 // q4 //结束//结束// qcounter //结束 谢谢! |
|
|
|
您发布的代码中没有任何内容表明您为什么会得到“可怕的”时钟输出。
另一方面,真正的问题是时钟的发展方向。 它是在FPGA外部还是内部使用的。 如果在外面,那么我唯一可以建议的是将所有输出触发器放在IOB中。 就像是: reg [1:0] qcounter = 0;(* IOB =“FORCE”*)reg q1 = 0;(* IOB =“FORCE”*)reg q2 = 0;(* IOB =“FORCE”*)reg q3 = 0;(* IOB =“FORCE”*)reg q4 = 0; 等等 如果你在FPGA中使用它,那么我需要更好地了解它是如何被使用的。 通常我不会建议将这种时钟用于内部结构。 此外,如果您要求四个阶段不重叠,那么这并不容易。 由于寄存器都位于IOB中,重叠应该在100 ps或更小的数量级,但不能保证为零。 在FPGA内部,您将受到触发器和时钟缓冲器之间路由延迟的影响,因此除非您将脉冲宽度设置得更小,否则很难保持它们不重叠。 所以我想我需要更多地了解你的应用程序,以提出更好的建议。 - Gabor |
|
|
|
嗨Gabor,
我正在尝试使用FPGA来模拟一个简单的微处理器的功能,这就是为什么4相时钟非常重要,以保持应用程序正常工作。 我想在这种情况下,我正在使用FPGA内部的时钟。 我一直在尝试几种不同的方法制作时钟,但它们都没有令人满意的工作方式。 有一种方法我认为应该完美地工作,如下所述: 我使用一个DCM1以所需频率生成clk_out信号,然后与另一个DCM2级联(使用DCM1中的clk_out作为CLKIN),其中我生成每个占空比为50%的4相时钟信号。 如果我将这4个阶段称为p1_clk,p2_clk,p3_clk,p4_clk,那么我执行以下操作来对时钟信号进行门控: 分配q1_clk = p4_clk& p1_clk;赋值q2_clk = p1_clk& p2_clk;赋值q3_clk = p2_clk& p3_clk;赋值q4_clk = p3_clk& p4_clk; 在这种情况下,我相信我可以获得25%的占空比,但是当我检查来自逻辑分析仪的信号输出时,一切都失真了,我不知道为什么信号表现得那样...... |
|
|
|
在FPGA内部,您不需要占空比为25%的时钟。
如果您打算使用透明锁存器(占空比应该重要的唯一原因),那么我建议您重新考虑您的项目。 没有为这种异步设计设置整个工具链,并且您的时钟质量将是您的问题中最少的。 我认为没有理由不能在4倍频率下使用单个时钟,并在状态机上发布4个时钟使能信号。 至于为什么你在逻辑分析仪上看到“一切都失真”,这取决于你如何将时钟输出到一个引脚。 如果时钟与BUFG正确相同,那么将它们放在引脚上的唯一合理方法是使用在时钟的两个边沿计时的DDR输出触发器和连接到1和0的两个D输入。 非反相时钟,与时钟上升沿对应的D输入应为1,与时钟下降沿对应的D输入应为0.然后该引脚将显示内部时钟的合理副本(略微延迟)。 - Gabor |
|
|
|
嗨Gabor,
感谢你的信息。 坏消息是该项目在设计中确实使用了很多锁存器,这不符合FPGA的性质。 但是,我们不需要改变设计,因此我希望找到一种方法来使应用程序在FPGA上运行。 您能否提供一些有关如何使用逻辑分析仪正确检查内部信号的信息? 我没有太多经验,最初我只是直接将信号绑定到某些输出引脚。你提到我需要使用DDR输出fli-flop。 有什么地方可以让我了解使用Xilinx软件的设置吗? 谢谢! - 瑞恩 |
|
|
|
首先,您需要确保正确缓冲内部时钟(确保实例化BUFG组件)。
这些部分中透明锁存器的Gate输入使用与D触发器时钟相同的输入,因此它希望连接到全局时钟网络。 然后我建议查看Libraries 3E的Libraries指南,看看适当的DDR翻牌实例化。 通常这些以“ODDR”开头,之后可能会有更多字符。 实例化模板也在库指南中给出。 你不能推断这些。 至于生成时钟,我仍然不认为DCM是这样做的正确方法。 我认为你可以使用织物触发器获得更好的效果,但你需要手动放置它们以获得BUFG的最低路线延迟。 如果你不想要任何重叠,你可能想要将占空比减少到12.5%(使用8倍时钟),而不是试图完美地对齐这些时钟。 - Gabor |
|
|
|
坏消息是该项目在设计中确实使用了很多锁存器,这不符合FPGA的性质。
但是,我们不需要改变设计,因此我希望找到一种方法来使应用程序在FPGA上运行。 这是一个矛盾。 如果不进行更改以使设计适应FPGA技术,则无法将外部设计移植到FPGA平台。 您能否提供一些有关如何使用逻辑分析仪正确检查内部信号的信息? 我没有太多经验,最初我只是直接将信号绑定到某些输出引脚。你提到我需要使用DDR输出fli-flop。 有什么地方可以让我了解使用Xilinx软件的设置吗? 内部FPGA信号的逻辑分析仪称为Chipscope。 要使用DDR输出触发器在输出引脚上输出时钟信号,请搜索术语“时钟转发”。 您不愿修改锁存器和多相时钟方案表明不熟悉底层设计及其架构。 初始尝试移植设计的可能性非常高,一开始就不会100%正常运行,在这种情况下,您需要调试设计。 您需要彻底了解设计才能成功调试它。 - 鲍勃埃尔金德 签名:新手的自述文件在这里:http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369总结:1。 阅读手册或用户指南。 你读过手册了吗? 你能找到手册吗?2。 搜索论坛(并搜索网页)以寻找类似的主题。 不要在多个论坛上发布相同的问题。 不要在别人的主题上发布新主题或问题,开始新的主题!5。 学生:复制代码与学习设计不同.6“它不起作用”不是一个可以回答的问题。 提供有用的详细信息(请与网页,数据表链接).7。 您的代码中的评论不需要支付额外费用。 我没有支付论坛帖子的费用。 如果我写一篇好文章,那么我一无所获。 |
|
|
|
只有小组成员才能发言,加入小组>>
2383 浏览 7 评论
2800 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2263 浏览 9 评论
3336 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2430 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
756浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
546浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
368浏览 1评论
1964浏览 0评论
683浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 18:57 , Processed in 1.446269 second(s), Total 93, Slave 76 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号