乒乓操作是一个主要用于数据流控制的处理技巧,典型的乒乓操作如图3.19所示。
图3.19 乒乓操作示意图
外部输入数据流通过“输入数据选择控制”模块分时交替送入两个数据缓存模块中,数据缓存模块通常是片内存储器,如双口RAM或FIFO等。
在第1个时间周期,“输入数据选择控制”模块将输入的数据流缓存到“数据缓存1”模块。在第2个时间周期,“输入数据选择控制”模块做了切换,将输入的数据流缓存到“数据缓冲2”模块;与此同时,“输出数据选择控制”模块将“数据缓存1”模块在第1个时间周期缓存的数据流送到“数据后处理”模块进行后续的数据处理操作。在第3个时间周期,“输入数据选择控制”模块切换回到“数据缓存1”模块,将数据流送到“数据缓存1”模块中;与此同时,“输出数据选择控制”模块也作出切换,将“数据缓存2”模块缓存的第2个时间周期的数据送到“数据后处理”模块。如此不断的交替切换。
这里利用了乒乓操作完成数据的无缝缓存与处理。乒乓操作可以通过“输入数据选择控制”和“输出数据选择控制”按节拍、相互配合的进行来回切换,将经过缓存的数据流不停顿地送到“数据后处理“模块。
如图3.20所示,在一个图像采集和显示应用中,图像传感器实时采集30fps的视频流,同时需要以每秒60Hz的帧率在液晶屏上显示。这个应用就可以使用乒乓缓存来解决图像采集和显示两端的帧率不匹配导致的不同步问题。由于图像分辨率较大,一般会选择缓存到外部的DDR3存储器芯片中,例如本实例会在DDR3存储器开辟两块不同地址的内存空间,分别作为乒乓缓存的2个不同缓存区。
图3.20 图像实时显示
在这个例子中,为了保证液晶屏显示驱动输出的每一帧图像都是从传感器的同一个曝光时间内采集到的同一帧图像,除了需要有乒乓缓存,可能还需要有额外比较复杂的控制和判断逻辑,用于更准确的切换两个缓存中的数据的输入和输出,这是题外话,这里不详细展开介绍。
全部0条评论
快来发表一下你的评论吧 !