历史上的今天
返回首页

历史上的今天

今天是:2025年02月16日(星期日)

正在发生

2018年02月16日 | 基于ARM和FPGA的CSMA/CA的MAC协议设计与实现

2018-02-16 来源:eefocus

    引言


    基于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没有净数据部分。由于考虑的是一跳范围的无线通信,没有中继节点等,因此只有源节点号和目的节点号。

a.JPG

      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给出了具体的实现流程图,具体实现过程步骤如下:b.JPG

    (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协议满足载波侦听机制、帧间间隔、随机退避的功能要求。

c.JPG

    3.2 数据传输过程

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

    4 结语

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


推荐阅读

史海拾趣

E-T-A [E-T-A Circuit Breakers]公司的发展小趣事

进入21世纪后,E-T-A公司开始关注智能电路保护技术的研发。公司投入大量资源进行技术创新,成功推出了多款智能电路保护产品。这些产品不仅具有更高的安全性和可靠性,还能实现远程监控和控制功能,为客户提供更加便捷和高效的服务。

Fuji Teminal Industry Co Ltd公司的发展小趣事

进入1950年代,E-T-A公司开始关注固态远程电源控制器(SSRPCs)的研发。这一创新技术为电气系统提供了更加可靠和高效的电源管理方案。公司投入大量资源进行研发,成功推出了多款固态远程电源控制器产品,这些产品在市场上获得了广泛认可,并为公司带来了可观的收益。

Fractus公司的发展小趣事

1999年,Carles Puente博士和Ruben Bonet联合创立了Fractus公司,致力于将几何结构天线技术商业化。公司成立之初便取得了重大突破,获得了全球首个分形天线和多重分形天线专利。这些专利不仅展示了Fractus在天线设计领域的领先地位,也为公司后续的发展奠定了坚实的技术基础。

DUCATI公司的发展小趣事

面对不断变化的市场需求和技术挑战,Fractus始终保持着对研发的重视和投入。公司拥有一支经验丰富的研发团队,致力于在天线技术领域进行持续的创新和探索。近年来,Fractus在微型化、多波段和智能天线技术方面取得了显著进展,并推出了多款具有自主知识产权的创新产品。展望未来,Fractus将继续秉承创新精神,推动天线技术的不断发展,为电子行业的进步贡献更多力量。

D3公司的发展小趣事

D3公司非常重视企业文化的建设。公司倡导“以人为本、诚信经营”的企业文化,为员工提供良好的工作环境和发展机会。同时,公司还注重培养员工的团队协作精神和创新意识。在这种企业文化的熏陶下,D3公司的员工们团结一心、锐意进取,共同为公司的发展贡献力量。这种强大的团队力量,是D3公司在电子行业中不断取得成功的关键因素之一。

请注意,以上故事均为虚构,旨在展示电子行业中一家公司可能的发展路径和策略。在实际应用中,企业需要根据自身情况和市场环境来制定合适的发展战略。

GE Sensing ( Amphenol Advanced Sensors )公司的发展小趣事

在环保意识日益增强的今天,D3公司积极响应国家号召,将绿色环保理念融入企业的生产经营中。公司采用环保材料和清洁能源进行生产,减少了对环境的污染。同时,公司还加强了对废弃物的处理和回收利用,实现了资源的循环利用。这种绿色环保的生产方式,不仅降低了企业的生产成本,也提高了企业的社会责任感。在消费者的心中,D3公司也因此树立了环保、负责的良好形象。

问答坊 | AI 解惑

楼宇对讲应注意

1、不使用视频线的可视对讲。不使用视频线,怎么传视频?厂家采用多芯屏蔽线,用其中的一芯来代替传统的视频电缆。我们知道,传输线的带宽、阻抗匹配对图像的影响是相当大的,采用这种屏蔽线的方式,在带宽和阻抗上都无法满足要求。即使主观上图像 ...…

查看全部问答>

ARM不能学了,要学就学....

感觉现在某些嵌入式开发板的功能和电脑主板的功能差不多了 什么接口都有,功能又全,我突然发现,我们不应该学嵌入式了,直接上电脑CPU.嵌入式芯片天天在提高主频,增强接口能力,最终嵌入式芯片的功能扩展会和电脑CPU接轨,那时候就直接用电脑CPU了.换 ...…

查看全部问答>

AVR单片机应用系统开发典型实例

我们用的AVR系统,上传相关教材,分享咯…

查看全部问答>

探秘中国IC设计公司发展迷局(三)

为了更好的分析中国IC设计公司的情况,有允许博主对一些相关的情况进行介绍,以便让关注此系列博文的网友都能为了让大家对中国的IC设计情况以及全球和中国的集成电路情况有一个理性认识。 下图摘自博主的《中国IC设计产业的现状与未来发展趋势》演 ...…

查看全部问答>

EVC与vc2005开发嵌入式的比较,大家发表意见

我用vc2005开发嵌入式, 开发好的系统在pda上运行时,觉得速度很慢,如果用evc开发的话,速度如何?大家发表自己的意见…

查看全部问答>

这两个数组有什么区别

在keil中 const char code tab1[]; const char far  tab2[]; 这两个数组有什么区别?什么时候加code什么时候加far?…

查看全部问答>

430 2232 ADC10采样问题

我四个模拟输入端,我选择四个通道,每个通道采用单通道多次转换,四个通道之间调用函数进行切换,我的问题是:我四个模拟输入端输入不一样,可我采样出来四个通道采样值却是一样的,很奇怪,有什么原因会产生这样的现象 …

查看全部问答>

如何使得LED灯闪烁呢

                                 我使用的IC是ST7FLITE05Y0M6的,我的样品中在PA3口那里外接了一个LED灯,LED灯以1.7s的周期闪烁,高电平时间为70ms ...…

查看全部问答>

MSP430 ADC采样悬空时采样有1.8V电压

到底是什么原因 请高人给我分析一下    不悬空可以采样别的电压  就是悬空有1.8V电压   void adinit(){   P6SEL|=BIT1;  ADC12CTL0|=SHT0_15+ADC12ON+MSC;  //设置采样周期不开内部参考电压  ADC12 ...…

查看全部问答>

动环监控系统

深圳市佳创达科技有限公司长沙分公司是国内同行业中的“机房维护大师”,佳创达主营业务有机房动力环境集中监控管理软件,大金空调远程监控板,海洛斯空调远程监控板,空调来电自动启动器等 .机房监控对动力环境 ,安防实时监控,集中监控管理各处分布的 ...…

查看全部问答>