




已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
摘要 摘摘 要要 SPI 是英語 Serial Peripheral interface 的縮寫 顧名思義就是串行外圍設備接 口 SPI 是一種高速的 全雙工 同步的通信總線 并且在芯片的管腳上只占用 四根線 節(jié)約了芯片的管腳 同時為 PCB 的布局上節(jié)省空間 SPI Flash 主要用 于代碼存儲或者其他非易失性存儲應用 本設計目的在于完成一個 SPI Flash Controller 的設計 相當于在上層的 Driver 和 Flash 器件之間建立起一座連接的橋梁 控制器接收上層配置的并行數(shù) 據(jù)和控制信號 經(jīng)過控制器處理之后以串行的方式發(fā)送至 Flash 器件以完成對 Flash 的相應的讀寫等操作 本設計采用 Verilog HDL 語言 在 Vi 編輯器中完 成設計 并用 EDA tool 對設計進行了編譯 模擬 仿真和調(diào)試 最后又在 FPGA 上對結(jié)果進行了實踐證明 完成上述全部工作之后 再從功能 面積優(yōu)化和成本 縮減等方面對設計進行分析總結(jié)本次畢業(yè)設計中獲得的寶貴經(jīng)驗 關(guān)鍵詞關(guān)鍵詞 閃存閃存 Verilog HDL 串行串行 并行并行 FPGA SPI IP 接口設計 ABSTRACT ABSTRACT SPI Serial Peripheral interface is a serial periphery slave interface SPI is a fast duplex and synchronism 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 device 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 Verilog HDL designed in VI under linux EDA tools are used to simulate synthesize and debug such as Debussy After the design s 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 the function area and cost of the SPI flash controller summarize the experience of the graduation design Keywords Flash Verilog SERIAL COLLATERAL FPGA SPI IP 接口設計 目錄i 目目 錄錄 第一章第一章 引引 言言 1 第二章第二章 SPI FLASH CONTROLLER 簡介簡介 3 2 1 SPI 簡介 3 2 2 SPI FLASH簡介 5 第三章第三章 SPI FLASH CONTROLLER 設計環(huán)境設計環(huán)境 7 3 1 VERILOG HDL 語言簡介 7 3 2 LINUX系統(tǒng)下的設計開發(fā)環(huán)境簡介 8 3 3 數(shù)字電路設計方法 9 3 4 VERILOG HDL 的設計流程 9 3 5 編譯 模擬仿真 EDA TOOL簡介 10 3 6 ISE 軟件簡介 10 3 7 XILINX SPARTAN 3 系列器件介紹 11 3 8 HE REGISTER BUS 協(xié)議簡介 12 第四章第四章 SPI FLASH CONTROLLER 設計與實現(xiàn)設計與實現(xiàn) 13 4 1 SPI FLASH CONTROLLER的設計流程 13 4 2 設計規(guī)格 14 4 2 1 設計要求 14 4 2 2 I O 端口 14 4 3 功能模塊劃分 16 4 4 功能模塊設計 17 4 4 1 HE register 總線接口 17 4 4 2 發(fā)送順序控制邏輯 18 4 4 3 串并轉(zhuǎn)換控制邏輯 21 4 4 4 并串轉(zhuǎn)換控制邏輯 22 4 4 5 數(shù)據(jù)狀態(tài)信息選擇邏輯 24 4 4 6 分頻模塊 24 4 4 7 片選邏輯模塊 25 4 4 8 中斷信號產(chǎn)生模塊 25 目錄ii 第五章第五章 SPI FLASH CONTROLLER 測試與驗證測試與驗證 27 5 1 測試環(huán)境 27 5 2 測試文件架構(gòu) 28 5 3 測試功能點 28 5 4 測試流程 30 5 5 FPGA 驗證 31 5 5 1 C CODE 的仿真 31 5 5 2 FPGA 硬件測試 31 5 6 驗證結(jié)果 32 第六章第六章 總總 結(jié)結(jié) 35 致致 謝謝 37 參考文獻參考文獻 39 第一章 引言1 第一章 引 言 SPI 是英語 Serial Peripheral Interface 的縮寫 就是串行外圍設備接口 SPI 接 口主要應用在 EEPROM FLASH 實時時鐘 AD 轉(zhuǎn)換器 還有數(shù)字信號處理器 和數(shù)字信號解碼器之間 SPI 是一種高速的 全雙工 同步的通信總線 并且在 芯片的管腳上只占用四根線 節(jié)約了芯片的管腳 同時為 PCB 的布局上節(jié)省空間 提供方便 正是出于這種簡單易用的特性 現(xiàn)在越來越多的芯片集成了這種通信 協(xié)議 閃速存儲器 Flash Memory 是 Intel 公司于 1988 年推出的一種新型非易失性大 容量存儲器 它因良好的性能而深受廣大用戶和半導體芯片制造商的青睞 Flash Memory 以其集成度高 成本低 使用方便等優(yōu)點 在眾多領(lǐng)域中獲得了廣泛應 用 在現(xiàn)代數(shù)字電路設計中經(jīng)常需要保存大量數(shù)據(jù) 而 Flash 存儲速度快 體積 小 功耗低且價格低廉 可在線電擦寫 信息在掉電后不會丟失 因此成為設計 人員的首選 在目前所有的非易失性存儲器 PROM EPROM EEPROM 和 F lash 中唯有 Flash 存儲器幾乎擁有現(xiàn)今講究個性化的用戶所需的所有特點 且成 本已低于 PROM EPROM 因而已為新一代嵌入式應用 如數(shù)字相機和 MP3 播放 機 的首選存儲器 Flash 是一種具有電可擦除的可編程 ROM 可以分為兩大類 并行 Flash 和 串行 Flash 并行 Flash 存儲量大 速度快 而串行 Flash 存儲量相對較小 但體 積小 連線簡單 可減小電路面積 節(jié)約成本 二者各有其優(yōu)缺點 可依據(jù)實際 需要選取 隨著并行總線的數(shù)據(jù)傳輸率越來越高 傳統(tǒng)的并行接口逐漸暴露出一 些設計上的缺陷 比如并行線路的信號干擾問題 而串行技術(shù)采有極少的數(shù)據(jù)線 雖然傳輸速率受到限制 但在傳輸數(shù)據(jù)時幾乎不會因為受到干擾而出錯 SPI Flash 就是這樣一種采用串行接口的 Flash 存儲器件 本課題通過對最基本的 Flash 器件和 SPI 總線協(xié)議的研究和實現(xiàn) 設計了 SPI Flash Controller 以此來熟悉 IP 核的設計和驗證 SPI IP 接口設計2 第二章 SPI Flash Controller 簡介3 第二章 SPI Flash Controller 簡介 SPI Flash Controller 即為串行外設接口 flash 存儲器控制器 SPI Flash 以其優(yōu) 良的特性已被廣泛應用于很多設計之中 本課題設計開發(fā)一款 SPI Flash 控制器 2 1 SPI 簡介 SPI Serial Peripheral Interface 串行外圍設備接口 是 Motorola 首先在其 MC68HCXX 系列處理器上定義的 正因為引言中所述的諸多優(yōu)點 現(xiàn)在越來越 多的芯片集成了這種通信協(xié)議 比如 AT91RM9200 處 理外 設 MOSI MISO SCLK I O GND SI SO CLK CS GND 圖 2 1 基本的 SPI 接口 SPI 總線系統(tǒng)是一種同步串行外設接口 它可以使 MCU 與各種外圍設備以 串行方式進行通信以交換信息 外圍設置 FLASHRAM 網(wǎng)絡控制器 LCD 顯示 驅(qū)動器 A D 轉(zhuǎn)換器和 MCU 等 SPI 總線系統(tǒng)可直接與各個廠家生產(chǎn)的多種標 準外圍器件直接接口 SPI 接口一般使用 4 條線 串行時鐘線 SCK 主機輸入 從機輸出數(shù)據(jù)線 MISO 主機輸出 從機輸入數(shù)據(jù)線 MOST 和低電平有效的從機選 擇線 SS 有的 SPI 接口芯片帶有中斷信號線 INT 或 INT 有的 SPI 接口芯片沒有 主機輸出 從機輸入數(shù)據(jù)線 MOSI SPI 的通信原理很簡單 它以主從方式工作 這種模式通常有一個主設備和 一個或多個從設備 需要至少 4 根線 事實上 3 根也可以 單向傳輸時或者使用 SPI IP 接口設計4 雙工 I O PIN 所有基于 SPI 的設備共有的 PIN 腳 它們是 SDI 數(shù)據(jù)輸入 SDO 數(shù)據(jù)輸出 SCLK 時鐘 CS 片選 1 SDO 主設備數(shù)據(jù)輸出 從設備數(shù)據(jù)輸入 2 SDI 主設備數(shù)據(jù)輸入 從設備數(shù)據(jù)輸出 3 SCLK 時鐘信號 由主設備產(chǎn)生 4 CS 從設備使能信號 由主設備控制 其中 CS 是控制芯片是否工作 也就是說只有片選信號為預先規(guī)定的使能信 號時 高電位或低電位 對此芯片的操作才有效 否則會被忽略 這就允許在 同一主機上連接多個 SPI 設備 其余的 3 根線是負責通信的 通訊是通過數(shù)據(jù)交換完成的 SPI 是串行通訊 協(xié)議 也就是說數(shù)據(jù)是一位一位的傳輸?shù)?這就是 SCLK 時鐘線存在的原因 由 SCLK 提供時鐘脈沖 SDI SDO 則基于此脈沖完成數(shù)據(jù)傳輸 數(shù)據(jù)輸出通過 SDO 線 數(shù)據(jù)在時鐘下降沿時改變 在緊接著的上升沿被讀取 完成一位數(shù)據(jù)傳 輸 輸入也使用同樣原理 這樣 在至少 8 次時鐘信號的改變 上沿和下沿為一 次 就可以完成 8 位數(shù)據(jù)的傳輸 要注意的是 SCLK 信號線只由主設備控制 從設備不能控制信號線 同樣 在一個基于 SPI 的設備中 至少有一個主控設備 這樣的傳輸方式有一個優(yōu)點 與普通的串行通訊不同 普通的串行通訊一次連續(xù)傳送至少 8 位數(shù)據(jù) 而 SPI 允 許數(shù)據(jù)一位一位的傳送 甚至允許暫停 因為 SCLK 時鐘線由主控設備控制 當 沒有時鐘跳變時從設備不采集或傳送數(shù)據(jù) 也就是說主設備通過對 SCLK 時鐘線 的控制可以完成對通訊的控制 SPI 還是一個數(shù)據(jù)交換協(xié)議 因為 SPI 的數(shù)據(jù)輸 入和輸出線獨立 所以允許同時完成數(shù)據(jù)的輸入和輸出 不同的 SPI 設備的實現(xiàn) 方式不盡相同 主要是數(shù)據(jù)改變和采集的時間不同 在時鐘信號上沿或下沿采集 有不同定義 應該注意的是 SPI 主模塊和與之通信的外設備時鐘相位和極性應 該一致 這句話有 2 層意思 其一 主設備 SPI 時鐘和極性的配置應該由外 設來決定 其二 二者的配置應該保持一致 即主設備的SDO 同從設備的 SDO 配置一致 主設備的 SDI 同從設備的 SDI 配置一致 因為主從設備是在 SCLK 的控制下同時發(fā)送和接收數(shù)據(jù) 并通過 2 個雙向移位寄存器來交換數(shù) 據(jù)在點對點的通信中 SPI 接口不需要進行尋址操作且為全雙工通信 顯得簡單 高效 在多個從設備的系統(tǒng)中 每個從設備需要獨立的使能信號 硬件上比 I2C 第二章 SPI Flash Controller 簡介5 系統(tǒng)要稍微復雜一些 最后 SPI 接口的一個缺點 沒有指定的流控制 沒有應答機制確認是否接 收到數(shù)據(jù) 2 2 SPI Flash 簡介 本次所設計控制器針對的是華邦公司的 W25X20 2Mbit W25X40 4M bit W25X80 8M bit 系列 該系列為只有有限的空間 pin 的串行存儲器 W25X20 40 80 的 SPI 接口主要由 4 個引腳構(gòu)成 SL SPI CLK SPI DO SL SPI DI 及 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 接口設計6 第三章 SPI Flash Controller 設計環(huán)境7 第三章 SPI Flash Controller 設計環(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ā)展 基于 Verilog HDL 的優(yōu)越性 IEEE 于 1995 年制定了 Verilog HDL 的 IEEE 標準 即 Verilog HDL1364 1995 Verilog HDL 具有以下特點 能形式化地抽象表示電路的結(jié)構(gòu)和行為 借用 高級語言的結(jié)構(gòu)和語句 如循環(huán)語言 賦值語言等 簡化了電路行為的描述 能在多個層次上對所設計的電路進行描述 內(nèi)置了基本的邏輯門 更接近開關(guān)級 電路 可以使用用戶自定義原語 UDP 使得設計更加靈活 等等 與 VHDL 語言相比 Verilog HDL 和 VHDL 作為描述硬件電路設計的語言 其共同的特點在于 能形式化地抽象電路的行為和結(jié)構(gòu) 支持邏輯設計中層次與 范圍的描述 可借用高級語言的精巧結(jié)構(gòu)來簡化電路行為的描述 具有電路仿真 與驗證機制以保證設計的正確性 支持電路描述由高層到底層的綜合轉(zhuǎn)換 硬件 描述與實現(xiàn)工藝無關(guān) 有關(guān)工藝參數(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 1364 2001 標準 使得 Verilog 語言在綜合和仿真性能方面有了大幅度的提高 學習掌握 Verilog HDL 建模 仿真和綜合技術(shù)不僅可以對數(shù)字電路設計技術(shù)有更 SPI IP 接口設計8 進一步的了解 而且為以后學習高級的行為綜合和物理綜合打下堅實的基礎 3 2 Linux 系統(tǒng)下的設計開發(fā)環(huán)境簡介 Linux 是一套免費使用和自由傳播的類 Unix 操作系統(tǒng) 它主要用于基于 Intel x86 系列 CPU 的計算機上 這個系統(tǒng)是由世界各地的成千上萬的程序員 設計和實現(xiàn)的 其目的是建立不受任何商品化軟件的版權(quán)制約的 全世界都能 自由使用的 Unix 兼容產(chǎn)品 Linux 以它的高效性和靈活性著稱 它能夠在PC 計算機上實現(xiàn)全部的 Unix 特性 具有多任務 多用戶的能力 Linux 是在 GNU 公共許可權(quán)限下 免費獲得的 是一個符合 POSIX 標準的操作系統(tǒng) Linux 操作系統(tǒng)軟件包不 僅包括完整的 Linux 操作系統(tǒng) 而且還包括了文本編輯器 高級語言編譯器等 應用軟件 它還包括帶有多個窗口管理器的X Window 圖形用戶界面 如同 我們使用 Windows NT 一樣 允許我們使用窗口 圖標和菜單對系統(tǒng)進行操作 VI 編輯器是 Linux 和 Unix 上最基本的文本編輯器 工作在字符模式下 由 于不需要圖形界面 使它成了效率很高的文本編輯器 盡管在Linux 上也有 很多圖形界面的編輯器可用 但 VI 在系統(tǒng)和服務器管理中的 功能是那些圖 形編輯器所無法比擬的 VI 編輯器是 Visual interface 的簡稱 通常稱之為 VI 它在 Linux 上的 地位就像 Edit 程序在 DOS 上一樣 它可以執(zhí)行輸出 刪除 查找 替換 塊 操作等眾多文本操作 而且用戶可以根據(jù)自己的需要對其進行定制 這是其他 編輯程序所沒有的 VI 編輯器并不是一個排版程序 它不像Word 或 WPS 那樣可以對字體 格式 段落 等其他屬性進行編排 它只是一個文本編輯程 序 沒有菜單 只有命令 而且命令繁多 Vi 有 3 種基本工作模式 命令行模 式 文本輸入模式和末行模式 VIM 是 VI 的加強版 比 vi 更容易使用 vi 的命令幾乎全部都可以在 vim 上使用 要在 Linux 下編寫文本或語言程序 您首先必須選擇一種文本編 輯器 可以選擇使用 vim 編輯器 使用它的好處是幾乎每一個版本的Linux 都會有它的存在 然而它是在文本模式下使用 需要記憶一些基本的命令操作 方式 第三章 SPI Flash Controller 設計環(huán)境9 3 3 數(shù)字電路設計方法 數(shù)字電路設計中主要有兩種基本的設計方法 自底向上和自頂向下設計方法 在自頂向下的設計方法中 我們首先定義頂層模塊 然后分析實現(xiàn)頂層模塊 功能需要那些必要的子模塊 然后按照相同的方法對子模塊進行分解 知道無法 進一步細分的最底層模塊為止 在自底向上的設計方法中 我們首先對現(xiàn)有的功能模塊進行分析 然后利用 這些模塊去搭建較大的功能模塊 如此繼續(xù)直至頂層的功能模塊 在實際的設計中 通常是兩種方法混合使用的 設計者首先根據(jù)電路體系接 口定義頂層模塊 邏輯設計者確定如何根據(jù)功能將整個設計劃分為子模塊 同時 電路設計者對底層功能快進行優(yōu)化設計 并進一步使用這些底層模塊來搭建其高 層模塊 兩者的工作按相反的方向獨立的進行 直至在某一中間點會合 這是 電路設計者已經(jīng)使用開關(guān)級原語創(chuàng)建了一個底層功能塊庫 而邏輯設計設也通過 使用自頂向下的方法將整個設計分解為由庫單元構(gòu)成的結(jié)構(gòu)描述 3 4 Verilog HDL 的設計流程 在用 Verilog HDL 進行硬件設計的過程中 開發(fā)人員通常是將設計分層三個 層次進行設計 第一層次是行為描述 就是用數(shù)學模型對整個系統(tǒng)進行的描述 一般來說 對系統(tǒng)進行行為描述的目的是為了在系統(tǒng)設計的初始階段 通過對系統(tǒng)行為的仿 真來發(fā)現(xiàn)設計中存在的問題 在行為描述階段并不真正考慮實際的算法和操作用 什么方法來實現(xiàn) 注意力主要集中在系統(tǒng)的結(jié)構(gòu)和工作過程能否達到設計要求方 面 在進行完行為描述之后 通常要把它轉(zhuǎn)換為 RTL 級的描述 因為現(xiàn)有的 EDA 工具只能接受 RTL 級描述的 HDL 文件進行自動邏輯綜合 第二層次是 RTL 方式描述 又稱為寄存器傳輸描述 用行為方式描述系統(tǒng)結(jié) 構(gòu)的程序抽象程度很高 很難直接映射到具體邏輯元件的實現(xiàn) 要想得到硬件的 具體實現(xiàn) 必須將行為方式的 Verilog HDL 程序改為 RTL 方式的程序 在編寫完 RTL 方式的程序之后 就可以利用仿真工具對程序進行仿真了 如果仿真通過 就可以利用邏輯綜合工具進行綜合了 第三層次是邏輯綜合 在這一階段主要是利用邏輯綜合工具 將 RTL 級的程 序轉(zhuǎn)換成用基本邏輯元件表示的文件 門級網(wǎng)表 并且綜合結(jié)果也可以以原理 SPI IP 接口設計10 圖的方式輸出 得到網(wǎng)表之后 還需要進行門級仿真和定時檢查 其設計過程如圖 3 1 所示 總體方案 行為級描述 行為級仿真 RTL級描述 RTL級仿真 邏輯綜合 優(yōu)化 門級仿真 定時檢查 門級網(wǎng)表輸出 圖 3 1 Verilog HDL 設計流程 3 5 編譯 模擬仿真 EDA tool 簡介 Debussy 是 NOVAS Software Inc 思源科技 發(fā)展的 HDL Debug 2 2 h10 1 16 system clock SPI CON 3 2 2 h11 1 16 system clock 4 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 滿中斷和傳輸完成中斷 當上述三種中斷發(fā)生時 會首先將 Register File 中的中斷狀態(tài)寄存器 INT FLAG 的相應中斷狀態(tài)位置 1 有效 中斷生成模塊 中斷狀態(tài)寄 存器 中斷使能信 號 SPI INT 圖 4 11 中斷信號產(chǎn)生器 當傳輸完成中斷發(fā)生時 如果傳輸完成中斷屏蔽使能信號 SPI CON 8 為 0 enable 中斷信號 SPI INT 有效 否則無效 SPI IP 接口設計26 第五章 SPI Flash Controller 測試與驗證27 第五章 SPI Flash Controller 測試與驗證 5 1 測試環(huán)境 整個 SPI Flash Controller 的測試環(huán)境分為 7 個部分 測試情況 偽 CPU 設 計方案 SPI 閃存 存儲器 期望值 存儲器 測試輸出數(shù)據(jù) 和監(jiān)視器 測試環(huán)境框圖 測試情況 存儲器 測試輸出數(shù)據(jù) 設計方案 監(jiān)視器結(jié)果 SPI閃存行 為模擬程序 存儲器 期 望值 偽CPU 圖 5 1 測試環(huán)境框圖 在測試情況中 共有 19 個 pattern 為測試不同功能點提供全面測試的原始 激勵 在偽 CPU 中 定義了寄存器的讀寫任務 便于測試更有效的進行 設計方案為 SPI Flash Controller 設計本身 SPI 閃存 為模擬 Flash 全部行為的一個模型程序 存儲器 期望值 用來存儲與讀出數(shù)據(jù)比對的原始數(shù)據(jù) 存儲器 測試輸出數(shù)據(jù) 用來存儲從 Flash 中讀出的數(shù)據(jù) 監(jiān)視器用于實現(xiàn)原始數(shù)據(jù)與測試輸出數(shù)據(jù)的自動比對功能 以判斷設計 的正確性 SPI IP 接口設計28 5 2 測試文件架構(gòu) SPI Flash Controller src macro sim output waveform model log golden tsk pattern sim v simfiles f makefile cov work 文件 文件夾注釋 管理文件 測試功能點 仿真記錄文件 行為模擬程序 功能測試覆蓋率分析文件 被編譯文件列表 仿真波形 期望值 測試中設計的輸出 頂層仿真模塊 空 圖 5 2 測試文件架構(gòu)圖 一個好的文件架構(gòu)能夠方便我們的文件管理 在整個測試中由于要用到的以 及產(chǎn)生的文件較多 我們必須有一個規(guī)范的文件存放位置和管理架構(gòu) 這樣更有 利于我們的測試和改正錯誤 具體架構(gòu)如圖 5 2 所示 5 3 測試功能點 表 5 1 仿真測試功能點 功能功能子功能子功能控制信號控制信號功能描述功能描述 開始硬件復位 硬件復位RST B 進程中硬件復位 開始軟件復位 復位 軟件復位SW RST 進程中軟件復位 寄存器讀寫寄存器的正常讀寫 R RGST WE R RGST RE R RGST SPI SEL R RGST BUS 對每個寄存器進行寫操 作 然后讀取每個寄存 器的值 第五章 SPI Flash Controller 測試與驗證29 續(xù)表續(xù)表 功能功能子功能子功能控制信號控制信號功能描述功能描述 寫保護SPI WP B 保護 Flash 狀態(tài)寄存器內(nèi)容 不被改變 Write enable Write enable 必須在每一個 寫操作前寫入 Flash Write disable ADR EN DATA RW BYTE CNT WE EN STA ID FAST 將狀態(tài)寄存器 WEL 位置 0 寫狀態(tài)寄存器寫狀態(tài)寄存器 寫操作 數(shù)據(jù)寫入 ADR EN DATA RW BYTE CNT WE EN STA ID FAST Write data into Flash memory 讀狀態(tài)寄存器 將 Flash 狀態(tài)寄存器的值讀 入 SPI 讀數(shù)據(jù) 將 Falsh Memory 中的數(shù)據(jù) 讀如 SPI FIFO 快速讀數(shù)據(jù) 為了數(shù)據(jù)準確 寫入地址后 需要等待 8 個周期才能采集 數(shù)據(jù) 讀操作 讀廠商信息 ADR EN DATA RW BYTE CNT WE EN STA ID FAST 將 Falsh 廠商信息讀入 SPI STATUS ID 寄存器 片擦除將整個存儲空間寫為全 1 Sector 擦除 將寫入地址的對應 Sector 寫 為全 1 擦除 Block 擦除 ADR EN DATA RW BYTE CNT WE EN STA ID FAST 將寫入地址的對應 Block 寫 為全 1 中斷傳輸完成中斷BYTE CNT WE EN SPI 操作執(zhí)行完之后 發(fā)出 有效的中斷信號 寫入數(shù)據(jù) SPI TX REQ SPI TX CLR FIFO 為空 將數(shù)據(jù)寫入 FIFO 寫滿后將 TX REQ 清除DMA 模式 DMA 模式 讀出數(shù)據(jù) SPI RX REQ SPI RX CLR FIFO 為滿 從 FIFO 中將數(shù) 據(jù)讀出 讀空后將 RX REQ 清除 SPI IP 接口設計30 續(xù)表續(xù)表 功能功能子功能子功能控制信號控制信號功能描述功能描述 讀寫STA ID FAST正常的讀寫 空狀態(tài)時的 TX REQ CPU DMA 檢查能否在 FIFO 為空時 正常準確的發(fā)出 TX REQ 信號 FIFO 滿狀態(tài)使得 RX REQ CPU DMA 檢查能否在 FIFO 為滿時 正常準確的發(fā)出 RX REQ 信號 讀操作 讀操作 配置信息及指 令隨機錯誤 非正常操作 寫操作 ADR EN DATA RW BYTE CNT WE EN STA ID FAST 寫操作 配置正確 指 令錯誤 5 4 測試流程 整個 SPI Flash Controller 支持對 Flash 的一些基本的讀寫操作 如果需要驗 證讀寫操作的正確性 必須讀寫操作一起執(zhí)行 才能得到測試輸出數(shù)據(jù) 以便和 原始數(shù)據(jù)做比對 在測試寫操作的正確性前 必須證明讀操作的正確性 首先 修改測試用的 SPI 后端 Flash 的行為模擬程序的 Memory 默認值為不同的值 這里我設定成與 其地址相同 然后初始化整個 SPI Flash 這時 SPI Flash 中的初始數(shù)據(jù)可知 通 過 Register Bus 給 SPI Flash 控制器配置讀操作所需指令 地址 然后發(fā)送讀指令 讀出數(shù)據(jù)與 SPI Flash 中的初始化數(shù)值做對比 如果相同則證明讀操作正確 讀操作測試正確后就可以開始寫操作的正確性 在讀操作正確的前提下 再來證明寫操作的正確性 同樣通過 Register Bus 給 SPI Flash 控制器配置寫操作指令 地址和激勵數(shù)據(jù) 然后發(fā)送寫指令 寫入 Flash 中地址所指的相應區(qū)域 再通過 Register Bus 配置讀指令 和同樣的地址 然后讀出地址所指的相應區(qū)域 讀出數(shù)據(jù)如果與先前寫入數(shù)據(jù)相同 則證明寫操 作正確 第五章 SPI Flash Controller 測試與驗證31 擦除操作在讀寫操作正確的前提下 再進行測試 先通過寫操作給 Flash 中 的特定區(qū)域?qū)懭胍恍?shù)據(jù) 然后通過 Register Bus 配置擦除指令 控制器再發(fā)送 擦除指令 對 Flash 中的特定區(qū)域進行擦除 寫 1 然后再通過讀指令讀出相 應區(qū)域 以讀出數(shù)據(jù)是否為全 1 判斷擦除指令是否正確 下面以擦除指令為例說明具體的測試流程 通過 所有數(shù)據(jù)為1 Yes No No 傳輸完成 Yes 開始 結(jié)束 向Flash某地址寫入部分數(shù)據(jù) 失敗 向Flash寫擦除指令 擦除掉 剛剛寫入的數(shù)據(jù) Yes 讀取擦除位置的數(shù)據(jù) BUSY位為0 No 圖 5 3 擦除指令測試流程 5 5 FPGA 驗證 5 5 1 C CODE 的仿真 當設計的功能仿真測試全部通過以后 就可以開始驅(qū)動的編寫和仿真測試 首先把設計代碼接到平臺的代碼之中 然后把編寫的 C 驅(qū)動通過 IDE 軟件編譯成 仿真需要的 hex 文件 然后像之前的仿真測試一樣對設計進行全面測試 此次仿真的主要目的在于測試設計與平臺的連接是否正確 并且檢驗驅(qū)動程 序書寫是否正確 合理 全面 SPI IP 接口設計32 5 5 2 FPGA 硬件測試 所有仿真結(jié)束并通過以后 利用 IDE 把設計編譯成 srec 文件 然后利用 ISE 生成 FPGA 平臺下載所需的 MCS 文件 生成的 MCS 文件即可以通過計算機并 口下載到 FPGA 平臺中 將下載好的 FPGA 平臺進行硬件測試 查看功能是否達到要求 若未達到要 求 則分析原因 找出錯誤 進行修改 最終達到最終 SPEC 所描述的功能 硬件驗證原理圖 SPI 總線橋 需要測試的設計 方案 外設Flash RGST 中斷 FPGA 平平臺臺 PC 外部接口SPI 接口 圖 5 4 FPGA 驗證原理圖 注 實際的 FPGA 測試中 使用的是 XC3S5000 平臺的 UART IP 接口 驗證時我們通過 UART 接口讓 FPGA 與 PC 機相連 PC 機上的測試程序就 可以通過各個 function 測試設計的各個功能 在測試機上通過 IDE 軟件獲取不同 寄存器的值 與期望值作對比 以此驗證設計的正確性 5 6 驗證結(jié)果 在整個仿真和測試的過程中還是遇到了不少的問題 比如仿真軟件 測試軟 件環(huán)境不熟悉 自己的設計代碼有邏輯 時序缺陷等 但通過耐心的檢查和仔細 修改 最后通過了所有的測試 很好的完成如下功能 Register bus 總線接口功能測試通過 SPI 總線接口測試通過功能測試通過 SPI 模式傳輸功能測試通過 深度 8 寬度 32 的 FIFO 功能測試通過 以下操作指令 Write Enable Disable Read Write Status Register Read Data 第五章 SPI Flash Controller 測試與驗證33 Fast Read Page Program Block Sector Chip Erase 功能測試通過 傳輸開始可控制功能測試通過 可配置的傳輸字節(jié)數(shù) maximum 32 little endian 功能測試通過 數(shù)據(jù)緩沖器空 滿中斷機制功能測試通過 傳輸完成中斷機制功能測試通過 中斷狀態(tài)查詢功能測試通過 中斷狀態(tài)寫 1 清除功能測試通過 可屏蔽中斷信號功能測試通過 系統(tǒng)時鐘 25MHZ 100MHZ 功能測試通過 可配置的 SPI 接口傳輸速度 1 4 system clock 1 8 system clock 1 16 system clock 功能測試通過 軟件復位功能測試通過 SPI IP 接口設計34 第六章 總 結(jié)35 第六章 總 結(jié) 至此 SPI Flash Controller 的具體設計已經(jīng)全部完成 經(jīng)過仿真和測試 設 計完成了 SPI Flash Controller 的發(fā)送指令功能 達到預期的目的 通過這 次設計 我了解了硬件設計的全部流程 熟悉了 Verilog HDL 的具體應用 并且 獨立地完成其具體流程如圖 2 1 所示 SPI Flash Controller 的設計和驗證 包括軟 體驗證和硬體驗證 對于 IC 設計有了比較深的認識 并總結(jié)了很多在 IC 設計 中需要注意的問題 為以后的深入學習和工作打下良好的基礎 設計內(nèi)容 設計內(nèi)容 在整個工作之中 完成了對 SPI Flash Controller 設計規(guī)則的學習 模塊化劃 分整理 代碼的仿真 驅(qū)動的編寫以及 FPGA 驗證 最終完成所要求的 SPI Flash Controller 設計 由于時間過于倉促 其中對于屏蔽錯誤配置信息方面做的不是很 完善 并且在兼容性方面沒有考慮成熟 但總體上實現(xiàn)了控制器的全部功能 以 及可以保證能過按照不同的配置進行正常穩(wěn)定的傳輸 對于錯誤的配置信息 設計中在讀操作下允許所有寄存器的配置信息錯誤 但在寫操作下 為了保證設計能準確的運行 要求出指令以外的配置信息必須正 確或者是其他指令的正確配置 指令配置可以任意 此設計支持 Register 總線 FIFO 深度為 8 寬度 32 可以使用軟件進行復位 以及 FIFO 狀態(tài)查詢 中斷使能等功能 整個設計中大體分為總線接口 狀態(tài)控 制模塊
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025太陽能槽式復合拋物面聚光集熱土壤儲熱技術(shù)
- 個人勞動法權(quán)益保障合同
- 個人抵押借款擔保合同
- 分期付款購買機動車合同書
- 醫(yī)療器械藥品購銷合同
- 醫(yī)院場地租賃合同書樣本
- 五金電器銷售合同6篇
- 2025年紅河b2貨運上崗證模擬考試
- 合同范本銷售人員聘用合同7篇
- 面板自動檢測機競爭策略分析報告
- (人教PEP2024版)英語一年級上冊Unit 3 教學課件(新教材)
- 小小演說家演講技巧教學設計
- 住院患者跌倒、墜床、壓力性損傷的風險評估及管理
- 2024移動電源車運維管理技術(shù)規(guī)范柴油機類
- 2024年中國端側(cè)大模型行業(yè)研究:算力優(yōu)化與效率革命+如何重塑行業(yè)生態(tài)-22正式版
- 學校臨聘人員規(guī)范管理自查報告
- (高清版)DB37T 5271-2024 建設工程造價指標采集與發(fā)布標準
- 投訴法官枉法裁判范本
- 食材配送服務方案投標方案(技術(shù)方案)
- 新能源充電樁安全管理與防護
- 借用資質(zhì)投標合作協(xié)議模板
評論
0/150
提交評論