基于ARM的IEEE802.11bMAC层协议IP核设计
码产生器,可以产生高效的代码。C advanced支持几乎所有的SDL概念,对SDL设计的约束较少。C micro可以产生性能更优越、占用存储空间更小的代码,代价是对SDL设计的约束较多,例如不支持使能条件、连续信号、过程的继承等。
本文链接地址:http://www.oyaya.net/fanwen/view/176764.html
(2)设计优化问题。在进行系统设计时,应注意的设计要点有:当输出信号时,应带上接收进程的PID,这样可以减少对信号进行路由的开销;信号应尽量少带占用大量存储空间的参数,因为在信号传递时同时复制信号的参数,占用大量存储空间的参数将占用过多存储空间并引起附加延时;两个状态之间的传输操作不宜过多,否则会带来较大延时(可以用实时仿真确定影响时延的关键路径并进行优化);如果系统中有比较复杂的模块,对时延又有严格要求,可以用C/C++或汇汇编单独编写,也可用硬件完成,如图1的WEP算法模块。
(3)与RTOS的集成问题。用户可以不使用RTOS,而使用SDT提供的缺省内核程序,也可以自己编写所需的调度算法、内存管理、中断处理等。SDT工具直接支持的RTOS有Solaris(Posix 4)、Win32、VxWorks和OSE delta。SDT提供三种与RTOS的集成方式,即松集成、线程集成和紧集成。松集成把整个系统映射为OS的一个任务,使用SDT提供的标准内核进行调度,每次进行一个完整的传输。因此松集成调度的最大延时是SDL设计中状态之间传输的最长时间。紧集成把每个进程映射为一个OS的任务,可以使用OS的调度算法,给不同的任务以不同的优先级执行,因而性能好于松集成。线程集成则是两者的折衷。
(4)环境函数的编写。环境函数主要是完成四个函数的编写。XInitEnv():主要用于完成系统的初始化操作。XInEnv():主
要用于接收来自硬件或RTOS的信号并转换成SDL系统所需要的信号。调度器每隔一段时间轮询一次xInEnv()函数,检查是否有信号输入。如果发现有信号输入则发送适当信号给SDL系统。XInEnv()函数中不能使用阻塞函数,如getchar()等。阻塞函数会妨碍调度器处理SDL系统。XOutEnv():主要用于接收来自SDL系统的信号并转换成对RTOS的信号或对硬件的操作。当SDL系统有信号输出时,则调用xOutEnv()函数,根据用户编写的代码产生相应的物理信号或硬件操作。XCloseEnv():用来完成关闭环境的操作。
《基于ARM的IEEE802.11bMAC层协议IP核设计(第3页)》