SDRAM和dcfifo的联合

设计原理

在"SDRAM突发读写页"实验中,留下了一个问题,就是从SDRAM读取数据的速度要与SDRAM的驱动时钟同步,这就造成了读出的数据的速率过快,我们很难通过在LED上观察其读出的结果。

在学习了dcfifo之后相信你已经了解了dcfifo的功能,没错这一节就是要用到dcfifo作为跨时域的桥梁,把100M的读时钟频率"降下来"。

通过测试模块往SDRAM写入一页的数据,当写如完成后便进入到延迟状态(当然这个延迟我们可以不要),延迟完成后接着进入到读数据状态,在读数据状态中分为两个部分:一个是写dcfifo,即在读出SDRAM的数据的同时将读出的数据写如dcfifo中,在读完SDRAM内部的256个数据之后也就是对dcfifo写完成了,这个过程读SDRAM和写dcfifo的时钟频率是100M。接着对dcfifo进行读操作,这里的读时钟是50M,在读完成后便接着再对SDRAM进行读操作,以此循环…………

SDRAM突发读写一页的接口

在"SDRAM突发读写页"实验中,驱动SDRAM的顶层接口如下图所示,主要分为3个部分,分别为系统信号、内部信号、SDRAM接口信号。其中系统信号为时钟信号和复位信号,内部信号为读写数据信号和读写控制信号,SDRAM接口信号为FPGA与外部的SDRAM的接口。

该是实验中,系统信号、SDRAM接口信号都很简单,只需配置好其硬件所对应的引脚,当然这里的时钟来源于PLL的倍频时钟。而内部信号要与dcfifo、测试模块进行连接,这也是本节的重点内容。

由于dcfifo只负责接收从SDRAM读出的数据,所以SDRAM顶层模块中的:read_req和read_data需要和dcfifo的顶层模块相连接,read_req也就是dcfifo的写使能write_reg。

异步dcfifo读写的接口

fifo_top只负责接收SDRAM的读出数据,并将其写入到fifo内部,然后再用低的时钟频率将数据读出。

顶层接口信号中的write_reg连接SDRAM的读申请信号read_req,因为读SDRAM的同时对fifo进行写操作,所以SDRAM的数据输出read_data连接到dcfifo的数据输入data_in,read_over用于反馈dcfifo的读操作完成,可以再往fifo内部写入数据。

接口拼接

测试模块

写操作

在判断SDRAM初始化完成后init_done有效,则对SDRAM进行写操作,发送写申请信号的同时发送写数据和写地址信号,在连续写入256个数据后判断rw_ack是否有效,有效则写入完成,将写申请信号清零,进入到延迟状态,延迟一定的时间。

读操作

在延迟一定的时间后便进入到读操作,这时读申请信号有效,并同时发送读地址信号,在下一个状态中判断读操作是否完成(rw_ack是否为1),记住此时也是在对dcfifo进行写操作,当rw_ack有效时,则停止对SDRAM进行读操作,也停止对dcfifo进行写操作,此时进入到对dcfifo进行读操作,当read_over为1时表明对dcfifo读完成,便转入到对SDRAM读操作中,以此循环。

实验效果

实验的工程文件为"sdram_rw_page_fifo",其源代码文件如下:

实验中采用signaltap对输出到LED的数据进行观察,结果如下:

每日推送不同科技解读,原创深耕解读当下科技,敬请关注微信公众号“科乎”。

SDRAM和dcfifo的联合的更多相关文章

  1. 46.谈谈SDRAM的作用

    SDRAM这个至今还在用的存储器,虽然被后来的DDR取代,掌握好它还是很重要的.之前在调试时,确实费了好大劲,它的复杂性毋庸置疑,一般人要想弄懂他,得花1个月左右吧,至少我这么认为.话说回来,SDRA ...

  2. SRAM、DRAM、SDRAM、DDR、DDR2、DDR3

    RAM可分为SRAM(Static RAM/静态存储器)和DRAM(Dynamic RAM/动态存储器).SRAM是利用双稳态触发器来保存信息的,只要不掉电,信息是不会丢失的.SRAM存储元件所用MO ...

  3. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十九:SDRAM模块② — 多字读写

    实验十九:SDRAM模块② — 多字读写 表示19.1 Mode Register的内容. Mode Register A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A ...

  4. 编写SDR SDRAM页突发模式控制器的注意点-下篇

    本来是没打算写这些的,但是后面逐渐发现点问题,所以决定再写一个下篇来补充说明一下. 图一 细心的网友会发现上篇末尾的打印是有点问题的,因为我的数据产生器产生的是1-200,1-200,1-200,1- ...

  5. 编写SDR SDRAM页突发模式控制器的注意点

    网上有很多的SDR SDRAM控制器的代码,但都是基于burst1/2/4/8模式下的,这种模式下传输高速的相机数据还是有点拮据的,所以花了几天把这些模式改造成了页突发模式.我的这个控制器模型是这样的 ...

  6. 模拟摄像头解码模块最新测试 TVP5150模块 FPGA+SDRAM+TVP5150+VGA 实现PAL AV输入 VGA视频输出

    模拟摄像头解码模块最新测试  TVP5150模块  FPGA+SDRAM+TVP5150+VGA  实现PAL AV输入 VGA视频输出 测试使用电视机顶盒的AV模拟信号输入,VGA显示器输出测试,效 ...

  7. Dynamics CRM 之ADFS 使用 WID 的独立联合服务器

    ADFS 的使用 WID 的独立联合服务器适用于自己的测试环境,常用的就是在虚机中使用. 拓扑图如下: wID:联合身份验证服务配置为使用 Windows 内部数据库

  8. Dynamics CRM 之ADFS 使用 WID 的联合服务器场

    使用 WID 的联合服务器场 默认拓扑 Active Directory 联合身份验证服务 (AD FS) 是联合服务器场,使用 Windows 内部数据库 (WID). 在这种拓扑, AD FS 使 ...

  9. Hibernate(5)—— 联合主键 、一对一关联关系映射(xml和注解) 和 领域驱动设计

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及的知识点总结如下: One to One 映射关系 一对一单向外键(XML/Annotation) 一对一双向外键关联(XML/A ...

随机推荐

  1. java 生成 csv文件

    一.csv文件 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).纯文本意味着该文件是 ...

  2. js 添加节点dom

    var elemet = document.createElement("p"); var attr=document.createAttribute("align&qu ...

  3. 关于iOS构建版本提交iTunes后,一直不出现,没加号的解决方案

    最近第一次遇到,正常打包,上传iTunes App Store,都能正常upload. 也可能是因为刚升了Xcode 8 的缘故,莫名其妙的小问题... 描述如下: 如果进iTunes的活动界面,也能 ...

  4. Linux正则表达式grep

    正则表达式是一种符号表示法,用于识别文本模式.Linux处理正则表达式的主要程序是grep.grep搜索与正则表达式匹配的行,并将结果输送至标准输出. 1. grep匹配模式 grep按下述方式接受选 ...

  5. ubuntu将命令写在一个文件里,执行文件,source命令

    source命令也称为“点命令”,也就是一个点符号(.).source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录.用法: source filename 或 . fil ...

  6. setTimeout()与setInterval()——走马灯效果

    JavaScript中的setTimeout()与setInterval()都是指延时执行某一操作. 但setInterval()指每隔指定时间执行某操作,会循环不断地执行该操作:setTimeout ...

  7. [转]ASP.NET MVC 3 Razor + jqGrid 示例

    本文转自:http://www.cnblogs.com/think8848/archive/2011/07/15/2107828.html 前些天写了一篇有关jqGrid的文章,因为是公司项目的原因一 ...

  8. java设计模式之装饰模式

    发现设计模式的学习越来越让自己学习的东西太少了,应该多接触一些东西,多出去走一走. 装饰模式概念: 动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活(大话设计模式) 在不 ...

  9. AC日记——二叉树最大宽度和高度 1501 codevs

    1501 二叉树最大宽度和高度  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver     题目描述 Description   给出一个二叉树,输出它的最大宽 ...

  10. Beanstalk消息队列的实现

    在工作中要用到消息队列,但是主管为了追求开发速度,让用了一个简易的类  beanstalk 下面来说明这个东西 参考博客:https://my.oschina.net/u/698121/blog/15 ...