<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于總線的嵌入式高速圖像通信系統(tǒng)設(shè)計(jì)

          基于總線的嵌入式高速圖像通信系統(tǒng)設(shè)計(jì)

          作者: 時間:2016-12-21 來源:網(wǎng)絡(luò) 收藏

            1 引言

            隨著現(xiàn)代的圖形采集技術(shù)發(fā)展迅速,各種基于ISA,PCI,USB1.1等總線的圖形采集卡速度已經(jīng)不能滿足用戶的需求,而采用 USB2.0以后就可以解決這個傳輸速度上的瓶頸,USB2.0的速度是480Mbits/s,完全可以滿足圖像采集、傳輸以及后續(xù)處理的要求。系統(tǒng)中采用 DSP+CPLD的硬件設(shè)計(jì)方案,采用現(xiàn)場可編程芯片 CPLD及兩片 SRAM構(gòu)成的圖像采集和存儲系統(tǒng),可以根據(jù)不同的需要進(jìn)行現(xiàn)場編程,具有通用性好、價(jià)格相對便宜,易于系統(tǒng)調(diào)試,升級等特點(diǎn)。系統(tǒng)中 CPLD選擇的型號是 ALTERA公司的MAX7000系列低功耗芯片EPM7128A。片外大容量 SRAM是DSP與 CPLD的聯(lián)系橋梁,系統(tǒng)設(shè)計(jì)也利用這座橋梁將 USB和 CPLD有機(jī)地聯(lián)系起來。該系統(tǒng)的市場調(diào)查表明,適應(yīng)于各種主動或被動的監(jiān)測場合,以及醫(yī)療、公安和工業(yè)檢測當(dāng)中。 2 系統(tǒng)的硬件設(shè)計(jì)方案圖像通信系統(tǒng)包括以下四個部分,如圖 1所示:

           ?。?) 圖像采集模塊,由線陣 CCD、CCD 驅(qū)動信號增強(qiáng)電路、CPLD 和 A/D 組成,用于采集圖像信號,并將模擬信號數(shù)字化,以便 DSP 處理。本系統(tǒng)采用黑白高速線陣TH7814A,該 CCD 為雙路輸出,像敏單元尺寸7 ?m,最高驅(qū)動頻率 50 MHz;CCD 驅(qū)動信號增強(qiáng)電路是為滿足該 CCD 所需的 9 V 高速驅(qū)動而設(shè)計(jì)的;A/D 芯片采用 SAA7111A,它由雙通道模擬預(yù)處理電路、自動鉗位和增益控制、時鐘產(chǎn)生電路、數(shù)字多標(biāo)準(zhǔn)譯碼器色度/飽和度/對比度控制電路、彩色空間矩陣和 27MHz數(shù)據(jù)處理通道七部分組成,并由 DSP模擬I 2C總線進(jìn)行時序配置,以上器件同步驅(qū)動脈沖均由 CPLD 產(chǎn)生。

            (2)圖像信號的處理和控制模塊,該模塊由 DSP和兩片 SRAM組成,完成了整個系統(tǒng)圖像數(shù)據(jù)的處理和對各模塊的集中控制與處理,DSP選用了 TI公司的通用 16位定點(diǎn) DSP芯片 TMS320VC5409,其指令的處理速度達(dá)到 100MIPS,通過片內(nèi)的鎖相環(huán)倍頻使 DSP內(nèi)部工作在 100M的頻率上,而外部的工作頻率可以相對較低,這就降低了電路設(shè)計(jì)的要求,提高了工作的穩(wěn)定性。該系統(tǒng)圖像采集的一幀圖像是 720×576象素,如果取彩色圖像,每象素用 2個字節(jié)表示,每幀圖像是 720×576×16=*Mb,分成奇數(shù)場和偶數(shù)場分別存儲在兩片 SRAM中,則每片的 SRAM存儲 3.2Mb的圖像數(shù)據(jù),因此選用了 256K×1*M位的靜態(tài)存儲器(SRAM)。在圖像處理領(lǐng)域,通常只需要黑白圖像,可以只取圖像的黑白部分,每象素用 1個字節(jié)表示,每幀圖像是 3.2Mb ,每片 SRAM存儲 1.6Mb的圖像數(shù)據(jù)。所采用的 EZ-USB芯片理論速率是 480Mbps,實(shí)際測得的速率是 320Mbps,因此圖像采集卡每秒傳輸約 5幀彩色圖像或 10幀黑白圖像。

           ?。?)USB傳輸和控制模塊,設(shè)計(jì)中選用的芯片是EZ-USB FX2系列的CY7C68013芯片,該芯片是針對 USB2.0的,而且和 USB1.0兼容,由于 USB2.0的速度可以達(dá)到480Mb/S,并且FX2自身具有EP2,EP4,EP6和EP8的4個大流量端點(diǎn),CY7C68013可以實(shí)現(xiàn)從外部存儲器高速的讀取和寫入數(shù)據(jù)。在圖像的采集、存儲和傳輸設(shè)計(jì)上,不再是奇數(shù)場存儲在奇數(shù)SRAM,偶數(shù)場存儲在偶數(shù)SRAM。最重要的改進(jìn)是一幀圖像在完成行延時和像素延時之后,當(dāng)偶數(shù)場到來后,先把偶數(shù)場的一半存儲在緊鄰奇數(shù)場數(shù)據(jù)的奇數(shù) SRAM中,然后再把余下的偶數(shù)場數(shù)據(jù)的一半存儲在緊鄰偶數(shù)場數(shù)據(jù)的偶數(shù) SRAM中。CY7C68013擁有 4個大容量端點(diǎn),恰好滿足了整個系統(tǒng)對實(shí)時性的要求。在 USB從兩個 SRAM讀取圖像數(shù)據(jù)時,USB并不是從兩個SRAM“乒乓”式的讀取圖像數(shù)據(jù),而是充分地利用 USB2.0的速度特點(diǎn),由 CPLD的時序調(diào)度來先讀取奇數(shù)SRAM,然后讀取偶數(shù)SRAM。

           ?。?)系統(tǒng)接口以及終端圖像還原和存儲模塊,系統(tǒng)中各個模塊之間都需要通過接口來實(shí)現(xiàn)模塊間通信,因此接口的選擇是系統(tǒng)是保證系統(tǒng)通信速度的關(guān)鍵。其中 CPLD 和 DSP 都具有很高的數(shù)據(jù)處理速度 ,如何將這兩個器件的處理速度協(xié)調(diào)起來 ,會直接影響整體系統(tǒng)的運(yùn)行速度 ,這就涉及到 CPLD如何與 DSP接口的問題。關(guān)鍵是選擇 DSP的接口方式和配置CPLD的片內(nèi)RAM。系統(tǒng)中DSP與 SDRAM 用EMIF 的方式接口。同時,CPLD內(nèi)部的存儲器主要是 Block RAM ,可用作雙口 RAM ,正好可將 CPLD 模塊中的結(jié)果緩沖器設(shè)為雙口 RAM ,一端是輸入 ,另一端則模擬為SDRAM 的接口。這樣就將 CPLD 與 DSP 有機(jī)地連接在一起。系統(tǒng)與終端的接口采用的是 480Mb/s的 USB2.0通用串行接口,用于發(fā)送和接受各種數(shù)據(jù)及控制信號。PC機(jī)端通過 USB接口接受數(shù)據(jù),然后存儲到終端硬盤上,進(jìn)行圖像的還原和處理。

            系統(tǒng)工作流程:系統(tǒng)上電以后, DSP從外部 FLASH進(jìn)行程序自舉,將程序引導(dǎo)進(jìn)入片內(nèi)高速 RAM中運(yùn)行。DSP對 SAA7111A,TL16C750(異步通信芯片)進(jìn)行初始化配置。初始化結(jié)束后,DSP進(jìn)入等待狀態(tài)。當(dāng)接收到手動或是軟件自動鏈路請求時, DSP進(jìn)行鏈路撥號。鏈路成功后, DSP通過 CLKX產(chǎn)生觸發(fā)脈沖通知 CPLD可以采集圖像。從 CCD捕捉到的模擬視頻信號經(jīng)過SAA7111A的模數(shù)轉(zhuǎn)換,由CPLD控制寫入片外高速大容量SRAM儲存,直到一幀圖像存儲完畢, CPLD交出總線。然后 USB控制器 FX2從兩片 SRAM中讀取奇數(shù)場和偶數(shù)場的圖像數(shù)據(jù)。一幀圖像采集結(jié)束后,CPLD置高 HOLD,同時產(chǎn)生中斷,通知 DSP。DSP收回總線,進(jìn)行圖像傳輸。圖像采集部分的 TOKEN信號外接 LED,LED的亮、滅狀態(tài)可以直觀地顯示系統(tǒng)進(jìn)程階段。

            3 系統(tǒng)程序設(shè)計(jì)

            3.1 DSP控制程序設(shè)計(jì)

            DSP硬件控制程序用來管理硬件各部分工作方式及指定數(shù)據(jù)流向和組織方式 , 從 DSP執(zhí)行的內(nèi)外影響主要可以分為內(nèi)部的算法操作,和對外部的控制操作兩個部分。其中外部的聯(lián)系主要是兩個方面:一個是和CPLD控制通道的相互交換;一個是和DSP與CPLD數(shù)據(jù)交換存儲器進(jìn)行數(shù)據(jù)交換。系統(tǒng)的 DSP部分的軟件編寫采用模塊化編程,主程序只是在循環(huán)檢測按鍵情況,如果需要就調(diào)用需要的功能模塊函數(shù),其主函數(shù)中的

            部分代碼如下:

            While (1) { order num=scan key()://掃描按鍵 switch (order num)

            { case collection order://圖像采集命令 image_collection();//圖像采集

            image_process();//圖像處理

            image_save();//圖像保存 case usb_transfer://USB傳輸數(shù)據(jù)命令 set usb_transfer();//調(diào)用相應(yīng)模塊 default:; }}

            3.2 CPLD控制程序設(shè)計(jì)

            CPLD的作用是產(chǎn)生 CCD、A/D及 DSP視頻端口的同步驅(qū)動脈沖。每次采樣時, CPLD將從 SAA7111A接收到一幀圖像數(shù)據(jù)保存到 SRAM中,此時 DSP等待;采樣結(jié)束后, DSP與 CPLD進(jìn)行總線切換,分別連接到與上次不同的 SRAM上,DSP開始讀取數(shù)據(jù),CPLD開始采集數(shù)據(jù)。每當(dāng) DSP和 CPLD 都完成各自的任務(wù)時,就進(jìn)行總線切換 ,交換連接的 SRAM。此過程中由 CPLD控制程序的流程如圖 2所示。

            3.3 USB的固件程序及驅(qū)動程序

            固件程序在該系統(tǒng)中其主要功能是實(shí)現(xiàn) USB芯片的初始化和配置;控制 USB芯片接收并處理 USB驅(qū)動程序請求;控制芯片接收控制程序的控制指令。固件程序首先初始化所有的內(nèi)部狀態(tài)變量,調(diào)用用戶初始化函數(shù) TD-Init(),初始化 USB總線設(shè)備接口為非配置狀態(tài),并打開中斷。當(dāng)完成上面的任務(wù)后,固件程序就開始重新枚舉設(shè)備直到在端點(diǎn)收到 SETUP包為止。一旦 CY7C68013收到 SETUP包,固件程序就開始進(jìn)行任務(wù)分配。固件程序流程圖如圖 3所示。

            3.4 主機(jī)應(yīng)用應(yīng)用程序

            在 PC機(jī)端,用 Visual C++ 6.0編寫客戶應(yīng)用程序,應(yīng)用程序通過 USB接收原始的奇數(shù)場和偶數(shù)場圖像數(shù)據(jù),待接收完奇數(shù)場和偶數(shù)場圖像數(shù)據(jù)后,應(yīng)用程序把它們組成完整的一幀圖像,并且把該幀圖像數(shù)據(jù)存儲到硬盤上,然后把這幀圖像轉(zhuǎn)化成 BMP格式的圖像存儲在硬盤上,同時以 BMP的形式顯示圖像。

            4 結(jié)論

            從總體來看,該系統(tǒng)以嵌入式設(shè)備為核心平臺,在此平臺上完成了機(jī)器視覺、圖像實(shí)時采集、數(shù)據(jù)傳輸 3個子系統(tǒng)的無縫連接集成開發(fā)。使得本系統(tǒng)只需較少的成本,擁有監(jiān)測終端,就能完成主動智能監(jiān)測、用戶遠(yuǎn)程現(xiàn)場監(jiān)控等功能。此外,本系統(tǒng)可針對不同需求,在添加各類相應(yīng)的傳感器后,將可運(yùn)用到包括消防、車輛防盜以及工業(yè)控制等很多實(shí)用領(lǐng)域。



          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();