SDRAM读写一字

SDRAM控制模块

上电后进行初始化状态,初始化完成后进入空闲状态,在此进行判断如下判断:

如果自刷新时间到,则进行自刷新操作,操作完成后重新进入空闲状态;

如果读使能有效则进行读操作,操作完成后产生完成信号并延迟一个时钟周期重新进入空闲状态;

如果写使能有效则进行写操作,操作完成后产生完成信号并延迟一个时钟周期重新进入空闲状态。

其中自刷新状态的优先性最高,然后是写操作、最后是读操作;

SDRAM控制状态机流程图:

控制模块代码

自刷新定时

自刷新15us定时流程图

自刷新代码

SDRAM顶层模块

sdram_bank_add:读写SDRAM的地址

write_data: 写如sdram的数据

read_data: 从sdram读出的数据

read_req: 读数据请求信号

write_req: 写数据请求信号

rw_ack: 读写应答信号

bus_signal: 忙信号

init_done: 初始化完成信号,输出,高电平有效

SDRAM接口信号

sdram_clk: sdram时钟信号

sdram_data: sdram读写数据

sdram_command:cke、cs_n、ras、cas_n、we_n,SDRAM指令信号

sdram_address:[13:12]BA , [11:0]Addr,SDRAM地址信号

sdram_dqm: SDRAM数据掩码

SDRAM测试模块编写

测试模块设计

根据SDRAM的顶层模块的接口信号,在判断sdram初始化完成后对sdram的特定地址进行写入数据,在写入完成后延迟一段时间,然后将该特定地址的数据读出显示在LED灯上,一验证整个工程的功能。

测试模块流程图

测试代码

实验效果

SDRAM原理图

LED原理图

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

实验中对地址为10和11分别写入:16'h5555和16'h0003;

然后通过指定地址读出数据显示在LED灯上,实验中可以自行更改读写的地址和数据,以验证读写的正确性。

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

SDRAM读写一字(下)的更多相关文章

  1. SDRAM读写一字(上)

    SDRAM读写一字 系统设计 SDRAM指令 指令 常量名 CKE CSn RAS CASn WEn 备注 空操作 NOP 1 0 1 1 1   行激活 ACTIVE 1 0 0 1 1   读操作 ...

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

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

  3. 如果让你来做HashMap扩容,如何实现在不影响读写的情况下扩容?

    我觉得逼格高,不是体现在问题多刁钻,知识点多深,而是一个非常明确,无歧义的问题,能考察出面试者多方面的能力.这个问题背后:1.了解java中,HashMap的实现:如果一个面试者了解这一点,说明至少他 ...

  4. SDRAM读写操作

    SDRAM读写操作 1.读操作 2.写操作 SDRAM所有时序参数都可以在芯片手册上查到.

  5. 基于Mysql-Proxy实现Mysql的主从复制以及读写分离(下)

    基于Mysql-Proxy实现Mysql的主从复制以及读写分离(下) 昨天谈到了Mysql实现主从复制,但由于时间原因并未讲有关读写分离的实现,之所以有读写分离,是为了使数据库拥有双机热备功能,至于双 ...

  6. 【6集iCore3_ADP触摸屏驱动讲解视频】6-5 底层驱动之SDRAM读写(下)

    源视频包下载地址: 链接:http://pan.baidu.com/s/1jIC2LKy 密码:zyn3   银杏科技优酷视频发布区: http://i.youku.com/gingko8  

  7. SDRAM读写状态解析

    SDRAM的写状态流程 IDLE状态到WRITE状态 (1)在IDLE状态需要先给ACT命令激活某一行,此时处于Row Active状态. (2)在Row Active状态之后,给Write命令则会进 ...

  8. sqlite数据库读写在linux下的权限问题

    近期在学linux,恰巧有个php项目要做.于是配置好环境打算在linux下做. 无奈站点执行后一片空白.经过调试发现是sqlite数据库的问题. 安装sqlite扩展 apt-get install ...

  9. 正确理解Python文件读写模式字w+、a+和r+

    w+ 和 r+的差别不难理解.还有a+ +同一时候读写,就可以读又可写,边写边读.边读边写,不用flush,用seek 和 tell可測得. fp = open("a.txt", ...

随机推荐

  1. Python基础s14-day1

    2016年7月23日"Python基础s14-Day1" Python是什么? Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/),是一种面向对象.直译式 ...

  2. 五、Android学习第四天补充——Android的常用控件(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 五.Android学习第四天补充——Android的常用控件 熟悉常用的A ...

  3. Python 变量类型

    Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据 ...

  4. 移动Windows用户文件夹的方法研究

    这种方法可能导致升级Windows失败.请谨慎使用. Windows 8.1 使用有效.其他系统请酌情修改. —————————————————————————— 复制文件内容(带权限等信息):有的说 ...

  5. 挤点时间写博客-php&MySQL实践

    hi 晚上要吃火锅的嘛,挤点时间写点东西吧,别被老板发现哦 1.PHP与MySQL 五.文章发布系统之后台 5.2 创建配置文件和初始化文件 为了统一配置以及管理方便,还有就是减少代码的冗余. 分别为 ...

  6. Svn Patch 中文乱码

    关于Patch svn打patch的介绍:巧用svn create patch(打补丁)方案解决定制版需求 svn创建patch 1.在SVN的提交列表中,右键选择“创建补丁” 2.选择保存位置,保存 ...

  7. Asp.Net MVC中DropDownListFor的用法(转)

    2016.03.04 扩展:如果 view中传入的是List<T>类型 怎么使用 DropList 既然是List<T> 那么我转化成 T  List<T>的第一个 ...

  8. html-webpack-plugin插件的详细介绍和使用

    var webpack = require('webpack'); var HtmlWebpackPlugin = require('html-webpack-plugin'); module.exp ...

  9. http协议(六)报文首部

    http请求和响应报文内容比较多,会分为大概四部分更新,最近比较忙,没太多时间整理- - 首先来看看报文结构吧 1.http请求报文 http请求报文由方法.URI.http版本.http首部字段等构 ...

  10. ASP.NET CORE 1.0 MVC API 文档用 SWASHBUCKLE SWAGGER实现

    from:https://damienbod.com/2015/12/13/asp-net-5-mvc-6-api-documentation-using-swagger/ 代码生成工具: https ...