




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
PAGEII---PAGE34-摘要隨著微電子技術(shù)的發(fā)展,現(xiàn)場可編程邏輯門陣列FPGA(FieldProgrammableGateArray)可以實(shí)現(xiàn)數(shù)字電路系統(tǒng)設(shè)計(jì)的功能。尤其現(xiàn)場可編程邏輯門陣列FPGA具有集成度高的優(yōu)點(diǎn),受到工程界高度的重視。I2C總線以接口簡單,成本底,可擴(kuò)展性好在數(shù)字系統(tǒng)中得到了廣泛的應(yīng)用。硬件描述語言是數(shù)字系統(tǒng)高層設(shè)計(jì)的核心,是實(shí)現(xiàn)數(shù)字系統(tǒng)設(shè)計(jì)新方法的關(guān)鍵技術(shù)之一。本課題正是利用VHDL語言在FPGA上實(shí)現(xiàn)I2C總線控制器的功能。首先研究了I2C總線的規(guī)范,又簡要介紹了QuartusⅡ設(shè)計(jì)環(huán)境以及FPGA的設(shè)計(jì)流程。在此基礎(chǔ)上,重點(diǎn)介紹了I2C控制器的總體設(shè)計(jì)方案,以及在QuartusⅡ平臺(tái)上的時(shí)序仿真。關(guān)鍵詞QuartusII;I2C總線控制器;現(xiàn)場可編程邏輯門陣列;時(shí)序仿真AbstractWiththedevelopmentofmicroelectricandEDA(electronicdesignautomation)technology,FPGA(fieldprogrammablegatesarray)canrealizethefunctionofdigitalcircuitsystemdesign.FPGAhavethemeritoffiledprogrammabilityandHighintegrationrate,thereforeishighlyrecognizedforengineering.I2Cbusiswidelyappliedinthedigitalsystemassimpleinterface,expedientuse,lowcostandgoodexpansibility.VHDLisconsideredasacoreofdigitalsystemdesignandakeytechniqueofimplementdigitalsystem.ThedesignrealizesthefunctionofI2CbusinterfaceontheFPGA.AtfirstthethesisdeeplyresearchI2Cbusspecification,thenbrieflyintroducetheQuartusIIdesignenvironmentandthedesignmethod,aswellasFPGAdesignflow.Inthisfoundation,I2CbuscontrollerdesignschemeandthetimingsimulationunderQuartusIIisparticularlyintroduced.KeywordsQuartusII;I2Cbuscontroller;FPGA;timingsimulation目錄23016摘要 I6188Abstract II27827第1章緒論 530301.1課題背景 5143931.2I2C總線的產(chǎn)生及發(fā)展 6137931.3FPGA的現(xiàn)狀與展望 650921.4相關(guān)工作 65780第2章I2C總線技術(shù)的研究 849362.1I2C總線的概念 8158932.2I2C總線的傳輸 934232.2.1數(shù)據(jù)的有效性 9228112.2.2I2C總線數(shù)據(jù)傳送的開始和停止條件 22811938542.2.3I2C總線傳輸過程中的應(yīng)答信號(hào) 1040832.2.4I2C總線數(shù)據(jù)傳送的重復(fù)開始條件 1167752.2.5I2C總線的傳輸過程中的字節(jié)格式 11130562.2.6I2C總線的器件子地址 11251152.2.7I2C總線傳輸信號(hào)的時(shí)序 12183922.3本章小結(jié) 1426083第3章VHDL語言的基礎(chǔ)知識(shí) 15HYPERLINK\l_Toc257743.1VHDL語言的概述 15188143.2VHDL語言的特點(diǎn) 15296103.3VHDL語言的程序結(jié)構(gòu) 16140163.3.1VHDL程序的庫 1616273.3.2包集合 16296693.3.3實(shí)體說明 17249393.3.4構(gòu)造體 18217223.3.5配置 18HYPERLINK\l_Toc274503.4本章小結(jié) 1810245第4章設(shè)計(jì)工具和設(shè)計(jì)方法 19153744.1設(shè)計(jì)工具 195514.2基于FPGA的數(shù)字電路的設(shè)計(jì)流程 20HYPERLINK\l_Toc176504.3本章小結(jié) 2110812第5章I2C總線的功能設(shè)計(jì) 22272735.1I2C總線完成的功能 22116685.2用VHDL語言實(shí)現(xiàn)寫操作時(shí)的串行轉(zhuǎn)并行 2369925.3用VHDL語言實(shí)現(xiàn)順序讀操作時(shí)的并行轉(zhuǎn)串行 2395895.4I2C總線控制器的頂層設(shè)計(jì) 24258995.5本章小結(jié) 2517156第6章I2C總線的硬件時(shí)序仿真 PAGEREF_Toc1715626277046.1器件的選擇 2669896.2硬件仿真 27300006.2.1用VHDL語言實(shí)現(xiàn)寫字節(jié)周期 28155106.2.1用VHDL語言實(shí)現(xiàn)順序讀字節(jié)周期 2920186.2.3用VHDL語言實(shí)現(xiàn)選擇性讀字節(jié)周期 2980526.3本章小結(jié) 304755結(jié)論 3122823致謝 3232067參考文獻(xiàn) 33哈爾濱工業(yè)大學(xué)(威海)本科畢業(yè)設(shè)計(jì)(論文)第1章緒論1.1課題背景近年來,隨著社會(huì)的發(fā)展,電子產(chǎn)品越來越多的進(jìn)入人們的生活和工作中,成為了我們生活中必不可少的一部分,隨著計(jì)算機(jī)的普及,以及電子設(shè)備之間相互溝通的更加頻繁,為了更方便的實(shí)現(xiàn)器件與器件之間的通信,研發(fā)人員從消費(fèi)者電子、電訊和工業(yè)電子中許多看上去不相關(guān)的設(shè)計(jì)中尋找到了他們的相似之處,例如幾乎每個(gè)系統(tǒng)都包括:一些智能控制,通常是一個(gè)單片的微控制器。通用電路,例如LCD驅(qū)動(dòng)器、遠(yuǎn)程I/O口、RAM、EEPROM或者數(shù)據(jù)轉(zhuǎn)換器。面向應(yīng)用的電路,譬如收音機(jī)和視頻系統(tǒng)的數(shù)字調(diào)諧和信號(hào)處理電路。為了使這些相似之處對(duì)系統(tǒng)設(shè)計(jì)者和器件廠商都得益,而且使硬件效率最大電路最簡單,Philips開發(fā)了一個(gè)簡單的雙向兩線總線,實(shí)現(xiàn)有效的IC之間控制,這個(gè)總線就稱為I2C總線?,F(xiàn)在Philips包括超過150種CMOS和雙極性兼容I2C總線的IC,可以執(zhí)行前面提到的三種類型的功能。所有符合I2C總線的器件組合了一個(gè)片上接口,使器件之間直接通過I2C總線通訊,這個(gè)設(shè)計(jì)概念解決了很多在設(shè)計(jì)數(shù)字控制電路時(shí)遇到的接口問題。I2C總線具有以下優(yōu)點(diǎn):極低的電流消耗、抗高噪聲干擾、電源電壓范圍寬以及較廣的工作溫度范圍、簡單性和有效性I2C總線占用的空間非常?。ń涌谥苯釉诮M件之上),減少了電路板的空間和芯片管腳的數(shù)量,降低了互聯(lián)成本支持主控,其中任何能夠進(jìn)行發(fā)送和接收的設(shè)備都可以成為總線,一個(gè)主控能夠控制信號(hào)的傳輸和時(shí)鐘頻率(任何時(shí)間點(diǎn)只能有一個(gè)主控)1.2I2C總線的產(chǎn)生及發(fā)展I2C總線是一種由PHILIPS公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備。I2C總線產(chǎn)生于在80年代,最初為音頻和視頻設(shè)備開發(fā),如今主要在服務(wù)器管理中使用,其中包括單個(gè)組件狀態(tài)的通信。例如管理員可對(duì)各個(gè)組件進(jìn)行查詢,以管理系統(tǒng)的配置或掌握組件的功能狀態(tài),如電源和系統(tǒng)風(fēng)扇??呻S時(shí)監(jiān)控內(nèi)存、硬盤、網(wǎng)絡(luò)、系統(tǒng)溫度等多個(gè)參數(shù),增加了系統(tǒng)的安全性,方便了管理。1.3FPGA的現(xiàn)狀與展望FPGA是英文Field-ProgrammableGateArray的縮寫,即現(xiàn)場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。FPGA經(jīng)過70年的不斷發(fā)展,由當(dāng)初的1200門發(fā)展成為今天的百萬門級(jí)。通過不斷更新優(yōu)化產(chǎn)品架構(gòu)和生產(chǎn)工藝,實(shí)現(xiàn)了更高的性能、更短的開發(fā)周期、更低的單位成本和功耗。從前的“定論”是:FPGA可編程,靈活性高,一直依賴都是用作建模的平臺(tái),而不適合進(jìn)行量產(chǎn),但是經(jīng)過多年的研發(fā),大大縮短了FPGA開發(fā)時(shí)間,降低了驗(yàn)證成本。高集成度和靈活度從消費(fèi)電子的發(fā)展來看,客戶要求產(chǎn)品的更新?lián)Q代的周期越來越短,并要求不段的繼承更多的,層出不窮的,新的技術(shù)和應(yīng)用,而且又要嚴(yán)格控制成本。因此,F(xiàn)PGA在靈活性上就具備了天然的優(yōu)勢,且通過多年的努力,在高性能和低功耗方面也取得了顯著地改進(jìn),現(xiàn)在的FPGA性能已經(jīng)能夠滿足大多數(shù)應(yīng)用的的需要。1.4相關(guān)工作為了設(shè)計(jì)基于FPGA的I2C總線控制器,包括數(shù)據(jù)傳輸時(shí)序、傳輸命令、傳輸格式。首先要深入研究I2C總線的協(xié)議規(guī)范,在QuartusⅡ平臺(tái)上,對(duì)設(shè)計(jì)進(jìn)行分析、綜合,功能和時(shí)序仿真,最后深入研究FPGA芯片的設(shè)計(jì)流程,并根據(jù)以上結(jié)果選擇芯片,并配置到FPGA上,驗(yàn)證設(shè)計(jì)結(jié)果。本文的章節(jié)安排如下;1緒論,主要介紹課題研究的背景,I2C總線和FPGA的產(chǎn)生現(xiàn)狀和發(fā)展2I2C總線技術(shù)的研究,介紹I2C總線的特點(diǎn)以及工作原理3VHDL語言的基礎(chǔ)知識(shí),簡單的介紹了VHDL語言的特點(diǎn)和結(jié)構(gòu)4設(shè)計(jì)工具與設(shè)計(jì)方法,介紹了一種新的設(shè)計(jì)軟件QuartusII,以及基于FPGA的數(shù)字電路的設(shè)計(jì)流程5I2C總線的功能設(shè)計(jì)6I2C總線的硬件時(shí)序仿真7結(jié)論,對(duì)本文進(jìn)行總結(jié),在設(shè)計(jì)中遇到的問題以及從此次設(shè)計(jì)中學(xué)到的東西第2章I2C總線技術(shù)的研究2.1I2C總線的概念I(lǐng)2C總線是一種比較流行的總線,它的接受和發(fā)送在同一條數(shù)據(jù)線上。I2C由串行數(shù)據(jù)(SDA)和串行時(shí)鐘(SCL)兩根線構(gòu)成的??偩€上允許連接的設(shè)備數(shù)主要決定于總線上的電容量,一般設(shè)定為400pf以下。SDA和SCL都是雙向總線,它們都通過上拉電阻連接到電源上。當(dāng)總線處于停止(IDLE)狀態(tài),兩根線都是高電平。對(duì)于I2C總線來說,總線上連接的設(shè)備,例如LCD驅(qū)動(dòng)器、存儲(chǔ)器等都是有一個(gè)唯一的地址識(shí)別,而且都可以作為一個(gè)發(fā)送器或接收器。至于是作為發(fā)送器還是接收器,主要取決于連接設(shè)備的具體功能。例如LCD驅(qū)動(dòng)只是一個(gè)接收器,而存儲(chǔ)器則既可以接受又可以發(fā)送數(shù)據(jù)。除了發(fā)送器和接收器外,設(shè)備在執(zhí)行數(shù)據(jù)傳輸時(shí)也可以被看作是主機(jī)或從機(jī)。主機(jī)是初始化總線的數(shù)據(jù)傳輸,并產(chǎn)生允許傳輸?shù)臅r(shí)鐘信號(hào)的設(shè)備,這時(shí)任何被尋址的期間都被認(rèn)為是從機(jī)。由于I2C總線使用兩線的硬件接口簡單,I2C總線的應(yīng)用越來越廣泛[1]。下面,將I2C總線的通用術(shù)語進(jìn)行介紹,如表2-1所示;I2C總線的典型接法如圖2-1所示。表2-1I2C總線的通用術(shù)語術(shù)語描述發(fā)送器發(fā)送數(shù)據(jù)到總線的器件接收器從總線接收數(shù)據(jù)的期間主機(jī)初始化發(fā)送、產(chǎn)生時(shí)鐘信號(hào)和終止發(fā)送的器件從機(jī)被主機(jī)尋址的器件多主機(jī)同時(shí)有多于一個(gè)主機(jī)嘗試控制總線,但不破壞報(bào)文仲裁是一個(gè)在有多個(gè)主機(jī)同時(shí)嘗試控制總線,但只允許其中一個(gè)控制總線并使報(bào)文不被破壞的過程同步兩個(gè)或多個(gè)器件同步時(shí)鐘信號(hào)的過程圖2-1I2C總線信號(hào)連接示意圖2.2I2C總線的傳輸由于I2C總線的器件有不同種類的工藝(CMOS、NMOS、雙極性),邏輯‘0’(低)和‘1’(高)的電平不是固定的。在I2C總線每傳輸一位數(shù)據(jù)就有一個(gè)時(shí)鐘脈沖相對(duì)應(yīng),其邏輯“0”或“1”的信號(hào)電平取決于該節(jié)點(diǎn)的正端電源Vdd的電壓。2.2.1數(shù)據(jù)的有效性在工作過程中,數(shù)據(jù)有效要求串行數(shù)據(jù)(SDA)線上的數(shù)據(jù)必須要在串行時(shí)鐘(SCL)的高電平時(shí)鐘周期期間保持穩(wěn)定。而只有在串行時(shí)鐘(SCL)線的時(shí)鐘信號(hào)是低電平的時(shí)候串行數(shù)據(jù)(SDA)上的數(shù)據(jù)才能發(fā)生變化(如圖2-2所示)2.2.2I2C總線數(shù)據(jù)傳送的開始和停止條件在I2C總線數(shù)據(jù)傳送的整個(gè)過程中,需要先有開始條件引發(fā),并由停止信號(hào)結(jié)束,這兩個(gè)條件在數(shù)據(jù)線上的表示如圖2-3所示。開始條件:當(dāng)串行時(shí)鐘(SCL)線上的時(shí)鐘信號(hào)是高電平的時(shí)候串行數(shù)據(jù)(SDA)上的數(shù)據(jù)由高電平變?yōu)榈碗娖?,產(chǎn)生了一個(gè)下降沿,表示數(shù)據(jù)傳輸開始。停止信號(hào):當(dāng)串行時(shí)鐘(SCL)線上的始終信號(hào)是高電平的時(shí)候串行數(shù)據(jù)(SDA)上的數(shù)據(jù)由低電平變?yōu)楦唠娖?,產(chǎn)生了一個(gè)上升沿,表示數(shù)據(jù)傳輸停止。開始和停止條件一般由主機(jī)產(chǎn)生??偩€在開始條件后被認(rèn)為處于忙的狀態(tài)。在停止條件的某段時(shí)間后,總線被認(rèn)為再次處于空閑狀態(tài)。圖2-2I2C總線的數(shù)據(jù)位傳輸圖2-3開始和停止條件2.2.3I2C總線傳輸過程中的應(yīng)答信號(hào)數(shù)據(jù)傳輸必須帶應(yīng)答。相應(yīng)的時(shí)鐘脈沖又主機(jī)產(chǎn)生。在應(yīng)答的時(shí)鐘脈沖器件,發(fā)送機(jī)SDA輸入端保持高電平,接收機(jī)將SDA輸出端拉低,使它在這個(gè)時(shí)鐘脈沖的高電平器件保持穩(wěn)定的低電平。當(dāng)從機(jī)不能應(yīng)答從機(jī)地址時(shí),從機(jī)必須使數(shù)據(jù)線保持高電平,主機(jī)產(chǎn)生一個(gè)停止條件,終止傳輸或者產(chǎn)生重復(fù)起始條件開始新的傳輸。如果執(zhí)行寫操作過程中,從機(jī)應(yīng)答了從機(jī)地址,但是在傳輸了一段時(shí)間后不能接收更多數(shù)據(jù)字節(jié),主機(jī)必須終止傳輸。這個(gè)情況用從機(jī)在第一個(gè)字節(jié)后沒有產(chǎn)生應(yīng)答來表示,從機(jī)使數(shù)據(jù)線保持高電平,主機(jī)產(chǎn)生一個(gè)停止或重復(fù)起始條件。如果執(zhí)行讀操作過程中,主機(jī)必須在從機(jī)傳輸最后一個(gè)字節(jié)之后產(chǎn)生一個(gè)不應(yīng)答信號(hào),之后產(chǎn)生停止條件,而從機(jī)必須將數(shù)據(jù)線保持高電平,允許主機(jī)產(chǎn)生一個(gè)停止或重復(fù)起始條件。2.2.4I2C總線數(shù)據(jù)傳送的重復(fù)開始條件主機(jī)與從機(jī)進(jìn)行通信時(shí),有時(shí)需要切換數(shù)據(jù)的收發(fā)方向。例如,訪問某一具有I2C總線接口的存儲(chǔ)器時(shí),主機(jī)先向存儲(chǔ)器輸入存儲(chǔ)單元的地址信息(發(fā)送數(shù)據(jù)),然后再讀取其中的存儲(chǔ)內(nèi)容(接收數(shù)據(jù))。在切換數(shù)據(jù)的傳輸方向時(shí),可以不必先產(chǎn)生停止條件再開始下次傳輸,而是直接再一次產(chǎn)生開始條件。I2C總線在已經(jīng)處于忙的狀態(tài)下,再一次直接產(chǎn)生起始條件的情況被稱為重復(fù)起始條件。正常的起始條件和重復(fù)起始條件在物理波形上并沒有什么不同,區(qū)別僅僅是在邏輯方面。在進(jìn)行多字節(jié)數(shù)據(jù)傳輸過程中,只要數(shù)據(jù)的收發(fā)方向發(fā)生了切換,就要用到重復(fù)起始條件。2.2.5I2C總線的傳輸過程中的字節(jié)格式總線傳輸時(shí)要按照規(guī)定的數(shù)據(jù)格式,發(fā)送到SDA線上的每個(gè)字節(jié)必須為8位,每次傳輸可以發(fā)送的字節(jié)數(shù)量不受限制,每個(gè)字節(jié)后必須跟一個(gè)應(yīng)答信號(hào)。首先傳輸?shù)氖菙?shù)據(jù)的最高位(MSB)。在開始條件發(fā)出之后,SDA輸入端發(fā)送一個(gè)7位的從機(jī)地址,然后第8位為數(shù)據(jù)方向位(讀/寫位),數(shù)據(jù)方向表明主機(jī)和從機(jī)的數(shù)據(jù)傳輸方向?!?”表示主機(jī)發(fā)送數(shù)據(jù)(寫),“1”表示從機(jī)發(fā)送數(shù)據(jù)(讀)。如果從機(jī)要完成一些其他功能后才能接受或者發(fā)送下一個(gè)完整的數(shù)據(jù)字節(jié),可以使時(shí)鐘SCL保持低電平迫使主機(jī)進(jìn)入等待狀態(tài)。當(dāng)從機(jī)準(zhǔn)備好接受下一個(gè)數(shù)據(jù)字節(jié)并釋放時(shí)鐘SCL后,數(shù)據(jù)傳輸繼續(xù)。數(shù)據(jù)傳輸由主機(jī)產(chǎn)生停止條件結(jié)束。2.2.6I2C總線的器件子地址帶有I2C總線的器件除了有從機(jī)地址(SlaveAddress)外,還可能有子地址。從機(jī)地址是指該器件在I2C總線上被主機(jī)尋址的地址,而子地址是指該器件內(nèi)部不同部件或存儲(chǔ)單元的編址。某些器件(只占少數(shù))內(nèi)部結(jié)構(gòu)比較簡單,可能沒有子地址,只有必須的從機(jī)地址,子地址與從機(jī)地址一樣,子地址實(shí)際上也是像普通數(shù)據(jù)那樣進(jìn)行傳輸?shù)?,傳輸格式仍然是與數(shù)據(jù)相統(tǒng)一的,區(qū)分傳輸?shù)牡降资堑刂愤€是數(shù)據(jù)要靠收發(fā)雙方具體的邏輯約定。子地址的長度必須由整數(shù)個(gè)字節(jié)組成,可能是單字節(jié)(8位子地址),也可能是雙字節(jié)(16位子地址),還可能是3字節(jié)以上,這要看具體器件的規(guī)定。2.2.7I2C總線傳輸信號(hào)的時(shí)序I2C總線數(shù)據(jù)傳送分為讀操作和寫操作(圖2-4),而讀操作還分為按照當(dāng)前位置進(jìn)行讀操作(圖2-6)以及隨即性讀操作(圖2-8),時(shí)序圖如下圖2-4主機(jī)向從機(jī)發(fā)送了一個(gè)字節(jié)的時(shí)序圖2-5主機(jī)向從機(jī)連續(xù)發(fā)送多個(gè)字節(jié)的時(shí)序圖2-5所表示的是一個(gè)最簡單的寫操作的時(shí)序,主機(jī)向從機(jī)傳送一個(gè)7位的地址數(shù)據(jù),然后第8位為讀/寫位,在這個(gè)表示地址的字節(jié)傳輸結(jié)束之后,在串行時(shí)鐘(SCL)的第9個(gè)時(shí)鐘,由從機(jī)發(fā)送一個(gè)應(yīng)答信號(hào)(此時(shí)串行數(shù)據(jù)SDA輸入端在SCL為高電平期間內(nèi)保持高電平,而SDA輸入端輸出為低電平,表示一個(gè)應(yīng)答信號(hào)),接著主機(jī)繼續(xù)向從機(jī)傳輸8位數(shù)據(jù),之后再次由從近發(fā)送一個(gè)應(yīng)答信號(hào),這個(gè)時(shí)候如果還需要發(fā)送數(shù)據(jù)字節(jié),可以繼續(xù)發(fā)送(圖2-5),每發(fā)送8位數(shù)據(jù)后都要由從機(jī)發(fā)送一個(gè)應(yīng)答信號(hào),當(dāng)數(shù)據(jù)發(fā)送完畢后,在最后一個(gè)應(yīng)答信號(hào)之后的那個(gè)SCL處于高電平的時(shí)鐘周期內(nèi),將串行數(shù)據(jù)SDA輸入端從低電平拉為高電平,表示數(shù)據(jù)傳輸停止。圖2-6主機(jī)向從機(jī)接收1個(gè)字節(jié)數(shù)據(jù)的時(shí)序圖2-7主機(jī)向從機(jī)連續(xù)接收多個(gè)字節(jié)數(shù)據(jù)的時(shí)序圖2-6所表示的是一個(gè)最簡單的按照當(dāng)前位置進(jìn)行的讀操作,前9個(gè)周期的時(shí)序與寫操作的時(shí)序一致,不同的是當(dāng)從機(jī)發(fā)送一個(gè)應(yīng)答信號(hào)之后,由從機(jī)向主機(jī)傳輸8位數(shù)據(jù),這個(gè)時(shí)候如果還需要發(fā)送數(shù)據(jù)字節(jié),可以繼續(xù)發(fā)送(圖2-7),每發(fā)送8位數(shù)據(jù)后都要由主機(jī)發(fā)送一個(gè)應(yīng)答信號(hào),當(dāng)數(shù)據(jù)發(fā)送完畢后,在最后一個(gè)數(shù)據(jù)字節(jié)傳送結(jié)束之后的那個(gè)SCL處于高電平的時(shí)鐘周期內(nèi)SDA的輸入端保持高電平,而SDA輸入端輸出也為高電平,表示一個(gè)不應(yīng)答信號(hào)(圖中Nack(Notacknowledge)表示),之后的一個(gè)時(shí)鐘周期內(nèi)產(chǎn)生停止條件,表示數(shù)據(jù)傳輸停止。圖2-8主機(jī)向從機(jī)隨即接收多個(gè)字節(jié)數(shù)據(jù)的時(shí)序圖2-8所表示的是一個(gè)多字節(jié)的隨機(jī)性讀操作,選擇性讀操作允許主器件對(duì)寄存器的任意字節(jié)進(jìn)行讀操作,主機(jī)首先通過發(fā)送起始信號(hào)、從機(jī)地址和它想要讀取的字節(jié)數(shù)據(jù)的地址執(zhí)行一個(gè)偽寫操作。在從機(jī)應(yīng)答之后,主機(jī)重新發(fā)送起始信號(hào)和從機(jī)地址,此時(shí)讀/寫位為“1”進(jìn)行讀操作,從機(jī)響應(yīng)并發(fā)送應(yīng)答信號(hào),然后輸出所要求的一個(gè)8位字節(jié)數(shù)據(jù),主器件發(fā)送應(yīng)答信號(hào),這個(gè)時(shí)候如果還需要發(fā)送數(shù)據(jù)字節(jié),可以繼續(xù)發(fā)送,每發(fā)送8位數(shù)據(jù)后都要由主機(jī)發(fā)送一個(gè)應(yīng)答信號(hào),當(dāng)數(shù)據(jù)發(fā)送完畢后,在最后一個(gè)數(shù)據(jù)字節(jié)傳送結(jié)束之后的那個(gè)SCL處于高電平的時(shí)鐘周期內(nèi)SDA的輸入端保持高電平,而SDA輸入端輸出也為高電平,表示一個(gè)不應(yīng)答信號(hào)(圖中Nack(Notacknowledge)表示),之后的一個(gè)時(shí)鐘周期內(nèi)產(chǎn)生停止條件,表示數(shù)據(jù)傳輸停止。2.3本章小結(jié)本章主要介紹了I2C的有關(guān)知識(shí),從I2C總線的概念開始,介紹了I2C總線的開始和停止條件以及如何傳輸數(shù)據(jù)才有效,然后介紹了I2C總線傳輸過程中應(yīng)答信號(hào)的產(chǎn)生和作用,以及位傳輸和字節(jié)傳輸需要注意的每個(gè)時(shí)鐘周期代表的意義,最后,介紹了I2C總線工作的各種狀態(tài)的時(shí)序,以便下面用語言對(duì)I2C總線進(jìn)行設(shè)計(jì)與實(shí)現(xiàn)。第3章VHDL語言的基礎(chǔ)知識(shí)3.1VHDL語言的概述VHDL語言是一種用于電路設(shè)計(jì)的高級(jí)語言。它在80年代的后期出現(xiàn)。最初是由美國國防部開發(fā)出來供美軍用于提高設(shè)計(jì)的可靠性和縮減開發(fā)周期的一種使用范圍較小的設(shè)計(jì)語言。VHDL語言主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式和描述風(fēng)格與句法是十分類似于一般的計(jì)算機(jī)高級(jí)語言。VHDL的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),或稱設(shè)計(jì)實(shí)體(可以是一個(gè)元件,一個(gè)電路模塊或一個(gè)系統(tǒng))分成外部(或稱可是部分,及端口)和內(nèi)部(或稱不可視部分),既涉及實(shí)體的內(nèi)部功能和算法完成部分。在對(duì)一個(gè)設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計(jì)就可以直接調(diào)用這個(gè)實(shí)體。這種將設(shè)計(jì)實(shí)體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計(jì)的基本點(diǎn)。3.2VHDL語言的特點(diǎn)與其他的硬件描述語言相比,VHDL具有更強(qiáng)的行為描述能力,從而決定了它成為系統(tǒng)設(shè)計(jì)領(lǐng)域最佳的硬件描述語言。強(qiáng)大的行為描述能力是避開具體的器件結(jié)構(gòu),從邏輯行為上描述和設(shè)計(jì)大規(guī)模電子系統(tǒng)的重要保證。VHDL最初是作為一種仿真標(biāo)準(zhǔn)格式出現(xiàn)的,因此VHDL既是一種硬件電路描述和設(shè)計(jì)語言,也是一種標(biāo)準(zhǔn)的網(wǎng)表格式,還是一種仿真語言,其豐富的仿真語句和庫函數(shù),使得在任何大系統(tǒng)的設(shè)計(jì)早期,就能用于查驗(yàn)設(shè)計(jì)系統(tǒng)的功能可行性,隨時(shí)可對(duì)設(shè)計(jì)進(jìn)行仿真模擬。即在遠(yuǎn)離門級(jí)的高層次上進(jìn)行模擬,使設(shè)計(jì)者對(duì)整個(gè)工程設(shè)計(jì)的結(jié)構(gòu)和功能的可行性做出決策。VHDL語言的行為描述能力和程序結(jié)構(gòu)決定了它具有支持大規(guī)模設(shè)計(jì)的分解和已有設(shè)計(jì)的再利用功能,符合市場所需求的,大規(guī)模系統(tǒng)高效、高速的完成必須由多人甚至多個(gè)開發(fā)組共同并行工作才能實(shí)現(xiàn)的特點(diǎn)。VHDL中設(shè)計(jì)實(shí)體的概念、程序包的概念、設(shè)計(jì)庫的概念為設(shè)計(jì)的分解和并行工作提供了有力的支持。VHDL對(duì)設(shè)計(jì)的描述具有相對(duì)獨(dú)立性,設(shè)計(jì)者可以不懂硬件的結(jié)構(gòu),也不必管最終設(shè)計(jì)實(shí)現(xiàn)的目標(biāo)器件是什么,而進(jìn)行獨(dú)立的設(shè)計(jì)。由于VHDL具有類屬描述語句和子程序調(diào)用等功能,對(duì)于已完成的設(shè)計(jì),在不改變?cè)闯绦虻臈l件下,只需改變端口類屬參量或函數(shù),就能輕易地改變?cè)O(shè)計(jì)的規(guī)模和結(jié)構(gòu)[2]。3.3VHDL語言的程序結(jié)構(gòu)一個(gè)完整的VHDL語言程序通常包括實(shí)體、構(gòu)造體、配置、包集合和庫5個(gè)部分。3.3.1VHDL程序的庫庫是經(jīng)編譯后的數(shù)據(jù)的集合,它存放包集合定義、實(shí)體定義、構(gòu)造體定義和配置定義。在VHDL語言中,庫的說明總是放在設(shè)計(jì)單元的最前面:LIBRARY庫名;這樣,在設(shè)計(jì)單元內(nèi)的語句就可以使用庫中的數(shù)據(jù)。由此可見,庫的好處就在于使設(shè)計(jì)者可以共享已經(jīng)編譯過的設(shè)計(jì)結(jié)果。在VHDL語言中可以存在多個(gè)不同的庫,但是庫和庫之間是獨(dú)立的,不能互相嵌套。3.3.2包集合包集合是用來羅列VHDL語言中所要用到的信號(hào)定義、常數(shù)定義、數(shù)據(jù)類型、元件語言、函數(shù)定義和過程定義等,它是一個(gè)可編譯的設(shè)計(jì)單元,也是庫結(jié)構(gòu)的一個(gè)層次,要使用包集合時(shí)可以用USE語句說明。例如:useieee.std_logic_unsigned.all;該語句表示在VHDL程序中要使用名為std_logic_unsigned的包集合中的所有定義或者說明項(xiàng)。包集合的結(jié)構(gòu)如下所示:PACKAGE包集合名IS[說明語句]END包集合名;——包集合標(biāo)題PACKAGEBODY包集合名IS[說明語句]ENDBODY;——包集合體一個(gè)包集合由兩大部分組成:包集合標(biāo)題和包集合體、包集合體可以省略不寫。一般包集合標(biāo)題列出所有項(xiàng)的名稱,而包集合體具體給出各項(xiàng)的細(xì)節(jié)。3.3.3實(shí)體說明任何一個(gè)基本設(shè)計(jì)單元的實(shí)體說明都具有如下結(jié)構(gòu):ENTITY實(shí)體名IS[類屬參數(shù)說明][端口說明]END實(shí)體名;其中類屬參數(shù)說明必須放在端口說明之前,用于指定參數(shù)。端口說明是對(duì)基本設(shè)計(jì)實(shí)體與外部接口的描述,也可以說是對(duì)外部引腳信號(hào)的名稱,數(shù)據(jù)類型和輸入、輸出方向的描述。其一般書寫格式如下:PORT(端口名:方向數(shù)據(jù)類型名;...端口名:方向數(shù)據(jù)類型名);端口名是定義每個(gè)外部引腳的名稱。端口方向用來定義外部引腳的信號(hào)方向是輸入還是輸出,分為5種:IN(輸入),OUT(輸出而且構(gòu)造體內(nèi)部不能再使用),INOUT(雙向),BUFFER(輸出而且構(gòu)造體內(nèi)部可以再次使用),LINKAGE(不指定方向,無論出入都可以連接)。數(shù)據(jù)類型在邏輯電路設(shè)計(jì)中只用到兩種:BIT和BIT_VECTOR。當(dāng)端口被說明為BIT數(shù)據(jù)類型時(shí),該端口的信號(hào)取值只可能是“0”或者“1”。這里的“0”和“1”是指邏輯值。當(dāng)端口被說明為BIT_VECTOR數(shù)據(jù)類型時(shí),該端口的取值可能是一組二進(jìn)制位的值。3.3.4構(gòu)造體構(gòu)造體定義了設(shè)計(jì)單元具體的功能。構(gòu)造體對(duì)其基本設(shè)計(jì)單元的輸入輸出關(guān)系可以用3種方式進(jìn)行描述,即行為描述、寄存描述和結(jié)構(gòu)描述。由于構(gòu)造體是對(duì)實(shí)體功能的具體描述,因此它一定要跟在實(shí)體的后面。一個(gè)構(gòu)造體的具體結(jié)構(gòu)描述如下:ARCHITECTURE構(gòu)造體名OF實(shí)體名IS[定義語句]BEGIN[并行處理語句]END構(gòu)造體名;構(gòu)造體名是對(duì)本構(gòu)造體的命名,是該構(gòu)造體的唯一名稱。OF后面緊跟的實(shí)體名表明了該構(gòu)造體所對(duì)應(yīng)的是哪一個(gè)實(shí)體。定義語句用來對(duì)構(gòu)造體內(nèi)部所使用的信號(hào)、常數(shù)、數(shù)據(jù)類型和函數(shù)進(jìn)行定義,格式和端口說明的語句一樣,但因?yàn)樗莾?nèi)部連接的信號(hào),故沒有也不需要有方向的說明。并行處理語句具體的描述了構(gòu)造體的行為[3]。3.3.5配置一個(gè)實(shí)體可以包含多個(gè)結(jié)構(gòu)體,配置的作用就是根據(jù)需要選擇實(shí)體的結(jié)構(gòu)體。配置語句描述層與層之間的連接關(guān)系以及實(shí)體與結(jié)構(gòu)之間的連接關(guān)系,設(shè)計(jì)者可以利用這種配置語句來選擇不同的構(gòu)造體,使其與要設(shè)計(jì)的實(shí)體相對(duì)應(yīng)。在仿真某一實(shí)體時(shí),可以利用配置來選擇不同的結(jié)構(gòu)體,進(jìn)行性能對(duì)比試驗(yàn)以得到性能最佳的結(jié)構(gòu)體。配置語句的基本書寫格式如下:CONFIGURATION配置名OF實(shí)體名IS[語句說明]END配置名;經(jīng)常使用的配置有以下三類:默認(rèn)配置、元件配置和結(jié)構(gòu)配置[4]。3.4本章小結(jié)本章主要介紹了VHDL的有關(guān)知識(shí),,主要介紹了VHDL特點(diǎn)以及如何用VHDL語言編寫程序,首先定義庫函數(shù),然后引入包集合,定義實(shí)體,構(gòu)造體,注意構(gòu)造體內(nèi)可以包括子程序,最后定義配置。設(shè)計(jì)工具和設(shè)計(jì)方法4.1設(shè)計(jì)工具本次設(shè)計(jì)使用的是Altera公司的設(shè)計(jì)軟件QuartusII,用VHDL語言編程實(shí)現(xiàn)的。QuartusII軟件是Altera提供的綜合性開發(fā)軟件,可以輕易地滿足特定地設(shè)計(jì)需求。它支持原理圖、VHDL、VerilogHDL等多種設(shè)計(jì)輸入形式,內(nèi)有綜合器以及仿真器,可以完成從設(shè)計(jì)輸入到硬件配置的完整設(shè)計(jì)流程。QuartusII軟件允許用戶在設(shè)計(jì)流程的每個(gè)階段使用軟件提供的軟件圖形用戶界面、EDA工具界面或命令行方式。其圖形用戶界面的功能分為:設(shè)計(jì)輸入、綜合、布局布線、時(shí)序分析、仿真、編程、系統(tǒng)設(shè)計(jì)、軟件開發(fā)、基于塊的設(shè)計(jì)、EDA界面、時(shí)序收斂、調(diào)試、工程更改管理等[5]。在本次設(shè)計(jì)中主要用到前面幾個(gè)功能,下面坐下簡單的介紹:設(shè)計(jì)輸入是使用QuartusII軟件的模塊輸入方式、文本輸入方式、Core輸入方式和EDA設(shè)計(jì)輸入工具等表達(dá)用戶的電路構(gòu)思,同時(shí)使用分配編輯器(AssignmentEditor)設(shè)定初始設(shè)計(jì)約束條件。綜合是將HDL語言、原理圖等設(shè)計(jì)輸入翻譯成由與、或、非門,RAM,觸發(fā)器等基本邏輯單元組成的邏輯鏈接(網(wǎng)表),并根據(jù)目標(biāo)與要求(約束條件優(yōu)化所生成的邏輯連接,輸出edf或vqm等標(biāo)準(zhǔn)格式的網(wǎng)表文件,供布局布線器進(jìn)行實(shí)現(xiàn)。除了可以用QuartusII軟件的綜合工具外,也可以使用第三方綜合工具,生成與QuartusII軟件配合使用的edf網(wǎng)表文件或vqm文件。布局布線的輸入文件是綜合后的網(wǎng)表文件,QuartusII軟件中布局布線包含分析布局布線結(jié)果、優(yōu)化布局布線、增量布局布線和通過反標(biāo)保留分配等[6]。時(shí)序分析是允許用戶分析設(shè)計(jì)中所有邏輯的時(shí)序性能,并協(xié)助引導(dǎo)布局布線滿足設(shè)計(jì)中的時(shí)序分析要求。它觀察和報(bào)告時(shí)序信息,如建立時(shí)間、保持時(shí)間、時(shí)鐘至輸出延時(shí)、最大時(shí)鐘頻率以及設(shè)計(jì)的其他時(shí)序特性,可以使用時(shí)序分析生成的信息來分析、調(diào)試、和驗(yàn)證設(shè)計(jì)的時(shí)序性能。仿真分為功能仿真和時(shí)序仿真。功能仿真主要是驗(yàn)證電路功能是否符合設(shè)計(jì)要求,它可以在不同的層次進(jìn)行,它可以對(duì)基本單元仿真也可以對(duì)幾個(gè)基本單元構(gòu)成的單元進(jìn)行仿真,直至系統(tǒng)級(jí)的仿真;時(shí)序仿真包含了延時(shí)信息,它能較好的反映芯片的設(shè)計(jì)工作情況??梢允褂肣uartusII集成的仿真工具仿真,也可以使用第三方工具對(duì)設(shè)計(jì)進(jìn)行仿真,如Modelsim。編程和配置是在全編譯成功后,對(duì)Altera器件進(jìn)行編程或配置,它包括Assemble(生成編程文件)、Programmer(建立包含設(shè)計(jì)所用器件名稱和選項(xiàng)的鏈?zhǔn)轿募⑥D(zhuǎn)換編程文件等。EDA界面中的EDANetlistWriter是生成時(shí)序仿真所需要的包含延遲信息的文件。除了上述工具外,QuartusII軟件還提供第三方工具的連接。如綜合工具Synplify、Synplifypro、Leonardo,仿真工具M(jìn)odelsim、AldecHDL等這些業(yè)內(nèi)公認(rèn)的專業(yè)綜合、仿真工具。4.2基于FPGA的數(shù)字電路的設(shè)計(jì)流程隨著FPGA容量,功能及其可靠性的提高,在現(xiàn)代數(shù)字通信系統(tǒng)的中使用率越來越高,采用FPGA設(shè)計(jì)數(shù)字電路已經(jīng)成為數(shù)字電路系統(tǒng)領(lǐng)域的主要方式之一[7]。在信號(hào)的處理以及整個(gè)系統(tǒng)的控制中,F(xiàn)PGA不但能大大縮減電路的體積,提高電路的穩(wěn)定性,而且其先進(jìn)的開發(fā)工具使整個(gè)系統(tǒng)的設(shè)計(jì)周期大大縮短[8]。主要的設(shè)計(jì)流程圖如下[9]:設(shè)計(jì)準(zhǔn)備:在進(jìn)行設(shè)計(jì)之前,必須了解項(xiàng)目設(shè)計(jì)的需求,首先要根據(jù)任務(wù)書要確定方案,選擇使用說明設(shè)備等準(zhǔn)備工作。設(shè)計(jì)輸入:將設(shè)計(jì)的系統(tǒng)或電路以某種形式表現(xiàn)出來,輸入到計(jì)算機(jī)上,包括狀態(tài)圖輸入、圖形輸入和HDL語言輸入,常用的是后兩種。HDL語言在描述狀態(tài)機(jī),控制邏輯,總線功能方面比較強(qiáng);原理圖輸入比較適合頂層設(shè)計(jì)、數(shù)據(jù)通路邏輯;在本文的設(shè)計(jì)中,使用的VHDL語言輸入。功能仿真:功能仿真也稱前仿真或行為仿真。它是在沒有考慮器件延時(shí)和布線延時(shí)的理想情況下,對(duì)源代碼進(jìn)行邏輯上的功能驗(yàn)證,以便及時(shí)地進(jìn)行修改。設(shè)計(jì)處理:包括了邏輯分析、綜合和優(yōu)化三個(gè)步驟。邏輯分析是對(duì)HDL源文件進(jìn)行分析并糾正語法錯(cuò)誤。綜合就是給定的電路實(shí)現(xiàn)功能和實(shí)現(xiàn)此電路的約束條件,如速度、功耗、成本及電路類型等,通過計(jì)算機(jī)進(jìn)行優(yōu)化處理,獲得一個(gè)能滿足上述要求的電路設(shè)計(jì)方案,該方案必須同時(shí)滿足預(yù)期的功能和約束條件;優(yōu)化則是根據(jù)用戶的設(shè)計(jì)約束,對(duì)速度和面積進(jìn)行邏輯優(yōu)化。設(shè)計(jì)實(shí)現(xiàn)利用實(shí)現(xiàn)工具把邏輯映射到目標(biāo)器件結(jié)構(gòu)的資源中,決定邏輯的最佳布局,選擇邏輯與輸入輸出功能連接的布線通道進(jìn)行連線,并產(chǎn)生相應(yīng)的文件,供后續(xù)的時(shí)序仿真和下載。時(shí)序仿真時(shí)序仿真是FPGA設(shè)計(jì)的重要步驟之一,又稱后仿真,在做完布局布線后進(jìn)行,仿真中包含布局布線產(chǎn)生的器件延時(shí),連線延時(shí)信息。它與特定的器件有關(guān),主要驗(yàn)證程序在目標(biāo)器件上的時(shí)序關(guān)系,是接近器件真實(shí)工作情況的仿真,仿真精度比較高。下載驗(yàn)證下載又稱配置,是在功能仿真和時(shí)序仿真正確的前提下,將綜合后形成的文件下載到具體的FPGA芯片中。然后再進(jìn)行實(shí)際器件的物理測試即為電路驗(yàn)證。這是最終驗(yàn)證設(shè)計(jì)項(xiàng)目在目標(biāo)系統(tǒng)上的實(shí)際工作情況,以排除錯(cuò)誤,改正設(shè)計(jì)。4.3本章小結(jié)本章首先介紹了這次設(shè)計(jì)需要用到的設(shè)計(jì)軟件QuartusII的特點(diǎn)和功能。然后介紹了居于FPGA的數(shù)字電路的設(shè)計(jì)流程,從開始的準(zhǔn)備到數(shù)據(jù)的輸入與功能運(yùn)行,然后到中間的調(diào)試再進(jìn)行功能運(yùn)行,最后確認(rèn)無誤了帶入時(shí)序信號(hào)然后進(jìn)行時(shí)序仿真,最后下載具體的FPGA芯片中進(jìn)行電路驗(yàn)證,調(diào)試程序,最后得到正確結(jié)果。第5章I2C總線的功能設(shè)計(jì)5.1I2C總線完成的功能I2C總線中,數(shù)據(jù)信號(hào)的傳輸是由串行數(shù)據(jù)線SDA和串行時(shí)鐘線SCL完成的,可發(fā)送和接收數(shù)據(jù)。I2C總線是為了實(shí)現(xiàn)主機(jī)和從機(jī)之間的數(shù)據(jù)傳輸,當(dāng)從主機(jī)向從機(jī)發(fā)送數(shù)據(jù)時(shí),實(shí)現(xiàn)的是I2C總線的寫操作功能,主機(jī)先發(fā)送一個(gè)開始條件,之后主機(jī)先向SDA線發(fā)送從機(jī)的7位地址數(shù)據(jù)以及第8位寫位,數(shù)據(jù)經(jīng)過SDA線時(shí),開始在與SDA線連接的器件中搜索對(duì)應(yīng)的地址,找到后,從機(jī)反饋一個(gè)應(yīng)答信號(hào),這個(gè)時(shí)候主機(jī)開始通過SDA線向從機(jī)發(fā)送數(shù)據(jù),每一個(gè)字節(jié)8位數(shù)據(jù)傳輸結(jié)束,從機(jī)都要反饋一個(gè)應(yīng)答信號(hào)。得到從機(jī)的最后一個(gè)應(yīng)答信號(hào)后,主機(jī)發(fā)送一個(gè)停止信號(hào)。當(dāng)主機(jī)接收從機(jī)發(fā)送的數(shù)據(jù)時(shí),實(shí)現(xiàn)的是I2C總線的讀操作功能,這個(gè)時(shí)候主機(jī)先向SDA線發(fā)送從機(jī)的7位地址數(shù)據(jù)以及第8位讀位,數(shù)據(jù)經(jīng)過SDA線時(shí),開始在與SDA線連接的期間中搜索對(duì)應(yīng)的地址,找到后從機(jī)反饋一個(gè)應(yīng)答信號(hào),這個(gè)時(shí)候從機(jī)開始通過SDA線向主機(jī)發(fā)送數(shù)據(jù),每個(gè)字節(jié)8位數(shù)據(jù)傳輸結(jié)束,主機(jī)要向從機(jī)反饋個(gè)應(yīng)答信號(hào)(如果從機(jī)發(fā)送完最后一個(gè)字節(jié)的時(shí)候,主機(jī)不用發(fā)送應(yīng)答信號(hào),而發(fā)送一個(gè)停止信號(hào))。如果主機(jī)有選擇的接收從機(jī)發(fā)送的數(shù)據(jù),實(shí)現(xiàn)的是I2C總線的選擇性讀操作功能,這個(gè)時(shí)候主機(jī)先向SDA線發(fā)送從機(jī)的7位地址數(shù)據(jù)以及第8位寫位,數(shù)據(jù)經(jīng)過SDA線時(shí),開始在與SDA線連接的器件中搜索對(duì)應(yīng)的地址,找到后,從機(jī)反饋一個(gè)應(yīng)答信號(hào),這個(gè)時(shí)候主機(jī)通過SDA線向從機(jī)發(fā)送字節(jié)8位的地址位,從機(jī)收到后反饋一個(gè)應(yīng)答信號(hào)。之前完成了一次偽寫操作。這個(gè)時(shí)候主機(jī)發(fā)送一個(gè)重新開始信號(hào),重新向SDA發(fā)送從機(jī)的7位地址數(shù)據(jù)以及第8位讀位,找到相應(yīng)的從機(jī)后,從機(jī)反饋一個(gè)應(yīng)答信號(hào),然后從機(jī)將該字節(jié)位開始的數(shù)據(jù)通過SDA線向主機(jī)發(fā)送,每個(gè)字節(jié)8位數(shù)據(jù)傳輸結(jié)束,主機(jī)要向從機(jī)反饋個(gè)應(yīng)答信號(hào)(如果從機(jī)發(fā)送完最后一個(gè)字節(jié)的時(shí)候,主機(jī)不用發(fā)送應(yīng)答信號(hào),而發(fā)送一個(gè)停止信號(hào))。這兩線都是由CPU引出,其它受控電路均掛接SDA和SCL線上,只有CPU具有控制權(quán),在其控制下,CPU即可以向數(shù)據(jù)總線發(fā)送信息,又能讀取被控器件反饋的響應(yīng)信息??偩€上的受控電路和模塊都有唯一的地址,按類型對(duì)他們進(jìn)行分配。這樣,各控制電路雖然掛在同一條總線上,卻彼此獨(dú)立,互不相關(guān)。I2C總線控制器是微處理器與I2C器件之間的接口,它可以使性能各異、速度不同,功能不一的外設(shè)與微處理器之間方便快捷地進(jìn)行通信。即要接收處理器的控制信號(hào),命令與數(shù)據(jù);還要發(fā)送I2C器件的數(shù)據(jù)和狀態(tài)響應(yīng)到處理器實(shí)現(xiàn)處理器與I2C器件之間的通信機(jī)制。鑒于I2C總線的規(guī)范,其接口主要完成的功能如下:1寫操作(串行轉(zhuǎn)并行)2順序讀操作(并行轉(zhuǎn)串行)3開始/停止/重啟/響應(yīng)各種觸發(fā)狀態(tài)4讀寫控制位和啟動(dòng)位5隨機(jī)讀取總線數(shù)據(jù)和狀態(tài)5.2用VHDL語言實(shí)現(xiàn)寫操作時(shí)的串行轉(zhuǎn)并行寫操作時(shí),輸入SDA上的串行數(shù)據(jù),輸出從機(jī)上的并行數(shù)據(jù),用VHDL語言實(shí)現(xiàn)如圖5-1和圖5-2圖5-1串行轉(zhuǎn)并行模塊圖圖5-2串行轉(zhuǎn)并行仿真圖5.3用VHDL語言實(shí)現(xiàn)順序讀操作時(shí)的并行轉(zhuǎn)串行順序讀操作時(shí),輸入從機(jī)上的并行數(shù)據(jù),輸出SDA的串行數(shù)據(jù),用VHDL語言實(shí)現(xiàn)如圖5-3和圖5-4圖5-3并行轉(zhuǎn)串行模塊圖圖5-4并行轉(zhuǎn)串行仿真圖5.4I2C總線控制器的頂層設(shè)計(jì)I2C總線控制器就是將主機(jī)和從機(jī)連接起來,它一方面要通過數(shù)據(jù)總線與主機(jī)交換數(shù)據(jù),另一方面通過I2C總線與從機(jī)交換數(shù)據(jù),使他們之間能夠進(jìn)行通訊。根據(jù)據(jù)總線控制器要完成的功能,需要2條8位數(shù)據(jù)線,1條8位地址線,1條串行時(shí)鐘線,1條串行數(shù)據(jù)線,1條讀寫控制線,1條啟動(dòng)線,1條清零線,1條應(yīng)答信號(hào)線。其詳細(xì)的輸入輸出接口信號(hào)及其功能如表5-1所示,其中kongzhi是芯片的控制信號(hào),只有當(dāng)它啟動(dòng)之后,其它的地址、復(fù)位和命令信號(hào)才能啟動(dòng)。表5-1I2C總線接口信號(hào)表端口名方向描述kongzhi輸入啟動(dòng)信號(hào)scl輸入時(shí)鐘輸入clr輸入清零位dizhi輸入地址信號(hào)輸入shuru輸入讀操作中從機(jī)發(fā)送的數(shù)據(jù)duxie輸入讀寫控制信號(hào)shuchu輸出寫操作中主機(jī)接收的數(shù)據(jù)ack輸出從機(jī)的應(yīng)答信號(hào)sda輸入/輸出數(shù)據(jù)輸入輸出信號(hào)它的外圍接口設(shè)備如圖5-5圖5-6圖5-7所示:圖5-5I2C總線頂層設(shè)計(jì)模塊圖圖5-6I2C總線控制器的外圍接口功能框圖圖5-7I2C總線控制器的端口圖5.5本章小結(jié)本章首先介紹了I2C總線的功能,分為三種寫操作,順序讀操作和選擇性讀操作,然后根據(jù)這3種操作用VHDL語言做了其中比較核心的串行與并行之間的轉(zhuǎn)換,附有仿真圖,最后完成了I2C總線的頂層設(shè)計(jì),為完成下章的I2C總線的時(shí)序?qū)崿F(xiàn)做了鋪墊。第6章I2C總線的硬件時(shí)序仿真本文在Quartus7.1環(huán)境下對(duì)I2C總線控制其時(shí)序進(jìn)行仿真,上一章中已經(jīng)對(duì)部分模塊進(jìn)行了功能仿真。而時(shí)序仿真是在FPGA布局布線完成之后進(jìn)行的仿真,這一級(jí)別的仿真可以真實(shí)地模擬真實(shí)電路的工作情況。為了確認(rèn)I2C總線控制器是否能夠正確運(yùn)行,我們建立一個(gè)模擬的仿真環(huán)境,主器件為微控制器,從器件是EEPROM。I2C總線規(guī)范規(guī)定,每個(gè)從器件都擁有一個(gè)唯一的7位從器件地址,讓主機(jī)來進(jìn)行選擇,通常7位中四個(gè)較重要的位(MSB――theMostSignificantBit)為固定的,并依器件本身性質(zhì)的分類區(qū)分,如1010即代表串行EEPROM,而其他三個(gè)較不重要的位(LSB),即A2、A1與A0則可以通過硬件電子引腳設(shè)定,并取得8個(gè)不同的I2C地址組合,因此在同一個(gè)I2C總線上可以有8個(gè)相同類型的器件[10]。6.1器件的選擇在QuartusⅡ平臺(tái)上,對(duì)FPGA進(jìn)行仿真之前,要選擇一個(gè)器件。FPGA器件的選用同其它通用邏輯器件不同,除考慮器件本身的性能外,軟件工具也很重要[11]。如何選用合適的FPGA器件,不只是一件一次性的工作,還涉及到設(shè)計(jì)軟件的選用以及今后進(jìn)一步工作的開展。首先,用戶應(yīng)該根據(jù)自身的技術(shù)環(huán)境、技術(shù)條件、使用習(xí)慣等選擇一種合適的軟件工具,同時(shí)要兼顧EDA技術(shù)的發(fā)展。占據(jù)優(yōu)勢的軟件供應(yīng)商同大多數(shù)芯片制造商建立了良好的合作伙伴關(guān)系,所以,擁有一種設(shè)計(jì)軟件,再進(jìn)一步選擇不同的工具庫,或增加部分配置,即可對(duì)不同廠家的不同種類的FPGA產(chǎn)品進(jìn)行設(shè)計(jì)。其次,用戶可根據(jù)設(shè)計(jì)的需要確定選擇哪一類FPGA器件。如果用于航天、軍事領(lǐng)域,反熔絲技術(shù)的一次編程型FPGA是首選;如果要完成多種算術(shù)運(yùn)算,或是要求工作在較高速度下,EPLD/CPLD是較好的選擇;而對(duì)于功能復(fù)雜的時(shí)序邏輯電路而言,標(biāo)準(zhǔn)門陣列單元型的FPGA具有集成度高、保持靈活和功耗低的優(yōu)點(diǎn)。第三,選定某一廠家的產(chǎn)品,生產(chǎn)同類器件的廠家很多,一般依據(jù)以下準(zhǔn)則進(jìn)行選擇。(1)選擇有設(shè)計(jì)軟件支持的廠家的芯片,這樣可減少資本投入,降低成本。(2)選擇產(chǎn)品設(shè)計(jì)性能改進(jìn)有余量的。如果所選擇的芯片是某一廠家產(chǎn)品中容量最大,或是速度最高的,那么,一旦設(shè)計(jì)需要改進(jìn),則有可能在該廠家的芯片中再選不出合適的來了。(3)設(shè)計(jì)應(yīng)用的延續(xù)性和可擴(kuò)展性。如果所選廠家的產(chǎn)品具有很大的局限性,則有可能僅僅適用于很少一部分設(shè)計(jì),從而造成設(shè)計(jì)軟件投入上的浪費(fèi)。(4)選擇性能價(jià)格比最優(yōu)的。盡管象Xilinx、Altera這樣的器件生產(chǎn)廠家都在通過降價(jià)來作市場宣傳,大多數(shù)FPGA芯片的價(jià)格還是比較高的,所有在滿足上述準(zhǔn)則的情況下適當(dāng)考慮價(jià)格也是有必要的。參考產(chǎn)品說明書,了解芯片容量、外引腳個(gè)數(shù)、封裝形式、速度級(jí)別以及溫度范圍等等。選擇合適芯片的前提是對(duì)設(shè)計(jì)要求的全面分析和了解。設(shè)計(jì)人員應(yīng)結(jié)合芯片的內(nèi)部結(jié)構(gòu)適當(dāng)調(diào)整設(shè)計(jì)以盡可能充分地利用芯片資源[12]。根據(jù)以上原則,在本設(shè)計(jì)中,選擇了Altera公司的cycloneII系列的EP2C35器件,它采用90nm技術(shù),就有較大的容量和速度,具有強(qiáng)大的系統(tǒng)級(jí)功能以及重要的改進(jìn)和新特性,是同類產(chǎn)品中成本最低密度最大的FPGA。6.2硬件仿真本課題設(shè)計(jì)的控制器主要是針對(duì)8位的微處理,為了更充分地體現(xiàn)它在系統(tǒng)中的應(yīng)用,在對(duì)設(shè)計(jì)進(jìn)行仿真的時(shí)候,建立一個(gè)仿真環(huán)境,但是并不將它們具體的模塊體現(xiàn)在論文中。微處理器為控制器提供輸入信號(hào),控制器的輸出信號(hào)連接到EEPROM上。在QuartusⅡ平臺(tái)上,根據(jù)器件的datasheet,進(jìn)行管腳分配,然后對(duì)項(xiàng)目進(jìn)行語法分析,編譯,EDA工具可以生成一個(gè)RTL級(jí)的連接圖,影射到工藝庫,項(xiàng)目會(huì)生成一個(gè)工藝庫影射瀏覽圖,生成的圖形見附錄,之后進(jìn)行綜合,時(shí)序分析。為了驗(yàn)證系統(tǒng)的功能性,在時(shí)序仿真之前,首先進(jìn)行功能級(jí)的仿真,各個(gè)模塊的仿真波形見附錄。然后進(jìn)行布局布線,創(chuàng)建波形圖,進(jìn)行時(shí)序仿真,也就是后級(jí)仿真,它能夠真實(shí)地反映系統(tǒng)的工作情況。下面具體分析幾個(gè)仿真圖形6.2.1用VHDL語言實(shí)現(xiàn)寫字節(jié)周期首先控制端口先發(fā)送一個(gè)啟動(dòng)信號(hào)(本設(shè)計(jì)中用一個(gè)下降沿作為啟動(dòng)信號(hào)),系統(tǒng)接到啟動(dòng)信號(hào)后,所有的器件開始工作。寫操作中,由主機(jī)先向SDA串行數(shù)據(jù)線發(fā)送一個(gè)開始信號(hào),之后發(fā)送一個(gè)7位的從機(jī)地址以及第8位的寫位(“0”),為尋找此次操作的目標(biāo)器件,因?yàn)樗械膹臋C(jī)都已經(jīng)于SDA線相連,然后開始根據(jù)這個(gè)地址搜索所尋找的從機(jī),這個(gè)過程I2C總線將自行完成,找到后,從機(jī)會(huì)發(fā)送一個(gè)應(yīng)答信號(hào),接到應(yīng)答信號(hào)后主機(jī)開始向從機(jī)發(fā)送數(shù)據(jù),因?yàn)镾DA為串行線,而從機(jī)位并行輸出,這個(gè)時(shí)候完成的工作就是上一章的做的寫操作的時(shí)候的串行轉(zhuǎn)并行,每傳輸完畢一個(gè)字節(jié)(8位)從機(jī)就會(huì)發(fā)送一個(gè)應(yīng)答信號(hào),當(dāng)最后一個(gè)字節(jié)發(fā)送完畢后,主機(jī)在接受到最后一個(gè)應(yīng)答信號(hào)的時(shí)候就會(huì)發(fā)送一個(gè)停止信號(hào),標(biāo)志這次寫操作的結(jié)束。圖6-1寫字節(jié)操作仿真圖6.2.1用VHDL語言實(shí)現(xiàn)順序讀字節(jié)周期首先控制端口發(fā)送一個(gè)啟動(dòng)信號(hào),系統(tǒng)接到啟動(dòng)信號(hào)后,所有的器件開始工作。順序讀字節(jié)操作中,由主機(jī)先向SDA串行數(shù)據(jù)線發(fā)送一個(gè)開始信號(hào),之后發(fā)送一個(gè)7位的從機(jī)地址以及第8位讀位“1”,為尋找此次操作的目標(biāo)器件,因?yàn)樗械膹臋C(jī)都已經(jīng)于SDA線相連,然后開始根據(jù)這個(gè)地址搜索所尋找的從機(jī),這個(gè)過程I2C總線將自行完成,找到后,從機(jī)會(huì)發(fā)送一個(gè)應(yīng)答信號(hào),本次操作要求是接收從機(jī)的數(shù)據(jù),并沒有選擇接受哪個(gè)子地址的字節(jié)的信號(hào),所以,按照順序操作下面就可以從從器件接收數(shù)據(jù)了,發(fā)送了應(yīng)答信號(hào)后的一個(gè)周期,從機(jī)開始向SDA線發(fā)送數(shù)據(jù),因?yàn)镾DA為串行線,而從機(jī)位并行,這個(gè)時(shí)候完成的工作就是上一章的做的讀操作的時(shí)候的串行轉(zhuǎn)并行,每傳輸完畢一個(gè)字節(jié)(8位)主機(jī)就會(huì)發(fā)送一個(gè)應(yīng)答信號(hào)(此次操作反應(yīng)在SDA線上,最后一個(gè)字節(jié)除外),當(dāng)最后一個(gè)字節(jié)發(fā)送完畢后,主機(jī)將發(fā)送不應(yīng)答信號(hào)而直接發(fā)送一個(gè)停止信號(hào),標(biāo)志這次順序讀操作的結(jié)束。圖6-2順序讀操作仿真圖6.2.3用VHDL語言實(shí)現(xiàn)選擇性讀字節(jié)周期首先控制端口先發(fā)送一個(gè)啟動(dòng)信號(hào),系統(tǒng)接到啟動(dòng)信號(hào)后,所有的器件開始工作。順序讀操作首先要進(jìn)行一次偽寫操作,前9個(gè)時(shí)鐘周期都是和寫操作一樣,包括第8位的讀寫位也輸入的是寫位“0”,由主機(jī)先向SDA串行數(shù)據(jù)線發(fā)送一個(gè)開始信號(hào),之后發(fā)送一個(gè)7位的從機(jī)地址以及第8位的寫位(“0”),為尋找此次操作的目標(biāo)器件,因?yàn)樗械膹臋C(jī)都已經(jīng)于SDA線相連,然后開始根據(jù)這個(gè)地址搜索所尋找的從機(jī),這個(gè)過程I2C總線將自行完成,找到后,從機(jī)會(huì)發(fā)送一個(gè)應(yīng)答信號(hào),接到應(yīng)答信號(hào)后主機(jī)開始向從機(jī)發(fā)送
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 主播上崗考試題及答案
- 靜物寫生素描考試題及答案
- 宣傳接待崗面試題及答案
- 廣東省廣州市番禺育才2022-2023學(xué)年八年級(jí)下學(xué)期期中考試物理試題(含答案)
- 抗體檢驗(yàn)知識(shí)培訓(xùn)課件
- 創(chuàng)新型醫(yī)療器械研發(fā)協(xié)議
- 關(guān)于職場軟技能培養(yǎng)的建議與反思
- 小學(xué)生科學(xué)知識(shí)讀物征文
- 員工技能培訓(xùn)安排表
- 全球教育資源分布及質(zhì)量評(píng)估表
- 人際關(guān)系與溝通技巧-職場中的平行溝通與同事溝通
- 教師系列高、中級(jí)職稱申報(bào)人員民意測評(píng)表
- 社會(huì)穩(wěn)定風(fēng)險(xiǎn)評(píng)估報(bào)告-穩(wěn)評(píng)報(bào)告
- 2024屆高考英語作文:讀后續(xù)寫課件
- 小學(xué)班隊(duì)工作原理與實(shí)踐 全套課件
- 形式語言與自動(dòng)機(jī)理論-蔣宗禮-第一章參考答案
- 注塑生產(chǎn)過程控制流程
- 教科版六年級(jí)科學(xué)下冊(cè) (廚房里的物質(zhì)與變化)教學(xué)課件
- 腸造口術(shù)-課件
- 建設(shè)工程概算預(yù)算結(jié)算管理規(guī)定
- 消費(fèi)者心理與行為分析PPT(第四版)完整全套教學(xué)課件
評(píng)論
0/150
提交評(píng)論