文章目录

  • 概要
  • 整体架构流程
  • 技术名词解释
  • 技术细节
  • 小结


概要

提示:这里可以添加技术概要

例如:

本文以米联科开发板为例,介绍ddr测试相关例程。

整体架构流程

提示:这里可以添加技术整体架构

技术名词解释

提示:这里可以添加技术名词解释

例如:

app _addr:表示正在提交给用户界面的请求的地址。聚合外部所有地址字段,并向您显示一个平面地址空间,每个地址待变4BYTES。

app _cmd: 此输入指定请求的命令如下,001读,000时写.

app_en:用户输入时使用,

app_hi_pri:表示当前请求时高优先级,用不到;

app-wdf—data :当前正在写入外部存储器的数据;

app-wdf-mask:那些位被写入外部存储器

app-wdf-wren:该输入表示总线上数据有效

app_rdy: 此输出向用户显示正在提交给UI的请求是否被接受;

技术细节

提示:这里可以添加技术细节

根据原理图及相关要求,配置好FPGA的MIG核,可以点击官方的案例, open IP example design。

添加以下读写控制代码;

状态机代码:

parameter [1:0]IDLE =2'd0;
parameter[1:0]WRITE=2'd1;
parameter[1:0]WAIT=2'd2;
parameter[1:0]READ=2'd3;

设置读写命令;

parameter[2:0]CMD_READ =3'd1;
parameter[2:0]CMD_WRITE=3'd0;

设置读写范围:

parameter TEST_DATA_RANGE=24'd1000;

这里小姐以下ddr地址的概念;

128M16   前面的128M表示地址。这里的地址时行列地址,还有bank地址一起,

通常我们说的地址是行列,所以是24位,整体式27位。每一位含有16位数据。

reg  [1:0] state=0;  这里式设置初始状态;后续表示状态机代码;

reg [23:0]count 128M*2*16/256(为什么除以256,我也没明白,我猜想式32*16)其实式一个bank的地址范围。

reg app_addr_begin=0
wire tg_compare_error;
assgin app_wdf_end =app_wdf_wren;
assgin app_en=(state==WRITE)?(app_rdy&&app_wdf_rdy):((state==READ)&&app_rdy);
assgin app_wdf_wren =(state==WRITE)?(app_rdy&&app_wdf_rdy):1'b0;
assgin app_cmd =(state==WRITE)?(app_rdy&&app_wdf_rdy):1'b0;
assgin app_addr =app_addr_begin;
assgin app_wdf_data={Count_64[7:0]};
下面式状态机跳转设计:
always@(posedge clk)
if(rst&!init_calib_complete)
begin 
state<=IDLE;
app_addr_begin<=29'd0;
Count_64<=24'd0;
end
这是复位状态;
else case (state)
IDLE:begin
state
if(app_addr_begin >10000)
app_addr_begin <=29'd0;
count64<=24'd0;
end
空闲状态
WRITE:
begin 
state<=(count_64==TEST_DATA_RANGE)&&app_rdy&&app_wdf_rdy?WAIT:atate;
count_64<=app_rdy&&app_wdf_rdy?(count_64+24'd1):count_64;
app_addr_begin<=app_rdy&&app_wdf_rdy?(app_addr_begin+29'd16):app_addr_begin;
read
begin
state<=(count_64==test_data_range)&&app_rdy?idle:state;
count_64<=app_rdy?(count_64+24'd1):count_64;
app_addr_begin <=app_rdy?(app_addr_begin+29'd16):app_addr_begin;
end

以上式ddr读信号

以上就是测试ddr的核心代码,另外读者可以根据需要,增加一些debug信号来测试结果。

在设置好debug信号后,在进行编译,最后下载到FPGA。

小结

提示:这里可以添加总结

例如:

本文以FPGA核心板为例子,结合官方的案例,修改,进行了ddr测试。