CN102117264A - 基于fpga的快速沃尔什变换的实现方法 - Google Patents

基于fpga的快速沃尔什变换的实现方法 Download PDF

Info

Publication number
CN102117264A
CN102117264A CN201010622171XA CN201010622171A CN102117264A CN 102117264 A CN102117264 A CN 102117264A CN 201010622171X A CN201010622171X A CN 201010622171XA CN 201010622171 A CN201010622171 A CN 201010622171A CN 102117264 A CN102117264 A CN 102117264A
Authority
CN
China
Prior art keywords
walsh transform
fast walsh
data
design
fpga
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
CN201010622171XA
Other languages
English (en)
Other versions
CN102117264B (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.)
715th Research Institute of CSIC
Original Assignee
715th Research Institute of CSIC
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 715th Research Institute of CSIC filed Critical 715th Research Institute of CSIC
Priority to CN201010622171.XA priority Critical patent/CN102117264B/zh
Publication of CN102117264A publication Critical patent/CN102117264A/zh
Application granted granted Critical
Publication of CN102117264B publication Critical patent/CN102117264B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Complex Calculations (AREA)

Abstract

本发明公开了一种基于FPGA的快速沃尔什变换的实现方法,包括如下步骤:采用双口SRAM作为流水级的中间级,每两个双口SRAM之间是一个运算器,一组流水级结构一共有10组双口SRAM,总共有两组流水级,两组流水级之间采用乒乓缓存结构相互连接。本发明有益的效果:(1)采用本设计实现快速沃尔什变换算法,可以有效的缩短其运算时间;(2)本设计能有效的降低产品成本,缩小产品的设计尺寸。(3)与传统电路设计相比,本设计可以有效减少研发时间。

Description

基于FPGA的快速沃尔什变换的实现方法
技术领域
本发明涉及电子学领域和算法编程领域,主要是一种基于FPGA的快速沃尔什变换的实现方法。
背景技术
沃尔什函数系理论是随着数字电子技术一同发展起来的另一类完全正交函数系。由于其仅仅只取+1和-1这两个数值,和数字逻辑特征一致,又与正弦函数有一系列本质上类似的性质,因而在信号处理、通信和控制方面得到了广泛的应用。
在水声扩频通信信号处理中,接收端对扩频码搜索需要进行大规模、重复性的沃尔什变换,而通用DSP芯片,由于其芯片组成结构的限制,运算速度始终不能满足高速沃尔什变换要求,以致水下扩频通信难以达到实时性要求。而针对大规模、重复性处理的应用,FPGA比通用DSP有着明显优势。在同等规模的门电路,在FPGA中几乎全部的门电路都被用来实现计算,但DSP只能用内核中的某些功能单元来实现。因此采用FPGA来实现快速沃尔什变换,将会对运算速度产生极大的提高。
发明内容
本发明的目的正是要克服上述技术的不足,而提供一种基于FPGA的快速沃尔什变换的实现方法,在现场可编程门阵列(FPGA,Field Programmable Gate Array)中实现快速沃尔什变换(FWT)算法,可以极大的提高该算法的运算速度,增强系统处理能力,最终达到提高系统性能的目的。
本发明解决其技术问题采用的技术方案:这种基于FPGA的快速沃尔什变换的实现方法,包括如下步骤:采用双口SRAM作为流水级的中间级,每两个双口SRAM之间是一个运算器,一组流水级结构一共有10组双口SRAM,总共有两组流水级,两组流水级之间采用乒乓缓存结构相互连接。
作为优选,采用基于乒乓缓存的串行流水级结构,两组串行流水结构交替运算;
X n = 1 N Π r = 0 p - 1 Σ i = 0 N - 1 ( - 1 ) n p - 1 - r ( i r + i r + 1 ) x ( i p - 1 · · · i 0 ) - - - ( 5 - 2 )
数据从左边输入,右边输出,双口SRAM的个数和节点数保持一致,每一个时钟周期运算器进行两次加法运算,中间运算结果保存在双口SRAM中,作为下一步骤的计算输入,每N/2个时钟完成一个计算步骤,即使得式子(5-2)中的r值减少一个。
作为优选,根据快速沃尔什变换推导出地址序列如下:
Ar(l)=Ar-1(l)+Ar-1(l+2n-1)
Ar(l+2n-1)=Ar-1(l)-Ar-1(l+2n-1)(5-3)
其中:l=(m-1)×2n+k,m取值为从0到2n-1依次递增,k取值为从0到210-n依次递增,n表示第几个步骤,取值范围是1到10;
由该公式设计出可编程的换序地址生成器,改变m,k这两个参数,生成快速沃尔什变换中所需要的所有步骤所需要的变换地址,这些地址配合前面的双口SRAM和运算器,组成一个快速沃尔什变换组。
作为优选,采用自适应输入设计,在快速沃尔什变换的数据输入部分,设计一个输入数据填零模块,在结果输出部分,设计一个数据选择模块,根据输入数据的有效个数,选择输出数据的有效个数。
本发明有益的效果是:
(1)采用本设计实现快速沃尔什变换算法,可以有效的缩短其运算时间,经过测量,采用1024点的32位复数作为测试数据,通用DSP芯片(TMS320VC5509,工作在主频192MHz)的运算时间大于500us,而采用该IP核运算(运行在100MHz的时钟频率),仅仅需要5.7us就可以实现,运算速度提高了近100倍。而且运算精度与DSP运算一致。
由于FWT与FFT(快速傅立叶变换)有着相似性,将该IP核与Altera公司的FFT核进行比较。如下表所示
 运算数据位数   运算数据是否为复数   运算所需的时钟周期
 Altera公司的FFT核  16位   否   1069
 本IP核  32位实部+32位虚部   是   570
(2)与传统的DSP电路实现相比,本设计能有效的降低产品成本,缩小产品的设计尺寸。这里还是以5.7us时间内运算1024点的32位复数为设计标准来举例。达到同样的设计标准,本设计只需要1片FPGA芯片,资源使用大小为1万门多逻辑资源和1.7Mbit的储存单元。而对于DSP芯片来说,需要14片C5501并行处理(工作在主频300MHz),或者需要21片C5509A(工作在主频192MHz)并行处理,或者需要1片32位定点DSP TMS320DM641(处理速度4.8GIPS),或者需要3片浮点虎鲨系列DSP TS201芯片(处理速度1.5GFLOPS)。
(3)与传统电路设计相比,本设计可以有效减少研发时间。该IP核由于是基于底层VHDL 代码直接进行编程,可以直接移植到其他不同的FPGA上,不需要再重新开发。同时该IP核可以自动识别适应不同点数的快速沃尔什变换,同时可以快速配置成不同的接口电路,可以有效的提高新产品开发时间。
附图说明
图1是16点沃尔什变换蝶形图;
图2是串行流水级结构框图;
图3是乒乓缓存结构框图;
图4是换序地址生成器结构框图;
图5是自适应输入设计结构框图
图6是积木式控制设计结构框。
具体实施方式
下面结合附图和实施例对本发明作进一步说明:
本发明设计了一个基于FPGA芯片的快速沃尔什算法硬件IP核。该IP核采用串行流水级结构作为运算结构,采用FPGA的内部SRAM作为中间存储单元,有效的减少运算时间,提高整体运算速度;设计了换序地址发生器,减少了运算复杂度,精简了运算步骤。通过对算法进行前期的优化,使得该IP核可以自适应64点、128点、256点、512点和1024点的32位实数或者复数运算。针对水声扩频通信中的特殊应用,该IP核配置了不同的外围接口设计和辅助信号处理接口设计,有效的提高了系统的实用性。
在离散情况下,沃尔什变换为:
X n = 1 N Σ n = 0 N - 1 x i WAL ( n , i ) , n = 0,1 , · · · , N - 1
WAL ( n , i ) = Π r = 0 p - 1 ( - 1 ) n p - 1 - r ( i r + i r + 1 )
i,n=0,1…,N-1  r=0,1,…,p-1(5-1)
如果我们将式(5-1)与傅里叶变换相比较,不难看出,两者非常相似。唯独不一样的是其核函数,快速沃尔什变换的核函数是并只取±1两个数值,而快速傅立叶函数的核函数是一复数K=exp(-j2πif/N)。
将离散沃尔什变换的变换为乘-和表示式为:
X n = 1 N Π r = 0 p - 1 Σ i = 0 N - 1 ( - 1 ) n p - 1 - r ( i r + i r + 1 ) x ( i p - 1 · · · i 0 ) - - - ( 5 - 2 )
由此可以看到,快速沃尔什变换是按r从0递增到p-1的步骤依次进行。每一个步骤相 当于使N=2p中的p次乘方减少一次,同时,每一个步骤共有N个加法运算,全部变换只需要 
Figure BSA00000409781300041
次加法运算。
将公式(5-2)进行分解,可以得出图1的蝶形,图1是16点的蝶形图。分析这张图,我们可以发现,数据流从左到右的经过每一个节点,而这每一个节点就是式子(5-2)中的每一个步骤,前后节点依次相连。由此,我们就可以依照蝶形图的数据流向设计沃尔什变换运算器。由双口SRAM作为其中间节点,前后双口SRAM之间采用数据线依次连接。
其具体的设计如下:
(1)、基于乒乓缓存的串行流水级结构
在硬件算法中有并行结构和串行结构两种。出于对运算速度和资源使用量的均衡考虑,本发明采用的是串行流水级结构,具体的结构框图如图2所示。
在图2中,数据从左边输入,右边输出。图2中的双口SRAM的个数和图1中的节点数保持一致,每一个时钟周期运算器进行两次加法运算,中间运算结果保存在双口SRAM中,作为下一步骤的计算输入。每N/2个时钟完成一个计算步骤,即使得式子(5-2)中的r值减少一个。例如,输入数据为1024点的数据,根据式子(5-2),可以知道共有10个计算步骤,即要经过10的双口SRAM才能得到最终结果。每一个计算步骤需要512个加法,需要512周期完成该步骤。对于整体而言,当前第一组1024点的输入数据的第一个步骤运算完成后,第一个双口SRAM和加法运算器便空闲出来可以运行下一组1024点的输入数据了。从而形成流水级运算结构。
但是对于双口SRAM来说有个缺点:在同一个地址空间不能同时进行读写操作。这样,在前一个步骤在存储中间结果同时,是无法读取下一个步骤运算数据,造成了处理时间上的浪费。为此,这里我们运用了乒乓缓存原理,采用两组串行流水结构交替运算,保持最终数据结果的连贯,其结构如图3所示。还是以1024点的输入数据作为例子。假如采用只是采用单个串行流水级结构,那么最终输出数据是每隔512个周期输出一组512个数据的最终结果。而如果采用乒乓缓存结构,就可以使得数据连续输出,数据中间没有任何的停滞。
(2)、换序地址生成器
对式子(5-2)进行变形推导,使得式中的r=0,可以得到中间过程变量A1:
A 1 ( n p - 1 , i p - 1 · · · i 1 ) = Σ i 0 = 0 1 ( - 1 ) n p - 1 ( i 0 + i 1 ) x ( i p - 1 · · · i 0 )
同理,将r=0……9时,对上式以同样方法进行变形推导,可以得到一个通用的中间变 量生成的式子:
Ar(l)=Ar-1(l)+Ar-1(l+2n-1)
Ar(l+2n-1)=Ar-1(l)-Ar-1(l+2n-1)(5-3)
其中:l=(m-1)×2n+k,m取值为从0到2n-1依次递增,k取值为从0到210-n依次递增。n表示第几个步骤,取值范围是1到10。
从式(5-3)中,可以看出,中间变量Ar的地址是在一直改变的,不同的步骤中地址也是相互不一样的。因此我们需要一个通用的地址生成器来适应不同的步骤使用。在式子(5-3)中l和l+2n-1的值就是我们需要的两个数据地址。分析(5-3)可知,我们可以将式子(5-3)中的m,k作为每个步骤的参数,改变这两个参数就可产生不同的地址,转化为程序框图,如4图所示。其中,每一个时钟节拍k值自动依次递增,当k值递增到上限时,进位到m值。而m和k值的改变,将引起(m-1)×2n+k的变化,最终影响l和l+2n-1两个地址的输出。
(3)、自适应输入设计:根据设计需要,本发明需要处理64点、128点、256点、512点和1024点数据的不同快速沃尔什变换。如果各种不同变换单独的设计的话,需要设计几组IP核,资源消耗太大,也不实用。
通过观察图1中的蝶形图可以发现,如果设计的IP核是16点的,而且输入16点的数据中,有效数据8点数据,顺序排列在排头,后面的8个数据全“0”,则我们最终计算得到的结果是两个相同的8点数据快速沃尔什变换的运算结果顺序排列。由此得到启发,我们只需要做一个1024点的IP核,在最终结果输出的位置设计一个输出选择模块,根据输入的数据个数不同截取运算结果的不同长度。例如:我们的输入是256点的数据,则将这256点数据输入到运算特定的存储器中,剩下的768个数据全填“0”,运算完成后会得到1024个数据,我们只取前256个数据即可。因此自适应输入设计由两部分组成,一个是数据数据填零模块,一个是输出选择模块,结构框图如图5所示。
(4)、可变换的接口模块
本发明中的各种内部和外部接口都是结构简单,操作灵活方便。外部接口模块主要是实现本发明对DSP芯片或者其他控制器芯片的接口。在设计中,外部接口可以随意更改控制接口时序,根据不同的外部硬件电路来调整IP核与外部硬件的连接,可以配置成并口,串口,SPI口,I2C口等等。而内部接口(即模块和模块之间的接口)比外部接口更加简洁,只有三组信号:时钟信号,读写信号和数据信号。如图6图所示。并且在读写信号中,还设计了一个读写控制模块,该模块的输入为单个读写信号,输出为功能模块所需要的各种控制信号, 包括:读信号,写信号,使能信号等。在该模块中还设计了一个可控的信号延时结构,可以对输入的控制信号进行特定时钟节拍的延时以便于后面功能模块的使用。
在实际应用中,由于本发明的硬件电路已经为该IP核预留了外部存储器接口(EMIF),因此也采用了EMIF接口,经过时序匹配后,数据传输速率可以达到100Mb/s以上。
除上述实施例外,凡采用等同替换或等效变换形成的技术方案,均落在本发明要求的保护范围。

Claims (4)

1.一种基于FPGA的快速沃尔什变换的实现方法,其特征是:包括如下步骤:采用双口SRAM作为流水级的中间级,每两个双口SRAM之间是一个运算器,一组流水级结构一共有10组双口SRAM,总共有两组流水级,两组流水级之间采用乒乓缓存结构相互连接。
2.根据权利要求1所述的基于FPGA的快速沃尔什变换的实现方法,其特征是:采用基于乒乓缓存的串行流水级结构,两组串行流水结构交替运算;
X n = 1 N Π r = 0 p - 1 Σ i = 0 N - 1 ( - 1 ) n p - 1 - r ( i r + i r + 1 ) x ( i p - 1 · · · i 0 ) - - - ( 5 - 2 )
数据从左边输入,右边输出,双口SRAM的个数和节点数保持一致,每一个时钟周期运算器进行两次加法运算,中间运算结果保存在双口SRAM中,作为下一步骤的计算输入,每N/2个时钟完成一个计算步骤,即使得式子(5-2)中的r值减少一个。
3.根据权利要求1所述的基于FPGA的快速沃尔什变换的实现方法,其特征是:根据快速沃尔什变换推导出地址序列如下:
Ar(l)=Ar-1(l)+Ar-1(l+2n-1)
Ar(l+2n-1)=Ar-1(l)-Ar-1(l+2n-1)(5-3)
其中:l=(m-1)×2n+k,m取值为从0到2n-1依次递增,k取值为从0到210-n依次递增,n表示第几个步骤,取值范围是1到10;
由该公式设计出可编程的换序地址生成器,改变m,k这两个参数,生成快速沃尔什变换中所需要的所有步骤所需要的变换地址,这些地址配合前面的双口SRAM和运算器,组成一个快速沃尔什变换组。
4.根据权利要求1所述的基于FPGA的快速沃尔什变换的实现方法,其特征是:在快速沃尔什变换的数据输入部分,设计一个输入数据填零模块,在结果输出部分,设计一个数据选择模块,根据输入数据的有效个数,选择输出数据的有效个数。
CN201010622171.XA 2010-12-29 2010-12-29 基于fpga的快速沃尔什变换的实现方法 Active CN102117264B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201010622171.XA CN102117264B (zh) 2010-12-29 2010-12-29 基于fpga的快速沃尔什变换的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010622171.XA CN102117264B (zh) 2010-12-29 2010-12-29 基于fpga的快速沃尔什变换的实现方法

Publications (2)

Publication Number Publication Date
CN102117264A true CN102117264A (zh) 2011-07-06
CN102117264B CN102117264B (zh) 2014-02-12

Family

ID=44216039

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010622171.XA Active CN102117264B (zh) 2010-12-29 2010-12-29 基于fpga的快速沃尔什变换的实现方法

Country Status (1)

Country Link
CN (1) CN102117264B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105577232A (zh) * 2015-12-22 2016-05-11 中国船舶重工集团公司第七一五研究所 基于fpga的复合序列fwt快速相关检测方法
CN107239423A (zh) * 2017-08-02 2017-10-10 湖南利能科技股份有限公司 一种基于扩展iic接口的装置
CN107402899A (zh) * 2017-08-02 2017-11-28 湖南利能科技股份有限公司 一种iic接口的扩展方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1723627A (zh) * 2002-10-15 2006-01-18 张量通讯公司 用于信道幅度估计和干扰矢量构造的方法和装置
CN101118610A (zh) * 2007-09-10 2008-02-06 东北大学 稀疏数据过程建模方法
CN101504638A (zh) * 2009-03-19 2009-08-12 北京理工大学 一种可变点数流水线fft处理器
CN101604306A (zh) * 2009-06-03 2009-12-16 中国人民解放军国防科学技术大学 基于fpga的列选主元lu分解方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1723627A (zh) * 2002-10-15 2006-01-18 张量通讯公司 用于信道幅度估计和干扰矢量构造的方法和装置
CN101118610A (zh) * 2007-09-10 2008-02-06 东北大学 稀疏数据过程建模方法
CN101504638A (zh) * 2009-03-19 2009-08-12 北京理工大学 一种可变点数流水线fft处理器
CN101604306A (zh) * 2009-06-03 2009-12-16 中国人民解放军国防科学技术大学 基于fpga的列选主元lu分解方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
汤国熙: "复数形式的快速沃尔什变换法", 《国防科技大学学报》, 23 March 1984 (1984-03-23) *
汤国熙: "矩阵形式的快速沃尔什变换法", 《国防科技大学学报 》, 20 September 1983 (1983-09-20) *
虞斐等: "DMBT系统中利用FWT快速实现信道估计", 《电路与系统学报》, 31 December 2009 (2009-12-31) *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105577232A (zh) * 2015-12-22 2016-05-11 中国船舶重工集团公司第七一五研究所 基于fpga的复合序列fwt快速相关检测方法
CN105577232B (zh) * 2015-12-22 2018-12-25 中国船舶重工集团公司第七一五研究所 基于fpga的复合序列fwt快速相关检测方法
CN107239423A (zh) * 2017-08-02 2017-10-10 湖南利能科技股份有限公司 一种基于扩展iic接口的装置
CN107402899A (zh) * 2017-08-02 2017-11-28 湖南利能科技股份有限公司 一种iic接口的扩展方法

Also Published As

Publication number Publication date
CN102117264B (zh) 2014-02-12

Similar Documents

Publication Publication Date Title
CN103092060B (zh) 基于fpga的时间间隔测量系统与测量方法
CN103678257B (zh) 基于fpga的正定矩阵浮点求逆器及其求逆方法
CN107392309A (zh) 一种基于fpga的通用定点数神经网络卷积加速器硬件结构
CN100538886C (zh) 多维数组在动态随机存取存储器上的快速读写方法和装置
CN103970720B (zh) 基于大规模粗粒度嵌入式可重构系统及其处理方法
CN103870438B (zh) 一种利用数论变换计算循环卷积的电路结构
CN101937424A (zh) 基于fpga实现高速fft处理的方法
CN101089840A (zh) 基于多fpga的矩阵乘法并行计算系统
CN107346148A (zh) 基于背面查找表的仿真处理器
Derafshi et al. A high speed FPGA implementation of a 1024-point complex FFT processor
CN102117264B (zh) 基于fpga的快速沃尔什变换的实现方法
CN104579240A (zh) 一种基于fpga的可配置系数的滤波器、电子设备及滤波方法
CN209517154U (zh) 支持实现精确延时处理的电路结构
CN104777456B (zh) 可配置的雷达数字信号处理器及其处理方法
CN105388817A (zh) 脉冲的生成方法及装置
CN103176949B (zh) 实现fft/ifft变换的电路及方法
CN103837878A (zh) 一种gnss卫星信号捕捉方法
CN104035075B (zh) 可配置存储复用的动目标检测器及其检测方法
CN103699355A (zh) 一种变阶流水串行乘累加器
CN102313604B (zh) 基于cpld和fpga的自适应光子相关器
CN114185014B (zh) 一种应用于雷达信号处理的并行卷积方法及装置
CN103176950B (zh) 实现fft/ifft变换的电路及方法
CN101923459A (zh) 一种用于数字信号处理的可重构乘加算数运算单元
CN107506332A (zh) Kalman滤波器快速实现方法
CN106774625A (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