可见复数乘法需要的实数乘法由原来的4个变为3个,式中 因子可作为常数存入ROM,这样复数乘法只需3个实数乘法3个实数加法就可完成。由上述算法编程得到的蝶形变换器经综合后生成的原理图如图3所示。原理图中clk是时钟输入引脚;X_re,X_im,Y_re,Y_im分别是复数X,Y的实部和虚部;Cin代表 ;cms和cps分别表示 和 ;out1_re,out1_im,out2_re,out2_im代表蝶形变换后两个输出数据的实部和虚部。
地址产生及控制单元对整个参与FFT运算的数据的存储、读写时序进行控制,是 FFT 运算器的重要组成部分。地址产生及控制单元将要产生每一阶运算单元输入数据的读写地址、存储器的读写、使能等控制信号,同时还要产生旋转因子系数的读出地址,将配对的数据和旋转因子系数按序送入蝶形运算单元,从而实现每一阶的蝶形运算。地址产生及控制单元的设计方法主要是利用有限状态机进行设计。针对每一阶运算单元的运算过程划分成不同的状态,不同的状态下输出不同的数据地址和控制信号。
表1列出了计算一帧1024点FFT占用FPGA内部资源的情况。经后仿真时序分析,该激光告警系统在系统时钟为50MHz的情况下,完成一帧1024点 FFT只需110μs,加上数据载入时间和数据读取时间只需230μs,满足实时处理的要求。从表中可以看出, FFT子模块完成后, FPGA还有大量资源可以利用,因此剩余资源可用于采集模块,从而在一块芯片上完成多种功能,有效减少了激光告警机的体积。
在信号处理前直接对FPGA的输入信号用Matlab仿真的频谱如图4,可见激光信号的波长峰值在523nm附近,数据在FPGA中进行FFT之后输出的数据经过倒序后得到的频谱结果如图5,对比两图可知FPGA输出与Matlab仿真结果基本相同,从而验证了告警系统的正确性。
4 总结
本文介绍了为激光告警机探测目标激光的波长所开发的CCD相机信号采集与快速处理系统设备的设计。该系统利用FPGA实现对Atmel公司的AViiVA M2 CL型线阵CCD相机输出数据的采集与处理,电路简单,可靠性强,充分利用了FPGA支持多信号标准、支持流水作业工作模式、内设块存储器等特点。
本文作者创新点:在电路设计方面:摆脱了以往Cameralink接口型相机在与信号处理器进行通信时必须在相机和处理器之间加入电平转换芯片的做法,充分利用了FPGA支持LVDS电平的优势,从而减小了告警系统的电路体积和复杂度,在硬件方面提高了系统的可靠性。在程序设计方面:充分利用FPGA内部 RAM资源,多处用到FIFO存储器,以流水作业为手段,缩短了系统响应时间。