FPGA内部时钟处理的常见设计方法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
FPGA内部时钟处理的常见设计方法

FPGA内部时钟处理的常见设计方法 前言: 目前的fpga功能越来越强大,在FPGA内部对时钟的处理使用比较普遍。其时钟处理内容根据不同的应用场合与不同的设计需求包含倍频或者分频.下面是比较常用的FPGA内部实现时钟处理的一些基本思想及经验与大家交流.希望与大家一起交流提高.这里主要以Altera的FPGA为例说明,对Xilinx的FPGA说明相对较少,需要的可以参见Xilinx的相关文档. 倍频 时钟的倍频: 在FPGA内部实现倍频一般采用外部时钟输入根据项目不同的需要可以倍频到不同的时钟频率(低时钟速率到高速时钟频率). 例如外部晶振输入27M,在fpga内部倍频至54M,或者81M,而不同的FPGA厂家实现的机制不尽相同.在Xilinx 的FPGA内部实现时直接调用DCM(数字时钟处理模块)可以实现,在ISE界面下可以直接实现.而Altera的FPGA内部实现倍频则需要内部的PLL,方法与步骤参考图1与图2.客观一点来讲,PLL的性能相对DCM有一定的优势,因为PLL是模拟锁相环,而Xilinx的DCM采用的DLL为数字锁相环。两者的性能比较有兴趣的可参考相关文档。 注:下面的Megawizard使用流程同样适合其他的Altera的Mega-core。这里可以根据用户需求生成相应的Mega-core,例如RAM,FIFO等。 图1.启动MegaWizard流程示意图 图2启动MegaWizard界面示意图 图2启动MegaWizard后参数设置示意图 分频 一些时钟要求比较高的设计场合需要使用FPGA内部的PLL实现,其实现原理与产生倍频的步骤与方法一致.这里不再赘述.另外简单或者要求不高的分频电路不需要特定器件与内部的PLL,只需用语言描述即可。 但一般设计如果分频为2的整数倍相对简单,仅仅需要一个简单的计数器就可实现,但有些场合需要用到奇数分频或者小数分频时相对比较复杂.下面仅仅列出奇数分频与偶数分频的实现原理与方法. 偶数分频 偶数分频是最简单的,很容易实现占空比为1:1的电路,这里不再赘述. 奇数分频 奇数分频相对复杂但也不是件难事,有2种方法实现占空比为1:1的奇数分频,第一种采用了异步时钟的方法,并不太好,不推荐使用.第二种方法来源于实际的设计经验,可应用于实际的系统之中。 方法一 生成N分频,先生成N/2的时钟,之后再2分频,使得占空比调整成为1:1. 以7分频为例,先生成3.5分频时钟,再2分频即可。生成3.5分频。首先进行模4的计数,产生clk_en 信号,再用clk_en信号做时钟,做一个2分频输出,即clk_out,就是最后的输出,在将此输出与输入时钟相异或,反馈作为模4计数器的时钟。因为牵涉到别的一些问题,具体程序这里略去,各位如果需要可以联系我. 方法一产生的奇数分频 方法二 来源于设计经验。先做一个模7的计数器。再做一个信号a,在模1计数器的控制下,前3个周期为高,后4个周期为低。在用时钟下降沿将a信号延迟一拍得到b.a或b的运算就得到7分频且占空比为1:1的电路。具体程序略去. 方法二生成的奇数分频 小数分频 无法做到1:1的占空比。例如用77M分频得到16M时钟生成原理如下: 对于77M时钟,一个sts-12帧有9720拍。对于16M时钟,一个sts-12帧有32*8*8拍。即77M下每计数1215,16M下计数256。1215/256=4.76考虑到数字处理只能是整数,则需在每m个5拍扣一拍,每n个4拍扣一拍。列方程为: m+n=256 5m+4n=1215 解得: m=191,n=65 具体程序略去. 如果程序中,仅使用一种沿(或全部是上升沿、或全部时下降沿),此时对占空比是没有要求的,但如果上下沿都有使用,则对占空比可能有要求。 同一分频时钟多个输出的情况处理 在得到分频时钟之后,有一种情况是将该时钟输出给过多个芯片,这时还需要注意一个布局布线的问题,在程序中,将该分频时钟复制多个,如果在synplify综合,可以使用/synthesis syn_keep=1/约束,保证这些信号不被综合器优化掉,之后在每一个信号输出之前打一个触发器,这样,保证了每一个时钟都是经过了IOB上的触发器,保证了时钟信号的质量。具体程序略去. xilinx、Altera器件对差分时钟输入的不同处理 当时钟频率很高时,常采用差分时钟对的输入形式.Xilinx、Altera对差分时钟输入的处理是不同的。Altera仅仅需要一个Pin就可以实现,但必须在管脚约束时指定管脚的电平类型。Xilinx需要两个时钟输入端。具体使用细节可以参照Xilinx的相关文档。 Xilinx 需要在程序中显性的表示出有2个时钟输入端,在程序内部将这两个差分成对的时

文档评论(0)

153****9595 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档