版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 編號</b></p><p><b> 畢業(yè)設(shè)計(論文)</b></p><p> 題目:SPI接口的仿真及驗(yàn)證</p><p> 物聯(lián)網(wǎng)工程 學(xué)院 電子信息工程專業(yè)</p><p> 學(xué) 號 </p
2、><p> 學(xué)生姓名 </p><p> 指導(dǎo)教師 </p><p><b> 二〇一三年六月</b></p><p><b> 摘要</b></p><p> 在專用集成電路(AS
3、IC)設(shè)計技術(shù)以及超大規(guī)模集成電路(VLSI)工藝技術(shù)的飛速發(fā)展的今天,F(xiàn)PGA編程的硬件電路被越來越多的應(yīng)用于實(shí)現(xiàn)諸如SPI接口等方面。相對于軟件實(shí)現(xiàn),硬件具有更多的優(yōu)點(diǎn)。SPI接口技術(shù)是一種高速高效率的串行接口技術(shù), 主要用于擴(kuò)展外設(shè)及其數(shù)據(jù)交換, 已經(jīng)作為一種配置標(biāo)準(zhǔn)。作為一個標(biāo)準(zhǔn)的接口,SPI具有簡單方便和節(jié)省系統(tǒng)資源的優(yōu)點(diǎn),使得大多數(shù)芯片都支持該接口。SPI接口主要應(yīng)用在EEPROM、FLASH、實(shí)時時鐘、AD轉(zhuǎn)換器,還有數(shù)字
4、信號處理器和數(shù)字信號解碼器之間。</p><p> SPI接口的全稱是"Serial Peripheral Interface",串行外圍接口,是由Motorola公司首先在其MC68HCXX系列處理器上定義的?,F(xiàn)在大部分廠家都是參照Motorola的定義來設(shè)計的。因?yàn)闆]有確切的版本協(xié)議,所以不同廠家的SPI接口在技術(shù)上存在一定程度上的差別,甚至?xí)鹌缌x。</p><p
5、> 本文是利用Verilog硬件描述語言編寫出SPI總線的主機(jī)模塊,經(jīng)過Xilinx ISE仿真得出相應(yīng)的仿真波形。根據(jù)仿真波形分析,所設(shè)計的SPI主機(jī)模塊的功能是正確的,并且在Xilinx ISE中對該模塊進(jìn)行綜合與實(shí)現(xiàn)。 更多還原</p><p> 關(guān)鍵詞:FPGA;SPI接口;Verilog;Xilinx ISE</p><p><b> Abstract&l
6、t;/b></p><p> 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 c
7、ircuit is more and more used in implementation such as SPI interface. Relative to the software, hardware has more advantages.As a standard interface, SPI has advantages of simple and convenient and saving system resource
8、s, makes the most of the chip is supported by the interface.SPI interface block is mainly u</p><p> SPI Interface is the full name of "Serial Peripheral Interface", Serial Peripheral Interface, Mo
9、torola is first defined on its MC68HCXX series processors, most manufacturers are now based on the definition of Motorola to design. This paper is to use the Verilog hardware description language to write the SPI bus hos
10、t 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 c</p><p> Keywords:FPGA
11、 ;SPI interface;Verilog;Xilinx ISE</p><p><b> 目錄</b></p><p><b> 摘要I</b></p><p> AbstractII</p><p><b> 目錄i</b></p><
12、p><b> 第1章 緒論1</b></p><p> 1.1 研究背景1</p><p> 1.1.1系統(tǒng)芯片的發(fā)展1</p><p> 1.1.2 IP核1</p><p> 1.1.3數(shù)據(jù)傳送2</p><p> 1.2 SPI研究的目的及意義3</p&g
13、t;<p> 1.3本文的主要工作及構(gòu)架3</p><p> 1.3.1研究的基本內(nèi)容3</p><p> 1.3.2技術(shù)方案3</p><p> 第2章 SPI原理分析5</p><p> 2.1 SPI通信總線5</p><p> 2.2 SPI簡介5</p>
14、<p> 2.3 SPI的工作模式6</p><p> 2.3.1主模式6</p><p> 2.3.2 從模式7</p><p> 2.4 SPI的傳輸模式7</p><p> 2.5 SPI協(xié)議8</p><p> 第3章方案論證11</p><p>
15、3.1 用FPGA來設(shè)計SPI11</p><p> 3.2 用51系列單片機(jī)實(shí)現(xiàn)SPI11</p><p> 第4章SPI的電路設(shè)計13</p><p> 4.1管腳說明13</p><p> 4.2 SPI系統(tǒng)中所用的寄存器13</p><p> 4.3 SPI速率控制14</p>
16、<p> 4.4 SPI控制狀態(tài)機(jī)15</p><p> 4.5 SPI程序設(shè)計流程圖16</p><p> 第5章仿真及驗(yàn)證19</p><p> 5.1仿真分析19</p><p> 第6章 結(jié)論與展望21</p><p><b> 6.1結(jié)論21</b>
17、</p><p> 6.2不足之處及未來展望21</p><p><b> 參考文獻(xiàn)22</b></p><p><b> 致 謝23</b></p><p><b> 附錄A24</b></p><p><b> 第1章
18、緒論</b></p><p><b> 1.1 研究背景</b></p><p> 1.1.1系統(tǒng)芯片的發(fā)展</p><p> 系統(tǒng)芯片(SoC:System-on-a-chip)指的是在單個芯片上集成一個完整的系統(tǒng),對所有或部分必要的電子電路進(jìn)行包分組的技術(shù)。所謂完整的系統(tǒng)一般包括中央處理器、存儲器、以及外圍電路等。 SoC
19、 是與其它技術(shù)并行發(fā)展的,如絕緣硅(SOI),它可以提供增強(qiáng)的時鐘頻率,從而降低微芯片的功耗。</p><p> 隨著電子技術(shù)開發(fā)應(yīng)用對集成電路IC需求量的擴(kuò)大和半導(dǎo)體工藝水平的不斷進(jìn)步,超大規(guī)模集成電路VLSI技術(shù)迅猛發(fā)展。當(dāng)前的半導(dǎo)體工藝水平己經(jīng)達(dá)到了亞微米水平并正在向50nm以下發(fā)展,器件特征尺寸越來越小,芯片集成規(guī)模越來越大,數(shù)百萬門級電路可以集成在一個芯片上,芯片尺寸已從邏輯限制變?yōu)楹副P限制,我們必須
20、找到與常規(guī)集成電路設(shè)計思想不同的設(shè)計方式,它就是新世紀(jì)IC設(shè)計的主流技術(shù)。</p><p> SOC是微電子設(shè)計領(lǐng)域的一場革命,從整個系統(tǒng)的角度出發(fā),把智能核、信息處理機(jī)制、模型算法、芯片結(jié)構(gòu)、各層次電路直至器件的設(shè)計緊密結(jié)合起來,在單個或少數(shù)幾個芯片上完成整個系統(tǒng)的功能,既我們可以把越來越多的電路設(shè)計在同一個芯片中,這里面可能包含有中央處理器(CPU),嵌入式內(nèi)存(Embedded memory)、數(shù)字信號處
21、理器(DSP)、數(shù)字功能模塊(Digital function)、模擬功能模塊(Analog function)、模擬數(shù)字轉(zhuǎn)換器(ADC)以及各種外圍配置(USB, MPEG)等等,這是新發(fā)展的SOC技術(shù)。</p><p> SOC技術(shù)的研究、應(yīng)用和發(fā)展是微電子技術(shù)發(fā)展的一個新的里程碑。SOC能提供更好的性能、更低的功耗、更小的印制板.空間和更低的成本,帶來了電子系統(tǒng)設(shè)計與應(yīng)用的革命性新變革,可廣泛應(yīng)用于移動電
22、話、硬盤驅(qū)動器、個人數(shù)字助理和手持電子產(chǎn)品、消費(fèi)性電子產(chǎn)品等。SOC是21世紀(jì)電子系統(tǒng)開發(fā)應(yīng)用的新平臺[1]。</p><p><b> 1.1.2 IP核</b></p><p> IP(Intelligence Property)是在FPGA設(shè)計中不可缺少的組成部分,也是自底向上設(shè)計方法學(xué)的理論基礎(chǔ)。</p><p> 隨著數(shù)字系統(tǒng)設(shè)
23、計越來越復(fù)雜,從頭開始設(shè)計系統(tǒng)中的每一個模塊是一件十分困難的事,而且會打打延長設(shè)計周期,甚至增加系統(tǒng)的不穩(wěn)定因素。IP的出現(xiàn)使得設(shè)計過程變得十分簡單,用戶甚至只需要將不同的模塊連接起來,就可以實(shí)現(xiàn)一個完整的系統(tǒng)。這樣對減少產(chǎn)品的上市時間、賺取早起的利潤十分有利。</p><p> IP核是指用于產(chǎn)品應(yīng)用專用的集成電路(ASIC)或可編程邏輯器件(FPGA)的邏輯塊或數(shù)據(jù)塊。將一些數(shù)字電路中常用但比較復(fù)雜的功能模
24、塊,如FIR濾波器,SDRAM控制器,PCI接口等設(shè)計成可修改參數(shù)的模塊,讓其他用戶可以直接調(diào)用,這樣就大大減輕了工程師的負(fù)擔(dān),避免重復(fù)勞動。隨著CPDL/FPGA的規(guī)模越來越大,設(shè)計越來越負(fù)雜,使用IP核是一個發(fā)展趨勢。</p><p> 隨著HDL的發(fā)展和標(biāo)準(zhǔn)化,世界上出現(xiàn)了一批利用HDL進(jìn)行各種集成電路功能模塊專業(yè)設(shè)計的公司。其具體任務(wù)是按常用或?qū)S霉δ?,用HDL來描述集成電路的功能和結(jié)構(gòu),并經(jīng)過不同級別
25、的驗(yàn)證形成不同級別的IP核模塊,供芯片設(shè)計人員來裝配或集成選用。</p><p> 軟IP核通常使用HDL文本形式提交給用戶,它已經(jīng)過行為級設(shè)計優(yōu)化和功能驗(yàn)證,但其中不含有任何具體的物理信息。據(jù)此,用戶可以綜合出正確的門電路級網(wǎng)表,并可以進(jìn)行后續(xù)結(jié)構(gòu)設(shè)計,具有強(qiáng)大的靈活性,可以很容易的借助EDA綜合工具將其與其他外部邏輯電路結(jié)合成一體,更具不同的半導(dǎo)體工藝,將其設(shè)計為具有不同性能的器件??梢陨唐坊能汭P內(nèi)核的
26、電路結(jié)構(gòu)總門數(shù)一般都在5000門以上。軟IP核又被稱為虛擬器件。</p><p> 硬IP核是基于某種半導(dǎo)體工藝的物理設(shè)計,,已有固定的拓?fù)洳季趾途唧w工藝,并已經(jīng)過工藝驗(yàn)證,具有保證的性能。其共給 用戶的形式是電路物理結(jié)構(gòu)掩模板圖全套工藝文件,是可以拿來就用的圈套技術(shù)。</p><p> 固IP核的設(shè)計深度介于軟IP內(nèi)核和硬IP內(nèi)核之間,除了完成硬IP內(nèi)核所具有的設(shè)計外,還完成門電路級
27、綜合和時序仿真設(shè)計環(huán)節(jié),一般以門電路級網(wǎng)表形式提交用戶使用。</p><p> 常用的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ò)單元、編譯器、編碼/解碼器和模擬器件模塊等。豐富的
28、IP內(nèi)核模塊庫為快速地設(shè)計專用集成電路和單片系統(tǒng)以盡快占領(lǐng)市場提供了保證[2]。</p><p><b> 1.1.3數(shù)據(jù)傳送</b></p><p> 數(shù)據(jù)傳送有串行傳送和并行傳送兩種方法。</p><p> 并行傳輸是構(gòu)成字符的二進(jìn)制代碼在并行信道上同時傳輸?shù)姆绞?。例如?單位代碼字符要用8條信道并行同時傳輸,一次傳一個字符,收、發(fā)雙
29、方不存在同步問題,速度快,但信道多、投資大,數(shù)據(jù)傳輸中很少采用[3]。</p><p> 串行傳輸是構(gòu)成二進(jìn)制代碼在一條信道上以位(碼元)為單位,按時間順序逐位傳輸?shù)姆绞?。按位發(fā)送,逐位接收,同時還要確認(rèn)字符,所以要采取同步措施。速度雖慢,但只需一條傳輸信道,投資小,易于實(shí)現(xiàn)。為此,串行傳輸已經(jīng)成為當(dāng)今外設(shè)接口的主流傳輸方式,為此,摩托羅拉公司開發(fā)出了同步外設(shè)接口(SPI),并隨著時間不斷改進(jìn),由于其占用線的資
30、源少,且穩(wěn)定可靠,該總線大量用在與EEPROM、ADC、FLASH和顯示驅(qū)動器之類的慢速外設(shè)器件通信,現(xiàn)在很多單片機(jī)等都有SPI模塊來連接外圍設(shè)備,從而使主機(jī)與外設(shè)傳輸數(shù)據(jù)更加方便[5]。</p><p> 1.2 SPI研究的目的及意義</p><p> SPI總線,是一個同步串行接口的數(shù)據(jù)總線,它具有全雙工、信號線少、協(xié)議簡單、傳輸速度快等優(yōu)點(diǎn)。由于串行總線的信號線比并行總線更少、
31、簡單,越來越多的系統(tǒng)放棄使用并行總線而采用串行總線。在眾多串行總線中,SPI 總線相比于I2C總線、CAN總線、USB等其他常用總線相比有很大優(yōu)勢,如SPI線的數(shù)據(jù)傳輸速度可達(dá)若干Mbps, 比I2C總線快很多。SPI 總線最典型的應(yīng)用就是主機(jī)與外圍設(shè)備(如EEPROM、Flash RAM、A/D 轉(zhuǎn)換器、LED 顯示器、實(shí)時時鐘等)之間的通信[4]。</p><p> SPI接口的擴(kuò)展有硬件和軟件兩種方法,軟
32、件模擬SPI接口方法雖然簡單方便,但是速度受到限制,在高速且日益復(fù)雜的數(shù)字系統(tǒng)中,這種方法顯然無法滿足系統(tǒng)要求,所以采用硬件的方法實(shí)現(xiàn)最為切實(shí)可行。這使得與SPI有關(guān)的軟件就相當(dāng)簡單,使CPU有更多的時間處理其他事務(wù)。</p><p> FPGA(現(xiàn)場可編程門陣列)是在PAL、GAL、PLD 等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物,具有設(shè)計周期短、可重復(fù)編程、靈活性強(qiáng)等特點(diǎn)。用FPGA 設(shè)計的SPI 總線具有可擴(kuò)
33、展性強(qiáng)、便于修改等優(yōu)點(diǎn)。只要對設(shè)計做簡單的改動,即可對SPI 總線的數(shù)據(jù)位數(shù)、工作模式等進(jìn)行擴(kuò)展,充分發(fā)揮了FPGA 的優(yōu)勢。并FPGA是可編程并可重復(fù)擦寫的,從而具有更大的靈活性,在協(xié)議不標(biāo)準(zhǔn)的情況下,可根據(jù)外圍設(shè)備的不同而靈活的改動SPI設(shè)計,使設(shè)計周期大大降低,并與外圍設(shè)備連接更加方便。</p><p> 1.3本文的主要工作及構(gòu)架</p><p> 1.3.1研究的基本內(nèi)容&l
34、t;/p><p> ?。?)熟悉通信及通信接口相關(guān)方面的知識,學(xué)習(xí)并掌握SPI通信接口的結(jié)構(gòu),協(xié)議及原理。</p><p> ?。?)熟悉VERILOG語言及其開發(fā)環(huán)境ISE,使用該語言進(jìn)行數(shù)字電路(FPGA)設(shè)計,慢慢深入VERILOG語言。</p><p> (3)設(shè)計流程圖,狀態(tài)圖。</p><p><b> (4)實(shí)現(xiàn)仿真。
35、</b></p><p><b> 1.3.2技術(shù)方案</b></p><p> SPI 接口作為主機(jī)與從機(jī)的通訊接口,其主要完成工作為下: ①SPI將從主機(jī)接收到的8位的并行數(shù)據(jù),轉(zhuǎn)換為從機(jī)所能接收的串行數(shù)據(jù),并將該數(shù)據(jù)根據(jù)SPI協(xié)議送給從機(jī)。 ②主機(jī)產(chǎn)生從機(jī)所需的時鐘信號SCLK以及片選信號CS。 ③接收從從機(jī)傳回的讀信號和
36、串行數(shù)據(jù),并將其轉(zhuǎn)換為并行數(shù)據(jù)。</p><p> 此方案采用了狀態(tài)機(jī)來進(jìn)行設(shè)計,本項(xiàng)目的研究主要采用理論分析、邏輯推理、試驗(yàn)調(diào)試等方法。</p><p><b> 狀態(tài)機(jī)的特點(diǎn)如下:</b></p><p> ?。?)有限狀態(tài)機(jī)相對于純硬件數(shù)字系統(tǒng)順序方式控制來說更為靈活。</p><p> ?。?)狀態(tài)機(jī)的結(jié)構(gòu)模
37、式簡單。</p><p> ?。?)狀態(tài)機(jī)構(gòu)成的同步時序邏輯模塊更為優(yōu)良。</p><p> (4)狀態(tài)機(jī)在高速運(yùn)算和控制方面更有其巨大的優(yōu)勢。</p><p> (5)狀態(tài)機(jī)更為可靠。</p><p> 基于以上特點(diǎn),用狀態(tài)機(jī)的方法描述SPI通信過程簡單方便并可靠。SPI接口的狀態(tài)大致轉(zhuǎn)移描述如下:</p><p&
38、gt; 首先是SPI接口處于等待狀態(tài),一旦檢測到發(fā)送指令時觸發(fā)信號進(jìn)入發(fā)送狀態(tài),在系統(tǒng)指令下檢測到寫信號時進(jìn)入發(fā)送數(shù)據(jù)狀態(tài),然后一位發(fā)送數(shù)據(jù),當(dāng)檢測到讀信號時,進(jìn)入讀狀態(tài),當(dāng)檢測到發(fā)送接收都完畢時,進(jìn)入發(fā)送接收完畢狀態(tài),再轉(zhuǎn)向等待狀態(tài)。</p><p><b> 關(guān)鍵技術(shù)的實(shí)現(xiàn):</b></p><p><b> ?。?)時序問題</b>&l
39、t;/p><p> 將總線控制信號封裝成指令,使用者只需通過發(fā)送指令的方式操作,避免了復(fù)雜的時序邏輯設(shè)計問題。</p><p> (2)全雙工傳輸方式的設(shè)計</p><p> 如果全部使用狀態(tài)機(jī)的方式完成設(shè)計,則可發(fā)現(xiàn)其很難完成全雙工即收發(fā)獨(dú)立模式,則在此過程中可以采用流水線設(shè)計方式,使之收與發(fā)之間獨(dú)立進(jìn)行,便可完成全雙工傳輸方式的設(shè)計。</p>&
40、lt;p> 第2章 SPI原理分析</p><p> SPI原理主要介紹SPI的基本機(jī)構(gòu),工作模式,傳輸模式以及SPI的典型協(xié)議,通過對于這些SPI的要點(diǎn)介紹,對其工作過程有一個通透了解,從而可以能設(shè)計達(dá)到原理目的的功能設(shè)計以及程序的設(shè)計。</p><p> 2.1 SPI通信總線</p><p> SPI顧名思義就是串行外圍設(shè)備接口。是Motoro
41、la首先在其MC68HCXX系列處理器上定義的。SPI接口主要應(yīng)用在 EEPROM,F(xiàn)LASH,實(shí)時時鐘,AD轉(zhuǎn)換器,還有數(shù)字信號處理器和數(shù)字信號解碼器之間。SPI,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時為PCB的布局上節(jié)省空間,提供方便,正是出于這種簡單易用的特性,現(xiàn)在越來越多的芯片集成了這種通信協(xié)議,比如AT91RM9200。</p><p> SPI總
42、線系統(tǒng)是一種同步串行外設(shè)接口,它可以使MCU與各種外圍設(shè)備以串行方式進(jìn)行通信以交換信息。外圍設(shè)置FLASHRAM、網(wǎng)絡(luò)控制器、LCD顯示驅(qū)動器、A/D轉(zhuǎn)換器和MCU等。SPI總線系統(tǒng)可直接與各個廠家生產(chǎn)的多種標(biāo)準(zhǔn)外圍器件直接接口,該接口一般使用4條線:串行時鐘線(SCLK)、主機(jī)輸入/從機(jī)輸出數(shù)據(jù)線MISO、主機(jī)輸出/從機(jī)輸入數(shù)據(jù)線MOSI和低電平有效的從機(jī)選擇線SS(有的SPI接口芯片帶有中斷信號線INT、有的SPI接口芯片沒有主機(jī)輸
43、出/從機(jī)輸入數(shù)據(jù)線MOSI)[7]。</p><p> 2.2 SPI簡介</p><p> SPI(Serial Peripheral Interface)接口是工業(yè)標(biāo)準(zhǔn)的同步串行接口,是一種全雙工、三線通信的系統(tǒng)。由于串行總線的信號線比并行總線更少、更簡單,越來越多的系統(tǒng)放棄使用并行總線而采用串行總線。在眾多串行總線中,SPI 總線與I2C總線、CAN總線、USB等其他常用總線相
44、比有很大優(yōu)勢。SPI 總線最典型的應(yīng)用就是主機(jī)與外圍設(shè)備(如EEPROM、Flash RAM、A/D轉(zhuǎn)換器、LED顯示器、實(shí)時時鐘等)之間的通信[6]。</p><p> SPI的通信原理很簡單,它以主從方式工作,這種模式通常有一個主設(shè)備和一個或多個從設(shè)備,需要至少4根線(單向傳輸時只需要3根)。也是所有基于SPI的設(shè)備共有的,它們是SDI(數(shù)據(jù)輸入),SD(數(shù)據(jù)輸出),SCK(時鐘),CS(片選)。它們的定義
45、如下:</p><p> SCK:同步時鐘信號,用來同步主機(jī)和從機(jī)的數(shù)據(jù)傳輸,由主機(jī)控制輸出,從機(jī)在SCK 的邊沿接收和發(fā)送數(shù)據(jù);</p><p> MOSI:主機(jī)輸出、從機(jī)輸入信號,主機(jī)在上升沿(或下降沿)通過該信號線發(fā)送數(shù)據(jù)給從機(jī),從機(jī)在下降沿(或上升沿)通過該信號線接收該數(shù)據(jù);</p><p> MISO:主機(jī)輸入、從機(jī)輸出信號,從機(jī)在上升沿(或下降沿)
46、通過該信號線發(fā)送數(shù)據(jù)給主機(jī),主機(jī)在下降沿(或上升沿)通過該信號線接收該數(shù)據(jù);</p><p> CS:從機(jī)片選信號,由主機(jī)控制輸出。</p><p> 其中CS是控制芯片是否被選中的,也就是說只有片選信號為預(yù)先規(guī)定的使能信號時(高電位或低電位),對此芯片的操作才有效。這就允許在同一總線上連接多個SPI設(shè)備成為可能?! 〗酉聛砭拓?fù)責(zé)通訊的3根線了。通訊是通過數(shù)據(jù)交換完成的,這里先要知道
47、SPI是串行通訊協(xié)議,也就是說數(shù)據(jù)是一位一位的傳輸?shù)摹_@就是SCLK時鐘線存在的原因,由SCK提供時鐘脈沖,SDI,SDO則基于此脈沖完成數(shù)據(jù)傳輸。數(shù)據(jù)輸出通過 SDO線,數(shù)據(jù)在時鐘上升沿或下降沿時改變,在緊接著的下降沿或上升沿被讀取。完成一位數(shù)據(jù)傳輸,輸入也使用同樣原理。這樣,在至少8次時鐘信號的改變(上沿和下沿為一次),就可以完成8位數(shù)據(jù)的傳輸。 要注意的是,SCLK信號線只由主設(shè)備控制,從設(shè)備不能控制信號線。同樣,在一個基于
48、SPI的設(shè)備中,至少有一個主控設(shè)備。這樣傳輸?shù)奶攸c(diǎn):這樣的傳輸方式有一個優(yōu)點(diǎn),與普通的串行通訊不同,普通的串行通訊一次連續(xù)傳送至少8位數(shù)據(jù),而SPI允許數(shù)據(jù)一位一位的傳送,甚至允許暫停,因?yàn)镾CLK時鐘線由主控設(shè)備控制,當(dāng)沒有時鐘跳變時,從設(shè)備不采集或傳送數(shù)據(jù)。也就是說,主設(shè)備通過對SCLK時鐘線的控制可以完成對通訊的控制</p><p> SPI接口的一個缺點(diǎn):沒有指定的流控制,沒有應(yīng)答機(jī)制確認(rèn)是否接收到數(shù)據(jù)
49、[11]。</p><p> 2.3 SPI的工作模式</p><p> SPI有兩種工作模式,分別為主模式和從模式。</p><p><b> 2.3.1主模式</b></p><p> 將Master的數(shù)據(jù)傳送給Slave,8位數(shù)據(jù)傳送,傳送完畢,申請中斷,如圖2.1所示:</p><p&
50、gt; 圖 2.1 SPI工作主模式</p><p><b> 2.3.2 從模式</b></p><p> 在從模式下,每一位數(shù)據(jù)都是接收到時鐘信號SCLK和CS信號之后才發(fā)送/接收。</p><p> 此時,SCLK信號又主機(jī)產(chǎn)生,接收的數(shù)據(jù)在三岔路口信號作用下依次由MOSI引腳寫入移位寄存器,發(fā)送的數(shù)據(jù)在SCLK信號作用下由移位寄
51、存器發(fā)送到MISO引腳。</p><p> 圖2.2 SPI工作從模式</p><p> 2.4 SPI的傳輸模式</p><p> SPI 總線是Motorola公司推出的三線同步接口,同步串行3線方式進(jìn)行通信:一條時鐘線SCK,一條數(shù)據(jù)輸入線MOSI,一條數(shù)據(jù)輸出線MISO;用于CPU與各種外圍器件進(jìn)行全雙工、同步串行通訊。SPI主要特點(diǎn)有:可以同時發(fā)出和
52、接收串行數(shù)據(jù);可以當(dāng)作主機(jī)或從機(jī)工作;提供頻率可編程時鐘;發(fā)送結(jié)束 中斷標(biāo)志;寫沖突保護(hù);總線競爭保護(hù)等。下圖2.3示出SPI總線工作的四種方式,其中使用的最為廣泛的是SPI0和SPI3方式 (實(shí)線表示):</p><p><b> 圖2.3</b></p><p> SPI 模塊為了和外設(shè)進(jìn)行數(shù)據(jù)交換,根據(jù)外設(shè)工作要求,其輸出串行同步時鐘極性和相位可以進(jìn)行配置,
53、時鐘極性(CPOL)對傳輸協(xié)議沒有重大的影響。如果 CPOL=0,串行同步時鐘的空閑狀態(tài)為低電平;如果CPOL=1,串行同步時鐘的空閑狀態(tài)為高電平。時鐘相位(CPHA)能夠配置用于選擇兩種不同的傳輸協(xié)議之一進(jìn)行數(shù)據(jù)傳輸。如果CPHA=0,在串行同步時鐘的第一個跳變沿(上升或下降)數(shù)據(jù)被采樣;如果CPHA=1,在串行同步時鐘的第二個跳變沿(上升或下降)數(shù)據(jù)被采樣。SPI主模塊和與之通信的外設(shè)備時鐘相位和極性應(yīng)該一致。</p>
54、<p> SPI總線包括1根串行同步時鐘信號線以及2根數(shù)據(jù)線。</p><p> SPI模塊為了和外設(shè)進(jìn)行數(shù)據(jù)交換,根據(jù)外設(shè)工作要求,其輸出串行同步時鐘極性和相位可以進(jìn)行配置,時鐘極性(CPOL)對傳輸協(xié)議沒有重大的影響。如果CPOL=0,串行同步時鐘的空閑狀態(tài)為低電平;如果CPOL=1,串行同步時鐘的空閑狀態(tài)為高電平。時鐘相位(CPHA)能夠配置用于選擇兩種不同的傳輸協(xié)議之一進(jìn)行數(shù)據(jù)傳輸。如果C
55、PHA=0,在串行同步時鐘的第一個跳變沿(上升或下降)數(shù)據(jù)被采樣;如果CPHA=1,在串行同步時鐘的第二個跳變沿(上升或下降)數(shù)據(jù)被采樣。SPI主模塊和與之通信的外設(shè)音時鐘相位和極性應(yīng)該一致。</p><p> ?。?)SPI0模式下的CPOL為0,SCK的空閑電平為低;CPHA為0,數(shù)據(jù)在串行同步時鐘的第一個跳變沿(由于CPOL為低,因此第1個跳變沿只能為上升沿)時數(shù)據(jù)被采樣。 </p><
56、p> (2)SPI1 模式下的 CPOL 也為0,SCK的空閑電平為低;但是CPHA為1,數(shù)據(jù)在串行同步時鐘的第二個跳變沿(由于CPOL為低,因此第2個跳變沿只能為下降沿)時數(shù)據(jù)被采樣。 </p><p> ?。?)SPI2模式下的CPOL為1,SCK的空閑電平為高;CPHA為0,數(shù)據(jù)在串行同步時鐘的第1個跳變沿(由于CPOL為高,因此第1個跳變沿只能為下降沿)時數(shù)據(jù)被采樣。 </p>
57、<p> ?。?)SPI3 模式下的CPOL為1,SCK的空閑電平為高;CPHA為1,數(shù)據(jù)在串行同步時鐘的第2個跳變沿(由于CPOL為高,因此第1個跳變沿只能為上升沿)時數(shù)據(jù)被采樣。 </p><p> 在上述 4 種模式中,使用的最為廣泛的是 SPI0 和 SPI3 方式。由于每一種模式都與其他三種不兼容,因此為了完成主、從設(shè)備間的通訊,主、從設(shè)備的 CPOL 和 CPHA 必須有相同的設(shè)置。讀者需
58、要注意的是:如果主設(shè)備/從設(shè)備在 SCK上升沿發(fā)送數(shù)據(jù),則從設(shè)備/主設(shè)備最好在下降沿采樣數(shù)據(jù);如果主設(shè)備/從設(shè)備在SCK下降沿發(fā)送數(shù)據(jù),則從設(shè)備/主設(shè)備最好在 SCK上升沿采樣數(shù)據(jù)[8]。</p><p><b> 2.5 SPI協(xié)議</b></p><p> SPI是一個環(huán)形總線結(jié)構(gòu),由SS(CS)、SCK、SDI、SDO構(gòu)成,其時序其實(shí)很簡單,主要是在SCK的
59、控制下,兩個雙向移位寄存器進(jìn)行數(shù)據(jù)交換。假設(shè)下面的8位寄存器裝的是待發(fā)送的數(shù)據(jù)10101010,上升沿發(fā)送、下降沿接收、高位先發(fā)送。那么第一個上升沿來的時候 數(shù)據(jù)將會是SDO=1;寄存器=0101010X。下降沿到來的時候,SDI上的電平將所存到寄存器中去,那么這時寄存器=0101010SDI,這樣在 8個時鐘脈沖以后,兩個寄存器的內(nèi)容互相交換一次。這樣就完成里一個SPI時序。</p><p> 舉例:假設(shè)主機(jī)
60、和從機(jī)初始化就緒:并且主機(jī)的SBUFF=0xaa,從機(jī)的SBUFF=0x55,下面將分步對SPI的8個時鐘周期的數(shù)據(jù)情況演示一遍:假設(shè)上升沿發(fā)送數(shù)據(jù)。這樣就完成了兩個寄存器8位的交換,上面的上表示上升沿、下表示下降沿,SDI、SDO相對于主機(jī)而言的。其中SS引腳作為主機(jī)的時候,從機(jī)可以把它拉底被動選為從機(jī),作為從機(jī)的是時候,可以作為片選腳用。根據(jù)以上分析,一個完整的傳送周期是16位,即兩個字節(jié),因?yàn)?,首先主機(jī)要發(fā)送命令過去,然后從機(jī)根據(jù)
61、主機(jī)的命令準(zhǔn)備數(shù)據(jù),主機(jī)在下一個8位時鐘周期才把數(shù)據(jù)讀回來[9]。</p><p><b> 表2.1</b></p><p><b> 第3章方案論證</b></p><p> 對于SPI接口的設(shè)計,我們可以分為兩大類,分別為利用單片機(jī)如51系列單片機(jī)實(shí)現(xiàn)和利用FPGA等可編程邏輯器件編程實(shí)現(xiàn),下面將分別介紹兩種方
62、法的方法。</p><p> 3.1 用FPGA來設(shè)計SPI</p><p> 通過對SPI的結(jié)構(gòu)的了解可以設(shè)計一個系統(tǒng)框架,按照框架完成輸入輸出的功能。</p><p> 一個典型的SPI系統(tǒng)包括一個主MPU和一個或者多個從外圍器件。單片機(jī)通過SPI接口模塊與SPI相連,當(dāng)單片機(jī)以主機(jī)模式運(yùn)行的時候,就可以與系統(tǒng)中的從機(jī)實(shí)現(xiàn)通信,而當(dāng)它處于從機(jī)模式工作時,就
63、能與寧外一個主機(jī)進(jìn)行數(shù)據(jù)通信。但在同一個時間內(nèi),系統(tǒng)中只能擁有一個主機(jī),否側(cè)會造成系統(tǒng)的工作異常。一個典型的用FPGA設(shè)計的系統(tǒng)框架如圖3.1所示[11]:</p><p><b> 圖3.1</b></p><p> 3.2 用51系列單片機(jī)實(shí)現(xiàn)SPI</p><p> 對于MCS51系列單片機(jī)來說,由于它不帶有SPI串行總線接口,我們
64、可以使用軟件來模擬SPI的操作,包括串行時鐘、數(shù)據(jù)輸入以及數(shù)據(jù)輸出。不同的串行接口外圍芯片擁有不同的時鐘時序。對于在SCK的上升沿輸入(接收)數(shù)據(jù)并且在下降沿輸出(發(fā)送)數(shù)據(jù)的器件,大都應(yīng)在初始狀態(tài)將其串行時鐘輸出口P1.1設(shè)置為1,而在允許接口后再將P1.1置為0。這樣,MCU在輸出1位SCK時鐘的同時,可以將接口芯片串行左移,從而輸出1位數(shù)據(jù)到MCS51單片機(jī)的P1.3口(模擬MCU的MISO線),之后再將置P1.1為1,使MCS5
65、1系列單片機(jī)從P1.0(模擬MCU的MOSI線)輸出1位數(shù)據(jù)至串行接口芯片。這樣就完成了1位數(shù)據(jù)輸入輸出的模擬。此后再置P1.1為0,模擬下1位數(shù)據(jù)的輸入輸出……,依此完成8次循環(huán),即可完成1次通過SPI總線傳輸8位數(shù)據(jù)的操作。對于在SCK的下降沿輸入數(shù)據(jù)和上升沿輸出數(shù)據(jù)的器件,則應(yīng)取串行時鐘輸出的初始狀態(tài)為0,即在接口芯片允許時,先置P1.1為1,以便外圍接口芯片輸出1位數(shù)據(jù)(MCU接收1位數(shù)據(jù)),之后再置時鐘為0,使外圍接口芯片接收
66、1位數(shù)據(jù)(MCU發(fā)送1位數(shù)據(jù)),從而完成1位數(shù)據(jù)的傳送</p><p><b> 圖3.2</b></p><p> P1.0模擬MCU的數(shù)據(jù)輸出端(MOSI),P1.1模擬SPI的SCK輸出端,P1.2模擬SPI的從機(jī)選擇端,P1.3模擬SPI的數(shù)據(jù)輸入端(MISO)。</p><p> 以上便是兩種實(shí)現(xiàn)SPI的方法,在實(shí)際應(yīng)用中,只要
67、高級點(diǎn)的單片機(jī),都自帶SPI接口,并且如DSP等也集成了SPI接口,大多芯片都趨向于用硬件而非軟件來實(shí)現(xiàn)。這是因?yàn)檐浖MSPI接口方法雖然簡單方便,但是速度受到限制,在高速且日益復(fù)雜的數(shù)字系統(tǒng)中,這種方法顯然無法滿足系統(tǒng)要求,所以采用硬件的方法實(shí)現(xiàn)最為切實(shí)可行。這樣使得與SPI有關(guān)的軟件就相當(dāng)簡單,使CPU有更多的時間處理其他事務(wù)。在FPGA不斷地完善改善完美并且功能強(qiáng)大的今天,用硬件實(shí)現(xiàn)已經(jīng)成為主流,在大型系統(tǒng)用硬件實(shí)現(xiàn)更加穩(wěn)定。同
68、時FPGA也有自身的優(yōu)點(diǎn)。在外圍器件有改變時,由于FPGA可以重復(fù)擦寫的優(yōu)點(diǎn),從而在外圍器件有些許改變之時,可以同時稍微改變可編程的程序,因而可編程又有靈活性大的特點(diǎn)。因此,本次便采用FPGA來設(shè)計。</p><p> 第4章SPI的電路設(shè)計</p><p> 電路設(shè)計主要是針對系統(tǒng)功能的設(shè)計,以及各部分功能具體實(shí)現(xiàn)方案,比如管腳說明由此得到本次SPI設(shè)計的流程圖,由流程圖便可以編寫出
69、我們所需要的程序。</p><p><b> 4.1管腳說明</b></p><p> 表4.1 SPI設(shè)計管腳</p><p> 其中,需要強(qiáng)掉的是,adr_i端輸入不同,便使系統(tǒng)處于寫數(shù)據(jù)狀態(tài)還是寫指令狀態(tài),指令是寫給SPI設(shè)計的控制寄存器,以使SPI具有不同的功能[12]。</p><p> 4.2 SPI
70、系統(tǒng)中所用的寄存器</p><p> 本次設(shè)計中SPI用到四種寄存器,包括SPCR(SPI控制寄存器)、SPER(SPI擴(kuò)展寄存器)、treg(SPI數(shù)據(jù)傳輸/接收寄存器)其功能如下所示: </p><p><b> ?。?)控制寄存器</b></p><p> 本次設(shè)計時參照MC68HC11A8單片機(jī)的SPI結(jié)構(gòu)進(jìn)行設(shè)計,并進(jìn)行了一些改進(jìn)
71、,所以本次設(shè)計的控制寄存器的控制位與MC68HC11A8單片機(jī)的控制位大致相似,同時進(jìn)行了一些擴(kuò)展和不同的功能,擴(kuò)展在擴(kuò)展寄存器中再做介紹,其控制寄存器的控制位如下表4.2所示:</p><p> 表4.2 SPI設(shè)計的控制寄存器</p><p><b> 其各功能如下:</b></p><p> ·spie :當(dāng)此為被置位為1
72、時,則中斷允許,即允許中斷,當(dāng)為0時,禁止中斷。</p><p><b> ‘0’:禁止中斷</b></p><p><b> ‘1’:允許中斷</b></p><p> ·spe :當(dāng)此位被置位為1時,則系統(tǒng)運(yùn)行,當(dāng)置位為0時,系統(tǒng)不運(yùn)行。</p><p> ‘0’:系統(tǒng)運(yùn)行允許
73、</p><p> ‘1’:系統(tǒng)允許禁止</p><p> ·msb:此為為在傳輸時是最高位線發(fā)送還是最低位先發(fā)送。當(dāng)為1時,是最高位先發(fā)送,當(dāng)為1時,是最低位先發(fā)送。</p><p> ‘0’:先發(fā)送最低位</p><p> ‘1’:先發(fā)送最高位</p><p> ·mstr:此為主從模
74、式選擇位,在本次設(shè)計中,本次設(shè)計只是工作于主控設(shè)備,故此為始終置1即可。</p><p> ·cpol:此為系統(tǒng)在空閑時的極性,當(dāng)為0時,其為低電平為空閑時的極性,當(dāng)為1時,其為高電平為空閑時的極性。</p><p> ‘0’:空閑時為低電平</p><p> ‘1’:空閑時為高電平</p><p> ·spr:此
75、為速率選擇為,其與擴(kuò)展寄存器組合成速率選擇,可為00,01,10,11,與擴(kuò)展此寄存器組合成一組數(shù)列來選擇數(shù)據(jù)傳輸速率。此刻在速率控制中詳細(xì)介紹。</p><p><b> (2)擴(kuò)展寄存器</b></p><p> 擴(kuò)展寄存器的八位只用了兩位,其用于與控制寄存器的spr組合成一列數(shù)據(jù)控制數(shù)據(jù)傳輸速率,其組合方式為espr = {spre, espr},四位此而控
76、制16種傳輸速率,此在速率控制中詳細(xì)介紹。</p><p><b> (3)狀態(tài)寄存器</b></p><p> 狀態(tài)寄存器本次設(shè)計中只去了一位spi_i中斷位,其與spie允許情況下允許中斷,中斷位傳給int_o從而保證單片機(jī)完成讀取數(shù)據(jù)后在重新傳輸數(shù)據(jù),從而保證每位數(shù)據(jù)傳輸完畢,保證數(shù)據(jù)讀取后才能傳送下一位數(shù)據(jù)[13]。</p><p>
77、; 4.3 SPI速率控制</p><p> 速率控制為控制寄存器的低兩位和擴(kuò)展寄存器的低兩位共同控制的,本次設(shè)計通過此四位的控制一共可以支持12種速率,其為系統(tǒng)時鐘的N次分頻。</p><p> 本次將每一個控制賦值給clkcnt寄存器,并起每一個時鐘減一,當(dāng)為0是從而影響控制位狀態(tài)機(jī)ena = ~|clkcnt,當(dāng)ena為1時則執(zhí)行狀態(tài)機(jī),達(dá)到分頻目的</p>&l
78、t;p> 其詳細(xì)控制如表4.3下:</p><p> 表4.3 SPI的速率控制</p><p> 4.4 SPI控制狀態(tài)機(jī)</p><p> Verilog HDL 是一種硬件描述語言,他可以用來進(jìn)行各種級別的邏輯設(shè)計,可以用來進(jìn)行數(shù)字邏輯系統(tǒng)的仿真驗(yàn)證、時序分析和邏輯綜合等, 應(yīng)用十分廣泛。本文使用Verilog設(shè)計SPI 接口模塊。分析SPI 接
79、口模塊的功能之后,本文使用有限狀態(tài)機(jī)實(shí)現(xiàn)SPI接口模塊的傳輸控制。</p><p> SPI控制狀態(tài)機(jī)是本次設(shè)計的核心部分,其實(shí)整個設(shè)計的可以說是大腦,控制著整個</p><p> 程序的執(zhí)行過程和完成設(shè)計實(shí)現(xiàn)功能??刂茽顟B(tài)機(jī)主要用于片選信號cs 的選擇,和輸出時鐘SCLK的產(chǎn)生,以及數(shù)據(jù)載入和輸出等。它控制各個模塊的狀態(tài), 然后根據(jù)相應(yīng)的狀態(tài)做出相應(yīng)的操作。</p>&
80、lt;p> 在狀態(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)橹挥衅錇?時系統(tǒng)才運(yùn)行,當(dāng)達(dá)到adr[1:0]=10時,便是發(fā)送接收數(shù)據(jù)的命令。此時進(jìn)入狀態(tài)機(jī)的空閑狀態(tài)2'b00。在空閑狀態(tài), 所作的工作是設(shè)置空閑的時的極性和相位,完成后便進(jìn)入發(fā)送準(zhǔn)備載入發(fā)送數(shù)據(jù)階段2
81、39; 01 。此時為達(dá)到控制速率,使用ena = ~ I clkcnt允許位,只有當(dāng)其為1時,才執(zhí)行此狀態(tài)的程序,否則保持,在此狀態(tài)中,所作的工作是反向sck 信號,載入數(shù)據(jù),選中信號片選信號cs 端,變開始發(fā)送接收數(shù)據(jù),同時此時的第位發(fā)送,便進(jìn)入2'b10狀態(tài)。此狀態(tài)時為配置sck 信號, 使SCLK信號輸出脈沖與發(fā)送數(shù)據(jù)脈沖匹配,從而可在sck的上升沿或下降沿鎖存數(shù)據(jù)并發(fā)送數(shù)據(jù)。完成后進(jìn)入到接受數(shù)據(jù)狀態(tài)2'bll。
82、此時為發(fā)送數(shù)據(jù)的核心狀態(tài), 其數(shù)據(jù)接收傳輸寄存器移位完成數(shù)據(jù)的接收,在接收的同時也發(fā)送了一位數(shù)據(jù),當(dāng)發(fā)送完八次后變進(jìn)入產(chǎn)生個中斷位, 當(dāng)單片機(jī)讀取后變從新設(shè)置spe為0并消</p><p><b> 圖4.1</b></p><p> 4.5 SPI程序設(shè)計流程圖</p><p> 通過以上的分析,首先是設(shè)置控制寄存器以及設(shè)置系統(tǒng)允許,當(dāng)
83、spe為1時系統(tǒng)運(yùn)行,adr_i為收發(fā)命令時,滿足條件便開始傳送數(shù)據(jù),傳送數(shù)據(jù)最重要的是sck信號產(chǎn)生以及收發(fā)信號的完成,還有收發(fā)信信號與sck信號的匹配。考慮到這些,其流程圖如下圖4.2所示[15]:</p><p> 圖4.2 SPI設(shè)計流程圖</p><p><b> 第5章仿真及驗(yàn)證</b></p><p><b> 5
84、.1仿真分析</b></p><p> 綜上可以編寫出SPI程序,其程序見附錄A</p><p><b> 驗(yàn)證平臺。</b></p><p> ?。?)二分頻時發(fā)送接收數(shù)據(jù)</p><p> 當(dāng)設(shè)置為開始時adr_i為寫指令,即adr_i=00時,寫指令到控制寄存器,adr_i=11時,寫指令到擴(kuò)展寄
85、存器,以下設(shè)置為中斷允許,系統(tǒng)允許,為主模式,極性為0,即初始狀態(tài)空閑狀態(tài)為低電平,相位為1,即為第一個跳變即第一個上升沿采樣數(shù)據(jù),設(shè)置速率控制位為00,并設(shè)置擴(kuò)展寄存器也為0,及為二分頻,則控制寄存器設(shè)置為8’hF0,擴(kuò)展寄存器設(shè)置為8’h00。 </p><p> 圖 5.1 SPI testbench設(shè)置</p><p> 如上圖5.1所示,其設(shè)置如上所述,即在adr_i=00時
86、,輸入控制寄存器F0,當(dāng)為adr_i=11,輸入擴(kuò)展寄存器為00.它的仿真波形如下圖5.2所示:</p><p><b> 圖5.2仿真波形</b></p><p> 由其結(jié)果可知在mosi_o在一個sck_o時鐘時輸出一位數(shù)據(jù),與實(shí)際相符,且sck_o時鐘剛好為二分頻,輸入數(shù)據(jù)位8’hB5,寫為二進(jìn)制為10110101,看mosi_o在每個sck_o時鐘為單位看
87、數(shù)據(jù)輸出為10110101,與輸入數(shù)據(jù)保持一致,在第一個數(shù)據(jù)開始發(fā)送或接收時,可以看到選片信號為1成立,inta_o在第八個時鐘為1,產(chǎn)生中斷輸出,由結(jié)果與實(shí)際設(shè)計預(yù)計一致。</p><p> (2)四分頻時發(fā)送接收數(shù)據(jù)</p><p> 上只是一個功能測試,先測試是否能選擇頻率,現(xiàn)選擇頻率為四分頻,看結(jié)果是否一致,于是設(shè)置控制寄存器為8’hF1,擴(kuò)展寄存器為8’h00,其仿真結(jié)果如圖
88、 5.4所示:</p><p> 圖 5.3 SPI testbench設(shè)置</p><p> 圖5.4 SPI的仿真波形</p><p> 可以看到其結(jié)果與預(yù)期一致,sck_o為系統(tǒng)時鐘的四分頻,且輸出信號也是隨著一個sck_o時鐘變化而變化,其mosi_o與sck_o變化一致。</p><p><b> 第6章 結(jié)論與展
89、望</b></p><p><b> 6.1結(jié)論</b></p><p> 在此設(shè)計中,不僅對ISE軟件使用已經(jīng)非常熟悉,并且對Verilog語言設(shè)計也更加熟悉了,從而對以后的學(xué)習(xí)打下了非常好的基礎(chǔ)。同時對于SPI已經(jīng)有著非常通透的了解,并且對I2C和UART等串口也有一定的了解,對于仿真分析也掌握了一定的技巧。不僅掌握了FPGA設(shè)計SPI設(shè)計,而且對
90、單片機(jī)實(shí)現(xiàn)也有了一個大致的了解。</p><p> 在今后的設(shè)計中,在參考別人設(shè)計的同時,不能完全照搬別人的東西,同時要結(jié)合自己的思考,用簡單有效的方法來實(shí)現(xiàn)設(shè)計,并結(jié)合原理來思考別人是不是正確。在本次發(fā)送接收數(shù)據(jù)的有一個程序不僅繁瑣,而且發(fā)送接收不能同時進(jìn)行,顯然是錯誤的程序,并且本次設(shè)計另外一個程序在一些端口完全沒什么用,也輸入進(jìn)去,顯然是在抄襲的結(jié)果。所以,無論在做任何設(shè)計,一定要緊跟定義,功能實(shí)現(xiàn)與否設(shè)
91、計,而不是僅僅是看懂硬搬硬套。</p><p> 6.2不足之處及未來展望</p><p> 本次設(shè)計只做了一個簡化的SPI接口,很多SPI的重要模塊和其它功能未能得到實(shí)現(xiàn)。本次畢業(yè)設(shè)計所做的工作雖然簡單,但也體會到不少東西。比如,我理解到在平時做單片機(jī)實(shí)驗(yàn)室那些初始化程序所做的目的。我所做的控制寄存器的東西便是那些初始化程序執(zhí)行命令??刂萍拇嫫鞯拿恳晃挥脕砜刂普麄€系統(tǒng)的運(yùn)行以及系統(tǒng)特
92、性,通過命令指令便將命令寫到系統(tǒng)中去.以前的留在腦中的疑問,那些初始化驅(qū)動程序便迎刃而解。同時在本次設(shè)計,也領(lǐng)略到一些設(shè)計方面的步驟。即應(yīng)該先了解哪些方面,再進(jìn)行哪些方面的理解,再進(jìn)行哪些方面的分析,再進(jìn)行哪些方面的重點(diǎn)理解。在編寫特定模塊時,可以先看廠家所規(guī)定的定義來實(shí)現(xiàn)所需設(shè)計的系統(tǒng).</p><p> 總之,通過本次FPGA設(shè)計,為今后的學(xué)習(xí)工作打下了一個很好的基礎(chǔ),為今后積累了非常寶貴的經(jīng)驗(yàn).</
93、p><p><b> 參考文獻(xiàn)</b></p><p> [1] 樊昌信,徐炳祥,吳成柯等.通信原理(第5版)[M]. 北京:國防工業(yè)出版社,2001.</p><p> [2] 徐洋等.基于Verilog HDL的FPGA設(shè)計與工程應(yīng)用.人民郵電出版社.2009.</p><p> [3] 夏宇聞.Verilog數(shù)
94、字系統(tǒng)教程(第2版)[M].北京航天航空大學(xué)出版社.2008.</p><p> [4]SPI Block Guide V03.06. Original Release Date: 21 JAN 2000Revised: 04 FEB 2003. Motorola, Inc.</p><p> [5] 串行外圍接口.作者:顧衛(wèi)剛老師.</p><p> [6]
95、 基與FPGA的SPI端口設(shè)計. 梁東鶯. 深圳信息職業(yè)技術(shù)學(xué)院信息中心,廣東,深圳518029.</p><p> [7] 黃志強(qiáng),潘天保,俞一鳴等. Xilix可編程邏輯器件的應(yīng)用與設(shè)計[M]. 北京:人民郵電出版社, 2007.</p><p> [8] 朱明程,董爾令. 可編程邏輯器件原理及應(yīng)用[M]. 西安:西安電子科技大學(xué)出版社,2004.</p><p
96、> [9] Lee Hansen and Brent Przybus. Debug your design with the chipscope pro system.[J]. Xcell Journal,2005.</p><p> [10] Xilinx. Virtex-II Pro and Virtex-II Pro X Platform FPGAs: Complete Data Sheet.
97、2007.</p><p> [11] 基與FPGA的SPI端口設(shè)計. 梁東鶯. 深圳信息職業(yè)技術(shù)學(xué)院信息中心,廣東,深圳518029 .</p><p> [12] 徐欣,于紅旗,易凡,盧啟中等. 基于FPGA的嵌入式系統(tǒng)設(shè)計[M]. 北京:機(jī)械工業(yè)出版社,2004.</p><p> [13] 王冠,黃熙,王鷹等. Verilog HDL與數(shù)字電路設(shè)計[M
98、].北京:機(jī)械工業(yè)出版社,2005.</p><p> [14]孫豐軍,余春暄.SPI 串行總線接口的Verilog 實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2005,16:105-106,109.</p><p> [15] K.Babulu, K.Soundara Rajan. FPGA IMPLEMENT ATION OF SPI TRANSCEIVER MACROCELL INTERFACE
99、 WITH SPI SPECIFICATIONS. JNTU Colleage off Engineering,2008.</p><p><b> 致 謝</b></p><p> 在我學(xué)士論文完成之際,謹(jǐn)向我攻讀學(xué)士學(xué)位的過程中曾經(jīng)教育過我的老師,關(guān)心過我的親人,關(guān)心過我的朋友,和所有幫助過我的人們致以最崇高的敬意和深深的感謝!</p><
100、;p> 衷心感謝我的指導(dǎo)老師**副教授。他豐富的知識和淵博的學(xué)識是我設(shè)計時所有理論知識的源泉,他為我的畢業(yè)設(shè)計進(jìn)行了詳細(xì)的講解,為我提出的問題進(jìn)行了耐心的解答,并指導(dǎo)我如何入手項(xiàng)目和查找資料,為我提供正確的導(dǎo)向。</p><p> 衷心感謝同一小組的進(jìn)行畢業(yè)設(shè)計的同學(xué)們,在設(shè)計進(jìn)行和測試的時候給我的無私的幫助和支持,通過與他們的交流,我不僅了解了關(guān)于調(diào)試方面的知識,還熟悉了誤碼儀各個部分的工作,使我能夠
101、在較短的時間內(nèi)學(xué)到更多的東西。</p><p> 衷心感謝***學(xué)長,在我剛?cè)胧值臅r候通過他們的報告來逐漸熟悉此項(xiàng)目,在后面的學(xué)習(xí)過程中,他們也給予了很多軟件方面的幫助,對我提出的問題也很耐心的回答,在這里表示感謝。</p><p> 感謝**大學(xué)的所有領(lǐng)導(dǎo),老師和為我們學(xué)習(xí)生活環(huán)境創(chuàng)造一切的人們,正是你們的辛勤工作,才把我培育成了一名合格的大學(xué)生。</p><p&
102、gt;<b> 附錄A</b></p><p><b> SPI設(shè)計程序:</b></p><p> module simple_spi_top(</p><p> input wire clk_i, //時鐘</p><p> input wire
103、 rst_i, //異步復(fù)位</p><p> input wire [1:0] adr_i, // 地址</p><p> input wire [7:0] dat_i, // 數(shù)據(jù)輸入</p><p> input wire we_i,</p>
104、<p> output reg [7:0] dat_o, // 數(shù)據(jù)輸出</p><p> output wire inta_o, // i中斷輸出</p><p> output reg sck_o, // 串行時鐘輸出</p><p> output wir
105、e mosi_o, //</p><p> input wire miso_i , // </p><p> output reg cs_o</p><p><b> );</b></p><p> reg [7:0] spcr;
106、 // 控制寄存器</p><p> reg [7:0] sper; // 擴(kuò)展寄存器</p><p> reg [7:0] treg; // 傳輸/接收寄存器</p><p> reg [1:0] state;</p><p> reg [
107、7:0] bcnt;</p><p> //***********輸入數(shù)據(jù)給控制寄存器和狀態(tài)寄存器*************</p><p> always @(posedge clk_i or negedge rst_i)</p><p> if (~rst_i)</p><p><b> begin</b>&
108、lt;/p><p> spcr <= 8'h10; </p><p> sper <= 8'h00;</p><p><b> end</b></p><p> else if (we_i)</p><p><b> begin</b>
109、</p><p> if (adr_i == 2'b00)</p><p> spcr <= dat_i;</p><p> if (adr_i == 2'b11)</p><p> sper <= dat_i;</p><p><b> end</b>&
110、lt;/p><p> //***************設(shè)置控制寄存器*************************</p><p> wire spie = spcr[7]; // 中斷使能,該位為1允許SPI中斷</p><p> wire spe = spcr[6]; // SPI系統(tǒng)允許位。該位為1打開SPI系統(tǒng),為
111、0關(guān)閉SPI系統(tǒng)。</p><p> wire msb = spcr[5]; // 口D線或方式選擇位。該位為1使口D輸出選擇為漏極開路驅(qū)動器,為0則是推挽式輸出。</p><p> wire mstr = spcr[4]; // 該位為1,SPI設(shè)為主設(shè)備;該位為0,SPI設(shè)為從設(shè)備</p><p> wire
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于UVM的SPI接口IP核的驗(yàn)證平臺設(shè)計.pdf
- 基于APB總線的SPI接口IP核的設(shè)計與驗(yàn)證.pdf
- 基于交互的MCU驗(yàn)證技術(shù)實(shí)現(xiàn)及SPI模塊驗(yàn)證.pdf
- 基于proteus的電子式電能表spi接口的仿真【開題報告】
- dsp的spi接口課程設(shè)計
- spi串行總線接口的verilog實(shí)現(xiàn)
- 畢業(yè)設(shè)計基于spi總線接口的數(shù)字電子萬年歷仿真設(shè)計
- 畢業(yè)論文-wlan組網(wǎng)及性能仿真
- SPI接口閃存測試方法及程序開發(fā).pdf
- LTE基帶芯片仿真驗(yàn)證及其SPI控制器硬件實(shí)現(xiàn).pdf
- spi-4.2接口協(xié)議分析
- stm32 spi接口的簡單實(shí)現(xiàn)
- 基于UVM的SPI設(shè)計與驗(yàn)證.pdf
- 基于fpga的spi4.2接口設(shè)計
- 畢業(yè)論文---cdma通信原理及系統(tǒng)仿真
- 畢業(yè)論文——wcdma的空中接口技術(shù)淺析
- matlab仿真設(shè)計-畢業(yè)論文
- 畢業(yè)論文--電流逆變器的matlab仿真
- 電信統(tǒng)一充值接口系統(tǒng)-畢業(yè)論文
- 電信統(tǒng)一充值接口系統(tǒng)-畢業(yè)論文
評論
0/150
提交評論