TMS320VC5509與CameraLink相機(jī)的接口技術(shù)
摘 要:本文在分析DSP片上多通道緩沖串行口(MCBSP)與直接存儲(chǔ)器訪問(wèn)(DMA)的基礎(chǔ)上,提出了一種非常靈活的接口技術(shù),并設(shè)計(jì)調(diào)試了DSP與相機(jī)接口電路和程序。利用本文提出的DMA接口方式,接收數(shù)據(jù)率可以達(dá)到36Mbps, 完全滿(mǎn)足激光的實(shí)時(shí)測(cè)量。
關(guān)鍵詞:TMS320VC5509;多通道緩沖串口 ;直接存儲(chǔ)器訪問(wèn);接口
引言
在激光波長(zhǎng)測(cè)量系統(tǒng)中,激光信號(hào)從CCD相機(jī)輸出到信號(hào)處理器的時(shí)間是實(shí)時(shí)測(cè)量激光波長(zhǎng)的關(guān)鍵。即使采用高速單片機(jī)也無(wú)法滿(mǎn)足實(shí)時(shí)測(cè)量的需要,而將DSP用于相機(jī)數(shù)據(jù)采集和信號(hào)處理使這一難題的解決成為了可能。
接口設(shè)計(jì)
本設(shè)計(jì)采用ATMEL公司的AViiVA M2 CL相機(jī),該相機(jī)采用CameraLink接口。DSP選用了TMS320VC5509,與TMS320C54x相比,該定點(diǎn)DSP通過(guò)增強(qiáng)功能單元,提高了DSP的運(yùn)算能力。相機(jī)工作方式的設(shè)置通過(guò)與DSP的串行通信來(lái)實(shí)現(xiàn),采用全雙工方式,波特率固定在9.6kHz,每幀數(shù)據(jù)由一個(gè)起始位、8個(gè)數(shù)據(jù)位,以及一個(gè)停止位組成。
DSP與相機(jī)的通信
TMS320C5509 芯片只有同步串口,通常只能用于與具有同步通信接口的外設(shè)進(jìn)行通信。當(dāng)其構(gòu)成一個(gè)獨(dú)立的處理單元需要和帶有異步通信接口的外設(shè)交換數(shù)據(jù)時(shí),常用的方式有兩種:一種是利用DSP 的通用I/O 口線XF和BIO 構(gòu)成串口,由軟件來(lái)設(shè)定通信波特率和握手方式。這種方式編程復(fù)雜,并且會(huì)大量占用CPU 時(shí)間。另一種方式是通過(guò)專(zhuān)用的異步通信芯片來(lái)實(shí)現(xiàn),這雖然能實(shí)現(xiàn)DSP高速數(shù)據(jù)通信,但是增加了硬件電路的復(fù)雜性。
本設(shè)計(jì)直接利用DSP的MCBSP與相機(jī)通信。TMS320VC5509有3個(gè)MCBSP,依靠數(shù)據(jù)線D(R/X)、幀同步線FS(R/X)和移位時(shí)鐘線CLK(R/X)實(shí)現(xiàn)數(shù)據(jù)的發(fā)送和接收。由CLKX、CLKR、FSX、FSR 實(shí)現(xiàn)時(shí)鐘和幀同步的控制。
數(shù)據(jù)格式的統(tǒng)一
要實(shí)現(xiàn)相機(jī)與DSP的串行通信首先要解決這兩種不同通信方式之間的數(shù)據(jù)格式統(tǒng)一問(wèn)題。相機(jī)接收的每幀數(shù)據(jù)是十位,所以DSP字長(zhǎng)要選擇16位。由于這種字長(zhǎng)是高位先出,因此,在DSP發(fā)送數(shù)據(jù)前要對(duì)數(shù)據(jù)進(jìn)行編碼:先把要發(fā)送的數(shù)據(jù)位反轉(zhuǎn),然后加上起始位和停止位。
波特率匹配
MCBSP采樣率發(fā)生器的輸出時(shí)鐘CLKG由如下等式?jīng)Q定:
FCLKG=FclockSource/(CLKDV+1)
CLKDV是個(gè)8位的字段,如果輸入的參考時(shí)鐘FclockSource來(lái)自CPU,而為了實(shí)現(xiàn)高速采集,CPU要工作在144MHz,所以MCBSP采樣率發(fā)生器不可能工作在相機(jī)需要的波特率9.6kHz。因此,本設(shè)計(jì)中利用DSP定時(shí)器為串口提供時(shí)鐘。定時(shí)器的計(jì)數(shù)器分為兩個(gè):4位的預(yù)定標(biāo)器(TDDR)和16位的主計(jì)數(shù)器(PRD)。定時(shí)器的時(shí)鐘頻率利用公式:Ftimer=FclockSource/[(PRD+1)(TDDR+1)]計(jì)算。此時(shí)設(shè)置:PRD=0, TDDR=14999,定時(shí)器就可以輸出頻率為9.6kHz的時(shí)鐘信號(hào)。
TMS320VC5509與相機(jī)的串行通信接口電路中,要利用DS90LV047A把TTL電平轉(zhuǎn)換為L(zhǎng)VDS格式。此外,在MCBSP設(shè)置中要選擇來(lái)自CLKR腳上的時(shí)鐘作為參考時(shí)鐘。
數(shù)據(jù)采樣
DSP對(duì)數(shù)據(jù)的采樣通常采用中斷的方法實(shí)現(xiàn),而DMA不僅可以操作內(nèi)部存儲(chǔ)器的數(shù)據(jù),而且可以操作片內(nèi)外設(shè)、外部設(shè)備以及擴(kuò)展存儲(chǔ)器的數(shù)據(jù)。所以應(yīng)用DMA功能可實(shí)現(xiàn)在沒(méi)有CPU 的干預(yù)下直接對(duì)內(nèi)存映射區(qū)域進(jìn)行數(shù)據(jù)傳輸。
TMS320VC5509提供了6個(gè)DMA通道,每個(gè)通道均可單獨(dú)設(shè)置所要傳送數(shù)據(jù)的源地址、目的地址、傳送數(shù)據(jù)的長(zhǎng)度、數(shù)據(jù)傳送的同步方式以及數(shù)據(jù)傳送完成后是否向CPU發(fā)出中斷信號(hào)等。
DMA的工作方式
傳統(tǒng)上,為了保證采樣時(shí)不丟失數(shù)據(jù),往往在DSP與相機(jī)間加FIFO來(lái)緩沖。數(shù)據(jù)首先從相機(jī)采集到緩沖區(qū)FIFO里,然后再?gòu)腇IFO讀入到DSP內(nèi)存,這樣從相機(jī)采集到DSP就要一定的附加時(shí)間,無(wú)法實(shí)現(xiàn)高速數(shù)據(jù)采集和信號(hào)處理,而且需要額外的FIFO。本文提出了一種新的DMA采集方法,無(wú)需FIFO卻能實(shí)現(xiàn)數(shù)據(jù)的高速采集。
DS90CR286的主要功能是把CCD相機(jī)輸出的LVDS信號(hào)轉(zhuǎn)換為T(mén)TL信號(hào),本設(shè)計(jì)中把DS90CR286輸出的數(shù)據(jù)直接接到DSP的外部存儲(chǔ)器接口(EMIF)數(shù)據(jù)總線上,然后DMA 把源地址設(shè)置為外部存儲(chǔ)器的地址,這個(gè)地址要初始化,但又不能是真正存在的外部存儲(chǔ)器的地址,這樣DSP每次所采集的數(shù)據(jù),正是相機(jī)輸出的數(shù)據(jù)。在圖1中給出了DMA方式數(shù)據(jù)采集原理,其中R1~R6都是100W的電阻。
要實(shí)現(xiàn)測(cè)量的實(shí)時(shí)性,必須實(shí)行數(shù)據(jù)采集和數(shù)據(jù)處理流水線作業(yè)。本設(shè)計(jì)中在DSP片上數(shù)據(jù)存儲(chǔ)區(qū)設(shè)立了兩個(gè)交替工作的存儲(chǔ)緩沖區(qū),通過(guò)在軟件上設(shè)立標(biāo)志位實(shí)現(xiàn)對(duì)存儲(chǔ)區(qū)間的切換。DMA的數(shù)據(jù)長(zhǎng)度設(shè)置為相機(jī)一幀數(shù)據(jù)的長(zhǎng)度,目的起始地址在數(shù)據(jù)空間上有兩個(gè),分別設(shè)置為4000h與4400h。假如在DSP芯片上的數(shù)據(jù)區(qū)設(shè)置兩塊1KB的數(shù)據(jù)緩沖區(qū)A和B,分別代表目的地址為4000h和4400h的數(shù)據(jù)緩沖區(qū),進(jìn)行數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)處理,當(dāng)DSP用A區(qū)進(jìn)行采集數(shù)據(jù)的第i幀時(shí),同時(shí)B區(qū)進(jìn)行第i-1幀數(shù)據(jù)的處理。當(dāng)兩者同時(shí)結(jié)束后,接著又用B區(qū)進(jìn)行第i+1幀數(shù)據(jù)的采集, 同時(shí)A區(qū)進(jìn)行第i幀數(shù)據(jù)的處理,這樣交替工作,形成流水線作業(yè)。數(shù)據(jù)傳送的同步信號(hào)由DS90CR286的INT2引腳產(chǎn)生,當(dāng)數(shù)據(jù)在一個(gè)數(shù)據(jù)區(qū)存滿(mǎn)時(shí),通過(guò)INT3通知CPU轉(zhuǎn)到另一數(shù)據(jù)存儲(chǔ)區(qū)。圖2給出了DMA功能對(duì)數(shù)據(jù)采集的時(shí)序圖。
高速數(shù)據(jù)采集的程序設(shè)計(jì)
DMA方式高速采集的程序由EMIF初始化、DMA控制器設(shè)置和中斷服務(wù)程序組成。EMIF初始化主要用來(lái)設(shè)置外部存儲(chǔ)器的工作頻率和類(lèi)型。其中,對(duì)工作頻率的設(shè)置非常重要,它直接影響到數(shù)據(jù)采集的頻率。在DMA方式下,數(shù)據(jù)采集的速率等于EMIF工作頻率的四分之一。DMA控制器設(shè)置是數(shù)據(jù)采集的關(guān)鍵,由于DMA有兩個(gè)目的地址,為了使程序簡(jiǎn)單,同時(shí)也為了避免數(shù)據(jù)的沖突,本設(shè)計(jì)采用兩個(gè)DMA通道:通道1與通道2。下面給出了DMA設(shè)置的程序以及詳細(xì)的說(shuō)明。
DMA通道1的設(shè)置程序:
MOV #0x0004,PORT (#0x0E00);設(shè)置DMA_GCR為共享模式
MOV #0x0405,PORT (#0x0C20);設(shè)置DMA_CSDP1的目的為DARAM,源為EMIF
;數(shù)據(jù)單元長(zhǎng)度為16位,不打包
MOV #0x0000,PORT (#0x0C22);關(guān)閉DMA_CICR中的所有中斷
MOV #0x2005,PORT (#0x0c24);源地址為外部SDRAM的442005h
MOV #0x0044,PORT(#0x0c25)
MOV #0x4000,PORT (#0x0c26);目的地址為DARAM的4000h
MOV #0x0000,PORT(#0x0c27)
MOV #0x0400,PORT (#0x0c28);每幀1024個(gè)數(shù)據(jù)單元
MOV #0x0001,PORT (#0x0c29);每塊1幀
MOV #0x4011,PORT (#0x0c21);源地址固定,目的地址采用自動(dòng)遞增方式修改地址,外部中斷2作為同步事件
DMA通道2的設(shè)置和通道1只有目的地址不同,其他都相同,下面給出了DMA通道2目的地址設(shè)置程序:
MOV #0x4400,PORT (#0x0c46);通道2目的地址為DARAM的4400h
MOV #0x0000,PORT(#0x0c27)
程序的中斷服務(wù)程序主要功能是當(dāng)一幀數(shù)據(jù)采集結(jié)束后,對(duì)標(biāo)志位進(jìn)行設(shè)置,讓CPU來(lái)處理這幀數(shù)據(jù),同時(shí)把下一幀要采集的數(shù)據(jù)用另一個(gè)DMA通道采集并存儲(chǔ)到另一塊存儲(chǔ)區(qū)。
結(jié)語(yǔ)
本文利用DMA接口方式從EMIF的數(shù)據(jù)總線上直接采集數(shù)據(jù),實(shí)現(xiàn)了高速并行數(shù)據(jù)采集,且結(jié)構(gòu)簡(jiǎn)單,經(jīng)過(guò)實(shí)踐檢驗(yàn),最高采集速率達(dá)36Mbps,不僅能夠?qū)崟r(shí)測(cè)量激光波長(zhǎng),而且在其他需要實(shí)時(shí)的數(shù)字視頻系統(tǒng)應(yīng)用中也有很好的應(yīng)用前景?!?/p>
參考文獻(xiàn)
1 應(yīng)俊,徐盛,陳健. C5400系列DSP與AC97 Codec的接口. 電子設(shè)計(jì)應(yīng)用. 2003
2 申敏,鄧矣兵. DSP原理及其在移動(dòng)通信中的應(yīng)用. 北京:人民郵電出版社,2001
評(píng)論