||
基于廣州星嵌電子科技有限公司TMS320C6657+ZYNQ7035/45評(píng)估板的PL端實(shí)現(xiàn)標(biāo)準(zhǔn)NVMe 1.3協(xié)議的Host端,即純邏輯實(shí)現(xiàn)NVMe Host IP。
用戶可以根據(jù)自身需求,定制NVMe Host FPGA IP,還可以在此基礎(chǔ)上定制FPGA純邏輯來(lái)實(shí)現(xiàn)文件系統(tǒng)ExFAT。
NVMe Host FPGA IP核使用VHDL硬件描述語(yǔ)言的純邏輯方式來(lái)實(shí)現(xiàn),NVMe物理層使用Xilinx 7系列 PCIe核,無(wú)需CPU參與。
目前已在廣州星嵌電子科技有限公司DSP+FPGA+ARM XQ6657Z35-EVM評(píng)估板上實(shí)現(xiàn)并經(jīng)充分測(cè)試驗(yàn)證:
如果使用PCIe 2.0 X2接口,連續(xù)讀速率:685 MB/s,連續(xù)寫速率:531 MB/s;
如果使用PCIe2.0 X4接口,連續(xù)讀速率1277 MB/s,連續(xù)寫速率1015 MB/s,
日后升級(jí)性能還可以提升。
NVMe Host FPGA IP訪問(wèn)接口簡(jiǎn)單,用戶可將此IP當(dāng)作雙端口RAM來(lái)使用,只是相對(duì)普通雙端口RAM而言多增加了一些讀、寫命令握手接口信號(hào)而已。當(dāng)然,用戶還可將IP定制為自身所需要的接口形式。
NVMe Host FPGA IP對(duì)外接口圖如下:
名詞和概念解釋:
SLBA(Starting LBA):邏輯塊基地址,數(shù)據(jù)在SSD固態(tài)硬盤上的起始地址。
NLB(Number of Logical Blocks):邏輯塊數(shù)量,指定數(shù)據(jù)傳輸大小,需要指出的是這是一個(gè)0基數(shù)值,即以0為初始值,所以最終傳的是(NLB+1)個(gè)邏輯塊。
NVMe Host FPGA IP支持最大隊(duì)列數(shù)64對(duì),最大隊(duì)列深度16383,用戶可以根據(jù)需要進(jìn)行定制。NVMe Host FPGA IP核源碼實(shí)現(xiàn)了參數(shù)化,可根據(jù)用戶功能及性能(比如隊(duì)列數(shù)與隊(duì)列深度)對(duì)IP參數(shù)進(jìn)行修改設(shè)置。
NVMe Host FPGA IP使用的FPGA 軟件開(kāi)發(fā)平臺(tái)為Vivado 2018.3,用戶可以定制為自身所需的FPGA軟件開(kāi)發(fā)平臺(tái)上。
三、資源消耗NVMe Host FPGA IP在XC7Z035FFG676-2芯片上的資源消耗報(bào)表如下(僅供參考,基于XQ6657Z35-EVM平臺(tái)測(cè)試的數(shù)據(jù)):
借助NVMe Host FPGA IP,往NVMe SSD固態(tài)硬盤上寫入測(cè)試數(shù)據(jù)(例程使用的是累加數(shù)),然后讀出,并在FPGA上使用邏輯進(jìn)行比對(duì),并給出比對(duì)結(jié)果,以驗(yàn)證NVMe硬盤讀寫數(shù)據(jù)是否一致。
1、單次寫8個(gè)扇區(qū)注:NLB = 7,即邏輯塊數(shù)量8。
數(shù)據(jù)波形放大查看,可以看到寫數(shù)據(jù)與寫地址相同,寫數(shù)據(jù)為累加
單次寫8個(gè)扇區(qū)對(duì)應(yīng)的PCIe底層時(shí)序波形如下圖所示:
對(duì)上面數(shù)據(jù)波形放大,可發(fā)現(xiàn)讀數(shù)據(jù)與讀地址相同,讀數(shù)據(jù)為累加數(shù):
單次讀8個(gè)扇區(qū)對(duì)應(yīng)的PCIe底層時(shí)序波形如下圖所示:
比對(duì)結(jié)果如下圖高亮信號(hào)所示:
Equal_Fail:SSD硬盤讀寫過(guò)程中,只要發(fā)現(xiàn)一個(gè)數(shù)據(jù)讀寫比對(duì)不一致,此信號(hào)就拉高并一直保持高電平,無(wú)論以后數(shù)據(jù)是否一致,除非復(fù)位。
Equal_Valid:讀寫數(shù)據(jù)比對(duì)結(jié)果有效標(biāo)識(shí),1表示讀寫對(duì)比結(jié)果有效。
Equal_Flag:SSD硬盤讀寫數(shù)據(jù)一致標(biāo)識(shí),1表示讀寫數(shù)據(jù)一致。
NVMe SSD硬盤讀寫測(cè)試完后,從測(cè)試平臺(tái)上取下NVMe SSD固態(tài)
硬盤,并將SSD硬盤連接至PC電腦,使用WinHex軟件工具分析NVMe SSD固態(tài)硬盤的寫入數(shù)據(jù)。
服務(wù)方式 | 配套清單 |
源碼 | 源碼、使用說(shuō)明 |
網(wǎng)表不綁定(適用一個(gè)系列) | 網(wǎng)表(針對(duì)特定FPGA型號(hào),比如XC7Z035FFG676)、使用說(shuō)明 |
網(wǎng)表綁定 | 網(wǎng)表(網(wǎng)表綁定,綁定FPGA DNA號(hào),也就是綁定FPGA芯片)、使用說(shuō)明 |
PCIe接口參數(shù) | NVMe SSD硬盤型號(hào) | 性能指標(biāo)實(shí)測(cè)數(shù)值 |
PCIe 2.0 X2接口 | 三星NVMe SSD 970 500GB 硬盤 | 連續(xù)讀速率:685 MB/s; 連續(xù)寫速率:531 MB/s。 |
PCIe2.0 X4接口 | 三星970 EVO Plus 250GB NVme SSD | 連續(xù)讀速率:1277 MB/s; 連續(xù)寫速率:1015 MB/s。 |