周珍龍,顧彤,王紅兵
(西安電子科技大學(xué) 電子信息攻防對(duì)抗與仿真技術(shù)重點(diǎn)實(shí)驗(yàn)室,西安 710071)
?
周珍龍,顧彤,王紅兵
(西安電子科技大學(xué) 電子信息攻防對(duì)抗與仿真技術(shù)重點(diǎn)實(shí)驗(yàn)室,西安 710071)
本文實(shí)現(xiàn)了一種嵌入式陣列存儲(chǔ)系統(tǒng),以具有體積優(yōu)勢(shì)、性能優(yōu)勢(shì)以及價(jià)格優(yōu)勢(shì)的eMMC嵌入式多媒體卡為存儲(chǔ)介質(zhì),基于FPGA使用硬件邏輯實(shí)現(xiàn)讀寫控制器,并給出軟件仿真以及硬件測(cè)試結(jié)果。同時(shí)控制8片存儲(chǔ)芯片擴(kuò)展容量,在速度提高方面使用了GTX高速收發(fā)器。和單片存儲(chǔ)系統(tǒng)對(duì)比,本設(shè)計(jì)系統(tǒng)具有海量存儲(chǔ)、高速讀寫等特點(diǎn)。
FPGA;eMMC;GTX高速收發(fā)器;陣列存儲(chǔ)系統(tǒng);讀寫控制器
eMMC(Embedded Multi-Media Card)是嵌入式多媒體卡的簡(jiǎn)稱[1]。當(dāng)前,移動(dòng)終端,尤其是手機(jī),平板以及軍用控制器等手持設(shè)備,對(duì)存儲(chǔ)系統(tǒng)都要求高速以及海量,并且一個(gè)重要條件是體積小。設(shè)計(jì)基于FPGA的eMMC控制器有以下幾個(gè)優(yōu)點(diǎn):體積小,對(duì)便攜性要求嚴(yán)格的移動(dòng)終端有很好的支持力,接口速度達(dá)到50 MB,符合便攜設(shè)備對(duì)訪問速度的要求,滿足大容量系統(tǒng)的需求;控制器采用FPGA硬件邏輯實(shí)現(xiàn),提高系統(tǒng)兼容性。
該陣列系統(tǒng)主要在Xilinx公司的Virtex 6系列FPGA芯片XC6VLX240中實(shí)現(xiàn)控制器模塊,生成各級(jí)FIFO,以及為控制器、FIFO、eMMC芯片提供各種需求的時(shí)鐘電路。同時(shí),該陣列系統(tǒng)使用GTX收發(fā)器作為數(shù)據(jù)傳輸?shù)墓ぞ撸沟孟到y(tǒng)具備高傳輸速率的特點(diǎn)。
本文選擇Micron的eMMC芯片,芯片型號(hào)為MTFC64GJV DN-4M IT,該芯片遵循JEDEC標(biāo)準(zhǔn)協(xié)議5.0。由于當(dāng)前eMMC芯片的存儲(chǔ)容量有限,大容量系統(tǒng)必須使用多個(gè)eMMC來達(dá)到要求,這里選擇8片eMMC芯片,每片eMMC芯片的存儲(chǔ)容量為64 GB。對(duì)所有芯片的讀取方式有并行和串行兩種。如果采用串行的存儲(chǔ)方式,對(duì)芯片一塊一塊地存儲(chǔ),勢(shì)必對(duì)讀寫速度有很大限制,因此本文采用并行的方式,對(duì)存儲(chǔ)芯片的數(shù)據(jù)位寬擴(kuò)展,同時(shí)對(duì)8片eMMC芯片讀寫,數(shù)據(jù)并行位寬由單片8位擴(kuò)展為8×8位的寬度。
該陣列系統(tǒng)的總體框圖如圖1所示,包括讀和寫兩個(gè)過程。
圖1 系統(tǒng)總體框圖
其中,控制器模塊負(fù)責(zé)對(duì)eMMC芯片、GTX、各級(jí)FIFO上電復(fù)位,負(fù)責(zé)整個(gè)系統(tǒng)工作期間的協(xié)調(diào)工作。本文需要實(shí)現(xiàn)對(duì)eMMC的讀和寫的功能。圖1中,寫過程時(shí),左側(cè)發(fā)送端為數(shù)據(jù)產(chǎn)生模塊,右側(cè)接收端為eMMC;讀過程時(shí),左側(cè)發(fā)送端為來自eMMC的數(shù)據(jù),而右側(cè)輸出端則是將讀取自eMMC芯片的數(shù)據(jù)傳輸給最終申請(qǐng)數(shù)據(jù)訪問的模塊。整個(gè)系統(tǒng)對(duì)外部體現(xiàn)為接口,體現(xiàn)嵌入式FPGA的可移植性。
2.1數(shù)據(jù)產(chǎn)生模塊
數(shù)據(jù)產(chǎn)生模塊在數(shù)據(jù)寫過程中不可缺少[2]。本設(shè)計(jì)方案針對(duì)數(shù)據(jù)存儲(chǔ),選擇塊長(zhǎng)為512字節(jié)的數(shù)據(jù)存儲(chǔ)方案。故數(shù)據(jù)產(chǎn)生模塊每次產(chǎn)生的數(shù)據(jù)為512字節(jié)。這里選擇常用遞增碼作為數(shù)據(jù)源,由于eMMC的數(shù)據(jù)總線為8位,因此需要兩輪00~FF的遞增碼才能達(dá)到512字節(jié)的要求。數(shù)據(jù)產(chǎn)生模塊如圖2所示。
圖2 數(shù)據(jù)產(chǎn)生模塊
其中,cmd24_recover為控制器模塊在發(fā)送所有的寫命令之后發(fā)出的命令信號(hào)。cmd12_wanted為寫指定塊數(shù)據(jù)(每塊為512字節(jié))之后反饋給控制器模塊的信號(hào),該信號(hào)通知控制器模塊停止對(duì)eMMC的寫過程。
CRC即循環(huán)冗余校驗(yàn)碼(Cycle Redundancy Check), CRC校驗(yàn)碼為16位,生成多項(xiàng)式為17位。數(shù)據(jù)流左移16位,再除以生成多項(xiàng)式,做不借位的除法運(yùn)算(相當(dāng)于按位異或),所得的余數(shù)就是CRC校驗(yàn)碼。CRC16計(jì)算框圖[4]如圖3所示。
2.2控制器模塊
控制器模塊不僅需要完成對(duì)eMMC的命令發(fā)送和命令接收任務(wù),實(shí)現(xiàn)eMMC的控制器設(shè)計(jì),而且需要實(shí)現(xiàn)對(duì)各個(gè)模塊之間數(shù)據(jù)流動(dòng)的控制。
命令發(fā)送和接收的實(shí)現(xiàn),完全遵照J(rèn)EDEC標(biāo)準(zhǔn)5.0的設(shè)備協(xié)議。這里介紹主要的讀寫命令發(fā)送順序[5]:讀命令發(fā)送為CMD0、CMD1、CMD2、CMD3、CMD9、CMD7、CMD8、CMD6、CMD6、CMD16、CMD23、CMD18;寫命令發(fā)送為CMD0、CMD1、CMD2、CMD3、CMD9、CMD7、CMD8、CMD6、CMD6、CMD16、CMD25、CMD12。
圖3 CRC16計(jì)算框圖
由于在eMMC寫過程中,芯片有一個(gè)編程過程,將數(shù)據(jù)寫入存儲(chǔ)邏輯,在該過程中數(shù)據(jù)的發(fā)送必須暫停,因此,整個(gè)系統(tǒng)的數(shù)據(jù)流動(dòng)應(yīng)該予以暫停,該過程由控制器模塊生成pause信號(hào)完成。數(shù)據(jù)讀寫過程中,需要時(shí)刻發(fā)送cmd13命令查詢eMMC芯片的工作狀態(tài),寫過程中尤其重要,其響應(yīng)指示需要判斷產(chǎn)生??刂破髂K具體實(shí)現(xiàn)方案如圖4所示。
圖4 控制器模塊實(shí)現(xiàn)方案
cmd24_recover代表的是上文提到的所有讀寫命令均發(fā)送完畢之后,寫過程中通知數(shù)據(jù)產(chǎn)生模塊產(chǎn)生遞增碼,讀過程中通知小FIFO開始接收來自eMMC芯片的數(shù)據(jù)。pause命令,是在讀寫過程中,由于芯片需要編程而對(duì)整個(gè)傳輸通道暫停的控制命令,該信號(hào)傳送給其他所有模塊。cmd6_recover,在控制器發(fā)送完cmd6命令并接收回應(yīng)之后,通知時(shí)鐘模塊由低速時(shí)鐘切換到高速時(shí)鐘。
2.3GTX模塊
引入GTX模塊主要是針對(duì)數(shù)據(jù)傳輸速率。eMMC的工作時(shí)鐘在128 kHz~52 MHz,如果使用陣列存儲(chǔ),使用8片eMMC芯片,要達(dá)到50 MHz的要求,每個(gè)時(shí)鐘傳輸一個(gè)位寬的數(shù)據(jù),將需要8×8×50 Mbps的傳輸速率,GTX接收,發(fā)送端采用串行通信,其數(shù)據(jù)端使用16位位寬,傳輸頻率為150 MHz,因此,可以達(dá)到16×150 Mbps的傳輸速率要求,滿足eMMC陣列系統(tǒng)對(duì)速率的要求。
對(duì)于GTX的工作原理,這里只做簡(jiǎn)單介紹。GTX有收發(fā)端,二者通過串行線連接[6],對(duì)于系統(tǒng)內(nèi)的其他模塊,主要表現(xiàn)為數(shù)據(jù)位寬為16位的數(shù)據(jù)端口,如圖5所示。
圖5 GTX收發(fā)模塊
發(fā)送端的data連接在發(fā)送端的大FIFO,接收端的data連接在接收端的大FIFO。這里需要注意的是,當(dāng)pause激活時(shí),GTX收發(fā)器之間并沒有停止數(shù)據(jù)傳輸,而是在data線上一直發(fā)送43BC碼,并且將標(biāo)識(shí)信號(hào)charisk_i設(shè)置為00。
2.4時(shí)鐘切換模塊
時(shí)鐘源采用FPGA開發(fā)板上提供的50 MHz時(shí)鐘,然后使用ISE自帶的Clocking Wizard IP核,定制輸出為50 MHz、250 kHz以及150 MHz時(shí)鐘。該模塊接收來自控制模塊的cmd6_recover命令,為eMMC芯片提供時(shí)鐘電路的信號(hào)emmc_clk由初始的250 kHz時(shí)鐘切換到50 MHz,為GTX提供時(shí)鐘的信號(hào)gtx_clk維持150 MHz不變。圖6為時(shí)鐘切換模塊的結(jié)構(gòu)框圖[7]。
圖6 時(shí)鐘切換模塊
2.5各級(jí)FIFO協(xié)調(diào)工作
FIFO的配置上,讀過程和寫過程大致是一樣的。本文所有FIFO使用ISE自帶IP核FIFO Generator工具生成[8],需要注意的是,應(yīng)該將FIFO的默認(rèn)值設(shè)置為FF。可以將各級(jí)FIFO按照順序分為:第1級(jí)FIFO位寬為8進(jìn)8出;第2級(jí)FIFO,位寬為64位進(jìn)16位出,將數(shù)據(jù)發(fā)送給GTX;第3級(jí)FIFO位寬為16位進(jìn)64位出,接收從GTX發(fā)送過來的數(shù)據(jù);第四級(jí)位寬為8位進(jìn)8位出??梢詮膱D1中清楚看到各級(jí)FIFO分配。整個(gè)FIFO系統(tǒng)以GTX分開為左右鏡像。各級(jí)FIFO模板見圖7,這里給出用該模板設(shè)計(jì)的第1級(jí)FIFO在ISE開發(fā)工具中的RTL圖。
圖7 各級(jí)FIFO模塊
8個(gè)第1級(jí)FIFO采用邏輯復(fù)制,使用ISE自帶的FIFO核定制主要模塊,外加控制電路設(shè)計(jì)而成。檢測(cè)到data[7∶0]為00時(shí)(依據(jù)eMMC協(xié)議,00為數(shù)據(jù)包的起始位),使能FIFO寫,將數(shù)據(jù)存入FIFO,在pro_empty不為空時(shí),使能rd_en,如果empty不為空,則一直使能rd_en,該信號(hào)作為下一級(jí)FIFO的寫使能。下一級(jí)FIFO的讀寫使能方案同該級(jí)FIFO設(shè)計(jì)。各級(jí)FIFO不同的地方在于輸入和輸出的位寬不同。
3.1ISim軟件仿真
ISim軟件驗(yàn)證可以縮短系統(tǒng)開發(fā)的時(shí)間[9],能夠直觀地顯示出設(shè)計(jì)中存在的問題,因此前期使用ISim軟件調(diào)試。
(1) crc16模塊驗(yàn)證
圖8為512的數(shù)據(jù)包(起始位00+00~FF+00~FF)的crc16計(jì)算結(jié)果,data最后為結(jié)束位FF。
(2) 各級(jí)FIFO驗(yàn)證
從第1級(jí)FIFO到第4級(jí)FIFO,data1~8為第1級(jí)FIFO輸入,data_trans_xch為第1級(jí)FIFO輸出拼湊而成的第2級(jí)FIFO輸入,gtx_data_trans[15∶0]為第3級(jí)FIFO輸入,gtx_1ch_fifo_data[63∶0]為第3級(jí)FIFO輸出,emmc_1_dat~emmc_8_dat為第4級(jí)FIFO輸出,如圖9所示。
3.2ChipScope在線調(diào)試硬件驗(yàn)證
系統(tǒng)總體驗(yàn)證:最后使用Xilinx的Virtex 6系列FPGA芯片以及Micron的eMMC存儲(chǔ)芯片,對(duì)設(shè)計(jì)的陣列存儲(chǔ)系統(tǒng)的讀寫功能進(jìn)行驗(yàn)證。
寫數(shù)據(jù)驗(yàn)證略——編者注。來自emmc_1_dat~emmc_8_dat數(shù)據(jù)線上的最低位輸出了確認(rèn)信號(hào)0010,表示寫入的數(shù)據(jù)成功,對(duì)8片eMMC的寫數(shù)據(jù)操作正常。
圖8 crc16模塊驗(yàn)證
圖9 各級(jí)FIFO驗(yàn)證
讀數(shù)據(jù)驗(yàn)證略——編者注。從讀出的第13個(gè)512字節(jié)的數(shù)據(jù)開始,系統(tǒng)繼續(xù)從eMMC存儲(chǔ)芯片中讀取上述寫功能寫入的數(shù)據(jù)。
本文解決單片eMMC對(duì)速度以及帶寬的限制,使用了GTX以及FPGA硬件邏輯設(shè)計(jì)滿足陣列存儲(chǔ)系統(tǒng)的要求。邏輯設(shè)計(jì)之后通過ISim軟件仿真驗(yàn)證了電路的可行性,并且隨后將工程生成的二進(jìn)制文件燒寫到FPGA開發(fā)板中,實(shí)現(xiàn)了硬件級(jí)的eMMC陣列存儲(chǔ),通過在線調(diào)試工具ChipScope驗(yàn)證讀寫數(shù)據(jù)全部正常。該系統(tǒng)在Vintex 6系列FPGA上實(shí)現(xiàn)讀寫功能,并可通過定制GTX核輕松移植到其他包含GTX硬核的FPGA上。本文的系統(tǒng)也有值得改進(jìn)的地方,比如可以使用更高速的GTH傳輸數(shù)據(jù)控制更多的eMMC芯片等。
編者注:本文為期刊縮略版,全文見本刊網(wǎng)站www.mesnet.com.cn。
[1] EMBEDDED MULTI-MEDIA CARD (e?MMC), ELEC TRICAL STANDARD (5.0 Device)[EB/OL].[2015-10]. http://www.jedec.org/sites/default/files/docs/JESD84-B50.pdf.
[2] 周杰,郝立燕.基于FPGA的eMMC控制器及其工作方法:中國(guó),10264666.3[P].2013-09-04.
[3] Tongsheng Zhang, Qun Ding.Design and Implementation of CRC Based on FPGA[EB/OL].[2015-10] http://xueshu.baidu.com/s?wd=paperuri:(7e1382efd173772268d2e 58aa965393c)&filter=sc_long_sign&sc_ks_para=q%3DDesign+and+Implementation+of+CRC+Based+on+FPGA&tn=SE_baiduxueshu_c1gjeupa&ie=utf-8.
[4] 葉懋,劉宇紅,劉橋.CRC碼的FPGA實(shí)現(xiàn)[J].重慶工學(xué)院學(xué)報(bào):自然科學(xué)版,2007,21(3).
[5] 夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程[M].北京:北京航空航天大學(xué)出版社,2003.
[6] Xilinx.Xilinx Virtex-6 FPGA GTX Transceivers User Guide,2011.
[7] 羅莉,何鴻軍,徐煒遐,等.面向SOC芯片的跨時(shí)鐘域時(shí)鐘設(shè)計(jì)和驗(yàn)證[J].計(jì)算機(jī)科學(xué),2011,9(9).
[8] 徐光輝,程?hào)|旭.基于FPGA的嵌入式開發(fā)與應(yīng)用 [M].北京:電子工業(yè)出版社,2006.
[9] 王傳新.FPGA設(shè)計(jì)基礎(chǔ)[M].北京:高等教育出版社,2007.
周珍龍(碩士),主要研究方向?yàn)榛贔PGA的高速數(shù)據(jù)存儲(chǔ)與傳輸;顧彤(碩士),主要研究方向?yàn)閳D像融合及存儲(chǔ);王紅兵(碩士),主要研究方向?yàn)榛贔PGA的A/D采樣及存儲(chǔ)。
31Communications Interface(SCI) Reference Guide,2009.
[4] Texas Instrument.TRSF3221E 3-V TO 5.5-V SINGLE-CHANNEL RS-232 1-Mbit/s LINE DRIVER/RECEVIER WITH ±15-Kv IEC ESD PROTECTION,2007.
[5] 陳杰.MATLAB寶典[M].北京:電子工業(yè)出版社, 2011.
陳寶欣、陳林軍(碩士研究生),主要研究方向?yàn)闄z測(cè)技術(shù)與自動(dòng)化裝置;沈艷林(博士),主要研究方向?yàn)閿?shù)字信號(hào)處理;劉鵬(講師),主要研究方向?yàn)榍度胧娇刂葡到y(tǒng);姜智譯(助理工程師),主要從事油庫(kù)自動(dòng)化工作。
(責(zé)任編輯:楊迪娜收稿日期:2015-12-09)
Zhou Zhenlong,Gu Tong,Wang Hongbing
(Key Lab. of Electronic Information Countermeasure and Simulation,Xidian University,Xi’an 710071,China)
In the paper,an embedded array storage system is proposed.The design uses eMMC embedded multimedia card as the storage medium which has the advantages of volume,performance and price,and it uses the hardware logic based on FPGA to implement the read and write controller.The software simulation and hardware testing are given in the paper.Eight memory chips are used to extend the capacity,and the GTX high-speed transceiver is used to improve the speed.Compared with the single chip storage system,the design has the characteristics of mass storage,high-speed reading and writing.
FPGA;eMMC;GTX high-speed transceiver;array storage system;read and write controller
TP273
A
(責(zé)任編輯:楊迪娜2015-10-16)