基于NiosII傳真通信規(guī)程的分析與設(shè)計(jì)實(shí)現(xiàn)
2.1 傳真系統(tǒng)設(shè)計(jì)
系統(tǒng)開(kāi)發(fā)工具選擇QuartusII和NiosII IDE環(huán)境,結(jié)合SoPC技術(shù),軟硬件協(xié)同設(shè)計(jì)開(kāi)發(fā)。器件選擇Altera公司的Cyclone系列EPEC20F400C開(kāi)發(fā)板,使用QuartusII中SoPC Builder對(duì)硬件系統(tǒng)進(jìn)行定義,完成硬核開(kāi)發(fā)的集成過(guò)程。根據(jù)設(shè)計(jì)需要對(duì)CPU進(jìn)行定制,包括CPU的數(shù)據(jù)和指令緩存的大小、CPU寄存器數(shù)量等[4]。除了NiosII之外,還需要將外圍設(shè)備的IP添加進(jìn)來(lái)。本設(shè)計(jì)就是將在前面提到的各種NiosII自帶的各種IP核(UART控制器、定時(shí)器等)添加進(jìn)來(lái),其余自定義的邏輯器件接口同CPU的連接只需在SoPC Builder中將對(duì)應(yīng)的接口模塊添加進(jìn)來(lái)即可。
NiosII核與調(diào)制解調(diào)器通信是通過(guò)UART控制器實(shí)現(xiàn)的。原來(lái)的UART直接選用Altera公司提供的標(biāo)準(zhǔn)UART組件,通信時(shí)通過(guò)寄存器單字節(jié)收發(fā),每個(gè)字節(jié)都會(huì)有中斷觸發(fā)。為了方便軟件編程,Altera提供硬件抽象層HAL(Hardware Abstract Level)系統(tǒng)庫(kù)驅(qū)動(dòng)程序,該驅(qū)動(dòng)程序是一個(gè)集成到HAL系統(tǒng)中的HAL字符模式設(shè)備驅(qū)動(dòng)程序,代替訪問(wèn)UART寄存器,編程者直接使用HAL的API和ANSI C標(biāo)準(zhǔn)庫(kù)函數(shù)訪問(wèn)UART。此時(shí),UART相當(dāng)于字符設(shè)備文件,可以像打開(kāi)文件、讀寫(xiě)文件一樣操作UART設(shè)備。
對(duì)UART的操作與對(duì)文件的操作一樣。打開(kāi)UART設(shè)備后,向調(diào)制解調(diào)器發(fā)送的AT指令和HDLC幀數(shù)據(jù)以寫(xiě)文件的方式寫(xiě)入U(xiǎn)ART設(shè)備,UART把數(shù)據(jù)發(fā)送至調(diào)制解調(diào)器的串口,命令執(zhí)行對(duì)應(yīng)的操作。調(diào)制解調(diào)器通過(guò)串口把結(jié)果值和HDLC幀數(shù)據(jù)返回到UART設(shè)備,程序以讀文件的方式從UART設(shè)備讀取數(shù)據(jù),并判斷執(zhí)行下一步對(duì)應(yīng)的操作。系統(tǒng)框圖如圖4所示。本文引用地址:http://butianyuan.cn/article/157722.htm
2.2 程序流程設(shè)計(jì)
傳真發(fā)送過(guò)程就是對(duì)Modem不斷操作的過(guò)程,通過(guò)Modem完成數(shù)據(jù)的收發(fā)及信號(hào)的握手。DTE向調(diào)制解調(diào)器發(fā)送命令,調(diào)制解調(diào)器DCE對(duì)命令做出響應(yīng),完成該命令的操作,并返回命令執(zhí)行的結(jié)果碼。
對(duì)調(diào)制解調(diào)器發(fā)送的命令是AT指令,命令形式化為“AT+命令值”,例如“AT+FRH=3”,表示命令Modem準(zhǔn)備以300 b/s的速率接收數(shù)據(jù)。根據(jù)T.30建議書(shū)的要求,發(fā)送的TCF信號(hào)是連續(xù)1.5 s的“0”序列,設(shè)計(jì)過(guò)程中通過(guò)反復(fù)實(shí)驗(yàn),用軟件連續(xù)發(fā)送一定的字節(jié)內(nèi)比特位為0的數(shù)據(jù),可達(dá)到通信要求。在接收TCF信號(hào)時(shí),把接收到的0比特?cái)?shù)據(jù)存入緩沖區(qū),然后判斷是否滿(mǎn)足在當(dāng)前通信速率下的連續(xù)0比特?cái)?shù)據(jù)量。在報(bào)文傳輸階段,發(fā)送的數(shù)據(jù)為處理后(掃描、二值化、編碼)二進(jìn)制數(shù)據(jù),根據(jù)ITU-T T.4標(biāo)準(zhǔn),傳輸?shù)臄?shù)據(jù)可以采用MH/MR/MMR編碼,并且每行的編碼數(shù)據(jù)發(fā)送時(shí)間不能少于20 ms[5]。所以編碼數(shù)據(jù)傳輸時(shí)要對(duì)數(shù)據(jù)量小的一行編碼進(jìn)行0 bit填充,這部分在軟件設(shè)計(jì)時(shí)實(shí)現(xiàn)。報(bào)文數(shù)據(jù)以字節(jié)為單位將8 bit數(shù)據(jù)高低位順序顛倒,再傳送給UART。報(bào)文數(shù)據(jù)傳送完之后需添加發(fā)送結(jié)束標(biāo)記DLE>ETX>,告訴Modem報(bào)文數(shù)據(jù)結(jié)束。
同樣,接收傳真時(shí),T.30建議書(shū)對(duì)判斷連續(xù)1.5 s的“0”沒(méi)有具體要求,這里采用緩沖區(qū)數(shù)據(jù)判斷,把接收的“0”存入緩沖單元,判斷“0”的個(gè)數(shù)來(lái)決定當(dāng)前的通信速率是否滿(mǎn)足。在接收到報(bào)文數(shù)據(jù)后,需要把結(jié)束標(biāo)記從數(shù)據(jù)中濾出,存入緩沖區(qū),再傳送給譯碼打印系統(tǒng)或存儲(chǔ)Tiff文件。限于篇幅,僅給出如圖5所示的發(fā)送單頁(yè)傳真樣張軟件實(shí)現(xiàn)流程圖。
3 驗(yàn)證與調(diào)試
在NiosII IDE開(kāi)發(fā)環(huán)境下完成設(shè)計(jì)代碼,將Nios硬核和軟件程序下載到FPGA開(kāi)發(fā)板上,在線調(diào)試。最后在開(kāi)發(fā)板上運(yùn)行該程序,實(shí)現(xiàn)與遠(yuǎn)端普通傳真機(jī)的傳真業(yè)務(wù)通信。所選擇的遠(yuǎn)端普通傳真機(jī)為光電傳真機(jī)OEF319系列傳真機(jī)和Pansonnic系列傳真機(jī)。測(cè)試主要內(nèi)容為:
(1)發(fā)送傳真。在PC機(jī)上將符合ITU標(biāo)準(zhǔn)的測(cè)試樣張Tiff文件中的傳真數(shù)據(jù)存儲(chǔ)到文件,運(yùn)行NiosII環(huán)境時(shí)暫存到緩沖區(qū),執(zhí)行傳真通信,將傳真數(shù)據(jù)發(fā)送出去。遠(yuǎn)端傳真機(jī)打印出數(shù)據(jù)和樣張對(duì)比,文字清晰可讀。
(2)接收傳真。和遠(yuǎn)端傳真機(jī)通信,接收對(duì)方發(fā)來(lái)的傳真數(shù)據(jù)并緩存。由于沒(méi)有打印設(shè)備,不能有效對(duì)比接收數(shù)據(jù)和樣張。把本次接收的數(shù)據(jù)緩存,作為發(fā)送傳真的測(cè)試數(shù)據(jù),基本保證了傳真測(cè)試。采用這樣的測(cè)試策略,接收傳真的功能基本實(shí)現(xiàn)。在后面深入研究中,可以將打印設(shè)備添加到FPGA開(kāi)發(fā)板的系統(tǒng)中,這樣就完善了傳真系統(tǒng)。
經(jīng)測(cè)試對(duì)比分析,傳真流程合理,與商用傳真機(jī)正常通信。但傳真附加功能和整個(gè)傳真系統(tǒng)還有待于進(jìn)一步完善。本文深入分析了T.30傳真通信建議書(shū),基于NiosII軟件集成開(kāi)發(fā)環(huán)境實(shí)現(xiàn)了傳真通信規(guī)程,并將軟件下載到Altera公司系列開(kāi)發(fā)板上。通過(guò)測(cè)試驗(yàn)證,實(shí)現(xiàn)了和普通商用傳真機(jī)的傳真通信。基于NiosII軟核的傳真通信規(guī)程的實(shí)現(xiàn),為嵌入式傳真機(jī)提供了一種新的設(shè)計(jì)開(kāi)發(fā)策略,為傳真機(jī)產(chǎn)品升級(jí)和提高性能提供了參考;對(duì)打破國(guó)外傳真機(jī)芯片及產(chǎn)品的壟斷,實(shí)現(xiàn)中國(guó)傳真機(jī)自主知識(shí)產(chǎn)權(quán)及產(chǎn)業(yè)化,都具有重要的現(xiàn)實(shí)意義。
評(píng)論