
SDRAM
SDRAM控制(初始化、自动刷新、写操作、读操作、仲裁)、FIFO控制(FIFO读、FIFO写)
小熊在忙fpga
这个作者很懒,什么都没留下…
展开
-
乒乓操作(SDRAM)
在 t1、t3、t5 时刻图像都是残缺帧(新老帧各显示一半图片),在 t2、t4 时刻图像才是完整的一帧,而 VGA 那边可不管,每个时间点都会要一帧图像,这就是错帧现象。,因为当OV5640 帧率 30fps,VGA 帧率 60fps,仿佛刚好可以写一帧读两帧,但是会出现以下的错帧现象。乒乓操作中,每次读的(黑线)都是完整的帧,每一帧读 2 次,这样便没有出现读残缺帧的现象,解决了错帧问题。使用两个缓存区,写缓存区 1 时读缓存区 2,写缓存区 2 时读缓存区 1,读写交替。原创 2024-02-23 17:42:14 · 897 阅读 · 1 评论 -
SDRAM基础知识
sdram有2根bank地址线,13根行地址线,9根列地址线,所以总共有4(2^2)个bank,一个bank是8192(2^13)行512(2^9)列,故一个bank存储单元的个数为4M(8192×512=4194306bit),又因为每个存储单元的位宽是16bit的,所以sdram的总存储容量为256M(4×4M×16=256M)。,进而进行数据的存取操作,而且一次只能对一个 L-Bank 的一个存储单元进行操作。四路控制信号构成 SDRAM 指令集。在对 SDRAM 进行数据存取时,原创 2024-02-22 12:48:09 · 580 阅读 · 1 评论 -
SDRAM仲裁(sdram_arbit)
当状态机处于仲裁状态时,若自动刷新请求、读请求、写请求中的任意一路请求有效,且其他两路请求信号无效,状态跳转到有效请求信号对应状态,对应操作完成后,对应结束信号有效,状态跳回到仲裁状态,等待下一次请求信号。各路请求信号只有在仲裁状态才会被响应,这就保证某一操作正在执行时,不会被新的请求信号打断。若多路请求信号同时有效,优先执行优先级较高的操作,默认优先级为。,初始化完成后,状态跳转到仲裁状态(ARBIT)自动刷新操作>数据写操作>数据读操作。原创 2024-02-22 00:07:57 · 500 阅读 · 1 评论 -
SDRAM读操作(sdram_read)
同时分别写入BA0-BA1的Bank地址和A0-A12的row行地址,激活特定Bank的特定行。同时分别写入BA0-BA1的Bank地址和A0-A8的col列地址(列地址即突发数据的首地址)个时钟周期,一次读突发完成,状态跳转到预充电状态。然后等待4个时钟周期(突发长度为4),此期间为。,随即状态跳转预充电等待状态 (RD_TRP)2)个时钟周期,预充电完成,激活。个时钟周期随即跳转到读数据状态。行被关闭,状态跳转到写结束状态。完成,状态跳转到读指令状态。,随即状态跳转预充电等。,随即跳转到潜伏状态。原创 2024-02-21 23:45:35 · 464 阅读 · 1 评论 -
SDRAM写操作(sdram_write)
个时钟周期,预充电完成,激活行被关闭,状态跳转到写结束状态 (WR_END),随机跳回初始状态。值为 2)个时钟周期,激活完成,状态跳转到写指令状态(WR_WRITE),随即跳转到写数据。首先声明状态机状态变量 write_state,定义状态机个状态名称:初始化状态。,状态机跳转到激活状态(WR_ACTIVE),随即跳转到激活等待状态。个时钟周期,一次写突发完成,状态跳转到预充电状态(WR_PRE),在此状态等待TRP_CLK(设定值为。、 激活等待状态(WR_TRCD),随即状态跳转预充电等待状态。原创 2024-02-20 23:38:25 · 448 阅读 · 1 评论 -
SDRAM自动刷新(sdram_a_ref)
的自动刷新类似于简化版的初始化操作,只是缺少了上电后的等待时间和模式寄存器配置部分,只包含一次预充电操作和两次自动刷新操作。自动刷新时序图可知,原创 2024-02-20 12:09:14 · 588 阅读 · 1 评论 -
SDRAM初始化(sdram_init)
的初始化是芯片上电后必须进行的一项操作,只有进行了初始化操作的SDRAM 芯片才可被正常使用。但前文又说 200us 内都可能有命令,干脆这里取 T = 200us 吧。,对所有 Bank 进行预充电。然后等待时间 tRP,这期间为。② 200us 时间等待结束后,写入。④ tRC等待时间结束后,再次写入。,然后等待时间 tMRD,这期间为。,然后等待时间 tRC,这期间为。,然后等待时间 tRC,这期间为。③ tRP等待时间结束后,写入。⑤ tRC等待时间结束后,写入。原创 2024-02-20 11:48:08 · 654 阅读 · 0 评论