当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]一种基于ARM和FPGA的可重构MAC协议设计

摘要:为了在实际信道条件下研究Ad Hoc网络MAC协议,克服商业网卡芯片和理论仿真等带来的局限性,搭建了基于ARMFPGA相结合的硬件平台,设计与实现了基于CSMA/CA的可重构MAC协议,并进行了仿真测试,验证了该协议设计的正确性。对Ad Hoc网络MAC协议的实用化提供有益的参考。
关键词:媒体访问控制;带冲突避免的载波侦听多路访问;ARM;FPGA

0 引言
    基于CSMA/CA的MAC协议的优势在于其简单和健壮性,适用于分布式网络,每个节点无需维持和动态更新周围相邻节点的状态信息,可以独自决定何时接入信道,只要上层有数据需要传输,MAC层就会对信道进行竞争,因此该协议的应用也相当广泛。嵌入式技术的发展对MAC协议的实现也提供了很好的技术支撑。本文搭建了一种基于ARM和FPGA相结合的嵌入式开发平台,并在此基础上设计与实现了基于CSMA/CA的MAC协议。由于ARM和FPGA本身就是可重构器件,同时将FPGA中的一些协议参数由ARM来设置,通过修改ARM的代码就可以实现对FPGA中协议功能的调整,方便快捷,不再需要重新生成比特文件下载,有利于MAC协议可重构的实现。

1 协议功能描述
1.1 报文结构
    本设计实现的是基于CSMA/CA的MAC协议的基本访问模式,节点之间的通信只有数据帧(DATA)和应答确认帧(ACK)。图1给出了报文结构,其中ACK没有净数据部分。由于考虑的是一跳范围的无线通信,没有中继节点等,因此只有源节点号和目的节点号。


1.2 组网设计
    本文设计的MAC协议除了满足基本的的物理载波侦听和虚拟载波侦听相结合检测信道忙闲的机制外,还包括帧间间隔、随机退避、应答确认和重传机制。
    有数据要发送的节点会首先监听媒介,若为忙则继续等待,若空闲的时间超过或者等于DIFS或者EIFS则会进入退避进程。在执行退避进程过程中,节点将随机产生一个退避时间来设置退避定时器,同时继续监听媒介,若空闲时间达到了一个时隙时间,则退避定时器减去一个时隙时间,如果在期间媒介变为了忙,退避进程将挂起,直到媒介空闲时间再次达到DIFS或者EIFS后才会接着继续进行退避进程。当退避定时器变为0时,节点才允许开始发送数据,同时也会启动超时重传机制,如果在规定的时间内没有收到所希望的ACK,则会重传数据帧,当节点重传的次数超过了重传门限将会丢弃该数据帧,或者超过了数据帧最长允许的发送时间,也会丢弃该数据帧;当节点收到ACK时,就会开始准备下一次数据的发送。
    接收节点收到正确且是发送给本节点的数据帧将会立刻回复源节点ACK。如果节点没有收到正确的数据帧,则将使用EIFS;如果收到正确的数据帧,但是不是给本节点的,节点将解析出持续时间,更新NAV,将信道视为已被占用。
1.3 功能划分
    本设计充分利用ARM灵活便捷的优势,用来实现随机退避算法和协议参数的管理,如重传次数,帧间间隔的设置等。随机退避算法采用的是第i次退避就在2i个时隙中随机地选出一个值作为节点需要退避的值。协议参数的设置由ARM来完成,主要是考虑到FPGA不利于参数的修改,这样也可以增强协议的可重构性。而FPGA以其卓越的实时信号处理优点,用于管理MAC帧的收发控制等。

2 协议设计
    MAC层的工作状态主要是由物理载波侦听和虚拟载波侦听共同决定的(即:MAC_flag=CS_flag or NAV_flag),当两者都显示为空闲时,MAC层才会进入发送数据帧状态。同时该协议也需要时钟计数参与其中,IFS_time是每个节点在进入退避进程前需要等待的时间,实现帧间间隔的功能;Backoff_time是每个节点在退避进程中退避的时间;NAV_time是没有在通信的节点预留信道的时间。这三个时间也关系着整个协议所处的状态。图2给出了具体的实现流程图,具体实现过程步骤如下:

[!--empirenews.page--]
    (1)若MAC_flag为false时,表明信道空闲,此时进入(2);若MAC_flag为true,则说明现在信道已被占用,此时不管节点已经处于什么状态都会进入第七步,除了正在发送数据的节点,由于正在发送的节点是不可能监听信道的,而且也无法接收其他节点的数据,载波侦听机制在这种状态下是失效的,因此不会出现正在发送数据的节点从发送状态突然变为接收状态。
    (2)执行帧间间隔进程,递减IFS_time大小,直到为0就进入(3)。IFS_time的初始值为DIFS。
    (3)退避进程。退避时间的大小主要是由ARM提供,当节点经历了一个时隙时间,退避时隙数减1,但当节点没有完全经历一个时隙时间,退避时隙数就不会变化。退避进程结束后就会进入(4)。
    (4)判断发送类型,设计中发送类型Tx_tpye的初始值为1。若Tx_tpye为0,则为节点发送ACK,根据接收到的数据帧中的源/目的节点号以及序列号等组装回复发送节点ACK,并初始化IFS_time和Backoff_time以备节点发送数据帧使用,同时设置NAV_flag为true,更新NAV_time的值,继续虚拟载波侦听,避免出现发送ACK的节点会优先占用信道的情况;若Tx_tpye不为0,则表明节点可以开始发送数据帧,转入(5)。
    (5)发送数据帧前首先判断是否超过最大允许发送的时间,若超过了就丢弃该数据帧,将IFS_time设置为EIFS,Backof_time初始化,超时计时器停止;若没有超过最大允许发送时间,则节点正式发送数据帧,并启动单次超时计时,发送完毕后就等待ACK,此时进入(6)。
    (6)在等待ACK到来的同时判断是否超时单次允许发送的时间,若超过了,则重传次数递加;然后判断是否超过重传门限,如果超过了门限,则丢弃该数据帧;如果没有超过,则将IFS_time设置为EIFS,而且还需要ARM的随机退避算法根据重传次数重新给一个退避时隙数,同时修改数据帧中的重传位以便接收节点识别。
    (7)保存当前退避进程中的Backoff_time和刚刚结束的帧间间隔的大小IFS_time,接收MAC帧并解析其中相关的数据,为后续的组装ACK做准备,然后进入(8),同时将NAV_flag设置为true,保证MAC层能处理完数据。
    (8)校验接收到的MAC帧是否正确,若不正确,则将IFS_time设置为EIFS,NAV_flag设置为false,NAV_time设置为0,这样节点就进入执行帧间间隔进程。若校验正确,则进入(9)。
    (9)将FPGA解析出来的目的节点号与本节点的比较,判断是否是发送给本节点的。如果不是发送给本节点的,那么就再比较本节点现在的NAV_time值是否大于接收到的MAC帧内的NAV,若大于则本节点继续按照现有的NAV_time值执行下去;若小于接收到的MAC帧内的NAV,则使用MAC帧内的NAV来更新本节点的NAV_time值,然后以最新的NAV_time值递减下去直到为0,虚拟载波侦听显示空闲。但是在执行NAV_time递减过程中随时都有可能收到新MAC帧,而且也不是发送给本节点的,照样要执行本步骤,并不是等到NAV_time变为0后再更新。如果是发送给本节点的,则会进入(10)。
     (10)若节点接收到的是数据帧。即Rx_type为1,FPGA将接收到的数据帧上传ARM;同时将IFS_time更新为SIFS,Backoff_time设置为0,这样使得接收到数据帧到发送ACK之间的时间间隔为SIFS,并将Tx_tpye设置为0,NAV_flag变为false,进入(2),开始准备发送ACK。如果Rx_type为0,则节点接收到的是ACK,说明一次数据收发过程结束,节点将初始化相关参数,计时停止等,FPGA释放空间,表明该数据帧已发送成功。

3 仿真验证
    基于CSMA/CA的MAC协议的实现关键在于各个节点对各种情况的处理,因此对一个节点协议功能的仿真验证也能说明设计的正确性。本设计中FPGA部分的设计是重点,所以使用ModelSim进行仿真观察节点FPGA的处理过程。
3.1 信道竞争过程
    基于CSMA/CA的MAC协议中各个节点也不知道自身周围的节点情况,因此节点竞争信道时随时都可能检测到信道已被占用。图3给出了节点在退避过程中检测到物理载波侦听变为忙,立刻停止退避进程,将此时的退避时隙数挂起,即退避时隙数保留为31。待到信道重新空闲超过帧间间隔DIFS后,将以保留的退避时隙数继续进行退避进程,变为0后开始发送数据帧。在图中还可以看到节点收到正确的ACK后,更新NAV的过程。从仿真图的执行流程可以说明所设计的MAC协议满足载波侦听机制、帧间间隔、随机退避的功能要求。


3.2 数据传输过程
    从图4中可以观察到节点发送第一个数据帧后,超时计数器开始计时,但在规定时间内没有收到ACK,则重传数据帧,重传退避的时间是重新赋值的,并且帧间间隔不再是DIFS,而是EIFS;当节点接收到正确的ACK后,开始发送新的数据帧。说明了所设计的MAC协议能够实现确认重传机制。

4 结语
    在以ARMFPGA为主的硬件结构上,设计与实现了基于CSMA/CA的MAC协议,该协议具有载波侦听机制、随机退避、确认重传等功能。经过仿真测试,验证了所设计MAC协议的可行性。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

业内消息,近日日本软件银行集团(SoftBank Group)旗下安谋国际科技公司(Arm)计划研发人工智能(AI)芯片,先成立一个AI芯片部门,目标是明年春季建立AI芯片原型产品,然后将量产工作交由代工厂制造,预估20...

关键字: ARM AI芯片

2024 年5月13日 – 专注于推动行业创新的知名新品引入 (NPI) 代理商™贸泽电子 (Mouser Electronics) 是英特尔®产品的全球授权代理商。英特尔®宣布正式成立Altera™,作为其独立运营的全...

关键字: FPGA 人工智能 以太网

Arm CPU正在从根本上推动AI变革,并造福地球。Arm架构是未来AI计算的基石。​

关键字: ARM AI

近日,Arm推出了Arm® Ethos™-U85神经网络处理器(NPU)和Arm Corstone™-320物联网参考设计平台,旨在满足海量的数据处理和大规模计算,加速推进边缘AI的发展进程。

关键字: ARM

Bluespec支持加速器功能的RISC-V处理器将Achronix的FPGA转化为可编程SoC

关键字: RISC-V处理器 FPGA SoC

为了赶超云计算市场上的竞争对手,谷歌正试图通过定制的Arm服务器芯片降低云计算服务成本。

关键字: 谷歌 ARM 定制芯片

为无处不在的端侧设备插上AI的翅膀,AMD发布第二代Versal™ 自适应 SoC

关键字: AMD FPGA 自适应SoC AI 边缘计算

嵌入式开发作为一个融合了计算机软硬件和系统工程的综合性领域,其成功与否往往取决于三个核心要素的有效整合与协调。这三个要素分别是:硬件平台的选择与设计、软件开发及其优化、以及系统级的设计与集成。深入理解并熟练掌握这三个方面...

关键字: 嵌入式开发 ARM

Pmod接口可以说是数字电路板的连接革命。随着科技的飞速发展,数字电路板间的通信与连接技术也在不断创新和进步。Pmod接口,作为一种新兴的数字接口标准,正逐渐成为数字电路板间通信的桥梁,为电子设备的连接和通信带来了革命性...

关键字: pmod接口 FPGA 数字电路板

近日举办的GTC大会把人工智能/机器学习(AI/ML)领域中的算力比拼又带到了一个新的高度,这不只是说明了通用图形处理器(GPGPU)时代的来临,而是包括GPU、FPGA和NPU等一众数据处理加速器时代的来临,就像GPU...

关键字: FPGA AI 图形处理器
关闭
关闭