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

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計應用 > FPGA和EZ-USB FX2在采集圖像數(shù)據(jù)中的應用

          FPGA和EZ-USB FX2在采集圖像數(shù)據(jù)中的應用

          作者: 時間:2009-06-16 來源:網(wǎng)絡 收藏

          摘 要:利用和EZ_15SB (CY7C68013)將MT9M112(Sensor)數(shù)據(jù)準確無損地傳給PC機。方案使用CY7C68013控制器工作在Slave FIFO從機方式,用Verilog HDL語言在中產(chǎn)生相應的控制信號,最終實現(xiàn)對數(shù)據(jù)的快速傳輸,在上位機得到Sensor的清晰畫面。該方案的傳輸速度快,數(shù)據(jù)準確,可擴展到其他需要通過USB進行快速數(shù)據(jù)傳輸?shù)南到y(tǒng)。與其他采用異步通信方案相比,設(shè)計利用緩沖作用,使數(shù)據(jù)無丟失傳輸,最終在上位機得到的圖像更加清晰流暢。該設(shè)計方案和產(chǎn)品達到國際先進水平。
          關(guān)鍵詞:同步傳輸;異步傳輸;數(shù)據(jù)流;FIFO_Core;slave FIFO

          本文引用地址:http://www.ex-cimer.com/article/192019.htm


          由于一維碼、二維碼以及圖像掃描處理等方面都涉及到了PC機和下位機間的數(shù)據(jù)傳輸,而傳輸數(shù)據(jù)阻塞問題又是制約圖像效果的根本原因,該方案很好地解決了這個問題。設(shè)計采用美光的CMOS圖像傳感芯片MT9M112作為圖像部分,通過EZ_USB。的USB微控制器芯片68013a將到的數(shù)據(jù)傳送到PC機,由PC機對二維碼圖像進行顯示并做解碼處理。由于MT9M112輸出的是8位的串行圖像數(shù)據(jù)流,直接與68013a的從FIFO接口對接不能保證數(shù)據(jù)完整不丟失,并且無法在數(shù)據(jù)中加入幀識別信息。在這種情況下采用了FPGA完成此部分邏輯功能。通過FPGA對圖像數(shù)據(jù)做相應的調(diào)整再交給68013a傳送到上位機。


          1 詳細設(shè)計方案及性能分析
          1.1 硬件系統(tǒng)框圖
          硬件系統(tǒng)框圖如圖1所示,實現(xiàn)了各模塊數(shù)據(jù)信號和控制信號的鏈接。

          1.2 Sensor輸出部分說明
          MT9M112的輸出具有以下的特性:MT9M112內(nèi)部有一個PLL鎖相環(huán),通過相應的寄存器設(shè)置可調(diào)整輸出數(shù)據(jù)的同步時鐘,默認輸出ITU_R BT.656(YCbCr)格式的數(shù)據(jù)流。LINE_VALlD指示一個行有效數(shù)據(jù)輸出周期,F(xiàn)RAME_VALID指示一個幀輸出周期,在幀和行同時有效時以像素時鐘PIXCLK為基準輸出8位的圖像數(shù)據(jù),根據(jù)時序,只要行有效為高,輸出總線有圖像數(shù)據(jù),這樣就可以將FPGA的寫是能改為高有效(默認低有效),直接將行有效信號連接到寫使能管腳,從而控制向FPGA FIFO的寫。
          1.3 FPGA內(nèi)部模塊及主要原理
          在FPGA開發(fā)工具中創(chuàng)建F1FO_Core,設(shè)置其輸入數(shù)據(jù)位寬為8 b格式,輸出數(shù)據(jù)寬度為16 b格式,目的是在控制時鐘不變的情況下加快傳輸數(shù)據(jù)速率。時鐘選為single clock,即FPGA FIFO核的讀和向USB FIFO的寫用同一時鐘.PIXCLK,同時利用Verilog HDI,語言實現(xiàn)其內(nèi)部模塊互連。脫機解碼時上位機程序為了識別一個有效的幀數(shù)據(jù)段,在下位機傳遞數(shù)據(jù)時,在每幀圖像數(shù)據(jù)間插入了16 B的同步數(shù)據(jù)(該數(shù)據(jù)可由工作人員決定),以鑒別一幀圖像開始。設(shè)計將同步數(shù)據(jù)中將同步信息分為4個4 B數(shù)據(jù)。第一個數(shù)據(jù)為同步頭,向上位機發(fā)數(shù)據(jù)固定為0xAA550000,第二個數(shù)據(jù)表示圖像的比例,高字節(jié)為行,低字節(jié)為列。第三以及第四個數(shù)據(jù)為保留字目前為O。FPGA除負責傳輸有效的幀圖像外還要在兩個圖像幀數(shù)據(jù)之間插入同步數(shù)據(jù)。是在FRAME_VALID的下降沿到來后(即一幀數(shù)據(jù)傳輸結(jié)束后發(fā)同步信息)并且FPGA的FIFO empty_flag有效時發(fā)送,以此來判斷下一幀數(shù)據(jù)的開始,F(xiàn)PGA FIFO核與USB及圖像數(shù)據(jù)關(guān)系如圖2所示。


          1.4 68013a從FIFO接口
          Sensor采集的數(shù)據(jù)經(jīng)過FPGA做處理寫到EZ_LISB 68013A的從FIFO,由EZ_USB FX2 68013A將數(shù)據(jù)打包放送到上位機。由于上位機的數(shù)據(jù)同步為固定的同步信息,不涉及到FPGA回讀上位機數(shù)據(jù)部分,所以此處只涉及到寫EZ_USB FX2 68013A的從FIFO。數(shù)據(jù)總線FD可編程選擇為8位或是16位的位寬(該方案通過FPGA的FIFO_Core將總線數(shù)據(jù)轉(zhuǎn)換為16位格式,從而在控制時鐘不變的情況下加快傳輸數(shù)據(jù)速率),同步傳輸時鐘由外部提供時,通過外部對IFCLK引腳引入PIXCLK時鐘(同步電路)。EZ_USBFX2 68013A有4個端點,通過FIFOADR設(shè)置選擇數(shù)據(jù)總線與EP6對應,并可編程調(diào)整對應的FIFO深度。通過固件編程可將FLAGA,F(xiàn)LAGB,F(xiàn)LAGC調(diào)整為對應哪個內(nèi)部FIFO的對應滿空狀態(tài)。PKT、END用于手動打包傳輸數(shù)據(jù),當固件程序設(shè)置68013a的EPx-AUTOINLENH:L為512 B,當ALITOIN=1時68013a將自動以512 B為單位打包傳輸?shù)経SB上。在異步傳輸時SLWR用于鎖存總線數(shù)據(jù),在同步傳輸時SLWR做為使能信號,在SLWR為低,每個IFCLK上升沿鎖存總線數(shù)據(jù),至此完成這個項目的數(shù)據(jù)流控制設(shè)計。


          2 結(jié) 語
          通過以上設(shè)計,成功地實現(xiàn)了MT9M112,F(xiàn)PGA和。EZ_USB FX2 68013A之間的通信,該方案將CMOS圖像傳感芯片MT9M112的數(shù)據(jù)完整地傳輸?shù)絇C機,在PC機經(jīng)數(shù)據(jù)處理(可選擇提取Y信號或?qū)⑷啃盘?,解碼后可得清晰的灰度或彩色圖像。方案通過FPGA的FIFO_Core實現(xiàn)了8位數(shù)據(jù)向16位數(shù)據(jù)的轉(zhuǎn)換,然后利用EZ_USB FX2 68013A Slave FIFO的EP6端口把數(shù)據(jù)傳給PC機,實現(xiàn)了同步通信。與目前社會上用DSP處理器異步通信相比,利用FPGA不僅降低了成本而且解決了數(shù)據(jù)傳輸過程中易阻塞的問題,實現(xiàn)了數(shù)據(jù)無縫傳輸,得到的圖像也更為清晰流暢。



          關(guān)鍵詞: EZ-USB FPGA FX2 采集

          評論


          相關(guān)推薦

          技術(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); })();