串行外圍設(shè)備接口畢業(yè)
《串行外圍設(shè)備接口畢業(yè)》由會員分享,可在線閱讀,更多相關(guān)《串行外圍設(shè)備接口畢業(yè)(46頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、目錄i摘摘 要要SPI 是英語 Serial Peripheral interface 的縮寫,顧名思義就是串行外圍設(shè)備接口。SPI 是一種高速的、全雙工、同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時為 PCB 的布局上節(jié)省空間。SPI Flash主要用于代碼存儲或者其他非易失性存儲應(yīng)用。本設(shè)計目的在于完成一個 SPI Flash Controller 的設(shè)計,相當于在上層的Driver 和 Flash 器件之間建立起一座連接的橋梁??刂破鹘邮丈蠈优渲玫牟⑿袛?shù)據(jù)和控制信號,經(jīng)過控制器處理之后以串行的方式發(fā)送至 Flash 器件以完成對 Flash 的相應(yīng)的讀寫等操作。
2、本設(shè)計采用 Verilog HDL 語言,在 Vi 編輯器中完成設(shè)計,并用 EDA tool 對設(shè)計進行了編譯、模擬、仿真和調(diào)試。最后又在 FPGA 上對結(jié)果進行了實踐證明。完成上述全部工作之后,再從功能、面積優(yōu)化和成本縮減等方面對設(shè)計進行分析總結(jié)本次畢業(yè)設(shè)計中獲得的寶貴經(jīng)驗。關(guān)鍵詞關(guān)鍵詞: 閃存閃存 Verilog HDL 串行串行 并行并行 FPGA目錄iiABSTRACTSPI (Serial Peripheral interface) is a serial periphery slave interface. SPI is a fast, duplex and synchronism
3、 communication bus. And there are only 4 pins on the chip of SPI. It is so convenient for wire layings of PCB. SPI Flash is ideal for code download as well as storing nonvolatile voice, text and data. In this design, I have finished a SPI Flash Controller IP Core. It connects top driver and flash de
4、vice just like a bridge. The controller receive the parallel data and control signal configured by top, and then the parallel data will be processed, and transmitted to the flash by SPI interface as serial signal in order to execute the read or write operation to the flash. The program actualizes in
5、 Verilog HDL, designed in VI under linux. EDA tools are used to simulate, synthesize and debug such as Debussy. After the designs RTL code and simulation, this design made up a system with other IP on a FPGA platform in order to check the design. After all the work above finished, this paper analyze
6、 the function, area and cost of the SPI flash controller, summarize the experience of the graduation design.Keywords: Flash Verilog SERIAL COLLATERAL FPGA畢業(yè)設(shè)計(論文)原創(chuàng)性聲明和使用授權(quán)說明畢業(yè)設(shè)計(論文)原創(chuàng)性聲明和使用授權(quán)說明原創(chuàng)性聲明原創(chuàng)性聲明本人鄭重承諾:所呈交的畢業(yè)設(shè)計(論文) ,是我個人在指導(dǎo)教師的指導(dǎo)下進行的研究工作及取得的成果。盡我所知,除文中特別加以標注和致謝的地方外,不包含其他人或組織已經(jīng)發(fā)表或公布過的研究成果,也不包
7、含我為獲得 及其它教育機構(gòu)的學(xué)位或?qū)W歷而使用過的材料。對本研究提供過幫助和做出過貢獻的個人或集體,均已在文中作了明確的說明并表示了謝意。作 者 簽 名: 日 期: 指導(dǎo)教師簽名: 日期: 使用授權(quán)說明使用授權(quán)說明本人完全了解安陽工學(xué)院關(guān)于收集、保存、使用畢業(yè)設(shè)計(論文)的規(guī)定,即:按照學(xué)校要求提交畢業(yè)設(shè)計(論文)的印刷本和電子版本;學(xué)校有權(quán)保存畢業(yè)設(shè)計(論文)的印刷本和電子版,并提供目錄檢索與閱覽服務(wù);學(xué)校可以采用影印、縮印、數(shù)字化或其它復(fù)制手段保存論文;在不以贏利為目的前提下,學(xué)??梢怨颊撐牡牟糠只蛉績?nèi)容。作者簽名: 日 期: 目錄iv目目 錄錄第一章第一章 引引 言言.1第二章第二章
8、SPI FLASH CONTROLLER 簡介簡介.32.1 SPI 簡介32.2 SPI FLASH簡介5第三章第三章 SPI FLASH CONTROLLER 設(shè)計環(huán)境設(shè)計環(huán)境.73.1 VERILOG HDL 語言簡介73.2 LINUX系統(tǒng)下的設(shè)計開發(fā)環(huán)境簡介83.3 數(shù)字電路設(shè)計方法 93.4 VERILOG HDL 的設(shè)計流程93.5 編譯、模擬仿真 EDA TOOL簡介103.6 ISE 軟件簡介 103.7 XILINX SPARTAN-3 系列器件介紹113.8 HE REGISTER BUS 協(xié)議簡介12第四章第四章 SPI FLASH CONTROLLER 設(shè)計與實現(xiàn)設(shè)計
9、與實現(xiàn).134.1 SPI FLASH CONTROLLER的設(shè)計流程 134.2 設(shè)計規(guī)格 144.2.1 設(shè)計要求.144.2.2 I/O 端口.144.3 功能模塊劃分 164.4 功能模塊設(shè)計 174.4.1 HE register 總線接口.174.4.2 發(fā)送順序控制邏輯.184.4.3 串并轉(zhuǎn)換控制邏輯.214.4.4 并串轉(zhuǎn)換控制邏輯.224.4.5 數(shù)據(jù)狀態(tài)信息選擇邏輯.244.4.6 分頻模塊.244.4.7 片選邏輯模塊.254.4.8 中斷信號產(chǎn)生模塊.25第五章第五章 SPI FLASH CONTROLLER 測試與驗證測試與驗證.275.1 測試環(huán)境 275.2 測
10、試文件架構(gòu) 285.3 測試功能點 285.4 測試流程 305.5 FPGA 驗證315.5.1 C_CODE 的仿真.315.5.2 FPGA 硬件測試 .315.6 驗證結(jié)果 32第六章第六章 總總 結(jié)結(jié).35致致 謝謝.37參考文獻參考文獻.39第一章 引言1第一章 引 言SPI 是英語 Serial Peripheral Interface 的縮寫,就是串行外圍設(shè)備接口。SPI 接口主要應(yīng)用在 EEPROM,F(xiàn)LASH,實時時鐘,AD 轉(zhuǎn)換器,還有數(shù)字信號處理器和數(shù)字信號解碼器之間。SPI 是一種高速的、全雙工、同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時為
11、 PCB 的布局上節(jié)省空間,提供方便,正是出于這種簡單易用的特性,現(xiàn)在越來越多的芯片集成了這種通信協(xié)議。閃速存儲器(Flash Memory)是 Intel 公司于 1988 年推出的一種新型非易失性大容量存儲器。它因良好的性能而深受廣大用戶和半導(dǎo)體芯片制造商的青睞。Flash Memory 以其集成度高、成本低、使用方便等優(yōu)點,在眾多領(lǐng)域中獲得了廣泛應(yīng)用。在現(xiàn)代數(shù)字電路設(shè)計中經(jīng)常需要保存大量數(shù)據(jù),而 Flash 存儲速度快、體積小、功耗低且價格低廉,可在線電擦寫,信息在掉電后不會丟失,因此成為設(shè)計人員的首選。在目前所有的非易失性存儲器(PROM、EPROM、EEPROM 和 F lash)中
12、唯有 Flash 存儲器幾乎擁有現(xiàn)今講究個性化的用戶所需的所有特點, 且成本已低于 PROM/EPROM,因而已為新一代嵌入式應(yīng)用(如數(shù)字相機和 MP3 播放機)的首選存儲器。Flash 是一種具有電可擦除的可編程 ROM,可以分為兩大類:并行 Flash 和串行 Flash。并行 Flash 存儲量大,速度快;而串行 Flash 存儲量相對較小,但體積小,連線簡單,可減小電路面積,節(jié)約成本,二者各有其優(yōu)缺點,可依據(jù)實際需要選取。隨著并行總線的數(shù)據(jù)傳輸率越來越高,傳統(tǒng)的并行接口逐漸暴露出一些設(shè)計上的缺陷,比如并行線路的信號干擾問題,而串行技術(shù)采有極少的數(shù)據(jù)線,雖然傳輸速率受到限制,但在傳輸數(shù)據(jù)
13、時幾乎不會因為受到干擾而出錯。SPI Flash 就是這樣一種采用串行接口的 Flash 存儲器件。本課題通過對最基本的 Flash 器件和 SPI 總線協(xié)議的研究和實現(xiàn),設(shè)計了SPI Flash Controller, 以此來熟悉 IP 核的設(shè)計和驗證。SPI IP 接口設(shè)計2第二章 SPI Flash Controller 簡介3第二章 SPI Flash Controller 簡介SPI Flash Controller 即為串行外設(shè)接口 flash 存儲器控制器。SPI Flash 以其優(yōu)良的特性已被廣泛應(yīng)用于很多設(shè)計之中。本課題設(shè)計開發(fā)一款 SPI Flash 控制器。2.1 SPI
14、 簡介SPISerial Peripheral Interface(串行外圍設(shè)備接口)是 Motorola 首先在其MC68HCXX 系列處理器上定義的,正因為引言中所述的諸多優(yōu)點,現(xiàn)在越來越多的芯片集成了這種通信協(xié)議,比如 AT91RM9200.處 理外 設(shè)MOSIMISOSCLKI/OGNDSISOCLKCSGND圖 2.1 基本的 SPI 接口SPI 總線系統(tǒng)是一種同步串行外設(shè)接口,它可以使 MCU 與各種外圍設(shè)備以串行方式進行通信以交換信息。外圍設(shè)置 FLASHRAM、網(wǎng)絡(luò)控制器、LCD 顯示驅(qū)動器、A/D 轉(zhuǎn)換器和 MCU 等。SPI 總線系統(tǒng)可直接與各個廠家生產(chǎn)的多種標準外圍器件直
15、接接口,SPI 接口一般使用 4 條線:串行時鐘線(SCK) 、主機輸入/從機輸出數(shù)據(jù)線 MISO、主機輸出/從機輸入數(shù)據(jù)線 MOST 和低電平有效的從機選擇線 SS(有的 SPI 接口芯片帶有中斷信號線 INT 或/INT、有的 SPI 接口芯片沒有主機輸出/從機輸入數(shù)據(jù)線 MOSI)。SPI 的通信原理很簡單,它以主從方式工作。這種模式通常有一個主設(shè)備和一個或多個從設(shè)備,需要至少 4 根線,事實上 3 根也可以(單向傳輸時或者使用SPI IP 接口設(shè)計4雙工 I/O PIN ) 。所有基于 SPI 的設(shè)備共有的 PIN 腳,它們是 SDI(數(shù)據(jù)輸入) ,SDO(數(shù)據(jù)輸出) ,SCLK(時鐘
16、) ,CS(片選) 。(1)SDO 主設(shè)備數(shù)據(jù)輸出,從設(shè)備數(shù)據(jù)輸入(2)SDI 主設(shè)備數(shù)據(jù)輸入,從設(shè)備數(shù)據(jù)輸出(3)SCLK 時鐘信號,由主設(shè)備產(chǎn)生(4)CS 從設(shè)備使能信號,由主設(shè)備控制其中 CS 是控制芯片是否工作,也就是說只有片選信號為預(yù)先規(guī)定的使能信號時(高電位或低電位) ,對此芯片的操作才有效,否則會被忽略。這就允許在同一主機上連接多個 SPI 設(shè)備。其余的 3 根線是負責通信的。通訊是通過數(shù)據(jù)交換完成的,SPI 是串行通訊協(xié)議,也就是說數(shù)據(jù)是一位一位的傳輸?shù)摹_@就是 SCLK 時鐘線存在的原因,由SCLK 提供時鐘脈沖,SDI、SDO 則基于此脈沖完成數(shù)據(jù)傳輸。數(shù)據(jù)輸出通過 SDO
17、 線,數(shù)據(jù)在時鐘下降沿時改變,在緊接著的上升沿被讀取。完成一位數(shù)據(jù)傳輸,輸入也使用同樣原理。這樣,在至少 8 次時鐘信號的改變(上沿和下沿為一次) ,就可以完成 8 位數(shù)據(jù)的傳輸。 要注意的是,SCLK 信號線只由主設(shè)備控制,從設(shè)備不能控制信號線。同樣,在一個基于 SPI 的設(shè)備中,至少有一個主控設(shè)備。這樣的傳輸方式有一個優(yōu)點:與普通的串行通訊不同,普通的串行通訊一次連續(xù)傳送至少 8 位數(shù)據(jù),而 SPI 允許數(shù)據(jù)一位一位的傳送,甚至允許暫停,因為 SCLK 時鐘線由主控設(shè)備控制,當沒有時鐘跳變時從設(shè)備不采集或傳送數(shù)據(jù)。也就是說主設(shè)備通過對 SCLK 時鐘線的控制可以完成對通訊的控制。SPI 還
18、是一個數(shù)據(jù)交換協(xié)議:因為 SPI 的數(shù)據(jù)輸入和輸出線獨立,所以允許同時完成數(shù)據(jù)的輸入和輸出。不同的 SPI 設(shè)備的實現(xiàn)方式不盡相同,主要是數(shù)據(jù)改變和采集的時間不同,在時鐘信號上沿或下沿采集有不同定義。應(yīng)該注意的是 SPI 主模塊和與之通信的外設(shè)備時鐘相位和極性應(yīng)該一致。這句話有 2 層意思:其一,主設(shè)備 SPI 時鐘和極性的配置應(yīng)該由外設(shè)來決定;其二,二者的配置應(yīng)該保持一致,即主設(shè)備的SDO 同從設(shè)備的SDO 配置一致,主設(shè)備的 SDI 同從設(shè)備的 SDI 配置一致。因為主從設(shè)備是在SCLK 的控制下同時發(fā)送和接收數(shù)據(jù),并通過 2 個雙向移位寄存器來交換數(shù)據(jù)在點對點的通信中。SPI 接口不需要
19、進行尋址操作且為全雙工通信,顯得簡單高效。在多個從設(shè)備的系統(tǒng)中,每個從設(shè)備需要獨立的使能信號,硬件上比 I2C第二章 SPI Flash Controller 簡介5系統(tǒng)要稍微復(fù)雜一些。最后,SPI 接口的一個缺點:沒有指定的流控制,沒有應(yīng)答機制確認是否接收到數(shù)據(jù)。2.2 SPI Flash 簡介本次所設(shè)計控制器針對的是華邦公司的 W25X20(2Mbit) 、W25X40(4M-bit)、W25X80(8M-bit)系列,該系列為只有有限的空間、pin 的串行存儲器。W25X20/40/80 的 SPI 接口主要由 4 個引腳構(gòu)成:SL_SPI_CLK、SPI_DO、SL_SPI_DI 及
20、SPI_CS_B,其中 SL_SPI_CLK 是整個SPI 總線的公用時鐘,SPI_DO、SL_SPI_DI 作為主機,從機的輸入輸出的標志。SPI_DO 是主機的輸出,從機的輸入,SL_SPI_DI 是主機的輸入,從機的輸出。SPI_CS_B 是從機的標志管腳,在互相通信的兩個 SPI 總線的器件,SPI_CS_B 管腳的電平低的是從機,相反 SPI_CS_B 管腳的電平高的是主機。在一個 SPI 通信系統(tǒng)中必須有主機。SPI 總線可以配置成單主單從,單主多從,互為主從。SPI IP 接口設(shè)計6第三章 SPI Flash Controller 設(shè)計環(huán)境7第三章 SPI Flash Contr
21、oller 設(shè)計環(huán)境3.1 Verilog HDL 語言簡介Verilog HDL 是在 1983 年由 Gateway Design Automation(GDA)公司的Phil Moorby 首創(chuàng)的。1989 年 Cadence Design Systems 公司收購了 GDA 公司,并于 1990 年公開 Verilog HDL 語言, 極大地推動了 Verilog HDL 的發(fā)展?;赩erilog HDL 的優(yōu)越性 IEEE 于 1995 年制定了 Verilog HDL 的 IEEE 標準,即 Verilog HDL13641995。Verilog HDL 具有以下特點:能形式化地
22、抽象表示電路的結(jié)構(gòu)和行為;借用高級語言的結(jié)構(gòu)和語句(如循環(huán)語言,賦值語言等) ,簡化了電路行為的描述;能在多個層次上對所設(shè)計的電路進行描述;內(nèi)置了基本的邏輯門,更接近開關(guān)級電路;可以使用用戶自定義原語 UDP,使得設(shè)計更加靈活,等等。與 VHDL 語言相比,Verilog HDL 和 VHDL 作為描述硬件電路設(shè)計的語言,其共同的特點在于:能形式化地抽象電路的行為和結(jié)構(gòu),支持邏輯設(shè)計中層次與范圍的描述,可借用高級語言的精巧結(jié)構(gòu)來簡化電路行為的描述,具有電路仿真與驗證機制以保證設(shè)計的正確性,支持電路描述由高層到底層的綜合轉(zhuǎn)換,硬件描述與實現(xiàn)工藝無關(guān)(有關(guān)工藝參數(shù)可通過語言提供的屬性包括進去) ,
23、易于理解和設(shè)計重用。 但是 Verilog HDL 和 VHDL 又各有其自己的特點。與 VHDL 相比 Verilog HDL 最大的特點在于它是一種非常容易掌握的硬件描述語言,而且和 C 語言有許多相似之處,并繼承和借鑒了 C 語言的多種操作符和語法結(jié)構(gòu),而且 Verilog HDL 在開關(guān)級電路的建模能力比 VHDL 要強。而與 Verilog HDL 相比,VHDL則顯得嚴謹?shù)亩啵容^抽象,所以掌握起來比較困難,還有 VHDL 在系統(tǒng)級建模方面要比 Verilog HDL 強一些。這兩種語言各有其特點,而且都在不斷完善。2001 年公布的 Verilog IEEE 13642001 標
24、準,使得 Verilog 語言在綜合和仿真性能方面有了大幅度的提高。學(xué)習(xí)掌握 Verilog HDL 建模、仿真和綜合技術(shù)不僅可以對數(shù)字電路設(shè)計技術(shù)有更SPI IP 接口設(shè)計8進一步的了解,而且為以后學(xué)習(xí)高級的行為綜合和物理綜合打下堅實的基礎(chǔ)。3.2 Linux 系統(tǒng)下的設(shè)計開發(fā)環(huán)境簡介Linux 是一套免費使用和自由傳播的類 Unix 操作系統(tǒng),它主要用于基于Intel x86 系列 CPU 的計算機上。這個系統(tǒng)是由世界各地的成千上萬的程序員設(shè)計和實現(xiàn)的。其目的是建立不受任何商品化軟件的版權(quán)制約的、全世界都能自由使用的 Unix 兼容產(chǎn)品。Linux 以它的高效性和靈活性著稱。它能夠在PC
25、計算機上實現(xiàn)全部的Unix 特性,具有多任務(wù)、多用戶的能力。 Linux 是在 GNU 公共許可權(quán)限下免費獲得的,是一個符合 POSIX 標準的操作系統(tǒng)。 Linux 操作系統(tǒng)軟件包不僅包括完整的 Linux 操作系統(tǒng),而且還包括了文本編輯器、高級語言編譯器等應(yīng)用軟件。它還包括帶有多個窗口管理器的X-Window 圖形用戶界面,如同我們使用 Windows NT 一樣,允許我們使用窗口、圖標和菜單對系統(tǒng)進行操作。VI 編輯器是 Linux 和 Unix 上最基本的文本編輯器,工作在字符模式下。由于不需要圖形界面,使它成了效率很高的文本編輯器。盡管在Linux 上也有很多圖形界面的編輯器可用,但
26、 VI 在系統(tǒng)和服務(wù)器管理中的 功能是那些圖形編輯器所無法比擬的。VI 編輯器是 Visual interface 的簡稱,通常稱之為 VI。它在 Linux 上的地位就像 Edit 程序在 DOS 上一樣。它可以執(zhí)行輸出、刪除、查找、替換、塊操作等眾多文本操作,而且用戶可以根據(jù)自己的需要對其進行定制,這是其他編輯程序所沒有的。 VI 編輯器并不是一個排版程序,它不像Word 或 WPS那樣可以對字體、格式、段落 等其他屬性進行編排,它只是一個文本編輯程序。沒有菜單,只有命令 而且命令繁多。 Vi 有 3 種基本工作模式:命令行模式、文本輸入模式和末行模式。VIM 是 VI 的加強版,比 vi
27、 更容易使用。 vi 的命令幾乎全部都可以在vim 上使用。要在 Linux 下編寫文本或語言程序,您首先必須選擇一種文本編輯器??梢赃x擇使用 vim 編輯器,使用它的好處是幾乎每一個版本的Linux都會有它的存在。然而它是在文本模式下使用,需要記憶一些基本的命令操作方式。 第三章 SPI Flash Controller 設(shè)計環(huán)境93.3 數(shù)字電路設(shè)計方法數(shù)字電路設(shè)計中主要有兩種基本的設(shè)計方法:自底向上和自頂向下設(shè)計方法。在自頂向下的設(shè)計方法中,我們首先定義頂層模塊,然后分析實現(xiàn)頂層模塊功能需要那些必要的子模塊,然后按照相同的方法對子模塊進行分解,知道無法進一步細分的最底層模塊為止。在自底向
28、上的設(shè)計方法中,我們首先對現(xiàn)有的功能模塊進行分析,然后利用這些模塊去搭建較大的功能模塊,如此繼續(xù)直至頂層的功能模塊。在實際的設(shè)計中,通常是兩種方法混合使用的。設(shè)計者首先根據(jù)電路體系接口定義頂層模塊。邏輯設(shè)計者確定如何根據(jù)功能將整個設(shè)計劃分為子模塊;同時,電路設(shè)計者對底層功能快進行優(yōu)化設(shè)計,并進一步使用這些底層模塊來搭建其高層模塊。兩者的工作按相反的方向獨立的進行,直至在某一中間點會合。這是,電路設(shè)計者已經(jīng)使用開關(guān)級原語創(chuàng)建了一個底層功能塊庫,而邏輯設(shè)計設(shè)也通過使用自頂向下的方法將整個設(shè)計分解為由庫單元構(gòu)成的結(jié)構(gòu)描述。3.4 Verilog HDL 的設(shè)計流程在用 Verilog HDL 進行硬
29、件設(shè)計的過程中,開發(fā)人員通常是將設(shè)計分層三個層次進行設(shè)計。第一層次是行為描述。就是用數(shù)學(xué)模型對整個系統(tǒng)進行的描述。一般來說,對系統(tǒng)進行行為描述的目的是為了在系統(tǒng)設(shè)計的初始階段,通過對系統(tǒng)行為的仿真來發(fā)現(xiàn)設(shè)計中存在的問題。在行為描述階段并不真正考慮實際的算法和操作用什么方法來實現(xiàn),注意力主要集中在系統(tǒng)的結(jié)構(gòu)和工作過程能否達到設(shè)計要求方面。在進行完行為描述之后,通常要把它轉(zhuǎn)換為 RTL 級的描述,因為現(xiàn)有的EDA 工具只能接受 RTL 級描述的 HDL 文件進行自動邏輯綜合。第二層次是 RTL 方式描述,又稱為寄存器傳輸描述。用行為方式描述系統(tǒng)結(jié)構(gòu)的程序抽象程度很高,很難直接映射到具體邏輯元件的實
30、現(xiàn)。要想得到硬件的具體實現(xiàn),必須將行為方式的 Verilog HDL 程序改為 RTL 方式的程序。在編寫完RTL 方式的程序之后,就可以利用仿真工具對程序進行仿真了。如果仿真通過,就可以利用邏輯綜合工具進行綜合了。第三層次是邏輯綜合。在這一階段主要是利用邏輯綜合工具,將 RTL 級的程序轉(zhuǎn)換成用基本邏輯元件表示的文件(門級網(wǎng)表) ,并且綜合結(jié)果也可以以原理SPI IP 接口設(shè)計10圖的方式輸出。得到網(wǎng)表之后,還需要進行門級仿真和定時檢查。其設(shè)計過程如圖 3.1 所示:總體方案行為級描述行為級仿真RTL級描述RTL級仿真邏輯綜合、優(yōu)化門級仿真、定時檢查門級網(wǎng)表輸出圖 3.1 Verilog H
31、DL 設(shè)計流程3.5 編譯、模擬仿真 EDA tool 簡介Debussy 是 NOVAS Software Inc(思源科技)發(fā)展的 HDL Debug & Analysis tool,這套軟體主要不是用來跑仿真或看波形,它最強大的功能是:能夠在 HDL source code、schematic diagram、waveform、state bubble diagram 之間,即時做trace,協(xié)助工程師 debug。在本次設(shè)計中使用的是經(jīng)過公司自己修改過的版本(verdi)3.6 ISE 軟件簡介Xilinx 公司的 ISE 軟件是一套用以開發(fā) Xilinx 公司的 FPGA&CPLD
32、的集成開發(fā)軟件,它提供了一個從設(shè)計輸入到綜合、布線、仿真、下載的全套解決方案,并很方便的同其它 EDA 工具接口。原理圖輸入用的是第三方軟件 ECS,HDL 綜合可以使用 Xilinx 公司開發(fā)的 XST、Synopsys 的 FPGA Express 和 Synplicity 公司第三章 SPI Flash Controller 設(shè)計環(huán)境11的 Synplify/Synplify Pro,測試臺輸入是圖形化的 HDL Bencher,狀態(tài)圖輸入用的是 StateCAD,前、后仿真則可以使用 Modelsim XE(Xilinx Edition)或 Modelsim SE。除了上述軟件以外,也
33、可以使用其它公司的相關(guān) EDA 軟件產(chǎn)品。具體利用 ISE 進行 FPGA 測試的過程包括:環(huán)境設(shè)置,新建工程,添加源文件,編寫測試文件,前仿真,綜合,布線,后仿真,配置管腳和下載測試。這里前仿真主要針對電路的語法和邏輯錯誤,仿真屬于行為級的仿真。而后仿真是在完成布局和布線、時序分析完成生成時序網(wǎng)表以后,根據(jù)器件中門,或者布線的延時,將時序網(wǎng)表與功能網(wǎng)表一起進行的仿真。3.7 Xilinx Spartan-3 系列器件介紹Spartan-3 系列器件采用 Xilinx 最成功的 Virtex- FPGA 器件構(gòu)架,并利用90nm 和 12 英寸晶圓工藝生產(chǎn),芯片大小比 0.13m 工藝的產(chǎn)品縮
34、小了 80。為了優(yōu)化結(jié)構(gòu),降低成本,Xilinx 對 Spartan-3 系列器件的內(nèi)部結(jié)構(gòu)做了部分簡化,器件的晶元大小比 0.13m 工藝縮小了 50。這就使得新產(chǎn)品的成品價格比其他廠商的器件降低了 80,Spartan-3 的性價比大幅度提高。為了能夠提供更多的I/O 引腳,Spartan-3 采用錯位的雙排 I/O 引腳結(jié)構(gòu)。該系列產(chǎn)品可提供 5 萬至 500 萬的系統(tǒng)邏輯門,從 3.50 美元起價,完全滿足顧客對低成本解決方案的要求,并把價格降低到可以和 ASIC、ASSP 和微控制器相抗衡的水平。器件主要由可配置邏輯塊(CLB) 、輸入輸出模塊(IOB) 、基于矢量的內(nèi)部互連結(jié)構(gòu)、數(shù)
35、字延遲鎖相環(huán)(DLL) 、先進的多級存儲器結(jié)構(gòu)組成。Spartan-3 系列器件還提供四個功能強大的數(shù)字化時鐘管理器(DCM) ,由基本的數(shù)字延遲鎖相環(huán)(DLL)構(gòu)成,具有完善的頻率合成、相移、時鐘偏移消除等功能。另外,Spartan-3 還提供豐富的嵌入式 DSP 功能,可保證每秒執(zhí)行 3300 億次乘累加(MAC)運算的高性能 DSP 應(yīng)用。在塊存儲器方面,Spartan-3 可提供多達 1872Kb 的塊存儲器,及多達 520Kb 的分布式存儲器,這些存儲器都具有完全的雙口功能。據(jù)權(quán)威統(tǒng)計,到目前為止,Xilinx 的 Spartan-3 系列 FPGA 是工藝最先進、價格最低、單位成本
36、最有效、I/O 管腳最多的平臺級可編程邏輯器件,能夠滿足大部分的芯片設(shè)計驗證的需要。SPI IP 接口設(shè)計12設(shè)計驗證采用 Spartan-3 系列的 XC3S5000 FPGA 器件,內(nèi)部時鐘頻率達326MHz,可提供 74880 個邏輯單元,500 萬個系統(tǒng)門。XC3S5000 支持 17 種單端接口標準和 6 種差分接口標準,輸出信號的邏輯擺幅可達 1.14V 和 3.45V,每個I/O 口支持 622Mb/s 的數(shù)據(jù)傳輸率。104 個 18 位18 位乘法器,104 個 18 Kb 塊存儲器,這些使得在一般的集成電路設(shè)計驗證中,XC3S5000 能夠完全勝任。3.8 HE regist
37、er BUS 協(xié)議簡介 該 BUS 協(xié)議共有 7 類信號線,包括片選信號 R_RGST_SEL(位寬為 1) 、讀信號 R_RGST_RE(位寬為 1) 、寫信號 R_RGST_WE(位寬為 1) 、地址信號R_RGST_ADR(位寬為 5) 、寫入數(shù)據(jù)信號 R_RGST_BUS(位寬為 32) 、讀出數(shù)據(jù)信號 SL_RGST_BUS(位寬為 32) 、反饋信號 SL_RGST_ACK(位寬為 1) 。該協(xié)議的主要內(nèi)容包括:1. 讀信號或?qū)懶盘?、地址信號和片選信號必須同時有效;2. 當對寄存器進行寫入操作時,在檢測到反饋信號有效之前,寫信號、地址信號、片選信號和寫入數(shù)據(jù)信號必須一直保持有效狀態(tài)
38、;3. 當對寄存器進行讀操作是,在檢測到反饋信號有效之前,讀信號、地址信號和片選信號必須一直保持有效狀態(tài),而且只有當反饋信號有效時,才能采集讀出數(shù)據(jù)信號線上的值;4. 讀信號和寫信號只能在片選信號有效時才會有效,而且讀信號和寫信號不能同時有效。第四章 SPI Flash Controller 設(shè)計與實現(xiàn)13第四章 SPI Flash Controller 設(shè)計與實現(xiàn)數(shù)字電路設(shè)計中經(jīng)常需要使用大容量存儲器,串行 Flash 體積小、占用系統(tǒng)資源少、連線簡單,已被應(yīng)用于數(shù)字設(shè)計的很多方面。本設(shè)計使用 Verilog HDL編寫了一個針對 Winbond W25X20/40/80 系列 Flash
39、的控制器,整個設(shè)計緊湊、穩(wěn)定且可靠。4.1SPI Flash Controller 的設(shè)計流程設(shè)計流程如圖 4.1 所示:定義規(guī)格書代碼編寫測試平臺編寫仿真綜合軟體編寫下載軟體仿真開始結(jié)束對錯對錯對錯圖 4.1 SPI 的設(shè)計流程編寫設(shè)計代碼的前提,是搞清楚所要設(shè)計的 IP,要完成什么樣的功能。然后根據(jù)功能定義規(guī)格書,定義配置寄存器(register file) ,然后考慮好各個功能模塊的具體實現(xiàn)方法,實現(xiàn)步驟,為下步的編寫代碼做好充分的準備。做好準備之后,開始編寫代碼,與測試環(huán)境,然后進行軟件仿真至預(yù)期效果。等到代碼仿真正確后,開始編寫軟體(驅(qū)動程序,也就是 deriver),將軟體進行仿真
40、,修改,直到修改正確為止。軟體編寫成功以后,就可以將所設(shè)計的硬件部分,軟件部分綜合到一起,應(yīng)用 ISE 軟件下載到 FPGA 中進行測試,驗證正確后得到最終的代碼設(shè)計。SPI IP 接口設(shè)計144.2 設(shè)計規(guī)格本次設(shè)計,旨在實現(xiàn)基本的 SPI Flash 控制器功能,即對 Flash 器件的基本讀寫及擦除操作、狀態(tài)查詢以及中斷設(shè)置。設(shè)計的特點在于:兼容性和可重復(fù)性。4.2.1 設(shè)計要求 支持 Register bus 總線接口 支持 SPI 總線接口 支持 SPI 模式傳輸 支持深度 32 寬度 8 的 FIFO 支持以下操作指令:Write Enable/Disable, Read/Writ
41、e Status Register, Read Data, Fast Read, Page Program, Block/Sector/Chip Erase. 支持傳輸開始可控制 支持可配置的傳輸字節(jié)數(shù)(maximum 32, little endian) 支持傳輸完成中斷機制 支持中斷狀態(tài)查詢模式 支持中斷狀態(tài)寫“1”清除 支持可屏蔽中斷信號 支持系統(tǒng)時鐘 25MHZ100MHZ 支持可配置的 SPI 接口傳輸速度:1/4 system clock, 1/8 system clock, 1/16 system clock 支持軟件復(fù)位4.2.2 I/O 端口(1) 系統(tǒng)時鐘和系統(tǒng)復(fù)位表 4.
42、1 時鐘和復(fù)位端口端口名稱端口名稱輸入輸入/輸出輸出位寬位寬描述描述SYSCLK輸入1系統(tǒng)時鐘,25MHZ100MHZRST_B輸入1系統(tǒng)復(fù)位,低電平有效第四章 SPI Flash Controller 設(shè)計與實現(xiàn)15(2) HE Register Bus 端口表 4.2 HE 寄存器總線端口端口名稱端口名稱輸入輸入/輸出輸出位寬位寬描述描述R_RGST_SPI_SEL輸入1Register Bus 片選信號,高電平有效R_RGST_WE輸入1Register Bus 寫使能信號,高電平有效R_RGST_RE輸入1Register Bus 讀使能信號,高電平有效R_RGST_BUS輸入32并行
43、數(shù)據(jù)輸入總線R_RGST_ADR輸入5Register Bus 地址信號SL_RGST_BUS輸出32并行數(shù)據(jù)輸出總線SL_RGST_ACK輸出1Register Bus 讀寫操作完成信號,高電平有效(3) SPI Flash Bus 端口表 4.3 SPI 總線端口端口名稱端口名稱輸入輸入/輸出輸出位寬位寬描述描述SL_SPI_DI輸入1SPI Flash 控制器串行輸入數(shù)據(jù)SL_SPI_CLK輸出1SPI 時鐘SPI_DO輸出1SPI Flash 控制器串行輸出數(shù)據(jù)SPI_CS_B輸出1SPI 片選信號,低電平有效SPI_WP_B輸出1SPI Flash 寫保護信號,低電平有效(4) SP
44、I 中斷信號端口表 4.4 SPI 中斷端口端口名稱端口名稱輸入輸入/輸出輸出位寬位寬描述描述SPI_INT輸出1SPI 中斷信號SPI IP 接口設(shè)計16(5)DMA 傳輸端口表 4.5 DMA 傳輸端口端口名稱端口名稱輸入輸入/輸出輸出位寬位寬描述描述SPI_TX_REQ輸出1SPI 的 TX 需求信號SPI_TX_CLR輸入1SPI 的 TX 清除信號SPI_RX_REQ輸出1SPI 的 RX 需求信號SPI_RX_CLR輸入1SPI 的 RX 清除信號4.3 功能模塊劃分整個 SPI Flash Controller 按不同的功能劃分為 8 個模塊,這樣使整個設(shè)計的邏輯思路清晰明了,實
45、現(xiàn)起來也比較容易,具體的模塊劃分情況如下: RGST 總線接口 發(fā)送順序控制邏輯 并串轉(zhuǎn)換的移位邏輯模塊 串并轉(zhuǎn)換的移位邏輯模塊 數(shù)據(jù)狀態(tài)信息選擇邏輯 分頻電路模塊 片選邏輯模塊 中斷信號產(chǎn)生模塊第四章 SPI Flash Controller 設(shè)計與實現(xiàn)17 RGST 總線接口1指令寄存器中斷狀態(tài)寄存器片選邏輯模塊7分頻模塊6發(fā)出順序控制邏輯2串并轉(zhuǎn)換的移位邏輯4(接受并串轉(zhuǎn)換的移位邏輯3(發(fā)出)數(shù)據(jù)狀態(tài)信息選擇邏輯5SPI_DOSL_SPI_DISPI_CLKSPI_CS_BSPI_INTSPI_WP_B中斷信號產(chǎn)生模塊8RGST_BUS地址寄存器數(shù)據(jù)寄存器ID寄存器控制寄存器圖 4.2
46、SPI Flash Controller 框架圖4.4 功能模塊設(shè)計4.4.1 HE register 總線接口HE Register Bus 是凌陽公司 HE 部門自行定義的一套內(nèi)部總線協(xié)議標準,用于不同 IP 之間的連接通訊,本設(shè)計同樣采用了這樣的總線接口,以便系統(tǒng)合成和與他 IP 之間的連接。在 SPI Flash Controller 設(shè)計中的 HE Register 總線接口模塊(Register File),定義了 6 個寄存器:控制寄存器(SPI_CON) :存儲控制信號中斷狀態(tài)寄存器(INT_FLAG) :存儲中斷狀態(tài)信息指令寄存器(BYTE_CODE) :指令/數(shù)據(jù)個數(shù)寄存器
47、地址寄存器(SPI_ADR) :存儲高地址數(shù)據(jù)存儲器 (SPI_FIFO) :數(shù)據(jù)緩存ID 寄存器 (STATUS_ID) :存儲 Flash 狀態(tài)信息及廠商信息SPI IP 接口設(shè)計18主機控制寄存器R_RGST_BUSSL_RGST_BUSID寄存器數(shù)據(jù)存儲器地址寄存器指令寄存器中斷狀態(tài)寄存器ADR=5h0ADR=5h1ADR=5h5ADR=5h4ADR=5h3ADR=5h2圖 4.3 HE register 總線接口框圖在運行過程中 master 通過 bus 在協(xié)議下對模塊中的寄存器進行讀寫,完成對它們的控制和配置,使其能正常運轉(zhuǎn)。內(nèi)部所定義的寄存器如下:表 4.6 寄存器列表地址地址
48、名稱名稱讀寫操作讀寫操作描述描述5h0控制寄存器(SPI_CON)讀寫控制信號寄存器5h1中斷狀態(tài)寄存器(INT_FLAG)只讀中斷狀態(tài)寄存器5h2指令寄存器(BYTE_CODE)讀寫指令/數(shù)據(jù)個數(shù)寄存器5h3地址寄存器 (SPI_ADR)讀寫地址寄存器5h4數(shù)據(jù)存儲器(SPI_FIFO)讀寫FIFO 寄存器5h5ID 寄存器(STATUS_ID)只讀Flash 狀態(tài)和廠商信息寄存器各寄存器內(nèi)部詳細描述和配置見附件 A。4.4.2 發(fā)送順序控制邏輯發(fā)送控制邏輯采用有限狀態(tài)機實現(xiàn),分為空閑狀態(tài)、傳輸 write enable 狀態(tài)(WRITE ENABLE) ,指令傳輸狀態(tài)(WRITE CODE
49、)、地址傳輸狀態(tài)(WRITE ADR)、數(shù)據(jù)傳輸狀態(tài)(WRITE DATA)、數(shù)據(jù)接收狀態(tài)(READ DATA from Flash)、第四章 SPI Flash Controller 設(shè)計與實現(xiàn)19讀狀態(tài)指令傳輸狀態(tài)(WRITE 05h) 、BUSY 查詢狀態(tài)(READ STATUS)和 4 個不同的 WAIT 狀態(tài)(WAIT_1-4)。由于設(shè)計中全部的控制邏輯全部依賴與狀態(tài)機準確的狀態(tài)轉(zhuǎn)移,為了提高設(shè)計的穩(wěn)定性,所有的狀態(tài)跳轉(zhuǎn)都設(shè)置在 SPI_CLK 的時鐘下降沿。因為無論是 SPI接口還是 Flash,采集數(shù)據(jù)都是在時鐘上升沿,所以在時鐘下降沿讓狀態(tài)跳轉(zhuǎn),設(shè)計出錯的機會就最小,也可以使的
50、數(shù)據(jù)傳輸中省去第一個時鐘的等待,既能簡化設(shè)計,又能在一定程度上提高數(shù)據(jù)傳輸?shù)男省顟B(tài)跳轉(zhuǎn)圖跳轉(zhuǎn)表如下:空閑狀態(tài)WE_EN=1?指令傳輸狀態(tài)DATA_RWBYTE_CNTADR_EN地址傳輸狀態(tài)BUSY查詢狀態(tài)ADR_EN=1?數(shù)據(jù)接收狀態(tài)數(shù)據(jù)傳輸狀態(tài)NONO傳輸完成傳輸完成讀指令傳輸狀態(tài)傳輸完成等待狀態(tài)2等待狀態(tài)3STA_ID_FAST=2h11?等待狀態(tài)4NOYESBUSY=0YES頁尾或傳輸完成傳輸write enable狀態(tài)傳輸完成等待狀態(tài)1傳輸完成YES圖 4.4 發(fā)送控制狀態(tài)機示意圖表 4.7 發(fā)送控制狀態(tài)跳轉(zhuǎn)表現(xiàn)態(tài)現(xiàn)態(tài)功能功能次態(tài)次態(tài)跳轉(zhuǎn)條件跳轉(zhuǎn)條件指令傳輸狀態(tài)Write ena
51、ble 使能無效空閑狀態(tài)等待開始信號傳輸 write enable狀態(tài)Write enable 使能有效SPI IP 接口設(shè)計20續(xù)表續(xù)表現(xiàn)態(tài)現(xiàn)態(tài)功能功能次態(tài)次態(tài)跳轉(zhuǎn)條件跳轉(zhuǎn)條件等待狀態(tài) 3Write enable 使能有效,地址使能無效,寫操作,傳輸字節(jié)數(shù)為 0等待狀態(tài) 2Write enable 使能無效,地址使能無效,讀操作,傳輸字節(jié)數(shù)為 0,數(shù)據(jù)傳輸狀態(tài)地址使能無效,寫操作,傳輸字節(jié)數(shù)不為 0數(shù)據(jù)接收狀態(tài)地址使能有效,讀操作,傳輸字節(jié)數(shù)不為 0指令傳輸狀態(tài)向 Flash 發(fā)送指令地址傳輸狀態(tài)地址使能有效傳輸 write enable 狀態(tài)向 Flash 寫 Write enable 指
52、令等待狀態(tài) 1Write enable 指令傳輸完成數(shù)據(jù)傳輸狀態(tài)地址使能有效,寫操作,傳輸字節(jié)數(shù)不為 0數(shù)據(jù)接收狀態(tài)地址使能有效,讀操作,傳輸字節(jié)數(shù)不為 0,特殊標志位不為 3(Fast read)地址傳輸狀態(tài)向 Flash 寫如地址等待狀態(tài) 4地址使能有效,讀操作,傳輸字節(jié)數(shù)不為 0,特殊標志位為 3(Fast read)數(shù)據(jù)傳輸狀態(tài)寫數(shù)據(jù)到 Flash 閃存中等待狀態(tài) 3傳輸完成或者到達頁尾讀狀態(tài)指令傳輸狀態(tài)向 Flash 寫入 read status 的指令BUSY 查詢狀態(tài)Read status 指令傳輸完成BUSY 查詢狀態(tài)檢查 Flash 是否 Busy等待狀態(tài) 2BUSY 為 0
53、數(shù)據(jù)接收狀態(tài)從 Flash 中讀數(shù)據(jù)等待狀態(tài) 2數(shù)據(jù)傳輸完成第四章 SPI Flash Controller 設(shè)計與實現(xiàn)21續(xù)表續(xù)表現(xiàn)態(tài)現(xiàn)態(tài)功能功能次態(tài)次態(tài)跳轉(zhuǎn)條件跳轉(zhuǎn)條件等待狀態(tài) 1等待狀態(tài) 1指令傳輸狀態(tài)等待 16 個系統(tǒng)時鐘傳輸 write enable狀態(tài)等待 16 個系統(tǒng)時鐘并且數(shù)據(jù)傳輸完成等待狀態(tài) 2等待狀態(tài) 2空閑狀態(tài)等待 16 個系統(tǒng)時鐘并且數(shù)據(jù)傳輸未完成等待狀態(tài) 3等待狀態(tài) 3讀狀態(tài)指令傳輸狀態(tài)等待 16 個系統(tǒng)時鐘等待狀態(tài) 4等待狀態(tài) 4數(shù)據(jù)接收狀態(tài)等待 8 個 SPI 時鐘4.4.3 串并轉(zhuǎn)換控制邏輯串并轉(zhuǎn)換模塊用于接收從 Flash 器件中讀回來的數(shù)據(jù)或者 Flash
54、狀態(tài)或者廠商信息,設(shè)計中串并轉(zhuǎn)換移位寄存器會在每個 SP_CLK 的下降沿把寄存器的數(shù)據(jù)從高位依次送到 SPI_DO 上,F(xiàn)lash 在 SPI_CLK 的上升沿采集 SPI_DO 線上的值并移入。這樣一系列時鐘周期過后,就實現(xiàn)了并行數(shù)據(jù)到串行數(shù)據(jù)的轉(zhuǎn)換。 87654321218串行數(shù)據(jù)并行數(shù)據(jù)87654387654321 圖 4.5 串并轉(zhuǎn)換邏輯示意圖串行數(shù)據(jù)到并行數(shù)據(jù)的轉(zhuǎn)換與并串轉(zhuǎn)換剛好相反,如上圖所示。Flash 在SPI_CLK 的下降沿送出數(shù)據(jù),為了保證數(shù)值的準確性,在 SPI_CLK 的上升沿,系統(tǒng)從 SPI 串行輸入引腳采值,并將先采到的值作為高 bit 依次存入寄存器中,這樣一
55、系列時鐘下來,原本串行輸入的數(shù)據(jù)就被并行的存了下來。SPI IP 接口設(shè)計22以下以 Read data 指令為例,給出了 SPI 模式的傳輸示意圖,如下:XXX2322210*Instruction (03h)01234567892930 3124-Bit AddressMode 3Mode 0SPI_CS_BSPI_CLKSPI_DOSL_SPI_DIHigh Impedance32 33 34 35 36 37 38 397654321076540 41XXXXXXXXXXXXXXXXXData Out 1*Data Out 2圖 4.6 SPI 傳輸 read data 指令如圖 4.
56、6 所示,F(xiàn)lash 和設(shè)計都是在 SPI_CLK 的下降沿送出數(shù)據(jù),在SPI_CLK 的上升沿采集數(shù)據(jù),這樣能夠完全滿足設(shè)備所要求的 Timing 關(guān)系,因此可以保證數(shù)據(jù)的準確性。4.4.4 并串轉(zhuǎn)換控制邏輯此模塊是控制器面向 Flash 輸出的主要控制部分,將指令、地址和數(shù)據(jù)由并行模式轉(zhuǎn)化為串行模式(SPI 模式) ,并以滿足 SPI 傳輸時序要求將各種指令正確地傳輸?shù)?Flash,以執(zhí)行對 Flash 的讀寫操作。數(shù)據(jù)在 SPI_CLK 的下降沿移出移位寄存器,F(xiàn)lash 器件在 SPI_CLK 的上升沿采樣數(shù)據(jù)。87654321781并行數(shù)據(jù)串行數(shù)據(jù)87654321654321圖 4.
57、7 并串轉(zhuǎn)換邏輯示意圖以下以 Page program 指令為例,給出了 SPI 模式的傳輸示意圖,如下:第四章 SPI Flash Controller 設(shè)計與實現(xiàn)23XXX2322210*Instruction (02h)01234567892930 3124-Bit AddressMode 3Mode 0SPI_CLKSPI_DO32 33 34 35 36 37 38 3976543210Data Byte 1*40 41 42 43 44 45 46 4776543210Data Byte3*48 49 50 51 52 53 54 5576543210Data Byte 4*207
58、276543210Data Byte 256*XXXMode 3Mode 02073207520742077207620782079SPI_CS_BSPI_CLKSPI_DOSPI_CS_B圖 4.8 SPI 傳輸 page program 指令如圖 4.8 所示,Page prograrm 指令的 code 值為 02H,在用 SPI 模式傳輸Page program 指令需要做的是:在 SPI_CS_B 為低時,在 SPI_CLK 時鐘的上升沿來之前,把指令值(或者為地址或數(shù)據(jù))的每一 bit 從輸出寄存器中取出,再從高到底(對該指令來說傳送的 bit 順序依次為:8b0000_0010)
59、依次送給穿行的輸出端口 SPI_DO,這樣在 SPI flash 在 SPI_CLK 時鐘的上升沿將其取值。因為實際中向 Flash 寫入數(shù)據(jù)是有翻頁的情況,要想實現(xiàn)自動翻頁的功能,就需要將翻頁前未傳完的數(shù)據(jù)暫時的儲存起來,所以設(shè)計中采用了 2 個不同位寬的移位寄存器。一個 32 位寬的用來專門負責數(shù)據(jù)的串并/并串轉(zhuǎn)換,另一個為 24位寬,負責地址、指令和檢查 Flash 忙狀態(tài)的串并/并串轉(zhuǎn)換。在正常的數(shù)據(jù)傳輸是,由狀態(tài)機控制,在不同的狀態(tài)下分別利用 2 個移位寄存器進行傳輸,當寫到頁尾的時候,如果數(shù)據(jù)傳輸未完成,則需要自動翻頁,這就需要重新寫入指令和地址,此時有狀態(tài)機控制狀態(tài)轉(zhuǎn)移,使數(shù)據(jù)移
60、位寄存器暫時暫停工作,由另外的移位寄存器依次進行檢查 BUSY、寫如指令、寫入地址的操作,等到可以再次寫入數(shù)據(jù)的時候,數(shù)據(jù)移位寄存器才恢復(fù)工作,從而實現(xiàn)自動翻頁的功能。SPI IP 接口設(shè)計244.4.5 數(shù)據(jù)狀態(tài)信息選擇邏輯Read/Fast ReadRead Status Register數(shù)據(jù)狀態(tài)信息選擇邏輯并串轉(zhuǎn)換移位寄存器數(shù)據(jù)儲存器ID寄存器圖 4.9 數(shù)據(jù)狀態(tài)信息選擇邏輯示意圖根據(jù)當前 SPI Flash Controller 所發(fā)送的指令可以判斷從 Flash 器件接收回來的是數(shù)據(jù)信息還是狀態(tài)信息,然后通過數(shù)據(jù)狀態(tài)信息選擇邏輯決定信息的不同分流方向如果是數(shù)據(jù),則放入數(shù)據(jù)緩存器(SP
61、I_FIFO),如果是狀態(tài)信息,則放入Flash 狀態(tài)寄存器(STATUS_ID) ,如圖 4.10 所示。用于數(shù)據(jù)存儲的 FIFO 在這里作單獨介紹:FIFO.WPRP圖 4.10 數(shù)據(jù)緩存器示意圖本設(shè)計采用深度 8 寬度 32 的 FIFO 作為數(shù)據(jù)緩沖存儲器。如果是寫 Flash 命令,它接受上層配置的數(shù)據(jù), 然后通過 SPI 總線發(fā)送至 Flash。如果是讀 Flash 命令,F(xiàn)IFO 接受從 Flash 中讀出的數(shù)據(jù),然后通過 HE Register Bus 發(fā)往上層。此 FIFO 采用讀寫雙指針模式,讀指針和寫指針均為 4bit。指針最高位作為標志位來區(qū)分 FIFO 的空滿狀態(tài)。當
62、讀指針、寫指針完全相等的時候,F(xiàn)IFO 為空。當讀指針和寫指針的低 3 位相等,而最高位相反時,F(xiàn)IFO 為滿。4.4.6 分頻模塊根據(jù)設(shè)計要求,SPI Flash Controller 要支持三種可配置的 SPI 模式傳輸速度,第四章 SPI Flash Controller 設(shè)計與實現(xiàn)25分別為 1/4 system clock,1/8 system clock,1/16 system clock.根據(jù) Register File 中控制寄存器的第 3、4 位可以決定不同的 SPI 傳輸速度:SPI_CON3:2=2h00 1/4 system clockSPI_CON3:2=2h01 1
63、/8 system clockSPI_CON3;2=2h10 1/16 system clockSPI_CON3:2=2h11 1/16 system clock4.4.7 片選邏輯模塊上層配置指令、地址、數(shù)據(jù)之后,控制器接收到 Start 信號,首先會將指令放入移位寄存器當中,當移位寄存器中需傳輸?shù)闹噶顪蕚浜弥?,會?Flash 片選信號 SPI_CS_B 拉低(有效) ,待整個指令傳輸完成之后,再將片選信號SPI_CS_B 信號拉高。4.4.8 中斷信號產(chǎn)生模塊 SPI Flash Controller 支持三種中斷機制。即,數(shù)據(jù)緩存 FIFO 空中斷、數(shù)據(jù)緩存 FIFO 滿中斷和傳輸完
64、成中斷。當上述三種中斷發(fā)生時,會首先將 Register File中的中斷狀態(tài)寄存器(INT_FLAG)的相應(yīng)中斷狀態(tài)位置 1(有效) 。中斷生成模塊中斷狀態(tài)寄存器中斷使能信號SPI_INT圖 4.11 中斷信號產(chǎn)生器當傳輸完成中斷發(fā)生時,如果傳輸完成中斷屏蔽使能信號 SPI_CON8為 0 (enable),中斷信號 SPI_INT 有效,否則無效。SPI IP 接口設(shè)計26第五章 SPI Flash Controller 測試與驗證27第五章 SPI Flash Controller 測試與驗證5.1 測試環(huán)境整個 SPI Flash Controller 的測試環(huán)境分為 7 個部分:測試
65、情況,偽 CPU,設(shè)計方案,SPI 閃存,存儲器(期望值) ,存儲器(測試輸出數(shù)據(jù))和監(jiān)視器。測試環(huán)境框圖:測試情況存儲器(測試輸出數(shù)據(jù))設(shè)計方案監(jiān)視器結(jié)果SPI閃存行為模擬程序存儲器(期望值)偽CPU圖 5.1 測試環(huán)境框圖 在測試情況中,共有 19 個 pattern 為測試不同功能點提供全面測試的原始激勵。 在偽 CPU 中,定義了寄存器的讀寫任務(wù),便于測試更有效的進行。 設(shè)計方案為 SPI Flash Controller 設(shè)計本身。 SPI 閃存 為模擬 Flash 全部行為的一個模型程序。 存儲器(期望值)用來存儲與讀出數(shù)據(jù)比對的原始數(shù)據(jù)。 存儲器(測試輸出數(shù)據(jù))用來存儲從 Fla
66、sh 中讀出的數(shù)據(jù)。 監(jiān)視器用于實現(xiàn)原始數(shù)據(jù)與測試輸出數(shù)據(jù)的自動比對功能,以判斷設(shè)計的正確性。SPI IP 接口設(shè)計285.2 測試文件架構(gòu)SPI Flash Controllersrcmacrosimoutputwaveformmodelloggoldentskpatternsim.vsimfiles.fmakefilecov_work文件文件夾注釋管理文件測試功能點仿真記錄文件行為模擬程序功能測試覆蓋率分析文件被編譯文件列表仿真波形期望值測試中設(shè)計的輸出頂層仿真模塊空圖 5.2 測試文件架構(gòu)圖一個好的文件架構(gòu)能夠方便我們的文件管理,在整個測試中由于要用到的以及產(chǎn)生的文件較多,我們必須有一個規(guī)范的文件存放位置和管理架構(gòu),這樣更有利于我們的測試和改正錯誤,具體架構(gòu)如圖 5.2 所示。5.3 測試功能點表 5.1 仿真測試功能點功能功能子功能子功能控制信號控制信號功能描述功能描述開始硬件復(fù)位硬件復(fù)位RST_B進程中硬件復(fù)位開始軟件復(fù)位復(fù)位軟件復(fù)位SW_RST進程中軟件復(fù)位寄存器讀寫寄存器的正常讀寫R_RGST_WE,R_RGST_RE,R_RGST_SPI_SEL,R_RGST_BUS對
- 溫馨提示:
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. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案