CN103731386A - 一种基于gpp和simd技术的高速调制方法 - Google Patents
一种基于gpp和simd技术的高速调制方法 Download PDFInfo
- Publication number
- CN103731386A CN103731386A CN201410001171.6A CN201410001171A CN103731386A CN 103731386 A CN103731386 A CN 103731386A CN 201410001171 A CN201410001171 A CN 201410001171A CN 103731386 A CN103731386 A CN 103731386A
- Authority
- CN
- China
- Prior art keywords
- simd
- encapsulation
- data
- simd instruction
- mapping
- 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
Links
Images
Landscapes
- Digital Transmission Methods That Use Modulated Carrier Waves (AREA)
Abstract
一种基于GPP和SIMD技术的高速调制方法,是将输入的k个比特流信息流进行并行调制,并以调制后星座点坐标的实部数据(I路)和虚部数据(Q路)形式输出;k为调制系数,调制方式为BPSK时,k=1;调制方式为QPSK时,k=2;调制方式为22n-QAM时,k=2n。本发明根据不同的调制系数k采取不同的处理方式,基本流程为:先将各路输入的比特信息分别进行并行的“映射”操作,再使用并行的“加”或“异或”操作,将各路映射后的比特信息结合在一起,产生I路和Q路输出。相比于传统的查表调制方法,本发明提高了数据处理并行度;同时对所有通用调制方式设计了定点数算法,节省了浮点数的运算时间和存储空间,简化计算流程;且时间复杂度和空间复杂度随着调制系数的变化呈线性增长,具有扩展性。
Description
技术领域
本发明涉及一种基于通用处理器GPP(General Purpose Processor)和单指令多数据流SIMD(Single Instruction Multiple Data)技术的高速调制方法,属于无线通信中的调制解调技术领域。
背景技术
调制技术是对信号源的信息进行处理并叠加到载波上,使其变换为适宜于信道传输的形式的过程。信源的信息通常包含直流分量和频率较低的频率分量,被称为基带信号。基带信号往往不能作为传输信号,因此必须把基带信号转变为一个与基带相比较、其频率非常高的信号,即载波,以适合于信道传输。
调制技术伴随着通信技术的进步而不断发展。数字通信***在淘汰模拟通信***的同时,也带来了数字调制技术。当代数字通信***对传输效率要求越来越高,迫切需要专门研究和尽快开发出一些抗干扰性强、误码性能好、频谱利用率高的数字调制技术。因此,3G***或4G***或其他通信***中使用的调制方式基本相同或趋同。比如:二相相移键控调制BPSK(Binary Phase ShiftKeying)使用于宽带码分多址WCDMA(Wideband Code Division MultipleAccess)通信***、码分多址2000系列CDMA2000(Code Division MultipleAccess2000)通信***和802.11n通信***中;四相相移键控调制QPSK使用于WCDMA通信***、CDMA2000通信***、时分-同步码分多址TD-SCDMA(Time Division-Synchronous Code Division Multiple Access)通信***、长期演进LTE(Long Term Evolution)通信***和802.11n通信***中;16进制正交振幅调制16-QAM使用于TD-SCDMA通信***、LTE通信***和802.11n通信***中;64进制正交振幅调制64-QAM在LTE通信***和802.11n通信***中。上述各种调制方式都是通用的调试方式,作为此类调制方式的扩展,任意22n-QAM都具有类似的星座图形状和映射关系,其中n为大于1的自然数。
上述通用调制方式的调制过程为:每产生1个星座点(星座点由I路数据和Q路数据组成),需要使用k个输入的比特信息(k为调制系数,各调制方式的k值是不同的:BPSK时,取值为1;QPSK时,取值为2;16-QAM时,取值为4;64-QAM时,取值为6;22n-QAM时,取值为2n。跟据这些比特信息进行映射,分别得到I路输出和Q路输出的值。
下面以BPSK、QPSK、16-QAM、64-QAM为例,进行说明:
BPSK调制的星座图映射关系如图1所示,每产生1个星座点,需要输入1个比特信息、即b0,其映射关系的公式为:
QPSK调制的星座图映射关系如图2所示,每产生1个星座点,需要输入2个比特信息,即b0和b1,其映射关系的公式为:
16-QAM调制的星座图映射关系如图3所示,每产生1个星座点,需要输入4个比特信息,即b0、b1、b2和b3,其映射关系的公式如下:
64-QAM调制的星座图映射关系如图4所示,每产生1个星座点,需要输入6个的比特信息,即b0、b1、b2、b3、b4和b5,其映射关系公式如下:
从上述各个公式可见,随着调制系数的增加,其计算公式越来越复杂。由于数字***的数据量非常大,而***的传输速率要求又高,如何降低信号调制过程产生的时延,已经成为数字信号调制技术优化与改进的主要方向。
目前,在通用处理器GPP芯片架构下,实现调制的传统算法是使用“查表法”:需要提前将映射关系制成数组C,首先将k个输入的比特信息通过移位和异或的操作,计算得到数组的下标xI和xQ,再在映射关系数组C中,使用xI和xQ查表得到输出的I路和Q路的数值。其中,BPSK的I路有输出值,Q路输出值全部为0。QPSK、16-QAM、64-QAM以及任意22n-QAM中任何一个调制方式的I路和Q路都有输出值,且两者的映射关系是一致的,因此对于其中任何一种调制方式,其映射关系数组C是唯一的(下标表示该表适用的调制方式)。以BPSK、QPSK、16-QAM、64-QAM为例,分别说明之:
在BPSK调制时,产生数组下标的方法如下述公式:xI=b0,其映射关系数组CBPSK的计算公式为:CBPSK[2]={-1,1}。
在QPSK时,产生数组下标的方法如下述公式: 其映射关系数组CQPSK的计算公式为:CQPSK[2]={-1,1}。
在16-QAM调制时,产生数组下标的方法如下述公式:
在64-QAM调制时,产生数组下标的方法如下述公式:
C64-QAM[8]={-7,7,-1,1,-5,5,-3,3}。
故在传统查表方法中,每个星座点的输出可表示为公式;
查表法的主要缺点有两条:(1)数组下标的计算和查表的操作很难对数据执行并行计算。(2)随着调制系数的增大,表的大小或容量呈指数式增长.这样无疑使得调制过程的时延更加厉害。
单指令多数据流SIMD(Single Instruction Multiple Data)技术是一种采用一个控制器来控制多个处理器,以便能够同时对一组数据(又称“数据矢量”)中的每个数据分别执行相同的操作,从而实现空间上的并行性处理的技术。在微处理芯片器中,单指令多数据流技术则是一个控制器控制多个平行的处理微元,例如Intel的MMX或SSE以及AMD的3D Now技术。
发明内容
有鉴于此,本发明的目的是提供一种基于GPP和SIMD技术的高速调制方法,本发明方法在保证传输性能和正确性的基础上,在GPP芯片支撑架构下,能够高速完成包括BPSK、QPSK、16-QAM、64-QAM和任意22n-QAM的通用调制过程的全部操作,且具有时延小、成本低、可移植性好和扩展性强等多项优秀特性。
为了达到上述目的,本发明提供了一种基于通用处理器GPP和单指令多数据流SIMD技术的高速调制方法,其特征在于:首先设置调制参数k和k个输入比特信息流B0,B1,...,Bk-1,其中,每个输入比特信息流各自包含t个输入比特信息,用于进行调制生成t个星座点:即输出的t个调制后星座点坐标的I路实部数据和Q路虚部数据;然后,根据不同的调制系数k采取相应的不同处理方式:先将各路输入的比特信息分别进行并行的“映射”操作,再使用并行的“加”或“异或”操作,将各路映射后的比特信息结合在一起,产生I路和Q路输出;式中,k和t均为自然数,且t=M×s,自然数M和s分别是SIMD封装数据的长度和个数;为k个输入比特信息流中的任意一个比特信息,其涵义是第a个输入比特信息流中的第d个比特信息,a和d的取值范围分别为[0,k-1]和[0,t-1];在序号为a的输入比特信息流Ba中,存储有产生每个星座点所对应的比特信息序列中的第a个比特信息,且而且,每个输入比特信息流的第d个比特信息构成的信息序列就是产生第d个星座点的I路和Q路的输出所对应的比特信息序列;其中,I路输出为I0,I1,...,It-1,Q路输出为Q0,Q1,...,Qt-1;然后,将k个字长为t的输入比特信息流分别封装成为s个字长为M的SIMD格式数据。
本发明基于GPP和SIMD的高速调制方法,其不同于传统调制方法或创新技术的特点是:(1)本发明是基于GPP和SIMD技术设计的适用于多核、多处理器芯片的高速通用调制方法,其将比特信息按位置进行分类,以实现并行计算,提高了处理并行度。(2)本发明适用于BPSK、QPSK、16-QAM、64-QAM和任意22n-QAM通用调制模式的处理,具有良好的可移植性和扩展性。(3)相较于传统的查表法,本发明方法对SIMD适用的调制算法进行了重大创新:使用并行计算代替了查表映射,节省了计算时延和存储空间。因此,本发明具有很好的推广应用前景。
附图说明
图1是BPSK调制的星座映射示意图。
图2是QPSK调制的星座映射示意图。
图3是16-QAM调制的星座映射示意图。
图4是64-QAM调制的星座映射示意图。
图5是“映射”SIMD指令的操作示意图。
图6是“异或”SIMD指令的操作示意图。
图7是“加”SIMD指令的操作示意图。
图8是本发明基于GPP和SIMD的高速调制方法接口示意图。
图9是本发明基于GPP和SIMD的高速调制方法操作步骤流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
本发明方法的特点是在GPP架构下利用SIMD、即单指令多数据流技术,简化了查表方法,使用并行计算解决了调制映射处理。本发明使用的SIMD技术在执行单条指令时,能够对两组各自包含M个元素的封装数据(分别设为X0,X1,...XM-1和Y0,Y1,...YM-1;少部分情况下、也可只处理一组封装数据)进行并行操作,每对数据元素Xi,Yi(0≤i≤M-1)同时执行相同操作(本发明中为“映射”、“加”和“异或”中的一种),得到的M个结果作为数据元素被封装在一组数据(Z0,Z1,...ZM-1)中。
由于可以并行处理大量数据,SIMD指令能够提高GPP架构的运算速度。SIMD的封装数据长度M取决于封装数据的比特长度P和数据元素类型所占的比特长度R:其中P=64×2T(T=0,1,2,...),数据元素类型为字节时,所对应的R=8,数据元素类型为字时,所对应的R=16。
参见图5,介绍“映射”SIMD指令的操作功能:输入的两组封装数据为X0,X1,...XM-1和Y0,Y1,...YM-1,输出的封装数据为Z0,Z1,...ZM-1,并行地完成M对映射操作,第i(0≤i≤M-1)对使用Yi作为下标,寻找X0,X1,...XM-1中的对应值作为输出,即
参见图6,介绍“异或”SIMD指令的操作功能:输入的两组封装数据为X0,X1,...XM-1和Y0,Y1,...YM-1,输出的封装数据为Z0,Z1,...ZM-1,并行地完成M对与操作,即Zi=Xi^Yi,(0≤i≤M-1)。
参见图7,介绍“加”SIMD指令的操作功能:输入的两组封装数据为X0,X1,...XM-1和Y0,Y1,...YM-1,输出的封装数据为Z0,Z1,...ZM-1,并行地完成M对与操作,即Zi=Xi+Yi,(0≤i≤M-1)。
参见图8,介绍本发明高速调制方法的接口示意图:本发明方法需要外界提供或设置调制参数k和k个输入比特信息流B0,B1,...,Bk-1,其中,每个输入比特信息流各自包含t个输入比特信息,用于进行调制产生t个星座点(即输出的t个调制后星座点坐标的I路实部数据和Q路虚部数据);然后,根据不同的调制系数k采取相应的不同处理方式:先将各路输入的比特信息分别进行并行的“映射”操作,再使用并行的“加”或“异或”操作,将各路映射后的比特信息结合在一起,产生I路和Q路输出;式中,k和t均为自然数,且t=M×s,自然数M和s分别是SIMD封装数据的长度和个数;为k个输入比特信息流中的任意一个比特信息,其涵义是第a个输入比特信息流中的第d个比特信息,a的取值范围为[0,k-1],d的取值范围为[0,t-1]。在序号为a的输入比特信息流Ba中,存储有产生每个星座点所对应的比特信息序列中的第a个比特信息,且而且,每个输入比特信息流的第d个比特信息构成的信息序列就是产生第d个星座点的I路和Q路的输出所对应的比特信息序列;其中,I路输出为I0,I1,...,It-1,Q路输出为Q0,Q1,...,Qt-1;然后,将k个字长为t的输入比特信息流分别封装成为s个字长为M的SIMD格式数据。
参见图9,介绍本发明调制方法的下述具体操作步骤:
步骤1,根据输入的调制参数k判断要进行的调制模式:
当k=1时,选取二相相移键控调制BPSK(Binary Phase Shift Keying);
当k=2时,选取四相相移键控调制QPSK(Quadrature Phase Shift Keying);
当k>2时,选取2k正交幅度调制2k-QAM(Quadrature AmplitudeModulation),其中,k为大于2的偶数自然数。
步骤2,根据下述三种不同的调制方式,执行相应的调制操作内容:
(2A)当调制方式为BPSK时,执行高速二相相移键控调制BPSK调制方法;此时,需要设置1个输入比特信息流B0,并对其执行并行的“映射”SIMD指令,完成下述调制操作内容:
依次对B0中的s个SIMD封装数据分别执行“映射”SIMD指令,该“映射”SIMD指令的X输入的SIMD封装数据为:其中,r为执行“映射”SIMD指令的操作次数序号,其取值范围为[0,s-1];“映射”SIMD指令的Y输入的SIMD封装数据为:-1,1,0,...,0;完成该“映射”SIMD指令操作后,得到的输出Z为最终输出数据流中的I路输出:IrM+0,IrM+1,...,IrM+M-1,而最终输出数据流中的Q路输出为全0。
(2B)当调制方式为QPSK时,执行高速四相相移键控调制QPSK调制方法;此时,需要设置2个输入比特信息流B0和B1,并分别对其执行并行的“映射”SIMD指令,完成下述调制操作内容:
(21)依次对B0中的s个SIMD封装数据分别执行“映射”SIMD指令,该“映射”SIMD指令的X输入的SIMD封装数据为:其中,u为执行“映射”SIMD指令的操作次数序号,其取值范围为[0,s-1];“映射”SIMD指令的Y输入的SIMD封装数据为:-1,1,0,...,0;则完成该“映射”SIMD指令操作后,得到的输出Z为最终输出数据流中的I路输出:IuM+0,IuM+1,...,IuM+M-1。
(22)依次对B1中的s个SIMD封装数据分别执行“映射”SIMD指令,该“映射”SIMD指令的X输入的SIMD封装数据为:其中,v为执行“映射”SIMD指令的操作次数序号,其取值范围为[0,s-1];“映射”SIMD指令的Y输入的SIMD封装数据为:-1,1,0,...,0;则完成该“映射”SIMD指令操作后,得到的输出Z为最终输出数据流中的Q路输出:QvM+0,QvM+1,...,QvM+M-1。
(2C)当调制方式为任意的2k-QAM时,执行高速正交振幅调制QAM调制方法;当k=2n时,需要设置2n个输入比特信息流B0,B1,B2,...,B2n-1,并分别对其执行并行的“映射”SIMD指令,完成下述调制操作内容:
(2a)依次对B0中的s个SIMD封装数据分别执行“映射”SIMD指令,该“映射”SIMD指令的X输入的SIMD封装数据为:其中,w为执行“映射”SIMD指令的操作次数序号,其取值范围为[0,s-1];“映射”SIMD指令的Y输入的SIMD封装数据为:-1,1,0,...,0;则完成该“映射”SIMD指令后,得到的输出Z为第一中间数据流:
(2b)分别对输入比特信息流B1,B2,...,Bn-2中每个输入比特信息流的s个SIMD封装数据执行“映射”SIMD指令,该“映射”SIMD指令的X输入的SIMD封装数据为:其中,y为执行“映射”SIMD指令的操作次数序号,其取值范围为[0,s-1];z为输入比特信息流序号,其取值范围为[1,n-2];“映射”SIMD指令的Y输入的SIMD封装数据为:1,-1,0,...,0;则完成该“映射”SIMD指令后,得到的输出Z为第一中间数据流:
(2c)依次对Bn-1中的s个SIMD封装数据分别执行“映射”SIMD指令,该“映射”SIMD指令的X输入的SIMD封装数据为:其中,f为执行“映射”SIMD指令的操作次数序号,其取值范围为[0,s-1];“映射”SIMD指令的Y输入的SIMD封装数据为:2,0,...,0;则完成该“映射”SIMD指令后,得到的输出Z为第一中间数据流:
(2d)依次对Bn中的s个SIMD封装数据分别执行“映射”SIMD指令,该“映射”SIMD指令的X输入的SIMD封装数据为:其中,g为执行“映射”SIMD指令的操作次数序号,其取值范围为[0,s-1];“映射”SIMD指令的Y输入的SIMD封装数据为:-1,1,0,...,0;则完成该“映射”SIMD指令后,得到的输出Z为第一中间数据流:
(2e)分别对Bn+1,Bn+2,...,B2n-2中每个输入比特信息流的s个SIMD封装数据执行“映射”SIMD指令,该“映射”SIMD指令的X输入的SIMD封装数据为:其中,l为执行“映射”SIMD指令的操作次数序号,其取值范围为[0,s-1];h为输入比特信息流序号,其取值范围为:[n+1,2n-2];“映射”SIMD指令的Y输入的SIMD封装数据为:1,-1,0,...,0;则完成该“映射”SIMD指令后,得到的输出Z为第一中间数据流:
(2f)依次对B2n-1中的s个SIMD封装数据分别执行“映射”SIMD指令,该“映射”SIMD指令的X输入的SIMD封装数据为:其中,c为执行“映射”SIMD指令的操作次数序号,其取值范围为:[0,s-1];“映射”SIMD指令的Y输入的SIMD封装数据为:2,0,...,0;则完成该“映射”SIMD指令后,得到的输出Z为第一中间数据流:
(2g)依次对第一中间数据流Fn-1和Fn-2的s个SIMD封装数据分别执行“异或”SIMD指令,该“异或”SIMD指令的X输入的SIMD封装数据为:其中,e为执行“异或”SIMD指令的操作次数序号,其取值范围为:[0,s-1];“异或”SIMD指令的Y输入的SIMD封装数据为:则完成该“异或”SIMD指令后,得到的输出Z为第二中间数据流:GeM+0,GeM+1,...,GeM+M-1。
(2h)循环执行下述操作:使用第二中间数据流G更新第三中间数据流H,再使用更新后的第三中间数据流H和第一中间数据流Fn-3-W执行异或SIMD指令,将其运算结果反馈给新的第二中间数据流G,其中,W为循环操作次数序号,其取值范围是:[0,n-4],且呈递增趋势变化:
先对第二中间数据流G中的s个SIMD封装数据分别执行“加”SIMD指令,该“加”SIMD指令的X输入的SIMD封装数据为:GjM+0,GjM+1,...,GjM+M-1,其中,j为执行“加”SIMD指令的操作次数序号,其取值范围为:[0,s-1];“加”SIMD指令的Y输入的SIMD封装数据为:2W+2-1,2W+2-1,2W+2-1,...,2W+2-1;则完成该“加”SIMD指令后,得到的输出Z为新的第三中间数据流:HjM+0,HjM+1,...,HjM+M-1。
再对该新的第三中间数据流H和第一中间数据流Fn-3-W中的s个SIMD封装数据分别执行“异或”SIMD指令,该“异或”SIMD指令的X输入的SIMD封装数据为:HmM+0,HmM+1,...,HmM+M-1,其中,m为执行“异或”SIMD指令的操作次数序号,其取值范围为:[0,s-1];“异或”SIMD指令的Y输入的SIMD封装数据为:则完成该“异或”SIMD指令后,得到的输出Z为新的第二中间数据流:GmM+0,GmM+1,...,GmM+M-1。
(2i)对步骤(2h)得到的第二中间数据流中的s个SIMD封装数据分别执行“加”SIMD指令,该“加”SIMD指令的X输入的SIMD封装数据为:GoM+0,GoM+1,...,GoM+M-1,其中,o为执行“加”SIMD指令的操作次数序号,其取值范围为:[0,s-1];“加”SIMD指令的Y输入的SIMD封装数据为:2n-1-1,2n-1-1,2n-1-1,...,2n-1-1;则完成该“加”SIMD指令后,得到的输出Z为新的第三中间数据流:HoM+0,HoM+1,...,HoM+M-1。
(2j)对该新的第三中间数据流H和第一中间数据流F0的s个SIMD封装数据分别执行“异或”SIMD指令,该“异或”SIMD指令的X输入的SIMD封装数据为:HpM+0,HpM+1,...,HpM+M-1,其中,p为执行“异或”SIMD指令的操作次数序号,其取值范围为:[0,s-1];“异或”SIMD指令的Y输入的SIMD封装数据为:则完成该“异或”SIMD指令后,得到的输出Z为最终输出数据流中的I路输出:IpM+0,IpM+1,...,IpM+M-1。
(2k)依次对第一中间数据流F2n-1和F2n-2中的s个SIMD封装数据分别执行“异或”SIMD指令,该“异或”SIMD指令的X输入的SIMD封装数据为:其中,q为执行“异或”SIMD指令的操作次数序号,其取值范围为:[0,s-1];“异或”SIMD指令的Y输入的SIMD封装数据为:则完成该“异或”SIMD指令后,得到的输出Z为第二中间数据流:GqM+0,GqM+1,...,GqM+M-1。
(2l)循环执行下述操作:使用第二中间数据流G更新第三中间数据流H,再使用更新后的第三中间数据流H和第一中间数据流F2n-3-A执行异或SIMD指令,将其运算结果反馈给新的第二中间数据流G,其中,A为循环操作次数序号,其取值范围是:[0,n-4],且呈递增趋势变化。
先对第二中间数据流G中的s个SIMD封装数据分别执行“加”SIMD指令,该“加”SIMD指令的X输入的SIMD封装数据为:GDM+0,GDM+1,...,GDM+M-1,其中,D为执行“加”SIMD指令的操作次数序号,其取值范围为[0,s-1];“加”SIMD指令的Y输入的SIMD封装数据为:2A+2-1,2A+2-1,2A+2-1,...,2A+2-1;则完成该“加”SIMD指令后,得到的输出Z为新的第三中间数据流:HDM+0,HDM+1,...,HDM+M-1。
再对该新的第三中间数据流H和第一中间数据流F2n-3-A中的s个SIMD封装数据分别执行“异或”SIMD指令,该“异或”SIMD指令的X输入的SIMD封装数据为:HJM+0,HJM+1,...,HJM+M-1,其中,J为执行“异或”SIMD指令的操作次数序号,其取值范围为[0,s-1];“异或”SIMD指令的Y输入的SIMD封装数据为:则完成该“异或”SIMD指令后,得到的输出Z为新的第二中间数据流:GJM+0,GJM+1,...,GJM+M-1。
(2m)对步骤(2l)得到的第二中间数据流G中的s个SIMD封装数据分别执行“加”SIMD指令,该“加”SIMD指令的X输入的SIMD封装数据为:GKM+0,GKM+1,...,GKM+M-1,其中,K为执行“加”SIMD指令的操作次数序号,其取值范围为:[0,s-1];“加”SIMD指令的Y输入的SIMD封装数据为:2n-1-1,2n-1-1,2n-1-1,...,2n-1-1;则完成该“加”SIMD指令后,得到的输出Z为新的第三中间数据流:HKM+0,HKM+1,...,HKM+M-1。
(2n)对该新的第三中间数据流H和第一中间数据流Fn中的s个SIMD封装数据分别执行“异或”SIMD指令,该“异或”SIMD指令的X输入的SIMD封装数据为:HLM+0,HLM+1,...,HLM+M-1,其中,L为执行“异或”SIMD指令的操作次数序号,其取值范围为:[0,s-1],“异或”SIMD指令的Y输入的SIMD封装数据为:则完成该“异或”SIMD指令后,得到的输出Z为最终输出数据流中的Q路输出:QLM+0,QLM+1,...,QLM+M-1。
本发明已经进行了多次实施试验,试验场景参数如下:在CoreTMi7-3610QM、主频为2.3GHz的CPU上进行传统的查表法和本发明高速通用调制方法的测试,并对处理217个输入比特信息的调制所需要的时间进行比较:
BPSK调制:传统查表方法耗费了3185微秒,本发明方法耗费了225微秒;
QPSK调制:传统查表方法耗费了2863微秒,本发明方法耗费了197微秒;
16-QAM调制:传统查表方法耗费了592微秒,本发明方法耗费了70微秒;
64-QAM调制:传统查表方法耗费了379微秒,本发明方法耗费了55微秒。因此,从速度上来看,本发明较传统的查表方法有了显著提高,而且,本发明的调制方法不需要预先存储调制映射数组。
因此,本发明实施例验证了该基于GPP和SIMD技术的高速调制方法的良好性能,实验结果是成功的,实现了发明目的。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (5)
1.一种基于通用处理器GPP和单指令多数据流SIMD技术的高速调制方法,其特征在于:首先设置调制参数k和k个输入比特信息流B0,B1,...,Bk-1,其中,每个输入比特信息流各自包含t个输入比特信息,用于进行调制生成t个星座点:即输出的t个调制后星座点坐标的I路实部数据和Q路虚部数据;然后,根据不同的调制系数k采取相应的不同处理方式:先将各路输入的比特信息分别进行并行的“映射”操作,再使用并行的“加”或“异或”操作,将各路映射后的比特信息结合在一起,产生I路和Q路输出;式中,k和t均为自然数,且t=M×s,自然数M和s分别是SIMD封装数据的长度和个数;为k个输入比特信息流中的任意一个比特信息,其涵义是第a个输入比特信息流中的第d个比特信息,a和d的取值范围分别为[0,k-1]和[0,t-1];在序号为a的输入比特信息流Ba中,存储有产生每个星座点所对应的比特信息序列中的第a个比特信息,且而且,每个输入比特信息流的第d个比特信息构成的信息序列就是产生第d个星座点的I路和Q路的输出所对应的比特信息序列;其中,I路输出为I0,I1,...,It-1,Q路输出为Q0,Q1,...,Qt-1;然后,将k个字长为t的输入比特信息流分别封装成为s个字长为M的SIMD格式数据。
2.根据权利要求1所述的方法,其特征在于:所述方法包括下列操作步骤:
步骤1,根据输入的调制参数k判断要进行的调制模式:
当k=1时,选取二相相移键控调制BPSK(Binary Phase Shift Keying);
当k=2时,选取四相相移键控调制QPSK(Quadrature Phase Shift Keying);
当k>2时,选取2k正交幅度调制2k-QAM(Quadrature AmplitudeModulation),其中,k为大于2的偶数自然数;
步骤2,根据不同的调制方式,执行相应的调制操作内容:
当调制方式为BPSK时,执行高速二相相移键控调制BPSK调制方法;
当调制方式为QPSK时,执行高速四相相移键控调制QPSK调制方法;
当调制方式为任意的2k-QAM时,执行高速正交振幅调制QAM调制方法。
3.根据权利要求2所述的方法,其特征在于:所述步骤2在执行高速BPSK调制方法时,需要设置1个输入比特信息流B0,并对其执行并行的“映射”SIMD指令,完成下述调制操作内容:
依次对B0中的s个SIMD封装数据分别执行“映射”SIMD指令,该“映射”SIMD指令的X输入的SIMD封装数据为:其中,r为执行“映射”SIMD指令的操作次数序号,其取值范围为[0,s-1];“映射”SIMD指令的Y输入的SIMD封装数据为:-1,1,0,...,0;完成该“映射”SIMD指令操作后,得到的输出Z为最终输出数据流中的I路输出:IrM+0,IrM+1,...,IrM+M-1,而最终输出数据流中的Q路输出为全0。
4.根据权利要求2所述的方法,其特征在于:所述步骤2在执行高速QPSK调制方法时,需要设置2个输入比特信息流B0和B1,并分别对其执行并行的“映射”SIMD指令,完成下述调制操作内容:
(21)依次对B0中的s个SIMD封装数据分别执行“映射”SIMD指令,该“映射”SIMD指令的X输入的SIMD封装数据为:其中,u为执行“映射”SIMD指令的操作次数序号,其取值范围为[0,s-1];“映射”SIMD指令的Y输入的SIMD封装数据为:-1,1,0,...,0;则完成该“映射”SIMD指令操作后,得到的输出Z为最终输出数据流中的I路输出:IuM+0,IuM+1,...,IuM+M-1;
5.根据权利要求2所述的方法,其特征在于:所述步骤2在执行高速QAM调制方法、且k=2n时,需要设置2n个输入比特信息流B0,B1,B2,...,B2n-1,并分别对其执行并行的“映射”SIMD指令,完成下述调制操作内容:
(2a)依次对B0中的s个SIMD封装数据分别执行“映射”SIMD指令,该“映射”SIMD指令的X输入的SIMD封装数据为:其中,w为执行“映射”SIMD指令的操作次数序号,其取值范围为[0,s-1];“映射”SIMD指令的Y输入的SIMD封装数据为:-1,1,0,...,0;则完成该“映射”SIMD指令后,得到的输出Z为第一中间数据流:
(2b)分别对输入比特信息流B1,B2,...,Bn-2中每个输入比特信息流的s个SIMD封装数据执行“映射”SIMD指令,该“映射”SIMD指令的X输入的SIMD封装数据为:其中,y为执行“映射”SIMD指令的操作次数序号,其取值范围为[0,s-1];z为输入比特信息流序号,其取值范围为[1,n-2];“映射”SIMD指令的Y输入的SIMD封装数据为:1,-1,0,...,0;则完成该“映射”SIMD指令后,得到的输出Z为第一中间数据流:
(2c)依次对Bn-1中的s个SIMD封装数据分别执行“映射”SIMD指令,该“映射”SIMD指令的X输入的SIMD封装数据为:其中,f为执行“映射”SIMD指令的操作次数序号,其取值范围为[0,s-1];“映射”SIMD指令的Y输入的SIMD封装数据为:2,0,...,0;则完成该“映射”SIMD指令后,得到的输出Z为第一中间数据流:
(2d)依次对Bn中的s个SIMD封装数据分别执行“映射”SIMD指令,该“映射”SIMD指令的X输入的SIMD封装数据为:其中,g为执行“映射”SIMD指令的操作次数序号,其取值范围为[0,s-1];“映射”SIMD指令的Y输入的SIMD封装数据为:-1,1,0,...,0;则完成该“映射”SIMD指令后,得到的输出Z为第一中间数据流:
(2e)分别对Bn+1,Bn+2,...,B2n-2中每个输入比特信息流的s个SIMD封装数据执行“映射”SIMD指令,该“映射”SIMD指令的X输入的SIMD封装数据为:其中,l为执行“映射”SIMD指令的操作次数序号,其取值范围为[0,s-1];h为输入比特信息流序号,其取值范围为:[n+1,2n-2];“映射”SIMD指令的Y输入的SIMD封装数据为:1,-1,0,...,0;则完成该“映射”SIMD指令后,得到的输出Z为第一中间数据流:
(2f)依次对B2n-1中的s个SIMD封装数据分别执行“映射”SIMD指令,该“映射”SIMD指令的X输入的SIMD封装数据为:其中,c为执行“映射”SIMD指令的操作次数序号,其取值范围为:[0,s-1];“映射”SIMD指令的Y输入的SIMD封装数据为:2,0,...,0;则完成该“映射”SIMD指令后,得到的输出Z为第一中间数据流:
(2g)依次对第一中间数据流Fn-1和Fn-2的s个SIMD封装数据分别执行“异或”SIMD指令,该“异或”SIMD指令的X输入的SIMD封装数据为:其中,e为执行“异或”SIMD指令的操作次数序号,其取值范围为:[0,s-1];“异或”SIMD指令的Y输入的SIMD封装数据为:则完成该“异或”SIMD指令后,得到的输出Z为第二中间数据流:GeM+0,GeM+1,...,GeM+M-1;
(2h)循环执行下述操作:使用第二中间数据流G更新第三中间数据流H,再使用更新后的第三中间数据流H和第一中间数据流Fn-3-W执行异或SIMD指令,将其运算结果反馈给新的第二中间数据流G,其中,W为循环操作次数序号,其取值范围是:[0,n-4],且呈递增趋势变化:
先对第二中间数据流G中的s个SIMD封装数据分别执行“加”SIMD指令,该“加”SIMD指令的X输入的SIMD封装数据为:GjM+0,GjM+1,...,GjM+M-1,其中,j为执行“加”SIMD指令的操作次数序号,其取值范围为:[0,s-1];“加”SIMD指令的Y输入的SIMD封装数据为:2W+2-1,2W+2-1,2W+2-1,...,2W+2-1;则完成该“加”SIMD指令后,得到的输出Z为新的第三中间数据流:HjM+0,HjM+1,...,HjM+M-1;
再对该新的第三中间数据流H和第一中间数据流Fn-3-W中的s个SIMD封装数据分别执行“异或”SIMD指令,该“异或”SIMD指令的X输入的SIMD封装数据为:HmM+0,HmM+1,...,HmM+M-1,其中,m为执行“异或”SIMD指令的操作次数序号,其取值范围为:[0,s-1];“异或”SIMD指令的Y输入的SIMD封装数据为:则完成该“异或”SIMD指令后,得到的输出Z为新的第二中间数据流:GmM+0,GmM+1,...,GmM+M-1;
(2i)对步骤(2h)得到的第二中间数据流中的s个SIMD封装数据分别执行“加”SIMD指令,该“加”SIMD指令的X输入的SIMD封装数据为:GoM+0,GoM+1,...,GoM+M-1,其中,o为执行“加”SIMD指令的操作次数序号,其取值范围为:[0,s-1];“加”SIMD指令的Y输入的SIMD封装数据为:2n-1-1,2n-1-1,2n-1-1,...,2n-1-1;则完成该“加”SIMD指令后,得到的输出Z为新的第三中间数据流:HoM+0,HoM+1,...,HoM+M-1;
(2j)对该新的第三中间数据流H和第一中间数据流F0的s个SIMD封装数据分别执行“异或”SIMD指令,该“异或”SIMD指令的X输入的SIMD封装数据为:HpM+0,HpM+1,...,HpM+M-1,其中,p为执行“异或”SIMD指令的操作次数序号,其取值范围为:[0,s-1];“异或”SIMD指令的Y输入的SIMD封装数据为:则完成该“异或”SIMD指令后,得到的输出Z为最终输出数据流中的I路输出:IpM+0,IpM+1,...,IpM+M-1;
(2k)依次对第一中间数据流F2n-1和F2n-2中的s个SIMD封装数据分别执行“异或”SIMD指令,该“异或”SIMD指令的X输入的SIMD封装数据为:其中,q为执行“异或”SIMD指令的操作次数序号,其取值范围为:[0,s-1];“异或”SIMD指令的Y输入的SIMD封装数据为:则完成该“异或”SIMD指令后,得到的输出Z为第二中间数据流:GqM+0,GqM+1,...,GqM+M-1;
(2l)循环执行下述操作:使用第二中间数据流G更新第三中间数据流H,再使用更新后的第三中间数据流H和第一中间数据流F2n-3-A执行异或SIMD指令,将其运算结果反馈给新的第二中间数据流G,其中,A为循环操作次数序号,其取值范围是:[0,n-4],且呈递增趋势变化:
先对第二中间数据流G中的s个SIMD封装数据分别执行“加”SIMD指令,该“加”SIMD指令的X输入的SIMD封装数据为:GDM+0,GDM+1,...,GDM+M-1,其中,D为执行“加”SIMD指令的操作次数序号,其取值范围为[0,s-1];“加”SIMD指令的Y输入的SIMD封装数据为:2A+2-1,2A+2-1,2A+2-1,...,2A+2-1;则完成该“加”SIMD指令后,得到的输出Z为新的第三中间数据流:HDM+0,HDM+1,...,HDM+M-1;
再对该新的第三中间数据流H和第一中间数据流F2n-3-A中的s个SIMD封装数据分别执行“异或”SIMD指令,该“异或”SIMD指令的X输入的SIMD封装数据为:HJM+0,HJM+1,...,HJM+M-1,其中,J为执行“异或”SIMD指令的操作次数序号,其取值范围为[0,s-1];“异或”SIMD指令的Y输入的SIMD封装数据为:则完成该“异或”SIMD指令后,得到的输出Z为新的第二中间数据流:GJM+0,GJM+1,...,GJM+M-1;
(2m)对步骤(2l)得到的第二中间数据流G中的s个SIMD封装数据分别执行“加”SIMD指令,该“加”SIMD指令的X输入的SIMD封装数据为:GKM+0,GKM+1,...,GKM+M-1,其中,K为执行“加”SIMD指令的操作次数序号,其取值范围为:[0,s-1];“加”SIMD指令的Y输入的SIMD封装数据为:2n-1-1,2n-1-1,2n-1-1,...,2n-1-1;则完成该“加”SIMD指令后,得到的输出Z为新的第三中间数据流:HKM+0,HKM+1,...,HKM+M-1;
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410001171.6A CN103731386B (zh) | 2014-01-02 | 2014-01-02 | 一种基于gpp和simd技术的高速调制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410001171.6A CN103731386B (zh) | 2014-01-02 | 2014-01-02 | 一种基于gpp和simd技术的高速调制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103731386A true CN103731386A (zh) | 2014-04-16 |
CN103731386B CN103731386B (zh) | 2017-01-25 |
Family
ID=50455317
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410001171.6A Active CN103731386B (zh) | 2014-01-02 | 2014-01-02 | 一种基于gpp和simd技术的高速调制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103731386B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105893319A (zh) * | 2014-12-12 | 2016-08-24 | 上海芯豪微电子有限公司 | 一种多车道/多核***和方法 |
CN110430034A (zh) * | 2019-06-25 | 2019-11-08 | 北京邮电大学 | 一种无源光网络物理层数据加密方法及装置 |
CN112003811A (zh) * | 2020-07-29 | 2020-11-27 | 北京大学 | 一种对任意形状星座图比特映射关系的优化方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070084045A (ko) * | 2004-11-05 | 2007-08-24 | 이세라 인코포레이티드 | 코드화된 직교 진폭 변조 신호에 대한 로그 가능성 비를계산하는 방법 및 시스템 |
-
2014
- 2014-01-02 CN CN201410001171.6A patent/CN103731386B/zh active Active
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105893319A (zh) * | 2014-12-12 | 2016-08-24 | 上海芯豪微电子有限公司 | 一种多车道/多核***和方法 |
CN110430034A (zh) * | 2019-06-25 | 2019-11-08 | 北京邮电大学 | 一种无源光网络物理层数据加密方法及装置 |
CN112003811A (zh) * | 2020-07-29 | 2020-11-27 | 北京大学 | 一种对任意形状星座图比特映射关系的优化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103731386B (zh) | 2017-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102067082B (zh) | 用以执行快速旋转运算的***及方法 | |
CN105912501B (zh) | 一种基于大规模粗粒度可重构处理器的sm4-128加密算法实现方法及*** | |
US9910671B2 (en) | Vector operation core and vector processor | |
CN102739600B (zh) | 用于减少lte dl执行中的等待时间的设备及方法 | |
CN101729463A (zh) | 一种实现快速傅立叶变换、反变换的硬件装置及方法 | |
CN105335331A (zh) | 一种基于大规模粗粒度可重构处理器的sha256实现方法及*** | |
CN105335127A (zh) | Gpdsp中支持浮点除法的标量运算单元结构 | |
CN103731386A (zh) | 一种基于gpp和simd技术的高速调制方法 | |
CN102122241A (zh) | 一种适用于素域和多项式域的模乘模除器 | |
Yang et al. | Complex division and square-root using CORDIC | |
Li et al. | Study of CORDIC algorithm based on FPGA | |
CN105095152B (zh) | 一种可配置的128点fft装置 | |
CN111443893A (zh) | 一种基于cordic算法的n次根计算装置及方法 | |
CN110059493A (zh) | 基于粗粒度可重构计算单元的skinny-128-128加密算法实现方法及*** | |
CN109144472B (zh) | 一种二元扩域椭圆曲线的标量乘法及其实现电路 | |
CN105515627A (zh) | 一种大规模mimo检测方法及检测装置 | |
CN115344236A (zh) | 多项式乘法运算方法、多项式乘法器、设备及介质 | |
CN102637124B (zh) | 一种基4fft算法的并行处理装置及方法 | |
CN113342310A (zh) | 一种应用于格密码的串行参数可配快速数论变换硬件加速器 | |
Meeuwsen et al. | A full-rate software implementation of an IEEE 802.11 a compliant digital baseband transmitter | |
CN101465828B (zh) | 完整噪声相关估计方法及完整噪声相关估计设备 | |
CN103761213A (zh) | 基于循环流水计算的片上阵列*** | |
CN102769600B (zh) | 一种ofdm***接收机中缩放因子解调制的方法及装置 | |
US9871554B2 (en) | Method and vector computing unit for implementing de-scrambling and de-spreading, and computer storage medium | |
CN103997355A (zh) | 一种插值滤波方法及插值滤波器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |