張耀軍,孫銘,王锏
(西安電子科技大學(xué) 電子信息攻防對(duì)抗與仿真重點(diǎn)實(shí)驗(yàn)室, 西安 710071)
?
Virtex-6 FPGA的eMMC控制器設(shè)計(jì)
張耀軍,孫銘,王锏
(西安電子科技大學(xué) 電子信息攻防對(duì)抗與仿真重點(diǎn)實(shí)驗(yàn)室, 西安 710071)
摘要:介紹了eMMC芯片的技術(shù)特點(diǎn)、工作原理,以及控制器的設(shè)計(jì)方案。該設(shè)計(jì)基于Xilinx公司的Virtex-6系列FPGA芯片,實(shí)現(xiàn)了控制器的設(shè)計(jì)方案,并給出了仿真結(jié)果,驗(yàn)證了該設(shè)計(jì)方案的可行性。此外,該設(shè)計(jì)均采用硬件邏輯實(shí)現(xiàn),具有速度快、通用性強(qiáng)、可靠性高的特點(diǎn)。
關(guān)鍵詞:FPGA;eMMC;控制器
引言
eMMC(embedded Multi Media Card)是由MMC協(xié)會(huì)所訂立的,主要針對(duì)手機(jī)、平板電腦等便攜式產(chǎn)品的內(nèi)嵌式存儲(chǔ)器。eMMC存儲(chǔ)芯片的優(yōu)勢(shì)在于將NAND Flash和主控芯片封裝成一個(gè)微型的BGA芯片,提供標(biāo)準(zhǔn)的接口并管理內(nèi)存,不需要處理復(fù)雜的Flash兼容性和管理問(wèn)題,使得應(yīng)用廠商專注于產(chǎn)品開(kāi)發(fā)的其他部分,從而縮短產(chǎn)品研發(fā)時(shí)間、降低研發(fā)成本。本設(shè)計(jì)是基于eMMC4.5(JESD84-B45)協(xié)議,并在FPGA(XC6VLX240T)上硬件實(shí)現(xiàn),具有性能穩(wěn)定、可移植性強(qiáng)、通用性好的特點(diǎn),用戶無(wú)需關(guān)注底層物理協(xié)議,而且操作簡(jiǎn)單。
1eMMC工作原理
1.1初始化
系統(tǒng)上電后,在eMMC能進(jìn)行正常讀寫之前,必須按照協(xié)議規(guī)定的步驟完成初始化。 初始化過(guò)程如下:
① 復(fù)位進(jìn)入Idle State的方式有兩種:一種是通過(guò)Power On即上電進(jìn)入,另外一種是通過(guò)發(fā)送命令CMD0。復(fù)位之后所有的寄存器都復(fù)位成默認(rèn)值,此時(shí)CLK需要設(shè)置成fOD的范圍,即0~400 kHz。
② 在Idle State發(fā)送命令CMD1,如果eMMC寄存器OCR回復(fù)值中的busy位為0,則上電復(fù)位仍未完成,需要一直發(fā)送命令CMD1,直到busy位為1且電壓匹配,則進(jìn)入Ready State。
③ 在Ready State發(fā)送命令CMD2,如果命令發(fā)送成功,則得到CID寄存器的值,而eMMC進(jìn)入Identification State,若不成功,則eMMC狀態(tài)不變。
④ 在Identification State發(fā)送命令CMD3,完成RCA地址分配,其中多片eMMC依靠分配不同的RCA地址來(lái)區(qū)分,進(jìn)入Stand-by State,當(dāng)eMMC芯片進(jìn)入Stand-by State,不再響應(yīng)命令CMD1、CMD2和CMD3。
⑤ 在Stand-by State,首先發(fā)送命令CMD9,獲取設(shè)備寄存器CSD的值,可以得到如塊長(zhǎng)度、存儲(chǔ)容量、最大時(shí)鐘速率等。然后發(fā)送命令CMD7,通過(guò)參數(shù)中包含設(shè)備已分配的相對(duì)地址來(lái)選定設(shè)備,進(jìn)入Transfer State。
⑥ 在Transfer State發(fā)送命令CMD6,其中包含切換工作速率的參數(shù),將eMMC初始化低速時(shí)鐘切換到正常工作的高速時(shí)鐘。再次發(fā)送命令CMD6,其中包含數(shù)據(jù)位寬和單雙沿模式的參數(shù),默認(rèn)模式是一位數(shù)據(jù)位寬和單沿模式,轉(zhuǎn)換數(shù)據(jù)位寬和單雙沿模式,此時(shí)eMMC停留在Transfer State,初始化工作全部完成。eMMC初始化流程圖如圖1所示。
圖1 eMMC初始化流程圖
1.2數(shù)據(jù)讀
eMMC初始化完成后進(jìn)入數(shù)據(jù)傳輸模式(即Transfer Mode),它是eMMC的工作模式, 在此模式下可實(shí)現(xiàn)對(duì)eMMC的數(shù)據(jù)讀寫。當(dāng)沒(méi)有數(shù)據(jù)傳輸時(shí),DAT0~DAT7處于高電平狀態(tài),數(shù)據(jù)傳輸是以數(shù)據(jù)包為單位的,數(shù)據(jù)傳輸封包結(jié)構(gòu)是一位開(kāi)始位0,接著是數(shù)據(jù)流,包含了數(shù)據(jù)和CRC校驗(yàn)碼,最后是一位結(jié)束位1,其中數(shù)據(jù)傳輸和時(shí)鐘是同步的。數(shù)據(jù)基本的傳輸單元是Block,它的最大長(zhǎng)度被定義在CSD中的READ_BL_LEN。
數(shù)據(jù)讀分為單塊讀和多塊讀。單塊讀操作開(kāi)始時(shí),主機(jī)先發(fā)送CMD16(SET_BLOCKLEN)設(shè)置塊長(zhǎng)度,eMMC接收后再發(fā)送CMD17命令讀取單塊數(shù)據(jù),單塊數(shù)據(jù)讀完成后自動(dòng)返回Transfer State,等待下一次讀操作。多塊讀操作開(kāi)始時(shí),主機(jī)同樣先發(fā)送CMD16設(shè)置塊長(zhǎng)度,然后發(fā)送CMD23命令設(shè)置讀取塊個(gè)數(shù),接著發(fā)送CMD18命令開(kāi)始讀取單塊數(shù)據(jù),每次單塊數(shù)據(jù)讀取完成則塊計(jì)數(shù)加1,直到塊計(jì)數(shù)等于預(yù)定塊個(gè)數(shù),多塊讀完成,返回Transfer State,進(jìn)入下一輪讀過(guò)程。其中須注意命令CMD17、CMD18設(shè)置讀取塊開(kāi)始地址時(shí),地址只有32位(4 GB),對(duì)于容量小于2 GB的芯片來(lái)說(shuō),地址即為每一位字節(jié)地址,對(duì)于容量大于2 GB的芯片來(lái)說(shuō),地址為扇區(qū)地址,每個(gè)扇區(qū)為512 KB。如果想要進(jìn)行局部塊讀操作,則必須事先通過(guò)發(fā)送命令CMD9查看CSD寄存器中的READ_BLK_MISALIGNED和READ_BL_PARTIAL的值是否為0,若不為0,則系統(tǒng)不允許局部塊讀,讀數(shù)據(jù)時(shí),讀出塊大小必須為512 B或者CSD中READ_BL_LEN[83∶80]設(shè)置的值。eMMC數(shù)據(jù)讀流程圖如圖2所示。
圖2 eMMC數(shù)據(jù)讀流程圖
1.3數(shù)據(jù)寫
寫操作的數(shù)據(jù)傳輸格式與讀操作相同,均由開(kāi)始位、數(shù)據(jù)、CRC校驗(yàn)、結(jié)束位構(gòu)成。eMMC有嚴(yán)格的數(shù)據(jù)寫入檢查機(jī)制,通過(guò)檢查CRC校驗(yàn)位來(lái)判斷接收到的數(shù)據(jù)是否正確,數(shù)據(jù)正確則允許寫入,否則將被舍棄。數(shù)據(jù)寫分為單塊寫和多塊寫。單塊寫操作開(kāi)始時(shí),主機(jī)先發(fā)送CMD16(SET_BLOCKLEN)設(shè)置塊長(zhǎng)度,eMMC接收并響應(yīng)后,再發(fā)送CMD24命令寫入單塊數(shù)據(jù),單塊數(shù)據(jù)寫完成后自動(dòng)返回Transfer Stae,等待下一次寫操作。多塊寫入方式有3種:開(kāi)放式寫入、塊寫入和可靠寫入。其中前兩種方式與可靠寫入的區(qū)別在于后者具有數(shù)據(jù)的保護(hù)寫入機(jī)制:其一是新數(shù)據(jù)未寫入之前,原數(shù)據(jù)保持不變;其二是在編程過(guò)程中即使掉電數(shù)據(jù)也會(huì)保持有效。
在可靠性寫入中,所有塊長(zhǎng)度均為512 KB,不受設(shè)置塊長(zhǎng)度影響,可靠性寫入必須是與扇區(qū)對(duì)齊的,不能任意指定地址,如果沒(méi)有對(duì)齊將終止寫入操作。一般情況使用塊寫入方式,當(dāng)多塊寫操作開(kāi)始時(shí),主機(jī)同樣先發(fā)送CMD16設(shè)置塊長(zhǎng)度,然后發(fā)送CMD23命令設(shè)置寫入塊個(gè)數(shù),接著發(fā)送CMD25命令開(kāi)始寫入數(shù)據(jù),每次單塊寫入完成則塊計(jì)數(shù)加1,直到塊計(jì)數(shù)等于預(yù)定塊個(gè)數(shù),多塊寫完成后,返回Transfer State,等待下一輪寫過(guò)程。與讀過(guò)程一樣,寫過(guò)程也分寫字節(jié)地址和寫扇區(qū)地址,如果想要局部塊寫入操作,也必須事先通過(guò)CMD9命令查看CSD寄存器中的WRITE_BLK_MISALIGNED是否為0,若不為0,則系統(tǒng)不允許局部塊寫入,塊寫入時(shí)也要注意寫入塊必須與物理地址對(duì)齊。eMMC數(shù)據(jù)寫流程圖如圖3所示。
圖3 eMMC數(shù)據(jù)寫流程圖
2eMMC控制器設(shè)計(jì)方案
本文設(shè)計(jì)的基于FPGA的eMMC控制器包括初始化模塊、傳輸控制模塊、時(shí)鐘模塊、命令接口模塊、數(shù)據(jù)處理模塊、緩存模塊。各模塊功能如下:
① 初始化模塊。初始化模塊的主要功能是完成對(duì)eMMC的基本配置工作(如復(fù)位、電壓匹配、RCA地址分配、時(shí)鐘切換、數(shù)據(jù)位寬設(shè)置等)。
② 傳輸控制模塊。傳輸控制模塊主要是在eMMC讀寫操作時(shí)完成讀寫命令的發(fā)送、命令響應(yīng)的對(duì)應(yīng)處理以及數(shù)據(jù)CRC校驗(yàn)的比對(duì),另外傳輸控制模塊還要與上層用戶交互。
③ 時(shí)鐘模塊。由于eMMC芯片初始化時(shí)鐘和工作時(shí)鐘速度要求不同,所以時(shí)鐘模塊要提供時(shí)鐘切換的功能,但簡(jiǎn)單的多路選擇切換電路會(huì)產(chǎn)生毛刺,導(dǎo)致時(shí)鐘不穩(wěn)定,所以本文設(shè)計(jì)了防毛刺時(shí)鐘切換電路,電路原理圖如圖4所示。
圖4 eMMC防毛刺時(shí)鐘切換電路圖
④ 命令接口模塊。命令接口模塊的主要功能是將并行命令轉(zhuǎn)換成串行命令發(fā)送給eMMC,接收eMMC響應(yīng)的命令,并根據(jù)其響應(yīng)的結(jié)果做出相應(yīng)的處理。
⑤ 數(shù)據(jù)處理模塊。數(shù)據(jù)處理模塊的主要功能是通過(guò)eMMC的DAT接口讀寫eMMC數(shù)據(jù),并對(duì)讀寫數(shù)據(jù)進(jìn)行CRC校驗(yàn)。
⑥ 緩存模塊。緩存模塊是通過(guò)FPGA定制的FIFO IP核,暫存讀寫數(shù)據(jù)。
eMMC控制器各模塊之間需要相互協(xié)同工作??刂破鞴ぷ鲿r(shí),初始化模塊發(fā)送一系列初始化命令給命令接口模塊,命令接口模塊將命令通過(guò)CMD(Inout型)信號(hào)線發(fā)送給eMMC芯片,此模塊發(fā)送命令之后就等待eMMC芯片響應(yīng),根據(jù)響應(yīng)命令來(lái)確定初始化流程狀態(tài),期間通過(guò)初始化的高速切換標(biāo)志通知時(shí)鐘切換模塊切換到高速時(shí)鐘,初始化完成之后,通知用戶層可以開(kāi)始進(jìn)行數(shù)據(jù)傳輸;用戶層向傳輸控制模塊發(fā)送命令(如讀寫地址、讀寫塊數(shù)、讀寫屬性),然后傳輸控制模塊解析上層用戶的命令發(fā)送相應(yīng)的讀寫命令給命令接口模塊,而命令接口模塊將命令轉(zhuǎn)發(fā)給eMMC;當(dāng)讀數(shù)據(jù)時(shí),eMMC將數(shù)據(jù)通過(guò)DAT接口發(fā)送給數(shù)據(jù)處理模塊,數(shù)據(jù)處理模塊將對(duì)讀出的數(shù)據(jù)進(jìn)行CRC校驗(yàn),并將eMMC響應(yīng)的CRC校驗(yàn)值和數(shù)據(jù)處理模塊計(jì)算的值一起發(fā)給傳輸控制模塊,在傳輸控制模塊中對(duì)比CRC校驗(yàn)值,如果一致,則讀取完成,將數(shù)據(jù)存儲(chǔ)到緩存模塊,然后傳輸給用戶層,否則傳輸控制模塊將重新發(fā)送讀取命令,重新讀取數(shù)據(jù),直到CRC校驗(yàn)一致為止;當(dāng)寫數(shù)據(jù)時(shí),用戶層將數(shù)據(jù)暫存到緩存模塊,緩存模塊將數(shù)據(jù)傳輸給數(shù)據(jù)處理模塊并計(jì)算CRC校驗(yàn)值,然后將數(shù)據(jù)封包發(fā)送給eMMC,eMMC內(nèi)部將自動(dòng)對(duì)比CRC校驗(yàn)值,如果一致,則寫入eMMC,否則將被舍棄,并通過(guò)命令接口反映給傳輸控制模塊,重新發(fā)送命令,直到CRC校驗(yàn)值一致則寫入完成。多塊讀寫重復(fù)以上讀寫過(guò)程,直到塊數(shù)和預(yù)定的塊數(shù)一致為止。eMMC控制器框圖如圖5所示。
圖5 eMMC控制器框圖
3仿真驗(yàn)證結(jié)果
本文在Xilinx 集成開(kāi)發(fā)工具ISE14.6開(kāi)發(fā)環(huán)境下,用Verilog HDL硬件編程語(yǔ)言實(shí)現(xiàn)eMMC控制器的總體功能以及各模塊功能,使用ISE在線邏輯分析儀Chipscope來(lái)仿真和驗(yàn)證控制器功能。仿真驗(yàn)證結(jié)果如圖6~圖10所示。
圖6 eMMC控制器初始化過(guò)程
圖7 eMMC控制器單塊讀
圖8 eMMC控制器多塊讀
圖9 eMMC控制器單塊寫
圖10 eMMC控制器多塊寫
結(jié)語(yǔ)
通過(guò)對(duì)eMMC的技術(shù)特點(diǎn)和工作原理的分析,提出
參考文獻(xiàn)
[1] 夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程[M].北京:北京航空航天大學(xué)出版社,2008.
[2] 潘松,黃繼業(yè),陳龍.EDA技術(shù)與Verilog HDL[M].北京:清華大學(xué)出版社,2010.
[3] 劉常.數(shù)字邏輯電路[M].北京:國(guó)防工業(yè)出版社,2002.
[4] JEDEC SOLID STATE TECHNOLOGY ASSOCIATION.JEDEC STANDARD eMMC specification[S].USA:JESD84-B45,2011.
[5] 曹軍.安全SOC芯片中eMMC 主接口的設(shè)計(jì)與實(shí)現(xiàn)[D].沈陽(yáng):遼寧大學(xué),2014.
[6] 胡文文.基于eMMC存儲(chǔ)系統(tǒng)性能的研究和優(yōu)化[D].北京:北京郵電大學(xué),2012.
[7] 周杰,郝立燕,李建廠.基于FPGA的eMMC控制器及其工作方法:中國(guó),103280238A[P].2013-09-04.
[8] 鄭亮.SD/MMC控制器的設(shè)計(jì)與實(shí)現(xiàn)[D].廈門:廈門大學(xué),2008.
[9] Xilinx Company.Virtex-6 FPGA Packing and Pinout Specifications.UG365(v2.4),2011.
[10] Xilinx Company.Virtex-6 FPGA Memory Resources User Guide.UG363(v1.6),2013.
張耀軍(碩士),研究方向?yàn)榛贔PGA的高速海量數(shù)據(jù)傳輸與存儲(chǔ);孫銘(碩士),研究方向?yàn)榛贔PGA的電子系統(tǒng)設(shè)計(jì);王锏(碩士),研究方向?yàn)榛贔PGA的海量數(shù)據(jù)傳輸。
TI為中國(guó)互聯(lián)網(wǎng)企業(yè)帶來(lái)創(chuàng)新物聯(lián)網(wǎng)解決方案
TI與騰訊、百度、阿里巴巴及京東四家中國(guó)領(lǐng)先的互聯(lián)網(wǎng)企業(yè)建立了IoT合作伙伴關(guān)系。通過(guò)久經(jīng)行業(yè)驗(yàn)證的低功耗和超低功耗SimpleLink線MCU產(chǎn)品組合,TI針對(duì)四家企業(yè)的不同IoT應(yīng)用提供了多種創(chuàng)新的無(wú)線連接解決方案。SimpleLink產(chǎn)品組合包括面向廣泛嵌入式市場(chǎng)的無(wú)線MCU、無(wú)線網(wǎng)絡(luò)處理器(WNP) 、RF收發(fā)器和距離擴(kuò)展器,能夠簡(jiǎn)化IoT應(yīng)用的開(kāi)發(fā)并輕松實(shí)現(xiàn)萬(wàn)物互聯(lián)。憑借對(duì)Bluetooth Smart、Wi-Fi、Sub-1 GHz、6LoWPAN、ZigBee等多達(dá)14項(xiàng)無(wú)線連接標(biāo)準(zhǔn)的支持,該產(chǎn)品組合可幫助生產(chǎn)商將無(wú)線連接功能輕松添加至任何產(chǎn)品和設(shè)計(jì)中,并滿足所有的應(yīng)用需求。
作為此次TI與騰訊的合作項(xiàng)目之一,微信將指定TI作為其Bluetooth Smart以及Wi-Fi芯片的供應(yīng)商,其終端用戶可以在TI的無(wú)線芯片上實(shí)現(xiàn)AirKiss和AirSync協(xié)議,并接入騰訊推廣的微信硬件平臺(tái)。未來(lái),微信還希望將其合作論壇的一部分權(quán)限開(kāi)放給TI,讓TI的技術(shù)工程人員能夠在論壇上為開(kāi)發(fā)者提供支持,共同打造更多的創(chuàng)新應(yīng)用。
eMMC Controller Design Based on Virtex-6 FPGA
Zhang Yaojun,Sun Ming,Wang Jian
(Key Lab of Electronic Information Countermeasure and Simulation,Xidian University,Xi’an 710071,China)
Abstract:The technical characteristics,working principle of the eMMC chip,and the design of the controller are introduced.The design is based on Xilinx Virtex-6 series FPGA chip,and the simulation results are given.The test verifies the feasibility of the design.In addition,the design adopts the hardware logic,which has the characteristics of high speed,strong commonality,high reliability.
Key words:FPGA;eMMC;controller
收稿日期:(責(zé)任編輯:薛士然2015-08-24)
中圖分類號(hào):TP37
文獻(xiàn)標(biāo)識(shí)碼:A