FPGA信号处理算法

2024-07-10

FPGA信号处理算法(通用7篇)

FPGA信号处理算法 篇1

FPGA即现场可编程门阵列, 它和数字信号处理领域的霸主地位的DSP相比, FPGA由于能耗、成本、性能的限制, 一直没有受到重视, 只是在一些外围部分中使用。进入到21世纪, 随着新型的纳米技术的使用, FPGA在功耗、性能、成本等方面有了显著的改善, 具备在核心中使用的条件;在另一方面来看, 3G和互联网时代的到来, 要求处理的数字信号量越来越大, 并且数字信号的复杂性也将大大增加, 要求大量的并行处理。而DSP在做并行处理时并不如FPGA要强, 所以, 这就为能够处理大量的并行处理的FPGA带来了非常好的发展机遇。

本文在此基础之上, 研究了基于FPGA的快速傅里叶变换、数字滤波、相关运算等数字信号的高效处理。首先对体系架构发展现状进行了阐述;然后, 研究了两种具有相同结构的数字滤波和相关运算的特征, 采取了有无乘法器的两种结构实现乘累加运算。无乘法器结构采用分布算法, 将复杂的乘法运算转化为易于实现的FPGA的查表和位移累加操作, 明显的提高了运算效率;最后, 完成了相控阵雷达系统的FFT FPGA算法实现, 实验结果表明, 本次试验均达到了设计要求。

一、体系架构发展现状

对于体系架构标准而言, 是指对设备机械尺寸、电气标准、互联结构等一系列的规范。而对于现阶段所用到的雷达信号处理机而言, 主要采用主要采用采用CPCI与VME两种架构方式, 它们所采用的规范分别为PICMIG与VITA组织的规范。

但是随着处理数据量的不断增加增加, CPCI与VME这两种架构的总线带宽已不能满足现阶段实际应用需求。为此, PICMIG和VITA组织各自推出了CPCI Express和VPX总线标准, 在一定程度上打破了体系结构与带宽的限制。对于CPCI Express架构而言, 支持通用操作系统与热插拔技术, 具有良好的软件适应性特点;对于VPX架构而言, 拥有坚固的机械结构与良好的冷却能力, 在现阶段对高速传输要求要求不断提升的形势下有着良好的应用前景。

二、FPGA的设计基础2.1FPGA的基本构成

现在主要的生产FPGA的公司有四家, 他们分别是Xilinx、Altera、Lattice、以及Actel。但是这四家生产的FPGA各有特点。主要工艺有SRAM和FLASH这两种。

(1) 可编程输入输出单元:输入输出单元简称I/O单元, I/O单元特供了连接外接器件的引脚和内部逻辑阵列之间的连接。I/O单元主要由输入触发器、输入缓冲器、输出触发和输出缓冲器组成。 (2) 基本可编程逻辑单元:可编程逻辑单元是FPGA的主要结构, 是实现逻辑功能的结构, 可编程逻辑单元主要由触发器和查找表组成。 (3) 嵌入式块RAM:RAM可用作单端口和双端口, 这极大地扩展了FPGA的应用范围和灵活性。 (4) 布线资源:各种长度的连线和一些可编程连接开关, 他们将各个基本可编程和输入与输出连接在一起, 构成了各种各样的复杂结构。

2.2关于FPGA的设计流程

FPGA的设计流程主要由以下几部分组成:设计输入、综合设计、适配、仿真、编程下载。

(1) 设计输入:以一定的方式将电路系统输入给EDA工具, 现在最为常用的两种输入方式为图形法和文本输入法。 (2) 综合设计:总额输入是指把HDL语言、原理图等设计输入翻译成由与、或、非、触发器、RAM等元器件的连接, 并且根据最终的目标要求将生成的连接进行优化, 输出能够使FPGA实现的标准的网表文件。 (3) 适配:配置的用途是将生成好的网表文件配置到指定的目标期间之中, 使之产生最终的的下载文件。 (4) 仿真:将完成布局线后的时延信息反标到网表中所进行的仿真, 也叫做时序仿真, 简称后仿真。 (5) 编程下载:到了设计的最后阶段便要进行在线调试或者是将生成的文件写入芯片中进行测试。

三、高效FFT处理器的FPGA设计3.1FFT实现的硬件结构

(1) 递归结构。递归结构简单讲就是顺序结构, 采用递归结构的优点是系统占用的资源比较少, 简单控制方便;其缺点是运行速度比较慢, 很难满足实时信号的处理要求。

(2) 级联结构。简单的递归结构使用一次蝶形运算单元, 占用的资源比较少, 但是处理速度慢。级联结构根据不同的级划分出不同的蝶形运算单元, 这样每一级就占用一次蝶形单元, 没以及完成固定的数据处理操作, 然后传递给下一级的蝶形运算单元, 以流水线的方式进行处理。这样的结构对于连续的实时信后处理的速度大大提升。

(3) 阵列结构。阵列结构采用的是多个蝶形单元的并列放置来提高FFT的点数, 但是由于这种方法会成倍的增加蝶形单元的数量, 无形中也就增加了资源的消耗。

3.2存储单元结构

为了达到连续数据流的目的, 在各级蝶形运算单元中采用了双口RAM对计算的中间结果设计, 实补和虚部的容量一共是单个蝶形运算原件的两倍, 存储单元还包括旋转因子的存储, 每一级蝶形运算单元包括两块ROM旋转因子的实部和虚部。

3.3地址产生单元

FFT在运算过程中需要用到大量的RAM和ROM, 如何能够正确的取出数据及存储数据是一个非常重要的问题。当FFT运算时会产生3组地址, 蝶形运算输入数据的地址、蝶形运算结果输入下一级的地址、以及运算结束后最终的输出地址。由于采用的是同位运算, 所以读地址也就是写地址, 延迟时间即为一次蝶形运算的时间。

3.4FFT处理器的性能分析

提高FFT处理器的性能主要的方法就是采用并行处理和流水线技术。在采用流水线技术时, 根据FFT的级联结构的特点采用了多级流水线这一解决方案, 使得整个信号序列的运算时间仅为一级蝶形单元的运算时间。在提高并行度方面, 并行递归结构设计了能够同时产生四个RAM地址和3个ROM地址的地址发生器, 提高了处理器的运算效率。

四、FPGA对于滤波及相关运算的实现4.1基于MAC的滤波器设计

采用MAC方法就是直接调用乘累加单元进行计算, 而FPGA内置乘法器, 所以FPGA对于此非常适合该功能。基于采样率和阶数的要求, 可以采用一个或多个乘法器。采用多个乘法器可以提高运算效率降低运算成本, 但需要消耗较多的资源。

N阶滤波器需要用到前 (N-1) 个数据, 每当采集一个新数据, 将需要所有的数据都往前移一位, 把老数据用新数据代替, 在FPGA中可以使用有多个D触发器组成的位移器来寄存。该方法的优点是灵活, 缺点是占用大量的资源。

4.2用FPGA来实现相关的运算

(1) 在时域内的相关运算。相关运算是数字信号处理的基本处理方法, 实现相关运算的方法有时域与频域两种。时域内的相关处理相对来说比较简单, 但对于系统的性能要求比较高, 相关运算和数字滤波都是基于成累加, 所以设计滤波的两种方法都是用于相关运算的设计。一种是用查表的形式实现运算, 该方法实现相关运算时与点数没有关系, 缺点是占用大量的资源。另一种是采用成累加的方法, 在用这种方法时可以考虑采用FPGA并行运算的特点, 用多个乘累加单元进行并行运算, 这样FPGA可以工作在一个时钟频率较低的环境中。

(2) 在频域内的相关运算。时域内的相关运算的特点是实现简单, 实时性强。但当先关运算的点数较大时, 时域内的相关运算量会十分庞大, 很难满足实时性的要求。频域内的相关运算采用了FFT的相关方法, 可以大大的减少运算量。所采用的方法是时域相关法。根据傅里叶变化规律、时卷积定理, 可以采用快速傅里叶变换和反变换在频域内实现, 称为快速频域卷积法。

五、基于FPGA的相控阵雷达系统

各种各样的应用背景要求现代的雷达不仅局限于对目标的探测, 更要给出被探测物的方位、速度、形状等参数, 这就对现代雷达的性能提出了很高的要求。

为了提高雷达系统的性能, 可以采取多种高速串行结合的传输方式来提高雷达的性能, FPGA技术和PowerPC技术相结合的处理结构单元, 利用高速差分连接器技术实现苛刻环境下的超大功率、超大带宽传输。

在雷达信号处理领域, 目前主要处理单元有FPGA和CPU, 随着半导体的迅猛发展, FPGA凭借其天然的可编性, 大数据处理量, 大有取代DSP硬核和高速串行传输技术的势头, 同时FPGA支持多种通信协议和电平标准, 在未来的雷达信号处理系统中可以扮演转换桥的角色, 采用CPU与FPGA结合的处理结构单元使雷达系统后的更灵活的处理能力。

六、结语

本文以FPGA在数字信号处理的背景下, 讨论了高效FFT的实现、相关运算与滤波器的实现、图像声呐的实现等FPGA实现方法的具体事项。综合验证了FPGA在这些领域的应用, 结果都较为理想, 为以后FPGA的更广泛的发展提供一点粗略的经验。

摘要:随着现代工业的发展, 人们对数字信号的处理要求越来越高, 特别是对数字信号的实时性要求提出很高的要求, 但是当现有的信号处理器都无法达到所需要的速度时, 首先想到的解决办法是增加处理器的数目, 或者是采取门阵列的方式。另一方面, 随着可编程逻辑器件技术的发展, 拥有特殊并行处理能力的现场可编程门阵列在不管是体积、性能还是成本等方面都显示出了无与伦比的优势。本文就基于FPGA的数字信号处理算法研究与高效实现问题, 进行了浅要探讨。

关键词:FPGA的数字信号处理,算法研究,高效实现

参考文献

[1]行韶谞, 段衍东, 韩涛.基于FPGA的简易数字信号传输性能分析系统[J].气象水文海洋仪器, 2012, 29 (3) :41-46.

[2]彭宇, 姜红兰, 杨智明等.基于DSP和FPGA的通用数字信号处理系统设计[J].国外电子测量技术, 2013, (1) :17-21.

[3]廖聪裕, 鲁锦涛, 苏建如.基于FPGA的数字信号传输性能分析仪[J].河北农机, 2012, (2) :59-60.

[4]霍志, 谢启友, 郭靖等.一种基于FPGA的雷达数字信号处理机设计与实现[J].现代电子技术, 2012, 35 (1) :13-16.

FPGA信号处理算法 篇2

1.1 数字图像处理原理简介

图像处理技术是本世纪信息科学方面成长最迅速的方向之一, 数字图像处理的技术具有实际的研究价值。数字图像处理技术是指利用图像信号转化为数字信号并进行数字化处理这一手段把输入图像转换成具有所希望特征的另一幅图像的过程, 通过转化, 使得图像的信息数字化, 可计算化, 协调适应现在的各种数字化系统。近年来, 随着图像传感器趋于高集成度和低成本以及数字硬件的迅速发展, 高质量、高速度、高实时性的数字图像处理技术越来越受到欢迎。专用集成电路ASIC和数字信号处理器DSP, 在两种方面突破研究, 一是改变图像处理算法, 简化算法提高处理速度;二是改变实现算法的手段。DSP处理速度较之前的数字芯片有了大幅改进, 但其体系仍是串行指令系统, 其固定算法仍不能满足众多算法的需要。

1.2 现场可编程门阵列 (FPGA) 器件技术

现在较为流行的一种半定制的数字芯片是现场可编程门阵列 (FPGA) 器件, 它是一种高密度可编程逻辑器件, 由大量逻辑宏单元构成, 通过各种程序参数的配置, 能够发挥这些逻辑单元的各自效果, 组合出期望的整体效果和功能, 这些配置数据存放在片内的SRAM中或者是片外的EPROM或其他存储体中, 设计者可以现场修改器件的逻辑顺序, 而且静态编程和动态系统重置功能也得到了充分的发挥也应用, 基于组合逻辑下的功能让硬件模块可以像软件代码一样方便修改调试。

2 基于FPGA的数字图像处理算法研究

2.1 实时图像处理算法

实时图像处理系统和图像处理的主要算法有4类:图像数据的预处理, 图像智能识别, 对象检测和运动对象检测。在实时图像处理系统的后台处理中, 比分析环境简单、静态图像难度要更具有复杂性, 如在数字图像信号的传送过程, 中间过程传感器和传输信道的噪声的频繁产生, 这让暂未得到处理的原始图像信号变的更为难以分析, 而且本身存在一定程度的噪声。一般图像信号的锐化技术处理也将引入噪声, 有时会加强原始图像的噪声。因此, 有必要在图像分析处理以前以及过程中对图像的噪声进行滤除, 并对图像特征进行加强, 消除噪声和增强图像这两大关键步骤即为数字信号图像的预处理过程。

2.2 图像空域平滑算法

图像平滑处理的的主要目的是为了降低噪音干扰, 目前主流的两种算法是的空间域平均算法以及中值滤波算法。对于含有噪声的原始图像的每个像素都采取了对应的邻域, 将计算出的平均值作为平均空间域中图像像素值进行图像处理。空间域平均算法对于高斯噪声消噪效果较好, 但处理脉冲噪声降噪效果很差。中值滤波的实质是一种非线性处理方法, 主要的原理应用了顺序统计思路, 这种方法的原理是在第一步骤中赋予一个像素作为邻域的中心, 选择方形邻域后, 第二步骤就是对范围内各像素灰度值进行排序处理, 排序之后获得数列的中间值, 此中间修正值被记为中心像素的灰度值, 在实际应用中个, 中值滤波算法消除脉冲噪声具有更好的效果。

2.3 图像空域锐化算法

图像锐化的主要目的是使原图像轮廓模糊或者显示边缘不明显的变得清晰, 突出细节。进行锐化处理的前提基础是:原始图像必须具有有较高的信噪比, 若没有较高信噪比, 经过图像锐化处理后, 图像信噪比会大大降低, 这非常不利于图像的清晰显示处理。通常的做法是先去除或降低噪声, 使得图像具有更高的信噪比后, 再进行后期的锐化处理。

图像锐化处理目前主流有两种方法:高通滤波法和微分法。微分法属于图像空域锐化, 目前常用的两种方法是梯度锐化和拉普拉斯锐化。

2.3.1 梯度锐化

梯度锐化原则:图像变化速度值小的对应于一个较小的梯度, 整体会显得比较暗。因此, 梯度锐化的常规思路是利用门限方法来判定, 从而进行梯度锐化优化, 也就是先赋予一个预定的阈值, 如果该节点的梯度小于阈值时, 原始灰度被保持恒定;若大于阈值时, 在这一点上的灰度校正值可以用微分法处理得到。

2.3.2 拉普拉斯运算

拉普拉斯运算是偏导数运算的线性组合, 拉普拉斯算子是一种各向同性的微分算子, 其特性包括旋转不变性。拉普拉斯运算完全可以转换成模板运算, 而且对图像中的孤立点和短点反应较为敏感, 比如在较暗的图像中出现的个别亮点, 这些亮点处灰度发生跳变, 通过拉普拉斯运算将会使这些亮点亮度增强, 这一效果常用于边缘检测。当然, 拉普拉斯运算同梯度锐化一样, 在增强图像的同时会增强噪声, 因此在锐化前可以先进行图像平滑处理。

3 总结

本文以基于FPGA的高速图像处理算法为研究主体, 对图像处理中技术的流水线实现、图像空域平滑算法、图像空域锐化算法进行对比分析。图像平滑算法减少噪声的效果要更加优化, 平滑算法的中值滤波算法在消除脉冲噪声中效果更为突出。空间域平均算法主要对高斯噪声的消噪效果较好, 对脉冲噪声消噪效果一般。图像空域锐化算法可以是原本边缘模糊的图像清晰化, 前提需要有较高信噪比, 所以一般是先进行去除噪声, 提高信噪比之后进行锐化处理, 锐化算法中的梯度锐化、拉普拉斯运算算法都在基于FPGA的数字图像处理的系统算法中效果明显。

摘要:近年来, 图像处理的信息量越来越大, 原先的传统图像处理技术已不能满足速度、质量等方面的需求, 为了应对这种情况, 利用基于FPGA技术的图像处理系统, 可以提高处理速度, 提高效率、质量。本文先简单介绍了数字图像处理技术的发展, 包括从基于通用计算机的软件处理发展到专用集成电路 (ASIC) , 基于模拟信号转换成数字信号的专用处理器, 以及现在流行的可编程门阵列 (FPGA) , 然后研究了基于FPGA可实现的基本的数字图像处理算法以及动态视频图像处理算法。

关键词:FPGA,图像处理,实时高速,平滑算法

参考文献

[1]李冬.基于FPGA的数字图像处理的研究[D].安徽理工大学硕士学位论文, 2009.

FPGA信号处理算法 篇3

关键词:符号速率估计,BPSK,高速跳频,FPGA

0 引言

确定目标信号的符号速率是无线侦收解调的前提条件之一。在软件无线电、电子对抗和无线电侦察等领域都是一项重要的技术。

在软件无线电领域中, 无线电台具有多频段、多功能、多体制特性, 使得收信方在没有事先约定的情况下无法在特定调制方式下守候接收。因此需要首先对接收信号进行调制信号参数的估计, 进而实时重构软件无线电接收机, 实现自动接收。而符号速率是数字调制方式的重要参数, 符号速率的准确估计对于定时同步、解调有重要意义。

在实际应用中发现对于高速跳频、短时突发等信号, 可获得的码元个数有限, 这就给符号速率估计, 特别是低符号速率的实时估计增加了难度。因此需要对符号速率估计的方法作些改进。在用FPGA硬件实现算法的方案中, 则需要综合考虑性能、实时性和硬件资源的限制等因素。

1 算法分析

一种传统的符号速率估计方法是通过直接提取基带信号包络中的重复频率来获得调制信号的符号速率值。

BPSK调制信号可以表示为:

其中,

式中, Ts为符号周期, 符号速率rs=1/Ts, fc为载波频率, g (t) 是宽度为Ts的基带脉冲, θc为载波初相, θk等于0或π。

BPSK调制信号经过正交下变频后成为基带I/Q两路信号。

式中, fe为剩余载波, θe为载波与本振的相差。通过计算瞬时幅度可以得到BPSK信号的包络:

由公式 (5) 可以看出, BPSK调制信号的包络是由基带脉冲组成的以Ts为周期的周期函数。当采样点足够多时, 随着采样数据中包含的符号数增加, 基带信号包络会呈现出周期性, 而重复频率就等于符号速率, 这是由信息源中0和1的等概率出现所导致的。

基于这样的一种特性, 可以对包络作FFT, FFT结果中最大谱线的位置就应等于包络的重复频率, 即BPSK调制信号的符号速率。

文献[2]对这一方法进行了理论分析。对循环平稳信号施加非线性变换不仅可以产生符号速率谱线, 还会转变出不利于谱线提取的背景噪声, 且噪声能量主要分布在低频部分。

在对短数据条件下的BPSK信号作符号速率估计的工程实践中也发现同样的问题。由于采集到的符号数较少, 基带信号包络的频谱中低频噪声成分甚至高于符号速率谱线幅度, 导致估计错误。

对出现导致符号速率估计错误的频谱图进行分析后可以看出, 幅度高于符号速率谱线的噪声分量全部集中在低于符号速率的频率区域。而且在邻近符号速率的范围内噪声分量明显较低。因此仅从视觉上仍然可以辨别出符号速率谱线的位置。

文献[2]利用以上的分析结果对算法进行改进。提供了算法改进公式并进行仿真, 对性能改善效果作了评估。噪声抑制算法用公式表示为:

式中, a (k) 为原始幅度谱, a′ (k) 为经过处理的幅度谱, w为窗口宽度, L为FFT点数。

a′ (k) 中直接求取最大值点就可以得到符号速率谱线位置。

Matlab仿真结果显示数据观察长度越短, 性能改善越明显。当N=1 024时, 性能改善约7.5 dB, 而N=512时, 性能改善不低于11 dB。

2 设计方案

根据算法分析结果, 符号速率估计首先需要对中频采样数据进行正交数字下变频, 变换成为I/Q两路基带调制信号的数据流。再从中获得包络信息, 符号速率谱线就存在于包络的频谱中。因此整个符号速率估计的设计方案框图如图1所示。

在图1中首先对中频BPSK调制信号进行采样, 将采样结果送入FPGA进行符号速率估计。

数字下变频包括数字正交混频和滤波抽取两部分。正交混频的目的是将实信号变换成为解析信号, 可以方便地从中获取瞬时幅度。在目标信号符号速率种类较多的情况下, 采样信号中还包含信号带宽以外的噪声分量, 需要进行滤波, 滤除带外噪声。

从数学公式来看, 计算瞬时幅度的方法就是求取I/Q两路信号的平方根。计算瞬时幅度产生的数据流就形成了BPSK基带信号的包络。从算法分析中可以得知, 该包络中就包含了符号速率的频率分量。因此对包络作FFT处理, 获得幅度谱, 在符号数足够多的情况下, 幅度谱中最高的一根谱线所在的位置就对应于符号速率。

对于符号数较少的情况, 幅度谱中存在色噪声, 且色噪声的幅度可能高于真实符号速率位置处的谱线高度, 直接用寻找最大值的方法无法正确估计出符号速率, 需要对幅度谱作噪声抑制的处理。根据色噪声的特点, 噪声抑制的方法就是对幅度谱中的每个点除以其右侧若干个点的平均值, 形成抑制后的频谱图, 再利用寻找最大值的方法就可以得到正确的符号速率值。

3设计实现

3.1数字正交下变频

首先利用查表法产生数字本振, 即事先根据各个正/余弦波的相位计算好相应的正/余弦值, 并按照角度作为地址在FPGA内部存储器中对其进行寻址, 构成一个幅度/相位转换电路, 通过该转换电路进行查表获得正/余弦样本。中频采样实信号在FPGA内部通过硬件乘法器同时与2个正交的数字本振相乘后就产生了正交混频数据流。数字正交下变频的原理框图如图2所示。

为了适应不同符号速率, 还需要对混频后的数据进行多级滤波抽取。根据前端估计出来的信号带宽参数, 选择最符合该信号带宽的滤波器节点作为输出。滤波器可以采用IP核来实现, 滤波器系数用MATLAB软件中数字处理工具就可以产生。

在整个正交下变频模块中, 正交本振序列的产生、数字混频以及滤波抽取都是数学运算的结果, 且工作在同一时钟域内, 因此结果的正交性是完全可以得到保证的。但由于是定点运算, 无论是混频还是滤波, 都会使数据位宽增加。为了既确保运算精度, 又能尽量减少资源占用, 需要进行仿真以截取合适的位宽。

3.2幅度计算

在设计方案中无论是计算正交下变频结果的瞬时幅度, 还是计算FFT结果的幅度谱, 都涉及到开平方这样的超越函数计算, 直接用乘加的方法不能直接得到。在FPGA内部通常采用坐标旋转数字计算机算法 (CORDIC) 。CORDIC在FPGA内有成熟的IP核可以利用, 精度高, 其缺点是在流水线模式下时延较大, 但对于数据流处理选择CORDIC没有影响, 因此选择CORDIC方法更为便捷。

3.3FFT处理

FFT处理在FPGA中有IP核可以利用, 但需要对FFT的点数和模式进行设置。FFT的点数可以根据符号速率估计的精度要求进行选择。而由于实时处理的需要, FFT的模式需要选择块浮点流水线 (PIPELINE) 模式FFT。在这种模式下, 能够以固定的时延计算出每一帧输入数据的频谱, 可以满足实时性的要求, 缺点是占用资源较大。因此可以在满足符号速率估计精度的前提下尽量减小FFT点数, 以减少FPGA资源的占用。在低符号速率下, 经滤波抽取后在一跳的时间内积累点数不足设置的FFT点数时, 需要在有效数据后补0处理。

FFT模块输出结果由实部、虚部和指数项组成, 由于后面的估计处理只需要得到幅度谱, 可以利用前面的CORDIC模块计算幅度。虽然FFT输出结果为块浮点格式, 结果还包含指数项, 但对于一帧数据而言, 这个指数项是固定的, 对于后面的寻找符号速率频率成分比较大小而言没有影响, 所以在计算幅度时不必考虑指数项。此外, 对于后面的处理, 用求平方和来代替求幅度从MATLAB仿真结果来看都是一样的效果, 但平方和后数据位宽加倍, 后面的处理需要占用更多的资源, 所以仍然可以采用CORDIC方法。

3.4噪声抑制

首先设置一个固定点数的窗口, 对窗口内谱线幅度值取平均, 再将靠近滑动窗左侧谱线除以该均值。让该窗口在频谱图中从高频向低频逐点滑动, 从而形成一个经过处理后的频谱。在具体实现上, 以16点宽度的窗口为例, 首先需要将FFT运算结果存储双口缓存中。FFT模块输出数据同时也将对应点序号同步输出, 将该序号值作出与求幅度模块相同的时延后就与幅度谱数据一一对应起来, 以该序号为地址存入缓存中。由于频谱的正负对称性, 序号大于一半点数的数据丢弃不用, 这样就得到了存储着正频率部分幅度谱数据的缓存。设置一个初始值为一半点数的递减计数器, 以该计数器为地址从缓存中读出幅度谱数据, 同时统计出前16个点的平均值, 用当前值除以该平均值, 把结果存入另一个缓存当中。计数器归0后就得到存有处理后的频谱结果的缓存。

由于处理中用到除法, 而直接作除法运算在FPGA中难以实现, 在具体实现上有2种方法可以作近似处理。一种方法是用查表法将幅度谱取对数, 把除法转换成减法;另一种方法是用右移位把被除数转换成与之最接近的2的整数次幂, 实现近似除法。显然前一种方法的精确度更高, 但实现的复杂度更大。

3.5最大值检测

最大值检测在FPGA内部实现相对较为简单, 与软件方法较为类似。由于在噪声抑制模块中已经将噪声抑制处理后的数据缓存于内部双口RAM, 依次读出并比较即可得到最大值。

3.6延时控制

由于整个符号速率估计需要较大的时延, 为了将采样结果与符号速率估计结果对齐, 需要将采样数据存入一个足够大的FIFO中。当符号速率估计完成了一帧数据的处理后, 在最大值检测模块输出最终结果, 同时利用输出脉冲触发启动FIFO的读操作, 从而实现了中频原始数据与符号速率的同步输出。

4 实际效果

图3是噪声抑制前后的频谱图, 数据来自实际信号经FPGA处理的中间结果, 在FPGA内部缓存后经监控读取获得。

从图3可以看出在噪声抑制处理之前, 符号速率谱线与左侧色噪声包中的谱线相比并不是最大值, 用最大值检测的方法无法获得正确的符号速率估计结果。但经过噪声抑制后, 符号速率所在位置的谱线成为频谱中的最大值, 用最大值检测模块就可以得到正确的估计结果。

5结束语

设计中采用的器件是Xilinx公司的Virtex5系列XC5S95T-2型FPGA芯片, 算法实现的工作频率大于200 MHz, 设计充分考虑了FPGA实现的可行性以及对实时性、实现精度和资源占用的要求。经实验证明, 能够成功实现在中等信噪比下、码元个数为64个以上的符号速率的估计, 已应用于某无线侦察系统中。

参考文献

[1]管吉兴.FFT的FPGA实现[J].无线电工程, 2005, 35 (2) :43-46.

[2]张晓勇, 罗来源, 罗武忠.一种基于瞬时幅度的PSK信号符号速率估计方法[J].信号处理, 2008, 24 (2) :316-319.

FPGA信号处理算法 篇4

图像匹配技术是找出参考图与模板图之间的关系,并利用这种关系进行配准的技术。它广泛地用于各种领域,比如目标定位、三维重建、资源分析、运动估计等。由于在实际情况中,参考图会受到阳光、天气、遮挡等影响,并且由于模板图与参考图的拍摄角度、时间和距离有所不同导致图像平移、缩放和旋转等,从而影响着最终的匹配精度。

最近几年,在图像匹配技术中很多研究者通过大量的努力试图解决图像匹配的种种问题,提出了各种算法解决匹配精度不高的问题。2004年,David Lowe提出了一种基于特征点尺度不变的算法——SIFT(Scale Invanant Feature Transform)算法[1],有效地决场景平移、旋转、缩放等问题,而被广泛应用。然而,算法仍存在一些缺点,比如SIFT算法计算量大,很难达到实时性的要求。

本文的目的就是对SIFT算法进行优化,将优化后的SIFT算法通过FPGA实现,来满足实时性的要求,使得SIFT算法可以运用到实时性要求高的领域。通过深入了解SIFT算法和FPGA并行处理特性,对SIFT算法进行改进,使得改进后的算法能够适应FPGA并行处理,并且减少对存储器资源的消耗[2]。主要对SIFT算法做了两点改进:1)为了减少算法的计算量,采用2组图像,每组图像有4种尺度的高斯金字塔;2)特征描述符的维数由原来算法的128维减少至72维。

2 基于图像匹配SIFT算法改进

基于图像匹配SIFT算法是在尺度空间上保持不变性的图像局部特征描述算法,能够有效解决图像放射变换、缩放以及旋转等问题。SIFT算法主要包含5个步骤:1) 构建高斯金字塔;2) 建立DoG(Difference of Gaussian)尺度空间,寻找特征点;3) 确定特征点的梯度方向和大小;4) 构建特征描述符;5) 特征点匹配[1]。

由于SIFT算法中用软件实现提取特征点与FPGA实现是不同的,所以本文对基于图像匹配SIFT算法进行改进,主要是为了改进后的算法不仅能够在FPGA上很好地运行和达到实时性要求,而且还要减少存储资源的消耗。

2.1 高斯金字塔的简化

建立高斯金字塔是为了建立DoG尺度空间。在SIFT算法中,通过不同尺度的高斯函数与原图像卷积产生各种尺度的高斯图像[3]。

L(x,y,σ)=G(x,y,σ)×I(x,y) (1)

undefined

式中:G(x,y,σ)为σ尺度的高斯函数;I(x,y)为输入图像;L(x,y,σ)为σ尺度空间。

原始SIFT算法对高斯金字塔的创建一般会建立8组以上,并且每组有3~5种尺度。组数和层数的选择直接影响整个算法的精准性和复杂程度。为了使SIFT算法能够在FPGA上实现,因此对高斯金字塔进行适当的简化。本文采取图像组数为2组,每组采用4个尺度,有效地降低了算法的计算量。

原始图像采用320×240的图像,再通过隔点抽取产生另一组160×120图像。通过后期的测试,减少组数之后,并没有很大程度上减少匹配性能,但是有效地减少了计算量,节约了硬件资源。为了并行构造高斯金字塔,本文采用每组及其每个尺度的图像都是来自与原始图像的直接输入,且每组4层中对应的高斯核参数分别是σ1=1.1,σ2=1.3,σ3=1.6,σ4=2.0。

2.2 建立DoG尺度空间和提取特征点

尺度空间(Scales Pace)[4]表示法是多尺度表示的一种有效方法,它的尺度参数是连续的,并且所有尺度的空间采样点个数是相同的(实际上,一个尺度上得到的就是一幅图像,尺度空间采样点也就是该尺度上图像的像素点)。

利用生成的高斯金字塔,用其相邻的尺度空间图像相减得到一组DoG图像D(x,y,σ)[4]。为了简化DoG图像数据,将DoG图像的像素点都除以1 024,见式(3)和图1。这样处理主要是为了在不减少匹配性能的基础上,减少对存储器资源的消耗,并且这样处理之后容易在FPGA上移植。

undefined

在DoG尺度空间中,其中最小值点或者最大值点为特征点。在D(x,y,σ)的图像中的每个像素点将会与上下2幅图像的18个像素点和本尺度空间8个相邻点进行比较,总过需要比较26个点[5]。得出局部极值点坐标和尺度即为特征点的坐标和尺度。为了能够在硬件系统中能够得以运用,高斯卷积核的参数由浮点转化为定点。由于DoG算子会产生较强的边缘相应,需要去除不稳定的边缘相应点。此外,还需要过滤低对比度特征点,以增强匹配稳定性、提高抗噪声能力。同时也减少特征点的数量,从而减少了后期处理特征点的计算量。

2.3 确定特征点的梯度方向和大小

为了使特征描述符具有更好的稳定性,通过计算领域像素的梯度方向为关键点分配主方向,一个像素的梯度方向是8个方向的其中一个,梯度模值m(x,y)和梯度方向θ(x,y)定义为[6]

undefined

θ(x,y)=arctan(L(x,y+1)-

L(x,y-1))/(L(x+1,y)-L(x-1,y)) (5)

对应以上公式,用FPGA来实现需要对其有所改进。为了降低平方和开方带来的大量计算,采用绝对值之和来逼近所求的梯度模值,从而降低计算量。在改进算法中,为了使算法在FPGA能够很好的实现,对所有梯度模值都除以1 024,并将角度0°~360°转化为0~35的整形数据,如式(6)所示。

undefined

在FPGA实现中,由于计算像素的梯度模值和方向与DoG尺度空间的构建,并没有数据的交互,所有这2个模块可以并行的在FPGA上执行,在构建DoG尺度空间的同时像素梯度模值和方向也在计算。

2.4 构建特征描述符

构造特征描述符,首先需要通过像素的梯度模值和方向确定特征点的主方向,使得特征描述符对旋转具有不变性。本文通过圆来构建SIFT特征描述符,因为圆具有很好的稳健性和旋转不变性,并行能够减少算法的复杂度和降低特征描述符的维数[7]。

第一,如图2所示,利用极坐标以特征点为圆心,提取一个直径为20像素点的圆形区域,并中心区域周围构造8个圆形子区域将其环绕,其中每个圆形子区域都与中心圆形子区域相交。第二,假设主方向为水平向左方向,从主方向开始沿着顺时针的方向,对9个圆形子区域进行排序,如图2a所示。第三,将每个子图计算得到的梯度方向和模值转化为梯度直方图,在通过主方向重新排列梯度直方图8个参数,并且按从1~9的顺序将其梯度直方图依次排列起来,最终便得到该特征点的特征描述符,如图2b所示。

通过该方法产生的特征描述符的维数为72,比原始SIFT特征描述符维数少了56。进一步减少了对存储器资源的消耗,同时也降低了后续特征点匹配的计算量。

3 FPGA并行实现SIFT算法

深入分析SIFT算法之后,SIFT算法中构建金字塔,梯度的计算以及提取特征点适合FPGA硬件来实现,而特征描述符的构建则适合软件来实现,因此本文重点介绍FPGA实现SIFT算法中特征值检测和梯度计算。

优化后的SIFT算法在FPGA芯片上硬件实现,如图3所示,主要划分为6个模块:1) 图像缓存模块;2) 高斯平滑滤波模块;3) 提取特征点模块;4) 计算梯度模值和方向模块;5) 存储特征点坐标和梯度值模块。由于计算梯度模值和方向模块和提取特征点模块之前并没有数据的交互,为了能够减少整个算法计算量和降低计算时间,模块3和模块4采用并行处理。

为了使得整个算法能够在流水线中完成,决定对原始图像进行分割。再将分割好的图像分别送入高斯滤波模块,形成流水线操作,以到达降低计算时间,满足实时性要求,如图4所示。

图中只列出了3个子图的流水线操作,在T1时间内进行读取分割图1的数据到高斯滤波模块,在T2时间内进行分割图1数据的高斯滤波,并且将分割图2的数据读取到高斯滤波模块中,在T3时间内同时进行了3项工作:1)读取分割图3数据到高斯滤波模块中;2)将分割图2数据进行高斯滤波;3)对分割图1进行梯度模值和方向计算和特征点检测。最后,同时在固定时间点上得到每个子图的像素梯度模值和方向。

3.1 高斯滤波模块

考虑到高斯滤波器的特征,采用一种并行结构来实现高斯滤波,如图5所示。采用分割的子图大小为6×14,通过数据控制单元从图像存储模块中读取出相应的子图,对子图的每行数据的高斯滤波并行处理,以此产生4种尺度的图像。

图5中有6个高斯滤波单元主要对应子图的6行数据,而在高斯滤波单元中主要包括4种尺度的滤波器和累加器,如图6所示。这种框架结构,能够并行计算出4种尺度图像,充分利用了FPGA的并行特性与SIFT算法特点相结合,提高SIFT算法硬件实现的可靠性,并且保证了实时性。最终计算得出的4种尺度的图像被保存到FIFO中。

3.2 特征点检测和梯度计算

首先通过4个尺度图像中相邻2幅图像像素值进行相减,产生DoG尺度空间。其次,提取特征点是通过DoG尺度图像比较附近的26个像素点,利用并行处理结构,能够在一个时钟完成28个像素点的比较。因此在一个时钟内能够判定该点是否为特征点。最后,将检测到的特征点坐标保存到FIFO中,如图7所示。

对于梯度的计算,只计算其中一个尺度图像的梯度,主要分为模值计算和方向计算。模值计算采用式(6),而方向的计算采用式(5),然后在通过查表的方式求出角度。最后将计算出的梯度模值和角度存储到SRAM中,如图8所示。

4 SIFT算法在FPGA实现与DSP实现性能对比

验证SIFT算法在FPGA上实现的优势,本文与DSP实现的SIFT算法进行对比。对于整个SIFT算法,硬件实现特征点检测和梯度计算,对于该部分是最为关键的,因为该部分运行的时间直接影响着软件部分的匹配准确性。输入图像采用320×240,如表1所示,SIFT算法的特征点检查和梯度的计算在FPGA所耗的时间比DSP上降低了3.5倍,并且在匹配率上也相比DSP有所提高。因此本文对SIFT算法的特征点检测和梯度计算有最快的处理速度。

判断FPGA移植SIFT算法是否到达最优,不仅需要考虑其匹配性能和计算时间,还需要考虑整个算法实现所占用的硬件资源。本文采用FPGA芯片是Altera公司Cyclone III系列的芯片EP3C120F为硬件平台,由于该系列芯片具有价格低廉的优点。相对于低端芯片实现计算量大的SIFT算法,能够在性价比上得到最优。如表2所示,优化SIFT算法和独特的设计架构使得FPGA上实现该算法硬件资源消耗比较少,满足设计要求。

5 小结

FPGA实现了本文优化后的SIFT算法,并且实时性达到要求。该算法的实现主要分为2个部分,分别是硬件实现和软件实现。硬件部分在FPGA上实现,主要是对图像特征点的检测和梯度计算;软件部分在FPGA软处理器上实现,完成了对特征描述符的构建和图像匹配。其中最为重要的是硬件部分,它的计算时间直接影响着软件部分的匹配性能。FPGA硬件部分的实现,在提取特征点和梯度计算所用时间得到很大程度的降低,增强了整个算法的实时性。

参考文献

[1]LOWE D G.Distinctive image features from scale-invariant keypoints[J].International Journal of Computer Vision,2004,60(2):91-110.

[2]CILETTI M D.Advanced digital design with the verilog HDL[M].2nded.Beijing:Publishing House of Electronics Industry,2010:213-224.

[3]邸男,李桂菊,魏雅娟.采用SIFT的末制导图像匹配技术[J].红外与激光工程,2011,40(8):1590-1593.

[4]焦斌亮,樊曼曼.基于改进SIFT算法的多源遥感影像配准研究[J].激光与红外,2011,41(12):1384-1386.

[5]宋海华,邵志一.基于改进型特征匹配的图像拼接方案设计[J].电视技术,2008,32(12):19-26.

[6]曹红杏,柳稼航,阮萍.基于SIFT特征的图像自动拼接[J].电视技术,2008,32(12):146-148.

FPGA信号处理算法 篇5

而拼接控制器是大屏幕系统中的核心显示控制设备。拼接控制器的核心是其处理能力和稳定性,基于计算机体系构架的传统控制器,其性能和稳定性完全取决于它所依赖的计算机,无论传统控制器如何改进, 最多只能算量的积累,难以获得质的提升。采用大规模FPGA阵列式组合处理构架,全嵌入式硬件设计的拼接控制器集视频信号采集、实时高分辨率数字图像处理、二维高阶数字滤波等高端图像处理技术于一身, 具有强大的处理能力。

本文正是在这种背景下,设计了一种基于FPGA的视频图像处理算法,实现实时数字视频的分割、插值放大,通过并行处理机制,保证了视频的实时处理和画面流畅。

1 系统总体概述

文中将完成一路监控摄像头采集的画面在2 × 2 的液晶拼接屏上显示一幅完整大图的效果。

系统的总体框架图如图1 所示。由网络摄像头采集到的视频信号,经过DVI接收器后,发出数据及控制信号供给FPGA。通过FPGA主控芯片对输入的视频信号进行分割、插值放大等处理; 视频输出模块将FPGA处理后的数据再通过DVI接口输出到屏幕上。

只要数据读出速度高于写入速度,就不会使图像产生突变现象,从而达到实时处理的目的。

2 FPGA模块的实现

FPGA内部系统对视频图像的处理如图2 所示。 主要分为帧存储模块、分割模块、插值模块3 部分。

2. 1 帧模块及存储模块

DVI接口是将显卡中经过处理的待显示R、G、B数字信号与水平同步信号( Hsync,行同步信号) 、垂直同步信号( Vsync,场同步信号) 进行组合,按最小非归零编码,将每个像素点按10 bit( 8 bit像素数据和2 bit控制信号) 的数字信号进行并串转换,把编码后的R、G、B数字流与像素时钟4 组信号按照最小化传输差分信号( Transition Minimized Differential Signal,TMDS) 方式进行传输。

FPGA的分时切换逻辑是依据输入视频流的垂直同步控制信号Vsync发生由高电平到低电平的转换, 以此作为新数据帧到来的标识,如图3 所示。

当FPGA内部的信号控制采集信号[1]为0 时,采集系统停止工作,地址发生器不计数。当其为1 时,系统处于采集状态。首先只有Vsync上升沿到来后,才允许Hsync通过,从而保证采集的图像为完整的一帧图像。当Vsync上升沿到来后,对所有计数器及触发器清零。Vsync上升沿后,场消隐延时用来对Hsync计数,场消隐期后,可以采集图像。行同步计数器对Hsync进行计数。在计数的每一行中,当Hsync上升沿到来时,行消隐延时对其计数。行消隐过后,点同步计数器开始对其计数。当行同步计数停止计数时,一帧图像采集完毕,等待下一个Vsync到来。

数据缓冲区为两片SDRAM,以一帧图像为单位进行切换控制。采用乒乓存储机制完成数据的无缝缓冲与处理。乒乓操作可以通过“输入数据选择控制”和“输出数据选择控制”按节拍、相互配合地进行来回切换,将经过缓冲的数据流没有停顿地送到“后续处理”模块。

2. 2 分割模块

由于一个像素的输出值只取决于输入图像的相应像素值,因此,可通过对每个输入像素依次进行处理这种流水化的处理模式,来实现对图像的点操作。由于每个像素是单独处理的,所以点操作很容易并行实现。 因此,可以把图像分割成若干部分,然后再对每个部分单独进行处理。

视频分割模块实现单帧视频图像的分割剪裁[2], 得到4 路完整格式的子视频像素流,并控制4 个子视频的相互时序关系,各个拼接屏幕的像素点的扫描规律相同,均为逐行扫描形式,并且子视频像素点显示同步,即行同步和场同步。

2. 3 双线性插值算法的实现

实现图片处理的插值方法有很多,例如最近邻插值、双线性插值、双三次插值等。最近邻插值是最简单的插值方式,但当图像中的像素灰度级有细微变化时, 该方法会在图像中产生人工的痕迹。双三次插值可以得到更平滑的结果,但在存储管理更复杂,并增加了逻辑资源的消耗。因此,选取了双线性插值方法。

与点操作的图像分割不同,双线性插值属于几何变换,其输出的像素通常并不是来自同一个输入像素位置。因此需要一些形式的缓存来处理由几何形状改变而引起的延迟。

本文采用预载入缓存[3]的方法来缓冲图像数据, 并使用双端口RAM来实现行缓冲器的设计方案。

采用双口RAM可在一个时钟周期内同时在每一行上提供两个输入像素,即提供了所有的4 个像素。然后将数据输送到插值计算模块。而整幅图像的存储将保存在外部的帧缓存中,每个时钟周期只能对其进行一次访问。每个像素应仅从外部存储器中读取一次, 然后暂存在片上缓存中用于随后的窗口。将数据预载入缓存,每次访问时直接从缓存中读取像素,如图4所示。共需计算两次: 一次用于载入缓存; 一次用于执行插值。输入和输出像素间的映射采用前向映射。

视频插值模块实现对视频按比例因子进行双线性插值放大处理。双线性插值算法的基本原理如图5 所示,图中的下标i和f表示各自坐标的整数和小数部分。双线性插值是采用可分离的线性插值将4 个最近的像素值组合,如式( 1) 。

线性插值的结果与插值的顺序无关。先进行y方向的插值,然后进行x方向的插值,所得结果相同。将式( 1) 进行分解,则有

当输入分辨率有所变化而引起缩放因子变化时, FPGA内的数字逻辑能实时计算出式( 2) 中的系数xf和yf。而非仅计算几种固定缩放比例,从而提高了算法模块的利用率。

若以将摄像机1 024 × 576 分辨率的图转化为1 366 × 768 的图为例,则水平缩放因子sc_x和垂直缩放因子sc_y均为0. 75。若将水平因子直接带入编写程序,则会报错。采用浮点数表示法,转换后得到的10 位16 进制数,计算出系数xf和yf均为h300。

在实际设计中,为避免运算过于复杂,把复杂的运算分成几个步骤,分别在不同的时钟周期完成。插值计算的逻辑结构模块如图6 所示。

系统包含3 种不同的时钟频率: 原像素点频率clkin[4]、输出像素点频率clkout和系统主时钟频率clksys。令系统主时钟频率为4 倍的原像素点频率,则使用Verilog语言及ModelSim SE 10。1a和Quartus II仿真环境进行编译,得到双线性插值计算模块的仿真波形如图7 所示。为程序书写方便,将采集的4 个像素值标为a、b、c、d,经过插值模块后的输出像素值为p。从仿真波形可看出,完成了双线性插值计算模块的实现。

3结束语

针对大屏幕特点,从拼接控制器入手,提出了一种基于FPGA实现的视频实时处理系统。主要采用双线性插值法,讨论了如何用FPGA实现,并进行逻辑结构的优化,提高系统性能,并对双线性进行仿真,验证了算法在拼接显示系统中的可行性。围绕拼接控制器这个应用方向,还有更多的问题需要进行研究,例如画面自由叠加与漫游,单屏分割,自动图像识别重建等。

摘要:为有效提高视频监控应用领域中多屏幕画面显示的清晰度、分辨度等问题,提出了一种基于FPGA的实时视频图像处理算法。文中介绍了系统的整体结构,然后针对FPGA模块介绍了视频图像的缓存及图像分割,并针对视频的输出显示要求,重点介绍了基于双线性插值算法的实现。ModelSim的仿真结果表明,该算法符合多屏幕显示系统的要求。

FPGA信号处理算法 篇6

1 视频增强处理系统硬件结构

视频增强对硬件处理速度的要求较高,使用传统的单CPU或DSP很难获得较高性价比,而FPGA由于内部集成了多个可并行工作的高速有符号乘法器而在视频处理中具有明显的优势。FPGA中资源控制的灵活性和并行特点体现在并行逻辑运算、并行多SRAM访问控制和外围模拟信号解码器件接口的并行控制上。为快速实现并验证本文所述视频增强处理的效果,使用了Xilinx公司的FPGA多媒体开发板(Microblaze&Multimedia Demonstration Board,No.0381112)[4]。开发板集成了测试所用的所有硬件资源,其总体结构如图1所示。

开发板核心器件为Xilinx公司的FPGA芯片Vertex-Ⅱ(XC2V2000),还包含了多媒体和人机接口所用的外围器件,包括视频输入采集芯片、视频输出驱动芯片、外围SRAM存储器、AC97音频编解码器、以太网接口、RS232接口、LED指示灯和键盘接口。FPGA的配置采用可进行多版本控制的CF卡为存储介质,配置芯片为Xilinx SystemACE。所有的视频增强处理和与外围器件接口的功能使用硬件描述语言VerilogHDL开发,VerilogHDL代码经编译后使用JTAG调试器下载到XC2V2000芯片中,同时也可使用CF卡存储8份测试代码进行自动加载,分版本调试,开发板上没有CPU,所有的逻辑处理由FPGA实现。板上还配置了5块NtSRAM(型号K7N163601M),NtSRAM是三星公司推出的无周转随机存储器,即读写采用单周期操作,提高了存取速度。每块NtSRAM都用单独的地址总线、数据总线和控制总线直接与FPGA连接,保证了5个SRAM可同时作为视频高速缓存区使用,保证了并行性。K7N163601M为100引脚芯片,5片SRAM消耗了480条FPGA引脚,XC2V2000共有896条引脚。开发板提供的视频编解码器件也为算法验证提供了条件。

2 视频增强处理算法的Matlab仿真

视频增强处理算法分为7部分,分别为视频运动补偿、帧内图像的边缘锐化、数字亮度瞬态增强、数字色彩瞬态增强、亮度对比度调整、色度饱和度调整、黑级扩展。这些处理在测试系统中需要并行进行,以保证视频流的实时性。为验证视频增强算法的可行性,在进行VerilogHDL设计实现之前进行了Matlab仿真。仿真程序使用Matlab的图形界面开发环境GUIDE(Graphic User Interface Development Environment)完成,实现的视频增强功能模块如图2所示,其中只有视频运动补偿没有进行仿真。

图2所示各处理环节的功能描述如表1所示。其中峰值滤波算法实现方法如下:以同一行内5个像素点YUV色度空间的亮度信号Y为周期,编号为Y0,Y1,Y2,Y3,Y4,分别设计低通、带通和高通滤波器YLP,YBP,YHP:

峰值滤波器的输出为:

其中:YHBPS=kbp×YBP+khp×YHP-YBP-YHP

hpw是高通滤波系数,kbpw是带通滤波系数,klp是低通滤波系统,Ygate是滤波输出阈值。

视频增强算法中黑级扩展算法如公式(6)所示,当亮度低于一个域值时,输出亮度信号迅速减小,表现为黑到一定程度后的黑色变得更黑。

其中Yin为输入亮度信号,k为黑级扩展比例系数,YGate为扩展阈值。

Matlab仿真软件界面如图3所示,其中峰值滤波器、DLTI、DCTI、亮度对比度调整、色度饱和度调整、黑级扩展6部分增强算法的系数都可以动态调整来观察增强的效果,从而确定最佳增强参数。为测试对不同类型视频图像的增强效果,软件中设计了图像选择功能,备选图像中有加入各种噪声和模糊化的测试图像,仿真测试表明,当参数调整合适后,增强效果明显。

3 视频增强处理算法的VerilogHDL设计

测试视频增强所用视频信号源由DVD播放机提供,模拟视频信号通过S端子接入开发板,通过ADV7185解码成数字视频信号接入FPGA,数字视频信号经过增强处理后由FMS3810视频DAC转换为模拟视频信号,输出到SVGA显示器进行观察。SVGA输出仅测试时使用,当视频增强系统作为视频识别前处理方式工作时,增强的数字视频信号将以数字方式直接传输到视频识别单元。视频增强处理算法充分利用了Vertex-Ⅱ的并行数字信号处理功能,XC2V2000集成了56个18bit高速有符号乘法器和336KB快速分布式RAM,便于实现各种增强算法的并行处理和数据缓冲。视频增强算法及其辅助处理的VerilogHDL实现结构如图4所示,格式为CCIR601标准的视频信号经输入解码处理后存储于三个NtSRAM缓冲区。视频增强系统中设置一个行缓冲区,采用FPGA内部集成的分布式双端口SRAM实现,NtSRAM显示缓冲区中的数据被逐行传输到行缓冲区中,三个NtSRAM缓冲区由三个对应的控制器管理,数据需要通过读请求获得。读请求控制功能由图4中的数据请求控制模块实现,当此模块在消隐期获得经过同步了的NtSRAM缓冲区就绪信号后,开始选定这一缓冲区,并产生数据读请求信号。然后NtSRAM控制器按照请求信号的目的地址、源地址和数据长度将显示数据送到行缓冲区SRAM中。行缓冲区中的数据按照显示器输出信号的时序输出,即在每个有效行产生行缓冲区的连续增量地址信号,将YUV像素信号读出,再送入图像增强模块,图像增强模块的输出信号送入YUV-RGB转换模块中,然后将RGB信号接到SVGA驱动器FMS3810的D/A中,产生模拟的颜色信号。其中显示时序控制由SVGA时序控制模块产生。

图4中YUV信号是位宽为8bit的数字信号,其编码格式符合数字演播室标准ITU-RRec.BT601。YUV信号经色度空间变换算法转换为RGB信号,输出到SVGA,显示像素时钟频率为54MHz。实现上述功能的硬件时间延迟为6个时钟周期,其速度是使用嵌入式处理器或单个DSP系统难以实现的。

本文应用VerilogHDL硬件描述语言在Xilinx的XC2V2000-FPGA中实现了视频增强算法。经使用不同画质的视频碟片用DVD播放器作为信号源进行测试,视频增强效果明显,可为后期视频识别提供较好的信息基础。在算法实现中,Matlab软件仿真对视频增强算法的参数优化起到了决定性作用,凸显了仿真对系统实现的指导作用。

参考文献

[1] 阮秋琦.数字图像处理学.北京:电子工业出版社,2001.

[2] TEKALP A.M 著;崔之祜,江春,陈丽鑫译.数字视频处理.北京:电子工业出版社,1998.

[3] BENNETT Eric P,Leonard McMillan,Video enhancement using per-pixel virtual exposures,Proceedings of ACM SIGGRAPH 2005(NY,USA),2005,124(3) .

FPGA信号处理算法 篇7

超声成像技术具有无创、对软组织分辨好的特点,能够实现实时、动态的断层成像,被广泛地应用于眼科检查中。传统的眼科超声诊断仪采用的是模拟系统,它的成像分辨率低,抗干扰能力弱,图像质量较差,无法进行疾病早期诊断,可能错过治疗的最佳时机而延误病情[1]。随着计算机技术的发展,现在已有数字化眼科成像系统,具有更稳定的性能和较高的精度,但其普遍存在硬件资源占用率高,眼球深部的分辨率较弱等问题,导致数据处理速度不够,一些有用的小信号无法很好地保留。

本研究基于可编程逻辑门阵列(field programming gate array, FPGA),针对现有诊断仪中的信号处理算法进行设计和改进,并在Quartus II中用Verilog HDL硬件语言描述,于数字化超声信号处理平台上实现,从本质上降低频率衰减对成像质量的影响,减少资源占用,提高实时处理速度以及成像分辨率。

1 方法

超声回波信号由超声换能器接收,进行信号放大等预处理之后,由A/D芯片转换成数字信号,成为14bit的数据流,输入到动态滤波、正交检波、对数放大等数字信号处理模块,来实现噪声抑制、信号解调和动态范围的压缩,最后送入后端系统显示超声图像。

本研究主要基于FPGA对数字信号处理的三个关键步骤进行算法的设计与实现,以改善成像效果。设计所采用的FPGA芯片是ALTERA公司Cyclone IV系列的EP4CE55F23C8芯片,它能够重复改变组态的电路,满足大数据量复杂运算的高速实时处理。

1.1 动态滤波

软组织对超声信号的衰减会随着信号频率的增大而加剧,这使得信号传播越深,其中心频率会随之下移,若滤波器通带固定,则组织深部的成像效果将会恶化。动态滤波器是一组随着深度变化通带中心频率也随之下移的数字滤波器,它能有效抑制回波通带以外的噪声,改善深部的信噪比与可视性,并保持近场的高分辨率,提高图像质量[2]。

根据眼球结构的成像特点和超声信号在眼部组织的衰减特性,本研究将探测深度分为3段,并采用3个通带中心频率逐渐下降的32阶FIR滤波器与之匹配,来实现动态滤波。其中,滤波器的设计采用了全并行的分布式算法,这是一种将复杂乘加运算转化为高速率查表运算的FIR滤波器实现方案,并且加入多级流水线减少电路复杂度、提高数据处理速度,同时使用分割表技术来减小查找表的大小,解决了传统乘加算法功率消耗大、算法周期长的弊端[3]。

分布式算法的基本原理请参考文献[4-5],而本研究所采用的全并行分布式算法在传统分布式算法上进行改进,所有需要查表的数据在同一个时钟内并行查表得到结果,让系统达到实时处理的要求。此外在实现过程中,发现16输入的查找表需要216×10 bit的空间,过于占用资源。于是根据滤波器的线性特性和分割表原理[6]将查找表分割成4个4输入小型查找表,仅占用4×24×10 bit空间,是原来的1 024分之一。另外,动态滤波器组中三个不同通带滤波器只需要通过读取不同的查找表就能实现。

1.2 正交检波

探头所接收到的超声信号中用于超声成像的人体组织信息是调制在回波上的,需要通过检波来进行数字包络的提取,还原有用信号。传统采用的绝对值包络检波设计简单但会产生一定程度上的失真;Hilbert变换检波需要设计小纹波Hilbert滤波器避免幅度失真,难度较大;而本研究所采用的数字正交检波能够保留回波信号的相位信息和频谱信息,消除镜频分量的影响,且方法易行,设计复杂度小,便于实现[7,8]。

正交检波是通过将回波信号进行数字混频,然后利用低通滤波滤除高频分量,将得到的包络信号的同相分量I和正交分量Q求模得到所需要的包络信息,其原理图如图1所示。其中,sin(wrn Ts)和cos(wrn Ts)分别是I、Q两个通道的本振信号,wr取回波信号的中心频率。

1.2.1 抽取

本系统中 , 超声回波 信号的中 心频率为10 MHz,同时为了较好地保持信号波形,采样频率达到了80 MHz。但为了在正交检波中混频时减少乘法运算,节约硬件资源,这里对信号进行2倍抽取,即把输入的数据采样序列每隔1个抽取一个数据,组合形成新的采样序列,将采样频率降为40 MHz。

1.2.2 检波

抽取之后,本振信号sin(wrn Ts)和cos(wrn Ts)的取值仅为1, 0,-1三种可能,那么只需要将输入数据进行保留、置零、取反、置零这样的循环操作就能实现混频。混频后的信号由FIR低通滤波器滤除高频信号,滤波器的设计同样采用动态滤波器中全并行分布式算法,选取的低通截止频率为5 MHz。最后得到I(n)和Q(n)两路正交的基带信号,利用FPGA中的乘法器进行平方,并采用笔算开方算法设计开方模块,实现最终的求模运算,得到所需要的解调信号。

1.2.3 内插

由于所处超声处理平台上后续的处理采用的采样频率仍为80 MHz,在得到解调信号后对其2倍内插实现采样频率的恢复。内插是通过在数据序列相邻采样点之间等间距插入1个零值点,再进行低通滤波滤除零值内插后频域上产生的镜像分量来实现。其中,FIR滤波器的阶数越高,插值误差越小,设计中综合考虑误差和速度,采用32阶,Hamming窗设计滤波器。

1.3 对数压缩

人体中各软组织对超声的吸收系数为0 . 6 ~ 0 . 7d B/(cm.MHz)[9],导致超声回波信号的动态范围达到100 d B以上,难以在终端显示器显示。对数压缩利用非线性关系将大幅度信号压缩的同时,对能够反映人体结构细节的微弱回波信号有拉伸效果,起到增加对比度的作用。传统对数压缩常用查表法和分段拟合法,但查表法需要很大数据量的查找表,分段拟合法要牺牲精度来减小硬件电路的复杂度;而二叉树比较法能够以很少的硬件开销实现精确的对数运算[10]。

对数压缩本质上来说就是利用对数运算曲线y=kloga(x)对输入信号进行非线性的调制,k的取值取决于输入输出信号的位数。二叉树比较法利用log函数的单调性,通过比较输入数据与预存数据大小依次判断压缩结果的各个位数,实现对数压缩。

本设计利用一个比较器,一个移位寄存器和一个ROM在FPGA中实现二叉树比较法,硬件实现结构如图2所示。

具体实现过程如下:第一个时钟上升沿锁存一个数据,同时移位寄存器复位为“10000000”,则下降沿从ROM输出地址为“10000000”的X10000000,与输入数据进行比较;第二个时钟移位寄存器右移一位,将比较结果Y7锁存在最高位,这也是压缩结果的最高位,新的地址在ROM中读取新的值,参与第二次比较;在第三个时钟时,将寄存器的0到6位rom_addr[6:0]右移1位,最高位锁存Y7不变,次高位锁存第二次比较结果Y6;重复移位和锁存,直到第九个时钟时由移位寄存器得到结果“Y7Y6Y5Y4Y3Y2Y1Y0”。其中,在ROM存储表中地址为N的XN代表当y=N时,x的值,可由对数压缩公式求得。若是将14 bit数据压缩为8 bit,查表法所需要的RAM空间为214×8 bit,而二叉树比较法仅为28×14bit,二叉树对数压缩节省了更多的空间资源。

2 结果

以上信号处理算法均用Verilog HDL语言描述各自形成底层模块。为了验证其有效性,首先分别在Modelsim中仿真,然后将模块整合到顶层模块中,进行标准体模超声成像实验,并与原系统成像效果作出比较。

2.1 Modelsim仿真结果

动态滤波模块中将等幅正弦信号相叠加作为信号源,滤波器采用32阶Hamming窗设计,设置通带频率分别为9~10 MHz和1~3 MHz;正交检波模块将等幅正弦信号相乘作为调制信号输入,低通滤波器设置截止频率为8 MHz;对数压缩模块中采用等值递增的14 bit信号输入,压缩为8 bit信号输出。

图3显示了动态滤波的仿真结果,由上至下分别是输入的10 MHz、2 MHz信号,以及两者相叠加后的混频信号,最后是滤波输出信号fir_out。输出信号的前半部分完整保留10 MHz信号,而后半部分则通过改变滤波器通带频率,完整滤除10 MHz而保留了2 MHz,实现了动态滤波的设计目的。

图4是正交检波的仿真结果,输入result将2 MHz信号调制在10 MHz信号上,经过抽取得到采样频率为40 MHz的信号y,正交检波之后得到检波结果q,并进一步插值恢复信号为80 MHz采样频率,得到最终结果qua_out。qua_out能很好地反映调制在高频信号上的2 MHz信号的包络信息,实现解调的功能。

对数压缩前后的信号如图5所示 , 对数压缩能有效压缩输入信号的动态变化范围,并且增强了小信号。

2.2 体模超声成像实验结果

将三个改进的数字信号处理模块整合到课题组研发的数字B超成像系统的顶层模块中,分别用改进算法前和改进算法后的系统对超声体模进行图像采集并进行对比,如图6所示。在总增益89 d B,亮度50%,对比度53%的同等条件下,对比发现所设计的算法增强了超声整体信号强度,让细节信号显示更为细腻。尤其对体模深部成像对比发现,带有原算法的系统在深度为4 cm到5 cm的成像很弱,几乎没有组织信号,可探测到的深度在5 cm;而改进后的系统对体模深度靶点的成像增强,能清晰看到4、5 cm,甚至6 cm处的靶点,探测深度达到6 cm。

3 讨论和结论

本文就现有眼科超声系统中存在的问题,基于FPGA在QuartusⅡ开发环境下,对超声回波信号进行信号处理算法的设计,实现了无乘法器的全并行分布式算法滤波器,保留丰富信息的数字正交检波,低硬件消耗的精确对数压缩,并在Modelsim中对各模块仿真,于眼科超声处理平台上验证其性能。结果表明,该算法设计改善了超声成像中存在的探测深度与分辨率不可兼得的固有难题,提高了成像在远场的分辨率和信噪比,同时保证实时处理速度,并能够有效减小硬件开销和体积。

上一篇:中医治疗烧伤研究下一篇:血栓性外痔