基于I2C總線(xiàn)圖像傳感器配置的FPGA實(shí)現

發(fā)布時(shí)間:2015-6-18 13:44    發(fā)布者:designapp
關(guān)鍵詞: 傳感器 , CMOS , FPGA , 圖像傳感器
基于FPGA嵌入式圖像檢測系統因其快速的處理能力和靈活的編程設計使得它在工業(yè)現場(chǎng)的應用非常廣泛,通常這些系統都是通過(guò)采集圖像數據流并對它實(shí)時(shí)處理得到所需的特征信息。圖像數據的獲取是整個(gè)系統的第一步,作為整個(gè)系統的最前端,它決定了原始數據的質(zhì)量,是整個(gè)系統成功的關(guān)鍵。CMOS 圖像傳感器采用CMOS 工藝,可以將圖像采集單元和信號處理單元集成到同一塊芯片上,因而在集成度、功耗、成本上具有很大優(yōu)勢,這使得它在嵌入式圖像處理領(lǐng)域的運用越來(lái)越多。CMOS 圖像傳感器芯片大都把 I2C 總線(xiàn)的一個(gè)子集作為控制接口,用戶(hù)可以很方便地對芯片進(jìn)行編程操作,根據設計要求的不同配置圖像傳感器內部寄存器數據,以獲取期望的圖像。本文以Aptina 公司的MT9P031 圖像傳感器為例,用Verilog 硬件描述語(yǔ)言設計了I2C 總線(xiàn)的接口電路,以FPGA 作為核心控制器實(shí)現了對MT9P031 初始化操作,不僅驗證了I2C 總線(xiàn)的配置效果,得到了理想的圖像數據,還為后續線(xiàn)結構光圖像的處理系統奠定了基礎。

1 I2C 總線(xiàn)協(xié)議及MT9P031 配置過(guò)程介紹

1.1 I2C 總線(xiàn)協(xié)議

I2C(Inter-Integrated Circuit Bus) 總線(xiàn)是由PHILIPS 公司開(kāi)發(fā)的兩線(xiàn)式用于芯片之間連接的總線(xiàn),由于其接口線(xiàn)少,控制方式簡(jiǎn)單,通信速率較高等特點(diǎn),在單片機、串行EEPROM 等器件中有著(zhù)廣泛的使用。I2C 總線(xiàn)用兩根信號線(xiàn)來(lái)進(jìn)行數據傳輸,一根為串行數據(SDA, Serial Data),另一根為串行時(shí)鐘線(xiàn)(SCL, Serial Clock)。若干兼容器件(如存儲器、A/D、D/A、LCD 驅動(dòng)器等)可以共享I2C 總線(xiàn)。I2C 總線(xiàn)上所有器件依靠SDA 發(fā)送的地址信號尋址,不需要片選線(xiàn)。任何時(shí)刻總線(xiàn)只能由一個(gè)主器件控制,各從器件在總線(xiàn)空閑時(shí)啟動(dòng)數據傳輸。

1.2 MT9P031 配置時(shí)序分析

由于檢測系統需求的不同,圖像傳感器可能要工作在不同的模式,因此需要通過(guò)外部控制器對其內部寄存器進(jìn)行讀寫(xiě)操作,完成具體的配置。典型的寫(xiě)MT9P031 寄存器時(shí)序如圖1 所示,起始信號過(guò)后,FPGA 先寫(xiě)入設備(即MT9P031)的地址0xBA,然后釋放SDATA 數據總線(xiàn),隨后MT9P031 返回一個(gè)應答信號ACK,FPGA 獲取應答信號后,經(jīng)過(guò)一個(gè)時(shí)鐘周期再傳送待配置的寄存器地址0x09,在獲取應答信號后再傳送16 位的寄存器數據,由于每次只能發(fā)送8 位數據,所以這16位的寄存器數據要分兩次才能發(fā)送完畢,先發(fā)送的是高八位數據,后發(fā)送的為低八位數據,每發(fā)送完一個(gè)字節的數據,FPGA均會(huì )獲取一位的應答信號,然后結束一個(gè)傳送周期,完成一個(gè)寄存器的配置,即IDAddress+ SUB-Address + W-Data 總共32位的數據。重復上述過(guò)程可以對不同的寄存器進(jìn)行不同的參數配置。


圖1 寫(xiě)MT9P031 時(shí)序圖

2 FPGA 模塊設計

為了實(shí)現對圖像傳感器的正確配置,必須嚴格按照MT9P031 的配置時(shí)序完成設計,本設計中I2C 總線(xiàn)配置模塊主要由三個(gè)小模塊構成,它們分別是I2C_Clock_Generator、I2C_Controller 和Register_Value,各模塊之間的連接如圖2 所示。


圖2 I2C 總線(xiàn)配置模塊結構框圖

I2C_Clock_Generator 主要產(chǎn)生負責產(chǎn)生I2C 串行時(shí)鐘信號,根據協(xié)議數據傳輸有三種速度模式:正常模式100Kb/s、快速模式400Kb/s、高速模式3.4Mb/s,為了保證配置的準確性和成功率,設計中采用了100Kb/ 的速度模式,即SCLK 的頻率為100KHz,因為FPGA 外部輸入的時(shí)鐘為50MHz,所以需要對其分頻獲得。同時(shí)該模塊還負責產(chǎn)生數據傳輸有效信號,保證SDAT 的改變發(fā)生在SCLK 的低電平時(shí)段。

Register_Value 其實(shí)一個(gè)查找表,負責保存MT9P031 內部需要配置的寄存器地址和數據,查找表內數據的位數都是24bit,單獨作為一個(gè)模塊的目的是為了方便用戶(hù)改變配置數據,決定圖像傳感器的不同工作狀態(tài)。

I2C_Controller 是圖像傳感器配置設計的核心模塊,主要完成了啟停命令產(chǎn)生、字節發(fā)送和讀取、應答信號采集等功能。同時(shí),I2C_Controller 模塊還產(chǎn)生I2C讀寫(xiě)時(shí)序,由狀態(tài)機嚴格按照I2C 協(xié)議實(shí)現,將Register Value 部分送出的24 位操作碼I2C_DAT 轉化成為正確的I2C 時(shí)序。一個(gè)寄存器的數據傳輸完成后,模塊還將判斷寄存器配置數據是否發(fā)送順利,如果一切正常,LUT_INDEX 信號會(huì )自動(dòng)加一,控制Register Value 查找表產(chǎn)生下一個(gè)寄存器的地址和數據。
        
3 I2C 接口的仿真及調試

為了驗證MT9P031 配置過(guò)程中I2C時(shí)序的正確性,本設計在Modelsim Se10.1c 版軟件平臺中對整個(gè)模塊進(jìn)行了功能仿真,在Test bench 中模擬了50MHz 控制時(shí)鐘以及復位信號,觀(guān)察最終輸出端的波形情況。圖3 是對MT9P031 的寄存器地址0x00 進(jìn)行讀操作的仿真波形圖,圖4是對寄存器地址0x01 寫(xiě)入0x01EA 的仿真波形圖。


圖3 讀取寄存器0x00 的波形仿真


圖4 向寄存器0x01 寫(xiě)入數據0x01EA 的波形仿真

4 總結

基于I2C總線(xiàn)的圖像傳感器配置在視頻圖像采集處理系統中非常普遍,本設計結合了FPGA 的可編程特性,采用模塊化的方法設計方法完成了I2C 配置電路的設計,詳細介紹了各個(gè)模塊的設計流程和實(shí)現方式,最后對整個(gè)設計進(jìn)行了仿真,驗證了設計的正確性。綜合調試后占用資源極小,可靠性高,而且利用Verilog 硬件描述語(yǔ)言的設計使得可移植性很強,具有廣泛的應用價(jià)值。
本文地址:http://selenalain.com/thread-150726-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页