• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

sdram芯片读写测试设计Verilog代码Quartus AX301开发板

10/10 10:32
873
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-241112191921B8.docx

共1个文件

名称:sdram芯片读写测试设计Verilog代码Quartus  AX301开发板

软件:Quartus

语言:Verilog

代码功能:

SDRAM 即同步动态随机存储器,同步是指 Memory 工作需要同步时钟,内部的命令的发送不数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址串行数据读写。因为 SDRAM 具有存取速度大大高于 FLASH 存储器, 且具有读/写的属性, 因此 SDRAM 在系统中主要用于程序的运行空间,大数据的存储及堆栈。

SDRAM 是高速的动态随机存取存储器, 它的同步接口和完全流水线的内部结构使其拥有极大的数据速率, SDRAM 的时钟频率可以达到 100Mhz 以上, 一片 16 位数据宽度的 SDRAM 的读写数据带宽达到 1.6Gbit/s。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

本代码已在AX301开发板验证,AX301开发板如下,其他开发板可以修改管脚适配:

AX301开发板.png

设计文档:

SDRAM 读写测试实验

1 实验简介

本实验为后续使用 SDRAM 的实验做铺垫,通过循环读写 SDRAM,了解 SDRAM 工作原理,和 SDRAM 控制器的写法,由于 SDRAM 比其他外设复杂,掌握 SDRAM 不是一时之事,但在已有 SDRAM 控制器情况下熟练应用,是后续音频、视频等需要用到 SDRAM 实验的基础。采用 HY57V2562GTR/W9825G6KH/HY57V561620FTP 型号 SDRAM。

2 实验原理

SDRAM 即同步动态随机存储器,同步是指 Memory 工作需要同步时钟,内部的命令的发送不数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址串行数据读写。因为 SDRAM 具有存取速度大大高于 FLASH 存储器,且具有读/写的属性, 因此 SDRAM 在系统中主要用于程序的运行空间,大数据的存储及堆栈。

SDRAM 是高速的动态随机存取存储器, 它的同步接口和完全流水线的内部结构使其拥有极大的数据速率, SDRAM 的时钟频率可以达到 100Mhz 以上, 一片 16 位数据宽度的 SDRAM 的读写数据带宽达到 1.6Gbit/s。

2.1 硬件介绍

开发板设计采用 HY57V2562GTR/W9825G6KH/HY57V561620FTP 型号,容量为的 256Mbit,采用了 54 引脚的 TSOP 封装, 数据宽度都为 16 位, 工作电压为 3.3V,并且采用同步接口方式所有的信号都是时钟信号

其含有 16 位数据总线, 4 个 Bank。存储架构为 4Banks x 4Mbits x16, 最高的工作频率为 133Mhz。在 PCB 的设计上, 考虑高速信号的数据传输的可靠性, 走线上严格保证等长设计和阻抗控制

AX301/AX4010 开发板 SDRAM 部分的原理图如下:

2.2 SDRAM 的控制和时序介绍

SDRAM 具有以下几个特点:

(1)采取行列地址复用原则, SDRAM 的地址线在不同的命令下提供不同的地址, 行列地址复用 13 根地址线。
(2)需要定时刷新。
(3)在迚行读写时, 需先激活行。换页 读写时要预充电关闭的行, 然后再激活新的行迚行读写。
(4)SDRAM 正常工作之前配置模式寄存器

下图为 SDRAM 命令真值表,通过 CKE、CS、RAS、CAS、WE 的不同状态,发出不同的命令。

SDRAM 命令真值表

2.2.1 SDRAM 初始化

AX301/AX4010 开发板上的 SDRAM 的模式寄存器的 A0~A2 位为 SDRAM 读写 Burst 长度的设置; A3 为 Burst 类型,选择连续模式还是交叉模式; A4~A6 为 CAS 数据潜伏期设置;A9 选择工作模 式。

具体说明见下图所示:

部分代码展示:

//////////////////////////////////////////////////////////////////////////////////
//   The external memory test module writes the address as data and compares    //
//   it to the address                                                          //
//  Author: meisq                                                               //
//          msq@qq.com                                                          //
//          ALINX(shanghai) Technology Co.,Ltd                                  //
//          heijin                                                              //
//     WEB: http://www.alinx.cn/                                                //
//     BBS: http://www.heijin.org/                                              //
//                                                                              //
//////////////////////////////////////////////////////////////////////////////////
//                                                                              //
// Copyright (c) 2017,ALINX(shanghai) Technology Co.,Ltd                        //
//                    All rights reserved                                       //
//                                                                              //
// This source file may be used and distributed without restriction provided    //
// that this copyright statement is not removed from the file and that any      //
// derivative work contains the original copyright notice and the associated    //
// disclaimer.                                                                  //
//                                                                              //
//////////////////////////////////////////////////////////////////////////////////
//================================================================================
//  Revision History:
//  Date          By            Revision    Change Description
//--------------------------------------------------------------------------------
//2017/6/28                    1.0          Original
//*******************************************************************************/
module mem_test
#(
parameter MEM_DATA_BITS          = 32,  //external memory user interface data width
parameter ADDR_BITS              = 23,  //external memory user interface address width
parameter BUSRT_BITS             = 10,  //external memory user interface burst width
parameter BURST_SIZE             = 128  //burst size
)
(
input                            rst,
input                            mem_clk,                             // external memory controller user interface clock
output reg                       rd_burst_req,                        // to external memory controller,send out a burst read request
output reg                       wr_burst_req,                        // to external memory controller,send out a burst write request
output reg[BUSRT_BITS - 1:0]     rd_burst_len,                        // to external memory controller,data length of the burst read request, not bytes
output reg[BUSRT_BITS - 1:0]     wr_burst_len,                        // to external memory controller,data length of the burst write request, not bytes
output reg[ADDR_BITS - 1:0]      rd_burst_addr,                       // to external memory controller,base address of the burst read request

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1350

  • 2-241112191921B8.docx
    下载

相关推荐