(公安部第一研究所,北京 102200)
DNA鑒定技術(shù)起源于上世紀80年代,具有親緣關(guān)系認定準確、個體識別率高的特點,目前已成為公安機關(guān)的主要偵破手段[1]。以前我國DNA檢測儀器和配套的軟件、耗材都依賴進口,本項目組在公安部的大力支持下,經(jīng)歷近十年的科研攻關(guān),以激光誘導熒光(LIF)-高效毛細管電泳(HPCE)-面陣CCD接收- 短串聯(lián)重復序列(STR)分型[1]的技術(shù)路線成功研制了國內(nèi)首臺商業(yè)化的DNA分析儀,各項技術(shù)指標達到了國外同類產(chǎn)品水平,已在全國20多個省級公安機關(guān)推廣使用。
DNA分析儀的電路控制系統(tǒng)采用主從式多處理器架構(gòu),以ARM芯片為主CPU,負責部件的監(jiān)控、運行時序的生成、與PC機的實時通信等,其中一個從處理器DSP負責CCD驅(qū)動時序生成、CCD溫度控制、光譜數(shù)據(jù)采集等功能,這兩個CPU之間就需要一套簡潔、高效的數(shù)據(jù)存儲、傳輸機制將DSP采集、處理后的熒光光譜數(shù)據(jù)穩(wěn)定可靠地傳送給ARM。本研究對熒光光譜數(shù)據(jù)的類型進行了分析,基于光譜數(shù)據(jù)的特點,設(shè)計了一種基于雙口RAM的數(shù)據(jù)傳輸機制。
如圖1所示,以16道毛細管陣列為例,激光光源激發(fā)攜帶熒光染料的DNA片段,在面陣CCD上每一根毛細管出射的熒光光譜展開都對應一個長條型的空間。出于毛細管定位、光譜疊加消弭的目的,需要在熒光光譜信息的通道和波長兩個維度上進行光譜分解[2-4],橫軸方向稱為空間校正(Spectral calibration),縱軸方向稱為光譜校正(spatial calibration),利用這兩個校正文件可以處理實際的樣品電泳數(shù)據(jù),得到STR分型結(jié)果。
圖1 熒光光譜在面陣CCD上的展開示意圖
空間校正的目的是確定每根毛細管在CCD檢測器上的縱向最佳讀取坐標值。為了計算空間校正圖譜,PC機數(shù)據(jù)處理軟件需要讀取某一時刻整幅CCD面陣上的所有像素(pixel)的熒光強度值進行橫軸數(shù)據(jù)求和。本研究所使用的CCD為512×512像素,由于DSP采用16bit的數(shù)據(jù)總線,故數(shù)據(jù)采集系統(tǒng)使用16位無符號正整數(shù)表示像素的強度值,一幀空間校正數(shù)據(jù)共需要256K×16 bit的數(shù)據(jù)存儲空間。
光譜校正主要是解決染料空間到光譜空間的映射問題。在實際樣品電泳前,需要先使用4種或5種已知的熒光染料(即染料空間)在面陣CCD上成像,讀取這幾種熒光染料在CCD上的光譜分布。經(jīng)過調(diào)試光路和驅(qū)動電路控制,只需要讀取圖1所示的L×H的范圍內(nèi)的像素值,這一段的位置和像素數(shù)都是固定的。本研究所用數(shù)據(jù)采集系統(tǒng)L=280 pixel、H=3 pixel,因此,DSP讀取一幀光譜校正數(shù)據(jù)需要13440×16 bit的數(shù)據(jù)空間。
實際樣品的STR熒光譜圖同樣是落在圖1中 L×H的范圍內(nèi),與光譜校正數(shù)據(jù)相比較,只是每個像素的光強度值是變化的,對ARM來說,DSP傳輸過來的STR數(shù)據(jù)格式和光譜校正是沒有區(qū)別的,只是解析時的數(shù)據(jù)幀頭是不一樣的。
綜上,在進行熒光光譜數(shù)據(jù)采集時,DSP通過控制CCD驅(qū)動電路得到兩種格式的數(shù)據(jù):空間校正數(shù)據(jù)和光譜校正數(shù)據(jù)(STR數(shù)據(jù)),然后將數(shù)據(jù)加上幀頭、幀尾、幀序號等信息,傳輸給ARM主處理器。
如果ARM和DSP采用同步時序的方式傳輸數(shù)據(jù),會大大增加它們的工作開銷,特別是ARM還需要對儀器各部件狀態(tài)進行實時監(jiān)控,同步方式會延緩ARM對部件的響應速度,嚴重的話會造成儀器的運行故障。因此考慮采用異步讀寫的方式,并在兩者之間增加一級數(shù)據(jù)緩存,這樣當DSP采集到一幀數(shù)據(jù)時,它只需要將數(shù)據(jù)存儲到指定的數(shù)據(jù)空間、更新狀態(tài)位后,就可以轉(zhuǎn)入下一幀的數(shù)據(jù)采集,而不必等待ARM給出讀取響應;ARM也會定時(跟采集波特率有關(guān))讀取數(shù)據(jù)、更新狀態(tài)位。
DSP具有的異步通信方式主要是串口(UART)和系統(tǒng)總線掛載雙口RAM[5], UART傳輸速度慢、誤碼率高,所以本設(shè)計使用IDT公司的高速256K×18 bit 的雙口RAM芯片 IDT70V631S,它采用共享靜態(tài)RAM存儲器的方法,具有兩套(左、右)獨立的讀寫控制線,數(shù)據(jù)傳輸過程中兩邊CPU沒有時序約束,符合熒光光譜數(shù)據(jù)傳輸不需要同步的要求。
本研究所設(shè)計的數(shù)據(jù)傳輸硬件電路框圖如圖2所示。
圖2 數(shù)據(jù)傳輸電路框圖
由于i.MX6Q的應用程序運行于LINUX操作系統(tǒng)下,還需要設(shè)計雙口RAM的驅(qū)動程序,主要是配置讀寫時鐘、存儲空間映射、地址總線和數(shù)據(jù)總線等,最后結(jié)合硬件電路,完成如下文件操作結(jié)構(gòu)體eimbus_fops中的系統(tǒng)調(diào)用函數(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ù)讀寫時序如圖3所示。
圖3 EIM總線異步模式讀寫時序
3.2.1數(shù)據(jù)空間劃分
雙口RAM由于是數(shù)據(jù)共享,兩側(cè)CPU都能讀寫同一地址的數(shù)據(jù),這就可能造成訪問沖突,所以必須制定數(shù)據(jù)訪問協(xié)議來解決共享沖突問題。如圖4所示,將RAM空間劃分成通信協(xié)議區(qū)和光譜數(shù)據(jù)區(qū)。
圖4 雙口RAM空間劃分示意圖
通信協(xié)議區(qū)大小為64K×16 bit,它的最高兩個地址單元被稱作“郵箱”,這兩個單元一旦被一方寫入數(shù)據(jù),則會觸發(fā)另一方的中斷信號,另一方通過讀取郵箱內(nèi)容來獲取對方的命令或信息。
ARM將要發(fā)送給DSP的命令寫入LMAILBOX郵箱,這會觸發(fā)DSP端的中斷,DSP讀出LMAILBOX的內(nèi)容,根據(jù)命令執(zhí)行數(shù)據(jù)采集動作。LMAILBOX 16 bit的定義如表1所示,分別表示數(shù)據(jù)采集初始化、開始、結(jié)束、放棄、暫停、恢復,設(shè)置采樣率、幀序號,請求DSP軟件版本號等命令,初始化命令的參數(shù)寫入INITDATA區(qū),其它命令的參數(shù)寫入COMMAND_PARA區(qū)。
DSP向RMAILBOX郵箱寫入自身的狀態(tài)及事件信息,這會觸發(fā)ARM端的中斷,供其監(jiān)控CCD數(shù)據(jù)采集系統(tǒng)狀態(tài)。RMAILBOX 16 bit的定義如表2所示,前9個bit都是對ARM命令的回應,其中bit 8置1時同時將具體版本信息寫入VERSION區(qū),當CCD報錯時,將 bit 9 置1,并把具體錯誤信息寫入STATUS_EX區(qū),DATATAIL、DATAHEAD、TFRAMNUM、HFRAMNUM四個區(qū)在光譜數(shù)據(jù)傳輸時使用。
表1 LMAILBOX 16 bit定義
表2 RMAILBOX 16 bit定義
光譜數(shù)據(jù)區(qū)大小為192K×16 bit,用于光譜數(shù)據(jù)的緩沖區(qū),由右側(cè)的DSP寫入,左側(cè)的ARM讀出,由圖4可知該區(qū)域是一段線性連續(xù)的、固定長度的共享存儲空間。
3.2.2光譜數(shù)據(jù)區(qū)讀寫機制
由光譜數(shù)據(jù)分析可知,一幀空間校正數(shù)據(jù)為256K×16 bit,大于光譜數(shù)據(jù)區(qū)的容量,這就要求必須采用環(huán)形緩沖區(qū)讀寫的方式,如圖5所示,環(huán)形緩沖區(qū)是一種先進先出的循環(huán)讀寫方式,在只有一個寫用戶和一個讀用戶方式下,天然具有互斥保護機制確保兩個用戶互斥訪問數(shù)據(jù)區(qū)域。
圖5 環(huán)形緩沖讀寫示意圖
環(huán)形緩沖區(qū)有一個寫指針和一個讀指針,DSP擁有寫指針,它以DATATAIL區(qū)存儲的指針(偏移值)開始將數(shù)據(jù)寫入可寫區(qū)域后,用最新的寫指針(偏移值)更新DATATAIL區(qū),并用最新寫入的數(shù)據(jù)幀序號更新TFRAMNUM區(qū);同樣的ARM定時讀取數(shù)據(jù),首先比較DATATAIL區(qū)與DATAHEAD區(qū)是否相等,如果相等表明沒有數(shù)據(jù)更新,如果不相等則可以讀取數(shù)據(jù),它以DATAHEAD區(qū)存儲的指針(偏移值)開始將數(shù)據(jù)讀出,最后用最新的讀指針(偏移值)更新DATAHEAD區(qū),并用最新讀取的數(shù)據(jù)幀序號更新HFRAMNUM區(qū),具體讀寫流程如圖6所示。
在這種方式下,DSP寫入一幀完整的空間校正數(shù)據(jù)時,幀尾的數(shù)據(jù)必然覆蓋了幀頭的數(shù)據(jù),覆蓋大小為64K×16 bit,這就要根據(jù)數(shù)據(jù)采樣率計算好ARM端讀取數(shù)據(jù)的定時時間,保證在DSP寫入周期內(nèi)最少要讀取64K×16 bit數(shù)據(jù)、在一個采樣周期內(nèi)必須讀取完整的一幀數(shù)據(jù),本文綜合各方面情況將定時時間設(shè)定為1秒。光譜校正和STR檢測時數(shù)據(jù)量少,不存在覆蓋的問題,按照1秒的時間間隔讀取數(shù)據(jù)是足夠的。
圖6 讀、寫流程圖
本研究所述熒光光譜數(shù)據(jù)傳輸系統(tǒng)已經(jīng)應用在國產(chǎn)GA118-16A DNA分析儀上,使用16道毛細管陣列和IdentifilerTM、DNATyperTM15 PLUS等國內(nèi)外主流試劑盒,成功生成了空間校正和光譜校正圖譜。對DNATyperTM15 PLUS 進行等位基因分型標準物(Allelic ladder)的STR檢測,分型圖譜如圖7所示,其含有的16個STR基因座分型準確,沒有出現(xiàn)片段丟失現(xiàn)象。
在對DNA分析儀熒光光譜數(shù)據(jù)分析的基礎(chǔ)上,采用主從式處理器架構(gòu),以雙口RAM作為數(shù)據(jù)傳輸?shù)墓蚕泶鎯臻g,成功設(shè)計了一套滿足DNA分析儀要求的數(shù)據(jù)傳輸系統(tǒng)。目前,使用該系統(tǒng)的國產(chǎn)DNA分析儀已經(jīng)銷售了100多臺(套),滿足了公安機關(guān)刑事偵查、打拐、DNA庫建設(shè)等方面的需要!