版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、編號畢業(yè)設計(論文)題目:spi接口的仿真及驗證 物聯(lián)網(wǎng)工程 學院 電子信息工程專業(yè)學 號 0703090121 學生姓名 胥翔 指導教師 虞致國 副教授 二一三年六月摘要 在專用集成電路(asic)設計技術以及超大規(guī)模集成電路(vlsi)工藝技術的飛速發(fā)展的今天,fpga編程的硬件電路被越來越多的應用于實現(xiàn)諸如spi接口等方面。相對于軟件實現(xiàn),硬件具有更多的優(yōu)點。spi接口技術是一種高速高效率的串行接口技術, 主要用于擴展外設及其數(shù)據(jù)交換, 已經(jīng)作為一種配置標準。作為一個標準的接口,spi具有簡單方便和節(jié)省系統(tǒng)資源的優(yōu)點,使得大多數(shù)芯片都支持該接口。spi接口主要應用在eeprom、flas
2、h、實時時鐘、ad轉(zhuǎn)換器,還有數(shù)字信號處理器和數(shù)字信號解碼器之間。spi接口的全稱是serial peripheral interface,串行外圍接口,是由motorola公司首先在其mc68hcxx系列處理器上定義的。現(xiàn)在大部分廠家都是參照motorola的定義來設計的。因為沒有確切的版本協(xié)議,所以不同廠家的spi接口在技術上存在一定程度上的差別,甚至會引起歧義。本文是利用verilog硬件描述語言編寫出spi總線的主機模塊,經(jīng)過xilinx ise仿真得出相應的仿真波形。根據(jù)仿真波形分析,所設計的spi主機模塊的功能是正確的,并且在xilinx ise中對該模塊進行綜合與實現(xiàn)。 關鍵詞:
3、fpga;spi接口;verilog;xilinx iseabstract in application-specific integrated circuit (asic) design technology and very large scale integrated circuit (vlsi) technology rapid development today, the fpga programming of the hardware circuit is more and more used in implementation such as spi interface. rel
4、ative to the software, hardware has more advantages.as a standard interface, spi has advantages of simple and convenient and saving system resources, makes the most of the chip is supported by the interface.spi interface block is mainly used in eeprom, flash, real-time clock, ad converter, and betwe
5、en the digital signal processor and digital signal decoder. spi interface is the full name of serial peripheral interface, serial peripheral interface, motorola is first defined on its mc68hcxx series processors, most manufacturers are now based on the definition of motorola to design. this paper is
6、 to use the verilog hardware description language to write the spi bus host module, the simulation of the modelsim simulation waveform. according to the simulation waveform analysis, the design of spi host module function is right. finally in xilinx ise in comprehensive and the implementation of the
7、 module, and completed verify on the fpga.keywords:fpga ;spi interface;verilog;xilinx ise目錄摘要iabstractii目錄i第1章 緒論11.1 研究背景11.1.1系統(tǒng)芯片的發(fā)展11.1.2 ip核11.1.3數(shù)據(jù)傳送21.2 spi研究的目的及意義31.3本文的主要工作及構架31.3.1研究的基本內(nèi)容31.3.2技術方案3第2章 spi原理分析52.1 spi通信總線52.2 spi簡介52.3 spi的工作模式62.3.1主模式62.3.2 從模式72.4 spi的傳輸模式72.5 spi協(xié)議8第3
8、章方案論證113.1 用fpga來設計spi113.2 用51系列單片機實現(xiàn)spi11第4章spi的電路設計134.1管腳說明134.2 spi系統(tǒng)中所用的寄存器134.3 spi速率控制144.4 spi控制狀態(tài)機154.5 spi程序設計流程圖16第5章仿真及驗證195.1仿真分析19第6章 結論與展望216.1結論216.2不足之處及未來展望21參考文獻22致 謝23附錄a24 第1章 緒論1.1 研究背景1.1.1系統(tǒng)芯片的發(fā)展系統(tǒng)芯片(soc:system-on-a-chip)指的是在單個芯片上集成一個完整的系統(tǒng),對所有或部分必要的電子電路進行包分組的技術。所謂完整的系統(tǒng)一般包括中央
9、處理器、存儲器、以及外圍電路等。 soc 是與其它技術并行發(fā)展的,如絕緣硅(soi),它可以提供增強的時鐘頻率,從而降低微芯片的功耗。 隨著電子技術開發(fā)應用對集成電路ic需求量的擴大和半導體工藝水平的不斷進步,超大規(guī)模集成電路vlsi技術迅猛發(fā)展。當前的半導體工藝水平己經(jīng)達到了亞微米水平并正在向50nm以下發(fā)展,器件特征尺寸越來越小,芯片集成規(guī)模越來越大,數(shù)百萬門級電路可以集成在一個芯片上,芯片尺寸已從邏輯限制變?yōu)楹副P限制,我們必須找到與常規(guī)集成電路設計思想不同的設計方式,它就是新世紀ic設計的主流技術。soc是微電子設計領域的一場革命,從整個系統(tǒng)的角度出發(fā),把智能核、信息處理機制、模型算法、
10、芯片結構、各層次電路直至器件的設計緊密結合起來,在單個或少數(shù)幾個芯片上完成整個系統(tǒng)的功能,既我們可以把越來越多的電路設計在同一個芯片中,這里面可能包含有中央處理器(cpu),嵌入式內(nèi)存(embedded memory)、數(shù)字信號處理器(dsp)、數(shù)字功能模塊(digital function)、模擬功能模塊(analog function)、模擬數(shù)字轉(zhuǎn)換器(adc)以及各種外圍配置(usb, mpeg)等等,這是新發(fā)展的soc技術。soc技術的研究、應用和發(fā)展是微電子技術發(fā)展的一個新的里程碑。soc能提供更好的性能、更低的功耗、更小的印制板.空間和更低的成本,帶來了電子系統(tǒng)設計與應用的革命性新
11、變革,可廣泛應用于移動電話、硬盤驅(qū)動器、個人數(shù)字助理和手持電子產(chǎn)品、消費性電子產(chǎn)品等。soc是21世紀電子系統(tǒng)開發(fā)應用的新平臺1。1.1.2 ip核ip(intelligence property)是在fpga設計中不可缺少的組成部分,也是自底向上設計方法學的理論基礎。隨著數(shù)字系統(tǒng)設計越來越復雜,從頭開始設計系統(tǒng)中的每一個模塊是一件十分困難的事,而且會打打延長設計周期,甚至增加系統(tǒng)的不穩(wěn)定因素。ip的出現(xiàn)使得設計過程變得十分簡單,用戶甚至只需要將不同的模塊連接起來,就可以實現(xiàn)一個完整的系統(tǒng)。這樣對減少產(chǎn)品的上市時間、賺取早起的利潤十分有利。ip核是指用于產(chǎn)品應用專用的集成電路(asic)或可編
12、程邏輯器件(fpga)的邏輯塊或數(shù)據(jù)塊。將一些數(shù)字電路中常用但比較復雜的功能模塊,如fir濾波器,sdram控制器,pci接口等設計成可修改參數(shù)的模塊,讓其他用戶可以直接調(diào)用,這樣就大大減輕了工程師的負擔,避免重復勞動。隨著cpdl/fpga的規(guī)模越來越大,設計越來越負雜,使用ip核是一個發(fā)展趨勢。隨著hdl的發(fā)展和標準化,世界上出現(xiàn)了一批利用hdl進行各種集成電路功能模塊專業(yè)設計的公司。其具體任務是按常用或?qū)S霉δ?,用hdl來描述集成電路的功能和結構,并經(jīng)過不同級別的驗證形成不同級別的ip核模塊,供芯片設計人員來裝配或集成選用。(1) 軟ip核通常使用hdl文本形式提交給用戶,它已經(jīng)過行為級
13、設計優(yōu)化和功能驗證,但其中不含有任何具體的物理信息。據(jù)此,用戶可以綜合出正確的門電路級網(wǎng)表,并可以進行后續(xù)結構設計,具有強大的靈活性,可以很容易的借助eda綜合工具將其與其他外部邏輯電路結合成一體,更具不同的半導體工藝,將其設計為具有不同性能的器件??梢陨唐坊能沬p內(nèi)核的電路結構總門數(shù)一般都在5000門以上。軟ip核又被稱為虛擬器件。(2) 硬ip核是基于某種半導體工藝的物理設計,已有固定的拓撲布局和具體工藝,并已經(jīng)過工藝驗證,具有保證的性能。其共給 用戶的形式是電路物理結構掩模板圖全套工藝文件,是可以拿來就用的圈套技術。(3) 固ip核的設計深度介于軟ip內(nèi)核和硬ip內(nèi)核之間,除了完成硬i
14、p內(nèi)核所具有的設計外,還完成門電路級綜合和時序仿真設計環(huán)節(jié),一般以門電路級網(wǎng)表形式提交用戶使用。常用的ip內(nèi)核模塊有各種不同的cpu(32/64位結構cisc/risc結構的cpu或8/16位微控制器/單片機,如8051等)、32/64位dsp(如320c30)、dram、sram、eeprom、flash內(nèi)存、a/d、d/a、mpeg/jpeg、usb、pci、標準接口、網(wǎng)絡單元、編譯器、編碼/解碼器和模擬器件模塊等。豐富的ip內(nèi)核模塊庫為快速地設計專用集成電路和單片系統(tǒng)以盡快占領市場提供了保證2。1.1.3數(shù)據(jù)傳送數(shù)據(jù)傳送有串行傳送和并行傳送兩種方法。 并行傳輸是構成字符的二進制代碼在并行
15、信道上同時傳輸?shù)姆绞?。例如?單位代碼字符要用8條信道并行同時傳輸,一次傳一個字符,收、發(fā)雙方不存在同步問題,速度快,但信道多、投資大,數(shù)據(jù)傳輸中很少采用3。串行傳輸是構成二進制代碼在一條信道上以位(碼元)為單位,按時間順序逐位傳輸?shù)姆绞?。按位發(fā)送,逐位接收,同時還要確認字符,所以要采取同步措施。速度雖慢,但只需一條傳輸信道,投資小,易于實現(xiàn)。為此,串行傳輸已經(jīng)成為當今外設接口的主流傳輸方式,為此,摩托羅拉公司開發(fā)出了同步外設接口(spi),并隨著時間不斷改進,由于其占用線的資源少,且穩(wěn)定可靠,該總線大量用在與eeprom、adc、flash和顯示驅(qū)動器之類的慢速外設器件通信,現(xiàn)在很多單片機等
16、都有spi模塊來連接外圍設備,從而使主機與外設傳輸數(shù)據(jù)更加方便5。1.2 spi研究的目的及意義spi總線,是一個同步串行接口的數(shù)據(jù)總線,它具有全雙工、信號線少、協(xié)議簡單、傳輸速度快等優(yōu)點。由于串行總線的信號線比并行總線更少、簡單,越來越多的系統(tǒng)放棄使用并行總線而采用串行總線。在眾多串行總線中,spi 總線相比于i2c總線、can總線、usb等其他常用總線相比有很大優(yōu)勢,如spi線的數(shù)據(jù)傳輸速度可達若干mbps, 比i2c總線快很多。spi 總線最典型的應用就是主機與外圍設備(如eeprom、flash ram、a/d 轉(zhuǎn)換器、led 顯示器、實時時鐘等)之間的通信4。spi接口的擴展有硬件和
17、軟件兩種方法,軟件模擬spi接口方法雖然簡單方便,但是速度受到限制,在高速且日益復雜的數(shù)字系統(tǒng)中,這種方法顯然無法滿足系統(tǒng)要求,所以采用硬件的方法實現(xiàn)最為切實可行。這使得與spi有關的軟件就相當簡單,使cpu有更多的時間處理其他事務。fpga(現(xiàn)場可編程門陣列)是在pal、gal、pld 等可編程器件的基礎上進一步發(fā)展的產(chǎn)物,具有設計周期短、可重復編程、靈活性強等特點。用fpga 設計的spi 總線具有可擴展性強、便于修改等優(yōu)點。只要對設計做簡單的改動,即可對spi 總線的數(shù)據(jù)位數(shù)、工作模式等進行擴展,充分發(fā)揮了fpga 的優(yōu)勢。并fpga是可編程并可重復擦寫的,從而具有更大的靈活性,在協(xié)議不
18、標準的情況下,可根據(jù)外圍設備的不同而靈活的改動spi設計,使設計周期大大降低,并與外圍設備連接更加方便。1.3本文的主要工作及構架1.3.1研究的基本內(nèi)容(1)熟悉通信及通信接口相關方面的知識,學習并掌握spi通信接口的結構,協(xié)議及原理。(2)熟悉verilog語言及其開發(fā)環(huán)境ise,使用該語言進行數(shù)字電路(fpga)設計,慢慢深入verilog語言。(3)設計流程圖,狀態(tài)圖。(4)實現(xiàn)仿真。1.3.2技術方案spi 接口作為主機與從機的通訊接口,其主要完成工作為下: spi將從主機接收到的8位的并行數(shù)據(jù),轉(zhuǎn)換為從機所能接收的串行數(shù)據(jù),并將該數(shù)據(jù)根據(jù)spi協(xié)議送給從機。 主機產(chǎn)生從機所需的時鐘
19、信號sclk以及片選信號cs。 接收從從機傳回的讀信號和串行數(shù)據(jù),并將其轉(zhuǎn)換為并行數(shù)據(jù)。此方案采用了狀態(tài)機來進行設計,本項目的研究主要采用理論分析、邏輯推理、試驗調(diào)試等方法。狀態(tài)機的特點如下:(1)有限狀態(tài)機相對于純硬件數(shù)字系統(tǒng)順序方式控制來說更為靈活。(2)狀態(tài)機的結構模式簡單。(3)狀態(tài)機構成的同步時序邏輯模塊更為優(yōu)良。(4)狀態(tài)機在高速運算和控制方面更有其巨大的優(yōu)勢。(5)狀態(tài)機更為可靠?;谝陨咸攸c,用狀態(tài)機的方法描述spi通信過程簡單方便并可靠。spi接口的狀態(tài)大致轉(zhuǎn)移描述如下:首先是spi接口處于等待狀態(tài),一旦檢測到發(fā)送指令時觸發(fā)信號進入發(fā)送狀態(tài),在系統(tǒng)指令下檢測到寫信號時進入發(fā)送
20、數(shù)據(jù)狀態(tài),然后一位發(fā)送數(shù)據(jù),當檢測到讀信號時,進入讀狀態(tài),當檢測到發(fā)送接收都完畢時,進入發(fā)送接收完畢狀態(tài),再轉(zhuǎn)向等待狀態(tài)。關鍵技術的實現(xiàn):(1)時序問題將總線控制信號封裝成指令,使用者只需通過發(fā)送指令的方式操作,避免了復雜的時序邏輯設計問題。(2)全雙工傳輸方式的設計如果全部使用狀態(tài)機的方式完成設計,則可發(fā)現(xiàn)其很難完成全雙工即收發(fā)獨立模式,則在此過程中可以采用流水線設計方式,使之收與發(fā)之間獨立進行,便可完成全雙工傳輸方式的設計。第2章 spi原理分析spi原理主要介紹spi的基本機構,工作模式,傳輸模式以及spi的典型協(xié)議,通過對于這些spi的要點介紹,對其工作過程有一個通透了解,從而可以能設
21、計達到原理目的的功能設計以及程序的設計。2.1 spi通信總線spi顧名思義就是串行外圍設備接口。是motorola首先在其mc68hcxx系列處理器上定義的。spi接口主要應用在 eeprom,flash,實時時鐘,ad轉(zhuǎn)換器,還有數(shù)字信號處理器和數(shù)字信號解碼器之間。spi,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時為pcb的布局上節(jié)省空間,提供方便,正是出于這種簡單易用的特性,現(xiàn)在越來越多的芯片集成了這種通信協(xié)議,比如at91rm9200。spi總線系統(tǒng)是一種同步串行外設接口,它可以使mcu與各種外圍設備以串行方式進行通信以交換信息。外圍設
22、置flashram、網(wǎng)絡控制器、lcd顯示驅(qū)動器、a/d轉(zhuǎn)換器和mcu等。spi總線系統(tǒng)可直接與各個廠家生產(chǎn)的多種標準外圍器件直接接口,該接口一般使用4條線:串行時鐘線(sclk)、主機輸入/從機輸出數(shù)據(jù)線miso、主機輸出/從機輸入數(shù)據(jù)線mosi和低電平有效的從機選擇線ss(有的spi接口芯片帶有中斷信號線int、有的spi接口芯片沒有主機輸出/從機輸入數(shù)據(jù)線mosi)7。2.2 spi簡介spi(serial peripheral interface)接口是工業(yè)標準的同步串行接口,是一種全雙工、三線通信的系統(tǒng)。由于串行總線的信號線比并行總線更少、更簡單,越來越多的系統(tǒng)放棄使用并行總線而采用
23、串行總線。在眾多串行總線中,spi 總線與i2c總線、can總線、usb等其他常用總線相比有很大優(yōu)勢。spi 總線最典型的應用就是主機與外圍設備(如eeprom、flash ram、a/d轉(zhuǎn)換器、led顯示器、實時時鐘等)之間的通信6。spi的通信原理很簡單,它以主從方式工作,這種模式通常有一個主設備和一個或多個從設備,需要至少4根線(單向傳輸時只需要3根)。也是所有基于spi的設備共有的,它們是sdi(數(shù)據(jù)輸入),sd(數(shù)據(jù)輸出),sck(時鐘),cs(片選)。它們的定義如下:sck:同步時鐘信號,用來同步主機和從機的數(shù)據(jù)傳輸,由主機控制輸出,從機在sck 的邊沿接收和發(fā)送數(shù)據(jù);mosi:主
24、機輸出、從機輸入信號,主機在上升沿(或下降沿)通過該信號線發(fā)送數(shù)據(jù)給從機,從機在下降沿(或上升沿)通過該信號線接收該數(shù)據(jù);miso:主機輸入、從機輸出信號,從機在上升沿(或下降沿)通過該信號線發(fā)送數(shù)據(jù)給主機,主機在下降沿(或上升沿)通過該信號線接收該數(shù)據(jù);cs:從機片選信號,由主機控制輸出。其中cs是控制芯片是否被選中的,也就是說只有片選信號為預先規(guī)定的使能信號時(高電位或低電位),對此芯片的操作才有效。這就允許在同一總線上連接多個spi設備成為可能。接下來就負責通訊的3根線了。通訊是通過數(shù)據(jù)交換完成的,這里先要知道spi是串行通訊協(xié)議,也就是說數(shù)據(jù)是一位一位的傳輸?shù)摹_@就是sclk時鐘線存在
25、的原因,由sck提供時鐘脈沖,sdi,sdo則基于此脈沖完成數(shù)據(jù)傳輸。數(shù)據(jù)輸出通過 sdo線,數(shù)據(jù)在時鐘上升沿或下降沿時改變,在緊接著的下降沿或上升沿被讀取。完成一位數(shù)據(jù)傳輸,輸入也使用同樣原理。這樣,在至少8次時鐘信號的改變(上沿和下沿為一次),就可以完成8位數(shù)據(jù)的傳輸。 要注意的是,sclk信號線只由主設備控制,從設備不能控制信號線。同樣,在一個基于spi的設備中,至少有一個主控設備。這樣傳輸?shù)奶攸c:這樣的傳輸方式有一個優(yōu)點,與普通的串行通訊不同,普通的串行通訊一次連續(xù)傳送至少8位數(shù)據(jù),而spi允許數(shù)據(jù)一位一位的傳送,甚至允許暫停,因為sclk時鐘線由主控設備控制,當沒有時鐘跳變時,從設備
26、不采集或傳送數(shù)據(jù)。也就是說,主設備通過對sclk時鐘線的控制可以完成對通訊的控制。spi還是一個數(shù)據(jù)交換協(xié)議:因為spi的數(shù)據(jù)輸入和輸出線獨立,所以允許同時完成數(shù)據(jù)的輸入和輸出。不同的spi設備的實現(xiàn)方式不盡相同,主要是數(shù)據(jù)改變和采集的時間不同,在時鐘信號上沿或下沿采集有不同定義。spi接口的一個缺點:沒有指定的流控制,沒有應答機制確認是否接收到數(shù)據(jù)11。2.3 spi的工作模式spi有兩種工作模式,分別為主模式和從模式。2.3.1主模式將master的數(shù)據(jù)傳送給slave,8位數(shù)據(jù)傳送,傳送完畢,申請中斷,如圖2.1所示:mosimosisclksclk圖 2.1 spi工作主模式2.3.2
27、 從模式在從模式下,每一位數(shù)據(jù)都是接收到時鐘信號sclk和cs信號之后才發(fā)送/接收。此時,sclk信號又主機產(chǎn)生,接收的數(shù)據(jù)在三岔路口信號作用下依次由mosi引腳寫入移位寄存器,發(fā)送的數(shù)據(jù)在sclk信號作用下由移位寄存器發(fā)送到miso引腳。misocssclkmisocssclk圖2.2 spi工作從模式2.4 spi的傳輸模式spi 總線是motorola公司推出的三線同步接口,同步串行3線方式進行通信:一條時鐘線sck,一條數(shù)據(jù)輸入線mosi,一條數(shù)據(jù)輸出線miso;用于cpu與各種外圍器件進行全雙工、同步串行通訊。spi主要特點有:可以同時發(fā)出和接收串行數(shù)據(jù);可以當作主機或從機工作;提供
28、頻率可編程時鐘;發(fā)送結束 中斷標志;寫沖突保護;總線競爭保護等。下圖2.3示出spi總線工作的四種方式,其中使用的最為廣泛的是spi0和spi3方式 (實線表示):圖2.3spi 模塊為了和外設進行數(shù)據(jù)交換,根據(jù)外設工作要求,其輸出串行同步時鐘極性和相位可以進行配置,時鐘極性(cpol)對傳輸協(xié)議沒有重大的影響。如果 cpol=0,串行同步時鐘的空閑狀態(tài)為低電平;如果cpol=1,串行同步時鐘的空閑狀態(tài)為高電平。時鐘相位(cpha)能夠配置用于選擇兩種不同的傳輸協(xié)議之一進行數(shù)據(jù)傳輸。如果cpha=0,在串行同步時鐘的第一個跳變沿(上升或下降)數(shù)據(jù)被采樣;如果cpha=1,在串行同步時鐘的第二個
29、跳變沿(上升或下降)數(shù)據(jù)被采樣。spi主模塊和與之通信的外設備時鐘相位和極性應該一致。spi總線包括1根串行同步時鐘信號線以及2根數(shù)據(jù)線。spi模塊為了和外設進行數(shù)據(jù)交換,根據(jù)外設工作要求,其輸出串行同步時鐘極性和相位可以進行配置,時鐘極性(cpol)對傳輸協(xié)議沒有重大的影響。如果cpol=0,串行同步時鐘的空閑狀態(tài)為低電平;如果cpol=1,串行同步時鐘的空閑狀態(tài)為高電平。時鐘相位(cpha)能夠配置用于選擇兩種不同的傳輸協(xié)議之一進行數(shù)據(jù)傳輸。如果cpha=0,在串行同步時鐘的第一個跳變沿(上升或下降)數(shù)據(jù)被采樣;如果cpha=1,在串行同步時鐘的第二個跳變沿(上升或下降)數(shù)據(jù)被采樣。spi
30、主模塊和與之通信的外設音時鐘相位和極性應該一致。 (1)spi0模式下的cpol為0,sck的空閑電平為低;cpha為0,數(shù)據(jù)在串行同步時鐘的第一個跳變沿(由于cpol為低,因此第1個跳變沿只能為上升沿)時數(shù)據(jù)被采樣。 (2)spi1 模式下的 cpol 也為0,sck的空閑電平為低;但是cpha為1,數(shù)據(jù)在串行同步時鐘的第二個跳變沿(由于cpol為低,因此第2個跳變沿只能為下降沿)時數(shù)據(jù)被采樣。 (3)spi2模式下的cpol為1,sck的空閑電平為高;cpha為0,數(shù)據(jù)在串行同步時鐘的第1個跳變沿(由于cpol為高,因此第1個跳變沿只能為下降沿)時數(shù)據(jù)被采樣。 (4)spi3 模式下的cp
31、ol為1,sck的空閑電平為高;cpha為1,數(shù)據(jù)在串行同步時鐘的第2個跳變沿(由于cpol為高,因此第1個跳變沿只能為上升沿)時數(shù)據(jù)被采樣。 在上述 4 種模式中,使用的最為廣泛的是 spi0 和 spi3 方式。由于每一種模式都與其他三種不兼容,因此為了完成主、從設備間的通訊,主、從設備的 cpol 和 cpha 必須有相同的設置。讀者需要注意的是:如果主設備/從設備在 sck上升沿發(fā)送數(shù)據(jù),則從設備/主設備最好在下降沿采樣數(shù)據(jù);如果主設備/從設備在sck下降沿發(fā)送數(shù)據(jù),則從設備/主設備最好在 sck上升沿采樣數(shù)據(jù)8。2.5 spi協(xié)議 spi是一個環(huán)形總線結構,由ss(cs)、sck、s
32、di、sdo構成,其時序其實很簡單,主要是在sck的控制下,兩個雙向移位寄存器進行數(shù)據(jù)交換。假設下面的8位寄存器裝的是待發(fā)送的數(shù)據(jù)10101010,上升沿發(fā)送、下降沿接收、高位先發(fā)送。那么第一個上升沿來的時候 數(shù)據(jù)將會是sdo=1;寄存器=0101010x。下降沿到來的時候,sdi上的電平將所存到寄存器中去,那么這時寄存器=0101010sdi,這樣在 8個時鐘脈沖以后,兩個寄存器的內(nèi)容互相交換一次。這樣就完成里一個spi時序。舉例:假設主機和從機初始化就緒:并且主機的sbuff=0xaa,從機的sbuff=0x55,下面將分步對spi的8個時鐘周期的數(shù)據(jù)情況演示一遍:假設上升沿發(fā)送數(shù)據(jù)。這樣
33、就完成了兩個寄存器8位的交換,上面的上表示上升沿、下表示下降沿,sdi、sdo相對于主機而言的。其中ss引腳作為主機的時候,從機可以把它拉底被動選為從機,作為從機的是時候,可以作為片選腳用。根據(jù)以上分析,一個完整的傳送周期是16位,即兩個字節(jié),因為,首先主機要發(fā)送命令過去,然后從機根據(jù)主機的命令準備數(shù)據(jù),主機在下一個8位時鐘周期才把數(shù)據(jù)讀回來9。表2.1脈沖主機sbuff從機sbuffsdisdo01010101001010101001上0101010x1010101x011下0101010010101011012上1010100x0101011x102下1010100101010110103
34、上0101001x1010110x013下0101001010101101014上1010010x0101101x104下1010010101011010105上0100101x1011010x015下0100101010110101016上1001010x0110101x106下1001010101101010107上0010101x1101010x017下0010101011010101018上0101010x1010101x10第3章方案論證對于spi接口的設計,我們可以分為兩大類,分別為利用單片機如51系列單片機實現(xiàn)和利用fpga等可編程邏輯器件編程實現(xiàn),下面將分別介紹兩種方法的方法。
35、3.1 用fpga來設計spi通過對spi的結構的了解可以設計一個系統(tǒng)框架,按照框架完成輸入輸出的功能。一個典型的spi系統(tǒng)包括一個主mpu和一個或者多個從外圍器件。單片機通過spi接口模塊與spi相連,當單片機以主機模式運行的時候,就可以與系統(tǒng)中的從機實現(xiàn)通信,而當它處于從機模式工作時,就能與寧外一個主機進行數(shù)據(jù)通信。但在同一個時間內(nèi),系統(tǒng)中只能擁有一個主機,否側(cè)會造成系統(tǒng)的工作異常。一個典型的用fpga設計的系統(tǒng)框架如圖3.1所示11:微處理器微處理器接口spi總線接口adr_i1:0dat_i7:0dat_o7:0int_owe_ics_omiso_imosi_osck_orst_i圖3
36、.13.2 用51系列單片機實現(xiàn)spi對于mcs51系列單片機來說,由于它不帶有spi串行總線接口,我們可以使用軟件來模擬spi的操作,包括串行時鐘、數(shù)據(jù)輸入以及數(shù)據(jù)輸出。不同的串行接口外圍芯片擁有不同的時鐘時序。對于在sck的上升沿輸入(接收)數(shù)據(jù)并且在下降沿輸出(發(fā)送)數(shù)據(jù)的器件,大都應在初始狀態(tài)將其串行時鐘輸出口p1.1設置為1,而在允許接口后再將p1.1置為0。這樣,mcu在輸出1位sck時鐘的同時,可以將接口芯片串行左移,從而輸出1位數(shù)據(jù)到mcs51單片機的p1.3口(模擬mcu的miso線),之后再將置p1.1為1,使mcs51系列單片機從p1.0(模擬mcu的mosi線)輸出1位
37、數(shù)據(jù)至串行接口芯片。這樣就完成了1位數(shù)據(jù)輸入輸出的模擬。此后再置p1.1為0,模擬下1位數(shù)據(jù)的輸入輸出,依此完成8次循環(huán),即可完成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.2所示為mcs51系列單片機與存儲器x25f008(e2prom)的硬件連接圖;外圍設備mcs 511.01.11.31.2圖3.2p1.0模擬mcu的數(shù)據(jù)輸
38、出端(mosi),p1.1模擬spi的sck輸出端,p1.2模擬spi的從機選擇端,p1.3模擬spi的數(shù)據(jù)輸入端(miso)。以上便是兩種實現(xiàn)spi的方法,在實際應用中,只要高級點的單片機,都自帶spi接口,并且如dsp等也集成了spi接口,大多芯片都趨向于用硬件而非軟件來實現(xiàn)。這是因為軟件模擬spi接口方法雖然簡單方便,但是速度受到限制,在高速且日益復雜的數(shù)字系統(tǒng)中,這種方法顯然無法滿足系統(tǒng)要求,所以采用硬件的方法實現(xiàn)最為切實可行。這樣使得與spi有關的軟件就相當簡單,使cpu有更多的時間處理其他事務。在fpga不斷地完善改善完美并且功能強大的今天,用硬件實現(xiàn)已經(jīng)成為主流,在大型系統(tǒng)用硬件
39、實現(xiàn)更加穩(wěn)定。同時fpga也有自身的優(yōu)點。在外圍器件有改變時,由于fpga可以重復擦寫的優(yōu)點,從而在外圍器件有些許改變之時,可以同時稍微改變可編程的程序,因而可編程又有靈活性大的特點。因此,本次便采用fpga來設計。第4章spi的電路設計電路設計主要是針對系統(tǒng)功能的設計,以及各部分功能具體實現(xiàn)方案,比如管腳說明由此得到本次spi設計的流程圖,由流程圖便可以編寫出我們所需要的程序。4.1管腳說明表4.1 spi設計管腳端口名稱數(shù)據(jù)位寬信號流向功能描述int_o1output中斷輸出,確保已傳數(shù)據(jù)被讀取rst_i1input異步復位we_i1input寫使能端,寫數(shù)據(jù)dat_i8input輸入數(shù)據(jù)
40、或指令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具有不同的功能12。4.2 spi系統(tǒng)中所用的寄存器本次設計中spi用到四種寄存器,包括spcr(spi控制寄存器)、sper(spi擴展寄存器)、treg(spi數(shù)據(jù)傳輸/接收寄存器)其功能如下所示: (1)控制寄存器本次設計時參照mc68hc11
41、a8單片機的spi結構進行設計,并進行了一些改進,所以本次設計的控制寄存器的控制位與mc68hc11a8單片機的控制位大致相似,同時進行了一些擴展和不同的功能,擴展在擴展寄存器中再做介紹,其控制寄存器的控制位如下表4.2所示:表4.2 spi設計的控制寄存器spiespemsbmstcpolcphspr1spr0 其各功能如下: spie :當此為被置位為1時,則中斷允許,即允許中斷,當為0時,禁止中斷。 0:禁止中斷 1:允許中斷 spe :當此位被置位為1時,則系統(tǒng)運行,當置位為0時,系統(tǒng)不運行。 0:系統(tǒng)運行允許 1:系統(tǒng)允許禁止 msb:此為為在傳輸時是最高位線發(fā)送還是最低位先發(fā)送。當
42、為1時,是最高位先發(fā)送,當為1時,是最低位先發(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 =
43、spre, espr,四位此而控制16種傳輸速率,此在速率控制中詳細介紹。(3)狀態(tài)寄存器狀態(tài)寄存器本次設計中只去了一位spi_i中斷位,其與spie允許情況下允許中斷,中斷位傳給int_o從而保證單片機完成讀取數(shù)據(jù)后在重新傳輸數(shù)據(jù),從而保證每位數(shù)據(jù)傳輸完畢,保證數(shù)據(jù)讀取后才能傳送下一位數(shù)據(jù)13。4.3 spi速率控制速率控制為控制寄存器的低兩位和擴展寄存器的低兩位共同控制的,本次設計通過此四位的控制一共可以支持12種速率,其為系統(tǒng)時鐘的n次分頻。本次將每一個控制賦值給clkcnt寄存器,并起每一個時鐘減一,當為0是從而影響控制位狀態(tài)機ena = |clkcnt,當ena為1時則執(zhí)行狀態(tài)機,達
44、到分頻目的其詳細控制如表4.3下:表4.3 spi的速率控制spreesprclkcnt分頻000002分頻000114分頻001028分頻0011316分頻0100432分頻0101564分頻01106128分頻01117256分頻10008512分頻100191024分頻1010a2048分頻1011b4096分頻4.4 spi控制狀態(tài)機verilog hdl 是一種硬件描述語言,他可以用來進行各種級別的邏輯設計,可以用來進行數(shù)字邏輯系統(tǒng)的仿真驗證、時序分析和邏輯綜合等, 應用十分廣泛。本文使用verilog設計spi 接口模塊。分析spi 接口模塊的功能之后,本文使用有限狀態(tài)機實現(xiàn)spi
45、接口模塊的傳輸控制。spi控制狀態(tài)機是本次設計的核心部分,其實整個設計的可以說是大腦,控制著整個程序的執(zhí)行過程和完成設計實現(xiàn)功能??刂茽顟B(tài)機主要用于片選信號cs 的選擇,和輸出時鐘sclk的產(chǎn)生,以及數(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:0=10時,便是發(fā)送接收數(shù)據(jù)的命令。此時進入狀態(tài)機的空閑狀態(tài)2b00。在空閑狀態(tài),
46、 所作的工作是設置空閑的時的極性和相位,完成后便進入發(fā)送準備載入發(fā)送數(shù)據(jù)階段2 01 。此時為達到控制速率,使用ena = i clkcnt允許位,只有當其為1時,才執(zhí)行此狀態(tài)的程序,否則保持,在此狀態(tài)中,所作的工作是反向sck 信號,載入數(shù)據(jù),選中信號片選信號cs 端,變開始發(fā)送接收數(shù)據(jù),同時此時的第位發(fā)送,便進入2b10狀態(tài)。此狀態(tài)時為配置sck 信號, 使sclk信號輸出脈沖與發(fā)送數(shù)據(jù)脈沖匹配,從而可在sck的上升沿或下降沿鎖存數(shù)據(jù)并發(fā)送數(shù)據(jù)。完成后進入到接受數(shù)據(jù)狀態(tài)2bll。此時為發(fā)送數(shù)據(jù)的核心狀態(tài), 其數(shù)據(jù)接收傳輸寄存器移位完成數(shù)據(jù)的接收,在接收的同時也發(fā)送了一位數(shù)據(jù),當發(fā)送完八次后
47、變進入產(chǎn)生個中斷位, 當單片機讀取后變從新設置spe為0并消除中斷標志位并活零后再次置1變開始下一個八位傳輸接收。少于八次則保留到當前狀態(tài)。其狀態(tài)圖如下圖4.1所示14:00100111ena=1ena=1ena=1&bcnt=0圖4.14.5 spi程序設計流程圖通過以上的分析,首先是設置控制寄存器以及設置系統(tǒng)允許,當spe為1時系統(tǒng)運行,adr_i為收發(fā)命令時,滿足條件便開始傳送數(shù)據(jù),傳送數(shù)據(jù)最重要的是sck信號產(chǎn)生以及收發(fā)信號的完成,還有收發(fā)信信號與sck信號的匹配??紤]到這些,其流程圖如下圖4.2所示15:開始判斷系統(tǒng)允許位spe=1adr_i=2b10&!spi_i&we_i&rst
48、_ispe & (|clkcnt & |state)=0空閑狀態(tài)輸入數(shù)據(jù),sck反向,選片信號成立spe & (|clkcnt & |state)=0sck反向,匹配sck信號spe & (|clkcnt & |state)=0接收發(fā)送數(shù)據(jù),sck反向,發(fā)送八位完畢產(chǎn)生中斷是否是否否是否是圖4.2 spi設計流程圖第5章仿真及驗證5.1仿真分析綜上可以編寫出spi程序,其程序見附錄a驗證平臺。(1)二分頻時發(fā)送接收數(shù)據(jù)當設置為開始時adr_i為寫指令,即adr_i=00時,寫指令到控制寄存器,adr_i=11時,寫指令到擴展寄存器,以下設置為中斷允許,系統(tǒng)允許,為主模式,極性為0,即初始狀態(tài)空
49、閑狀態(tài)為低電平,相位為1,即為第一個跳變即第一個上升沿采樣數(shù)據(jù),設置速率控制位為00,并設置擴展寄存器也為0,及為二分頻,則控制寄存器設置為8hf0,擴展寄存器設置為8h00。 圖 5.1 spi testbench設置如上圖5.1所示,其設置如上所述,即在adr_i=00時,輸入控制寄存器f0,當為adr_i=11,輸入擴展寄存器為00.它的仿真波形如下圖5.2所示:圖5.2仿真波形由其結果可知在mosi_o在一個sck_o時鐘時輸出一位數(shù)據(jù),與實際相符,且sck_o時鐘剛好為二分頻,輸入數(shù)據(jù)位8hb5,寫為二進制為10110101,看mosi_o在每個sck_o時鐘為單位看數(shù)據(jù)輸出為101
50、10101,與輸入數(shù)據(jù)保持一致,在第一個數(shù)據(jù)開始發(fā)送或接收時,可以看到選片信號為1成立,inta_o在第八個時鐘為1,產(chǎn)生中斷輸出,由結果與實際設計預計一致。(2)四分頻時發(fā)送接收數(shù)據(jù)上只是一個功能測試,先測試是否能選擇頻率,現(xiàn)選擇頻率為四分頻,看結果是否一致,于是設置控制寄存器為8hf1,擴展寄存器為8h00,其仿真結果如圖 5.4所示:圖 5.3 spi testbench設置圖5.4 spi的仿真波形可以看到其結果與預期一致,sck_o為系統(tǒng)時鐘的四分頻,且輸出信號也是隨著一個sck_o時鐘變化而變化,其mosi_o與sck_o變化一致。第6章 結論與展望6.1結論在此設計中,不僅對is
51、e軟件使用已經(jīng)非常熟悉,并且對verilog語言設計也更加熟悉了,從而對以后的學習打下了非常好的基礎。同時對于spi已經(jīng)有著非常通透的了解,并且對i2c和uart等串口也有一定的了解,對于仿真分析也掌握了一定的技巧。不僅掌握了fpga設計spi設計,而且對單片機實現(xiàn)也有了一個大致的了解。在今后的設計中,在參考別人設計的同時,不能完全照搬別人的東西,同時要結合自己的思考,用簡單有效的方法來實現(xiàn)設計,并結合原理來思考別人是不是正確。在本次發(fā)送接收數(shù)據(jù)的有一個程序不僅繁瑣,而且發(fā)送接收不能同時進行,顯然是錯誤的程序,并且本次設計另外一個程序在一些端口完全沒什么用,也輸入進去,顯然是在抄襲的結果。所以
52、,無論在做任何設計,一定要緊跟定義,功能實現(xiàn)與否設計,而不是僅僅是看懂硬搬硬套。6.2不足之處及未來展望本次設計只做了一個簡化的spi接口,很多spi的重要模塊和其它功能未能得到實現(xiàn)。本次畢業(yè)設計所做的工作雖然簡單,但也體會到不少東西。比如,我理解到在平時做單片機實驗室那些初始化程序所做的目的。我所做的控制寄存器的東西便是那些初始化程序執(zhí)行命令。控制寄存器的每一位用來控制整個系統(tǒng)的運行以及系統(tǒng)特性,通過命令指令便將命令寫到系統(tǒng)中去.以前的留在腦中的疑問,那些初始化驅(qū)動程序便迎刃而解。同時在本次設計,也領略到一些設計方面的步驟。即應該先了解哪些方面,再進行哪些方面的理解,再進行哪些方面的分析,再進行哪些方面的重點理解。在編寫特定模塊時,可以先看廠家所規(guī)定的定義來實現(xiàn)所需設計的系統(tǒng).總之,通過本次fpga設計,為今后的學習工作打下了一個很好的基礎,為今后積累了非常寶貴的經(jīng)驗.參考文獻1 樊昌信,徐炳祥,吳成柯等.通信原理(第5版)m. 北京:國防工業(yè)出版社,2001.2 徐洋等.基于verilog hdl的fpga設計與工程應用.人民郵電出版社.2009.3 夏宇聞.verilog數(shù)字系統(tǒng)教程(第2版)m.北京航天航空大學出版社.2008.4spi block guide v03.06. original release date: 21 jan 2000revised: 04
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版汽車抵押貸款合同借款人借款用途變更通知合同3篇
- 二零二五年度城市軌道交通內(nèi)部承包合同6篇
- 二零二五版企業(yè)日常經(jīng)營客戶關系管理與維護合同2篇
- 二零二五年酒店員工入股與酒店服務體驗優(yōu)化合同3篇
- 二零二五年度廁所革命專項基金使用管理合同3篇
- 二零二五年度新能源風能發(fā)電設備研發(fā)制造合同2篇
- 二零二五版企業(yè)法人借款合同擔保協(xié)議3篇
- 2025版大清包勞務合同范本:二零二五年度文化活動組織執(zhí)行合同3篇
- 二零二五年海底光纜線路鋪設及安全保障合同3篇
- 2025年度祠堂宗教活動組織與承包合同2篇
- 抖音直播帶貨協(xié)議書模板
- 2024義務教育體育與健康課程標準(2022年版)必考題庫及答案
- 工業(yè)機器人控制器:FANUC R-30iB:機器人實時監(jiān)控與數(shù)據(jù)采集技術教程
- 墓地銷售計劃及方案設計書
- 新加坡留學完整版本
- 勞務服務合作協(xié)議書范本
- 優(yōu)佳學案七年級上冊歷史
- 中醫(yī)五臟心完整版本
- 智能音箱方案
- 鋁箔行業(yè)海外分析
- 京東商城物流配送現(xiàn)狀及對策分析
評論
0/150
提交評論