《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于CPLD的系統中I2C總線的設計
基于CPLD的系統中I2C總線的設計
張 昆, 邱 揚, 劉 浩
摘要: 在介紹I2C總線協議的基礎上,討論了基于CPLD的系統中I2C總線的設計技術,并結合工程實例設計了I2C總線IP核,給出了部分源代碼和仿真結果。
關鍵詞: CPLD I2C總線 IP核
Abstract:
Key words :

  摘  要: 在介紹I2C總線協議的基礎上,討論了基于CPLD" title="CPLD">CPLD的系統中I2C總線" title="I2C總線">I2C總線的設計技術,并結合工程實例設計了I2C總線IP核" title="IP核">IP核,給出了部分源代碼和仿真結果。

  關鍵詞: I2C總線  IP核  CPLD

 

  I2C總線是PHILIPS公司推出的新一代串行總線,其應用日漸廣泛[1~2]。目前許多單片機都帶有I2C總線接口,能方便地實現I2C總線設計;對沒有I2C總線的微控制器(MCU),可以采用兩條I/O口線進行模擬。在以單片機為MCU的系統中很容易實現I2C總線的模擬擴展,有現成的通用軟件包可以使用[2~3]。

  對有些基于CPLD的系統,要與帶有I2C總線接口的外圍器件連接,實現起來相對復雜一些。為實現系統中的I2C總線接口,可以另外引入單片機,也可以采用PCF8584或者PCA9564器件(PHILIPS公司推出的專用I2C總線擴展器)進行擴展,但這樣會增加系統成本,使系統冗余復雜。像ALTERA、XILINX等一些大公司有專用的基于CPLD器件的I2C總線IP核,但這些IP核的通用性不強,需要的外圍控制信號較多,占用系統很大的資源,因此直接采用這種IP核不可取。

  鑒于此,依照I2C總線協議的時序要求,在基于CPLD的系統中開發了自己的I2C總線IP核。對于一些帶有I2C總線接口的外圍器件較少、對I2C總線功能要求較簡單的CPLD系統,自主開發IP核顯得既經濟又方便。

1 I2C總線的協議[1]

  I2C總線僅僅依靠兩根連線就實現了完善的全雙工同步數據傳送:一根為串行數據線(SDA),一根為串行時鐘線(SCL)。該總線協議有嚴格的時序要求??偩€工作時,由時鐘控制線SCL傳送時鐘脈沖,由串行數據線SDA傳送數據。總線傳送的每幀數據均為一個字節(8 bit),但啟動I2C總線后,傳送的字節個數沒有限制,只要求每傳送一個字節后,對方回應一個應答位(Acknowledge Bit)。發送數據時首先發送數據的最高位(MSB)。

  I2C總線協議規定,啟動總線后第一個字節的高7位是從器件的尋址地址,第8位為方向位(“0”表示主器件對從器件的寫操作;“1”表示主器件對從器件的讀操作),其余的字節為操作的數據??偩€每次傳送開始時有起始信號,結束時有停止信號。在總線傳送完一個或幾個字節后,可以使SCL線的電平變低,從而使傳送暫停。

  圖1列出了I2C總線上典型信號的時序,圖2表示I2C總線上一次完整的數據傳送過程。

 

    依據I2C總線的傳輸協議,總線工作時的具體時序如下:

  起始信號(S):在時鐘SCL為高電平期間,數據線SDA出現由高電平向低電平的變化,用于啟動I2C總線,準備開始傳送數據;

  停止信號(P):在時鐘SCL為高電平期間,數據線SDA出現由低電平向高電平的變化,用于停止I2C總線上的數據傳送;

  應答信號(A):I2C總線的第9個脈沖對應應答位,若SDA線上顯示低電平則為總線“應答”(A),若SDA線上顯示高電平則為“非應答”(/A);

  數據位傳送: I2C總線起始信號或應答信號之后的第1~8個時鐘脈沖對應一個字節的8位數據傳送。在脈沖高電平期間,數據串行傳送;在脈沖低電平期間,數據準備,允許總線上數據電平變化。

2 應用實例

2.1 實例模型介紹

  現舉某應用實例,要求對顯示器的視頻信號進行采集、處理和再顯示,整個系統采用CPLD器件進行控制。信號采集采用A/D公司的專用視頻采集芯片AD9883,該芯片在使用前需要依據實際的功能指標進行初始化。初始化過程依靠AD9883的SDA和SCL兩引腳進行。在系統中用CPLD器件(ALTERA公司的EPM3256A)實現初始化:按照I2C總線協議向AD9883的19個內部寄存器(01H~13H)寫入19組固定的8位數據;第14H寄存器為只讀型同步檢測寄存器,僅用于檢測幾個關鍵的數據設置。

  可見該I2C總線模型如下:單主操作,只實現簡單的寫和讀操作(亦可只有寫操作,只是硬件調試的時候會麻煩些),寫地址連續,沒有競爭和仲裁,是很簡單的I2C總線系統。由此設計了如圖3所示的IP核。其中,RESET為復位信號,CLK為系統時鐘。

為了軟件仿真方便,把雙向數據線SDA用分離的兩條線模擬:SDA為數據輸出,SDAACK為SDA的應答信號。軟件仿真成功后,只要把SDA設置為雙向,稍微修改一下程序就可以向CPLD器件下載,進行實際應用。

 

  對AD9883內部地址連續的寄存器進行初始化,I2C總線上傳輸的時序信號依次為:開始信號(S);從器件地址和寫操作位(SLAW);內部寄存器基地址(Base Address);寫入基地址的數據(Data0);寫入下一地址(Base Address+1)的數據(Data1);寫入地址(Base Address+2)的數據(Data2);……;寫入地址(Base Address+18)的數據(Data18);停止信號(P)。

  針對AD9883,如果電路中的A0引腳(55#)接電源,則SLAW=“10011001”;Base Address=“00000001”,Data0~Data18是依據實際需要寫入的初始化數據。

2.2 IP核程序的編寫

  整個程序用VHDL語言編制,SCL輸出時鐘的設計是基于CLK輸入時鐘的64分頻的。程序由三個狀態組成:開始(START)、轉換(SHIFT)和應答(ACK)。狀態定義如下:

  type states is (start,shift,ack);

  signal my_states :states;

  下面給出部分進程的源代碼以供參考。

2.2.1 開始信號的產生

  PROCESS(clk)

    if clk’event and clk=‘1’ then

    TWCR<=DATAIN;

    SCL<=‘1’;

    else

    TWCR<=(others=>‘0’);

    end if;

  if TWCR=“10000000” then ——比較寄存器TWCR的開始值設置(由用戶決定)

  STRB<=‘1’;

  end if;

  if STRB=‘1’ then                 ——開始條件

  INT<=INT+“000001”;            ——INT為時鐘脈沖計數

  if INT<=“011000” then         ——產生SDA的下降沿

  SDA<=‘1’;

  else

  SDA<=‘0’;

  end if;

  if INT>=“011110” then         ——STRB歸0,保證只產生一次開始信號

  STRB <=‘0’;

  INT<=“000000”;

  end if;

  end if;

  等所有的初始化數據傳輸完畢后即產生停止信號,過程與上面相類似,在此省略。

2.2.2 數據轉換過程

  數據轉換過程采用移位傳輸,傳輸8位之后即進入應答狀態。

  when shift=>

  if cnt=“010000” then         ——cnt為clk脈沖計數,由實際的時鐘頻率決定cnt的值

  COUNT<=COUNT+“0001”;      ——COUNT為數據移位個數計數,MSR為移位寄存器

  MSR<=MSR(6 downto 0)&txtag;  

  txtag<=‘0’;

  if COUNT=“1000” then

  my_states<=ack;

  TACK<=‘1’;                   ——TACK為應答標志位

  else

  SDA<=MSR(7);

  my_states<=shift;

  TACK<=‘0’;

  end if;

 

    end if;

2.2.3 數據輸入

  一般情況下,I2C總線傳輸的數據要由外部ROM或其它專門的數據存儲區來存儲,但在數據相對固定且數據量不是很大的情況下,可以將初始化的數據寫在程序中,這樣可減少頻繁的數據交換,簡化操作。AD9883的初始化數據就屬于這種情況,可以通過檢測應答信號來改變輸入的值。程序如下:

  PROCESS(clk)                         ——數據輸入

  if clk’event and clk=‘1’ then

  CASE ackint IS                     ——ackint為應答計數,每應答一次,輸入改變一次

                                         

  when “00000”=> DATAIN<=“10000000”;

  when “00001”=> DATAIN<=“01010010”;

  when “00010”=> DATAIN<=“11010000”;

  ……

  when “10010”=> DATAIN<=“00000000”;

  when “10011”=> DATAIN<=“00000000”;

  when others=> DATAIN<=“ZZZZZZZZ”;

  END CASE;

  end if;

2.3 仿真結果

  把自主開發的IP核置于MAX+PLUS II 10.0開發環境下,選用EPM3128ATC100-10器件,經過編譯、調試與仿真,證明該程序符合設計要求。圖4是模擬產生開始信號并傳輸兩組二進制數據“10011001”和“10101010”(十進制表示為153和170)的仿真波形。圖5是傳輸數據“10011001”后沒有應答時的仿真結果,此時總線處于暫停狀態。

 

  仿真完成后,通過編程電纜將pof文件下載到實際電路的EPM3128ATC100-10中,然后對AD9883進行初始化,結果工作正常,這進一步驗證了采用該自主開發的IP核完全可滿足I2C總線的時序要求,能實現I2C總線的功能。

 

參考文獻

1 The I2C-Bus Specification Version 2.1. Philips Semiconductors, January 2000

2 何立民. I2C總線應用系統設計. 北京:北京航空航天大學出版社,1995

3 何立民.按平臺模式設計的虛擬I2C總線軟件包.單片機與嵌入式系統應用,2001(2)

4 李明峰,李沁遙.I2C器件接口IP核的CPLD設計. 單片機與嵌入式系統應用,2003(1)

5 I2C總線的串行擴充技術.http://www.zlgmcu.com

6 http://www.opencores.org/projects/i2c

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          国产噜噜噜噜噜久久久久久久久| 久久精品国产免费看久久精品| 久久天天躁狠狠躁夜夜av| 亚洲一区二区精品在线观看| 一区二区国产精品| 欧美一区二区三区久久精品| 免费欧美日韩国产三级电影| 激情视频一区二区| 午夜精品免费视频| 亚洲高清资源综合久久精品| 在线成人免费观看| 美女露胸一区二区三区| 久久人91精品久久久久久不卡| 欧美成人tv| 国产色综合天天综合网| 一区二区三区在线观看欧美| 欧美在线观看天堂一区二区三区| 亚洲精品免费看| 亚洲国产精品一区在线观看不卡| 香蕉久久夜色精品国产使用方法| 亚洲精品久久久久久久久久久久| 亚洲久久成人| 亚洲欧美日本伦理| 国产精品一区二区三区久久| 欧美日韩18| 久久精品国产96久久久香蕉| 精品粉嫩aⅴ一区二区三区四区| 在线亚洲欧美视频| 亚洲国产日韩精品| 性欧美xxxx大乳国产app| 中文日韩欧美| 国产日韩一区二区三区| 欧美一级淫片播放口| 久久日韩粉嫩一区二区三区| 在线午夜精品自拍| 欧美午夜不卡影院在线观看完整版免费| 欧美日韩三级一区二区| 国产精品久久波多野结衣| 狠狠狠色丁香婷婷综合激情| 国产精品日韩欧美综合| 久久精品国产99精品国产亚洲性色| 欧美日韩一区精品| 美女网站久久| 亚洲精品乱码久久久久久按摩观| 欧美成人免费一级人片100| 嫩草伊人久久精品少妇av杨幂| 欧美国产日韩xxxxx| 国产精品综合av一区二区国产馆| 中文日韩在线| 韩国一区二区在线观看| 亚洲欧美日韩在线观看a三区| 国产资源精品在线观看| 久热精品在线视频| 国产精品亚洲网站| 欧美1区2区3区| 国产精品素人视频| 亚洲特级毛片| 亚洲国产精品99久久久久久久久| 好吊成人免视频| 亚洲六月丁香色婷婷综合久久| 亚洲视频1区2区| 国产一区在线观看视频| 午夜精品久久一牛影视| 国产一区视频在线观看免费| 老司机成人网| 亚洲国产欧美一区二区三区丁香婷| 国产精品女同互慰在线看| 午夜精品久久| …久久精品99久久香蕉国产| 99视频国产精品免费观看| 亚洲欧美日韩成人| 蜜桃av噜噜一区二区三区| 国产精品进线69影院| 国内精品免费在线观看| 欧美精品在线视频观看| 国产精品视频最多的网站| 欧美在线关看| 亚洲午夜视频在线| 久久精品国产一区二区三区| 欧美伊久线香蕉线新在线| 91久久嫩草影院一区二区| 美女精品自拍一二三四| 欧美在线观看视频在线| 美女精品在线| 蜜臀a∨国产成人精品| 亚洲激情网站免费观看| 亚洲一区日韩在线| 亚洲国产精品高清久久久| 亚洲高清激情| 欧美中文在线观看| 亚洲国产精品va| 欧美电影打屁股sp| 亚洲欧美久久久| 亚洲欧美日韩视频二区| 欧美综合国产| 亚洲你懂的在线视频| 欧美日韩精品高清| 亚洲一区亚洲| 国产亚洲精品资源在线26u| 亚洲一区影院| 久久蜜桃资源一区二区老牛| 亚洲国产精彩中文乱码av在线播放| 亚洲电影欧美电影有声小说| 亚洲国产日日夜夜| 亚洲视频在线免费观看| 尹人成人综合网| 国产亚洲免费的视频看| 国产精品无码专区在线观看| 欧美xart系列在线观看| 激情综合色丁香一区二区| 欧美日韩亚洲三区| 国产欧美日韩一区二区三区在线观看| 久热re这里精品视频在线6| 亚洲国产专区| 99伊人成综合| 美女黄毛**国产精品啪啪| 欧美精品九九| 欧美中文字幕在线| 六月婷婷一区| 亚洲一区二区三区涩| 久久天天躁夜夜躁狠狠躁2022| 欧美精品一区二区视频| 亚洲欧美日韩国产综合| 亚洲欧洲精品一区二区精品久久久| 欧美日韩第一区日日骚| 日韩亚洲欧美在线观看| av不卡在线看| 欧美高清视频一区| 久久综合精品一区| 免费成人av在线| 亚洲经典三级| 在线一区免费观看| 欧美日韩一区二区在线播放| a91a精品视频在线观看| 在线看欧美日韩| 麻豆精品传媒视频| 亚洲狠狠婷婷| 亚洲福利视频专区| 国产精品自拍在线| 国内偷自视频区视频综合| 久久亚洲二区| 韩日精品视频| 欧美日韩亚洲视频一区| 亚洲人成在线影院| 亚洲国产成人91精品| 欧美成年人在线观看| 国产日韩欧美在线一区| 夜夜嗨av一区二区三区| 久久久久高清| 欧美高清视频一二三区| 在线观看精品| 亚洲午夜av电影| 在线日韩av片| 一区二区三区视频在线播放| 麻豆freexxxx性91精品| 99视频日韩| 国产精品日韩一区二区三区| 久久天堂精品| 久久久精品一品道一区| 亚洲天堂av在线免费观看| 久久久女女女女999久久| 性做久久久久久久免费看| 国产精品视频免费一区| 久久夜色精品国产欧美乱极品| 亚洲午夜视频在线| 欧美午夜电影在线观看| 欧美一级欧美一级在线播放| 激情欧美一区二区三区在线观看| 国产亚洲第一区| 欧美日韩国产小视频| 国产日韩欧美在线视频观看| 亚洲一区二区高清| 国产精品久久久久久影院8一贰佰| 国产精品影音先锋| 国产精品视屏| 国产毛片一区二区| 久久综合久久88| 久久夜色精品国产亚洲aⅴ| 欧美资源在线观看| 国产在线国偷精品产拍免费yy| 亚洲精品网站在线播放gif| 久久九九热免费视频| 欧美日韩亚洲视频| 香蕉久久一区二区不卡无毒影院| 久久成人精品| 在线精品视频免费观看| 国产日本精品| 欧美午夜激情在线| 亚洲精品中文字幕女同| 欧美视频精品在线| 欧美乱在线观看| 欧美亚洲免费| 久久99伊人| 国产精品高清在线观看| 中文精品99久久国产香蕉| 美女黄毛**国产精品啪啪| 麻豆成人91精品二区三区| 日韩一级成人av| 一区二区三区在线观看欧美| 在线免费观看日本欧美| 99国产精品久久久久久久久久| 国产精品免费一区二区三区在线观看| 韩国福利一区| 国产精品一区二区三区久久久| 在线精品视频免费观看| 国产视频在线一区二区| 欧美日韩一区二区在线视频| 国产亚洲毛片在线| 国产精品一区二区三区成人| 亚洲国产精品一区| 一本久道久久综合中文字幕| 狠狠操狠狠色综合网| 欧美一区二区在线观看| 国产乱码精品1区2区3区| 欧美诱惑福利视频| 亚洲一区二区欧美日韩| 亚洲欧美日韩网| 亚洲国产成人精品视频| 亚洲欧洲一区二区三区在线观看| 伊人春色精品| 欧美影片第一页| 久久久噜噜噜久久中文字幕色伊伊| 欧美伊人久久久久久午夜久久久久| 亚洲视频在线观看免费| 国产精品乱码一区二区三区| 亚洲视频狠狠| 午夜免费在线观看精品视频| 欧美一区二区三区日韩视频| 国产一级精品aaaaa看| 国产精品国产a| 蜜臀av国产精品久久久久| 亚洲精品欧美专区| 麻豆成人在线| 一本大道av伊人久久综合| 亚洲激情影视| 欧美一区二区视频观看视频| 牛夜精品久久久久久久99黑人| 久久亚洲午夜电影| 你懂的视频一区二区| 曰本成人黄色| 久久狠狠一本精品综合网| 99精品99久久久久久宅男| 欧美一区二区精美| 性色av一区二区三区| 欧美片第1页综合| 极品日韩久久| 欧美日韩精品福利| 国产精品99免视看9| 一区二区三区精品国产| 国产乱子伦一区二区三区国色天香| 免费成人你懂的| 亚洲精品一区在线| 欧美日韩国产小视频在线观看| 欧美成人精品在线| 性伦欧美刺激片在线观看| 老司机精品导航| 美女爽到呻吟久久久久| 影音先锋亚洲电影| 国产在线拍偷自揄拍精品| 亚洲国产第一页| 欧美裸体一区二区三区| 国产精品一区二区欧美| 亚洲成人影音| 亚洲日本va在线观看| 亚洲欧美成人一区二区三区| 国产一区二区丝袜高跟鞋图片| 亚洲欧美在线一区二区| 欧美片第一页| 欧美一区二区日韩一区二区| 最新国产の精品合集bt伙计| 国产精品美女久久久| 亚洲成人在线观看视频| 国产精品日韩欧美一区二区| 亚洲精品在线免费| 亚洲一区二区在线免费观看视频| 欧美在线关看| 国产精品成人久久久久| 亚洲国产精品ⅴa在线观看| 亚洲免费视频一区二区| 亚洲午夜国产成人av电影男同| 欧美在线中文字幕| 91久久在线| 欧美激情亚洲激情| 免费久久精品视频| 中文日韩电影网站| 亚洲欧美日韩在线不卡| 欧美日韩成人综合| 国产在线精品自拍| 久久成人精品| 久久精品一区蜜桃臀影院| 亚洲一区在线直播| 欧美日韩卡一卡二| 亚洲激情专区| 欧美四级剧情无删版影片| 亚洲一级片在线观看| 欧美久久久久久久久| 亚洲精选一区| 国内精品久久久久久| 国产一区二区三区在线观看视频| 久久精品一区二区三区不卡| 午夜在线播放视频欧美| 欧美与欧洲交xxxx免费观看| 久久久久成人网| 欧美精品一卡| 性做久久久久久久久| 亚洲深夜福利在线| 久久夜色精品国产噜噜av| 亚洲欧洲精品一区二区三区不卡| 影音先锋在线一区| 国产主播一区二区三区| 蜜桃久久精品乱码一区二区| 欧美成人性生活| 久久这里只有精品视频首页| 国产色产综合产在线视频| 欧美—级在线免费片| 亚洲在线一区| 亚洲男人第一网站| 欧美精品高清视频| 亚洲欧美国产日韩天堂区| 国产情侣久久| 伊人激情综合| 欧美成人伊人久久综合网| 欧美日韩国产精品| 国产精品人人爽人人做我的可爱| 狠狠爱www人成狠狠爱综合网| 欧美一区午夜视频在线观看| 午夜视频在线观看一区二区| 欧美日韩免费观看一区三区|