这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 物联网技术 » Verilog:【8】基于FPGA实现SDNANDFLASH的SPI协议读写

共9条 1/1 1 跳转至

Verilog:【8】基于FPGA实现SDNANDFLASH的SPI协议读写

菜鸟
2024-06-21 18:05:20     打赏

  在此介绍的是使用FPGA实现SD NAND FLASH的读写操作,以雷龙发展提供的CS创世SD NAND FLASH样品为例,分别讲解电路连接、读写时序与仿真和实验结果。

目录

  1 视频讲解

  2 SD NAND FLASH背景介绍

  3 样品申请

  4 电路结构与接口协议

  4.1 SD NAND

  4.2 SD NAND测试板

  4.3 FPGA开发板

  5 SD卡协议与时序流程

  5.1 SD卡协议

  5.2 SD卡2.0版本初始化步骤

  5.3 SD卡的读步骤

  5.4 SD卡的写步骤

  6 模块代码

  6.1 sd_card_top

  6.2 sd_card_cmd

  6.3 sd_card_sec_read_write

  6.4 spi_master

  6.5 其余代码

  6.5.1 sd_card_test

  6.5.2 ax_debounce

  6.5.3 seg_decoder

  6.5.4 seg_scan

  7 实验结果

  8 参考资料


  使用FPGA讲解SD NAND FLASH的文章网上也有很多比较详实的内容,本文的部分思路也是参考了其他博主的博客思路。

  1 视频讲解

  为了便于更加清晰地讲解内容,本文也将文章的对应部分以视频的形式进行了录制:

  (后期正在紧锣密鼓制作ing)

  2 SD NAND FLASH背景介绍

  目前市面上主流的存储芯片,分为了EEPROM、NOR FLASH、NAND FLASH三种,其中后两种是市面上主要的非易失闪存技术,他们分别具有不同的特点:

  1.EEPROM

  EEPROM (Electrically Erasable Programmable read only memory)是指带电可擦可编程只读存储器。是一种掉电后数据不丢失的存储芯片。 EEPROM 可以在电脑上或专用设备上擦除已有信息,重新编程。一般用在即插即用设备中。

  相较于EEPROM计数,下文提到的FLASH技术,具有更快的速度,工艺上可以分为NOR FLASH和NAND FLASH两种

  2.NOR FLASH

  NOR FLASH是一种非易失闪存技术。其特点是芯片内执行 (XIP),应用程序可以直接在存储芯片内运行,不必再把代码读到系统 RAM 中。其传输效率较高高,在 1~4MB 的小容量时具有很高的成本效益。

  3.NAND FLASH

  NAND FLASH内部采用非线性宏单元模式,这种结构能提供极高的单元密度,并且写入和擦除的速度很快。作为当前最热门的存储芯片,目前生活中常见的电子产品都会使用到这种存储芯片,例如数码相机、U盘等等。

  由于NAND FLASH在大容量应用中的便利性,因此作为今天介绍的主角~

  什么是SD NAND呢(以下省略FLASH)?下面的内容是从雷龙发展官网的介绍中得到:


  SD NAND俗称贴片式TF卡,尽管与TF卡名称类似,但是有较大的区别:

  相比常见的TF卡,SD NAND是专门为内置存储进行设计,焊接在PCB板上以供工业级产品的应用。因此对品质稳定性、一致性、以及尺寸都有较高的要求。

  下图中左侧即为SD NAND、右侧是常见的TF卡。

  3 样品申请

  本文所使用的CS创世SD NAND是从深圳雷龙发展申请获得,可以在官网中最上面找到申请样品的入口:


  深圳市雷龙发展有限公司创立于2008年,专注NAND Flash设计研发13年。创始人均为步步高/华为技术背景出身。是一家专注于存储元器件代理分销商。 如果有一些技术问题也可以和其公司人员进行沟通,相关的工作人员非常专业和热心。

  下图是我收到的测试样品:

  4 电路结构与接口协议

  4.1 SD NAND

  本文所使用的产品是CSNP4GCR01-AMW,是雷龙的第二代产品,产品如下图所示:

  数据手册可以在立创商城进行下载,其封装与连接的电路原理参考图如下图所示:

  芯片共包含8个引脚,包括4根数据线(6、7、1、2);2根电源线(4、8);1根时钟线(3);1根命令控制线(5)

  手册中提供了SD NAND的两种使用模式,分别为SD MODE 以及 SPI MODE。他们所对应的引脚定义,如下图所示:

  对于两种模式的切换,官方给出了初始化的方式。下文在代码的时序部分也会涉及到相关内容。

  在对SD卡数据读写速度要求不高的情况下,选用SPI通信模式可以说是一种最佳方案。因为在该模式下,同只需要通过四根线就是可以完成所有的数据交换,可以为我们节省出宝贵的FPGA I/O资源。下图给出了SPI一对一通信时,主设备与从设备之间的连接关系。

  (注:SPI协议详解传送门)

  因此本文主要介绍SPI MODE下各个引脚的功能:

  确定了通讯模式后,也就便于我们后文中,利用这种通讯模式按照SD卡的读写时序进行读写操作。

  4.2 SD NAND测试板

  单独的SD NAND不便于我们使用FPGA进行读写测试,好在官方提供了测试板,如下图所示:

  有了它就可以轻松实现SD NAND与我们常见的FPGA开发板上的Micro SD插槽进行连接与测试了。

  适用产品:LGA8,6x8mm 封装的SD NAND产品。

  测试板尺寸:长度6.22厘米,宽度2.49厘米,接口长度2.53厘米。

  使用方法:将芯片焊接至测试板上,可在原有的Micro SD卡座上直接调试和测试。

  准备工具:热风枪,锡膏,镊子。温度要求:将热风枪温度调至300摄氏度℃即可焊接。

  4.3 FPGA开发板

  本文所使用的是黑金的AX301开发板,上面装有一个 Micro SD 卡座, FPGA 通过 SPI 数据总线访问 Micro SD 卡,SD 卡座和 FPGA 的硬件电路连接如下:

  借由硬件电路的连接,FPGA可以直接与我们的SD NAND进行通信了。

  至此,我们已经实现了SD NANDSPI通信方式方案的确定以及基于此的硬件电路连接,下一步就是根据SD卡的读写时序讲通信方式初始化为SPI模式,并按照SD卡协议进行读写操作。


 





关键词: NAND FLASH     闪存     芯片     存储     SD卡NA    

高工
2024-06-21 18:57:26     打赏
2楼

感谢分享你


专家
2024-06-21 19:00:59     打赏
3楼

感谢分享


高工
2024-06-21 19:03:04     打赏
4楼

感谢分享


专家
2024-06-22 08:15:06     打赏
5楼

不错啊


院士
2024-06-22 09:30:22     打赏
6楼

这个还是好厉害的!

只是我现在的FPGA的学习进度现在好慢


专家
2024-06-23 08:59:48     打赏
7楼


UYHMN66666666


菜鸟
2024-06-23 23:18:06     打赏
8楼

感谢分享


菜鸟
2024-06-24 09:45:21     打赏
9楼

感谢分享


共9条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]