CN103685128A - 应用于ofdm发射机的ifft处理器和ifft实现方法 - Google Patents
应用于ofdm发射机的ifft处理器和ifft实现方法 Download PDFInfo
- Publication number
- CN103685128A CN103685128A CN201310737549.4A CN201310737549A CN103685128A CN 103685128 A CN103685128 A CN 103685128A CN 201310737549 A CN201310737549 A CN 201310737549A CN 103685128 A CN103685128 A CN 103685128A
- Authority
- CN
- China
- Prior art keywords
- branch road
- data
- ifft
- bank
- centerdot
- 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
- Complex Calculations (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种针对OFDM发射机的IFFT(快速傅里叶反变换)处理器的设计方法,该IFFT处理器的最大特点是不使用乘法器,且结构简单,存储器占用量也很少。该发明的核心思想是将IFFT变换当中的每一支路的旋转因子项看成一个复数字正弦信号发生器,由两个DDS(直接数字频率合成)产生。再利用这些DDS的数字角频率成倍增长的特点,让它们共享同一个存储器组,从而大大减少系统的存储器占用量。另外,利用OFDM发射机的频域数据的实部和虚部取自相同的有限元素集合的特点,通过预先存储乘法结果的办法来省去乘法器的使用。进一步研究发现,该IFFT处理器还具有延时少、处理速度快、存储器占用量少、点数不受2n制约等特点。
Description
技术领域
本发明涉及无线通信领域,特别涉及一种OFDM(Orthogonal Frequency Division Multiplexing,正交频分复用)发射机中IFFT(快速傅里叶反变换)处理器的设计方法。
背景技术
早在20世纪60年代,频率复用、信号频谱相互覆盖的多载波并行传输思想就已经被提出来,这种思想是现代正交频分复用(OFDM,Orthogonal Frequency Division Multiplexing)技术的前身。目前OFDM技术已经被广泛应用到大量高速通信系统中,比如数字音频广播、数字视频广播、无线局域网以及移动通信等;若干无线通信协议都以OFDM技术为标准,比如IEEE802.11将OFDM设定为无线局域网的标准。
在OFDM系统中,信道被分成N个子信道,每个子信道可以单独传输数据而不会干扰,并且相邻信道的频谱出现50%的重叠,与其他通信方式相比,OFDM的频谱利用率是最高的。OFDM系统的实现普遍采用离散傅里叶变换对(IFFT/FFT)的方案,该方案于上世纪70年代,由Weinsetin和Ebert提出;在发射端,采用IFFT模块将频域信号变换成时域序列,再经过插值、成型滤波、D/A转化、上变频等步骤将信号发射出去;在接收端,射频信号经下变频及A/D采样等步骤之后再使用FFT模块恢复出频域信号。
从上述过程可以看出,无论是发射端还是接收端,IFFT或FFT都是OFDM系统的重要部分。然而,IFFT模块本身的结构非常复杂,消耗资源也较多,尤其是当变换的点数较多时,其复杂度和消耗资源量将会成倍增长,实时性要求也提出了严峻的挑战,因此如何设计高效而又节省硬件资源的IFFT算法显得尤为重要。常用的FFT算法多为基于Cooley(库利)和Tukey(图基)的基2或基4的算法,或者在其基础上改进的算法。这些算法的共同特点是需要使用乘法器实现中间量与正弦旋转因子之间的乘法运算。如果要使IFFT处理器的运算周期缩短,提高并行性,则需要使用较多的硬件乘法器,导致占用较多的硬件资源。能否设计一种在OFDM发射机上不使用硬件乘法器的IFFT处理器呢?这正是本发明所解决的问题。事实发现,对于OFDM发射机所使用的IFFT处理器,利用其频域信号取自有限集合的特点,通过巧妙的设计及优化,可以设计出不使用硬件乘法器的IFFT处理器。本发明提出的IFFT处理器还具有结构简单、存储器占用少、变换速度快、延时短、点数不受2n制约等特点。
发明内容
本发明的目的在于提出一种不使用乘法器的应用于OFDM发射机的IFFT处理器的实现方案。其基本设计思想是采用DDS(Direct Digital Synthesizer,直接数字式频率合成器)的原理,将IFFT变换表达式中的每条支路都看成一个常数与一个“复正弦信号发生器”产生的序列相乘,再将N条支路的乘积加到一起。这里的“复正弦信号发生器”指的是所产生的复数序列的实部和虚部各由一路DDS正弦信号发生器生成。复正弦信号发生器的实部和虚部分别是余弦和正弦,仅仅初始相位不同,且各支路的数字角频率是成倍增长的,所以它们可以共享同一个存储器组;同时,OFDM发射机的频域数据一般取自有限元素的集合,可以将乘积的结果预先存储起来,这样乘法运算也可以省略;两方案结合,系统结构大大简化。
本发明提供的技术方案如下:
一种应用于OFDM发射机的IFFT处理器(参见图3),其特征在于,
所述IFFT处理器包括r个由存储器组构成的bank,用来存储sin函数一个周期内被均匀采样并被数字量化后的幅度因子,称为正弦幅度因子,每个bank存有N个正弦幅度因子数据,这些bank分别叫bank1、bank2,...,bankr,这里N代表IFFT变换的点数,r由调制方式决定;
所述IFFT处理器还包括N条支路,其中第1到N-1条支路,每条支路又包含4条子支路,每条子支路各使用一个单刀r抛开关用来从bank中选取数据,这样共有4(N-1)个单刀r抛开关,每条支路的前两个开关用来从bank中选择恰当的正弦幅度因子以便送入第一加法器生成IFFT变换的实部,后两个开关用来选择恰当的幅度因子以生成IFFT变换的虚部,第0条支路为直流量,由2个单刀2r抛开关构成,一个用来选择实部数据送入第一加法器,另一个用来选择虚部数据以送入第二加法器;
所述IFFT处理器还包括两个多输入、单输出的加法器,每个加法器的输入数据有2N-1个,第一加法器把第1到N-1条支路的前两个开关选出的数据及第0条支路的第一个开关选出的数据相加得到IFFT变换的实部,第二加法器把第1到N-1条支路的后两个开关选出的数据及第0条支路的第二个开关选出的数据相加得到IFFT变换的虚部;
所述IFFT处理器在一个统一的clk时钟的控制下执行,在每个clk的上升沿,系统的第1到N-1条支路的每一条子支路都从恰当的bank中挑取出恰当的数据,前两条支路挑选的数据被送入第一加法器,以便得到IFFT变换的实部,后两条支路挑选的数据被送入第二加法器, 以得到IFFT变换的虚部;当下一个clk的上升沿到来时,每条子支路还是从上次的bank中取数,只不过是取数的位置不同;只有当所述的IFFT处理器要对一组新的频域数据进行变换时,各子支路才可能从不同的bank中取数。
所述的IFFT处理器,其特征在于,所需的bank数量r由调制阶数决定,对于采用xQAM调制,设x=4m,共需要个存储器组,比如采用4QAM,r=1,采用16QAM,r=2;当调制阶数比较低时,处理器所需要的bank数比较少。
所述的IFFT处理器,其特征在于,第p个bank中存有的N个正弦幅度因子由公式 决定,这里的round函数表示求最接近于某个实数的整数,p∈[1,2,...,r],表示bank的编号,Ap表示第p个bank应该乘以的倍率,r个bank所对应的倍率分别是A1,A2,...,Ar,这些倍率的取值与每个正弦幅度因子的位宽W有关,具体为 这样取值的好处是可以充分利用存储器的位宽,取值也可以比该式的参考值小些,但不能理解为是对本发明的变种。
所述的IFFT处理器,其特征在于,第1到N-1条支路,其中每条支路又包含4条子支路,第k(k=1,2,...,N-1)条支路的4条子支路分别用来计算 和这四个表达式中的乘法不是由硬件乘法实现的,而是通过单刀r抛开关从恰当的bank的恰当的地址处挑选数据得到;上面式子中,A为统一正弦倍率因子,其作用跟上文的Ap类似,也是用来扩大sin和cos的旋转因子,以使其能够用整数表示,从而存入存储器,Ap是A的2p-1倍,假设用W个bit的存储器来表示这些旋转因子,为了充分利用这些bit,则A的取值一般是n代表时间,表示每个clk的上升沿到来时,每条支路都会送出一个数据;XR(k)代表频域数据X(k)的实部,XI(k)代表X(k)的虚部,它们的取值为集合{±(2p-1)|p∈[1,2,...,r]}中的某个数;如果某条子支路中的XR(k)或XI(k)等于±(2p-1),p∈[1,2,...,r],那么该子支路就应该从bankp 中选取数据。
所述的IFFT处理器,其特征在于,第1到N-1条支路的4个子支路确定从第几个bank中选取数据之后,在开始变换的第一个clk的上升沿还要确定从该bank的哪个起始地址选取数据,这些起始地址只可能是0、或者当中的一个;当该子支路的计算式中包含sin,且前面的系数为正时,起始地址为0;当子支路的计算式中包含sin,而前面的系数为负时,起始地址为当子支路的计算式中包含cos,而前面的所乘的系数为正时,起始地址为当子支路的计算式中包含cos,而前面的系数为负时,起始地址为当每条子支路的bank编号和起始地址确定之后,以后每来一个新的clk的上升沿,第k条支路的所有子支路在该bank中取数的地址自动增加k,如果地址编号超过N,则从该地址编号减去N后的地址取数。
所述的IFFT处理器,其特征在于,所述IFFT处理器包括2个加法器,每个加法器能在一个clk之内将2N-1个数据加到一起,分别形成此时刻变换结果的实部和虚部;每个加法器的2N-1个输入数据包含第1到N-1条支路的两条子支路选出的2(N-1)个数据和第0条支路其中一条子支路选出的数据;第1到N-1条支路的子支路选数的方法如前面所述,第0条支路对应着直流量,它的两条子支路选取的数据分别由X(0)的实部XR(0)和虚部XI(0)决定,如果XR(0)等于2p-1(或-(2p-1)),p∈[1,2,...,r],则第一条子支路选出的数据为round(Ap)(或-round(Ap)),这里Ap的计算方法已在前文介绍了,round函数用来求最接近的整数,第二条子支路根据XI(0)选取数据的方法与此完全相同。
本发明同时提供一种应用于OFDM发射机的IFFT实现方法,其特征在于,该IFFT的设计基于DDS设计原理,把IFFT变换表达式中各支路所乘的旋转因子看成由复正弦信号发生器产生,包括如下步骤:
1)IFFT变换的表达式写成:
其中,N为变换点数,第k条支路在第n个clk送出的数据为:X(k)ej2πkn/N,n=0,1,2,…,N-1, 其中X(k)为常数,ej2πkn/N看成复正弦信号发生器,在电路的硬件上由两个DDS构成;
2)将第k条支路的复数乘法展开,得到第k条支路生成的时域数据:
其中XR(k)代表X(k)的实部,XI(k)代表X(k)的虚部,二者皆为常数,N代表IFFT变换的点数,A为正弦倍率因子,用来扩大sin和cos的旋转因子,以使其能够用整数表示,从而存入存储器,假设用W个bit的存储器来表示这些旋转因子,为了充分利用这些bit,则A的取值一般是r由调制阶数决定,对于采用xQAM调制,设x=4m,共需要 个存储器组;n代表时间,表示每个clk的上升沿到来时,每条支路都会送出一个数据;(II)式说明第k条支路生成的时域数据xk(n)的实部和虚部都由两部分组成,其中每一部分都是由一个实常数和一个正弦或余弦序列相乘而得到,在硬件电路中相当于每条支路包含4条子支路,其中前两条子支路用来生成xk(n)的实部,后两条子支路用来生成xk(n)的虚部;正弦和余弦的旋转因子序列共用同一个存储器组,只是取数时初始相位不同,这种存贮器共用的原则大大降低了系统的硬件资源占用量;
所述的IFFT实现方法,其特征在于,采用数字正弦信号发生器生成式(II)中的sin和cos序列项,而各条支路中数字正弦信号发生器的数字角频率是成倍增长的,这样,只使用一个存储器保存正弦幅度序列:
其他高频数字正或余弦信号序列只需从该序列中以不同的初始相位和间隔取数即可。
所述的IFFT实现方法,其特征在于,由于OFDM发射机的频域数据X(k)的实部XR(k) 和虚部XI(k)通常取自相同的有限元素的集合(比如对于16QAM,XR(k)和XI(k)等于±1或±3),这样,式(II)中的乘法器做了大量重复性的工作,通过把|XR(k)|乘以式(III)的序列存储起来,省去了IFFT处理器中的乘法器,其中,|XR(k)|∈{1,3,...,2r-1}。
本发明提出的针对OFDM发射机的IFFT处理器和方法有如下优点:
①不使用乘法器。利用OFDM发射机的频域数据取自有限元素集合的特点,通过将乘法结果预先存储起来,把乘法运算过程变成通过开关选择数据的过程,大大简化了系统结构,去掉了乘法器。
②结构简单。系统实现IFFT的过程仅仅是利用若干开关从存储器中取数,再将其分别送入两个加法器求和。取数的方法也非常简单,第k条支路只需每个clk隔k-1个地址取数即可;而不用像传统的IFFT算法那样需要经历若干“stage”,每个“stage”内所使用的蝴蝶结不一样,而且所乘的旋转因子也不一样。
③存储器占用量少。该算法所需的存储器用量为N×r个存储单元,N为IFFT变换的点数,对于xQAM,设x=4m,当QAM调制的阶数比低时,r很小,比如对于4QAM,r=1,对于16QAM,r=2,这样,系统所需的存储器用量就会很少。并且,该算法不需要额外的中间存储器来存储一些临时性的数据,以上两个原因使得该算法的存储器用量比普通IFFT的要少。
④变换速度快,时延短。本发明提出的IFFT算法能够保证当频域数据输入之后每个clk都能输出一个变换好的数据x(n),n=0,1,2,...,N-1,相当于时延为0;而传统的IFFT算法必须经历一段时间之后才能逐个输出x(n),这个时间间隔少则几微妙,多则达到毫秒量级。
⑤变换点数不受2n制约。其他IFFT算法往往将变换点数设计成2n,n为整数,本发明的方法不受这方面的约束,当要实现N点的IFFT变换时,只需要将正弦的一个周期平均分成N份,使用N个存储器来保存这些正弦幅度因子即可,N并不一定需要是2的整数次方。
附图说明
图1为采用DDS原理的IFFT初步结构图;
图2为各支路DDS共享同一存储器组的原理;
图3为经三种方案简化后的OFDM发射机中IFFT结构。
具体实施方式
为了更好地阐述本发明,下面结合附图进行进一步说明。
FFT和IFFT变换对如下式(1)、(2)所示,式中N代表变换点数,X(k)代表频域信号序列,x(n)代表时域信号序列,式(1)为FFT正变换,式(2)为FFT反变换,即IFFT。
观察上式(2),可以将∑求和的过程看成N条支路相加,即,假设xk(n)=X(k)ej2πkn/N,xk(n)可看成第k条支路产生的序列。根据式(2)则有:对应于硬件结构,式子就相当于在每个时钟周期,N条支路中的每一条都送出一个数据xk(n),再把所有支路的数据相加则得到该时钟周期内的时域信号x(n)。观察第k条支路的表达式,xk(n)=X(k)ej2πkn/N,式中X(k)为恒定不变值,而ej2πkn/N=cos(2πkn/N)+jsin(2πkn/N),可以看成一个复正弦信号发生器,这样每条支路都相当于一个常数与一个复正弦信号发生器相乘,每个复正弦信号发生器又可以由两个DDS构成。每条支路中复正弦信号发生器的数字角频率不同,第1条支路的数字角频为第k条支路的数字角频率为据此理解,初步画出本发明的IFFT结构如图1所示,然后再寻求简化方法,以求得到更简单的结构。
图1的结构初步需要2(N-1)个DDS,但是经过下面的“简化方案1”和“简化方案2”之后,就会发现这些DDS可以共享同一个存储器组,相当于只使用一个DDS。图1中每个“”符号相当于复数乘法,比如第k条支路的复数乘法如下式所示:
式中XR(k)和XI(k)分别代表OFDM频域信号的实部和虚部;n是变换好的时域信号的编号,在IFFT处理器中,相当于每个clk的上升沿到来一次,n值增加1;N代表IFFT变换的点数;j为虚数单位;A为旋转因子的倍乘因数,用来把-1到+1之间的sin或cos值放大到能被若干个bit进行数字量化,如果每个旋转因子用W个bit来存储,则考虑充分利用这些bit的话,可以令A=2W-1-1。式(3)说明每个复数乘法包含4个实数乘法,结合图1初步看来本方案共需要4(N-1)个专用乘法器,但是经过下面的“简化方案3”之后,就会去掉这些乘法过程,取而代之的是简单的利用开关取数的过程。
简化方案1:每个复正弦信号发生器的实部和虚部幅度因子都共享相同的存储器组。
由式(3)可以看出,假设有一个存储器组存有第k条支路复正弦信号发生器的虚部幅度因子序列(相当于虚部DDS模块),表达式为:设存储器的位宽为W,则A的取值为2W-1-1,则其对应的实部幅度因子序列(相当于实部DDS模块)为:只需从虚部存储器的相位点,即从第个点开始取值即可,当取到存储器的末尾,再回到开始来取值。这说明同一支路的实部DDS和虚部DDS模块可以共享相同的存储器组,这样,本方案所需的DDS数量相当于减半。
简化方案2:所有的DDS共享同一个存储器组。
如前面所示,第1条支路DDS的数字角频率为第2条支路的数字角频率为 第k条支路的数字角频率为也就是说这些支路的数字角频率正好是成倍增长的。第k条支路的数字角频率是第1条支路的k倍,我们可以利用这一特点让所有的DDS都共享同一个存储器组。具体原理如图2所示,假设用一个存储器组存储第一条支路的正弦幅度序列:
该序列共有N个点,图2中的A图以N=30为例。如果把存储器中的数据在clk上升沿逐个取出,这时构建的正弦信号的数字角频率为如果把存储器中的数据每隔一个取出,这时构建的正弦信号序列的数字角频率为同样,如果把存储器中的数据每隔k-1个取出,即第n个clk上升沿取出存储器中第n×k个数据,则构建的正弦信号序列的数字角频率为如果n×k的值超过N,则关于N求余数,然后从存储器中取出第nk-N数。
图2中的A图表示如果在每个clk的上升沿分别取出存储器中编号为0、1、2、3、…、29的正弦幅度值,则数字角频率为图2中的B图表示,如果在clk的上升沿分别取出的幅度编号为0、2、4、…、28、0、2、4、…,则产生的数字角频率为图2中的C图表示,如果在clk的上升沿分别取出的幅度编号为0、3、6、…、27、0、3、6、…,则产生的数字角频率为同理,如果在clk的上升沿分别取出的幅度编号为0、k、2k、3k、…,则所构造的正弦信号的数字角频率为以上过程说明,只要使用一个存储器组用来存储式(4)的序列,即第一条支路DDS的正弦信号幅度序列,则其他高频DDS序列只需从这个存储器中以不同的间隔取数即可,这样就使得图1中所有的支路都共享同一个存储器组,相当于系统只需要使用一个DDS模块。
简化方案3:利用OFDM的频域信号取自有限元素集合的特点省略乘法器。
OFDM发射机的调制方式通常使用QAM的方式,比如4QAM、16QAM、64QAM等,QPSK或者BPSK等方式也类似于QAM方式,所有这些调制方式的共同特点是被调制的频域信号取自有限元素的集合。比如对于4QAM,X(k)∈{±1±j},也就是实部XR(k)和虚部XI(k)等于1或-1;对于16QAM,XR(k)和XI(k)都等于±1或者±3这四个数中的一个。根据这一特点,观察式(3)可以发现第k条支路输出的数据xk(n)由四项相加组成,这四项分别是: 和对应着4个乘法器,每个乘法器都是在计算XR(k)或XI(k)与或相乘,也就是说乘法器总是在计算±1或±3这之类的数据与式(4)中的序列相乘。这说明乘法器做了大量重复性的工作,为了简化计算,可以将这些乘法结果预先存储起来,采用单刀多抛开关从这些存储器组中挑选合适的数据。正是使用这种思想,本发明提出的IFFT的实现方法省去了乘法器,系统结构得到了大大简化。
对于4QAM而言,我们只需要使用一个存储器组来存储式(4)中的正弦幅度因子序列。这是因为4QAM调制的XR(k)和XI(k)取值不是1就是-1,当xk(n)中需要计算时,只需将存储器组中的数据从第0号元素开始取值,此后在每个clk的上升沿每隔k-1个数据取出下一个;当计算时,在第一个clk的上升沿取出存储器中的第个数据,此后每隔k-1个点取出一个数据。当需要取的数据编号超过N时,则求出该编号减去N 后的结果,假设该结果等于x,再回过头来从存储器的第x个单元处取数。同理,当计算 时,从存储器的位置开始取数,当计算时,从存储器的位置开始取数。
对于16QAM,则增加一个存储器组(取名叫bank2,设式(4)对应的bank叫bank1),其中存有序列:
这里重新修改A的值,等于W为存储器位宽。当需要计算时,则从bank2的第0号元素开始每隔k-1个元素取数,当需要计算时,从bank2的第号元素开始取数,当需要计算时,从bank1的第0号元素取数,其他依此类推。同样,对于64QAM,再增加两个存储器组,bank3和bank4,令bank3中存有的序列为 这里A被修改成等于bank4中存有序列 按照同样的方法取数,也可以成功免除使用乘法。
一般来说对于xQAM,设x=4m,共需要个存储器组。比如256QAM,m=4,共需要8个存储器组;假设IFFT变换的点数为N=1000,每个正弦幅度因子的量化精度为8个bit,则总共耗用8K字节的存储器容量,这个存储器用量并不大。假设采用FPGA实现OFDM发射机,一般的FPGA的存储器容量少则有几十K字节,多则上兆字节,比较而言,本发明实现IFFT所使用的存储器容量几乎微不足道。
综合上述三种方法,简化后的IFFT算法的结构如图3所示。
图3主要由三部分组成,第一部分是r个存储器bank,每个bank中存有N个数据,用来表示把正弦函数的一个周期平均分成N份并被量化后的幅度值,这些幅度值的表达式如式(4)或式(5)所示,一般是有符号数,位宽可以由用户指定。假设调制方式为16QAM,N=1000,每个正弦幅度因子的位宽为8,则bank1中的数据由式(4)取整得到,即: 此处round函数表示取最接近的整数,42是由后面的126除以3得到的。bank2中的数据为:
这里sin前之所以乘以126,是因为8位有符号整数的变化范围为从-128到+127,126为其中小于127且能被3整除的最大整数。以此类推,我们可以得到在不同的QAM调制方式、不同的位宽和N值时各个bank所应存储的数据序列。
图3中的第二部分为4×(N-1)个单刀r抛开关,其中实部和虚部各需要2×(N-1)个,每条支路(除第0条支路外)的实部和虚部各需要使用两个单刀r抛开关。这些单刀r抛开关用来选择从哪个存储器中的什么位置开始取数据,具体取数方法在前面已作介绍,这里从略。比如第k条支路的实部数据由XR(k)和-XI(k)这两个数决定,二者选出的数据序列分别是 和当XR(k)=2p-1,p∈{1,2,...,r}时,从bankp中的第地址开始取数,每个clk的上升沿到来,地址自动增加k,当XR(k)=-(2p-1),p∈{1,2,...,r}时,从bankp的第地址处开始取数,同样,每个clk的上升沿到来,地址自动增加k。
图3中的第三部分是两个加法器,每个加法器的输入端都有2N-1个数据,输出端为一个数据。第一个加法器把所有支路的实部数据加到一起从而算出x(n)的实部,第二个加法器把所有支路的虚部数据加到一起从而算出x(n)的虚部,第k条支路实部和虚部数据的计算公式见式(3)。图3中的clk表示这是一个时序逻辑电路,系统在一个统一的clk的指挥下工作,每个clk的上升沿或者下降沿到来时,各条支路都选择恰当的存储器bank,并从合适的起始位置以一定的间隔选取数据,取出来的数据分实部和虚部分别交给2个加法器进行求和,从而得到IFFT变换的最终结果x(n)。
本发明提出的针对OFDM发射机的IFFT处理器巧妙地去掉了乘法器,所使用的存储器在QAM调制阶数较低时也很少,另外该IFFT处理器结构也很简单,便于开发和应用,而且从第一个clk上升沿起,此后每个clk上升沿都可送出一个新的变换好的时域数据,因而反应速度也比传统的IFFT结构要快得多。
实施例1:
下面结合一个实例讲解在FPGA上对OFDM发射机中的IFFT处理器进行开发的过程,给出了其Verilog代码,但是这些实例不应被解释为对本发明的限制。
暂时不考虑保护间隔cp的问题,假设本发明OFDM系统的子载波频率间隔为1000Hz, 子载波个数为N=256。假设二进制信源经过16QAM调制后的序列为X(k),k=0,1,2,...,255,该序列为4位二进制数,其中前两位代表实部XR(k),后两位代表虚部XI(k)。根据前面的论述,x=16,这说明系统只需要2个256点的存储器bank;假设其中每个正弦幅度值占用一个字节,即8bit,则bank1的序列表达式为:
bank2的序列表达式为:
这样总共需要存储512个幅度数据,系统的存储器用量为512字节,这个容量对于一般的FPGA来说是非常小的。
下一步是需要确定图3中4×255=1020个开关的行为,其中实部包含510个开关,虚部也包含510个开关。以第k条支路为例,讲述这些开关如何从bank1和bank2中选取数据。第k条支路的实部表达式为虚部表达式为 当XR(k)或者XI(k)被映射为+1或-1时,需要从bank1中取数,当被映射为+3或-3时,需要从bank2中取数。如果sin函数前面的因子为正,比如实部的-XI(k)或者虚部的XR(k)为正,则从bank的0号地址处开始取数,如果因子为负,则从bank的处开始取数;同理,如果cos函数前面的因子为正,从bank的地址开始取数,如果因子为负,则从的地址开始取数;取数的方式是每当clk的上升沿到来时,第k条支路从起始地址开始每隔k-1个地址取出一个新的数据,当取到存储器的末尾则返回开始再取。
模块的第三部分是两个加法器,每个加法器都有511个输入数据、1个输出数据,第一个加法器用来算出x(n)的实部,第二个加法器用来算出x(n)的虚部。通过合理的设计能够使得加法器在一个clk的时间内算出511个数据的和,从而保证该IFFT处理器能够每个clk输出一个x(n),n=0,1,2,...,255。传统的IFFT模块一般会耗时数十微秒或更长时间才将x(n)全部算好,然后再利用自身的数据总线将x(n)逐个送出,也就是说在送出数据的过程中经历一 个并串转换,而本发明提出的IFFT结构不需要这种转换,当某个clk的时期内算出一个x(n),则正好在下一个clk将其输出,这相当于省去了传统IFFT处理器中的那几十微秒的运算时间,这正是本发明的另一个优点。
附录1给出了一种本发明所述IFFT处理器的Verilog代码,以下对此代码做简单的解释。
代码中先用一个initial语句给SinWave[N-1:0]存储器和X[N-1:0]存储器赋值,其中SinWave用来存储正弦波幅度,以构成各路的DDS,X[N-1:0]存储待变换的频域数据,假设采用4QAM调制,每个频域数据占用两位,1代表星座图中的1,0代表星座图中的-1。根据公式(3),系统的N条支路中,每条的实部和虚部都包含两个表达式,每个表达式都通过从正弦幅度因子中取数而得到,这样就定义了4(N-1)个地址计数器Addr_Counter和4(N-1)个信号幅度存储器SR1、SR2、SI1、SI2,分别对应实部的第1、2条支路和虚部的第1、2条支路结果,这些结果是从正弦幅度因子存储器中选择出来的。
每条支路的地址计数器Addr_Counter都会在系统开始工作时赋予一个初始值;比如当式
(3)中的项中的XR(k)为+1时,则从bank1的第个点开始取值,Addr_Counter_R1的初始值就等于如果XR(k)为-1,则从正弦幅度因子序列的第个点开始,Addr_Counter_R1的初始值就等于当Addr_Counter在第0个clk赋完初始值后,此后每个clk第k条支路都自动增加k。系统有一个全局的时钟计数器Sys_Clk_Cnter,初始时刻该计数器的值为0,此后每个clk的上升沿都自动增加一,当增加至255时,会再回到0,也就是说在Sys_Clk_Cnter等于0时,Addr_Counter赋予初始值。
对于511输入、1输出的两个加法器,由于直接设计比较困难,采用分组相加的方法实现,即将实部的2N个数据首先分成份,每份8个数据,将每组的八个数据相加,得到Sum1R[N/4-1:0]=Sum1R[63:0],再将这个数据分成份,每份4个数据,形成Sum2R[N/16-1:0]=Sum2R[15:0],如此再形成Sum3R[N/64-1:0]=Sum3R[3:0],最后由四个Sum3R相加得到IFFT变换的实部数据xR_Out。通过相同的操作也可以得到虚部数据xI_Out。
附录1:(IFFT处理器的Verilog代码)
Claims (9)
1.一种应用于OFDM发射机的IFFT处理器,其特征在于,
所述IFFT处理器包括r个由存储器组构成的bank,用来存储sin函数一个周期内被均匀采样并被数字量化后的幅度因子,称为正弦幅度因子,每个bank存有N个正弦幅度因子数据,这些bank分别叫bank1、bank2,...,bankr,这里N代表IFFT变换的点数,r由调制方式决定;
所述IFFT处理器还包括N条支路,其中第1到N-1条支路,每条支路又包含4条子支路,每条子支路各使用一个单刀r抛开关用来从bank中选取数据,这样共有4(N-1)个单刀r抛开关,每条支路的前两个开关用来从bank中选择恰当的正弦幅度因子以便送入第一加法器生成IFFT变换的实部,后两个开关用来选择恰当的幅度因子以生成IFFT变换虚部,第0条支路为直流量,由2个单刀2r抛开关构成,一个用来选择实部数据送入第一加法器,另一个用来选择虚部数据以送入第二加法器;
所述IFFT处理器还包括两个多输入、单输出的加法器,每个加法器的输入数据有2N-1个,第一加法器把第1到N-1条支路的前两个开关选出的数据及第0条支路的第一个开关选出的数据相加得到IFFT变换的实部,第二加法器把第1到N-1条支路的后两个开关选出的数据及第0条支路的第二个开关选出的数据相加得到IFFT变换的虚部;
所述IFFT处理器在一个统一的clk时钟的控制下执行,在每个clk的上升沿,系统的第1到N-1条支路的每一条子支路都从恰当的bank中挑取出恰当的数据,前两条支路挑选的数据被送入第一加法器,以便得到IFFT变换的实部,后两条支路挑选的数据被送入第二加法器,以得到IFFT变换的虚部;当下一个clk的上升沿到来时,每条子支路还是从上次的bank中取数,只不过是取数的位置不同;只有当所述的IFFT处理器要对一组新的频域数据进行变换时,各子支路才可能从不同的bank中取数。
2.如权利要求1所述的IFFT处理器,其特征在于,所需的bank数量r由调制阶数决定,对于采用xQAM调制,设x=4m,共需要个存储器组。
4.如权利要求1所述的IFFT处理器,其特征在于,第1到N-1条支路,其中每条支路又包含4条子支路,第k条支路的4条子支路分别用来计算 和这四个表达式中的乘法不是由硬件乘法实现的,而是通过单刀r抛开关从恰当的bank的恰当的地址处挑选数据得到;上面式子中,A为统一正弦倍率因子,用来扩大sin和cos的旋转因子,以使其能够用整数表示,从而存入存储器;n代表时间,表示每个clk的上升沿到来时,每条支路都会送出一个数据;XR(k)代表频域数据X(k)的实部,XI(k)代表X(k)的虚部,它们的取值为集合{±(2p-1)|p∈[1,2,...,r]}中的某个数;如果某条子支路中的XR(k)或XI(k)等于±(2p-1),p∈[1,2,...,r],那么该子支路就应该从bankp中选取数据。
5.如权利要求1所述的IFFT处理器,其特征在于,第1到N-1条支路的4个子支路确定从第几个bank中选取数据之后,在开始变换的第一个clk的上升沿还要确定从该bank的哪个起始地址选取数据,这些起始地址只可能是0、或者当中的一个;当该子支路的计算式中包含sin,且前面的系数为正时,起始地址为0;当子支路的计算式中包含sin,而前面的系数为负时,起始地址为当子支路的计算式中包含cos,而前面的所乘的系数为正时,起始地址为当子支路的计算式中包含cos,而前面的系数为负时,起始地址为当每条子支路的bank编号和起始地址确定之后,以后每来一个新的clk的上升沿,第k条支路的所有子支路在该bank中取数的地址自动增加k,如果地址编号超过N,则从该地址编号减去N后的地址取数。
6.如权利要求1所述的IFFT处理器,其特征在于,所述IFFT处理器包括2个加法器,每个加法器能在一个clk之内将2N-1个数据加到一起,分别形成此时刻变换结果的实部和虚部;每个加法器的2N-1个输入数据包含第1到N-1条支路的两条子支路选出的2(N-1)个数据和第0条支路其中一条子支路选出的数据;第0条支路对应着直流量,它的两条子支路选取的数据分别由X(0)的实部XR(0)和虚部XI(0)决定。
7.一种应用于OFDM发射机的IFFT实现方法,其特征在于,包括如下步骤:
1)IFFT变换的表达式写成:
其中,N为变换点数,第k条支路在第n个clk送出的数据为:X(k)ej2πkn/N,n=0,1,2,…,N-1,其中X(k)为常数,ej2πkn/N看成复正弦信号发生器,在电路的硬件上由两个DDS构成;
2)将第k条支路的复数乘法展开,得到第k条支路生成的时域数据:
其中XR(k)代表X(k)的实部,XI(k)代表X(k)的虚部,二者皆为常数,N代表IFFT变换的点数,A为正弦倍率因子,用来扩大sin和cos的旋转因子,以使其能够用整数表示,从而存入存储器,n代表时间,表示每个clk的上升沿到来时,每条支路都会送出一个数据;(II)式说明第k条支路生成的时域数据xk(n)的实部和虚部都由两部分组成,其中每一部分都是由一个实常数和一个正弦或余弦序列相乘而得到,在硬件电路中相当于每条支路包含4条子支路,其中前两条子支路用来生成xk(n)的实部,后两条子支路用来生成xk(n)的虚部;正弦和余弦的旋转因子序列共用同一个存储器组,只是取数时初始相位不同;
8.如权利要求7所述的IFFT实现方法,其特征在于,采用数字正弦信号发生器生成式(II)中的sin和cos序列项,而各条支路中数字正弦信号发生器的数字角频率是成倍增长的,这样,只使用一个存储器保存正弦幅度序列:
其他高频数字正或余弦信号序列只需从该序列中以不同的初始相位和间隔取数即可。
9.如权利要求8所述的IFFT实现方法,其特征在于,由于OFDM发射机的频域数据X(k)的实部XR(k)和虚部XI(k)通常取自相同的有限元素的集合,这样,式(II)中的乘法器做了大量重复性的工作,通过把|XR(k)|乘以式(III)的序列存储起来,省去了IFFT处理器中的乘法器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310737549.4A CN103685128B (zh) | 2013-12-27 | 2013-12-27 | 应用于ofdm发射机的ifft处理器和ifft实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310737549.4A CN103685128B (zh) | 2013-12-27 | 2013-12-27 | 应用于ofdm发射机的ifft处理器和ifft实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103685128A true CN103685128A (zh) | 2014-03-26 |
CN103685128B CN103685128B (zh) | 2017-04-12 |
Family
ID=50321470
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310737549.4A Expired - Fee Related CN103685128B (zh) | 2013-12-27 | 2013-12-27 | 应用于ofdm发射机的ifft处理器和ifft实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103685128B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107908389A (zh) * | 2017-11-21 | 2018-04-13 | 天津大学 | 小点数fft旋转因子复数乘法加速器 |
CN108234374A (zh) * | 2016-12-14 | 2018-06-29 | 联芯科技有限公司 | 上行多载波发射装置、系统及方法 |
CN108234375A (zh) * | 2016-12-14 | 2018-06-29 | 联芯科技有限公司 | 单载波数据的发射方法与装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1120650A2 (en) * | 2000-01-28 | 2001-08-01 | Roche Diagnostics GmbH | Capillary hematocrit separation structure |
CN101303689A (zh) * | 2008-05-15 | 2008-11-12 | 北京理工大学 | 一种基于多抽样的分数阶傅立叶变换实现方法 |
CN103200145A (zh) * | 2013-04-03 | 2013-07-10 | 北京大学 | 一种基于dds原理的ofdm发射机的实现方法 |
-
2013
- 2013-12-27 CN CN201310737549.4A patent/CN103685128B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1120650A2 (en) * | 2000-01-28 | 2001-08-01 | Roche Diagnostics GmbH | Capillary hematocrit separation structure |
CN101303689A (zh) * | 2008-05-15 | 2008-11-12 | 北京理工大学 | 一种基于多抽样的分数阶傅立叶变换实现方法 |
CN103200145A (zh) * | 2013-04-03 | 2013-07-10 | 北京大学 | 一种基于dds原理的ofdm发射机的实现方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108234374A (zh) * | 2016-12-14 | 2018-06-29 | 联芯科技有限公司 | 上行多载波发射装置、系统及方法 |
CN108234375A (zh) * | 2016-12-14 | 2018-06-29 | 联芯科技有限公司 | 单载波数据的发射方法与装置 |
CN108234375B (zh) * | 2016-12-14 | 2020-08-25 | 联芯科技有限公司 | 单载波数据的发射方法与装置 |
CN108234374B (zh) * | 2016-12-14 | 2020-09-25 | 联芯科技有限公司 | 上行多载波发射装置、系统及方法 |
CN107908389A (zh) * | 2017-11-21 | 2018-04-13 | 天津大学 | 小点数fft旋转因子复数乘法加速器 |
Also Published As
Publication number | Publication date |
---|---|
CN103685128B (zh) | 2017-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100585582C (zh) | 一种用于部分式快速傅里叶变换fft处理的装置、处理器和方法 | |
Yang et al. | MDC FFT/IFFT processor with variable length for MIMO-OFDM systems | |
CN106685887B (zh) | 一种用于fpga的ufmc发射机的频域实现方法 | |
WO2005086020A2 (en) | Fast fourier transform circuit having partitioned memory for minimal latency during in-place computation | |
CN103685128A (zh) | 应用于ofdm发射机的ifft处理器和ifft实现方法 | |
CN108650204B (zh) | 用于fpga的fbmc/oqam调制控制系统及方法、调制器 | |
CN103458485B (zh) | 正交频分复用系统中峰值功率优化方法及其发射系统 | |
US20140365547A1 (en) | Mixed-radix pipelined fft processor and fft processing method using the same | |
CN115544438B (zh) | 数字通信系统中的旋转因子生成方法、装置和计算机设备 | |
CN116155612A (zh) | 一种码本旋转角度扰动方法、装置、终端及存储介质 | |
CN103200145B (zh) | 一种基于dds原理的ofdm发射机的实现方法 | |
CN103457888B (zh) | 联合升采样和数字成型的通信信号发送方法及装置 | |
Iqbal et al. | Selective mapping: Implementation of PAPR reduction technique in OFDM on SDR platform | |
Wu et al. | A novel PTS architecture for PAPR reduction of OFDM signals | |
Bhavanam et al. | FPGA based efficient DTMF detection using Split Goertzel algorithm with optimized resource sharing approach | |
CN103188192A (zh) | 应用于视频传感器的基带处理装置 | |
CN101764778B (zh) | 一种基带处理器和基带处理方法 | |
Liu et al. | Novel DDS based OFDM transmitter structure without IFFT and interpolation filter | |
CN112637098B (zh) | 降低ofdm系统峰均比的方法和装置、信号发送端与接收端 | |
Liu et al. | Novel low-complexity low-latency orthogonal frequency division multiplexing transmitter | |
Yang et al. | A novel 3780-point FFT | |
Kadhum et al. | Digital chunk processing with orthogonal GFDM doubles wireless channel capacity | |
Xin et al. | A new SLM OFDM scheme with low complexity for PAPR reduction in CR system | |
Wu et al. | Low Complexity Time Domain Interleaved Partitioning Partial Transmit Sequence Scheme for Peak-to-Average Power Ratio Reduction of Orthogonal Frequency Division Multiplexing Systems | |
CN117278185B (zh) | 一种基于ofdm系统的峰值削减系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170412 Termination date: 20171227 |
|
CF01 | Termination of patent right due to non-payment of annual fee |