用以执行快速旋转运算的系统及方法 【技术领域】
本发明大体上涉及执行快速旋转运算。背景技术 技术上的进步已产生更小且更强大的计算装置。举例来说, 当前存在各种各样的 便携型个人计算装置, 包括无线计算装置, 例如, 小巧、 轻便且易于由用户携带的便携型无 线电话、 个人数字助理 (PDA) 及寻呼装置。更具体地说, 例如蜂窝式电话及 IP 电话的便携 型无线电话可经由无线网络传达语音及数据包。
接收经由无线链路传达的数据包括数据解码功能。 数据解码功能可涉及使用乘法 运算的一个或一个以上向量旋转运算。举例来说, 可将无线数据编码为包括具有复值的向 量 ( 例如, 同相分量及正交分量 ) 之间的角位移的一系列符号。从这些符号中检索数据可 能需要旋转向量 ( 例如 ) 以补偿在解码期间累积的相位。这些向量运算可能会消耗有限的 处理资源, 尤其在便携型装置处。
发明内容
揭示执行快速向量旋转运算的系统及方法。 可按经由一个或一个以上控制值指定 的旋转度或角位移围绕坐标原点旋转由端点坐标数据识别的向量。 所揭示的实施例可结合 编码或解码无线数据 ( 例如, 在调制解调器装置或处理器处 ) 或结合其它应用而操作。
在特定实施例中, 揭示一种包括在处理器处执行单一向量旋转指令的方法。单一 向量旋转指令包括接收指示第一坐标及第二坐标的第一数据、 接收指示选自九十度倍数集 合的第一旋转值的第一控制值及将输出数据写入到数据存储元件, 其中所述输出数据对应 于按所述第一旋转值旋转的所述第一数据。
在另一特定实施例中, 揭示一种处理器, 其包括用以响应于控制值选择性地交换 第一坐标数据与第二坐标数据的装置。 所述处理器还包括用以对所述第一坐标数据求反以 产生第一经求反的坐标数据及对所述第二坐标数据求反以产生第二经求反的坐标数据的 装置。 所述处理器进一步包括用以响应于所述控制值选择性地输出所述第一坐标数据或所 述第一经求反的坐标数据及选择性地输出所述第二坐标数据或所述第二经求反的坐标数 据的装置。所述控制值指示由所述第一坐标数据及所述第二坐标数据表示的向量的旋转 度。
在特定实施例中, 揭示一种系统, 其包括调制解调器, 所述调制解调器适于执行快 速向量旋转运算。 所述系统包括收发器, 所述收发器经配置以耦合到天线。 所述调制解调器 经耦合以从所述收发器接收无线信号数据。所述无线信号数据包括可对应于坐标位置 ( 例 如, 向量端点的位置 ) 的符号数据。调制解调器包括纵横制装置, 所述纵横制装置经配置以 响应于控制值选择性地交换与所述符号数据相关联的第一坐标数据与第二坐标数据。 所述 调制解调器还包括向量加法器装置, 所述向量加法器装置经配置以对所述纵横制装置的输 出求反。所述调制解调器进一步包括多路复用器, 所述多路复用器经耦合以响应于所述控制值选择性地输出所述向量加法器装置的输出或所述纵横制装置的输出。 所述控制值指示 由所述第一坐标数据及所述第二坐标数据表示的第一向量的旋转度。
在另一特定实施例中, 揭示一种可由处理器执行以在单一执行循环中执行向量旋 转的处理器指令。所述处理器指令包括指令名及包括第一坐标及第二坐标的第一字段。所 述处理器指令还包括第二字段, 所述第二字段包括指示旋转所述第一及第二坐标数据的第 一量的第一控制值。在所述处理器指令的执行后, 所述处理器即刻将经旋转的数据存储到 存储器中。 所述经旋转的数据对应于按由所述第一控制值指示的所述第一量旋转的所述第 一及第二坐标数据。
由所揭示的实施例提供的一个特定优势为由快速向量旋转运算实现的无线数据 的较高速解码。在审阅整个申请案之后, 本发明的其它方面、 优势及特征将变得显而易见, 整个申请案包括以下部分 : “附图说明” 、 “具体实施方式” 及 “权利要求书” 。 附图说明
图 1 为经配置以执行快速向量旋转运算的便携型通信装置的特定说明性实施例 的框图 ;
图 2 为用以执行快速向量旋转指令的系统的特定说明性实施例的框图 ; 图 3 为用以执行向量坐标旋转的系统的第一说明性实施例的框图 ; 图 4 为用以产生快速向量旋转运算的系统的特定说明性实施例的框图 ; 图 5 为用以执行向量坐标旋转的系统的第二说明性实施例的框图 ; 图 6 为向量坐标旋转系统的第一说明性实施例的数据流程图 ; 图 7 为向量坐标旋转系统的第二说明性实施例的数据流程图 ; 图 8 为用以执行快速向量旋转运算的方法的第一说明性实施例的流程图 ; 及 图 9 为用以执行快速向量旋转运算的方法的第二说明性实施例的流程图。具体实施方式
参看图 1, 其描绘经配置以执行快速向量旋转运算的电子装置的特定说明性实施 例的框图且将其大体表示为 100。 装置 100 包括处理器 ( 例如, 数字信号处理器 (DSP)110), 所述处理器耦合到存储器 132 且还耦合到经配置以执行快速向量旋转运算 190 的调制解调 器 140。
图 1 还展示显示器控制器 126, 其耦合到数字信号处理器 110 及耦合到显示器 128。编码器 / 解码器 (CODEC)134 还可耦合到数字信号处理器 110。扬声器 136 及麦克风 138 可耦合到 CODEC 134。
调制解调器 140 可耦合到收发器 146。收发器 146 可经配置以耦合到无线天线 142。收发器 146 可经配置以产生对应于当收发器 146 耦合到天线 142 时接收的无线信号 的坐标数据 ( 例如, 符号相位数据 )。调制解调器 140 经配置以将快速向量旋转运算 190 应 用到从收发器 146 接收的坐标数据, 作为用以从无线信号中检索经编码数据的解码过程的 一部分。
举例来说, 符号相位数据可表达为具有在坐标原点处的一端的向量 ( 例如, 在 (x, y) 坐标系统中的坐标 (0, 0)), 且可由向量的另一端的坐标描述 ( 例如, 在从正 x 轴四十五度角度处的向量的坐标 (1, 1))。作为说明性实例, 在坐标平面内按九十度的旋转度 ( 即, 角位移 ) 执行 (1, 1) 向量的向量旋转产生经旋转的向量 (-1, 1)。按一百八十度执行 (1, 1) 向量的向量旋转产生经旋转的向量 (-1, -1)。按二百七十度执行 (1, 1) 向量的向量旋转产 生经旋转的向量 (1, -1)。
在特定实施例中, DSP 110、 显示器控制器 126、 存储器 132、 CODEC 134、 调制解调 器 140 及收发器 146 包括于系统级封装或芯片上系统装置 122 中。在特定实施例中, 输入 装置 130 及电源 144 耦合到芯片上系统装置 122。此外, 在特定实施例中, 如图 1 中说明, 显 示器 128、 输入装置 130、 扬声器 136、 麦克风 138、 无线天线 142 及电源 144 在芯片上系统装 置 122 外部。然而, 显示器 128、 输入装置 130、 扬声器 136、 麦克风 138、 无线天线 142 及电 源 144 中的每一者可耦合到芯片上系统装置 122 的组件 ( 例如, 接口或控制器 )。
在操作期间, 可在天线 142 处接收包括经编码数据的无线信号, 且可经由收发器 146 将对应坐标数据提供到调制解调器 140。举例来说, 坐标数据可表示向量的 X 及 Y 坐 标。调制解调器 140 可使用快速向量旋转运算 190 实施坐标数据的旋转作为解码过程的一 部分。快速向量旋转运算 190 可实现调制解调器 140 的每一处理循环的多个坐标旋转, 从 而实现数据的高速解码。此外, 快速向量旋转运算 190 可使坐标旋转能够在不使用乘法或 表查找的情况下执行, 从而减少了解码过程的功率消耗。 在特定实施例中, 调制解调器 140 包括管线式处理器, 所述管线式处理器经配置 以执行执行快速向量旋转运算 190 以在单一处理器执行循环期间执行多个向量坐标旋转 的指令。举例来说, 调制解调器 140 可从收发器 146 接收包括符号数据的无线信号数据, 符 号数据包括由第一坐标识别的第一向量及由第二坐标识别的第二向量。调制解调器 140 可 经配置以通过执行单一处理器指令而在单一执行循环期间执行对第一向量及对第二向量 的同时旋转运算。
举例来说, 在说明性实施例中, 调制解调器 140 包括管线式处理器, 所述管线式处 理器具有包括图 4 的系统 400 的执行单元, 即, 包括 : 纵横制装置, 其经配置以响应于控制值 选择性地交换第一向量的第一坐标数据与第二坐标数据 ; 向量加法器装置, 其经配置以对 所述纵横制装置的输出求反 ; 及多路复用器, 其经耦合以响应于所述控制值选择性地输出 所述向量加法器装置的输出或所述纵横制装置的输出。 控制值可指示由第一坐标数据及第 二坐标数据表示的第一向量的所要旋转度 ( 例如, 九十度的倍数 )。
在特定实施例中, 调制解调器 140 可不包括专用硬件组件及电路, 且可替代地为 在处理器 110 处执行的调制解调器应用 ( 例如, 交错的多线程管线式处理器的处理线程 ), 其中快速向量旋转运算 190 经执行以在处理器 110 的单一处理循环期间执行多个向量坐标 旋转。在又一实施例中, 快速向量旋转运算 190 可由专用硬件、 固件、 一个或一个以上其它 处理器或其任何组合执行。
参看图 2, 其描绘用以执行快速向量旋转运算指令的系统且将其大体表示为 200。 系统 200 包括处理器 202, 处理器 202 包括寄存器堆 204。处理器 202 经配置以接收旋转指 令 206。在特定实施例中, 系统 200 包括于图 1 的调制解调器 140 中, 且旋转指令 206 对应 于图 1 中描绘的快速向量旋转运算 190 的一部分。
在特定实施例中, 旋转指令 206 为可由处理器 202 执行以在单一执行循环中执行 向量旋转的处理器指令。旋转指令 206 包括描绘为名称 FastRotate( 快速旋转 ) 的指令名
260。旋转指令 206 还包括第一字段 (Rss)262 及第二字段 (Rt)264。旋转指令 206 将值 ( 例 如, 从执行向量旋转运算产生的经旋转的向量 ) 返回到地址 (Rdd)266。
在特定实施例中, 第一字段 Rss262 包括对应于寄存器堆 204 的第一寄存器 208 的 地址。第二字段 Rt262 包括对应于寄存器堆 204 的第二寄存器 222 的地址。返回地址 Rdd 266 对应于寄存器堆 204 的第三寄存器 240。
在特定实施例中, 处理器 202 经配置以响应于接收到旋转指令 206 而存取第一数 据 210 及第一控制值 224(C1)。 第一数据 210( 例如, 第一向量 ) 可包括来自源寄存器 Rss208 的向量的第一坐标 (x1)212 及第二坐标 (y1)214。在旋转指令 206 的执行后, 处理器 202 即 刻将经旋转的数据 242 存储到存储器 ( 例如, 寄存器堆 204 的第三寄存器 240) 中。经旋转 的数据 242 对应于按由第一控制值 224 指示的第一量旋转的第一数据 210, 且可将经旋转的 数据 242 作为经旋转的坐标 A 244 及 B 246 的集合存储于目的地寄存器 Rdd 240 处。在特 定实施例中, 处理器 202 包括多个执行单元 270 及 272, 其各自可适于在处理器 202 的单一 处理循环期间执行旋转指令 206。
在特定实施例中, 处理器 202 进一步经配置以在旋转指令 206 的执行后即刻从第 一寄存器 208 读取第二数据 216( 例如, 第二向量 ), 第二数据 216 包括第三坐标 (x2)218 及第四坐标 (y2)220。处理器 202 可进一步经配置以从第二寄存器 222 读取第二控制值 (C2)226。第二控制值 226 指示旋转第二数据 216 的第二量。处理器 202 可将第二经旋转的 数据 248 返回到寄存器堆 204 的第三寄存器 240。第二经旋转的数据 248 包括对应于按由 第二控制值 226 指示的第二量旋转的第二数据 216 的经旋转的坐标数据, 例如, 坐标 C 250 及 D 252 的集合。
在特定实施例中, 处理器 202 经配置以在旋转指令 206 的执行后即刻同时读取第 一数据 210 及第二数据 216。处理器 202 可进一步经配置以分别与第一数据 210 及第二数 据 216 同时读取第一控制值 224 及第二控制值 226 两者。处理器 202 可经配置以根据第一 控制值 224 对第一数据 210 执行第一旋转运算以产生经旋转的数据 242, 以及根据第二控制 值 226 对第二数据 216 执行第二旋转以产生第二经旋转的数据 248。可在具有由旋转指令 206 的返回地址 266 指示的地址的第三寄存器 240 处将经旋转的数据 242 及第二经旋转的 数据 248 同时写入到寄存器堆 204。
可使用单一执行单元 702 或 272 在单一处理器执行循环中执行读取第一数据 210、 第二数据 216、 第一控制值 224 及第二控制值 226 以及产生并存储经旋转的数据 242 及第二 经旋转的数据 244。因此, 系统 200 使处理器 202 能够在处理器 202 的每一执行循环内执行 多个向量旋转。举例来说, 作为非限制性说明性实例, 第一数据 210 及第二数据 216 可对应 于与在调制解调器处从收发器接收的连续符号值相关联的向量 ( 例如, 与无线接收器的正 交解码循环有关 )。
在特定实施例中, 可根据所说明的用于如下指示的伪码指令 vcrotate 的旋转逻 辑来执行旋转指令的执行 :
Rdd = vcrotate(Rss, Rt)
tmp = Rt[1:0] ;
if(tmp == 0){
Rdd.h[0] = Rss.h[0] ;Rdd.h[1] = Rss.h[1] ;
}else if(tmp == 1){
Rdd.h[0] = Rss.h[1] ;
Rdd.h[1] = sat_16(-Rss.h[0]) ;
}else if(tmp == 2){
Rdd.h[0] = sat_16(-Rss.h[1]) ;
Rdd.h[1] = Rss.h[0] ;
}else{
Rdd.h[0] = sat_16(-Rss.h[0]) ;
Rdd.h[1] = sat_16(-Rss.h[1]) ;
};
tmp = Rt[3:2] ;
if(tmp == 0){
Rdd.h[2] = Rss.h[2] ;
Rdd.h[3] = Rss.h[3] ;
}else if(tmp == 1){
Rdd.h[2] = Rss.h[3] ;
Rdd.h[3] = sat_16(-Rss.h[2]) ;
}else if(tmp == 2){
Rdd.h[2] = sat_16(-Rss.h[3]) ;
Rdd.h[3] = Rss.h[2] ;
}else{
Rdd.h[2] = sat_16(-Rss.h[2]) ;
Rdd.h[3] = sat_16(-Rss.h[3]) ;
};
在以上伪码中, Rss.h[n] 指代源寄存器 Rss 的第 n 个半字。举例来说, Rss 可包括 具有四个十六位半字的六十四位值, 所述六十四位值对应于分别在第一半字 Rss.h[0] 及 第二半字 Rss.h[1] 中的第一 x 及 y 数据, 及分别在第三半字 Rss.h[2] 及第四半字 Rss.h[3] 中的第二 x 及 y 数据。Rt 指代存储控制值的寄存器, 控制值包括在位 [1:0] 处的第一旋转 指示符及在位 [3:2] 处的第二旋转指示符。每一旋转指示符由表示四个值的集合中的一者 的两个位表示。 “零” 控制值表示零度旋转。 “一” 控制值表示负九十度或二百七十度旋转。 “二” 控制值表示九十度旋转。 “三” 控制值表示一百八十度旋转。函数 sat_16 校正从对零 值求反产生的饱和状况, 且 Rdd 表示含有四个十六位半字的目的地寄存器。
参看图 3, 其描绘用以执行坐标旋转的系统的第一说明性实施例且将其大体表示 为 300。系统 300 包括用以响应于控制值 C1 324 选择性地交换第一坐标数据 X1 320 与第 二坐标数据 Y1 322 的装置, 其经说明为交换电路 302。系统 300 进一步包括用以对第一坐 标数据 320 求反以产生第一经求反的坐标数据及对第二坐标数据 322 求反以产生第二经求 反的坐标数据的装置, 其在图 3 中经说明为求反电路 304。 系统 300 还包括用以响应于控制 值 C1 348 选择性地输出第一坐标数据或第一经求反的坐标数据及选择性地输出第二坐标数据或第二经求反的坐标数据的装置, 其经描绘为选择电路 308。 饱和逻辑电路 306 耦合到 求反电路 304。
在特定实施例中, 系统 300 经配置以接收第一坐标数据 320 及第二坐标数据 322, 且执行由第一坐标数据 320 及第二坐标数据 322 表示的向量的旋转。举例来说, 第一坐标 数据 320 可表示向量的 X 坐标, 且第二坐标数据 322 可表示所述向量的 Y 坐标。控制值 C1 324 可表示待对向量应用的旋转度。在特定实施例中, 控制值 C1 指示 90 度旋转的倍数。举 例来说, C1 可为可经设定为指示 0 度旋转的第一值、 指示 90 度旋转的第二值、 表示 180 度旋 转的第三值及表示 270 度旋转的第四值的二位数据项。应认识到, 归因于旋转的对称性, 大 于 270 度的 90 度的倍数及小于 0 度的 90 度的倍数等效于本文中描述的倍数中的一者。
在特定实施例中, 交换电路 302 经配置以接收第一坐标数据 320 及第二坐标数据 322, 以及控制值 324, 且输出第一经交换的输出 326 及第二经交换的输出 328。第一经交 换的输出 326 可响应于控制值 324 而对应于第一坐标数据 320 或第二坐标数据 322。类似 地, 第二经交换的输出 328 可取决于控制值 324 而对应于第一坐标数据 320 或第二坐标数 据 322。分别将第一经交换的坐标数据输出 326 及第二经交换的坐标数据输出 328 作为输 入 340 及 342 提供到选择电路 308。还分别将第一交换坐标数据输出 326 及第二交换坐标 数据输出 328 作为输入 330 及 332 提供到求反电路 304。 在特定实施例中, 求反电路 304 经配置以在第一输入 330 处接收第一经交换的数 据 326 且将第一经交换的数据 326 的求反的值提供到选择电路 308 的第一经求反的输入 344。求反电路 304 进一步经配置以在第二输入 332 处接收第二经交换的数据 328 且将第 二经交换的数据 328 的求反的值提供到选择电路 308 的第二经求反的输入 346。在特定实 施例中, 饱和逻辑电路 306 经配置以校正因求反电路 304 的运算引起的溢出状况。举例来 说, 在某些二进制数表示中, 当对 “0” 值求反时, 可能会将所得负 “0” 值翻译成不正确的结 果。因此, 饱和逻辑电路 306 经配置以检测并校正这些负饱和状况。
在特定实施例中, 选择电路 308 经配置以在控制输入 348 处接收控制值 C1, 且在第 一坐标输出 Xout 350 及第二坐标输出 Yout352 处选择性地输出对应于按由控制值 C1 指示的 量旋转的第一坐标数据 320 及第二坐标数据 322 的值。因此, 选择电路 308 可在第一交换 坐标输入 340 处接收第一经交换的输出 326 及在第一经求反的输入 344 处接收第一经交换 的输出 326 的经求反的值。选择电路 308 可选择性地将在第一交换坐标输入 340 及第一经 求反的输入 344 中的一者处接收的值提供到第一坐标输出 Xout 350。此外, 选择电路 308 可 接收第二交换坐标输入 342 及第二经求反的输入 346, 且可选择性地将在第二交换坐标输 入 342 及第二经求反的输入 346 中的一者处接收的值输出到第二坐标输出 Yout 352。
应认识到, 第一坐标输出 Xout350 及第二坐标输出 Yout352 表示在由第一坐标数据 320 及第二坐标数据 322 指示的输入向量按由控制值 C1 表示的 90 度的倍数旋转后所述输 入向量的旋转的结果。 在不执行表查找的情况下且进一步在不执行乘法运算的情况下产生 从选择电路 308 的输出。实情为, 采用二维向量旋转所固有的对称性以使用交换、 求反及选 择电路产生 90 度的倍数的旋转。因此, 系统 300 提供快速向量旋转的硬件实施方案, 例如, 可用于图 1 中描绘的调制解调器 140 中、 图 2 中描绘的处理器 202 的执行单元 270 及 272 中的一者或一者以上中、 其它调制解调器或处理器或其任何组合中。举例来说, 系统 300 可 包括于图形处理单元中。作为另一实例, 系统 300 可包括于适于处理调制解调器应用及图
形应用的管线式处理器的执行单元中。
作为一实例, 系统 300 可实施于多线程处理器的执行单元中。另外, 可将系统 300 实施为管线式处理器的管线执行过程的一部分。举例来说, 交换电路 302 可包括处理器的 多路复用器、 纵横制装置、 其它开关装置或电路或其任何组合中的一者或一者以上。 求反电 路 304 可包括算术逻辑单元 (ALU)、 加法器、 处理器的适于对输入值求反的其它电路或装置 或其任何组合。选择电路 308 可包括处理器的多路复用器、 开关或适于选择性地输出在一 个或一个以上输入处接收的值的其它电路或装置或其任何组合中的一者或一者以上。
参看图 4, 其描绘用以产生快速向量旋转运算的系统经描绘且将其大体表示为 400。系统 400 包括耦合到纵横开关 (crossbar)408 的寄存器堆 402。纵横开关 408 经耦合 以将输出提供到向量加法器 410 及到多路复用器 412 两者。向量加法器 410 将输出提供到 多路复用器 412。多路复用器 412 经耦合以将输出值提供到输出寄存器 414。
在特定实施例中, 寄存器堆 402 包括第一寄存器 404 及第二寄存器 406。 第一寄存 器 404 可包括对应于第一坐标 x1422 及第二坐标 y1424 的第一数据。 第一寄存器堆 404 还可 包括对应于第三坐标 x2426 及第四坐标 y2428 的第二数据。第二寄存器 406 可存储第一控 制值 C1430 及第二控制值 C2432。在特定实施例中, 第一寄存器 404 中的坐标数据 422-428 以及第二寄存器 406 中的控制值 430 及 432 对应于与无线发射或在调制解调器、 处理器或 其任何组合处接收的数据相关联的符号数据。 纵横开关 408 经配置以将在第一输入 434 处接收的数据选择性地提供到多路复用 器 412 的第一输入 446 及第二输入 448 中的一者。纵横开关 408 进一步经配置以将在第二 输入 436 处接收的数据选择性地提供到多路复用器 412 的第一输入 446 及第二输入 448 中 的另一者。类似地, 纵横开关 408 经配置以将在第三输入 438 处接收的数据选择性地提供 到多路复用器 412 的第三输入 450 及第四输入 452 中的一者。纵横开关 408 还经配置以将 在第四输入 440 处接收的数据提供到多路复用器 412 的第三输入 450 及第四输入 452 中的 另一者。在特定实施例中, 纵横开关 408 选择性地确定是否交换对应于第一坐标数据 x1422 及第二坐标数据 y1424 的在第一输入 434 及第二输入 436 处接收的数据值。纵横开关 408 基于在第一控制输入 442 处接收的第一控制值 C1430 选择性地交换 x1 与 y1。纵横开关 408 进一步经配置以基于在第二控制输入 444 处接收的第二控制值 C2432 的值选择性地交换在 第三输入 438 处的数据值与在第四输入 440 处接收的数据值。在特定实施例中, 纵横开关 408 以大体上类似于图 3 中描绘的交换电路 302 的方式操作。
在特定实施例中, 向量加法器 410 在第一输入 454 及第二输入 456 处接收对应于 提供到多路复用器 412 的第一输入 446 及到第二输入 448 的数据的数据。 此外, 向量加法器 410 在第三输入 458 及第四输入 460 处接收对应于分别在多路复用器 412 的第三输入 450 及第四输入 452 处接收的数据的数据。向量加法器 410 经配置以对在输入 454、 456、 458 及 460 中的每一者处接收的数据求反。 经由第一经求反的输入 462、 第二经求反的输入 464、 第 三经求反的输入 466 及第四经求反的输入 468 将经求反的数据提供到多路复用器 412。
多路复用器 412 经耦合以分别在第一输入 446 及第二输入 448 处接收由纵横开关 408 提供的数据 x1s、 y1s, 且分别在第三输入 450 及第四输入 452 处接收数据 x2s 及 y2s。多路 复用器 412 经进一步耦合以分别在第一经求反的输入 462 及第二经求反的输入 464 处接收 来自向量加法器 410 的经求反的数据 -x1s 及 -y1s, 且分别在第三经求反的输入 466 处及在
第四经求反的输入 468 处接收来自向量加法器 410 的经求反的数据 -x2s 及 -y2s。多路复用 器 412 在第一控制输入 470 处接收第一控制值 C1430 且在第二控制输入 472 处接收第二控 制值 C2432。
多路复用器 412 经配置以基于第一控制输入 470 选择性地提供来自第一输入 446 或第一经求反的输入 462 的第一输出 474 及来自第二输入 448 或第二经求反的输入 464 的 第二输出 476。第一输出 474 与第二输出 476 经耦合以将第一经旋转的坐标 X1out490 及第 二经旋转的坐标 Y1out 492 分别提供到输出寄存器 414。 举例来说, 在控制值 C1430 指示零度 旋转 ( 其不需要经求反的值 ) 的情况下, 多路复用器 412 选择未经求反的输入 446 及 448 以分别提供到第一输出 474 及第二输出 476。在控制值 C1430 指示一百八十度旋转 ( 需要 两个坐标的求反 ) 的情况下, 多路复用器 412 选择来自向量加法器 410 的经求反的输入 462 及 464。 在控制值指示九十度旋转或二百七十度旋转的情况下, 多路复用器可选择一个未经 求反的输入 446 或 448 及一个经求反的输入 462 或 464。
多路复用器 412 还经配置以基于第二控制输入 472 将第三坐标输入 450 及第三经 求反的输入 466 中的一者选择性地提供到第三输出 478。多路复用器 412 进一步经配置以 基于第二控制输入 472 将第四坐标输入 452 或第四经求反的输入 468 选择到第四输出 480。 第三输出 478 及第四输出 480 经耦合到输出寄存器 414 以分别提供第二向量经旋转的输出 数据 X2out 494 及 Y2out496。 在特定实施例中, 系统 400 进一步包括耦合到向量加法器 410 的饱和逻辑电路 411。饱和逻辑电路 411 可经配置以检测在向量加法器 410 的输出处的饱和状况 ( 例如, 可 由在二的补码二进制表示中的 “零” 值的求反造成 ), 且提供经校正的值用于在向量加法器 410 处的输出。在特定实施例中, 饱和逻辑电路 411 可包括一个或一个以上 “异或” 门, 且可 将待交换的一个或一个以上硬连线的值 (hardwired value) 提供到向量加法器 410 中。
在特定实施例中, 系统 400 可实施于处理器管线的一部分处, 例如, 在交错的多线 程处理器的执行单元处。举例来说, 纵横开关 408 可为路由单元的一部分以在处理器的执 行单元处对准数据, 且向量加法器 410 及多路复用器 412 还可为执行单元内的元件。在另 一特定实施例中, 系统 400 可实施于无线装置的调制解调器 ( 例如, 图 1 的调制解调器 140) 中。在特定实施方案中, 系统 400 可实施于管线式交错的多线程处理器的一个或一个以上 执行单元处以执行调制解调器操作。此外, 在说明性实施例中, 纵横开关 408 可对应于交换 电路 320 的具体实施方案, 向量加法器 410 可对应于求反电路 304 的具体实施方案, 且多路 复用器 412 可充当选择电路 308 的具体实施方案 ( 如图 3 中所描绘 ), 且进一步适于执行多 个向量的同时旋转, 如由具有对应于第一数据 422 及 424 的坐标的第一向量及具有对应于 第二数据 426 及 428 的坐标的第二向量所指示。
参看图 5, 其描绘用以执行坐标旋转的系统的第二说明性实施例且将其大体表示 为 500。系统 500 包括用以响应于控制值 C1524 选择性地交换第一坐标数据 X1520 与第二 坐标数据 Y1522 的装置, 其被说明为交换电路 502。系统 500 进一步包括用以对第一坐标数 据 520 求反以产生第一经求反的坐标数据及对第二坐标数据 522 求反以产生第二经求反的 坐标数据的装置, 其在图 5 中被说明为向量乘法器 504。 系统 500 还包括用以响应于控制值 C1548 选择性地输出第一坐标数据或第一经求反的坐标数据及选择性地输出第二坐标数据 或第二经求反的坐标数据的装置, 其被描绘为选择电路 508。 系统 500 大体对应于图 3 的系
统 300 且根据图 3 的系统 300 使用向量乘法器 504 代替求反电路 304 进行操作。
在特定实施例中, 系统 500 经配置以接收第一坐标数据 520 及第二坐标数据 522, 且执行由第一坐标数据 520 及第二坐标数据 522 表示的向量的旋转。 举例来说, 第一坐标数 据 520 可表示向量的 X 坐标, 且第二坐标数据 522 可表示所述向量的 Y 坐标。控制值 C1524 可表示待对向量应用的旋转度。
在特定实施例中, 交换电路 502 经配置以接收第一坐标数据 520 及第二坐标数据 522 以及控制值 524, 且输出第一经交换的输出 526 及第二经交换的输出 528。分别将第一 经交换的坐标数据输出 526 及第二经交换的坐标数据输出 528 作为输入 540 及 542 提供到 选择电路 508。还分别将第一交换坐标数据输出 526 及第二交换坐标数据输出 528 作为输 入 530 及 532 提供到向量乘法器 504。
在特定实施例中, 向量乘法器 504 经配置以在第一输入 530 处接收第一经交换的 数据 526 且将第一经交换的数据 526 的经求反的值提供到选择电路 508 的第一经求反的输 入 544。向量乘法器 504 进一步经配置以在第二输入 532 处接收第二经交换的数据 528 且 将第二经交换的数据 528 的经求反的值提供到选择电路 508 的第二经求反的输入 546。在 特定实施例中, 向量乘法器 504 包括选择性地将在第一输入 530、 第二输入 532 或两者处接 收的数据乘以负一的控制逻辑。
在特定实施例中, 选择电路 508 经配置以在控制输入 548 处接收控制值 C1, 且在第 一坐标输出 Xout550 及第二坐标输出 Yout552 处选择性地输出对应于按由控制值 C1 指示的量 旋转的第一坐标数据 520 及第二坐标数据 522 的值。因此, 选择电路 508 可在第一交换坐 标输入 540 处接收第一经交换的输出 526 及在第一经求反的输入 544 处接收第一经交换的 输出 526 的经求反的值。选择电路 508 可选择性地将在第一交换坐标输入 540 及第一经求 反的输入 544 中的一者处接收的值提供到第一坐标输出 Xout550。此外, 选择电路 508 可接 收第二交换坐标输入 542 及第二经求反的输入 546, 且可选择性地将在第二交换坐标输入 542 及第二经求反的输入 546 中的一者处接收的值输出到第二坐标输出 Yout 552。
参看图 6, 其描绘向量坐标旋转系统的第一说明性实施例的数据流且将其大体表 示为 600。交换电路 602 经耦合以接收输入向量 (x1, y1)601 且将输出提供到求反电路 604。 交换电路 602 可响应于控制值 C1624 选择性地交换输入向量 601 的坐标以产生输出向量 (x1, y1) 或 (y1, x1)。
求反电路 604 响应于控制值 C1624 选择性地对从交换电路 602 接收的数据求反且 产生输出向量 (xout, yout)610。举例来说, 求反电路 604 可接收第一向量坐标及第二向量坐 标, 且可基于控制值 C1624 选择性地对仅第一坐标、 仅第二坐标、 两个坐标求反或不对任一 坐标求反。输出向量 610 对应于在围绕坐标原点旋转由控制值 C1624 指示的九十度的倍数 后的输入向量 601。因为求反电路 604 响应于控制值 C1624 选择性地对所接收的数据求反, 所以系统 600 操作以在无输出选择电路 ( 例如, 图 3 的选择电路 308) 的情况下执行向量坐 标旋转运算。
在特定实施例中, 系统 600 表示经编程以实施快速向量旋转算法的处理器, 所述 快速向量旋转算法包括当旋转量为九十度或二百七十度时选择性地交换第一坐标与第二 坐标、 接着为当旋转量为九十度时选择性地对第一坐标求反、 当旋转量为二百七十度时选 择性地对第二坐标求反及当旋转量为一百八十度时选择性地对两个坐标求反。 可使用纵横制装置、 多路复用器装置、 经配置以选择性地交换两个或两个以上输入值的另一装置、 在处 理器执行单元处执行的交换运算、 固件、 硬件或其任何组合来实施交换电路 602。可使用向 量加法器、 向量乘法器、 经配置以选择性地对两个或两个以上输入值求反的另一装置、 在处 理器执行单元处执行的求反运算、 固件、 硬件或其任何组合来实施求反电路 604。
参看图 7, 其描绘向量坐标旋转系统的第二说明性实施例的数据流且将其大体表 示为 700。求反电路 704 经耦合以接收输入向量 (x1, y1)701 且将输出提供到交换电路 702。 求反电路 704 可响应于控制值 C1724 选择性地对输入向量 701 的坐标求反以产生输出向量 (x1, y1)、 (x1, -y1)、 (-x1, y1) 或 (-x1, -y1)。
交换电路 702 响应于控制值 C1724 选择性地交换从求反电路 704 接收的数据且产 生输出向量 (xout, yout)710。输出向量 710 对应于在围绕坐标原点旋转由控制值 C1724 指示 的九十度的倍数后的输入向量 701。
在特定实施例中, 系统 700 表示经编程以实施快速向量旋转算法的处理器, 所述 快速向量旋转算法包括接收第一及第二坐标、 当旋转量为九十度时选择性地对第二坐标求 反、 当旋转量为一百八十度时选择性地对第一及第二坐标求反、 当旋转量为二百七十度时 选择性地对第一坐标求反及接着当旋转量为九十度或二百七十度时选择性地交换两个坐 标。 可使用纵横制装置、 多路复用器装置、 经配置以选择性地交换两个或两个以上输入值的 另一装置、 在处理器执行单元处执行的交换运算、 固件、 硬件或其任何组合来实施交换电路 702。可使用向量加法器、 向量乘法器、 经配置以选择性地对两个或两个以上输入值求反的 另一装置、 在处理器执行单元处执行的求反运算、 固件、 硬件或其任何组合来实施求反电路 704。
参看图 8, 其描绘用以执行快速旋转运算的方法的第一说明性实施例且将其大体 表示为 800。方法 800 包括在处理器处执行单一指令。在特定实施例中, 可在图 1 到图 7 中 描绘的系统中的一者或一者以上处执行所述方法。
执行单一指令包括在 802 处接收指示第一坐标及第二坐标的第一数据。在特定 实施例中, 第一坐标及第二坐标识别向量的 X 及 Y 分量。移到 804, 接收指示选自九十度倍 数集合的第一旋转值的第一控制值。在特定实施例中, 九十度倍数集合包括零度、 九十度、 一百八十度及二百七十度。
继续到 806, 在特定实施例中, 执行单一指令进一步包括当第一旋转值对应于九十 度或二百七十度时交换第一坐标与第二坐标。前进到 808, 当第一旋转值对应于九十度、 一百八十度或二百七十度时, 对第一坐标及第二坐标中的至少一者求反。
继续前进到 810, 在特定实施例中, 应用饱和逻辑以防止对第一坐标或第二坐标求 反时的溢出状况。移到 812, 将输出数据写入到数据存储元件。举例来说, 数据存储元件可 包括一个或一个以上锁存器、 正反器装置、 寄存器、 高速缓冲存储器、 存储器或用以存储数 据的任一其它装置或系统。输出数据对应于按第一旋转值旋转的第一数据。举例来说, 第 一数据可识别从坐标原点延伸到第一及第二坐标处的端点的向量, 且输出数据可识别按由 第一旋转值指示的量围绕坐标原点的旋转后的向量的端点。在特定实施例中, 在不执行乘 法运算或表查找的情况下确定输出数据, 从而实现比通过使用乘法运算或表查找所达到功 率低及速度高的运算。
可在处理器的单一执行循环中执行单一旋转指令。举例来说, 可在包括实施图 4的系统 400 的执行单元的处理器处执行单一旋转指令以在单一执行循环中执行向量旋转 运算。
在特定实施例中, 第一控制值可对应于接收的无线信号的符号值。 举例来说, 无线 信号的每一符号值可表示相对于累积的相位的角偏移, 且第一控制值可指示需要用来基于 累积的相位调整向量以确定与符号相关联的角偏移的旋转度。在特定实施例中, 可结合无 线接收器的正交解码循环来执行单一旋转指令。举例来说, 在所接收的无线数据具有同相 分量 (I) 及与所述同相分量异相九十度的正交分量 (Q) 的情况下, 可按九十度的倍数旋转 正交分量以用于通过同相分量来解码。
在特定实施例中, 单一指令为微指令。 举例来说, 在适于将接收的指令翻译成一个 或一个以上可执行微指令的微码处理器中, 单一指令可为微指令, 即, 直接可执行且不可翻 译成多个其它可执行指令的指令。在另一实施例中, 可在非微码处理器处执行单一指令, 即, 在不首先将指令翻译成多个可执行微指令的情况下执行所接收的指令的处理器处执 行。 在实施例中, 可在不支持微码的管线处执行单一指令, 其中管线作为单一管线运算确定 向量旋转输出, 而不执行对应于微指令的一序列子运算。
参看图 9, 其描绘用以执行快速旋转运算的方法的第二说明性实施例且将其大体 表示为 900。可在图 1 到图 7 中描绘的系统中的一者或一者以上处或根据图 8 中描绘的方 法 800 或其任何组合来执行方法 900。 方法 900 包括执行单一指令, 其包括在 902 处接收指示第一坐标及第二坐标的第 一数据。 移到 904, 接收指示选自九十度倍数集合的第一旋转值的第一控制值。 在特定实施 例中, 九十度倍数集合包括零度、 九十度、 一百八十度及二百七十度。
在特定实施例中, 执行单一指令还包括在 906 处接收指示第三坐标及第四坐标的 第二数据。在 908 处, 可接收指示选自九十度倍数集合的第二旋转值的第二控制值。可与 确定对应于按第二旋转值旋转的第二数据的第二输出数据同时确定对应于按第一旋转值 旋转的第一数据的输出数据。在 912 处, 可将输出数据及第二输出数据写入到数据存储元 件。
在特定实施例中, 在将输出数据或第二输出数据中的任一者写入到寄存器堆前, 可在处理器的单一执行单元处确定输出数据及第二输出数据。举例来说, 如关于图 2 的系 统 200 描述, 可与确定输出数据同时确定第二输出数据。在说明性实施例中, 处理器的执行 单元包括图 4 的系统 400, 且纵横开关 408、 向量加法器 410 及多路复用器 412 可并行地对 第一输入数据及第二输入数据进行运算, 且可大体上同时将输出数据及第二输出数据写入 到输出寄存器 414。
所属领域的技术人员将进一步了解, 结合本文所揭示的实施例所描述的各种说明 性逻辑块、 配置、 模块、 电路及算法步骤可实施为电子硬件、 计算机软件或两者的组合。 为了 清晰地说明硬件与软件的此可互换性, 各种说明性组件、 块、 配置、 模块、 电路及步骤已在上 文大体按其功能性加以了描述。 将此功能性实施为硬件还是软件视特定应用及强加于整个 系统上的设计约束而定。 所属领域的技术人员可以变化的方式针对每一特定应用实施所描 述的功能性, 但是这些实施决策不应被解释为会导致脱离本发明的范围。
结合本文中所揭示的实施例所描述的方法或算法的步骤可直接体现于硬件中、 由 处理器执行的软件模块中或两者的组合中。 软件模块可驻留于随机存取存储器 (RAM)、 快闪
存储器、 只读存储器 (ROM)、 可编程只读存储器 (PROM)、 可擦除可编程只读存储器 (EPROM)、 电可擦除可编程只读存储器 (EEPROM)、 寄存器、 硬盘、 可装卸盘、 压缩光盘只读存储器 (CD-ROM) 或此项技术中已知的任何其它形式的存储媒体中。 将示范性存储媒体耦合到处理 器, 使得处理器可从存储媒体读取信息及将信息写入到存储媒体。 在替代方案中, 存储媒体 可与处理器成一体式。处理器及存储媒体可驻留于专用集成电路 (ASIC) 中。ASIC 可驻留 于计算装置或用户终端中。在替代方案中, 处理器及存储媒体可作为离散组件驻留于计算 装置或用户终端中。
提供对所揭示的实施例的先前描述, 以使所属领域的技术人员能够制作或使用所 揭示的实施例。 对于所属领域的技术人员来说, 对这些实施例的各种修改将易于显而易见, 且在不脱离本发明的范围的情况下, 本文中界定的一般原理可应用于其它实施例。 因此, 本 发明并不希望限于本文中所展示的实施例, 而应符合与如所附权利要求书界定的原理及新 颖特征相一致的最广泛的可能范围。