电子大神的日记本,供应链专家的功夫茶盘,在这里记录、分享与共鸣。

登录以开始

基于SATA固态硬盘的高速大容量嵌入式存储模块(80M/s数据连续写入)

        前段时间做高速大容量存储,在网上看不少牛人使用V5的FPGA直接实现SATA协议,性能也可以做的很高(200MB/s左右)。但是V5的价格太贵,更正重要的书,使用verilog实现SATA协议对俺来说有点难,即使实现了功能,其可靠性也很难保证,没有半年时间估计搞不定。只好采用简单的实现途径。

        JM20330是一款PATA转SATA芯片,有工业级芯片,最大可支持2T硬盘,支持uDMA5,uDMA6,uDMA6,分别对应的传输速度为100MB/s,133MB/s,150MB/s。而我们的要求80MB/s的存储速度就够了。所以采用uDMA5控制方式,uDMA5是在写时钟的上升沿和下降沿分别传输一次数据,提高了数据带宽。实现起来并不困难,对着ATA协议一步一步来就行了。容易让人混淆的一点是,协议中时序图为1的地方不代表高电平,而是表示“有效”,这一点一定注意,我就吃了好几天的亏,硬盘怎么都没反应。

         主 控制芯片采用spartan6 LX45 FPGA,采用ddr3做数据缓冲,千兆以太网作为数据下载和数据采集控制接口,(也可采用422接口为采集控制接口)。为简化工作量,没有建立文件系统,数据按照页顺序写入在SATA固态硬盘中,系统在页地址0x00100中建立了存储管理表,记录存储次数、每次存储的起始页、每次存储的页长度等信息。使用配套的上位机处理软件,千兆以太网的最高下载速度为40MB/s(巨帧模式),可以方便快捷的管理数据。

        系统可支持422、LVDS、并口等数据输入方式(我们的设备采集和存储分离,AD采集的数据通过高速串口发送到存储器),由接收解码单元将收到的数据存入PATA控制器的缓冲FIFO中(32k),每满16k的数据,启动一次uDMA写操作(写16k数据)。经测试,系统可支持80M/s数据的连续写入。

        存储模块的体积为60mmX80mmX40mm,两块PCB板+一块SATA硬盘,体积很小,功耗大概3.5W(有点大硬盘占了1/3,)。由于采用了固态硬盘,系统抗震动、抗冲击,适合工业、军用等领域。

        我这种可能不是性能最好的方案,但是是最方便、最快实现的方案,共花了3个月时间吧,但存储性能已经快到极限了(uDMA6 100MB左右,我没试那么快的,并口速度太快还是让人不放心啊)。V5的高性能很诱人,但是开发难度???网上看TI的DSP DM8168集成SATA口,但不知性能如何,以及开发的难易度。Power PC也有 SATA接口的,也没见到太多资料。有什么更好的方案,希望网友讨论一下。

博主
haibo2806@163.com
工程师随笔
一名电子设计爱好者
点击跳转