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