完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨,
我在级联模式下使用Xilinx DCM(数字时钟管理器),使用6.144 MHz时钟生成48 kHz时钟。 但是,由于我的设计相当大(在区域内),这种配置无法满足时序约束并对整个设计产生影响。 因此,我在VHDL中使用时钟分频器生成48 kHz时钟(参见下面的代码)。 但是,我觉得这不是最好的做法。 此外,该方法降低了系统的最大工作频率。 进程(CLK_OUT1,RESET) 开始 if(RESET ='1')然后 计数器 |
|
相关推荐
2个回答
|
|
samarawickrama写道:
1)为什么Xilinx DCM级联无法满足时序约束? 有没有办法解决这个问题? 阅读数据表。 我不认为任何Xilinx FPGA系列的DCM都可以使用低至6.144 MHz的时钟输入,当然它们都不能输出48 kHz时钟。 所以并不是说你没有达到时间限制; 我打赌这些工具会抛出不同的错误。 请发布确切的错误消息。 2)有没有办法在VHDL中实现时钟分频而不降低工作频率? 6.144 MHz是一个非常低的频率,你不能满足时间安排。 也许你有很多组合逻辑? 更多 ... 采用时钟并用计数器将其分频是合理的,并将切换位用作时钟。 当你这样做时,你必须意识到一些事情。 您必须确保分频时钟位于全局时钟缓冲区上。 合成后,检查报告以查看它是否已放入全球网络。 只要触发位不是触发器时钟,合成器应该做正确的事情。 但如果没有,那就很容易在网上实例化一个BUFG。 以通常的方式将PERIOD约束放在分频时钟上。 请注意,分频时钟与产生它的时钟稍有延迟。 这是由于切换位的时钟到输出以及到达全局时钟缓冲器的延迟。 这意味着当您从高频时钟跨越时钟域到分频时钟时,您必须考虑该延迟。 为了处理关于延迟的最后一点,通常建议不要使用计数器并切换一点并使用切换位作为时钟。 相反,你应该做的是进行计数,当计数终止时,在一个时钟周期内选通一个新位。 喜欢这个: 常数DIVPERIOD:自然:= 128; signal clk48kHzEnable:std_logic_vector:='0'; myClkEnable:process(clk)是 变量divcnt:自然范围(0到DIVPERIOD - 1):= 0; 开始 如果rising_edge(clk)那么 如果divcnt = 0那么 clk48kHzEnable 其他 clk48kHzEnable 万一; divcnt:=(divcnt + 1)mod DIVPERIOD; 万一; 结束进程myClkEnable; 现在,在其余逻辑中,需要在48 kHz时钟上运行的所有内容都应使用该启用: myLogic:进程(clk)是 开始 如果rising_edge(clk)那么 at48kHz:如果clk48kHzEnable ='1'那么 .. 做东西 如果在48kHz时结束; 万一; 结束过程myLogic; 你应该在clk48kHzEnable启用的所有内容上创建一个多周期约束。 ----------------------------是的,我这样做是为了谋生。 以上来自于谷歌翻译 以下为原文 samarawickrama wrote:1) Why Xilinx DCM cascading failed to meet the timing constrains? Is there a way to solve this problem?Read the data sheet. I don't think any Xilinx FPGA family's DCM can work with a clock input as low as 6.144 MHz, and certainly none of them can output a 48 kHz clock. So it's not that you're not meeting timing constraints; I bet the tools are throwing a different error. Post the exact error message, please. 2) Is there a way I can implement clock division in VHDL without degrading the operating frequency?6.144 MHz is quite a low frequency and it's a surprise that you're not meeting timing. Perhaps you have a ton of combinatorial logic? More ... It's reasonable to take a clock and divide it down with a counter as you do, and to use the toggling bit as a clock. When you do this, you have to realize a few things.
constant DIVPERIOD : natural := 128; signal clk48kHzEnable : std_logic_vector := '0'; myClkEnable : process (clk) is variable divcnt : natural range (0 to DIVPERIOD - 1) := 0; begin if rising_edge(clk) then if divcnt = 0 then clk48kHzEnable <= '1'; else clk48kHzEnable <= '0'; end if; divcnt := (divcnt + 1) mod DIVPERIOD; end if; end process myClkEnable; Now in the rest of your logic, everything that needs to run on the 48 kHz clock should use that enable: myLogic : process (clk) is begin if rising_edge(clk) then at48kHz : if clk48kHzEnable = '1' then .. do stuff end if at48kHz; end if; end process myLogic; and you should create a multicycle constraint on everything which is enabled by clk48kHzEnable. ----------------------------Yes, I do this for a living. |
|
|
|
作为传递@ bassman59建议所有逻辑的“启用”信号的替代方法,您可以使用启用作为BUFGCE的EN信号。
在功能方面,它们几乎完全相同,并且都需要相同的多循环路径定义。 然而,一个使用相当数量的通用路由将EN信号路由到所有FF,另一个使用第二个全局时钟域来分配门控时钟。 Avrum 以上来自于谷歌翻译 以下为原文 As an alternative to passing the "enable" signal that @bassman59 is suggesting to all the logic, you can use the enable as the EN signal for a BUFGCE. In terms of functionality, they are pretty much identical, and both need the same multi-cycle path definition. However, one uses a fair amount of general routing to route the EN signal to all FFs, the other uses a 2nd global clock domain to distributed the gated clock. Avrum |
|
|
|
只有小组成员才能发言,加入小组>>
2427 浏览 7 评论
2828 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2295 浏览 9 评论
3377 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2467 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
1262浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
591浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
455浏览 1评论
2009浏览 0评论
735浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 03:55 , Processed in 1.241644 second(s), Total 79, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号