新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于Verilog HDL的I2C總線分析器

基于Verilog HDL的I2C總線分析器

作者: 時(shí)間:2011-11-24 來源:網(wǎng)絡(luò) 收藏

  1 引言

  在醫(yī)療保健、臨床醫(yī)學(xué)和醫(yī)療救護(hù)中,血氧、心電、血壓、呼吸、腦電波等生理信號(hào)都是非常重要的指標(biāo)。針對(duì)臨床應(yīng)用,已經(jīng)報(bào)道了將血氧、血壓等檢測(cè)應(yīng)用于咽喉、食管等體內(nèi)循環(huán) [1],提高了準(zhǔn)確性和及時(shí)性[2],這種方法正處在研究階段,I 2C總線分析儀可以擴(kuò)展醫(yī)療監(jiān)測(cè)儀實(shí)現(xiàn)包括體外循環(huán)的多種方法同時(shí)檢測(cè)和比較?,F(xiàn)在醫(yī)療儀器短缺,一臺(tái)帶 I 2C擴(kuò)展接口的監(jiān)測(cè)儀可實(shí)現(xiàn)多人同時(shí)使用,資源得到有效利用。可見,實(shí)時(shí)、準(zhǔn)確記錄各項(xiàng)人體基本體征參數(shù),同時(shí)具有便攜式特點(diǎn)的醫(yī)療監(jiān)測(cè)儀對(duì)健康監(jiān)護(hù)、檢測(cè)技術(shù)和醫(yī)學(xué)研究具有重大意義。如何擴(kuò)展醫(yī)療檢測(cè)儀的功能成為熱點(diǎn)問題。

  目前擴(kuò)展檢測(cè)儀接口的方法很多,多通道是最常用的方法,具有數(shù)據(jù)通道相對(duì)獨(dú)立,有很強(qiáng)的抗干擾能力和設(shè)計(jì)復(fù)雜度優(yōu)勢(shì),但體積較大,資源浪費(fèi)多,不適合便攜式處理。I 2C總線是一個(gè)工業(yè)標(biāo)準(zhǔn)同步串行數(shù)據(jù)通訊總線,被廣泛應(yīng)用在消費(fèi)類電子和嵌入式系統(tǒng)產(chǎn)品中 [3],例如:數(shù)據(jù)轉(zhuǎn)換器、EEPROM、傳感器等等。相比現(xiàn)今流行的并口、SPI、USB等接口,雖然 I 2C有相對(duì)較低的帶寬 [4],但功能多樣化,廣泛應(yīng)用于信號(hào)處理器的控制接口設(shè)計(jì)。而且血氧飽和度有效信號(hào)基頻在 1Hz左右,血壓、呼吸、腦電波等生理信號(hào)的基頻幾十赫茲范圍內(nèi)。多種信號(hào)同時(shí)采集完全可以實(shí)現(xiàn)。同時(shí)應(yīng)用I2C總線還有以下優(yōu)點(diǎn):一是各部分電路之間的連接變得非常簡單,省去控制系統(tǒng)中的許多輸入/輸出接口,可靠性好;二是由于 I 2C總線具有多種工作模式,利用軟件可以十分方便進(jìn)行調(diào)整和測(cè)試,增加功能;三是 I 2C總線具有良好的擴(kuò)展性,支持多主機(jī)通訊 [5]。本文描述了采用 語言設(shè)計(jì)一種 I 2C總線分析器的硬件電路結(jié)構(gòu)和它們主要特點(diǎn),采用此設(shè)計(jì)可以實(shí)現(xiàn)多種傳感器信號(hào)采集,方便實(shí)現(xiàn)與微處理器的接口設(shè)計(jì),可重用性好,可以作為 IP核使用。

  2 I2C總線標(biāo)準(zhǔn)模式

  I2C總線是一種僅用到兩線的工業(yè)標(biāo)準(zhǔn)同步串行數(shù)據(jù)通訊總線。兩個(gè)總線:串行數(shù)據(jù)(SDA)線和串行時(shí)(SCL)線,對(duì)于嵌入式系統(tǒng)有限的 IO接口資源是非常重要的。I 2C總線支持從機(jī)、主機(jī)和多主機(jī)。每個(gè)I 2C器件有唯一的識(shí)別地址(7位或 10位的地址)。串行的 8位雙向數(shù)據(jù)傳輸傳輸有三種模式:標(biāo)準(zhǔn)模式(100kbits/s)、快模式(400kbits/s)、高速模式(3.4Mbits/s)。

  I2C總線數(shù)據(jù)傳輸以字節(jié)為單位,按照高位在前順序傳輸。數(shù)據(jù)傳輸首先以 I 2C主機(jī)發(fā)出開始條件和從機(jī)地址,讀寫控制字。從機(jī)必須對(duì)地址完成識(shí)別,之后傳輸由器件規(guī)則和協(xié)議定義的一系列讀或?qū)懙臄?shù)據(jù)。字節(jié)傳輸要有響應(yīng)信號(hào),確認(rèn)后再發(fā)下一個(gè)字節(jié),當(dāng)通訊結(jié)束后,主機(jī)產(chǎn)生停止?fàn)顟B(tài)。

  接收端采用SCL信號(hào)同步采樣讀取數(shù)據(jù)信息。I 2C協(xié)議規(guī)定數(shù)據(jù)變化只發(fā)生在 SCL信號(hào)為低電平期間,高電平期間要保持?jǐn)?shù)據(jù)信號(hào)的穩(wěn)定性。SCL信號(hào)線高電平期間,SDA信號(hào)由高電平變?yōu)榈碗娖绞情_始條件,反之為停止條件。

  3 硬件設(shè)計(jì)

  為醫(yī)療檢測(cè)儀或其它嵌入式系統(tǒng)提供很好的外設(shè)擴(kuò)展。在不同工作模式下提供系統(tǒng)更多的功能。

  在被動(dòng)模式下,分析器探測(cè)總線上數(shù)據(jù),傳輸數(shù)據(jù)或做算法處理。這里將采集到的數(shù)據(jù)直接通過 LCD顯示,不占用微處理器資源;在主機(jī)模式下,分析器掌控總線,完成對(duì)外設(shè)的操作,如配置傳感器,采集傳感器信號(hào);在從機(jī)模式下,分析器作為 I 2C器件使用,在被總線上主機(jī)識(shí)別后,接收或發(fā)送用戶信息。

  圖 1顯示了 I 2C總線分析器的硬件框圖。采用 語言描述,主要實(shí)現(xiàn)工作模式識(shí)別和I2C總線控制邏輯。采用層次化設(shè)計(jì)方法。硬件驗(yàn)證在 FPGA上實(shí)現(xiàn)。


  3.1 控制信息模塊和 I 2C狀態(tài)機(jī)

  這是 I 2C總線分析器和外部控制系統(tǒng)交換控制邏輯和狀態(tài)信息的接口,決定著整個(gè)系統(tǒng)的功能。 I2C控制信息模塊和狀態(tài)模塊產(chǎn)生總線上開始和結(jié)束狀態(tài)請(qǐng)求,檢測(cè)和報(bào)告總線信息(起始、停止、總線響應(yīng)),產(chǎn)生 SCL脈沖信號(hào),傳輸數(shù)據(jù)到SDA,控制兩個(gè)FIFO(讀和寫存儲(chǔ)器)。在模塊中定義兩個(gè)寄存器(系統(tǒng)控制寄存器 SYS_CONTROL和系統(tǒng)狀態(tài)寄存器SYS_STAT)。

  在控制寄存器中,最高位是初始化標(biāo)識(shí)位,使系統(tǒng)進(jìn)入等待狀態(tài);第 7位用于控制 I 2C總線產(chǎn)生起始狀態(tài);第 6位用于控制總線產(chǎn)生停止?fàn)顟B(tài);第 5位控制讀、寫 FIFO存儲(chǔ)器,低電平定義使用FIFO讀存儲(chǔ)器,高電平定義使用 FIFO寫存儲(chǔ)器;第 3、4位用于總線工作模式選擇;第 2位用于主、從模式選擇;最后一位作為總線傳輸響應(yīng)。

  狀態(tài)寄存器反映工作狀態(tài)。功能描述如下:最高位選擇主、從機(jī)模式,第 7位標(biāo)識(shí)總線狀態(tài),第 6、3位標(biāo)識(shí) FIFO存儲(chǔ)器狀態(tài),第 5位標(biāo)識(shí)數(shù)據(jù)通訊方向,第 4位為中斷位,最后兩位標(biāo)識(shí)工作模式檢測(cè)模式,共 8位。

  3.2狀態(tài)的產(chǎn)生和探測(cè)模塊

  根據(jù)協(xié)議,主機(jī)在 SCL高電平期間,在 SDA線上產(chǎn)生由 0到 1或由 1到 0的變化,前者代表開始條件,后者代表了停止條件。設(shè)計(jì)基于分頻器完成,由控制信息模塊可以產(chǎn)生所需 SCL信號(hào),由 SCL信號(hào)倍頻信號(hào)控制在 SCL信號(hào)高電平時(shí)產(chǎn)生 SDA信號(hào)。

  在從機(jī)狀態(tài)下,因?yàn)槠鹗?、停止條件是由 SDA在 SCL高電平期間改變來產(chǎn)生,所以設(shè)計(jì)中考慮用 SCL頻率的 30、25或 16倍頻來探測(cè)(高速模式下 56MHz可以由 PLL產(chǎn)生)。考慮在不同模式下采用不同倍頻系數(shù),雖然增加了設(shè)計(jì)復(fù)雜度和硬件的消耗,但從機(jī)能更精確地探測(cè)到起始和停止條件,提高系統(tǒng)性能。

  3.3信息收集模塊

  系統(tǒng)作為從機(jī),用系統(tǒng)時(shí)鐘檢測(cè) SCL信號(hào),確定主機(jī)的工作模式,并反映到狀態(tài)寄存器。總線分析器由狀態(tài)位產(chǎn)生相應(yīng)采樣時(shí)鐘,在起始條件后采樣主機(jī)發(fā)送的 7位從機(jī)地址、數(shù)據(jù)方向位(R/W)以及響應(yīng)信息。

  3.4器件地址模塊

  根據(jù)協(xié)議,每個(gè) I2C器件都有獨(dú)立地址。本設(shè)計(jì)有自定義 7位地址。如果信息收集模塊中采樣到地址與本地址一致,則作為從機(jī)操作。

  3.5 FIFO讀、寫存儲(chǔ)器

  本設(shè)計(jì)中集成了兩個(gè) 16×8的 FIFO,分別作為讀、寫存儲(chǔ)器完成外部系統(tǒng)和 I2C總線數(shù)據(jù)傳輸。通過狀態(tài)標(biāo)志來控制產(chǎn)生中斷,完成握手協(xié)議。如當(dāng)接收 FIFO(讀存儲(chǔ)器)寫滿時(shí),而外部系統(tǒng)端沒有及時(shí)讀走數(shù)據(jù),如果繼續(xù)從 I2C總線讀取數(shù)據(jù),就會(huì)丟失數(shù)據(jù)。通過 FULL標(biāo)志,控制 I2C總線不產(chǎn)生響應(yīng),使之處于等待狀態(tài),直到系統(tǒng)讀走數(shù)據(jù)。 FIFO硬件設(shè)計(jì)通過調(diào)用可編程器件內(nèi)部存儲(chǔ)器單元實(shí)現(xiàn)。

  3.7 主系統(tǒng)狀態(tài)機(jī)

  這是 的核心單元,需要完成在被動(dòng)模式、主機(jī)模式和從機(jī)模式下狀態(tài)轉(zhuǎn)換和控制,根據(jù)控制寄存器中控制字,采用有限狀態(tài)機(jī)嵌套設(shè)計(jì)完成。狀態(tài)機(jī)編碼采用獨(dú)熱編碼,有利于提高傳輸速度并節(jié)省面積。


  狀態(tài)轉(zhuǎn)移如圖 2所示,整個(gè)過程受控制字和狀態(tài)寄存器調(diào)節(jié)。圖中主要描述了作為主機(jī)模式下狀態(tài)變換,從機(jī)模式下,在準(zhǔn)備階段需要加上 I2C總線識(shí)別、器件地址識(shí)別,其它過程與主機(jī)相似,這里不詳細(xì)描述。

  下面以控制 VGA視頻采集芯片 TMS8083為例說明:通過寫 0x80h到控制寄存器來初始化系統(tǒng);接著寫入 0x92h作準(zhǔn)備工作,進(jìn)入主機(jī)狀態(tài)、采用標(biāo)準(zhǔn)模式傳輸數(shù)據(jù)、對(duì)總線進(jìn)行寫數(shù)據(jù)、數(shù)據(jù)傳輸響應(yīng)位:0;系統(tǒng)將要發(fā)送到總線的數(shù)據(jù)先寫入 FIFO寫存儲(chǔ)器。 VGA采集系統(tǒng)采用 1024×768 at 60Hz → fpix=65.0MHz,N=1344模式,芯片地址和狀態(tài)控制寄存器配置如下: 0x80h(器件地址和寫狀態(tài)標(biāo)識(shí))、0x00h(子地址)、0x40h、0x05h、0xeah、0xffh、0x90h、0xe1h、0x00h、0x03h、0x01h;將以上數(shù)據(jù)寫入 FIFO后,向控制寄存器寫入 0xd2h實(shí)現(xiàn)總線上起始條件;隨后進(jìn)入數(shù)據(jù)的傳輸階段;數(shù)據(jù)傳輸完成,寫 0xb2h到控制寄存器在總線上產(chǎn)生停止條件。

  另外,采用移位寄存器完成數(shù)據(jù)接收和發(fā)送模塊設(shè)計(jì),最后,由頂層完成各模塊時(shí)序控制,重點(diǎn)在于時(shí)鐘信號(hào)管理,以達(dá)到同步目的。

  4 驗(yàn)證

  采用 語言完成設(shè)計(jì)輸入,用仿真工具在硬件編程前驗(yàn)證設(shè)計(jì),綜合下載編程后用邏輯分析儀檢驗(yàn)硬件功能。QuartusII工具提供了完成設(shè)計(jì)開發(fā)平臺(tái)

  4.1

  仿真 I2C總線分析器主要有主機(jī)寫操作、讀操作和作為從機(jī)寫操作、讀操作功能。采用 Verilog HDL語言建立測(cè)試平臺(tái),聯(lián)合 ModelSim完成功能和時(shí)序驗(yàn)證。


  圖 3波形驗(yàn)證了主機(jī)向從機(jī)發(fā)送地址和寫數(shù)據(jù)的過程:發(fā)送 7位地址 0x40h和寫控制字0,即0x80h、8位數(shù)據(jù) 0xa8h。在 I 2C總線上,首先產(chǎn)生起始條件,接著發(fā)送從機(jī)地址和寫控制信號(hào),采樣響應(yīng)信號(hào)后再發(fā)送數(shù)據(jù),響應(yīng)后產(chǎn)生停止條件。由下圖的波形分析,主機(jī)能正確的發(fā)送地址和數(shù)據(jù),應(yīng)對(duì)從機(jī)響應(yīng)。

  下面測(cè)試作為從機(jī)接收數(shù)據(jù),檢測(cè)I 2C總線信息,探測(cè)起始條件,接收從機(jī)地址和R/W,地址不同無響應(yīng),地址相同產(chǎn)生響應(yīng)信號(hào),并開始接收數(shù)據(jù)。I 2C總線分析器的地址定義為0x50h。仿真波形如圖 4所示。由上圖的波形說明設(shè)計(jì)能夠很好完成作為從機(jī)的功能。


  4.2 硬件驗(yàn)證

  采用 Altera Cyclone器件 EP1C12驗(yàn)證硬件。通過下載編程,調(diào)用 SignalTapII Logic Analyzer工具,實(shí)時(shí)觀察設(shè)計(jì)的內(nèi)部信號(hào)波形。

  圖 5顯示了由邏輯分析儀得到的結(jié)果。I 2C總線分析器作為主機(jī)很明顯能夠驅(qū)動(dòng)總線,向從機(jī)發(fā)送從機(jī)地址、命令和數(shù)據(jù),符合對(duì) TMS8083應(yīng)用中傳輸數(shù)據(jù)描述,能進(jìn)行正確通訊。

  5 總結(jié)

  本文作者創(chuàng)新點(diǎn):提出了一種新的應(yīng)用于醫(yī)療監(jiān)護(hù)儀擴(kuò)展接口的 I 2C總線分析器,具有低功耗、便攜式特點(diǎn)。能夠很好地連接微控制器及其外圍設(shè)備,滿足具有可擴(kuò)展功能的需求,適合于開發(fā)便攜式設(shè)備。在開發(fā)具有可擴(kuò)展功能的便攜醫(yī)療監(jiān)護(hù)儀嵌入式項(xiàng)目中僅需要設(shè)計(jì)相應(yīng)系統(tǒng)軟件庫,即可將 I 2C總線接口擴(kuò)展到桌面系統(tǒng)應(yīng)用中。I 2C總線在少的硬件資源消耗下將為項(xiàng)目帶來更多的拓展空間。同時(shí)經(jīng)過綜合后僅占用 EP1C12器件的6%邏輯單元,可以進(jìn)一步提出了新的基于 NIOSII開發(fā)便攜醫(yī)療監(jiān)護(hù)儀思想,必將大大縮小體積,提高系統(tǒng)可靠性。


存儲(chǔ)器相關(guān)文章:存儲(chǔ)器原理


分頻器相關(guān)文章:分頻器原理


關(guān)鍵詞: Verilog HDL I2C總線分析器

評(píng)論


相關(guān)推薦

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

關(guān)閉