基於VHDL/CPLD的I2C串行總線控制器設計及實現

2020-11-29 電子產品世界

串行總線和並行總線相比具有結構簡單、佔用引腳少、成本低的優點。常見的串行總線有USB、IEEE1394、I2C等,其中I2C總線具有使用簡單的特點,在單片機、串行E2PROM、LCD等器件中具有廣泛的應用。

  I2C(Inter IC BUS)是Philips公司開發的用於晶片之間連接的總線。 I2C總線用兩根信號線進行數據傳輸,一根為串行數據線(SDA),另一根為串行時鐘線(SCL)。I2C總線允許若干兼容器件(如存儲器、A/D轉換器、D/A轉換器、LCD驅動器等)共享總線。I2C總線理論上可以允許的最大設備數,是以總線上所有器件的總電容(其中包括連線本身的電容和連接端的引出電容)不超過400pF為限,總線上所有器件依靠SDA線發送的地址信號尋址,不需要片選線。任何時刻總線只能由一個主器件控制,各從器件在總線空閒時啟動數據傳輸。I2C總線數據傳輸的標準模式速率為100kbps,快速模式速率為400kbps,高速模式速率為3.4Mbps。

本文引用地址:http://www.eepw.com.cn/article/163062.htm

  用VHDL和CPLD設計數字系統具有傳統方法無可比擬的優越性,它已經成為大規模集成電路設計最為有效的一種手段。為簡單起見,本文採用VHDL設計標準模式的I2C總線控制電路。

  1 I2C總線上的數據傳輸

  I2C總線包含時鐘線SCL和數據線SDA兩條連線,SCL由主機產生。I2C總線的數據傳輸流程如圖1所示。其傳輸過程為:首先主機產生起始位,然後傳送第一個字節。8位數據中首先傳送的是數據的最高位MSB,最低位LSB為讀寫指示位,1表示主機讀,0表示主機寫,高7位地址可使主機尋址128個從器件。

  從機收到第一字節數據後發響應位,主機收到響應位後接著發送第二個字節的數據。數據發送完畢後產生結束位,數據傳送結束。數據傳送時,只有時鐘SCL為低電平時SDA才允許切換,SCL為高電平時SDA必須穩定,此時SDA的電平就是總線轉送的數值。

在SCL為高電平時,SDA線由高到低切換表示起始位,SDA線由低到高切換表示停止位。起始位和停止位由主機產生,在起始位產生後總線處於忙狀態,停止位出現並經過一定時間後總線進入空閒狀態。發送器每發送一個字節後,接收器必須產生一個響應位。響應位的驅動時鐘由主機產生則接收器將SDA線拉低產生響應位。如果主機是接收器,則接收最後一個字節時,響應位為1,通知從機結束髮送,否則響應位為0。當從機不能響應從機地址(例如它正在執行一些實時函數,不能接收或發送)時,或響應了從機地址但在傳輸一段時間後不能接收更多的數據字節,此時從機可以通過響應位為1通知主機終止當前的傳輸,於是主機產生一個停止位終止傳輸,或者產生重複開始位開始新的傳輸。

  SDA線上傳送的數據必須為8位,每次傳送可以發送的字節數量不受限制。如果從機要完成一些其他功能(例如執行一個內部中斷服務程序)才能接收或發送下一個數據字節,則從機可以使SCL維持低電位,迫使主機進入等待狀態。從機準備好接收或發送下一個數據字節時,釋放SCL,數據傳輸繼續。

  SDA和SCL都是雙向線路,使用時通過上拉電阻連接到電源。總線空閒時這兩條線路都是高電平,連接到總線的器件的輸出級必須是漏極開路或集電極開路,這樣總線才能執行「線與」的功能。


相關焦點

  • Linux下I2C總線EEPROM驅動程序設計方法
    i2c-core將總線驅動程序體系一分為二,相互獨立。可以針對某個I2C總線設備來設計一個I2C設備驅動程序,而不需要關心系統的I2C總線控制器是何種類型,所以提高了其可移植性。另一方面,在設計I2C總線驅動時也可以不要考慮其將用來支持何種設備。因為i2c-core提供了統一的接口,所以也為設計這兩類驅動提供了方便。
  • 實戰經驗吐血推薦:怎樣在Linux環境下輕鬆實現基於I2C總線的EEPROM...
    公司開發的2線式串行總線,用於連接微控制器及其外圍設備。在主從通信中,可有多個I2C總線器件同時接到I2C總線上,通過地址來識別通信對象。筆者在開發基於MPC8250的嵌入式Linux系統的過程中發現I2C總線在嵌入式系統中應用廣泛,I2C總線控制器的類型比較多,對系統提供的操作接口差別也很大。與I2C總線相連的從設備主要有微控制器、EEPROM、實時時鐘、A/D轉換器等。
  • 飛利浦推出業界首款快速模式I2C總線控制器
    控制器擴展了計算、通信和聯網應用中I2C總線的用途皇家飛利浦電子集團推出全球首款在400 kHz頻率和2.5-3.3V低壓下運行的並行到串行接口I2C總線控制器。PCA9564優化了多重I2C設備或SMus組件與微處理器、微控制器、數位訊號處理器(DSP)之間的連接。
  • 基於Linux系統的多種串行總線統一接口的實現
    摘要:基於Linux字符設備操作接口和各類串行總線的共性,按照分層的思想,抽象出各種總線的關鍵詞:統一接口;嵌入式系統:Linux;設備驅動;串行總線0 引言在Linux內核中單獨實現TTY、I2C、SPI、ISA、USB等多種總線驅動時,每一種總線的實現都有各自的特點,如參數設置不同,實現的結構不同等。
  • 基於單片機和CPLD的PLC背板總線協議接口晶片設計(一)
    摘要:設計了一組基於CPLD的PLC背板總線協議接口晶片,協議晶片可以區分PLC的背板總線的周期性數據和非周期性數據。詳細介紹了通過Verilog HDL語言設計狀態機、協議幀控制器、FIFO控制器的過程,25MHz下背板總線工作穩定的試驗結果驗證了協議晶片設計的可行性。  可編程邏輯控制器(PLC)主機是通過背板總線支持擴展模塊的連接, 背板總線是PLC 主機同I/O擴展模塊之間的高速數據通路,支持主機和擴展模塊之間的I/O 數據刷新。
  • 基於嵌入式WinCE的CAN總線控制器驅動設計
    基於Win CE的兩種模型是本機的設備驅動程序和流接口的驅動程序;兩種外部模型用於通用串行總線(USB)和網絡驅動器接口標準(NDIS)驅動程序。下面針對 Win CE系統下基於三星公司的ARM9內核晶片S3c2410的CAN總線控制器SJAl000,以流接口驅動程序形式進行設計。
  • 通用串行總線控制器(USB控制器)
    USB,即Universal Serial Bus的縮寫,譯成中文,就是通用串行總線,這是由Intel公司開發的通用串行總線架構;因此顧名思義,
  • 基於LIN總線的電動車窗控制器設計
    而在這種速率上採用LIN總線方式的網絡控制,正好可以滿足其要求,並且LIN總線能節省大量的線束、便於維護和實現汽車診斷功能。本文提出了一種將LIN總線運用到車窗控制系統中的設計方案,並給出系統硬體及軟體的實現方法。1 車窗控制系統的網絡結構設計 本設計主要實現4個車窗的升降功能及車窗防堵轉。
  • 嵌入式Win CE中CAN總線控制器的驅動設計與實現
    基於Win CE的兩種模型是本機的設備驅動程序和流接口的驅動程序;兩種外部模型用於通用串行總線(USB)和網絡驅動器接口標準(NDIS)驅動程序。下面針對Win CE系統下基於三星公司的ARM9內核晶片S3C2410的CAN總線控制器SJA1000,以流接口驅動程序形式進行設計。
  • 多種工業應用串行總線特性及比較
    這些總線在速度、物理接口要求和通信方法學上都有所不同。本文將對嵌入式系統設計的串行總線、驅動器和物理接口這些要求提供一個總體介紹,為選擇最優總線提供指導並給出一個比較圖表(表1)。為了說明方便起見,本文的闡述是基於微處理器的設計。 串行與並行相比   串行相比於並行的主要優點是要求的線數較少。
  • I2C總線驅動在嵌入式系統中的兩種實現
    他通過串行數據線(Serial Data Lines,SDL)及串行時鐘線(Serial ClockLine,SCL)兩線在連接到總線上的器件之間傳送信息,並根據地址識別每個器件。一個或多個微控制器以及外圍器件可以通過I2C總線接口非常方便的連接在一起構成系統。這種總線結構的連線和連接引腳少,器件間總線簡單。
  • 救活你的I2C總線故障方案出爐了!
    本文主要針對 i2c 設備,講解如何解決 i2c 設備主機與從機直接無法正常數據交互的問題,側重點是針對硬體設計不太合理、i2c 設備設計不標準導致總線故障的情況,並且通過分析現象,提出解決方案。對於在設備初始化中,沒有設置相應的寄存器或者發送命令,而導致的無法獲取想要的數據情況,不作詳細介紹。
  • 基於C167單片機和CAN總線實現數位化電梯控制系統的設計
    基於C167單片機和CAN總線實現數位化電梯控制系統的設計 李炳宇,梁正峰,趙 發表於 2020-12-04 09:55:04 1 引言 國民經濟的飛速發展
  • 基於CPLD和ISA總線的數據採集系統設計
    摘要:介紹一種基於複雜可編程邏輯器件(CPLD)的數據採集系統,並給出詳細的設計方案。計算機通過ISA總線實現與數據採集系統的指令和數據傳輸。通過VHDL編程實現CPLD對12位串行模數轉換器ADS7816的控制。最後,給出該系統設計的仿真波形和測試結果。
  • 基於VHDL的MTM總線主模塊有限狀態機設計
    摘要:為了能夠更簡潔嚴謹地描述MTM總線的主模塊有限狀態機的狀態轉換,同時減少FPGA晶片功耗,提高系統穩定性,文中在分析MTM總線結構和主模塊有限狀態機模型的基礎上,基於VHDL語言採用「單進程」式對該有限狀態機進行了設計,並在QuartusⅡ開發軟體中實現了對語言代碼的編譯及程序的時序仿真和功能仿真
  • 基於USB總線和89C51單片機的數據採集系統設計
    摘要:本文介紹了基於USB總線的數據採集設備的開發方法,包括硬體設計、firmware(固件)設計、基於windows驅動程序模型(WDM)的設備驅動程序設計以及應用軟體的設計,同時也介紹了基於
  • 解決通用串行總線(USB)控制器有感嘆號
    通用串行總線控制器:由於其配置信息(註冊表中的)不完整或已損壞,Windows 無法啟動這個硬體設備經過查詢,解決方法如下:方法:打開註冊表編輯器(開始--》運行--》regedit),依次展開HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\在這下面有很多用「{}」括起來的項,一個一個的點開,看右面窗口有沒有「通用串行總線控制器(Universal Serial Bus controllers)」
  • 基於RS485總線的溫溼度監控系統設計
    主控PC微機通過RS-232C串口向總線通訊協議轉換控制器發送命令幀信息,總線控制器接口電路負責RS-232C電平和RS-485電平之間的相互轉換,轉發此通訊幀向RS-485總線網絡廣播。同樣,下位現場單元單片機向主控微機發送信息幀時,由總線通訊協議轉換控制器轉換為RS-232C通訊協議電平向主控微機轉發。在設計實驗中,監控系統在串行通訊波特率為9600bit/s,無奇偶校驗位,8位數據位,1位停止位的設置下通訊正常,沒有發生丟幀或錯幀的現象。  2.3 下位機數據採集與控制單元  下位機是一個以AT89S52單片機為核心的數據採集與控制單元。
  • 串行ATA總線應用技術
    串行ATA (SATA-Serial ATA)是Intel代表的存儲設備開發商開發的ATA-7串行版本SATA 1.0。目的是把基於ATA的存儲能夠更普遍應用於桌面、移動存儲設備、低端伺服器和網絡存儲領域[1]。2004年4月,IDF再次對標準1.0版本的帶寬和物理層連接器進行較大改進,並發布了增強的標準SATA I,以兼容SAS物理層,滿足數據中心存儲需要[1]。
  • 基於C8051F040單片機的CAN總線和RS-232串口通信設計
    為了實現對CAN總線和RS-232串口雙向通信需求,提出了一種基於C8051F040單片機的數據通信方案,並完成系統設計。分析了CAN總線和RS-232串口的通信特點,介紹了單片機硬體,並對軟體的設計思路與流程做了詳盡描述,完成功能檢測。實驗結果表明,該設計達到了要求。