戴立新 王澤勇 王 黎 高曉蓉 趙全軻
摘 要:在視頻采集時(shí),攝像機(jī)輸出的模擬信號(hào)需要轉(zhuǎn)換為數(shù)字信號(hào),SAA7113芯片可以實(shí)現(xiàn)這種模/數(shù)轉(zhuǎn)換功能。介紹在開發(fā)FPGA圖像采集功能時(shí),I2C總線模塊的設(shè)計(jì)思路,并利用Verilog HDL語(yǔ)言實(shí)現(xiàn)I2C總線接口的功能;同時(shí)利用I2C總線對(duì)SAA7113芯片進(jìn)行配置,為實(shí)現(xiàn)視頻圖像的模/數(shù)轉(zhuǎn)換和圖像采集搭建環(huán)境,在設(shè)計(jì)SAA7113模塊狀態(tài)機(jī)時(shí)有意縮小SAA7113寄存器的配置范圍,從而節(jié)省配置時(shí)間。
關(guān)鍵詞:I2C總線;Verilog HDL;FPGA;SAA7113
中圖分類號(hào):TP334文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004 373X(2009)02 136 03
Design and Verification of I2C Bus Interface
DAI Lixin,WANG Zeyong,WANG Li,GAO Xiaorong,ZHAO Quanke
(College of Sciences,Southwest Jiaotong University,Chengdu,610031,China)
Abstract:When collecting the video image,the analog signals output from the camera need to be converted into digital signal,and SAA7113 chip can realize such analog/digital conversion.The design idea of I2C bus module is introduced when exploiting the image collection function of FPGA.The function of I2C Bus interface is realized by using Verilog HDL language,also the SAA7113 chip is configured through I2C Bus,which builds an environment for the collection and analog/digital conversion of video image.When designing the state machine of SAA7113 module,the disposition range of SAA7113 register is purposively reduced,thus the time of disposition is decreased.
Keywords:I2C bus;Verilog HDL;FPGA;SAA7113
0 引 言
常規(guī)的圖像采集處理系統(tǒng)利用圖像采集卡采集圖像到硬盤,再利用計(jì)算機(jī)以軟件方式完成圖像處理分析的任務(wù)。由于目前計(jì)算機(jī)自身性能的限制,完成數(shù)字圖像處理的速度有限,不能達(dá)到實(shí)時(shí)處理的目標(biāo)。如果采用FPGA處理,將會(huì)大大提高處理速度,同時(shí)達(dá)到實(shí)時(shí)處理的目標(biāo);由于在攝像機(jī)端實(shí)現(xiàn)了圖像信息的數(shù)字化,因此圖像抗干擾能力強(qiáng),圖像的傳輸距離進(jìn)一步增加。這里所做的工作是數(shù)據(jù)采集的一部分,是后續(xù)圖像處理的基礎(chǔ),因此具有十分重要的意義。
1 I2C總線
圖1為模擬I2C接口程序的基本框架。程序接口用于與應(yīng)用程序連接,將應(yīng)用程序的數(shù)據(jù)按照I2C協(xié)議的方式通過(guò)SDA傳遞給外部器件;時(shí)鐘設(shè)置寄存器用于設(shè)置時(shí)鐘信號(hào);時(shí)鐘產(chǎn)生模塊產(chǎn)生4倍SCL頻率的時(shí)鐘信號(hào),它為位傳輸控制模塊中所有同步動(dòng)作提供觸發(fā)信號(hào);命令寄存器決定是否在總線上產(chǎn)生各種時(shí)序信號(hào)等;狀態(tài)寄存器用來(lái)顯示當(dāng)前總線的狀態(tài);數(shù)據(jù)傳輸寄存器用于保存等待的數(shù)據(jù);數(shù)據(jù)接收寄存器用于I2C總線接收到的最后一個(gè)字節(jié)內(nèi)容;數(shù)據(jù)移位寄存器保存的數(shù)據(jù)總是與當(dāng)前的數(shù)據(jù)傳輸相關(guān)的;字節(jié)傳輸控制模塊以字節(jié)為單位控制數(shù)據(jù)傳輸;位傳輸控制模塊以位為單位進(jìn)行數(shù)據(jù)傳輸和產(chǎn)生各個(gè)I 2C協(xié)議命令。圖2為I2C總線接口設(shè)計(jì)及程序流程圖。I2C總線為雙向同步串行總線,分SDA(串行數(shù)據(jù)線)和SCL(串行時(shí)鐘線)兩種。
1.1 I2C總線接口設(shè)計(jì)的具體實(shí)現(xiàn)
I2C總線接口設(shè)計(jì)所需的編程模塊有:位傳輸控制模塊和字節(jié)傳輸控制模塊。編寫以上2個(gè)模塊時(shí)還要編寫程序主體部分。程序主體部分完成與外部程序的接口;完成與總線上外部節(jié)點(diǎn)的連線;完成程序內(nèi)部各個(gè)( I2C總線接口程序框架圖中)寄存器的構(gòu)建;控制字節(jié)傳輸控制模塊等功能。
1.2 波形仿真測(cè)試圖
在ModelSim中可以看到仿真的結(jié)果。I2C在SCL高電平期間發(fā)送單比特?cái)?shù)據(jù),低電平期間允許總線上改變信號(hào)。圖3~圖5分別在SCL為高位“1”時(shí),讀SDA上的數(shù)據(jù),在第9個(gè)SCL高電平期間發(fā)出應(yīng)答信號(hào)。圖中相關(guān)數(shù)據(jù)(A0H,01H,A5H,5AH)是編程時(shí)預(yù)先輸入的地址數(shù)據(jù),仿真圖驗(yàn)證了本設(shè)計(jì)程序的正確性。進(jìn)一步說(shuō)明I2C程序符合I2C協(xié)議的時(shí)序和數(shù)據(jù)格式,可以實(shí)現(xiàn)模擬I2C協(xié)議的任務(wù)。進(jìn)而完成了總線的接口設(shè)計(jì)。
2 SAA7113配置
2.1 SAA7113初始化配置值
在用FPGA來(lái)實(shí)現(xiàn)對(duì)SAA7113配置之前,首先必須確定其內(nèi)部各寄存器的配置值。SAA7113H有256個(gè)內(nèi)部寄存器(Subaddress:00~FFH),其中00H芯片版本信息寄存器是只讀的。01H~05H是前端配置狀態(tài)寄存器。06H~13H,15H~17H是解碼部分的工作方式配置寄存器。11H~13H是輸出控制寄存器,1FH是只讀的解碼狀態(tài)寄存器。40H~60H,60H~62H是行/場(chǎng)圖像控制、狀態(tài)寄存器,用于設(shè)置VPO的數(shù)據(jù)格式等。內(nèi)部寄存器14H,18H~1EH,20H~3FH及63H~FFH保留使用。在設(shè)計(jì)時(shí)SAA7113大部分寄存器的值采用其默認(rèn)值“00H”,以“01H”和“40H”為起始地址從SAA7113_ROM取出配置數(shù)據(jù)分兩組對(duì)SAA7113進(jìn)行配置,兩組配置數(shù)據(jù)結(jié)束地址分別“17H”和“5FH”。
圖6為i2c_w_7113模塊原理圖,其主要接口信號(hào)定義如表1所示。
圖7是i2c_w_7113模塊功能仿真波形圖。從圖7中可以看出,當(dāng)發(fā)出總線啟動(dòng)命令cmd_start(對(duì)應(yīng)1個(gè)高電平脈沖)時(shí),在SCL高電平期間,SDA線上產(chǎn)生1個(gè)從高電平到低電平的跳變以啟動(dòng)總線。隨后立即發(fā)送器件尋址字節(jié),SAA7113的器件地址是4AH,每個(gè)I2C器件都有1個(gè)惟一的器件地址號(hào),當(dāng)總線上有多個(gè)I2C器件連接時(shí),I2C接口控制器根據(jù)這個(gè)惟一的地址號(hào)來(lái)尋址相應(yīng)的器件。I2C在SCL高電平期間發(fā)送單比特?cái)?shù)據(jù),低電平期間允許在總線上改變信號(hào)。它先發(fā)送字節(jié)數(shù)據(jù)的最高位,從圖中可以看出,4AH在總線上的比特流為0100_1010,當(dāng)發(fā)送完8位數(shù)據(jù)且SAA7113正確接收后,在第9個(gè)SCL高電平期間SAA7113發(fā)出應(yīng)答信號(hào)將總線拉低,即在SDA線上呈現(xiàn)低電平。
2.2 下載驗(yàn)證
整個(gè)設(shè)計(jì)功能仿真通過(guò)后就可以下載到FPGA進(jìn)行實(shí)際驗(yàn)證了。對(duì)SAA7113的讀寫操作是通過(guò)saa7113_write和saa7113_read兩個(gè)控制鈕實(shí)現(xiàn)的,它們對(duì)應(yīng)開發(fā)板上的2個(gè)微動(dòng)開關(guān)。先使能寫操作,完成配置后i2c_write_fine引腳對(duì)應(yīng)的LED被點(diǎn)亮;然后使能讀操作,從SAA7113 E2PROM中讀取的數(shù)據(jù)被存入SAA7113_RAM中完成讀操作i2c_read_fine引腳對(duì)應(yīng)的LED被點(diǎn)亮;最后在JTAG模式下利用Quartus的In-System Memory Content Editor來(lái)查看SAA7113_RAM中的數(shù)據(jù)。
3 結(jié) 語(yǔ)
在進(jìn)行基于FPGA的硬件圖像采集處理系統(tǒng)的視頻采集部分的研究時(shí),攝像機(jī)輸出的模擬信號(hào)需轉(zhuǎn)換成數(shù)字信號(hào),而SAA7113芯片可以實(shí)現(xiàn)轉(zhuǎn)換功能,在此通過(guò)I2C總線的接口設(shè)計(jì)并在實(shí)現(xiàn)對(duì)SAA7113配置的基礎(chǔ)上實(shí)現(xiàn)該功能。在設(shè)計(jì)i2c_w_7113模塊狀態(tài)機(jī)時(shí),有意縮小SAA7113寄存器的配置范圍,從而節(jié)省配置時(shí)間。這里所做的工作是數(shù)據(jù)采集的一部分,是后續(xù)圖像處理的基礎(chǔ)。
參考文獻(xiàn)
[1]劉韜,樓興華.FPGA數(shù)字電子系統(tǒng)設(shè)計(jì)與開發(fā)實(shí)例導(dǎo)航[M].北京:人民郵電出版社,2005.
[2]何立民.I2C總線應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,1995.
[3]杜慧敏.基于Verilog HDL的FPGA設(shè)計(jì)基礎(chǔ)[M].西安:西安電子科技大學(xué)出版社,2006.
[4]袁本榮.用Verilog HDL 進(jìn)行FPGA設(shè)計(jì)的一些基本方法[J].微計(jì)算機(jī)信息,2004,20(6):93-95.
[5]應(yīng)芳琴.基于I2C總線的視頻信息采集系統(tǒng)的IP核設(shè)計(jì)[D].杭州:浙江工業(yè)大學(xué),2005.
[6]Bruce J W.Personal Digital Assistant (PDA) Based I2C Bus Analysis[J].IEEE Transactions on Consumer Electronics,2003(11):1 482-1 485.
[7]馬向前.基于FPGA的實(shí)時(shí)圖像采集和去噪系統(tǒng)的研究與設(shè)計(jì)[D].長(zhǎng)春:吉林大學(xué),2006.
[8]常曉明.Verilog-HDL工程入門[M].北京:北京航空航天大學(xué)出版社,2005.
[9]林灶生.Verilog FPGA芯片設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2006.
[10]王前.吳淑泉.劉喜英.基于FPGA的I2C總線接口實(shí)現(xiàn)方法[J].微電子技術(shù),2002(3):41-43.