新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > TMS320VC5509與CameraLink相機的接口技術

        TMS320VC5509與CameraLink相機的接口技術

        作者:■ 中北大學 電子信息工程系 付林 王志斌 張記龍 時間:2005-03-04 來源:電子設計應用2005年第1期 收藏

        摘    要:本文在分析DSP片上多通道緩沖串行口(MCBSP)與(DMA)的基礎上,提出了一種非常靈活的技術,并設計調試了DSP與相機電路和程序。利用本文提出的DMA方式,接收數據率可以達到36Mbps, 完全滿足激光的實時測量。
        關鍵詞:;接口
        引言
        在激光波長測量系統中,激光信號從CCD相機輸出到信號處理器的時間是實時測量激光波長的關鍵。即使采用高速單片機也無法滿足實時測量的需要,而將DSP用于相機數據采集和信號處理使這一難題的解決成為了可能。

        本文引用地址:http://www.104case.com/article/4553.htm

        接口設計
        本設計采用ATMEL公司的AViiVA M2 CL相機,該相機采用CameraLink接口。DSP選用了,與TMS320C54x相比,該定點DSP通過增強功能單元,提高了DSP的運算能力。相機工作方式的設置通過與DSP的串行通信來實現,采用全雙工方式,波特率固定在9.6kHz,每幀數據由一個起始位、8個數據位,以及一個停止位組成。
        DSP與相機的通信
        TMS320C5509 芯片只有同步串口,通常只能用于與具有同步通信接口的外設進行通信。當其構成一個獨立的處理單元需要和帶有異步通信接口的外設交換數據時,常用的方式有兩種:一種是利用DSP 的通用I/O 口線XF和BIO 構成串口,由軟件來設定通信波特率和握手方式。這種方式編程復雜,并且會大量占用CPU 時間。另一種方式是通過專用的異步通信芯片來實現,這雖然能實現DSP高速數據通信,但是增加了硬件電路的復雜性。
        本設計直接利用DSP的MCBSP與相機通信。有3個MCBSP,依靠數據線D(R/X)、幀同步線FS(R/X)和移位時鐘線CLK(R/X)實現數據的發送和接收。由CLKX、CLKR、FSX、FSR 實現時鐘和幀同步的控制。
        數據格式的統一
        要實現相機與DSP的串行通信首先要解決這兩種不同通信方式之間的數據格式統一問題。相機接收的每幀數據是十位,所以DSP字長要選擇16位。由于這種字長是高位先出,因此,在DSP發送數據前要對數據進行編碼:先把要發送的數據位反轉,然后加上起始位和停止位。
        波特率匹配
        MCBSP采樣率發生器的輸出時鐘CLKG由如下等式決定:
        FCLKG=FclockSource/(CLKDV+1)
        CLKDV是個8位的字段,如果輸入的參考時鐘FclockSource來自CPU,而為了實現高速采集,CPU要工作在144MHz,所以MCBSP采樣率發生器不可能工作在相機需要的波特率9.6kHz。因此,本設計中利用DSP定時器為串口提供時鐘。定時器的計數器分為兩個:4位的預定標器(TDDR)和16位的主計數器(PRD)。定時器的時鐘頻率利用公式:Ftimer=FclockSource/[(PRD+1)(TDDR+1)]計算。此時設置:PRD=0, TDDR=14999,定時器就可以輸出頻率為9.6kHz的時鐘信號。
        TMS320VC5509與相機的串行通信接口電路中,要利用DS90LV047A把TTL電平轉換為LVDS格式。此外,在MCBSP設置中要選擇來自CLKR腳上的時鐘作為參考時鐘。
        數據采樣
        DSP對數據的采樣通常采用中斷的方法實現,而DMA不僅可以操作內部存儲器的數據,而且可以操作片內外設、外部設備以及擴展存儲器的數據。所以應用DMA功能可實現在沒有CPU 的干預下直接對內存映射區域進行數據傳輸。
        TMS320VC5509提供了6個DMA通道,每個通道均可單獨設置所要傳送數據的源地址、目的地址、傳送數據的長度、數據傳送的同步方式以及數據傳送完成后是否向CPU發出中斷信號等。
        DMA的工作方式
        傳統上,為了保證采樣時不丟失數據,往往在DSP與相機間加FIFO來緩沖。數據首先從相機采集到緩沖區FIFO里,然后再從FIFO讀入到DSP內存,這樣從相機采集到DSP就要一定的附加時間,無法實現高速數據采集和信號處理,而且需要額外的FIFO。本文提出了一種新的DMA采集方法,無需FIFO卻能實現數據的高速采集。
        DS90CR286的主要功能是把CCD相機輸出的LVDS信號轉換為TTL信號,本設計中把DS90CR286輸出的數據直接接到DSP的外部存儲器接口(EMIF)數據總線上,然后DMA 把源地址設置為外部存儲器的地址,這個地址要初始化,但又不能是真正存在的外部存儲器的地址,這樣DSP每次所采集的數據,正是相機輸出的數據。在圖1中給出了DMA方式數據采集原理,其中R1~R6都是100W的電阻。
        要實現測量的實時性,必須實行數據采集和數據處理流水線作業。本設計中在DSP片上數據存儲區設立了兩個交替工作的存儲緩沖區,通過在軟件上設立標志位實現對存儲區間的切換。DMA的數據長度設置為相機一幀數據的長度,目的起始地址在數據空間上有兩個,分別設置為4000h與4400h。假如在DSP芯片上的數據區設置兩塊1KB的數據緩沖區A和B,分別代表目的地址為4000h和4400h的數據緩沖區,進行數據存儲和數據處理,當DSP用A區進行采集數據的第i幀時,同時B區進行第i-1幀數據的處理。當兩者同時結束后,接著又用B區進行第i+1幀數據的采集, 同時A區進行第i幀數據的處理,這樣交替工作,形成流水線作業。數據傳送的同步信號由DS90CR286的INT2引腳產生,當數據在一個數據區存滿時,通過INT3通知CPU轉到另一數據存儲區。圖2給出了DMA功能對數據采集的時序圖。
        高速數據采集的程序設計
        DMA方式高速采集的程序由EMIF初始化、DMA控制器設置和中斷服務程序組成。EMIF初始化主要用來設置外部存儲器的工作頻率和類型。其中,對工作頻率的設置非常重要,它直接影響到數據采集的頻率。在DMA方式下,數據采集的速率等于EMIF工作頻率的四分之一。DMA控制器設置是數據采集的關鍵,由于DMA有兩個目的地址,為了使程序簡單,同時也為了避免數據的沖突,本設計采用兩個DMA通道:通道1與通道2。下面給出了DMA設置的程序以及詳細的說明。
        DMA通道1的設置程序:
        MOV #0x0004,PORT (#0x0E00);設置DMA_GCR為共享模式
        MOV #0x0405,PORT (#0x0C20);設置DMA_CSDP1的目的為DARAM,源為EMIF
        ;數據單元長度為16位,不打包
        MOV #0x0000,PORT (#0x0C22);關閉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個數據單元
        MOV #0x0001,PORT (#0x0c29);每塊1幀
        MOV #0x4011,PORT (#0x0c21);源地址固定,目的地址采用自動遞增方式修改地址,外部中斷2作為同步事件
        DMA通道2的設置和通道1只有目的地址不同,其他都相同,下面給出了DMA通道2目的地址設置程序:
        MOV #0x4400,PORT (#0x0c46);通道2目的地址為DARAM的4400h
        MOV #0x0000,PORT(#0x0c27)
        程序的中斷服務程序主要功能是當一幀數據采集結束后,對標志位進行設置,讓CPU來處理這幀數據,同時把下一幀要采集的數據用另一個DMA通道采集并存儲到另一塊存儲區。

        結語
        本文利用DMA接口方式從EMIF的數據總線上直接采集數據,實現了高速并行數據采集,且結構簡單,經過實踐檢驗,最高采集速率達36Mbps,不僅能夠實時測量激光波長,而且在其他需要實時的數字視頻系統應用中也有很好的應用前景。■

        參考文獻
        1 應俊,徐盛,陳健. C5400系列DSP與AC97 Codec的接口. 電子設計應用. 2003
        2 申敏,鄧矣兵. DSP原理及其在移動通信中的應用. 北京:人民郵電出版社,2001



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 德格县| 府谷县| 环江| 青阳县| 台安县| 灵寿县| 甘肃省| 乌拉特中旗| 东山县| 清徐县| 兰西县| 莱阳市| 响水县| 武陟县| 龙岩市| 土默特左旗| 福安市| 新郑市| 洛阳市| 丰镇市| 丘北县| 黎平县| 绥芬河市| 定州市| 电白县| 七台河市| 波密县| 平江县| 临夏市| 日照市| 蓝田县| 怀远县| 陆川县| 北辰区| 济阳县| 雷州市| 崇左市| 仪陇县| 清水河县| 武城县| 田林县|