我们讨论一个STD28的实现如何 STD28规定了PHS的空中接口,但是并没有规定具体实现. 我们讨论一个符合STD28的实现如何? 要么我们先假定这是一个PS的实现,这样也简单些. 我先来抛砖---- 我们知道,通常协议的要素有三:消息,状态机,定时器 这三者协议中已经规定,对实现来说,状态机是重点(个人意见),可以用函数跳转表,函数指针来实现. L1的实现有些麻烦,一般PS或CS会选用某个厂商的ASIC,L1在ASIC中会部分地以interrupt的方式实现,尤其是牵涉到sync的问题(sync burst应不在此列,主要指bit sync,LCCH的帧同步),当然,控制RF等等硬件部分也要由L1来做. L1的时序常常还有一个问题,由于检测RSSI的ADC常常是和检测PS电池电量的ADC共用,所以涉及到一个ADC的切换问题,换句话说,考虑到ADC转换的时间,必须在PS的TDMA帧的发送slot中完成电池电量的检测,在接收slot到来以前切换ADC并稳定,以便在接收slot中侦测RSSI. 综合来说,L1的设计涉及到ASIC中对BASEBAND 部分的IC设计,重点是interrupt的设计(?) 从协议的control sequence可以看到,L1和L2之间的msg交互是没有的(个人意见),类似地,CC只和L2打交道,RT在没有切换的时候只和L1打交道;但在实现中,L2从L1中得到空中来的信号,并将自己组好包的数据交给L1,这种交互常常通过共享内存来实现. 所以,L2的设计,重点除了状态机实现,消息解析,定时器异常处理(这个应该归入状态机实现中?),还有和L1的交互? 至于L3,相对简单一些,主要是状态机实现和异常处理? 另外,还要一个定时器的问题,一般地,timer是由一个task以定时器队列的形式实现. L2的timer是否可以和L3的timer放在同一队列中?因为这2者的定时要求还是L2高一些? 还有一个关键的问题,牵涉到OS,一般来说,PHS起源于日本,所以PS上的OS一般选用ITRON--据说这个OS在日本占有率第一. 我们假定一些简单些的实现,即操作系统的消息队列是不支持优先级的,是FIFO的. 另外,似乎这个ITRON是非抢占式的OS,换句话说,在编写协议的时候,要考虑到此次操作(或说函数)的粒度不能太大,否则有可能得不到及时的执行. 实际上,OS和timer也有关联--,一般,OS都提高timer的service,但是,我们需要自己去维护timer task,因为OS提高的TIMER服务在内核中,如果使用,可能影响OS的实时性. 暂时就这么多,大家多多指正啦. |