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