朱誠誠,石晶晶,陳 斯,張 萌
(1.東南大學(xué)電子科學(xué)與工程學(xué)院,南京 211189;2.東南大學(xué)國家ASIC中心,南京 210096)
IIC總線是PHILIPS公司開發(fā)的一種實用、雙向、同步串行通信標(biāo)準(zhǔn)[1-2],目的在于解決各個串行設(shè)備間的通信,具有接口線數(shù)目少、通信效率高等優(yōu)點。通用的IIC總線接口器件在視頻處理、移動通信等領(lǐng)域的應(yīng)用已經(jīng)非常普遍。除此之外,IIC總線接口器件,如帶IIC總線RAM,ROM,A/D,D/A等,也越來越多地應(yīng)用于計算機及自動化控制系統(tǒng)中。
設(shè)計的IIC總線IP核僅需要兩條總線線路,一條串行數(shù)據(jù)總線SDA,一條串行時鐘總線SCL。連接到相同總線的IC數(shù)量只受總線的最大容量400 pF限制,是一種多主機總線[3]。串行8 bit雙向數(shù)據(jù)傳輸位速率,在標(biāo)準(zhǔn)模式之下可達到100 kbit/s,快速模式之下可達400 kbit/s,高速模式下可達到3.4 Mbit/s。從設(shè)計IIC總線的頂層模塊開始,在實現(xiàn)IIC總線傳輸?shù)娜抗δ苤?,將IIC總線模塊以固核的形式封裝?;谒O(shè)計的IIC總線IP核,只需將外部PAD引線端與IP核接口相連就可以很便捷地進行IIC通信。
采用硬件描述語言(HDL)[4-5]進行IP核設(shè)計,硬件描述語言是一種形式化方法來描述數(shù)字電路和設(shè)計數(shù)字邏輯系統(tǒng)的語言,它是硬件設(shè)計人員與EDA工具之間溝通的橋梁,用來編寫設(shè)計文件,建立電子系統(tǒng)行為級的模擬類型。之所以選擇Veril?og HDL,是因為Verilog HDL更加簡潔明了,靈活高效,完成同一功能Verilog HDL的程序條數(shù)一般只為VHDL的1/3。此外,Verilog HDL在底層描述,即開關(guān)級描述方面比VHDL功能更強。
此外,在Xilinx ISE V13.4設(shè)計平臺上進行IIC總線IP核的設(shè)計,設(shè)計更加便利化。
IIC總線接口主要包括以下4大單元,其框圖如圖1所示,圖中SDA為串行數(shù)據(jù)線,SCL為串行時鐘線,Data為傳輸數(shù)據(jù),CLK為處理器時鐘頻率。
分頻器 由FPGA的鎖相環(huán)輸出的穩(wěn)定時鐘信號,由于頻率很高,所以必須經(jīng)過分頻模塊從而輸出滿足IIC總線要求的傳輸速率。
IIC總線接口控制時序邏輯塊 IIC總線數(shù)據(jù)傳輸?shù)乃袝r序控制邏輯都由它產(chǎn)生,是這個IIC模塊的核心。
數(shù)據(jù)鎖存器 根據(jù)讀寫使能信號(r/w)存儲IIC己接收的或待發(fā)送的數(shù)據(jù)。
移位寄存器 在時序控制邏輯模塊的控制下,根據(jù)讀寫使能信號(r/w)對數(shù)據(jù)進行正確地處理。
圖1 IIC總線接口框圖
寫操作[6-7]過程:
①主端向總線發(fā)送一個開始信號;
②主端向總線發(fā)出需要寫數(shù)據(jù)器件的器件地址以及寫信號并等待器件產(chǎn)生應(yīng)答信號;
③主端向總線發(fā)送所要寫的存儲地址并等待設(shè)備產(chǎn)生應(yīng)答信號;
④主端向總線發(fā)送所要寫的數(shù)據(jù);
⑤等待器件產(chǎn)生應(yīng)答信號,主端向總線發(fā)送結(jié)束信號,完成一個字節(jié)的寫過程。
IIC總線寫操作的功能是將數(shù)據(jù)寫入到總線上,即將并行數(shù)據(jù)裝換為串行數(shù)據(jù)。
讀操作過程:
①主端向總線發(fā)送開始信號;
②主端向總線發(fā)送要讀數(shù)據(jù)器件地址以及寫信號并等待器件產(chǎn)生應(yīng)答信號;
③主端向總線發(fā)送所要讀數(shù)據(jù)的地址并等待產(chǎn)生應(yīng)答信號;
④主端向總線發(fā)送開始信號和所需讀數(shù)據(jù)器件的器件地址以及讀信號并等待器件產(chǎn)生應(yīng)答信號;
⑤主端按從高到低位的順序接收總線上的數(shù)據(jù);
⑥產(chǎn)生停止信號結(jié)束數(shù)據(jù)的讀取。
IIC總線的讀操作的功能是讀取總線上的串行數(shù)據(jù),即將串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù)。
設(shè)計的IIC總線的單主IP核,能夠?qū)崿F(xiàn)讀寫操作及連續(xù)地址的讀或?qū)懖僮鳎▓D2),由于它是單主模式,故總線沒有競爭與仲裁。
圖2 IIC總線IP核簡圖
IP(Intellectual Property),即知識產(chǎn)權(quán)。它是一段硬件描述語言程序,具有特定電路功能,是指可用來生成 ASIC(Application Specific Integrated Cir?cuit)和PLD的邏輯功能塊,且該程序與集成電路工藝無關(guān),它可以移植到不同的半導(dǎo)體工藝所生產(chǎn)的集成電路芯片。本文設(shè)計的IP核中,rst_n為復(fù)位信號,當(dāng)rst_n為低電平時,IIC總線處于空閑狀態(tài),此時無數(shù)據(jù)的傳輸;syn_sign為同步信號,當(dāng)syn_sign為高電平時,IIC總線可以進行數(shù)據(jù)的傳輸,否則,IIC總線處于空閑狀態(tài);Byte_Write為寫信號,當(dāng)其為低電平時,IIC總線可以進行寫操作;Byte_Red為低電平時,IIC總線可以進行讀操作;Page_Write為低電平時,IIC總線可以進行連寫操作;Page_Red為低電平時,IIC總線可以進行連讀操作。
由IIC總線傳輸協(xié)議可知,IIC在傳輸過程中存在著幾個固定的狀態(tài)[8],因此采用同步狀態(tài)機來設(shè)計IIC模塊。主狀態(tài)機從的大的方面共有5個狀態(tài):空閑,開始,發(fā)送數(shù)據(jù),接收數(shù)據(jù),停止。
所設(shè)計的總線狀態(tài)機轉(zhuǎn)移圖如圖3示。
圖3 狀態(tài)機的轉(zhuǎn)換示意圖
當(dāng)無數(shù)據(jù)傳輸時,IIC總線處于空閑狀態(tài)(Idle),IIC總線在起始信號(Start)的觸發(fā)下,開始進行數(shù)據(jù)的傳輸。首先,總線接受器件地址,在得到應(yīng)答信號(Ack)后,傳輸數(shù)據(jù)存儲地址,在接到應(yīng)答信號后,開始傳輸數(shù)據(jù)(Data)。若無連寫(W_page)、連讀(R_page)信號的輸入,總線在讀寫后將會處于空閑狀態(tài),并等待下一次起始信號。
基于這種狀態(tài)機的轉(zhuǎn)換,總線按照設(shè)計者的要求進行數(shù)據(jù)傳輸。
采用自上而下的流程對IIC總線主模塊進行設(shè)計,對所有模塊用Verilog HDL語言進行描述,在ISE V13.4和Basys2設(shè)計平臺上進行仿真與硬件驗證。ISE V13.4是Xilinx公司的FPGA集成開發(fā)環(huán)境,不僅包括邏輯設(shè)計所需的一切,還具有大量簡便易用的內(nèi)置式工具和向?qū)В沟肐/O分配、功耗分析,HDL仿真等步驟變得簡單而直觀。圍繞著Xilinx Spartan-3E現(xiàn)場可編程門陣列,Basys2板提供完整的、隨時可用的硬件適合電路實現(xiàn)從基本邏輯器件到復(fù)雜的控制器。擁有一系列板上I/O設(shè)備和所有需要支持的FPGA電路,可以創(chuàng)造無數(shù)無需任何其他元件的設(shè)計。
首先,將寫操作信號Byte_write置0,主端檢測到寫信號后,開始寫操作,在往總線上寫入器件地址并接收應(yīng)答信號后,主端向總線寫入數(shù)據(jù)01 001 110,圖4為寫操作仿真圖。
通過仿真波形,我們從模塊正確寫入一個字節(jié)01 001 110。
將讀操作信號Byte_read置0,主端檢測到讀信號后,開始讀操作,在完成偽寫操作后,主端從總線讀出數(shù)據(jù)01 100 101。
通過仿真波形可以看出,我們可以從總線讀出一個字節(jié)01 100 101。
仿真結(jié)果與理論結(jié)果相一致,數(shù)據(jù)傳輸速率達到100 kbit/s,快速模式下可達到400 kbit/s,高速模式3.4 Mbit/s。
圖4 寫操作仿真
圖5 讀操作仿真
仿真完成后,在ISE13.4設(shè)計平臺上進行綜合布線,并采用Basys2中進行硬件測試,將復(fù)位信號置0,同步信號置1,寫信號置0,將主端寫入的總線數(shù)據(jù)通過Basys2的LED燈進行顯示,圖6為寫操作。
通過LED顯示,我們成功向總線寫入一個字節(jié)0 100 1110。
將復(fù)位信號置0,同步信號置1,讀信號置0。
并將從總線上讀出的數(shù)據(jù)通過Basys2的LED燈進行顯示,圖7為讀操作。
圖6 硬件寫操作
圖7 硬件讀操作
通過LED顯示,我們成功讀出總線上一個字節(jié)01 100 101。
仿真、硬件檢測結(jié)果與IIC總線傳輸數(shù)據(jù)的預(yù)期結(jié)果相一致,從而說明了我們IIC總線設(shè)計的成功。最后,在ISE設(shè)計平臺上將IIC總線模塊進行封裝,形成只有接口的IP固核。
采用Verilog HDL語言設(shè)計了一個IIC總線的單主模式的IP核,給出了一種模塊化和層次化的完整設(shè)計方法。該IP核具有通用的接口和簡單的操作時序,并且全部設(shè)計由Verilog HDL語言實現(xiàn)。無需代碼修改就可以在片上系統(tǒng)的接口設(shè)計中使用,實現(xiàn)對IIC總線的支持,具有良好的移植性。
與近期的同類IIC總線IP核設(shè)計相比較,有別于Altera的Quartus II平臺的設(shè)計,在Xilinx ISE V13.4設(shè)計平臺上進行IP核的設(shè)計。ISE V13.4提供了便捷地IP核設(shè)計環(huán)境及仿真環(huán)境,進而使得設(shè)計便利化。此外,ISE為Xilinx公司的開發(fā)環(huán)境,Xilinx的產(chǎn)品市場占有率更高,因此,在ISE平臺上設(shè)計使得所完成的產(chǎn)品更具實用性。
設(shè)計的IP核既體現(xiàn)了良好的可移植性,又體現(xiàn)了芯片設(shè)計的模塊化思想。利用成熟的IP核進行新產(chǎn)品的開發(fā)可大大縮短設(shè)計周期,提高產(chǎn)品的可靠性,為新產(chǎn)品贏得市場契機。
[1]張延偉,楊金巖,葛愛學(xué),等.Verilog HDL程序設(shè)計實例詳解[M].人民郵電出版社,2008:132-160.
[2]Philips Semiconductors.The IIC-Bus Specification[M]Version 2.1,2001:6-19.
[3]夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計教程[M].2版.北京:高等教育出版社,6.1,2008:13-18.
[4]劉欲曉,方強,黃宛寧,等.EDA技術(shù)與VHDL電路開發(fā)應(yīng)用實踐[M].北京:電子工業(yè)出版社,2009:221-240.
[5]張延偉,楊金巖,葛愛學(xué)等.Verilog HDL程序設(shè)計實例詳解[M].人民郵電出版社,2008:132-160.
[6]趙輝.IIC總線技術(shù)及其應(yīng)用實例[J].微型電腦應(yīng)用,2005,21(4):61.
[7]劉福奇,劉波.Verilog HDL應(yīng)用程序設(shè)計實例精講[M].北京:電子工業(yè)出版社,2009:434-444.
[8]陳旭.FPGA技術(shù)發(fā)展研究[J].半導(dǎo)體技術(shù),2006,(4):1-3.
朱誠誠(1992-),男,漢族,安徽淮南人,本科生,就讀于東南大學(xué)電子科學(xué)與工程學(xué)院,ccz2498466@163.com;
張 萌(1964-),男,漢族,研究員,東南大學(xué)ASIC中心,主要從事數(shù)字信號處理,集成電路設(shè)計,通信系統(tǒng)等,zmeng@seu.edu.cn。