当前位置:文档之家› 数据采集存储系统实验报告

数据采集存储系统实验报告

数据采集存储系统陈俣兵任加勒蔡露薇摘要:本系统以C8051F360单片机最小系统为核心,结合FPGA及高速A/D数据采集模块,可靠地实现对一路外部信号进行采集、存储及FFT频谱分析。

系统硬件可以分为模拟部分和数字部分。

模拟电路主要包括信号调理电路、锁相环模块及A/D模块、D/A模块。

调理电路主要调节信号的幅度及直流偏置,以满足A/D对输入信号1~2V的幅度要求。

锁相环模块为A/D模块提供时钟信号,以实现对输入信号的整周期采样,防止频谱泄露。

数字部分主要由FPGA实现,用于数据的存储、传输等。

本系统对锁相环的使用实现了采样频率对输入信号的跟踪,大大增加了输入信号频率变化范围。

测试显示本系统谐波分量测量误差小于1%,系统稳定可靠。

关键字:FFT C8051F360 FPGA 锁相环一、方案选择与论证1.系统整体方案比较与选择方案一:采用扫频外差法。

将输入信号和扫频本振产生的信号混频,使变频后信号不断移入窄带滤波器,进而逐个选出被测频谱分量。

这种方法的优点是扫频范围大,但对硬件电路要求较高,分辨率不高,难以满足题目要求。

方案二:采用单片机来实现。

采用单片机系统控制AD转换器将交流电压电流信号存入缓冲区后,由CPU进行频谱分析以及功率计算。

此方案可以使控制模块的设计较为简单。

但是,频谱分析的计算(如FFT)具有数据量大,乘法运算居多的特点。

此弊端只能通过减少采样点数或外扩运算芯片来解决,前者会降低测量精度,而后者会增加外围硬件设计的复杂程度。

方案三:C8051F360单片机结合FPGA及锁相环模块实现。

利用锁相环模块对输入信号频率进行跟踪,能够实现对信号每个周期采集相同点的数据,保证了单片机进行频谱分析(FFT运算)时,数据的正确性。

利用FPGA设计两个双口RAM,一个用于存储采集的外部信号数据,另一个用于存储单片机进行FFT运算过程中的大量数据。

此方案硬件电路十分简单,且能够按需求方便地改变采集的数据量大小,提高运算结果的精度。

且FPGA的高精度晶振能保证AD均匀采样,为计算精度提供保障。

综上所述,本设计选用方案三。

系统原理框图见图1-1;C8051F360单片机Cyclone IIFPGA高速ADC信号调理LCD模块键盘模块模拟信号锁相环模块时钟信号高速DAC信号调理信号回放图1-1-1 系统原理框图2.采样及信号回放方案选择方案一:C8051F360单片机自身集成了10位A/D 和10位D/A ,可以方便地采集外部信号,且精度较高。

但是本设计要求输入信号频率达到50kHz ,为保证计算结果的精确度,设每个周期采集128点进行频谱分析运算,则采样频率要达到6.4MHz ,而单片机内部A/D 采样速率只有200kHz ,因此无法满足题目要求。

方案二:根据题目要求,A/D 采样频率至少要6.4 MHz ,因此我们选用专用A/D 转换器ADS930。

此A/D 转换器采样速率最高达30M ,完全能够满足题目要求。

信号回放采用高速的专用D/A 芯片AD9708,其速率高达150M ,能满足题目设计要求。

综上,本设计采用方案二进行信号采集及回放。

3.频率测量方案选择利用单片机内部资源的电压比较器,将输入信号转化成方波信号,再利用上升沿触发产生中断,计算相邻两次中断的时间间隔,即为方波信号的周期,进而得到输入信号的频率。

二、理论分析与计算1.利用FFT 进行谐波分析快速傅里叶变换(FFT )是离散傅里叶变换的快速算法,它是根据傅里叶变换的奇、偶、虚、实特性,对离散傅里叶变化的算法进行改进获得的。

假设进行计算的点数为N ,那么DFT 算法计算量是2N 的量级。

而基—2FFT 的算法计算量是N*M(M N 2=),因此采用快速傅里叶变换算法对信号进行频谱分析能够大大加快运算速度,提高系统整体性能。

在本设计中,要求对输入的周期信号进行频谱分析,根据信号处理原理,需要对信号进行整周期采样,这样才不会发生频谱泄露问题。

比如进行128点FFT 运算,就需要以输入信号频率128倍的采样速率对信号进行采样,即采样速率n s f N f ⨯=(N=128),n f 为输入信号频率。

当然每个周期采样点数N 越大,计算结果也越精确,这也会使得运算量呈指数级上升,因此在实际设计过程中势必综合考虑运算结果精确度和运算时间之间的矛盾关系。

经测试,以C8051F360高速执行速度,对128点数据进行FFT 计算有很高的实时性。

因此本设计采用128点FFT 运算。

根据数字信号处理原理,序列的DFT 就是对有限长非周期信号频谱进行等间隔采样。

要利用FFT 算法求出信号频谱首先要对被测信号进行采样,采样频率即为上文已述的n s f N f ⨯=。

采样以后信号就变为离散的有限长序列()n x 。

然后经过FFT 算法求得()k X ,()k X 代表的相应频率点上的幅值,即()])[(n x FFT k X = 1,...,1,0-=N k幅度谱: ())()(22k X k X k X I R+= 相位谱: )()(a r c t a n )(k X k X k R I =Φ 上式中,()k X R 和()k X I 分别为()k X 的实部和虚部。

通常将两条谱线之间的距离称为频率的分辨率。

对用FFT 进行频谱分析来说,频谱分辨率可表示为Nf f s =∆,式中N 即为采样点数,也可称为FFT 长度。

假设采样频率为128kHz ,则频率分辨率为1kHz 。

根据采样定理,采样频率须大于信号最高频率的2倍,否则会发生频谱混叠现象。

由于本设计中采样频率随着输入信号频率一起变动,且固定为信号频率的128倍,因此不必担心频谱混叠现象。

FFT 运算结果为两个128元素的二维数组()k X R 、()k X I 。

据上述分析,其中第n 个点的频率值为n n s f n Nf N n N f n ⨯=⨯⨯=⨯ 因为n f 为输入信号频率,所以序号为0的点为零频点,即直流分量。

序号为1的点为基波分量。

相应的,序号为n 的点为信号的n 次谐波分量。

上文已述,谐波的幅度谱为()k X ,现假设谐波分量幅值为A,则有()N k X A /2⨯=。

直流分量的幅值为()N X A /00=。

2.波形回放设计要求记录的波形长度至少为8个周期,根据方案设计的采样频率为信号周期的128倍,至少需要采集8*128,即1024个波形数据。

本设计中采用的A/D 转换器为8位的ADS930,每个数据为1个字节,所以需要1K 的存储器来存储采集的数据,FPGA 中有大量的存储空间,因此这点可以很容易做到。

三、系统软硬件设计(1) 系统硬件设计1.单片机最小系统设计根据题意,FFT 运算的计算量比较大,因此需要一个运算速度比较高的单片机系统,基于上述要求,本设计选择了C8051F360单片机,其最高工作频率达到了100M,远优于其他系列的单片机,同时外扩了1KB 的RAM ,能存储大量运算过程中的数据变量。

单片机和键盘、LCD 模块之间的接口在CPLD 中实现,这样大大简化了最小系统外围电路的复杂度。

单片机数据总线和FPGA 直接相连,这样可以和FPGA 内部存储器方便地进行数据传输。

CPLD 内部地址译码电路的地址选择信号CS1、CS2和FPGA 直接相连,作为FPGA 内部存储器的片选信号。

单片机最小系统原理框图如图3-1-1所示。

C8051F3604×4键盘LCD 模块编码式键盘接口LCD 模块接口地址译码电路FPGA 大容量RAMCPLD 单片机最小系统CS1CS2图3-1-1 单片机最小系统原理框图2.信号调理电路设计本设计选用的A/D转换芯片的输入电压范围为1~2V,而信号源产生的信号幅值不一定满足该幅度要求,因此需要设计一个信号调理电路对输入信号的幅值和直流偏置进行调节。

信号调理电路原理图见图3-1-1。

信号调理电路由两级构成,第一级为电压跟随电路,能减小信号源级与A/D转换器之间的干扰。

第二级用于直流偏置和幅值调节。

在信号调理信号输出端加了一个RC低通滤波器,用于滤除输入信号频带范围以外的高频噪声。

图3-2-1 信号调理电路原理图3.锁相环模块设计锁相环模块是本设计的一大难点,也是较为关键的一个模块。

本设计采用CD4046专用锁相环芯片,其主要由相位比较器(PC)、压控振荡器(VCO)、低通滤波器三部分组成。

锁相环模块设计原理图如图3-3-1所示。

信号先经过比较器LM393整形成方波之后,输入到CD4046第14脚。

CD4046第3、4脚之间要接一个128分频器,这样第四脚输出的方波信号频率为输入信号频率的128倍。

此方波信号作为A/D转换器时钟信号。

该电路中核心外围元件为C1、R1,这两个元件决定了锁相环的中心频率。

R1值减小,能锁定的频率范围增加。

同时,PR1和C2构成的低通滤波器也影响锁相环性能,设锁相环能锁定的最小频率的中期为T,则一般要求PR1*C2>10T。

图3-3-1 锁相环模块电路图4.信号回放电路设计信号回放电路主要由D/A转换器AD9708和信号调理电路构成。

信号调理电路原理图和图3-2-1类似,这里不再赘述。

5.数据存储电路的FPGA实现数据存储电路主要在FPGA中实现。

FPGA内部数据存储电路原理框图如图3-5-1所示。

START信号由单片机控制,当START信号为低(即0)时,计数器清零,当START信号恢复为高电平后计数器重新计数。

而EOC则作为单片机外部中断输入信号,当地址计数器计满1024个数时,A/D转换器已经将1024个(8个周期)采集的数据送入双口RAM2中,地址计数器通过EOC产生一个高电平信号,送入单片机外部中断输入引脚,从而产生中断,单片机执行中断程序控制START 信号,使地址计数器清零,并对数据进行读取和显示处理。

采集完数据后双口RAM2便不断地以循环方式对向外部D/A 送数据,实现波形的回放。

FPGA 顶层原理图见附录。

D0~D7ALE /CS2/RDEOCSTART地址锁存双口RAM2地址计数器分频电路CLK0单片机子系统FPGA A10~A8双口RAM1/CS1ADdata DAdata图3-5-1 数据存储电路原理框图 (2) 系统软件设计系统程序设计的核心是FFT 算法。

本设计采用时间抽取基2定点FFT 算法。

算法具体代码见附录。

系统测量程序流程图如图3-6-1所示。

开机显示画面内部资源初始化显示频率测量谐波分析频谱绘制波形绘制LCD 初始化选择菜单返回四、测试方案与测试结果1.测量仪器XJ1780A 直流稳压源DF1641B 函数信号发生器GDM-8135 万用表Tektronix TDS2012 数字示波器2.测量方案及内容对占空比为50%的方波信号进行频谱和频率测量分析,并将系统测试结果和matlab计算结果相比较,比较实测值和理论值直接的误差大小。

相关主题