FPGA综合读写模块(无FIFO)
FPGA技术联盟 2024-12-20



1、综合读写模块(无FIFO

我们对SDRAM的各个功能进行了模块划分,学会了初始化操作、自动刷新操作、写操作、读操作与仲裁操作,结合这几个功能模块就能简单地实现SDRAM的读写功能了(突发方式)。


综合读写模块(无FIFO)的功能框图如下:



可以看到综合读写模块(无FIFO)sdram_ctrl就是例化了之前的几个功能模块。

2、Verilog代码

根据上图的功能框图对功能子模块进行例化即可,如下(仅列出顶层模块,子功能模块请见该系列的其他博文):



3、Testbench

Testbench除了例化了之前编写的子功能模块外,还例化了一个PLL模块,分别输出50M、100M和相位偏移-30°的100M时钟信号。


该Testbench预期实现的功能为:


  • 例化一个综合读写模块:突发读写,突发长度10,初始操作地址为24'h000_000

  • 先从初始地址开始往SDRAM中写入10个数据,分别为1~10

  • 然后一直对SDRAM的地址(24'h000_000~24'h000_009)这10个地址进行数据读取

该Testbench如下:



4、仿真结果

SDRAM 仿真模型打印信息如下:



  • 首先进行了初始化操作

  • 然后对地址0-9的10个存储单位分别写入数据1-10

  • 随后重复读取上一步写入的10个数据

仿真结果如下图:



仿真结果截图的图较长,将其分解讲解:



上图各信号基本不变,且init_end信号(初始化完成信号)最后拉高,说明此阶段为初始化阶段。



上图已经完成了初始化,先拉高了写请求信号,2个周期后写使能信号拉高,开始往SDRAM写了数据。从数据线sdram_dq上可以看到写入的数据分别为1-10。



上图中读请求信号一直为高,代表在重复进行读取操作,而我们也捕捉到了两次读取操作(限于篇幅,后续读取操作不截图);当读请求为高且写请求为低时,仲裁模块响应了读取操作,拉高了读使能,对SDRAM进行读取操作,从数据线sdram_dq上可以看到读取的数据分别为1-10。


5、其他

上文成功实现了SDRAM综合读写模块(无FIFO),我们在仿真验证时通过对SDRAM写入10个数据,并将其读出,比对读写数据是否一致来验证SDRAM综合读写模块(无FIFO)是否能实现预期功能。


该模块虽然能实现预期功能,但是同时存在以下不足需要解决:


  • 调用该模块的其他模块必须与此模块时钟同步,否则将引入跨时钟域传输的问题

  • 虽然仲裁模块可以解决读写请求、刷新请求的冲突,但是在存在冲突时,无法将冲突数据缓存会造成数据丢失(例如写操作、刷新操作冲突。则必定会执行刷新操作后再执行写操作,而在等待刷新操作完成的这段时间可能会将原来要写入的数据覆盖)












XNM-6VP高速存储卡

新品推荐

XNM-6VP 是一款基于KU115高性能FPGA的高速存储模块。支持高速缓存 16GB DDR4 SDRAM, 容量最高可达32TB的固态硬盘存储。支持RAID5/6/10,读写速率最高可达10GBps,支持专门为高速实时记录而设计的自定义文件系统。

该模块基于NVME固态硬盘,主要用于高速实时数据流的存储和回放,主要用于雷达、通信、电子、卫星等领域,包括高速ADC数据采样实时记录、DAC数据回放、基于光纤或者Rapid IO的高速数据记录等场景。

•  标准6U VPX架构模块;

•  最多支持8块NVME SSD;

•  支持8TB/16TB/32TB 三种规格;

•  支持标准文件系统;

•  ExFAT标准文件系统;

•  实时记录功能;

•  文件在线管理;

•  自检与故障检测;

•  持续稳定记录带宽 ≥8GB/s;

•  持续稳定读取带宽 ≥8GB/s


声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • FPGA
  • 可编程
  • PLC
  • verilog
下载排行榜
更多
评测报告
更多
EE直播间
更多
广告