帧相关的工作流程如下:
(1)地址产生。地址的产生由一个象索计数器实现,输入信号为帧同步信号VS和象素时钟CLK。前端提供的帧同步信号VS为该计数器的复位信号,在每一帧的开始,计数器清零,然后根据象素时钟CLK计数生成地址,每个象素时钟周期内地址不变,依据此地址进行存储器的读写。
(2)读取已有数据及相关处理。在一个象素时钟周期的前半段,也就是CLK跳变为高电平时,读写控制器输出的读信号OEl为有效,读出前帧中一个象素的数据,送到FPGA内部实现的加法器的A口,与同时到达B口的当前帧的对应象素数据相加平均。
(3)数据保存及传输。在同一个象素时钟周期的后半段,也就是CLK跳变为低电平时,读写控制器输出的写信号WEl为有效,相关处理完的数据写回原来的地址,同时该数据也送往帧存写控制模块。
3.3 帧存乒乓读写控制机制
超声视频图像需要实时地采集并在处理后在显示器上重建,图像存储器就必须不断地写入数据,同时又要不断地从存储器读出数据送往后端处理和显示。另外,为了满足这种要求,可以在采集系统中设置2片容量一样的帧存,通过乒乓读写机制来管理,结构如图3所示。为了确保任何时刻,只能有1片帧存处于写状态,设置1个写互斥锁;同时,只能有1片帧存处于读状态,设置一个读互斥锁。在系统初始时,1片帧存为等待写状态,另1片为等待读状态;开始工作后,2片都处于读写状态轮流转换的过程,转换的过程相同,但是2片状态相错开,这样就能够保证数据能连续地写入和读出帧存。该机制如图4所示,工作流程为:
(1)采集过程未开始,帧存A为等待写状态,获得写互斥锁;帧存B为等待读状态,获得读互斥锁;
(2)帧存写控制器收到一帧开始信号,判断为采集开始,设置帧存A写信号WE2 A有效,帧存A开始写入当前帧数据;同时帧存读控制器设置帧存B读信号OE2_B有效,帧存B则开始读出所存数据;
(3)一帧结束,帧存A写结束,释放写互斥锁;帧存B读结束,释放读读斥锁;
(4)等待另一帧开始,帧存A获得读互斥锁;帧存B获得写读斥锁;
(5)另一帧开始,写控制器设置帧存B写信号WE2B有效,帧存B开始写入数据;读控制器设置帧存A读信号OE2 A有效,帧存A则开始读出数据。
3.4 DMA传输
对整个B超诊断仪来说,系统要完成视频图像数据的实时采集和指定的处理,高性能ARM处理器的处理能力可达每秒数百万条指令,因此数据的传输设计是提高系统速度的关键环节。ARM处理系统与外部的数据传输可以通过CPU访问外部存储器的方法实现,但是效率低下,不能满足系统实时性的要求,而DMA数据传输以不占用CPU时间和单周期吞吐率进行数据传输的优点在实时视频图像采集系统中得到广泛的应用。但是因为DMA的传输速率和前端视频图像数据的输入速率不匹配,很难发挥出DMA数据传输的优势。由可编程的FPGA控制SRAM组成的双帧存可以很好地解决这个问题;此外,FPGA内部嵌入了一定数量的RAM,可以经过配置成缓冲存储器,通过灵活的逻辑结构可以方便地实现对输入输出数据流的控制,成为连接ARM处理系统和SRAM的纽带和桥梁。
4 结 语
在B超数字视频图像实时采集系统中采用FPGA作为采集控制部分,首先可以提高系统处理的速度及系统的灵活性和适应性:由于在FPGA和ARM处理系统之间采用SRAM做数据缓冲,并用DMA方式进行传输,大大提高系统的性能;由于采用FPGA可编程逻辑器件,对于不同的超声视频信号,只要在FPGA内对控制逻辑稍做修改,便可实现信号采集;FPGA的外围硬件电路简单,因而在硬件设计中,可以大大减小硬件设计的复杂程度。而FPGA的时序逻辑调试可在软件上仿真实现,因而降低硬件调试难度。