基于DSP的實(shí)時(shí)圖像數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
TI推出的C6000系列DSP,將數(shù)字信號(hào)處理器的處理能力提高到了一個(gè)新的境界。實(shí)際上,C6000系列的高速處理能力以及其出色的對(duì)外接口能力,使它在圖像處理領(lǐng)域具有非常大的應(yīng)用潛力。DSP芯片的功能越來(lái)越強(qiáng)大,使信號(hào)處理系統(tǒng)的研究重點(diǎn)又回到軟件算法上,而且隨著DSP運(yùn)算能力的不斷提高,能夠?qū)崟r(shí)處理信號(hào)帶寬也大大增加,數(shù)字信號(hào)處理的研究重點(diǎn)也由初的非實(shí)時(shí)應(yīng)用轉(zhuǎn)向高速實(shí)時(shí)應(yīng)用。
1 TMS320C6416處理器特點(diǎn)
TMS320C6416是TI公司推出的TMS320C6000平臺(tái)上高性能定點(diǎn)系列處理器。適合實(shí)時(shí)圖像處理的內(nèi)部結(jié)構(gòu)主要特點(diǎn)包括:
①定點(diǎn)/浮點(diǎn)系列兼容DSP、CPU主頻達(dá)到720MHz;
②具有VelociTI先進(jìn)VLIW結(jié)構(gòu)內(nèi)核;
③片內(nèi)集成大容量SRAMt,最大可達(dá)8Mb;
④16/32/64位高能外部存儲(chǔ)器接口(EMIF)提供了同步/異步存儲(chǔ)器的直接接口;
⑤片內(nèi)提供多種集成外設(shè)。
2 系統(tǒng)硬件設(shè)計(jì)
2.1硬件設(shè)計(jì)所用器件
采用TI公司的TMS320C6416DSK開(kāi)發(fā)板作為DSP平臺(tái)。開(kāi)發(fā)板提供的三排擴(kuò)展引腳連接器,針對(duì)應(yīng)用設(shè)計(jì)的子板可以插入引腳連接器,利用TMS320C6416DSK板提供的硬件設(shè)計(jì)資源。擴(kuò)展引腳類型包括存儲(chǔ)器信號(hào)引、外圍設(shè)備信號(hào)引腳和主機(jī)端口接口信號(hào)引腳。存儲(chǔ)器信號(hào)引腳提供DSP異步EMIF信號(hào)訪問(wèn)存儲(chǔ)器或者存镕器映射設(shè)備。外圍設(shè)備信號(hào)引腳提供DSP外圍設(shè)備信號(hào).例如多道緩沖串行El(MCBSP)、時(shí)鐘(TIMER)。這兩類型的引腳連接器提供子板的電源和地信號(hào)。采用美國(guó)Syscan公司的黑白線陣CIS圖像傳感器SV253A4,分辨率為200dpi,掃描長(zhǎng)度為216ram,掃描速度為0.36ms/行,單一模擬視頻輸出信號(hào)。采用美國(guó)Exar公司的高速線陣CIS/CCD傳感器處理器XRD98L23ACD完成對(duì)CIS圖像傳感器輸出信號(hào)的放大、A/D等處理,其分辨率為8位,具有6位程控增益放大器,8位程控偏移調(diào)節(jié)器。采用緩沖器74HC244完成傳感器處理器輸出數(shù)據(jù)的緩沖。
2.2硬件設(shè)計(jì)框圖
利用DSP芯片支持庫(kù)開(kāi)發(fā)方法,將軟件模塊對(duì)應(yīng)為硬件模塊,系統(tǒng)的框圖如圖1所示。由TMS320C6416DSK開(kāi)發(fā)板定時(shí)器(TIMER)模塊提供圖像傳感器SV253A4和傳感器處理器XRD98L23ACD的時(shí)鐘信號(hào)。通用輸入輸出口(GPIO)模塊和多道緩沖串行口(MCBSP)模塊配合,模擬傳感器處理器XRD98L2 3ACD控制字的寫入時(shí)序,完成控制字的寫入。EDMA模塊和EMIFA模塊配合采用EDMA方式讀取外部存儲(chǔ)器數(shù)據(jù)的方法讀取緩沖器74HC244內(nèi)數(shù)據(jù)到DSP內(nèi)部存儲(chǔ)器。中斷模塊完成TIMER模塊的時(shí)鐘中斷設(shè)置,該時(shí)鐘中斷觸發(fā)EDMA模塊相應(yīng)通道完成數(shù)據(jù)讀取。
2.3硬件設(shè)計(jì)電路
硬件電路如圖2所示,圖像傳感器SV253A4的VOUT引腳信號(hào)為輸出視頻信號(hào), CP引腳信號(hào)為時(shí)鐘脈沖輸入信號(hào), SP引腳信號(hào)為開(kāi)始脈沖信號(hào)。
傳感器處理器XRD98L23ACD的RED引腳信號(hào)為紅分量輸入信號(hào),DB0~DB4引腳信號(hào)為數(shù)據(jù)輸出位0~4信號(hào),復(fù)用DB5/SCLK引腳信號(hào)數(shù)據(jù)輸出位5或者數(shù)據(jù)輸入SCLK信號(hào),復(fù)用DB6/SDA7A引腳信號(hào)數(shù)據(jù)輸出位6或者數(shù)據(jù)輸入SDATA信號(hào),復(fù)用DB7/LD引腳信號(hào)數(shù)據(jù)輸出位7或者LD信號(hào),ADCCLK引腳信號(hào)為A/D轉(zhuǎn)換時(shí)鐘信號(hào),CLAMP引腳信號(hào)為鉗位和視頻采樣信號(hào),SYNCH引腳信號(hào)為新行開(kāi)始和串行數(shù)據(jù)輸入控制信號(hào)。
緩沖器74HC244的1A1~1A4和2A1~2A4引腳信號(hào)為兩組數(shù)據(jù)輸入信號(hào), 1Y1~1Y4和2Y1~2Y4引腳信號(hào)為兩組數(shù)據(jù)輸出信號(hào), 1G和2G引腳信號(hào)為低電平有效使能信號(hào)。
TMS320C6416DSK的T0UT0和T0UTl引腳信號(hào)為定時(shí)器0和定時(shí)器1輸出信號(hào),CLKX0引腳信號(hào)為MCBSP0傳輸時(shí)鐘信號(hào),DX0引腳信號(hào)為MCBSP0傳輸數(shù)據(jù)信號(hào),GPIOx引腳信號(hào)為通用輸入輸出信號(hào),AED0~AED7引唧信號(hào)為EMIF數(shù)據(jù)引唧0~數(shù)據(jù)引腳7信號(hào),AARE引腳信號(hào)為EMIF異步讀使能信號(hào), AEA21引腳信號(hào)為EMlF地址引腳21信號(hào)。
TMS320C6416DSK的TOUT0輸出引腳為傳感器處理器XRD98L23ACD提供占空比為50%的10MHz時(shí)鐘ADCCLK輸入信號(hào),TOUTl輸出引腳為圖像傳慼器SV253A4提供占空比為25%的5MHz時(shí)鐘CP輸入信號(hào);CLKX0、DX0、GPIOx輸出引腳分別為傳感器處理器XRD98L23ACD提供控制字寫入時(shí)序的SCLK、SDATA、LD、SYNCH輸入信號(hào);GPIOx輸出引腳提供圖像傳感器SV253A4的SP輸入信號(hào)和傳感器處理器XRD98L23ACD的鉗位和視頻采樣CLAMP輸入信號(hào);AARE、AEA2l輸出引腳與邏輯組合提供緩沖器74HC244的1G和2G輸入信號(hào):AED0~AED7輸入引啣接收緩沖器74HC244的lYl~2Y4輸出信號(hào)。
圖像傳感器SV253A4的VOUT輸出信號(hào)為傳慼器處理器XRD98L23ACD提供單通道RED輸入信號(hào)。傳感器處理器XRD98L23ACD的DB0~DB7輸出信號(hào)為緩沖器74HC244提供1A1~2A4輸入信號(hào)。
2.4 硬件工作流程
系統(tǒng)上電后,TMS320C6416DSK由MSBSP和GPIO模塊按照傳感器處理器XRD98L23ACD寫入時(shí)序?qū)懭肟刂谱?,使傳感器處理器開(kāi)始工作。GPIO模塊發(fā)送SP輸入信號(hào),使圖像傳感器開(kāi)始行采集;TIMER模塊發(fā)送CP輸入信號(hào)模塊,使圖像傳感器開(kāi)始采集一個(gè)點(diǎn),同時(shí)產(chǎn)生時(shí)鐘中斷事件, 觸發(fā)EDMA模塊的時(shí)鐘中斷事件通道完成一次EDMA操作,即EDMA模塊通過(guò)EMIF模塊使能緩沖器, 讀取經(jīng)過(guò)傳感器處理器A/D轉(zhuǎn)換過(guò)采集點(diǎn)的數(shù)字信號(hào)。 然后觸發(fā)EDMA中斷,完成對(duì)采集到的數(shù)據(jù)處理、修改EDMA目的地址和其它計(jì)算。當(dāng)采集了一行后, 發(fā)送SP輸入信號(hào)開(kāi)始新的一行采集, 工作時(shí)序如圖3所示。
3 系統(tǒng)軟件設(shè)計(jì)
軟件采用TI公司提供的Code Composer Studio開(kāi)發(fā)環(huán)境,用TMS320C6416芯片支持庫(kù)API開(kāi)發(fā)方式,C語(yǔ)言編程開(kāi)發(fā)。軟件設(shè)計(jì)包括CMD連接命令設(shè)計(jì)、中斷服務(wù)表設(shè)計(jì)、主程序設(shè)計(jì)。
3.1 連接命令設(shè)計(jì)
由于采用TMS320C6416DSK硬件平臺(tái),根據(jù)其存儲(chǔ)器映射,如表1所列,使用連接器偽指令MEMORY定義了5個(gè)區(qū)域反映TMS320C6416DSK存儲(chǔ)器映射情況,然后使用連接器偽指令SECTIONS把目標(biāo)文件的各個(gè)代碼段和數(shù)據(jù)段分配到上述5個(gè)區(qū)域。采用Daughter Card區(qū)域的EMIFA CE2區(qū)域的首地址OxA0000000作為緩沖器74HC244的地址。
3.2中斷服務(wù)表設(shè)計(jì)
中斷服務(wù)表包含中斷服務(wù)代碼的取址包的一個(gè)地址表,當(dāng)CPU開(kāi)始處理一個(gè)中斷時(shí),參照中斷服務(wù)表進(jìn)行。C6000的CPU有3種類型中斷:RESET(復(fù)位)、不可屏蔽中斷(NMI)和可屏蔽中斷(INT4一INTl5)。中斷服務(wù)表包含16個(gè)連續(xù)取指包,每個(gè)中斷服務(wù)取指包都包含8條指令。需要設(shè)置REsET復(fù)位向量指向C運(yùn)行環(huán)境的入口點(diǎn)_c_int00。由于系統(tǒng)使用的時(shí)鐘中斷和EDMA中斷,需要設(shè)置時(shí)鐘中斷和EDMA中斷向量指向各自中斷服務(wù)程序的入口。設(shè)置其它中斷向量指向虛擬中斷服務(wù)程序入口,即不作任何處理,直接中斷返回。
3.3主程序設(shè)計(jì)
主程序描述了完成系統(tǒng)功能的變量、常量、main函數(shù)、EDMA中斷服務(wù)程序和系統(tǒng)初始化程序的定義。系統(tǒng)初始化函數(shù)完成芯片支持庫(kù)、中斷服務(wù)表、中斷模塊、GPl0模塊、EDMA模塊、MCBSP模塊、EMIFA模塊、定時(shí)器模塊和傳感器處理器XRD98L23ACD的初始化。E3MA中斷服務(wù)程序完成EDMA目標(biāo)地址參數(shù)的修改和相關(guān)變量計(jì)算。Main函數(shù)調(diào)用系統(tǒng)初始化函數(shù),然后啟動(dòng)定時(shí)器,響應(yīng)EDMA中斷。
使用芯片支持庫(kù)編程必須首先初始化芯片支持庫(kù),調(diào)用芯片支持庫(kù)API函數(shù)CSL—init完成。
調(diào)用芯片支持庫(kù)API函數(shù)IRQ_setVecs完成中斷服務(wù)表初始化,參數(shù)為連接命令文件定義的中斷服務(wù)表全局標(biāo)識(shí)符。
調(diào)用芯片支持庫(kù)API函數(shù)IRQ_globalEnable、IRQ_nmiEnable分別使能全局中斷和不可屏蔽中斷。這樣系統(tǒng)才能響應(yīng)EDMA中斷,調(diào)用支持庫(kù)API函數(shù)IRQ_enable使能EDMA中斷。參數(shù)為IRQ_EVT_ EDMANT表示響應(yīng)EDMA中斷事件。
使用GPIO設(shè)備前,必須調(diào)用芯片支持庫(kù)API函數(shù)GPIO_open打開(kāi)GPIO設(shè)備,然后調(diào)用芯片支持庫(kù)API函數(shù)GPIO—configArgs設(shè)置GPIO模式,參數(shù)為GPIO相關(guān)寄存器值。GtIO模式主要包括各GPIO的使能、方向和初值。
使用EDMA設(shè)備前必須調(diào)用EDMA_open打開(kāi)EDMA一個(gè)通道。因?yàn)橄到y(tǒng)使用定時(shí)器l中斷事件作為EDMA的觸發(fā)事件,所以打開(kāi)的通道參數(shù)為EDMA_CHATINl 。調(diào)用芯片支持庫(kù)API函數(shù)EI)MA—configArgs設(shè)置EDMA定時(shí)器1通道,參數(shù)為EDMA相關(guān)寄存器值。通道設(shè)置主要包括EDMA的數(shù)據(jù)單元的字長(zhǎng)為8位、傳輸結(jié)束中斷使能、事件鏈接不使能、源地址為OxA0000000、數(shù)據(jù)單元數(shù)為l、目的地址為存儲(chǔ)數(shù)組首地址。目前是用定時(shí)器l中斷事件觸發(fā)EDMA傳輸一采集點(diǎn)數(shù)據(jù),同時(shí)定時(shí)器l中斷事件產(chǎn)生TINTl輸出信號(hào)也是CP輸入信號(hào),這樣EDMA觸發(fā)時(shí)序和CP輸入信號(hào)同步。只要傳感器處理器能夠在兩次CP信號(hào)間隔內(nèi)完成一次采集點(diǎn)A/D等處理,就可以實(shí)現(xiàn)圖像傳感器采集一個(gè)點(diǎn)后,進(jìn)行一次EDMA傳輸,確保EDMA傳輸采集點(diǎn)無(wú)重復(fù)無(wú)遺漏。如果采用定時(shí)器l中斷事件觸發(fā)方式,即CP輸入信號(hào)同步方式,那么數(shù)據(jù)單元數(shù)為l,使能傳輸結(jié)束中斷。在完成一次傳輸后,觸發(fā)EDMA傳輸完成事件中斷,完成目的地址的修改和其它計(jì)算。因?yàn)樾枰杉狞c(diǎn)很多,遠(yuǎn)遠(yuǎn)超過(guò)參數(shù)鏈接的數(shù)目限制,不能靜態(tài)設(shè)置參數(shù)鏈接,只能動(dòng)態(tài)修改EDMA目的地址,所以不使能事件鏈接。
可以采用SP輸入信號(hào)作為外中斷事件觸發(fā)信號(hào),觸發(fā)EDMA外中斷事件通道傳輸一行采集點(diǎn)數(shù)據(jù)。數(shù)據(jù)單元數(shù)為一行采集點(diǎn)數(shù),根據(jù)數(shù)據(jù)單元字長(zhǎng)設(shè)置自動(dòng)修改EDMA目的地址。采用這種觸發(fā)方式后,EDMA目的地址修改和各采集點(diǎn)傳輸可以自動(dòng)完成,為了確保EDMA傳輸采集點(diǎn)無(wú)重復(fù)無(wú)遺漏,必須控制EDMA與圖像傳感器時(shí)序同步。同步的含義是考慮到傳感器處理器A/D等處理的延時(shí)的同步,可這樣的外中斷事件觸發(fā)方式需要考慮到TMS320C6416DSK的EMDA的工作時(shí)序、圖像傳感器工作時(shí)序和傳感器處理器工作時(shí)序,不如定時(shí)器中斷事件觸發(fā)容易實(shí)現(xiàn),但是數(shù)據(jù)傳輸性能要高。
使用MCBSP設(shè)備前必須調(diào)用芯片支持庫(kù)API函數(shù)MCBSP_open打開(kāi)MCBSP的一個(gè)設(shè)備,因?yàn)橄到y(tǒng)使用MCBSPO的CLKXO引腳信號(hào)和DXO引腳信號(hào),所以打開(kāi)的設(shè)備參數(shù)為MCBSP_DEV0。調(diào)用芯片支持庫(kù)API函數(shù)McBSP_configArgs設(shè)置MCBSPO設(shè)備,參數(shù)為MCBSP相關(guān)寄存器值。設(shè)備設(shè)置主要包括,根據(jù)傳感器控制器控制字寫入時(shí)序的SCLK信號(hào),設(shè)置采樣頻率發(fā)生器時(shí)鐘模式為內(nèi)部時(shí)鐘和分頻值。 由GPIO模塊產(chǎn)生控制器控制字寫入時(shí)序的SYNcH信號(hào)和LD信號(hào),由MCBSP模塊產(chǎn)生控制器控制字寫入時(shí)序的SCLK信號(hào)和SDATA信號(hào),將控制字寫入到傳感器處理器??刂谱譃?1位,前三位S2、S1、SO組合表示寫入寄存器的編碼,D7~DO表示寫入寄存器的8位數(shù)據(jù)。傳感器控制器XRD98123ACD寫入時(shí)序如圖4所示。
由于系統(tǒng)分配緩沖器地址為OxAOOOOOOO,即EMIFACE2首地址,所以需要調(diào)用芯片支持庫(kù)API函數(shù)EMIFA_configArgs設(shè)置EMIFA。設(shè)置主要包括CE2的讀圖4傳感器控制器XRD98L23ACD寫入時(shí)序?qū)懡r(shí)間、觸發(fā)時(shí)間、保持時(shí)間和存儲(chǔ)器類型為8位異步類型。因?yàn)榫彌_器可以理解成外部存儲(chǔ)器,但是不是實(shí)際的標(biāo)準(zhǔn)存儲(chǔ)器類型,不具有標(biāo)準(zhǔn)的EMIFA引腳連接方式,所以不能按照標(biāo)準(zhǔn)類型進(jìn)行設(shè)置,需要進(jìn)行實(shí)驗(yàn)調(diào)試設(shè)置。
使用定時(shí)器設(shè)備前,必須調(diào)用芯片支持庫(kù)API函數(shù)TIMER_open,打開(kāi)TIMER的一個(gè)設(shè)備。由于系統(tǒng)使用定時(shí)器O和定時(shí)器1,所以打開(kāi)的設(shè)備參數(shù)為TIMER_DEVO和TIMER_ DEVl。調(diào)用芯片支持庫(kù)API函數(shù)TIMER_configArgs設(shè)置TIMERO和TIMERl設(shè)備,參數(shù)為TIMER相關(guān)寄存器值。系統(tǒng)CPU時(shí)鐘為72OMHz。TIMERO設(shè)置主要包括時(shí)鐘源為內(nèi)部時(shí)鐘源,頻率為CPU時(shí)鐘8分頻,即9OMHz、時(shí)鐘模式使能、TOUTO為時(shí)鐘輸出引腳和時(shí)鐘周期為9。TIMERl設(shè)置主要包括時(shí)鐘源為外部時(shí)鐘源,頻率為2OMHz、脈沖模式使能、脈沖寬度為1、TOUTl為時(shí)鐘輸出引腳和時(shí)鐘周期為l。通過(guò)這樣的設(shè)置,TOUTO可以提供1OMHz,50%占空比時(shí)鐘輸出信號(hào);TOLTl可以提供5MHz,25%占空比時(shí)鐘輸出信號(hào)。
結(jié)語(yǔ)
本文分析了基于TMS320C6416處理器的嵌入式實(shí)時(shí)圖像采集系統(tǒng)設(shè)計(jì)方案,充分利用了TMS32Oc6416DSK硬件和軟件資源,為基于DSP芯片的有關(guān)圖像的嵌入式實(shí)時(shí)系統(tǒng)應(yīng)用,提供了一個(gè)技術(shù)參考。