中国汽车工程师之家--聚集了汽车行业80%专业人士 

论坛口号:知无不言,言无不尽!QQ:542334618 

本站手机访问:直接在浏览器中输入本站域名即可 

您当前所在位置: 汽车电子 > 查看内容

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

文章作者头像
发布:清雅轩 作者: webmaster来源: job.cartech8.com
PostTime:16-5-2008 20:50

以下为文章全文:(本站微信公共账号:cartech8)


汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师

  JPEG压缩模块

  JPEG压缩标准从1993年提出至今已有14年了,从各个方面来看都已经非常成熟,并且被广泛的使用于各个领域,这也正是本设计采用JPEG压缩模式的原因之一。JPEG压缩的过程包括了8×8 DCT(离散余弦变换)、Zig-Zag扫描、量化、游程编码和熵编码(使用Huffman编码)五个主要的过程。本设计中的JPEG压缩模块除了包括这五大部分之外还要有字节分包处理、字节码处理(主要是插入一些特殊的码字)、FIFO、wishbone总线接口和配置寄存器等一些功能模块来协调整个系统的运作。该模块的结构如图4所示。

图4 JPEG压缩模块结构图

  Huffman编码出来的数据是变长码,它包括了两部分,即码字本身和码字长度。在Byte Pack模块中,根据码字的长度对码字进行适当的移位,然后整理成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系统。

[文章纠错]

文章网友提供,仅供学习参考,版权为原作者所有,如侵犯到

你的权益请联系542334618@126.com,我们会及时处理。

12

会员评价:

0 发表评论

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 23-11-2024 15:53 , Processed in 0.130663 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.