微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 图像采集压缩SOC系统在FPGA中的实现

图像采集压缩SOC系统在FPGA中的实现

时间:11-07 来源:今日电子 作者:邱雪松 姚公建 点击:

码字进行适当的移位,然后整理成8位长度,送入Byte Code Insetion模块。该模块根据码字的实际值进行判断,如果当前码字的值是FF,便在其后插入0x00,如果当前码字是本帧最后一个码字的话,便在其后插入0xFFD9(0xFFD9是JPEG图像标准中的结束标志)以标示该帧的完结。这样在接收端中就可以用0xFFD9对数据流中每一帧压缩的数据进行分割。最后处理好的字节流将送入FIFO中,以等待CAN总线空闲。

  另外,还有Control Regs模块,可以使用总控制器通过Wishbone Bus对其中的功能寄存器进行修改,进而操控整个JPEG编码的过程。这个操作必不可少,只有使JPEG编码具有可控性,才能协调采集、压缩、传输等环节的顺利进行。

系统控制模块

  本系统的大部分功能都采用硬件进行实现,因此,软件的控制流程就变的非常简单,仅仅包括了对各个模块进行初始化配置和控制协调各个模块。本设计中的控制模块采用了微码状态机替代了微处理器核,不仅可以节约逻辑成本(包括微码在内,仅有216个LE),还提高了运行效率。微码状态机的实现是根据系统的具体要求,对处理器的体系结构进行简化,本设计所实现的微码状态机在功能上相当于一个只有mov和jump指令的处理器。另外,微码的使用本身就增加了该模块的灵活性,想修改整个系统配置或者工作的过程的话并不需要修改模块的代码,而只是修改微码便可以,大大增加了可重用性。整个系统的控制流程如图5所示。

图5 系统工作流程

  本设计的系统图像采集压缩速度都要大于CAN总线的传输速度,因此只有第一次向CAN总线发送数据时需要判断压缩的数据是否已经达到8字节,以后每次当CAN传输完上一次压缩数据时,JPEG encoder已经又一次压缩好8字节数据,等待传输了,因此就不必每次都进行判断。

Wishbone总线与开源IP

  系统中各模块的互连采用的是比较简单的Wishbone总线。Wishbone总线标准是开放式总线,没有任何专利费用,它现在由opencore维护,并且在opencore的网站上有很多由专人维护并且与Wishbone兼容的开源IP。本设计中的I2C master和CAN controller就是从opencore上免费获得的开源IP。合理的使用这些软核,并将其集成于自己的系统中将大大加快整个设计的进程和产品的成本。

  在系统中存在1个主设备(master)和3个从设备(slave),为每个slave分配好固定的地址,因此Wishbone总线模块所做的事情仅仅是进行地址译码。

系统验证与仿真

  虽然本设计所构建的SOC系统是基于FPGA的,但是在上板调试前首先在PC上建立整个系统的仿真环境,对系统进行充分的验证,这样可大大的加速整个项目的进度。本设计中为系统建立的仿真环境如图6所示。

图6 验证环境

  准备原始数据做为系统图像源的输入,并且使用Can Receiver采集系统的输出,最后和软件模型生成的JPEG压缩数据进行比对,对错误进行定位,另外也可在系统中设置监控点,输出数据流,这样便可知道具体在哪一个环节中出现了错误。图7为运行testbench产生的接收数据波形文件。

图7 数据波形

总结

  在本设计中,笔者使用FPGA构建了一个SOC系统,完成了图像的采集、压缩和传输功能,很多地方还可以进一步的
优化。本设计的重点在于在FPGA上应用了SOC的设计方法,并实现了一个比较简单的SOC系统。这样做绕过了ASIC设计的高复杂性,高风险性和高投入,从而实现了简化最终PCB系统,降低硬件成本的目的,并且对系统的实现更加灵活,能按照客户的愿望定制,修改系统的功能。另外在整个设计过程中,尽量的应用可重用的IP软核,最大限度的加快了开发进度和降低了开发费用和成本。

  现在,FPGA厂商已推出65nm最新工艺的器件,使集成度进一步提高,而功耗和成本又大幅度降低。在这样的环境下,相信在不久的将来FPGA会不仅仅只作为协处理器的配角出现,而是更多的出现以FPGA实现的SOC系统。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top