一种基于FPGA的复数浮点协方差矩阵实现

发布者:MusicLover123最新更新时间:2010-10-29 来源: 现代电子技术关键字:FPGA  协方差矩阵  复数浮点  FIFO  信号处理 手机看文章 扫描二维码
随时随地手机看文章

  O 引言

  协方差矩阵的计算是信号处理领域的典型运算,是实现多级嵌套维纳滤波器、空间谱估计、相干源个数估计以及仿射不变量模式识别的关键部分,广泛应用于雷达、声呐、数字图像处理等领域。采用FPGA(Field Programmable Gate Array)可以提高该类数字信号处理运算的实时性,是算法工程化的重要环节。但是FPGA不适宜对浮点数的处理,对复杂的不规则计算开发起来也比较困难。故目前国内外协方差运算的FPGA实现都是采用定点运算方式。

  在所有运算都是定点运算的情况下,每次乘法之后数据位宽都要扩大一倍。若相乘后的数据继续做加减运算,为了保证数据不溢出,还必须将数据位宽扩展一位,而协方差矩阵的运算核心就是乘累加单元,随着采样点数的增加,位宽扩展呈线性增加。最终导致FPGA器件资源枯竭,无法实现设计。为了保证算法的实现,必须对中间运算数据进行截断,将每次累加的结果除2(可以通过移位运算来实现),以避免溢出。

  此外,在应用MUSIC算法时,各种计算都是复数运算。为达到减少算法的计算量,提高MUSIC算法处理速度的目的,许多文献致力于研究阵列的结构特点,在保证测角精度的前提下,寻找一种简单而有效的数据预处理方法,将复数矩阵转化为实数矩阵,把复矢量用一个实矢量来代替,从而将复数运算转化为实数运算。

  接收阵元模型可分为任意离散阵、均匀圆弧阵、均匀圆阵和均匀线阵。在实际应用中,比较常见的是均匀线阵和均匀圆阵。每种阵列模型都有各自的特点,加之阵元数目的取值不同,也会导致阵列流型的对称性变化。针对不同的阵元模型和阵元数,数据预处理的方法也会有所不同。

  对于数据预处理的研究,目前已经有了一些比较成熟的算法。对于一个偶数阵元的对称阵列(包括均匀线阵和均匀圆阵),相关研究表明,可利用其对称性,分成两个完全对称的子阵,选择合适的参考点,构造互为共轭对称的方向矩阵,进而构造一个线性变换矩阵,即可达到将复数矩阵转化为实数矩阵的目的。

  对于奇数阵元的均匀线阵,也有相关研究成果表明,通过构造一个酉矩阵,也可以达到数据预处理的目的。

  由于均匀圆阵的阵列流型矩阵不是Vandermonde矩阵,即不具备旋转不变性,因此适用于奇数阵元的均匀线阵的预处理理论不能直接用于奇数阵元的均匀圆阵,需要将圆阵先转换到模式空间——虚拟线阵,而转换需要第一类Bessel函数,不适宜用硬件实现。

  以上研究表明,目前除了奇数阵元的均匀圆阵外,其他常用阵列模型都可以通过预处理的方法将复数运算转换为实数运算。若在某些特定的情况下,必须采用奇数阵元的均匀圆阵。此时,基于复数运算的协方差矩阵的实现就成为一种必然。

  因此,在充分应用FPGA并行处理能力的同时,为了扩展数据处理的动态范围,减少数据溢出机率,避免数据截断所产生的误差,提高协方差矩阵的运算精度以及扩展该运算的通用性。本文以空间谱估计作为研究背景,研究了复数据运算和浮点运算的特点,提出了一种适用于任何阵列流型、任意阵元的基于复数浮点运算的协方差矩阵的FPGA实现方案。[page]

  1 求解复数浮点协方差矩阵

  以11阵元的均匀圆阵为例,其协方差矩阵的求解方案原理框图如图1所示。

协方差矩阵的求解方案原理框图

  1.1 FIFO数据缓存器

  在该设计方案中选择FIFO作为数据存储器,这是因为一旦多路接收机有数据输出,就会启动FIFO进行存储,进而FIFO的不空信号有效(empty=O),触发后续的矩阵运算;否则,运算停止,一切状态清零,FPGA恢复idle(空闲)状态,等待新的快拍采样数据的到来。

  这样可以很方便地控制运算的开始和结束。矩阵运算所需要的同步时钟需要设计一个类似于单稳态触发器的模块。当检测到empty=‘0’时,就触发一个含有121个clk(对于串行方案而言)时钟信号周期长度的高电平。该高电平与主时钟相与便可以得到运算的同步时钟。

  1.2 数据共轭转换

  由于测向阵列的输出矢量X(t)是一个复矢量,对其求协方差矩阵需用阵列输出列矢量X(t)与其共轭转置矢量XH(n)对应相乘。如式(1)所示:

公式

  1.3 定点数到浮点数的转换

  定点计算在硬件上实现简单,计算速度比浮点计算要快,但是表示操作数的动态范围受到限制,浮点数计算硬件实现比较困难;一次计算花费的时间也远大于定点计算的花费,但是其表示的操作数动态范围大,精度高。在本设计中,考虑到系统的数据动态范围和运算精度,选择浮点计算。由于运算数据是直接从接收机I,Q两路通道的A/D变换器的输出获得,为定点数,因此必须要有一个将A/D采样的定点数据转换为浮点数的过程。设计中将16位定点数转换为IEEE 754标准的单精度格式。32位单精度格式如图2所示,最高位为符号位,其后8位为指数e(用移码表示,基数f=2,偏移量为127),余下的23位为尾数m。

32位单精度格式[page]

  1.4 浮点复数乘累加器

  1.4.1 复数乘法器

  假设有两个复数分别为a+jb和c+jd,这两个数的乘积为:

公式

  复数乘法器的工作原理如图3所示,其中所用到的加法、减法和乘法器都是基于浮点的运算。值得一提的是,在实现浮点加减法的时候,可以将尾数连同符号位转化为变形补码形式后再进行加减运算。这样做的目的是方便判断数据是否溢出(变形补码判断溢出的规则是:当两位符号位不同时表示溢出,否则无溢出。无论数据是否溢出,第一位符号位永远代表真正的符号),若溢出,则将尾数右归,指数部分加1,若没有溢出,则将尾数左归(规格化)。浮点乘法相对较简单,对应阶码相加,尾数相乘可以采用定点小数的任何一种乘法运算来完成,只是在限定只取一倍字长时,乘积的若干低位将会丢失,引入误差。

复数乘法器的工作原理

  1.4.2 浮点复数乘累加器

  以11个阵元的圆阵为例,实现串行处理方案的浮点复数乘累加器的原理如图4所示,实部和虚部(双通道)的乘累加器模块工作原理一样。

串行处理方案的浮点复数乘累加器的原理

  121阶数据缓存器实际上就是121个数据锁存器级联形成的一个移位寄存器,初始状态为零。当浮点复数乘法器有输出的时候,启动数据缓存器与之进行加法操作,121个时钟周期以后可以实现一次快拍采样的矩阵累加。累加清零信号由时序控制器给出,当所有的快拍采样点运算都结束之后,数据缓存器输出累加结果(即协方差矩阵的运算结果),同时控制器送出一个清零信号,清零121阶数据缓存器。[page]

  2 仿真结果

  可编程逻辑设计有许多内在规律可循,其中一项就是面积和速度的平衡与互换原则。面积和速度是一对对立统一的矛盾体,要求一个设计同时具备设计面积最小,运行频率最高,这是不现实的。于是基于面积优先原则和速度优先原则,本文分别设计了协方差矩阵的串行处理方案和并行处理方案,并用Altera\stratix\EP1S20F780C7进行板上调试。其调试结果表明,串行处理方案占用的资源是并行处理方案的1/4,但其运算速度却是后者的11倍。

  2.1 串行处理方案仿真结果

  如图5所示,clk为运算的总控制时钟;reset为复位控制信号,高电平有效;rd为读使能信号,低电平有效;wr为写使能信号,低电平有效;wr_clk为写时钟信号,上升沿触发;q_clk为读时钟信号,上升沿触发;ab_re(31:O)和ab_im(31:O)为乘法器输出的实部和虚部。q_t2为矩阵乘累加模块的同步时钟信号;clkll,state(3:O),clkl和state(3:0)是状态机的控制信号,控制矩阵运算规则。

串行处理方案仿真结果

  如图5所示,在100 ns时reset信号有效(即reset=‘1’),所有状态清零。从335~635 ns间,写使能信号有效(wr=‘O’)且有两个写时钟信号的上升沿到来,即向任意一个通道的FIFO中存入两个快拍采样数据,最后输出结果应该有两个矩阵,如图6所示。当FIFO为空时,运算停止,所有状态清零。等待新采样数据的到来。

串行处理方案仿真结果

  图5中,在350 ns时,读使能有效(rd=‘0’)且有一个读时钟信号的上升沿到来,所以empty信号存在短暂的不空(empty=‘O’)状态,捕获到这个信息,便触发单稳态触发器模块,产生具有121个clk时钟周期长度,占空比为120:1的q_clk信号,进行FIFO的读操作。

  在350~535 ns时间段,因为写时钟信号没有到来,所以FIFO为空(empty=‘1’)。从550 ns~24.75 μs时间段读时钟信号没有上升沿到来,整个设计处于第一个矩阵的运算过程中,即运算一个矩阵所需要的时间为24.2 μs。与此同时,第二个数据写入FIFO,empty一直处于不空状态(empty=‘O’)。

  在第一个矩阵运算结束之后,即24.6μs时,系统检测到empty=‘0’,开始读数据并触发第二个矩阵运算的时钟控制信号。如图6所示,在24.6μs时,empty=‘1’。FIFO中的第二个数据被读出,处于空状态。从24.85~49.05μs进入第二个矩阵的运算周期。

  在仿真时,输人数据为16位的定点数(1+j1;O+jO;2+j2;3+j3;4+j4;5+j5,6+j6;7+j7;8+j8;9+j9;A+jA),输出结果为32位的单精度浮点数。选择的主时钟周期为200 ns。在实际调试过程中,整个系统可以在50 MHz主时钟频率下正常工作。[page]

  2.2 并行处理方案仿真结果

  并行方案运算原理与串行方案的一样,只是在时钟控制上有所区别,因为采用了11个浮点复数乘累加器,进行一次矩阵运算,只需要11个时钟周期,如图7,图8所示。在仿真时,设置在写使能信号有效(wr=‘O’)的同时,有3个写时钟信号(wr_clk)的上升沿到来,即分别向22个FIF0中存入3个数据,则输出有3个矩阵。从图7中还可以清楚地看出,运算结果是矩阵的11行数据并行输出,输出结果是一个对称矩阵。

并行处理方案仿真结果

并行处理方案仿真结果

  3 结语

  在分析了目前应用于空间谱估计的协方差矩阵运算在硬件实现上的不足,如定点计算的数据动态范围小,运算精度不高,且只适用于特定阵列模型和的阵元数,不具备通用性。在此基础上提出了基于浮点运算的通用型协方差矩阵的实现方案。仿真结果表明,本文所提出的实现方案采用的是复数乘法运算,最终结果得到的是复共轭对称矩阵,适合利用任意的阵列模型和阵元数得到与之相对应的协方差矩阵。这就拓展了协方差矩阵运算的应用范围,且整个运算过程采用的是浮点运算,提高了整个运算的精度。

关键字:FPGA  协方差矩阵  复数浮点  FIFO  信号处理 引用地址:一种基于FPGA的复数浮点协方差矩阵实现

上一篇:简单而明智的成长,记赛灵思3D技术首发
下一篇:小议屏蔽布线系统中的安装技巧

推荐阅读最新更新时间:2024-05-02 21:11

基于FPGA的SPI自动发送模块技术设计
一、摘要 : SPI 接口应用十分广泛,在很多情况下,人们会用软件模拟的方法来产生SPI 时序或是采用带SPI 功能模块的MCU。但随着可编程逻辑技术的发展,人们往往需要自己设计简单的SPI 发送模块。本文介绍一种基于FPGA 的将并行数据以SPI 串行方式自动发送出去的方法。 二、关键字 : VHDL、FPGA、SPI、串行数据输出选择模块、移位脉冲产生模块、SPI 时钟采集信号和无相移的SPI 基准时钟产生模块、SPI 时钟输出选择模块、8bit SPI 时钟采集生成模块、16bit SPI 时钟采集生成模块、24bit SPI 时钟采集生成模块、8bit 数据移位模块、16bit 数据移位模块、24bit 数据
[工业控制]
基于<font color='red'>FPGA</font>的SPI自动发送模块技术设计
基于FPGA的动力电池管理系统研究与开发
车用动力电池的安全性、使用成本以及续航里程一直是影响电动汽车推广应用的主要因素。在现有电池技术的基础上,一个有效的电池管理系统能对车用动力电池进行保护、延长其使用寿命、提高续航里程并降低其使用成本,是加速电动汽车发展的一项非常关键的技术。电池管理系统的核心荷电状态SOC(State of Charge)估计则是重中之重 。本文利用现场可编程门阵列FPGA改进了现有的模拟多路开关采集电池信息,提高了采集速度,并扩展了采集电池的个数。 1 电动汽车电池组管理系统方案 动力电池组是由400个3.2 V标称电压、容量11 A的单体锂离子电池,采用4并100串的方式组成的动力电池组。电压检测采用分布式检测法,即将电池分为几组,采用多
[嵌入式]
基于<font color='red'>FPGA</font>的动力电池管理系统研究与开发
FPGA和单片机的串行通信接口设计
1 前言 现场可编程逻辑器件(FPGA)在高速采集系统中的应用越来越广,由于FPGA对采集到的数据的处理能力比较差,故需要将其采集到的数据送到其他CPU系统来实现数据的处理功能,这就使FPGA系统与其他CPU系统之间的数据通信提到日程上,得到人们的急切关注。本文介绍利用VHDL语言实现 FPGA与单片机的串口异步通信电路。 整个设计采用模块化的设计思想,可分为四个模块:FPGA数据发送模块,FPGA波特率发生控制模块,FPGA总体接口模块以及单片机数据接收模块。本文着重对FPGA数据发送模块实现进行说明。 2 FPGA数据发送模块的设计 根据RS232 异步串行通信来的帧格式,在FPGA发送模块中采用的每一帧格
[嵌入式]
以IP平台形式将8051微控制器引入FPGA
  一直以来,设计人员为迅速发展的市场如消费电子和汽车等开发产品时,都面对严峻的上市时间压力。但是现在,这些严格的时间要求已经转移至其它许多领域,包括嵌入式控制和工业设计。   毋庸置疑,近年来谈论最多的芯片设计趋势是转向系统级芯片 (SoC) ,透过工艺技术和设计方法的突飞猛进,这种理想得以实现。但是SoC的发展进程仍然缓慢,并且对市场的变化非常敏感。此外,开发SoC本质上是一项成本高昂的高风险事业。极少公司拥有充足资源,能负担将SoC产品发展成为批量生产所需的非经常性工程开支 (NRE),即使公司拥有足够资源也必须仔细考虑取得投资回报的机会。   在业内,迅速将产品推出市场的意愿非常重要。产品销售每推迟一周都会对营业额造成损失
[单片机]
以IP平台形式将8051微控制器引入<font color='red'>FPGA</font>
LabVIEW FPGA代码模块设计(IP核)
概览 对于利用LabVIEW FPGA实现RIO目标平台上的定制硬件的工程师与开发人员,他们可以很容易地利用所推荐的组件设计构建适合其应用的、可复用且可扩展的代码模块。基于已经验证的设计进行代码模块开发,将使现有IP在未来应用中得到更好的复用,也可以使在不同开发人员和内部组织之间进行共享和交换的代码更好服用。 目录 1.代码模块 2.可复用代码——知识产权 3.I/O与资源的独立性 4.定时独立性 5.框图独立性 6.文档、测试与范例 7.总结 代码模块 任一项软件开发工作均包括函数、子例程、对象和代码模块,以及其他较大架构的基础构建模块的开发。当设计一个应用时,各个函数与操作均被识别和实现。然后,这些构建模块被组合与集成以形
[测试测量]
LabVIEW <font color='red'>FPGA</font>代码模块设计(IP核)
MirrorBit闪存可与Spartan-6评估和开发工具兼容
Spansion公司今天宣布:其MirrorBit® 闪存现已可作为经赛灵思(Xilinx)Spartan®-6 FPGA系列验证的配置解决方案提供。Spansion提供了一个MirrorBit Multi-I/O闪存附加模块,它与赛灵思的Spartan-6评估和开发工具兼容,使得设计人员能够便捷地评估和测试各种配置选项。这些组合的解决方案可以通过Avnet Electronics Marketing获取,可用于开发一系列消费类、信息娱乐、视频和其它对成本和功耗敏感的应用。 Spansion公司嵌入式解决方案部门执行副总裁Tom Eby表示:“Spansion专注于为客户提供合适的开发工具,无论是通过我们自己的系统和
[嵌入式]
Altera 20nm FPGA:创新的3D集成、收发器与可变精度DSP
    近期,Altera CTO Misha Burich时隔5个月再度访华,带来了最新Altera基于20nm的关键消息。 创新的3D集成 和赛灵思不同的是,Altera在28nm时代并没有宣传3D或者2.5D技术,因此原本在代工厂上与TSMC合作更长时间的Altera并没有在创新工艺上占据先机。 所以在下一代20nm FPGA 上,Altera必须占据先机。 Misha Burich表示,“20nm 3D IC工艺可以把不同的die放在同样的一个硅晶圆上,实现异构的FPGA,比如在FPGA上加上光模块,HardCopy ASIC或者其他存储器等,从而实现不同类的产品。” 谈到两家3D技术的区别时,
[嵌入式]
深入了解汽车系统级芯片SoC:指令集与运算架构
一、指令集 图片来源:互联网 依据指令长度的不同,指令系统可分为复杂指令系统(Complex Instruction Set Computer,简称CISC )、精简指令系统(Reduced Instruction Set Computer,简称 RISC)和超长指令字(Very Long Instruction Word,简称VLIW)指令集三种。 CISC中的指令长度可变;RISC中的指令长度比较固定;VLIW本质上来讲是多条同时执行的指令的组合,其“同时执行”的特征由编译器指定,无须硬件进行判断。超标量处理器是动态调度,由硬件发现指令级并行机会并负责正确调度,VLIW是静态调度,由编译器发现指令级并行机会并负
[汽车电子]
深入了解汽车系统级芯片SoC:指令集与运算架构
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved