已閱讀5頁(yè),還剩41頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
摘要 摘摘 要要 SPI 是英語(yǔ) Serial Peripheral interface 的縮寫(xiě) 顧名思義就是串行外圍設(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)過(guò)控制器處理之后以串行的方式發(fā)送至 Flash 器件以完成對(duì) Flash 的相應(yīng)的讀寫(xiě)等操作 本設(shè)計(jì)采用 Verilog HDL 語(yǔ)言 在 Vi 編輯器中完 成設(shè)計(jì) 并用 EDA tool 對(duì)設(shè)計(jì)進(jìn)行了編譯 模擬 仿真和調(diào)試 最后又在 FPGA 上對(duì)結(jié)果進(jìn)行了實(shí)踐證明 完成上述全部工作之后 再?gòu)墓δ?面積優(yōu)化和成本 縮減等方面對(duì)設(shè)計(jì)進(jìn)行分析總結(jié)本次畢業(yè)設(shè)計(jì)中獲得的寶貴經(jīng)驗(yàn) 關(guān)鍵詞關(guān)鍵詞 閃存閃存 Verilog HDL 串行串行 并行并行 FPGA SPI IP 接口設(shè)計(jì) 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 接口設(shè)計(jì) 目錄i 目目 錄錄 第一章第一章 引引 言言 1 第二章第二章 SPI FLASH CONTROLLER 簡(jiǎn)介簡(jiǎn)介 3 2 1 SPI 簡(jiǎn)介 3 2 2 SPI FLASH簡(jiǎn)介 5 第三章第三章 SPI FLASH CONTROLLER 設(shè)計(jì)環(huán)境設(shè)計(jì)環(huán)境 7 3 1 VERILOG HDL 語(yǔ)言簡(jiǎn)介 7 3 2 LINUX系統(tǒng)下的設(shè)計(jì)開(kāi)發(fā)環(huán)境簡(jiǎn)介 8 3 3 數(shù)字電路設(shè)計(jì)方法 9 3 4 VERILOG HDL 的設(shè)計(jì)流程 9 3 5 編譯 模擬仿真 EDA TOOL簡(jiǎn)介 10 3 6 ISE 軟件簡(jiǎn)介 10 3 7 XILINX SPARTAN 3 系列器件介紹 11 3 8 HE REGISTER BUS 協(xié)議簡(jiǎn)介 12 第四章第四章 SPI FLASH CONTROLLER 設(shè)計(jì)與實(shí)現(xiàn)設(shè)計(jì)與實(shí)現(xiàn) 13 4 1 SPI FLASH CONTROLLER的設(shè)計(jì)流程 13 4 2 設(shè)計(jì)規(guī)格 14 4 2 1 設(shè)計(jì)要求 14 4 2 2 I O 端口 14 4 3 功能模塊劃分 16 4 4 功能模塊設(shè)計(jì) 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 中斷信號(hào)產(chǎn)生模塊 25 目錄ii 第五章第五章 SPI FLASH CONTROLLER 測(cè)試與驗(yàn)證測(cè)試與驗(yàn)證 27 5 1 測(cè)試環(huán)境 27 5 2 測(cè)試文件架構(gòu) 28 5 3 測(cè)試功能點(diǎn) 28 5 4 測(cè)試流程 30 5 5 FPGA 驗(yàn)證 31 5 5 1 C CODE 的仿真 31 5 5 2 FPGA 硬件測(cè)試 31 5 6 驗(yàn)證結(jié)果 32 第六章第六章 總總 結(jié)結(jié) 35 致致 謝謝 37 參考文獻(xiàn)參考文獻(xiàn) 39 第一章 引言1 第一章 引 言 SPI 是英語(yǔ) Serial Peripheral Interface 的縮寫(xiě) 就是串行外圍設(shè)備接口 SPI 接 口主要應(yīng)用在 EEPROM FLASH 實(shí)時(shí)時(shí)鐘 AD 轉(zhuǎn)換器 還有數(shù)字信號(hào)處理器 和數(shù)字信號(hào)解碼器之間 SPI 是一種高速的 全雙工 同步的通信總線 并且在 芯片的管腳上只占用四根線 節(jié)約了芯片的管腳 同時(shí)為 PCB 的布局上節(jié)省空間 提供方便 正是出于這種簡(jiǎn)單易用的特性 現(xiàn)在越來(lái)越多的芯片集成了這種通信 協(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à)格低廉 可在線電擦寫(xiě) 信息在掉電后不會(huì)丟失 因此成為設(shè)計(jì) 人員的首選 在目前所有的非易失性存儲(chǔ)器 PROM EPROM EEPROM 和 F lash 中唯有 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ǎn)單 可減小電路面積 節(jié)約成本 二者各有其優(yōu)缺點(diǎn) 可依據(jù)實(shí)際 需要選取 隨著并行總線的數(shù)據(jù)傳輸率越來(lái)越高 傳統(tǒng)的并行接口逐漸暴露出一 些設(shè)計(jì)上的缺陷 比如并行線路的信號(hào)干擾問(wèn)題 而串行技術(shù)采有極少的數(shù)據(jù)線 雖然傳輸速率受到限制 但在傳輸數(shù)據(jù)時(shí)幾乎不會(huì)因?yàn)槭艿礁蓴_而出錯(cuò) SPI Flash 就是這樣一種采用串行接口的 Flash 存儲(chǔ)器件 本課題通過(guò)對(duì)最基本的 Flash 器件和 SPI 總線協(xié)議的研究和實(shí)現(xiàn) 設(shè)計(jì)了 SPI Flash Controller 以此來(lái)熟悉 IP 核的設(shè)計(jì)和驗(yàn)證 SPI IP 接口設(shè)計(jì)2 第二章 SPI Flash Controller 簡(jiǎn)介3 第二章 SPI Flash Controller 簡(jiǎn)介 SPI Flash Controller 即為串行外設(shè)接口 flash 存儲(chǔ)器控制器 SPI Flash 以其優(yōu) 良的特性已被廣泛應(yīng)用于很多設(shè)計(jì)之中 本課題設(shè)計(jì)開(kāi)發(fā)一款 SPI Flash 控制器 2 1 SPI 簡(jiǎn)介 SPI Serial Peripheral Interface 串行外圍設(shè)備接口 是 Motorola 首先在其 MC68HCXX 系列處理器上定義的 正因?yàn)橐灾兴龅闹T多優(yōu)點(diǎn) 現(xiàn)在越來(lái)越 多的芯片集成了這種通信協(xié)議 比如 AT91RM9200 處 理外 設(shè) MOSI MISO SCLK I O GND SI SO CLK CS GND 圖 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)外圍器件直接接口 SPI 接口一般使用 4 條線 串行時(shí)鐘線 SCK 主機(jī)輸入 從機(jī)輸出數(shù)據(jù)線 MISO 主機(jī)輸出 從機(jī)輸入數(shù)據(jù)線 MOST 和低電平有效的從機(jī)選 擇線 SS 有的 SPI 接口芯片帶有中斷信號(hào)線 INT 或 INT 有的 SPI 接口芯片沒(méi)有 主機(jī)輸出 從機(jī)輸入數(shù)據(jù)線 MOSI SPI 的通信原理很簡(jiǎn)單 它以主從方式工作 這種模式通常有一個(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í)鐘 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 是控制芯片是否工作 也就是說(shuō)只有片選信號(hào)為預(yù)先規(guī)定的使能信 號(hào)時(shí) 高電位或低電位 對(duì)此芯片的操作才有效 否則會(huì)被忽略 這就允許在 同一主機(jī)上連接多個(gè) SPI 設(shè)備 其余的 3 根線是負(fù)責(zé)通信的 通訊是通過(guò)數(shù)據(jù)交換完成的 SPI 是串行通訊 協(xié)議 也就是說(shuō)數(shù)據(jù)是一位一位的傳輸?shù)?這就是 SCLK 時(shí)鐘線存在的原因 由 SCLK 提供時(shí)鐘脈沖 SDI SDO 則基于此脈沖完成數(shù)據(jù)傳輸 數(shù)據(jù)輸出通過(guò) SDO 線 數(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) 沒(méi)有時(shí)鐘跳變時(shí)從設(shè)備不采集或傳送數(shù)據(jù) 也就是說(shuō)主設(shè)備通過(guò)對(duì) SCLK 時(shí)鐘線 的控制可以完成對(duì)通訊的控制 SPI 還是一個(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è)來(lái)決定 其二 二者的配置應(yīng)該保持一致 即主設(shè)備的SDO 同從設(shè)備的 SDO 配置一致 主設(shè)備的 SDI 同從設(shè)備的 SDI 配置一致 因?yàn)橹鲝脑O(shè)備是在 SCLK 的控制下同時(shí)發(fā)送和接收數(shù)據(jù) 并通過(guò) 2 個(gè)雙向移位寄存器來(lái)交換數(shù) 據(jù)在點(diǎn)對(duì)點(diǎn)的通信中 SPI 接口不需要進(jìn)行尋址操作且為全雙工通信 顯得簡(jiǎn)單 高效 在多個(gè)從設(shè)備的系統(tǒng)中 每個(gè)從設(shè)備需要獨(dú)立的使能信號(hào) 硬件上比 I2C 第二章 SPI Flash Controller 簡(jiǎn)介5 系統(tǒng)要稍微復(fù)雜一些 最后 SPI 接口的一個(gè)缺點(diǎn) 沒(méi)有指定的流控制 沒(méi)有應(yīng)答機(jī)制確認(rèn)是否接 收到數(shù)據(jù) 2 2 SPI Flash 簡(jiǎn)介 本次所設(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 及 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 Controller 設(shè)計(jì)環(huán)境 3 1 Verilog HDL 語(yǔ)言簡(jiǎn)介 Verilog HDL 是在 1983 年由 Gateway Design Automation GDA 公司的 Phil Moorby 首創(chuàng)的 1989 年 Cadence Design Systems 公司收購(gòu)了 GDA 公司 并 于 1990 年公開(kāi) Verilog HDL 語(yǔ)言 極大地推動(dòng)了 Verilog HDL 的發(fā)展 基于 Verilog HDL 的優(yōu)越性 IEEE 于 1995 年制定了 Verilog HDL 的 IEEE 標(biāo)準(zhǔn) 即 Verilog HDL1364 1995 Verilog HDL 具有以下特點(diǎn) 能形式化地抽象表示電路的結(jié)構(gòu)和行為 借用 高級(jí)語(yǔ)言的結(jié)構(gòu)和語(yǔ)句 如循環(huán)語(yǔ)言 賦值語(yǔ)言等 簡(jiǎn)化了電路行為的描述 能在多個(gè)層次上對(duì)所設(shè)計(jì)的電路進(jìn)行描述 內(nèi)置了基本的邏輯門(mén) 更接近開(kāi)關(guān)級(jí) 電路 可以使用用戶自定義原語(yǔ) UDP 使得設(shè)計(jì)更加靈活 等等 與 VHDL 語(yǔ)言相比 Verilog HDL 和 VHDL 作為描述硬件電路設(shè)計(jì)的語(yǔ)言 其共同的特點(diǎn)在于 能形式化地抽象電路的行為和結(jié)構(gòu) 支持邏輯設(shè)計(jì)中層次與 范圍的描述 可借用高級(jí)語(yǔ)言的精巧結(jié)構(gòu)來(lái)簡(jiǎn)化電路行為的描述 具有電路仿真 與驗(yàn)證機(jī)制以保證設(shè)計(jì)的正確性 支持電路描述由高層到底層的綜合轉(zhuǎn)換 硬件 描述與實(shí)現(xiàn)工藝無(wú)關(guān) 有關(guān)工藝參數(shù)可通過(guò)語(yǔ)言提供的屬性包括進(jìn)去 易于理 解和設(shè)計(jì)重用 但是 Verilog HDL 和 VHDL 又各有其自己的特點(diǎn) 與 VHDL 相比 Verilog HDL 最大的特點(diǎn)在于它是一種非常容易掌握的硬件描述語(yǔ)言 而且和 C 語(yǔ)言有 許多相似之處 并繼承和借鑒了 C 語(yǔ)言的多種操作符和語(yǔ)法結(jié)構(gòu) 而且 Verilog HDL 在開(kāi)關(guān)級(jí)電路的建模能力比 VHDL 要強(qiáng) 而與 Verilog HDL 相比 VHDL 則顯得嚴(yán)謹(jǐn)?shù)亩?比較抽象 所以掌握起來(lái)比較困難 還有 VHDL 在系統(tǒng)級(jí)建模 方面要比 Verilog HDL 強(qiáng)一些 這兩種語(yǔ)言各有其特點(diǎn) 而且都在不斷完善 2001 年公布的 Verilog IEEE 1364 2001 標(biāo)準(zhǔn) 使得 Verilog 語(yǔ)言在綜合和仿真性能方面有了大幅度的提高 學(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ì)開(kāi)發(fā)環(huán)境簡(jiǎn)介 Linux 是一套免費(fèi)使用和自由傳播的類 Unix 操作系統(tǒng) 它主要用于基于 Intel x86 系列 CPU 的計(jì)算機(jī)上 這個(gè)系統(tǒng)是由世界各地的成千上萬(wàn)的程序員 設(shè)計(jì)和實(shí)現(xiàn)的 其目的是建立不受任何商品化軟件的版權(quán)制約的 全世界都能 自由使用的 Unix 兼容產(chǎn)品 Linux 以它的高效性和靈活性著稱 它能夠在PC 計(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ǔ)言編譯器等 應(yīng)用軟件 它還包括帶有多個(gè)窗口管理器的X Window 圖形用戶界面 如同 我們使用 Windows NT 一樣 允許我們使用窗口 圖標(biāo)和菜單對(duì)系統(tǒng)進(jìn)行操作 VI 編輯器是 Linux 和 Unix 上最基本的文本編輯器 工作在字符模式下 由 于不需要圖形界面 使它成了效率很高的文本編輯器 盡管在Linux 上也有 很多圖形界面的編輯器可用 但 VI 在系統(tǒng)和服務(wù)器管理中的 功能是那些圖 形編輯器所無(wú)法比擬的 VI 編輯器是 Visual interface 的簡(jiǎn)稱 通常稱之為 VI 它在 Linux 上的 地位就像 Edit 程序在 DOS 上一樣 它可以執(zhí)行輸出 刪除 查找 替換 塊 操作等眾多文本操作 而且用戶可以根據(jù)自己的需要對(duì)其進(jìn)行定制 這是其他 編輯程序所沒(méi)有的 VI 編輯器并不是一個(gè)排版程序 它不像Word 或 WPS 那樣可以對(duì)字體 格式 段落 等其他屬性進(jìn)行編排 它只是一個(gè)文本編輯程 序 沒(méi)有菜單 只有命令 而且命令繁多 Vi 有 3 種基本工作模式 命令行模 式 文本輸入模式和末行模式 VIM 是 VI 的加強(qiáng)版 比 vi 更容易使用 vi 的命令幾乎全部都可以在 vim 上使用 要在 Linux 下編寫(xiě)文本或語(yǔ)言程序 您首先必須選擇一種文本編 輯器 可以選擇使用 vim 編輯器 使用它的好處是幾乎每一個(gè)版本的Linux 都會(huì)有它的存在 然而它是在文本模式下使用 需要記憶一些基本的命令操作 方式 第三章 SPI Flash Controller 設(shè)計(jì)環(huán)境9 3 3 數(shù)字電路設(shè)計(jì)方法 數(shù)字電路設(shè)計(jì)中主要有兩種基本的設(shè)計(jì)方法 自底向上和自頂向下設(shè)計(jì)方法 在自頂向下的設(shè)計(jì)方法中 我們首先定義頂層模塊 然后分析實(shí)現(xiàn)頂層模塊 功能需要那些必要的子模塊 然后按照相同的方法對(duì)子模塊進(jìn)行分解 知道無(wú)法 進(jìn)一步細(xì)分的最底層模塊為止 在自底向上的設(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)一步使用這些底層模塊來(lái)搭建其高 層模塊 兩者的工作按相反的方向獨(dú)立的進(jìn)行 直至在某一中間點(diǎn)會(huì)合 這是 電路設(shè)計(jì)者已經(jīng)使用開(kāi)關(guān)級(jí)原語(yǔ)創(chuàng)建了一個(gè)底層功能塊庫(kù) 而邏輯設(shè)計(jì)設(shè)也通過(guò) 使用自頂向下的方法將整個(gè)設(shè)計(jì)分解為由庫(kù)單元構(gòu)成的結(jié)構(gòu)描述 3 4 Verilog HDL 的設(shè)計(jì)流程 在用 Verilog HDL 進(jìn)行硬件設(shè)計(jì)的過(guò)程中 開(kāi)發(fā)人員通常是將設(shè)計(jì)分層三個(gè) 層次進(jìn)行設(shè)計(jì) 第一層次是行為描述 就是用數(shù)學(xué)模型對(duì)整個(gè)系統(tǒng)進(jìn)行的描述 一般來(lái)說(shuō) 對(duì)系統(tǒng)進(jìn)行行為描述的目的是為了在系統(tǒng)設(shè)計(jì)的初始階段 通過(guò)對(duì)系統(tǒng)行為的仿 真來(lái)發(fā)現(xiàn)設(shè)計(jì)中存在的問(wèn)題 在行為描述階段并不真正考慮實(shí)際的算法和操作用 什么方法來(lái)實(shí)現(xiàn) 注意力主要集中在系統(tǒng)的結(jié)構(gòu)和工作過(guò)程能否達(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í)現(xiàn) 要想得到硬件的 具體實(shí)現(xiàn) 必須將行為方式的 Verilog HDL 程序改為 RTL 方式的程序 在編寫(xiě)完 RTL 方式的程序之后 就可以利用仿真工具對(duì)程序進(jìn)行仿真了 如果仿真通過(guò) 就可以利用邏輯綜合工具進(jìn)行綜合了 第三層次是邏輯綜合 在這一階段主要是利用邏輯綜合工具 將 RTL 級(jí)的程 序轉(zhuǎn)換成用基本邏輯元件表示的文件 門(mén)級(jí)網(wǎng)表 并且綜合結(jié)果也可以以原理 SPI IP 接口設(shè)計(jì)10 圖的方式輸出 得到網(wǎng)表之后 還需要進(jìn)行門(mén)級(jí)仿真和定時(shí)檢查 其設(shè)計(jì)過(guò)程如圖 3 1 所示 總體方案 行為級(jí)描述 行為級(jí)仿真 RTL級(jí)描述 RTL級(jí)仿真 邏輯綜合 優(yōu)化 門(mén)級(jí)仿真 定時(shí)檢查 門(mén)級(jí)網(wǎng)表輸出 圖 3 1 Verilog HDL 設(shè)計(jì)流程 3 5 編譯 模擬仿真 EDA tool 簡(jiǎn)介 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 信號(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 滿中斷和傳輸完成中斷 當(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 CON 8 為 0 enable 中斷信號(hào) SPI INT 有效 否則無(wú)效 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è)試情況 偽 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 中 定義了寄存器的讀寫(xiě)任務(wù) 便于測(cè)試更有效的進(jìn)行 設(shè)計(jì)方案為 SPI Flash Controller 設(shè)計(jì)本身 SPI 閃存 為模擬 Flash 全部行為的一個(gè)模型程序 存儲(chǔ)器 期望值 用來(lái)存儲(chǔ)與讀出數(shù)據(jù)比對(duì)的原始數(shù)據(jù) 存儲(chǔ)器 測(cè)試輸出數(shù)據(jù) 用來(lái)存儲(chǔ)從 Flash 中讀出的數(shù)據(jù) 監(jiān)視器用于實(shí)現(xiàn)原始數(shù)據(jù)與測(cè)試輸出數(shù)據(jù)的自動(dòng)比對(duì)功能 以判斷設(shè)計(jì) 的正確性 SPI IP 接口設(shè)計(jì)28 5 2 測(cè)試文件架構(gòu) SPI Flash Controller src macro sim output waveform model log golden tsk pattern sim v simfiles f makefile cov work 文件 文件夾注釋 管理文件 測(cè)試功能點(diǎn) 仿真記錄文件 行為模擬程序 功能測(cè)試覆蓋率分析文件 被編譯文件列表 仿真波形 期望值 測(cè)試中設(shè)計(jì)的輸出 頂層仿真模塊 空 圖 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)功能描述功能描述 開(kāi)始硬件復(fù)位 硬件復(fù)位RST B 進(jìn)程中硬件復(fù)位 開(kāi)始軟件復(fù)位 復(fù)位 軟件復(fù)位SW RST 進(jìn)程中軟件復(fù)位 寄存器讀寫(xiě)寄存器的正常讀寫(xiě) R RGST WE R RGST RE R RGST SPI SEL R RGST BUS 對(duì)每個(gè)寄存器進(jìn)行寫(xiě)操 作 然后讀取每個(gè)寄存 器的值 第五章 SPI Flash Controller 測(cè)試與驗(yàn)證29 續(xù)表續(xù)表 功能功能子功能子功能控制信號(hào)控制信號(hào)功能描述功能描述 寫(xiě)保護(hù)SPI WP B 保護(hù) Flash 狀態(tài)寄存器內(nèi)容 不被改變 Write enable Write enable 必須在每一個(gè) 寫(xiě)操作前寫(xiě)入 Flash Write disable ADR EN DATA RW BYTE CNT WE EN STA ID FAST 將狀態(tài)寄存器 WEL 位置 0 寫(xiě)狀態(tài)寄存器寫(xiě)狀態(tài)寄存器 寫(xiě)操作 數(shù)據(jù)寫(xiě)入 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ù)準(zhǔn)確 寫(xiě)入地址后 需要等待 8 個(gè)周期才能采集 數(shù)據(jù) 讀操作 讀廠商信息 ADR EN DATA RW BYTE CNT WE EN STA ID FAST 將 Falsh 廠商信息讀入 SPI STATUS ID 寄存器 片擦除將整個(gè)存儲(chǔ)空間寫(xiě)為全 1 Sector 擦除 將寫(xiě)入地址的對(duì)應(yīng) Sector 寫(xiě) 為全 1 擦除 Block 擦除 ADR EN DATA RW BYTE CNT WE EN STA ID FAST 將寫(xiě)入地址的對(duì)應(yīng) Block 寫(xiě) 為全 1 中斷傳輸完成中斷BYTE CNT WE EN SPI 操作執(zhí)行完之后 發(fā)出 有效的中斷信號(hào) 寫(xiě)入數(shù)據(jù) SPI TX REQ SPI TX CLR FIFO 為空 將數(shù)據(jù)寫(xiě)入 FIFO 寫(xiě)滿后將 TX REQ 清除DMA 模式 DMA 模式 讀出數(shù)據(jù) SPI RX REQ SPI RX CLR FIFO 為滿 從 FIFO 中將數(shù) 據(jù)讀出 讀空后將 RX REQ 清除 SPI IP 接口設(shè)計(jì)30 續(xù)表續(xù)表 功能功能子功能子功能控制信號(hào)控制信號(hào)功能描述功能描述 讀寫(xiě)STA ID FAST正常的讀寫(xiě) 空狀態(tài)時(shí)的 TX REQ CPU DMA 檢查能否在 FIFO 為空時(shí) 正常準(zhǔn)確的發(fā)出 TX REQ 信號(hào) FIFO 滿狀態(tài)使得 RX REQ CPU DMA 檢查能否在 FIFO 為滿時(shí) 正常準(zhǔn)確的發(fā)出 RX REQ 信號(hào) 讀操作 讀操作 配置信息及指 令隨機(jī)錯(cuò)誤 非正常操作 寫(xiě)操作 ADR EN DATA RW BYTE CNT WE EN STA ID FAST 寫(xiě)操作 配置正確 指 令錯(cuò)誤 5 4 測(cè)試流程 整個(gè) SPI Flash Controller 支持對(duì) Flash 的一些基本的讀寫(xiě)操作 如果需要驗(yàn) 證讀寫(xiě)操作的正確性 必須讀寫(xiě)操作一起執(zhí)行 才能得到測(cè)試輸出數(shù)據(jù) 以便和 原始數(shù)據(jù)做比對(duì) 在測(cè)試寫(xiě)操作的正確性前 必須證明讀操作的正確性 首先 修改測(cè)試用的 SPI 后端 Flash 的行為模擬程序的 Memory 默認(rèn)值為不同的值 這里我設(shè)定成與 其地址相同 然后初始化整個(gè) SPI Flash 這時(shí) SPI Flash 中的初始數(shù)據(jù)可知 通 過(guò) Register Bus 給 SPI Flash 控制器配置讀操作所需指令 地址 然后發(fā)送讀指令 讀出數(shù)據(jù)與 SPI Flash 中的初始化數(shù)值做對(duì)比 如果相同則證明讀操作正確 讀操作測(cè)試正確后就可以開(kāi)始寫(xiě)操作的正確性 在讀操作正確的前提下 再來(lái)證明寫(xiě)操作的正確性 同樣通過(guò) Register Bus 給 SPI Flash 控制器配置寫(xiě)操作指令 地址和激勵(lì)數(shù)據(jù) 然后發(fā)送寫(xiě)指令 寫(xiě)入 Flash 中地址所指的相應(yīng)區(qū)域 再通過(guò) Register Bus 配置讀指令 和同樣的地址 然后讀出地址所指的相應(yīng)區(qū)域 讀出數(shù)據(jù)如果與先前寫(xiě)入數(shù)據(jù)相同 則證明寫(xiě)操 作正確 第五章 SPI Flash Controller 測(cè)試與驗(yàn)證31 擦除操作在讀寫(xiě)操作正確的前提下 再進(jìn)行測(cè)試 先通過(guò)寫(xiě)操作給 Flash 中 的特定區(qū)域?qū)懭胍恍?shù)據(jù) 然后通過(guò) Register Bus 配置擦除指令 控制器再發(fā)送 擦除指令 對(duì) Flash 中的特定區(qū)域進(jìn)行擦除 寫(xiě) 1 然后再通過(guò)讀指令讀出相 應(yīng)區(qū)域 以讀出數(shù)據(jù)是否為全 1 判斷擦除指令是否正確 下面以擦除指令為例說(shuō)明具體的測(cè)試流程 通過(guò) 所有數(shù)據(jù)為1 Yes No No 傳輸完成 Yes 開(kāi)始 結(jié)束 向Flash某地址寫(xiě)入部分?jǐn)?shù)據(jù) 失敗 向Flash寫(xiě)擦除指令 擦除掉 剛剛寫(xiě)入的數(shù)據(jù) Yes 讀取擦除位置的數(shù)據(jù) BUSY位為0 No 圖 5 3 擦除指令測(cè)試流程 5 5 FPGA 驗(yàn)證 5 5 1 C CODE 的仿真 當(dāng)設(shè)計(jì)的功能仿真測(cè)試全部通過(guò)以后 就可以開(kāi)始驅(qū)動(dòng)的編寫(xiě)和仿真測(cè)試 首先把設(shè)計(jì)代碼接到平臺(tái)的代碼之中 然后把編寫(xiě)的 C 驅(qū)動(dòng)通過(guò) IDE 軟件編譯成 仿真需要的 hex 文件 然后像之前的仿真測(cè)試一樣對(duì)設(shè)計(jì)進(jìn)行全面測(cè)試 此次仿真的主要目的在于測(cè)試設(shè)計(jì)與平臺(tái)的連接是否正確 并且檢驗(yàn)驅(qū)動(dòng)程 序書(shū)寫(xiě)是否正確 合理 全面 SPI IP 接口設(shè)計(jì)32 5 5 2 FPGA 硬件測(cè)試 所有仿真結(jié)束并通過(guò)以后 利用 IDE 把設(shè)計(jì)編譯成 srec 文件 然后利用 ISE 生成 FPGA 平臺(tái)下載所需的 MCS 文件 生成的 MCS 文件即可以通過(guò)計(jì)算機(jī)并 口下載到 FPGA 平臺(tái)中 將下載好的 FPGA 平臺(tái)進(jìn)行硬件測(cè)試 查看功能是否達(dá)到要求 若未達(dá)到要 求 則分析原因 找出錯(cuò)誤 進(jìn)行修改 最終達(dá)到最終 SPEC 所描述的功能 硬件驗(yàn)證原理圖 SPI 總線橋 需要測(cè)試的設(shè)計(jì) 方案 外設(shè)Flash RGST 中斷 FPGA 平平臺(tái)臺(tái) PC 外部接口SPI 接口 圖 5 4 FPGA 驗(yàn)證原理圖 注 實(shí)際的 FPGA 測(cè)試中 使用的是 XC3S5000 平臺(tái)的 UART IP 接口 驗(yàn)證時(shí)我們通過(guò) UART 接口讓 FPGA 與 PC 機(jī)相連 PC 機(jī)上的測(cè)試程序就 可以通過(guò)各個(gè) function 測(cè)試設(shè)計(jì)的各個(gè)功能 在測(cè)試機(jī)上通過(guò) IDE 軟件獲取不同 寄存器的值 與期望值作對(duì)比 以此驗(yàn)證設(shè)計(jì)的正確性 5 6 驗(yàn)證結(jié)果 在整個(gè)仿真和測(cè)試的過(guò)程中還是遇到了不少的問(wèn)題 比如仿真軟件 測(cè)試軟 件環(huán)境不熟悉 自己的設(shè)計(jì)代碼有邏輯 時(shí)序缺陷等 但通過(guò)耐心的檢查和仔細(xì) 修改 最后通過(guò)了所有的測(cè)試 很好的完成如下功能 Register bus 總線接口功能測(cè)試通過(guò) SPI 總線接口測(cè)試通過(guò)功能測(cè)試通過(guò) SPI 模式傳輸功能測(cè)試通過(guò) 深度 8 寬度 32 的 FIFO 功能測(cè)試通過(guò) 以下操作指令 Write Enable Disable Read Write Status Register Read Data 第五章 SPI Flash Controller 測(cè)試與驗(yàn)證33 Fast Read Page Program Block Sector Chip Erase 功能測(cè)試通過(guò) 傳輸開(kāi)始可控制功能測(cè)試通過(guò) 可配置的傳輸字節(jié)數(shù) maximum 32 little endian 功能測(cè)試通過(guò) 數(shù)據(jù)緩沖器空 滿中斷機(jī)制功能測(cè)試通過(guò) 傳輸完成中斷機(jī)制功能測(cè)試通過(guò) 中斷狀態(tài)查詢功能測(cè)試通過(guò) 中斷狀態(tài)寫(xiě) 1 清除功能測(cè)試通過(guò) 可屏蔽中斷信號(hào)功能測(cè)試通過(guò) 系統(tǒng)時(shí)鐘 25MHZ 100MHZ 功能測(cè)試通過(guò) 可配置的 SPI 接口傳輸速度 1 4 system clock 1 8 system clock 1 16 system clock 功能測(cè)試通過(guò) 軟件復(fù)位功能測(cè)試通過(guò) SPI IP 接口設(shè)計(jì)34 第六章 總 結(jié)35 第六章 總 結(jié) 至此 SPI Flash Controller 的具體設(shè)計(jì)已經(jīng)全部完成 經(jīng)過(guò)仿真和測(cè)試 設(shè) 計(jì)完成了 SPI Flash Controller 的發(fā)送指令功能 達(dá)到預(yù)期的目的 通過(guò)這 次設(shè)計(jì) 我了解了硬件設(shè)計(jì)的全部流程 熟悉了 Verilog HDL 的具體應(yīng)用 并且 獨(dú)立地完成其具體流程如圖 2 1 所示 SPI Flash Controller 的設(shè)計(jì)和驗(yàn)證 包括軟 體驗(yàn)證和硬體驗(yàn)證 對(duì)于 IC 設(shè)計(jì)有了比較深的認(rèn)識(shí) 并總結(jié)了很多在 IC 設(shè)計(jì) 中需要注意的問(wèn)題 為以后的深入學(xué)習(xí)和工作打下良好的基礎(chǔ) 設(shè)計(jì)內(nèi)容 設(shè)計(jì)內(nèi)容 在整個(gè)工作之中 完成了對(duì) SPI Flash Controller 設(shè)計(jì)規(guī)則的學(xué)習(xí) 模塊化劃 分整理 代碼的仿真 驅(qū)動(dòng)的編寫(xiě)以及 FPGA 驗(yàn)證 最終完成所要求的 SPI Flash Controller 設(shè)計(jì) 由于時(shí)間過(guò)于倉(cāng)促 其中對(duì)于屏蔽錯(cuò)誤配置信息方面做的不是很 完善 并且在兼容性方面沒(méi)有考慮成熟 但總體上實(shí)現(xiàn)了控制器的全部功能 以 及可以保證能過(guò)按照不同的配置進(jìn)行正常穩(wěn)定的傳輸 對(duì)于錯(cuò)誤的配置信息 設(shè)計(jì)中在讀操作下允許所有寄存器的配置信息錯(cuò)誤 但在寫(xiě)操作下 為了保證設(shè)計(jì)能準(zhǔn)確的運(yùn)行 要求出指令以外的配置信息必須正 確或者是其他指令的正確配置 指令配置可以任意 此設(shè)計(jì)支持 Register 總線 FIFO 深度為 8 寬度 32 可以使用軟件進(jìn)行復(fù)位 以及 FIFO 狀態(tài)查詢 中斷使能等功能 整個(gè)設(shè)計(jì)中大體分為總線接口 狀態(tài)控 制模塊
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版公司擔(dān)保個(gè)人借款協(xié)議
- 2024旅游餐飲業(yè)免責(zé)協(xié)議書(shū)范本確保游客飲食安全2篇
- 2025版勞動(dòng)合同變更中員工離職前工作交接及保密協(xié)議3篇
- 2025年度水泥預(yù)制板生產(chǎn)與銷售合同6篇
- 2025版文化創(chuàng)意產(chǎn)業(yè)園區(qū)租賃承包經(jīng)營(yíng)合同3篇
- 2024汪育與配偶汪某離婚協(xié)議及共同生活費(fèi)用承擔(dān)協(xié)議3篇
- 2024版蚌埠市建筑幕墻工程承包合同3篇
- 2024年版:專利許可協(xié)議與技術(shù)說(shuō)明
- 2024年項(xiàng)目評(píng)估與咨詢服務(wù)合同
- 2024年電子產(chǎn)品區(qū)域代理銷售協(xié)議版B版
- 網(wǎng)絡(luò)安全運(yùn)維培訓(xùn)測(cè)試題
- 催化氧化合成4-氯-2-硝基苯甲酸_圖文
- 民政部主管社團(tuán)管理辦法
- 同濟(jì)大學(xué)本科生學(xué)籍管理規(guī)定
- 工地施工臨時(shí)用水及計(jì)算
- 三年級(jí)數(shù)學(xué)寒假每日一練
- 最新宜昌市中考數(shù)學(xué)21題圓訓(xùn)練(1)教師版有答案
- 工作計(jì)劃酒店上半年工作總結(jié)及下半年工作計(jì)劃
- 石油詞匯大全-俄語(yǔ)專業(yè)詞匯
- 東營(yíng)市學(xué)校安全工作先進(jìn)個(gè)人申報(bào)表岳向明
評(píng)論
0/150
提交評(píng)論