国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于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)是一種主要針對移動(dòng)設(shè)備的內(nèi)嵌式存儲設(shè)備,用于代碼和數(shù)據(jù)的存儲。eMMC結(jié)構(gòu)主要包括快閃存儲器設(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平臺設(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ù)恼_性和完整性,對數(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ì)針對最新的協(xié)議標(biāo)準(zhǔn),可以實(shí)現(xiàn)向下兼容,并適用于不同廠商推出的芯片。

本文將eMMC控制器在硬件平臺上進(jìn)行實(shí)現(xiàn)和測試,結(jié)果表明eMMC控制器可正確完成讀寫指令解析以及高速讀寫操作[3]。實(shí)驗(yàn)平臺采用母板/子板總體架構(gòu),母板為Xilinx Zynq-7000 FPGA開發(fā)板Zedboard,子板為eMMC芯片制作而成的FMC(FPGA Mezzanine Card)子板[4]。eMMC控制器通過母板的FMC接口與子板進(jìn)行通信,通過執(zhí)行一系列連續(xù)的讀寫命令實(shí)現(xiàn)對設(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í)鐘信號CLK控制eMMC設(shè)備讀寫頻率;DS由eMMC設(shè)備產(chǎn)生,用于控制HS400模式下數(shù)據(jù)讀頻率;CMD為雙向命令通道,用于命令與響應(yīng)的傳輸;DAT0-DAT7為雙向數(shù)據(jù)通道,用于數(shù)據(jù)的傳輸。

eMMC上電或者復(fù)位后,根據(jù)協(xié)議,首先要對其進(jìn)行初始化操作。初始化操作成功后,可通過CMD線傳輸命令對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信號控制響應(yīng)、CRC校驗(yàn)響應(yīng)以及進(jìn)行讀操作時(shí)的數(shù)據(jù)傳輸頻率;CLK信號控制命令、寫操作時(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í)鐘信號,讀操作的數(shù)據(jù)傳輸同步于DS信號,且數(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ī)存取存儲器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í)鐘切換模塊對時(shí)鐘進(jìn)行切換。

在eMMC設(shè)備上電之后,eMMC控制器以400 KHz的頻率對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è)備上電之后首先對設(shè)備進(jìn)行初始化操作,為設(shè)備分配相對應(yīng)的相對設(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號。當(dāng)eMMC設(shè)備成功地向eMMC控制器傳送了其CID號后,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為廣播信號,當(dāng)有多個(gè)eMMC設(shè)備的時(shí)候,一次只有一個(gè)eMMC設(shè)備成功發(fā)送其CID號并被分配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命令對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。一條指令對相應(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ā)送讀/寫開始信號。讀寫控制模塊開始進(jìn)行讀/寫操作,讀/寫操作完成后向指令解析模塊發(fā)送讀/寫結(jié)束信號。指令解析模塊等待接受讀/寫結(jié)束信號,一旦接收到信號表示該指令讀/寫操作完成,指令解析模塊可準(zhǔn)備讀取下一條指令。指令解析模塊工作狀態(tài)機(jī)如圖5所示。

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

3.2.4 讀寫控制模塊

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

空閑狀態(tài)下,讀寫控制模塊若接收到指令解析模塊發(fā)送的寫開始信號,則向命令接口模塊發(fā)送帶地址參數(shù)的CMD24(WRITE_BLOCK),接著等待命令接口模塊返回CMD24響應(yīng)。一旦接收到響應(yīng),則對響應(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信號邊沿對齊的,而數(shù)據(jù)進(jìn)入FPGA內(nèi)后是由時(shí)鐘切換模塊產(chǎn)生的200 MHz時(shí)鐘采集的,由eMMC 5.1協(xié)議所知,數(shù)據(jù)與時(shí)鐘是中心對齊的。高速模式下,時(shí)鐘與數(shù)據(jù)關(guān)系不確定,不能保證時(shí)鐘和數(shù)據(jù)中心對齊,因此可能會(huì)導(dǎo)致最后采集的數(shù)據(jù)出錯(cuò)。本文的設(shè)計(jì)使用IDELAY原語對時(shí)鐘和數(shù)據(jù)進(jìn)行調(diào)諧,使時(shí)鐘和數(shù)據(jù)中心對齊,確保能采集到正確的數(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信號轉(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ù)中心是對齊的。具體調(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ì)對命令進(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對輸入進(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í)鐘中心對齊。數(shù)據(jù)通過IDDR分離成兩路單倍速率的數(shù)據(jù)。data_in_p為上升沿所采數(shù)據(jù),data_in_n為下降沿所采數(shù)據(jù)。

進(jìn)行數(shù)據(jù)寫操作的時(shí)候,數(shù)據(jù)接口模塊會(huì)對數(shù)據(jù)進(jìn)行CRC16校驗(yàn)碼的計(jì)算。數(shù)據(jù)接口模塊計(jì)算取出的512 B數(shù)據(jù)的CRC16校驗(yàn)碼,分別對奇位數(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ì)對接收到的數(shù)據(jù)塊進(jìn)行CRC16校驗(yàn),如果CRC校驗(yàn)通過則讀操作正確,將512 B數(shù)據(jù)位讀入Rd_data_fifo;否則表示讀操作不正確,返回錯(cuò)誤信號給讀寫控制模塊,要求對該數(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)評估

本文使用母板/子板架構(gòu),在Zedboard開發(fā)板(母板)上實(shí)現(xiàn)eMMC控制器,并定制一個(gè)eMMC的FMC子板。控制器通過FMC接口傳輸信號,對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ù)接口的信號,以觀察在開發(fā)板上運(yùn)行時(shí)的真實(shí)信號波形。

測試采用200 MHz時(shí)鐘頻率,通過在Command_fifo中存入指令對設(shè)計(jì)進(jìn)行測試,觀察執(zhí)行讀寫指令時(shí)部分關(guān)鍵信號。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í)的部分控制信號,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控制信號同時(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控制器可對多個(gè)eMMC設(shè)備進(jìn)行初始化并激活HS400模式,在HS400模式下進(jìn)行數(shù)據(jù)的讀寫,并通過CRC校驗(yàn)完成對傳輸錯(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ì)指令對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)方法
泸溪县| 鹤壁市| 拉萨市| 云林县| 上林县| 富锦市| 文安县| 华蓥市| 深泽县| 吴江市| 淮阳县| 青海省| 长泰县| 钟祥市| 剑阁县| 泾阳县| 温泉县| 青海省| 米泉市| 青龙| 台南市| 贺兰县| 忻城县| 建湖县| 孟村| 新安县| 安平县| 马龙县| 图们市| 襄垣县| 城口县| 辽阳市| 扶绥县| 金秀| 莆田市| 裕民县| 苍山县| 吴旗县| 岐山县| 澄城县| 皮山县|