(西安邮电学院 计算机科学与技术系,陕西 西安710061)
双网传真机是指可以接入Internet网络和PSTN网络中进行发送和接收文字、图像、图文稿件的传真机。由于Internet技术的发展,Internet以其方便性、价格低廉等特点在当今通信中占有重要地位。普通传真机通过PSTN网络进行传真,发送和接收耗时,速度慢,而且费用比较昂贵。本文设计和开发的双网传真机不仅可以兼容普通传真机,而且可以使用Internet网络进行收发传真,具有速度快、费用低廉的特点。
本文设计的双网传真机接入Internet和传真服务器进行通信,通信协议是非实时传真标准协议,通过该传真服务器中转将传真推送到目标传真机,根据目标传真机是双网传真机还是普通传真机,选择对应的Internet网络、PSTN网络进行推送。接入PSTN网络和目标传真机通过 T30[1]协议进行通信。通过Internet发送,在扫描稿件时将稿件数据和信息封装成Tiff文件的形式,通过非实时传真标准协议将文件发送到传真服务器,传真服务器判断该传真是发往普通传真机还是双网传真机。如果发往普通传真机,服务器会解析Tiff文件并将解析出的传真编码数据发往普通传真机;如果发往双网数字传真机,则将该tiff文件放到用户目录中,等待双网传真机自动或者手动收取。其在整个双网传真系统中的位置如图1所示。
本文设计的双网传真机以Nios II嵌入式软核为处理器,采用 SoPC[2]的软硬件协同设计方法进行设计,以求最佳的性能价格比。SoPC技术硬件用Altera公司的FPGA技术来实现,软件用C语言编程实现,操作系统平台采用实时操作系统内核 μC/OS-II、TCP/IP协议栈使用Niche TCP/IP协议栈。以Altera Cyclone EP1C20为实验板进行系统实现和验证。
根据对传真机功能和性能的分析,提出将耗时、算法复杂、数据处理量大的模块用电路实现,需要提供精确的时序信号逻辑也用电路实现,而对时间要求不苛刻的场合、CPU处理速度能跟上的功能模块用软件来实现。同时尽量利用可以利用的软硬件模块单元,增强系统的稳定性和可靠性,减少重复设计,缩短开发周期。系统设计的结构图如图2所示。
系统开发工具采用Altera公司提供的Quartus II和Nios II IDE。在Quartus II软件内,使用SoPC Builder开发硬件模块,形成硬件设计文件和自定义软件开发环境。Nios II IDE是基于GNU C/C++编译器和Eclipse IDE的,设计者可以很快开发、调试和仿真 Nios II系统,开发模块驱动程序、板级支持包(BSP)及用户程序。
本文设计的双网数字传真机以Altera Nios II软核为处理器、CIS扫描器件、电机、TPH打印器件、CIS、电机、TPH打印驱动板、Alter EP1C20开发板、Modem为硬件平台,通过Altera的FPGA实现硬件电路模块,主要需要实现的电路模块有A/D采样控制逻辑模块、图像二值化处理模块、MH[3]编码模块、MH译码模块、扫描、打印、电机时序驱动逻辑模块。
(1)A/D采样控制逻辑模块
通过CIS扫描器件把原稿的光信号转化为电信号,将CIS扫描器件获得的模拟电信号通过A/D转换器件转化为8 bit的数字信号输入图像处理二值化模块。A/D采样控制逻辑完成A/D器件的时序驱动。
(2)图像二值化处理模块
本模块输入数据为A/D转化后的每像素8 bit数据,根据扫描原有文本、灰度图像、图文并茂3种类型自动判别选用不同的算法,进行伪灰度处理,即根据抖动表(Dither)进行二值化处理,得到人眼感觉有层次(灰度变化)的二值图像,即半色调图像(Halftone)。灰度值图像转化为二值图像的算法原理是:通过实际的中间色调信号与存储在ROM中的阈值信号比较形成二值图像信号。
设输入的图像信号为Uij,与之对应的阈值为 Dij,Dij称之为 Dither矩阵或网孔表,则比较的结果为 Cij:
式中Uij是图像信号经过抽样、量化后的数字信号,Dij是根据一定的法则形成的阈值,也是数字信号。常用的Dither表是Bayes型矩阵,其方法是先构造出2×2矩阵,再用递推公式构造Dij,其基本的 2×2 矩阵为:
式中 n=22、23,…,2r。 U 为 n×n 的全 1 矩阵。
一般传真机采用的抖动表数据是 8×8的 Bayes矩阵,在实验中采用该方法处理得到的效果并不理想,图像对比度不是很强烈,整体效果较暗。因此作者根据FPGA硬件处理的特性,采用16×16的抖动矩阵对传真图像进行处理。采用该方法适应了FPGA芯片拥有丰富寄存器资源的特点,用来存储改进抖动表,在不影响处理速度的情况下,明显改进图像的处理效果,提高图像对比度,图像效果比较接近原图。从得出的效果图可以明显看出,改进方案比原有Bayer抖动表做抖动的图像对比度要好得多,代价为增加了一千多位寄存器。从而较好地解决了对图像二值化处理中对比度不强的问题。
(3)编码模块
将二值化后的图像数据经一维MH编码后交付通信模块使用。MH编码是一维改进的Huffman编码,是ITU-T T.4[4]标准中的一部分,ITU-T T.4标准的全称是三类传真机终端文档传输标准。MH编码具有效率高、容易扩展等特点。三类传真机一般都实现了一维MH编码和译码,有的也实现了二维MR编码,本文用硬件电路实现一维MH编码。对于二值信源来说,一幅传真图像是由扫描线上的像素组成的。而每一扫描线又总是由一些黑像素和白像素组成。将连续发生的黑像素为连‘1’,白像素为连‘0’,也称为黑游程和白游程。 连‘1’的个数称为黑游程的长度,连‘0’的个数称为白游程的长度。黑白游程交替出现。针对游程编码,哈夫曼MH码元很好地解决了传真信源的压缩问题,是T.30协议中规定的编码方式之一。实现时通过读取像素信息存储FIFO判断是黑游程还是白游程。当发生了黑白游程切换时,根据黑白游程计数形成码表访问地址,根据地址查找码表得到对应的编码码元。MHC编码硬件模块图如图3所示。
该编码数据将封装在T30协议中进行传输,T30协议规定的每样张的数据传输格式如图4所示。其中EOL为 End Of Line,即行同步码,格式为 000000000001。同步码是紧跟在每一行扫描线之后的特殊码字,它在有效数据中不可能出现,因而在突发错误之后能重新建立同步。特殊地,每页文件的第一个数据之前也设置一个 EOL。
填充码fill的作用是保证每扫描线,即每一行的数据传输时间不小于某一规定时间T,T为发送一行编码数据所用的最小时间,ITU-T T.4标准建议中规定T=20 ms,不足20 ms时间应加入填充码,其格式为长度不一的全“0”串。RTC为返回控制码,其格式为6个连发的EOL码,表示一页文件码的传输结束。
在通过Internet进行传真时需要将MH编码数据封装在TIFF文件中,封装成TIFF文件的过程通过软件模块实现。
(4)译码模块
基于FPGA硬件电路实现图像MH译码模块,采用快速译码策略。在译码时,由于码元不等长且数据量较大,构造译码树较困难,应采用快速译码方法。快速译码算法的基本思想是采取多步合一的方法,一次输入的不是一个码元,而是多个码元。根据码表的特点可知,白游程最短码长是4,黑游程最短码长是2。由此在译码开始时,码元是以穿行的方式进入译码电路,对白游程可以直接读取4 bit,进入译码查找,若非完整编码再逐位读取;对黑游程可以直接读取2 bit,进入译码查找,若非完整编码再逐位读取。译码的具体算法如下:
①按游程类型读取对应最小编码长度编码;
②在形成码中进行匹配,若成功,按游程类型继续读取对应最小编码长度编码,转入③;否则转入④;
③终结码中匹配,失败则读取下一位继续匹配,直至成功;
④在终结码中进行匹配,匹配成功则跳入①重新开始;否则读取下一位编码,转入②。重复以上操作,直到本行结束;
(5)扫描、打印、电机驱动逻辑。
本硬件模块采用FPGA实现,主要提供CIS扫描器件、TPH打印器件、电机的驱动时序信号。
操作系统采用实时操作系统内核μC/OS-II,硬件抽象层HAL[5]由Nios II开发工具生成,TCP/IP协议栈使用移植到μC/OS-II上的Niche TCP/IP协议栈。Altera EP1C20开发板含有SMSC LAN91C111-NE MAC/PHY芯片,该芯片完成网络中MAC/PHY功能。软件主要完成系统控制和T30协议通信过程、非实时传真通信过程、Tiff[6]文件创建、Tiff文件解析。由于μC/OS-II是多任务的实时内核,故系统划分和设计了以下任务:
(1)Init任务:初始化任务,建立任务之间的通信量。
(2)TCP/IP协议栈任务:Inet_main任务,该任务负责TCP/IP协议的运行。
(3)clock tick任务:系统ticks任务。
(4)T30发送任务:实现发送一封传真的T30通信过程。
(5)T30接收任务:实现接收一封传真的T30通信过程。
(6)SMTP发送任务:通过 SMTP命令 EHLO、AUTH、RCPT、MAIL、DATA、QUIT 和传真服务器进行对话,基于SMTP协议实现非实时传真通信协议,即按照服务器接收的发送传真格式发送一封特殊邮件到服务器。其中传真数据文件以附件的方式附在这封有固定格式和含义的邮件中,图像数据需要封装成Tiff文件的形式,附件发送时需要按照SMTP协议将数据重新编码为base64格式的编码数据才能进行发送。该封邮件内容固定格式中含有账号密码、发送参数、发往目标号码列表信息等内容,是非实时传真通信协议中规定的内容。
(7)POP3接收任务:通过 POP3命令 USER、PASS、STAT、RETR、QUIT实现与传真服务器的对话,从传真服务器收取一封特殊的邮件,该邮件的附件即为传真图像数据Tiff文件。收取下来的Tiff文件是base64编码数据,首先需要将文件数据进行base64解码还原出Tiff文件。
(8)Tiff文件解码任务:Tiff文件是标签式文件,按照Tiff文件的格式和对应标签含义解析出Tiff文件的信息和具体的图像数据,然后触发MH解码电路模块工作并驱动电机和TPH打印模块打印黑白像素点。
(9)创建 Tiff文件任务:根据 Tiff文件信息标签组建Tiff文件。
双网传真机系统在Altera Cyclone EP1C20实验板、外加驱动板、Modem等硬件基础上开发成功,通过反复软硬件调试,软硬件运行稳定、达到系统功能指标。利用了μC/OS-II能够稳定、安全处理并发多任务这一特点,软件模块稳定运行,体现出较高的实时性和可靠性,取得了较好的实际效果。本系统可以自己设计和生产带Altera FPGA芯片的实验板,集成Ethernet MAC/PHY芯片和Modem芯片等,降低系统成本。同时本系统还可以与PC机联网,通过PC机向双网传真机发送文件和接收文件,这样可以提高工作效率并减少纸张浪费,适合于公司集团用户作为传真中转工作机,具有一定的市场应用价值。
[1]ITU-T Recommendation T.30 Procedures for document facsi-mile transmission in the general switched telephone network[S].2005.
[2]李兰英.Nios II嵌入式软核SoPC设计原理及应用[M].北京:北京航空航天大学出版社,2006.
[3]刘立柱.网络传真通信原理与技术[M].北京:国防工业出版社,2006.
[4]ITU-T Recommendation T.4 Standardization of Group 3 facsimile terminals for document transmission[S].2003.
[5]Nios II软件架构解析[M].西安:西安电子科技大学出版社,2007.
[6]RFC2306-Tag Image File Format(TIFF)-F Profile for Facsimile[S],1998.