駱才華,葉玉堂 ,劉 霖,劉娟秀,賈宏宇,王 平,別俊峰,徐文濤,郝 霞
(電子科技大學(xué)光電信息學(xué)院,成都610054)
隨著人類進(jìn)入數(shù)字信息時(shí)代,急需一種將前人保存在紙張上的珍貴財(cái)富直接轉(zhuǎn)換為數(shù)字信息的設(shè)備,于是線陣CCD 大幅面掃描儀孕育而生。但是,由于其跨越光學(xué)設(shè)計(jì)、機(jī)械加工、軟件工程、圖像算法等多個(gè)學(xué)科,迄今為止,全部關(guān)鍵核心技術(shù)仍然只被丹麥Contex、日本Graphtec 等少數(shù)國外研究團(tuán)隊(duì)掌握,國內(nèi)所使用的線陣CCD 的大幅面掃描儀全部進(jìn)口,迄今為止處于空白狀態(tài)[1-2]。
線陣CCD 大幅面掃描儀的各個(gè)系統(tǒng)中,數(shù)字圖像數(shù)據(jù)的傳輸以其數(shù)據(jù)量大、傳輸精度要求高等特點(diǎn),成為了研發(fā)中的一大技術(shù)難點(diǎn)[3]。高速USB 接口具有通用性強(qiáng)、成本低、軟件開發(fā)周期短等優(yōu)勢,成為了線陣CCD 大幅面掃描儀圖像傳輸?shù)氖走x。高速USB 接口的批量傳輸方式(BULK方式)更是以支持錯(cuò)誤重傳等有優(yōu)勢滿足了線陣CCD 大幅面掃描儀傳輸數(shù)據(jù)量大、精度高等要求[4]。但是,由于前端線陣CCD 傳感器產(chǎn)生穩(wěn)定的海量數(shù)據(jù)以及高速USB 批量傳輸方式傳輸優(yōu)先級低,不能保證傳輸延遲時(shí)間的特點(diǎn),導(dǎo)致了線陣CCD 大幅面掃描儀在數(shù)據(jù)傳送中出現(xiàn)數(shù)據(jù)丟失,造成圖像失真,如圖1。
圖1 是USB 傳輸模塊傳輸0 ~255 連續(xù)數(shù)據(jù)時(shí),計(jì)算機(jī)軟件采集到的圖像。圖1 中圖像平移的起始點(diǎn)如圖2。圖2(a)中標(biāo)識線上方的第一行是圖像發(fā)生平移的起始位置。該行左邊邊界和上面每行的邊界是重合的如圖2(b)。其右邊邊界和上方邊界相比左移了4 個(gè)像素,如圖2(c)。由于圖像數(shù)據(jù)是按從左往右的順序顯示的,那么左邊邊界不變,右邊邊界左移說明:在圖2(a)中標(biāo)識線上方的一行中,圖像數(shù)據(jù)至少丟失了4 個(gè)像素。
圖1 傳輸圖像數(shù)據(jù)時(shí)出現(xiàn)圖像失真
圖2 圖像失真起始位置
1.1.1 USB 批量傳輸?shù)膬?yōu)先級低
USB 協(xié)議規(guī)定了高速USB 有4 種傳輸方式:控制傳輸、中斷傳輸、同步傳輸、批量傳輸。這4 種傳輸方式中,批量傳輸以其支持錯(cuò)誤重傳機(jī)制,保證了大數(shù)據(jù)量的可靠傳輸,被大量應(yīng)用在打印機(jī)、掃描儀中[5]。但是,批量傳輸方式本身也有其缺點(diǎn):為了使發(fā)送的大量數(shù)據(jù)不阻塞總線,USB 協(xié)議賦予了批量傳輸最低的優(yōu)先級。它會為其他3 種類型的傳輸做延遲,并且理論上延遲時(shí)間是無限的,只有當(dāng)有可用的總線帶寬時(shí),批傳送才發(fā)生[6]。與此同時(shí),我們的計(jì)算機(jī)系統(tǒng)中使用了大量USB 外設(shè),如鼠標(biāo)、鍵盤等等。這些外設(shè)工作于各種傳輸模式上,直接跟批量傳輸設(shè)備競爭USB 總線資源,它們對用總線的使用情況將直接影響線陣CCD 大幅面掃描儀的傳輸帶寬,造成了線陣CCD 大幅面掃描儀數(shù)據(jù)傳輸過程出現(xiàn)了大的停滯,如圖3 所示。
圖3 是線陣CCD 大幅面掃描儀向運(yùn)行在實(shí)驗(yàn)用計(jì)算機(jī)(intel core i3 M330@2.13 GHz 處理器)上的數(shù)據(jù)采集程序傳送圖像數(shù)據(jù)時(shí),測得的關(guān)鍵控制信號波形:full_n。當(dāng)full_n=0 時(shí),USB 接口芯片上的FIFO 處于滿狀態(tài),USB 傳輸出現(xiàn)停滯。圖3 中,在兩次密集的批量傳輸之間USB 接口出現(xiàn)了長時(shí)間的停滯full_n_L。并且這個(gè)長時(shí)間的停滯時(shí)間是隨機(jī)的,如圖4 所示。
圖3 full_n 實(shí)際波形圖
圖4 是full_n_L 時(shí)間折線圖。橫坐標(biāo)表示按時(shí)間先后出現(xiàn)的full_n_L 的序號,縱坐標(biāo)表示full_n_L持續(xù)時(shí)間(單位:μs),full_n_L 持續(xù)時(shí)間隨機(jī)波動。
1.1.2 協(xié)議開銷占用USB 總線時(shí)間
USB 的批量傳輸方式,是一種可靠的單向傳輸。采用握手協(xié)議正是其可靠性的體現(xiàn),完成一次握手操作的過程叫做事務(wù)(Transaction)。一個(gè)事務(wù)由:令牌包、數(shù)據(jù)包、握手包構(gòu)成,它們的流程如圖5所示。一個(gè)事務(wù)中的各種數(shù)據(jù)占用USB 總線時(shí)間的分布如圖6 所示。協(xié)議開銷tProtocol_Overhead,是指事務(wù)中的令牌包,握手包以及數(shù)據(jù)包內(nèi)除數(shù)據(jù)凈負(fù)荷區(qū)以外的數(shù)據(jù)占用數(shù)據(jù)總線傳輸時(shí)間;數(shù)據(jù)位的填充位占用總線開銷tBitStuffTime,它直接跟數(shù)據(jù)包中的有效數(shù)據(jù)量相關(guān);主機(jī)控制器申請?jiān)L問開銷tHost_Delay,它與USB 主機(jī)控制器及計(jì)算機(jī)操作系統(tǒng)有關(guān);數(shù)據(jù)傳輸時(shí)間tData,跟每個(gè)數(shù)據(jù)包中數(shù)據(jù)凈負(fù)荷區(qū)的大小有關(guān)。tService_Overhead為完成一次數(shù)據(jù)傳輸需要的服務(wù)開銷(不含有效數(shù)據(jù)),tBulk_Transaction為完成一個(gè)完整事務(wù)所消耗的總線時(shí)間[7-8]。
圖5 USB 事務(wù)流程
圖6 一個(gè)事務(wù)的USB 總線時(shí)間分配
根據(jù)式(2),總線上兩次數(shù)據(jù)傳輸tData間必然存在一個(gè)時(shí)間間隙用于傳輸服務(wù)開銷tService_Overhead,而tService_Overhead中的tHost_Delay是造成高速USB 批量傳輸方式多個(gè)事務(wù)間出現(xiàn)隨機(jī)時(shí)間間隔的主要原因,該參數(shù)跟計(jì)算機(jī)操作系統(tǒng)環(huán)境和USB 總線控制控制器有關(guān)。圖3 中除full_n_L 以外,full_n 的波形還出現(xiàn)了很多持續(xù)時(shí)間很短并且持續(xù)時(shí)間隨機(jī)變化的低電平“毛刺”,它們很好的體現(xiàn)了tService_Overhead的存在。
線陣CCD 大幅面掃描儀的數(shù)據(jù)采集系統(tǒng)由機(jī)械走紙機(jī)構(gòu)和線陣CCD 傳感器組成。為了避免機(jī)械走紙機(jī)構(gòu)和線陣CCD 傳感器運(yùn)行速度不匹配引起的圖像拉伸或壓縮失真的出現(xiàn),它們的工作必須保持協(xié)調(diào)一致。同時(shí),為了保證紙張?jiān)跈C(jī)械走紙機(jī)構(gòu)上運(yùn)動的穩(wěn)定性,走紙機(jī)構(gòu)通常以勻速方式運(yùn)動[9]。鑒于以上兩種原因,這就要求線陣CCD 傳感器以固定的掃描速度工作即以固定的行頻工作。線陣CCD 大幅面掃描儀數(shù)據(jù)采集系統(tǒng)的工作方式?jīng)Q定了它數(shù)據(jù)輸出的連續(xù)性[10]。同時(shí),線陣CCD 大幅面掃描儀產(chǎn)生的數(shù)據(jù)量特別大。設(shè)線陣CCD 大幅面掃描儀水平分辨率P(DPI),掃描寬度W(mm),與走紙機(jī)構(gòu)匹配的行頻f(Hz),l 為每個(gè)像素點(diǎn)的量化寬度,數(shù)據(jù)采集速度S(bit/s)
在掃描紙張為A0(841 mm×1 189 mm)幅面時(shí),W=841 mm,P=600 DPI,f=1 200 Hz,l=8 bit,數(shù)據(jù)采集速度S 高達(dá)195.84 Mbit/s。
根據(jù)上述分析,線陣CCD 大幅面掃描儀前端數(shù)據(jù)采集具有數(shù)據(jù)量大、數(shù)據(jù)以特定頻率穩(wěn)定輸出的特性。然而,后端的USB 數(shù)據(jù)傳輸卻具有隨機(jī)和間歇性。采集和傳輸系統(tǒng)的特點(diǎn)明顯存在矛盾,如果不在上述兩個(gè)系統(tǒng)間添加高效、高精度的緩存機(jī)制,前端數(shù)據(jù)很可能無法被及時(shí)傳輸。后邊新采集的數(shù)據(jù)會覆蓋沒來得及傳輸?shù)臄?shù)據(jù),造成原始圖像數(shù)據(jù)的丟失、圖像的失真。這個(gè)時(shí)候,無論前端線陣CCD 傳感器驅(qū)動多么精確,后期處理算法多么優(yōu)越,圖像質(zhì)量還是得不到保障。根據(jù)以上原因,筆者提出了基于寫優(yōu)先FIFO 結(jié)構(gòu)的SRAM 緩存法。
由上述對線陣CCD 大幅面掃描儀USB 傳輸中圖像失真機(jī)理的分析可知,圖像數(shù)據(jù)丟失產(chǎn)生的根本原因是:USB 批量傳輸方式實(shí)時(shí)性不高、易受系統(tǒng)中其它USB 設(shè)備工作狀態(tài)影響以及批量傳輸協(xié)議中數(shù)據(jù)傳輸?shù)姆?wù)開銷太大,進(jìn)而導(dǎo)致在傳輸過程中出現(xiàn)了時(shí)間間歇full_n_L。同時(shí),在full_n_L 時(shí)間內(nèi),線陣CCD 傳感器仍以極高的速率往傳輸系統(tǒng)的緩存中寫入,由于該緩存容量有限造成數(shù)據(jù)溢出最終導(dǎo)致了USB 圖像傳輸?shù)氖д?。因此,只要在USB 圖像數(shù)據(jù)傳輸系統(tǒng)前端添加一種數(shù)據(jù)緩存機(jī)制,保證full_n_L時(shí)間段內(nèi)系統(tǒng)能夠?qū)⒕€陣CCD 傳感器產(chǎn)生的數(shù)據(jù)NBlock充分緩存,就可以避免圖像失真[11]。
設(shè)full_n_L 持續(xù)的時(shí)間內(nèi),線陣CCD 傳感器積壓的數(shù)據(jù)量的最大、最小值表示為NBlock_max、NBlock_min,數(shù)據(jù)采集速度表示為S(bit/s),傳輸停頓最大值表示為tmax,傳輸停頓最小值表示為tmin。根據(jù)式(1)
基于寫優(yōu)先FIFO 結(jié)構(gòu)的SRAM 緩存法緩存器容量Nbuffer應(yīng)該比在full_n_L 內(nèi)積壓的最大的數(shù)據(jù)量還大。
實(shí)際應(yīng)用中發(fā)現(xiàn):由于tmax受與線陣CCD 大幅面掃描儀配套的計(jì)算機(jī)的軟硬件環(huán)境影響巨大,在某些條件下tmax達(dá)到了10 ms,NBlock_max高達(dá)1 958.4 kbit。所以,為了避免圖像失真選擇緩存器的容量應(yīng)遠(yuǎn)大于計(jì)算結(jié)果。根據(jù)實(shí)際情況,項(xiàng)目組選擇了32 Mbit 的SRAM 作為緩存器。
基于寫優(yōu)先FIFO 結(jié)構(gòu)的SRAM 緩存法流程圖如圖7 所示。行使能信號以固定頻率驅(qū)動線陣CCD傳感器工作,線陣CCD 傳感器產(chǎn)生的海量數(shù)據(jù)由仲裁器寫入到SRAM 中,同時(shí),仲裁器在兩次行使能的間歇,將讀出SRAM 的數(shù)據(jù)并寫入到FIFO 中。USB接口芯片會隨時(shí)檢測FIFO 的空標(biāo)志位(rdempty),一旦非空就將FIFO 的數(shù)據(jù)傳輸給計(jì)算機(jī)采圖程序。仲裁器在對SRAM 的操作過程中,賦予了寫操作更高的優(yōu)先級。仲裁器的工作流程如圖8 所示,只要線陣CCD 傳感器開始工作,必須暫停一切對SRAM 的其它操作,將其產(chǎn)生的一行數(shù)據(jù)(20. 4 kbyte)寫到SRAM 中[12]。當(dāng)線陣CCD 傳感器暫停工作的時(shí),檢測FIFO 的空、滿,一旦為非滿狀態(tài)時(shí)將SRAM 中數(shù)據(jù)高速讀出到FIFO 直到FIFO 被寫滿為止,否則在這段時(shí)間暫停對SRAM 的操作。
圖7 基于寫優(yōu)先FIFO 結(jié)構(gòu)的SRAM 緩存系統(tǒng)框圖
圖8 仲裁器工作流程圖
經(jīng)過基于寫優(yōu)先FIFO 結(jié)構(gòu)的SRAM 緩存后,圖像失真的現(xiàn)象得到了解決。在600 DPI 的分辨率下,圖像傳輸穩(wěn)定、未見圖像失真。圖9 為大幅面掃描儀整機(jī),圖10(a)、圖10(b)分別為采用新方法前后的對比圖。圖10(a)中間位置,圖像數(shù)據(jù)發(fā)生丟失,出現(xiàn)了圖像左移的情況。圖10(b)中圖像完整,真實(shí)還原了圖紙的本來面貌。
圖9 線陣CCD 大幅面掃描儀
圖10 大幅面掃描儀掃描圖像處理前后對比圖
通過對線陣CCD 大幅面掃描儀USB 傳輸中圖像失真原因的深入分析,并結(jié)合線陣CCD 大幅面掃描儀特點(diǎn),提出了基于寫優(yōu)先FIFO 結(jié)構(gòu)的SRAM緩存法,通過大量實(shí)驗(yàn)驗(yàn)證了該方法的可行性,解決了國內(nèi)首臺線陣CCD 大幅面掃描儀USB 傳輸中的圖像失真問題。
測試結(jié)果表明:在600 DPI 的分辨率下,圖像傳輸穩(wěn)定、采圖軟件采集到的圖像真實(shí)。項(xiàng)目組制作的線陣CCD 大幅面掃描儀在600 DPI 的分辨率下,行頻達(dá)到1 200 Hz,USB 接口平均傳輸速度為256 Mbit/s,紙張掃描速度為5.08 cm/s,掃描一張A0 圖紙需要約23 s。
[1] Kumpulainen T,Latokartano J,Vihinen J,et al. Scanner Test Pattern for Evaluation of Beam Manipulation Accuracy[C]//Assembly and Manufacturing(ISAM),2011 IEEE International Symposium on,2011,1-5.
[2] Fan Naiqiagn, Wang Guohui, Lu Yarong. Design and Implementation of Computerized Logging Ground Data Acquisition System Based on USB[J]. Instrument Technique and Sensor,2009,1(1):59-61.
[3] John Keithley L Difuntorum,Kristine Mari U Matutina,Al Jerome Mervyn Z Tong. A USB 2. 0 Processor Controller for an ARM7TDM-S Processor Implemented in FPGA[C]//TENCON 2011—2011 IEEE Region 10 Conference,2011:689-692.
[4] Zhang Ting,Jiang Li,Li Nan,et al. A Measurement and Control System Based on USB Bus for Prosthetic Hand[C]//International Conference on Mechatronics and Automation,2011:1321-1325.
[5] Hajime Masaoka,Toshihiro Ohigashi,Tohru Kondo,et al.Supporting USB Devices for the Global Migration[C]//10th Annual International Symposium on Applications and the Internet,2011:153-156.
[6] Alessandro Depari,Alessandra Flammini,Daniele Marioli,et al.USB Sensor Network for Industrial Applications[J].IEEE Transactions on Instrumentation and Measurement,2008,57(7):20-31.
[7] Cypress Semiconductor.EZ-USB FX2 Manual Technical Reference[S].San Jose,California:Cypress Semiconductor Press,2001:95-116.
[8] Compaq,HP,Intel,et al. USB 2. 0 Specification[EB/OL].http://www.usb.org,2000:63-65.
[9] Stache N C,Stollenwerk A,Gedicke J,et al.Automatic Calibration of a Scanner-Based Laser Welding System[J]. Journal of Laser Applications,2009,21:10-15.
[10] 岑家生,王青梅,羅暉,等.基于線陣CCD 的降水粒子探測高速數(shù)據(jù)采集系統(tǒng)[J].激光與紅外,2012,42(6):674-675.
[11] 李曉坤,劉百玉,歐陽嫻,等.基于FPGA 和SRAM 的智能點(diǎn)膠機(jī)控制系統(tǒng)設(shè)計(jì)[J].儀器儀表學(xué)報(bào),2009,30(7):1379-1381.
[12] 武星星,劉金國.三線陣立體測繪相機(jī)時(shí)間系統(tǒng)優(yōu)化與實(shí)時(shí)監(jiān)測[J].光學(xué)精密工程,2012,20(5):1022-1030.