开发者社区> 游客2elw4zs3c5wv6> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

基于TMS320C6657+ZYNQ7035/45平台-PL端 NVMe 的 exFAT 文件系统 FPGA IP

简介: 基于广州星嵌电子科技有限公司TMS320C6657+ZYNQ7035/45评估板的PL端实现标准NVMe 1.3协议的Host端,即纯逻辑实现NVMe Host IP设计分享。
+关注继续查看

一、设计目的
基于广州星嵌电子科技有限公司TMS320C6657+ZYNQ7035/45评估板的PL端实现标准NVMe 1.3协议的Host端,即纯逻辑实现NVMe Host IP。

图片1.png

图片2.png

用户可以根据自身需求,定制NVMe Host FPGA IP,还可以在此基础上定制FPGA纯逻辑来实现文件系统ExFAT。
NVMe Host FPGA IP核使用VHDL硬件描述语言的纯逻辑方式来实现,NVMe物理层使用Xilinx 7系列 PCIe核,无需CPU参与。
目前已在广州星嵌电子科技有限公司DSP+FPGA+ARM XQ6657Z35-EVM评估板上实现并经充分测试验证:
如果使用PCIe 2.0 X2接口,连续读速率:685 MB/s,连续写速率:531 MB/s;
如果使用PCIe2.0 X4接口,连续读速率1277 MB/s,连续写速率1015 MB/s,
日后升级性能还可以提升。

二、NVMe Host FPGA IP核简介
NVMe Host FPGA IP访问接口简单,用户可将此IP当作双端口RAM来使用,只是相对普通双端口RAM而言多增加了一些读、写命令握手接口信号而已。当然,用户还可将IP定制为自身所需要的接口形式。

NVMe Host FPGA IP对外接口图如下:
图片3.png

名词和概念解释:
SLBA(Starting LBA):逻辑块基地址,数据在SSD固态硬盘上的起始地址。
NLB(Number of Logical Blocks):逻辑块数量,指定数据传输大小,需要指出的是这是一个0基数值,即以0为初始值,所以最终传的是(NLB+1)个逻辑块。
NVMe Host FPGA IP支持最大队列数64对,最大队列深度16383,用户可以根据需要进行定制。NVMe Host FPGA IP核源码实现了参数化,可根据用户功能及性能(比如队列数与队列深度)对IP参数进行修改设置。
NVMe Host FPGA IP使用的FPGA 软件开发平台为Vivado 2018.3,用户可以定制为自身所需的FPGA软件开发平台上。

三、资源消耗
 NVMe Host FPGA IP在XC7Z035FFG676-2芯片上的资源消耗报表如下(仅供参考,基于XQ6657Z35-EVM平台测试的数据):

图片4.png

四、实验平台与测试结果
5.png

4.1、NVMe Host FPGA IP测试截图和说明
借助NVMe Host FPGA IP,往NVMe SSD固态硬盘上写入测试数据(例程使用的是累加数),然后读出,并在FPGA上使用逻辑进行比对,并给出比对结果,以验证NVMe硬盘读写数据是否一致。

1、单次写8个扇区

图片7.png
注:NLB = 7,即逻辑块数量8。

数据波形放大查看,可以看到写数据与写地址相同,写数据为累加数:
图片8.png

图片9.png

单次写8个扇区对应的PCIe底层时序波形如下图所示:

图片10.png

2、单次读8个扇区
图片11.png

对上面数据波形放大,可发现读数据与读地址相同,读数据为累加数:
图片12.png

图片13.png

单次读8个扇区对应的PCIe底层时序波形如下图所示:
图片14.png

3、扇区读写比对测试
比对结果如下图高亮信号所示:
图片15.png

Equal_Fail:SSD硬盘读写过程中,只要发现一个数据读写比对不一致,此信号就拉高并一直保持高电平,无论以后数据是否一致,除非复位。
Equal_Valid:读写数据比对结果有效标识,1表示读写对比结果有效。
Equal_Flag:SSD硬盘读写数据一致标识,1表示读写数据一致。

NVMe SSD硬盘读写测试完后,从测试平台上取下NVMe SSD固态硬盘,并将SSD硬盘连接至PC电脑,使用WinHex软件工具分析NVMe SSD固态硬盘的写入数据。

4、指定扇区某位置写入指定值
1、指定往SSD硬盘的第1扇区偏移地址127中写入数据0xAA55_ABCD,FPGA VIO设置如下图所示:
图片24.png

2、指定从SSD硬盘的第1扇区偏移地址127中读出数据,读数据为0xAA55_ABCD,与写入数据一致,读时序和读写比对结果如下图所示:
图片25.png

3、从测试平台上取下 NVMe SSD固态硬盘,并将硬盘连接至PC电脑,使用WinHex软件工具分析刚刚写入硬盘的测试数据,如下图所示,也可发现确实已经将0xAA55_ABCD用户数据写入了硬盘:
图片26.png

4.2、NVMe协议相关寄存器读取
1、NVMe协议码:0x010802,对应的PCIe底层读时序波形如下图所示:
图片27.png

2、NVMe协议版本1.3:0x00010300,对应的PCIe底层读时序波形如下图所示:
图片28.png

图片29.png

4.3、NVMe Host IP核支持服务
微信图片_20221102144756.png

  1. TMS320C6657+ZYNQ7035/45异构多核处理平台

XQ6657Z35(45)-EVM评估板,由广州星嵌电子科技有限公司采用核心板+底板架构设计。
DSP选用TI TMS320C6657 双核C66x 定点/浮点,主频 1.25GHz/核;
FPGA选用Xilinx Zynq SoC处理器采用的XC7Z035/45-2FFG676I;

图1 正面图.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
zynq操作系统:DDR带宽测试
个别时候,嵌入式设备的DDR除了常规的遍历读写和压力测试外,会有提供读写带宽的需求,下面介绍一种没有精确要求的测法,参考自http://github.com/raas/mbw
0 0
基于ZYNQ+DSP平台Zynq7035/45 FPGA高速串行接口的千兆以太网UDP例程设计和使用说明
Xilinx XC7Z035/45-2FFG676I PL端高速串行接口的千兆以太网UDP例程设计和使用说明
0 0
【实战经验分享】如何对SSD固态硬盘下发SCSI command?
目前可以供用来下发SCSI/ATA Command的工具有很多,比如BusHound, Hdparm, Sg3, Msecli等。其中Msecli是Micron自己的专门用来管理Micron SSD的命令行接口, 对于其他家的SSD是无效的。我们这里主要用的Sg3这个工具
0 0
Xilinx Zynq-7000系列XC7Z035/XC7Z045高性能SoC处理器评估板PS端ETH RJ45接口
本文介绍了xines DSP+FPGA异构评估板,其中Xilinx Zynq-7000系列XC7Z035/XC7Z045系列主要特性,资源框图及PS端ETHRJ45接口引脚说明
0 0
Xilinx FPGA SPI配置芯片都支持哪些型号
Xilinx FPGA SPI配置芯片都支持哪些型号
0 0
Vxworks下的SATA提速
<p class="MsoNormal" style="margin:0cm 0cm 0pt"><span lang="EN-US"><span style="font-family:Times New Roman; font-size:14px"> </span></span></p> <p class="MsoNormal" style="text-indent:-18pt; mar
1433 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Cloud Storage Innovations with Intel® Optane™ and Intel® 3D NAND SSDs
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载