一种数码传真机的设计与实现
2008-03-31
作者:刘 勇,傅其祥,王 伟,肖顺
摘 要:一种基于单片机控制的数码传真机。介绍了系统各功能模块的设计,并结合Windows FAT文件管理系统的磁盘管理思想,提出了一种基于闪存(FLASH芯片)的传真文件存储管理" title="存储管理">存储管理方案,有效解决了有限不挥发存储器的最佳应用问题。
关键词:数码传真机 MODEM DSP Windows FAT 文件管理
传统传真机利用纸张作为媒质进行传真文件的收发,给用户使用带来不便的同时,也造成了资源浪费。而数码传真机可以直接与电脑连接,利用数据存储" title="数据存储">数据存储芯片作为存储介质,节约了纸张等资源,并且数码传真机具有传真质量高、传输速率快、使用方式灵活、节省通信费用等优点。因此,对于数码传真机的研究应用具有重要的实际应用价值。
本数码传真机系统以单片机作为系统总控单元,利用MODEM芯片(CX06833)实现调制、解调功能,利用闪存(FLASH芯片)作为传真文件数据的存储介质。同时,为减少系统占用空间和满足控制信号转换的时序要求,用CPLD(XC95288)实现系统外围芯片的译码、读写控制。系统设计包括图像扫描、编码模块,实现了与普通传真机的兼容。本数码传真机系统实现功能有:(1)传真文件的实时、定时发送;(2)传真的自动应答、接收及传真文件数据的掉电后保存;(3)DSP控制的图像扫描、编码功能;(4)语音解码、播放功能。
本文介绍了数码传真机系统总体设计思想,较详细地描述了系统各功能模块的设计,主要包括主控单片机模块及其与主机的交互协议、基于MODEM模块的传真通信流程、CPLD控制的译码逻辑电路、DSP控制的图像扫描模块,并提出了一种基于FLASH芯片的文件数据存储方案" title="存储方案">存储方案,解决了传真文件数据的不连续存储及文件删除后存储空间的有效利用问题。
1 数码传真机系统总体设计
此数码传真机系统通过串口" title="串口">串口与PC机实现数据通信,在主控单片机的控制下,把传真数据传送到调制、解调模块,再由MODEM芯片完成调制功能。接收传真时,主控单片机首先把接收到的传真数据写入数据存储芯片(FLASH),再按照规定协议上传给主机。由DSP控制的图像扫描模块实现扫描及传真编码功能,扫描数据经过传真编码后存储到FLASH芯片(2MB)中,再在主控单片机的控制下,完成图像的传真传输。各个功能模块的读写、片选等逻辑控制由CPLD模块实现。
系统设计采用模块化设计思想,整个数码传真机系统可以划分为:主控单片机模块、调制解调及语音播放模块、液晶显示模块、基于CPLD控制的译码逻辑模块、基于DSP控制的图像扫描模块、电源及外围电路模块。系统的组成框图如图1所示。
2 主要功能模块详细设计描述
2.1 基于单片机总体控制模块
单片机(AT89C51)作为数码传真机系统的总体控制单元,控制其他各功能模块的工作。主要功能有:通过串口与PC机控制软件进行通信;控制调制、解调模块工作及传真协议交互;读取主机下载数据或图像扫描编码数据,并进行数据存储;发送、接收传真数据。由于系统中扩展模块和外部扩展数据存储器数量较多,选用CPLD实现各模块的片选、读写逻辑控制。总体控制模块设计如图2所示。
2.1.1 传真机与主控计算机的交互协议
传真机与主控计算机通过串口(RS232)实现数据通信。交互协议的主要信息包括:计算机下载的功能信息(如开始发送传真、终止传真等功能)、主机下载的传真数据、传真机上传给计算机的功能信息及传真数据。交互协议中,采用命令头、流水号、帧校验和的传输方式。功能传输的格式规定为:
0x55+0xAA+pipenum+length+state+value1+value2+…+valuen+sumcheck
其中:0x55、0xAA是功能命令头;pipenum是流水号;length是命令功能帧长度;state是功能号;value1~valuen是功能参数;sumcheck是帧校验和。
数据传输格式规定为:0x66+0x99+ pipenum+length+data1+data2+…+datan+sumcheck
其中:0x66、0x99是数据命令头;length是数据帧长度;data1~datan是数据;sumcheck同样是数据帧校验和。
主控计算机下载一份传真数据到传真机的程序流程如图3所示。传真机上传一份传真数据到主机的程序流程类似。
2.1.2 基于CPLD的片选、读写逻辑控制功能实现
数码传真机系统中,单片机要访问的功能模块较多,主要有:外部扩展RAM模块、外部数据存储空间FLASH模块、MODEM调制解调模块、DSP图像扫描模块。设计中,采用AT89C51的P1口作为外部扩展模块的选择信号,用CPLD译码,灵活实现各个不同模块之间的片选、读写控制。
CPLD程序设计中,用VHDL语言实现控制功能模块的程序设计,并用Modesim仿真验证。此功能模块的输入端口有:AT89C51的地址、数据复用信号(P0、P2);AT89C51的模块选择控制信号(P1);地址锁存信号(ALE);读写信号(WR、RD)。输出端口主要有:外部FLASH的地址、数据信号及片选、读写信号;外部扩展RAM的片控制信号;MODEM芯片的数据、片选、读写信号;DSP模块的地址、数据、片选读写信号。
2.2 MODEM芯片功能描述及传真通信过程的建立
系统设计中,MODEM芯片采用CX06833,实现数字信号的调制、解调功能。CX06833采用TQFP-144封装,片内集成微控制器、ROM(256KB)、RAM(32KB);可以通过串口或并口与主机相连(此系统中选择为并口方式与主控单片机连接);可以与语音解码芯片(CX20442)相连,实现语音播放功能。并且自动完成数字信号的调制解调功能,减少了主机的运算量。对CX06833的操作是通过对其片内寄存器的读写实现的。
数码传真机用T.30作为标准化的传输规程,采用二进码信号方式。整个传真通信过程包括五个阶段:阶段A-呼叫建立,包括拨号后被呼方应答,或检到振铃后应答呼方;阶段B-报文前处理,包括标识部分和命令部分;阶段C-报文传输;阶段D-报文后过程;阶段E-呼叫释放。
2.3 基于DSP控制的图像扫描模块设计
图像扫描模块由DSP(TMS320VC5402)作为主控器件,芯片具体内部结构、管脚分布、工作时序等可参照TI公司提供的数据手册。设计中,DSP的增强主机接口HPI8作为普通I/O口,控制扫描仪CIS及马达控制电路部分工作。图像扫描模块设计为彩色和黑白两种模式。首先,CIS(Contact Image Sensors)感应到的模拟信号通过ADC器件(彩色图像选择12位的AD器件WM8150;黑白图像选择二值比较电路)进行数字化,得到的数据通过多通道缓冲串口(MCBSP)发送给DSP。DSP工作设定为DMA方式,接收扫描图像数据后,进行传真编码处理,存储到数据缓冲芯片SRAM中,再由主控单片机实现传真发送。扫描电路的时钟、串口接收时钟及帧同步信号均由CPLD提供。DSP的外围配置包括:3片SRAM(选用CYPRESS公司的CY7C1041CV33)作为扫描数据缓冲;一片FLASH存储器(选用AMD公司的AM49LV001)作为扩展程序存储空间;JTAG接口。VC5402的Boot Loader模式为并口Boot模式。在此数码传真机系统中,VC5402实现的主要数据处理算法是改进的霍夫曼图像传真压缩编码。图像扫描模块结构如图4所示。
3 基于闪存的传真文件存储方案设计
有效的传真文件存储管理方案是此数码传真机系统的关键技术之一。待发送的传真和接收到的传真首先进行存储,然后在必要时(传真发送完成或接收到的传真上传主机后)删除,并释放占用的存储空间。对于数码传真机系统,文件的存储和删除的需要反复进行。硬件存储资源有限,如果传真文件存储管理不善,可能造成存储资源的巨大浪费,并可能影响数码传真机的正常工作。
本数码传真机系统中,采用非易失性存储器件FLASH(2MB)作为数据存储器件,结合Windows FAT文件系统中磁盘存储管理思想,通过建立文件存储管理链表" title="链表">链表,设计了适合传真机需求的传真文件管理存储方案。FLASH芯片选用AMD公司的AMD29F016D,其存储空间为2MB。2MB的存储空间分成32段(0~31段),每段存储空间64KB。FLASH芯片存储空间的初始状态是0xFF,每位的存储内容只能从‘1’写‘0’而不能相反,任何把数据从‘0’写成‘1’的操作都会使芯片处于读取状态,并且它只能进行段擦除和整片擦除操作。要对某段存储空间的数据进行修改,必须先进行整段的擦除操作,数据在缓冲区修改后,再整段写入FLASH中。
3.1 传真文件存储管理区的建立
利用FLASH芯片作为传真数据的存储器件,需要建立合理的文件存储管理结构。为实现数据的不连续存储,并避免数据删除后,存储空间得不到有效利用造成资源浪费,结合Windows FAT文件管理中的索引式文件存储结构,通过对存储空间重新划分,设立文件链表管理区,提出了基于FLASH芯片的文件存储方案。
3.1.1 传真文件信息区组织
此方案中,采用FLASH芯片的第00段作为传真文件信息区,存储收发传真的容量、页数、电话号码、存储空间等信息。根据传真过程的实际需要,把传真文件信息区分为接收传真信息区、发送传真信息区、文件存储链表区和其他信息存储区。其中接收传真信息区和发送传真信息区采用同样的结构,主要存储传真页数、传真容量、存储起始地址、存储结束地址和来源(发送)电话号码等信息。按这种结构,每份传真占用空间20B左右。读取文件内容时,首先把起始扇区地址读入,查找文件存储列表区,按照索引结构读取文件内容。
3.1.2 传真文件存储链表区
此存储管理方案中,把FLASH存储空间进行再次划分,组成更小的存储单元——扇区。每次文件存储都以扇区为最小存储单位,并采用链表结构实现一个完整文件的存储。传真文件存储链表区是此方案的核心。
在数码传真机工作过程中,文件数据首先存储到FLASH芯片中,如果待写入的存储空间中已有数据,则写入操作失败;如果文件删除后的存储空间没有回收,则会造成存储资源的浪费。首先,把每段64KB的存储空间划分为256个扇区((0x00~0xFF号扇区),每个扇区256个字节,作为最小的存储单元,这样每个扇区的物理地址为:SA(段号)+PAGE(扇区号),并用一个字节表明此扇区所存储字节数。在此基础上,建立文件存储链表区。由于SA(段号)不可能是0xFF,所以用链表中每个单元的首字节内容指示此扇区的状态:0xFF表示此扇区空闲,可以存储数据;非0xFF表示此扇区已用。在文件数据写入或删除此扇区后,相应指示状态也要修改。
根据传真过程的实际需要,要求明确知道传真数据一页结束和总传真结束的位置,在链表的每个单元中再增加一个字节表示此信息。文件存储链表中每个指示单元的存储结构如表1所示。
表1中:SA是段号(取值范围:1~31),PAGE是扇区号(取值范围:0x00~0xFF),NUM是此扇区占用字节数(取值范围:0x01~0xFF),STATE是此扇区的状态(0x00:整份传真结束;0x01:一页传真结束;0xFF:不是结束标志)。
每个扇区的存储空间为256B。通常每份传真的容量都较大,需要多个扇区存储,所以用文件链表结构实现一份传真数据的完整存储。根据每个指示单元的存储结构,利用其首字节内容表示此扇区的存储状态。这样存储一份完整文件所建立的文件存储链表如图5所示。
3.2 传真文件存储及删除流程
要实现传真文件数据在FLASH芯片中的存储,首先要搜索空闲扇区位置,接收数据缓存(≤256B),再对FLASH进行写操作,把缓冲区数据写入FLASH;写满一个扇区后,搜索下一空闲扇区并修改文件存储链表内容。如此反复直至传真结束,设置结束标志位。采用这种存储方式,可以实现文件数据的不连续存储。
在数码传真机工作过程中,传真文件数据要反复进行删除操作,如在传真发送完成,或在上传接收传真后。文件删除完成后,释放占用的存储空间,以便作收发传真存储之用。否则,可能造成存储空间的浪费。在本存储方案中,由于文件存储采用头信息和链表存储的结构,文件的删除操作也相应地进行传真数据删除和头信息区内容修改。FLASH芯片只能进行段擦除和整片擦除,在同一段中,有的数据可能要保留,有的数据要删除,所以在数据删除和头信息区修改过程中,利用外部扩展RAM作为数据缓存,并用256个字节作为存储扇区空间内容是否保留的标志,规定0xFF代表数据保留、0x00代表数据不保留。采用这种存储方案,当传真文件删除后,存储空间可以再次回收利用,避免了存储空间的浪费。系统设计中,通过编程实现并验证了此存储方案的有效性。一份传真完整的存储、删除流程如图6所示。
本数码传真机设计思想和实现方案对其他需要数据存储的应用场合具有参考价值。
参考文献
1 周子耀.传真机原理与应用[M].北京:中国铁道出版社,1992
2 张勇.C/C++语言硬件程序设计[M].西安:西安电子科技大学出版社,2003
3 林国钧.传真机常见故障分析与排除[M].北京:机械工业出版社,2002
4 Willian.S.Dorvis著,陈向群译.操作系统基础教程[M].北京:电子工业出版社,2003
5 AMD29F016D datasheet.AMD Cro.1999
6 TMS320VC5402 datasheet.TI Cro.2000
7 CC06833-3X/4X datasheet.2000
8 VHDL Referenc Manual.Xilinx Cro.1997
9 李朝青.单片机原理与接口技术[M].北京:北京航空航天大学出版社,2003