您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 基于FPGA的信号采集与处理技术的研究
基于FPGA的信号采集与处理技术的研究报告人:景瑞元导师:宋学君主要内容:一、总体设计与FPGA相关技术介绍二、基于FPGA的采集控制模块设计三、基于FPGA的信号处理模块的研究和设计四、基于FPGA的存储器控制模块的研究和设计一、总体设计与FPGA相关技术介绍在现代生活生产中的各个领域往往需要进行对多种信号进行采集和处理,而实际的信号多为模拟信号,必须先经过A/D转换,变为数字信号,通过计算机进行相应的处理。信号的采集要求具有一定的速度和精度,这决定着采集系统的优劣;数字信号的处理是以数字的形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等一系列的处理。在技术不断向前发展的进程中,信号采集与处理系统主要呈现过以下几种方法。基于PC机的采集与处理系统。这种方法主要将采集到的模拟信号进行A/D转换,然后送入PC机进行处理。基于单片机的信号采集与处理系统。这种方法主要用在对信号处理的实时性要求不高的场合。单片机的时钟频率较低,它主要靠软件运行来实现功能,效率相对较低,难以满足高速采集的要求。基于DSP的信号采集与处理系统。DSP芯片作为专用的数字处理器芯片,具有强大的运算能力,这种方法理解能力强、精度高,可以实现对采集信号的快速实时处理。DSP虽然具有强大的数字信号处理能力,擅长海量数据处理,但很难完成对外围复杂逻辑器件的控制。采用DSP+FPGA实现数字信号的采集与处理系统。目前在工业控制领域,主要采用专用的处理器DSP和大规模现场可编程门阵列FPGA芯片。该方法把DSP和FPGA二者的优势结合在一起,即利用DSP的强大数字信号处理能力完成对信号的处理,利用FPGA实现外围电路的控制。但是,采用DSP+FPGA的系统增加了硬件结构的复杂性和难度。本系统主要基于现场可编程门阵列(FPGA),其逻辑能力强,速度更快,效率也更高,设计灵活,在信号采集与处理方面的优势越来越明显。FPGA内都嵌有一定数量的乘法器,将内嵌有乘法器的FPGA看作是由许多DSP组成的一个阵列,非常适合用于数字信号处理。新型的FPGA芯片中一般都集成了DSP模块,甚至嵌入了软/硬核处理器,在进行并行信号处理时,FPGA的运算能力比标准DSP要高的多。本设计中的对数据做的快速傅里叶变换(FFT)是通过FFTIP核实现的。目前,国际上基于FPGA的信号处理算法已经比较成熟,Altera公司的FFTIP核计算16位1024点FFT仅需要6.63us。对于一个面向市场和实际工程应用的系统设计中,开发周期和开发效率是十分重要的,然而对于设计者而言,要在短时期内全面了解比较常用的电路(如:FIR数字滤波器、FFT快速傅里叶变换、NCO数控振荡器、PCI总线等)在FPGA器件上实现的相关优化设计及设计方法是很不容易的,这要求花费大量的时间和精力。如果采用优秀工程师已经设计好的IP核,就可以大大提高系统的开发效率。设计者只要根据实际电路的要求,选择合适的IP核或宏模块就可以了。FFTIP核作为一种高性能的FFT处理器,它可以用来完成快速傅里叶变换,其主要特点有:(1)核的相关参数的设置简单方便;(2)核内含有内嵌的存储单元;(3)可以自动生成相应的仿真测试文件进行仿真;(4)时钟频率高,最高时钟频率可达300MHz;(5)数据流类型多且可以输入变流数据;(6)数据表示方法为块浮点表示法。基于FPGA的控制与处理系统结构,如下图所示二、基于FPGA的采集控制模块设计ADC0809信号处理模块信号采集控制电路转换状态对A/D的控制信号模拟信号输入zzzzzzzDATAADC0809工作时序图ALESTARTEOCOED[7..0]D[7..0]该模块中共有4个输入信号,5个输出信号。CLK是一个频率较高的输入时钟,作为整个模块的工作时钟;RST2为状态机复位;EOC为ADC0809向FPGA发出的转换完成信号;OE为控制模块向ADC0809发出的输出使能信号;ALE为模块向芯片发出的输入通道地址锁存信号;START是开始信号;Q与WORDER分别为转换好的数据和数据锁存信号。数据采集控制模块主要产生对ADC0809的控制信号,在QuartusⅡ9.0开发软件中生成的A/D转换控制模块如图所示。ADC0809instD[7..0]D[7..0]CLKCLKRST2RST2EOCEOCOEOEALEALESTARTSTARTWORDERWORDERQ[7..0]Q[7..0]在程序中有两个进程——时序进程和组合进程。时序进程好比是一个驱动机,控制着状态机由当前状态(CS)转换到下一状态(next_STATE)的跳变;而状态机的具体功能则是由组合状态完成的,组合进程负责的是在一个特定的状态(STATE)中根据收到的信息要向外发出什么命令,包括对A/D芯片的地址锁存、启动芯片、待转换完成后将数据存进缓存器。基于FPGA的状态机控制模块与普通单片机控制器相比较,如果不考虑芯片的转换时间在速度上要快1000倍左右。该控制模块完全有VHDL代码设计,采用有限状态机方案。st4st0st3st1st2对0809初始化启动A/D转换EOC=‘0’转化中,等待OE=‘1’,输出数据有效将数据存入缓存EOC=‘1’快速傅里叶变换FFT算法介绍对信号处理的分析主要有两个方面,一是在时域里对信号进行分析,一是在频域里对信号进行分析,快速傅里叶变换(FFT)是经常用到的一种方法。FFT是有离散傅里叶变换(DFT)发展而来的,它是DFT的一种快速算法。设x(n)为N点有限长序列,其DFT为:1...,1,0,)()(10NkWnxkXNnnkN1...,1,0,)()(10NkWnxkXNnnkN1...,1,0,)()(10NkWnxkXNnnkN由于存在负数,因此每进行一次X(k)的值的运算都要进行N次负数相乘运算及N-1次负数相加运算。对于N点(k从0取到N-1)的X(k)来说,要计算这N点的DFT共需要进行NXN次复数相乘及N(N-1)次负数相加运算。例如要取N点计算机运算如下:三、基于FPGA的信号处理模块设计信号处理模块为整个设计的核心部分,起作用是对采集到并进行A/D转换后的数据进行快速傅里叶变换(FFT),是FFT算法的实现者,该模块是通过定制的FFTIP核构成。0k0)1(0100)1()1()0()0(NNNNWNxWxWxX1k0111(1)1(1)(0)(1)(1)NNNNXxWxWxNW2k0212(1)2(2)(0)(1)(1)NNNNXxWxWxNW1Nk0111(1)1(1)(0)(1)(1)NNNNNNNXNxWxWxNW当N很大时,直接进行DFT运算的计算量是非常大的,例如当N=1024时,直接进行DFT运算则要进行一百多万次相乘运算。由于计算量大,且要求相当大的内存,难以实现实时处理,限制了DFT的应用。可以利用的共轭对称性、周期性、可约性将DFT运算中的有些项合并,并可将长序列DFT分解为段序列的DFT,FFT就是基于这种思路发展起来的。FFT算法可以分为两类:按时间抽选法和按频率抽选发。nkNW按频率抽选法N=8,FFT运算流图:按时间抽选法N=8,FFT运算流图:基于FPGA的FFTIP核定制设计中的FFTIP核实在QuartusⅡ开发软件中的MegeWizardPlug-InManager中定制的。定制一个FFTIP核分为三大步:核的相关参数设置;生成仿真文件;生成设计文件。在核的相关参数包括FFT的运算点数、输入数据位数和旋转因子的位数。设置运算点数为1024点由于ADC0809输出的是8为数据,因此输入数据的位数定位8位,旋转因子位数也定为8位。FFTIP核的数据有Streaming、VariableStreaming、BufferedBurst和Burst四种,这里选择VariableStreaming型,此时乘法器和加法器不用做设置,会默认为三个乘法器和五个加法器。设置好IP核的相关参数后,接下来就是生成仿真文件。主要是生成适用于不同仿真工具的测试文件,也可以生成QuartusⅡ仿真的波形文件。最后是生成设计文件,封装图形如图。以上设计的FFTIP核模块是信号处理模块的核心部分,在它的输入端要加入输入控制子模块,在输出端要加入输出控制子模块和输出缓存,这些主要又FIFO存储器来完成。FFTIP核各项参数设置界面FFT1instclkclkreset_nreset_nfftpts_in[10..0]fftpts_in[10..0]inverseinversesink_validsink_validsink_sopsink_sopsink_eopsink_eopsink_real[7..0]sink_real[7..0]sink_imag[7..0]sink_imag[7..0]sink_error[1..0]sink_error[1..0]source_readysource_readyfftpts_out[10..0]fftpts_out[10..0]sink_readysink_readysource_error[1..0]source_error[1..0]source_sopsource_sopsource_eopsource_eopsource_validsource_validsource_real[20..0]source_real[20..0]source_imag[20..0]source_imag[20..0]生成仿真文件设置界面生成的FFTIP模块四、基于FPGA的存储器控制模块设计在FPGA系统开发过程中使用的存储器一般有两种,一种是片内存储器,一种是片外存储器。片内存储器的特点是存取速度快,使用起来非常方便。但是,片内存储器的存储量有限,一般只能用于存储量较小的数据。同时使用片内存储器也会占用FPGA芯片的一部分逻辑资源。而使用片外存储器可以实现大批量数据的快速存取,因此在信号采集与处理中我们使用片外存储器来对经过信号处理模块后的数据进行存储。这里选用K9K1G08UOA,是三星公司的产品,属于NANDFlash,具有速度快、存储容量大的特点,非常适合用于对经过处理后的数据结果进行存储。这款存储器共有128MX8位的存储单元,以及4096KX8位的空闲存储区。该芯片采用2.7V-3.6V电源作为工作电压。以下是K9K1G08UOA存储器的内部结构图:K9K1G08UOA存储器由以下几部分构成:存储阵列。命令寄存器。负责把输入的命令字保存在命令寄存器中,然后根据命令字的不同来控制完成不同的操作。地址译码器。包含X方向上的地址译码器、Y方向上的地址译码器以及地址位A8。控制逻辑及高压电源。控制逻辑的作用主要是负责产生存储器的所有逻辑控制信号,以完成对存储器内部其他模块的控制。高压电源是为了产生对存储阵列编程所需要的高电压。I/O缓冲器、全局缓冲器和驱动器。缓冲器主要是对输入和输出信号进行缓冲处理。驱动器主要是为提高输出端的负载能力。以下是K9K1G08UOA存储器各个管脚对应的功能名基于FPGA的存储器控制器模块的作用主要是根据存储器的工作时序,产生相应的逻辑控制信号,来控制存储器的读写。在QuartusⅡ开发软件中设计生成的存储器控制模块如图所示。设计的存储器控制器模块的7个输出端口即为存储器的控制信号,有这些信号来控制存储器的工作。FLASH_CONTORLinstWRITE_NWRITE_NREAD_NREAD_NPORT_ADDRPORT_ADDRCE_NCE_NRY_BYNRY_BYNRESETRESETCOM_LAT_NCOM_LAT_NWE_NWE_NRE_NRE_NALEALECUTCE_NCUTCE_NREADYREADYCLECLEWP_NWP_N控制处理系统选用的硬件平台GW48系列SOPC/EDA开发系统总结本设计主要对基于FPGA的信号采集浴池里技术进行研究。
本文标题:基于FPGA的信号采集与处理技术的研究
链接地址:https://www.777doc.com/doc-4673365 .html