白龍溫,賈 銘
(1.天津機電職業(yè)技術學院 電氣學院,天津 300401;2.河北工業(yè)大學 電信學院,天津 300401)
非制冷紅外焦平面探測器憑借價格低、體積小、操作方便等優(yōu)勢在民用紅外成像領域應用越來越廣泛[1]。特別是以紅外成像為基礎的非接觸紅外測溫方法,相對于傳統(tǒng)的電子體溫計或者紅外體溫槍,具有速度快,精準度高,結合在PC機的人工智能算法可實現(xiàn)人群快速測溫,在新冠疫情防控中得到了廣泛關注[2]。本文結合USB總線傳輸速度快、應用廣、支持熱插拔等優(yōu)點,設計了一種基于USB接口的非制冷紅外成像機芯,使用ULIS公司Pico384非制冷紅外焦平面探測器,以FPGA和USB3.0接口芯片作為核心,給出了總體設計圖。并針對紅外探測器要求低噪聲的特點,設計了關鍵硬件和USB接口相關軟件的設計。
整機系統(tǒng)包括探測器控制模塊、信息處理模塊和電源接口模塊三部分,分別位于3塊獨立的電路板上,板間通過高速連接器進行信號傳輸。整體框圖如圖1所示。
紅外焦平面探測器Pico384的像素分辨率為384*288,像素尺寸17 μm,采用IIC接口通信,總功耗<65 mW[3]。FPGA為Altera公司CycloneV系列 5CEFA4F17I7,內(nèi)嵌DDR硬件控制器,USB芯片為Cypress公司EZ-USB FX3系列CYUSB3014,內(nèi)部集成AMR9處理器和高度靈活的可編程數(shù)據(jù)接口GPIF II,支持USB3.0并向下兼容USB2.0,其傳輸速度達5 Gbps。
紅外探測器供電后,接收到主時鐘和FPGA發(fā)出的IIC配置信號開始啟動,并輸出原始模擬視頻信號以及像素時鐘(PSYNC)、行同步(HSYNC)和幀(VSYNC)同步等數(shù)字信號。同步數(shù)字信號直接進入FPGA,而原始模擬視頻信號則經(jīng)低噪聲信號調(diào)理電路濾波放大轉成差分信號,經(jīng)高精度高速低噪聲ADC完成數(shù)據(jù)轉換成數(shù)字量后進入FPGA內(nèi)部處理緩存,F(xiàn)PGA根據(jù)同步信號對該緩存數(shù)據(jù)調(diào)整接收并存儲為一幀圖像數(shù)據(jù).隨后圖像數(shù)據(jù)經(jīng)過非均勻性矯正、壞元替代等處理算法后,向USB芯片的GPIF II口傳輸數(shù)據(jù),USB芯片打包數(shù)據(jù)并向PC端傳輸,PC端解碼后獲取圖像數(shù)據(jù)。
紅外成像過程中過多的噪聲將直接影響紅外圖像質量,大大減少紅外圖像測量的精度。ADC采樣電路之前的模擬部分更容易引入噪聲,為此設計合理的低噪聲探測器供電電路、信號調(diào)理和ADC電路將顯得尤為重要。
Pico384焦平面需要數(shù)字電壓VDD 1.5 V、模擬電壓VCC 3.6 V、模擬偏置電壓VSK固定3.6 V(最大電流1 mA)輸入,以及可調(diào)的模擬偏置電壓GSK(調(diào)整范圍:1.7~3.6 V)和GFID(調(diào)整范圍:1~2.9 V)[3]。傳統(tǒng)方法為DC/DC或LDO直接供電,這種方法易引入開關噪聲或輸出噪聲無法達到很低的水平,本文采用高輸出電流的運算放大器供電,運算放大器具有較高電源抑制比和較低的輸出噪聲。GSK和模擬電壓VCC 3.6V設計電路如圖2所示。
Pico384輸出的模擬視頻信號易受干擾以及幅值不在ADC的輸入范圍以內(nèi),需要通過信號調(diào)理進行濾波、調(diào)幅、轉換等。根據(jù)系統(tǒng)性能以及成本等綜合考慮,ADC選擇AD6645-80,其具有14位采樣精度,2.4 V參考源輸出,80 MSPS(Million Samples per Second,每秒采樣百萬次)的采樣速率,信噪比75 dB。整個電路分為如圖3所示兩個部分[5]。
模擬視頻信號的頻率為13.5 MHz,幅值為0.5~2.9 V (電壓峰峰值為2.4 Vpp),而ADC芯片AD6645-80的差分輸入范圍為2.2 Vpp,故信號調(diào)理模塊完成單端信號轉換成差分信號的功能,并縮小放大倍數(shù)為0.916倍。配置增益電阻值如圖2中RF和RG所示,其中R1為單端匹配電阻用以減少信號反射引起的失真,R2為補償環(huán)路增益電阻[3]。差分信號經(jīng)直流耦合輸入ADC差分輸入管腳,其中RF和CF構成低通濾波器.
下邊考慮信號調(diào)理模塊中運放ADA4937的輸入噪聲和ADC輸入時鐘的時鐘抖動對ADC信噪比的影響.
式中:FSR為ADC芯片AD6645滿量程輸入[4]。SNR為ADC芯片AD6645的信噪比。
運放ADA4937和ADC芯片AD6645本身噪聲疊加后為146 μV,可得最終信噪比為74.5 dB,則信號調(diào)理電路選用運放ADA4937,對ADC的噪聲影響是很小的。
ADC的信噪比還受輸入ADC的時鐘抖動(Jitter)的影響,分析過程如下所示。
SNR=-20log10(2×pi×fin×JitterTotal)
(1)
(2)
式中:SNR為ADC芯片AD6645的信噪比;fin為被采樣信號的輸入頻率;JitterTotal為對ADC芯片AD6645信噪比產(chǎn)生影響的時鐘總體抖動;JitterApeture為ADC芯片AD6645的孔徑抖動;JitterExt_clock為外部時鐘發(fā)生器提供的時鐘抖動。
據(jù)上文數(shù)據(jù)知:fin=13.5 MHz,SNR=74.5 dB,孔徑抖動取JitterApeture=0.1 ps,根據(jù)上述公式計算的外部輸入時鐘Jitterext_clock<2.09 ps,則外部時鐘發(fā)生器提供的采樣時鐘要滿足此要求[8]。
USB接口相關的軟件根據(jù)功能分工分為三個部分:FPGA固件設計、CYUSB3014的固件設計以及上位機驅動軟件設計。FPGA 固件在Altera公司的Quartus II 13.1開發(fā)環(huán)境中編譯和調(diào)試,采用Verilog語言編寫,實現(xiàn)了圖像數(shù)據(jù)幀頭打包傳輸和USB接口控制。CYUSB3014的固件是USB設備開發(fā)中的最重要的部分,就是對CYUSB3014內(nèi)部的ARM芯片編程進行各種寄存器的配置過程,在Eclipse開發(fā)環(huán)境中進行編譯和調(diào)試,采用C語言編寫,實現(xiàn)了GPIF II和DMA通道的開發(fā)設計.上位機驅動軟件在開發(fā)環(huán)境為QT,采用C++編寫,實現(xiàn)USB傳輸圖像數(shù)據(jù)的接收解碼和顯示。
如圖4所示為CYUSB3014的GPIF II接口和FPGA的硬件連接,CYUSB3014配置成Slave FIFO模式,與普通FIFO功能一樣,有讀寫控制、線程地址以及“讀空”“寫滿”標志位等信號,F(xiàn)PGA檢查和控制這些信號與GPIF II接口進行數(shù)據(jù)交互。
FPGA內(nèi)USB接口控制狀態(tài)機的設計如圖5所示,狀態(tài)數(shù)為6個,分為讀取上位機指令和寫數(shù)據(jù)兩部分,包括讀取線程0(線程地址為ADDR=′00′)的指令到對應的控制器寄存器組,以及FPGA內(nèi)部FIFO中的數(shù)據(jù)寫入線程1(線程地址為ADDR=′01′)當中,工作流程如下:
1)狀態(tài)機復位后進入IDLE狀態(tài),清零各個使能位。
2)判斷線程0有上位機指令(Read_Empty=′0′)后,進入READ_0準備讀取控制指令,并在READ_1中讀取指令存儲到控制器中,回到IDLE狀態(tài)。當線程0沒有指令并且FPGA內(nèi)部 FIFO緩沖的數(shù)據(jù)大于n時,進入WRITE_0準備向線程1寫入數(shù)據(jù).此時若線程1沒有寫滿(Write_Full=′0′),進入WRITE_1并讀取FPGA內(nèi)部FIFO 的n個數(shù)據(jù),寫入GPIF II接口,否則進入WRITE_2,清零使能位并返回IDLE狀態(tài)[7]。
為保證圖像數(shù)據(jù)準確識別,F(xiàn)PGA在每幀圖像數(shù)據(jù)的幀頭和行頭添加標識符,以表示每幀和每行的起始點,然后和圖像數(shù)據(jù)打包成新圖像數(shù)據(jù)傳到PC,以便PC根據(jù)標識符正確解析圖像數(shù)據(jù)顯示[9]。
CYUSB3014的固件程序主要包括系統(tǒng)初始化、應用程序初始化等,通過配置GPIF II接口和DMA通道開發(fā),實現(xiàn)了FPGA和PC的高速數(shù)據(jù)傳輸和PC端控制指令下發(fā)。GPIF II接口配置為SLAVE FIFO模式與FPGA實現(xiàn)無縫銜接,為實現(xiàn)管理USB和GPIF II口之間的數(shù)據(jù)傳輸?shù)腄MA通道的功能,引入了P Socket(生產(chǎn)插座)和C Socket(消耗插座)可方便配置DMA傳輸。
固件初始化流程包括:器件初始化,包括器件Cache配置,IO管腳配置,初始化OS并開始OS定時,函數(shù)CyFxApplicationDefine()會被FX3庫自動調(diào)用來開始應用程序。
應用程序初始化主要包括兩部分:GPIF II和USB初始化,其中USB初始化包括Endpoint初始化、P Socekt和U Socekt、DMA配置、FLAG標志位設置等。
固件中主要完成2個數(shù)據(jù)通道的配置工作:
1)圖像上傳的通道,USB配置成C Socket,對應Endpoint3,GPIF II配置成P Socket,對應線程01。
2)指令下發(fā)通道,USB配置成P Socket,對應Endpoint1,GPIF II配置成S Socket,對應線程00。
Cypress公司的CyAPI提供了簡單又功能強大的調(diào)用接口,只需在QT上位機應用程序中加入頭文件CyAPI.h和庫文件CyAPI.Lib即可調(diào)用相應控制函數(shù),大大減少了開發(fā)周期。上位機的驅動流程如圖6。
PC端在獲取圖像數(shù)據(jù)后,通過檢查幀頭和行頭的標識符確定每幀和每行的開始,并將每行的圖像數(shù)據(jù)放到緩沖區(qū)相應位置,當獲取一整幅圖像轉成8 bit并調(diào)用QPixmap顯示.由于各行獨立,當某行數(shù)據(jù)丟失后,該行將不能正確顯示,但不會影響整體顯示效果[11].在上位機添加偽彩色處理后整體的顯示效果如圖7所示。
USB接口應用廣泛,尤其是CYPRESS公司的FX3系列USB3.0控制器CYUSB3014,接口簡單,開發(fā)方便,極大地提高了系統(tǒng)可靠性.本文研制的非制冷紅外機芯實現(xiàn)了384*288分辨率、25幀的圖像傳輸,并通過實驗驗證了機芯的穩(wěn)定性和可靠性。由于本機芯采用模塊化設計,修改探測器控制模塊可適應不同探測器,具有很強的擴展性,可作為一種通用USB接口的非制冷紅外機芯平臺。