专利名称:用于软件定义无线电平台的无线电控制板的利记博彩app
用于软件定义无线电平台的无线电控制板背景软件定义无线电(SDR)遵守完全可编程无线通信系统的承诺,有效地代替常规的 无线电技术,常规的无线电技术通常具有主要在固定的、自定义硬件电路中实现的最低通 信层。然而,在实践中实现SDR的承诺给开发人员带来了难题。许多当前的SDR平台基于 诸如现场可编程门阵列(FPGA)或者嵌入式数字信号处理器(DSP)之类的可编程硬件。这 样的硬件平台可以满足现代高速无线协议的处理和计时要求,但是,编程FPGA和专用DSP 是一项艰难的任务。例如,开发人员必须了解如何对每一特定的嵌入式体系结构编程,常常 没有编程和调试工具的丰富的开发环境的支持。另外,这样的专用硬件平台也可能是昂贵 的,例如,是基于诸如通用个人计算机(PC)之类的通用处理器(GPP)体系结构的SDR平台 的成本的至少几倍。另一方面,使用通用PC的SDR平台使开发人员能使用有很多完善的编程和调试工 具可用的熟悉的体系结构和环境。此外,当与使用专用的硬件的SDR平台相比时,使用通用 PC作为SDR平台的基础相对来说比较便宜。然而,使用通用PC的SDR平台相对于上文所讨 论的专用体系结构通常具有一些相反的缺点。例如,由于PC硬件和软件没有被专门设计用 于无线信号处理,因此,常规的基于PC的SDR平台只能实现有限的性能。例如,某些常规的 基于PC的SDR平台通常在8MHz通道上只实现几个Kbps的吞吐量,而诸如802. 11之类的 现代的高速无线协议却能在宽得多的20MHz通道上支持多个Mbps数据速率。如此,当在现 实世界的环境中使用标准操作系统和应用程序时,这些性能约束妨碍了开发人员使用基于 PC的SDR平台来实现最先进的无线协议的完全保真度。
发明内容
提供本发明内容以便以简化形式介绍将在以下的具体实施方式
中进一步描述的 一些概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征;也不旨 在用于确定或限制所要求保护的主题的范围。此处的某些实现提供了能够耦合到通用计算设备的系统总线的无线电控制板 (RCB)。RCB还可以包括允许使用消息交换协议以便在RCB和射频(RF)前端之间交换数据 的接口。
参考附图阐述具体实施方式
。在附图中,附图标记中最左边的数字标识该附图标 记首次出现的附图。在不同附图中使用同一附图标记指示相似或相同的项或特征。图1示出了根据此处所公开的某些实现的示例性体系结构。图2示出了根据某些实现的计算设备的示例性硬件和逻辑配置。图3示出了根据某些实现的示例性无线电控制板和RF前端的表示。图4示出了根据某些实现的示例性DMA存储器访问。图5示出了根据某些实现的示例性逻辑配置。
图6A示出了根据某些实现的算法优化表。图6B示出了根据某些实现的优化的PHY块。图6C示出了根据某些实现的优化的PHY块。图7A示出了根据某些实现的用于SMD(单指令多数据)处理的示例性存储器布局。图7B示出了根据某些实现的用于SMD处理的示例性过程的流程图。图7C示出了根据某些实现的示出了使用查找表的处理的示例性图。图7D示出了根据某些实现的使用查找表的示例性过程的流程图。图8A示出了根据某些实现的示例性同步先进先出(FIFO)缓冲器。图8B示出了根据某些实现的生产者的示例性过程的流程图。图8C示出了根据某些实现的消费者的示例性过程的流程图。图9A示出了根据某些实现的SDR的示例。图9B示出了用于排他地在一个或多个核上执行SDR处理的示例性过程。图10示出了根据某些实现的示例性MAC处理。图11示出了根据某些实现的示例性软件频谱分析仪。图12示出了根据某些实现的示例性RCB接口。图13示出了根据某些实现的示例性连接器。图14示出了根据某些实现的示例性数据消息。图15示出了根据某些实现的示例性控制消息。图16示出了根据某些实现的示例性接口和协议。图17示出了根据某些实现的示例性LVDS连接器布局。图18示出了根据某些实现的另一示例性LVDS连接器布局。
具体实施例方式概览此处所公开的各实现呈现了能够在通用计算设备(包括个人计算机(PC)体系结 构)上实现的完全可编程软件定义无线电(SDR)平台和系统。此处的SDR的各实现组合了 基于专用硬件的SDR平台的性能和保真度与通用处理器(GPP)SDR平台的可编程性和灵活 性。此处的SDR的各实现使用硬件和软件技术两者来解决为高速SDR平台使用通用计算设 备体系结构所面临的挑战。在此处的SDR的一些实现中,硬件组件包括用于射频(RF)接收 和发射的无线电前端,用于在无线电前端和计算设备上的存储器和处理器之间的高吞吐量 且低延迟数据传输的无线电控制板(RCB)。此外,此处的SDR的各实现还使用硬件和软件技术两者来解决为实现高速SDR而 使用通用计算设备体系结构所面临的挑战。各实现还涉及与用于发射和接收的射频(RF) 前端耦合的便宜的无线电控制板(RCB)。RCB通过高速且低延迟PCIe (外围组件互连快捷) 系统总线来桥接RF前端与计算设备的存储器。通过使用PCIe总线,RCB的某些实现可以 支持带有亚微秒延迟的16. 7Gbps吞吐量(例如,在PCIe x8模式下),一起满足了现代无线 协议的吞吐量和计时要求,而同时使用通用计算设备的处理器和存储器来执行数字信号处 理。此外,尽管此处的示例使用了 PCIe协议,但是,也可以可另选地使用其他高带宽协议,诸如,例如,HyperTransportTM 协议。RCB的体系结构可包括用于将RCB连接到RF前端的高速度接口,来实现RCB和RF 前端之间对应于RF信号的数据的通信。各实现提供了有效的消息传递协议,该协议可包括 使用用于分别在RCB和RF前端之间传递编码数据消息和控制消息/ACK的单独的专用数据 和控制通道。各实现还提供了用于在RCB和RF前端之间传递相应的状态和时钟信号的单 独的专用状态和时钟通道。在一些实现中,RCB和RF前端之间的接口是用于提供高速数据 传递的LVDS (低压差分信号)接口。此外,可以使用训练或调节模式来优化RCB和RF前端 之间的接口和协议定时,以便根据时钟信号的相位来调整定时数据访问。另外,此处的SDR的各实现利用多核处理器体系结构的特征来加速无线协议处理 并满足协议计时要求。例如,此处的各实现可以使用专用的CPU核,存储在大型低延迟高速 缓存中的查找表,以及SMD(单指令多数据)处理器扩展来在通用多核处理器上实现高效 物理层处理。此处所描述的某些示例性实现包括SDR,该SDR无缝地与商用802. lla/b/g网 络接口控制器(NIC)进行互操作,并在多个不同的调制中实现相当于商业的NIC的性能。此外,某些实现还涉及完全可编程的软件无线电平台和系统,该平台和系统在通 用计算设备上提供专用SDR体系结构的高性能,从而为开发人员解决了 SDR平台难题。通 过使用此处的SDR的各实现,开发人员可以使用通用计算设备,来实现并试验高速无线协 议堆栈,例如,IEEE 802. lla/b/g/n。例如,通过使用此处的各实现,开发人员能够在标准操 作系统上利用强大的编程和调试工具,在熟悉的编程环境中进行编程。此处在SDR上实现 的软件无线电可以像任何其他网络设备显现,用户能够在此处的软件无线电上运行未经修 改的应用程序而同时实现类似于商品硬件无线电装置的性能。另外,为符合物理层(PHY)处理要求,此处的SDR的各实现利用常见的可用通用处 理器中的多核体系结构的各种特征。此处的SDR的各实现还包括显式地支持流线型处理来 使得信号处理管道的组件能高效地横跨多个核的软件布局。例如,此处的各实现改变PHY 组件的常规实现,以广泛地利用查找表(LUT),从而以存储器代替计算,从而导致处理时间 缩短,性能提高。例如,此处的各实现通过利用在常规GPP上可用的大型、低延迟高速缓存 来存储以前计算出的LUT,大大地降低了 PHY处理的计算要求。另外,此处的SDR的各实 现还使用现有处理器中的SMD (单指令多数据)扩展来进一步加速PHY处理。此外,为满 足高速无线协议的实时要求,此处的SDR的各实现还提供新的内核服务——核专用(core dedication),该服务排他地为实时SDR任务分配处理器核。核专用可以被用来保证通用计 算设备上的SDR所需的计算资源和准确的时间控制。如此,此处的SDR的各实现能够在使 用通用计算设备时完全支持对诸如802. lla/b/g/n、CDMA、GSM、WiMax之类的高速无线电协 议以及各种其他无线电协议的完整的数字处理。此外,应该注意,尽管各种无线电协议是在 此处的示例中讨论的,但是,此处的各实现不仅限于任何特定的无线电协议。体系结构实现图1示出了根据此处的某些实现的SDR平台和系统100的示例性体系结构。SDR 平台和系统100包括具有多个核104的一个或多个多核处理器102。在所示出的实现中,多 核处理器102具有八个核104-1、…、104-8,但是,此处的其他实现不限于任何特定核数。 每一个核104都包括在处理过程中分别被相对应的核104-1、…104-8所使用的一个或多 个相对应的板载本地高速缓存106-1、…、106-8。另外,多核处理器102也可以包括一个或多个共享的高速缓存108和总线接口 110。合适的多核处理器的示例包括位于美国加利福 尼亚州圣克拉拉市的Intel公司推出的乂甜01^处理器,以及位于美国加利福尼亚州桑尼维 *,_Advanced Micro 06¥化68公司推出的^^ (^111处理器,虽然此处的各实现不仅限于 任何特定的多核处理器。在所示出的示例中,核中的两个,即核104-5和104-6执行SDR的 处理,而其余的核104-1到104-4以及104-7到104-8执行其他应用程序、操作系统等等的 处理,如下文另外描述的。此外,在ー些实现中,可以提供两个或更多个多核处理器102,并 且,跨两个或更多个多核处理器的核104可以用于308处理。多核处理器102通过总线接ロ 110与高吞吐量、低延迟总线112进行通信,并由此 与系统存储器114进行通信。如上文所提及的,总线112可以是?《6总线或具有高数据吞 吐量以及低延迟的其他合适的总线。此外,总线112还与无线电控制板(此8)116进行通信。 如下面进ー步地讨论的,无线电控制板116可以耦合到可互换的无线电前端》ド前端)118。 RF前端118是通过天线(图1中未示出)接收和/或发射无线电信号的硬件模块。在此处 的308体系结构的ー些实现中ぶド前端118表示数字和模拟域之间的明确定义的接ロ。例 如,在ー些实现中ぶド前端118可以包含模拟-数字(A/W和数字-模拟(D/A)转换器,以 及用于射频传输的必需的电路,如下面进ー步地讨论的。在接收过程中,RF前端118从天线获取模拟RF波形120,可能将波形下转换为较 低频率,然后,将模拟波形数字化为离散的数字样本122,然后再将数字样本122传输到RCB 116。在发射过程中,RF前端118从软件无线电堆栈1 (即,如下面所讨论的,生成数字样 本的软件)接受软件生成的数字样本122的同步流,以及合成相对应的模拟波形120,然后 再通过天线发射波形120。由于所有信号处理都是在多核处理器102上用软件完成的,因 此,对RF前端118的设计可以是相当ー般化。例如ぶド前端118可以利用对RCB 116的标 准接ロ在自包含的模块中实现。在相同频带上定义的多个无线技术可以使用相同的8ド前 端硬件118。此外,设计用于不同的频带的各种不同的8ド前端118还可以耦合到无线电控 制板116,以便在各种不同的频带上实现无线电通信。因此,此处的实现不限于任何特定频 率或无线技术。根据此处的某些实现,RCB 116是被优化用于建立用于在RF前端118和存储器 114之间传输高保真数字信号的高吞吐量、低延迟路径的?〔接ロ板。无线电前端118和多 核处理器102之间的接ロ以及连接必须实现足够高的吞吐量以传输高保真数字波形。例 如,为了支持802. 11协议的20MHz通道,接ロ应该维持至少1. ^ 3Ps。作为比较,常规接 □ JnUSB 2. 0 ( ^ 480Mbps)或千兆以太网(彡lGbps)不能符合此要求。因此,为实现所 需的系统吞吐量,此8 116的某些实现使用高速、低延迟总线112,如PCIe。利用6^bps的 最大吞吐量(例如』《6 x32)和亚微秒延迟,?《6能够轻松地支持多个吉比特数据速率, 用于通过非常宽的频带或通过许多肌1 )通道发送和接收无线信号。此外,?じ“接ロ在许 多常规通用计算设备中通常是常见的。RCB 116的作用是充当8ド前端118上的同步数据传输和处理器102上的异步处理 之间的桥梁。此8 116与大型板载存储器ー起实现各种缓冲器和队列,以便在同步和异步流 之间转换,并使此8 116和系统存储器114之间的爆发性传输平滑。大型板载存储器还允 许高速缓存预先计算出的波形,以便如当确认接收到传输时快速传输波形,从而为软件无 线电处理增加额外的灵活性。
最后,RCB 116为软件提供低延迟控制路径,以控制RF前端硬件118,并确保RF前 端118正确地与处理器102同步。例如,无线协议具有多个需要满足的实时期限。因此,不 仅处理吞吐量是关键要求,而且处理延迟也应该符合某些响应期限。例如,某些媒体访问控 制(MAC)协议也需要微秒的粒度级别的准确的时间控制,以确保某些动作在正好预先预定 的时间点发生。此处的各实现的RCB 116还提供这样的低延迟控制。下面进一步描述RCB 116的各实现的附加细节。示例性计算设备实现图2示出了可以被用来实现此处所描述的SDR实现(诸如上文参考图1所描述的 SDR平台和系统100)的计算设备200的示例性描绘。计算设备200包括一个或多个多核处 理器202、存储器204、一个或多个大容量存储设备或介质206、通信接口 208以及显示器及 通过系统总线212进行通信的其他输入/输出(I/O)设备210。存储器204和大容量存储 介质206是能够存储当被处理器202执行的时导致计算设备200执行此处所描述的各种功 能的指令的计算机可读存储介质的示例。例如,存储器204 —般可以包括易失性存储器和 非易失性存储器两者(例如RAM、ROM等)。此外,大容量存储介质206 —般可包括硬盘驱 动器,固态驱动器,包括外置和可移动驱动器、存储卡、闪存在内的可移动介质等等。如上所 述,服务器计算设备200还可包括用于诸如经由网络、直接连接等来与其他设备交换数据 的一个或多个通信接口 208。显示器及其他输入/输出设备210可包括用于显示信息的特 定输出设备,如显示器,以及接收来自用户的各种输入并向用户提供各种输出的各种其他 设备,并可包括,例如,键盘、鼠标、音频输入/输出设备、打印机等等。计算设备200还包括用于实现此处的SDR的无线电控制板214和RF前端216。例 如,系统总线212可以是PCIe兼容的总线,或其他合适的高吞吐量、低延迟总线。无线电控 制板214和RF前端216可以对应于上文参考图1所描述的,以及还如下面参考图3所描述 的无线电控制板116和RF前端118。此外,RCB控制模块218还可以被存储在存储器204或 其他计算机可读存储介质中,用于控制RCB 214上的操作,如下面另外描述的。此处所描述 的计算设备200只是计算环境的一个示例,而非旨在对可以实现此处的SDR的计算机体系 结构的使用范围或功能提出任何限制。计算设备200也不应被解释成对于在计算设备200 中所示出的任一组件或其组合有任何依赖或要求。此外,上文所描述的SDR平台和系统100的各实现还可以用于除图2中所示出的 计算设备200的示例之外的用于实现软件定义无线电的许多不同的计算环境以及设备中。 一般而言,此处参考图形所描述的许多功能都可使用软件、硬件(例如,固定逻辑电路)、手 动处理或这些实现的组合来实现。如此处所使用的术语“逻辑”、“模块”、或“功能” 一般代 表可以被配置为实现规定功能的软件、硬件或软件和硬件的组合。例如,在软件实现的情况 下,术语“逻辑”、“模块”、或“功能”可表示当在一个或多个处理设备(例如,CPU或处理器) 上执行时执行指定任务的程序代码(和/或声明型指令)。程序代码可以被存储在一个或 多个计算机可读存储器设备中,如存储器204和/或大容量存储介质206,或其他计算机可 读存储介质中。因此,此处所描述的方法和模块可由计算机程序产品来实现。该计算机程 序产品可包括其上包含计算机可读程序代码的计算机可读介质。该计算机可读程序代码可 适于由一个或多个处理器来执行,以实现此处所描述的各实现的方法和/或模块。术语“计 算机可读存储介质”、“处理器可访问的存储介质”等等是指用于保留信息的任何类型的机器存储介质,包括上文所讨论的各种类型的存储器和存储设备。无线电控制板图3示出了可以对应于上文所描述的RCB 116、214和RF前端118、216的无线电 控制板(RCB) 302和RF前端304的示例性实现。在所示出的示例中,RCB 302包括用于控 制RF前端304和诸如上文所讨论的总线112、212之类的系统总线306之间的数据传输的 功能。在所示出的实现中,功能是现场可编程门阵列(FPGA)308,FPGA可以是位于美国加利 福尼亚州圣何塞市的Xilinx公司推出的Virtex-5FPGA、一个或多个其他合适的FPGA或被 配置成实现此处所描述的功能的其他等效电路。RCB 302包括直接存储器访问(DMA)控制 器310、总线控制器312、寄存器314、SDRAM控制器316以及RF控制器318。RCB 302还包 括第一 FIFO缓冲器320,用于充当用于临时存储从RF前端304接收到的数字样本的第一 FIFO,以及用于临时存储要被传输到RF前端304的数字样本的第二 FIFO缓冲器322。DMA 控制器310通过总线控制器312来控制接收到的数字样本到系统总线306的传输。SDRAM 控制器316控制诸如数字样本、预先生成的波形等等之类的数据在板载存储器324中的存 储。只作为示例,存储器324可以包括256MB的DDR2SDRAM。RCB 302可以连接到各种不同的RF前端304。这样的前端304的一个合适示例 是位于美国德克萨斯州休斯顿市的赖斯大学推出的,被称为无线公开访问研究平台(WARP) 前端。WARP前端能够在2. 4GHz或5GHz发送和接收20MHz通道。在一些实现中,RF前端 304包括被配置为用于从天线328接收无线电波形并用于通过天线328发射无线电波形的 的RF收发器的RF电路326。RF前端304还可包括模拟-数字转换器330和数字-模拟转 换器332。如上文所讨论的,模拟_数字转换器330将接收到的无线电波形转换为数字样本 供进行处理,而数字_模拟转换器332将由处理器所生成的数字样本转换为无线电波形,供 RF电路326进行发射。此外,还应该注意,此处的各实现不仅限于任何特定前端304,并且, 在一些实现中,整个前端304可以被合并到RCB302中。可另选地,在其他实现中,模拟-数 字转换器330和数字-模拟转换器332可以被合并到RCB 302中,RF前端304可以只有RF 电路326和天线328。鉴于本发明,其他变型也将显而易见。在图3中所示出的实现中,DMA控制器310和总线控制器312与计算设备上的存 储器和处理器(图3中的未示出)连接,并在RCB 302和诸如上文所讨论的存储器114、204 之类的计算设备上的系统存储器之间传输数字样本。上文参考图2所讨论的RCB软件控制 模块218通过RCB寄存器314来发送命令并读取RCB状态。RCB 302还使用板载存储器324 以及FPGA 308上的小型FIFO缓冲器320、322来在计算设备上的处理器和RF前端304之 间桥接数据流。当接收到无线电波形时,数字信号样本被缓冲在芯片内的FIFO缓冲器320 中,当数字样本适应DMA爆发(例如,128字节)时,被递送到计算设备上的系统存储器中。 当发射无线电波形时,大型RCB存储器324使RCB管理器模块218 (例如,图2)的各实现能 首先将所生成的样本写入到RCB存储器324上,然后,利用到RCB的另一命令触发发射。此 功能对SDR管理器模块218的各实现提供了在实际发射波形之前预先计算和存储对应于多 种波形的数字样本同时又允许准确控制波形发射的时间的灵活性。应该注意,在此处的SDR的一些实现中,在由DMA控制器310实现的操作和处理器 高速缓存系统上的操作之间的交互中可能会遇到一致性问题。例如,当DMA操作修改已经 被高速缓存在处理器高速缓存(例如,L2或L3高速缓存)中的存储器位置时,DMA操作不会使相对应的高速缓存条目失效。因此,当处理器读取该位置时,处理器可能从高速缓存中 读取不正确的值。一个朴素的解决方案是禁止对用于DMA的存储器区域的高速缓存的访 问,但是,这样做将导致存储器访问吞吐量的显著退化。如图4所示,此处的各实现通过使用智能取回策略来解决此问题,从而使SDR的各 实现能维护与DMA存储器的高速缓存一致性,而不会剧烈地牺牲吞吐量。图4示出了可以对 应于上文所讨论的系统存储器114、204的存储器402,其包括作为可以被RCB 302上的DMA 控制器310直接访问以便将数字样本存储为数据的DMA存储器404而预留的一部分。在一 些实现中,SDR将DMA存储器404组织为其大小是高速缓存行的大小的倍数的小槽406。每 一个槽406都从包含标记410或其他指示符以表示数据是否已经被处理完的描述符408开 始。在DMA控制器310将满槽的数据写入到DMA存储器404之后,RCB 302设置标记410。 在处理器处理完高速缓存412 (可以对应于上文所描述的高速缓存106和/或108)中的相 对应的槽中的所有数据之后,标记410被清除。当处理器移动到对应于新槽406的高速缓 存位置时,处理器首先读取槽406的描述符,导致整个高速缓存行被填充。如果标记410被 置位(例如,值“1”),则刚刚取回的数据是有效的,处理器可以继续处理数据。否则,如果 标记没有被置位(例如,值“0”),则RCB上的DMA控制器没有用新的数据来更新此槽406, 而处理器显式地刷新高速缓存行,并重复读取同一个位置。下一个读取重新填充高速缓存 行,加载来自DMA存储器404的最近数据。因此,前述的过程确保处理器不会从高速缓存 412中读取不正确的值。此外,尽管示出和描述了示例性RCB 302,但是,鉴于本发明对于本 领域的技术人员显而易见的是,RCB 302的各种其他实现也在此处本发明的范围内。SDR软件实现图5示出了此处的SDR的软件和逻辑体系结构的示例性实现,示出了 SDR的若干 个软件组件和逻辑布局。SDR堆栈502包括无线MAC层模块504、无线物理层(PHY)模块 506、以及RCB管理器模块508,RCB管理器模块508包括DMA存储器管理器510,并可以对 应于上文所讨论的RCB管理器218。这些组件提供了系统支持,包括驱动程序框架、存储器 管理、流线型处理等等。PHY模块506的作用是将信息比特转换为无线电波形,或反之。MAC 层模块504的作用是协调无线网络中的发射以避免冲突。还包括了 SDR支持库512,该支持 库512包括SDR物理层(PHY)库514、流线型处理支持516以及实时支持518 (例如,如下面 另外讨论的,用于确保核专用)。SDR堆栈软件组件可以在各种时间在系统存储器、高速缓 存和/或大容量存储器或其他计算机可读存储介质中存在,如在本领域内已知的。此处的SDR的各实现中的软件组件提供用于在诸如Windows XP、 Windows Vista 、Windows 7>Linux ,Mac OS X之类的通用操作系统或其他合适的操 作系统中实现各种无线PHY和MAC协议的必需的系统服务和编程支持。除便于与RCB的交 互之外,SDR堆栈502的各实现提供了大大地改善通用处理器上的PHY和MAC处理的性能 的一组技术。为满足处理和实时要求,这些技术充分利用多核处理器体系结构中的各种特 征,包括查找表(LUT)的广泛应用、与处理器SMD扩展的大量的数据并行性、流线型处理在 多个核上的高效分区,以及核对于软件无线电任务的排它性专用。可以以任何合适的编程语言来编写SDR软件的各实现。例如,在一些实现中,可以 以C来编写软件,另外,还可使用用于性能关键处理的某些汇编语言。此外,SDR堆栈502的 某些实现可以被实现为通用操作系统上的网络设备驱动程序。如此,RCB管理器模块508作为操作系统中用于操作和管理RCB的驱动程序来起作用,并可包括用于使PCIe系统总线能 被使用的PCIe驱动程序。SDR堆栈502向内核侧的上TCP/IP层522展示虚拟以太网接ロ 520,从而使SDR能显现并作为网络设备来起作用。由于此处在SDR上实现的任何软件无线 电都可以表现为正常的网络设备,因此,用户所使用的所有的现有网络应用程序5M都能 够以未经修改的形式执行并与SDR进行交互。此外,在另一端,SDR堆栈在逻辑上通过系统 总线5M与RCB固件522进行交互,如上文所讨论的,系统总线5M可以是PCIe系统总线。在此处的SDR的一些实现中,SDRPHY处理库514广泛地利用查找表(LUT)和SIMD 指令来优化PHY算法的性能。例如,PHY算法的一大半可以被替换为LUT。某些LUT是简 单的预先计算;其它的要求更复杂的实现,以使得LUT的大小较小。例如,在下面所讨论的 软-解映射示例中,通过利用算法的対称性,LUT大小(例如,对于802. lla/g 54Mbps调制 为1.5KB)可以大大地縮小。此外,在下面所描述的示例性WiFi实现中,802. lla/g中所使 用的LUT的总大小约为200KB,而在802.Ilb中,大约为310KB,均能适宜地匹配在常规的多 核处理器的L2高速缓存内。此外,如上文所讨论的,某些实现还使用SIMD(单指令多数据)指令,如设计用于 Intel CPU的SSE2(SMID流技术扩展2)指令集,用于诸如当处理数字样本时加速对大量的 数据点的并行处理。由于SSE寄存器是128比特宽,而大多数PHY算法只要求8比特或16 比特定点运算,因此,ー个SSE指令可以执行8或16个同时计算。SSE2还具有对于灵活数 据排列的丰富的指令支持,而大多数PHY算法,例如,快速傅里叶变换(FFT)、有限脉冲响应 (FIR)过滤器和维特比解码器算法,可以自然地适应此SIMD模型。例如,根据此处的SDR的 维特比解码器的各实现只使用40个周期来计算分支度量,并为每ー个输入选定最短路径。 結果,维特比实现可以只使用多核处理器中的ー个2. 66GHz CPU核来以54Mbps调制,处理 802. lla/g,而常规设计必须依赖于专用的硬件实现。另外,还应该注意,其他品牌的处理器体系结构,如AMD推出的处理器,以及位于 美国加利福尼亚州的库珀蒂诺市的Apple公司推出的p0werpc 处理器,具有可以类似地 使用的非常类似的SIMD模型和指令集。例如,AMD的Enhanced 3DNow! 处理器包括SSE 指令集加一組DSP (数字信号处理器)扩展。此处所描述的优化技术也可以直接应用于这 些及其他GPP体系结构。下面进ー步地讨论了使用SIMD指令优化的功能块的示例。图6A示出了算法优化表600,该表600概述了在此处的SDR中实现的某些PHY处理 算法,以及适合于改善处理速度的LUT和SIMD优化技木。算法表600包括算法标识列602、 配置列604、以及I/O大小列606、优化方法列608、常规实现所需的计算数量列610、SDR实 现612所需的计算612以及通过优化所获得的加快的量614。例如,对于IEEE 802.Ilb标 准,可以使用根据此处的SDR的LUT来优化的算法包括扰码算法620、解扰码算法622、映射 和散布算法624以及CCK(补码键控)调制器算法626,而可以使用SIMD扩展来优化的算法 包括HR过滤器628以及抽选算法630。另外,对于IEEE802.Ila标准,可以使用SIMD扩展 来优化的算法包括FFT/IFFT (快速傅里叶变换/快速傅里叶逆变换)算法632,可以使用 根据此处的SDR的LUT来优化的算法包括卷积编码器算法634、维特比算法636、软解映射 算法638以及扰码和解扰算法640。此外,也可以使用SIMD扩展来进ー步优化维特比算法 636。图6B示出了对于IEEE802.Ilb以2Mbps的PHY操作的示例,进ー步示出了如上文參考图6ム所讨论的根据这里的某些实现来优化的功能块的示例。?附层的作用是将信息 比特转换为无线电波形或反之。如图6B所示,在发射器一侧处,无线PHY组件首先将消息 (即数据包或嫩〔帧)调制为基带信号的时间序列。然后,将基带信号传递到无线电前端, 在此,它们被乘以高频载波,并被发送到无线通道。在所示示例中,来自嫩〔的数据进入扰 码块650、DQPSK调制器块652、直接序列扩展频谱块654、码元波形整形块656,然后被传递 到RF前端。在接收器ー侧处ぶド前端检测通道中的信号,并通过去除高频载波来提取基带 信号。然后,所提取的基带信号被馈送给接收器的?附层,以被解调为原始消息。在所示示 例中,来自8ド前端的信号被传递到抽选块658、解扩块660、00 5に解调器块662、解扰码块 664,然后到霞层。因此,高级通信系统(例如,臓802. lla/b/g)在它们的PHY组件中 包含多个功能块。这些功能块彼此被流水化。数据通过这些块按顺序流送,但是,带有不同 的数据类型和大小。例如,如图68所示,不同的块可以按照小数据块排列以不同速率消费 或产生不同类型的数据。例如,在802. 1让中,如图68所示,扰码器块650可以消费和产生 ー个比特,而00 5に调制块652将每两比特数据块映射到复码元,该复码元使用两个16比 特数字来表示同相和正交(I/Q)分量。每一?附块都对每个发送或接收到的比特执行固定量的计算。当数据速率高时, 例如,对于802. llb*llMbps,M〒802. 113/^为讨胞?8沖附处理块消费大量的计算能力。 据估计,802. Ilb的直接实现可能要求10 ^、而802. 11£^^要求至少40 ^8。这些要求对 于GPP中的软件处理是非常苛刻的。在发射器一侧调制之后以及在接收器一侧解调之前,PHY处理块直接对数字波形 进行操作。因此,需要高吞吐量接口,以便连接这些处理块以及连接?附与无线电前端。所 需的吞吐量随着基带信号的带宽而线性地伸缩。例如,在802.11も通道带宽是201^2。这 要求每秒钟至少2000万复式样本的数据速率来表示波形。这些复式样本对于I和Q分量 两者通常要求16比特量化,以提供足够的保真度,每个样本转换成32个比特,或者对于整 个20MHz通道为640Mbps。过采样是一种广泛地用于取得更好的性能的技术,它使要求加倍 到1. 28Gbps,以便在一个802. Ila通道的RF前端和PHY块之间移动数据。如上文參考图6A所讨论的,为了加快对某些块的处理,此处的各实现通过使用上 文所讨论的LUT和SIMD优化技术来优化某些功能块。在图6B的所示示例中,如粗体所示, 扰码块650、解扰码块664以及DQPSK调制器和DQPSK解调器块6 使用存储在处理器上 的高速缓存中的LUT来优化,对应于上文參考图6A所讨论的扰码算法620、解扰码算法622 以及映射和散布算法624。此外,抽选块658使用SIMD处理器扩展而优化,对应于上文參考 图6A所讨论的抽选算法630。类似地,图6C示出了在2Mbps时对于IEEE 802. Ilb的PHY操作的示例,以粗体示 出了哪些功能块是根据这里的某些实现来优化的,如上文參考图6ム所讨论的。在发射器一 侧,从MAC层接收到的数据被传递到扰码块670、卷积编码器块672、交错块674、QAM调制器 块676、IFFT块670、GI添加块680、码元波形整形块682,然后被传递到RF前端。在接收器 一侧,来自RF前端的信号被传递到抽选块684、抽选块684、去除GI块686、FFT块688、解 调和交错块690、维特比解码块692、解扰码块694,然后到MAC处理。为了加快对某些块的 处理,此处的各实现通过使用上文參考图6A所讨论的LUT和SIMD优化技术来优化某些功 能块。在图6C的所示示例中,扰码块670和解扰码块694使用存储在处理器上的高速缓存中的LUT而优化,对应于上文所讨论的扰码和解扰码算法640 ;FFT块688和IFFT块670使 用SMD处理器扩展而优化,对应于上文所讨论的FFT/IFFT算法632 ;卷积编码器块672使 用LUT而优化,对应于上文所讨论的卷积编码器算法634 ;而维特比解码块692使用LUT和 SIMD处理器扩展两者而优化,对应于上文所讨论的维特比算法636。此外,除此示例中所示 出的优化之外,其他优化机会鉴于本发明对本领域的技术人员是显而易见的。某于FIR讨滤器的S頂D示例下面提供了此处的SDR的各实现中的如何使用SSE指令来优化FIR(有限脉冲响 应)过滤器的实现的示例,对应于上文参考图6A所讨论的FIR过滤器算法628,可以理解, 也可以类似地实现诸如抽选630之类的其他算法的优化。FIR过滤器广泛地用于各种PHY 层中。n抽头FIR过滤器被定义为如下r|l; +...E;:丨:I * x[l — If],其中,x[.]是输入样本,y[.]是输出样本,而ck是过滤系数。利用SMD指令,有 可能同时处理多个样本。例如,Intel SSE支持128位打包的向量,每一 FIR样本都获取16 比特。因此,有可能同时执行m = 8个计算。为促进SSE处理,存储器中的数据布局应仔细 设计。图7A示出了根据此处的各实现的FIR系数的存储器布局700。每一行702_1、…、 702-(n+m-l)构成包含SMD操作的m分量的打包的向量。FIR过滤器的系数向量以之字 形布局在每一列704-1、 704-m中复制。如此,行的总数是(n+m-1)。还有n个临时变量 706,包含为每一样本对每一 FIR抽头的累积的总和。图7B示出了用于执行由SDR堆栈的PHY层在多核处理器的核上执行的FIR过滤 器的SIMD操作的示例性过程的流程图。过程接收输入样本阵列和系数阵列,并在输出样本 缓冲器中输出经过滤的样本。在框712,过程接收输入样本阵列和系数阵列。输入样本包含两个单独的样本流, 偶数和奇数索引样本分别表示I和Q样本。系数阵列类似于图7A的布局排列,但是,分别 带有I和Q样本的两组FIR系数。在框714,对于每一个迭代,四个I和四个Q样本被加载到SSE寄存器中。在框716,过程将每一行中的数据相乘,并将结果与相对应的时间上累积的总和变 量相加。在框718,过程确定是否已经处理完输入样本的阵列中的所有样本以计算所有抽 头。如果否,则过程返回到框714,以将其它I和Q样本加载到SSE寄存器中。在框720,当为输入样本计算了所有抽头时,为输入样本输出结果。当输入样本流 比较长时,在流水线中有nm个样本,在每一迭代中生成了 m个输出。注意到,输出样本的次 序可以不与输入样本相同。例如,某些算法不总是要求输出与输入具有完全相同的顺序。因此,在框722,输出结果可以被重新排序为原始顺序。如果需要的话,这可以通过 使用几个洗牌指令来将输出样本置于原始顺序来实现。然后,过程返回到框714,以继续从 框712接收输入样本的流,直到处理完所有样本。如此,尽管前述的内容提供了用于加速对 此处的SDR中的数字样本的处理的SMD处理的具体示例,但是,鉴于本发明对于本领域的 技术人员显而易见的是,根据此处的各实现,如上文参考图6A-6C所讨论的示例,可以应用 此过程,以在多核处理器的一个或多个核上优化其他SDR算法。
高件能SDR处理此处的SDR的各实现使用包括高效的物理层处理、多核流线型处理和实时支持的软件技术(下面将另外对它们进行描述),实现了高性能的SDR处理。有效的PHY处理在存储器换计算的折衷中,此处的SDR的各实现依赖多核处理器中的大容量、高速缓冲存储器,以使用存储在PHY库中的预先计算出的LUT来加速PHY处理。诸如IntelCore 2之类的现代处理器体系结构,通常具有至少若干个兆字节、带有低(例如,10 20周期)访问延迟的板载高速缓存。如果为大部分的PHY算法预先计算了 LUT并将其存储在相对应的核的板载高速缓存中,则这可以大大地降低对于在线处理的计算要求,并加快总的处理时间。例如,用于IEEE 802. Ila标准中的解调中的软解映射算法638需要计算传入码元中所包含的每一比特的置信水平。此任务涉及与调制密度成比例的相当复杂的计算。更确切地说,软解映射算法638对星座图中的所有调制点执行大量的搜索,并计算到表示I的所有点的欧几里德距离中的最小值和到表示0的所有点的距离的最小值之间的比率。在此处的SDR的各实现中,基于其I和Q值,预先计算所有可能的传入码元的置信水平,并构建LUT,以将输入码元直接映射到置信水平。这样的LUT不必很大。例如,在带有54Mbps调制速率(64QAM)的802. lla/g中,软解映射638的LUT的大小大约是I. 5KB。图7C-7D示出了根据此处的某些实现的使用LUT的SDR处理的示例。图7C示出了如何通过使用预先计算出的LUT代替使用处理算法来对比特执行实际处理来加快对功能块的处理。例如,当有输入比特和相对应的输出数据的有限的组合时,可以预先计算出LUT以便用来快速地将输入与相对应的输出进行匹配。在图7C中,数字样本的输入比特的阵列被作为比特流接收,供进行处理,诸如在上文参考图6A-6C所描述的功能处理块中的能够使用LUT来加速处理的一个(例如,卷积编码器算法)中。卷积编码器通常按下列方式工作。卷积编码器算法维护构成编码器的状态的七个移位寄存器734。对于每一个传入的比特,算法736选定移位寄存器734中的多个比特,并对它们执行异或(XOR)运算,然后生成两个编码的输出比特,作为输出数据A 738和输出数据B 740。然后,移位寄存器734向右移位,输入比特被置于最左边的寄存器中。通常,为处理一个比特,需要花费八个运算来计算输出(即,从I比特输入产生2比特输出)。然而,如上文所讨论的,处理可以通过使用LUT 742来避免对算法736的实际处理。如此,代替一次处理一个比特,可以将8比特数据当作单个输入,以便使用LUT进行处理。可以组合8比特输入和当前状态的7比特状态,以生成15比特的索引744。然后,在LUT 742中定位15比特索引,根据LUT 742来确定相对应的预先计算出的新7比特状态746和16比特输出748,代替通过处理算法736,分别地处理每一比特。如此,显然,如果所有可能的15比特索引以及其相对应的输出7比特状态746和16比特输出748被预先计算并存储在LUT 742中,则可以大大地加速SDR样本流的实际处理时间(即,可以使用单个查找操作来执行对八个比特的编码)。图7D示出了可以通过使用LUT代替使用常规算法(如卷积编码器算法)处理比特流来由SDR堆栈的PHY层在多核处理器的核上执行的示例性过程750。如上文参考图6A-6C所讨论的,可以通过使用预先计算出的LUT来类似地加速SDR流水线中的其他算法。
在框752,接收输入样本比特的阵列,供作为比特流进行处理。
在框754,过程加载第一字节(8比特),并利用当前编码器状态(7比特状态)生成索引。在框756,过程使用所生成的索引来访问预先计算出LUT,并定位两个值两个输出字节(即,16比特输出)和7比特新状态。在框758,两个输出字节被作为输出传递到SDR处理流中的下一个处理块,例如,如图6B或6C所示,并且,7比特新状态用于处理样本比特流中的下一个字节。在框760,增大首部指示符,以涵盖接下来的八个比特。在框762,过程确定是否已经到达比特阵列的末尾。如果否,则过程返回到框754,以处理下一个字节;如果是,则过程进入框752以接收输入比特的下一个阵列。如上文参考图6A-6C所讨论的,IEEE 802. 11标准的常见的PHY算法的一大半可以利用LUT代替,从而导致大致I. 5x到50x的处理时间加速614 (例如,参见图6A)。由于每一 LUT的大小足够小,因此,处理路径中的所有LUT的总和可以轻松地容纳在典型的多核处理器核的L2高速缓存中。因此,当与核专用相结合时,如下面所讨论的,高速缓存冲突的可能性非常小。结果,此处的各实现的LUT在PHY处理过程中几乎总是位于板载高速缓存中。另外,尽管在图7C-7D中示出了示例性实现以描述LUT如何可以被用来加速SDR处理,但是,应该理解,上文所讨论的能够利用LUT来加速的其他算法也可以使用预先计算出的LUT类似地处理。此外,为了利用数据级别的并行性来加速PHY处理,此处的SDR的各实现还使用上文所讨论的SMD处理器扩展,如在常规多核处理器中所提供的SSE、SEE2、3DNow! 、以及AltiVec 。虽然这些扩展最初被设计用于多媒体和图形应用程序,但是这些扩展也很好地 匹配无线信号处理的需求,因为许多PHY算法具有可以轻松地映射到大矢量运算的固定的计算结构。测量值示出了,在此处的SDR的各实现中,这样的SMD扩展会大大地加快PHY处理。多核流线型处理即使有上面的优化,单个CPU核可能没有足够的处理能力来满足高速无线通信技术的处理要求。结果,此处的SDR的各实现能够使用多核处理器中的一个以上的核来进行PHY处理。在一些实现中,多核技术还可缩放,以提供与随着无线技术的发展而变得越来越复杂的信号处理算法的兼容性。如上文所讨论的,如参考图6B和6C,物理层处理通常包含流水线中的若干个功能块或不同的阶段。这些块在处理速度和输入/输出数据速率和单元方面不同。块只有当该块从前面的块接收到足够的输入数据时才准备执行。因此,一个关键问题是当块已准备好进行处理时如何在多个核上调度功能块。图8A示出了用于在多核处理器802 (可以对应于上文所讨论的多核处理器102、202)中的不同的核上处理数据的示例性实现。例如,第一核804和第二核806可以被用来处理上文参考图6A-6C所讨论的功能块。第一核804可以与第二核806位于同一个多核处理器中,或者核804、806可以位于单独的处理器中。在图8A,第一核804和第二核806使用静态调度方案来处理多个功能块808。此实现基于PHY处理流水线中的每一个块的调度实际上都是静态的观察,即,以前的块的处理模式可以确定随后的块是否已准备好。此处的SDR的各实现如此可以将整个PHY处理流水线分区为多个子流水线810,并静态地将子流水线810分配给不同的核804、806。在一个子流水线810内,当第一块808为下一个块累积了足够的数据以便准备好时,第一块显式地调度下一个块。来自不同的块的相邻的子流水线与管理数据在子流水线810之间的传输的同步的FIFO 812连接在一起。例如,可以在上文参考图I所讨论的高速缓存106、108中的一个中建立同步的FIFO 812。如此,此处的各实现允许不同的PHY处理块808跨多个核804、806而流线化,同时通过一个或多个共享存储器同步的FIFO队列彼此进行通信。例如,如果两个块808 (例如,图8A的块2和块3)在不同的核804、806上运行,则它们对共享FIFO812的访问必须被同步。在被称为基于计数器的FIFO(CBFIFO)中,同步的FIFO的传统的实现使用计数器来同步写入器(生产者)和读取器(消费者)。然而,此计数器由两个处理器核共享,由一个核对变量的每个写入都将导致另一 个核上的高速缓存未中。由于生产者和消费者两者都修改此变量,因此,对于每一个数据,两个高速缓存未中是不可避免的。在PHY具有非常细微的数据粒度也是非常常见的(例如,如在上文所讨论的图6中概述的4-16字节)。因此,当对于这样的小块的数据必须非常频繁地(例如,每个微秒一次)执行同步时,这样的高速缓存未中将导致大量的开销。在此处的SDR的各实现中,实现了不使用共享的同步变量的核间同步循环FIFO缓冲器812。代替具有共享变量,此处的各实现利用表示槽是空还是满的(即,“E”或“F”)的首部来增强同步的FIFO缓冲器812中的每一数据槽814。此外,每一数据槽814还被填充到等于高速缓存行大小的倍数的大小。如此,消费者始终在环形缓冲器812中追赶生产者,以获得填满的槽,如下面的伪代码中所概述的
//生产者
voidwritefifo ( D AT AT YPE data) { while (q[w_tail].flag>0); // 自旋等待 q[w—tail] .data = data; q[w—tail].flag = I; //占用 w—tail = (w—tail+1) % q—size;
}
//消费者
voidreadfifo (D AT AT YPE * pdata) { while (q[r_head].flag==0); Il 自旋 *data = q[r—head] .data; q[r—head].flag = 0; //释放 r—head = (r—head + I) % q_size;
}此追逐指针FIFO (CPFIFO)通过生产者指针816和消费者指针818的实现,甚至对于非常细微的同步,也大大减轻了开销。例如,如果生产者(例如,第一核804上块2)和消费者(例如,第二核806上的块)的速度相同,并且两个指针分隔了特定偏移(例如,Intel体系结构中的两个高速缓存行),则在同步的流传送期间将不会发生高速缓存未中,因为在实际访问之前本地高速缓存将预取之后的槽。如果生产者和消费者具有不同的处理速度,例如,消费者(读取器)比生产者(写入器)快,那么,最终消费者将等待生产者释放一个槽。在此情况下,每当生产者向槽写入时,写入将导致消费者处的高速缓存未中。然而,生产者将不会遭受未中,因为下一个空闲槽将被预取到其本地缓存中。此外,由消费者经历的高速缓存未中将不会对流线型处理的总性能造成严重的影响,因为消费者不是瓶颈元素。另夕卜,尽管FIFO缓冲器812被示为是循环的,但是,可以理解,在当前技术中,这只用于说明目的,缓冲器实际是高速缓冲存储器中的逻辑位置,缓冲器812中的空的和满的数据槽的位置实际是通过指针816、818的相对位置来维护的。
图8B示出了由生产者(例如,第一核804)执行的用于使用同步的FIFO缓冲器812处理数字样本的示例性过程820的流程图。过程由SDR堆栈的PHY模块使用多核处理器802的多个核来执行。在框822,生产者生成数据。例如,第一核804处理功能块808 (例如,块I和块2)中的数据,以生成数据。在框822,生产者通过引用生产者指针816当前正指向的数据槽并检查该数据槽的首部来确定FIFO缓冲器812中是否有开放的可用的数据槽。在框826,如果首部表示当前的槽是空的,则生产者将所生成的数据存储在空的数据槽中,并使生产者指针816递增一个数据槽。在框828,如果首部表示生产者指针当前正指向的数据槽是满的,则生产者等待空数据槽变得可用。当需要停止过程时,终止条件也可以由用户设置。图SC示出了由消费者(例如,第二核806)执行的用于使用同步的FIFO缓冲器812处理数字样本的示例性过程830的流程图。过程由SDR堆栈的PHY模块使用多核处理器802的多个核来执行。在框832,消费者准备接收和处理数据。例如,在第二核806中的块3和块4的管道中,数据可能已经被从块3传递到块4,而块3现已准备好接纳更多数据。在框834,消费者通过检查首部以确定首部是表示槽是满的还是空的,来检查消费者指针818当前正指向的数据槽,以确定该槽是否包含可用的数据。在框836,当槽包含数据时,消费者从数据槽获取数据,从而打开该数据槽并改变该数据槽的首部,以表示该数据槽现在是空的。消费者也将消费者指针递增到下一个数据槽。在框838,如果在当前数据槽中无数据可用,则消费者继续检查数据槽,并等到数据槽充满数据。实时支持SDR处理是要求计算资源的严格的保证和严苛的实时期限的时间关键的任务。例如,在802. 11协议中,无线通道是由在相同频谱上操作的所有收发器共享的资源。如此,由于同时发射的近邻可能彼此干扰,因此已经开发了各种MAC协议以协调无线网络中的发射来避免冲突。
此外,大多数现代的MAC协议,如802. 11,要求对关键事件的及时响应。例如,802. 11使用CSMA (载波侦听多路访问)MAC协议来协调发射。在启动它们的发射之前,发射器需要侦听通道,通道访问只有在没有侦听到能量时,即通道是空闲的,才被允许。侦听和访问之间的延迟应该尽可能地小。否则,侦听结果可能是过时的并且是不准确,导致冲突。另一示例是无线协议中的链路层重新传输机制,这可能要求在有限的时间窗口内返回即时确认(ACK)。诸如IEEE 802. 11之类的商品标准要求响应延迟在数十微秒内,这对在运行通用OS的通用处理器上以软件实现而言是一项挑战。如此,作为依赖于实时操作系统的完全的通用性的替代方案,此处的各实现通过将一个或多个处理器核专用于多核处理系统中的SDR处理来获得实时保证。如此,由于一个或多个核被专用于SDR,因此,此处的各实现保证足够的计算资源,而不会受到系统中的其他并发任务的影响。
例如,无线通信常常要求PHY不断地监测通道是否有传入信号。因此,PHY处理可能需要在每时每刻都是活动的。期望调度此监视任务以在同一个核上连续地操作,以便最小化开销,如高速缓存未中或TLB刷新。此外,与对称调度相比,将应用程序隔离到不同的核会得到更好的性能,因为对高速缓存资源的有效使用和锁定的减少会使专用核有利(outweight)。此外,核专用机制比实时调度器容易实现得多,有时甚至无需修改OS内核。用于实现根据此处的SDR的各实现的核专用的方法的一个示例是提高内核线程的优先级,以便内核线程被钉在特定核中,并排他地在该核上运行,直到终止。此处的SDR的各实现使用排它性线程(S卩,“ethread”)来使核专用于实时SDR任务。ethread可以在不对内核代码进行任何修改的情况下实现。例如,ethread可被实现为内核模式线程,并由此利用通常在常规操作系统中得到支持的处理器联署来提供关于内核模式线程在哪个核上运行的控制。一旦OS在指定的物理核上调度了 ethread,OS就将线程上的优先级和/或IRQL(中断请求级别)提高到与内核调度器一样高的级别,例如,Windows 中的分派级别。如此,ethread通过提高中断请求级别来取得对核的控制,并防止它本身被其他线程抢先。然而,在这样的IRQL运行不会阻止核对硬件中断作出响应。因此,附着于主机的所有设备的中断关系也受到约束。例如,如果ethread在特定核上运行,则安装的设备的所有中断处理程序都从核中去除,如此防止核被硬件中断。此外,为确保计算设备和操作系统的正确操作,此处的SDR的各实现始终确保核0能够对所有硬件中断作出响应。因此,此处的SDR的各实现只允许ethread在其ID大于零的核上运行。示例件实现此处的SDR的示例性实现包括作为示例性WiFi实现的SDR平台上的全功能WiFi收发器。示例性WiFi实现SDR堆栈支持所有IEEE 802. lla/b/g调制,并可以无缝地与商用WiFi网卡进行通信。例如,通用计算设备体系结构上的高速无线协议的各实现必须克服源于现有硬件接口和软件体系结构的多个挑战。首先,将高保真数字波形样本传输到系统存储器来进行处理要求非常高的总线吞吐量。常规软件无线电平台使用USB 2.0或Gigabit以太网,这不能满足维持高速无线协议的此要求。其次,物理层(PHY)信号处理对于从波形生成信息比特或反之具有非常高的计算要求,特别是在高调制速率时。最后,无线PHY和媒体访问控制(MAC)协议具有必须被满足以便正确操作的低延迟实时期限。例如,802. IlMAC协议要求准确的时间控制和大约数十微秒的ACK响应延迟。通用计算设备上的现有的软件体系结构不能一贯地满足此计时要求。图9A示出了在具有如上文参考图I和2所描述的多核处理器的,并耦合到对应于RCB 116,214和/或302的RCB 904的诸如计算设备902之类的硬件上实现的此处的SDR的示例性WiFi实现900。在所示出的实现中,通过提高内核线程的优先级,MAC状态机(SM)被实现为ethread 906,以便内核线程被钉在特定核中,并排他在该核上运行,直到终止。由于根据802. 11标准的无线电是半双工无线电,因此,PHY的解调组件可以直接在MAC SM线程内运行。此外,如果单个核不足以用于所有PHY处理(例如,如802. lla/g的情况),则PHY处理可以跨包括MAC_SM线程906和PHY_Thread 908的两个ethread分区。如上文参考图8A-8C所讨论的,这两个ethread 906,908使用同步CPFIF0910而流线化。另外的线程,即Snd_thread 912,在后台将传出的帧调制为波形样本。如上文所讨论的,这些经调制的波形可以被预先存储在RCB的存储器中,以便于快速传输。此外,Completion_thread 914监测接收缓冲器、Rcv_buf916,并将任何正确地接收到的巾贞通知给上软件层。Completion_thread914还在Rcv_buf 916和发送缓冲器即Snd_buf 918被使用之后对它们进行清空。 由于 Completion_thread 914 和 Snd_thread 912 的功能不要求 PHY ethread 906、908 白勺相同高性能和低延迟,因此这些其他线程不被实现为ethread,并可以在任何可用的核上运行。在所示示例中,DMA存储器920包括发射器缓冲器TX_buf 922和接收器缓冲器RX_buf 924,用于分别将用于发射和接收的数字样本存储在RF前端930上的发射器硬件926和接收器硬件928上,如上文诸如参考图4所讨论的。此外,RCB 904还包括控制模块932,诸如上文参考图4所描述的DMA控制器、总线控制器、存储器控制器以及RF控制器,它们共同地表示为Ctrl 924,它们与MAC_SM_Thread 906交换命令,以便确保RCB 904和计算设备902之间的适当的交互。在流线型处理过程中,MAC_SM线程906和PHY线程908访问PHY库934,用于访问LUT和SMD指令,以便执行优化的PHY处理,如上文参考图6A-6C和7A-7B所讨论的。经处理的数字样本被传递到接收缓冲器916,然后,通过Completion_thread914呈现到虚拟以太网接口 936,从而,到TCP/IP层938,如此,呈现到也在计算设备902的一个或多个核上运行的一个或多个应用程序940。图9B示出了可以使用多核处理器的一个或多个核执行以便在一个或多个核上排他地执行SDR处理的示例性过程950。在框952,数字样本从RCB传递到计算设备中的存储器。数字样本由RCB从RF前端接收,然后,可以使用直接存储器访问(DMA)等传递到计算设备中的存储器。数字样本到计算设备中的存储器的传递可以由RCB上的DMA控制器来控制,而DMA也可以将数字样本临时存储在RCB上的缓冲器或板载存储器中。在框954,线程可以在多核处理器的一个或多个核上启动,以便执行诸如PHY和MAC处理之类的SDR处理。在框956,可以提高一个或多个核的中断请求级别,以确保线程不被中断,使得核能够排他地执行数字样本的SDR处理。此外,也可以移除一个或多个核的中断处理程序,以防止硬件中断。在框958,当多个线程在不同的核上操作时,核之间的处理可以使用核之间的同步FIFO来被流线化,如上文所讨论的。在框960,SMID和LUT可以在适用于加速对数字样本的SDR处理时使用。在框962,经处理的数字样本被输出,供诸如由计算设备上的应用程序使用。此外,前述的过程示出了对从RF前端接收到的数字样本的排它性核处理,但可见,类似地处理由计算设备所生成的用于由RF前端发射的数字样本。例如,在要发射数字样本的情况下,步骤954-960是相同的,输入是由计算设备所生成的或(诸如从应用程序)接收到的比特流,而输出是准备好转换为模拟并由RF前端发射的经处理的数字样本。此外,示例性WiFi实现900还能够实现802. 11标准的基本访问模式。图10示出 了 MAC状态机的示例性细节。通常,SM处于帧检测(FD)状态1002。在帧检测状态1002,RCB 904不断地将样本写入到Rx_buf 924。SM( S卩,MAC_SM_Thread 906)连续地测量平均能量,以确定通道是否是干净的或者是否有传入的帧。帧的发射遵循载波侦听多路访问(CSMA)机制。当有要发射的待处理的帧,SM首先检查通道上的能量是否为低(即,当前没有接收到帧)。如果通道忙,则发射被推迟,并启动倒数计时器1004。每当通道变得空闲时,SM都检查是否有任何倒数时间剩余。如果计时器变为零,则SM在框发射1006发射待处理的帧。此外,当示例性WiFi实现开始接收到帧时,它检测帧检测状态1002中的高能量。在802. 11中,SM使用PHY层中的三个步骤来在框接收1008接收帧。首先,PHY层需要同步到帧,即,发现帧的起始点(时间同步)和样本流的频率偏移和相位(载波同步)。同步通常是通过将传入的样本与预先定义的前同步码相关来执行的。随后,PHY层需要解调PLCP(物理层收敛协议)首部,该首部始终是使用固定的低速率调制模式来传输的。PLCP首部包含帧的长度以及调制模式,可能还包含随后的帧数据的较高速率。如此,只有在成功地接收PLCP首部之后,PHY层才能知道如何解调帧的其余部分。当在接收1008成功地接收帧之后,802. IlMAC标准要求接收站如在框ACK发射1010所示出地以及时的方式发射ACK帧。例如,802. Ilb要求以不超过10 u s的延迟发送ACK帧,以确认收到接收到的帧。然而,此短的ACK要求对于SDR实现在通用计算设备上以软件实现而言是十分困难的。跨系统总线生成和传输波形两者都可以导致几微秒的延迟,并且所需的总时间通常大于由标准要求的最大量。幸运的是,ACK帧一般具有固定模式。例如,在802. 11中,除相对应的数据帧的发送器地址之外,ACK帧中的所有数据都是固定的。如此,在示例性WiFi实现900中,有可能预先计算ACK帧的大部分(19字节),并只更新地址(10字节)。此外,这可以在处理的初期,紧随在解调MAC首部之后进行,而无需等待帧的结束。然后,波形被预先存储到RCB的存储器中。如此,ACK生成和传输的时间可以与对正在被接收的数据帧的解调重叠。在MAC SM解调整个帧并验证CRC32校验和之后,MAC SM指示RCB发射已经被存储在RCB上的ACK。如此,对于ACK发射的延迟是非常小的,因为ACK已经存储在RCB中,并可以立即发射,而无需被生成或沿着系统总线发送。偶尔,当传入的数据帧相当小(例如,帧只包含MAC首部和零有效负载)时,示例性WiFi实现则不能将ACK生成和DMA传输与解调全部重叠以完全隐藏延迟。在此情况下,示例性WiFi实现可能不能及时发送ACK。此问题通过在RCB中维护以前的ACK的高速缓存来解决。对于802. 11,来自一个节点的所有数据帧都将具有完全相同的ACK帧。如此,RCB中的预先分配的存储器槽可以被用来存储不同的发送器的ACK波形(在一些实现中,分配了 64个不同的槽)。因此,当解调帧时,如果ACK帧已经在RCB高速缓存中,则MAC SM简单地指示RCB发射预先高速缓存的ACK。利用此方案,示例性WiFi实现可能对来自发送器的第一小的帧迟到,从发送器的观点来看,实际上丢弃了数据包。但是,重新发射以及所有随后的发射将发现已经在RCB高速缓存中存储了适当的ACK波形。示例性WiFi实现900是作为全802. lla/g/b收发器实现和测试的,该收发器支持DSSS (直接序列扩散在Ilb中为I和2Mbps)、CCK(补码键控:在Ilb中为5. 5和IlMbps)以及0FDM(正交频分多路复用在802. lla/g中为6、9以及直到54Mbps)。因此,已经发现此处的SDR的实现无缝地与商用基于硬件的802. 11设备进行交互操作,而同时支持全套的802. lla/b/g调制速率,并在每一调制中实现基本上与基于硬件的设备的相当的性能。结果,可见,此处的SDR的实现可以足够快地处理信号以实现全信道使用率,利用通用计算设备上的软件实现,SDR可以满足802. 11标准的所有计时要求。软件频谱分析仪图11示出了根据此处的某些实现的软件实现的频谱分析仪1100,它可以作为用于分析此处的SDR的性能的应用程序来在通用计算设备上实现。例如,此处的SDR的实现易于向在计算设备上运行的应用程序展示所有PHY层信息。软件频谱分析仪1100是可以利用此信息的这样的应用程序。例如,当SDR处于操作中时,频谱分析仪1100可以在通用计算设备的处理器的一个或多个核上运行,并可以用图形方式在一个或多个星座图中显示无线电通信的波形和调制点,以及解调的结果。在图11中所示出的实现中,原始数据、下采样数据以及巴克数据被显示在星座图1102和波形图1104两者中。还显示了经解码的信息、解扰码信息、调试信息、帧内容、MAC信息、概述信息首部信息以及对文件信息的简要描述。此外,尽管市场上销售的频谱分析仪可能具有类似的功能和较宽的侦听频谱带,但是,它们也较贵。对无线电协议的扩展此处的SDR的各实现的灵活性允许开发和测试对诸如802. 11之类的当前无线电协议的扩展。MM当信道条件好时,使用较大的帧来发射数据可以降低MAC/PHY首部、前同步码和每个帧ACK的开销。然而,802. 11的最大帧大小被固定在2304字节。利用简单的修改(PHY算法中的几行的变化),示例性WiFi实现可以发射和接收最多32KB的巨帧。例如,当此处的SDR的两个实现使用上文所描述的示例性WiFi实现并带有巨帧优化时,数据的吞吐量可以增加。例如,当帧大小从IKB增大到6KB时,端对端吞吐量从5. 9Mbps到8. 2Mbps增大了39%。然而,当帧大小进一步增大到7KB时,吞吐量下降,因为帧差错率也随着大小而增大。如此,在某一时刻,增大的差错将抵消降低开销的好处。然而,值得注意的是,默认的商用基于硬件的NIC拒收大于2304字节的帧,即使那些帧可以被成功地解调。另外,还应指出,虽然发射巨帧的能力只是一个可能的优化,但是该能力表明由此处的SDR的实现所提供的完全可编程性使研究人员能使用便宜的通用计算设备SDR平台来探索这样的“假设”问题。TDMA MAC为评估此处的SDR的各实现准确地控制帧的发射时间的能力,实现了以预定义的时间间隔调度帧发射的简单的时分多址(TDMA)MAC算法。MAC状态机(SM)在如上文参考图9所讨论的ethread中运行,MAC SM连续地查询计时器以检查预定义的时间量是否已经过去。如果是,则MAC SM指示RCB发出帧。修改是简便易行的,向MAC算法添加了大约20行的附加代码。由于RCB可以向示例性WiFi实现指出何时发射完成,并且帧的准确的大小是已知的,因此,当帧发射时,有可能计算准确的时间。在重负载下利用各种调度时间间隔进行了测试,在此期间,复制了本地磁盘上的文件,从附近的服务器下载了文件,同时回放HD视频,以用于确定平均错误和错误的标准偏差。发现平均错误小于I U s,这对于大多数无线协议是足够的。此外,被定义为与预先定义的调度晚了 2 y s发生的数据包发射的离群值在少于0.5%的时间中会出现。无线电控制板接口和消息传递协议 图12示出了用于使无线电控制板(RCB) 1202能与各种不同的RF前端1204中的任何一种连接的无线电控制板接口 1200的示例性实现。在所示出的示例中,RCB 1202可以对应于上文所讨论的RCB 116、214、302、904中的任何一个,并包括用于控制RF前端1204和计算设备的系统总线(诸如上文所讨论的(已示出)计算设备200的系统总线212、系统总线112)之间的数据传输的功能。在所示出的实现中RCB 1202包括控制器1206,该控制器1206可以对应于FPGA 308或能够执行上文所讨论的RCB的功能的其他电路。RCB1202还包括板载存储器1208,该板载存储器1208可以对应于上文所讨论的板载存储器324,诸如用于数据缓冲和信号缓存的。RCB 1202还包括使RCB 1202能连接到计算设备200的系统总线212的总线接口 1210。如上文所讨论的,系统总线212可以是PCIe总线或其他高速类型的总线,而总线接口 1210是使RCB 1202能作为即插即用设备连接到计算设备的PCIe插槽的PCIe接口或PCI Express卡接口。RF前端1204包括控制器1212、模拟-数字和数字-模拟转换器1214、RF电路1216、一个或多个天线1218以及板载存储器1220。RF前端1204可以对应于上文所讨论的RF前端118、216、304、930中的任何一个,或其他RF前端。用于可操作地连接RF前端1204与RCB 1202的接口 1200可包括位于RCB1202上的一个或多个LVDS (低电压差分信号)接口或连接器1222,以及位于RF前端1204上的一个或多个LVDS接口或连接器1224。在所示出的实现中,RCB 1202包括四个LVDS连接器1222,其中两个用于连接RF前端1204上的两个LVDS连接器1224。在所示示例中,两个LVDS连接器1222、1224被用来支持两个无线电或两个不同的通道,诸如对于多个输入和多个输出(MMO)应用程序等等。在其他实现中,RF前端1204可以只要求用于可操作地与RCB1202连接的单个LVDS连接器1222,或者RF前端可以与RCB1202上的四个或更多LVDS连接器1222进行连接,用于各种多个通道或多个连接实现。此外,尽管此处作为示例性接口描述了 LVDS接口 1200,但是,其他接口也可以和SDR平台一起使用。现在将描述可以与LVDS接口 1200 —起使用的消息交换协议的各实现。此处所描述的消息交换协议能实现RCB 1202和RF前端1204之间的数据、控制消息、状态消息、时钟信息及其他类型的消息或信号的交换。消息交换协议的各实现包括两层物理层和链路层。物理层包括时钟控制、串行化、低级别的编码以及训练。例如,可以使用双倍数据速率(DDR)模式来通过LVDS接口传输数据。在一些实现中,时钟信号是在专用LVDS引脚对(即,如下文所描述的,构成LVDS通道的正负的引脚对)上发射的。可以在时钟信号的上升和下降缘,即,在DDR模式下,传输和采样数据。在一些实现中,时钟速率可以比较高,例如,400MHz或更多。此外,可以在接口上提供用于在每一方向上传递时钟信号的专用线路或通道,即,clock_in通道和clock_out通道,各自使用专用的LVDS引脚对,如下面进一步描述的。物理层还可以包括用于促进LVDS功能的串行器和解串行器。例如,LVDS接口是使输入数据宽度能比LVDS接口的可用线路或通道的实际数量宽的串行化的接口。另外,物理层还可包括对通过接口传输的数据的标准8b/10b编码,用于实现DC(直流电)平衡和有限的差异。例如,8b/10b编码是线编码技术,该编码技术将8比特码元映射到10比特码元,以实现DC平衡和有限的差异,同时仍实现足够的状态改变以允许时钟恢复。根据8b/10b编码,至少20个比特的串中的I和0的计数之间的差不超过2,而连 续的I或0的最大数量被限于合理的数量。如此,通过遵守接收到的序列中的变换,可以恢复时钟周期,而同时具有最大允许的运行长度能保证这样的时钟恢复。物理层还可以包括训练和自适应调整(即,调节)特征。例如,LVDS发送器和LVDS接收器可以自适应地调整采样阶段,以调节LVDS接口来实现改善的性能。为促进自适应调整,LVDS发送器通过数据线发送训练模式,而LVDS接收器调节时钟信号的相位,并尝试确定对数据进行采样的最佳时间。另外,物理层还可以包括使用状态LVDS引脚对(即,下面所描述的status_in或status_out引脚对)的专用的状态通道。状态信号指出通过数据线传递的数据是正常的工作数据(即,对应于RF信号的数字样本)还是用于调节接口 1200的训练数据。例如,在训练期间,状态信号将指出“目的地未准备好”,直到训练阶段完成。消息传递协议的链路层定义通过LVDS接口 1200交换的消息格式。例如,如上文所提及的,状态消息在专用的状态通道(即,专用status_in通道和专用status_out通道)上在每一方向传输,用于指不LVDS接收器的状态。在一些实现中,有三种可能的状况状态“复位”、“目的地未准备好”和“目的地已准备好”。“复位”状态表示,LVDS接口的LVDS接收器处于复位状态,在复位完成以前不能接收数据。“目的地未准备好”状态表示,LVDS接口的接收器当前不能接收数据,因为接收器要么处于训练阶段,要么接收器的FIFO缓冲器已满。在一些实现中,当LVDS接收器的状态是“接收器未准备好”时,LVDS发送器发送训练模式以使得LVDS接收器能够自适应地调整时钟信号的相位。“目的地已准备好”状态是表示LVDS发送器被允许向LVDS接收器发送工作数据的正常状态。在示例性实现中,状态可以使用下面的比特模式来编码复位01010101 ;目的地未准备好0000111 ;目的地已准备好00110011。作为一个示例,状态信号的比特率是相对应的时钟信号的1/5,例如,status_out信号的比特率等于cl0ck_0Ut信号的比特率除以5。链路层还包括对用于在RCB和RF前端之间传输数据的数据消息的编码。如上文所描述的,通过接口 1200传递的数据可包括从由RF前端接收到的并从RF前端传递到RCB的RF信号导出的数字样本(即,data_in),或由RCB从计算设备接收到的,并从RCB传递到RF前端以便作为RF信号发射的数字样本(即,data_out)。此外,通过LVDS接口 1200传递的数据可以被封装到数据帧或编码的消息中,然后,数据在LVDS引脚对上传输,每一数据帧都包含预定数量的字节的数据。下面将参考图14另外描述数据消息的帧的示例性格式。在一些实现中,数据通过LVDS接口在每一方向在四个专用通道(即,四个data_in通道和四个data_out通道)上传输。如此,可以提供四个相应的数据专用的LVDS引脚对(即,每一引脚对都包括正引脚和负引脚,以构成用于传输消息的通道,如下面另外描述的),用于在每一方向传输数据。此外,例如,数据流还被以循环的方式分发到专用于传递数据的四个LVDS引脚对。如此,如果在数据队列中有四个数据消息或帧,则每一 LVDS引脚对都可以接收四个数据消息的相应的一个数据消息。链路层还使用专用于控制消息的LVDS引脚对在每一方向的专用控制通道上传输控制和确认(ACK)消息。如下面参考图15所描述的,可以使用固定长度帧来编码和传输控制消息。为确保控制消息的可靠传输,还使用控制通道,响应于正确地接收到的控制消息,返回ACK。作为示例,ACK消息可以是固定的一字节帧,例如,带有值0x5F。否定确认(NACK)也可以被定义为固定一字节帧,例如,带有值OxAF。图13示出了对应于上文所讨论的LVDS连接器1222、1224的,并且被配置成与上文所讨论的协议一起使用的LVDS连接器1302的示例性实现。LVDS连接器1302包括用于提供14个不同的通道的编号为1-28的14对引脚。这些引脚对中的七对充当接收或“in”通道1304(即,RCB接收由RF前端作为RF信号接收到的数据),另外七对引脚充当发射或 “out”通道1306 (即,RCB将数据从计算设备传递到RF前端,以便作为RF信号传输)。每一LVDS通道都包括一对引脚,S卩,正(P)引脚和负(N)引脚,以支持LVDS通信。在所示示例中,在接收端,使用 Status_in_Ppositive 引脚 1310 和 Status_in_Nnegative 引脚 1312 作为构成专用status_in线路或通道的LVDS引脚对,来传递status_in信息。使用Control_in&ACK_in_Ppositive 引脚 1314 和 Control_in & ACK_in_Nnegative 引脚 1316 作为专用的control_in通道的LVDS引脚对,来传递Control_in和ACK_in消息。使用相对应的正和负LVDS引脚对1318-1332上的四个数据通道DataOjn到Data3_in来传递接收到的数据。接收端时钟信号,clock_in在相应的正和负LVDS引脚1334、1336上传递。在发射端,status_out信号在相应的正和负引脚1340、1342上传递;Control_out & ACK_out信号在引脚1344、1346上传递;数据在相应的引脚1348-1362上的四个数据通道Data0_out到Data3_out上传递;而发射端时钟信号,clock_out,在相应的正和负LVDS引脚1364、1366上传递。如此,可见,此处的协议和LVDS接口为状态信号、控制消息和时钟信号建立了与用于数据消息的LVDS通道分开的单独的LVDS通道。图14示出了根据此处所描述的消息传递协议的用于编码数据消息1400的示例性帧格式。数据消息1400通过上文所讨论的LVDS接口 1200从RCB传递到RF前端或从RF前端传递到RCB。在所示出的示例数据消息1400中,根据此处的协议,数据帧格式包括一字节起始帧定界符(SFD)字段1402。SFD1402信令消息的开始,并可以具有例如值0xF5。SFD字段1402后面是一字节长度的字段1404,该字段1404指定消息1400的数据有效负载部分1406的长度,接下来是数据有效负载1406。例如,数据有效负载1406的最大长度可以限于特定预定的大小,如256个字节。数据有效负载1406包括在RCB 1202和RF前端1204之间交换的实际工作数据。此外,尽管此处示出和描述了数据消息1400的示例性帧格式,但是,也可以使用用于在RCB和RF前端之间传递数据的其他格式。图15示出了根据此处的协议的用于编码控制消息1500的示例性帧格式。控制消息1500通常包含命令或参数,并通过上文所讨论的LVDS接口 1200,使用专用的control_out和control_in引脚对作为专用的LVDS线路或通道,从RCB传递到RF前端或从RF前端传递到RCB。根据此处的协议的控制消息1500的所示出的格式包括一字节起始帧定界符(SFD) 1502,接下来是提供控制消息1500的命令或参数的六字节命令和参数字段1504。一字节CRC 1506(循环冗余校验)、校验和等等被包括在控制消息的末尾处,用于确保消息被正确地接收。作为示例,当使用CRC-8时,使用下面多项式来计算CRC x~8+x~7+x~6+x~4+x~2+l。此外,尽管此处示出和描述了数据消息1500的示例性格式,但是,也可以使用用于在RCB和RF前端之间传递控制消息的其他格式。图16示出了在RCB 1202和RF前端1204之间实现消息传递协议的接口 1200的示例性图。如上文所讨论的,消息传递协议包括物理层1600、RCB链路层1602和RF前端链路层1604。在一些实现中,参考图16所描述的协议和接口 1200的各种编码器、解码器及其他模块可以通过RCB 1202上的相应的控制器1206以及RF前端1204上的控制器1212,分别通过存储在诸如板载存储器1208、1220之类的计算机可读存储介质中的执行指令来实现。在其他实现中可以在RCB 1202和/或RF前端1204上提供用于实现相同功能的专用电路和/或处理器。如上文所讨论的,RCB 1202的状态和RF前端1204的状态可以是三种状态中的一个,即,复位、目的地已准备好、或目的地未准备好。根据当前状态,RCB生成状态信号1606,该状态信号1606表示通过数据线正在向RF前端发送的数据的类型,S卩,是训练数据还是工作数据(例如,对应于RF信号的数字样本)。例如,在训练状态,RCB向RF前端发送训练数据,或反之,用于执行对LVDS接口的调节。另一方面,在正常工作状态,RCB向RF前端发送数字样本及其他信息,或反之。在框1606,状态信号被传递到物理层1600中的状态编码器1608。状态编码器1608编码RCB的当前状态信号,以便传输到RF前端。作为一个示例,状态信号的比特率是相对应的时钟信号的比特率的1/5,例如,status_out信号的比特率等于clock_out信号的比特率除以5。状态编码器1608在专用的status_0ut LVDS引脚对(例如,上文所讨论的引脚1340、1342)上将status_out信号传递到RF前端1204上的状态解码器1610。状态解码器1610解码status_out信号,以确定数据的当前状态,然后,在框1612,将状态传递到RF前端上的其他模块。此外,在进行训练的情况下,当完成训练时,“训练完成”信号1614被提供到状态编码器1608,并传递到状态解码器1610,状态解码器1610输出训练完成信号1616,如下文另外描述的。另一方面,RF前端生成其自己的当前状态的状态信号1618 (status_in),并将其传递到状态编码器1620。状态编码器1620将状态信号编码为status_in信号,并在专用的status_in LVDS引脚对(例如,上文所讨论的引脚1310、1312)上将status_in信号传递到RCB 1202上的状态解码器1622。状态解码器1622解码从RF前端接收到的状态信号,并在框1624,将状态传递到RCB上的其他模块。此外,在进行训练的情况下,当完成训练时,训练完成信号1626被提供到状态编码器1620,并传递到状态解码器1622,状态解码器1622输出训练完成信号1628,如下文另外描述的。另外,如上文所讨论的,RCB 1202从计算设备接收要被传递到RF前端1204以便作 为无线电信号发射的数据(例如,数字样本)。在将数据传递到RF前端1204之前,数据可以被临时存储在RCB 1202上的数据FIFO传输缓冲器1630(数据FIF0_TX)中。用于发射的数据从FIF0_TX缓冲器1630递送到RCB链路层1602中的数据帧编码器1632。数据帧编码器1632使用上文参考图14所讨论的帧格式,将数据编码为数据消息1400。然后,经格式化的数据消息1400被传递到物理层1600中的LVDS发送器1634,以便在四个专用的data_out通道引脚对(例如,上文所讨论的引脚1348-1362)中的一个上传递到RF前端1204上的LVDS接收器1636。在一些实现中,数据消息以循环的方式被串行化并分配给四个数据通道引脚对中的一对,虽然也可以使用其他调度技术。LVDS发送器1634可以以双倍数据速率传输,即,在时钟信号的上升和下降缘,还使用8b/10b编码来传递数据消息。在非训练数据的传递期间,RF前端上的LVDS接收器1636接收已编码的数据消息,并将数据消息传递到RF前端链路层1604中的数据帧解码器1638。数据帧解码器1630解码数据消息,并将来自经解码的消息的数据传递到数据FIFO缓冲器1640中。然后,数据从数据FIFO 1640传递到数字-模拟转换器1642,该转换器1642将数据的数字样本转换为模拟波形,以便由RF前端1204上的RF电路作为RF信号来发射。类似地,另一方面,在框1644,由RF前端1204接收到的无线电信号被模拟-数字转换器转换为数字数据。数据可以被临时存储在数据FIFO缓冲器1646中,然后,传递到 RF前端链路层1604中的数据帧编码器1648中。如上文参考图14所描述的,数据帧编码器1648将数据编码为数据消息格式,并将数据消息1400传递到LVDS发送器1650,该LVDS发送器1650执行类似于上文所描述的LVDS发送器1634的功能。LVDS发送器1650通过四个专用的LVDS data_in通道引脚对(例如,上文所描述的引脚1318-1332)中的一对,将数据消息传递到RCB 1202上的LVDS接收器1652,该LVDS接收器1652类似于上文所描述的LVDS接收器1636。LVDS接收器1652接收数据消息,并将数据消息传递到数据帧解码器1654。数据帧解码器1654解码数据消息,并将数据消息传递到数据FIFO接收缓冲器1656 (数据FIF0_RX),用于最终从RCB传递到计算设备。此外,在训练状态,当LVDS接收器的状态是“目的地未准备好”时,LVDS发送器1634、1650可以分别向LVDS接收器1636、1652发送包括训练模式的训练信息。LVDS接收器可以使用此训练模式来利用时钟信号优化采样相位。例如,可以通过每一专用数据LVDS引脚对(S卩,分别是引脚1318-1332和1348-1362)来递送训练模式。在一些实现中,训练模式满足下面的条件(I)模式不符合有效的8b/10b数据码,以便区分训练数据与有效的工作数据;(2) “0”的数量和“I”的数量大致相等,以便实现DC平衡;以及⑶训练模式包括1、2、3、4和5个连续的相等比特,即,训练模式包括所有五个模式“0”、“1”、“00”、“11”、“ 000 ”、“111 ”、“ 0000 ”、“ 1111 ”、“ 00000 ”、以及“ 11111”,以便促进接收到的时钟信号和数据之间的相位调整,这是训练的主要目的。当训练完成时,LVDS接收器递送训练完成信号1614、1620,如上文所讨论的,这些信号1614、1620被分别作为训练完成信号1616、1628传递到LVDS发送器。另外,如上文所讨论的,控制消息和ACK在RCB 1202和RF前端1204之间在与数据线分开的控制线上传递。RCB 1202可以首先将控制命令或参数放在控制FIFO传输缓冲器1660 (Crtl FIF0_TX)中。然后,控制命令或参数被传递到RCB链路层1602中的控制消息和ACK编码器1662。控制消息和ACK编码器作为控制消息来编码命令或参数,诸如以上文参考图15所描述的控制消息1500的帧格式。然后,控制消息被传递到LVDS发送器,该发送器在由LVDS引脚对(即,上文所讨论的引脚1344、1346)构成的专用的control out通道上将控制消息传递到RF前端1204上的LVDS接收器1636。LVDS接收器将控制消息传递到控制和ACK解码器1664,该解码器1664解码控制消息,以提取命令或参数。命令或参数被传递到无线电寄存器表1670,并可以是,例如,寄存器写入命令1666或寄存器读取命令1668。无线电寄存器表1670被无线电控制器1212访问,而控制命令或参数从而实现对RF前端1204的控制。另一方面,寄存器读回1674或无线电接收到的信号强度指示(RSSI) 1676可以作为控制参数从RF前端1204传递到RCB 1202。参数被传递到控制和ACK编码器1678,该编码器1678将参数编码为控制消息1500,如上文参考图15所讨论的。经编码的控制消息被传递到LVDS发送器1650,并在由LVDS引脚对(例如,上文所讨论的引脚1314、1316)构成的专用的control_in通道上传输到RCB 1202上的LVDS接收器1652。LVDS接收器1652将接收到的控制消息传递到控制和ACK解码器1680,该解码器1680解码接收到的控制消息,并将参数传递到控制FIFO接收缓冲器1682,然后,参数从该控制FIFO接收缓冲器1682传递到RCB控制器上。此外,RCB 1202上的LVDS发送器1634还通过使用LVDS引脚对(例如,上文所讨 论的引脚1334、1336)来在专用的clock_out通道上传递信号,将clock_out信号传递到RF前端1204上的LVDS接收器1636。类似地,RF前端1204上的LVDS发送器1650通过使用LVDS引脚对(例如,上文所讨论的引脚1364、1366),在另一专用时钟通道上传递clock_in信号,来将clock_in信号传递到RCB 1202上的LVDS接收器1652。如上文所讨论的,当在物理层1600执行训练时,LVDS接收器1636、1652中的一个或两者调节时钟信号的相位,来确定对数据进行采样的最佳时间。响应于通过控制通道接收到的控制消息,置位ACK (确认消息)。当控制与ACK解码器1670、1680成功地接收到控制消息时,ACK接收到的信号1684、1686,分别被发送到相对应的控制与ACK编码器1678、1662。控制与ACK编码器1678、1662生成ACK消息,并分别将ACK消息传递到LVDS发送器1650、1634,再分别由LVDS发送器1650、1634将ACK消息分别发送到相对应的LVDS接收器1652、1636,再由LVDS接收器1652、1636将ACK消息传递到相应的LVDS发送器1634、1650。图17示出了 RCB 1202上的接口 1200的LVDS连接器1222的另一示例性布局。在图17的实现中,八个28针LVDS连接器1222位于RCB上,当在平面图中查看时,呈现网格图案,具有四个连接器1222的两行,以及两个连接器1222的四列。如从纵向中心线1702起计算,连接器1222被间隔了预定的横向距离1704。在一种实现中,横向距离1704在17. 78和20. OOmm之间;然而,也可以使用其他预定的横向距离1704。此外,连接器1222被间隔预定的纵向距离,如从连接器的一个短端到同一列中的相邻的连接器的相对应的短端计算。在一种实现中,预定的纵向距离1706在45. 085和48. OOmm之间;然而,也可以使用其他预定的纵向距离1706。图18示出了 RCB 1202上的接口 1200的LVDS连接器1222的另一示例性布局。在图18的实现中,四个28针连接器1222位于RCB的一侧,当在平面图中查看时,呈现第一网格图案,具有两个连接器1222的两行,以及两个连接器1222的两列。另外,四个28针连接器1222被排列在RCB 1202的另一侧,当在平面图中查看时,呈现第二网格图案,具有两个连接器1222的两行,以及两个连接器1222的两列,第二网格图案偏离第一网格图案。如从纵向中心线1802、1804、1806、1808起计算,连接器1222被间隔了预定的横向距离。在所示出的实施例中,中心线1802和1804之间的以及中心线1806和1808之间的横向距离1810在15. 24和18. OOmm之间,而中心线1804和1806之间的横向距离1704在17. 78和20. OOmm之间;然而,也可以使用其他预定的横向距离1704、1810。此外,连接器1222被间隔预定的纵向距离,如从连接器的一个短端到同一列中的相邻的连接器的相对应的短端计算。在一种实现中,预定的纵向距离1706在45. 085和48. OOmm之间;然而,也可以使用其他预定的纵向距离1706。从前述的内容可以看出,RCB 1202的体系结构和用于连接RCB 1202与RF前端1204的接口 1200实现了计算设备、RCB 1202和RF前端1204之间的对应于RF信号的数据的传递。各实现还与专用数据通道和专用控制通道一起提供消息传递协议,分别用于传递 已编码的数据消息和控制消息。各实现还提供了用于传递相应的状态和时钟信号的单独的专用状态通道和时钟通道。在一些实现中,接口 1200是用于提供高速数据传递的LVDS接口。此外,还可以进入用于根据时钟信号的相位来调节接口的训练模式。额外的实现此处的SDR的各实现在通用计算设备体系结构上提供完全可编程的软件定义的无线电平台。此处的SDR的各实现组合了基于硬件的SDR平台的性能和保真度与基于GPP的SDR平台的编程灵活性。此处的SDR平台的各实现在某些示例中是在实现使用802. Ila/b/g协议进行操作的软件无线电的上下文中描述的。然而,也可以使用此处的SDR平台,实现额外的类型的软件无线电,如3GPP LTE(长期演进)、W-CDMA, GSM 802. lln、WiMax和各种其他无线电协议和标准。由此处的SDR的各实现所提供的灵活性使得它成为试验诸如ANC(模拟网络编码)或PPR(部分数据包恢复)之类的新颖的无线协议的方便的平台。此夕卜,通过能够使用多个核,此处的SDR的各实现可以被扩展以支持甚至更加复杂的PHY算法,如MIMO (多个输入多个输出)或SIC (连续的干扰抵消)。另外,此处的实现也不一定仅限于任何特定编程语言。应该理解,可以使用各种编程语言来实现此处所描述的原理。此外,还应该注意,图1、2、3、4、5、8和9中所示出的系统配置纯粹是其中可以提供各实现的系统的示例性系统,并且,各实现不仅限于所示出的特定硬件配置。显然,此详细描述提供了各种示例性实现,如附图所描述和所示出的。本发明不限于此处所描述并示出的实现,而可扩展到其他实现,如本领域技术人员已知或将变得已知的。说明书中对“一个实现”、“该实现”、“这些实现”或“某些实现”的引用意味着结合这些实现所描述的特定特征、结构或特性被包括在至少一个实现中,并且这些短语在说明书各处的出现不一定都指代同一实现。另外,在说明书中,阐明了众多具体细节以提供全面的公开。然而,本领域的普通技术人员可以明白,这些具体细节并不是在所有实现中都是必需的。在其它环境中,未详细描述和/或以框图形式示出公知的结构、材料、电路、进程和接口以免不必要地使公开内容变得晦涩难懂。Mrt此处所描述的实现提供了 SDR平台和高性能的PHY处理库。此处的SDR的各实现使用硬件和软件技术两者在通用计算设备体系结构上取得高吞吐量和低延迟以用于实现高速SDR。实现包括用于使用消息传递协议来在RCB和RF前端之间交换数据的LVDS接口。此外,训练状态可以用于根据时钟信号的相位来调节RCB和RF前端之间的接口,以优化数据访问。另外,实现还包括SDR平台,该平台可使用户能够完全以软件在通用计算设备体系结构上开发高速无线电实现,如IEEE 802. lla/b/g PHY和MAC。例如,时间紧迫的任务、MAC和PHY处理可以根据需要被改变和重新编程,以便实现各种目的。此外,还描述了 SDR的特定示例,包括可以使用802. lla/b/g标准与商用无线NIC进行交互操作的示例性WiFi无线电系统。尽管用对结构特征和/或方法动作专用的语言描述了本主题,但可以理解所附权利要求书中定义的主题不限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。另外,本领域技术人员可以理解,用于实现相同用途的任何方案都可以代替此处所公开的特定实现。本发明旨在覆盖所公开的实现的任一和所有改编或变型,并且可以理解后面的权利要求中所使用的术语不应被解释为将本专利限于说明书中所公开的具体实现。相反,本专利的范围完全由所附权利要求书以及这些权利要求所授权的等效技术方案的完整范围来确定。权利要求
1.一种无线电控制板(RCB),包括 控制器; 用于可操作地连接所述RCB以便与计算设备进行通信的总线接口 ;以及 用于可操作地连接所述RCB与RF前端以便在所述RCB和所述RF前端之间交换数据的低电压差分信号(LVDS )接口。
2.根据权利要求I所述的无线电控制板,其特征在于,所述LVDS接口包括至少一个LVDS连接器,提供用于传输数据消息的至少一个LVDS数据通道和用于在所述RCB和所述RF前端之间传输控制消息的单独的LVDS控制通道。
3.根据权利要求2所述的无线电控制板,其特征在于,所述LVDS接口还包括用于递送表示LVDS接收器是否能够接收数据的状态信号的LVDS状态通道,其中所述LVDS状态通道是与所述至少一个LVDS数据通道和所述LVDS控制通道分开的。
4.根据权利要求3所述的无线电控制板,其特征在于,所述LVDS接口还包括用于递送时钟信号的LVDS时钟通道,其中所述LVDS时钟通道是与所述LVDS状态通道、所述LVDS控制通道和所述至少一个LVDS数据通道分开的。
5.根据权利要求I所述的无线电控制板,其特征在于,所述LVDS接口包括至少一个LVDS发送器和至少一个LVDS接收器,其中所述至少一个LVDS发送器被配置成向所述LVDS接收器发送训练模式,用于调节所述LVDS接口的时钟相位。
6.根据权利要求I所述的无线电控制板,其特征在于,所述LVDS接口包括至少四个28针LVDS连接器,它们分两行和两列排列在所述RCB上,每一行或列有两个LVDS连接器,其中所述LVDS连接器的纵向中心线之间的距离在17. 78和20. OOmm之间。
7.根据权利要求I所述的无线电控制板,其特征在于,所述系统总线是外围组件互连快捷(PCIe)总线。
8.根据权利要求I所述的无线电控制板,其特征在于,还包括数据帧编码器,所述数据帧编码器被配置成,将所述RCB上的数据编码为数据消息的有效负载部分,然后再将所述数据消息发射到所述RF前端,所述数据消息具有起始帧定界符和长度指示符。
9.根据权利要求I所述的无线电控制板,还包括 在所述RCB上实现的、从所述RF前端上的LVDS发送器接收传入的编码的数据消息的LVDS接收器;以及 所述RCB上的解码所述编码的数据消息以得到传入的数据,用于将所述传入的数据存储在所述RCB上的缓冲器中的数据帧解码器。
10.一种方法,包括 通过通信接口连接具有处理器和存储器的无线电控制板(RCB)以便可操作地与射频(RF)前端进行通信,其中所述RCB还连接用于可操作地与计算设备的系统总线进行通信; 从所述计算设备将传出数据接收到所述RCB处的所述存储器中; 通过所述RCB将所述传出数据编码为数据消息;以及 通过所述通信接口将所述编码的数据消息传递到所述RF前端。
11.根据权利要求10所述的方法,其特征在于,还包括 将控制参数编码为控制消息,用于通过所述通信接口递送到所述RF前端, 其中,所述控制消息包括起始帧定界符,所述控制参数和循环冗余校验值,其中,所述控制消息通过所述通信接口在与用于递送所述数据消息的一个或多个数据通道分开的专用控制通道上递送到所述RF前端。
12.根据权利要求10所述的方法,其特征在于,还包括通过所述通信接口在专用状态通道上,在所述RCB处接收所述RF前端的状态,其中,所述状态表示通过所述专用数据通道递送的数据是训练数据还是工作数据。
13.根据权利要求10所述的方法,其特征在于,还包括通过所述通信接口递送训练数据,其中,所述训练数据使LVDS接收器能调节时钟信号的相位,以便优化接收到的数据的读取。
14.根据权利要求10所述的方法,其特征在于,所述通信接口是LVDS(低电压差分信号)接口,所述方法还包括通过所述RCB上的LVDS发送器来向所述RF前端发送所述数据消息,其中,所述LVDS发送器使用8b/10b编码来向所述RF前端递送所述数据消息。
15.一种无线电控制板(RCB),包括 耦合到RCB存储器的RCB控制器; 用于可操作地连接所述RCB以与计算设备的系统总线进行通信,以便在所述RCB和所述计算设备之间交换数据的总线接口; 用于可操作地连接所述RCB与射频(RF)前端以便在所述RCB和所述RF前端之间交换数据的低电压差分信号(LVDS )接口, 其中,所述LVDS接口包括至少一个LVDS连接器,提供用于在所述RCB和所述RF前端之间传输数据消息的至少一个LVDS数据通道的,以及用于在所述RCB和所述RF前端之间传输控制消息的单独的LVDS控制通道。
全文摘要
无线电控制板使用消息协议,通过包括单独的数据和控制通道的接口,与射频(RF)前端交换数据。也可以通过该接口传递用于调节时钟相位的训练数据。
文档编号G06F9/46GK102667742SQ201080043940
公开日2012年9月12日 申请日期2010年9月15日 优先权日2009年9月30日
发明者张健松, 张永光, 谭尡 申请人:微软公司