(公安部第一研究所,北京 102200)
DNA鑒定技術(shù)起源于上世紀(jì)80年代,具有親緣關(guān)系認(rèn)定準(zhǔn)確、個(gè)體識(shí)別率高的特點(diǎn),目前已成為公安機(jī)關(guān)的主要偵破手段[1]。以前我國(guó)DNA檢測(cè)儀器和配套的軟件、耗材都依賴進(jìn)口,本項(xiàng)目組在公安部的大力支持下,經(jīng)歷近十年的科研攻關(guān),以激光誘導(dǎo)熒光(LIF)-高效毛細(xì)管電泳(HPCE)-面陣CCD接收- 短串聯(lián)重復(fù)序列(STR)分型[1]的技術(shù)路線成功研制了國(guó)內(nèi)首臺(tái)商業(yè)化的DNA分析儀,各項(xiàng)技術(shù)指標(biāo)達(dá)到了國(guó)外同類產(chǎn)品水平,已在全國(guó)20多個(gè)省級(jí)公安機(jī)關(guān)推廣使用。
DNA分析儀的電路控制系統(tǒng)采用主從式多處理器架構(gòu),以ARM芯片為主CPU,負(fù)責(zé)部件的監(jiān)控、運(yùn)行時(shí)序的生成、與PC機(jī)的實(shí)時(shí)通信等,其中一個(gè)從處理器DSP負(fù)責(zé)CCD驅(qū)動(dòng)時(shí)序生成、CCD溫度控制、光譜數(shù)據(jù)采集等功能,這兩個(gè)CPU之間就需要一套簡(jiǎn)潔、高效的數(shù)據(jù)存儲(chǔ)、傳輸機(jī)制將DSP采集、處理后的熒光光譜數(shù)據(jù)穩(wěn)定可靠地傳送給ARM。本研究對(duì)熒光光譜數(shù)據(jù)的類型進(jìn)行了分析,基于光譜數(shù)據(jù)的特點(diǎn),設(shè)計(jì)了一種基于雙口RAM的數(shù)據(jù)傳輸機(jī)制。
如圖1所示,以16道毛細(xì)管陣列為例,激光光源激發(fā)攜帶熒光染料的DNA片段,在面陣CCD上每一根毛細(xì)管出射的熒光光譜展開都對(duì)應(yīng)一個(gè)長(zhǎng)條型的空間。出于毛細(xì)管定位、光譜疊加消弭的目的,需要在熒光光譜信息的通道和波長(zhǎng)兩個(gè)維度上進(jìn)行光譜分解[2-4],橫軸方向稱為空間校正(Spectral calibration),縱軸方向稱為光譜校正(spatial calibration),利用這兩個(gè)校正文件可以處理實(shí)際的樣品電泳數(shù)據(jù),得到STR分型結(jié)果。

圖1 熒光光譜在面陣CCD上的展開示意圖
空間校正的目的是確定每根毛細(xì)管在CCD檢測(cè)器上的縱向最佳讀取坐標(biāo)值。為了計(jì)算空間校正圖譜,PC機(jī)數(shù)據(jù)處理軟件需要讀取某一時(shí)刻整幅CCD面陣上的所有像素(pixel)的熒光強(qiáng)度值進(jìn)行橫軸數(shù)據(jù)求和。本研究所使用的CCD為512×512像素,由于DSP采用16bit的數(shù)據(jù)總線,故數(shù)據(jù)采集系統(tǒng)使用16位無(wú)符號(hào)正整數(shù)表示像素的強(qiáng)度值,一幀空間校正數(shù)據(jù)共需要256K×16 bit的數(shù)據(jù)存儲(chǔ)空間。
光譜校正主要是解決染料空間到光譜空間的映射問(wèn)題。在實(shí)際樣品電泳前,需要先使用4種或5種已知的熒光染料(即染料空間)在面陣CCD上成像,讀取這幾種熒光染料在CCD上的光譜分布。經(jīng)過(guò)調(diào)試光路和驅(qū)動(dòng)電路控制,只需要讀取圖1所示的L×H的范圍內(nèi)的像素值,這一段的位置和像素?cái)?shù)都是固定的。本研究所用數(shù)據(jù)采集系統(tǒng)L=280 pixel、H=3 pixel,因此,DSP讀取一幀光譜校正數(shù)據(jù)需要13440×16 bit的數(shù)據(jù)空間。
實(shí)際樣品的STR熒光譜圖同樣是落在圖1中 L×H的范圍內(nèi),與光譜校正數(shù)據(jù)相比較,只是每個(gè)像素的光強(qiáng)度值是變化的,對(duì)ARM來(lái)說(shuō),DSP傳輸過(guò)來(lái)的STR數(shù)據(jù)格式和光譜校正是沒(méi)有區(qū)別的,只是解析時(shí)的數(shù)據(jù)幀頭是不一樣的。
綜上,在進(jìn)行熒光光譜數(shù)據(jù)采集時(shí),DSP通過(guò)控制CCD驅(qū)動(dòng)電路得到兩種格式的數(shù)據(jù):空間校正數(shù)據(jù)和光譜校正數(shù)據(jù)(STR數(shù)據(jù)),然后將數(shù)據(jù)加上幀頭、幀尾、幀序號(hào)等信息,傳輸給ARM主處理器。
如果ARM和DSP采用同步時(shí)序的方式傳輸數(shù)據(jù),會(huì)大大增加它們的工作開銷,特別是ARM還需要對(duì)儀器各部件狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)控,同步方式會(huì)延緩ARM對(duì)部件的響應(yīng)速度,嚴(yán)重的話會(huì)造成儀器的運(yùn)行故障。因此考慮采用異步讀寫的方式,并在兩者之間增加一級(jí)數(shù)據(jù)緩存,這樣當(dāng)DSP采集到一幀數(shù)據(jù)時(shí),它只需要將數(shù)據(jù)存儲(chǔ)到指定的數(shù)據(jù)空間、更新狀態(tài)位后,就可以轉(zhuǎn)入下一幀的數(shù)據(jù)采集,而不必等待ARM給出讀取響應(yīng);ARM也會(huì)定時(shí)(跟采集波特率有關(guān))讀取數(shù)據(jù)、更新狀態(tài)位。
DSP具有的異步通信方式主要是串口(UART)和系統(tǒng)總線掛載雙口RAM[5], UART傳輸速度慢、誤碼率高,所以本設(shè)計(jì)使用IDT公司的高速256K×18 bit 的雙口RAM芯片 IDT70V631S,它采用共享靜態(tài)RAM存儲(chǔ)器的方法,具有兩套(左、右)獨(dú)立的讀寫控制線,數(shù)據(jù)傳輸過(guò)程中兩邊CPU沒(méi)有時(shí)序約束,符合熒光光譜數(shù)據(jù)傳輸不需要同步的要求。
本研究所設(shè)計(jì)的數(shù)據(jù)傳輸硬件電路框圖如圖2所示。

圖2 數(shù)據(jù)傳輸電路框圖


由于i.MX6Q的應(yīng)用程序運(yùn)行于LINUX操作系統(tǒng)下,還需要設(shè)計(jì)雙口RAM的驅(qū)動(dòng)程序,主要是配置讀寫時(shí)鐘、存儲(chǔ)空間映射、地址總線和數(shù)據(jù)總線等,最后結(jié)合硬件電路,完成如下文件操作結(jié)構(gòu)體eimbus_fops中的系統(tǒng)調(diào)用函數(shù)的具體實(shí)現(xiàn)。
static struct file_operations eimbus_fops = {
.owner = THIS_MODULE,
.open = eimbus_open,
.release = eimbus_release,
.read = eimbus_read,
.write = eimbus_write,
.unlocked_ioctl = eimbus_ioctl,
.llseek = eimbus_seek,
.mmap = eimbus_mmap,
.fasync = eimbus_fasync,
};
i.MX6Q EIM總線的異步數(shù)據(jù)讀寫時(shí)序如圖3所示。

圖3 EIM總線異步模式讀寫時(shí)序
3.2.1數(shù)據(jù)空間劃分
雙口RAM由于是數(shù)據(jù)共享,兩側(cè)CPU都能讀寫同一地址的數(shù)據(jù),這就可能造成訪問(wèn)沖突,所以必須制定數(shù)據(jù)訪問(wèn)協(xié)議來(lái)解決共享沖突問(wèn)題。如圖4所示,將RAM空間劃分成通信協(xié)議區(qū)和光譜數(shù)據(jù)區(qū)。

圖4 雙口RAM空間劃分示意圖
通信協(xié)議區(qū)大小為64K×16 bit,它的最高兩個(gè)地址單元被稱作“郵箱”,這兩個(gè)單元一旦被一方寫入數(shù)據(jù),則會(huì)觸發(fā)另一方的中斷信號(hào),另一方通過(guò)讀取郵箱內(nèi)容來(lái)獲取對(duì)方的命令或信息。
ARM將要發(fā)送給DSP的命令寫入LMAILBOX郵箱,這會(huì)觸發(fā)DSP端的中斷,DSP讀出LMAILBOX的內(nèi)容,根據(jù)命令執(zhí)行數(shù)據(jù)采集動(dòng)作。LMAILBOX 16 bit的定義如表1所示,分別表示數(shù)據(jù)采集初始化、開始、結(jié)束、放棄、暫停、恢復(fù),設(shè)置采樣率、幀序號(hào),請(qǐng)求DSP軟件版本號(hào)等命令,初始化命令的參數(shù)寫入INITDATA區(qū),其它命令的參數(shù)寫入COMMAND_PARA區(qū)。
DSP向RMAILBOX郵箱寫入自身的狀態(tài)及事件信息,這會(huì)觸發(fā)ARM端的中斷,供其監(jiān)控CCD數(shù)據(jù)采集系統(tǒng)狀態(tài)。RMAILBOX 16 bit的定義如表2所示,前9個(gè)bit都是對(duì)ARM命令的回應(yīng),其中bit 8置1時(shí)同時(shí)將具體版本信息寫入VERSION區(qū),當(dāng)CCD報(bào)錯(cuò)時(shí),將 bit 9 置1,并把具體錯(cuò)誤信息寫入STATUS_EX區(qū),DATATAIL、DATAHEAD、TFRAMNUM、HFRAMNUM四個(gè)區(qū)在光譜數(shù)據(jù)傳輸時(shí)使用。

表1 LMAILBOX 16 bit定義

表2 RMAILBOX 16 bit定義
光譜數(shù)據(jù)區(qū)大小為192K×16 bit,用于光譜數(shù)據(jù)的緩沖區(qū),由右側(cè)的DSP寫入,左側(cè)的ARM讀出,由圖4可知該區(qū)域是一段線性連續(xù)的、固定長(zhǎng)度的共享存儲(chǔ)空間。
3.2.2光譜數(shù)據(jù)區(qū)讀寫機(jī)制
由光譜數(shù)據(jù)分析可知,一幀空間校正數(shù)據(jù)為256K×16 bit,大于光譜數(shù)據(jù)區(qū)的容量,這就要求必須采用環(huán)形緩沖區(qū)讀寫的方式,如圖5所示,環(huán)形緩沖區(qū)是一種先進(jìn)先出的循環(huán)讀寫方式,在只有一個(gè)寫用戶和一個(gè)讀用戶方式下,天然具有互斥保護(hù)機(jī)制確保兩個(gè)用戶互斥訪問(wèn)數(shù)據(jù)區(qū)域。

圖5 環(huán)形緩沖讀寫示意圖
環(huán)形緩沖區(qū)有一個(gè)寫指針和一個(gè)讀指針,DSP擁有寫指針,它以DATATAIL區(qū)存儲(chǔ)的指針(偏移值)開始將數(shù)據(jù)寫入可寫區(qū)域后,用最新的寫指針(偏移值)更新DATATAIL區(qū),并用最新寫入的數(shù)據(jù)幀序號(hào)更新TFRAMNUM區(qū);同樣的ARM定時(shí)讀取數(shù)據(jù),首先比較DATATAIL區(qū)與DATAHEAD區(qū)是否相等,如果相等表明沒(méi)有數(shù)據(jù)更新,如果不相等則可以讀取數(shù)據(jù),它以DATAHEAD區(qū)存儲(chǔ)的指針(偏移值)開始將數(shù)據(jù)讀出,最后用最新的讀指針(偏移值)更新DATAHEAD區(qū),并用最新讀取的數(shù)據(jù)幀序號(hào)更新HFRAMNUM區(qū),具體讀寫流程如圖6所示。
在這種方式下,DSP寫入一幀完整的空間校正數(shù)據(jù)時(shí),幀尾的數(shù)據(jù)必然覆蓋了幀頭的數(shù)據(jù),覆蓋大小為64K×16 bit,這就要根據(jù)數(shù)據(jù)采樣率計(jì)算好ARM端讀取數(shù)據(jù)的定時(shí)時(shí)間,保證在DSP寫入周期內(nèi)最少要讀取64K×16 bit數(shù)據(jù)、在一個(gè)采樣周期內(nèi)必須讀取完整的一幀數(shù)據(jù),本文綜合各方面情況將定時(shí)時(shí)間設(shè)定為1秒。光譜校正和STR檢測(cè)時(shí)數(shù)據(jù)量少,不存在覆蓋的問(wèn)題,按照1秒的時(shí)間間隔讀取數(shù)據(jù)是足夠的。

圖6 讀、寫流程圖
本研究所述熒光光譜數(shù)據(jù)傳輸系統(tǒng)已經(jīng)應(yīng)用在國(guó)產(chǎn)GA118-16A DNA分析儀上,使用16道毛細(xì)管陣列和IdentifilerTM、DNATyperTM15 PLUS等國(guó)內(nèi)外主流試劑盒,成功生成了空間校正和光譜校正圖譜。對(duì)DNATyperTM15 PLUS 進(jìn)行等位基因分型標(biāo)準(zhǔn)物(Allelic ladder)的STR檢測(cè),分型圖譜如圖7所示,其含有的16個(gè)STR基因座分型準(zhǔn)確,沒(méi)有出現(xiàn)片段丟失現(xiàn)象。
在對(duì)DNA分析儀熒光光譜數(shù)據(jù)分析的基礎(chǔ)上,采用主從式處理器架構(gòu),以雙口RAM作為數(shù)據(jù)傳輸?shù)墓蚕泶鎯?chǔ)空間,成功設(shè)計(jì)了一套滿足DNA分析儀要求的數(shù)據(jù)傳輸系統(tǒng)。目前,使用該系統(tǒng)的國(guó)產(chǎn)DNA分析儀已經(jīng)銷售了100多臺(tái)(套),滿足了公安機(jī)關(guān)刑事偵查、打拐、DNA庫(kù)建設(shè)等方面的需要!