摘 要: 分析了目前市面上常見的數(shù)字顯微鏡設(shè)計(jì)方案的利弊,提出在嵌入式平臺(tái)上設(shè)計(jì)數(shù)字顯微鏡具有成本和性能優(yōu)勢(shì)。詳細(xì)闡述了利用XPLD芯片配合大容量的DDR SDRAM實(shí)現(xiàn)數(shù)字顯微鏡的方案。具體分析了設(shè)計(jì)中通過定制DDR控制器解決大容量存儲(chǔ)器和建立隨機(jī)存儲(chǔ)緩沖區(qū)的方法。
關(guān)鍵詞: XPLD;DDR控制器;高速圖像采集
隨著數(shù)字多媒體技術(shù)的不斷發(fā)展,越來越多的模擬視頻設(shè)備被引入數(shù)字技術(shù)。傳統(tǒng)的應(yīng)用于工業(yè)、醫(yī)療和教學(xué)的顯微鏡也可以借助數(shù)字技術(shù)來提升產(chǎn)品的性能和使用的舒適性。
在大多數(shù)人的印象中,傳統(tǒng)的顯微鏡是一個(gè)純光學(xué)設(shè)備,觀測(cè)者通過目鏡觀測(cè)被放大顯微后的圖像。引入數(shù)字技術(shù)后,被觀測(cè)的圖像可以由圖像傳感器收集,然后通過高速數(shù)據(jù)總線發(fā)送的專用顯示屏上顯示,從而大大降低由長(zhǎng)時(shí)間觀測(cè)帶來的疲勞感。另外,經(jīng)過數(shù)字化處理得到的圖像數(shù)據(jù)可以用于后臺(tái)分析,從而擴(kuò)展了傳統(tǒng)顯微鏡的功能。
數(shù)字顯微鏡是在傳統(tǒng)光學(xué)顯微鏡的基礎(chǔ)上,加裝一個(gè)數(shù)字采集模塊來替代目鏡。數(shù)字采集模塊中集成光學(xué)傳感器將光學(xué)圖像數(shù)字化后,經(jīng)高速數(shù)據(jù)總線傳輸?shù)綄S玫娘@示設(shè)備上(一般借助于電腦液晶顯示器)顯示出來。
數(shù)字顯微鏡根據(jù)應(yīng)用要求的不同可分為兩大類:一類是對(duì)圖像采集的速度沒有要求或要求不高,只需要對(duì)靜止的圖像進(jìn)行分析,這類產(chǎn)品也可以稱為照相顯微鏡;另一類應(yīng)用需要實(shí)時(shí)圖像數(shù)據(jù)用于后端處理,應(yīng)用于各類工業(yè)監(jiān)控或識(shí)別認(rèn)證。前一類產(chǎn)品設(shè)計(jì)比較容易,而后一類產(chǎn)品雖然實(shí)現(xiàn)上有一定的難度,但其應(yīng)用范圍更為廣泛,而且可以兼容前一類產(chǎn)品的需求,是未來發(fā)展的趨勢(shì)。
數(shù)字顯微鏡內(nèi)部的功能也可分成兩部分:數(shù)據(jù)采集和圖像處理。圖像處理根據(jù)應(yīng)用的不同會(huì)采用不同的算法,由于后臺(tái)處理設(shè)備的差異,同一個(gè)算法的實(shí)現(xiàn)也不盡相同,在此不作詳細(xì)討論。而數(shù)據(jù)采集部分對(duì)于所有的數(shù)字顯微鏡系統(tǒng)本質(zhì)上都是一致的,而且往往是整個(gè)系統(tǒng)的瓶頸所在,本文將詳細(xì)討論。
1 主流的圖像采集方式
目前市面上的數(shù)字顯微鏡主要有兩大類。
(1)使用專用的數(shù)據(jù)采集卡,通過通用的串行或并行接口和PC機(jī)相連接,使用PC機(jī)的顯示屏作為顯示終端。常用的數(shù)據(jù)接口有USB、firewire1394、PCI等。由于在大多數(shù)應(yīng)用中數(shù)字模塊會(huì)安裝在小型顯微鏡上,考慮到設(shè)備的便攜性和接口的通用性,市場(chǎng)上見到最多的是采用USB接口的數(shù)據(jù)采集卡。
該方案最大的優(yōu)勢(shì)在于借助PC平臺(tái)。因?yàn)镻C機(jī)集成的各種通用數(shù)據(jù)總線具有比較高的數(shù)據(jù)傳輸率,可以用來高速接收采集卡采集的數(shù)據(jù),其內(nèi)置大量的內(nèi)存可以用作數(shù)據(jù)采集緩存,而且PC機(jī)具有豐富的通用外設(shè)(如顯示和存儲(chǔ)),因此在PC平臺(tái)上搭建的數(shù)字顯微鏡功能擴(kuò)展相對(duì)容易,產(chǎn)品設(shè)計(jì)周期較短。
然而,該方案的一個(gè)致命缺陷在于數(shù)據(jù)傳輸?shù)乃俣?。?duì)于顯微鏡設(shè)備而言,為了能夠清晰地辨別圖像中的特征結(jié)構(gòu),圖像需要達(dá)到至少500dpi的分辨率,這就要求圖像解析度至少達(dá)到1 024×768,最好是1 280×1024(1.3 M)。如果要做到實(shí)時(shí)采集和處理(30 f/s),數(shù)據(jù)量將達(dá)到1 280×1 024×30×8=300 Mb/s。專用數(shù)據(jù)采集卡的采集速度不成問題,瓶頸在于采集卡到PC機(jī)的傳輸帶寬。PC機(jī)PCI總線的速率為32(bit)×66=2 112 Mb/s,USB2.0的數(shù)據(jù)傳輸峰值可以達(dá)到480 Mb/s,firewire也可以達(dá)到400 Mb/s的傳輸速率,似乎都能滿足要求。問題在于PC機(jī)的體系結(jié)構(gòu)決定了任何外設(shè)都只可能是從設(shè)備,只能請(qǐng)求總線資源,而不能主動(dòng)占有。在Windows(或是Linux)實(shí)時(shí)多任務(wù)操作系統(tǒng)的調(diào)度下,即使在系統(tǒng)不運(yùn)行其他應(yīng)用程序時(shí),系統(tǒng)時(shí)間片和系統(tǒng)資源也會(huì)被操作系統(tǒng)內(nèi)核和各類外設(shè)分享。以最常用的USB總線為例,理論速率是480 Mb/s,但是真正能用到的只有100 Mb/s左右。正因?yàn)槿绱?,現(xiàn)在市面上基于PC的數(shù)據(jù)采集設(shè)備產(chǎn)品性能都不太理想,采集1.3 M像素圖像時(shí)只能達(dá)到每秒7或8幀的幀率,達(dá)不到實(shí)時(shí)性要求。另外,對(duì)PC機(jī)的依賴也限制了這類系統(tǒng)在小型便攜式設(shè)備上的應(yīng)用,這也間接提高了系統(tǒng)成本。
(1)此類產(chǎn)品基本上是在前一種方案上的改進(jìn)。為了解決傳輸速率問題,這類方案采用定制的PC和主板,并使用自己開發(fā)的操作系統(tǒng),使總線專門用于數(shù)據(jù)傳輸,保證速度。這類產(chǎn)品的問題是開發(fā)和設(shè)計(jì)成本高,因此價(jià)格高昂,一般也不能用于便攜式的小型顯微設(shè)備中。
隨著嵌入式處理器的不斷發(fā)展,性能不斷提高,使得在嵌入式平臺(tái)上設(shè)計(jì)高速采集處理系統(tǒng)成為可能。本文將介紹一種基于XPLD和DSP的便攜式數(shù)字顯微鏡方案。
2 嵌入式數(shù)字顯微鏡系統(tǒng)結(jié)構(gòu)
一個(gè)成熟的系統(tǒng)體系結(jié)構(gòu)要求系統(tǒng)內(nèi)各部分分工明確,同時(shí)又具有一定的通用性和可移植性。嵌入式平臺(tái)上一般使用DSP芯片實(shí)現(xiàn)圖像處理。DSP芯片在數(shù)學(xué)運(yùn)算方面有獨(dú)到優(yōu)勢(shì),但數(shù)據(jù)搬移卻不是它的長(zhǎng)項(xiàng),因此需要另一個(gè)協(xié)處理器來完成繁瑣的數(shù)據(jù)采集搬移任務(wù)。一般有ARM或FPGA/CPLD兩種選擇。ARM采用通用的系統(tǒng)結(jié)構(gòu),設(shè)計(jì)相對(duì)簡(jiǎn)單,但是數(shù)據(jù)接口(傳感器接口和存儲(chǔ)器接口)也相對(duì)固定,不夠靈活。FPGA/CPLD雖然設(shè)計(jì)較復(fù)雜,但是應(yīng)用靈活??紤]到不同的顯微鏡可能會(huì)用到各種不同的傳感器,設(shè)計(jì)中選用了后者。另一方面,采集到的圖像數(shù)據(jù)需要大量的緩存區(qū),而DSP往往希望不受控地直接從緩存區(qū)中獲得數(shù)據(jù),這樣才能發(fā)揮它的最大處理性能。最理想的結(jié)構(gòu)是FPGA控制數(shù)據(jù)采集,然后把采集到的數(shù)據(jù)放到一個(gè)雙口RAM中緩存起來,而DSP可以直接從雙口RAM中取數(shù)據(jù)進(jìn)行運(yùn)算。但是雙口RAM比較貴,而且容量小,用來緩存圖像數(shù)據(jù)不現(xiàn)實(shí),所們還需要用FPGA來實(shí)現(xiàn)數(shù)據(jù)緩存。
基于以上分析,顯微鏡前端采集處理模塊結(jié)構(gòu)設(shè)計(jì)如圖1所示。
圖像采集模塊的核心是一塊可編程邏輯器件XPLD,它負(fù)責(zé)連接圖像傳感器和后端處理設(shè)備,并實(shí)現(xiàn)自動(dòng)的圖像采集和數(shù)據(jù)傳輸功能。由它控制的DDR SDRAM為后端的DSP提供了大量的圖像數(shù)據(jù)緩沖器。XPLD實(shí)現(xiàn)的另一個(gè)功能是驅(qū)動(dòng)液晶顯示屏顯示圖像。
DSP是系統(tǒng)的后端,負(fù)責(zé)實(shí)時(shí)處理采集到的圖像數(shù)據(jù),根據(jù)不同要求實(shí)現(xiàn)各種圖像運(yùn)算和連接外部數(shù)據(jù)存儲(chǔ)設(shè)備。
3 關(guān)鍵技術(shù)的實(shí)現(xiàn)
3.1 DDR控制器
本設(shè)計(jì)首先面對(duì)的問題是需要大量的高速存儲(chǔ)器保存圖像數(shù)據(jù)。
從光學(xué)傳感器采集的圖像數(shù)據(jù)是不能直接送到顯示器顯示的,因?yàn)楣鈱W(xué)傳感器和顯示器的圖像幀率是不同的。OV9630的圖像輸出幀率是30 f/s,而一般顯示器要求的幀率是60 f/s,這就要求系統(tǒng)有一個(gè)大容量的數(shù)據(jù)存儲(chǔ)區(qū)來緩沖一幀圖像。本設(shè)計(jì)選擇動(dòng)態(tài)存儲(chǔ)器(DDR SDRAM)主要是考慮到價(jià)格因素:大容量動(dòng)態(tài)存儲(chǔ)器的價(jià)格大概只有同樣大小靜態(tài)存儲(chǔ)器的五分之一。使用動(dòng)態(tài)存儲(chǔ)器必須有相應(yīng)的控制器來控制它的讀寫,目前有一些FPGA已經(jīng)集成了動(dòng)態(tài)存儲(chǔ)器控制器或提供響應(yīng)的庫(kù)支持,方案中為了盡可能節(jié)省成本,選用了LATTICE公司的XPLD系列產(chǎn)品,它沒有動(dòng)態(tài)存儲(chǔ)器控制器的資源,所以要自行設(shè)計(jì)。
動(dòng)態(tài)存儲(chǔ)器的控制比靜態(tài)存儲(chǔ)器復(fù)雜得多。為了解決大容量存儲(chǔ)器地址總線寬度的問題,動(dòng)態(tài)存儲(chǔ)器的地址分成了行和列兩部分復(fù)用到同一批管腳上。這樣在保持容量不變的條件下減小了數(shù)據(jù)總線的寬度,有利于減小芯片的尺寸,因此可以實(shí)現(xiàn)高密度、大容量的存儲(chǔ),但同時(shí)也給操作帶來了麻煩:數(shù)據(jù)地址需要分兩次傳送,而且由于內(nèi)部地址譯碼的要求,行列地址傳送還需要有一定的間隔(CAS latency)。動(dòng)態(tài)存儲(chǔ)器支持隨機(jī)讀寫(單字節(jié))或突發(fā)模式(一段連續(xù)的數(shù)據(jù))以適應(yīng)不同長(zhǎng)度的數(shù)據(jù)操作。另外,動(dòng)態(tài)存儲(chǔ)器還需要通過定時(shí)充電放電(Reflesh)來保證信息不丟失。加上一些其他的錯(cuò)誤恢復(fù)機(jī)制,一個(gè)完整的動(dòng)態(tài)存儲(chǔ)器控制器設(shè)計(jì)起來非常復(fù)雜。
對(duì)于本文的應(yīng)用來說,只需要滿足圖像采集和暫存的要求,不需要實(shí)現(xiàn)所有的控制器功能,所以采用了如圖2所示的控制器模型。
上電復(fù)位后進(jìn)行控制器初始化,設(shè)定好控制器的工作模式,之后進(jìn)入讀寫操作。本設(shè)計(jì)對(duì)于控制器的讀寫和刷新進(jìn)行了極大的簡(jiǎn)化。
首先,所有的讀寫操作都是采用突發(fā)模式,并且設(shè)置成256 B的模式。因?yàn)轱@微鏡應(yīng)用中主要是采集和保存圖像數(shù)據(jù),這里碰到的都是連續(xù)的數(shù)據(jù)流,如對(duì)于130萬(wàn)像素的圖像每行有1 280個(gè)連續(xù)像素點(diǎn)。使用最長(zhǎng)的突發(fā)讀寫模式可以最大限度地提高讀寫效率,而且可以簡(jiǎn)化控制器的設(shè)計(jì)(不要判斷是采用突發(fā)模式還是隨機(jī)模式)。
其次,通用的DDR控制器都是接受系統(tǒng)的指令再進(jìn)行相應(yīng)的操作。而本文的應(yīng)用要求相對(duì)固定:即接收從圖像傳感器發(fā)送過來的圖像數(shù)據(jù);輸出相應(yīng)的數(shù)據(jù)給后端DSP處理和顯示器顯示。因?yàn)閳D像輸入輸出數(shù)據(jù)的比例是固定的1:2(CMOS采集輸入30 f/s,顯示器輸出要求60 f/s),即每次寫操作對(duì)應(yīng)2次讀操作,所以可以簡(jiǎn)單地用一個(gè)狀態(tài)標(biāo)識(shí)Status來規(guī)定下一次操作,如表1所示。
Status設(shè)計(jì)成一個(gè)自動(dòng)加“+”的2 bit的狀態(tài)標(biāo)志,程序根據(jù)Status的標(biāo)識(shí)進(jìn)入到相應(yīng)的狀態(tài)機(jī)實(shí)現(xiàn)讀、寫或是刷新的時(shí)序。這樣的結(jié)構(gòu)極大簡(jiǎn)化了DDR控制器的邏輯設(shè)計(jì),可以方便地在相對(duì)簡(jiǎn)單和便宜的XPLD上實(shí)現(xiàn)。
最后,對(duì)DDR控制器的運(yùn)行速度也有一定的要求。速度越高數(shù)據(jù)傳輸?shù)难舆t也越小,但是過高的速度會(huì)增加系統(tǒng)功耗。在本設(shè)計(jì)中,DDR是用于圖像采集和圖像顯示之間的緩沖,DDR的數(shù)據(jù)吞吐速度必須要大于輸入和輸出數(shù)據(jù)的總和。輸入端的圖像傳感器運(yùn)行速度是48 MB/s,輸出端的圖像顯示要求108 MB/s,因此DDR的操作速率要大于156 MB/s,考慮到各種開銷,選擇了192 MB/s的操作速率。
3.2 圖像數(shù)據(jù)緩存
雖然解決了大容量存儲(chǔ)器的問題,還仍不能實(shí)現(xiàn)所需要的顯示和數(shù)據(jù)處理功能。從顯示的要求看,需要連續(xù)的1 280個(gè)圖像數(shù)據(jù),而直接從DDR中讀出的數(shù)據(jù)每次最多256個(gè),所以需要另一個(gè)緩沖區(qū)緩存至少1 280個(gè)數(shù)據(jù)。從DSP處理的角度看,如前文所述,也不希望被動(dòng)接收256個(gè)連續(xù)數(shù)據(jù),最好是能方便地從一塊緩沖區(qū)中取出數(shù)據(jù)運(yùn)算。所以設(shè)計(jì)一個(gè)容量相對(duì)較大、又可以方便隨機(jī)讀寫的緩存區(qū)是實(shí)現(xiàn)本文設(shè)計(jì)的關(guān)鍵。
因?yàn)榫彌_區(qū)可以從DDR控制器和DSP/顯示控制單元兩個(gè)方面來操作,所以必須是雙口RAM。從成本的角度考慮,使用外部雙口RAM的方案不現(xiàn)實(shí)。XPLD內(nèi)部提供了16塊多功能模塊MFB(Mul-Function Block),其結(jié)構(gòu)簡(jiǎn)圖如3所示。這16塊多功能模塊可以隨意配置成TURE DPRAM(真雙口RAM)、PESUDO DPRAM(偽雙口RAM)、SRAM(單口RAM)、FIFO、CAM(查找表)和LOGIC多種模式。如果配置成本設(shè)計(jì)所需要的偽雙口RAM(單向讀,單向?qū)?,每塊MFB可以配成2 KB,16塊總共是32 KB,完全可以滿足要求。
利用XPLD內(nèi)部的偽雙口RAM,設(shè)計(jì)出如圖4所示的緩沖結(jié)構(gòu)。
本設(shè)計(jì)中建立了3塊512 B的雙口RAM用于緩沖,其邏輯功能表述如下:
(1)雙口RAM1、雙口RAM2和DDR SDRAM共同組成圖像采集的大容量高速緩沖。圖像數(shù)據(jù)由傳感器輸出經(jīng)過雙口RAM1緩存后以頁(yè)操作的模式寫入DDR SDRAM;同時(shí)DDR控制器以前文所述的邏輯用頁(yè)模式將數(shù)據(jù)從DDR SDRAM中讀到雙口RAM2中用于顯示。這里需要注意的是雙口RAM的大小。原則上說,因?yàn)閳D像的格式是1 280×1 024,每塊雙口RAM需要緩沖2行1 280×2的數(shù)據(jù)來保證舊的數(shù)據(jù)不會(huì)被新來的數(shù)據(jù)覆蓋掉。但是因?yàn)榍拔脑O(shè)計(jì)的DDR控制器效率極高,且DDR的傳輸速率(大于200 MB/s)遠(yuǎn)大于圖像傳感器(48 MB/s)和顯示器(108 MB/s)要求的數(shù)據(jù)速率。因此雙口RAM1和雙口RAM2只需要512 B,滿足DDR兩頁(yè)輪換的要求,就可以保證沒有數(shù)據(jù)丟失或被覆蓋掉。
(2)雙口RAM3是專門供DSP使用的,它的設(shè)置相對(duì)靈活,需要根據(jù)后端算法的不同設(shè)置大小和更新機(jī)制。本文設(shè)計(jì)的系統(tǒng)圖像處理功能較少,所以留出512 B即可。
從以上設(shè)計(jì)的結(jié)構(gòu)可以看出,整個(gè)系統(tǒng)基于嵌入式平臺(tái),其核心部件是一顆簡(jiǎn)單的XPLD可編程邏輯器件,它獨(dú)立完成了圖像采集、數(shù)據(jù)存儲(chǔ)和圖像顯示功能,在采集130萬(wàn)像素圖像時(shí)實(shí)時(shí)顯示幀率達(dá)到30 f/s,以低廉的成本實(shí)現(xiàn)了高速數(shù)字顯微鏡的基本功能。而且整個(gè)實(shí)現(xiàn)過程沒有占用DSP的處理資源,并且還給后端的DSP預(yù)留出一塊高速的隨機(jī)讀寫緩沖區(qū)。該方案稍加修改,便可以應(yīng)用到各種不同的應(yīng)用中,移植性極佳。
參考文獻(xiàn)
[1] 劉德良,姚春蓮,李煒,等.多分辨率圖像實(shí)時(shí)采集系統(tǒng)的FPGA邏輯設(shè)計(jì).電子設(shè)計(jì)應(yīng)用,2003(10).
[2] 李博文,楊學(xué)友,李慧娟.VHDL在高速圖像采集系統(tǒng)中的應(yīng)用設(shè)計(jì).單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2003(10).
[3] 俞詩(shī)鯤.基于單片DSP的指紋識(shí)別系統(tǒng)研究與實(shí)現(xiàn).武漢大學(xué)碩士論文,2003.
[4] Lattice CPLD.http://www.latticesemi.com.
[5] TI DSP.http://www.ti.com.
[6] DDR SDRAM.http://www.samsung.com/Products/Semicon-ductor/common.
[7] ICM110U 3MP CMOS sensor.http://www.ic-media.com.