CN103731386A - 一种基于gpp和simd技术的高速调制方法 - Google Patents

一种基于gpp和simd技术的高速调制方法 Download PDF

Info

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
Application number
CN201410001171.6A
Other languages
English (en)
Other versions
CN103731386B (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.)
Beijing University of Posts and Telecommunications
Original Assignee
Beijing University of Posts and Telecommunications
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 Beijing University of Posts and Telecommunications filed Critical Beijing University of Posts and Telecommunications
Priority to CN201410001171.6A priority Critical patent/CN103731386B/zh
Publication of CN103731386A publication Critical patent/CN103731386A/zh
Application granted granted Critical
Publication of CN103731386B publication Critical patent/CN103731386B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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和SIMD技术的高速调制方法
技术领域
本发明涉及一种基于通用处理器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,其映射关系的公式为: I = - 1 , if ( b 0 = 0 ) 1 , if ( b 0 = 1 ) ; Q = 0
QPSK调制的星座图映射关系如图2所示,每产生1个星座点,需要输入2个比特信息,即b0和b1,其映射关系的公式为: I = - 1 , if ( b 0 = 0 ) 1 , if ( b 0 = 1 ) Q = - 1 , if ( b 1 = 0 ) 1 , if ( b 1 = 1 ) ;
16-QAM调制的星座图映射关系如图3所示,每产生1个星座点,需要输入4个比特信息,即b0、b1、b2和b3,其映射关系的公式如下:
I = - 3 , if ( b 0 = 0 , b 1 = 0 ) - 1 , if ( b 0 = 0 , b 1 = 1 ) 1 , if ( b 0 = 1 , b 1 = 1 ) 3 , if ( b 0 = 1 , b 1 = 0 ) , Q = - 3 , if ( b 2 = 0 , b 3 = 0 ) - 1 , if ( b 2 = 0 , b 3 = 1 ) 1 , if ( b 2 = 1 , b 3 = 1 ) 3 , if ( b 2 = 1 , b 3 = 0 ) ;
64-QAM调制的星座图映射关系如图4所示,每产生1个星座点,需要输入6个的比特信息,即b0、b1、b2、b3、b4和b5,其映射关系公式如下:
I = - 7 , if ( b 0 = 0 , b 1 = 0 , b 2 = 0 ) - 5 , if ( b 0 = 0 , b 1 = 0 , b 2 = 1 ) - 3 , if ( b 0 = 0 , b 1 = 1 , b 2 = 1 ) - 1 , if ( b 0 = 0 , b 1 = 1 , b 2 = 0 ) 1 , if ( b 0 = 1 , b 1 = 1 , b 2 = 0 ) 3 , if ( b 0 = 1 , b 1 = 1 , b 2 = 1 ) 5 , if ( b 0 = 1 , b 1 = 0 , b 2 = 1 ) 7 , if ( b 0 = 1 , b 1 = 0 , b 2 = 0 ) , Q = - 7 , if ( b 3 = 0 , b 4 = 0 , b 5 = 0 ) - 5 , if ( b 3 = 0 , b 4 = 0 , b 5 = 1 ) - 3 , if ( b 3 = 0 , b 4 = 1 , b 5 = 1 ) - 1 , if ( b 3 = 0 , b 4 = 1 , b 5 = 0 ) 1 , if ( b 3 = 1 , b 4 = 1 , b 5 = 0 ) 3 , if ( b 3 = 1 , b 4 = 1 , b 5 = 1 ) 5 , if ( b 3 = 1 , b 4 = 0 , b 5 = 1 ) 7 , if ( b 3 = 1 , b 4 = 0 , b 5 = 0 ) ;
从上述各个公式可见,随着调制系数的增加,其计算公式越来越复杂。由于数字系统的数据量非常大,而系统的传输速率要求又高,如何降低信号调制过程产生的时延,已经成为数字信号调制技术优化与改进的主要方向。
目前,在通用处理器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时,产生数组下标的方法如下述公式: x I = b 0 x Q = b 1 , 其映射关系数组CQPSK的计算公式为:CQPSK[2]={-1,1}。
在16-QAM调制时,产生数组下标的方法如下述公式:
x I = ( b 1 < < 1 ) ^ b 0 x Q = ( b 3 < < 1 ) ^ b 2 , 其映射关系数组C16-QAM的计算公式为:C16-QAM[4]={-3,3,-1,1}。
在64-QAM调制时,产生数组下标的方法如下述公式:
x I = ( b 2 < < 2 ) ^ ( b 1 < < 1 ) ^ b 0 x Q = ( b 5 < < 2 ) ^ ( b 4 < < 1 ) ^ b 3 , 其映射关系数组C64-QAM的计算公式为:
C64-QAM[8]={-7,7,-1,1,-5,5,-3,3}。
故在传统查表方法中,每个星座点的输出可表示为公式; I + C [ x I ] Q = 0 , if ( BPSK ) C [ x Q ] , else .
查表法的主要缺点有两条:(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封装数据的长度和个数;
Figure BDA0000452373910000041
为k个输入比特信息流中的任意一个比特信息,其涵义是第a个输入比特信息流中的第d个比特信息,a和d的取值范围分别为[0,k-1]和[0,t-1];在序号为a的输入比特信息流Ba中,存储有产生每个星座点所对应的比特信息序列中的第a个比特信息,且
Figure BDA0000452373910000042
而且,每个输入比特信息流的第d个比特信息构成的信息序列
Figure BDA0000452373910000043
就是产生第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中的对应值作为输出,即 Z i = X Y i .
参见图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封装数据的长度和个数;
Figure BDA0000452373910000061
为k个输入比特信息流中的任意一个比特信息,其涵义是第a个输入比特信息流中的第d个比特信息,a的取值范围为[0,k-1],d的取值范围为[0,t-1]。在序号为a的输入比特信息流Ba中,存储有产生每个星座点所对应的比特信息序列中的第a个比特信息,且
Figure BDA0000452373910000062
而且,每个输入比特信息流的第d个比特信息构成的信息序列
Figure BDA0000452373910000063
就是产生第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封装数据为:
Figure BDA0000452373910000071
其中,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封装数据为:
Figure BDA0000452373910000073
其中,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封装数据为:
Figure BDA0000452373910000081
其中,w为执行“映射”SIMD指令的操作次数序号,其取值范围为[0,s-1];“映射”SIMD指令的Y输入的SIMD封装数据为:-1,1,0,...,0;则完成该“映射”SIMD指令后,得到的输出Z为第一中间数据流:
Figure BDA0000452373910000082
(2b)分别对输入比特信息流B1,B2,...,Bn-2中每个输入比特信息流的s个SIMD封装数据执行“映射”SIMD指令,该“映射”SIMD指令的X输入的SIMD封装数据为:
Figure BDA0000452373910000083
其中,y为执行“映射”SIMD指令的操作次数序号,其取值范围为[0,s-1];z为输入比特信息流序号,其取值范围为[1,n-2];“映射”SIMD指令的Y输入的SIMD封装数据为:1,-1,0,...,0;则完成该“映射”SIMD指令后,得到的输出Z为第一中间数据流:
Figure BDA0000452373910000084
(2c)依次对Bn-1中的s个SIMD封装数据分别执行“映射”SIMD指令,该“映射”SIMD指令的X输入的SIMD封装数据为:其中,f为执行“映射”SIMD指令的操作次数序号,其取值范围为[0,s-1];“映射”SIMD指令的Y输入的SIMD封装数据为:2,0,...,0;则完成该“映射”SIMD指令后,得到的输出Z为第一中间数据流:
Figure BDA0000452373910000086
(2d)依次对Bn中的s个SIMD封装数据分别执行“映射”SIMD指令,该“映射”SIMD指令的X输入的SIMD封装数据为:其中,g为执行“映射”SIMD指令的操作次数序号,其取值范围为[0,s-1];“映射”SIMD指令的Y输入的SIMD封装数据为:-1,1,0,...,0;则完成该“映射”SIMD指令后,得到的输出Z为第一中间数据流:
Figure BDA0000452373910000088
(2e)分别对Bn+1,Bn+2,...,B2n-2中每个输入比特信息流的s个SIMD封装数据执行“映射”SIMD指令,该“映射”SIMD指令的X输入的SIMD封装数据为:
Figure BDA0000452373910000089
其中,l为执行“映射”SIMD指令的操作次数序号,其取值范围为[0,s-1];h为输入比特信息流序号,其取值范围为:[n+1,2n-2];“映射”SIMD指令的Y输入的SIMD封装数据为:1,-1,0,...,0;则完成该“映射”SIMD指令后,得到的输出Z为第一中间数据流:
Figure BDA00004523739100000810
(2f)依次对B2n-1中的s个SIMD封装数据分别执行“映射”SIMD指令,该“映射”SIMD指令的X输入的SIMD封装数据为:
Figure BDA00004523739100000811
其中,c为执行“映射”SIMD指令的操作次数序号,其取值范围为:[0,s-1];“映射”SIMD指令的Y输入的SIMD封装数据为:2,0,...,0;则完成该“映射”SIMD指令后,得到的输出Z为第一中间数据流:
Figure BDA0000452373910000091
(2g)依次对第一中间数据流Fn-1和Fn-2的s个SIMD封装数据分别执行“异或”SIMD指令,该“异或”SIMD指令的X输入的SIMD封装数据为:
Figure BDA0000452373910000092
其中,e为执行“异或”SIMD指令的操作次数序号,其取值范围为:[0,s-1];“异或”SIMD指令的Y输入的SIMD封装数据为:
Figure BDA0000452373910000093
则完成该“异或”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封装数据为:
Figure BDA0000452373910000094
则完成该“异或”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封装数据为:
Figure BDA0000452373910000101
则完成该“异或”SIMD指令后,得到的输出Z为最终输出数据流中的I路输出:IpM+0,IpM+1,...,IpM+M-1
(2k)依次对第一中间数据流F2n-1和F2n-2中的s个SIMD封装数据分别执行“异或”SIMD指令,该“异或”SIMD指令的X输入的SIMD封装数据为:
Figure BDA0000452373910000102
其中,q为执行“异或”SIMD指令的操作次数序号,其取值范围为:[0,s-1];“异或”SIMD指令的Y输入的SIMD封装数据为:
Figure BDA0000452373910000103
则完成该“异或”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封装数据为:
Figure BDA0000452373910000104
则完成该“异或”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封装数据为:
Figure BDA0000452373910000111
则完成该“异或”SIMD指令后,得到的输出Z为最终输出数据流中的Q路输出:QLM+0,QLM+1,...,QLM+M-1
本发明已经进行了多次实施试验,试验场景参数如下:在
Figure BDA0000452373910000112
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个比特信息,且
Figure FDA0000452373900000012
而且,每个输入比特信息流的第d个比特信息构成的信息序列
Figure FDA0000452373900000013
就是产生第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封装数据为:
Figure FDA0000452373900000022
其中,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封装数据为:
Figure FDA0000452373900000023
其中,v为执行“映射”SIMD指令的操作次数序号,其取值范围为[0,s-1];“映射”SIMD指令的Y输入的SIMD封装数据为:-1,1,0,...,0;则完成该“映射”SIMD指令操作后,得到的输出Z为最终输出数据流中的Q路输出:QvM+0,QvM+1,...,QvM+M-1
5.根据权利要求2所述的方法,其特征在于:所述步骤2在执行高速QAM调制方法、且k=2n时,需要设置2n个输入比特信息流B0,B1,B2,...,B2n-1,并分别对其执行并行的“映射”SIMD指令,完成下述调制操作内容:
(2a)依次对B0中的s个SIMD封装数据分别执行“映射”SIMD指令,该“映射”SIMD指令的X输入的SIMD封装数据为:
Figure FDA0000452373900000024
其中,w为执行“映射”SIMD指令的操作次数序号,其取值范围为[0,s-1];“映射”SIMD指令的Y输入的SIMD封装数据为:-1,1,0,...,0;则完成该“映射”SIMD指令后,得到的输出Z为第一中间数据流:
Figure FDA0000452373900000025
(2b)分别对输入比特信息流B1,B2,...,Bn-2中每个输入比特信息流的s个SIMD封装数据执行“映射”SIMD指令,该“映射”SIMD指令的X输入的SIMD封装数据为:
Figure FDA0000452373900000031
其中,y为执行“映射”SIMD指令的操作次数序号,其取值范围为[0,s-1];z为输入比特信息流序号,其取值范围为[1,n-2];“映射”SIMD指令的Y输入的SIMD封装数据为:1,-1,0,...,0;则完成该“映射”SIMD指令后,得到的输出Z为第一中间数据流:
Figure FDA0000452373900000032
(2c)依次对Bn-1中的s个SIMD封装数据分别执行“映射”SIMD指令,该“映射”SIMD指令的X输入的SIMD封装数据为:
Figure FDA0000452373900000033
其中,f为执行“映射”SIMD指令的操作次数序号,其取值范围为[0,s-1];“映射”SIMD指令的Y输入的SIMD封装数据为:2,0,...,0;则完成该“映射”SIMD指令后,得到的输出Z为第一中间数据流:
Figure FDA0000452373900000034
(2d)依次对Bn中的s个SIMD封装数据分别执行“映射”SIMD指令,该“映射”SIMD指令的X输入的SIMD封装数据为:
Figure FDA0000452373900000035
其中,g为执行“映射”SIMD指令的操作次数序号,其取值范围为[0,s-1];“映射”SIMD指令的Y输入的SIMD封装数据为:-1,1,0,...,0;则完成该“映射”SIMD指令后,得到的输出Z为第一中间数据流:
Figure FDA0000452373900000036
(2e)分别对Bn+1,Bn+2,...,B2n-2中每个输入比特信息流的s个SIMD封装数据执行“映射”SIMD指令,该“映射”SIMD指令的X输入的SIMD封装数据为:
Figure FDA0000452373900000037
其中,l为执行“映射”SIMD指令的操作次数序号,其取值范围为[0,s-1];h为输入比特信息流序号,其取值范围为:[n+1,2n-2];“映射”SIMD指令的Y输入的SIMD封装数据为:1,-1,0,...,0;则完成该“映射”SIMD指令后,得到的输出Z为第一中间数据流:
Figure FDA0000452373900000038
(2f)依次对B2n-1中的s个SIMD封装数据分别执行“映射”SIMD指令,该“映射”SIMD指令的X输入的SIMD封装数据为:其中,c为执行“映射”SIMD指令的操作次数序号,其取值范围为:[0,s-1];“映射”SIMD指令的Y输入的SIMD封装数据为:2,0,...,0;则完成该“映射”SIMD指令后,得到的输出Z为第一中间数据流:
Figure FDA00004523739000000310
(2g)依次对第一中间数据流Fn-1和Fn-2的s个SIMD封装数据分别执行“异或”SIMD指令,该“异或”SIMD指令的X输入的SIMD封装数据为:
Figure FDA0000452373900000041
其中,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封装数据为:
Figure FDA0000452373900000043
则完成该“异或”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封装数据为:
Figure FDA0000452373900000051
则完成该“异或”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封装数据为:
Figure FDA0000452373900000053
则完成该“异或”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封装数据为:
Figure FDA0000452373900000054
则完成该“异或”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封装数据为:
Figure FDA0000452373900000061
则完成该“异或”SIMD指令后,得到的输出Z为最终输出数据流中的Q路输出:QLM+0,QLM+1,...,QLM+M-1
CN201410001171.6A 2014-01-02 2014-01-02 一种基于gpp和simd技术的高速调制方法 Active CN103731386B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1807988B1 (en) * 2004-11-05 2015-12-09 NVIDIA Technology UK Limited Method for computing log-likelihood ratios for coded quadrature modulated signals

Cited By (3)

* Cited by examiner, † Cited by third party
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
CN100536390C (zh) 一种椭圆曲线密码协处理器
CN102739600B (zh) 用于减少lte dl执行中的等待时间的设备及方法
CN101729463A (zh) 一种实现快速傅立叶变换、反变换的硬件装置及方法
CN105335331A (zh) 一种基于大规模粗粒度可重构处理器的sha256实现方法及系统
CN105335127A (zh) Gpdsp中支持浮点除法的标量运算单元结构
CN103731386A (zh) 一种基于gpp和simd技术的高速调制方法
CN101136070B (zh) 基于可重构架构的多协议射频标签读写器基带处理器
CN102122241A (zh) 一种适用于素域和多项式域的模乘模除器
Kaiser et al. Prototyping for MIMO systems-an overview
Li et al. Study of CORDIC algorithm based on FPGA
CN105790939A (zh) 一种vlsi实现加速器的素数域椭圆曲线密码系统
CN105095152B (zh) 一种可配置的128点fft装置
Yang et al. Complex division and square-root using CORDIC
CN106951394A (zh) 一种可重构定浮点通用fft处理器
CN109144472B (zh) 一种二元扩域椭圆曲线的标量乘法及其实现电路
CN105515627A (zh) 一种大规模mimo检测方法及检测装置
Guenther et al. A scalable, multimode SVD precoding ASIC based on the cyclic Jacobi method
CN102637124B (zh) 一种基4fft算法的并行处理装置及方法
CN102364456A (zh) 64点fft计算器
CN113342310A (zh) 一种应用于格密码的串行参数可配快速数论变换硬件加速器
CN101465828B (zh) 完整噪声相关估计方法及完整噪声相关估计设备
Meeuwsen et al. A full-rate software implementation of an IEEE 802.11 a compliant digital baseband transmitter

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