您的位置 首页 系统

FPGA大型规划使用的多时钟规划战略论述

利用FPGA实现大型设计时,可能需要FPGA具有以多个时钟运行的多重数据通路,这种多时钟FPGA设计必须特别小心,需要注意最大时钟速率、抖动、最大时钟数、异步时钟设计和时钟/数据关系。设计过程中最重要

运用FPGA完成大型规划时,或许需求FPGA具有以多个时钟运转的多重数据通路,这种多时钟FPGA规划有必要特别当心,需求留意最大时钟速率、颤动、最大时钟数、异步时钟规划和时钟/数据联系。规划进程中最重要的一步是承认要用多少个不同的时钟,以及怎么进行布线,本文将对这些规划战略深化论述。

FPGA规划的榜首步是决议需求什么样的时钟速率,规划中最快的时钟将承认FPGA有必要能处理的时钟速率。最快时钟速率由规划中两个触发器之间一个信号的传输时刻P来决议,假如P大于时钟周期T,则当信号在一个触发器上改动后,鄙人一个逻辑级大将不会改动,直到两个时钟周期今后才改动,如图1所示。

传输时刻为信号在榜首个触发器输出处所需的坚持时刻加上两级之间的任何组合逻辑的推迟,再加两级之间的布线推迟以及信号进入第二级触发器的设置时刻。不管时钟速率为多少,每一个FPGA规划所用的时钟有必要具有低颤动特性。颤动S是触发器的一个时钟输入到另一个触发器的时钟输入之间的最大推迟。为使电路正常作业,颤动有必要小于两个触发器之间的传输时刻。

图2显现了假如颤动大于传输时刻(S>P)将呈现的状况,该电路用时钟的两个上升沿来推迟信号1。可是,信号1上的一个改动会在相同的时钟周期上传输到的信号3上,然后引起信号2的改动。由于S>P,电路将不能不正常。

须留意的是,时钟速率与传输延时并没有什么联系,乃至一般的100bps时钟也会呈现颤动问题。这意味着虽然FPGA供货商声称他们的芯片具有较短的传输时刻和很高的时钟速率,但颤动问题或许会严峻,乃至那些没有运转在最高速率上的规划也是如此。

好在FPGA供货商现已认识到时钟颤动的影响,并在他们的芯片中供给低颤动的布线资源。这些特别的布线可以在芯片中一个给定规模内的任何两个触发器之间供给一个承认的最大颤动。部分产品的低颤动资源覆盖了整个芯片,而其它的则或许只覆盖了FPGA逻辑块中的一个特定的行或列。关于一个需求许多不一起钟源的规划,这些低颤动FPGA是比较抱负的挑选。

多时钟规划的最严峻问题之一是用异步时钟将两级逻辑结合在一起。由于异步时钟会发生亚稳态,然后严峻下降规划功用,或彻底损坏规划所能完成的功用。在触发器的时序要求发生抵触时(设置时刻和坚持时刻)将发生亚稳态,触发器的终究输出是不知道的,并使整个规划处于不承认状况。假如有一级逻辑要将数据异步地发送到另一级,图3所示的景象将不能满意触发器的设置和坚持时刻要求。切当地说,假如规划中含有异步逻辑将有或许会发生亚稳态。在处置异步资源时必需十分当心,由于这或许发生一些很严峻的问题。

多时钟规划

本文以电信运用中的E3多路复用/解复用规划为例。如图4所示,多路复用器接纳来自一组独立线路接口芯片的16个独立E1信道,每一个信道都作业于2.048MHz;经复用后,这些E1流组合成4个E2流,别离作业在8.0448MHz;4个E2流终究组合成一个E3流,以34.368Mbps的速率串行发送出去。在接纳端履行相反的操作:解复用器从E3流提取4个E2数据流,然后从E2流提取16个E1流,终究将E1流发送到接纳端的线路接口芯片。

这些E1线路接口在发送和接纳时都独立作业,因而2.048MHz的时钟速率可以有+/- 20ppm的误差。相同,由于大多数体系一起发送和接纳数据,分立的多路复用器和多路解复用器将供给2个独立的E3流(发送和接纳)。因而,两个34.368MHz的时钟可以存在纤细的差异。

由于E2流是在芯片上发生的,这些E2多路复用器可以同享同一个8.448MHz时钟。可是,由于接纳的数据速率与咱们所规划的板无关(且不能假定一切E2多路复用器运用相一起钟),所以E2解复用器时钟有必要能作业在略为不同的速率下。

此外,假定规划中需求一个由作业频率为1MHz的处理器操控的独立SPI(串行外围接口)总线接口,该接口用于状况和操控。这样一来,规划中一共用了32个2.048MHz时钟,5个8.448MHz时钟,2个34.368MHz时钟和一个1MHz时钟,一共多达40个时钟。

本规划中最快时钟是34.368MHz E3时钟。FPGA的最大时钟速率的承认很重要,由于规划的差异将影响到该最大值。可是,在芯片商的材料手册中常常可以看到“大局时钟设置及坚持时刻”和“至CLB输出的时钟”两个参数,将这两个参数的最大值相加,再添加25%就能可以得到最小时钟周期的初略值,在最大时钟速率条件下答应10%的余量,以保证过热条件下能正常作业。因而,咱们设置的最小速率为40MHz,许多较新的FPGA都可以很简略地支撑该频率。事实上,FPGA供货商现已推出了超越300MHz的器材。

在承认了能满意最大频率要求的FPGA后,就需求保证有满意的空间来完成你的规划。假如所选的FPGA没有满意的余量,就不能供给满意的布线资源来满意规划的时序束缚。一般芯片供货商声称的速率是最佳条件下的速率,FPGA供货商一般主张FPGA逻辑在布线功用开端显着变差曾经可以用到80%。在挑选FPGA器材时,主张在新的规划时最好使FPGA逻辑用到50%左右,这样就答应核算开端规划巨细呈现超差,以及为在规划起动后发生不行防止的规划变更留出空间。假如终究的规划只占用低于50%的资源,则可以运用同一系列中较小的FPGA以下降成本。

经过时序束缚来规则慢时钟速率,然后可以改善规划中最快时钟的布线。在多路复用器比方中,假如设置FPGA布线东西SPI总线时钟为1MHz,而E3时钟为40MHz,布线东西将尽量使E3时钟的逻辑电路模块相邻布局。假如由于空间的束缚而不能将悉数电路布局在一起,则首要应将SPI逻辑别的布局,由于SPI逻辑可以处理更长传输推迟。一切FPGA供货商的布线东西都能规则这些较慢时钟速率。

削减时钟数量

依据市场调查,现在还没有哪个FPGA器材可以支撑这种多路复用器/解复用器规划所需的40个时钟。所以,咱们有必要削减所需求的时钟数。

首要了解E2和E3多路复用器的时钟。前面现已剖析了4个E2多路复用器作业在相一起钟下的可承受度,E3多路复用器运转于比E2时钟高得多的速率,必需运用一个不同的时钟。可是,假如咱们从E3时钟中引出E2时钟是否可行呢?由于E3多路复用器要从每个E2支路得到数据,咱们可以在需求E2多路复用器给咱们数据时,简略地将脉冲送给每个多路复用器。咱们没有去掉任何时钟,但E2时钟现在是根据E3时钟。

假如在一切的多路复用器中也运用相同的时钟,并且只运用一个使能信号来告知E2多路复用器什么时候作业,这时会发生什么问题呢?假如E3多路复用器用34.368MHz时钟发生使能信号,在这些使能信号上的颤动不会比用在FPGA中任何其它同步逻辑更大。所以,使能信号可以运用正常(高颤动)布线资源,这样就不需求独自的8.448MHz多路复用器时钟,读取E1数据缓冲器的数据时也是相同。换言之,假如E2多路复用器需求数据,它可以激活到特定缓冲器的使能信号。到缓冲器的时钟自身可以坚持E3多路复用器所用的34.368MHz时钟,如图5所示。

终究,咱们查看16个从线路接口芯片输入到FPGA的E1时钟。这些时钟有会发生下面几个问题:首要,16个时钟将占用太多可用芯片时钟布线资源;其次,在同一个FPGA中运用16个异步时钟来驱动彼此附近的触发器,由于地弹、串扰和其它效应将发生噪声问题。例如,由于噪声的原因,一个正边缘触发器会鄙人降边缘时改动输出状况,此类问题将难以处理。

作为一种或许的解决计划,咱们引荐运用一个最快的时钟来对16个E1时钟采样。16个输入时钟都挨近2.048MHz,并且还有一个34.368MHz的体系时钟。这样,咱们可以用34.368MHz时钟来对16个E1时钟别离进行采样,并将成果存储在一个16位存储器中(每个E1时钟一个位)。然后,咱们可以运用一个算法来检测在E1时钟上由低至高的转化,为每一个E1数据信号发生一个使能信号,并鄙人一个周期(34.368MHz)中存储数据。

要成功完成这种计划,还必需了解时钟-数据联系以防止在数据改动时对数据采样,参见图6。请留意在时钟采样电路的榜首级中运用了两个触发器以保证在亚稳态下正常作业。别的需求留意的是,数据和时钟有必要具有相一起钟周期数的推迟。

咱们现已成功地将多路复用器的时钟削减到一个时钟,相同的办法可否用在解复用器呢?E3解复用器有必要选用一个外部输入时钟,这是由于驱动E3输入数据的同一个片外器材运用到该时钟。由于E3解复用器知道在什么时候发送数据到E2解复用器,并能对每个E2解复用器发生使能信号,而四个E2解复用器能作业在与E3多路复用器相同的主时钟下。相同,E2多路复用器可以为每个E1流发生使能信号。

假如咱们假定线路接口芯片可以承受有空隙的时钟(gapped clock),一旦承认宣布E1使能信号,咱们只需求发送一个时钟脉冲至线路接口。可是,只需求简略地发送使能信号自身至接口芯片而不用发生一个新的时钟。由于送至接口的数据将在使能信号的下降沿发生改动(参见图5),咱们需求承认接口在时钟的上升沿进行采样。由于使能信号仅在线路接口芯片上而不是在FPGA内用作一个时钟,就没有必要在一个低颤动源中进行布线。留意这是在知道将再也不会用主时钟的接连脉冲送数据到相同的隶属器材中时才这样做。

1MHz SPI时钟并不能简略去掉,但咱们现在经过运用使能信号和时钟过采样技能,将原先40个时钟削减到3个,这样咱们就有了更大的器材挑选规模。

异步时钟

在用异步时钟发生任何逻辑前应该尽量先考虑选用其它代替办法,用异步时钟的组合逻辑是发生亚稳态问题的主要原因。相同,当违背触发器的设置和坚持时刻束缚时,在一个短时刻内输出将具有不承认性,并且将终究设定在“1”或“0”上,切当的状况不行预知。

走运的是关于亚稳态性问题现已有一些解决计划。图6说明晰这一计划,这是一种双寄存器办法:进入榜首级触发器的数据与时钟异步,所以榜首级触发器简直肯定是亚稳态;可是,只需亚稳态的长度小于时钟的周期,第二级触发器就不会进入亚稳态。可是,FPGA供货商很少供给亚稳态时刻,虽然该时刻一般小于触发器的设置和坚持时刻之和。

假如时钟不是太快并且能满意时序束缚的话,像图6所示的电路将或许不会发生亚稳态。只需一切输出到触发器的通路由相一起钟驱动,即便榜首级触发器的输出可用,一般仍是需求用像图6中电路来将亚稳态阻隔到一条短线。选用这种办法后,将不太或许呈现由于电路的改动而无意地在无时钟驱动的逻辑中用到该亚稳太线。

假如读数据的是一个计数器,像从一个异步FIFO读或写地址,你应该考虑下列状况:一个传统的3位计数器在状况之间有一个、两个或三个位的改动,例如读数发生在计数器从“011”到“100”改动的瞬间,则一切三个位的值将不承认,读的值会是八种或许状况中的任一种。假如计数器是运用格雷码,如表所示,则每次仅有一位发生状况改动,假如读数发生在计数器改动的瞬间,则只要一个位会有问题,所以在读操作中只要两种或许成果,并且这两种或许成果是计数器正好在读曾经的值和正好在读今后的值时。由于读正好发生在计数器发生改动的瞬间,你不或许切当地说哪个值是正确的,即两者都应该认为是有用的。

另一个防止异步时钟问题的办法是疏忽较慢的时钟,并用较快的时钟来采样。这需求数据有特别的成帧特性(例如,具有一个前导码)来界说数据鸿沟。这是一个常用的办法,在差不多每一个具有UART方式的嵌入式体系都有运用。该办法是:选用一个十分快的时钟,比方数据符号率的16倍,在接连发现15个开端字符后开端采样,则下一个16(左右)位相当于送的榜首个位,再下一个16(左右)位对应下一个位,并以次类推。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/xitong/195287.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部