CN104767544A - 一种实现解扰解扩的方法和矢量运算器 - Google Patents

一种实现解扰解扩的方法和矢量运算器 Download PDF

Info

Publication number
CN104767544A
CN104767544A CN201410002164.8A CN201410002164A CN104767544A CN 104767544 A CN104767544 A CN 104767544A CN 201410002164 A CN201410002164 A CN 201410002164A CN 104767544 A CN104767544 A CN 104767544A
Authority
CN
China
Prior art keywords
data
register file
row
vector register
vector
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410002164.8A
Other languages
English (en)
Other versions
CN104767544B (zh
Inventor
林文琼
华力
张永胜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen ZTE Microelectronics Technology Co Ltd
Original Assignee
Shenzhen ZTE Microelectronics Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen ZTE Microelectronics Technology Co Ltd filed Critical Shenzhen ZTE Microelectronics Technology Co Ltd
Priority to CN201410002164.8A priority Critical patent/CN104767544B/zh
Priority to EP14876279.2A priority patent/EP3091669B1/en
Priority to US15/109,465 priority patent/US9871554B2/en
Priority to PCT/CN2014/082280 priority patent/WO2015101012A1/zh
Publication of CN104767544A publication Critical patent/CN104767544A/zh
Application granted granted Critical
Publication of CN104767544B publication Critical patent/CN104767544B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B1/00Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
    • H04B1/69Spread spectrum techniques
    • H04B1/707Spread spectrum techniques using direct sequence modulation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B1/00Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
    • H04B1/69Spread spectrum techniques
    • H04B1/707Spread spectrum techniques using direct sequence modulation
    • H04B1/7073Synchronisation aspects
    • H04B1/7075Synchronisation aspects with code phase acquisition
    • H04B1/70751Synchronisation aspects with code phase acquisition using partial detection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W84/00Network topologies
    • H04W84/02Hierarchically pre-organised networks, e.g. paging networks, cellular networks, WLAN [Wireless Local Area Network] or WLL [Wireless Local Loop]
    • H04W84/04Large scale networks; Deep hierarchical networks
    • H04W84/042Public Land Mobile systems, e.g. cellular systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Complex Calculations (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本发明公开了一种实现解扰解扩的方法,该方法包括:采用数据变换和加法进行基带数据与对应解扰解扩码复数相乘的操作,并将相乘所得数据存入矢量寄存器堆;从矢量寄存器堆中读出一行所述相乘所得的数据,进行相邻两数据的累加,得到半行数据,并存回矢量寄存器堆;继续读出矢量寄存器堆上次累加的结果或保留在矢量运算器结果寄存器中的上次累加结果继续相邻两数据的累加,得到1/4行数据,继续累加,最终得到1个累加数据;以此类推,完成矢量寄存器堆中每行相乘所得的数据的累加。本发明还同时公开了一种实现解扰解扩的矢量运算器。

Description

一种实现解扰解扩的方法和矢量运算器
技术领域
本发明涉及通信领域中的解扰解扩技术,尤其涉及一种实现解扰解扩的方法和矢量运算器。
背景技术
随着移动通信技术的迅猛发展,通信模式从全球移动通讯系统(GSM)模式发展到宽带码分多址(WCDMA)模式,再到长期演进(LTE)模式,通信模式越来越多,越来越复杂。采用传统的专用集成电路(Application SpecificIntegrated Circuit,ASIC)方式实现多种通信模式时面临着芯片面积大、面向市场周期长的问题,并且存在电路高度定制化、不灵活、风险大的问题。
基于软基带来实现多通信模式将是今后的发展方向。但是,基于软基带的常用矢量运算器在实现码分多址(CDMA)的解扰解扩相关运算时效率不高,且功耗高。
发明内容
为解决现有存在的技术问题,本发明实施例提供一种实现解扰解扩的方法和矢量运算器。
为达到上述目的,本发明的技术方案是这样实现的:
本发明实施例提供了一种实现解扰解扩的方法,该方法包括:
采用数据变换和加法进行基带数据与对应的解扰解扩码复数相乘的操作,并将相乘所得数据存入矢量寄存器堆;
从矢量寄存器堆中读出一行所述相乘所得的数据,进行相邻两数据的累加,得到半行数据,并存回矢量寄存器堆;继续读出矢量寄存器堆上次累加的结果或保留在矢量运算器结果寄存器中的上次累加结果继续相邻两数据的累加,得到1/4行数据,继续累加,最终得到1个累加数据;以此类推,完成矢量寄存器堆中每行相乘所得的数据的累加。
其中,所述采用数据变换和加法进行基带数据与对应解扰解扩码复数相乘的操作,并存储所述相乘所得数据的步骤包括:
从矢量寄存器堆读出的第一行基带数据依据对应的解扰解扩码进行变换,并将变换后所得的数据相加,所得结果保存在矢量寄存器堆中;对从矢量寄存器堆读出的第二行基带数据执行相同的变换和相加处理,完成与对应解扰解扩码的相乘;如果两行数据结果需要累加,则在完成与对应解扰解扩码的相乘后与存储在矢量运算器结果寄存器中上行结果累加,再存回矢量寄存器堆;以此类推,完成所有基带数据与对应解扰解扩码的相乘。
优选的,该方法还包括:
在从矢量寄存器堆读出每行基带数据时,产生与该行基带数据对应的解扰解扩码。
其中,所述依据解扰解扩码对基带数据进行变换,为:
根据解扰解扩码对读出的基带数据进行复数实部与虚部位置交换,并进行实部或虚部符号取反的操作。
其中,所述对矢量寄存器堆中读出的每行相乘所得的数据的累加步骤包括:
从矢量寄存器堆中读出每行存储的N个相乘所得的数据,进行两两相加,得到N/2个数据,并存储于矢量寄存器堆中;再从寄存器堆读出所述N/2个数据继续进行两两相加,得到N/4个数据,并存储;以此类推,对矢量寄存器堆中每行存储的相乘所得的数据进行多次两两相加处理,直至最后每行累加得到1个数据;其中,所述N为正整数。
其中,所述对矢量寄存器堆中读出的每行相乘所得的数据的累加步骤包括:
从矢量寄存器堆中读出每行存储的N个相乘所得的数据,进行两两相加,得到N/2个结果数据;再从矢量运算器的结果寄存器中取出所述N/2个结果数据进行两两相加,得到N/4个数据;以此类推,对每行数据进行多次两两相加处理,直至每行累加得到1个数据;其中,所述N为正整数。
本发明实施例还提供了一种实现解扰解扩的矢量运算器,所述矢量运算器包括:矢量寄存器堆、读口操作单元和矢量乘加器;其中,
所述矢量寄存器堆,用于存储基带数据,基带数据与对应解扰解扩码相乘所得的结果,以及行间数据累加结果和行内两两数据累加结果;
所述读口操作单元,用于从所述矢量寄存器堆读出基带数据,并依据对应的解扰解扩码对基带数据进行数据变换;或者,从所述矢量寄存器堆中读出基带数据与解扰解扩码相乘后的数据或累加后的数据,并进行相邻两数据相加需要的数据位置变换;
所述矢量乘加器,用于将经所述读口操作单元变换后的数据进行加法处理,将所得结果保存在矢量寄存器堆中;
还用于分别对从矢量寄存器堆中读出的一行相乘所得的数据进行相邻两数据的累加,得到半行数据,并存回所述矢量寄存器堆;继续读出矢量寄存器堆上次累加的结果或保留在矢量运算器结果寄存器中的上次累加结果继续相邻两数据的累加,得到1/4行数据,继续累加,最终得到1个累加数据,以此类推,完成矢量寄存器堆中每行相乘所得的数据的累加。
优选的,所述矢量运算器还包括:解扰解扩码产生器,用于读口操作单元在从所述矢量寄存器堆读出每行基带数据时,产生与该行基带数据对应的解扰解扩码。
其中,所述矢量乘加器对矢量寄存器堆中读出的每行相乘所得的数据的累加,为:
将从矢量寄存器堆中读出的每行存储的N个相乘所得的数据,进行两两相加,得到N/2个数据,并存储于矢量寄存器堆中;再从寄存器堆读出所述N/2个数据继续进行两两相加,得到N/4个数据,并存储;以此类推,对矢量寄存器堆中每行存储的相乘所得的数据进行多次两两相加处理,直至最后每行累加得到1个数据;其中,所述N为正整数。
其中,所述矢量乘加器对矢量寄存器堆中读出的每行相乘所得的数据的累加,为:
将从矢量寄存器堆中读出的每行存储的N个相乘所得的数据,进行两两相加,得到N/2个结果数据;再从矢量运算器的结果寄存器中取出所述N/2个结果数据进行两两相加,得到N/4个数据;以此类推,对每行数据进行多次两两相加处理,直至每行累加得到1个数据;其中,所述N为正整数。
本发明提供的实现解扰解扩的方法和矢量运算器,采用数据变换和加法进行基带数据与对应解扰解扩码复数相乘的操作,并将相乘所得数据存入矢量寄存器堆;从矢量寄存器堆中读出一行所述相乘所得的数据,进行相邻两数据的累加,得到半行数据,并存回矢量寄存器堆;继续读出矢量寄存器堆上次累加的结果或保留在矢量运算器结果寄存器中的上次累加结果继续相邻两数据的累加,得到1/4行数据,继续累加,最终得到1个累加数据;以此类推,完成矢量寄存器堆中每行相乘所得的数据的累加。
可见,本发明上述实施例的解扰解扩码与基带数据相乘的实现过程仅需简单的变换和加法运算,而非通过一般的乘法来实现,解扰解扩码伴随基带数据同时产生,不需要读取,提高效率;而且,进行行内两两数据累加时,每次累加时可以充分利用所有加法器的迭代方法,同样提高效率、且功耗更低。而且,本发明实施例在不增加加法器数目的前提下仅作如下改进:
1)对X读口读出的矢量的相邻数据单元做位置交换、符号变换等操作;
2)将加法器输出反馈拉线到加法器输入。
就能在支持通常的实数模式复数模式乘加、乘累加以及fft蝶形运算的运算器基础上增加解扰解扩功能,因此实现代价小。
附图说明
在附图(其不一定是按比例绘制的)中,相似的附图标记可在不同的视图中描述相似的部件。具有不同字母后缀的相似附图标记可表示相似部件的不同示例。附图以示例而非限制的方式大体示出了本文中所讨论的各个实施例。
图1为通常并行方式实现的解扰解扩原理框图;
图2为本发明实施例的一种解扰解扩的方法实现流程图;
图3为本发明实施例所述mult 1nj指令的原理框图;
图4为本发明实施例所述mac 1nj指令的原理框图;
图5为本发明实施例图2所述的对矢量寄存器堆中读出的每行相乘所得的数据的累加方法实现流程图;
图6为本发明实施例所述sxu指令的原理框图;
图7为本发明实施例图2所述的对矢量寄存器堆中读出的每行相乘所得的数据的累加另一种方法实现流程图;
图8为本发明实施例所述sxu2指令的原理框图;
图9为本发明实施例所述一种实现解扰解扩的矢量运算器的结构示意图。
具体实施方式
图1为通常并行方式实现的解扰解扩原理框图,如图1所示,先将解扰解扩码与对应的基带数据相乘,再进行累加。图中只给出了两级累加,相当于扩频因子为4的情况,如果扩频因子为32,则需要5级累加,扩频因子为2^k,需要k级累加。采用并行累加的方式需要的加法器很多,数目为n/2(n为矢量所包含数据的个数)。
图2为本发明实施例的一种解扰解扩的方法实现流程图,如图2所示,该方法包括:
步骤201:采用数据变换和加法进行基带数据与对应解扰解扩码复数相乘的操作,并将相乘所得数据存入矢量寄存器堆;
步骤202:从矢量寄存器堆中读出一行所述相乘所得的数据,进行相邻两数据的累加,得到半行数据,并存回矢量寄存器堆;继续读出矢量寄存器堆上次累加的结果或保留在矢量运算器结果寄存器中的上次累加结果继续相邻两数据的累加,得到1/4行数据,继续累加,最终得到1个累加数据;以此类推,完成矢量寄存器堆中每行相乘所得的数据的累加。
所述步骤201具体包括:
从矢量寄存器堆读出的第一行基带数据依据对应的解扰解扩码进行变换,并将变换后所得的数据相加,所得结果保存在矢量寄存器堆中;对从矢量寄存器堆读出的第二行基带数据执行相同的变换和相加处理,完成与对应解扰解扩码的相乘;如果两行数据结果需要累加,则在完成与对应解扰解扩码的相乘后与存储在矢量运算器结果寄存器中上行结果累加,再存回矢量寄存器堆;以此类推,完成所有基带数据与对应解扰解扩码的相乘。
在实际应用过程中,对于步骤201基于矢量运算器,并采用mult 1nj和mac1nj指令实现。
其中,所述mult 1nj,即:mult vw,vx,1nj,nw;//表示vx*1nj,并写回到vw指针所指的矢量寄存器vv对中。其中,所述vx表示从矢量寄存器堆中读出的基带数据,所述1nj表示解扰解扩码,所述nw表示结果不写回矢量寄存器,可以节省功耗。
以32个基带数据为例,执行mult vw,vx,1nj,nw;以完成解扰解扩码与基带数据的相乘。如图3所示,需要将通过vx口读出的32个复数根据解扰解扩码(存在四种解扰解扩码)做如下变换:
因此,对应的在矢量运算器中,
vw(i)=ux(i)*1+ux(i+1)*1;
vw(i+1)=ux(i)*1-ux(i+1)*1;
i=0,2,4,…,62。
以(a+jb)*(1+j)=a-b+(a+b)j为例,先将a+jb变换为a-jb,送矢量运算器得到实部=a*1+(-b)*1=a-b;虚部=a*1-(-b)*1=a+b。
其中,所述mac1nj指令,即:mac vw,vx,1nj,nw;//表示vx*1nj,并加上上次的乘积,写回到vw指针所指的矢量寄存器vv对中。其中,所述vx表示从矢量寄存器堆中读出的基带数据,所述1nj表示解扰解扩码,所述nw表示结果不写回矢量寄存器,可以节省功耗。在所述mac 1nj指令前通常是mult 1nj指令。
图4为所述mac 1nj的原理框图,其与mult 1nj的原理类似,与之不同的是需要累加上一次mult 1nj的乘积。
需要说明的是,所述mult 1nj和mac 1nj指令对待处理基带数据的个数没有要求。
上述方案中,所述步骤202的实现步骤如图5所示,该方法包括:
步骤501:从矢量寄存器堆中读出每行存储的N个相乘所得的数据,进行两两相加,得到N/2个数据,并存储于矢量寄存器堆中;
步骤502:从寄存器堆读出所述N/2个数据继续进行两两相加,得到N/4个数据,并存储;以此类推,对矢量寄存器堆中每行存储的相乘所得的数据进行多次两两相加处理,直至最后每行累加得到1个数据。
上述方案中,所述N为正整数。该流程实现了矢量内减半的累加功能。
需要说明的是,不一定每行数据最后要累加到1个结果,根据配置需要累加一定次数得到一定数目的结果。比如:1行32个数,配置累加数为8则累加3次得到4个结果,如配置累加数目为32则累加5次得到1个结果。这是行内累加。
在实际应用过程中,对于步骤501和步骤502基于矢量运算器,并采用sxu指令实现。所述sxu指令,即:sxu op_num,vw,vx,nw;//表示完成32个复数累加到16个复数的过程,nw表示结果不写回矢量寄存器,可以节省功耗。
其中,Op_num=16/8/4/2/1表示累加的结果数目,用于写回时mask使需要的数据写回。Op_num=8,mask=0x0000_00ff,则表示左边8个复数可以写回。不执行的复数加法器可以关闭时钟,节省功耗。
图6为本发明实施例所述sxu指令的原理框图,如图6所示,累加数据来自vx读口,经过X口位置变换后送矢量乘加器完成相邻两数的累加,得到16个复数结果。图中虚线表示不需要连接,灰色的加法器表示在此指令执行中不需要。可以看出,上述实现解扰解扩的指令都是基于通常功能的矢量乘加器实现的,没有太多的硬件代价。
图7为本发明实施例的所述步骤202的另一种实现方法实现流程图,如图7所示,该方法包括:
步骤701:从矢量寄存器堆中读出每行存储的N个相乘所得的数据,进行两两相加,得到N/2个结果数据;
这里,与步骤501不同的是,不需将两两相加的结果存储于矢量寄存器堆中。
步骤702:从矢量运算器的结果寄存器中取出所述N/2个结果数据进行两两相加,得到N/4个数据;以此类推,对每行数据进行多次两两相加处理,直至每行累加得到1个数据;其中,所述N为正整数。
这里,除了第一次都是从寄存器堆读出N个数据外,后续累加都是从运算器的结果寄存器读出数据进行累加,好处在于比从寄存器堆读取减少很多时钟周期延时,能够连续不间断的累加。
该实施例的流程支持通过反馈完成矢量内的减半累加,反馈完成延时小,能连续进行,适合快速完成少量数据的累加需求。
在实际应用过程中,对于步骤701和步骤702基于矢量运算器,并采用sxu2指令实现,即:sxu2 op_num,vw,temp,nw;//表示将上次加法器输出寄存器结果(temp)反馈累加,只支持16个数到8个数的累加、8个数到4个数的累加、4个数到2个数的累加、2个数到1个数的累加。nw表示结果不写回矢量寄存器,可以节省功耗。
其中,Op_num=16/8/4/2/1表示累加的结果数目,用于写回时mask使需要的数据写回。Op_num=8,mask=0x0000_00ff,则表示左边8个复数可以写回。不执行的复数加法器可以关闭时钟,节省功耗。
图8为本发明实施例所述sxu2指令的原理框图,如图8所示,sxu2是一条优化的反馈累加指令,针对少量数据累加时的改进。
sxu指令在执行时需要等待上一次sxu累加的数据写入矢量寄存器堆,两条sxu指令之间需要间隔至少3条其他指令。因为执行流水线从矢量寄存器读出到写回矢量寄存器共4阶VRF->E0->E1->VWB。
当需要累加的数据很多时,可以通过安排,以使效率没有损失。如下:
sxu 16,v8,v0;//{v1,v0}->v8第一次累加
sxu 16,v9,v2;//{v3,v2}->v8
sxu 16,v10,v4;//{v5,v4}->v8
sxu 16,v11,v6;//{v7,v6}->v8
sxu 8,v0,v8;//v8->v0,可以累加第二次
但是假设只有{v1,v0}需要累加到1个复数时,两次累加指令需要间隔3条指令,效率很低。
这里设计优化累加指令sxu2 op_num,vw,temp,nw;temp表示输入累加的数据来自上次加法器输出的临时寄存器。其他参数与sxu指令相同。只支持16->8、8->4、4->2、2->1,第一次32->16的累加依然需要sxu指令。
如图8,虚线表示不需要连接,灰色的元件表示不需要,使用sxu2实现上述例子。
sxu 16,v8,v0,nw;//{v1,v0}->temp
sxu2 8,v0,temp,nw;//temp->temp累加第二次
sxu2 4,v0,temp,nw;//temp->temp累加第三次
sxu2 2,v0,temp,nw;//temp->temp累加第四次
sxu2 1,v0,temp;//temp->v0累加第五次,结果在v0[0]。
优选的,该方法还包括:在从矢量寄存器堆读出每行基带数据时,产生与该行基带数据对应的解扰解扩码。因此,可提高解扰解扩的效率,且减少解扰解扩码的存储需求和读写RAM的功耗。
其中,所述步骤201的细化描述中所述依据解扰解扩码对基带数据进行变换,为:
根据解扰解扩码对读出的基带数据进行复数实部与虚部位置交换,并进行实部或虚部符号取反的操作。
本发明实施例还提供了一种实现解扰解扩的矢量运算器,如图9所示,该矢量运算器包括:矢量寄存器堆901、读口操作单元902和矢量乘加器903;其中,
所述矢量寄存器堆901,用于存储基带数据,基带数据与对应解扰解扩码相乘所得的结果,以及行间数据累加结果和行内两两数据累加结果;
所述读口操作单元902,用于从所述矢量寄存器堆901读出基带数据,并依据对应的解扰解扩码对基带数据进行数据变换;或者,从所述矢量寄存器堆901中读出基带数据与解扰解扩码相乘后的数据或累加后的数据,并进行相邻两数据相加需要的数据位置变换;
所述矢量乘加器903,用于将经所述读口操作单元变换后的数据进行相加处理,将所得结果保存在矢量寄存器堆901中;
还用于分别对从矢量寄存器堆901中读出的一行相乘所得的数据进行相邻两数据的累加,得到半行数据,并存回所述矢量寄存器堆;继续读出矢量寄存器堆901上次累加的结果或保留在矢量运算器结果寄存器中的上次累加结果继续相邻两数据的累加,得到1/4行数据,继续累加,最终得到1个累加数据,以此类推,完成矢量寄存器堆901中每行相乘所得的数据的累加。
优选的,所述矢量运算器还包括:解扰解扩码产生器904,用于读口操作单元在从所述矢量寄存器堆901读出每行基带数据时,产生与该行基带数据对应的解扰解扩码。
其中,所述矢量乘加器对矢量寄存器堆中读出的每行相乘所得的数据的累加,为:
将从矢量寄存器堆中读出的每行存储的N个相乘所得的数据,进行两两相加,得到N/2个数据,并存储于矢量寄存器堆中;再从寄存器堆读出所述N/2个数据继续进行两两相加,得到N/4个数据,并存储;以此类推,对矢量寄存器堆中每行存储的相乘所得的数据进行多次两两相加处理,直至最后每行累加得到1个数据;其中,所述N为正整数。
其中,所述矢量乘加器对矢量寄存器堆中读出的每行相乘所得的数据的累加,为:
将从矢量寄存器堆中读出的每行存储的N个相乘所得的数据,进行两两相加,得到N/2个结果数据;再从矢量运算器的结果寄存器中取出所述N/2个结果数据进行两两相加,得到N/4个数据;以此类推,对每行数据进行多次两两相加处理,直至每行累加得到1个数据;其中,所述N为正整数。
实际应用过程中,上述图9中所述的矢量运算器中,包括:矢量寄存器堆、矢量乘加器和读口操作单元,还包括解扰解扩码产生器;其中,所述读口操作单元包括:X读口操作单元、Y读口操作单元和Z读口操作单元。当然,实际还需要其他部件,诸如:数据RAM、程序RAM、指令读取控制,指令流水线,指令译码等等,不详述。
基带数据从外部下载到RAM中,计算时从RAM读到矢量寄存器堆中。所述矢量寄存器堆作为计算数据的缓存,矢量行数和矢量宽度根据待处理数据进行设置。这里,矢量寄存器堆8行,每行分为2个半行,可以寻址1行,也可以寻址半行,每整行矢量32个复数,半行16个复数。这里8行分别设为{v1,v0},{v3,v2},…,{v15,v14},每个vv表示半行,1对vv表示1行;
所述矢量寄存器堆有3个读口X、Y、Z。读出的3对vv或3个vv(3个读口可以读取相同的vv)分别通过X读口操作单元、Y读口操作单元和Z读口操作单元进行变换,所述变换可为:取反,取共轭,实部清0,虚部清0,实部被虚部数据替换,虚部被实部数据替换,根据不同运算变换数据单元位置,X读口操作单元还可以根据输入的解扰解扩码,对数据单元进行实部取反,虚部取反,实部虚部交换3类之一或组合操作。
X、Y、Z3个数据读口操作单元,通常实现X*Y+Z的功能。本发明实施例所述解扰解扩过程只需要使用X读口操作单元,Y设置为1,Z设置为0。在X读口操作单元根据解扰解扩码对读出数据进行复数实部与虚部位置交换,实部或虚部符号取反操作。
所述矢量乘加器完成一般矢量的复数乘法,乘加,乘累加,实数乘法,乘加,乘累加,还有fft的蝶形运算。对于本发明实施例所述解扰解扩过程,矢量乘加器只使用加法器,输入数据有些需要符号取反。另外支持反馈累加时,需要将加法器输出到输入拉线。这里,由于本发明实施例没有1次累加32个数到1个数,只累加32个数到16个数,所以只使用了已有的加法器,没有增加加法器。
所述解扰解扩码产生器可以根据小区ID帧中的位置等信息设置初始状态,然后随解扰解扩指令mult 1nj或mac 1nj每次产生32个相应的码(2bit代表一个复数,共64bit)送给X读口操作单元,控制X读口读出的数据进行变换。解扰解扩码的产生不是本发明实施例的重点,这里不详细描述。
基于上述矢量运算器,编程指令顺序执行基带数据的解扰解扩,所以每执行一条mult 1nj或mac 1nj指令,解扰解扩码产生器会自动产生接下来的解扰解扩码。当数据顺序中断时,需要重新设置解扰解扩码产生器的初始值。
需要说明的是,存储在矢量寄存器堆vv中的基带数据都是与产生的解扰解扩码序列对齐的,这是通过从RAM读取数据到矢量寄存器堆中的对齐操作实现的,此处不详述。
通常简单的并行累加,以32个数据为例,需要5级累加,依次使用16、8、4、2、1共31个加法器,复数则使用31x2=62个加法器,芯片中运算单元面积很大。而本发明实施例的32个复数累加只使用32个加法器,面积减少很多,能基本复用通常乘加器的逻辑。
下面以扩频因子=32,32个复数为例说明本发明流程。
假设基带数据已经存在于矢量寄存器{v1,v0}中,采用图5所示的方法实现解扰解扩,如下:
mult v8,v0,1nj;//{v1,v0}中32个复数乘上解扰解扩码后存储到{v9,v8}
nop;
nop;
nop;
sxu 16 v8,v8,nw;//32-16表示32个数累加到16个,下面相同
nop;
nop;
nop;
sxu 8 v8,v8,nw;//16-8
nop;
nop;
nop;
sxu 4 v8,v8,nw;//8-4
nop;
nop;
nop;
sxu 2 v8,v8,nw;//4-2
nop;
nop;
nop;
sxu 1 v8,v8;//2-1
sxu指令每次只能从矢量寄存器中读出1行,相邻两数据累加后得到16个数据写回。通过多次迭代累加,可以最后累加得到1个结果。上面程序每两指令间需要间隔3个nop或其他3个无关指令。效率很低。间隔3个nop的原因是流水线从读矢量寄存器到写回矢量寄存器为VRF-E0-E1-VWB共4阶。
如使用sxu2指令,同样对上述矢量寄存器{v1,v0}中存储的基带数据进行如下处理,即采用图7所示的方法实现解扰解扩:
mult v8,v0,1nj;//{v1,v0}中32个复数乘上解扰解扩码后存储到{v9,v8}
nop;
nop;
nop;
sxu 16 v8,v8,nw;//32-16
sxu2 8 v8,temp,nw;//16-8
sxu2 4 v8,temp,nw;//8-4
sxu2 2 v8,temp,nw;//4-2
sxu2 1 v8,temp;//2-1
除mult 1nj和sxu之间的3个nop其他nop都消除了,效率提高很显著。在数据量小的时候使用sxu2指令可以提高效率。
如果使用sxu在数据量大的时候,可以通过编程拼接,得到效率的提升。以扩频因子32,数据数目8x32为例,假设都做过了mult 1nj
sxu 16 v8,v0;//{v1,v0}->v8
sxu 16 v9,v2;
sxu 16 v10,v4;
sxu 16 v11,v6;
//从ram更新v0~v7的基带数据,继续
sxu 16 v12,v0;//{v1,v0}->v12
sxu 16 v13,v2;
sxu 16 v14,v4;
sxu 16 v15,v6;
//第二轮累加
sxu 16 v0,v8;//{v9,v8}->v0
sxu 16 v1,v10;
sxu 16 v2,v12;
sxu 16 v3,v14;
//第三轮累加
nop;
sxu 16 v0,v0;//{v1,v0}->v0
nop;
sxu 16 v1,v2;//{v3,v2}->v1
//第四轮累加
Nop;
Nop;
Nop;
sxu 16 v0,v0,nw;//{v1,v0}->v0
//第五轮累加
sxu2 8 v0,temp;//temp->v08个结果
共用了21个时钟周期cycles,通过更精细的拼接这里5个nop可以利用上。而一般的使用31个复数加法器的方案需要8个cycles。
当扩频因子大于32,比如256,需要先进行8行解扰解扩,并行间累加得到1行数据
Mult 1nj;
Mac 1nj;//1累加上1行指令的乘积
Mac 1nj;//2
Mac 1nj;//7
之后运算与信道因子32类似。
不管本发明实施例还是通常实现方式都是需要行间累加这些运算cycle,8+21:8+8=29:16所以当扩频因子大于矢量数据宽度时,本发明效率更高些。
下面再举例说明本发明实施例所述mult 1nj、mac 1nj、sxu和sxu2四个指令的应用。
实施例1、使用sxu2指令,以扩频因子为128,累加数据也为128个复数为例,进行解扰解扩,如下:
mult v8,v0,1nj,nw;
mac v8,v2,1nj,nw;
mac v8,v4,1nj,nw;
mac v8,v6,1nj;//完成4行{v1,v0}{v3,v2}{v5,v4}{v7,v6}相关累加到矢量寄存器{v9,v8}行
nop;//可以为其他指令
nop;//可以为其他指令
nop;//可以为其他指令
sxu 16v8,v8,nw;//完成1行两两相加产生16个复数结果
sxu2 8v8,temp,nw;;//上次存储在temp的16个复数累加到8个复数
sxu2 4v8,temp,nw;;//上次存储在temp的8个复数累加到4个复数
sxu2 2v8,temp,nw;;//上次存储在temp的4个复数累加到2个复数
sxu2 1v8,temp;//上次存储在temp的2个复数累加到2个复数
最后硬件自动产mask=0x0000_0001,将结果的最低处1个复数写入v8[0](0~31)。共用12个cycles完成128个复数扩频因子128的解扰解扩。通常1次累加到1个数的方法需要5个cycles。本发明不考虑nop为9,那么9:5则表明本实施例方法的效率超过通常方法效率的1/2。
实施例2、使用sxu,以扩频因子=8,累加数据4x32个复数为例进行解扰解扩,如下:
//step1:
mult v8,v0,1nj;//完成1行相关
mult v10,v2,1nj;//完成1行相关
mult v12,v4,1nj;//完成1行相关
mult v14,v6,1nj;//完成1行相关
//step2:
sxu 16v0,v8;//完成{v9,v8}32个复数两两相加得到16个复数结果
sxu 16 v1,v10;//完成{v11,v10}32个复数两两相加得到16个复数结果
sxu 16 v2,v12;//完成{v13,v12}32个复数两两相加得到16个复数结果
sxu 16 v3,v14;//完成{v15,v14}32个复数两两相加得到16个复数结果
//step3:
nop;//可以为其他指令
sxu 16 v0,v0;//{v1,v0}-->v0
nop;//可以为其他指令
sxu 16v1,v2;//{v3,v2}-->v1
//step4:
nop;//可以为其他指令
nop;//可以为其他指令
nop;//可以为其他指令
sxu 16v0,v0;//{v1,v0}-->v0最后得到16个累加结果存在v0
上述例子共利用了16个cycles完成4x32个复数每8个相关和累加。如果采用一般5阶32个复数全部累加的方式,需要4个cycles相关,4个cycles累加,共8个cycles。相比来说,本发明实施例的效率为一般方法的1/2。上述方案的编程不是效率最高的排布,因为中间有5个指令周期(nop),如果编程再安排更多数据解扰解扩指令填充nop,则(16-5):8,则效率更高。
可见,本发明在很小的电路代价下,不增加加法器的数目,仅仅需作如下改进:
1)对X读口读出的矢量的相邻数据单元做位置交换、符号变换等操作;
2)将加法器输出反馈拉线到加法器输入。
就能在支持通常的实数模式复数模式乘加、乘累加以及fft蝶形运算的运算器基础上增加解扰解扩功能。
总之,本发明可在通常的矢量运算单元基础上,仅作少数连线变换,就可实现解扰解扩功能,实现代价小;而且,有专用的并且伴随指令的解扰解扩码产生器,可提高解扰解扩的效率,且减少解扰解扩码的存储需求和读写RAM的功耗。
此外,本发明的解扰解扩码与基带数据相乘的实现过程仅需加法运算,而非通过一般的乘法来实现,功耗更低。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (10)

1.一种实现解扰解扩的方法,其特征在于,该方法包括:
采用数据变换和加法进行基带数据与对应的解扰解扩码复数相乘的操作,并将相乘所得数据存入矢量寄存器堆;
从矢量寄存器堆中读出一行所述相乘所得的数据,进行相邻两数据的累加,得到半行数据,并存回矢量寄存器堆;继续读出矢量寄存器堆上次累加的结果或保留在矢量运算器结果寄存器中的上次累加结果继续相邻两数据的累加,得到1/4行数据,继续累加,最终得到1个累加数据;以此类推,完成矢量寄存器堆中每行相乘所得的数据的累加。
2.根据权利要求1所述的方法,其特征在于,所述采用数据变换和加法进行基带数据与对应解扰解扩码复数相乘的操作,并存储所述相乘所得数据的步骤包括:
从矢量寄存器堆读出的第一行基带数据依据对应的解扰解扩码进行变换,并将变换后所得的数据相加,所得结果保存在矢量寄存器堆中;对从矢量寄存器堆读出的第二行基带数据执行相同的变换和相加处理,完成与对应解扰解扩码的相乘;如果两行数据结果需要累加,则在完成与对应解扰解扩码的相乘后与存储在矢量运算器结果寄存器中上行结果累加,再存回矢量寄存器堆;以此类推,完成所有基带数据与对应解扰解扩码的相乘。
3.根据权利要求2所述的方法,其特征在于,该方法还包括:
在从矢量寄存器堆读出每行基带数据时,产生与该行基带数据对应的解扰解扩码。
4.根据权利要求2所述的方法,其特征在于,所述依据解扰解扩码对基带数据进行变换,为:
根据解扰解扩码对读出的基带数据进行复数实部与虚部位置交换,并进行实部或虚部符号取反的操作。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述对矢量寄存器堆中读出的每行相乘所得的数据的累加步骤包括:
从矢量寄存器堆中读出每行存储的N个相乘所得的数据,进行两两相加,得到N/2个数据,并存储于矢量寄存器堆中;再从寄存器堆读出所述N/2个数据继续进行两两相加,得到N/4个数据,并存储;以此类推,对矢量寄存器堆中每行存储的相乘所得的数据进行多次两两相加处理,直至最后每行累加得到1个数据;其中,所述N为正整数。
6.根据权利要求1-4中任一项所述的方法,其特征在于,所述对矢量寄存器堆中读出的每行相乘所得的数据的累加步骤包括:
从矢量寄存器堆中读出每行存储的N个相乘所得的数据,进行两两相加,得到N/2个结果数据;再从矢量运算器的结果寄存器中取出所述N/2个结果数据进行两两相加,得到N/4个数据;以此类推,对每行数据进行多次两两相加处理,直至每行累加得到1个数据;其中,所述N为正整数。
7.一种实现解扰解扩的矢量运算器,其特征在于,所述矢量运算器包括:矢量寄存器堆、读口操作单元和矢量乘加器;其中,
所述矢量寄存器堆,用于存储基带数据,基带数据与对应解扰解扩码相乘所得的结果,以及行间数据累加结果和行内两两数据累加结果;
所述读口操作单元,用于从所述矢量寄存器堆读出基带数据,并依据对应的解扰解扩码对基带数据进行数据变换;或者,从所述矢量寄存器堆中读出基带数据与解扰解扩码相乘后的数据或累加后的数据,并进行相邻两数据相加需要的数据位置变换;
所述矢量乘加器,用于将经所述读口操作单元变换后的数据进行加法处理,将所得结果保存在矢量寄存器堆中;
还用于分别对从矢量寄存器堆中读出的一行相乘所得的数据进行相邻两数据的累加,得到半行数据,并存回所述矢量寄存器堆;继续读出矢量寄存器堆上次累加的结果或保留在矢量运算器结果寄存器中的上次累加结果继续相邻两数据的累加,得到1/4行数据,继续累加,最终得到1个累加数据,以此类推,完成矢量寄存器堆中每行相乘所得的数据的累加。
8.根据权利要求7所述的矢量运算器,其特征在于,所述矢量运算器还包括:解扰解扩码产生器,用于读口操作单元在从所述矢量寄存器堆读出每行基带数据时,产生与该行基带数据对应的解扰解扩码。
9.根据权利要求7或8所述的矢量运算器,其特征在于,所述矢量乘加器对矢量寄存器堆中读出的每行相乘所得的数据的累加,为:
将从矢量寄存器堆中读出的每行存储的N个相乘所得的数据,进行两两相加,得到N/2个数据,并存储于矢量寄存器堆中;再从寄存器堆读出所述N/2个数据继续进行两两相加,得到N/4个数据,并存储;以此类推,对矢量寄存器堆中每行存储的相乘所得的数据进行多次两两相加处理,直至最后每行累加得到1个数据;其中,所述N为正整数。
10.根据权利要求7或8所述的矢量运算器,其特征在于,所述矢量乘加器对矢量寄存器堆中读出的每行相乘所得的数据的累加,为:
将从矢量寄存器堆中读出的每行存储的N个相乘所得的数据,进行两两相加,得到N/2个结果数据;再从矢量运算器的结果寄存器中取出所述N/2个结果数据进行两两相加,得到N/4个数据;以此类推,对每行数据进行多次两两相加处理,直至每行累加得到1个数据;其中,所述N为正整数。
CN201410002164.8A 2014-01-02 2014-01-02 一种实现解扰解扩的方法和矢量运算器 Active CN104767544B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201410002164.8A CN104767544B (zh) 2014-01-02 2014-01-02 一种实现解扰解扩的方法和矢量运算器
EP14876279.2A EP3091669B1 (en) 2014-01-02 2014-07-15 Method and vector arithmetic unit for realizing descrambling and despreading, and computer storage medium
US15/109,465 US9871554B2 (en) 2014-01-02 2014-07-15 Method and vector computing unit for implementing de-scrambling and de-spreading, and computer storage medium
PCT/CN2014/082280 WO2015101012A1 (zh) 2014-01-02 2014-07-15 一种实现解扰解扩的方法和矢量运算器、计算机存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410002164.8A CN104767544B (zh) 2014-01-02 2014-01-02 一种实现解扰解扩的方法和矢量运算器

Publications (2)

Publication Number Publication Date
CN104767544A true CN104767544A (zh) 2015-07-08
CN104767544B CN104767544B (zh) 2018-08-24

Family

ID=53493127

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410002164.8A Active CN104767544B (zh) 2014-01-02 2014-01-02 一种实现解扰解扩的方法和矢量运算器

Country Status (4)

Country Link
US (1) US9871554B2 (zh)
EP (1) EP3091669B1 (zh)
CN (1) CN104767544B (zh)
WO (1) WO2015101012A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112506468A (zh) * 2020-12-09 2021-03-16 上海交通大学 支持高吞吐多精度乘法运算的risc-v通用处理器

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117851744A (zh) * 2024-03-07 2024-04-09 北京象帝先计算技术有限公司 矩阵运算电路、处理器、集成电路系统、电子组件及设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1275841A (zh) * 1999-05-25 2000-12-06 三星电子株式会社 用于获得伪噪声码的装置以及直接序列分多址接收机
CN1459939A (zh) * 2002-05-20 2003-12-03 上海贝尔有限公司 一种wcdma扩频系统多径对齐的方法和装置
EP1722487A1 (en) * 2005-05-11 2006-11-15 Nordnav Technologies AB Spread spectrum correlator
CN102710280A (zh) * 2012-05-21 2012-10-03 杭州电子科技大学 可分块而扩展的高速流水线移位解扩方法及装置
WO2013189360A2 (zh) * 2013-04-03 2013-12-27 中兴通讯股份有限公司 一种数据信道的解扰解扩装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7103095B2 (en) * 2000-03-06 2006-09-05 Texas Instruments Incorporated Spread spectrum code correlator
US7801935B2 (en) * 2005-03-30 2010-09-21 Broadcom Corporation System (s), method (s), and apparatus for converting unsigned fixed length codes (decoded from exponential golomb codes) to signed fixed length codes
CN101064581B (zh) * 2006-04-27 2012-07-04 上海宣普实业有限公司 一种解扰解扩的方法与装置
CN101193285A (zh) * 2006-11-22 2008-06-04 乐金电子(昆山)电脑有限公司 影像压缩编码及解码的方法和装置
CN101207468B (zh) * 2006-12-19 2010-07-21 华为技术有限公司 丢帧隐藏方法、系统和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1275841A (zh) * 1999-05-25 2000-12-06 三星电子株式会社 用于获得伪噪声码的装置以及直接序列分多址接收机
CN1459939A (zh) * 2002-05-20 2003-12-03 上海贝尔有限公司 一种wcdma扩频系统多径对齐的方法和装置
EP1722487A1 (en) * 2005-05-11 2006-11-15 Nordnav Technologies AB Spread spectrum correlator
CN102710280A (zh) * 2012-05-21 2012-10-03 杭州电子科技大学 可分块而扩展的高速流水线移位解扩方法及装置
WO2013189360A2 (zh) * 2013-04-03 2013-12-27 中兴通讯股份有限公司 一种数据信道的解扰解扩装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112506468A (zh) * 2020-12-09 2021-03-16 上海交通大学 支持高吞吐多精度乘法运算的risc-v通用处理器

Also Published As

Publication number Publication date
CN104767544B (zh) 2018-08-24
US20160336995A1 (en) 2016-11-17
EP3091669A4 (en) 2017-02-08
EP3091669A1 (en) 2016-11-09
WO2015101012A1 (zh) 2015-07-09
US9871554B2 (en) 2018-01-16
EP3091669B1 (en) 2019-12-11

Similar Documents

Publication Publication Date Title
CN111213125B (zh) 使用simd指令进行高效的直接卷积
KR101842061B1 (ko) 필터 벡터 프로세싱 연산들을 위해 탭핑-지연 라인을 이용하는 벡터 프로세싱 엔진, 및 관련된 벡터 프로세서 시스템들 및 방법들
KR101781057B1 (ko) 실행 유닛들과 벡터 데이터 메모리 사이에 병합 회로를 갖는 벡터 프로세싱 엔진, 및 관련된 방법
CN107797962B (zh) 基于神经网络的计算阵列
US7725520B2 (en) Processor
CN102231102B (zh) 基于余数系统的rsa密码处理方法及协处理器
US10324689B2 (en) Scalable memory-optimized hardware for matrix-solve
US10037210B2 (en) Apparatus and method for vector instructions for large integer arithmetic
KR20160085335A (ko) 벡터 데이터 메모리와 실행 유닛들 사이의 데이터 흐름 경로들에서 재정렬 회로를 이용하는 벡터 프로세싱 엔진, 및 관련된 방법
KR20160084460A (ko) 상관 벡터 프로세싱 연산들을 위해 탭핑-지연 라인을 이용하는 벡터 프로세싱 엔진, 및 관련된 벡터 프로세서 시스템들 및 방법들
US9355068B2 (en) Vector multiplication with operand base system conversion and re-conversion
CN103761068A (zh) 优化的蒙哥马利模乘方法、模平方方法和模乘硬件
CN104375802A (zh) 一种乘除法器及运算方法
JP2011034566A (ja) マルチmacアーキテクチャにおける低電力firフィルタ
EP2584460A1 (en) Vector processing system comprising a replicating subsystem and method
US8892615B2 (en) Arithmetic operation circuit and method of converting binary number
US11922133B2 (en) Processor and method for processing mask data
CN104767544B (zh) 一种实现解扰解扩的方法和矢量运算器
US20100138468A1 (en) Digital Signal Processor Having Instruction Set With One Or More Non-Linear Complex Functions
US11210090B2 (en) Register-based complex number processing
CN101981542B (zh) 多项式数据处理运算
CN204143432U (zh) 一种乘除法器
CN113890508A (zh) 一种批处理fir算法的硬件实现方法和硬件系统
CN113485751A (zh) 执行伽罗瓦域乘法的方法、运算单元和电子装置
KR20170097613A (ko) 벡터 수평 로직 명령어를 위한 장치 및 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20150708

Assignee: Xi'an Chris Semiconductor Technology Co. Ltd.

Assignor: SHENZHEN ZTE MICROELECTRONICS TECHNOLOGY CO., LTD.

Contract record no.: 2019440020036

Denomination of invention: Method for implementing descrambling and dispreading and vector operator

Granted publication date: 20180824

License type: Common License

Record date: 20190619

EE01 Entry into force of recordation of patent licensing contract