FPGA之SDRAM控制器设计(四):

读模块设计:

下面是带有自动预充电的读时序图。图上所示的突发长度BL为4,本次设计中一开始初始化时BL为2,所以只读取两个突发长度(4字节)

读状态转移图

读模块设计:

`include    "head.v"module    read(input              clk,input               capture_clk,input               soft_rst_n,input                rd_en,input [12:0]      row,input   [9:0]       col,input   [1:0]       ba,input    [15:0]      sdr_dq,output   [19:0]      rd_bus,output   reg         rd_done,output  reg [31:0]  rdata
);reg       [15:0]      cap_dq;//由主控发出的时钟信号驱动,和clk也差180°
reg     [15:0]      syn_dq;//由clk驱动
reg                 load_h;
reg                 load_l;
reg     [12:0]      rd_a;
reg     [1:0]       rd_ba;
reg     [3:0]       rd_cmd;
reg                 rd_cke;
reg     [4:0]       cnt;
reg     [2:0]       state;localparam        s0 = 3'b000;
localparam      s1 = 3'b001;
localparam      s2 = 3'b010;
localparam      s3 = 3'b011;
localparam      s4 = 3'b100;
localparam      s5 = 3'b101; assign rd_bus={rd_cmd,rd_a,rd_ba,rd_cke};always @(posedge clk)if(soft_rst_n == 1'b0)beginrd_done <= 1'b0;cnt <= 'd0;rd_cmd <= `NOP;rd_a <= 'd0;rd_ba <= 'd0;rd_cke <= 1'b1;load_h <= 1'b0;load_l <= 1'b0;state <= s0;endelsecase (state)s0 : if(rd_en == 1'b0)state <= s0;elsebeginrd_cmd <= `ACT;rd_a <= row;rd_ba <= ba;rd_done <= 1'b0;//rd_cke <= 1'b1;state <= s1;   ends1 : if(cnt < `tRCD -1)begincnt  <= cnt + 1'b1;rd_cmd <= `NOP;state <= s1;    endelsebeginrd_cmd <= `RD;rd_a[9:0] <= col;rd_a[10] <= 1'b1;rd_ba <= ba;cnt   <= 'd0;        state <= s2;ends2 :     if(cnt < `CL + `SL -1)beginrd_cmd <= `NOP;cnt <= cnt + 1'b1;state <= s2;   endelse     //BL字数2读完beginload_l <= 1'b1;cnt   <= 'd0;state <= s3;    ends3 : beginload_l <= 0;load_h <= 1;state <= s4;ends4 : beginrd_done <= 1'b1;load_h <= 1'b0;state <= s5;ends5 : beginrd_done <= 1'b0;state <= s0;endendcasealways @(posedge capture_clk)begincap_dq <= sdr_dq;endalways @(posedge clk)beginsyn_dq <= cap_dq;endalways @(posedge clk)beginif(soft_rst_n == 1'b0)rdata <= 'd0;else if(load_l == 1'b1)rdata[15:0] <= syn_dq;else if(load_h == 1'b1)rdata[31:16] <= syn_dq;endendmodule

读时序仿真:

report:

FPGA之SDRAM控制器设计(四)相关推荐

  1. 基于FPGA的SDRAM控制器设计(二)

    基于FPGA的SDRAM控制器设计(二) 1. SDRAM理论基础 2. SDRAM初始化模块以及仿真 3.TOP模块的仲裁机制 4. SDRAM刷新模块代码以及仿真 5.代码 6.参考资料 1. S ...

  2. FPGA之SDRAM控制器设计(三)

    FPGA之SDRAM控制器设计(三):写 由于已经涉及了上电刷新,写三个大的状态转移,先把状态转移图给出.主控状态转移图是基于手册上描述来的.在代码注释中会给出每个状态的意义解释. 写时序图 写状态转 ...

  3. 基于FPGA的SDRAM控制器设计(1)

    基于FPGA的SDRAM初始化配置 SDRAM简述 SDRAM的引脚及作用 SDRAM初始化时序控制 SDRAM上电时序代码 SDRAM测试模块的代码 仿真测试结果 参考文献 总结 SDRAM简述 S ...

  4. 基于FPGA的SDRAM控制器设计(2)

    基于FPGA的SDRAM的自刷新操作 SDRAM自刷新简述 SDRAM自刷新时序图 SDRAM自刷新代码 仿真模块的代码 仿真结果测试 参考文献 总结 SDRAM自刷新简述 SDRAM作为一个RAM并 ...

  5. 基于FPGA的SDRAM控制器设计(一)----------SDRAM初始化

    本文设计思路与讲解于参考邓堪文老师的视频,感谢-(不太适合一点基础都没有的小白) SDRAM简介 SDRAM(synchronous Dynamic Random ),同步动态随机存储器,同步指内存工 ...

  6. SDRAM控制器设计

    SDRAM控制器设计 SDRAM 器件引脚示意图和功能框图如下: SDRAM 器件有如下的特性 通常情况下, SDRAM 存储器工作在 3.3V 的电压下(需要注意的是 DDR DRAM工作电压是 2 ...

  7. 基于 FPGA 的 UART 控制器设计(VHDL)(下)

    今天给大侠带来基于FPGA的 UART 控制器设计(VHDL)(下),由于篇幅较长,分三篇.今天带来第三篇,下篇,使用 FPGA 实现 UART.话不多说,上货. 之前有关于 Veriliog HDL ...

  8. 七、基于FPGA的Flash控制器设计

    根据项目需求,设计一个Flash控制器.以便将完成低速数据的存储.Flash选用了S25FL032.使用单线SPI接口,接线如图: 1,Flash S25fl032介绍 1.1 IO描述 1.2 相关 ...

  9. 基于FPGA的PID控制器设计

    1 知识背景 PID控制应该算是应用非常广泛的控制算法了.常见的比如控制环境温度,控制无人机飞行高度速度等.PID我们将其分成三个参数,如下: P-比例控制,基本作用就是控制对象以线性的方式增加,在一 ...

  10. 学习FPGA有必要写SDRAM控制器吗?

    在学习FPGA的过程中,注意是在学习过程中,联系FPGA的使用技巧,强烈建议尝试设计一个SDRAM控制器,不要使用IP核. 学习SDRAM控制器设计,能让你掌握很多知识. 更好的使用状态机去精准控制时 ...

最新文章

  1. jQuery Tools:Web开发必备的 jQuery UI 库
  2. 一个预告|恭喜斯科特·阿伦森获得2021年ACM计算奖
  3. 一、华为云ModelArts环配置
  4. 查看和设置mysql字符集
  5. 有的时候不评价别人其实挺难的
  6. jsp 构建单页应用_如何使用服务器端Blazor构建单页应用程序
  7. Canvas--圆弧和圆
  8. Android传感器编程入门(三)
  9. Linux下写盘速度测试程序,Linux下硬盘读写速度测试
  10. OpenWRT设置SmartDNS+ADGuardHome+小喵咪
  11. 分布式数据库cobar
  12. 个人网站Timonj(Personal website)
  13. python编写函数判断奇偶数_python判断奇数
  14. echerts 去掉饼形图的须子
  15. 计算机网络分类各自特点是什么意思,计算机网络的定义、分类、特点
  16. 软件项目该如何接?(转自速用)
  17. 国内矿场面临全面关闭,为什么FIL却依旧那么淡定?
  18. 在腾讯的第二堂产品课——改变大河的流向
  19. 《皇室战争》游戏设计师:顶级卡牌竞技游戏的‘平衡之道’
  20. bilibili怎么用用户名登录_bilibili如何激活账号 哔哩哔哩激活账号的教程

热门文章

  1. linux下iwconfig命令参数
  2. java实现进制转换
  3. Python Django开发的WebSSH 堡垒机
  4. 软考计算机硬件知识,软考程序员考点计算机硬件基础知识之指令系统
  5. 内容创作费时费力?这款AI写作神器超给力!
  6. 计算机操作系统pv操作讲解,计算机操作系统PV操作例题
  7. java linux 时间戳转时间_SpringMVC全局参数转换——linux时间戳转换LocalDateTime
  8. 利用EDA技术进行电子系统的设计有什么特点?
  9. python去重txt文本_Python文本去重
  10. YAML和JSON对比