1.导言
本文所介绍的数据收集体系是依据ARM的信号处理体系中的一部分,该信号处理体系用于导弹的数字式主动驾驶仪的开发研讨中。整个别系由信号扩大、信号滤波、信号采样、高速数字信号处理等部分组成。其间,数据收集体系是一个重要的环节,它的高速性和精确性直接影响到整个信号处理体系的功能。传统办法是运用CPU经过软件操控模数转化,这样必将频频中止体系的运转然后削弱体系的数据运算才能,数据收集的速度也将受到限制。因而,本文运用可编程逻辑操控器CPLD,由硬件操控模数转化和数据存储,然后最大极限地进步体系的信号收集和处理才能。
2.体系整体规划方案
数据收集体系的整体规划方案如图1所示。依据Verilog HDL规划的主动状况机由硬件操控A/D转化以及主意向FIFO中存储数据,当采样数据到达要求时,向CPU请求中止,ARM体系发动DMA完结数据读取。待CPU取走数据后,给状况机一个复位信号,一起对收集到的数据进行高速处理。这期间数据收集不中止,然后完结接连的实时数据收集和实时数据处理。数据收集体系由A/D芯片AD7656、逻辑操控芯片EPM7128、FIFO芯片CY7C425以及缓冲74LVT245组成,操控逻辑用Verilog HDL言语描绘。
3.硬件规划
3.1 A/D转化芯片
体系的A/D转化芯片选用AD7656,一个AD7656芯片具有6个16位逐次渐进模数转化器,在5V电压供电下采样率为250kSPS。芯片中的采样坚持扩大器最大处理输入频率为8MHz。转化进程和数据获取由CONVST信号和内部时钟操控,三个CONVST管脚可以操控三对独立的模数转化器一起采样。AD7656依据内部参阅电压2.5V可供给±10V或许±5V的双极性模仿量输入规模,或许依据外部参阅电压供给不同规模的双极性模仿量输入信号。
AD7656的内部转化时序图如图2所示。将三个CONVST管脚衔接在一起后,即可对六个A/D转化器一起进行采样。CONVST的上升沿触发A/D转化,转化时刻为3µs。转化进程中,BUSY信号坚持高电平不变,直到转化完毕时,BUSY信号由高变低,体系进入盯梢形式,转化成果存于输出数据寄存器中。当片选信号 坚持低电平不变时,接连六个读信号 低电平可以顺次读出六个A/D转化器的转化数据。
3.2 FIFO存储器
体系的FIFO存储器选用CY7C425,它是CYPRESS公司选用CMOS工艺制作的1K×9位可以完结先进先出算法,可以进行异步读写操作的双端口存储器。它供给全空 、全满 、半满 状况标志,用以避免数据溢出或缺乏。扩展逻辑电路允许多片FIFO进行数据宽度和存储深度的扩展而不会添加额定的时刻延迟。
CY7C425的异步读写时序图如图3所示。当写信号 为低电平时发生写操作,A/D转化的成果经过写操作不断存入FIFO中,存入必定数量的数据后,再经过读信号 将FIFO中的数据顺次读入CPU中。选用两片CY7C425扩展为16位1024字的高速异步FIFO存储器,数据处理速度到达50MHz,可以完结数据的高速写入和高速读出。
3.3 状况机模块
状况机FSM完结主动A/D转化和数据存储,操控芯片是EPM7128。此状况机由体系时钟驱动,操控A/D转化器的转化、FIFO的复位及写数,并发生中止信号告诉CPU读取数据。因为体系运用了两片AD7656,而不同芯片的个别会有不同,同一器材也会有温漂、时漂还有老化的问题,假如选用中止方法取数,很有或许会引起各个通道A/D采样率不一致而且单个通道A/D作业时采样率也不稳定。因而,可以不论BUSY信号,只需要把各段的时序留够满足的裕量就可以了,比如AD7656的转化时刻是3µs,那么,只需状况机坚持CONVST至少3µs的高电平,这样就可以彻底确认A/D转化的完毕。这样操控器就可以不需要检测A/D的BUSY信号,一起也能很精确地确保采样速率了。
体系复位时,转化信号CONVST及FIFO复位信号MR坚持低电平不变,此刻不进行数据收集。体系复位后,CONVST上升沿触发转化开端,体系进入采样坚持阶段。3µs后,待A/D转化完毕,接连发生12个A/D读脉冲,可以顺次读出12个通道的转化成果。取数的一起发生FIFO的写脉冲,可将读出的数据接连写入FIFO中。为利于CPU中处理软件的编写,CPLD中设置了一个计数器,可以进行32(2的5次方)次采样。最终发送中止信号到CPU,CPU经过DMA方法将数据悉数读入内部存储器,数字滤波经过取和今后右移5位即可进行。
4.Verilog HDL描绘
电子体系规划中一般遵从自上而下的规划思路,对体系进行规划、描绘与仿真。考虑到模块的通用性、移植性,常常运用硬件描绘言语来描绘数字体系,如Verilog HDL、VHDL、AHDL言语等。其间Verilog HDL言语具有结构明晰、文法简明、功能强壮、高速模仿和多库支撑等长处,被近90%的半导体公司运用,成为一种强壮的规划东西。
4.1 用Verilog HDL言语描绘主动状况机
主动状况机有两个输入信号和七个输出信号。输入信号中CLK由CPU的输出频率供给,发生50MHz的时钟频率,RST由CPU供给,担任复位状况机。CONVST发生A/D转化器的转化发动信号;ADC_CS、ADC1_RD、 ADC2_RD别离是两个A/D转化器的片选信号以及读信号;FIFO_WR和 FIFO_MR操控FIFO的读数和复位;中止信号INT告诉CPU在DMA方法下取数。程序如下:
module fsm(RST, CLK, CONVST, ADC_CS, ADC1_RD, ADC2_RD, FIFO_WR, FIFO_MR, INT);
input RST, CLK;
output CONVST, ADC_CS, ADC1_RD, ADC2_RD, FIFO_WR, FIFO_MR, INT;
reg CONVST, ADC_CS, ADC1_RD, ADC2_RD, FIFO_WR, FIFO_MR, INT;
parameter ST0=8‘b00000000, ST150=8’b10010110, ST152=8‘b10011000, ST153=8’b10011001,
ST155=8‘b10011011, ST156=8’b10011100, ST158=8‘b10011110, ST159=8’b10011111,
ST161=8‘b10100001, ST162=8’b10100010, ST164=8‘b10100100, ST165=8’b10100101,
ST167=8‘b10100111, ST168=8’b10101000, ST170=8‘b10101010, ST171=8’b10101011,
ST173=8‘b10101101, ST174=8’b10101110, ST176=8‘b10110000, ST177=8’b10110001,
ST179=8‘b10110011, ST180=8’b10110100, ST182=8‘b10110110, ST183=8’b10110111,
ST185=8‘b10111001;
reg[7:0] COUNTER;
reg[4:0] CN;
always @(posedge CLK)
if(!RST)
begin COUNTER《=0; ADC_CS《=1; ADC1_RD《=1; ADC2_RD《=1;
FIFO_WR《=1; FIFO_MR《=0; CONVST《=0; CN《=0;INT《=0; end
else if(CN》=5’b11111)
begin INT《=1; COUNTER《=0; ADC_CS《=1; ADC1_RD《=1;
ADC2_RD《=1; FIFO_WR《=1; FIFO_MR《=0; CONVST《=0; end
else
begin
if(COUNTER《8‘b11001100)
COUNTER《=COUNTER+8’b00000001;
else
begin CN《=CN+5‘b00001; COUNTER《=0; end
case(COUNTER)
ST0: begin CONVST《=1; FIFO_MR《=1; end
ST150: begin ADC_CS《=0; ADC1_RD《=0; FIFO_WR《=0; end
ST152: begin FIFO_WR《=1; ADC1_RD《=1; end
ST153: begin FIFO_WR《=0; ADC1_RD《=0; end
ST155: begin FIFO_WR《=1; ADC1_RD《=1; end
ST156: begin FIFO_WR《=0; ADC1_RD《=0; end
ST158: begin FIFO_WR《=1; ADC1_RD《=1; end
ST159: begin FIFO_WR《=0; ADC1_RD《=0; end
ST161: begin FIFO_WR《=1; ADC1_RD《=1; end
ST162: begin FIFO_WR《=0; ADC1_RD《=0; end
ST164: begin FIFO_WR《=1; ADC1_RD《=1; end
ST165: begin FIFO_WR《=0; ADC1_RD《=0; end
ST167: begin FIFO_WR《=1; ADC1_RD《=1; end
ST168: begin FIFO_WR《=0; ADC2_RD《=0; end
ST170: begin FIFO_WR《=1; ADC2_RD《=1; end
ST171: begin FIFO_WR《=0; ADC2_RD《=0; end
ST173: begin FIFO_WR《=1; ADC2_RD《=1; end
ST174: begin FIFO_WR《=0; ADC2_RD《=0; end
ST176: begin FIFO_WR《=1; ADC2_RD《=1; end
ST177: begin FIFO_WR《=0; ADC2_RD《=0; end
ST179: begin FIFO_WR《=1; ADC2_RD《=1; end
ST180: begin FIFO_WR《=0; ADC2_RD《=0; end
ST182: begin FIFO_WR《=1; ADC2_RD《=1; end
ST183: begin FIFO_WR《=0; ADC2_RD《=0; end
ST185: begin FIFO_WR《=1; ADC2_RD《=1; ADC_CS《=1; CONVST《=0; end
endcase
end
endmodule
4.2 仿真图形
图4为状况机复位时的仿真图形。由图可以看出,当按下复位键时,A/D转化信号CONVST坚持为低电平,A/D转化器不收集数据。一起,FIFO复位信号FIFO_MR也坚持低电平不变,可将FIFO中的数据清空。当复位信号变高后,在外部时钟CLK的第一个上升沿,CONVST电平升高,开端A/D转化(存在时延)。
图5为状况机从A/D转化器将数据读入FIFO中的时序图。由图可知,3µs(A/D转化器的转化时刻)后,别离经过对ADC_CS、ADC1_RD、ADC2_RD、FIFO_WR信号的操控,完结将12路通道的数据顺次读入FIFO中的操作。
5.完毕语
本文提出的主动数据收集体系选用CPLD芯片,用硬件描绘言语规划主动状况机,完结硬件操控数据收集和存储。现在收集体系运用于开发数字式主动驾驶仪的ARM试验运用板上,省去了ARM监控A/D芯片的时刻,使信号处理体系可以高效地作业。经过调整状况机中的采样次数或选用转化速率更高的A/D芯片可进一步进步体系的数据收集速度。
责任编辑:gt