| | 网站首页 | 新闻 | SOPC | FPGA | DSP | ARM | 嵌入式操作系统 | 下载 | 所有产品 | 留言 | 论坛 | 购买指南 | 网络协议 | 驱动设计 | | |
![]() |
![]() |
| 您现在的位置: 21嵌入式控制研究室 >> ARM >> ARM应用 >> 文章正文 |
|
|||||
| 内嵌ARM核的FPGA芯片EPXA10d的应用 | |||||
| 作者:佚名 文章来源:21control 点击数: 更新时间:2005-12-7 | |||||
|
关键词:ARM FPGA EPXA10 图像驱动 图像处理 随着亚微米技术的发展,FPGA芯片密度不断增加,并以强大的并行计算能力和方便灵活的动态可重构性,被广泛地应用于各个领域。但是在复杂算法的实现上,FPGA却远没有32位RISC处理器灵活方便,所以在设计具有复杂算法和控制逻辑的系统时,往往需要RISC和FPGA结合使用。这样,电路设计的难度也就相应大大增加。随着第四代EDA开发工具的使用,特别是在IP核产业的迅猛发展下产生的SOPC技术的发展,使嵌入RISC的通用及标准的FPGA器件呼之欲出。单片集成的RISC处理器和FPGA大大减小了硬件电路的复杂性和体积,同时也降低了功耗、提高了系统可靠性。Altera公司的EPXA10芯片就是应用SOPC技术,集高密度逻辑(FPGA)、存储器(SRAM)及嵌入式处理器(ARM)于单片可编程逻辑器件上,实现了速度与编程能力的完美结合。本文所介绍的图像驱动和处理系统正是应用了EPXA10的这些特点,充分发挥了FPGA逻辑控制实现简单、对大量数据做简单处理速度快的优势以及ARM软件编程灵活的特点。
1.1 嵌入式微处理器ARM922T
3.1 图像的驱动 3.1.1 CMOS图像传感器的驱动 要使CMOS图像传感器成像,必须设计正确的驱动时序,包括行同步、列同步、场同步及曝光时间设定等时序。利用FPGA逻辑编程简单的特点,用硬件描述语言Verilog HDL编程,可在FPGA中实现CMOS图像传感器的驱动时序,该驱动时序的仿真结果如图3所示。图中,ld_y为行选通信号;ld_x为列选通信号;cal为场选通信号;clk_adc为内部A/D转换器所需的时钟;addr为行列地址线;sys_reset为曝光时间设定信号;s和r为内部放大器选通信号。
3.1.2 图像的采集 CMOS图像传感器输出的信号为数字信号(即数字图像数据),所以图像的采集要通过FPGA中的数据接收模块将图像数据保存到片外SDRAM中。数据接收模块状态机如图4所示。标志Flag为1,开始采集数据。因为CMOS图像传感器在每个A/D转换时钟周期输出一个数据(如图3所示),接收模块也相应地设计成一个时钟接收周期接收一个数据(Burst状态),这样也就发挥了FPGA对大量数据处理速度快的优势。
3.1.3 图像的显示 ARM将SDRAM中的图像数据经串口传给计算机,在计算机中用VC++语言编写串口协议和图像显示程序,将CMOS图像传感器采集到的图像显示在屏幕上,以便于监测验证。 3.2 图像的处理 本系统采用的图像处理算法基于Sobel边缘检测算子。图像的边缘是由灰度不连续性所反映的,是图像的最基本信息。边缘检测算子检查每个像素的邻域并对灰度变化率进行量化,也包括方向的确定,大多数使用基于方向导数掩模求卷积的方法。就sobel算子而言,如图5所示,采用了两个3×3卷积核形成边缘算子模板,紧邻中心像素的像素有4个,和中心像素成斜对角的像素也有4个,距离中心像素近的模板值的系数为2,成斜对角的比较远,所以其系数为1,该系数反映了这样一点:邻域对当前像素的灰度梯度的影响程度越近影响越大,越远影响越小。图像中的每个点都用这两个核做卷积,一个核对垂直边缘响应最大,而另一个核对水平边缘响应最大,两个卷积的最大值作为该点的输出位,反映了当前位置灰度梯度(图像边缘)的主要方向和大小。运算结果反映了一幅边缘幅度图像。
因为拍摄的图像为1024×1024,采用的Sobel算子为3×3模板,所以图像周边的一圈像素(第1行、第1024行、第1列、第1024列)保持原灰度值。在图像的第2行2列到1023行1023列的范围内,用图5所示的算子模板进行扫描计算,即当前像素和与当前像素相邻的8个像素,分别与模板中位置相应的9个系数相乘,累加这9个乘积结果,就得到针对某一方向的灰度梯度。比较两个方向的计算结果,取最大者作为当前位置的灰度梯度。图7为图6经过Sobel算子进行边缘提取后得到的图像。该算法在ARM中是基于C语言实现的,体现了ARM软件编程灵活的特点。 3.3 试验结果 图6是成功驱动CMOS图像传感器后拍摄的景物图像,可见图像非常清晰。本文分别针对Soble算子进行了基于PC机和基于ARM的实现,图7为图6经过ARM中的Sobel算子的边缘提取结果,图8为图6经过PC机中Sobel算子的边缘提取结果,图9为图7和图8逐像素的比较结果。可见两种实现方法得到的结果完全一致,说明了基于ARM的Sobel算子的实现是正确的。
上述图像驱动和处理系统如果仅用FPGA来实现,算法部分的实现会比较复杂;如果仅用ARM来实现,驱动时序的设计也会非常困难。而采用内嵌ARM核的FPGA芯片EPXA10,单片就实现了上述系统,大大减小了设计的难度和电路的复杂性,同时也减小了硬件电路的体积和功耗,在系统小型化方面有着独特的优势。由于EPXA10集成了先进的ARM922T处理器器以及高密度的FPGA,所以在不增加体积和改进硬件电路的情况下,可以实现更加复杂的图像处理算法和硬件控制逻辑设计,具有很强的系统扩展潜力。这种嵌入式方案必将成为集成电路的发展趋势,将会在未来较短的时间里得到快速的发展。 |
|||||
| 文章录入:fengfeiyi 责任编辑:fengfeiyi | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 | | |
![]() |
站长:康草科技 |