引言
对射频前端设备的需求量近年来大幅增加,对于设备制造商而言,控制所有这些设备将是非常巨大的挑战。MIPI联盟为RFFE制定标准,提供一套用以将收发器、局域网、小灵通、天线开关、直流电转换、滤波器、传感器等射频前端设备连接起来的总线接口,这样就可以用射频芯片来方便地控制这些射频前端设备[1]。
由于用软件实现总线的工作速度难以满足高速应用的需求,并且为了便于芯片设计公司能够直接将该总线进行流片,所以本文选择硬件方式,即采用Verilog硬件描述语言来实现。
1 RFFE介绍
1.1 RFFE标准由来
设备制造商一直通过在射频前端设备中增加新组件来提高设备的性能。大部分这种新组件都代表了一种新的技术,虽说这些组件能够提供很多功能,但会增加射频前端的组件数。并且,这些组件需要专用的并行信号线路去控制。例如,一个功率放大器(PA)模块,就可能由多个PA与信号链组成,因此就会增加控制能力。
另外,为了纠正由模拟分量所引起的缺陷,现在采用将闭环与实时调频结合起来的方法。闭环发射机与天线调谐器便是个很好的例子,它们都能完全将新组件和新功能引入到射频前端中来。
为了控制复杂的射频前端设备和管理复杂的信号链路将会需要额外的智慧电路,这种越来越复杂的趋势将会变得更加明显。如图1所示,RFFE控制总线可以用来应对这些挑战。
图1 RFFE总线结构图
MIPI联盟的RFFE标准专门用来为射频前端设备提供信道,以满足严格的时序要求,同时满足移动设备应用程序的要求。MIPI RFFE标准的主要目标之一便是为各个设备生产商的设备提供兼容性,提高它们协同工作的能力。现在市面上有多种射频前端电路,系统工程师却很难找到一种通用的控制平台去控制它们。而对于设备供应商而言,能够支持所有控制方案意味着,要么产生各种各样的设备,要么就提供一种复杂的多接口产品。
RFFE标准的另一个目标便是减小主从设备间封装引脚的数量,这样就能在封装级上节省昂贵的I/O端口,又节省系统总线在PCB板上的布线面积。由于需求与控制的复杂性,射频前端组件很可能会发生变化,所以,RFFE内也提供一些可选择的特性,而这些特性都允许开发更紧凑的硅组件,从仅支持一些简单命令与功能的设备到更复杂、高效的命令序列。该标准也支持低功耗,这也是RFFE标准发展中的另一个重要目标。
RFFE标准的设计是为了取代现行的控制解决方案,如SPI接口(一种三线总线),它虽说信号结构相似,但是由于电报结构多种多样,导致该总线缺乏统一的标准。另外还有I2C总线,该总线在敏感无线应用中从未被考虑过,因为它缺少一些基本的需求特性。
1.2 RFFE标准介绍
MIPI RFFE标准在RFFE设备间定义了一种接口,在单个RFFE总线上可以挂载一个主机,同时最多挂载15个从机。该总线使用两条信号线,一条是由主机控制的时钟信号线(SCLK),另一条是单/双向数据线(SDATA);此外,还有一条输入/输出的电源/参考电压线(VIO)。SCLK与SDATA信号线是并行地连在RFFE总线上的[2]。主设备驱动着SCLK与SDATA,从设备无法驱动SCLK,但却是可读可写。每一个物理从机都必须具有1个SCLK输入引脚、1个SDATA双向输入/输出引脚、1个VIO引脚,用来确保与主设备间的信号同步。图2展示了一个典型的RFFE系统布局。注意,VIO可以从外部提供,也可以由主设备提供。
图2 RFFE系统描述
SCLK的频率是32~26 MHz,在低功耗状态下,SCLK不翻转,并且被保持在逻辑0状态。
为了提高接口的效率,人们又对RFFE接口标准作了一些规范,以使设计者可以使用短序列来满足射频前端设备的需求,并且允许从设备在正常的接口时钟速率一半时发生反馈。
RFFE支持在单总线上至多挂载15个设备,这样做可以防止接口冲突,并提供物理隔离。主设备可以至少控制一条总线,一条总线上最多挂载15个从设备,因此,当主设备控制多条RFFE总线时,可以想象射频前端设备的总数量其实是没有限制的。
在RFFE中,协议信息被称之为命令序列,该序列由三部分组成:开始序列(SSC)、命令帧序列、总线停止序列。命令帧序列后面紧跟着的是一些数据帧,而停止序列用来表示结束命令序列。
RFFE定义了很多种类的命令序列,以来对总线上的从设备进行读/写操作,而读/写命令的主要区别便是存储地址与数据的寄存器大小不同。一个命令序列中载荷的数据的大小从7位到16字节,不同命令种类可用来设定的地址的存储空间从1字节变化到64 KB,并且一个从设备可以拥有从1~64 KB的任意空间。图3显示了在RFFE中不同的命令序列所显示的从设备地址变化范围。
图3 RFFE从设备地址空间
图4显示了寄存器写指令,该指令用来将8位的数据写进由A4~A0所标记的寄存器中,而从设备的地址由SA3~SA0所确定。RFFE中数据域被假定为字节的整数倍,并且,数据帧长度为9位,由8位数据外加一个奇偶校验位组成。地址帧也是9位的长度,包括8位地址信息和1位奇偶校验位。RFFE命令帧总是由12位信息和一个奇偶校验位组成。注意到命令序列中的每一个帧都携带着有一个奇偶位。由于命令序列的不同,一条信息中所包含的地址与数据帧也会发生变化[3]。
RFFE接口必须支持1.2 V或者1.8 V的操作电压。为了将射频调制解调器(EMI)对RFFE设备的干扰降到最低,所有的信号都必须按照标准中的规定,具有一定的信号回转速率,并且所有输入设定一个最小的滞后作用。在操作冲突期间,RFFE主设备也会通过控制SCLK和降低VIO来关闭接口,用来中止所有的RFFE通信。
RFFE从设备支持几种操作模式,包括开始、激活、关闭和可选择的低功耗模式。开始模式定义了一组特殊行为,可以用来在对任何设备进行初始化工作;激活模式是在RFFE系统中一个普通模式;低功耗模式允许一个从设备将几个特定寄存器放进一个省电状态。除了这些模式之外,工程师还被允许为其设备定义个性化操作模式,但是规定个性化操作模式必须包含RFFE的模式与任务。
在RFFE中,群触发功能是一个必不可少的特性,它能够允许一个或多个设备达到定时精度要求,尤其是当使用普通信息产生总线拥塞风险时。触发器能够用来帮助解决瞬时带宽限制,并且在多目的地址下也能够同时达到定时精度。
图4 写寄存器指令
1.3 RFFE标准优点
RFFE标准大约在2年前问世,其目的是为射频前端提供一种一致控制方法,以便大幅减少所需的封装接脚和电路板布线。RFFE主要特性包括控制所有类型的RF前端,支持点对多点连接,多模/多频和多天线,每总线高达15个从设备,通用控制接口。
为了适应不同的频宽要求,实体接口的速度是弹性的,且非常快速,它缩短了上市时程,并加快了客户的设计脚步。
2 RFFE接口的ASIC实现
2.1 结构说明
本文设计的RFFE总线包括两部分,master模块与slave模块。两个模块中均包括了寄存器的读/写、模块启动、中断处理、状态跳转以及异步时钟域的处理等功能。
其中master模块将输入的设备地址sel、寄存器地址addr、发送数据wdata等信息存入后启动master模块,然后输出符合RFFE总线时序的时钟、数据信号线rf_clk_o、rf_sda_o。而对于slave模块则进行相反的操作,即将符合总线时序要求的输入时钟、数据信号rf_clk_i、rf_sda_i输入到slave模块中,最终得到所需要的寄存器地址addr,数据信息date。
2.2 主机设计
master将输入数据串行发送,数据的计算过程中涉及4种状态转换,包括省电、开始、激活、关闭四个状态,状态转移图如图5所示。
整个设备处于IDLE状态,当检测到对主设备写入数据后,便发出触发信号rf_en_i使系统进入START状态,主设备在START状态然后再触发延时单元,当sen_dly[16]为高时,即进入ACTIVE状态,当数据被串行发送完后,即产生rf_int信号,促使进入SHUT_DOWN状态,该状态发出一个时钟周期后便产生sclk_int使系统又进入IDLE状态。由这几个状态间的跳转,既保证了master的功耗最低,又使产生的时钟、数据信号线间符合RFFE时序的要求。
输出时钟、数据是在START状态中产生的,它将输入的数据串行发送,高位在前,低位在后,并且中间加入奇偶校验位。并且保证与输出时钟同步,每当输出时钟变化一次时输出数据即也变化一次,这样便符合时序要求。
2.3 从机设计
在从机中采用高频时钟对输入时钟进行采样,且在每一个时钟采样点采样输入的数据信息,最后将串行数据存储,除去奇偶校验位后即可得到所需的地址、数据信息。奇偶校验位还可以作为依据,判断发送数据中是否存在误码。
状态跳转图如图6所示。当slave不工作时则处于IDLE状态,即能够降低功耗;当slave设备接收到由master发来的启动命令后即设备即进入START状态;在START状态,设备要将master传输来的数据中最高位的4位分离出来,以判断master选中了哪个从设备,如果设备地址判断正确,即slave设备地址即为master想要选中的设备,则设备即进入ACTIVE状态,若设备地址判断错误,则设备从新返回到IDLE状态中,继续等待master发送来的启动命令;处于ACTIVE状态中的slave设备将接收的串行数据进行处理,得到正确的寄存器地址与数据,并且利用奇偶校验位对接收数据进行检查;当接收完数据后,设备即进入SHUT_DOWN状态;当slave设备检测到由master发来的结束命令后,即再次进入IDLE状态。
图5 master状态转移图图6 slave状态跳转图
3 仿真验证结果
3.1 测试平台
为了验证该总线的正确性,构建了testbench来测试总线的功能与时序[4]。在testbench中为了简便起见,只例化了一个主机,名为master,两个从机,分别为slave及slave_1。其中slave的设备地址为4,slave_1的设备地址为1,testbench中要求选中slave,而不选中slave_1。测试平台结构如图7所示。
图7 测试平台结构图
3.2 仿真波形分析
用Verilog硬件描述语言,按照RFFE总线规范,实现具有总线功能的代码;并通过verdi软件查找代码中的错误,通过VCS仿真,得到仿真波形,如图8所示。其中clk、rst_分别表示本地时钟及复位信号;sel表示设备地址,赋值为4,addr表示寄存器地址,此处赋值为a,wdata表示发送数据,此处赋值为1a;rf_sda_o、rf_clk_o分别表示输出数据、时钟信号线。由图可以看出,输入数据经过处理后,按照高位在前、低位在后的顺序发出,其中rf_sda_o与rf_clk_o的时序符合RFFE标准所规定的时序要求。
图9表示设备地址为4的设备1;其中clk、rst_分别为本地时钟、复位信号线,要求它与master的clk、rst_相同;rf_sda_i为输入数据信号线,rf_clk_i为输入时钟信号线,其实它就是master的rf_sda_o,rf_clk_o的输出数据、时钟信号;addr与data为输出地址与数据。slave接收rf_clk_i与rf_sda_i后,正确恢复出寄存器地址为a,数据为1a的信息。
图10为设备地址为1的slave设备。由图可知,当它接收到master设备发出的rf_sda_o及rf_clk_o信号后,最终addr,data无法得到相应的数据。
由图8~10可知该仿真结果的正确性,即用Verilog语言所设计的总线,符合协议的要求。
图8 master发数据时序图
图9 slave接收时序图
图10 slave_1接收时序图
结语
RFFE总线具有诸多优点,相信在不远的未来会被广泛应用于各种射频前端设备中。本文的创新点在于设计了一种简便的状态机以实现满足RFFE总线规范要求的IP设计,由仿真验证了该设计完全符合RFFE总线规范。此方法的实现过程中,简化了内部寄存器的使用,并且使输出时序紧凑,该IP设计可直接应用于芯片设计中。