微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 一种基于ARM的IEEE802.11MAC协议IP核设计

一种基于ARM的IEEE802.11MAC协议IP核设计

时间:07-03 来源:互联网 点击:

仿真,结果表明所开发的设计在逻辑上是正确可行的。

3 协议向ARM平台的移植

我们所使用的ARM硬件平台ARM anywhere II采用的是三星公司的ARM芯片S3C4510B。S3C4510B是采用ARM7TDMI核的高性价比RISC微控制器,特别适用于网络应用系统。 我们开发了一个软件模块PHY来模拟物理层收敛过程子层(PLCP),对于物理介质依赖子层(PMD)我们没有实现。这并不影响MAC协议的开发。LLC 层的数据通过PC串口发送到ARM平台来模拟,数据经过MAC处理后送到PLCP子层,然后由PLCP子层直接发送。数据发送通过ARM的通用I/O来实现,发送速率由S3C4510B的定时器来控制。 在将802.11MAC协议向ARM平台的移植方案中,有一部分代码的执行是依赖于ARM平台的。这部分代码的移植工作需要特别注意,包括以下几个方面: ①定时器。协议中要求的随机退避过程需要底层周期性的送slot来进行,这个周期性 slot需要用定时器来实现。协议中的网络分析矢量NAV需要用定时器来实现,以判断NAV的状态。协议中定义的几种帧间隔IFS(SIFS、DIFS、 PIFS、EIFS)也需要利用定时器来实现。 ②外部中断。802.11MAC协议中一个重要部分就是载波监听。当信道状态变化时(由忙到闲,由闲到忙)都要给负责监听信道状态的模块一个指示(CCA),指示当前的信道状态。这个过程可以由S3C4510B ARM芯片的外部中断来很好地实现。由于S3C4510B ARM芯片可以对中断检测方式进行配置,可以将中断检测方式配置为上升沿和下降沿均触发中断,这些就能很好地模块协议的中物理载波监听(CS)。 ③I/O。模拟PLCP子层的数据收发,一共用到8个I/O端口,一次发送8位。在发送数据时,还使用了一个I/O端口作为发送指示。这个I/O端口通过信道模拟器连接到其它节点的用来监听信道状态的外部中断引脚上。 ④UART。我们用UART来实现PC和ARM的通信。一些管理命令,例如扫描、入网、认证、关联、解认证、解关联,节点的配置信息例如MAC地址等都可以从串口来发送给ARM。另外,所有发送的数据都会通过串口传送给ARM进行发送,所有接收到的数据将通过串口回传给PC。 ⑤以太网控制器。以太网控制器在AP中是比较有用的。由于AP之间是通过有线的骨干网(backbone)来进行连接的,从而组成了分布式系统(DS),以太网控制器已经集成了IEEE802.11接口,就为实现这个有线的backbone提供了便利。

4 硬件仿真环境

图3中,IEEE802.11MAC协议和PLCP子层模拟模块都都在ARM平台上,串口通信程序运行在PC上。它和ARM的UART进行通信用于模拟 LLC层数据服务和上层的管理服务,同时它还可以显示节点的运行状态和当前的网络状态。 下面介绍一下我们使用的简易信道模拟器的原理。信道模拟器对应每个节点(ARM平台)有一套接口,其中有8个I/O用于数据传输。由于无线信道是开放式的,一个节点发送时其它节点都能收到,因此在信道模拟器中每个节点的8个I/O是两两相通的,这样就能保证一个节点发送时其它节点都能收到。另外,由于要模拟信道上的载波监听过程,我们用到了ARM上的外部中断用做载波监听位(CS),然后用一个I/O发送指示(TR)。这样,信道模拟器上要维持任何一个节点的CS位,都与其它节点的TR有一定的逻辑关系,例如,当一个节点发送时,将其TR置为0(0表示信道变忙,ARM引脚初始电平为高电平1),则这个 0应该立即能反映到其它节点的CS位上从而产生中断,其它节点都会知道信道变忙而开始从信道接收数据。同时,当节点发送完毕后将TR置为1,其它节点就会产生中断并且检测到CS位为1从而知道信道变闲,接收结束。 实际的信道模拟支持两个基本服务区(BSS)组成的分布式系统(DS),每个BBS内支持1个AP和2个普通节点。这内部的逻辑关系用可编程逻辑器件实现。

5 移植过程中的注意事项

PHY软件模块模拟PLCP子层,负责完成要求的载波监听和数据收发时的定时控制。这些功能都是采用中断方式实现的,因此要求代码执行速率要快。这里使用汇编语言开发来提供代码的执行效率。 为了获得较高的代码执行速率和快速的中断响应,要求所有协议代码和中断服务程序都在SDRAM中执行。这就涉及到在设计ARM的初始化代码时要正确配置相应的存储区控制寄存器,并且完成代码的搬移和地址的重映射。 图3 ARM的初始化代码包括: *定义入口点(entry point)。 *定义异常向量表,用来处理各种CPU异常,其中包括中断。 *配置SDRAM和Flash的地址范围、时序等参数,以使这些存储器能正常工作。 *代码搬移。程序代码一般应从Flash调入SDRAM中运行,以提高系统的运行速度。同时,系统及用户堆栈、运行数据也都放在SDRAM中。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top