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