第4讲.FPGA的设计.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
FPGA/CPLD 重要设计思想及工程应用 时序及同步设计 水声工程学院 概述 数字电路中,时钟是整个电路最重要、 最特殊的信号。 第一, 系统内大部分器件的动作都是在时钟的跳变沿上进行, 这就要求时钟信号时延差要非常小, 否则就可能造成时序逻辑状态出错。 第二, 时钟信号通常是系统中频率最高的信号。 概述 第三, 时钟信号通常是负载最重的信号, 所以要合理分配负载。出于这样的考虑在FPGA这类可编程器件内部一般都设有数量不等的专门用于系统时钟驱动的全局时钟网络。这类网络的特点是:一、负载能力特别强, 任何一个全局时钟驱动线都可以驱动芯片内部的触发器; 二是时延差特别小; 三是时钟信号波形畸变小, 工作可靠性好。 概述 因此, 在FPGA设计中最好的时钟方案是: 由专用的全局时钟输入引脚驱动单个主时钟去控制设计项目中的每一个触发器。同步设计时, 全局时钟输入一般都接在器件的时钟端, 否则会使其性能受到影响。 对于需要多时钟的时序电路, 最好选用一个频率是它们的时钟频率公倍数的高频主时钟。 概述 各个功能模块要使用统一的复位电路。在使用带时钟的触发器、计数器等有复位端的库器件时, 一般应尽量使用有同步复位的器件。注意复位时保证各个器件都能复位, 以避免某些寄存器的初始状态不确定而引起系统工作不可靠。 建立和保持时间 若想掌握时钟设计方法首先需要了解建立时间和保持时间的概念。如下页图所示,建立时间(setup time):是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器;保持时间(hold time):是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,数据同样不能被打入触发器。 建立和保持时间 全局时钟 对于一个设计项目来说,全局时钟(或同步时钟)是最简单和最可预测的时钟。在CPLD/FPGA设计中最好的时钟方案是:由专用的全局时钟输入引脚驱动的单个主时钟去钟控设计项目中的每一个触发器。只要可能就应尽量在设计项目中采用全局时钟。CPLD/FPGA都具有专门的全局时钟引脚,它直接连到器件中的每一个寄存器。这种全局时钟提供器件中最短的时钟到输出的延时。 全局时钟 下页图是一个全局时钟的实例。图中波形表示出触发器的数据输入D[1..3]应遵守建立时间和保持时间的约束条件。如果在应用中不能满足建立和保持时间的要求,则必须用时钟同步输入信号。最好的方法是用全局时钟引脚去钟控PLD内的每一个寄存器,于是数据只要遵守相对时钟的建立时间tsu和保持时间th。 全局时钟 门控时钟 在许多应用中,整个设计项目都采用外部的全局时钟是不可能或不实际的。PLD具有乘积项逻辑阵列时钟(即时钟是由逻辑产生的),允许任意函数单独地钟控各个触发器。然而,当你用阵列时钟时,应仔细地分析时钟函数,以避免毛刺。 门控时钟 1.驱动时钟的逻辑必须只包含一个“与”门或一个“或”门。如果采用任何附加逻辑在某些工作状态下,会出现竞争产生的毛刺。 2.逻辑门的一个输入作为实际的时钟,而该逻辑门的所有其它输入必须当成地址或控制线,它们遵守相对于时钟的建立和保持时间的约束。 门控时钟 实例1 如下页图所示是一个可靠的门控时钟的实例。用一个“与”门产生门控时钟,引脚nWR和nWE考虑为时钟引脚,引脚ADD[0…3]是地址引脚,两个触发器的数据是信号D[1…n]经随机逻辑产生的。 门控时钟 实例1 门控时钟 实例2 when 0008 = SRamData1 = AD_Dbus; ADpro := 0009; when 0009 = SRAM_CE = 1; ADpro := 0010; when 0010 = if(ncnt 1)then ncnt := ncnt + 1; else ncnt := 0; ADpro := 0011; end if; SRAM_WE = 0; SRAM_CE = 1; when 0011 = SRAM_CE = 1; ADpro := 0012; when 0012 = SRamAddr1 = SRamAddr1 + 1; ADpro := 0013; 错误的门控时钟设计 如下页图所示给出了一个不可靠的门控时钟的例子。3位同步加法计数器的RCO输出用来钟控触发器。然而,计数器给出的多个输入起到时钟的作用,这违反了可靠门控时钟所需的条件之一。在产生RCO信号的触发器中,没有一个能考虑为实际的时钟线,这是因为所有触发器在几乎相同的时刻

文档评论(0)

zxli + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档