基于Nios II的雙網(wǎng)傳真機(jī)系統(tǒng)的研究與開(kāi)發(fā)
1 雙網(wǎng)傳真機(jī)接入網(wǎng)絡(luò)
本文設(shè)計(jì)的雙網(wǎng)傳真機(jī)接入Internet和傳真服務(wù)器進(jìn)行通信,通信協(xié)議是非實(shí)時(shí)傳真標(biāo)準(zhǔn)協(xié)議,通過(guò)該傳真服務(wù)器中轉(zhuǎn)將傳真推送到目標(biāo)傳真機(jī),根據(jù)目標(biāo)傳真機(jī)是雙網(wǎng)傳真機(jī)還是普通傳真機(jī),選擇對(duì)應(yīng)的Internet網(wǎng)絡(luò)、PSTN網(wǎng)絡(luò)進(jìn)行推送。接入PSTN網(wǎng)絡(luò)和目標(biāo)傳真機(jī)通過(guò)T30[1]協(xié)議進(jìn)行通信。通過(guò)Internet發(fā)送,在掃描稿件時(shí)將稿件數(shù)據(jù)和信息封裝成Tiff文件的形式,通過(guò)非實(shí)時(shí)傳真標(biāo)準(zhǔn)協(xié)議將文件發(fā)送到傳真服務(wù)器,傳真服務(wù)器判斷該傳真是發(fā)往普通傳真機(jī)還是雙網(wǎng)傳真機(jī)。如果發(fā)往普通傳真機(jī),服務(wù)器會(huì)解析Tiff文件并將解析出的傳真編碼數(shù)據(jù)發(fā)往普通傳真機(jī);如果發(fā)往雙網(wǎng)數(shù)字傳真機(jī),則將該tiff文件放到用戶目錄中,等待雙網(wǎng)傳真機(jī)自動(dòng)或者手動(dòng)收取。其在整個(gè)雙網(wǎng)傳真系統(tǒng)中的位置如圖1所示。
2 雙網(wǎng)傳真機(jī)系統(tǒng)設(shè)計(jì)
本文設(shè)計(jì)的雙網(wǎng)傳真機(jī)以Nios II嵌入式軟核為處理器,采用SoPC[2]的軟硬件協(xié)同設(shè)計(jì)方法進(jìn)行設(shè)計(jì),以求最佳的性能價(jià)格比。SoPC技術(shù)硬件用Altera公司的FPGA技術(shù)來(lái)實(shí)現(xiàn),軟件用C語(yǔ)言編程實(shí)現(xiàn),操作系統(tǒng)平臺(tái)采用實(shí)時(shí)操作系統(tǒng)內(nèi)核μC/OS-II、TCP/IP協(xié)議棧使用Niche TCP/IP協(xié)議棧。以Altera Cyclone EP1C20為實(shí)驗(yàn)板進(jìn)行系統(tǒng)實(shí)現(xiàn)和驗(yàn)證。
根據(jù)對(duì)傳真機(jī)功能和性能的分析,提出將耗時(shí)、算法復(fù)雜、數(shù)據(jù)處理量大的模塊用電路實(shí)現(xiàn),需要提供精確的時(shí)序信號(hào)邏輯也用電路實(shí)現(xiàn),而對(duì)時(shí)間要求不苛刻的場(chǎng)合、CPU處理速度能跟上的功能模塊用軟件來(lái)實(shí)現(xiàn)。同時(shí)盡量利用可以利用的軟硬件模塊單元,增強(qiáng)系統(tǒng)的穩(wěn)定性和可靠性,減少重復(fù)設(shè)計(jì),縮短開(kāi)發(fā)周期。系統(tǒng)設(shè)計(jì)的結(jié)構(gòu)圖如圖2所示。
系統(tǒng)開(kāi)發(fā)工具采用Altera公司提供的Quartus II和Nios II IDE。在Quartus II軟件內(nèi),使用SoPC Builder開(kāi)發(fā)硬件模塊,形成硬件設(shè)計(jì)文件和自定義軟件開(kāi)發(fā)環(huán)境。Nios II IDE是基于GNU C/C++編譯器和Eclipse IDE的,設(shè)計(jì)者可以很快開(kāi)發(fā)、調(diào)試和仿真Nios II系統(tǒng),開(kāi)發(fā)模塊驅(qū)動(dòng)程序、板級(jí)支持包(BSP)及用戶程序。[!--empirenews.page--]
2.1 雙網(wǎng)數(shù)字傳真機(jī)系統(tǒng)硬件設(shè)計(jì)
本文設(shè)計(jì)的雙網(wǎng)數(shù)字傳真機(jī)以Altera Nios II軟核為處理器、CIS掃描器件、電機(jī)、TPH打印器件、CIS、電機(jī)、TPH打印驅(qū)動(dòng)板、Alter EP1C20開(kāi)發(fā)板、Modem為硬件平臺(tái),通過(guò)Altera的FPGA實(shí)現(xiàn)硬件電路模塊,主要需要實(shí)現(xiàn)的電路模塊有A/D采樣控制邏輯模塊、圖像二值化處理模塊、MH[3]編碼模塊、MH譯碼模塊、掃描、打印、電機(jī)時(shí)序驅(qū)動(dòng)邏輯模塊。
(1)A/D采樣控制邏輯模塊
通過(guò)CIS掃描器件把原稿的光信號(hào)轉(zhuǎn)化為電信號(hào),將CIS掃描器件獲得的模擬電信號(hào)通過(guò)A/D轉(zhuǎn)換器件轉(zhuǎn)化為8 bit的數(shù)字信號(hào)輸入圖像處理二值化模塊。A/D采樣控制邏輯完成A/D器件的時(shí)序驅(qū)動(dòng)。
(2)圖像二值化處理模塊
本模塊輸入數(shù)據(jù)為A/D轉(zhuǎn)化后的每像素8 bit數(shù)據(jù),根據(jù)掃描原有文本、灰度圖像、圖文并茂3種類(lèi)型自動(dòng)判別選用不同的算法,進(jìn)行偽灰度處理,即根據(jù)抖動(dòng)表(Dither)進(jìn)行二值化處理,得到人眼感覺(jué)有層次(灰度變化)的二值圖像,即半色調(diào)圖像(Halftone)?;叶戎祱D像轉(zhuǎn)化為二值圖像的算法原理是:通過(guò)實(shí)際的中間色調(diào)信號(hào)與存儲(chǔ)在ROM中的閾值信號(hào)比較形成二值圖像信號(hào)。
一般傳真機(jī)采用的抖動(dòng)表數(shù)據(jù)是8×8的Bayes矩陣,在實(shí)驗(yàn)中采用該方法處理得到的效果并不理想,圖像對(duì)比度不是很強(qiáng)烈,整體效果較暗。因此作者根據(jù)FPGA硬件處理的特性,采用16×16的抖動(dòng)矩陣對(duì)傳真圖像進(jìn)行處理。采用該方法適應(yīng)了FPGA 芯片擁有豐富寄存器資源的特點(diǎn),用來(lái)存儲(chǔ)改進(jìn)抖動(dòng)表,在不影響處理速度的情況下,明顯改進(jìn)圖像的處理效果,提高圖像對(duì)比度,圖像效果比較接近原圖。從得出的效果圖可以明顯看出,改進(jìn)方案比原有Bayer抖動(dòng)表做抖動(dòng)的圖像對(duì)比度要好得多,代價(jià)為增加了一千多位寄存器。從而較好地解決了對(duì)圖像二值化處理中對(duì)比度不強(qiáng)的問(wèn)題。
(3)編碼模塊
將二值化后的圖像數(shù)據(jù)經(jīng)一維MH編碼后交付通信模塊使用。MH編碼是一維改進(jìn)的Huffman編碼,是ITU-T T.4[4]標(biāo)準(zhǔn)中的一部分,ITU-T T.4標(biāo)準(zhǔn)的全稱(chēng)是三類(lèi)傳真機(jī)終端文檔傳輸標(biāo)準(zhǔn)。MH編碼具有效率高、容易擴(kuò)展等特點(diǎn)。三類(lèi)傳真機(jī)一般都實(shí)現(xiàn)了一維MH編碼和譯碼,有的也實(shí)現(xiàn)了二維MR編碼,本文用硬件電路實(shí)現(xiàn)一維MH編碼。對(duì)于二值信源來(lái)說(shuō),一幅傳真圖像是由掃描線上的像素組成的。而每一掃描線又總是由一些黑像素和白像素組成。將連續(xù)發(fā)生的黑像素為連‘1’,白像素為連‘0’,也稱(chēng)為黑游程和白游程。連‘1’的個(gè)數(shù)稱(chēng)為黑游程的長(zhǎng)度,連‘0’的個(gè)數(shù)稱(chēng)為白游程的長(zhǎng)度。黑白游程交替出現(xiàn)。針對(duì)游程編碼,哈夫曼MH碼元很好地解決了傳真信源的壓縮問(wèn)題,是T.30協(xié)議中規(guī)定的編碼方式之一。實(shí)現(xiàn)時(shí)通過(guò)讀取像素信息存儲(chǔ)FIFO判斷是黑游程還是白游程。當(dāng)發(fā)生了黑白游程切換時(shí),根據(jù)黑白游程計(jì)數(shù)形成碼表訪問(wèn)地址,根據(jù)地址查找碼表得到對(duì)應(yīng)的編碼碼元。MHC編碼硬件模塊圖如圖3所示。
該編碼數(shù)據(jù)將封裝在T30協(xié)議中進(jìn)行傳輸,T30協(xié)議規(guī)定的每樣張的數(shù)據(jù)傳輸格式如圖4所示。其中EOL為End Of Line,即行同步碼,格式為000000000001。同步碼是緊跟在每一行掃描線之后的特殊碼字,它在有效數(shù)據(jù)中不可能出現(xiàn),因而在突發(fā)錯(cuò)誤之后能重新建立同步。特殊地,每頁(yè)文件的第一個(gè)數(shù)據(jù)之前也設(shè)置一個(gè)EOL。
填充碼fill的作用是保證每掃描線,即每一行的數(shù)據(jù)傳輸時(shí)間不小于某一規(guī)定時(shí)間T,T為發(fā)送一行編碼數(shù)據(jù)所用的最小時(shí)間,ITU-T T.4標(biāo)準(zhǔn)建議中規(guī)定T=20 ms,不足20 ms時(shí)間應(yīng)加入填充碼,其格式為長(zhǎng)度不一的全“0”串。RTC為返回控制碼,其格式為6個(gè)連發(fā)的EOL碼,表示一頁(yè)文件碼的傳輸結(jié)束。[!--empirenews.page--]
在通過(guò)Internet進(jìn)行傳真時(shí)需要將MH編碼數(shù)據(jù)封裝在TIFF文件中,封裝成TIFF文件的過(guò)程通過(guò)軟件模塊實(shí)現(xiàn)。
(4)譯碼模塊
基于FPGA硬件電路實(shí)現(xiàn)圖像MH譯碼模塊,采用快速譯碼策略。在譯碼時(shí),由于碼元不等長(zhǎng)且數(shù)據(jù)量較大,構(gòu)造譯碼樹(shù)較困難,應(yīng)采用快速譯碼方法??焖僮g碼算法的基本思想是采取多步合一的方法,一次輸入的不是一個(gè)碼元,而是多個(gè)碼元。根據(jù)碼表的特點(diǎn)可知,白游程最短碼長(zhǎng)是4,黑游程最短碼長(zhǎng)是2。由此在譯碼開(kāi)始時(shí),碼元是以穿行的方式進(jìn)入譯碼電路,對(duì)白游程可以直接讀取4 bit,進(jìn)入譯碼查找,若非完整編碼再逐位讀?。粚?duì)黑游程可以直接讀取2 bit,進(jìn)入譯碼查找,若非完整編碼再逐位讀取。譯碼的具體算法如下:
①按游程類(lèi)型讀取對(duì)應(yīng)最小編碼長(zhǎng)度編碼;
②在形成碼中進(jìn)行匹配,若成功,按游程類(lèi)型繼續(xù)讀取對(duì)應(yīng)最小編碼長(zhǎng)度編碼,轉(zhuǎn)入③;否則轉(zhuǎn)入④;
③終結(jié)碼中匹配,失敗則讀取下一位繼續(xù)匹配,直至成功;
④在終結(jié)碼中進(jìn)行匹配,匹配成功則跳入①重新開(kāi)始;否則讀取下一位編碼,轉(zhuǎn)入②。重復(fù)以上操作,直到本行結(jié)束;
(5)掃描、打印、電機(jī)驅(qū)動(dòng)邏輯。
本硬件模塊采用FPGA實(shí)現(xiàn),主要提供CIS掃描器件、TPH打印器件、電機(jī)的驅(qū)動(dòng)時(shí)序信號(hào)。
2.2 雙網(wǎng)數(shù)字傳真機(jī)軟件設(shè)計(jì)
操作系統(tǒng)采用實(shí)時(shí)操作系統(tǒng)內(nèi)核?滋C/OS-II,硬件抽象層HAL[5]由Nios II開(kāi)發(fā)工具生成,TCP/IP協(xié)議棧使用移植到μC/OS-II上的Niche TCP/IP協(xié)議棧。Altera EP1C20開(kāi)發(fā)板含有SMSC LAN91C111-NE MAC/PHY芯片,該芯片完成網(wǎng)絡(luò)中MAC/PHY功能。軟件主要完成系統(tǒng)控制和T30協(xié)議通信過(guò)程、非實(shí)時(shí)傳真通信過(guò)程、Tiff[6]文件創(chuàng)建、Tiff文件解析。由于μC/OS-II是多任務(wù)的實(shí)時(shí)內(nèi)核,故系統(tǒng)劃分和設(shè)計(jì)了以下任務(wù):
(1)Init任務(wù):初始化任務(wù),建立任務(wù)之間的通信量。
(2)TCP/IP協(xié)議棧任務(wù):Inet_main任務(wù),該任務(wù)負(fù)責(zé)TCP/IP協(xié)議的運(yùn)行。
(3)clock tick任務(wù):系統(tǒng)ticks任務(wù)。
(4)T30發(fā)送任務(wù):實(shí)現(xiàn)發(fā)送一封傳真的T30通信過(guò)程。
(5)T30接收任務(wù):實(shí)現(xiàn)接收一封傳真的T30通信過(guò)程。
(6)SMTP發(fā)送任務(wù):通過(guò)SMTP命令EHLO、AUTH、RCPT、MAIL、DATA、QUIT和傳真服務(wù)器進(jìn)行對(duì)話,基于SMTP協(xié)議實(shí)現(xiàn)非實(shí)時(shí)傳真通信協(xié)議,即按照服務(wù)器接收的發(fā)送傳真格式發(fā)送一封特殊郵件到服務(wù)器。其中傳真數(shù)據(jù)文件以附件的方式附在這封有固定格式和含義的郵件中,圖像數(shù)據(jù)需要封裝成Tiff文件的形式,附件發(fā)送時(shí)需要按照SMTP協(xié)議將數(shù)據(jù)重新編碼為base64格式的編碼數(shù)據(jù)才能進(jìn)行發(fā)送。該封郵件內(nèi)容固定格式中含有賬號(hào)密碼、發(fā)送參數(shù)、發(fā)往目標(biāo)號(hào)碼列表信息等內(nèi)容,是非實(shí)時(shí)傳真通信協(xié)議中規(guī)定的內(nèi)容。
(7)POP3接收任務(wù):通過(guò)POP3命令USER、PASS、STAT、RETR、QUIT實(shí)現(xiàn)與傳真服務(wù)器的對(duì)話,從傳真服務(wù)器收取一封特殊的郵件,該郵件的附件即為傳真圖像數(shù)據(jù)Tiff文件。收取下來(lái)的Tiff文件是base64編碼數(shù)據(jù),首先需要將文件數(shù)據(jù)進(jìn)行base64解碼還原出Tiff文件。
(8)Tiff文件解碼任務(wù):Tiff文件是標(biāo)簽式文件,按照Tiff文件的格式和對(duì)應(yīng)標(biāo)簽含義解析出Tiff文件的信息和具體的圖像數(shù)據(jù),然后觸發(fā)MH解碼電路模塊工作并驅(qū)動(dòng)電機(jī)和TPH打印模塊打印黑白像素點(diǎn)。
(9)創(chuàng)建Tiff文件任務(wù):根據(jù)Tiff文件信息標(biāo)簽組建Tiff文件。
雙網(wǎng)傳真機(jī)系統(tǒng)在Altera Cyclone EP1C20實(shí)驗(yàn)板、外加驅(qū)動(dòng)板、Modem等硬件基礎(chǔ)上開(kāi)發(fā)成功,通過(guò)反復(fù)軟硬件調(diào)試,軟硬件運(yùn)行穩(wěn)定、達(dá)到系統(tǒng)功能指標(biāo)。利用了μC/OS-II能夠穩(wěn)定、安全處理并發(fā)多任務(wù)這一特點(diǎn),軟件模塊穩(wěn)定運(yùn)行,體現(xiàn)出較高的實(shí)時(shí)性和可靠性,取得了較好的實(shí)際效果。本系統(tǒng)可以自己設(shè)計(jì)和生產(chǎn)帶Altera FPGA芯片的實(shí)驗(yàn)板,集成Ethernet MAC/PHY芯片和Modem芯片等,降低系統(tǒng)成本。同時(shí)本系統(tǒng)還可以與PC機(jī)聯(lián)網(wǎng),通過(guò)PC機(jī)向雙網(wǎng)傳真機(jī)發(fā)送文件和接收文件,這樣可以提高工作效率并減少紙張浪費(fèi),適合于公司集團(tuán)用戶作為傳真中轉(zhuǎn)工作機(jī),具有一定的市場(chǎng)應(yīng)用價(jià)值。
參考文獻(xiàn)
[1] ITU-T Recommendation T.30 Procedures for document facsi-mile transmission in the general switched telephone network[S].2005.
[2] 李蘭英.Nios II嵌入式軟核SoPC設(shè)計(jì)原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2006.
[3] 劉立柱.網(wǎng)絡(luò)傳真通信原理與技術(shù)[M].北京:國(guó)防工業(yè)出版社,2006.
[4] ITU-T Recommendation T.4 Standardization of Group 3 facsimile terminals for document transmission[S].2003.
[5] Nios II軟件架構(gòu)解析[M].西安:西安電子科技大學(xué)出版社,2007.
[6] RFC2306-Tag Image File Format(TIFF)-F Profile for Facsimile[S],1998.