PotatoPie 4.0 实验教程(15) —— FPGA实现SDRAM作为SRAM进行读写-Anlogic-安路社区-FPGA CPLD-ChipDebug

PotatoPie 4.0 实验教程(15) —— FPGA实现SDRAM作为SRAM进行读写

手机扫码

20240416075513933-1713225291635

链接直达

https://item.taobao.com/item.htm?ft=t&id=776516984361

环境描述

同步动态随机存取内存(synchronous dynamic randon-access menory,简称 SDRAM)是有一个同
步接口的动态随机存取内存(
DRAM), SDRAM 在响应控制输入前会等待一个时钟信号,这样就能和对应
控制器
(CPU/FPGA)的系统时钟频率同步内部命令的发送与数据传输都是以该时钟为基准;动态是指存
储阵列需要不断的刷新来保证数据不丢失;随机则是指数据不是线性依次存储,而是自由指定地址进行
数据的读写。 在存储数据的物理结构方面,
SDRAM 采用电容的电荷存储特性存储数据 ,保证 SDRAM
存取数据时的低功耗与大容量特性,因此在
ERAM 容量不能满足要求, 需要大量存储数据的场合时, SDRAM
就成为了首选。
MINI DEMO 器件内部合封了 SDRAM,本例程提供了读写内部 SDRAM 的例程,方便用户对数据进行读
写保存操作,具体设计框图如下图所示。

20240329214257562-image

在方案顶层设计中只提供用户的读写通道接口,如用户需要更换成 Anlogic 其他器件,将此部分接
口引出到工程顶层,分配
IO 即可。
设计方案中接口信号定义如下表所示。

表 4-7-1 SDRAM 接口定义表

信号 I/O 功能说明
Sdr_clk I 应用方案 SDRAM 工作时钟
Sdr_clk_sft I 同频可能不同相位的 SDRAM 时钟
Rst I 复位,高有效
App_wr_en I 写使能, 高有效
App_wr_addr[20:0] I 写地址
App_wr_din[31:0] I 写数据
App_wr_dm[3:0] I 写入数据掩码
App_rd_en I 读使能
App_rd_addr[20:0] I 读地址
Sdr_rd_en O 有效读数据输出使能
Sdr_rd_dout[31:0] O 有效读出数据
Sdr_init_done O SDRAM 初始化完成
Sdr_init_ref_vld O SDRAM 刷新有效标志
Sdr_busy O SDRAM 忙状态, 暂不使用
App_ref_req I 用户自行请求刷新操作

SDRAM 的操作,是通过对应命令来控制的,这些命令是由 CS_NRAS_NCAS_NWE_N 这四个控
制信号组合成的不同状态来表示。同时地址总线
ADDR DQM 总线作为辅助信号,提供与命令相对应的
地址(设置模式寄存器)或参数(读写命令)。
SDRAM 引脚的具体说明如下表所示。
表 4-7-2 SDRAM 引脚说明表

管脚名称 I/O 描述
CLK I 系统时钟
CKE I 时钟使能
CS_N I 片选
RAS_N I 行地址选通
CAS_N I 列地址选通
WE_N I 写使能
BA[1:0] I BANK 地址
A[12:0] I 地址总线
DQM[1:0] I 数据掩码
DQ[15:0] O 数据总线

在该例程中,对于 SDRAM 的例化代码如下图所示。

20240329215048320-image

功能描述

该例程支持 64Mb 以下的 SDRAM 存储空间读写。 在对 SDRAM 进行正常的操作之前, SDRAM 必须被初
始化。
SDRAM 的上电和初始化需要按照预先定义好的方式进行,非这些指定的操作之外的命令可能
导致不可预知的操作。 在
SDRAM 初始化完成之后首先判断该例程是否处于刷新过程中,若例程当前
没有进行刷新操作,便可操作
SDRAM 进行数据的读写。同时该例程添加了读写验证模块,通过验证模
块简化了
SDRAM 读写正确性判断的复杂度,具体方式为将读写验证模块的检测输出信号与 LED 指示灯
相连,当读出的数据验证正确时,代表读写数据是否正确的判断信号
Check_ok 拉低, LED 指示灯点亮,
当读出的数据验证错误时
Check_ok 信号拉高, LED 指示灯熄灭。具体输入输出管脚分配如下图所示。

set_pin_assignment	{ LED }	{ LOCATION = P8; IOSTANDARD = LVCMOS33; }
set_pin_assignment	{ SYS_CLK }	{ LOCATION = P11; IOSTANDARD = LVCMOS33; PULLTYPE = NONE; }

SDRAM 输入输出管脚分配

演示方法

编译下载 FPGA 的位流文件,通过选取 ChipWatcher 窗口进行 SDRAM 读写数据模块信号的抓取。 具
体读写验证信号如下图所示。

20240329215750375-image

由于写入数据为递增数据,通过将读出的数据与写入的递增数据进行对比,从而判断读写数据的正
确性,并输出代表读写数据是否正确的检测完成信号
Check_ok,与之相连的 LED 指示灯随 Check_ok
号点亮或熄灭,从而更直观观察到数据读写正确性。

工程文件

提供的文件如下表所示。

参数 说明
Reference Design Yes
RTL Language Verilog
Test bench Yes
参数 说明
Test bench Format Verilog
Simulation Yes
C N/A
IP Model Yes
Project Platform MINI DEMO
TD Version TD5.6.2_71036
Downloader Version AL-LINK-V3.0
请登录后发表评论

    没有回复内容