2.2 程序流程设计
传真发送过程就是对Modem不断操作的过程,通过Modem完成数据的收发及信号的握手。DTE向调制解调器发送命令,调制解调器DCE对命令做出响应,完成该命令的操作,并返回命令执行的结果码。
对调制解调器发送的命令是AT指令,命令形式化为“AT+命令值”,例如“AT+FRH=3”,表示命令Modem准备以300 b/s的速率接收数据。根据T.30建议书的要求,发送的TCF信号是连续1.5 s的“0”序列,设计过程中通过反复实验,用软件连续发送一定的字节内比特位为0的数据,可达到通信要求。在接收TCF信号时,把接收到的0比特数据存入缓冲区,然后判断是否满足在当前通信速率下的连续0比特数据量。在报文传输阶段,发送的数据为处理后(扫描、二值化、编码)二进制数据,根据ITU-T T.4标准,传输的数据可以采用MH/MR/MMR编码,并且每行的编码数据发送时间不能少于20 ms[5]。所以编码数据传输时要对数据量小的一行编码进行0 bit填充,这部分在软件设计时实现。报文数据以字节为单位将8 bit数据高低位顺序颠倒,再传送给UART。报文数据传送完之后需添加发送结束标记<DLE><ETX>,告诉Modem报文数据结束。
同样,接收传真时,T.30建议书对判断连续1.5 s的“0”没有具体要求,这里采用缓冲区数据判断,把接收的“0”存入缓冲单元,判断“0”的个数来决定当前的通信速率是否满足。在接收到报文数据后,需要把结束标记从数据中滤出,存入缓冲区,再传送给译码打印系统或存储Tiff文件。限于篇幅,仅给出如图5所示的发送单页传真样张软件实现流程图。
3 验证与调试
在NiosII IDE开发环境下完成设计代码,将Nios硬核和软件程序下载到FPGA开发板上,在线调试。最后在开发板上运行该程序,实现与远端普通传真机的传真业务通信。所选择的远端普通传真机为光电传真机OEF319系列传真机和Pansonnic系列传真机。测试主要内容为:
(1)发送传真。在PC机上将符合ITU标准的测试样张Tiff文件中的传真数据存储到文件,运行NiosII环境时暂存到缓冲区,执行传真通信,将传真数据发送出去。远端传真机打印出数据和样张对比,文字清晰可读。
(2)接收传真。和远端传真机通信,接收对方发来的传真数据并缓存。由于没有打印设备,不能有效对比接收数据和样张。把本次接收的数据缓存,作为发送传真的测试数据,基本保证了传真测试。采用这样的测试策略,接收传真的功能基本实现。在后面深入研究中,可以将打印设备添加到FPGA开发板的系统中,这样就完善了传真系统。
经测试对比分析,传真流程合理,与商用传真机正常通信。但传真附加功能和整个传真系统还有待于进一步完善。 本文深入分析了T.30传真通信建议书,基于NiosII软件集成开发环境实现了传真通信规程,并将软件下载到Altera公司系列开发板上。通过测试验证,实现了和普通商用传真机的传真通信。基于NiosII软核的传真通信规程的实现,为嵌入式传真机提供了一种新的设计开发策略,为传真机产品升级和提高性能提供了参考;对打破国外传真机芯片及产品的垄断,实现中国传真机自主知识产权及产业化,都具有重要的现实意义。