• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于FPGA的可配置IIC總線接口設(shè)計(jì)

      2016-09-16 09:10:21張素萍高照陽張建芬天津中德職業(yè)技術(shù)學(xué)院電氣與能源學(xué)院天津0050上海交通大學(xué)上海市復(fù)雜薄板結(jié)構(gòu)數(shù)字化制造重點(diǎn)實(shí)驗(yàn)室上海200240暨南大學(xué)珠海校區(qū)廣東珠海59070
      電子器件 2016年4期
      關(guān)鍵詞:高電平字節(jié)總線

      張素萍,高照陽,張建芬(.天津中德職業(yè)技術(shù)學(xué)院電氣與能源學(xué)院,天津0050;2.上海交通大學(xué)上海市復(fù)雜薄板結(jié)構(gòu)數(shù)字化制造重點(diǎn)實(shí)驗(yàn)室,上海200240;.暨南大學(xué)珠海校區(qū),廣東珠海59070)

      基于FPGA的可配置IIC總線接口設(shè)計(jì)

      張素萍1,高照陽2*,張建芬3
      (1.天津中德職業(yè)技術(shù)學(xué)院電氣與能源學(xué)院,天津300350;2.上海交通大學(xué)上海市復(fù)雜薄板結(jié)構(gòu)數(shù)字化制造重點(diǎn)實(shí)驗(yàn)室,上海200240;3.暨南大學(xué)珠海校區(qū),廣東珠海519070)

      針對(duì)傳統(tǒng)IIC總線接口的FPGA設(shè)計(jì)可重用性不高的問題,提出了一種基于FPGA的可配置IIC總線接口設(shè)計(jì)方案。該方案采用同步有限狀態(tài)機(jī)設(shè)計(jì)方法和硬件描述語言Verilog HDL,對(duì)IIC總線的數(shù)據(jù)傳輸時(shí)序進(jìn)行模塊化設(shè)計(jì),采用Signal Tap II對(duì)設(shè)計(jì)模塊進(jìn)行仿真驗(yàn)證。實(shí)驗(yàn)結(jié)果表明,該設(shè)計(jì)接口作為一種主控制器接口,可實(shí)現(xiàn)與具有IIC總線接口的從機(jī)器件100 kbyte/s和400 kbyte/s的可靠數(shù)據(jù)傳輸。該方案具有可重用度高、可配置性強(qiáng)、控制靈活等優(yōu)點(diǎn),并已成功運(yùn)用于工程實(shí)踐中。

      FPGA;IIC總線接口;Verilog HDL;可配置;仿真驗(yàn)證

      IIC總線(Inter Integrated Circuit bus)是Philips公司開發(fā)的一種用于芯片間通訊的串行傳輸總線,它僅需串行時(shí)鐘線SCL和串行數(shù)據(jù)線SDA兩根信號(hào)線,即可實(shí)現(xiàn)全雙工同步數(shù)據(jù)傳送,能夠極方便地構(gòu)成多機(jī)系統(tǒng)和外圍器件擴(kuò)展系統(tǒng),在現(xiàn)代電子設(shè)計(jì)系統(tǒng)中得到越來越廣泛的應(yīng)用,并已經(jīng)成為一種世界性的工業(yè)標(biāo)準(zhǔn)[1-2]。

      目前,從市場(chǎng)新購的FPGA器件不具有IIC接口,所以,其還不能與具有IIC接口的器件直接連接,要想使FPGA能夠與IIC接口從器件進(jìn)行數(shù)據(jù)通訊,必須在FPGA內(nèi)部設(shè)計(jì)IIC主控制器接口。至此,關(guān)于利用FPGA實(shí)現(xiàn)IIC總線接口設(shè)計(jì)方面的工作,多是對(duì)IIC總線協(xié)議的FPGA設(shè)計(jì)進(jìn)行了探索性的研究,實(shí)用性有待加強(qiáng),可重用性不高。如果用戶自己構(gòu)建的SOPC系統(tǒng)中需要IIC總線接口,還需要重新設(shè)計(jì),勢(shì)必會(huì)增加系統(tǒng)的研發(fā)周期。鑒于此,本文設(shè)計(jì)了一種基于FPGA的可配置IIC總線主控制器接口,用戶使用時(shí)只需修改相應(yīng)的配置參數(shù),即可應(yīng)用到自己的SOPC系統(tǒng)中,從而加快系統(tǒng)設(shè)計(jì)進(jìn)度,縮短產(chǎn)品研發(fā)周期,提高產(chǎn)品市場(chǎng)競(jìng)爭力。

      1 IIC總線特征及工作原理

      1.1IIC總線特征[3-4]

      在IIC總線中,只有在總線處于“閑”狀態(tài)時(shí),才能開始數(shù)據(jù)傳輸。在數(shù)據(jù)傳輸期間,只要時(shí)鐘線SCL為高電平,數(shù)據(jù)線SDA必須保持穩(wěn)定狀態(tài),否則數(shù)據(jù)線SDA上的任何變化都被當(dāng)作“啟動(dòng)”或“停止”信號(hào)。圖1為IIC總線狀態(tài)的定義。

      圖1 IIC總線狀態(tài)示意圖

      A段:總線處于閑狀態(tài),此時(shí),數(shù)據(jù)線SDA和時(shí)鐘線SCL均為高電平狀態(tài)。

      B段:啟動(dòng)數(shù)據(jù)傳輸狀態(tài),當(dāng)時(shí)鐘線SCL為高電平狀態(tài)時(shí),數(shù)據(jù)線SDA由高電平變?yōu)榈碗娖降南陆笛乇徽J(rèn)為是“啟動(dòng)”信號(hào)。只有出現(xiàn)“啟動(dòng)”信號(hào)后,其它的命令才有效。

      C段:停止數(shù)據(jù)傳輸狀態(tài),當(dāng)時(shí)鐘線SCL為高電平狀態(tài)時(shí),數(shù)據(jù)線SDA由低電平變?yōu)楦唠娖降纳仙乇徽J(rèn)為是“停止”信號(hào)。只要“停止”信號(hào)出現(xiàn),所有的外部操作都結(jié)束。

      D段:數(shù)據(jù)有效狀態(tài),在出現(xiàn)“啟動(dòng)”信號(hào)以后,當(dāng)時(shí)鐘線SCL為高電平狀態(tài)時(shí),數(shù)據(jù)線SDA是穩(wěn)定的,這時(shí)數(shù)據(jù)線SDA上的數(shù)據(jù)即為要傳送的數(shù)據(jù)。數(shù)據(jù)線SDA上的數(shù)據(jù)的改變必須在時(shí)鐘線SCL為低電平期間完成,每位數(shù)據(jù)占用一個(gè)時(shí)鐘脈沖。每個(gè)數(shù)據(jù)傳輸都是開始于“啟動(dòng)”信號(hào),終止于“停止”信號(hào)。應(yīng)答信號(hào):每個(gè)正在接收數(shù)據(jù)的從機(jī)在接收到一個(gè)字節(jié)的數(shù)據(jù)后,通常需要發(fā)出一個(gè)應(yīng)答信號(hào)。而每個(gè)正在發(fā)送數(shù)據(jù)的從機(jī)在發(fā)出一個(gè)字節(jié)的數(shù)據(jù)后,通常需要接收一個(gè)應(yīng)答信號(hào)。與此同時(shí),主機(jī)控制器必須產(chǎn)生一個(gè)與這個(gè)應(yīng)答位相聯(lián)系的額外的時(shí)鐘脈沖。

      1.2IIC總線工作原理[5-6]

      IIC總線數(shù)據(jù)傳輸工作原理如圖2所示,首先,主機(jī)發(fā)送一個(gè)啟動(dòng)信號(hào),總線上所有從機(jī)檢測(cè)到此啟動(dòng)信號(hào)后開始接收第1個(gè)字節(jié),第1個(gè)字節(jié)包括七位從機(jī)地址和一位讀/寫指示位。接著,如果某一從機(jī)檢測(cè)出收到的7位從機(jī)地址與自己的地址標(biāo)識(shí)相符,則向主機(jī)發(fā)送一個(gè)回應(yīng)ACK(低有效)。然后,從機(jī)依照讀/寫指示位向主機(jī)發(fā)送或從主機(jī)接收數(shù)據(jù)。每1字節(jié)傳輸完后,若是讀操作,則主機(jī)向從機(jī)發(fā)送一個(gè)回應(yīng)ACK(低有效),若是寫操作,則由從機(jī)向主機(jī)發(fā)送一個(gè)回應(yīng)ACK(低有效)。最后,傳送完畢,主機(jī)以一個(gè)停止信號(hào),來結(jié)束整個(gè)數(shù)據(jù)傳輸過程。

      圖2 IIC總線數(shù)據(jù)傳輸時(shí)序圖

      2 基于FPGA的IIC總線接口設(shè)計(jì)

      2.1IIC總線接口模塊結(jié)構(gòu)設(shè)計(jì)

      IIC總線接口結(jié)構(gòu)設(shè)計(jì)如圖3所示,主要包括內(nèi)部分頻器和IIC總線接口控制時(shí)序邏輯模塊2部分。

      內(nèi)部分頻器:通常FPGA的外部輸入時(shí)鐘頻率比較高,例如50MHz,所以必須經(jīng)過內(nèi)部的分頻器輸出符合I2C總線要求的數(shù)據(jù)傳輸速率(標(biāo)準(zhǔn)模式100 kbit/s,快速模式400 kbit/s),才能滿足IIC總線數(shù)據(jù)傳輸?shù)臅r(shí)序要求。

      IIC總線接口控制時(shí)序邏輯模塊:此部分是IIC總線接口模塊的控制核心,IIC總線數(shù)據(jù)傳輸?shù)乃袝r(shí)序控制邏輯都由它產(chǎn)生,例如,啟動(dòng)信號(hào)和停止信號(hào)的產(chǎn)生,對(duì)從器件的尋址,總線上數(shù)據(jù)的發(fā)送和接收。同時(shí),其內(nèi)部集成數(shù)據(jù)鎖存器和移位寄存器,其中,數(shù)據(jù)鎖存器主要用于暫存發(fā)送的數(shù)據(jù)、地址和控制信息和接收數(shù)據(jù),移位寄存器主要用于對(duì)發(fā)送的數(shù)據(jù)進(jìn)行并/串轉(zhuǎn)換,然后發(fā)送到數(shù)據(jù)線SDA上,或者從數(shù)據(jù)線SDA上接收的數(shù)據(jù)進(jìn)行串/并轉(zhuǎn)換,然后由主機(jī)進(jìn)行接收。

      圖3 IIC總線接口模塊結(jié)構(gòu)框圖

      2.2IIC總線端口映射及功能說明

      IIC總線端口映射及功能如表1所示。由圖3和表1可知,本文設(shè)計(jì)的IIC總線接口模塊能夠?qū)崿F(xiàn)數(shù)據(jù)傳輸?shù)膬煞N基本數(shù)據(jù)操作模式即單字節(jié)數(shù)據(jù)寫模式和單字節(jié)數(shù)據(jù)讀模式。由于該模塊提供讀寫前、讀寫過程中和完成后的相應(yīng)的標(biāo)志信息(Start、Inter_Addr,Done、Ack、AckCounter),所以,主機(jī)能夠根據(jù)這些信息判斷是否進(jìn)行下一字節(jié)數(shù)據(jù)的讀寫操作,從而實(shí)現(xiàn)從機(jī)內(nèi)部連續(xù)存儲(chǔ)單元的讀寫操作,最終實(shí)現(xiàn)IIC總線數(shù)據(jù)傳輸?shù)?種操作模式,分別為單字節(jié)數(shù)據(jù)寫、單字節(jié)數(shù)據(jù)讀、多字節(jié)數(shù)據(jù)連續(xù)寫、多字節(jié)數(shù)據(jù)連續(xù)讀。例如,多字節(jié)數(shù)據(jù)連續(xù)寫模式,當(dāng)主機(jī)通過該總線接口對(duì)從機(jī)成功完成一次寫操作后,Done端口會(huì)現(xiàn)下降沿脈沖,主機(jī)檢測(cè)到該信號(hào)后,這時(shí)只要配置好Clk_Type、Rd/W r、Start、Machine_Addr[6:0]、Inter_Addr[7:0]、Data[7:0]這些信號(hào),即可進(jìn)行相鄰地址單元的數(shù)據(jù)存儲(chǔ),直到寫入完指定數(shù)據(jù)長度的字節(jié)數(shù)據(jù)為止。至于連續(xù)讀寫多少數(shù)據(jù),由主機(jī)控制程序決定,從而避免了從器件連續(xù)讀寫操作傳統(tǒng)模式數(shù)據(jù)長度的限制。

      表1 IIC總線端口映射及功能說明

      2.3IIC總線接口模塊的Verilog HDL設(shè)計(jì)

      2.3.1IIC總線接口時(shí)鐘SCL信號(hào)產(chǎn)生設(shè)計(jì)

      本系統(tǒng)設(shè)計(jì)的時(shí)鐘信號(hào)SCL有兩種輸出頻率100 kHz和400 kHz,通過主機(jī)輸入信號(hào)Clk_Type進(jìn)行選擇確定,當(dāng)其為1時(shí),SCL輸出頻率為100 kHz,當(dāng)其為0時(shí),SCL輸出頻率為400 kHz。時(shí)鐘信號(hào)SCL的產(chǎn)生是將FPGA外部輸入時(shí)鐘信號(hào)經(jīng)過分頻計(jì)數(shù)器而得到所需要的信號(hào)。系統(tǒng)產(chǎn)生100 kHz的時(shí)鐘信號(hào)所用的分頻計(jì)數(shù)器常數(shù)為249,而400 kHz的時(shí)鐘信號(hào)所用的分頻計(jì)數(shù)器常數(shù)為62。此外,對(duì)IIC總線接口控制時(shí)序邏輯模塊進(jìn)行設(shè)計(jì)時(shí),需要對(duì)時(shí)鐘線SCL一個(gè)完整周期內(nèi)的上升沿SCL_POS、下降沿SCL_NEG、時(shí)鐘周期高電平部分的中間時(shí)刻SCL_HIGH、時(shí)鐘周期低電平部分的中間時(shí)刻SCL_LOW這些信號(hào)進(jìn)行正確檢測(cè),才能設(shè)計(jì)出符合IIC總線協(xié)議規(guī)范的邏輯控制時(shí)序。所以,還要利用本 分 頻 計(jì) 數(shù) 器 產(chǎn) 生 SCL_POS、SCL_HIGH、SCL_NEG、SCL_LOW這4種脈沖信號(hào)。本系統(tǒng)在FPGA外部始終為25MHz時(shí),用Verilog HDL對(duì)時(shí)鐘分頻計(jì)數(shù)器進(jìn)行設(shè)計(jì)工作。其產(chǎn)生100 kHz的SCL信號(hào)的主要VERILOGHDL代碼如下:

      本系統(tǒng)設(shè)計(jì)的IIC總線接口時(shí)鐘信號(hào)SCL及其相關(guān)附加信號(hào)實(shí)時(shí)仿真波形如圖4所示。

      圖4 IIC總線接口時(shí)鐘信號(hào)SCL及相關(guān)附加信號(hào)實(shí)時(shí)仿真數(shù)據(jù)波形圖

      2.3.2狀態(tài)機(jī)模型

      由IIC總線數(shù)據(jù)傳輸協(xié)議可知,在數(shù)據(jù)傳輸過程中存在著空閑、啟動(dòng)、停止、讀、寫等工作狀態(tài),所以我們可以采用同步狀態(tài)機(jī)來進(jìn)行該模塊設(shè)計(jì)[7-8]。本系統(tǒng)設(shè)計(jì)的同步狀態(tài)機(jī)共分為14個(gè)工作狀態(tài),依次為空閑狀態(tài)IDLE,空閑狀態(tài)IDLE1,產(chǎn)生起始信號(hào)狀態(tài)START1,寫入從器件地址工作狀態(tài)ADD1,接收從器件應(yīng)答信號(hào)工作狀態(tài)ACK1,寫入從器件內(nèi)部字節(jié)單元地址工作狀態(tài)ADD2,接收從器應(yīng)答信號(hào)工作狀態(tài)ACK2,產(chǎn)生讀操作開始前的起始信號(hào)工作狀態(tài)START2,讀操作重新寫入從器件地址工作狀態(tài)ADD3,接收從器件應(yīng)答信號(hào)工作狀態(tài)ACK3,單字節(jié)數(shù)據(jù)讀寫工作狀態(tài)DATA,接收從器件應(yīng)答信號(hào)工作狀態(tài)ACK4,主機(jī)向從器件發(fā)送非應(yīng)答信號(hào)工作狀態(tài)HIGH,產(chǎn)生停止信號(hào)工作狀態(tài)STOP1?;?,IDLE和IDLE1工作狀態(tài)主要用于檢測(cè)主機(jī)發(fā)送過來的下降沿START信號(hào),如果檢測(cè)到,才進(jìn)入工作狀態(tài)START1,否則,一直循環(huán)檢測(cè)等待。主機(jī)向從機(jī)寫入一個(gè)字節(jié)數(shù)據(jù)需要經(jīng)過以下工作狀態(tài)IIDLE,IDLE1,START1,ADD1,ACK1,ADD2,ACK2,DATA,ACK4,STOP1。主機(jī)從從器件讀取一個(gè)字節(jié)數(shù)據(jù)需要經(jīng)過以下工作狀態(tài)IDLE,IDLE1,START1,ADD1,ACK1,ADD2,ACK2,START2,ADD3,ACK3,DATA,HIGH,STOP1。利用該同步有限狀態(tài)機(jī)和Verilog HDL語言,可以快速設(shè)計(jì)和實(shí)現(xiàn)出IIC總線接口的數(shù)據(jù)傳輸控制時(shí)序邏輯功能模塊。由于本系統(tǒng)設(shè)計(jì)的IIC總線接口的時(shí)鐘信號(hào)SCL輸出頻率為100 kHz或400 kHz,所以,該狀態(tài)機(jī)的工作時(shí)鐘信號(hào)頻率要高于SCL信號(hào)頻率,再加上本工作狀態(tài)機(jī)要實(shí)時(shí)檢測(cè)SCL_POS、SCL_HIGH、SCL_NEG、SCL_LOW及START信號(hào),所以,該工作狀態(tài)機(jī)的CLK信號(hào)頻率選為FPGA的外部輸入CLK信號(hào)(25MHz)。本系統(tǒng)設(shè)計(jì)的同步有限工作狀態(tài)機(jī)所圖5所示。

      圖5 IIC總線接口的同步有限工作狀態(tài)機(jī)示意圖

      2.3.3IIC總線接口數(shù)據(jù)傳輸中的基本功能模塊設(shè)計(jì)

      (1)主機(jī)產(chǎn)生啟動(dòng)信號(hào)設(shè)計(jì)

      當(dāng)IIC接口模塊檢測(cè)到主機(jī)發(fā)送過來的有效START信號(hào)后,該模塊由空閑狀態(tài)轉(zhuǎn)入到產(chǎn)生IIC接口模塊啟動(dòng)信號(hào)狀態(tài),然后檢測(cè)SCL是否處于高電平狀態(tài),如是,則置SDA由高電平轉(zhuǎn)為低電平狀態(tài),即可產(chǎn)生該模塊的啟動(dòng)信號(hào)。該模塊的主要Verilog HDL主要設(shè)計(jì)代碼如下:

      (2)主機(jī)產(chǎn)生停止信號(hào)設(shè)計(jì)

      當(dāng)主機(jī)不需要向從機(jī)發(fā)送數(shù)據(jù)或從從機(jī)接收數(shù)據(jù)時(shí),在應(yīng)答信號(hào)產(chǎn)生后,即可轉(zhuǎn)到終止數(shù)據(jù)傳輸狀態(tài),然后檢測(cè)SCL是否處于高電平狀態(tài),如是,則置SDA由低電平轉(zhuǎn)為高電平狀態(tài),即可產(chǎn)生該模塊的停止信號(hào)。該模塊的主要Verilog HDL代碼如下:

      (3)主機(jī)發(fā)送和接收一個(gè)字節(jié)數(shù)據(jù)設(shè)計(jì)

      由于IIC是串行數(shù)據(jù)傳輸總線,主機(jī)要發(fā)送一個(gè)字節(jié)的數(shù)據(jù),必須將字節(jié)數(shù)據(jù)經(jīng)過并/串轉(zhuǎn)換,然后在時(shí)鐘線SCL的作用下將每一個(gè)BIT位發(fā)送到數(shù)據(jù)線SDA上。主機(jī)要接收一個(gè)字節(jié)的數(shù)據(jù),必須將數(shù)據(jù)線SDA上每個(gè)數(shù)據(jù)位經(jīng)過串/并轉(zhuǎn)換,組合成一個(gè)字節(jié)的數(shù)據(jù),供主機(jī)進(jìn)行接收和處理。該模塊的Verilog HDL主要代碼如下(以寫操作為例):

      (4)主機(jī)接收從機(jī)應(yīng)答信號(hào)和主機(jī)向從機(jī)產(chǎn)生非應(yīng)答號(hào)設(shè)計(jì)

      當(dāng)主機(jī)向從機(jī)寫入器件地址、字節(jié)地址及數(shù)據(jù)時(shí),從機(jī)會(huì)產(chǎn)生相應(yīng)的應(yīng)答信號(hào)(拉低SDA信號(hào)),主機(jī)檢測(cè)到此信號(hào)后,才能下一數(shù)據(jù)傳輸過程。當(dāng)主機(jī)不需要再向從機(jī)接收數(shù)據(jù)時(shí),主機(jī)此時(shí)可以向從機(jī)發(fā)送非應(yīng)答號(hào)(拉高SDA信號(hào)),然后產(chǎn)生停止信號(hào),從而結(jié)束整個(gè)數(shù)據(jù)傳輸過程。主機(jī)接收從機(jī)應(yīng)答信號(hào)的主要Verilog HDL代碼如下:

      通過上述基本功能模塊的組合,就可以實(shí)現(xiàn)一次完整的IIC總線數(shù)據(jù)傳輸過程中的單字節(jié)寫、單字節(jié)讀操作模式,通過設(shè)計(jì)主機(jī)讀寫從機(jī)數(shù)據(jù)控制電路模塊,實(shí)例化IIC總線接口讀寫基本操作模塊,從而間接實(shí)現(xiàn)多字節(jié)連續(xù)寫、多字節(jié)連續(xù)讀操作模式。

      3 仿真驗(yàn)證

      本接口設(shè)計(jì)在Quartus II 12.1開發(fā)環(huán)境下利用數(shù)據(jù)邏輯分儀Signal TAP II對(duì)IIC總線接口時(shí)序進(jìn)行了實(shí)時(shí)仿真,其中,F(xiàn)PGA作為主控制器件,從器件選用EEPROM器件(AT24C08),為驗(yàn)證I2C總線接口模塊的讀寫操作功能是否正常,需要設(shè)計(jì)信號(hào)產(chǎn)生模塊,將其與設(shè)計(jì)好的IIC總線接口模塊相連接[9-10]。圖6是利用Quartus II產(chǎn)生的系統(tǒng)硬件仿真驗(yàn)證連接圖。

      圖6 系統(tǒng)硬件仿真驗(yàn)證連接圖

      3.1主機(jī)向從機(jī)器件內(nèi)某地址單元寫入一字節(jié)數(shù)據(jù)仿真驗(yàn)證

      該功能模塊的仿真驗(yàn)證如圖7所示。從圖7可知,主機(jī)是向從機(jī)(地址碼為50H)器件內(nèi)的04地址單元寫入0X37H,一次完整的寫操作后,從機(jī)產(chǎn)生了一個(gè)有效的下降沿Done信號(hào),同時(shí)從機(jī)產(chǎn)生了3次應(yīng)答信號(hào)(SDA為低),產(chǎn)生應(yīng)答信號(hào)的時(shí)刻分別為主機(jī)向從機(jī)寫入器件地址后、寫入從機(jī)器件字節(jié)地址后、寫入字節(jié)數(shù)據(jù)后。整個(gè)數(shù)據(jù)寫操作結(jié)束后,由主機(jī)產(chǎn)生了一個(gè)停止信號(hào)(SDA由低電平變?yōu)楦唠娖剑?。?biāo)注①處SDA變高是由于從機(jī)向主機(jī)產(chǎn)生應(yīng)答信號(hào)ACK(拉低SDA)后,釋放了數(shù)據(jù)線SDA,所以,數(shù)據(jù)線SDA會(huì)變高,此后,主機(jī)向從機(jī)產(chǎn)生停止信號(hào),所以,SDA又從低電平變?yōu)楦唠娖綘顟B(tài)。上述實(shí)時(shí)仿真波形圖中,時(shí)鐘線SCL一個(gè)周期中的各個(gè)狀態(tài)信號(hào) SCL_POS、SCL_HIGH、SCL_NEG、SCL_LOW均為正常產(chǎn)生,符合預(yù)期設(shè)計(jì)要求。

      圖7 主機(jī)向從機(jī)內(nèi)某地址單元發(fā)送一個(gè)字節(jié)數(shù)據(jù)仿真波形圖

      3.2主機(jī)從從機(jī)器件內(nèi)某地址單元讀取字節(jié)數(shù)據(jù)仿真驗(yàn)證

      該功能模塊的仿真驗(yàn)證如圖8所示。從上圖8可知,主機(jī)是讀取圖7中從機(jī)(地址碼為50H)器件內(nèi)的04地址單元寫入的數(shù)據(jù),讀取數(shù)據(jù)為0X37H,主機(jī)和從機(jī)完成一次完整的讀操作后,產(chǎn)生了一個(gè)有效的下降沿Done信號(hào),同時(shí)從機(jī)產(chǎn)生了3次應(yīng)答信號(hào)(SDA為低),產(chǎn)生應(yīng)答信號(hào)的時(shí)刻分別為主機(jī)向從機(jī)寫入器件地址后、寫入從機(jī)器件字節(jié)地址后、再入寫入從機(jī)器件地址后。整個(gè)數(shù)據(jù)讀操作結(jié)束后,由主機(jī)產(chǎn)生了一個(gè)停止信號(hào)(SDA由低電平變?yōu)楦唠娖剑?。同時(shí),主機(jī)讀取從機(jī)數(shù)據(jù)后,向從機(jī)產(chǎn)生了非應(yīng)答信號(hào)(SDA為高電平),而后,向從機(jī)產(chǎn)生停止信號(hào)。上述實(shí)時(shí)仿真波形圖中,時(shí)鐘線SCL一個(gè)周期中的各個(gè)狀 態(tài) 信 號(hào)SCL_POS、SCL_HIGH、SCL_NEG、SCL_LOW均為正常產(chǎn)生,符合預(yù)期設(shè)計(jì)要求。

      圖8 主機(jī)從從機(jī)內(nèi)某地址單元讀取單字節(jié)數(shù)據(jù)仿真波形圖

      3.3主機(jī)向從機(jī)連續(xù)地址單元寫入數(shù)據(jù),并對(duì)該連續(xù)地址單元進(jìn)行讀取仿真驗(yàn)證

      該功能模塊的測(cè)試驗(yàn)證方法為主機(jī)向從機(jī)連續(xù)地址單元(0X01-0X0F)依次寫入十進(jìn)制字節(jié)數(shù)據(jù)(1,2,3,…,15),然后主機(jī)再把寫入的數(shù)據(jù)連續(xù)讀取出來。數(shù)據(jù)仿真驗(yàn)波形圖如圖9所示。

      圖9 主機(jī)讀取從機(jī)連續(xù)地址單元數(shù)據(jù)仿真波形圖

      從圖9可知,主機(jī)從從機(jī)器件內(nèi)連續(xù)地址單元Inter_Addr(1,2,3,…,15),讀出的十進(jìn)制數(shù)據(jù)Data_Rece依次為1,2,3,…,15,每一次讀操作都產(chǎn)生了一個(gè)有效的下降沿Done信號(hào),同時(shí),從機(jī)產(chǎn)生應(yīng)答信號(hào)的次數(shù)均為為3次,主機(jī)每一次讀操作都產(chǎn)生了一個(gè)非應(yīng)答信號(hào)(SDA為高電平)。通過以上分析,說明主機(jī)能夠正確對(duì)從機(jī)連續(xù)地址單元進(jìn)行讀寫操作。

      4 結(jié)論

      本文根據(jù)IIC總線的工作原理、數(shù)據(jù)傳輸時(shí)序,利用同步有限狀態(tài)機(jī)設(shè)計(jì)方法和硬件描述語言Verilog HDL,設(shè)計(jì)了一種基于FPGA的可配置IIC總線接口,并利用數(shù)據(jù)邏輯分析儀Signal Tap II對(duì)設(shè)計(jì)模塊進(jìn)行了仿真驗(yàn)證。從實(shí)時(shí)在線仿真結(jié)果可以看出,整個(gè)時(shí)序完全符合IIC總線協(xié)議規(guī)范要求,并且所編寫的IIC接口模塊Verilog HDL代碼是可綜合的,可下載到具體的FPGA器件中。筆者已成功下載到ALTERA公司的EP4CE30F23C6器件上,并使該器件具備IIC總線主控制器接口功能,經(jīng)測(cè)試驗(yàn)證,主機(jī)能夠?qū)钠骷M(jìn)行正確讀寫操作。該IIC總線接口設(shè)計(jì)已成功應(yīng)用于工程實(shí)踐中,運(yùn)行穩(wěn)定、可靠、工作時(shí)序正常。與傳統(tǒng)設(shè)計(jì)方案相比,該方案具有實(shí)用性強(qiáng)、可重用度高,可配置性強(qiáng),控制靈活等優(yōu)點(diǎn),具有較好的實(shí)際應(yīng)用價(jià)值。

      [1] 何立民.I2C總線應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2004.

      [2] 夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程[M].北京:北京航空航天大學(xué)出版社,2005.

      [3] 趙輝,董德存.I2C總線技術(shù)及其應(yīng)用實(shí)例[J].微型電腦應(yīng)用,2005,21(4):61-63.

      [4] 胡文靜,李外云,劉錦高.I2C總線接口的FPGA實(shí)現(xiàn)研究[J].計(jì)算機(jī)工程與應(yīng)用,2005(12):116-118.

      [5] 呂炎軍,王澤勇.基于FPGA的I2C總線接口設(shè)計(jì)[J].自動(dòng)化技術(shù)與應(yīng)用,2006,25(4):37-39.

      [6] 袁江南.一種I2C主控器IP核的設(shè)計(jì)與FPGA實(shí)現(xiàn)[J].廈門理工學(xué)院學(xué)報(bào),2006,14(2):40-43.

      [7] 陳穗光,葛建華.I2C總線接口協(xié)議設(shè)計(jì)及FPGA的實(shí)現(xiàn)[J].山西電子技術(shù),2006(6).

      [8] 李紅剛,楊林楠,張麗蓮,等.基于FPGA的高速多通道數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2006,14(10):1407-1409.

      [9] 陳科,唐寧,雷求勝,等.一種狀態(tài)優(yōu)化的I~2C總線主控制器的FPGA設(shè)計(jì)[J].電子器件,2010,33(6):738-741.

      [10]孟慶浩,邊旭東,扈佳林,等.基于FPGA的多路無串?dāng)_超聲測(cè)距系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].傳感技術(shù)學(xué)報(bào),2013,26(4):582-588.

      張素萍(1979-),女,漢族,河南周口人,天津中德職業(yè)技術(shù)學(xué)院,講師,碩士,主要研究方向?yàn)樽詣?dòng)化控制與集成電路設(shè)計(jì),zhshup2009@163.com;

      高照陽(1975-),男,漢族,河南鄭州人,上海交通大學(xué)上海市復(fù)雜薄板結(jié)構(gòu)數(shù)字化制造重點(diǎn)實(shí)驗(yàn)室,博士研究生,主要研究方向?yàn)榫芘c微細(xì)制造,機(jī)械電子,gaozhaoyang2009@sjtu.edu.cn。

      Development of Configurable IIC Bus Interface Based on FPGA

      ZHANG Suping1,GAO Zhaoyang2*,ZHANG Jianfen3
      (1.Tianjin Sino-German Vocational Technical College Electrical Engineering&Energy College,Tianjin 300350,China;2.ShanghaiKey Laboratory of Digital Manufacture forThin-Walled Structures,Shanghai Jiao Tong Uniυersity,Shanghai 200240,C hina;3.Jinan Uniυersity ZhuhaiCampus,ZhuhaiGuangdong 519070,China)

      Aimed at lower reusability of FPGA design in traditional bus interface of IIC,one configurable FPGA-based bus interface design of IIC was proposed.Data transmission sequence of IIC bus was designed in modules with finite state synchronous circuit design method and hardware description language of Verilog HDL.The designedmoduleswere simulated,tested and verified by using the data logic analyzer of Signal Tap II.The experimental results show that this interface could reliably achieve the data transmission of 100 kbyte/s and 400 kbyte/swith the slaves using IIC bus interface and ithas the advantages ofhigher reusability,strong configurability,flexible control.Moreover,the designed interfacewas successfully applied to engineering practice.

      FPGA;IIC bus interface;Verilog HDL;configurable;simulation verification

      TP274

      A

      1005-9490(2016)04-0866-08

      2015-07-31修改日期:2015-09-02

      EEACC:6210L10.3969/j.issn.1005-9490.2016.04.023

      猜你喜歡
      高電平字節(jié)總線
      一種基于FPGA的PWM防錯(cuò)輸出控制電路
      No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
      TS-03C全固態(tài)PDM中波發(fā)射機(jī)開關(guān)機(jī)控制電路原理及故障分析
      科技傳播(2019年15期)2019-08-22 08:07:44
      No.10 “字節(jié)跳動(dòng)手機(jī)”要來了?
      基于PCI Express總線的xHC與FPGA的直接通信
      機(jī)載飛控1553B總線轉(zhuǎn)以太網(wǎng)總線設(shè)計(jì)
      簡談MC7字節(jié)碼
      DM 50KW中波廣播發(fā)射機(jī)欠推動(dòng)故障分析
      PDM 1kW中波廣播發(fā)射機(jī)保護(hù)電路分析
      多通道ARINC429總線檢查儀
      灵山县| 长春市| 夹江县| 大城县| 长葛市| 隆子县| 昌平区| 兴国县| 美姑县| 阜新市| 文成县| 永州市| 远安县| 仪陇县| 富顺县| 新野县| 汝南县| 阳信县| 福鼎市| 鹰潭市| 寿阳县| 五峰| 龙南县| 合作市| 临沧市| 江安县| 洞口县| 利辛县| 贵溪市| 宜宾市| 饶河县| 南涧| 中江县| 嘉禾县| 长子县| 宁强县| 宁海县| 库尔勒市| 渑池县| 孟村| 寻乌县|