朱誠誠,石晶晶,陳 斯,張 萌
(1.東南大學電子科學與工程學院,南京 211189;2.東南大學國家ASIC中心,南京 210096)
IIC總線是PHILIPS公司開發的一種實用、雙向、同步串行通信標準[1-2],目的在于解決各個串行設備間的通信,具有接口線數目少、通信效率高等優點。通用的IIC總線接口器件在視頻處理、移動通信等領域的應用已經非常普遍。除此之外,IIC總線接口器件,如帶IIC總線RAM,ROM,A/D,D/A等,也越來越多地應用于計算機及自動化控制系統中。
設計的IIC總線IP核僅需要兩條總線線路,一條串行數據總線SDA,一條串行時鐘總線SCL。連接到相同總線的IC數量只受總線的最大容量400 pF限制,是一種多主機總線[3]。串行8 bit雙向數據傳輸位速率,在標準模式之下可達到100 kbit/s,快速模式之下可達400 kbit/s,高速模式下可達到3.4 Mbit/s。從設計IIC總線的頂層模塊開始,在實現IIC總線傳輸的全部功能之后,將IIC總線模塊以固核的形式封裝?;谒O計的IIC總線IP核,只需將外部PAD引線端與IP核接口相連就可以很便捷地進行IIC通信。
采用硬件描述語言(HDL)[4-5]進行IP核設計,硬件描述語言是一種形式化方法來描述數字電路和設計數字邏輯系統的語言,它是硬件設計人員與EDA工具之間溝通的橋梁,用來編寫設計文件,建立電子系統行為級的模擬類型。之所以選擇Veril?og HDL,是因為Verilog HDL更加簡潔明了,靈活高效,完成同一功能Verilog HDL的程序條數一般只為VHDL的1/3。此外,Verilog HDL在底層描述,即開關級描述方面比VHDL功能更強。
此外,在Xilinx ISE V13.4設計平臺上進行IIC總線IP核的設計,設計更加便利化。
IIC總線接口主要包括以下4大單元,其框圖如圖1所示,圖中SDA為串行數據線,SCL為串行時鐘線,Data為傳輸數據,CLK為處理器時鐘頻率。
分頻器 由FPGA的鎖相環輸出的穩定時鐘信號,由于頻率很高,所以必須經過分頻模塊從而輸出滿足IIC總線要求的傳輸速率。
IIC總線接口控制時序邏輯塊 IIC總線數據傳輸的所有時序控制邏輯都由它產生,是這個IIC模塊的核心。
數據鎖存器 根據讀寫使能信號(r/w)存儲IIC己接收的或待發送的數據。
移位寄存器 在時序控制邏輯模塊的控制下,根據讀寫使能信號(r/w)對數據進行正確地處理。

圖1 IIC總線接口框圖
寫操作[6-7]過程:
①主端向總線發送一個開始信號;
②主端向總線發出需要寫數據器件的器件地址以及寫信號并等待器件產生應答信號;
③主端向總線發送所要寫的存儲地址并等待設備產生應答信號;
④主端向總線發送所要寫的數據;
⑤等待器件產生應答信號,主端向總線發送結束信號,完成一個字節的寫過程。
IIC總線寫操作的功能是將數據寫入到總線上,即將并行數據裝換為串行數據。
讀操作過程:
①主端向總線發送開始信號;
②主端向總線發送要讀數據器件地址以及寫信號并等待器件產生應答信號;
③主端向總線發送所要讀數據的地址并等待產生應答信號;
④主端向總線發送開始信號和所需讀數據器件的器件地址以及讀信號并等待器件產生應答信號;
⑤主端按從高到低位的順序接收總線上的數據;
⑥產生停止信號結束數據的讀取。
IIC總線的讀操作的功能是讀取總線上的串行數據,即將串行數據轉換為并行數據。
設計的IIC總線的單主IP核,能夠實現讀寫操作及連續地址的讀或寫操作(圖2),由于它是單主模式,故總線沒有競爭與仲裁。

圖2 IIC總線IP核簡圖
IP(Intellectual Property),即知識產權。它是一段硬件描述語言程序,具有特定電路功能,是指可用來生成 ASIC(Application Specific Integrated Cir?cuit)和PLD的邏輯功能塊,且該程序與集成電路工藝無關,它可以移植到不同的半導體工藝所生產的集成電路芯片。本文設計的IP核中,rst_n為復位信號,當rst_n為低電平時,IIC總線處于空閑狀態,此時無數據的傳輸;syn_sign為同步信號,當syn_sign為高電平時,IIC總線可以進行數據的傳輸,否則,IIC總線處于空閑狀態;Byte_Write為寫信號,當其為低電平時,IIC總線可以進行寫操作;Byte_Red為低電平時,IIC總線可以進行讀操作;Page_Write為低電平時,IIC總線可以進行連寫操作;Page_Red為低電平時,IIC總線可以進行連讀操作。
由IIC總線傳輸協議可知,IIC在傳輸過程中存在著幾個固定的狀態[8],因此采用同步狀態機來設計IIC模塊。主狀態機從的大的方面共有5個狀態:空閑,開始,發送數據,接收數據,停止。
所設計的總線狀態機轉移圖如圖3示。

圖3 狀態機的轉換示意圖
當無數據傳輸時,IIC總線處于空閑狀態(Idle),IIC總線在起始信號(Start)的觸發下,開始進行數據的傳輸。首先,總線接受器件地址,在得到應答信號(Ack)后,傳輸數據存儲地址,在接到應答信號后,開始傳輸數據(Data)。若無連寫(W_page)、連讀(R_page)信號的輸入,總線在讀寫后將會處于空閑狀態,并等待下一次起始信號。
基于這種狀態機的轉換,總線按照設計者的要求進行數據傳輸。
采用自上而下的流程對IIC總線主模塊進行設計,對所有模塊用Verilog HDL語言進行描述,在ISE V13.4和Basys2設計平臺上進行仿真與硬件驗證。ISE V13.4是Xilinx公司的FPGA集成開發環境,不僅包括邏輯設計所需的一切,還具有大量簡便易用的內置式工具和向導,使得I/O分配、功耗分析,HDL仿真等步驟變得簡單而直觀。圍繞著Xilinx Spartan-3E現場可編程門陣列,Basys2板提供完整的、隨時可用的硬件適合電路實現從基本邏輯器件到復雜的控制器。擁有一系列板上I/O設備和所有需要支持的FPGA電路,可以創造無數無需任何其他元件的設計。
首先,將寫操作信號Byte_write置0,主端檢測到寫信號后,開始寫操作,在往總線上寫入器件地址并接收應答信號后,主端向總線寫入數據01 001 110,圖4為寫操作仿真圖。
通過仿真波形,我們從模塊正確寫入一個字節01 001 110。
將讀操作信號Byte_read置0,主端檢測到讀信號后,開始讀操作,在完成偽寫操作后,主端從總線讀出數據01 100 101。
通過仿真波形可以看出,我們可以從總線讀出一個字節01 100 101。
仿真結果與理論結果相一致,數據傳輸速率達到100 kbit/s,快速模式下可達到400 kbit/s,高速模式3.4 Mbit/s。

圖4 寫操作仿真

圖5 讀操作仿真
仿真完成后,在ISE13.4設計平臺上進行綜合布線,并采用Basys2中進行硬件測試,將復位信號置0,同步信號置1,寫信號置0,將主端寫入的總線數據通過Basys2的LED燈進行顯示,圖6為寫操作。
通過LED顯示,我們成功向總線寫入一個字節0 100 1110。
將復位信號置0,同步信號置1,讀信號置0。
并將從總線上讀出的數據通過Basys2的LED燈進行顯示,圖7為讀操作。

圖6 硬件寫操作

圖7 硬件讀操作
通過LED顯示,我們成功讀出總線上一個字節01 100 101。
仿真、硬件檢測結果與IIC總線傳輸數據的預期結果相一致,從而說明了我們IIC總線設計的成功。最后,在ISE設計平臺上將IIC總線模塊進行封裝,形成只有接口的IP固核。
采用Verilog HDL語言設計了一個IIC總線的單主模式的IP核,給出了一種模塊化和層次化的完整設計方法。該IP核具有通用的接口和簡單的操作時序,并且全部設計由Verilog HDL語言實現。無需代碼修改就可以在片上系統的接口設計中使用,實現對IIC總線的支持,具有良好的移植性。
與近期的同類IIC總線IP核設計相比較,有別于Altera的Quartus II平臺的設計,在Xilinx ISE V13.4設計平臺上進行IP核的設計。ISE V13.4提供了便捷地IP核設計環境及仿真環境,進而使得設計便利化。此外,ISE為Xilinx公司的開發環境,Xilinx的產品市場占有率更高,因此,在ISE平臺上設計使得所完成的產品更具實用性。
設計的IP核既體現了良好的可移植性,又體現了芯片設計的模塊化思想。利用成熟的IP核進行新產品的開發可大大縮短設計周期,提高產品的可靠性,為新產品贏得市場契機。
[1]張延偉,楊金巖,葛愛學,等.Verilog HDL程序設計實例詳解[M].人民郵電出版社,2008:132-160.
[2]Philips Semiconductors.The IIC-Bus Specification[M]Version 2.1,2001:6-19.
[3]夏宇聞.Verilog數字系統設計教程[M].2版.北京:高等教育出版社,6.1,2008:13-18.
[4]劉欲曉,方強,黃宛寧,等.EDA技術與VHDL電路開發應用實踐[M].北京:電子工業出版社,2009:221-240.
[5]張延偉,楊金巖,葛愛學等.Verilog HDL程序設計實例詳解[M].人民郵電出版社,2008:132-160.
[6]趙輝.IIC總線技術及其應用實例[J].微型電腦應用,2005,21(4):61.
[7]劉福奇,劉波.Verilog HDL應用程序設計實例精講[M].北京:電子工業出版社,2009:434-444.
[8]陳旭.FPGA技術發展研究[J].半導體技術,2006,(4):1-3.

朱誠誠(1992-),男,漢族,安徽淮南人,本科生,就讀于東南大學電子科學與工程學院,ccz2498466@163.com;

張 萌(1964-),男,漢族,研究員,東南大學ASIC中心,主要從事數字信號處理,集成電路設計,通信系統等,zmeng@seu.edu.cn。