>
首页 » 业界动态 » ALTERA杯SOPC竞赛总结

ALTERA杯SOPC竞赛总结

作者:亢曼曼  时间:2007-08-24 10:55  来源:

在老师的极力推荐下,我和另外的两位同学参加了湖北省举办的首届ALTERA杯SOPC竞赛,最后获得了省三等奖。虽然结果不是很理想,但是在这几个月的学习中,我学到了不少知识,同时感触也很多。总之,此次比赛使我们获益匪浅,在参加比赛的过程中,我们逐渐对Nios II的设计有了一个全面的了解,增强了我们对Nios II软核CPU的信心,加深了对SOPC的认识。

在系统设计方面,我们深刻体会到FPGA以及Nios II软核设计方式的优点。SOPC使用IP多种方法来优化硬件设计,能够简单地实现系统的修改和调试,并且支持同时进行软件和硬件模块设计。由于Nios II符合工业技术发展潮流,即硬件设计软件化,所以采用Nios II能够达到有效降低人力和物力成本、增加产品竞争力的目标,而且硬件设计软件化还能方便对硬件进行模拟仿真,减少硬件设计的错误。除此之外,硬件开发工具也比较优秀。QuartusII和SOPC Builder能够使设计人员可以轻松地修改硬件,这样的设计方法比较经济。

由于我们都是刚刚接触有关SOPC方面知识,也缺少一些开发的经验和实例,再加上自己对知识掌握的不足,导致我们一开始就走了不少弯路。但我们在不断摸索过程中发现,Quartus II中也有很多优秀的调试工具,并且非常好用,给我们留下了深刻的印象,像RTL、SignalTap II、Modelsim。RTL可以让我们看到硬件设计的传输级逻辑是否正确,通过它可以检查逻辑线路是否连接正确,以便查找程序中的错误所在,从而有效节约一些开发时间。刚开始,我们在实现软硬件通信的时候就遇到过这种情况,在程序中怎么也发现不了错误,最后通过RTL才发现有一根线没连上,无法实现通信。SingnalTap II嵌入式逻辑分析仪与通常的逻辑分析仪相比更加灵活和稳定,最关键的是可以让我们看到FPGA 芯片内部信号的流动情况,能让我们直观的调试自己编写的逻辑程序。

在Nios II处理器中,我们可以根据自己的需要选择合适的外设、存储器和接口,同时也可以定制处理器中的某些逻辑单元,还可以将专用的功能进行集成,充分体现了Nios II软核设计的优势。不仅如此,Nios II还引入了集成开发环境IDE,为我们编写代码、调试、下载运行提供了统一的可视化界面,我们不必再去记忆那些繁琐的编译、链接、下载指令。同时里面自带的Debug调试也非常好,我们经常用来查看程序的流程是否正确。

我们所做的课题是基于SOPC的汽车前视与后视系统。在整个系统中又分前视和后视两个子系统。前视子系统包括前视的摄像采集、VGA显示、视频的压缩处理、SD卡的读写、位图的存储,后视系统包括实时字符叠加、超声波测距、后视视频。这个课题是十分前沿,且具有实用性的。在整个工程中,我们完成了大部分工作,令人遗憾的是我们的视频压缩处理和利用操作系统进行的整个工程的前后任务的切换没有做好,使得我们在比赛中处于劣势中。

下面我就这几个月所做的课题和所学到的知识简单谈谈。

整个课题的原理是应用Nios II处理器,实现了基于SOPC的汽车前视与后视系统。系统利用两路摄像头进行视频采集。前视是利用摄像头I 采集汽车前方景象,经过压缩处理,把图片存储到SD卡;后视是利用摄像头II 采集汽车后方景象,并送往LCD液晶屏幕显示,同时利用超声波探头测距,将汽车与障碍物的距离叠加到LCD液晶屏幕上。利用MicroC/OS-II实时操作系统切换调度前视、后视任务。

在整个设计中,视频的显示压缩存储、SD卡的读写、后视测距是整个系统中最主要的也是最难的。在视频的显示中,由于摄像头采集到的视频信号为模拟量,所以我们的首要的任务是将模拟量来转换成数字量,利用I2C总线来配置ADV7181,使其实现对PAL制式的视频信号的转换。但是TV与VGA的场频相差很大,要解决两个场频相差很大的系统实现协调工作,即由隔行信息变成逐行信息,这里就需要将行频变为原来的两倍。可以把TV的场频与变换成的VGA的场频送到外部的示波器上来观察频率的关系。在这里倍频不采用PLL来实现,而是用Verilog语言来描述一个倍频的过程,采用了将场频的起始和中间生成两个脉冲来实现。其次完成将TV信号转换成VGA显示器所需的RGB。这里采用的是色度空间的转换来实现。色度空间的转换首先是先转换了一幅图像,转换的过程是很成功的。转换完成的RGB为数字量需要经过数模转换才能送到VGA上显示,这三个分量经过了芯片ADV7123来完成数模转换。在处理完显示后,我们就开始着手考虑视频的压缩存储。由于摄像头传出的图像信息量大,每一幅灰度图片大小都高达300KB,向SD卡里写入的数据实在是太大,并且软件处理的速度与硬件的处理的速度相差甚远,不但达不到存储的要求,而且很难实现计算机联网传输、信息共享的需求。于是采用相关编码技术对图像进行压缩,在系统中实现实时存储和传输是汽车前视系统的要求。在本次竞赛中,我们采用的是简单压缩的处理方法。即对图像信息进行隔行与隔点的抽取,使数据量降低到原来的1/4,每幅图片达到了75K。为了解决软件与硬件的处理速度问题,采用了片上RAM作为缓存。图像的压缩提高了图像的存储速度和效率,并且也满足了向SD卡里写入数据时,软件处理速度不足的问题。

基于上述需要存储的数据量大的原因,采用大容量、传输速度快、廉价、操作简便的存储介质就非常必要了,故本系统采用的是SD卡。SD卡高度集成闪存,具备串行和随机存取能力。可以通过专用优化速度的串行接口访问,数据传输可靠。SD卡的接口可以支持两种操作模式:SD卡模式和SPI模式。在刚开始,我们为DE2板子到底支持哪种模式讨论了很久,最后在阅读了大量的资料和网上朋友的帮助下我们了解到DE2板子两种模式的操作都支持。同时了解到SD卡模式允许4线的高速数据传输。而SPI只有一根数据线用来传输数据,这在数据的传输速度上大大的低于SD模式了。当我们正在为这个发现而感到高兴的时候,另一个事实打击了我们。因为对于DE2板子来说,它的硬件电路已经搭建好了,从它的电路图来看只有一根数据线连通着,所以两种模式无论采用哪一种数据的传输速度都是一样的,这无疑对软硬件上实现速度的匹配并没多大的帮助。在考虑诸多因素的情况下,我们采用了SPI模式。 SPI总线允许通过2通道(数据入和出)传输比特数据。SPI兼容模式使得MMC主机系统通过很小的改动就可以使用SD卡。SPI模式使用字节传输。具体的实现方法如下所述。SD在收到复位命令(CMD0)期间,如果CS引脚为低电平有效时,将进入SPI模式。在SPI模式下,SD提供非保护模式,令牌中的命令、应答和数据仍然需要CRC(循环冗余码校验)位,但是对于发送器和接受器来说并不关心CRC位的具体内容。SD卡SPI通道由以下4个信号组成:CS(片选),CLK(时钟),DataIn(主机到卡的数据信号)和DataOut(卡到主机的数据信号)。CS是SD卡的片选信号线,在整个SPI操作过程中,必须保持低电平有效,CLK便于同步,DataIn不但传输数据,还发送命令,同样DataOut除了发送数据外还传送应答信号。具体的实现原理是Host首先在DataIn线上发送写指令CMD24到SD卡,等待SD卡响应。如果响应不对或者等待的时间太长,就会提示出错并返回,则写操作不成功。如果没有出现上述情况,Host就会继续向SD发送数据块。发完后,等待响应并检测SD卡是否忙,忙就继续等,否则就进入下一条指令。由于我们要存储的数据量大,所以必须对SD卡进行多块数据的读写。这里主要实现EP2C35F672C6(DE2开发板)对SD卡的写操作,以单块数据的写入为例。当SD卡接收到单块写命令CMD24后,卡将发送给主机一个应答令牌,并且等待主机发送一个数据块来,当应答R1为0时,说明可以发送数据,一块的大小为512个字节。卡对每个发送给自己数据块通过一个应答令牌确认,它有1字节长,当其低5位二进制为00101时,数据块才被正确写入SD卡。在SPI模式中,命令的格式为6个字节,以二进制计最高两位为01,接着为6位命令字,然后为32位此块数据写入的始址,再为7位CRC,最后是截止位1。在数据块的发送中,共发送515个字节数据,第一字节内容为0xFE,随后为512个字节的用户数据块,最后是两个字节的CRC。

在后视处理中,为了将所测距离和车后景物实时显示给司机给予提醒,系统还设计了声音报警电路和视频显示电路。而对于后视的倒车测距,我们是用超声波测距的原理来做的。即当汽车处于倒车状态时,控制器控制探头发射40KHZ的超声波信号,记录下超声波发生器自发射出超声波到接收到反射回波的这段时间差T,利用公式S=CT/2 计算出超声波器距障碍物间的距离。其中C是超声波的声速,在标准状态下C=340m/s。在本系统中超声波的发射是由Nios II内核控制器通过定时器定时由pio口来发射一串40KHZ的脉冲信号,经放大电路放大后,由探头发射出去。但是究竟要使控制器发射多少个40KHZ的脉冲信号才能使倒车雷达很灵敏很精确的测量障碍物的距离呢? 如果控制器发射的40KHZ脉冲信号多的话就不能检测太近的距离如果少的话又不能准确接收到信号经过实验证明使控制器发射5个40KHZ的脉冲信号既能检测很近的距离又能准确接收到信号。由于超声波探头在发射超声波信号后还有一段时间的残余超声波,所以在Nios II控制器发射5个超声波脉冲信号,并打开Nios II中的定时器开始计数后,需要延时一段时间再开启Nios II中的外部pio中断。考虑到波在传输路径中的损耗,又在我们所做的外部板子中将返回的信号经过三级放大带通滤波器,该滤波器的中心频率为40KHZ。放大后的信号经过运放判断输出是高电平还是低电平。是低电平的话,就触发中断,在中断处理任务中去关闭定时器计数。关闭后读取定时器中的当前的计数值,再根据当前的计数值来计算超声波来回的时间差,从而测出与障碍物之间的距离。如果计数溢出产生中断,则说明没有波返回,这时需要在中断处理任务中去关外部中断,关定时中断。同时这也证明了车身与障碍物之间的距离是安全的。通过上述方法,就能够准确测出距离来。

在此次竞赛中,我感到遗憾的是我们并没有做好视频的压缩存储。在做视频显示时,我们是参考DE2板子上自带的例程。由于那个例程是将NTSC制式的TV信号转换成VGA信号,而我们所用的摄像头是PAL制式的,这就需要我们修改I2C配置。我们在阅读了大量的I2C英文文档后,终于能够显示实时视频,但是美中不足的是视频显视的是黑白图像,与我们所期望的不相符。接下来我们不断的修改,不断的查阅资料和在网上寻求帮助,并没找到答案。最后由于比赛时间的限制,我们不得不放弃,转做剩余的工作。另外就是在做视频压缩时,因为我们对压缩算法不是很理解,又由于受到时间的限制,我们就放弃了运用算法做视频的压缩,转而用隔点隔行抽取的办法来实现压缩。但最后我们往SD卡存储后,读出的时候并没看到正确的图形。我估计这还是与我们没有采用正确的压缩算法有关。毕竟那样做有可能把图像的有用信息给忽略掉,同时把没用的信息给保存下来,这就没有达到压缩的真正目的。总的来说,一方面是由于我们储备的知识还不够,另一方面是这毕竟是新的知识,我们的接受能力还达不到在短短的几个月就能掌握得很熟练的程度。无论如何,我打算在以后的日子里,继续这方面的学习,因为这对提高自己的学习能力非常有帮助,也能掌握一些新的知识。

由于在本次比赛中涉及到的都是比较先进的知识,加之中文资料文档比较欠缺,学习难度大,所以此次比赛对于我们本科生来说,具有一定难度的。比赛过程中遇到的一些问题,有时候钻研几天都毫无进展,这常常使得我们很郁闷和心情烦躁,这种时候就要学会保持一种良好的心态。同时在比赛中,我们学会了一种“永不言弃”的精神,正是这种精神,让我们一直能够坚持都最后!

总之,在这几个月的学习中,我了解和掌握了很多新的知识,开阔了自己的眼界,提高了自己的能力,也为自己在以后的学习中打下良好的基础,为自己的人生积攒了一笔受益终身的财富。

相关推荐

FPGA将延续硅片融合趋势

Altera  FPGA  2013-06-20

电源管理IC论英雄 从Altera并购案看成败

Altera  电源管理  2013-06-18

紧追赛灵思16nm量产进度 Altera明年投产14nm

Altera  16nm  2013-06-13

Altera收购Enpirion FPGA电源管理IC融合?

Altera  电源管理IC  2013-06-09

FPGA双雄策略变 圈地为王发挥能量

Altera  FPGA  2013-05-06

Altera副总裁:“14nm工艺FPGA的代工只委托英特尔”

Altera  14nm  FPGA  2013-03-07
在线研讨会
焦点