基于fpga的模块化盲源分离逻辑电路的制作方法

文档序号:7777679
基于fpga的模块化盲源分离逻辑电路的制作方法
【专利摘要】基于FPGA的模块化盲源分离逻辑电路,解决现有盲源分离方法中实时性弱、算法不易移植的问题。该盲源分离逻辑电路由数据输入模块、信号预处理模块、获取分离矩阵模块和分离信号输出模块组成。在FPGA芯片中设计了数据输入模块、信号预处理模块、获取分离矩阵模块和分离信号输出模块,并设计了模块内部的矩阵求逆单元、上下三角分解单元和特征值和特征向量单元等。单元内部采用独立化的硬件描述语言实现,该盲源分离逻辑具有良好的移植性和扩展性,对于解决高速盲源分离问题提供了一种方案。本发明提供的盲源分离逻辑电路在工业和军事领域的无线电通信系统、音频、声学和医学信号处理中均有着重要的应用。
【专利说明】基于FPGA的模块化盲源分离逻辑电路
【技术领域】
[0001]本发明属于信号处理【技术领域】,涉及以FPGA芯片为实现载体的盲源分离逻辑电路,该方法可广泛应用于工业控制或通信处理中。
【背景技术】
[0002]在现实生活和自然界中要得到反映某物理特性真实原始的源信号很困难,通过传感器获取的信息,往往是多个未知信号成分混合在一起的信号,对观测信号进行处理的目的就是恢复出无法直接观测的各个原始源信号。盲源分离过程可描述为:通过寻找一个满秩线性变换矩阵,以便使输出的各个分量尽可能地相互独立,最大程度地逼近各个源信号。
[0003]盲源分离在现代信号处理领域占有越来越重要的地位,已经在军事、生物医学、环境地理、工业控制、机械制造、图像分析等方面得到探索性的应用,但是在解决实际问题的过程中,对于大数据量实时要求严格的应用,如被动雷达、地震监测、加速器控制等仍然存在问题;产生这一需求根本原因是随着应用中采集的数据量越来越大,人们希望高速精确的获取数据的潜在信息。通用处理器的方法已经不能够满足需求,而FPGA的硬件结构可以完成这样的任务。
[0004]当前的FPGA实现盲源分离时,基本存在这样的问题,①算法结构复杂,计算过程涉及大量的矩阵处理,计算量巨大,导致实时性不够;②不同的应用和规模,算法结构差异巨大,基本没有移植性。
[0005]本发明的目的是克服现有技术存在的上述不足,提供了一种基于FPGA芯片的模块化盲源分离逻辑电路,研究表明,采用硬件模块法的方式在算法的实时性方面将有极大的提高,同时易于根据输入信号变化,进行模块的替换,为工程应用提供了极大的方便。

【发明内容】

[0006]该盲源分离逻辑电路实现方式如下:首先通过硬件描述语言对盲源分离的实现过程进行描述,然后通过EDA工具,把描述内容生成逻辑电路的网表文件,然后把网表文件烧写到FPGA芯片中,使得FPGA芯片成为盲源分离的专用芯片;
以下描述中,单元指由数字逻辑组成的基本运算电路结构;模块指由单元构成的功能电路。
[0007]本发明提供的基于FPGA芯片的模块化盲源分离逻辑电路整体结构如图1所示,在FPGA芯片的内部由四个逻辑电路模块组成,分别是:数据输入模块、信号预处理模块、获取分离矩阵模块、分离信号输出模块,四个模块连接在一起,完成盲信号分离,其中,数据输入模块依次连接信号预处理模块、获取分离矩阵模块和分离信号输出模块,信号预处理模块同时连接分离信号输出模块,每个模块由基本数字逻辑电路单元组成;
模块1、数据输入模块:包括帧处理单元及局部存储单元;
输入信号后,送到帧处理单元,帧处理单元自带局部存储单元,通过读写总线连接,该局部存储单元作为外部输入数据的缓存,接收到数据后,按先进先出的方式发送给模块2,每发送一帧长度的数据,发送一个同步信号给模块2。
[0008]模块2、信号预处理模块:
对于被分离信源输入为多路信号的情况,该模块由特征值与特征向量单元、选择单元、开方单元、求倒数单元、多个局部存储单元、每路信号对应的求均值单元以及多路信号共用的矩阵与转置矩阵乘法单元组成;
连接方式如下:每路输入信号连接一个求均值单元,每路求均值单元通过读写电路共享一个均值局部存储单元,每路求均值单元的输出信号线连接到矩阵与转置矩阵乘法单元,矩阵与转置矩阵乘法单元自带局部存储单元,在矩阵与转置矩阵乘法单元的局部存储单元中进行输入数据的转置,矩阵与转置矩阵乘法单元连接特征值与特征向量单元;特征值与特征向量单元带有局部存储单元,特征值与特征向量单元通过外部同步信号线与选择单元和开方单元并行连接,开方单元通过读写总线连接特征值与特征向量单元的局部存储单元,求倒数单元的输入通过读写总线连接特征值与特征向量单元的局部存储单元获得,求倒数单元的输出线路与求均值单元的输出线路共同连接在矩阵与转置矩阵乘法单元上,把乘法结果作为送给模块3。
[0009]模块3、获取分离矩阵模块:
由数据计算单元、特征值和特征向量单元、矩阵求逆单元、矩阵乘法单元、多个局部存储单元组成;
连接方式如下:模块2同步信号线与乘法结果信号连接模块3的数据计算单元,数据计算单元自带局部存储单元,数据计算单元连接到特征值和特征向量单元,特征值和特征向量单元自带局部存储单元,矩阵求逆单元的输入通过读写总线连接特征值和特征向量单元的局部存储单元得到,矩阵求逆单元的输出线路与数据计算单元的输出线路共同连接到矩阵乘法单元,矩阵乘法单元把计算结果送入模块4 ;
模块4、分离信号输出模块:
该模块主要由矩阵求逆单元、矩阵乘法单元和串行输出单元组成;
模块的连接方式如下:将模块3中的矩阵乘法单元输出线路连接模块4中的矩阵求逆单元,然后把矩阵求逆单元输出的线路和模块2输出的预处理信号连接到矩阵乘法单元,该矩阵乘法单元的输出线路连接到串行输出单元,串行输出单元把帧数据输出方式改为串行输出,盲源分离结束。
[0010]所述模块2、3、4中使用的矩阵求逆单元以及特征值和特征向量单元的具体结构如下:
1.矩阵求逆单元,该单元主要包括上下三角分解子单元、上下三角求逆子单元和自带局部存储子单元;外部矩阵数据输入该矩阵求逆单元后,首先进入局部存储子单元,该局部存储子单元连接上下三角分解子单元,通过上下三角分解子单元分解矩阵为上三角矩阵和下三角矩阵,并存储在该局部存储子单元中,局部存储单元同时连接上下三角求逆子单元,上下三角求逆子单元通过读写总线把局部存储子单元中的上三角矩阵和下三角矩阵输入,并把计算求逆结果通过总线送到矩阵乘法单元,矩阵乘法单元把上三角矩阵的逆和下三角矩阵的逆相乘输出,得到外部输入矩阵的逆矩阵;
2.特征值和特征向量单元,该单元由加法子单元、乘法子单元、比较子单元、查找子单元、开方子单元、双向局部存储子单元、局部存储子单元、输出转换子单元组成;外部矩阵输入特征值和特征向量单元后,首先存储在双向局部存储子单元中,双向局部存储子单元通过读、写、地址总线,把加法子单元、乘法子单元、比较子单元、查找子单元和开方子单元并联在一起,使用Lanczos分解顺序,各子单元通过控制时序的方式,加锁读写总线,读写双向局部存储子单元中的数据,计算结果通过读写总线发送给输出转换子单元,该单元把计算分解结果,转换为线性输出,得到外部矩阵的特征值和特征向量;
所述矩阵求逆单元中使用的上下三角分解子单元、上下三角求逆子单元具体结构如
下:
上下三角分解子单元,包括加法孙单元电路、乘法孙单元、比较孙单元和双向局部存储孙单元,外部输入数据存储在双向局部存储孙单元中,加法孙单元和乘法孙单元都连接在双向局部存储孙单元中,通过读写总线把双向局部存储孙单元中的矩阵化为阶梯型矩阵,即得到该矩阵的上三角矩阵,并在双向局部存储孙单元中记下变换步骤,然后对双向局部存储孙单元中的单位矩阵进行相同的变换,在双向局部存储孙单元中得到下三角矩阵;上下三角求逆子单元,主要包括加法孙单元、乘法孙单元、双向局部存储孙单元和局部存储孙单元,外部输入数据存储在双向局部存储孙单元中,双向局部存储孙单元把加法孙单元、乘法孙单元连在一起,乘法孙单元自带局部存储单元,计算时由乘法孙单元以此读取双向局部存储孙单元中的行列数据,进行倒数相乘,并把中间结果保存在局部存储孙单元中,使用加法孙单元进行不同行列的数据求和,加法孙单元和乘法孙单元依靠时序,交替进行,完成上下三角求逆,并把结果写在双向局部存储单元中。
[0011]本发明的优点和有益效果:
本发明方法与现有技术相比较,具有如下特点和优点:
本发明完成了基于FPGA的硬件盲源分离逻辑电路的设计,首先对输入信号进行白化处理,然后通过混合信号在特征值和特征向量进行盲源数确定,进而利用联合近似对角化的方法对混合数据进行盲分离,获取分离矩阵;最后,利用这个分离矩阵来对接收到的混合信号进行分离,提取混合信号中的各个独立分量,达到盲源分离的目的。
[0012](I)本发明方法采用硬件描述语言完成了硬件盲源分离的设计,该硬件编写方式具有良好的适应性,脱离了使用固定硬件平台的限制,很好的适用于不同厂家的FPGA芯片。
[0013](2)本发明采用硬件的方式完成的盲源分离逻辑电路,可以使用于高速采样处理的工业环境中,处理速度快于CPU方式,使大规模的高速计算成为了可能。
[0014](3)本发明采用模块化的设计,使得本发明在移植性和适应性方面达到极大提高,可以通过配置文件修改布局布线,也可以只选用其中的某些模块,或者替换其中的分离函数准则完成不同的盲源分离目标。
[0015](4)本发明完成的盲源分离已经可以满足一般分离应用的需求,实验达到理想的信号分离效果,在工业和军事领域的无线电通信系统、音频与声学和医学信号处理中均有着重要的应用潜力。
[0016]【专利附图】

【附图说明】
[0017]图1是基于FPGA的模块化盲源分离逻辑电路总体结构图,包括数据输入、信号预处理、获取分离矩阵和分离信号输出四个逻辑电路模块。
[0018]图2是数据输入模块逻辑电路,连续输入信号转换为按帧方式输出。
[0019]图3是信号预处理模块逻辑电路。
[0020]图4是获取分离矩阵模块逻辑电路。
[0021]图5是分离信号输出模块逻辑电路。
[0022]图6是上下三角分解子单元逻辑电路。
[0023]图7是上下三角矩阵求逆子单元逻辑电路。
[0024]图8是特征值和特征向量单元逻辑电路。
[0025]图9是实施实例中MATLAB发送给开发板的观测信号JT。
[0026]图10是混合前的原始信号。
[0027]图11是观测信号经 过FPGA开发板盲源分离逻辑电路处理后的恢复信号。
[0028]
【具体实施方式】
[0029]为了使本领域的技术人员更好地理解本发明方案,下面结合附图和实施方式对本发明作进一步的详细说明。
[0030]本实例使用Altera Stratix IV GX FPGA进行测试,软件使用MATLAB2012b和Alterall.1的DSP Builder,实验通过MATLAB发送信号把4路信号发送到Altera开发板的FPGA芯片上,在FPGA芯片上进行盲源分离逻辑电路处理后,把信号由开发板送回MATLAB,在MATLAB观测分离效果,实验中间数据通过在FPGA上探针得到。
[0031]本发明提供的基于FPGA芯片的模块化盲源分离逻辑电路整体结构如图1所示,在FPGA芯片的内部由四个逻辑电路模块组成,分别是:数据输入模块,以四路为例,详细结构如图2所示;信号预处理模块,详细结构如图3所示;获取分离矩阵模块,详细结构如图4所示;分离信号输出模块,详细结构如图5所示;四个模块连接在一起,完成盲信号分离,其中,数据输入模块依次连接信号预处理模块、获取分离矩阵模块和分离信号输出模块,信号预处理模块同时连接分离信号输出模块。每个模块由基本数字逻辑电路单元组成。
[0032]图9是实施实例中MATLAB发送到开发板的观测信号。图10是原始信号。图11是经过FPGA开发板盲源分离逻辑电路处理后的原始信号。
[0033]实验中为了测试有效性,设计了源信号,即由以下3路独立源信号组成,实验中取帧长度为256,其中:
-?是chirp信号,幅度为1,归一化的频率从O线性变换到0.5 ;
-?是时域的altes信号,归一化频率从0.45下降为0.1 ;
^是复高斯信号,均值为0,方差为1.0。
[0034]输入到FPGA芯片上的4路信号;T是原始信号Z*与如下的随机矩阵2相乘后产生的,即7=1。
【权利要求】
1.基于FPGA的模块化盲源分离逻辑电路,其特征在于该盲源分离逻辑电路实现方式如下:首先通过硬件描述语言对盲源分离的实现过程进行描述,然后通过EDA工具,把描述内容生成逻辑电路的网表文件,然后把网表文件烧写到FPGA芯片中,使得FPGA芯片成为盲源分离的专用芯片; 本发明提供的基于FPGA芯片的模块化盲源分离逻辑电路整体结构如图1所示,在FPGA芯片的内部由四个逻辑电路模块组成,分别是:数据输入模块、信号预处理模块、获取分离矩阵模块、分离信号输出模块,四个模块连接在一起,完成盲信号分离,其中,数据输入模块依次连接信号预处理模块、获取分离矩阵模块和分离信号输出模块,信号预处理模块同时连接分离信号输出模块,每个模块由基本数字逻辑电路单元组成; 模块1、数据输入模块:包括帧处理单元及局部存储单元; 输入信号后,送到帧处理单元进行处理,帧处理单元自带局部存储单元,通过读写总线连接,该局部存储单元作为外部输入数据的缓存,接收到外部数据后,按先进先出的方式发送给模块2,每发送一帧长度的数据,发送一个同步信号给模块2 ; 模块2、信号预处理模块: 对于被分离信源输入为多路信号的情况,该模块由特征值与特征向量单元、选择单元、开方单元、求倒数单元、多个局部存储单元、每路信号对应的求均值单元以及多路信号共用的矩阵与转置矩阵乘法单元组成; 连接方式如下:每路输入信号连接一个求均值单元,,每路求均值单元通过读写电路共享一个均值局部存储单元,每路求均值单元的输出连接矩阵与转置矩阵乘法单元,矩阵与转置矩阵乘法单元自带局部存储器,在矩阵与转置矩阵乘法单元的局部存储器中进行输入数据的转置,矩阵与转置矩阵乘法单元连接特征值与特征向量单元;特征值与特征向量单元带有局部存储单元,特征值与特征向量单元通过外部同步信号线与选择单元和开方单元并行连接,开方单元通过读写 总线连接特征值与特征向量单元的局部存储单元,求倒数单元的输入通过读写总线连接特征值与特征向量单元的局部存储单元获得,求倒数单元的输出线路与求均值单元的输出线路共同连接在矩阵与转置矩阵乘法单元上,把乘法结果作为输出; 模块3、获取分离矩阵模块: 由数据计算单元、特征值和特征向量单元、矩阵求逆单元、矩阵乘法单元、多个局部存储单元组成; 连接方式如下:模块2同步信号线与乘法结果信号连接模块3的数据计算单元,数据计算单元自带局部存储单元,数据计算单元连接到特征值和特征向量单元,特征值和特征向量单元自带局部存储单元,矩阵求逆单元的输入通过读写总线连接特征值和特征向量单元的局部存储单元得到,矩阵求逆单元的输出线路与数据计算单元的输出线路共同连接到矩阵乘法单元,矩阵乘法单元把计算结果送入模块4 ; 模块4、分离信号输出模块: 该模块主要由矩阵求逆单元,矩阵乘法单元和串行输出单元组成; 连接方式如下:将模块3中的矩阵乘法单元输出线路连接模块4中的矩阵求逆单元,然后把矩阵求逆单元输出线路和模块2输出的线路连接到矩阵乘法单元,该矩阵乘法单元的输出线路连接到串行输出单元,串行输出单元把帧的数据输出方式改为串行输出,盲源分离结束。
2.根据权利要求1所述的基于FPGA的模块化盲源分离逻辑电路,其特征在于所述模块2至模块4中使用的矩阵求逆单元及特征值和特征向量单元的具体结构如下: 1).矩阵求逆单元,该单元主要包括上下三角分解子单元、上下三角求逆子单元和自带局部存储子单元;外部矩阵数据输入该矩阵求逆单元后,首先进入局部存储子单元,该局部存储子单元连接上下三角分解子单元,通过上下三角分解子单元分解矩阵为上三角矩阵和下三角矩阵,并存储在该局部存储子单元中,局部存储单元同时连接上下三角求逆子单元,上下三角求逆子单元通过读写总线把局部存储子单元中的上三角矩阵和下三角矩阵输入,并把计算求逆结果通过总线送到矩阵乘法单元,矩阵乘法单元把上三角矩阵的逆和下三角矩阵的逆相乘输出,得到外部输入矩阵的逆矩阵; 2).特征值和特征向量单元,该单元由加法子单元、乘法子单元、比较子单元、查找子单元、开方子单元、双向局部存储子单元、局部存储子单元、存储转换子单元组成;外部矩阵输入特征值和特征向量单元后,首先存储在双向存储子单元中,局部存储子单元,然后通过读、写、地址总线,把加法子单元、乘法子单元、比较子单元、查找子单元和开方子单元并联在一起,使用Lanczos分解,各子单元通过控制时序的方式,加锁使用读写总线读写双向局部存储子单元中的数据,计算结果通过读写总线发送给存储转换子单元,该单元把计算结果,转换为线性输出。
3.根据权利要求2所述的基于FPGA的模块化盲源分离逻辑电路,其特征在于在所述矩阵求逆单元中使用的上下三角分解子单元和上下三角求逆子单元的具体结构如下: 上下三角分解子单元,包括加法孙单元电路、乘法孙单元、比较孙单元和双向局部存储孙单元,外部输入数据存储在双向局部存储孙单元中,加法孙单元和乘法孙单元都连接在双向局部存储孙单元中,通过读写总线把双向局部存储孙单元中的矩阵化为阶梯型矩阵,即得到该矩阵的上三角矩阵,并在双向局部存储孙单元中记下变换步骤,然后对双向局部存储孙单元中的单位矩阵进行相同的变换,在双向局部存储孙单元中得到下三角矩阵; 上下三角求逆子单元,主要包括加法孙单元、乘法孙单元、双向局部存储孙单元和局部存储孙单元,外部输入数据存储在双向局部存储孙单元中,双向局部存储孙单元把加法孙单元、乘法孙单元连在一起,乘法孙单元自带局部存储单元,计算时由乘法孙单元以此读取双向局部存储孙单元中的行列数据,进行倒数相乘,并把中间结果保存在局部存储孙单元中,使用加法孙单元进行不同行列的数据求和,加法孙单元和乘法孙单元依靠时序,交替进行,完成上下三角求逆,并把结果写在双向局部存储单元中。
【文档编号】H04L25/03GK103746948SQ201310606261
【公开日】2014年4月23日 申请日期:2013年11月22日 优先权日:2013年11月22日
【发明者】王京辉, 赵源超, 陈东升, 唐树刚 申请人:天津理工大学
再多了解一些
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1