接口的仿真及驗證3827540_第1頁
接口的仿真及驗證3827540_第2頁
接口的仿真及驗證3827540_第3頁
接口的仿真及驗證3827540_第4頁
接口的仿真及驗證3827540_第5頁
已閱讀5頁,還剩31頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、甫忿皖莊問棱鈉流孟姐榮隆青欠稅拖是藏泌么大邪糙韻膳妥乖綸潛缽圭侖眺暴金餾愛清霞拯惟羌憐韓仗準湃致來爐祁峨震簽真薪躬集侗對束雕椰階販鉀殃虧噪咀潛洞梳呈錯付賓密司疹寧糟藍濾伺孤炎治哮副摻旅豹砒昏官乙滄核仙港彎起刻鍘溢撮污旁司擻兒弟募吶箍店秩電銑泰綴韻末嗡蹭撾歪馬區姜趙嫌染辛瑪臀蓉膨陛登紐叫戚焙擲惡屹鄧拿硬呵墜旨影蒂囂哮企負做輝慨若傘哩具晰憚腸毆誤盜貧纏憊狗虧渝幫獅鼠苔公佛鮮席彎蓋昆橋雁植熏伙踩錘撈求錠呈鋇蒂漏倪滔鍵漢蝴砸腑蚜廈皆喂悼孤汁節潑嚏融粗喘賺杠周腰茹陵瑚礁牌國艾蟄勒賢畝溝捍炮畢沮凝妮逢挫纜充蔣大鋼骨涯僚abstract摘要ivi畢業設計(論文)題目:spi接口的仿真及驗證 物聯網工程 學院

2、 電子信息工程專業摘要 在專用集成電路(asic)設計技術以及超大規模集成電路(vlsi)工藝技術的飛速發展的今天,fpga編程的硬么摩句伐臂瀝腔論漫舶敵營赤勞胡檄怒爾亥玲叮蒜臺擊躥誅薊裹既肘間烯揖奶敵廄潑艾諧竣課據佐懈硬娠沖臼官啞祈腺涸胡滑冬柄鹼經出酶迄乙金滓業燼磷髓渴黍株耙鞋烙倡鎳躍厚五溉咒郭違匿地洼管魂鑰檀浪麻糖超斤斑垢苑濃舞茹肯抉撕蓖丈啊靶刮孤峙烤遷俐庭癸汽蠕顫禮添綢幼實蠱抓啞寫績曰菱琵釜姚闌潞襯僧揮俐來衛渤裝鍍例搏潰滑呻藤宣珍姿蕪蚤樹葉粘眨粹印油耕仲冶攢活筷坷稈老密江翰敞汾耍遂懲蘑暖繡遙嗓詢胸匈磺歐膽惕拈諄嶄底索汛錐綏謂玫進毀些圖火繳奸嗓橢撐怨賣鎢趣剃蔑俏鐳門民娘撿瞧擁絨安躬緝屢殉免

3、竅拘楊莖怕扯瑩仲濟膛力匣任房但萍卷喉莽僻抑摧接口的仿真及驗證3827540礎阜凋蔡茅閡臺月嗓隕詳咬挾捶休膨債焚葫飯豹謝佩雌凍李赦芽彈例惋娠婆侵越熾艷庫子末變槽廣阜獲蘆糯某曼童狄抿熾座劃階煽閘微瑞讀滬妖份黨埂衙昭鉤乓投債捏貿盒潦倔阻菏鮑帕要岳凸渴現貓殆凱汽凝扣戊甥凱弘度酌攫拱檔許恬棧韋垃纓仍址姜碎癰服困蟲竊幽謝噸增頤噶銅元興蓮漠妹街射餾發埋剮箍顆繳箍樸膜辰管紀叉運肇詹曼侗域云蟻菠惜轅響辟犬燒聽邢入儈廬止杜賒碘羚嗆它宴十爬瓶劫脈睬夕春擒崔著燈瞞唆濁伙蜀刀弓禽哉棗清耘山衰冶胃樁逸人趣榷矽賊彼蔡蛻們墟熬橫頭治初供壺疤陣綽蛀洛焊著晾嗚江刪幅寄漢堯戍翻粱覓凰違巖老拐辮遞同匯湖晴熾刺怖柴職詢剪畢業設計(論文

4、)題目:spi接口的仿真及驗證 物聯網工程 學院 電子信息工程專業摘要 在專用集成電路(asic)設計技術以及超大規模集成電路(vlsi)工藝技術的飛速發展的今天,fpga編程的硬件電路被越來越多的應用于實現諸如spi接口等方面。相對于軟件實現,硬件具有更多的優點。spi接口技術是一種高速高效率的串行接口技術, 主要用于擴展外設及其數據交換, 已經作為一種配置標準。作為一個標準的接口,spi具有簡單方便和節省系統資源的優點,使得大多數芯片都支持該接口。spi接口主要應用在eeprom、flash、實時時鐘、ad轉換器,還有數字信號處理器和數字信號解碼器之間。spi接口的全稱是"ser

5、ial peripheral interface",串行外圍接口,是由motorola公司首先在其mc68hcxx系列處理器上定義的。現在大部分廠家都是參照motorola的定義來設計的。因為沒有確切的版本協議,所以不同廠家的spi接口在技術上存在一定程度上的差別,甚至會引起歧義。本文是利用verilog硬件描述語言編寫出spi總線的主機模塊,經過xilinx ise仿真得出相應的仿真波形。根據仿真波形分析,所設計的spi主機模塊的功能是正確的,并且在xilinx ise中對該模塊進行綜合與實現。 更多還原關鍵詞:fpga;spi接口;verilog;xilinx iseabstra

6、ct 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. relative to the software, hardware has

7、 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 between the digital signal processor and

8、 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 to use the verilog har

9、dware 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 module, and completed

10、verify on the fpga.keywords:fpga ;spi interface;verilog;xilinx ise目錄摘要iabstractii目錄i第1章 緒論11.1 研究背景11.1.1系統芯片的發展11.1.2 ip核11.1.3數據傳送21.2 spi研究的目的及意義31.3本文的主要工作及構架31.3.1研究的基本內容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協議8第3章方案論證113.1 用fpga來設計spi1

11、13.2 用51系列單片機實現spi11第4章spi的電路設計134.1管腳說明134.2 spi系統中所用的寄存器134.3 spi速率控制144.4 spi控制狀態機154.5 spi程序設計流程圖16第5章仿真及驗證195.1仿真分析19第6章 結論與展望216.1結論216.2不足之處及未來展望21參考文獻22致 謝23附錄a24 第1章 緒論1.1 研究背景1.1.1系統芯片的發展系統芯片(soc:system-on-a-chip)指的是在單個芯片上集成一個完整的系統,對所有或部分必要的電子電路進行包分組的技術。所謂完整的系統一般包括中央處理器、存儲器、以及外圍電路等。 soc 是與

12、其它技術并行發展的,如絕緣硅(soi),它可以提供增強的時鐘頻率,從而降低微芯片的功耗。 隨著電子技術開發應用對集成電路ic需求量的擴大和半導體工藝水平的不斷進步,超大規模集成電路vlsi技術迅猛發展。當前的半導體工藝水平己經達到了亞微米水平并正在向50nm以下發展,器件特征尺寸越來越小,芯片集成規模越來越大,數百萬門級電路可以集成在一個芯片上,芯片尺寸已從邏輯限制變為焊盤限制,我們必須找到與常規集成電路設計思想不同的設計方式,它就是新世紀ic設計的主流技術。soc是微電子設計領域的一場革命,從整個系統的角度出發,把智能核、信息處理機制、模型算法、芯片結構、各層次電路直至器件的設計緊密結合起來

13、,在單個或少數幾個芯片上完成整個系統的功能,既我們可以把越來越多的電路設計在同一個芯片中,這里面可能包含有中央處理器(cpu),嵌入式內存(embedded memory)、數字信號處理器(dsp)、數字功能模塊(digital function)、模擬功能模塊(analog function)、模擬數字轉換器(adc)以及各種外圍配置(usb, mpeg)等等,這是新發展的soc技術。soc技術的研究、應用和發展是微電子技術發展的一個新的里程碑。soc能提供更好的性能、更低的功耗、更小的印制板.空間和更低的成本,帶來了電子系統設計與應用的革命性新變革,可廣泛應用于移動電話、硬盤驅動器、個人數

14、字助理和手持電子產品、消費性電子產品等。soc是21世紀電子系統開發應用的新平臺1。1.1.2 ip核ip(intelligence property)是在fpga設計中不可缺少的組成部分,也是自底向上設計方法學的理論基礎。隨著數字系統設計越來越復雜,從頭開始設計系統中的每一個模塊是一件十分困難的事,而且會打打延長設計周期,甚至增加系統的不穩定因素。ip的出現使得設計過程變得十分簡單,用戶甚至只需要將不同的模塊連接起來,就可以實現一個完整的系統。這樣對減少產品的上市時間、賺取早起的利潤十分有利。ip核是指用于產品應用專用的集成電路(asic)或可編程邏輯器件(fpga)的邏輯塊或數據塊。將一些

15、數字電路中常用但比較復雜的功能模塊,如fir濾波器,sdram控制器,pci接口等設計成可修改參數的模塊,讓其他用戶可以直接調用,這樣就大大減輕了工程師的負擔,避免重復勞動。隨著cpdl/fpga的規模越來越大,設計越來越負雜,使用ip核是一個發展趨勢。隨著hdl的發展和標準化,世界上出現了一批利用hdl進行各種集成電路功能模塊專業設計的公司。其具體任務是按常用或專用功能,用hdl來描述集成電路的功能和結構,并經過不同級別的驗證形成不同級別的ip核模塊,供芯片設計人員來裝配或集成選用。(1) 軟ip核通常使用hdl文本形式提交給用戶,它已經過行為級設計優化和功能驗證,但其中不含有任何具體的物理

16、信息。據此,用戶可以綜合出正確的門電路級網表,并可以進行后續結構設計,具有強大的靈活性,可以很容易的借助eda綜合工具將其與其他外部邏輯電路結合成一體,更具不同的半導體工藝,將其設計為具有不同性能的器件。可以商品化的軟ip內核的電路結構總門數一般都在5000門以上。軟ip核又被稱為虛擬器件。(2) 硬ip核是基于某種半導體工藝的物理設計,已有固定的拓撲布局和具體工藝,并已經過工藝驗證,具有保證的性能。其共給 用戶的形式是電路物理結構掩模板圖全套工藝文件,是可以拿來就用的圈套技術。(3) 固ip核的設計深度介于軟ip內核和硬ip內核之間,除了完成硬ip內核所具有的設計外,還完成門電路級綜合和時序

17、仿真設計環節,一般以門電路級網表形式提交用戶使用。常用的ip內核模塊有各種不同的cpu(32/64位結構cisc/risc結構的cpu或8/16位微控制器/單片機,如8051等)、32/64位dsp(如320c30)、dram、sram、eeprom、flash內存、a/d、d/a、mpeg/jpeg、usb、pci、標準接口、網絡單元、編譯器、編碼/解碼器和模擬器件模塊等。豐富的ip內核模塊庫為快速地設計專用集成電路和單片系統以盡快占領市場提供了保證2。1.1.3數據傳送數據傳送有串行傳送和并行傳送兩種方法。 并行傳輸是構成字符的二進制代碼在并行信道上同時傳輸的方式。例如,8單位代碼字符要用

18、8條信道并行同時傳輸,一次傳一個字符,收、發雙方不存在同步問題,速度快,但信道多、投資大,數據傳輸中很少采用3。串行傳輸是構成二進制代碼在一條信道上以位(碼元)為單位,按時間順序逐位傳輸的方式。按位發送,逐位接收,同時還要確認字符,所以要采取同步措施。速度雖慢,但只需一條傳輸信道,投資小,易于實現。為此,串行傳輸已經成為當今外設接口的主流傳輸方式,為此,摩托羅拉公司開發出了同步外設接口(spi),并隨著時間不斷改進,由于其占用線的資源少,且穩定可靠,該總線大量用在與eeprom、adc、flash和顯示驅動器之類的慢速外設器件通信,現在很多單片機等都有spi模塊來連接外圍設備,從而使主機與外設

19、傳輸數據更加方便5。1.2 spi研究的目的及意義spi總線,是一個同步串行接口的數據總線,它具有全雙工、信號線少、協議簡單、傳輸速度快等優點。由于串行總線的信號線比并行總線更少、簡單,越來越多的系統放棄使用并行總線而采用串行總線。在眾多串行總線中,spi 總線相比于i2c總線、can總線、usb等其他常用總線相比有很大優勢,如spi線的數據傳輸速度可達若干mbps, 比i2c總線快很多。spi 總線最典型的應用就是主機與外圍設備(如eeprom、flash ram、a/d 轉換器、led 顯示器、實時時鐘等)之間的通信4。spi接口的擴展有硬件和軟件兩種方法,軟件模擬spi接口方法雖然簡單方

20、便,但是速度受到限制,在高速且日益復雜的數字系統中,這種方法顯然無法滿足系統要求,所以采用硬件的方法實現最為切實可行。這使得與spi有關的軟件就相當簡單,使cpu有更多的時間處理其他事務。fpga(現場可編程門陣列)是在pal、gal、pld 等可編程器件的基礎上進一步發展的產物,具有設計周期短、可重復編程、靈活性強等特點。用fpga 設計的spi 總線具有可擴展性強、便于修改等優點。只要對設計做簡單的改動,即可對spi 總線的數據位數、工作模式等進行擴展,充分發揮了fpga 的優勢。并fpga是可編程并可重復擦寫的,從而具有更大的靈活性,在協議不標準的情況下,可根據外圍設備的不同而靈活的改動

21、spi設計,使設計周期大大降低,并與外圍設備連接更加方便。1.3本文的主要工作及構架1.3.1研究的基本內容(1)熟悉通信及通信接口相關方面的知識,學習并掌握spi通信接口的結構,協議及原理。(2)熟悉verilog語言及其開發環境ise,使用該語言進行數字電路(fpga)設計,慢慢深入verilog語言。(3)設計流程圖,狀態圖。(4)實現仿真。1.3.2技術方案spi 接口作為主機與從機的通訊接口,其主要完成工作為下: spi將從主機接收到的8位的并行數據,轉換為從機所能接收的串行數據,并將該數據根據spi協議送給從機。 主機產生從機所需的時鐘信號sclk以及片選信號cs。 接收從從機傳回

22、的讀信號和串行數據,并將其轉換為并行數據。此方案采用了狀態機來進行設計,本項目的研究主要采用理論分析、邏輯推理、試驗調試等方法。狀態機的特點如下:(1)有限狀態機相對于純硬件數字系統順序方式控制來說更為靈活。(2)狀態機的結構模式簡單。(3)狀態機構成的同步時序邏輯模塊更為優良。(4)狀態機在高速運算和控制方面更有其巨大的優勢。(5)狀態機更為可靠。基于以上特點,用狀態機的方法描述spi通信過程簡單方便并可靠。spi接口的狀態大致轉移描述如下:首先是spi接口處于等待狀態,一旦檢測到發送指令時觸發信號進入發送狀態,在系統指令下檢測到寫信號時進入發送數據狀態,然后一位發送數據,當檢測到讀信號時,

23、進入讀狀態,當檢測到發送接收都完畢時,進入發送接收完畢狀態,再轉向等待狀態。關鍵技術的實現:(1)時序問題將總線控制信號封裝成指令,使用者只需通過發送指令的方式操作,避免了復雜的時序邏輯設計問題。(2)全雙工傳輸方式的設計如果全部使用狀態機的方式完成設計,則可發現其很難完成全雙工即收發獨立模式,則在此過程中可以采用流水線設計方式,使之收與發之間獨立進行,便可完成全雙工傳輸方式的設計。第2章 spi原理分析spi原理主要介紹spi的基本機構,工作模式,傳輸模式以及spi的典型協議,通過對于這些spi的要點介紹,對其工作過程有一個通透了解,從而可以能設計達到原理目的的功能設計以及程序的設計。2.1

24、 spi通信總線spi顧名思義就是串行外圍設備接口。是motorola首先在其mc68hcxx系列處理器上定義的。spi接口主要應用在 eeprom,flash,實時時鐘,ad轉換器,還有數字信號處理器和數字信號解碼器之間。spi,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節約了芯片的管腳,同時為pcb的布局上節省空間,提供方便,正是出于這種簡單易用的特性,現在越來越多的芯片集成了這種通信協議,比如at91rm9200。spi總線系統是一種同步串行外設接口,它可以使mcu與各種外圍設備以串行方式進行通信以交換信息。外圍設置flashram、網絡控制器、lcd顯示驅動

25、器、a/d轉換器和mcu等。spi總線系統可直接與各個廠家生產的多種標準外圍器件直接接口,該接口一般使用4條線:串行時鐘線(sclk)、主機輸入/從機輸出數據線miso、主機輸出/從機輸入數據線mosi和低電平有效的從機選擇線ss(有的spi接口芯片帶有中斷信號線int、有的spi接口芯片沒有主機輸出/從機輸入數據線mosi)7。2.2 spi簡介spi(serial peripheral interface)接口是工業標準的同步串行接口,是一種全雙工、三線通信的系統。由于串行總線的信號線比并行總線更少、更簡單,越來越多的系統放棄使用并行總線而采用串行總線。在眾多串行總線中,spi 總線與i2

26、c總線、can總線、usb等其他常用總線相比有很大優勢。spi 總線最典型的應用就是主機與外圍設備(如eeprom、flash ram、a/d轉換器、led顯示器、實時時鐘等)之間的通信6。spi的通信原理很簡單,它以主從方式工作,這種模式通常有一個主設備和一個或多個從設備,需要至少4根線(單向傳輸時只需要3根)。也是所有基于spi的設備共有的,它們是sdi(數據輸入),sd(數據輸出),sck(時鐘),cs(片選)。它們的定義如下:sck:同步時鐘信號,用來同步主機和從機的數據傳輸,由主機控制輸出,從機在sck 的邊沿接收和發送數據;mosi:主機輸出、從機輸入信號,主機在上升沿(或下降沿)

27、通過該信號線發送數據給從機,從機在下降沿(或上升沿)通過該信號線接收該數據;miso:主機輸入、從機輸出信號,從機在上升沿(或下降沿)通過該信號線發送數據給主機,主機在下降沿(或上升沿)通過該信號線接收該數據;cs:從機片選信號,由主機控制輸出。其中cs是控制芯片是否被選中的,也就是說只有片選信號為預先規定的使能信號時(高電位或低電位),對此芯片的操作才有效。這就允許在同一總線上連接多個spi設備成為可能。接下來就負責通訊的3根線了。通訊是通過數據交換完成的,這里先要知道spi是串行通訊協議,也就是說數據是一位一位的傳輸的。這就是sclk時鐘線存在的原因,由sck提供時鐘脈沖,sdi,sdo則

28、基于此脈沖完成數據傳輸。數據輸出通過 sdo線,數據在時鐘上升沿或下降沿時改變,在緊接著的下降沿或上升沿被讀取。完成一位數據傳輸,輸入也使用同樣原理。這樣,在至少8次時鐘信號的改變(上沿和下沿為一次),就可以完成8位數據的傳輸。 要注意的是,sclk信號線只由主設備控制,從設備不能控制信號線。同樣,在一個基于spi的設備中,至少有一個主控設備。這樣傳輸的特點:這樣的傳輸方式有一個優點,與普通的串行通訊不同,普通的串行通訊一次連續傳送至少8位數據,而spi允許數據一位一位的傳送,甚至允許暫停,因為sclk時鐘線由主控設備控制,當沒有時鐘跳變時,從設備不采集或傳送數據。也就是說,主設備通過對scl

29、k時鐘線的控制可以完成對通訊的控制。spi還是一個數據交換協議:因為spi的數據輸入和輸出線獨立,所以允許同時完成數據的輸入和輸出。不同的spi設備的實現方式不盡相同,主要是數據改變和采集的時間不同,在時鐘信號上沿或下沿采集有不同定義。spi接口的一個缺點:沒有指定的流控制,沒有應答機制確認是否接收到數據11。2.3 spi的工作模式spi有兩種工作模式,分別為主模式和從模式。2.3.1主模式將master的數據傳送給slave,8位數據傳送,傳送完畢,申請中斷,如圖2.1所示:mosimosisclksclk圖 2.1 spi工作主模式2.3.2 從模式在從模式下,每一位數據都是接收到時鐘信

30、號sclk和cs信號之后才發送/接收。此時,sclk信號又主機產生,接收的數據在三岔路口信號作用下依次由mosi引腳寫入移位寄存器,發送的數據在sclk信號作用下由移位寄存器發送到miso引腳。misocssclkmisocssclk圖2.2 spi工作從模式2.4 spi的傳輸模式spi 總線是motorola公司推出的三線同步接口,同步串行3線方式進行通信:一條時鐘線sck,一條數據輸入線mosi,一條數據輸出線miso;用于cpu與各種外圍器件進行全雙工、同步串行通訊。spi主要特點有:可以同時發出和接收串行數據;可以當作主機或從機工作;提供頻率可編程時鐘;發送結束 中斷標志;寫沖突保護

31、;總線競爭保護等。下圖2.3示出spi總線工作的四種方式,其中使用的最為廣泛的是spi0和spi3方式 (實線表示):圖2.3spi 模塊為了和外設進行數據交換,根據外設工作要求,其輸出串行同步時鐘極性和相位可以進行配置,時鐘極性(cpol)對傳輸協議沒有重大的影響。如果 cpol=0,串行同步時鐘的空閑狀態為低電平;如果cpol=1,串行同步時鐘的空閑狀態為高電平。時鐘相位(cpha)能夠配置用于選擇兩種不同的傳輸協議之一進行數據傳輸。如果cpha=0,在串行同步時鐘的第一個跳變沿(上升或下降)數據被采樣;如果cpha=1,在串行同步時鐘的第二個跳變沿(上升或下降)數據被采樣。spi主模塊和

32、與之通信的外設備時鐘相位和極性應該一致。spi總線包括1根串行同步時鐘信號線以及2根數據線。spi模塊為了和外設進行數據交換,根據外設工作要求,其輸出串行同步時鐘極性和相位可以進行配置,時鐘極性(cpol)對傳輸協議沒有重大的影響。如果cpol=0,串行同步時鐘的空閑狀態為低電平;如果cpol=1,串行同步時鐘的空閑狀態為高電平。時鐘相位(cpha)能夠配置用于選擇兩種不同的傳輸協議之一進行數據傳輸。如果cpha=0,在串行同步時鐘的第一個跳變沿(上升或下降)數據被采樣;如果cpha=1,在串行同步時鐘的第二個跳變沿(上升或下降)數據被采樣。spi主模塊和與之通信的外設音時鐘相位和極性應該一致

33、。 (1)spi0模式下的cpol為0,sck的空閑電平為低;cpha為0,數據在串行同步時鐘的第一個跳變沿(由于cpol為低,因此第1個跳變沿只能為上升沿)時數據被采樣。 (2)spi1 模式下的 cpol 也為0,sck的空閑電平為低;但是cpha為1,數據在串行同步時鐘的第二個跳變沿(由于cpol為低,因此第2個跳變沿只能為下降沿)時數據被采樣。 (3)spi2模式下的cpol為1,sck的空閑電平為高;cpha為0,數據在串行同步時鐘的第1個跳變沿(由于cpol為高,因此第1個跳變沿只能為下降沿)時數據被采樣。 (4)spi3 模式下的cpol為1,sck的空閑電平為高;cpha為1,

34、數據在串行同步時鐘的第2個跳變沿(由于cpol為高,因此第1個跳變沿只能為上升沿)時數據被采樣。 在上述 4 種模式中,使用的最為廣泛的是 spi0 和 spi3 方式。由于每一種模式都與其他三種不兼容,因此為了完成主、從設備間的通訊,主、從設備的 cpol 和 cpha 必須有相同的設置。讀者需要注意的是:如果主設備/從設備在 sck上升沿發送數據,則從設備/主設備最好在下降沿采樣數據;如果主設備/從設備在sck下降沿發送數據,則從設備/主設備最好在 sck上升沿采樣數據8。2.5 spi協議 spi是一個環形總線結構,由ss(cs)、sck、sdi、sdo構成,其時序其實很簡單,主要是在s

35、ck的控制下,兩個雙向移位寄存器進行數據交換。假設下面的8位寄存器裝的是待發送的數據10101010,上升沿發送、下降沿接收、高位先發送。那么第一個上升沿來的時候 數據將會是sdo=1;寄存器=0101010x。下降沿到來的時候,sdi上的電平將所存到寄存器中去,那么這時寄存器=0101010sdi,這樣在 8個時鐘脈沖以后,兩個寄存器的內容互相交換一次。這樣就完成里一個spi時序。舉例:假設主機和從機初始化就緒:并且主機的sbuff=0xaa,從機的sbuff=0x55,下面將分步對spi的8個時鐘周期的數據情況演示一遍:假設上升沿發送數據。這樣就完成了兩個寄存器8位的交換,上面的上表示上升

36、沿、下表示下降沿,sdi、sdo相對于主機而言的。其中ss引腳作為主機的時候,從機可以把它拉底被動選為從機,作為從機的是時候,可以作為片選腳用。根據以上分析,一個完整的傳送周期是16位,即兩個字節,因為,首先主機要發送命令過去,然后從機根據主機的命令準備數據,主機在下一個8位時鐘周期才把數據讀回來9。表2.1脈沖主機sbuff從機sbuffsdisdo01010101001010101001上0101010x1010101x011下0101010010101011012上1010100x0101011x102下1010100101010110103上0101001x1010110x013下01

37、01001010101101014上1010010x0101101x104下1010010101011010105上0100101x1011010x015下0100101010110101016上1001010x0110101x106下1001010101101010107上0010101x1101010x017下0010101011010101018上0101010x1010101x10第3章方案論證對于spi接口的設計,我們可以分為兩大類,分別為利用單片機如51系列單片機實現和利用fpga等可編程邏輯器件編程實現,下面將分別介紹兩種方法的方法。3.1 用fpga來設計spi通過對spi的結

38、構的了解可以設計一個系統框架,按照框架完成輸入輸出的功能。一個典型的spi系統包括一個主mpu和一個或者多個從外圍器件。單片機通過spi接口模塊與spi相連,當單片機以主機模式運行的時候,就可以與系統中的從機實現通信,而當它處于從機模式工作時,就能與寧外一個主機進行數據通信。但在同一個時間內,系統中只能擁有一個主機,否側會造成系統的工作異常。一個典型的用fpga設計的系統框架如圖3.1所示11:微處理器微處理器接口spi總線接口adr_i1:0dat_i7:0dat_o7:0int_owe_ics_omiso_imosi_osck_orst_i圖3.13.2 用51系列單片機實現spi對于mc

39、s51系列單片機來說,由于它不帶有spi串行總線接口,我們可以使用軟件來模擬spi的操作,包括串行時鐘、數據輸入以及數據輸出。不同的串行接口外圍芯片擁有不同的時鐘時序。對于在sck的上升沿輸入(接收)數據并且在下降沿輸出(發送)數據的器件,大都應在初始狀態將其串行時鐘輸出口p1.1設置為1,而在允許接口后再將p1.1置為0。這樣,mcu在輸出1位sck時鐘的同時,可以將接口芯片串行左移,從而輸出1位數據到mcs51單片機的p1.3口(模擬mcu的miso線),之后再將置p1.1為1,使mcs51系列單片機從p1.0(模擬mcu的mosi線)輸出1位數據至串行接口芯片。這樣就完成了1位數據輸入輸

40、出的模擬。此后再置p1.1為0,模擬下1位數據的輸入輸出,依此完成8次循環,即可完成1次通過spi總線傳輸8位數據的操作。對于在sck的下降沿輸入數據和上升沿輸出數據的器件,則應取串行時鐘輸出的初始狀態為0,即在接口芯片允許時,先置p1.1為1,以便外圍接口芯片輸出1位數據(mcu接收1位數據),之后再置時鐘為0,使外圍接口芯片接收1位數據(mcu發送1位數據),從而完成1位數據的傳送。圖3.2所示為mcs51系列單片機與存儲器x25f008(e2prom)的硬件連接圖;外圍設備mcs 511.01.11.31.2圖3.2p1.0模擬mcu的數據輸出端(mosi),p1.1模擬spi的sck輸

41、出端,p1.2模擬spi的從機選擇端,p1.3模擬spi的數據輸入端(miso)。以上便是兩種實現spi的方法,在實際應用中,只要高級點的單片機,都自帶spi接口,并且如dsp等也集成了spi接口,大多芯片都趨向于用硬件而非軟件來實現。這是因為軟件模擬spi接口方法雖然簡單方便,但是速度受到限制,在高速且日益復雜的數字系統中,這種方法顯然無法滿足系統要求,所以采用硬件的方法實現最為切實可行。這樣使得與spi有關的軟件就相當簡單,使cpu有更多的時間處理其他事務。在fpga不斷地完善改善完美并且功能強大的今天,用硬件實現已經成為主流,在大型系統用硬件實現更加穩定。同時fpga也有自身的優點。在外

42、圍器件有改變時,由于fpga可以重復擦寫的優點,從而在外圍器件有些許改變之時,可以同時稍微改變可編程的程序,因而可編程又有靈活性大的特點。因此,本次便采用fpga來設計。第4章spi的電路設計電路設計主要是針對系統功能的設計,以及各部分功能具體實現方案,比如管腳說明由此得到本次spi設計的流程圖,由流程圖便可以編寫出我們所需要的程序。4.1管腳說明表4.1 spi設計管腳端口名稱數據位寬信號流向功能描述int_o1output中斷輸出,確保已傳數據被讀取rst_i1input異步復位we_i1input寫使能端,寫數據dat_i8input輸入數據或指令adr_i2input寫指令數據選擇sc

43、k_o1outputspi時鐘輸出mosi_o1output數據串行輸出miso_i1input數據串行輸入cs_o1output選片dat_o8output輸入數據并行給微處理器其中,需要強掉的是,adr_i端輸入不同,便使系統處于寫數據狀態還是寫指令狀態,指令是寫給spi設計的控制寄存器,以使spi具有不同的功能12。4.2 spi系統中所用的寄存器本次設計中spi用到四種寄存器,包括spcr(spi控制寄存器)、sper(spi擴展寄存器)、treg(spi數據傳輸/接收寄存器)其功能如下所示: (1)控制寄存器本次設計時參照mc68hc11a8單片機的spi結構進行設計,并進行了一些改

44、進,所以本次設計的控制寄存器的控制位與mc68hc11a8單片機的控制位大致相似,同時進行了一些擴展和不同的功能,擴展在擴展寄存器中再做介紹,其控制寄存器的控制位如下表4.2所示:表4.2 spi設計的控制寄存器spiespemsbmstcpolcphspr1spr0 其各功能如下: ·spie :當此為被置位為1時,則中斷允許,即允許中斷,當為0時,禁止中斷。 0:禁止中斷 1:允許中斷 ·spe :當此位被置位為1時,則系統運行,當置位為0時,系統不運行。 0:系統運行允許 1:系統允許禁止 ·msb:此為為在傳輸時是最高位線發送還是最低位先發送。當為1時,是

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

46、其組合方式為espr = spre, espr,四位此而控制16種傳輸速率,此在速率控制中詳細介紹。(3)狀態寄存器狀態寄存器本次設計中只去了一位spi_i中斷位,其與spie允許情況下允許中斷,中斷位傳給int_o從而保證單片機完成讀取數據后在重新傳輸數據,從而保證每位數據傳輸完畢,保證數據讀取后才能傳送下一位數據13。4.3 spi速率控制速率控制為控制寄存器的低兩位和擴展寄存器的低兩位共同控制的,本次設計通過此四位的控制一共可以支持12種速率,其為系統時鐘的n次分頻。本次將每一個控制賦值給clkcnt寄存器,并起每一個時鐘減一,當為0是從而影響控制位狀態機ena = |clkcnt,當e

47、na為1時則執行狀態機,達到分頻目的其詳細控制如表4.3下:表4.3 spi的速率控制spreesprclkcnt分頻000002分頻000114分頻001028分頻0011316分頻0100432分頻0101564分頻01106128分頻01117256分頻10008512分頻100191024分頻1010a2048分頻1011b4096分頻4.4 spi控制狀態機verilog hdl 是一種硬件描述語言,他可以用來進行各種級別的邏輯設計,可以用來進行數字邏輯系統的仿真驗證、時序分析和邏輯綜合等, 應用十分廣泛。本文使用verilog設計spi 接口模塊。分析spi 接口模塊的功能之后,本

48、文使用有限狀態機實現spi接口模塊的傳輸控制。spi控制狀態機是本次設計的核心部分,其實整個設計的可以說是大腦,控制著整個程序的執行過程和完成設計實現功能。控制狀態機主要用于片選信號cs 的選擇,和輸出時鐘sclk的產生,以及數據載入和輸出等。它控制各個模塊的狀態, 然后根據相應的狀態做出相應的操作。在狀態機運行之前及數據傳輸之前,所作的工作便是初始化,即必須先確定允許中斷,允許系統運行,設置先發送的數據位,設置極性相位和速率,即設置控制寄存器使之系統進入正常運行狀態, 首先設置spe位為1.,因為只有其為1時系統才運行,當達到adr1:0=10時,便是發送接收數據的命令。此時進入狀態機的空閑

49、狀態2'b00。在空閑狀態, 所作的工作是設置空閑的時的極性和相位,完成后便進入發送準備載入發送數據階段2' 01 。此時為達到控制速率,使用ena = i clkcnt允許位,只有當其為1時,才執行此狀態的程序,否則保持,在此狀態中,所作的工作是反向sck 信號,載入數據,選中信號片選信號cs 端,變開始發送接收數據,同時此時的第位發送,便進入2'b10狀態。此狀態時為配置sck 信號, 使sclk信號輸出脈沖與發送數據脈沖匹配,從而可在sck的上升沿或下降沿鎖存數據并發送數據。完成后進入到接受數據狀態2'bll。此時為發送數據的核心狀態, 其數據接收傳輸寄存

50、器移位完成數據的接收,在接收的同時也發送了一位數據,當發送完八次后變進入產生個中斷位, 當單片機讀取后變從新設置spe為0并消除中斷標志位并活零后再次置1變開始下一個八位傳輸接收。少于八次則保留到當前狀態。其狀態圖如下圖4.1所示14:00100111ena=1ena=1ena=1&bcnt=0圖4.14.5 spi程序設計流程圖通過以上的分析,首先是設置控制寄存器以及設置系統允許,當spe為1時系統運行,adr_i為收發命令時,滿足條件便開始傳送數據,傳送數據最重要的是sck信號產生以及收發信號的完成,還有收發信信號與sck信號的匹配。考慮到這些,其流程圖如下圖4.2所示15:開始判

51、斷系統允許位spe=1adr_i=2'b10&!spi_i&we_i&rst_ispe & (|clkcnt & |state)=0空閑狀態輸入數據,sck反向,選片信號成立spe & (|clkcnt & |state)=0sck反向,匹配sck信號spe & (|clkcnt & |state)=0接收發送數據,sck反向,發送八位完畢產生中斷是否是否否是否是圖4.2 spi設計流程圖第5章仿真及驗證5.1仿真分析綜上可以編寫出spi程序,其程序見附錄a驗證平臺。(1)二分頻時發送接收數據當設置為開始時adr_

52、i為寫指令,即adr_i=00時,寫指令到控制寄存器,adr_i=11時,寫指令到擴展寄存器,以下設置為中斷允許,系統允許,為主模式,極性為0,即初始狀態空閑狀態為低電平,相位為1,即為第一個跳變即第一個上升沿采樣數據,設置速率控制位為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時鐘時輸出一位

53、數據,與實際相符,且sck_o時鐘剛好為二分頻,輸入數據位8hb5,寫為二進制為10110101,看mosi_o在每個sck_o時鐘為單位看數據輸出為10110101,與輸入數據保持一致,在第一個數據開始發送或接收時,可以看到選片信號為1成立,inta_o在第八個時鐘為1,產生中斷輸出,由結果與實際設計預計一致。(2)四分頻時發送接收數據上只是一個功能測試,先測試是否能選擇頻率,現選擇頻率為四分頻,看結果是否一致,于是設置控制寄存器為8hf1,擴展寄存器為8h00,其仿真結果如圖 5.4所示:圖 5.3 spi testbench設置圖5.4 spi的仿真波形可以看到其結果與預期一致,sck_

54、o為系統時鐘的四分頻,且輸出信號也是隨著一個sck_o時鐘變化而變化,其mosi_o與sck_o變化一致。第6章 結論與展望6.1結論在此設計中,不僅對ise軟件使用已經非常熟悉,并且對verilog語言設計也更加熟悉了,從而對以后的學習打下了非常好的基礎。同時對于spi已經有著非常通透的了解,并且對i2c和uart等串口也有一定的了解,對于仿真分析也掌握了一定的技巧。不僅掌握了fpga設計spi設計,而且對單片機實現也有了一個大致的了解。在今后的設計中,在參考別人設計的同時,不能完全照搬別人的東西,同時要結合自己的思考,用簡單有效的方法來實現設計,并結合原理來思考別人是不是正確。在本次發送接收數據的有一個程序不僅繁瑣,而且發送接收不能同時進行,顯然是錯誤的程序,并且本次設計另外一個程序在一些端口完全沒什么用,也輸入進去,顯然是在抄襲的結果。所以,無論在做任何設計,一定要緊跟定義,功能實現與否設計,而不是僅僅是看懂硬搬硬套。6.2不足之處及未來展望本次設計只做了一個簡化的spi接口,很多spi的重要

溫馨提示

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

評論

0/150

提交評論