• 
    

    
    

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

      ?

      基于Artix-7 系列的eMMC 陣列控制器設(shè)計與實現(xiàn)

      2020-08-11 06:53:06馬士全
      數(shù)據(jù)采集與處理 2020年4期
      關(guān)鍵詞:塊數(shù)時序命令

      孫 巍,呂 勇,馬士全

      (1.中國人民解放軍海軍潛艇學(xué)院,青島,266199;2.青島海洋科學(xué)與技術(shù)試點國家實驗室,青島,266237)

      引 言

      eMMC(embedded multimediacard)是一種嵌入式存儲器,其內(nèi)部包含閃存、標(biāo)準(zhǔn)接口以及控制芯片,早期主要應(yīng)用于手機、平板電腦等移動設(shè)備[1]。隨著控制協(xié)議和生產(chǎn)工藝的不斷升級,2013年三星電子率先推出了基于eMMC 5.0 標(biāo)準(zhǔn)的內(nèi)存產(chǎn)品,其速度最高可達到400 MB/s[2]。目前Samsung,Micron 以及Sandisk等國外公司在eMMC芯片供應(yīng)方面依舊占據(jù)主導(dǎo)地位,國內(nèi)經(jīng)過自主研發(fā)也實現(xiàn)了批量生產(chǎn)[3]。

      隨著eMMC 技術(shù)的不斷成熟和完善,面向各類應(yīng)用領(lǐng)域的嵌入式存儲系統(tǒng)逐漸采用eMMC 作為存儲單元。與此同時,eMMC 控制器開發(fā)也逐漸受到業(yè)界內(nèi)的廣泛關(guān)注。Arasan 公司作為JEDEC eMMC標(biāo)準(zhǔn)制定的組織成員已提出eMMC 4.5、eMMC 5.0 以及eMMC 5.1 協(xié)議的IP 解決方案,近期還將提供基于臺積電7 nm 工藝技術(shù)的eMMC IP 解決方案。國內(nèi)在相關(guān)方面也投入了大量研究工作,不僅提出可應(yīng)用于圖像采集、視頻存儲的eMMC 控制器方案[4-5],還實現(xiàn)了可集成于雷達、航天、武器發(fā)射等重要控制系統(tǒng)的eMMC 存儲單元[6-8]。目前通用的eMMC IP 解決方案對外開放度十分有限,自主設(shè)計一種安全可靠的eMMC 控制器依然十分重要。為此,本文參照eMMC 5.1 協(xié)議在Artix-7 系列開發(fā)平臺上實現(xiàn)了一種用戶可配置的eMMC 陣列控制器,便于用戶根據(jù)實際需要選擇合適的工作頻率和陣列操控方式。

      1 操作原理

      eMMC 陣列控制器中包含的操作主要有開放終點多塊寫、預(yù)定塊數(shù)多塊讀以及數(shù)據(jù)擦除,下面分別介紹每種操作的基本原理和技術(shù)關(guān)鍵點。

      1.1 開放終點多塊寫

      eMMC多塊寫主要分為預(yù)定塊數(shù)多塊寫、開放終點多塊寫以及可靠型多塊寫[9],其中開放終點多塊寫的操作原理是讓eMMC對數(shù)據(jù)進行連續(xù)接收和編程,直至接收到停止命令才終止傳輸過程[10]。相比于其他兩種方式,不需要反復(fù)發(fā)送操作命令,數(shù)據(jù)寫入效率較高。雖然開放終點式操作具有很強的靈活性,但在設(shè)計方面需要特別關(guān)注停止命令的發(fā)送時機。eMMC在接收數(shù)據(jù)過程中首先會判斷數(shù)據(jù)的起始位,然后檢驗數(shù)據(jù)尾部的CRC校驗結(jié)果,最后再對數(shù)據(jù)進行編程。根據(jù)eMMC 5.1協(xié)議的多塊寫停止時序,如圖1所示。eMMC控制器可以在發(fā)送最后一個數(shù)據(jù)的過程中發(fā)出停止命令,使得eMMC在CRC校驗結(jié)束后快速進入忙狀態(tài),有利于eMMC在數(shù)據(jù)寫入完成的情況下及時結(jié)束多塊寫過程,為響應(yīng)后續(xù)的其他操作命令節(jié)約時間。

      圖1 多塊寫停止時序圖Fig.1 Timing diagram of multi-block writing stop

      1.2 預(yù)定塊數(shù)多塊讀

      eMMC 讀操作可分為預(yù)定塊數(shù)多塊讀和開放終點多塊讀,其中預(yù)定塊數(shù)多塊讀的操作原理是當(dāng)數(shù)據(jù)傳輸量達到預(yù)定塊數(shù)時傳輸自動停止[11],其操作時序如圖2 所示。在eMMC 陣列多塊讀過程中更需要關(guān)注對讀出數(shù)據(jù)的處理,為了檢驗eMMC 與FPGA 之間數(shù)據(jù)傳輸?shù)臏?zhǔn)確性,本文在數(shù)據(jù)接收模塊中加入了CRC16 校驗?zāi)K,對從eMMC 讀出的數(shù)據(jù)進行實時校驗,及時發(fā)現(xiàn)傳輸異常,當(dāng)數(shù)據(jù)發(fā)生錯誤時其他主控模塊可以嘗試重新讀取或者數(shù)據(jù)舍棄等其他控制操作。當(dāng)并行讀取數(shù)據(jù)時,不同eMMC 芯片之間由于存在性能差異,通常會導(dǎo)致讀出的數(shù)據(jù)無法直接對齊。最有效的處理方法是借助DDR3 對數(shù)據(jù)預(yù)先緩存,然后調(diào)整eMMC 讀操作長度,使得eMMC 陣列讀速率與DDR3 寫速率達到匹配。為了使得控制器可以不依賴于DDR3,本文采用逐片操控方式實現(xiàn)eMMC 陣列的預(yù)設(shè)塊數(shù)多塊讀,相比于并行操控速率較低,在DDR3 出現(xiàn)異常時可作為一種數(shù)據(jù)導(dǎo)出的備用方案。

      1.3 數(shù)據(jù)擦除

      數(shù)據(jù)擦除是eMMC 控制器設(shè)計中不可缺少的重要操作。eMMC 啟動擦除需要按順序依次發(fā)送CMD35、CMD36 以及 CMD38[12],如果 eMMC 沒有按照順序正確接收 CMD35、CMD36 和 CMD38,主控制器必須從CMD35 命令重新開始發(fā)送。如果CMD35 或者CMD36 地址參數(shù)超出eMMC 芯片的最大地址,eMMC 會反饋對應(yīng)的錯誤類型并重置發(fā)送序列。eMMC 在擦除過程中會通過拉低DAT0 線來告知主控當(dāng)前正處于忙狀態(tài),擦除完成后DAT0 會重新拉高,在eMMC 陣列擦除過程中可以根據(jù)每片eMMC 的DAT0 反饋來判斷擦除是否完全結(jié)束。

      2 總體設(shè)計

      本文所設(shè)計的eMMC 陣列控制器以eMMC 5.1 協(xié)議為基礎(chǔ),實現(xiàn)了多種靈活的配置方式,內(nèi)部結(jié)構(gòu)如圖3 所示。用戶利用軟復(fù)位使能可以實現(xiàn)eMMC 陣列的復(fù)位操作,在復(fù)位時還可以利用工作頻率設(shè)定接口和多片操作模式接口重新選擇eMMC 陣列的工作頻率和陣列操控方式。此外,用戶還可利用操作首地址、操作長度以及操作類型等3 種配置接口實現(xiàn)eMMC 陣列的單塊讀寫,預(yù)定塊數(shù)多塊讀寫以及開放終點多塊讀寫,如果需要數(shù)據(jù)擦除還需要配置操作尾地址。為了提高實際使用效率,本文將單片eMMC 的控制邏輯封裝于eMMC 控制模塊,有利于用戶根據(jù)實際eMMC 的使用數(shù)量修改eMMC控制模塊的實例化數(shù)量,圖3 展示了應(yīng)用于4 片eMMC 的配置情況。本文還將陣列控制邏輯封裝于eMMC 陣列管理模塊,一方面處理來自其他主控模塊的操作參數(shù),明確操作任務(wù)后直接控制每個eMMC 控制模塊。另一方面,其他主控模塊可通過讀取工作狀態(tài)來實時監(jiān)測eMMC 陣列的工作狀態(tài),有利于及時處理異常情況,保證eMMC 陣列控制器在長時間工作過程中始終處于可控狀態(tài)。

      圖3 eMMC 陣列控制器結(jié)構(gòu)框圖Fig.3 Block diagram of eMMC array controller

      3 eMMC 陣列管理模塊

      eMMC 陣列管理模塊主要負責(zé)用戶與eMMC 陣列之間的信息交互,其工作流程如圖4 所示。首先在上電初始化階段,eMMC 陣列管理模塊會根據(jù)設(shè)定的工作頻率和陣列操作方式完成對eMMC 陣列的初始化操作,并等待每個eMMC 控制模塊的初始化結(jié)束。初始化全部結(jié)束后向其他主控模塊反饋初始化完成信號,此時其他主控模塊可以開始配置參數(shù)。其他主控模塊發(fā)出啟動使能信號后,eMMC 陣列管理模塊根據(jù)陣列操作方式繼續(xù)將參數(shù)下發(fā)到各個eMMC 控制模塊,等待所有操作結(jié)束后向其他主控模塊反饋操作結(jié)束信號,接下來如果需要切換工作時鐘或者陣列操作方式可通過軟復(fù)位信號來實現(xiàn)重新配置。如果繼續(xù)在當(dāng)前狀態(tài)下工作可直接重新設(shè)置操作的起始地址、終止地址、操作長度以及操作類型。接下來,介紹eMMC 陣列管理模塊的工作參數(shù)配置接口和數(shù)據(jù)傳輸控制接口。

      圖4 eMMC 陣列管理模塊流程圖Fig.4 eMMC array control module flowchart

      3.1 工作參數(shù)配置接口

      為了實現(xiàn)工作參數(shù)的實時配置,本文設(shè)計了一種操作便捷的工作參數(shù)配置接口,其接口操作時序如圖5 所示。首先在復(fù)位階段其他主控模塊需要在發(fā)出軟復(fù)位信號后保持工作頻率和陣列操作方式參數(shù)有效,直到eMMC陣列初始化完成。eMMC 陣列初始化結(jié)束后,其他主控模塊可以在操作參數(shù)有效期間發(fā)出啟動使能,eMMC 陣列管理模塊根據(jù)啟動使能的上升沿獲取操作首地址、操作尾地址、塊的數(shù)量、操作類型等參數(shù)。

      3.2 數(shù)據(jù)傳輸控制接口

      為了實現(xiàn)eMMC 陣列的開放終點多塊寫,本文在FIFO 讀寫控制信號的基礎(chǔ)上增設(shè)寫停止、數(shù)據(jù)準(zhǔn)備以及設(shè)備狀態(tài)等信號,控制接口操作時序圖如圖6 所示。eMMC 陣列管理模塊在寫數(shù)據(jù)操作前需要等待其他主控模塊的數(shù)據(jù)準(zhǔn)備信號,數(shù)據(jù)準(zhǔn)備好后立即發(fā)出FIFO 讀使能并向其他主控模塊反饋當(dāng)前設(shè)備正處于數(shù)據(jù)寫入狀態(tài),其他主控模塊接收到設(shè)備忙信號后可釋放數(shù)據(jù)準(zhǔn)備信號。當(dāng)開放終點多塊寫結(jié)束時,其他主控模塊需要在數(shù)據(jù)準(zhǔn)備信號有效前發(fā)出寫停止信號,避免向eMMC 陣列寫入多余數(shù)據(jù)。當(dāng)其他主控模塊需要讀eMMC 陣列數(shù)據(jù)時,eMMC 陣列管理模塊按照陣列操作方式將數(shù)據(jù)與寫FIFO 使能信號同步發(fā)送,保證數(shù)據(jù)能夠準(zhǔn)確寫入FIFO 寄存器。

      圖5 參數(shù)配置接口操作時序圖Fig.5 Timing diagram of parameter configuration interface operation

      圖6 數(shù)據(jù)傳輸控制接口操作時序圖Fig.6 Timing diagram of data transmission control interface operation

      4 eMMC 控制模塊

      eMMC 控制模塊主要實現(xiàn)單片eMMC 的初始化、數(shù)據(jù)擦除和數(shù)據(jù)讀寫等控制操作,內(nèi)部模塊可分為3 部分,內(nèi)部結(jié)構(gòu)如圖7 所示。首先與eMMC 陣列管理模塊對接的是操作任務(wù)選擇模塊,操作任務(wù)選擇模塊的主要功能是根據(jù)工作參數(shù)將對應(yīng)的命令生成模塊與底層收發(fā)模塊進行對接。命令生成模塊能夠按照協(xié)議要求的命令發(fā)送順序自動產(chǎn)生所需要的命令參數(shù),其中包括初始化模塊、擦除模塊、單塊讀寫模塊、預(yù)定塊數(shù)多塊讀寫模塊以及開放終點多塊讀寫模塊,這里僅列出其中兩種讀寫模塊。命令發(fā)送接收模塊和數(shù)據(jù)發(fā)送接收模塊分別控制eMMC 的命令線和數(shù)據(jù)線,模塊內(nèi)部附加CRC7 和CRC16校驗檢查硬件傳輸異常。片選和同步完成信號主要用于eMMC 陣列片間切換和eMMC 控制模塊的狀態(tài)機重置。接下來主要介紹eMMC 控制器中開放終點多塊寫和預(yù)設(shè)塊數(shù)多塊讀的工作流程。

      圖7 eMMC 控制模塊結(jié)構(gòu)圖Fig.7 Structure diagram of eMMC control module

      4.1 開放終點多塊寫工作流程

      開放終點多塊寫的工作流程如圖8 所示。開放終點寫模塊首先等待操作任務(wù)選擇模塊的寫使能信號,然后通過控制命令發(fā)送接收模塊向eMMC 發(fā)送CMD16 和CMD25[13],使得eMMC 處于數(shù)據(jù)接收狀態(tài),之后判斷是否有停止信號。如果有停止信號,則向eMMC 發(fā)送CMD12,然后通過檢測data0 信號線的上升沿來判斷eMMC 是否回到transfer 狀態(tài)。如果沒有停止信號,則繼續(xù)等待片選使能信號。當(dāng)片選信號有效時,等待其他主控模塊數(shù)據(jù)準(zhǔn)備好。當(dāng)其他主控模塊給出數(shù)據(jù)準(zhǔn)備好信號后,開放終點多塊寫模塊開始讀取其他主控模塊中FIFO 數(shù)據(jù),再通過數(shù)據(jù)發(fā)送接收模塊發(fā)送給eMMC 芯片,在寫入過程中使用計數(shù)器同步計數(shù),當(dāng)達到操作長度時向陣列管理模塊反饋切換信號,選擇其他eMMC 芯片作為操作對象繼續(xù)寫入。

      4.2 預(yù)定塊數(shù)多塊讀工作流程

      預(yù)設(shè)塊數(shù)多塊讀的控制流程如圖9 所示,預(yù)設(shè)塊數(shù)多塊讀模塊首先等待操作任務(wù)選擇模塊的讀使能信號,然后通過命令發(fā)送接收模塊依次向eMMC 發(fā)送CMD16、CMD23 以及CMD18[14],使得eMMC處于數(shù)據(jù)發(fā)送狀態(tài),然后通過數(shù)據(jù)發(fā)送接收模塊接收從eMMC 讀出的數(shù)據(jù)并進行CRC16 校驗。如果沒有達到操作長度計數(shù)器繼續(xù)累加,當(dāng)計數(shù)器達到操作長度后讀操作結(jié)束,預(yù)設(shè)塊數(shù)多塊讀模塊重新回到等待讀使能狀態(tài)。

      圖8 eMMC 控制器開放終點多塊寫流程圖Fig.8 Flowchart of eMMC controller open-ending multi-block writing

      圖9 eMMC 控制器預(yù)定塊數(shù)多塊讀流程圖Fig.9 Flowchart of eMMC controller multi-block reading

      5 測試與驗證

      5.1 測試模塊設(shè)計

      為了測試eMMC 陣列控制器的整體工作流程,本文獨立設(shè)計了一種循環(huán)測試模塊,該測試模塊作為其他主控模塊向eMMC 陣列控制器不斷發(fā)送配置參數(shù)和數(shù)據(jù),測試模塊的工作流程如圖10 所示。

      測試模塊首先等待eMMC 陣列初始化結(jié)束,陣列操作方式默認(rèn)選擇逐片順序操作,然后發(fā)送擦除命令擦除eMMC 陣列的全部內(nèi)容。擦除結(jié)束后發(fā)送開放終點多塊寫命令,延遲1 s 后發(fā)送寫停止信號,等待寫操作結(jié)束,同時利用計數(shù)模塊累計循環(huán)次數(shù)。為了比較讀寫數(shù)據(jù)的一致性,繼續(xù)發(fā)送預(yù)定塊數(shù)多塊讀命令,然后等待讀操作結(jié)束,如果數(shù)據(jù)一致則可說明eMMC 陣列讀寫功能正常。在下一次循環(huán)讀寫開始前改變操作地址和陣列操作方式,實現(xiàn)在全部儲存空間下的讀寫性能檢驗。

      由于chipscope 抓取的時序圖長度有限,為了更好地展示測試結(jié)果,本文將操作長度設(shè)為3,即每次讀寫操作的數(shù)據(jù)量為3 塊,每塊為兩組0~255 的連續(xù)遞增數(shù),具體數(shù)據(jù)結(jié)果在測試結(jié)果圖中不再展開。為了實現(xiàn)長時間測試,在觸發(fā)條件中加入計數(shù)模塊的計數(shù)變量,將抓取時間調(diào)整在48 h 后觸發(fā),然后在200 MHz 工作頻率下測試eMMC 陣列分別在兩種陣列操控方式下的工作性能。

      5.2 測試結(jié)果分析

      5.2.1 逐片操控方式下的讀寫功能測試

      在數(shù)據(jù)準(zhǔn)備好的條件下,eMMC0 首先進行開放終點多塊寫,寫完3 塊數(shù)據(jù)后,向上層反饋了片間切換信號,之后eMMC1、eMMC2、eMMC3 分別依次進行相同操作,測試結(jié)果如圖11 所示,當(dāng)eMMC3 操作結(jié)束后,數(shù)據(jù)準(zhǔn)備信號無效,此時eMMC0 處于等待狀態(tài)循環(huán)檢查數(shù)據(jù)準(zhǔn)備信號和停止信號。經(jīng)過1 s 后接收到停止信號,主控向eMMC 陣列發(fā)送停止命令,每片eMMC 在結(jié)束寫過程中,DAT0 線始終保持低電平,DAT0 線在多塊寫結(jié)束后重新拉高,當(dāng)最后一片eMMC 寫結(jié)束時向上層反饋操作結(jié)束信號,測試結(jié)果如圖12 所示。逐片操控方式下的讀過程同樣按照寫入順序?qū)?shù)據(jù)依次讀出,每片讀出數(shù)據(jù)逐一通過數(shù)據(jù)傳輸控制接口寫入其他主控模塊,測試結(jié)果如圖13 所示,從測試結(jié)果可以看出逐片操控方式下數(shù)據(jù)讀寫功能正常,每片eMMC 的數(shù)據(jù)讀寫速率可以達到200 MB/s,eMMC 陣列整體的讀寫速率為200 MB/s。

      5.2.2 并行操控方式下的讀寫功能測試

      在數(shù)據(jù)準(zhǔn)備好的條件下,eMMC 陣列控制器首先控制四片eMMC進行開放終點多塊寫,從圖14 中可以看出四片eMMC 能夠同步寫入數(shù)據(jù),并且整體數(shù)據(jù)寫入速率可穩(wěn)定在800 MB/s。在傳輸最后一塊數(shù)據(jù)的過程中接收到停止信號,之后立即停止數(shù)據(jù)傳輸,等待4 片eMMC 結(jié)束寫操作,測試結(jié)果如圖15 所示。啟動多塊讀后,每片eMMC 能夠讀出3 塊數(shù)據(jù),并且讀數(shù)據(jù)速率穩(wěn)定在200 MB/s,由于每片eMMC 的響應(yīng)速度不同,各片eMMC 之間啟動讀數(shù)據(jù)的時間會存在延遲,從整體上看數(shù)據(jù)讀速率可達到800 MB/s,測試結(jié)果如圖16 所示。從測試結(jié)果可以看出并行操控方式下數(shù)據(jù)讀寫功能正常,每片eMMC 的數(shù)據(jù)讀寫速率可以達到200 MB/s,eMMC 陣列整體的讀寫速率可以達到800 MB/s。

      圖10 測試模塊工作流程圖Fig.10 Flow chart of test module working

      圖11 逐片操控方式下的開放終點多塊寫時序圖Fig.11 Timing diagram of open-ending multi-block writing in chip-by-chip operation mode

      圖12 逐片操控方式下的開放終點多塊寫結(jié)束時序圖Fig.12 Timing diagram of multi-block write-ending in chip-by-chip operation mode

      圖13 逐片操控方式下的預(yù)定塊數(shù)多塊讀時序圖Fig.13 Timing diagram of multi-block reading with predetermined number of blocks in chip-by-chip operation mode

      圖14 并行操控方式下的開放終點多塊寫時序圖Fig.14 Timing diagram of open-ending multi-block writing in parallel operation mode

      圖15 并行操控方式下的開放終點多塊寫結(jié)束時序圖Fig.15 Timing diagram of open-ending multi-block write-ending in parallel operation mode

      圖16 并行操控方式下的預(yù)定塊數(shù)多塊讀時序圖Fig.16 Timing diagram of multi-block reading with predetermined number of blocks in parallel operation mode

      6 結(jié)束語

      文章的創(chuàng)新點主要有3 個方面,首先是設(shè)計了一種可兼容開放終點讀寫和預(yù)設(shè)塊數(shù)讀寫的操作接口,減少了eMMC 陣列控制的邏輯設(shè)計復(fù)雜度;然后是利用軟復(fù)位來實現(xiàn)工作頻率和陣列操控方式的重新選擇,提高了eMMC 陣列的應(yīng)用靈活度;最后是在控制器內(nèi)部多處加入了故障信息反饋,有利于用戶及時處理存儲異常情況。本文提出的eMMC 陣列控制器可以實現(xiàn)多種配置方式,能夠滿足同一平臺的多種存儲速率需求。為了測試長時間工作的穩(wěn)定性,獨立設(shè)計了一種循環(huán)測試模塊,測試了多種操控方式之間的切換功能,驗證了方案設(shè)計的可行性和可靠性,在eMMC 控制器性能驗證方面具有一定的參考意義。

      猜你喜歡
      塊數(shù)時序命令
      基于時序Sentinel-2數(shù)據(jù)的馬鈴薯遙感識別研究
      只聽主人的命令
      基于Sentinel-2時序NDVI的麥冬識別研究
      思路不同 方法不同
      移防命令下達后
      一種毫米波放大器時序直流電源的設(shè)計
      電子制作(2016年15期)2017-01-15 13:39:08
      這是人民的命令
      DPBUS時序及其設(shè)定方法
      河南科技(2014年15期)2014-02-27 14:12:36
      小魔方里的大秘密
      藍色命令
      灵武市| 辉县市| 大竹县| 怀宁县| 南华县| 竹山县| 民乐县| 杭锦后旗| 竹溪县| 综艺| 六盘水市| 油尖旺区| 邵武市| 和龙市| 尖扎县| 东乌珠穆沁旗| 聂拉木县| 新乐市| 冀州市| 凤台县| 东阳市| 浙江省| 通州市| 辰溪县| 内乡县| 新安县| 长沙市| 应城市| 日照市| 纳雍县| 彭阳县| 连云港市| 浦县| 繁昌县| 唐海县| 西宁市| 慈利县| 连江县| 遵化市| 宝山区| 临泉县|