God_of_Death

SDRAM程序编写小计

0
阅读(4338)

今天把SDRAM程序编写心得写下,程序的功能很简单,看框图↖(^ω^)↗

image

 

 

初始化搞了好久,各种名词不懂,各种晕

clip_image001

clip_image001[5]

clip_image002

初始化过程:

1.SDRAM上电要经过200us的稳定期,命令选择NOP(给SDRAM的各个端口赋值);


2.接下来就是对所有L-Bank预充电,怎么操作呢?首先给端口赋一个周期的预充电命令,然后给端口赋NOP等待18ns(预充电有效周期),则预充电完成;


3.接下来是第一个刷新周期,首先给端口赋一个周期的自动刷新命令,然后给端口赋NOP等待60ns(查看pdf,Trc=Trfc,Trfc=行刷新时间),则一个刷新完成,接下来的7个周期进行一样的操作就可以了;


4.接下来就可以进行工作了,但是要记住每过 15us(64ms/4096=15us)就要自动刷新一次,刷新操作和上面的一样,当然刷新操作不能和读写SDRAM冲突,也就是时间一样,可以把刷新操作的等级设为最高;为了防止读写请求信号因为碰上了SDRAM在刷新而被忽略掉,可以把读写请求信号有效时间设的比刷新时间长一点点,但是比一个读写操作短。发送完读命令,在下一个周期就可以进行读了;

                                                                                                                             

                                                      ?            ?                                   

                                           ?                                   ?

                                      ?                                               ?   

                                   ?                                                      ?

                                 ?                     (+﹏+)~狂晕                          ?

                                 ?                                                            ?

                                    ?                                                       ?

                                    ?                                               ?

                                                                                      ?

                                                                                  ?

                                                                              ?

                                                                       ?

                                                                      ?

                                                                      ?

                                                                      ?

                                                                      ?

 

 

                                                                      ?

但是如果要写sdram,要在发送写命令前一个时钟周期开始写,也就是在正常写的前两个时钟周期就要开始写了??????这是为什么呢,在pdf上找了半天,硬是没有发现为什么,或者我看到了,但是没认出来。╭∩╮(︶︿︶)╭∩╮