歡迎來(lái)到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁(yè) 裝配圖網(wǎng) > 資源分類(lèi) > DOC文檔下載  

[優(yōu)秀畢業(yè)論文]利用VHDL語(yǔ)言在FPGA上實(shí)現(xiàn)I2C總線(xiàn)控制器的功能

  • 資源ID:28089734       資源大?。?span id="5bewikb" class="font-tahoma">1.35MB        全文頁(yè)數(shù):33頁(yè)
  • 資源格式: DOC        下載積分:15積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開(kāi)放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要15積分
郵箱/手機(jī):
溫馨提示:
用戶(hù)名和密碼都是您填寫(xiě)的郵箱或者手機(jī)號(hào),方便查詢(xún)和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開(kāi),此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁(yè)到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無(wú)水印,預(yù)覽文檔經(jīng)過(guò)壓縮,下載后原文更清晰。
5、試題試卷類(lèi)文檔,如果標(biāo)題沒(méi)有明確說(shuō)明有答案則都視為沒(méi)有答案,請(qǐng)知曉。

[優(yōu)秀畢業(yè)論文]利用VHDL語(yǔ)言在FPGA上實(shí)現(xiàn)I2C總線(xiàn)控制器的功能

本科畢業(yè)設(shè)計(jì)(論文)摘 要隨著微電子技術(shù)的發(fā)展,現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA(Field Programmable Gate Array)可以實(shí)現(xiàn)數(shù)字電路系統(tǒng)設(shè)計(jì)的功能。尤其現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA具有集成度高的優(yōu)點(diǎn),受到工程界高度的重視。I2C總線(xiàn)以接口簡(jiǎn)單,成本底,可擴(kuò)展性好在數(shù)字系統(tǒng)中得到了廣泛的應(yīng)用。硬件描述語(yǔ)言是數(shù)字系統(tǒng)高層設(shè)計(jì)的核心,是實(shí)現(xiàn)數(shù)字系統(tǒng)設(shè)計(jì)新方法的關(guān)鍵技術(shù)之一。本課題正是利用VHDL語(yǔ)言在FPGA上實(shí)現(xiàn)I2C總線(xiàn)控制器的功能。首先研究了I2C總線(xiàn)的規(guī)范,又簡(jiǎn)要介紹了Quartus設(shè)計(jì)環(huán)境以及FPGA的設(shè)計(jì)流程。在此基礎(chǔ)上,重點(diǎn)介紹了I2C控制器的總體設(shè)計(jì)方案,以及在Quartus平臺(tái)上的時(shí)序仿真。關(guān)鍵詞Quartus II;I2C總線(xiàn)控制器;現(xiàn)場(chǎng)可編程邏輯門(mén)陣列;時(shí)序仿真AbstractWith the development of micro electric and EDA(electronic design automation)technology, FPGA(field programmable gates array) can realize the function of digital circuit system design .FPGA have the merit of filed programmability and High integration rate ,therefore is highly recognized for engineering.I2C bus is widely applied in the digital system as simple interface ,expedient use ,low cost and good expansibility .VHDL is considered as a core of digital system design and a key technique of implement digital system.The design realizes the function of I2C bus interface on the FPGA .At first the thesis deeply research I2C bus specification ,then briefly introduce the Quartus II design environment and the design method ,as well as FPGA design flow .In this foundation,I2C bus controller design scheme and the timing simulation under Quartus II is particularly introduced.Key words Quartus II;I2C bus controller ;FPGA ;timing simulation目 錄摘 要IAbstractII第1章 緒論51.1 課題背景51.2 I2C總線(xiàn)的產(chǎn)生及發(fā)展61.3 FPGA的現(xiàn)狀與展望61.4 相關(guān)工作6第2章 I2C總線(xiàn)技術(shù)的研究82.1 I2C總線(xiàn)的概念82.2 I2C總線(xiàn)的傳輸92.2.1 數(shù)據(jù)的有效性92.2.2 I2C總線(xiàn)數(shù)據(jù)傳送的開(kāi)始和停止條件92.2.3 I2C總線(xiàn)傳輸過(guò)程中的應(yīng)答信號(hào)102.2.4 I2C總線(xiàn)數(shù)據(jù)傳送的重復(fù)開(kāi)始條件112.2.5 I2C總線(xiàn)的傳輸過(guò)程中的字節(jié)格式112.2.6 I2C總線(xiàn)的器件子地址112.2.7 I2C總線(xiàn)傳輸信號(hào)的時(shí)序122.3 本章小結(jié)14第3章 VHDL語(yǔ)言的基礎(chǔ)知識(shí)153.1 VHDL語(yǔ)言的概述153.2 VHDL語(yǔ)言的特點(diǎn)153.3 VHDL語(yǔ)言的程序結(jié)構(gòu)163.3.1 VHDL程序的庫(kù)163.3.2 包集合163.3.3 實(shí)體說(shuō)明173.3.4 構(gòu)造體183.3.5 配置183.4 本章小結(jié)18第4章 設(shè)計(jì)工具和設(shè)計(jì)方法194.1 設(shè)計(jì)工具194.2 基于FPGA的數(shù)字電路的設(shè)計(jì)流程204.3 本章小結(jié)21第5章 I2C總線(xiàn)的功能設(shè)計(jì)225.1 I2C總線(xiàn)完成的功能225.2 用VHDL語(yǔ)言實(shí)現(xiàn)寫(xiě)操作時(shí)的串行轉(zhuǎn)并行235.3 用VHDL語(yǔ)言實(shí)現(xiàn)順序讀操作時(shí)的并行轉(zhuǎn)串行235.4 I2C總線(xiàn)控制器的頂層設(shè)計(jì)245.5 本章小結(jié)25第6章 I2C總線(xiàn)的硬件時(shí)序仿真266.1 器件的選擇266.2 硬件仿真276.2.1 用VHDL語(yǔ)言實(shí)現(xiàn)寫(xiě)字節(jié)周期286.2.1 用VHDL語(yǔ)言實(shí)現(xiàn)順序讀字節(jié)周期296.2.3 用VHDL語(yǔ)言實(shí)現(xiàn)選擇性讀字節(jié)周期296.3 本章小結(jié)30結(jié) 論31致 謝32參考文獻(xiàn)33千萬(wàn)不要?jiǎng)h除行尾的分節(jié)符,此行不會(huì)被打印。在目錄上點(diǎn)右鍵“更新域”,然后“更新整個(gè)目錄”。打印前,不要忘記把上面“Abstract”這一行后加一空行- 33 -哈爾濱工業(yè)大學(xué)(威海)本科畢業(yè)設(shè)計(jì)(論文)第1章 緒論1.1 課題背景近年來(lái),隨著社會(huì)的發(fā)展,電子產(chǎn)品越來(lái)越多的進(jìn)入人們的生活和工作中,成為了我們生活中必不可少的一部分,隨著計(jì)算機(jī)的普及,以及電子設(shè)備之間相互溝通的更加頻繁,為了更方便的實(shí)現(xiàn)器件與器件之間的通信,研發(fā)人員從消費(fèi)者電子、電訊和工業(yè)電子中許多看上去不相關(guān)的設(shè)計(jì)中尋找到了他們的相似之處,例如幾乎每個(gè)系統(tǒng)都包括:(1) 一些智能控制,通常是一個(gè)單片的微控制器。(2) 通用電路,例如LCD驅(qū)動(dòng)器、遠(yuǎn)程I/O口、RAM、EEPROM或者數(shù)據(jù)轉(zhuǎn)換器。(3) 面向應(yīng)用的電路,譬如收音機(jī)和視頻系統(tǒng)的數(shù)字調(diào)諧和信號(hào)處理電路。為了使這些相似之處對(duì)系統(tǒng)設(shè)計(jì)者和器件廠商都得益,而且使硬件效率最大電路最簡(jiǎn)單,Philips開(kāi)發(fā)了一個(gè)簡(jiǎn)單的雙向兩線(xiàn)總線(xiàn),實(shí)現(xiàn)有效的IC 之間控制,這個(gè)總線(xiàn)就稱(chēng)為I2C總線(xiàn)?,F(xiàn)在Philips包括超過(guò)150種CMOS和雙極性兼容I2C總線(xiàn)的IC,可以執(zhí)行前面提到的三種類(lèi)型的功能。所有符合I2C總線(xiàn)的器件組合了一個(gè)片上接口,使器件之間直接通過(guò)I2C總線(xiàn)通訊,這個(gè)設(shè)計(jì)概念解決了很多在設(shè)計(jì)數(shù)字控制電路時(shí)遇到的接口問(wèn)題。I2C總線(xiàn)具有以下優(yōu)點(diǎn):(1) 極低的電流消耗、抗高噪聲干擾、電源電壓范圍寬以及較廣的工作溫度范圍、簡(jiǎn)單性和有效性(2) I2C總線(xiàn)占用的空間非常?。ń涌谥苯釉诮M件之上),減少了電路板的空間和芯片管腳的數(shù)量,降低了互聯(lián)成本(3) 支持主控,其中任何能夠進(jìn)行發(fā)送和接收的設(shè)備都可以成為總線(xiàn),一個(gè)主控能夠控制信號(hào)的傳輸和時(shí)鐘頻率(任何時(shí)間點(diǎn)只能有一個(gè)主控)1.2 I2C總線(xiàn)的產(chǎn)生及發(fā)展I2C總線(xiàn)是一種由PHILIPS公司開(kāi)發(fā)的兩線(xiàn)式串行總線(xiàn),用于連接微控制器及其外圍設(shè)備。I2C總線(xiàn)產(chǎn)生于在80年代,最初為音頻和視頻設(shè)備開(kāi)發(fā),如今主要在服務(wù)器管理中使用,其中包括單個(gè)組件狀態(tài)的通信。例如管理員可對(duì)各個(gè)組件進(jìn)行查詢(xún),以管理系統(tǒng)的配置或掌握組件的功能狀態(tài),如電源和系統(tǒng)風(fēng)扇??呻S時(shí)監(jiān)控內(nèi)存、硬盤(pán)、網(wǎng)絡(luò)、系統(tǒng)溫度等多個(gè)參數(shù),增加了系統(tǒng)的安全性,方便了管理。1.3 FPGA的現(xiàn)狀與展望FPGA是英文FieldProgrammable Gate Array的縮寫(xiě),即現(xiàn)場(chǎng)可編程門(mén)陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。FPGA經(jīng)過(guò)70年的不斷發(fā)展,由當(dāng)初的1200門(mén)發(fā)展成為今天的百萬(wàn)門(mén)級(jí)。通過(guò)不斷更新優(yōu)化產(chǎn)品架構(gòu)和生產(chǎn)工藝,實(shí)現(xiàn)了更高的性能、更短的開(kāi)發(fā)周期、更低的單位成本和功耗。從前的“定論”是:FPGA可編程,靈活性高,一直依賴(lài)都是用作建模的平臺(tái),而不適合進(jìn)行量產(chǎn),但是經(jīng)過(guò)多年的研發(fā),大大縮短了FPGA開(kāi)發(fā)時(shí)間,降低了驗(yàn)證成本。高集成度和靈活度從消費(fèi)電子的發(fā)展來(lái)看,客戶(hù)要求產(chǎn)品的更新?lián)Q代的周期越來(lái)越短,并要求不段的繼承更多的,層出不窮的,新的技術(shù)和應(yīng)用,而且又要嚴(yán)格控制成本。因此,F(xiàn)PGA在靈活性上就具備了天然的優(yōu)勢(shì),且通過(guò)多年的努力,在高性能和低功耗方面也取得了顯著地改進(jìn),現(xiàn)在的FPGA性能已經(jīng)能夠滿(mǎn)足大多數(shù)應(yīng)用的的需要。1.4 相關(guān)工作為了設(shè)計(jì)基于FPGA的I2C總線(xiàn)控制器,包括數(shù)據(jù)傳輸時(shí)序、傳輸命令、傳輸格式。首先要深入研究I2C總線(xiàn)的協(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總線(xiàn)和FPGA的產(chǎn)生現(xiàn)狀和發(fā)展2 I2C總線(xiàn)技術(shù)的研究,介紹I2C總線(xiàn)的特點(diǎn)以及工作原理3 VHDL語(yǔ)言的基礎(chǔ)知識(shí),簡(jiǎn)單的介紹了VHDL語(yǔ)言的特點(diǎn)和結(jié)構(gòu)4 設(shè)計(jì)工具與設(shè)計(jì)方法,介紹了一種新的設(shè)計(jì)軟件Quartus II,以及基于FPGA的數(shù)字電路的設(shè)計(jì)流程5 I2C總線(xiàn)的功能設(shè)計(jì)6 I2C總線(xiàn)的硬件時(shí)序仿真7 結(jié)論,對(duì)本文進(jìn)行總結(jié),在設(shè)計(jì)中遇到的問(wèn)題以及從此次設(shè)計(jì)中學(xué)到的東西雙擊上一行的“1”“2”試試,J(本行不會(huì)被打印,請(qǐng)自行刪除)第2章 I2C總線(xiàn)技術(shù)的研究2.1 I2C總線(xiàn)的概念I(lǐng)2C總線(xiàn)是一種比較流行的總線(xiàn),它的接受和發(fā)送在同一條數(shù)據(jù)線(xiàn)上。I2C由串行數(shù)據(jù)(SDA)和串行時(shí)鐘(SCL)兩根線(xiàn)構(gòu)成的??偩€(xiàn)上允許連接的設(shè)備數(shù)主要決定于總線(xiàn)上的電容量,一般設(shè)定為400pf以下。SDA和SCL都是雙向總線(xiàn),它們都通過(guò)上拉電阻連接到電源上。當(dāng)總線(xiàn)處于停止(IDLE)狀態(tài),兩根線(xiàn)都是高電平。對(duì)于I2C總線(xiàn)來(lái)說(shuō),總線(xiàn)上連接的設(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ī)是初始化總線(xiàn)的數(shù)據(jù)傳輸,并產(chǎn)生允許傳輸?shù)臅r(shí)鐘信號(hào)的設(shè)備,這時(shí)任何被尋址的期間都被認(rèn)為是從機(jī)。由于I2C總線(xiàn)使用兩線(xiàn)的硬件接口簡(jiǎn)單,I2C總線(xiàn)的應(yīng)用越來(lái)越廣泛1。下面,將I2C總線(xiàn)的通用術(shù)語(yǔ)進(jìn)行介紹,如表 2-1所示;I2C總線(xiàn)的典型接法如圖 2-1所示。表 2-1 I2C總線(xiàn)的通用術(shù)語(yǔ)術(shù)語(yǔ)描述發(fā)送器發(fā)送數(shù)據(jù)到總線(xiàn)的器件接收器從總線(xiàn)接收數(shù)據(jù)的期間主機(jī)初始化發(fā)送、產(chǎn)生時(shí)鐘信號(hào)和終止發(fā)送的器件從機(jī)被主機(jī)尋址的器件多主機(jī)同時(shí)有多于一個(gè)主機(jī)嘗試控制總線(xiàn),但不破壞報(bào)文仲裁是一個(gè)在有多個(gè)主機(jī)同時(shí)嘗試控制總線(xiàn),但只允許其中一個(gè)控制總線(xiàn)并使報(bào)文不被破壞的過(guò)程同步兩個(gè)或多個(gè)器件同步時(shí)鐘信號(hào)的過(guò)程圖 2-1 I2C總線(xiàn)信號(hào)連接示意圖2.2 I2C總線(xiàn)的傳輸由于I2C總線(xiàn)的器件有不同種類(lèi)的工藝(CMOS、NMOS、雙極性),邏輯0(低)和1(高)的電平不是固定的。在I2C總線(xiàn)每傳輸一位數(shù)據(jù)就有一個(gè)時(shí)鐘脈沖相對(duì)應(yīng),其邏輯“0”或“1”的信號(hào)電平取決于該節(jié)點(diǎn)的正端電源Vdd的電壓。2.2.1 數(shù)據(jù)的有效性在工作過(guò)程中,數(shù)據(jù)有效要求串行數(shù)據(jù)(SDA)線(xiàn)上的數(shù)據(jù)必須要在串行時(shí)鐘(SCL)的高電平時(shí)鐘周期期間保持穩(wěn)定。而只有在串行時(shí)鐘(SCL)線(xiàn)的時(shí)鐘信號(hào)是低電平的時(shí)候串行數(shù)據(jù)(SDA)上的數(shù)據(jù)才能發(fā)生變化(如圖2-2所示)2.2.2 I2C總線(xiàn)數(shù)據(jù)傳送的開(kāi)始和停止條件在I2C總線(xiàn)數(shù)據(jù)傳送的整個(gè)過(guò)程中,需要先有開(kāi)始條件引發(fā),并由停止信號(hào)結(jié)束,這兩個(gè)條件在數(shù)據(jù)線(xiàn)上的表示如圖 2-3所示。開(kāi)始條件:當(dāng)串行時(shí)鐘(SCL)線(xiàn)上的時(shí)鐘信號(hào)是高電平的時(shí)候串行數(shù)據(jù)(SDA)上的數(shù)據(jù)由高電平變?yōu)榈碗娖剑a(chǎn)生了一個(gè)下降沿,表示數(shù)據(jù)傳輸開(kāi)始。停止信號(hào):當(dāng)串行時(shí)鐘(SCL)線(xiàn)上的始終信號(hào)是高電平的時(shí)候串行數(shù)據(jù)(SDA)上的數(shù)據(jù)由低電平變?yōu)楦唠娖?,產(chǎn)生了一個(gè)上升沿,表示數(shù)據(jù)傳輸停止。開(kāi)始和停止條件一般由主機(jī)產(chǎn)生??偩€(xiàn)在開(kāi)始條件后被認(rèn)為處于忙的狀態(tài)。在停止條件的某段時(shí)間后,總線(xiàn)被認(rèn)為再次處于空閑狀態(tài)。 圖 2-2 I2C總線(xiàn)的數(shù)據(jù)位傳輸 圖 2-3 開(kāi)始和停止條件2.2.3 I2C總線(xiàn)傳輸過(guò)程中的應(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ù)線(xiàn)保持高電平,主機(jī)產(chǎn)生一個(gè)停止條件,終止傳輸或者產(chǎn)生重復(fù)起始條件開(kāi)始新的傳輸。如果執(zhí)行寫(xiě)操作過(guò)程中,從機(jī)應(yīng)答了從機(jī)地址,但是在傳輸了一段時(shí)間后不能接收更多數(shù)據(jù)字節(jié),主機(jī)必須終止傳輸。這個(gè)情況用從機(jī)在第一個(gè)字節(jié)后沒(méi)有產(chǎn)生應(yīng)答來(lái)表示,從機(jī)使數(shù)據(jù)線(xiàn)保持高電平,主機(jī)產(chǎn)生一個(gè)停止或重復(fù)起始條件。如果執(zhí)行讀操作過(guò)程中,主機(jī)必須在從機(jī)傳輸最后一個(gè)字節(jié)之后產(chǎn)生一個(gè)不應(yīng)答信號(hào),之后產(chǎn)生停止條件,而從機(jī)必須將數(shù)據(jù)線(xiàn)保持高電平,允許主機(jī)產(chǎn)生一個(gè)停止或重復(fù)起始條件。2.2.4 I2C總線(xiàn)數(shù)據(jù)傳送的重復(fù)開(kāi)始條件主機(jī)與從機(jī)進(jìn)行通信時(shí),有時(shí)需要切換數(shù)據(jù)的收發(fā)方向。例如,訪問(wèn)某一具有I2C總線(xiàn)接口的存儲(chǔ)器時(shí),主機(jī)先向存儲(chǔ)器輸入存儲(chǔ)單元的地址信息(發(fā)送數(shù)據(jù)),然后再讀取其中的存儲(chǔ)內(nèi)容(接收數(shù)據(jù))。在切換數(shù)據(jù)的傳輸方向時(shí),可以不必先產(chǎn)生停止條件再開(kāi)始下次傳輸,而是直接再一次產(chǎn)生開(kāi)始條件。I2C總線(xiàn)在已經(jīng)處于忙的狀態(tài)下,再一次直接產(chǎn)生起始條件的情況被稱(chēng)為重復(fù)起始條件。正常的起始條件和重復(fù)起始條件在物理波形上并沒(méi)有什么不同,區(qū)別僅僅是在邏輯方面。在進(jìn)行多字節(jié)數(shù)據(jù)傳輸過(guò)程中,只要數(shù)據(jù)的收發(fā)方向發(fā)生了切換,就要用到重復(fù)起始條件。2.2.5 I2C總線(xiàn)的傳輸過(guò)程中的字節(jié)格式總線(xiàn)傳輸時(shí)要按照規(guī)定的數(shù)據(jù)格式,發(fā)送到SDA線(xiàn)上的每個(gè)字節(jié)必須為8位,每次傳輸可以發(fā)送的字節(jié)數(shù)量不受限制,每個(gè)字節(jié)后必須跟一個(gè)應(yīng)答信號(hào)。首先傳輸?shù)氖菙?shù)據(jù)的最高位(MSB)。在開(kāi)始條件發(fā)出之后,SDA輸入端發(fā)送一個(gè)7位的從機(jī)地址,然后第8位為數(shù)據(jù)方向位(讀/寫(xiě)位),數(shù)據(jù)方向表明主機(jī)和從機(jī)的數(shù)據(jù)傳輸方向?!?”表示主機(jī)發(fā)送數(shù)據(jù)(寫(xiě)),“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.6 I2C總線(xiàn)的器件子地址帶有I2C總線(xiàn)的器件除了有從機(jī)地址(Slave Address)外,還可能有子地址。從機(jī)地址是指該器件在I2C總線(xiàn)上被主機(jī)尋址的地址,而子地址是指該器件內(nèi)部不同部件或存儲(chǔ)單元的編址。某些器件(只占少數(shù))內(nèi)部結(jié)構(gòu)比較簡(jiǎn)單,可能沒(méi)有子地址,只有必須的從機(jī)地址,子地址與從機(jī)地址一樣,子地址實(shí)際上也是像普通數(shù)據(jù)那樣進(jìn)行傳輸?shù)模瑐鬏敻袷饺匀皇桥c數(shù)據(jù)相統(tǒng)一的,區(qū)分傳輸?shù)牡降资堑刂愤€是數(shù)據(jù)要靠收發(fā)雙方具體的邏輯約定。子地址的長(zhǎng)度必須由整數(shù)個(gè)字節(jié)組成,可能是單字節(jié)(8位子地址),也可能是雙字節(jié)(16位子地址),還可能是3字節(jié)以上,這要看具體器件的規(guī)定。2.2.7 I2C總線(xiàn)傳輸信號(hào)的時(shí)序I2C總線(xiàn)數(shù)據(jù)傳送分為讀操作和寫(xiě)操作(圖 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è)最簡(jiǎn)單的寫(xiě)操作的時(shí)序,主機(jī)向從機(jī)傳送一個(gè)7位的地址數(shù)據(jù),然后第8位為讀/寫(xiě)位,在這個(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è)最簡(jiǎn)單的按照當(dāng)前位置進(jìn)行的讀操作,前9個(gè)周期的時(shí)序與寫(xiě)操作的時(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(Not acknowledge)表示),之后的一個(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ī)首先通過(guò)發(fā)送起始信號(hào)、從機(jī)地址和它想要讀取的字節(jié)數(shù)據(jù)的地址執(zhí)行一個(gè)偽寫(xiě)操作。在從機(jī)應(yīng)答之后,主機(jī)重新發(fā)送起始信號(hào)和從機(jī)地址,此時(shí)讀/寫(xiě)位為“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(Not acknowledge)表示),之后的一個(gè)時(shí)鐘周期內(nèi)產(chǎn)生停止條件,表示數(shù)據(jù)傳輸停止。2.3 本章小結(jié)本章主要介紹了I2C的有關(guān)知識(shí),從I2C總線(xiàn)的概念開(kāi)始,介紹了I2C總線(xiàn)的開(kāi)始和停止條件以及如何傳輸數(shù)據(jù)才有效,然后介紹了I2C總線(xiàn)傳輸過(guò)程中應(yīng)答信號(hào)的產(chǎn)生和作用,以及位傳輸和字節(jié)傳輸需要注意的每個(gè)時(shí)鐘周期代表的意義,最后,介紹了I2C總線(xiàn)工作的各種狀態(tài)的時(shí)序,以便下面用語(yǔ)言對(duì)I2C總線(xiàn)進(jìn)行設(shè)計(jì)與實(shí)現(xiàn)。第3章 VHDL語(yǔ)言的基礎(chǔ)知識(shí)3.1 VHDL語(yǔ)言的概述VHDL語(yǔ)言是一種用于電路設(shè)計(jì)的高級(jí)語(yǔ)言。它在80年代的后期出現(xiàn)。最初是由美國(guó)國(guó)防部開(kāi)發(fā)出來(lái)供美軍用于提高設(shè)計(jì)的可靠性和縮減開(kāi)發(fā)周期的一種使用范圍較小的設(shè)計(jì)語(yǔ)言。VHDL語(yǔ)言主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語(yǔ)句外,VHDL的語(yǔ)言形式和描述風(fēng)格與句法是十分類(lèi)似于一般的計(jì)算機(jī)高級(jí)語(yǔ)言。VHDL的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),或稱(chēng)設(shè)計(jì)實(shí)體(可以是一個(gè)元件,一個(gè)電路模塊或一個(gè)系統(tǒng))分成外部(或稱(chēng)可是部分,及端口)和內(nèi)部(或稱(chēng)不可視部分),既涉及實(shí)體的內(nèi)部功能和算法完成部分。在對(duì)一個(gè)設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部開(kāi)發(fā)完成后,其他的設(shè)計(jì)就可以直接調(diào)用這個(gè)實(shí)體。這種將設(shè)計(jì)實(shí)體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計(jì)的基本點(diǎn)。3.2 VHDL語(yǔ)言的特點(diǎn)與其他的硬件描述語(yǔ)言相比,VHDL具有更強(qiáng)的行為描述能力,從而決定了它成為系統(tǒng)設(shè)計(jì)領(lǐng)域最佳的硬件描述語(yǔ)言。強(qiáng)大的行為描述能力是避開(kāi)具體的器件結(jié)構(gòu),從邏輯行為上描述和設(shè)計(jì)大規(guī)模電子系統(tǒng)的重要保證。VHDL最初是作為一種仿真標(biāo)準(zhǔn)格式出現(xiàn)的,因此VHDL既是一種硬件電路描述和設(shè)計(jì)語(yǔ)言,也是一種標(biāo)準(zhǔn)的網(wǎng)表格式,還是一種仿真語(yǔ)言,其豐富的仿真語(yǔ)句和庫(kù)函數(shù),使得在任何大系統(tǒng)的設(shè)計(jì)早期,就能用于查驗(yàn)設(shè)計(jì)系統(tǒng)的功能可行性,隨時(shí)可對(duì)設(shè)計(jì)進(jìn)行仿真模擬。即在遠(yuǎn)離門(mén)級(jí)的高層次上進(jìn)行模擬,使設(shè)計(jì)者對(duì)整個(gè)工程設(shè)計(jì)的結(jié)構(gòu)和功能的可行性做出決策。VHDL語(yǔ)言的行為描述能力和程序結(jié)構(gòu)決定了它具有支持大規(guī)模設(shè)計(jì)的分解和已有設(shè)計(jì)的再利用功能,符合市場(chǎng)所需求的,大規(guī)模系統(tǒng)高效、高速的完成必須由多人甚至多個(gè)開(kāi)發(fā)組共同并行工作才能實(shí)現(xiàn)的特點(diǎn)。VHDL中設(shè)計(jì)實(shí)體的概念、程序包的概念、設(shè)計(jì)庫(kù)的概念為設(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具有類(lèi)屬描述語(yǔ)句和子程序調(diào)用等功能,對(duì)于已完成的設(shè)計(jì),在不改變?cè)闯绦虻臈l件下,只需改變端口類(lèi)屬參量或函數(shù),就能輕易地改變?cè)O(shè)計(jì)的規(guī)模和結(jié)構(gòu)2。3.3 VHDL語(yǔ)言的程序結(jié)構(gòu)一個(gè)完整的VHDL語(yǔ)言程序通常包括實(shí)體、構(gòu)造體、配置、包集合和庫(kù)5個(gè)部分。3.3.1 VHDL程序的庫(kù)庫(kù)是經(jīng)編譯后的數(shù)據(jù)的集合,它存放包集合定義、實(shí)體定義、構(gòu)造體定義和配置定義。在VHDL語(yǔ)言中,庫(kù)的說(shuō)明總是放在設(shè)計(jì)單元的最前面:LIBRARY 庫(kù)名;這樣,在設(shè)計(jì)單元內(nèi)的語(yǔ)句就可以使用庫(kù)中的數(shù)據(jù)。由此可見(jiàn),庫(kù)的好處就在于使設(shè)計(jì)者可以共享已經(jīng)編譯過(guò)的設(shè)計(jì)結(jié)果。在VHDL語(yǔ)言中可以存在多個(gè)不同的庫(kù),但是庫(kù)和庫(kù)之間是獨(dú)立的,不能互相嵌套。3.3.2 包集合包集合是用來(lái)羅列VHDL語(yǔ)言中所要用到的信號(hào)定義、常數(shù)定義、數(shù)據(jù)類(lèi)型、元件語(yǔ)言、函數(shù)定義和過(guò)程定義等,它是一個(gè)可編譯的設(shè)計(jì)單元,也是庫(kù)結(jié)構(gòu)的一個(gè)層次,要使用包集合時(shí)可以用USE語(yǔ)句說(shuō)明。例如:use ieee.std_logic_unsigned.all;該語(yǔ)句表示在VHDL程序中要使用名為std_logic_unsigned的包集合中的所有定義或者說(shuō)明項(xiàng)。包集合的結(jié)構(gòu)如下所示:PACKAGE 包集合名 IS說(shuō)明語(yǔ)句END 包集合名; 包集合標(biāo)題PACKAGE BODY 包集合名 IS說(shuō)明語(yǔ)句END BODY; 包集合體一個(gè)包集合由兩大部分組成:包集合標(biāo)題和包集合體、包集合體可以省略不寫(xiě)。一般包集合標(biāo)題列出所有項(xiàng)的名稱(chēng),而包集合體具體給出各項(xiàng)的細(xì)節(jié)。3.3.3 實(shí)體說(shuō)明任何一個(gè)基本設(shè)計(jì)單元的實(shí)體說(shuō)明都具有如下結(jié)構(gòu):ENTITY 實(shí)體名 IS類(lèi)屬參數(shù)說(shuō)明端口說(shuō)明END 實(shí)體名;其中類(lèi)屬參數(shù)說(shuō)明必須放在端口說(shuō)明之前,用于指定參數(shù)。端口說(shuō)明是對(duì)基本設(shè)計(jì)實(shí)體與外部接口的描述,也可以說(shuō)是對(duì)外部引腳信號(hào)的名稱(chēng),數(shù)據(jù)類(lèi)型和輸入、輸出方向的描述。其一般書(shū)寫(xiě)格式如下:PORT(端口名:方向 數(shù)據(jù)類(lèi)型名; . 端口名:方向 數(shù)據(jù)類(lèi)型名);端口名是定義每個(gè)外部引腳的名稱(chēng)。端口方向用來(lái)定義外部引腳的信號(hào)方向是輸入還是輸出,分為5種:IN(輸入),OUT(輸出而且構(gòu)造體內(nèi)部不能再使用),INOUT(雙向),BUFFER(輸出而且構(gòu)造體內(nèi)部可以再次使用),LINKAGE(不指定方向,無(wú)論出入都可以連接)。數(shù)據(jù)類(lèi)型在邏輯電路設(shè)計(jì)中只用到兩種:BIT和BIT_VECTOR。當(dāng)端口被說(shuō)明為BIT數(shù)據(jù)類(lèi)型時(shí),該端口的信號(hào)取值只可能是“0”或者“1”。這里的“0”和“1”是指邏輯值。當(dāng)端口被說(shuō)明為BIT_VECTOR數(shù)據(jù)類(lèi)型時(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定義語(yǔ)句BEGIN并行處理語(yǔ)句END 構(gòu)造體名;構(gòu)造體名是對(duì)本構(gòu)造體的命名,是該構(gòu)造體的唯一名稱(chēng)。OF后面緊跟的實(shí)體名表明了該構(gòu)造體所對(duì)應(yīng)的是哪一個(gè)實(shí)體。定義語(yǔ)句用來(lái)對(duì)構(gòu)造體內(nèi)部所使用的信號(hào)、常數(shù)、數(shù)據(jù)類(lèi)型和函數(shù)進(jìn)行定義,格式和端口說(shuō)明的語(yǔ)句一樣,但因?yàn)樗莾?nèi)部連接的信號(hào),故沒(méi)有也不需要有方向的說(shuō)明。并行處理語(yǔ)句具體的描述了構(gòu)造體的行為3。3.3.5 配置一個(gè)實(shí)體可以包含多個(gè)結(jié)構(gòu)體,配置的作用就是根據(jù)需要選擇實(shí)體的結(jié)構(gòu)體。配置語(yǔ)句描述層與層之間的連接關(guān)系以及實(shí)體與結(jié)構(gòu)之間的連接關(guān)系,設(shè)計(jì)者可以利用這種配置語(yǔ)句來(lái)選擇不同的構(gòu)造體,使其與要設(shè)計(jì)的實(shí)體相對(duì)應(yīng)。在仿真某一實(shí)體時(shí),可以利用配置來(lái)選擇不同的結(jié)構(gòu)體,進(jìn)行性能對(duì)比試驗(yàn)以得到性能最佳的結(jié)構(gòu)體。配置語(yǔ)句的基本書(shū)寫(xiě)格式如下:CONFIGURATION 配置名 OF 實(shí)體名 IS語(yǔ)句說(shuō)明END 配置名;經(jīng)常使用的配置有以下三類(lèi):默認(rèn)配置、元件配置和結(jié)構(gòu)配置4。3.4 本章小結(jié)本章主要介紹了VHDL的有關(guān)知識(shí),主要介紹了VHDL特點(diǎn)以及如何用VHDL語(yǔ)言編寫(xiě)程序,首先定義庫(kù)函數(shù),然后引入包集合,定義實(shí)體,構(gòu)造體,注意構(gòu)造體內(nèi)可以包括子程序,最后定義配置。第4章 設(shè)計(jì)工具和設(shè)計(jì)方法4.1 設(shè)計(jì)工具本次設(shè)計(jì)使用的是Altera公司的設(shè)計(jì)軟件Quartus II ,用VHDL語(yǔ)言編程實(shí)現(xiàn)的。Quartus II軟件是Altera提供的綜合性開(kāi)發(fā)軟件,可以輕易地滿(mǎn)足特定地設(shè)計(jì)需求。它支持原理圖、VHDL、VerilogHDL等多種設(shè)計(jì)輸入形式,內(nèi)有綜合器以及仿真器,可以完成從設(shè)計(jì)輸入到硬件配置的完整設(shè)計(jì)流程。Quartus II軟件允許用戶(hù)在設(shè)計(jì)流程的每個(gè)階段使用軟件提供的軟件圖形用戶(hù)界面、EDA工具界面或命令行方式。其圖形用戶(hù)界面的功能分為:設(shè)計(jì)輸入、綜合、布局布線(xiàn)、時(shí)序分析、仿真、編程、系統(tǒng)設(shè)計(jì)、軟件開(kāi)發(fā)、基于塊的設(shè)計(jì)、EDA界面、時(shí)序收斂、調(diào)試、工程更改管理等5。在本次設(shè)計(jì)中主要用到前面幾個(gè)功能,下面坐下簡(jiǎn)單的介紹:設(shè)計(jì)輸入是使用Quartus II軟件的模塊輸入方式、文本輸入方式、Core輸入方式和EDA設(shè)計(jì)輸入工具等表達(dá)用戶(hù)的電路構(gòu)思,同時(shí)使用分配編輯器(Assignment Editor)設(shè)定初始設(shè)計(jì)約束條件。綜合是將HDL語(yǔ)言、原理圖等設(shè)計(jì)輸入翻譯成由與、或、非門(mén),RAM,觸發(fā)器等基本邏輯單元組成的邏輯鏈接(網(wǎng)表),并根據(jù)目標(biāo)與要求(約束條件優(yōu)化所生成的邏輯連接,輸出edf或vqm等標(biāo)準(zhǔn)格式的網(wǎng)表文件,供布局布線(xiàn)器進(jìn)行實(shí)現(xiàn)。除了可以用QuartusII軟件的綜合工具外,也可以使用第三方綜合工具,生成與QuartusII軟件配合使用的edf網(wǎng)表文件或vqm文件。布局布線(xiàn)的輸入文件是綜合后的網(wǎng)表文件,QuartusII軟件中布局布線(xiàn)包含分析布局布線(xiàn)結(jié)果、優(yōu)化布局布線(xiàn)、增量布局布線(xiàn)和通過(guò)反標(biāo)保留分配等6。時(shí)序分析是允許用戶(hù)分析設(shè)計(jì)中所有邏輯的時(shí)序性能,并協(xié)助引導(dǎo)布局布線(xiàn)滿(mǎn)足設(shè)計(jì)中的時(shí)序分析要求。它觀察和報(bào)告時(shí)序信息,如建立時(shí)間、保持時(shí)間、時(shí)鐘至輸出延時(shí)、最大時(shí)鐘頻率以及設(shè)計(jì)的其他時(shí)序特性,可以使用時(shí)序分析生成的信息來(lái)分析、調(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ì)所用器件名稱(chēng)和選項(xiàng)的鏈?zhǔn)轿募?、轉(zhuǎn)換編程文件等。EDA界面中的EDA Netlist Writer是生成時(shí)序仿真所需要的包含延遲信息的文件。除了上述工具外,QuartusII軟件還提供第三方工具的連接。如綜合工具Synplify、Synplifypro、Leonardo,仿真工具M(jìn)odelsim、Aldec HDL等這些業(yè)內(nèi)公認(rèn)的專(zhuān)業(yè)綜合、仿真工具。4.2 基于FPGA的數(shù)字電路的設(shè)計(jì)流程隨著FPGA容量,功能及其可靠性的提高,在現(xiàn)代數(shù)字通信系統(tǒng)的中使用率越來(lái)越高,采用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)的開(kāi)發(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ū)要確定方案,選擇使用說(shuō)明設(shè)備等準(zhǔn)備工作。設(shè)計(jì)輸入:將設(shè)計(jì)的系統(tǒng)或電路以某種形式表現(xiàn)出來(lái),輸入到計(jì)算機(jī)上,包括狀態(tài)圖輸入、圖形輸入和HDL語(yǔ)言輸入,常用的是后兩種。HDL語(yǔ)言在描述狀態(tài)機(jī),控制邏輯,總線(xiàn)功能方面比較強(qiáng);原理圖輸入比較適合頂層設(shè)計(jì)、數(shù)據(jù)通路邏輯;在本文的設(shè)計(jì)中,使用的VHDL語(yǔ)言輸入。功能仿真:功能仿真也稱(chēng)前仿真或行為仿真。它是在沒(méi)有考慮器件延時(shí)和布線(xiàn)延時(shí)的理想情況下,對(duì)源代碼進(jìn)行邏輯上的功能驗(yàn)證,以便及時(shí)地進(jìn)行修改。設(shè)計(jì)處理:包括了邏輯分析、綜合和優(yōu)化三個(gè)步驟。邏輯分析是對(duì)HDL源文件進(jìn)行分析并糾正語(yǔ)法錯(cuò)誤。綜合就是給定的電路實(shí)現(xiàn)功能和實(shí)現(xiàn)此電路的約束條件,如速度、功耗、成本及電路類(lèi)型等,通過(guò)計(jì)算機(jī)進(jìn)行優(yōu)化處理,獲得一個(gè)能滿(mǎn)足上述要求的電路設(shè)計(jì)方案,該方案必須同時(shí)滿(mǎn)足預(yù)期的功能和約束條件;優(yōu)化則是根據(jù)用戶(hù)的設(shè)計(jì)約束,對(duì)速度和面積進(jìn)行邏輯優(yōu)化。設(shè)計(jì)實(shí)現(xiàn)利用實(shí)現(xiàn)工具把邏輯映射到目標(biāo)器件結(jié)構(gòu)的資源中,決定邏輯的最佳布局,選擇邏輯與輸入輸出功能連接的布線(xiàn)通道進(jìn)行連線(xiàn),并產(chǎn)生相應(yīng)的文件,供后續(xù)的時(shí)序仿真和下載。時(shí)序仿真時(shí)序仿真是FPGA設(shè)計(jì)的重要步驟之一,又稱(chēng)后仿真,在做完布局布線(xiàn)后進(jìn)行,仿真中包含布局布線(xiàn)產(chǎn)生的器件延時(shí),連線(xiàn)延時(shí)信息。它與特定的器件有關(guān),主要驗(yàn)證程序在目標(biāo)器件上的時(shí)序關(guān)系,是接近器件真實(shí)工作情況的仿真,仿真精度比較高。下載驗(yàn)證下載又稱(chēng)配置,是在功能仿真和時(shí)序仿真正確的前提下,將綜合后形成的文件下載到具體的FPGA芯片中。然后再進(jìn)行實(shí)際器件的物理測(cè)試即為電路驗(yàn)證。這是最終驗(yàn)證設(shè)計(jì)項(xiàng)目在目標(biāo)系統(tǒng)上的實(shí)際工作情況,以排除錯(cuò)誤,改正設(shè)計(jì)。4.3 本章小結(jié)本章首先介紹了這次設(shè)計(jì)需要用到的設(shè)計(jì)軟件Quartus II的特點(diǎn)和功能。然后介紹了居于FPGA的數(shù)字電路的設(shè)計(jì)流程,從開(kāi)始的準(zhǔn)備到數(shù)據(jù)的輸入與功能運(yùn)行,然后到中間的調(diào)試再進(jìn)行功能運(yùn)行,最后確認(rèn)無(wú)誤了帶入時(shí)序信號(hào)然后進(jìn)行時(shí)序仿真,最后下載具體的FPGA芯片中進(jìn)行電路驗(yàn)證,調(diào)試程序,最后得到正確結(jié)果。第5章 I2C總線(xiàn)的功能設(shè)計(jì)5.1 I2C總線(xiàn)完成的功能I2C總線(xiàn)中,數(shù)據(jù)信號(hào)的傳輸是由串行數(shù)據(jù)線(xiàn)SDA和串行時(shí)鐘線(xiàn)SCL完成的,可發(fā)送和接收數(shù)據(jù)。I2C總線(xiàn)是為了實(shí)現(xiàn)主機(jī)和從機(jī)之間的數(shù)據(jù)傳輸,當(dāng)從主機(jī)向從機(jī)發(fā)送數(shù)據(jù)時(shí),實(shí)現(xiàn)的是I2C總線(xiàn)的寫(xiě)操作功能,主機(jī)先發(fā)送一個(gè)開(kāi)始條件,之后主機(jī)先向SDA線(xiàn)發(fā)送從機(jī)的7位地址數(shù)據(jù)以及第8位寫(xiě)位,數(shù)據(jù)經(jīng)過(guò)SDA線(xiàn)時(shí),開(kāi)始在與SDA線(xiàn)連接的器件中搜索對(duì)應(yīng)的地址,找到后,從機(jī)反饋一個(gè)應(yīng)答信號(hào),這個(gè)時(shí)候主機(jī)開(kāi)始通過(guò)SDA線(xiàn)向從機(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總線(xiàn)的讀操作功能,這個(gè)時(shí)候主機(jī)先向SDA線(xiàn)發(fā)送從機(jī)的7位地址數(shù)據(jù)以及第8位讀位,數(shù)據(jù)經(jīng)過(guò)SDA線(xiàn)時(shí),開(kāi)始在與SDA線(xiàn)連接的期間中搜索對(duì)應(yīng)的地址,找到后從機(jī)反饋一個(gè)應(yīng)答信號(hào),這個(gè)時(shí)候從機(jī)開(kāi)始通過(guò)SDA線(xiàn)向主機(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總線(xiàn)的選擇性讀操作功能,這個(gè)時(shí)候主機(jī)先向SDA線(xiàn)發(fā)送從機(jī)的7位地址數(shù)據(jù)以及第8位寫(xiě)位,數(shù)據(jù)經(jīng)過(guò)SDA線(xiàn)時(shí),開(kāi)始在與SDA線(xiàn)連接的器件中搜索對(duì)應(yīng)的地址,找到后,從機(jī)反饋一個(gè)應(yīng)答信號(hào),這個(gè)時(shí)候主機(jī)通過(guò)SDA線(xiàn)向從機(jī)發(fā)送字節(jié)8位的地址位,從機(jī)收到后反饋一個(gè)應(yīng)答信號(hào)。之前完成了一次偽寫(xiě)操作。這個(gè)時(shí)候主機(jī)發(fā)送一個(gè)重新開(kāi)始信號(hào),重新向SDA發(fā)送從機(jī)的7位地址數(shù)據(jù)以及第8位讀位,找到相應(yīng)的從機(jī)后,從機(jī)反饋一個(gè)應(yīng)答信號(hào),然后從機(jī)將該字節(jié)位開(kāi)始的數(shù)據(jù)通過(guò)SDA線(xiàn)向主機(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))。這兩線(xiàn)都是由CPU引出,其它受控電路均掛接SDA和SCL線(xiàn)上,只有CPU具有控制權(quán),在其控制下,CPU即可以向數(shù)據(jù)總線(xiàn)發(fā)送信息,又能讀取被控器件反饋的響應(yīng)信息??偩€(xiàn)上的受控電路和模塊都有唯一的地址,按類(lèi)型對(duì)他們進(jìn)行分配。這樣,各控制電路雖然掛在同一條總線(xiàn)上,卻彼此獨(dú)立,互不相關(guān)。I2C總線(xiàn)控制器是微處理器與I2C器件之間的接口,它可以使性能各異、速度不同,功能不一的外設(shè)與微處理器之間方便快捷地進(jìn)行通信。即要接收處理器的控制信號(hào),命令與數(shù)據(jù);還要發(fā)送I2C器件的數(shù)據(jù)和狀態(tài)響應(yīng)到處理器實(shí)現(xiàn)處理器與I2C器件之間的通信機(jī)制。鑒于I2C總線(xiàn)的規(guī)范,其接口主要完成的功能如下:1寫(xiě)操作(串行轉(zhuǎn)并行)2順序讀操作(并行轉(zhuǎn)串行)3開(kāi)始/停止/重啟/響應(yīng)各種觸發(fā)狀態(tài)4讀寫(xiě)控制位和啟動(dòng)位5隨機(jī)讀取總線(xiàn)數(shù)據(jù)和狀態(tài)5.2 用VHDL語(yǔ)言實(shí)現(xiàn)寫(xiě)操作時(shí)的串行轉(zhuǎn)并行寫(xiě)操作時(shí),輸入SDA上的串行數(shù)據(jù),輸出從機(jī)上的并行數(shù)據(jù),用VHDL語(yǔ)言實(shí)現(xiàn)如圖 5-1和圖 5-2 圖5-1 串行轉(zhuǎn)并行模塊圖 圖5-2 串行轉(zhuǎn)并行仿真圖5.3 用VHDL語(yǔ)言實(shí)現(xiàn)順序讀操作時(shí)的并行轉(zhuǎn)串行順序讀操作時(shí),輸入從機(jī)上的并行數(shù)據(jù),輸出SDA的串行數(shù)據(jù),用VHDL語(yǔ)言實(shí)現(xiàn)如圖 5-3和圖 5-4 圖 5-3 并行轉(zhuǎn)串行模塊圖 圖 5-4 并行轉(zhuǎn)串行仿真圖5.4 I2C總線(xiàn)控制器的頂層設(shè)計(jì)I2C總線(xiàn)控制器就是將主機(jī)和從機(jī)連接起來(lái),它一方面要通過(guò)數(shù)據(jù)總線(xiàn)與主機(jī)交換數(shù)據(jù),另一方面通過(guò)I2C總線(xiàn)與從機(jī)交換數(shù)據(jù),使他們之間能夠進(jìn)行通訊。根據(jù)據(jù)總線(xiàn)控制器要完成的功能,需要2條8位數(shù)據(jù)線(xiàn),1條8位地址線(xiàn),1條串行時(shí)鐘線(xiàn),1條串行數(shù)據(jù)線(xiàn),1條讀寫(xiě)控制線(xiàn),1條啟動(dòng)線(xiàn),1條清零線(xiàn),1條應(yīng)答信號(hào)線(xiàn)。其詳細(xì)的輸入輸出接口信號(hào)及其功能如表 5-1所示,其中kongzhi是芯片的控制信號(hào),只有當(dāng)它啟動(dòng)之后,其它的地址、復(fù)位和命令信號(hào)才能啟動(dòng)。表 5-1 I2C總線(xiàn)接口信號(hào)表端口名方向描述kongzhi輸入啟動(dòng)信號(hào)scl輸入時(shí)鐘輸入clr輸入清零位dizhi輸入地址信號(hào)輸入shuru輸入讀操作中從機(jī)發(fā)送的數(shù)據(jù)duxie輸入讀寫(xiě)控制信號(hào)shuchu輸出寫(xiě)操作中主機(jī)接收的數(shù)據(jù)ack輸出從機(jī)的應(yīng)答信號(hào)sda輸入/輸出數(shù)據(jù)輸入輸出信號(hào)它的外圍接口設(shè)備如圖 5-5 圖5-6 圖5-7所示: 圖 5-5 I2C總線(xiàn)頂層設(shè)計(jì)模塊圖 圖 5-6 I2C總線(xiàn)控制器的外圍接口功能框圖 圖 5-7 I2C總線(xiàn)控制器的端口圖5.5 本章小結(jié)本章首先介紹了I2C總線(xiàn)的功能,分為三種寫(xiě)操作,順序讀操作和選擇性讀操作,然后根據(jù)這3種操作用VHDL語(yǔ)言做了其中比較核心的串行與并行之間的轉(zhuǎn)換,附有仿真圖,最后完成了I2C總線(xiàn)的頂層設(shè)計(jì),為完成下章的I2C總線(xiàn)的時(shí)序?qū)崿F(xiàn)做了鋪墊。第6章 I2C總線(xiàn)的硬件時(shí)序仿真本文在Quartus 7.1環(huán)境下對(duì)I2C總線(xiàn)控制其時(shí)序進(jìn)行仿真,上一章中已經(jīng)對(duì)部分模塊進(jìn)行了功能仿真。而時(shí)序仿真是在FPGA布局布線(xiàn)完成之后進(jìn)行的仿真,這一級(jí)別的仿真可以真實(shí)地模擬真實(shí)電路的工作情況。為了確認(rèn)I2C總線(xiàn)控制器是否能夠正確運(yùn)行,我們建立一個(gè)模擬的仿真環(huán)境,主器件為微控制器,從器件是EEPROM。I2C總線(xiàn)規(guī)范規(guī)定,每個(gè)從器件都擁有一個(gè)唯一的7位從器件地址,讓主機(jī)來(lái)進(jìn)行選擇,通常7位中四個(gè)較重要的位(MSBthe MostSignificant Bit)為固定的,并依器件本身性質(zhì)的分類(lèi)區(qū)分,如1010即代表串行EEPROM,而其他三個(gè)較不重要的位(LSB),即A2、A1與A0則可以通過(guò)硬件電子引腳設(shè)定,并取得8個(gè)不同的I2C地址組合,因此在同一個(gè)I2C總線(xiàn)上可以有8個(gè)相同類(lèi)型的器件10。6.1 器件的選擇在Quartus平臺(tái)上,對(duì)FPGA進(jìn)行仿真之前,要選擇一個(gè)器件。FPGA器件的選用同其它通用邏輯器件不同,除考慮器件本身的性能外,軟件工具也很重要11。如何選用合適的FPGA器件,不只是一件一次性的工作,還涉及到設(shè)計(jì)軟件的選用以及今后進(jìn)一步工作的開(kāi)展。首先,用戶(hù)應(yīng)該根據(jù)自身的技術(shù)環(huán)境、技術(shù)條件、使用習(xí)慣等選擇一種合適的軟件工具,同時(shí)要兼顧EDA技術(shù)的發(fā)展。占據(jù)優(yōu)勢(shì)的軟件供應(yīng)商同大多數(shù)芯片制造商建立了良好的合作伙伴關(guān)系,所以,擁有一種設(shè)計(jì)軟件,再進(jìn)一步選擇不同的工具庫(kù),或增加部分配置,即可對(duì)不同廠家的不同種類(lèi)的FPGA產(chǎn)品進(jìn)行設(shè)計(jì)。其次,用戶(hù)可根據(jù)設(shè)計(jì)的需要確定選擇哪一類(lèi)FPGA器件。如果用于航天、軍事領(lǐng)域,反熔絲技術(shù)的一次編程型FPGA是首選;如果要完成多種算術(shù)運(yùn)算,或是要求工作在較高速度下,EPLD/CPLD是較好的選擇;而對(duì)于功能復(fù)雜的時(shí)序邏輯電路而言,標(biāo)準(zhǔn)門(mén)陣列單元型的FPGA具有集成度高、保持靈活和功耗低的優(yōu)點(diǎn)。第三,選定某一廠家的產(chǎn)品,生產(chǎn)同類(lèi)器件的廠家很多,一般依據(jù)以下準(zhǔn)則進(jìn)行選擇。(1)選擇有設(shè)計(jì)軟件支持的廠家的芯片,這樣可減少資本投入,降低成本。(2)選擇產(chǎn)品設(shè)計(jì)性能改進(jìn)有余量的。如果所選擇的芯片是某一廠家產(chǎn)品中容量最大,或是速度最高的,那么,一旦設(shè)計(jì)需要改進(jìn),則有可能在該廠家的芯片中再選不出合適的來(lái)了。(3)設(shè)計(jì)應(yīng)用的延續(xù)性和可擴(kuò)展性。如果所選廠家的產(chǎn)品具有很大的局限性,則有可能僅僅適用于很少一部分設(shè)計(jì),從而造成設(shè)計(jì)軟件投入上的浪費(fèi)。(4)選擇性能價(jià)格比最優(yōu)的。盡管象Xilinx、Altera這樣的器件生產(chǎn)廠家都在通過(guò)降價(jià)來(lái)作市場(chǎng)宣傳,大多數(shù)FPGA芯片的價(jià)格還是比較高的,所有在滿(mǎn)足上述準(zhǔn)則的情況下適當(dāng)考慮價(jià)格也是有必要的。參考產(chǎn)品說(shuō)明書(shū),了解芯片容量、外引腳個(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公司的cyclone II系列的EP2C35器件,它采用90nm技術(shù),就有較大的容量和速度,具有強(qiáng)大的系統(tǒng)級(jí)功能以及重要的改進(jìn)和新特性,是同類(lèi)產(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ù)器件的data sheet,進(jìn)行管腳分配,然后對(duì)項(xiàng)目進(jìn)行語(yǔ)法分析,編譯,EDA工具可以生成一個(gè)RTL級(jí)的連接圖,影射到工藝庫(kù),項(xiàng)目會(huì)生成一個(gè)工藝庫(kù)影射瀏覽圖,生成的圖形見(jiàn)附錄,之后進(jìn)行綜合,時(shí)序分析。為了驗(yàn)證系統(tǒng)的功能性,在時(shí)序仿真之前,首先進(jìn)行功能級(jí)的仿真,各個(gè)模塊的仿真波形見(jiàn)附錄。然后進(jìn)行布局布線(xiàn),創(chuàng)建波形圖,進(jìn)行時(shí)序仿真,也就是后級(jí)仿真,它能夠真實(shí)地反映系統(tǒng)的工作情況。下面具體分析幾個(gè)仿真圖形6.2.1 用VHDL語(yǔ)言實(shí)現(xiàn)寫(xiě)字節(jié)周期首先控制端口先發(fā)送一個(gè)啟動(dòng)信號(hào)(本設(shè)計(jì)中用一個(gè)下降沿作為啟動(dòng)信號(hào)),系統(tǒng)接到啟動(dòng)信號(hào)后,所有的器件開(kāi)始工作。寫(xiě)操作中,由主機(jī)先向SDA串行數(shù)據(jù)線(xiàn)發(fā)送一個(gè)開(kāi)始信號(hào),之后發(fā)送一個(gè)7位的從機(jī)地址以及第8位的寫(xiě)位(“0”),為尋找此次操作的目標(biāo)器件,因?yàn)樗械膹臋C(jī)都已經(jīng)于SDA線(xiàn)相連,然后開(kāi)始根據(jù)這個(gè)地址搜索所尋找的從機(jī),這個(gè)過(guò)程I2C總線(xiàn)將自行完成,找到后,從機(jī)會(huì)發(fā)送一個(gè)應(yīng)答信號(hào),接到應(yīng)答信號(hào)后主機(jī)開(kāi)始向從機(jī)發(fā)送數(shù)據(jù),因?yàn)镾DA為串行線(xiàn),而從機(jī)位并行輸出,這個(gè)時(shí)候完成的工作就是上一章的做的寫(xiě)操作的時(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)志這次寫(xiě)操作的結(jié)束。圖 6-1 寫(xiě)字節(jié)操作仿真圖6.2.1 用VHDL語(yǔ)言實(shí)現(xiàn)順序讀字節(jié)周期首先控制端口發(fā)送一個(gè)啟動(dòng)信號(hào),系統(tǒng)接到啟動(dòng)信號(hào)后,所有的器件開(kāi)始工作。順序讀字節(jié)操作中,由主機(jī)先向SDA串行數(shù)據(jù)線(xiàn)發(fā)送一個(gè)開(kāi)始信號(hào),之后發(fā)送一個(gè)7位的從機(jī)地址以及第8位讀位“1”,為尋找此次操作的目標(biāo)器件,因?yàn)樗械膹臋C(jī)都已經(jīng)于SDA線(xiàn)相連,然后開(kāi)始根據(jù)這個(gè)地址搜索所尋找的從機(jī),這個(gè)過(guò)程I2C總線(xiàn)將自行完成,找到后,從機(jī)會(huì)發(fā)送一個(gè)應(yīng)答信號(hào),本次操作要求是接收從機(jī)的數(shù)據(jù),并沒(méi)有選擇接受哪個(gè)子地址的字節(jié)的信號(hào),所以,按照順序操作下面就可以從從器件接收數(shù)據(jù)了,發(fā)送了應(yīng)答信號(hào)后的一個(gè)周期,從機(jī)開(kāi)始向SDA線(xiàn)發(fā)送數(shù)據(jù),因?yàn)镾DA為串行線(xiàn),而從機(jī)位并行,這個(gè)時(shí)候完成的工作就是上一章的做的讀操作的時(shí)候的串行轉(zhuǎn)并行,每傳輸完畢一個(gè)字節(jié)(8位)主機(jī)就會(huì)發(fā)送一個(gè)應(yīng)答信號(hào)(此次操作反應(yīng)在SDA線(xiàn)上,最后一個(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語(yǔ)言實(shí)現(xiàn)選擇性讀字節(jié)周期首先控制端口先發(fā)送一個(gè)啟動(dòng)信號(hào),系統(tǒng)接到啟動(dòng)信號(hào)后,所有的器件開(kāi)始工作。順序讀操作首先要進(jìn)行一次偽寫(xiě)操作,前9個(gè)時(shí)鐘周期都是和寫(xiě)操作一樣,包括第8位的讀寫(xiě)位也輸入的是寫(xiě)位“0”,由主機(jī)先向SDA串行數(shù)據(jù)線(xiàn)發(fā)送一個(gè)開(kāi)始信號(hào),之后發(fā)送一個(gè)7位的從機(jī)地址以及第8位的寫(xiě)位(“0”),為尋找此次操作的目標(biāo)器件,因?yàn)樗械膹臋C(jī)都已經(jīng)于SDA線(xiàn)相連,然后開(kāi)始根據(jù)這個(gè)地址搜索所尋找的從機(jī),這個(gè)過(guò)程I2C總線(xiàn)將自行完成,找到后,從機(jī)會(huì)發(fā)送一個(gè)應(yīng)答信號(hào),接到應(yīng)答信號(hào)后主機(jī)開(kāi)始向從機(jī)發(fā)送所選擇的那個(gè)8位的字節(jié)地址,當(dāng)從機(jī)收到這8位字節(jié)地址后發(fā)送一個(gè)應(yīng)答信號(hào),主機(jī)收到這個(gè)應(yīng)答信號(hào)后發(fā)送一個(gè)重復(fù)因開(kāi)始條件,之后主機(jī)再次向從機(jī)發(fā)送7位從機(jī)地址和第8位的讀位“1”,從機(jī)收到后發(fā)送一個(gè)應(yīng)答信號(hào),主機(jī)收到應(yīng)答信號(hào)后開(kāi)始向從機(jī)發(fā)送數(shù)據(jù),每傳輸完畢一個(gè)字節(jié)(8位)主機(jī)就會(huì)發(fā)送一個(gè)應(yīng)答信號(hào)(此次操作反應(yīng)在SDA線(xiàn)上,最后一個(gè)字節(jié)除外),當(dāng)最后一個(gè)字節(jié)發(fā)送完畢后,主機(jī)將發(fā)送不應(yīng)答信號(hào)而直接發(fā)送一個(gè)停止信號(hào),標(biāo)志這次選擇性讀操作的結(jié)束。圖 6-3 選擇性讀操作仿真圖6.3 本章小結(jié)本章先介紹了如何選擇FPGA等器件,以及如何連接I2C總線(xiàn)器件和主從器件,這個(gè)多數(shù)是參考了資料,大部分操作還是在軟件上實(shí)現(xiàn)的,在本章介紹了對(duì)I2C的3種操作進(jìn)行了時(shí)序仿真,檢驗(yàn)了上章最后做的頂層設(shè)計(jì)。結(jié) 論本次設(shè)計(jì)的題目是基于FPGA的I2C總線(xiàn)的設(shè)計(jì)與實(shí)現(xiàn),設(shè)計(jì)中涉及到了I2C的有關(guān)知識(shí),VHDL語(yǔ)言的編寫(xiě),Quartus II軟件的使用方法,以及FPGA的有關(guān)知識(shí)。其中主要任務(wù)就是運(yùn)用VDHL語(yǔ)言編寫(xiě)I2C總線(xiàn)的功能和時(shí)序功能。論文中將幾個(gè)比較重要的模塊進(jìn)行了功能仿真,并且對(duì)頂層設(shè)計(jì)也進(jìn)行了詳細(xì)的功能仿真和時(shí)序仿真,仿真結(jié)果表明,各個(gè)模塊均基本完成了相應(yīng)的邏輯功能。本次設(shè)計(jì)的I2C總線(xiàn)控制器非常適合于內(nèi)含F(xiàn)PGA的系統(tǒng)中,因?yàn)镮2C總線(xiàn)需要控制器,使用獨(dú)立的控制器占用了多余的空間,用FPGA實(shí)現(xiàn)對(duì)I2C總線(xiàn)器件的控制成為最理想的選擇,本設(shè)計(jì)能夠?qū)崿F(xiàn)FPGA模擬I2C總線(xiàn)來(lái)控制其讀寫(xiě)操作,由于FPGA的快速發(fā)展,其容量可以將各種外圍器件的接口集成到FPGA內(nèi)部,這樣可以實(shí)現(xiàn)設(shè)計(jì)的小型化,低功耗,并且降低了設(shè)計(jì)的復(fù)雜度,而且利用了FPGA在線(xiàn)可編程特點(diǎn),可以增加系統(tǒng)設(shè)計(jì)的靈活度,提高了設(shè)計(jì)效率。著眼于VHDL語(yǔ)言的效率和可移植性以及不依賴(lài)器件的特性,設(shè)計(jì)者更能在不同系統(tǒng)中把握和描述系統(tǒng)結(jié)構(gòu)和功能特性,使設(shè)計(jì)更具靈活性。本設(shè)計(jì)可以在本系統(tǒng)中使用,也可以移植到其他系統(tǒng)等。在設(shè)計(jì)期間,通過(guò)不斷的學(xué)習(xí)、思考和實(shí)踐,主要掌握了VHDL語(yǔ)言的基本編寫(xiě)技術(shù),Quartus II的基本使用方法,提高了學(xué)習(xí)能力和操作能力,以及創(chuàng)新能力。為以后的學(xué)習(xí)打下了一定的基礎(chǔ),對(duì)以后學(xué)習(xí)別的語(yǔ)言等,積累的一定的經(jīng)驗(yàn)。致 謝在論文即將完成之際,謹(jǐn)向所有關(guān)心我的老師、同學(xué)和朋友表示衷心的感謝!本課題是在導(dǎo)師周志權(quán)老師和趙占峰老師親切關(guān)懷和悉心指導(dǎo)下完成的,導(dǎo)師以淵博的學(xué)識(shí)和嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度,為學(xué)生開(kāi)拓了研究視野,豐富了專(zhuān)業(yè)知識(shí)。先生謙遜無(wú)私的高尚品質(zhì)、樸實(shí)真誠(chéng)的做人原則和一絲不茍的敬業(yè)精神,對(duì)學(xué)生將永遠(yuǎn)的鞭策。在我畢業(yè)設(shè)計(jì)期間,周志權(quán)老師和趙占峰老師在學(xué)習(xí)、生活上都給予了我極大的關(guān)懷和鼓勵(lì)。從論文選題、實(shí)驗(yàn)仿真到最后論文的撰寫(xiě),周志權(quán)老師和趙占峰老師都做了悉心的指導(dǎo),并提出了許多寶貴的建議。藉此完成之際,借此機(jī)會(huì)謹(jǐn)向尊敬的周志權(quán)老師和趙占峰老師致以最衷心的感謝!感謝論文中參考的參考文獻(xiàn)的作者;對(duì)于提供論文中隱含的上述提及的支持者以及研究思想和設(shè)想的支持者表示感謝。特別感謝研究所實(shí)驗(yàn)室老師和師兄、師姐為我論文的完成提供了許多幫助。感謝我的同學(xué)和朋友的支持和幫助!在求學(xué)期間,我的親屬和朋友對(duì)我給予了無(wú)微不至的關(guān)懷,對(duì)此,我也表示深深的感謝!不要自己寫(xiě),要利用word來(lái)自動(dòng)生成。詳情請(qǐng)看最后一頁(yè)參考文獻(xiàn)1 姜雪松,王鷹等.VHDL設(shè)計(jì)實(shí)例與仿真.機(jī)械工業(yè)出版社,2007:164-1662 潘松,王國(guó)棟.VHDL實(shí)用教程.第二版.電子科技大學(xué)出版社,2001:3-43 侯伯亨,顧新.VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì).西安電子科技大學(xué)出版社,1997:12-334 劉韜,樓興華.FPGA數(shù)字電子系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)實(shí)例導(dǎo)航.人民郵電出版社,2005:15-175 李洪偉.基于Quartus II的FPGA/CPLD設(shè)計(jì),電子工業(yè)出版社,2006: 12-206 Altera.Quartus簡(jiǎn)介.Quartus官方入門(mén)手冊(cè),2003:11-1537 王毓銀.數(shù)字電路邏輯設(shè)計(jì)高等教育出版社,19998 勞有蘭,曾文波,吳其琦.基于FPGA的TDMA數(shù)字通信系統(tǒng)的設(shè)計(jì).廣西工學(xué)院學(xué)報(bào),2004:249 鄭儉鋒,I2C總線(xiàn)控制器的VHDL設(shè)計(jì)和實(shí)現(xiàn).電子設(shè)計(jì)應(yīng)用,2004: 65-6710 Bruce,J.W,Gray,M.A,Follett,R.F.Personal digital assistant(PDA)based I2C bus analysis.2003:4911 易克初,田斌,李剛強(qiáng).FPGA設(shè)計(jì)中關(guān)鍵問(wèn)題的研究.電子技術(shù)應(yīng)用,2003:68-71.12 李文,于偉.如何選擇FPGA器件.電子技術(shù)應(yīng)用,1998:59.

注意事項(xiàng)

本文([優(yōu)秀畢業(yè)論文]利用VHDL語(yǔ)言在FPGA上實(shí)現(xiàn)I2C總線(xiàn)控制器的功能)為本站會(huì)員(仙***)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話(huà):18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶(hù)上傳的文檔直接被用戶(hù)下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!