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
    +关注

    关注

    1629

    文章

    21729

    浏览量

    603047
  • soc
    soc
    +关注

    关注

    38

    文章

    4163

    浏览量

    218174
  • 同步电路
    +关注

    关注

    1

    文章

    60

    浏览量

    13310
  • CLK
    CLK
    +关注

    关注

    0

    文章

    127

    浏览量

    17158
收藏 人收藏

    评论

    相关推荐

    FPGA复位的8种技巧

    FPGA 设计中,复位起到的是同步信号的作用,能够将所有的存储元件设置成已知状态。在数字电路设计中,设计人员一般把全局复位作为一个外部引脚来实现,在加电的时候初始化设计。
    的头像 发表于 11-16 10:18 313次阅读
    <b class='flag-5'>FPGA</b>复位的8种技巧

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

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

    同步降压和异步降压有什么区别

    同步降压和异步降压是两种在电源转换中常用的威廉希尔官方网站 ,它们在实现方式、控制方法、效率、成本及应用领域等方面存在显著差异。以下是对这两种威廉希尔官方网站 的详细比较和分析。
    的头像 发表于 08-14 10:08 1954次阅读

    怎么判断同步清零和异步清零

    在数字电路设计中,清零操作是一种常见的操作,用于将寄存器或计数器的值清零。清零操作可以分为同步清零和异步清零两种方式,它们在电路设计中有着不同的应用场景和特点。 同步清零和异步清零的概
    的头像 发表于 07-23 11:11 3441次阅读

    异步置零和同步置零的区别在哪里

    异步置零和同步置零是数字电路设计中两种不同的置零方法。它们在实现方式、性能和应用场景上有所不同。 实现方式: 异步置零:
    的头像 发表于 07-23 11:09 2199次阅读

    异步线路和同步线路怎么区分

    在通信领域,异步线路和同步线路是两种基本的数据传输方式。它们在数据传输的时序、同步机制、传输效率等方面存在显著差异。 1. 异步线路(Asynchronous Communicatio
    的头像 发表于 07-23 09:14 593次阅读

    FPGA同步复位和异步复位

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

    FPGA异步信号处理方法

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

    FPGA开发过程中配置全局时钟需要注意哪些问题

    FPGA开发过程中,配置全局时钟是一个至关重要的步骤,它直接影响到整个系统的时序和性能。以下是配置全局时钟时需要注意的一些关键问题: 时钟抖动和延迟 :全局时钟资源的设计目标是
    发表于 04-28 09:43

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

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

    局部变量超出堆栈范围,想把占用内存多的变量申请在全局如何做?

    目前局部变量超出堆栈范围,现在想把占用内存多的变量申请在全局,如何做
    发表于 03-20 08:03

    同步置数,异步置数,同步清零,异步清零的概念

    同步置数、异步置数、同步清零和异步清零是数字电路设计中常用的概念。 一、同步置数 同步置数是指在
    的头像 发表于 02-22 13:48 1.7w次阅读

    同步级联和异步级联的区别 异步级联和同步级联分别要注意什么

    指与同步级联相对应的,异步级联是一种不同的级联方式。在异步级联中,级联模块之间不需要等待前一个模块完全执行完毕才能开始执行下一个模块。相反,每个模块都可以独立运行,并在完成之后通知下一个模块开始执行
    的头像 发表于 02-22 13:40 1825次阅读

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

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

    同步降压和异步降压的区别与联系

    同步降压和异步降压是两种不同的电源节能降压威廉希尔官方网站 。它们在降低电压的目标方面有一些相似之处,但它们在实现方式、控制方法和应用领域等方面存在一定的差异。下面将详细介绍同步降压和
    的头像 发表于 12-25 15:13 5417次阅读