基于FPGA的SPI串行接口設計 定稿_第1頁
基于FPGA的SPI串行接口設計 定稿_第2頁
基于FPGA的SPI串行接口設計 定稿_第3頁
基于FPGA的SPI串行接口設計 定稿_第4頁
基于FPGA的SPI串行接口設計 定稿_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、基于FPGA的SPI串行接口設計 定稿 基于FPGA的SPI串行接口設計學位論文原創(chuàng)性聲明 本人鄭重聲明:所呈交的論文是本人在導師的指導下獨立進行研究所取得的研究成果。除了文中特別加以標注引用的內容外,本論文不包括任何其他個人或集體已經發(fā)表或撰寫的成果作品。本人完全意識到本聲明的法律后果由本人承擔。 作者簽名: 年月日學位論文版權使用授權書 本學位論文作者完全了解學校有關保障、使用學位論文的規(guī)定,同意學校保留并向有關學位論文管理部門或機構送交論文的復印件和電子版,允許論文被查閱和借閱。本人授權省級優(yōu)秀學士論文評選機構將本學位論文的全部或部分內容編入有關數(shù)據(jù)進行檢索,可以采用影印、縮印或掃描等復

2、制手段保存和匯編本學位論文。 本學位論文屬于1、保密囗,在年解密后適用本授權書 2、不保密囗 。 (請在以上相應方框內打“”) 作者簽名:年月 日 導師簽名:年月 日武漢理工大學本科生畢業(yè)設計(論文)任務書學生姓名:杜永浩 專業(yè)班級:通信0606指導教師:陳適 工作單位:信息工程學院設計(論文)題目:基于FPGA的SPI串行接口設計 設計(論文)主要內容:1.研究探討SPI串行接口的關鍵技術和SPI協(xié)議規(guī)范2. 深入學習Verilog語言和FPGA設計方法要求完成的主要任務:具體要求:1、查閱一定數(shù)量的中英文資料,掌握相關技術。 2.掌握SPI關鍵技術,了解SPI接口定義和設計規(guī)范。 3、要求

3、閱讀相關的參考文獻不少于15篇,其中英文文獻不少于3篇,翻譯與選題相關的英文參考文獻不少于2萬印刷符; 4、根據(jù)畢業(yè)設計有關規(guī)范,按時完成所有學習、研究工作和有關文檔。 必讀參考資料:1. 基于Verilog HDL的FPGA設計與工程應用李文仲 段朝玉 著-北京航空航天大學出版社2. SPI Block Guide V03.06. Original Release Date: 21 JAN 2000Revised: 04 FEB 2003. Motorola, Inc.3.徐洋等.基于Verilog HDL的FPGA設計與工程應用.人民郵電出版社.2009 指導教師簽名: 系主任簽名: 院長

4、簽名(章)_ _武漢理工大學本科學生畢業(yè)設計(論文)開題報告基于FPGA的SPI串行外圍接口接口設計1、目的和意義及發(fā)展現(xiàn)狀 SPI是英文Serial Peripheral Interface的縮寫,中文意思是串行外圍設備接口,SPI是Motorola公司推出的一種同步串行通訊方式,是一種三線同步總線,它是一種常用的標準接口,由于其使用簡單方便且節(jié)省系統(tǒng)資源,很多芯片都支持該接口,SPI接口主要應用在EEPROM,FLASH,實時時鐘,AD轉換器,還有數(shù)字信號處理器和數(shù)字信號解碼器之間等等。當然,串口通信還有其他的接口方式,SPI接口和UART相比,多了一條同步時鐘線,上面UART的缺點也就是

5、它的優(yōu)點了,對通信雙方的時序要求不嚴格不同設備之間可以很容易結合,而且通信速度非???。一般用在產品內部元件之間的高速數(shù)據(jù)通信上面,如大容量存儲器等。這就凸現(xiàn)SPI的好處。 SPI接口的擴展有硬件和軟件兩種方法,軟件模擬SPI接口方法雖然簡單方便,但是速度受到限制,在高速且日益復雜的數(shù)字系統(tǒng)中,這種方法顯然無法滿足系統(tǒng)要求,所以采用硬件的方法實現(xiàn)最為切實可行。這使得與SPI有關的軟件就相當簡單,使CPU有更多的時間處理其他事務。當前,基于主從處理器結構的系統(tǒng)架構已經成為一種主流(如 DSP+FPGA,MCU+FPGA等),FPGA是在ASIC的基礎發(fā)展出來的,它克服了專用 ASIC不夠靈活的缺點

6、。與其他中小規(guī)模集成電路相比,其優(yōu)點主要在于它有很強的靈活性,即其內部的具體邏輯功能可以根據(jù)需要配置,對電路的修改和維護很方便。目前,FPGA的容量已經跨過了百萬門級,使得 FPGA成為解決系統(tǒng)級設計的重要選擇方案之一。在這種架構下,應用FPGA來構建SPI通信接口是切實可行的。參考文獻:1 孫豐軍,余春暄. S P I 串行總線接口的V e r i l o g 實現(xiàn). 北京工業(yè)大學 電子信息與控制工程學院 北京 10002.2 劉福奇,劉波. Verilog HDL應用程序. 電子工業(yè)出版社,2009.103 顧衛(wèi)剛. 串行外圍接口. 陜西:西安交通大學,2004.4 徐洋等.基于Veril

7、og HDL的FPGA設計與工程應用.人民郵電出版社.20095 K.Babulu, K.Soundara Rajan. FPGA IMPLEMENT ATION OF SPI TRANSCEIVER MACROCELL INTERFACE WITH SPI SPECIFICATIONS. JNTU Colleage off Engineering,2008.2、基本內容和技術方案2.1、研究的基本內容 (1)熟悉通信及通信接口相關方面的知識,學習并掌握SPI通信接口的結構,協(xié)議及原理。 (2)熟悉VERILOG語言及其開發(fā)環(huán)境ISE,使用該語言進行數(shù)字電路(FPGA)設計,慢慢深入VERIL

8、OG語言。 (3)設計流程圖,狀態(tài)圖,并一步步用Verilog語言實現(xiàn)仿真驗證I接口串口通信。 (4)采用實驗板或自行設計電路進行調試,并采用相關儀器驗證。 (5)系統(tǒng)整體調試、優(yōu)化,或就某一部分進行優(yōu)化并做深入的研究與擴展。2.2、 技術方案 (1)硬件設計模型 硬件實現(xiàn)主要是基于PLD的CPLD,FPGA中實現(xiàn)。如FPGA是在ASIC的基礎發(fā)展出來的,它克服了專用 ASIC不夠靈活的缺點。與其他中小規(guī)模集成電路相比,其優(yōu)點主要在于它有很強的靈活性,即其內部的具體邏輯功能可以根據(jù)需要配置,對電路的修改和維護很方便。目前,FPGA的容量已經跨過了百萬門級,使得 FPGA成為解決系統(tǒng)級設計的重要

9、選擇方案之一。在這種架構下,應用FPGA來構建SPI通信接口是切實可行的。 下圖模式一種主從模式: SPI 接口作為主機與從機的通訊接口,主要完成以下工作: SPI將從主機接收到的8位的并行數(shù)據(jù),轉換為從機所能接收的串行數(shù)據(jù),并將該數(shù)據(jù)根據(jù)SPI協(xié)議送給從機。 主機產生從機所需的時鐘信號SCLK,片選信號CS。 接收從從機傳回的讀信號和串行數(shù)據(jù),并將其轉換為并行數(shù)據(jù)。 (2)系統(tǒng)實現(xiàn)方案 用FPGA實現(xiàn)SPI串行外圍接口是一個比較復雜的系統(tǒng)較大的系統(tǒng)沒有科學的設計方法就很難保證不出錯,并很難言簡意賅的清晰思路完成方案。此方案采用了狀態(tài)機來設計,本項目的研究主要采用理論分析、邏輯推理、試驗調試等

10、方法。 針對狀態(tài)機,其主要有以下特點: 1)有限狀態(tài)機克服了純硬件數(shù)字系統(tǒng)順序方式控制不靈活的缺點。 2)狀態(tài)機的結構模式相對簡單。 3)狀態(tài)機容易構成性能良好的同步時序邏輯模塊。 4)狀態(tài)機的Verilog HDL表述豐富多樣。 5)在高速運算和控制方面,狀態(tài)機更有其巨大的優(yōu)勢。 6)就可靠性而言,狀態(tài)機的優(yōu)勢也是十分明顯的。 基于以上特點,用狀態(tài)機的方法描述SPI通信過程簡單方便并可靠,基于狀態(tài)機,SPI通信接口的狀態(tài)大致轉移圖如下所示: 首先是SPI接口在等待狀態(tài),當檢測到發(fā)送指令時觸發(fā)信號進入發(fā)送狀態(tài),在系統(tǒng)指令下檢測到寫信號時進入發(fā)送數(shù)據(jù)狀態(tài),然后一位位發(fā)送數(shù)據(jù),當檢測到讀信號時,進

11、入讀狀態(tài),當檢測到發(fā)送接收都完畢時,進入發(fā)送接收完畢狀態(tài),再轉向等待狀態(tài)。 (3)關鍵技術的實現(xiàn) 時序問題 將總線控制信號封裝成指令,使用者只需通過發(fā)送指令的方式操作,避免了復雜的時序邏輯設計問題。 全雙工傳輸方式的設計 如果全部使用狀態(tài)機的方式完成設計,則可發(fā)現(xiàn)其很難完成全雙工即收發(fā)獨立模式,則在此過程中可以采用流水線設計方式,使之收與發(fā)之間獨立進行,便可完成全雙工傳輸方式的設計。3、進度安排 第1-2周:查閱相關SPI文獻資料,對其相關研究內容進行大體了解,并明確其原理和基本實現(xiàn)方案,完成開題報告,熟悉ISE操作和在線調試,了解Verilog HDL語言的基本語法。 第3-4周:詳細理解和

12、研究SPI的原理,對Verilog HDL語言有一定的理解。 第5-12周:對于Verilog HDL語言有深入理解,并具備一定的編程能力,能設計基本單元器件,并能讀懂大型程序,熟練狀態(tài)機的設計方法,對SPI有著工作過程有著細致的了解 第13-16周:完成并修改畢業(yè)論文。 第17周: 準備論文答辯。4、指導教師意見指導教師簽名: 年 月 日 目錄摘要IAbstractII1 緒論31.1課題研究背景31.2 SPI研究目的及意義41.3 本章小結42 SPI原理分析52.1 SPI介紹52.2 SPI工作模式62.3 SPI傳輸模式62.4 SPI協(xié)議72.5 本章小結83 方案論證103.1

13、在51系列單片機系統(tǒng)中實現(xiàn)103.2 用可編程邏輯器件設計SPI113.3 本章小結114 SPI的電路設計124.1 SPI設計系統(tǒng)的功能124.2 SPI各部分具體實現(xiàn)124.2.2 SPI系統(tǒng)中所用的寄存器134.2.3 SPI速率控制144.2.4 SPI控制狀態(tài)機144.2.5 SPI程序設計流程圖154.3 SPI仿真及開發(fā)板上調試驗證分析164.3.1 仿真分析164.3.2開發(fā)板上調試184.4 本章小結205 論文總結21致謝22參考文獻23附錄124附錄228摘要 隨著專用集成電路(ASIC設計技術的進步以及超大規(guī)模集成電路(VLSI工藝技術的飛速發(fā)展,以及其價格的日益降低

14、,采用FPGA編程的硬件電路來實現(xiàn)諸如SPI接口也日益切實可行,相對軟件實現(xiàn)具有更好的優(yōu)點。SPI接口是一種常用的標準接口,由于其使用簡單方便且節(jié)省系統(tǒng)資源,很多芯片都支持該接口,SPI接口主要應用在EEPROM,FLASH,實時時鐘,AD轉換器,還有數(shù)字信號處理器和數(shù)字信號解碼器之間等等。 由于SPI接口是一種事實標準,并沒有標準協(xié)議,大部分廠家都是參照Motorola的SPI接口定義來設計的,但正因為沒有確切的版本協(xié)議,不同廠家產品的SPI接口在技術上存在一定的差別,容易引起歧義,有的甚至無法互聯(lián)(需要用軟件進行必要的修改)。本文基于一種使用較為普遍的協(xié)議來進行設計,并參照Motorola

15、公司的MC68HC11A8單片機中的SPI模塊定義來設計的簡化的SPI接口,用Verilog語言進行編寫設計,并在ISE軟件上進行設計仿真,并在基于Xlinx公司的Spartan-3E芯片的Digilent公司出品的Nexys2開發(fā)板上用在線邏輯分析儀chipscope進行板上調試驗證觀察結果,并完成實現(xiàn)功能,并具有一些獨創(chuàng)性的設計。 關鍵詞:FPGA Verilog SPI協(xié)議 chipscope ISEAbstract With the advances in design technology of ASIC and VLSIs rapid development, and its pr

16、ice is lower, the hardware circuit based on FPGA programming interface to achieve such as SPI is feasible, and it realizes better than software. SPI interface is a common standard interface, due to its simple and convenient use and save system resource , a lot of chips support this interface. SPI in

17、terface is extensively applied in EEPROM, FLASH, real-time clock, AD converter, and digital signal processor and digital signals decoder, etc. Due to the interface is a fact SPI standard, and it has no standard protocol, most manufacturers design the SPI refer to the interface definition of Motorola

18、s reference.Because of no definite agreement, there is a lot of different versions of the products in the technology exists on SPI interface, easy cause of ambiguity, some even cannot interconnect need to do some modification. Based on a common protocols for design, and the company MC68HC11A8 microc

19、ontroller of Motorola module definition to design the SPI simplified SPI interface, with Verilog language writing, and in the design of the software design ISE simulation, and based on the Xlinx company Digilent chip Spartan 3E - the Nexys2 development board with online logic analyzers chipscope on

20、board, and debugging validation observations, and complete functionality has some distinctive design Keywords:FPGA Verilog SPI protocol chipscope ISE1 緒論在研究SPI串行外圍接口之前,我們首先要對其背景及其研究的目的要有所了解。1.1課題研究背景 數(shù)據(jù)傳送有串行傳送和并行傳送兩種方。并行傳送以其高速度占領了數(shù)據(jù)傳送領域很長一段時間,采用并行傳送的集成電路、外圍設備可謂不計其數(shù),從CPU、RAM/ROM到打印機。 從原理上講,串行傳輸是按位傳輸方

21、式,只利用一條信號線進行傳輸,例如:要傳送一個字節(jié)(8位)數(shù)據(jù),是按照該字節(jié)中從最高位逐位傳輸,直至最低位。 而并行傳輸是一次將所有一字節(jié)中8位信號一并傳送出去。自然最少需要8根信號線。 如果按每次傳送的數(shù)據(jù)流量來看,并行傳輸要遠快于串口,在電腦發(fā)展初期,由于數(shù)據(jù)傳輸速率不是很高,并行傳輸還是很快的。 但并行傳輸也有它的缺點: (1)干擾問題上面的人已經提到。 其根本原因是由于傳輸速率太快,一般達到100M以上,信號線上傳遞的頻率將超過100MHz,想想看,調頻收音機的頻率也不過88108MHz,也就是說,若用并行傳輸?shù)脑?是8根天線放在一起來傳輸信號,易發(fā)生干擾。但如果加強屏蔽,減小信號線間

22、的耦合電容,是可以繼續(xù)增大傳輸速率的,不過這將變得不現(xiàn)實,因為這必然導致信號線將耗用更多金屬,截面積更大。但這并不是不能解決的問題。 (2)并行傳輸速率提升困難的最主要原因是同步問題 并行傳輸時,發(fā)送器是同時將8位信號電平加在信號線上,電信號雖然是以光速傳輸?shù)?但仍有延遲,因此8位信號不是嚴格同時到達接受端,速率小時,由于每一字節(jié)在信號線上的持續(xù)時間較長,這種到達時間上的不同步并不嚴重,隨著傳輸速率的增加,與8位信號到達時間的差異相比,每一字節(jié)的持續(xù)時間顯得越來越短,最終導致前一字節(jié)的某幾位與后一字節(jié)的幾位同時到達接受端,這就造成了傳輸失敗,而且隨著信號線的加長這種現(xiàn)象還會越發(fā)嚴重,直至無法使

23、用。?這是并口傳輸?shù)闹旅秉c。 串行傳輸由于只有一位信號在信號線上,沒有位同步問題,因此傳送頻率可以繼續(xù)提高,當前傳輸速率已經達到1Gb/s(1000M)以上,而且還在提高,而并行傳輸在100Mb/s左右就停滯不前了,可以預見,串行傳輸將會比并行傳輸越來越快。 為此,串行傳輸已經成為當今外設接口的主流傳輸方式,為此,摩托羅拉公司開發(fā)出了同步外設接口SPI,并隨著時間不斷改進,由于其占用線的資源少,且穩(wěn)定可靠,該總線大量用在與EEPROM、ADC、FLASH和顯示驅動器之類的慢速外設器件通信,現(xiàn)在很多單片機等都有SPI模塊來連接外圍設備,從而使主機與外設傳輸數(shù)據(jù)更加方便。1.2 SPI研究目的及

24、意義 SPI是一種同步串行通訊方式,是一種三線同步總線,它是一種常用的標準接口,由于其使用簡單方便且節(jié)省系統(tǒng)資源,很多芯片都支持該接口,SPI接口主要應用在EEPROM,FLASH,實時時鐘,AD轉換器,還有數(shù)字信號處理器和數(shù)字信號解碼器之間等等。當然,串口通信還有其他的接口方式,SPI接口和UART相比,多了一條同步時鐘線,對通信雙方的時序要求不嚴格不同設備之間可以很容易結合,而且通信速度非???。一般用在產品內部元件之間的高速數(shù)據(jù)通信上面,如大容量存儲器等。這就凸現(xiàn)SPI的好處。為此,研究SPI接口,可以更容易了解并外圍器件傳輸過程,并對其已定義的進行改進,并使之更加可靠,功能強化。 SPI

25、接口的擴展有硬件和軟件兩種方法,軟件模擬SPI接口方法雖然簡單方便,但是速度受到限制,在高速且日益復雜的數(shù)字系統(tǒng)中,這種方法顯然無法滿足系統(tǒng)要求,所以采用硬件的方法實現(xiàn)最為切實可行。這使得與SPI有關的軟件就相當簡單,使CPU有更多的時間處理其他事務。 SPI接口是一種事實標準,并沒有標準協(xié)議,大部分廠家都是參照Motorola的SPI接口定義來設計的,但正因為沒有確切的版本協(xié)議,不同廠家產品的SPI接口在技術上存在一定的差別,容易引起歧義,有的甚至無法互聯(lián)(需要用軟件進行必要的額修改)。 當前,基于主從處理器結構的系統(tǒng)架構已經成為一種主流(如 DSP+FPGA,MCU+FPGA等),FPGA

26、是在ASIC的基礎發(fā)展出來的,它克服了專用 ASIC不夠靈活的缺點。與其他中小規(guī)模集成電路相比,其優(yōu)點主要在于它有很強的靈活性,即其內部的具體邏輯功能可以根據(jù)需要配置,對電路的修改和維護很方便。目前,FPGA的容量已經跨過了百萬門級,使得 FPGA成為解決系統(tǒng)級設計的重要選擇方案之一。在這種架構下,應用FPGA來構建SPI通信接口是切實可行的。并FPGA是可編程并可重復擦寫的,從而具有更大的靈活性,在協(xié)議不標準的情況下,可根據(jù)外圍設備的不同而靈活的改動SPI設計,使設計周期大大降低,并與外圍設備連接更加方便。1.3 本章小結 本章主要介紹了SPI的背景,及研究的目的與意義,進而可以知道SPI提

27、出的目的以及其現(xiàn)階段的發(fā)展狀況,從而可以對SPI的這些理解達到舉一反三的目的。2 SPI原理分析 SPI原理主要介紹SPI的基本機構,工作模式,傳輸模式以及SPI的典型協(xié)議,通過此院里的介紹,對于SPI的要點介紹,以及其工作過程有一個通透了解,從而可以能設計達到原理目的的功能設計以及程序的設計。2.1 SPI介紹 SPI總線系統(tǒng)是一種同步串行外設接口,它可以使MCU與各種外圍設備以串行方式進行通信以交換信息。外圍設置FLASHRAM、網絡控制器、LCD顯示驅動器、A/D轉換器和MCU等。SPI總線系統(tǒng)可直接與各個廠家生產的多種標準外圍器件直接接口,該接口一般使用4條線:串行時鐘線(SCK)、主

28、機輸入/從機輸出數(shù)據(jù)線MISO、主機輸出/從機輸入數(shù)據(jù)線MOST和低電平有效的從機選擇線SS有的SPI接口芯片帶有中斷信號線INT或INT、有的SPI接口芯片沒有主機輸出/從機輸入數(shù)據(jù)線MOSI。 SPI的通信原理很簡單,它以主從方式工作,這種模式通常有一個主設備和一個或多個從設備,需要至少4根線,事實上3根也可以(單向傳輸時)。也是所有基于SPI的設備共有的,它們是SDI(數(shù)據(jù)輸入),SDO(數(shù)據(jù)輸出),SCK(時鐘),CS(片選)。 (1)MOSI ? 主設備數(shù)據(jù)輸出,從設備數(shù)據(jù)輸入 (2)MISO ? 主設備數(shù)據(jù)輸入,從設備數(shù)據(jù)輸出 (3)SCLK ? 時鐘信號,由主設備產生 (4)CS

29、 ? 從設備使能信號,由主設備控制 其中CS是控制芯片是否被選中的,也就是說只有片選信號為預先規(guī)定的使能信號時(高電位或低電位),對此芯片的操作才有效。這就允許在同一總線上連接多個SPI設備成為可能。 接下來就負責通訊的3根線了。通訊是通過數(shù)據(jù)交換完成的,這里先要知道SPI是串行通訊協(xié)議,也就是說數(shù)據(jù)是一位一位的傳輸?shù)?。這就是SCK時鐘線存在的原因,由SCK提供時鐘脈沖,SDI,SDO則基于此脈沖完成數(shù)據(jù)傳輸。數(shù)據(jù)輸出通過 SDO線,數(shù)據(jù)在時鐘上升沿或下降沿時改變,在緊接著的下降沿或上升沿被讀取。完成一位數(shù)據(jù)傳輸,輸入也使用同樣原理。這樣,在至少8次時鐘信號的改變(上沿和下沿為一次),就可以完

30、成8位數(shù)據(jù)的傳輸。 要注意的是,SCK信號線只由主設備控制,從設備不能控制信號線。同樣,在一個基于SPI的設備中,至少有一個主控設備。這樣傳輸?shù)奶攸c:這樣的傳輸方式有一個優(yōu)點,與普通的串行通訊不同,普通的串行通訊一次連續(xù)傳送至少8位數(shù)據(jù),而SPI允許數(shù)據(jù)一位一位的傳送,甚至允許暫停,因為SCK時鐘線由主控設備控制,當沒有時鐘跳變時,從設備不采集或傳送數(shù)據(jù)。也就是說,主設備通過對SCK時鐘線的控制可以完成對通訊的控制。SPI還是一個數(shù)據(jù)交換協(xié)議:因為SPI的數(shù)據(jù)輸入和輸出線獨立,所以允許同時完成數(shù)據(jù)的輸入和輸出。不同的SPI設備的實現(xiàn)方式不盡相同,主要是數(shù)據(jù)改變和采集的時間不同,在時鐘信號上沿或

31、下沿采集有不同定義,具體請參考相關器件的文檔。 在點對點的通信中,SPI接口不需要進行尋址操作,且為全雙工通信,顯得簡單高效。在多個從設備的系統(tǒng)中,每個從設備需要獨立的使能信號,硬件上比I2C系統(tǒng)要稍微復雜一些。 最后,SPI接口的一個缺點:沒有指定的流控制,沒有應答機制確認是否接收到數(shù)據(jù)。2.2 SPI工作模式 SPI由工作方式的不同,可分為兩種模式:主模式和從模式主模式將Master的數(shù)據(jù)傳送給Slave,8位數(shù)據(jù)傳送,傳送完畢,申請中斷,如圖2.2.1 圖 2.2.1 SPI工作主模式 (2) 從模式 此時,從控制器從SIMO引腳接收串行數(shù)據(jù)并把數(shù)據(jù)移入自身移位寄存器的最低位或最高位。要

32、注意的是,其是在主控制器輸出時鐘SCLK的控制下,在SCLK的上升沿或者下降沿讀出一個數(shù)據(jù)輸出給主設備。其傳播模型如下圖所示: 圖 2.2.2 SPI工作從模式 須注意的是,主設備可以再在任意時刻起動數(shù)據(jù)發(fā)送,因為它控制著SCLK信號,而在從模式下,從控制器要發(fā)送數(shù)據(jù),必須要用先設置片選信號以確保使能端CS輸入允許。2.3 SPI傳輸模式 SPI 的工作模式分為主模式和從模式,二者都需要在 SCK 的作用下才能工作;但主模式不需要 CS 信號,而從模式必須在 CS 信號有效的情況下才能完成。不論是在主模式下還是在從模式下,都要在時鐘極性(CPOL)和時鐘相位(CPHA)的配合下才能有效地完成一

33、次數(shù)據(jù)傳輸。其中,時鐘極性表示時鐘信號在空閑時的電平;時鐘相位決定數(shù)據(jù)是在 SCK的上升沿采樣還是下降沿采樣。根據(jù)時鐘極性和時鐘相位的不同組合,可以得到 SPI 總線的4 種工作模式,入圖所示:圖2.3.1 SPI四種傳輸模式 (1)SPI0 模式下的 CPOL 為 0,SCK的空閑電平為低;CPHA 為 0,數(shù)據(jù)在串行同步時鐘的第一個跳變沿(由于 CPOL 為低,因此第 1 個跳變沿只能為上升沿)時數(shù)據(jù)被采樣。 (2)SPI1 模式下的 CPOL 也為 0,SCK的空閑電平為低;但是 CPHA 為 1,數(shù)據(jù)在串行同步時鐘的第二個跳變沿(由于 CPOL 為低,因此第 2 個跳變沿只能為下降沿)

34、時數(shù)據(jù)被采樣。 (3)SPI2 模式下的 CPOL 為 1,SCK的空閑電平為高;CPHA 為 0,數(shù)據(jù)在串行同步時鐘的第1個跳變沿(由于 CPOL 為高,因此第 1 個跳變沿只能為下降沿)時數(shù)據(jù)被采樣。 (4)SPI3 模式下的 CPOL 為 1,SCK的空閑電平為高;CPHA 為 1,數(shù)據(jù)在串行同步時鐘的第 2 個跳變沿(由于 CPOL 為高,因此第 1 個跳變沿只能為上升沿)時數(shù)據(jù)被采樣。 在上述 4 種模式中,使用的最為廣泛的是 SPI0 和 SPI3 方式。由于每一種模式都與其他三種不兼容,因此為了完成主、從設備間的通訊,主、從設備的 CPOL 和 CPHA 必須有相同的設置。讀者需

35、要注意的是:如果主設備/從設備在 SCK上升沿發(fā)送數(shù)據(jù),則從設備/主設備最好在下降沿采樣數(shù)據(jù);如果主設備/從設備在SCK下降沿發(fā)送數(shù)據(jù),則從設備/主設備最好在 SCK上升沿采樣數(shù)據(jù)。2.4 SPI協(xié)議 SPI接口是一種事實標準,并沒有標準協(xié)議,大部分廠家都是參照Motorola的SPI接口定義來設計的,但正因為沒有確切的版本協(xié)議,不同廠家產品的SPI接口在技術上存在一定的差別,容易引起歧義,有的甚至無法互聯(lián)(需要用軟件進行必要的額修改)。本次設計基于一種使用較為普遍的協(xié)議來進行設計,通過簡單協(xié)議來理解并設計SPI接口功能。 SPI 協(xié)議是一個環(huán)形總線結構,其時序其實比較簡單,主要是在時鐘脈沖

36、SCK 的控制下,兩個雙向移位寄存器 SPI數(shù)據(jù)寄存器數(shù)據(jù) 進行數(shù)據(jù)交換。我們假設主機的 8 位寄存器 SPIDATA1 內的數(shù)據(jù)是10101010,而從機的 8 位寄存器 SPIDATA2 內的數(shù)據(jù)是 01010101,在上升沿的時候發(fā)送數(shù)據(jù),在下降沿的時候接收數(shù)據(jù),最高位的數(shù)據(jù)先發(fā)送,主機和從機之間全雙工通信,也就是說兩個 SPI接口同時發(fā)送和接收數(shù)據(jù),如圖 所示。從圖中我們也可以看到,SPIDATA 移位寄存器總是將最高位的數(shù)據(jù)移出,接著將剩余的數(shù)據(jù)分別左移一位,然后將接收到得數(shù)據(jù)移入其最低位。 圖2.4.1 SPI的環(huán)形總線結構 如圖 所示,當?shù)谝粋€上升沿來的時候,SPIDATA1 將

37、最高位 1 移除,并將所有數(shù)據(jù)左移1位, 這時 MOSI 線為高電平,而 SPIDATA2 將最高位 0 移出, 并將所有數(shù)據(jù)左移 1 位, 這樣 MISO線為低電平。然后當下降沿到來的時候,SPIDATA1 將鎖存 MISO 線上的電平,并將其移入其最低位,同樣的,SPIDATA2 將鎖存 MOSI 線上的電平,并將其移入最低位。經過 8 個脈沖后,兩個移位寄存器就實現(xiàn)了數(shù)據(jù)的交換,也就是完成了一次 SPI 的時序。 圖2.4.2數(shù)據(jù)傳輸示例2.5 本章小結 本章通過對SPI的原理分析,介紹其首發(fā)原理及基本結構,再介紹其工作模式,再介紹其傳輸模式和協(xié)議距離。通過以上分析,便可以知道本次設計的

38、SPI所必須具備的功能有哪些,哪些是需要注意的功能。從而可以確定本次設計的工作模式,以及設計所的傳輸模式,并且通過介紹的協(xié)議舉例來通過此協(xié)議來設計SPI系統(tǒng)結構。通過本章的分析,本次設計確定為主模式,及主控模式的設計,并且四種傳輸模式均需要實現(xiàn),并且遵循SPI協(xié)議,按照此協(xié)議來設計SPI結構。以此,變可以進行SPI結構設計了。3 方案論證 對于SPI接口設計主要分為兩大類,利用單片機如51系列單片機實現(xiàn)和利用FPGA等可編程邏輯器件編程實現(xiàn),下面將分別介紹兩種方法的方法。3.1在51系列單片機系統(tǒng)中實現(xiàn) 對于不帶SPI串行總線接口的MCS51系列單片機來說,可以使用軟件來模擬SPI的操作,包括

39、串行時鐘、數(shù)據(jù)輸入和數(shù)據(jù)輸出。對于不同的串行接口外圍芯片,它們的時鐘時序是不同的。對于在SCK的上升沿輸入(接收)數(shù)據(jù)和在下降沿輸出(發(fā)送)數(shù)據(jù)的器件,一般應將其串行時鐘輸出口P1.1的初始狀態(tài)設置為1,而在允許接口后再置P1.1為0。這樣,MCU在輸出1位SCK時鐘的同時,將使接口芯片串行左移,從而輸出1位數(shù)據(jù)至MCS51單片機的P1.3口(模擬MCU的MISO線),此后再置P1.1為1,使MCS51系列單片機從P1.0(模擬MCU的MOSI線)輸出1位數(shù)據(jù)(先為高位)至串行接口芯片。至此,模擬1位數(shù)據(jù)輸入輸出便宣告完成。此后再置P1.1為0,模擬下1位數(shù)據(jù)的輸入輸出,依此循環(huán)8次,即可完成

40、1次通過SPI總線傳輸8位數(shù)據(jù)的操作。對于在SCK的下降沿輸入數(shù)據(jù)和上升沿輸出數(shù)據(jù)的器件,則應取串行時鐘輸出的初始狀態(tài)為0,即在接口芯片允許時,先置P1.1為1,以便外圍接口芯片輸出1位數(shù)據(jù)(MCU接收1位數(shù)據(jù)),之后再置時鐘為0,使外圍接口芯片接收1位數(shù)據(jù)MCU發(fā)送1位數(shù)據(jù),從而完成1位數(shù)據(jù)的傳送。 圖3.1.1 基于MCS51單片機的SPI設計模型 圖3.1.1所示為MCS51系列單片機與存儲器X25F008(E2PROM)的硬件連接圖,圖2中,P1.0模擬MCU的數(shù)據(jù)輸出端(MOSI),P1.1模擬SPI的SCK輸出端,P1.2模擬SPI的從機選擇端,P1.3模擬SPI的數(shù)據(jù)輸入端(MI

41、SO)。下面介紹用MCS51單片機的匯編語言模擬SPI串行輸入、串行輸出和串行輸入/輸出的3個子程序,實際上,這些子程序也適用于在串行時鐘的上升沿輸入和下降沿輸出的其它各種串行外圍接口芯片(如A/D轉換芯片、網絡控制器芯片、LED顯示驅動芯片等)。對于下降沿輸入、上升沿輸出的各種串行外圍接口芯片,只要改變P1.1的輸出電平順序,即先置P1.1為低電平,之后再次置P1.1為高電平,再置P1.1為低電平,則這些子程序也同樣適用。3.2 用可編程邏輯器件設計SPI 除了編程方法,還可以用FPGA設計SPI,及用可編程邏輯的方法設計硬件來用單片機直接用簡單的程序來應用外圍硬件來實現(xiàn)SPI傳輸。通過對S

42、PI的結構的了解可以設計一個系統(tǒng)框架,按照框架完成輸入輸出的功能。 一般一個典型的SPI系統(tǒng)如下圖所示,其主要包括MPU和一個或幾個外圍器件,SPI一端與MPU接口相連,另一端便是負責傳輸?shù)乃臈l線了。當此單片機處于主機模式時,就能與從機進行通信,當此單片機處于從機模式時,就能與另一主機通信??傊?一個系統(tǒng)中只有一個主機,否則無法工作。用FPGA設計的系統(tǒng)框架如下圖3.2.1所示: 圖3.2.1 介于SPI的FPGA設計系統(tǒng)框架 以上兩種便是兩種實現(xiàn)SPI的方法,在實際應用中,許多單片機已經包括了SPI接口,可見SPI接口應用很廣泛,只要高級點的單片機,都自帶SPI接口,并且如DSP等也集成了S

43、PI接口,可見大多芯片都趨向于用硬件實現(xiàn)而非軟件實現(xiàn)。這是因為軟件模擬SPI接口方法雖然簡單方便,但是速度受到限制,在高速且日益復雜的數(shù)字系統(tǒng)中,這種方法顯然無法滿足系統(tǒng)要求,所以采用硬件的方法實現(xiàn)最為切實可行。這使得與SPI有關的軟件就相當簡單,使CPU有更多的時間處理其他事務。在可編程邏輯器件不斷地完善改善完美并且功能強大且日益便宜,用硬件實現(xiàn)已經成為可能,在大型系統(tǒng)用硬件實現(xiàn)更加穩(wěn)定。同時可編程邏輯也有自身的優(yōu)點。在外圍器件有改變時,由于可編程邏輯可以重復擦鞋的優(yōu)點,從而在外圍器件有些許改變之時,可以同時稍微改變可編程的程序,因而可編程又有靈活性大的特點。因此,本次設計便采用可編程邏輯的

44、方案。3.3 本章小結本次設計介紹了軟件硬件兩種方法設計SPI,通過此分析,可以知道SPI的設計方法有哪些方法,通過比較可以得出每種設計的優(yōu)劣。軟件設計簡單,但有其缺點,硬件設計相比復雜些,但是其靈活性強,可以讓微處理器省出資源。4 SPI的電路設計 電路設計主要是對系統(tǒng)設計的功能,各部分功能具體實現(xiàn)方案比如管腳說明,寄存器的說明即設計,以及狀態(tài)機的動態(tài)描述,由各個功能的說明便可設計出本次SPI設計的流程圖,由流程圖便可以寫出我們所需要的程序。4.1 SPI設計系統(tǒng)的功能 本次設計具有一定的獨創(chuàng)性,有著MC68HC11A8單片機SPI接口的全部功能,并在其四種傳輸速率中擴展了另外八種速率,使速

45、率選擇更加靈活。其主要功能如下: ?本次設計為主控模式 ?與摩托拉羅說明規(guī)格部分一致 ?并增強了MC68HC11A8單片機SPI接口功能 ?添加中斷,當每完成一個數(shù)據(jù)產生中斷信號,確保微處理器讀完數(shù)據(jù)后再發(fā)送接收數(shù)據(jù) ?提供了12種速率選擇 ?提供極性相位選擇,支撐四種傳輸模式 ?充分綜合4.2 SPI各部分具體實現(xiàn) 如總系系統(tǒng)框架所示,其管腳都列其上,其管腳功能見下表4.2.1所示: 表4.2.1 SPI設計管腳端口名稱數(shù)據(jù)位寬信號流向功能描述int_o1Output中斷輸出,確保已傳數(shù)據(jù)被讀取rst_i1Input異步復位we_i1Input寫使能端,寫數(shù)據(jù)dat_i8Input輸入數(shù)據(jù)或

46、指令adr_i2Input寫指令數(shù)據(jù)選擇sck_o1OutputSPI時鐘輸出mosi_o1Output數(shù)據(jù)串行輸出miso_i1Input數(shù)據(jù)串行輸入cs_o1Output選片dat_o8Output輸入數(shù)據(jù)并行給微處理器 其中,需要強掉的是,adr_i端輸入不同,便使系統(tǒng)處于寫數(shù)據(jù)狀態(tài)還是寫指令狀態(tài),指令是寫給SPI設計的控制寄存器,以使SPI具有不同的功能。4.2.2 SPI系統(tǒng)中所用的寄存器 本次設計中SPI用到四種寄存器,包括SPCR(SPI控制寄存器)、SPER(SPI擴展寄存器)、treg(SPI數(shù)據(jù)傳輸/接收寄存器)其功能如下所示: (1)控制寄存器 本次設計時參照MC68HC

47、11A8單片機的SPI結構進行設計,并進行了一些改進,所以本次設計的控制寄存器的控制位與MC68HC11A8單片機的控制位大致相似,同時進行了一些擴展和不同的功能,擴展在擴展寄存器中再做介紹,其控制寄存器的控制位如下表4.2.2所示: 表4.2.2 SPI設計的控制寄存器其各功能如下: ?spie :當此為被置位為1時,則中斷允許,即允許中斷,當為0時,禁止中斷。 0:禁止中斷 1:允許中斷 ?spe :當此位被置位為1時,則系統(tǒng)運行,當置位為0時,系統(tǒng)不運行。 0:系統(tǒng)運行允許 1:系統(tǒng)允許禁止 ?msb:此為為在傳輸時是最高位線發(fā)送還是最低位先發(fā)送。當為1時,是最高位先發(fā)送,當為1時,是最

48、低位先發(fā)送。 0:先發(fā)送最低位 1:先發(fā)送最高位 ?mstr:此為主從模式選擇位,在本次設計中,本次設計只是工作于主控設備,故此為始終置1即可。 ?cpol:此為系統(tǒng)在空閑時的極性,當為0時,其為低電平為空閑時的極性,當為1時,其為高電平為空閑時的極性。 0:空閑時為低電平 1:空閑時為高電平 ?spr:此為速率選擇為,其與擴展寄存器組合成速率選擇,其可為00,01,10,11,與擴展此寄存器組合成一組數(shù)列來選擇數(shù)據(jù)傳輸速率。此刻在速率控制中詳細介紹。 (2)擴展寄存器 擴展寄存器的八位只用了兩位,其用于與控制寄存器的spr組合成一列數(shù)據(jù)控制數(shù)據(jù)傳輸速率,其組合方式為espr spre, es

49、pr,四位此而控制16種傳輸速率,此在速率控制中詳細介紹。 (3)狀態(tài)寄存器 狀態(tài)寄存器本次設計中只去了一位spi_i中斷位,其與spie允許情況下允許中斷,中斷位傳給int_o從而保證單片機完成讀取數(shù)據(jù)后在重新傳輸數(shù)據(jù),從而保證每位數(shù)據(jù)傳輸完畢,保證數(shù)據(jù)讀取后才能傳送下一位數(shù)據(jù)。4.2.3 SPI速率控制 速率控制為控制寄存器的低兩位和擴展寄存器的低兩位共同控制的,本次設計通過此四位的控制一共支持12種速率,其為系統(tǒng)時鐘的N次分頻。 本次將每一個控制賦值給clkcnt寄存器,并起每一個時鐘減一,當為0是從而影響控制位狀態(tài)機ena |clkcnt,當ena為1是則執(zhí)行狀態(tài)機,從而達到分頻目的

50、其詳細控制如表4.2.3下: 表4.2.3 SPI的速率控制spreesprclkcnt分頻000002分頻000114分頻001028分頻0011316分頻0100432分頻0101564分頻01106128分頻01117256分頻10008512分頻100191024分頻1010a2048分頻1011b4096分頻由于每一個時鐘上升沿執(zhí)行一次,從而每個完整時鐘sck_o執(zhí)行一次跳變,顧其為2的n此分頻,如上表所示。4.2.4 SPI控制狀態(tài)機 SPI控制狀態(tài)機是本次設計的核心部分,其實整個設計的可以說是大腦,控制著整個程序的執(zhí)行過程和完成設計實現(xiàn)功能??刂茽顟B(tài)機主要用于片選信號cs的選擇,

51、和輸出時鐘sck的產生,以及數(shù)據(jù)載入和輸出等。它控制各個模塊的狀態(tài),然后根據(jù)相應的狀態(tài)做出相應的操作。 在狀態(tài)機運行之前,及數(shù)據(jù)傳輸之前,所作的工作便是初始化工作,即必須先確定允許中斷,允許系統(tǒng)運行,設置先發(fā)送的數(shù)據(jù)位,設置極性相位和速率,即設置控制寄存器使之系統(tǒng)進入正常運行狀態(tài),首先必須設置spe位為1,即只有其為1時系統(tǒng)才運行,當達到adr1:010時,便是發(fā)送接收數(shù)據(jù)的命令。此時進入狀態(tài)機的空閑狀態(tài)2b00,在空閑狀態(tài),所作的工作是設置空閑的時的極性和相位,完成后便進入發(fā)送準備載入發(fā)送數(shù)據(jù)階段201。此時為達到控制速率,使用一ena |clkcnt允許位,只有其為1時,才執(zhí)行此狀態(tài)的程序,否則保持,在此狀態(tài)中,所作的工作是反向sck信號,載入數(shù)據(jù),選中信號片選信號cs端,變開始發(fā)送接收數(shù)據(jù),同時此時的第一位發(fā)送,便進入2b10狀態(tài)。此狀

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論