• 数码相框各模块时钟流详解


    主要由sd卡模块、输入异步FIFO、SDRAM、输出异步FIFO、单口RAM、VGA模块组成。

    1.sd卡模块:采用SPI模式读取SD卡中的数据,SPI工作在25Mhz(每bit),那么一字节需要多久?差不多是25M/8=3.125Mhz,这样的速度拿去在VGA(40~50Mhz)显示是远远不够的,因此需要用到下边的异步FIFO以及SDRAM。

    2.输入异步FIFO模块:既然是异步,就得两个时钟,那么两个时钟分别是多少呢?和SD卡的接口,我认为只要大于3.125Mhz就可以了,因为SPI协议是串行按位读,可以在成功读取一个字节时,发送使能写FIFO的信号,这样,只要这个时钟大于3.125Mhz,都是可以顺利写入FIFO的。另外一个和SDRAM接口的clk需要多大时钟?根据SDRAM定的,100M就可以了。关于此FIFO需要注意的是,什么时候开始往SDRAM写,也就是读使能呢?可以根据FIFO已使用量来判断,若大于或等于512字节(对于列宽度为9的SDRAM,页模式可访问的长度是512个16bit数据,也就是一行的长度column[8:0]。)则发出写SDRAM使能,如此变可以将所有数据写入SDRAM。

    3.SDRAM模块:这个就是Verilog控制SDRAM时序了,先留着。

    4.输出异步FIFO:输入clk,毫无疑问和SDRAM一致,100M的。输出clk,由于输出是直接和单口ram相接的,所以也应是50M。什么时候读出数据呢?当VGA模块已经同步到x,y的显示区域时,使能读FIFO。

    5.单口RAM模块:采用50Mclk,前边已经提到,SPI输出一字节是3.125M,为什么单口RAM可以跑50M呢?答案和上面红色字体一样,可以在色彩表数据成功锁存后,使能一个周期的wr_ram,这样,可以将数据写入ram。这一句:else if((cnt78 < 11'd1078) && wrf_wrreq) cnt78 <= cnt78+1'b1;仅在写FIFO一个周期信号有效时,cnt78才会加一,环环相扣,很是巧妙,,;又因为,色彩表数据存放在SD卡数据的前方(较之图像数据),因此完全保证了,后期译码时,ram中色彩表已经准备好。什么时候读ram?VGA计数到显示区域时,就会使能输出FIFO,数据输出,然后进入ram,然后进入VGA,从而完成图像的显示。

    6.VGA模块:VGA显示是一个不断刷新的过程,x从0计数到行尾,伴随着y从0计数到列尾,因此是一个周而复始的读数据的过程。VGA模块时钟频率是这么计算的,比如800*600@72Hz,那么时钟频率约为:1040*666*72=49870080约50M,1040和666是这种格式的帧长。

  • 相关阅读:
    xgboost系列之应用xgboost的注意事项
    【pandas】pandas.DataFrame.rename()---重置索引名称
    【剑指offer】复杂链表的复制
    【剑指offer】二叉树中和为某一值的路径,C++实现
    设计模式21 访问者模式
    设计模式20 迭代器模式
    设计模式19 中介者模式
    设计模式18 观察者模式
    设计模式17 状态模式
    设计模式16 责任链模式
  • 原文地址:https://www.cnblogs.com/fkl523/p/4075271.html
Copyright © 2020-2023  润新知