• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于FPGA的HS400模式eMMC控制器設(shè)計(jì)與實(shí)現(xiàn)*

      2018-07-05 11:49:58吳利舟
      關(guān)鍵詞:校驗(yàn)命令時(shí)鐘

      張 煜,陳 微,吳利舟,肖 儂

      (1.國防科技大學(xué)計(jì)算機(jī)學(xué)院,湖南 長沙 410073; 2.國防科技大學(xué)高性能國家重點(diǎn)實(shí)驗(yàn)室,湖南 長沙 410073)

      1 引言

      嵌入式多媒體卡eMMC(embedded Multi Media Card)是一種主要針對(duì)移動(dòng)設(shè)備的內(nèi)嵌式存儲(chǔ)設(shè)備,用于代碼和數(shù)據(jù)的存儲(chǔ)。eMMC結(jié)構(gòu)主要包括快閃存儲(chǔ)器設(shè)備NAND Flash、主控制器以及多媒體卡MMC(Multi Media Card)接口,外部為球柵陣列BGA(Ball Grid Array)封裝。eMMC具有體積小、復(fù)雜度低、集成度高、布線難度低等特點(diǎn)。eMMC可以很好地解決內(nèi)部NAND Flash的MLC(Multi-Level Cell)與TLC(Tri-Level-Cell)管理,ECC(Error Correcting Code)糾錯(cuò)、區(qū)塊管理、損耗均衡管理、指令管理、低功耗管理等方面的問題。eMMC能夠在提供移動(dòng)設(shè)備所需要的功能和性能的同時(shí)保持低功耗,并且支持大數(shù)據(jù)的高帶寬傳輸與代碼中常見的小的隨機(jī)數(shù)據(jù)訪問,同時(shí)提供多種安全功能。2015年3月,JEDFC發(fā)布最新的eMMC 5.1(JESD84-B51)[1]協(xié)議標(biāo)準(zhǔn),在各大生產(chǎn)商根據(jù)新的協(xié)議標(biāo)準(zhǔn)推出芯片的同時(shí),開發(fā)基于新協(xié)議的高速、安全、低功耗的eMMC控制器具有重要的意義和應(yīng)用前景。當(dāng)前基于eMMC 5.1標(biāo)準(zhǔn)協(xié)議所設(shè)計(jì)的eMMC控制器中大部分還停留在仿真階段,并且使用低速總線速度模式[2]。

      本文在FPGA平臺(tái)設(shè)計(jì)并實(shí)現(xiàn)了一種高速安全的eMMC控制器,利用最新的eMMC 5.1協(xié)議標(biāo)準(zhǔn),采用HS400高速源同步模式設(shè)計(jì),數(shù)據(jù)傳輸速率可達(dá)400 MB/s。在數(shù)據(jù)傳輸?shù)倪^程中為了保證數(shù)據(jù)傳輸?shù)恼_性和完整性,對(duì)數(shù)據(jù)使用CRC校驗(yàn)。利用FPGA高速并行的特點(diǎn)實(shí)現(xiàn)CRC校驗(yàn)和數(shù)據(jù)傳輸同時(shí)進(jìn)行,并使校驗(yàn)位緊隨數(shù)據(jù)位傳輸,因此最大化傳輸速率。設(shè)計(jì)針對(duì)最新的協(xié)議標(biāo)準(zhǔn),可以實(shí)現(xiàn)向下兼容,并適用于不同廠商推出的芯片。

      本文將eMMC控制器在硬件平臺(tái)上進(jìn)行實(shí)現(xiàn)和測試,結(jié)果表明eMMC控制器可正確完成讀寫指令解析以及高速讀寫操作[3]。實(shí)驗(yàn)平臺(tái)采用母板/子板總體架構(gòu),母板為Xilinx Zynq-7000 FPGA開發(fā)板Zedboard,子板為eMMC芯片制作而成的FMC(FPGA Mezzanine Card)子板[4]。eMMC控制器通過母板的FMC接口與子板進(jìn)行通信,通過執(zhí)行一系列連續(xù)的讀寫命令實(shí)現(xiàn)對(duì)設(shè)計(jì)方案的正確性驗(yàn)證。

      2 eMMC與HS400模式

      2.1 eMMC概述

      eMMC設(shè)備內(nèi)部由NAND Flash以及主控制器組成,帶有標(biāo)準(zhǔn)的MMC接口。eMMC通信包括11條通信總線,即CLK線、數(shù)據(jù)選通DS(Data Strobe)線、CMD線及DAT0-DAT7線。時(shí)鐘信號(hào)CLK控制eMMC設(shè)備讀寫頻率;DS由eMMC設(shè)備產(chǎn)生,用于控制HS400模式下數(shù)據(jù)讀頻率;CMD為雙向命令通道,用于命令與響應(yīng)的傳輸;DAT0-DAT7為雙向數(shù)據(jù)通道,用于數(shù)據(jù)的傳輸。

      eMMC上電或者復(fù)位后,根據(jù)協(xié)議,首先要對(duì)其進(jìn)行初始化操作。初始化操作成功后,可通過CMD線傳輸命令對(duì)eMMC設(shè)備進(jìn)行總線模式配置、數(shù)據(jù)讀寫等操作。

      如果需要使用高速總線模式,則可通過發(fā)送一系列命令配置需要的總線速度模式。eMMC定義了多種總線速度模式,如表1所示。本文設(shè)計(jì)是在HS400模式下展開的。

      Table 1 Bus speed modes表1 總線速度模式

      2.2 HS400模式

      HS400模式,即高速雙倍數(shù)據(jù)率DDR(Double Data Rate)模式,最高工作頻率為200 MHz,最高數(shù)據(jù)傳輸速率為400 MB/s。在HS400模式下,使用DAT0-DAT7線同時(shí)傳輸8比特?cái)?shù)據(jù),由eMMC設(shè)備生成的DS信號(hào)控制響應(yīng)、CRC校驗(yàn)響應(yīng)以及進(jìn)行讀操作時(shí)的數(shù)據(jù)傳輸頻率;CLK信號(hào)控制命令、寫操作時(shí)的數(shù)據(jù)傳輸?shù)阮l率。

      HS400模式僅支持單塊讀寫操作且塊大小固定為512 B。進(jìn)行讀寫操作的時(shí)候,通過DAT0-DAT7數(shù)據(jù)線進(jìn)行數(shù)據(jù)傳輸。當(dāng)沒有進(jìn)行數(shù)據(jù)傳輸?shù)臅r(shí)候,DAT0-DAT7處于高電平狀態(tài)。數(shù)據(jù)傳輸以塊為單位,在每一位數(shù)據(jù)線上,數(shù)據(jù)塊中數(shù)據(jù)按先后順序進(jìn)行傳輸,數(shù)據(jù)塊中包括一位開始位(為0)、數(shù)據(jù)流位、數(shù)據(jù)的CRC校驗(yàn)位,最后以一位終止位(為1)結(jié)束。在HS400模式下,寫操作的數(shù)據(jù)傳輸同步于時(shí)鐘信號(hào),讀操作的數(shù)據(jù)傳輸同步于DS信號(hào),且數(shù)據(jù)與CRC校驗(yàn)碼以DDR模式傳輸,即數(shù)據(jù)以每時(shí)鐘周期兩比特?cái)?shù)據(jù)率傳輸。

      數(shù)據(jù)塊使用的CRC16校驗(yàn)碼(每個(gè)數(shù)據(jù)塊中有兩個(gè)CRC16校驗(yàn)碼)分別為奇位校驗(yàn)碼與偶位校驗(yàn)碼。在高速源同步數(shù)據(jù)傳輸時(shí),使用CRC校驗(yàn)碼可以保證數(shù)據(jù)傳輸?shù)恼_性與完整性。

      3 eMMC控制器設(shè)計(jì)

      3.1 緩存框架設(shè)計(jì)

      完整的設(shè)計(jì)由六個(gè)部分組成,包括eMMC控制器以及若干外圍的輔助緩存,如圖1所示。eMMC控制器是整個(gè)架構(gòu)的核心,此外,本文在eMMC控制器的外圍增加了若干個(gè)緩存,進(jìn)行測試指令以及讀寫數(shù)據(jù)的緩存處理。Command_fifo中存放讀寫指令,指令主要包含操作類型和操作地址兩部分。Wr_data_fifo中存放寫數(shù)據(jù)塊。指令和數(shù)據(jù)塊由上層模塊所給出。Finish_command_fifo中存放已完成的讀寫指令。Rd_data_fifo中存放讀操作所讀出來的數(shù)據(jù)塊,完成的指令以及讀出的數(shù)據(jù)由下層模塊所確認(rèn)。當(dāng)執(zhí)行指令時(shí),eMMC_controller從Command_fifo中順序讀取指令,執(zhí)行指令解析操作,完成數(shù)據(jù)傳輸并將完成的指令及讀出的數(shù)據(jù)分別放入Finish_command_fifo與Rd_data_fifo中。輔助緩存均由集成開發(fā)環(huán)境Vivado提供的ip核先進(jìn)先出FIFO(First In First Out)實(shí)例化,F(xiàn)IFO的特點(diǎn)是順序讀出數(shù)據(jù),數(shù)據(jù)地址由內(nèi)部讀寫指針自動(dòng)加1完成。因此,若數(shù)據(jù)寫操作出現(xiàn)錯(cuò)誤,需要重新執(zhí)行該寫操作的時(shí)候,由于FIFO的特性,將無法從Wr_data_fifo中取得所需數(shù)據(jù)。因此,本文在eMMC控制器中增加一個(gè)512 B的隨機(jī)存取存儲(chǔ)器RAM(Ramdom Access Memory),命名為Write_backup,進(jìn)行數(shù)據(jù)寫操作的時(shí)候,同時(shí)將數(shù)據(jù)備份到Write_backup中,當(dāng)出現(xiàn)寫出錯(cuò)需要重新傳輸數(shù)據(jù)時(shí),eMMC_controller選擇將 Write_backup中數(shù)據(jù)寫入eMMC相應(yīng)地址中。

      Figure 1 Overall design diagram圖1 整體設(shè)計(jì)框架圖

      3.2 eMMC控制器模塊設(shè)計(jì)

      eMMC控制器執(zhí)行eMMC設(shè)備的初始化操作、模式轉(zhuǎn)換操作以及讀寫數(shù)據(jù)傳輸操作。

      Figure 2 Internal modules of eMMC controller圖2 eMMC控制器內(nèi)部模塊

      如圖2所示,eMMC控制器內(nèi)部分為六個(gè)模塊:時(shí)鐘切換模塊、初始化模塊、指令解析模塊、讀寫控制模塊、命令接口模塊以及數(shù)據(jù)接口模塊,各模塊協(xié)同工作。

      3.2.1 時(shí)鐘切換模塊

      在eMMC設(shè)備初始化階段與數(shù)據(jù)傳輸階段使用不同的工作頻率。初始化階段要求eMMC控制器的工作頻率小于400 KHz;而在進(jìn)行數(shù)據(jù)傳輸?shù)臅r(shí)候,為了提高數(shù)據(jù)傳輸速率,eMMC控制器的工作頻率最高可達(dá)到200 MHz。因此,在設(shè)備初始化和數(shù)據(jù)傳輸兩個(gè)階段,eMMC控制器所使用的時(shí)鐘頻率分別設(shè)置為400 KHz與200 MHz,故需要一個(gè)時(shí)鐘切換模塊對(duì)時(shí)鐘進(jìn)行切換。

      在eMMC設(shè)備上電之后,eMMC控制器以400 KHz的頻率對(duì)eMMC設(shè)備進(jìn)行初始化操作。當(dāng)eMMC設(shè)備成功進(jìn)入HS400模式之后,時(shí)鐘切換模塊將時(shí)鐘頻率切換為200 MHz,eMMC控制器根據(jù)指令進(jìn)行數(shù)據(jù)傳輸操作。

      3.2.2 初始化模塊

      初始化模塊在eMMC設(shè)備上電之后首先對(duì)設(shè)備進(jìn)行初始化操作,為設(shè)備分配相對(duì)應(yīng)的相對(duì)設(shè)備地址RCA(Relative device address),后續(xù)命令根據(jù)RCA確定通信設(shè)備。初始化操作結(jié)束后,配置總線速度模式至HS400模式。初始化操作中所有通信都只使用CMD線,工作頻率設(shè)置為0~400 KHz。

      初始化流程圖如圖3所示,具體操作如下:

      (1)Power up至Idle State:eMMC設(shè)備上電之后進(jìn)入Idle State,或者使用命令GO_IDLE_STATE(參數(shù)為0x00000000的CMD0)進(jìn)入Idle State。

      (2)Idle State至Ready State:eMMC設(shè)備進(jìn)入Idle State后,發(fā)送CMD1(SEND_OP_COND)命令,請求eMMC設(shè)備通過CMD線發(fā)送OCR(Operating Conditions Register)內(nèi)容。CMD1響應(yīng)中有一位為busy位,標(biāo)志eMMC設(shè)備是否還在進(jìn)行上電復(fù)位。busy位為0,上電復(fù)位尚未完成,需要一直向eMMC設(shè)備發(fā)送CMD1; busy位為1,則進(jìn)入Ready State,只有最后一個(gè)CMD1的響應(yīng)OCR值有效。

      Figure 3 Flow chart of initialization圖3 初始化流程圖

      (3)Ready State至Identification State:進(jìn)入Ready State后,向eMMC設(shè)備發(fā)送CMD2(ALL_SEND_CID)命令,請求eMMC設(shè)備發(fā)送其CID號(hào)。當(dāng)eMMC設(shè)備成功地向eMMC控制器傳送了其CID號(hào)后,eMMC設(shè)備進(jìn)入Identification State。

      (4)Identification State至Stand-by State:進(jìn)入Stand-by State后,eMMC控制器向eMMC設(shè)備發(fā)送CMD3(SET_RELATIVE_ADDR),為eMMC設(shè)備分配RCA。一旦eMMC設(shè)備接收到RCA后,就進(jìn)入Stand-by State。CMD2為廣播信號(hào),當(dāng)有多個(gè)eMMC設(shè)備的時(shí)候,一次只有一個(gè)eMMC設(shè)備成功發(fā)送其CID號(hào)并被分配RCA。循環(huán)發(fā)送CMD2與CMD3,直到所有eMMC設(shè)備被分配RCA。

      (5)Stand-by State至Transfer State:當(dāng)eMMC設(shè)備處于Stand-by State時(shí),通過發(fā)送帶有eMMC設(shè)備RCA參數(shù)的CMD7(SELECT)命令選中設(shè)備,使eMMC設(shè)備進(jìn)入Transfer State。進(jìn)入Transfer State后,表示eMMC設(shè)備完成初始化操作,可進(jìn)行傳輸模式的配置、數(shù)據(jù)傳輸?shù)炔僮鳌?/p>

      初始化操作后eMMC設(shè)備處于默認(rèn)總線速度模式,即速度模式為 Backwards Compatible Timing。開啟HS400模式流程如圖4所示,要執(zhí)行以下步驟:

      (1)當(dāng)eMMC設(shè)備經(jīng)過初始化后處于Transfer State時(shí),發(fā)送CMD6(SWITCH)命令配置總線速度模式,設(shè)置命令中HS_TIMING參數(shù)為0x1,轉(zhuǎn)換為High Speed模式。

      (2)當(dāng)eMMC設(shè)備處于High Speed模式后,需要配置數(shù)據(jù)傳輸位寬為8比特并采取雙數(shù)據(jù)率傳輸模式。通過向eMMC設(shè)備設(shè)備發(fā)送CMD6命令對(duì)EXT_CSD寄存器中相應(yīng)內(nèi)容進(jìn)行修改,將BUS_WIDTH設(shè)置為0x86,即選擇雙數(shù)據(jù)率×8總線模式并開啟Enhanced Strobe。

      (3)設(shè)置完成之后,再向eMMC設(shè)備發(fā)送一次CMD6命令轉(zhuǎn)換數(shù)據(jù)傳輸模式,將HS_TIMING設(shè)置為0x3,即轉(zhuǎn)換到HS400模式。

      (4)成功轉(zhuǎn)換到HS400模式之后,將頻率提高到200 MHz,即可進(jìn)行正常的數(shù)據(jù)傳輸。

      Figure 4 Flow chart of enabling HS400圖4 HS400模式啟用流程圖

      3.2.3 指令解析模塊

      eMMC控制器的指令分為兩類:讀指令與寫指令。每條指令由操作碼與操作地址兩部分組成。操作碼為1位,用0、1分別代表寫指令、讀指令。操作地址為32位,地址為扇區(qū)地址,扇區(qū)大小為512 B。一條指令對(duì)相應(yīng)地址的一個(gè)扇區(qū)進(jìn)行讀或者寫操作。

      空閑狀態(tài)下,指令解析模塊從Command_fifo中讀取一條指令并進(jìn)行指令解析操作,根據(jù)操作碼類型,選擇進(jìn)入讀或?qū)懖僮麟A段,并構(gòu)造相應(yīng)的eMMC設(shè)備命令。這時(shí)指令解析模塊給讀寫控制模塊發(fā)送讀/寫開始信號(hào)。讀寫控制模塊開始進(jìn)行讀/寫操作,讀/寫操作完成后向指令解析模塊發(fā)送讀/寫結(jié)束信號(hào)。指令解析模塊等待接受讀/寫結(jié)束信號(hào),一旦接收到信號(hào)表示該指令讀/寫操作完成,指令解析模塊可準(zhǔn)備讀取下一條指令。指令解析模塊工作狀態(tài)機(jī)如圖5所示。

      Figure 5 State machine of instruction parsing module圖5 指令解析模塊狀態(tài)機(jī)

      3.2.4 讀寫控制模塊

      讀寫控制模塊對(duì)eMMC設(shè)備進(jìn)行讀寫操作??臻e狀態(tài)下,讀寫控制模塊若接收到指令解析模塊發(fā)送的讀開始信號(hào),則向命令接口模塊發(fā)送帶地址參數(shù)的CMD17(READ_SINGLE_BLOCK)。命令發(fā)送成功后若數(shù)據(jù)接口模塊經(jīng)CRC校驗(yàn)接收到正確的數(shù)據(jù),則讀操作完成,并向指令解析模塊發(fā)送讀完成信號(hào),回到空閑狀態(tài)繼續(xù)等待指令解析模塊信號(hào);接收到錯(cuò)誤的數(shù)據(jù)則重新發(fā)送相同的CMD17命令。

      空閑狀態(tài)下,讀寫控制模塊若接收到指令解析模塊發(fā)送的寫開始信號(hào),則向命令接口模塊發(fā)送帶地址參數(shù)的CMD24(WRITE_BLOCK),接著等待命令接口模塊返回CMD24響應(yīng)。一旦接收到響應(yīng),則對(duì)響應(yīng)進(jìn)行檢查,響應(yīng)出錯(cuò)時(shí)重新發(fā)送原CMD24給命令接口模塊,響應(yīng)正確時(shí)由數(shù)據(jù)接口模塊將Wr_data_fifo中一個(gè)512 B數(shù)據(jù)塊與其CRC校驗(yàn)一并寫入eMMC設(shè)備,同時(shí)將數(shù)據(jù)存入Write_backup中備份。數(shù)據(jù)傳輸完畢后,數(shù)據(jù)接口模塊返回CRC校驗(yàn)結(jié)果,結(jié)果錯(cuò)誤時(shí)重新發(fā)送原CMD24并改變此次數(shù)據(jù)接口模塊取數(shù)據(jù)的來源,使數(shù)據(jù)接口模塊從Write_backup中讀取備份數(shù)據(jù)。CRC校驗(yàn)正確時(shí),eMMC控制器等待eMMC設(shè)備完成寫操作后返回空閑狀態(tài)。讀寫控制模塊的工作狀態(tài)機(jī)如圖6所示。

      在HS400 Enhanced Strobe模式下,如圖7所示,eMMC設(shè)備向FPGA傳輸?shù)臄?shù)據(jù)是與DS信號(hào)邊沿對(duì)齊的,而數(shù)據(jù)進(jìn)入FPGA內(nèi)后是由時(shí)鐘切換模塊產(chǎn)生的200 MHz時(shí)鐘采集的,由eMMC 5.1協(xié)議所知,數(shù)據(jù)與時(shí)鐘是中心對(duì)齊的。高速模式下,時(shí)鐘與數(shù)據(jù)關(guān)系不確定,不能保證時(shí)鐘和數(shù)據(jù)中心對(duì)齊,因此可能會(huì)導(dǎo)致最后采集的數(shù)據(jù)出錯(cuò)。本文的設(shè)計(jì)使用IDELAY原語對(duì)時(shí)鐘和數(shù)據(jù)進(jìn)行調(diào)諧,使時(shí)鐘和數(shù)據(jù)中心對(duì)齊,確保能采集到正確的數(shù)據(jù)。

      Figure 6 State machine of read and write圖6 讀寫控制狀態(tài)機(jī)

      Figure 7 Data interface design圖7 數(shù)據(jù)接口設(shè)計(jì)

      調(diào)諧操作在eMMC設(shè)備初始化操作并啟用HS400 Enhanced Strobe模式后進(jìn)行,時(shí)鐘切換模塊將CLK信號(hào)轉(zhuǎn)換為讀寫工作頻率進(jìn)行調(diào)諧操作。調(diào)諧成功后即可進(jìn)行正常讀寫操作。調(diào)諧操作的原理是先向eMMC設(shè)備的一個(gè)固定保留地址寫一塊數(shù)據(jù),之后不斷讀取該地址中的數(shù)據(jù),根據(jù)CRC校驗(yàn)結(jié)果判斷是否讀操作出錯(cuò)。如果讀出錯(cuò),將IDELAY的延遲數(shù)增加1,否則保持當(dāng)前延遲數(shù)目不變,此時(shí)認(rèn)為時(shí)鐘和數(shù)據(jù)中心是對(duì)齊的。具體調(diào)諧流程如圖8所示。

      Figure 8 Flow chart of tuning圖8 調(diào)諧流程圖

      3.2.5 命令接口模塊

      命令接口模塊功能為根據(jù)指令解析模塊發(fā)來的命令構(gòu)造CMD命令,并將其發(fā)送給eMMC設(shè)備;接收、解析eMMC設(shè)備的響應(yīng)并發(fā)送給讀寫控制模塊。

      在命令發(fā)送過程中,命令接口模塊會(huì)對(duì)命令進(jìn)行CRC7校驗(yàn)碼的計(jì)算。指令解析模塊傳送給命令接口模塊相應(yīng)40位命令,命令接口模塊計(jì)算出40位命令的CRC7,與40位命令、結(jié)束位一起構(gòu)成48位的CMD命令發(fā)送給eMMC設(shè)備。

      3.2.6 數(shù)據(jù)接口模塊

      數(shù)據(jù)接口模塊的主要功能是將Wr_data_fifo或Write_backup中數(shù)據(jù)寫入eMMC設(shè)備相應(yīng)地址中以及將eMMC相應(yīng)地址中數(shù)據(jù)塊寫入Rd_data_fifo中。

      采用HS400總線速度模式,該模式使用DDR方式傳輸數(shù)據(jù),即每根數(shù)據(jù)線在時(shí)鐘上升沿和下降沿分別傳輸一位數(shù)據(jù)。因此,在200 MHz工作頻率下,eMMC控制器可達(dá)到400 MB/s的數(shù)據(jù)傳輸率。

      數(shù)據(jù)接口如圖7所示,每根數(shù)據(jù)線上數(shù)據(jù)經(jīng)過IOBUF、ODDR、IDDR、IDELAY原語處理。其中IOBUF選擇輸入輸出數(shù)據(jù); IDDR、ODDR分別處理輸入輸出的DDR數(shù)據(jù);IDEALY對(duì)輸入進(jìn)行調(diào)諧操作[5]。

      進(jìn)行數(shù)據(jù)寫操作的時(shí)候,F(xiàn)PGA需要向eMMC設(shè)備輸出DDR數(shù)據(jù),16位的輸出數(shù)據(jù)data_out通過ODDR之后在時(shí)鐘的上升沿和下降沿分別傳輸8位數(shù)據(jù),并通過IOBUF寫入eMMC設(shè)備。在進(jìn)行數(shù)據(jù)讀操作的時(shí)候,eMMC設(shè)備向FPGA通過IOBUF傳輸DDR數(shù)據(jù),由3.2.4節(jié)所知,此時(shí)數(shù)據(jù)經(jīng)過IDELAY使用IDDR原語進(jìn)行處理,使得數(shù)據(jù)與時(shí)鐘中心對(duì)齊。數(shù)據(jù)通過IDDR分離成兩路單倍速率的數(shù)據(jù)。data_in_p為上升沿所采數(shù)據(jù),data_in_n為下降沿所采數(shù)據(jù)。

      進(jìn)行數(shù)據(jù)寫操作的時(shí)候,數(shù)據(jù)接口模塊會(huì)對(duì)數(shù)據(jù)進(jìn)行CRC16校驗(yàn)碼的計(jì)算。數(shù)據(jù)接口模塊計(jì)算取出的512 B數(shù)據(jù)的CRC16校驗(yàn)碼,分別對(duì)奇位數(shù)據(jù)與偶位數(shù)據(jù)算出CRC16校驗(yàn)碼。將數(shù)據(jù)與計(jì)算出的奇偶CRC16校驗(yàn)碼、開始位、結(jié)束位組成一個(gè)數(shù)據(jù)塊,由數(shù)據(jù)接口模塊寫入eMMC設(shè)備中。進(jìn)行數(shù)據(jù)讀操作的時(shí)候,數(shù)據(jù)接口模塊會(huì)對(duì)接收到的數(shù)據(jù)塊進(jìn)行CRC16校驗(yàn),如果CRC校驗(yàn)通過則讀操作正確,將512 B數(shù)據(jù)位讀入Rd_data_fifo;否則表示讀操作不正確,返回錯(cuò)誤信號(hào)給讀寫控制模塊,要求對(duì)該數(shù)據(jù)塊進(jìn)行重讀。數(shù)據(jù)的傳輸與CRC16校驗(yàn)碼的計(jì)算同時(shí)進(jìn)行,因此校驗(yàn)碼的生成與檢驗(yàn)不影響數(shù)據(jù)傳輸?shù)乃俾省?/p>

      4 實(shí)驗(yàn)評(píng)估

      本文使用母板/子板架構(gòu),在Zedboard開發(fā)板(母板)上實(shí)現(xiàn)eMMC控制器,并定制一個(gè)eMMC的FMC子板。控制器通過FMC接口傳輸信號(hào),對(duì)eMMC芯片進(jìn)行操作。

      本文用Verilog硬件描述語言[6,7]設(shè)計(jì)實(shí)現(xiàn)eMMC控制器,使用Vivodo 2015.4集成開發(fā)環(huán)境進(jìn)行綜合實(shí)現(xiàn)[8],在綜合后添加debug核,抓取真實(shí)工作情況時(shí)的數(shù)據(jù)接口的信號(hào),以觀察在開發(fā)板上運(yùn)行時(shí)的真實(shí)信號(hào)波形。

      測試采用200 MHz時(shí)鐘頻率,通過在Command_fifo中存入指令對(duì)設(shè)計(jì)進(jìn)行測試,觀察執(zhí)行讀寫指令時(shí)部分關(guān)鍵信號(hào)。Initial_State、Ins_par_State、RW_cont_State分別為初始化、指令解析、讀寫控制狀態(tài)機(jī)當(dāng)前狀態(tài)。Device_data_in_p與Device_data_in_n為從eMMC設(shè)備中讀取的數(shù)據(jù)塊的高八位與低八位,Device_bus_out為寫入eMMC設(shè)備的數(shù)據(jù)塊。Data_Arriving、rd_buf_wr_en與crc16_check_result為讀操作時(shí)的部分控制信號(hào),Data_Arriving為1時(shí)表示eMMC設(shè)備正在向數(shù)據(jù)接口發(fā)送數(shù)據(jù)塊,包括數(shù)據(jù)位和CRC校驗(yàn)碼部分;rd_buf_wr_en為1時(shí)表示將此時(shí)讀取的數(shù)據(jù)為數(shù)據(jù)位部分,數(shù)據(jù)存入Rd_data_fifo中;crc16_check_result為CRC校驗(yàn)結(jié)果,此值為1時(shí)表示校驗(yàn)結(jié)果不正確,此值為0時(shí)表示正確,校驗(yàn)結(jié)果在數(shù)據(jù)傳輸結(jié)束后一個(gè)周期有效,即Data_Arriving由1變0時(shí)第一個(gè)周期有效。

      寫指令時(shí),發(fā)送CMD24且eMMC設(shè)備正確響應(yīng)進(jìn)入數(shù)據(jù)接收狀態(tài)后,eMMC控制器向eMMC設(shè)備發(fā)送數(shù)據(jù),如圖9和圖10所示,開始位(Device_bus_out為0000)后發(fā)送數(shù)據(jù)位512 B,之后發(fā)送奇偶CRC16校驗(yàn)碼,最后以結(jié)束位結(jié)束,Device_bus_out為寫入數(shù)據(jù)。當(dāng)eMMC設(shè)備返回CRC校驗(yàn)響應(yīng)為出錯(cuò)時(shí),說明數(shù)據(jù)在傳輸過程中出錯(cuò),eMMC控制器將重新執(zhí)行該寫指令,直到eMMC設(shè)備返回CRC校驗(yàn)通過。

      Figure 9 Write start of a data block圖9 數(shù)據(jù)塊寫開始

      Figure 10 Write end of a data block圖10 數(shù)據(jù)塊寫結(jié)束

      Figure 11 Read start of a data block圖11 數(shù)據(jù)塊讀開始

      Figure 12 Read end of a data block圖12 數(shù)據(jù)塊讀結(jié)束

      讀指令時(shí),讀取上一寫指令寫入數(shù)據(jù)。如圖11所示,發(fā)送CMD17后,等待若干周期,開始位之后(Device_data_in_p與Device_data_in_n分別為00),eMMC設(shè)備發(fā)送數(shù)據(jù)給eMMC控制器,Device_data_in_p與Device_data_in_n為讀出數(shù)據(jù)。在數(shù)據(jù)位開始傳輸時(shí),Data_Arriving、rd_buf_wr_en控制信號(hào)同時(shí)為1,表示開始傳輸有效數(shù)據(jù)。

      當(dāng)512 B數(shù)據(jù)位傳輸完畢后,rd_buf_wr_en變?yōu)?,表示此時(shí)數(shù)據(jù)塊中數(shù)據(jù)位傳輸完畢,開始傳輸CRC16校驗(yàn)碼。

      最后,如圖12所示,CRC16校驗(yàn)碼傳輸完畢后Data_Arriving變?yōu)?,表示數(shù)據(jù)塊部分傳輸完畢,CRC16校驗(yàn)結(jié)果在數(shù)據(jù)傳輸完畢后一周期由crc16_check_result給出,此值為0表示校驗(yàn)通過,數(shù)據(jù)傳輸正確,否則表示CRC校驗(yàn)不通過,數(shù)據(jù)傳輸出錯(cuò),eMMC控制器將重新執(zhí)行該讀指令,直到讀取正確的數(shù)據(jù)。

      5 結(jié)束語

      本文基于eMMC接口協(xié)議設(shè)計(jì)了一個(gè)高可靠性、高性能的eMMC控制器。eMMC控制器可對(duì)多個(gè)eMMC設(shè)備進(jìn)行初始化并激活HS400模式,在HS400模式下進(jìn)行數(shù)據(jù)的讀寫,并通過CRC校驗(yàn)完成對(duì)傳輸錯(cuò)誤的數(shù)據(jù)的重寫或重讀,保證數(shù)據(jù)傳輸?shù)恼_性與完整性。通過激活HS400模式和DDR接口,數(shù)據(jù)的傳輸率可高達(dá)400 MB/s。我們使用Verilog硬件描述語言在Vivado集成開發(fā)環(huán)境中編寫eMMC控制器,在Zedboard母板及eMMC子板上實(shí)現(xiàn)。通過設(shè)計(jì)指令對(duì)eMMC控制器功能進(jìn)行測試,驗(yàn)證了設(shè)計(jì)的正確性與可行性。

      [1] Embedded multi-media card(eMMC) electrical standard(5.1):Jedec Standard: JESD84-B51[S].2015-02-01.

      [2] Zhang Yao-hui, Sun Ming,Wang Jian. eMMC controller design based on Virtex-6 FPGA[J].Microcontrollers & Embedded Systems,2016,16(2):10-13.(in Chinese)

      [3] Xilinx Inc. Xilinx introduces ultra fast design methodology for Vivado design suite[EB/OL].[2017-12-10]. http://news.cision.com/xilinx/r/xilinx-introduces-ultrafast-design-methodology-for-vivado-design-suite, C9487458.

      [4] Liu Chang-peng. Digital logic circuit[M]. Beijing:Higher Education Press,2010.(in Chinese)

      [5] Xilinx Inc. 7 Series FPGAs selectIO resources user guide[M].San Jose:xilinx Inc, 2015.

      [6] Xia Yu-wen. Verilog digital system design tutorial[M]. Beijing:Beihang University Press, 2008.(in Chinese)

      [7] Pan Song, Huang Ji-ye, Chen Long. EDA technology and Verilog HDL[M]. Beijing:Tsinghua University Press, 2008.(in Chinese)

      [8] Xilinx Inc. Vivado design suite user guide-HLS[M]. San Jose:xilinx Inc, 2013.

      附中文參考文獻(xiàn):

      [2] 張耀輝,孫銘,王锏.Virtex-6 FPGA的eMMC控制器設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2016,16(2):10-13.

      [4] 劉常澎.數(shù)字邏輯電路[M].北京:高等教育出版社,2010.

      [6] 夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程[M].北京:北京航空航天大學(xué)出版社,2008.

      [7] 潘松,黃繼業(yè),陳龍.EDA 技術(shù)與Verilog HDL[M].北京:清華大學(xué)出版社,2008.

      猜你喜歡
      校驗(yàn)命令時(shí)鐘
      只聽主人的命令
      別樣的“時(shí)鐘”
      古代的時(shí)鐘
      移防命令下達(dá)后
      爐溫均勻性校驗(yàn)在鑄鍛企業(yè)的應(yīng)用
      有趣的時(shí)鐘
      時(shí)鐘會(huì)開“花”
      這是人民的命令
      大型電動(dòng)機(jī)高阻抗差動(dòng)保護(hù)穩(wěn)定校驗(yàn)研究
      電測與儀表(2015年1期)2015-04-09 12:03:02
      基于加窗插值FFT的PMU校驗(yàn)方法
      娱乐| 吉水县| 孟村| 孟州市| 东丽区| 错那县| 孟村| 白银市| 黎平县| 双牌县| 萝北县| 唐山市| 双江| 平度市| 平罗县| 神农架林区| 溧水县| 同心县| 合山市| 格尔木市| 阳春市| 通辽市| 扶沟县| 铜川市| 凉城县| 沂南县| 精河县| 洪泽县| 凤凰县| 唐海县| 依兰县| 社旗县| 西和县| 奉贤区| 定结县| 西丰县| 富锦市| 姜堰市| 金坛市| 天台县| 乐清市|