3 CPLD部分设计
3.1 CPLD1控制部分
CPLD1控制ADS8365包括控制A/D转换器的采样率以及数据量化输出模式等,同时控制CS信号可有效抑制噪声;系统时钟输入为50 MHz,CPLD1对其分频产生5 MHz时钟以触发A/D转换器。程序通过控制A/D转换器的HOLDX来启动A/D转换;控制A/D转换器的ADD来控制其输出通道信息,控制A/D转换器的ADDRESS控制其数据输出工作模式。考虑DSP内程序算法每次判断通道信息会增加DSP运算负担,故设置A/D转换无通道信息,A/D转换器工作在CYCLE模式下,A/D转换后的数据按通道号顺序循环输出,DSP可根据顺序性直接判定数据的具体通道。图2为CPLD1控制ADS8365电路。
CPLD1控制DSP主要包括DSP复位设置,看门狗设置,DSP控制信号与CE空间组合逻辑控制读FIFO1等。
3.2 数据帧格式设置
CPLD1将A/D转换后的数据不断写入FIFO1,当2 048字节数据写入FIFO1后,CPLD添加16位的帧标志及16位的帧计数,即数据格式为:被采集数据+帧标志+帧计数。
3.3 CPLD2控制接口
接口转换模块的核心是CPLD,负责从输出FIFO2中读取数据,按照遥测系统的要求时序编码后。通过RS-422总线将压缩后的数据上传至遥测系统。
4 DSP部分设计
4.1 DSP程序设计流程
设备上电DSP复位后,由其内部固化的自引导程序(BOOT)将存于Flash存储器的程序和数据搬移至内部RAM中,然后DSP开始读取压缩算法的应用程序,继续运行。DSP的工作流程为:首先初始化DSP的CSL函数库,然后初始化PLL、GPIO及相关中断寄存器,等待中断。
采集模块16位数据通过总线不断写入。FIFO1中。程序通过控制其半满(HF)信号,即当数据超过半满时,HF信号低电平有效,将触发一次中断通知 DSP,DSP则进入中断后把2048字节的数据从输入FIFO1中读入到DSP所指向的SDRAM的空间中,DSP在处理完中断的空闲时间内进行高速压缩。将压缩数据与原数据相比较,若压缩数据小于原数据,就把压缩数据写入DSP的软FIFO中,否则,就将原数据写入DSP的软FIFO中。
最终,DSP把软FIFO中得压缩数据写入输出FIFO2中,等待发送模块将数据上传至遥测系统。
4.2 数据压缩算法选择
压缩编码信源信息在解压缩时能够完全恢复,也即在压缩和解压缩过程中信源信息无损失,该编码方法称为无损压缩,经常使用的无损压缩方法有Shannon-Fano编码,Huffman编码,游程(Run-length)编码,IZW (Lempel-Ziv-Welch)编码和算术编码(ARC)等。这里重点讨论ARC算法和LZW算法。ARC算法的思想就像查字典。众所周知.英文词典的编排方式是按首字母排序,首字母相同的词继续按第二字母排序,以此类推。实际应用算术编码更巧妙。利用字符出现的概率对0~1区间分割,然后用0~1 之间的一个小数对数据编码,原始数据越多,这个小数点后的位数就越多。
LZW编码是围绕称为词典的转换表完成的。该转换表用来存放称为前缀(Prefix)的字符序列,并且为每个表项分配一个码字(Code word),或称为序号,这张转换表实际上是把8位ASCII字符集进行扩充。增加的符号用来表示在文本或图像中出现的可变长度ASCII字符串。扩充后的代码可用9~12位甚至更多的位表示。12位有4 096个不同的12位代码,这就是说。转换表有4 096个表项,其中256个表项用于存放已定义的字符,剩下的3 840个表项用于存放前缀(Prefix)。LZW编码器(软件编码器或硬件编码器)通过管理该词典完成输入与输出之间的转换。LZW编码器的输入是字符流(Charstream),字符流是用8位ASCII字符组成的字符串,输出是用n位(例如12位)表示的码字流(Codestream),码字代表单个字符或多个字符组成的字符串。LZW编码器采用一种实用的分析(parsing)算法,称为贪婪分析算法(greedy parsingalgorithm)。
在贪婪分析算法中,每一次分析都要串行检查来自字符流(Charstream)的字符串,从中分解出已识别的最长字符串,也就是已在词典中出现的最长的前缀(Prefix)。用已知的前缀(Prefix)加上下一个输入字符C也就是当前字符(Currentcharacter)作为该前缀的扩展字符,形成新的扩展字符串——缀一符串(Sning):Prefix.C。这个新的缀一符串(String)是否要加到词典中,还要看词典中是否存有和它相同的缀一符串(String)。
如果有,那么这个缀一符串(String)就变成前缀(Prefix),继续输入新的字符,否则就把这个缀一符串字符(String)写到词典中生成一个新的前缀(Prefix),并给一个代码。
一般来说,不同的压缩算法有不同的优缺点。不同算法的复杂性对空间的要求以及压缩率也不同。这不仅依赖于压缩方法,也与被压缩数据的特点有关。