0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于FPGA的全局异步局部同步四相单轨握手协议实现

电子工程师 来源:《电子技术应用》 作者:张景伟;李若仲;肖 2021-05-26 18:12 次阅读

异步电路所具有的低功耗、低电磁噪声辐射、高速等突出特点,使其逐渐成为当前设计的焦点。现有异步电路的实现方法往往通过定制的VLSI结构完成,或者设计独特的异步FPGA结构来实现,而现有基于常规FPGA设计的异步电路,往往难于解决其中的冒险、延迟等问题。

全局异步局部同步[1]GALS(Globally Asynchronous Locally Synchronous)系统,结合了同步设计和异步设计的优点,在解决多时钟域问题和模块更新的复用性等方面有巨大优势,其特点是在各同步模块需要处理时才工作,其余时间可以处于暂停状态,不用引入太多异步单元,较易于使用常规FPGA实现,特别是在现有SoC[2]系统中多同步模块异步互联方面有着突出优势,且其具有低功耗、高吞吐量的特点。

参考文献[3]描述的是一种全局异步局部同步的专用FPGA(GAPLA),其内部结构通过同步逻辑模块实现数据计算,在逻辑模块间由同步、异步互换接口完成异步互联,其关键技术是同步、异步互换接口和时钟暂停(Pausible clocking)电路结构,而在常规FPGA中不包含这些结构。

参考文献[4]在常规FPGA实现GALS系统,是通过信号状态转换图(STG)的方法设计接口电路,利用Petrify软件实现的一种GALS系统异步封装电路,其将接口模块同步分解成逻辑门电路,容易产生冒险。参考文献[5]则通过使用带复位端的D触发器及延迟单元来完成接口电路的设计,其接口中的延迟单元要求是FPGA内部的标准单元,而在常规FPGA中不包含此标准单元。

本文基于常规FPGA中大量的LUT结构,通过Quartus软件的逻辑锁定[6]技术将设计的C单元锁定在一定区域,保证了C单元的无冒险性,同时建立标准C单元库。使用C单元实现了GALS系统所需要的延迟电路、接口电路、时钟暂停[7]电路。利用状态机设计的计数器作为同步模块,基于四相单轨握手协议[8],完成两同步模块的异步互联。

1 点对点GALS系统

GALS系统从局部来看各同步模块独立设计;从全局来看,各模块彼此时钟独立,以各自工作频率独立运行,其互联通过设计的异步接口完成。且各同步模块时钟具有可暂停性,保证不需要数据处理时时钟不运行的效果,具有低功耗的特点。点对点GALS系统是采用单点同步模块对应单点通信的方式实现的异步电路。

整个结构由三部分组成:局部同步区域、握手区域、时钟可暂停区域。在同步区域完成的是同步模块的设计,其同步模块可更新复用;握手区域通过同步、异步互换接口及锁存器完成,由两边同步模块发送的WR、RD信号来触发握手区域进行握手;时钟可暂停区域由内部产生的时钟及握手区域输出的暂停信号(STRETCH)进行时钟的调整,确保系统的低功耗运行。其组成框图如图1所示。

o4YBAGCuHbSAKk-XAAB8h74P-fk453.png

在点对点GALS系统中,设计的重点是接口电路及局部时钟可暂停模块,由于不需要引入外部时钟,所以在全局复位后,时钟可暂停模块就应当产生时钟信号,时钟信号的频率根据各同步模块需求情况设定。在同步模块的设计中,其既要有数据接收模块和数据处理模块,又要产生上级的接收信号(RD)和下级的数据处理完毕信号(WR),以确保电路接连不断地工作。

2 状态保持单元的设计

异步电路中为了避免冒险现象的发生,常需要设计一些适合异步电路的状态保持单元,通常难于设计的就是无冒险的Muller C单元,且其为异步电路的重要组成部分。Muller C标准单元(c_std)的基本功能为:当输入信号A、B同时为“1”时,输出S为“1”;当输入信号A、B同时为“0”时,输出S为“0”;

当输入信号A、B处于其他状态时,输出保持原信号。从而当输出信号为“1”时,就能指示输入信号都为“1”。输出为“0”的情况同理。

由此可以看出其信号的跳变能够指示或确认其他信号的跳变情况,这样就能够确保电路避免冒险现象的发生。而通过逻辑门设计的C单元,常因内部连线延迟以及门延迟的特性,使得其映射到FPGA内部时会出现冒险现象,因而只有通过建立查找表结构的方式设计C单元,才可使得映射到常规FPGA时避免冒险发生。

在图1的GALS系统中使用到的4种标准的C单元,采用Verilog HDL语言编写,通过编译生成.QSF文件,利用Logic-Lock技术生成网表文件,通过这三个文件即可建立常规FPGA可调用的无冒险C单元库。图2描述的是4种C单元库文件符号及c_std相应的Verilog描述。在C单元库中的c_clr_l单元具有置0功能,而c_clr_h具有置1功能。表1列出4种C单元的lut_mask值。

o4YBAGCuHaCAPHtlAACvP32KJUI736.png

参考文献[9]使用的是门电路描述的C单元,在EDA软件对其进行综合编译时,容易受到其余同步电路的影响而产生冒险。本文对基于LUT实现的C单元,需要将输出反馈回输入的一端,同时使用Quartus软件的逻辑锁定(Logic-Lock)方式,将C单元综合、布局于一定的区域内,可以避免在与其余电路综合时发生冒险,具有较高实用价值。

3 接口电路及时钟暂停电路的实现

四相单轨握手协议,广泛应用于时序假设中,通常可以使电路获得最好的性能。而在控制电路设计中,最简单的四相单轨握手电路通过一个C门和一个非门组成,即异步电路中常用的Muller流水线[10]。本文采用手工设计方式实现的握手接口电路就是基于Muller流水线的思想,如图3所示。

图3(a)实现的wport接口电路,在全局CLEAR信号为高电平时对全局电路进行复位,其输出REQ、STRETCH信号全为低电平。局部同步模块产生一个WR信号(即同步模块处理完毕)时,通过延迟取反相“与”后输出一个脉冲。当ACK信号为低电平时,左边的C单元输出为“1”,即其暂停信号(STRETCH)置为“1”,停止同步模块时钟运行,此时由于右边的C单元的输入都为“1”,则发出请求信号,完成一次请求;当ACK信号为高电平时,由于右边C单元的置0位为“1”,从而停止请求,实现了一次四相单轨通信。

图3(b)中的rport接口电路,在同步模块发出处理完成信号时,其左边的C单元置1位输入是由RD产生的脉冲信号,从而其输出STRETCH为“1”,即要求同步模块时钟停止,在其请求信号REQ为“1”时,ACK输出为“1”;当REQ为低电位时,由于左边C单元输出为低电位,则ACK输出为“0”,实现了一次四相单轨通信。

o4YBAGCuHZOABNWDAACeziWEAyU772.png

结合两接口电路的四相单轨通信则可实现GALS系统的模块互联。对接口电路延迟单元的设计则使用单个标准C单元c_std实现,通过时序约束其延迟量可达到5.125 ns,对整个电路的设计具有较好的延迟效果,且无冒险现象。

在GALS系统中,有些同步模块可能没有自带的时钟信号,常需要系统内部产生特定频率范围的时钟信号,所以可暂停时钟的设计是必须的。实现方法是基于一个C单元及一个延迟单元,以及可随意调节的分频器组成,通过C单元设计的时钟电路可产生频率高的时钟。当CLEAR信号置高时,对电路清0,经过延迟取反后,C单元的输入为1,则输出即为1,以此类推,则产生时钟信号。

局部时钟模块的实现如图4所示。通过时序仿真,CLK在未加分频器的情况下可高达500 MHz以上。由于超过目前FPGA的最高时钟,从而其需要通过分频来达到设计要求。此时钟电路根据同步模块需求,频率可进行任意调节,具有较大实用性。

o4YBAGCuHYOADfWYAAAy2xPBv6c471.png

4 GALS系统实现及测试

为了测试由FPGA实现的四相单轨握手协议电路的性能,通过状态机设计无冒险的计数器作为GALS系统两端的同步电路,采用Altera公司CycloneⅡEP2C35F6-

72C6器件作为测试器件,通过逻辑锁定技术将标准C单元模块添加进设计中,通过建立wport、rport的父区域(Parent Region)锁定模块,将子区域(Child Region)锁定的C单元添加进父区域锁定模块,保证了各自时序的独立性,确保了电路功能的实现。其时序仿真结果如图5所示。

pIYBAGCuHW2AEUeRAAIAJ-_hj2M070.png

对结果进行分析:当全局复位信号为高电平时,对全局电路进行复位。整个握手实现过程通过同步模块的2个计数器在进位时,输出各自的进位信号作为wr和rd信号,当二者同时为高电平时发生握手,且作为接口电路rport、wport的输入信号。当req上升沿到来时,ack响应req信号变为高;

当req下降沿到来时,ack拉低。通过ack的上升沿触发锁存器传递数据,完成数据的通信,其数据主要是由计数器产生的0、1信号。而对于时钟暂停模块,当str1、str2信号为高电平时分别对两个模块的时钟进行暂停,从仿真图中可见,当两者为高电平时,将时钟置为0,保证了时钟的可暂停。

整个系统通过设计的C单元库,实现了GALS中的接口模块、时钟暂停模块,达到GALS系统同步模块间异步互联的效果,且使用的是四相单轨握手协议,具有较好的握手性能。使用Quartus软件的逻辑锁定技术,对子区域(C单元)、父区域(接口电路)进行锁定,确保了C单元在与整个电路综合中不出现冒险问题,确保了电路的可行性。对在常规FPGA中实现异步电路带来新的开发特性,特别对SoC的异步互联具有较好的实用价值。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1624

    文章

    21597

    浏览量

    601015
  • soc
    soc
    +关注

    关注

    38

    文章

    4077

    浏览量

    217682
  • 同步电路
    +关注

    关注

    1

    文章

    60

    浏览量

    13270
  • CLK
    CLK
    +关注

    关注

    0

    文章

    127

    浏览量

    17093
收藏 人收藏

    评论

    相关推荐

    简述TCP协议的三次握手机制

    机制是建立一个可靠的连接的关键步骤。以下是对TCP协议三次握手机制的介绍: 概述 TCP协议的三次握手机制是一种用于在两个通信实体之间建立连接的过程。这个过程确保了数据的可靠传输和接收
    的头像 发表于 08-16 10:57 453次阅读

    FPGA同步复位和异步复位

    FPGA(Field-Programmable Gate Array,现场可编程门阵列)中的复位操作是设计过程中不可或缺的一环,它负责将电路恢复到初始状态,以确保系统的正确启动和稳定运行。在FPGA设计中,复位方式主要分为同步
    的头像 发表于 07-17 11:12 1174次阅读

    FPGA异步信号处理方法

    FPGA(现场可编程门阵列)在处理异步信号时,需要特别关注信号的同步化、稳定性以及潜在的亚稳态问题。由于异步信号可能来自不同的时钟域或外部设备,其到达时间和频率可能不受
    的头像 发表于 07-17 11:10 958次阅读

    如何实现PTP协议的精准同步时钟?

    尊敬的技术大牛们,你们好! 现有一项目需要用到贵公司的STM32F4系列产品,由于业务场景对时钟同步精度要求很高。所以需寻求你们的技术支撑,提供关于STM32F4系列的PTP协议或IEEE1588
    发表于 03-26 07:57

    说说TCP三次握手的过程?为什么是三次而不是两次、次?

    三次而不是两次或次。 首先,我们需要了解TCP是一种面向连接的协议。在进行数据传输之前,发送端和接收端需要建立一个可靠的连接。TCP三次握手就是用来建立这个连接的过程。 三次握手的过
    的头像 发表于 02-04 11:03 548次阅读

    【芯片设计】握手协议的介绍与时序说明

    最早接触到握手协议是在校期间学习PCIe的AXI总线时,至今日虽然PCIe的结构已经忘得一干二净,但握手协议经过不断的使用还算掌握的不错。
    的头像 发表于 12-11 14:11 2702次阅读
    【芯片设计】<b class='flag-5'>握手</b><b class='flag-5'>协议</b>的介绍与时序说明

    异步电机与同步电机的区别和应用

    电机的转子是由绕组组成的铝棒,它通过感应电磁力的作用与旋转的磁场相互作用而转动。异步电机的转子速度略低于旋转磁场的速度,这也是它的名字的由来。同步电机的转子和旋转磁场的速度是同步的,通常是通过提供初始励磁电流来
    的头像 发表于 12-09 15:55 2414次阅读

    同步整流和异步整流的区别

    同步整流和异步整流的区别  同步整流和异步整流是电力系统中常用的两种整流方式,它们有着不同的工作原理和特点。本文将详细介绍同步整流和
    的头像 发表于 12-08 10:06 2069次阅读

    异步电路和同步电路区别在哪?

    部分是独立运行的,没有明确定义的时钟信号来同步它们的操作。相反,每个部分在满足特定的条件下单独启动和运行,通过相互之间的通信来完成所需的协作。异步电路通常采用握手协议来确保数据的正确传
    的头像 发表于 12-07 10:53 3181次阅读

    握手型接口的同步FIFO实现

    按照正常的思路,在前文完成前向时序优化和后向时序优化后,后面紧跟的应该是双向时序优化策略了,不过不急,需要先实现一下握手同步FIFO。
    的头像 发表于 12-04 14:03 631次阅读
    <b class='flag-5'>握手</b>型接口的<b class='flag-5'>同步</b>FIFO<b class='flag-5'>实现</b>

    Valid-Ready握手协议的介绍与时序说明

    "Valid-Ready" 握手协议是一种常用于数字电路中的接口协议,用于控制数据的传输和处理。
    的头像 发表于 12-04 10:37 1364次阅读
    Valid-Ready<b class='flag-5'>握手</b><b class='flag-5'>协议</b>的介绍与时序说明

    同步异步通信协议介绍

    同步异步传输归结为时钟是外部的(同步)还是内部的(异步)。异步协议的一些例子包括UART、US
    发表于 11-27 15:39 1515次阅读
    <b class='flag-5'>同步</b>和<b class='flag-5'>异步</b>通信<b class='flag-5'>协议</b>介绍

    同步整流和异步整流介绍

    一、同步整流 同步整流是采用Rdson较低功率MOS,取代了异步整流中续流二极管以降低续流损耗的一种类型。由于功率MOS属于电压型器件。用功率MOS做整流器时,要求栅极电压必须与被整流电压的相位保持
    的头像 发表于 11-20 16:52 2339次阅读
    <b class='flag-5'>同步</b>整流和<b class='flag-5'>异步</b>整流介绍

    什么是同步逻辑和异步逻辑?同步电路与异步电路有何区别?

    什么是同步逻辑和异步逻辑?同步电路与异步电路有何区别? 同步逻辑和异步逻辑是计算机科学中的两种不
    的头像 发表于 11-17 14:16 2165次阅读

    信号协议同步传输和异步传输有什么区别

    在信号协议中,有非常多的种类,如UART,I2C,SPI,PCIe等等,它们有自己的一套制定规则,但是在协议制定中,一定需要在同步异步中选择其中一项作为传输规则。 所以这其中的
    的头像 发表于 11-07 14:50 1161次阅读
    信号<b class='flag-5'>协议</b>中<b class='flag-5'>同步</b>传输和<b class='flag-5'>异步</b>传输有什么区别