涂傳亮



摘 ? 要:數(shù)字電視信號(hào)的采集速度要求不低于270 Mbit/s,為了保證如此高速的數(shù)據(jù)流持續(xù)存入主機(jī)磁盤(pán),且不丟失任何數(shù)據(jù),必須解決數(shù)字視頻采集卡的PCI接口設(shè)計(jì)這一關(guān)鍵問(wèn)題。文章研究了一種基于ALTERA公司開(kāi)發(fā)的PCI核PCLmt32的鏈?zhǔn)紻MA的設(shè)計(jì)方法。這種方式的DMA能夠?qū)崿F(xiàn)BUFFER模式下的最高傳輸效率,速度達(dá)到2.112 Gbit/s,使得數(shù)字視頻采集卡的PCI總線能夠持續(xù)、高速地傳輸大量數(shù)據(jù)。
關(guān)鍵詞:PCI;鏈?zhǔn)紻MA;SOPC;Win Driver
隨著數(shù)字廣播電視技術(shù)的普及,人們的視覺(jué)品位要求越來(lái)越高,將數(shù)字視頻信號(hào)采集到計(jì)算機(jī)中,在計(jì)算機(jī)中可以方便地對(duì)采集的視頻進(jìn)行各種特效處理后再播出,這樣可豐富視頻特效種類、提高視頻的視覺(jué)效果。為了高速、實(shí)時(shí)地采集數(shù)字視頻信號(hào),必須解決外設(shè)部件互連標(biāo)準(zhǔn)(Peripheral Component Interconnect,PCI)總線接口技術(shù)這一關(guān)鍵問(wèn)題。
本文介紹了基于鏈?zhǔn)街苯哟鎯?chǔ)器訪問(wèn)(Direct Memory Access,DMA)方式控制點(diǎn)云庫(kù)(Point Cloud Library,PCL)mt32核完成66 MHz、32位數(shù)據(jù)傳輸?shù)腜CI接口設(shè)計(jì)的方法,該設(shè)計(jì)是在ALTERA公司的Cyclone II EP2C20Q240C8為主處理芯片的電路板上完成的。
1 ? ?SOPC系統(tǒng)框架組成
采集卡的可編程片上系統(tǒng)(System-on-a-Programmable-Chip,SOPC)主要由3大組件組成,主控組件是PCI組件、DMA組件、自定義數(shù)據(jù)采集組件。
PCI組件相當(dāng)于此系統(tǒng)的CPU組件,控制DMA組件與data_in自定義組件,在PCI組件中,bar0_Prefetchable Avalon Master,表示預(yù)取址Avalon-MM主端口,提供PCI內(nèi)存對(duì)Avalon-MM從設(shè)備的高帶寬訪問(wèn)。Bar1_Non_Prefetchable Avalon Master,表示非預(yù)取址Avalon-MM主端口,提供PCI內(nèi)存對(duì)Avalon-MM從設(shè)備的低延時(shí)訪問(wèn)。Control Status Registers Avalon Slave,表示控制狀態(tài)寄存器,包含了很多與PCI-Avalon總線配置有關(guān)的寄存器,通過(guò)對(duì)它們的設(shè)置訂制所需的功能。PCI Bus Access Avalon Slave,表示PCI總線通道,可以通過(guò)程序設(shè)定,映射為程序申請(qǐng)的內(nèi)存空間。
2 ? ?DMA控制器
在實(shí)現(xiàn)DMA開(kāi)始工作時(shí),對(duì)主機(jī)產(chǎn)生一個(gè)中斷,此時(shí),主機(jī)CPU參與響應(yīng)中斷,在DMA工作后,不需要CPU參與,可以自行進(jìn)行數(shù)據(jù)傳輸,采用DMA方式進(jìn)行數(shù)據(jù)傳輸,可以大大減輕CPU的壓力,提高設(shè)備的性能。
在ALTER的SOPC Builder中,可定制的DMA分為2種:BLOCK DMA和scatter-/gather DMA。Block DMA要求主設(shè)備提供PCI和Local的起始地址、傳輸字節(jié)數(shù)和傳輸方向。主機(jī)啟動(dòng)DMA傳輸并當(dāng)所有數(shù)據(jù)傳輸完成時(shí),PCI接口控制器將向主機(jī)申請(qǐng)中斷。scatter/gather DMA加入了一個(gè)描述符模塊,該模塊存儲(chǔ)PCI和Local的起始地址,傳輸字節(jié)數(shù)和下一個(gè)描述模塊的地址。其傳輸?shù)倪^(guò)程大概如下:當(dāng)啟動(dòng)DMA狀態(tài)機(jī)時(shí),PCI接口控制首先讀取DMA起始地址,開(kāi)始完成第1個(gè)模塊指定的數(shù)據(jù)的傳輸。當(dāng)?shù)?個(gè)模塊中的數(shù)據(jù)傳輸完畢,DMA根據(jù)描述符先進(jìn)先出隊(duì)列提供的下一個(gè)模塊的指針連續(xù)加載下一個(gè)模塊,直到檢測(cè)到“鏈結(jié)束位”,PCI接口控制器向主機(jī)申請(qǐng)中斷。
本文設(shè)計(jì)的鏈?zhǔn)紻MA是基于BLOCK DMA,能過(guò)驅(qū)動(dòng)控制BLOCK DMA從而實(shí)現(xiàn)scatter/gather DMA的功能。
2.1 ?DMA Core寄存器
DMA控制器主要有5個(gè)寄存器,如圖1所示,分別是狀態(tài)寄存器status,讀地址寄存器readaddress,寫(xiě)地址寄存器writeaddress,長(zhǎng)度寄存器length,控制寄存器control。
在啟動(dòng)DMA時(shí),首先需要分別配置readaddress,writeaddress,length和control這4個(gè)寄存器,然后總線就會(huì)啟動(dòng)DMA傳輸,DMA控制器向readaddress寄存器指向的地址中讀取數(shù)據(jù),將數(shù)據(jù)寫(xiě)入至writeaddress寄存器指向的地址,整個(gè)DMA操作所需傳輸?shù)臄?shù)據(jù)個(gè)數(shù)存儲(chǔ)在length中,而數(shù)據(jù)傳輸?shù)哪J酱鎯?chǔ)在控制寄存control中。
2.2 ?DMA BUFFER的選擇
當(dāng)DMA工作在突發(fā)模式下,一次DMA傳輸最多傳送1 024個(gè)32位寬度的數(shù)據(jù),每傳送完1 024個(gè)字則需要對(duì)DMA進(jìn)行中斷,頻繁地對(duì)DMA中斷會(huì)對(duì)程序計(jì)數(shù)器效率造成影響。
當(dāng)DMA工作在非突發(fā)模式下,一次DMA傳輸則可以傳輸任意大小的字,當(dāng)傳輸完規(guī)定的數(shù)據(jù)個(gè)數(shù)后才進(jìn)行一次中斷,此時(shí)傳輸?shù)臄?shù)據(jù)個(gè)數(shù)不受1 024的控制。而兩種工作狀態(tài)下,數(shù)據(jù)傳輸?shù)男适遣灰粯拥摹?/p>
DMA工作在非突發(fā)模式下,經(jīng)過(guò)邏輯分析儀采集的數(shù)據(jù)圖,邏輯分析儀的主時(shí)鐘為PCI的工作時(shí)鐘66 MHz,yushu_out(即SOPC系統(tǒng)中自定義組件的地址)信號(hào)每隔5個(gè)時(shí)鐘周期進(jìn)行一次地址的自增,也意味著每隔5個(gè)時(shí)鐘周期SOPC才接收一個(gè)動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(Dynamic Random Access Memory,DRAM)的輸出數(shù)據(jù),效率變?yōu)闃?biāo)準(zhǔn)的1/5。
DMA工作在突發(fā)模式下,經(jīng)過(guò)邏輯分析儀采集的數(shù)據(jù)圖,邏輯分析儀的主時(shí)鐘為PCI的工作時(shí)鐘66 MHz,yushu_out信號(hào)每隔1個(gè)時(shí)鐘周期進(jìn)行一次地址的自增,也意味著每隔1個(gè)時(shí)鐘周期SOPC接收一個(gè)DRAM的輸出數(shù)據(jù),這完全按照PCI的工作效率進(jìn)行。
因此,為了滿足數(shù)字分量串行接口(Serial Digital Interface,SDI)的傳輸要求,使采集卡的傳輸效率達(dá)到最高,我們將DMA設(shè)置工作在突發(fā)模式下。
3 ? ?結(jié)果分析
使用兩種方法測(cè)試BUFFER模式下DMA操作是否正確。
圖2為測(cè)試方案1,即使用數(shù)據(jù)發(fā)生器測(cè)試數(shù)據(jù)的方法。
如圖3所示,接收到的數(shù)據(jù)通過(guò)PCI的數(shù)據(jù)線輸出,在108時(shí)刻連續(xù)輸出782,783,784,785,786,787,788等數(shù)據(jù),一個(gè)66 MHz時(shí)鐘周期輸出一個(gè)32位數(shù)據(jù)。
第二種方法即可采集數(shù)字視頻信號(hào)至PC機(jī)的內(nèi)存,觀察內(nèi)存中的數(shù)據(jù)是否正確來(lái)判斷BUFFER模式下DMA是否工作正確。
將10位數(shù)據(jù)合并后32合所得的數(shù)據(jù)如圖4所示,圖4中的數(shù)據(jù),均可以找得到,其中EAV SAV奇場(chǎng)與偶場(chǎng)均是不一樣的,因此,其含有EAV SAV的數(shù)據(jù)是變化的,其他的數(shù)據(jù)均是固定周期出現(xiàn)的。
連續(xù)采集合成后的視頻數(shù)據(jù),存儲(chǔ)在起始地址為5000000的主機(jī)內(nèi)存中,截取主機(jī)中兩段視頻數(shù)據(jù)。
仔細(xì)觀察數(shù)據(jù),發(fā)現(xiàn)所有數(shù)據(jù)都與圖4中標(biāo)準(zhǔn)數(shù)字視頻信號(hào)數(shù)據(jù)一致。
在采信卡采集數(shù)據(jù)時(shí),速度完全滿足PCI的速率要求,即每66 MHz時(shí)鐘周期,輸出一個(gè)有效的32位數(shù)據(jù)。根據(jù)設(shè)計(jì)原理,是將30位數(shù)字視頻信號(hào),在高2位補(bǔ)零,組成32位傳輸數(shù)據(jù),因此,可以知道有效數(shù)據(jù)的傳輸效率為1.98 Gbit/s。
4 ? ?結(jié)語(yǔ)
本文利用超高速集成電路硬件語(yǔ)言實(shí)現(xiàn)了基于PCI核BUFFER模式下的鏈?zhǔn)紻MA,并在Altera公司的QuartusII開(kāi)發(fā)工具上利用嵌入式邏輯分析儀對(duì)系統(tǒng)進(jìn)行了測(cè)試,表明BUFFER模式下DMA的快速性,并通過(guò)分析主機(jī)中所采集到的視頻數(shù)據(jù)表明了鏈?zhǔn)紻MA的正確實(shí)現(xiàn)。通過(guò)理論分析和測(cè)試,本設(shè)計(jì)完全可以滿足數(shù)字視頻信號(hào)實(shí)時(shí)采集系統(tǒng)的要求。
[參考文獻(xiàn)]
[1]沈羽.基于PCI總線的實(shí)時(shí)高速數(shù)據(jù)記錄器研究[D].北京:中國(guó)科學(xué)院研究生院,2006.
[2]PCI-SIG.PCI Express Card Electromechanical Specification Revision2.0 [EB/OL].(2007-09-17)[2019-04-10].http://xueshu.baidu.com/usercenter/paper/show?paperid=967178a2675c137057d4cb6fcb4fbacf&site=xueshu_se&hitarticle=1.
[3]PCI-SIG.PCI Express Base Specification Revision 1.1[J].PCI Express,2005(27):272.