最近有童鞋跟我咨询FPGA开发的问题,所以后续准备分享一些之前做过的FPGA设计,以IP核或工程的方式记录到本站。
首先出场的是一个很久前做过的视频画面画线的设计,功能并不算复杂,但对于刚刚接触视频处理的童鞋能很好地起到思考的作用。
其实,用FPGA做视频处理的目的无非是一些实时性要求较高的情形,你想,用一片arm往往可以以百元内的预算实现图像处理而且软件的库函数也多开发也灵活,FPGA成本介于arm与GPU之间,能实现较好的实时性。就比如本例中,借助FPGA流水线式设计,只需要1个或几个时钟周期就可以完成1根线、1图图、多个字符的绘制。
下面介绍一下本文的主体,视频画线IP:
用户可以通过Set总线进行画线数据的设置,模块内部会根据参数进行计算,得到画线所需的特有数值;然后将视频流分别连接到VIDEO_S和VIDEO_M上,本模块将作为流水线的一环,在不改变原本设计的情况下插入线条,线条可以是斜线也可以是直线,这取决于用户的设置Set。
IP配置界面用户只需要配置视频流的形式,如果勾选Interlace,则认定视频为隔行扫描视频,如1080i,默认不勾选,如1080p。其他参数都在Set中,支持实时配置。
在使用模块时,按照上图方式连接即可,无论视频输入缓存的途中,还是视频输出的途中都可以直接插入该模块。鉴于对资源的消耗考虑,模块默认将产生7个时钟的延迟,若不考虑资源消耗,可缩小延迟为4个时钟延迟。若只想消耗1个时钟且线条为横线或竖线的话,可参考后续上传的横竖线IP。
就先介绍这些,欢迎讨论。