張俊汪濤
(重慶大學物理學院,中國 重慶401331)
CCD(Charge-coupled Device,電荷耦合元件)圖像傳感器體積小、重量輕、功耗小、壽命長,同時具有靈敏度高、響應速度快、自掃描和光譜響應寬等優(yōu)點,被廣泛應用于各個領域,包括航空航天、傳媒攝像、工業(yè)生產(chǎn)等。隨著光電子技術的不斷發(fā)展,測量系統(tǒng)快速采樣、存儲、處理和傳輸是系統(tǒng)新的發(fā)展方向。由于線陣CCD實時控制較為容易,而且價格便宜,所以廣泛應用于非接觸的尺寸測量、質量檢驗、自動化及機器人視覺精確定位等等[1]。
本系統(tǒng)由光源、光學鏡頭、被測物、線陣CCD、數(shù)據(jù)采集與傳輸單元和數(shù)據(jù)顯示單元構成。當光源的光通過光學鏡頭照射在被測物體上,被測物體的相關信息被線陣CCD記錄下來,由后續(xù)的數(shù)據(jù)采集單元將模擬信號轉換為數(shù)字信號,再將數(shù)字信號進行處理,最后傳輸顯示在上位機上。
本文設計的重點是數(shù)據(jù)采集與傳輸單元,具體設計如圖1所示。線陣CCD將光強信號轉換為模擬電信號輸出,再送入模數(shù)轉換器中轉換為12位并行數(shù)字信號。用Matlab軟件設計一個低通濾波器,并結合FPGA將數(shù)字信號進行濾波處理。濾波后的數(shù)字信號送入FPGA內嵌的存儲器中進行緩存,再通過并口轉串口模塊將12位并行數(shù)據(jù)轉換成串行數(shù)據(jù),通過串口上傳至上位機中顯示。
圖1 數(shù)據(jù)采集與傳輸結構圖
本系統(tǒng)選用的圖像傳感器為東芝公司的TCD1209D,這是一款兩相的CCD,主要用于傳真、圖像掃描和OCR(Optical Character Recognition光學字符識別)技術[2]。這款CCD靈敏度較高、暗信號電壓較小、動態(tài)范圍較大,非常適合用于尺寸測量。共有2048個有效像元,像元尺寸為14μm×14μm,相鄰兩個光敏單元的中心距為14μm。該CCD工作需要6路驅動脈沖,由FPGA產(chǎn)生,包括移位脈沖φ1、φ2,信號輸出脈沖φ2B,轉移脈沖SH,復位脈沖RS和箝位脈沖CP。
CCD輸出的信號為模擬信號,在將信號輸入到微處理器前,要將信號轉換為數(shù)字信號。本系統(tǒng)選用的模數(shù)轉換器為AD公司生產(chǎn)的AD9945,該芯片最高采樣頻率為40MHz,而本系統(tǒng)CCD信號頻率為1MHz,完全能滿足設計需要。其信號鏈主要由相關雙采樣(Correlated Double Sample),數(shù)控可變增益放大器(Variable Gain Amplifier)和12位A/D轉換器組成。
為了降低CCD信號中的復位噪聲,模擬信號先經(jīng)過CDS處理[3]。在復位電平SHP和像元信號電平SHD的上升沿,對模擬信號進行采集,并將得到的兩個信號相減,從而降低復位噪聲。接著通過一個VGA增益放大器來調節(jié)信號的大小,可以通過一個10位的串行數(shù)字接口編程來設置增益的大小。最后CCD信號經(jīng)過12位的AD轉換器轉換后,輸出數(shù)字信號,并且延遲了10個像素的時鐘。
本系統(tǒng)使用的FPGA芯片為Altera公司的Cyclone 2系列EP2C8Q208C8,通過設計產(chǎn)生CCD和AD的驅動信號,并結合Matlab軟件對數(shù)字信號進行低通濾波處理,處理后的信號經(jīng)過緩存和傳輸,顯示在上位機上。
根據(jù)系統(tǒng)的硬件設計,軟件程序主要包括三個功能模塊:時序功能模塊、濾波功能模塊和數(shù)據(jù)傳輸功能模塊。
為了使CCD正常工作,必須設計出符合CCD正常工作的時序脈沖。將兩相時鐘頻率φ1、φ2設為1MHz,則RS和CP的頻率也為1MHz。AD9945需包含三個方面的時序設計:(1)串行數(shù)字接口SDATA、SCK和SL,對內部寄存器進行配置;(2)相關雙采樣信號SHP、SHD,以及數(shù)據(jù)像素同步時鐘DATACLK;(3)光學暗電平鉗制脈沖,減少暗電平噪聲。
本系統(tǒng)設計了低通濾波器對數(shù)字信號濾波,是結合Matlab和FPGA實現(xiàn)的[4]。系統(tǒng)設計的濾波器為有限脈沖響應(Finite Impulse Response,F(xiàn)IR)濾波器,使用窗函數(shù)設計方法。CCD輸出信號頻率為1MHz,經(jīng)AD轉換后數(shù)字信號頻率仍為1MHz,所以我們將低通濾波器的截止頻率設為1.2MHz,采樣頻率設為5MHz。通過Matlab設計了一個32階的低通濾波器,系數(shù)的量化位數(shù)為12比特。量化后得到的濾波器系數(shù)為:FF8、001、00D、000、FE3、FFB、03B、015、F95、FC8、0B7、084、EBF、EB4、2F2、7FF、7FF、2F2、EB4、EBF、084、0B7、FC8、F95、015、03B、FFB、FE3、000、00D、001、FF8,系數(shù)呈現(xiàn)出對稱性。
通過Matlab軟件得到濾波器系數(shù)后,利用FPGA對數(shù)據(jù)進行濾波。本系統(tǒng)使用FIR濾波器直線型結構,相當于一個乘累加運算,且乘累加運算的次數(shù)由濾波器階數(shù)決定。同時累加運算由串行結構來實現(xiàn),即每級延時單元與相應系數(shù)的乘積結果進行累加后輸出,因此整個濾波器實際上只需要一個乘法器運算單元。由于FIR濾波器系數(shù)具有對稱性,所以進行對稱系數(shù)的加法運算也由一個加法器串行實現(xiàn)。
經(jīng)過濾波后的數(shù)字信號先經(jīng)過存儲器進行緩存,我們設計一個FPGA內嵌的異步FIFO對數(shù)據(jù)進行緩存處理。由于CCD的信號頻率為1MHz,所以寫時鐘頻率設為1MHz。將串口傳輸速率設為9600bps,則FIFO讀時鐘頻率應大于9600/12Hz,將讀時鐘頻率設為0.8MHz。同時設置空、滿標志信號來判斷何時將數(shù)據(jù)寫入和讀出FIFO。
從FIFO中傳輸出來的12位并行數(shù)據(jù)需要轉換為串行數(shù)據(jù),才能通過串口上傳至上位機中。需要在FPGA內部設計一個移位寄存器,并行數(shù)據(jù)傳輸至移位寄存器后,在通過數(shù)據(jù)緩沖寄存器輸出。
搭建實驗平臺,進行系統(tǒng)測試。將被測物選為雙縫,其衍射條紋投射在線陣CCD上,通過系統(tǒng)數(shù)據(jù)采集與傳輸,傳輸至上位機中。我們將未加低通濾波器時采集到的數(shù)據(jù)保存為txt格式,并用Matlab進行仿真,圖2所示為CCD信號濾波前后的頻譜圖,從圖中我們可以看出,原信號中頻率成分大于1.2MHz的信號被濾除,仿真證明濾波效果較好。圖3中顯示了實驗中得到的CCD時域信號,通過對比我們可以看出經(jīng)過濾波后的條紋更加平滑,毛刺也相應減少了。
圖2 Matlab仿真CCD信號濾波前后的頻譜圖
圖3 雙縫衍射光強分布圖
本文設計的低噪聲測量系統(tǒng)是基于FPGA技術的,由于FPGA具有運算速度快、配置靈活等諸多優(yōu)點,提高了系統(tǒng)的運算速度和集成度。本文從硬件和軟件兩方面對CCD噪聲進行了處理,提高了系統(tǒng)的測量精度。該測量方法可以推廣到具有更高工作頻率的CCD測量系統(tǒng)中,例如無接觸位移測量和振動測量等領域。
[1]王鑫,陳驥,曹久大,等.線陣CCD高速數(shù)據(jù)采集與實時處理系統(tǒng)[J].光電子·激光,2008,19(2):174-177.
[2]王慶有.CCD應用技術[M].天津:天津大學出版社,2000:30-45.
[3]王華偉,劉波,曹劍中.CCD信號處理電路設計研究[J].科學技術與工程,2007,7(16):4153-4156.
[4]杜勇.數(shù)字濾波器的Matlab與FPGA實現(xiàn)[M].北京:電子工業(yè)出版社,2014:101-150.