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