原创 sdram初始化

2014-9-22 18:21 719 12 13 分类: FPGA/CPLD
初次写博客,记录一下时光,一名大三的在校生........
一下午的仿真居然是时间period设置了错误。。。
贴一下仿真图
 
代码如下:
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: jiahua
// 
// Create Date:    14:19:21 09/19/2014 
// Design Name: sdram_test
// Module Name:    sdram_init 
// Project Name:   sdram_control
// Target Devices: sprant6
// Tool versions: 
// Description: 
//
// Dependencies: 
//
// Revision: 
// Revision 0.01 - File Created
// Additional Comments: 
//
//////////////////////////////////////////////////////////////////////////////////
module sdram_init(
sys_clk,
sys_rstn,
sdram_cmd,
sdram_addr,
//start_init,
done_signal
);
 
input sys_clk;
input sys_rstn;
//input start_init;
output done_signal;
output [4:0]sdram_cmd;  // [4]CKE , [3]CSn, [2]RASn, [1]CASn, [0]WEn
output [13:0]sdram_addr; // [13:12]BA , [11:0]A
 
wire [4:0]sdram_cmd;
wire [13:0]sdram_addr;
/////////////////////////////////////////////////////////////////////////////////////
parameter   mode_set_reg = 13'b00000_000_010_0_010;
//突发读写  lantency 2 连续读写 突发读写长度4
 
/////////////////////////////////////////////////////////////////////////////////////
//command 
reg [4:0]command;
reg [13:0]sdram_add;
parameter pre_cmd = 5'b10010,
auto_cmd = 5'b10001,
nop = 5'b10111,
mode_cmd = 5'b10000;
 
 
 
/////////////////////////////////////////////////////////////////////////////////////
//T=10ns
parameter stable_200us = 15'd19999,
tRP_20ns = 2'b1,
tRFC_70ns = 3'd6,
tMRD_20ns = 2'b1;
reg [14:0]count;
reg count_start;
always @(posedge sys_clk)
begin
if(!sys_rstn)
count <= 15'd0;
else if(count >= stable_200us)
count <= 15'd0;
else if(count_start)
count <= count + 1'b1;
else
count <= 15'd0;
end
 
reg [5:0]state;
parameter power_on = 6'b000_001,
precharge = 6'b000_010,
autofresh1 = 6'b000_100,
autofresh2 = 6'b001_000,
mode_set = 6'b010_000,
idle = 6'b100_000;
 
reg init_done;
always @(posedge sys_clk)
begin
if(!sys_rstn)
begin
state <= power_on;
init_done <= 1'b0;
end
else
case(state)
power_on:
if(count == stable_200us)
begin
state <= precharge;
command <= pre_cmd;
//tRP_20ns <= 1'b1;
count_start <= 1'b0;
sdram_add[11] <= 1'b1;
end
else
begin
state <= power_on;
      count_start <= 1'b1;
end
precharge:
if(count == tRP_20ns)
begin
state <= autofresh1;
command <= auto_cmd;
count_start <= 1'b0;
end
else
begin
state <= precharge;
command <= nop;
count_start <= 1'b1;
end
autofresh1:
if(count == tRFC_70ns)
begin
state <= autofresh2;
command <= auto_cmd;
count_start <= 1'b0;
end
else
begin
state <= autofresh1;
command <= nop;
count_start <= 1'b1;
end
autofresh2:
if(count == tRFC_70ns)
begin
  count_start <= 1'b0;
state <= mode_set;
command <= mode_cmd;
sdram_add <= mode_set_reg;
end
else
begin
state <= autofresh2;
command <= nop;
count_start <= 1'b1;
end
mode_set:
if(count == tMRD_20ns)
begin 
state <= idle;
command <= nop;
count_start <= 1'b0;
end
else
begin
state <= mode_set;
command <= nop;
count_start <= 1'b1;
end
idle:
begin
  command <= nop;
init_done <= 1'b1;
end
default:
begin
state <= power_on;
init_done <= 1'b0;
end
endcase
end
assign sdram_cmd = command;
assign sdram_addr =sdram_add;
assign done_signal = init_done;
 
 
 
 
 
 
endmodule
 
PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户403664 2014-9-23 17:34

图片挂了,快补上呀,要上传才行
相关推荐阅读
用户1777143 2015-03-17 21:10
FPGA FM调制
2.3  FM调制的基本原理 2.3.1概述     两个正弦信号振荡器,一个是稳定不变的载波频率fc振荡器;一个是调制频率fm振荡器。载波频率被加在调制振荡器的输出上。进行远距离通信。 2....
用户1777143 2015-03-17 21:07
基于fpga的FSK调制
2.2  PSK调制的基本原理 2.2.1概述 相移键控(PSK)是一种用载波相位表示输入信号信息的调制技术。移相键控分为绝对移相和相对移相两种。 2.2.2PSK调制的原理 ...
用户1777143 2015-03-17 21:01
基于fpga的dds合成
DDS理论        图2.1.1 DDS原理       DDS实现框图如图1-1所示,主要由相位累加器、正弦ROM表、D/A转换、低通滤波器构成。正弦信号与幅度的对应...
用户1777143 2014-12-07 12:58
fpga最小系统及高速信号完整性分析篇之原理图库的创建
      大家好,至于画fpga原理图的时候,我自己自制了EXCEL表格,然后倒入cadence软件,比较复杂和麻烦,虽然比之前的单纯画引脚的方法好很多,画完484个引脚后,但我画完之后。仔细寻...
用户1777143 2014-12-07 12:48
nios处理器硬件平台及开发文档
    外设,nios使用文档,还有我自己搭建的硬件平台。对于想学fpga的同学必须自己学会看英文文档。后续我看有没时间我出个文档翻译版的。...
用户1777143 2014-12-07 12:41
fpga最小系统及高速信号完整性分析篇
    最近兜兜转转去学画fpga GX系列的高速板子,迷迷糊糊看了一个月的英文资料,完成了器件的与外设的连接,我也是第一次学着画。我把我学到的跟大家分享下。希望大家能支持我的博客,从cyclon...
EE直播间
更多
我要评论
1
12
关闭 站长推荐上一条 /3 下一条