1
众所周知,片上RAM是FPGA的宝贵资源。对于一些低端的FPGA芯片,其片上RAM实在是少的可怜,甚至连一个很小的彩色图片都存储不了。若要用FPGA实现图像的一些简单处理和缓存,显然得需要外部存储器。而在外部存储器中,相比于一些其他的存储器,SDRAM的特点是速度快,价格低,但时序复杂。在我们详细讲解完成后会给出详细包含0V7670+SDRAM控制时序的Verilog代码。
2
在我们的整个SDRAM的控制代码中,我们主要包括3个大的模块,SDRAM控制模块,SDRAM对模块,SDRAM命令模块,各个模块的主要功能如下所示。
SDRAM控制模块:首先要延时200us,延时完成后才可以是其他各个模块工作,当外部产生一个写信息和读信号时,将此读写信息传入SDRAM读写模块,与此同时,产生SDRAM的读写命令,控制SDRAM读写模块和SDRAM命令模块协同工作。当写入一次数据完成后,SDRAM控制模块才会产生下一次的读写信号,如果没有读写完成前一次数据,即使SDRAM控制模块接收到读写信号,也不会将读写信号传输到读写模块和命令模块。每60MS的时间就要产生一次自刷新信号和命令。
SDRAM读写模块:SDRAM读写信号主要是完成写地址和读取地址的产生,以及将传输的数据传递到Data总线上。
SDRAM命令模块:SDRAM命令模块是根据SDRAM控制模块产生相应的命令信号,控制SDRAM的有序工作。SDRAM命令模块可以用一个状态机来表示系统的各个命令之间是如何进行运转的。
Quartus中建立的RTL模块图所示。