SCCB总线控制模块及
SRAM读写控制模块的
设计与仿真
在本系统的设计过程中,最为重要和困难的部分就是将自己所需要的用户IP核集成到FPGA资源中。下面详细介绍一下这两个模块的设计和构成:
SCCB总线控制模块
系统中使用的摄像头型号是OmniVision公司的OV7649 CAMERACHIPS芯片及其配套的CMOS镜头。这是一款低电压的CMOS图像传感器芯片,通过其特有的SCCB(Serial Camera Control Bus)总线的控制,可以实现全帧、半帧、子采样等各种形式的图像输出,输出格式可选择配制成YUV、RGB或者原始RGB等,另外可进行自动曝光控制,图像增益控制等。而所有的配置,都是通过SCCB总线进行更改。
状态机模型可简化为6种状态:Idle空闲;Bit_Start比特开始;Bit_Mid_LOW比特传输中低位传输;Bit_Mid_HIGH比特传输中高位传输;Bit_End比特传输结束;Trans_End整个传输结束。根据具体的跳转流程,用VHDL语言中的条件语句可以方便地完成,在此不作赘述。
TYPE states IS(Idle, Bit_Start,Bit_Mid_LOW,Bit_ Mid_HIGH,Bit_End, Trans_End);
SIGNAL nowState: states;
下面对其中填充帧数据的过程进行描述:
case nowState is
when Idle =>
......
when Bit_Start =>
......
end case;
在仿真过程中,由于要就很长一段时间的信号进行分析,所以限于篇幅,无法将仿真结果尽列于此。在工程实际使用中,SCCB总线控制模块已经被验证无误,能够正确地实现摄像头的配置,并且拍出的图片质量也达到了预期水平。
SRAM读写
控制模块
系统中选用的存储芯片为IDT71V424。和所有的存储芯片一样,IDT71V424芯片通过片选(CS)、读使能(OE)、写使能(WE)三条控制线进行控制。设计的难点并不是怎样将数据写进SRAM,而是怎样按照摄像头的数据输出速率将数据写进SRAM。摄像头的数据输出由场同步信号(VSYNC)和行同步信号(HREF)进行同步。
实现时没有直接用CPU对CS、WE、OE信号进行控制,而是产生一个doWrite信号,当此信号为高电平时,控制相应的CS、WE、OE信号进行写操作,在两个独立进程中实现。这样做的好处是使得各部分的耦合尽量的小,便于各自调试。
为了将输出数据与写入数据进行同步,系统不是对第一个场同步信号就作出反应,而是数过若干个场同步信号(VSYNC)后,等一切稳定运行了,才开始接收数据。
仿真结果如图3所示,在每个行周期内,数据都被正确地写到了数据线上,Data_cam信号是摄像头的输出数据,以偶数递增的数据作为输入的模拟,Data_sram是SRAM的数据线,只要在每个像素时钟pclk的上升沿读取Data_cam的数据,就能保证数据的正确写入。
由仿真结果可以很清楚的看到,设计是合理和有效的。并且,在工程实践中,该SRAM控制器也已经被证明能够可靠工作。