随着亚微米技术的发展,fpga芯片密度不断增加,并以强大的并行计算能力和方便灵活的动态可重构性,被广泛地应用于各个领域。但是在复杂算法的实现上,fpga却远没有32位risc处理器灵活方便,所以在设计具有复杂算法和控制逻辑的系统时,往往需要risc和fpga结合使用。这样,电路设计的难度也就相应大大增加。随着第四代eda开发工具的使用,特别是在ip核产业的迅猛发展下产生的sopc技术的发展,使嵌入risc的通用及标准的fpga器件呼之欲出。单片集成的risc处理器和fpga大大减小了硬件电路的复杂性和体积,同时也降低了功耗、提高了系统可靠性。altera公司的epxal0芯片就是应用sopc技术,集高密度逻辑(fpga)、存储器(sram)及嵌入式处理器(arm)于单片可编程逻辑器件上,实现了速度与编程能力的完美结合。本文所介绍的图像驱动和处理系统正是应用了epxal0的这些特点,充分发挥了fpga逻辑控制实现简单、对大量数据做简单处理速度快的优势以及arm软件编程灵活的特点。
1 内嵌arm核的fpga芯片epxa10及其主要特点
epxal0单片集成了arm核、高密度的fpga、存储器及接口和控制模块,不仅简化了arm与fpga之间的通讯,也使片外扩展存储器以及和外设通讯变得相对简单;同时通过在fpga中嵌入各种ip核和用户控制逻辑可以实现各种接口和控制任务。这样的高度集成化不仅大大加快了arm与片内各种资源的通讯速度,而且减小了硬件电路的复杂性、体积和功耗,真正实现了sopc。
epxal0内部结构框图如图1所示式,主要分为嵌入处理器和fpga两部分。
1.1嵌入式微处理器arm922t
epxal0嵌入式处理器部分集成了业界领先的32位arm处理器(arm922t),工作频率可达200mhz;支持32位armv4t指令集和16位thumb扩展指令集;具有全性能的内存管理单元以及8k的指令缓存和8k数据缓存,以支持实时操作系统(rtos)、c语言和汇编语言。
1.2高密度的fpga
epxal0片内fpga部分具有1000000门可编程逻辑、3mb的内置ram和512个可供用户使用的i/0管脚,可以通过嵌入各种ip核实现各种标准工业接口(如pci、usb等)。
1.3先进的存储支持
epxal0嵌入式处理器部分集成了256kb单口sram和128kb双口sram;同时集成了两个先进的存储支持:(1)sdram控制器,用于控制单倍速/双倍速sdram。sdram的各种工作状态是依据信号线上提供的不同控制时序来确定的,实现起来非常复杂。有了sdram控制器的支持,只需要在altera公司提供的eda开发软件quartus ii中设置好sdram工作所需的各种参数,就可以按照直接给出指令、地址和数据的方式对sdram进行操作,控制器会自动将各种指令转化成sdram所需的工作时序,大大降低了对sdram的控制难度。(2)扩展总线接口(ebl),可外接4个存储设备,如闪速存储器、sram等,总容量高达128mb。其中ebi接口0外接闪速存储器,用于存储用户的软件、硬件设计代码。
1. 4方便的接口模块
epxal0嵌入式处理器部分嵌入了串口通讯模块(uart),可以不用编程直接实现arm与超级终端之间的串行通讯,实时监视软件的运行情况。如果要实现计算机与arm之间的数据传递存储,只需用户编写基于vc++语言的串口通讯程序,这需要用到microsoft公司提供的mscomm串行通讯控件。
1.5灵活的启动方式
epxal0共有两种启动方式:(1)从arm启动。这种启动方式需要将设计下载到片外闪速存储器中,而且设计中必须包含对arm的应用。启动时arm为主动,配置各种寄存器及fpga,执行软件代码。(2)从fpga启动。这种启动方式需要将设计下载到片外e2prom中,而且设计中可以只包含fpga部分的应用。启动时pp-ga为主动,arm处于复位状态,配置完成后,如果有对arm的应用,则arm解除复位,执行软件代码;反之,arm一直处于复位状态。
2 epxal0的工作方式
epxal0嵌入式处理器部分提供了两条32位amba微控制器总线ahb1、ahb2,分别用于片内各种资源的通讯,如图1所示。基于ahb1、ahb2总线,epxal0的工作方式大致可分为三种:(1)arm作为ahb1总线的主控,直接访问ahb1总线的从属资源,包括sdram控制器、片上sram、中断控制器等。(2)arm作为ahb1总线的主控,通过ahbl-2桥访问ahb2总线上
的从属资源,包括uart、e-bi、sram、stripe-to-pld桥等,同时通过stripe-to-pld
桥对fpga进行访问和控制。(3)fpga通过ahb2的总线主控pld-to-stripe桥访问ahb2总线上的从属资源,包括sram、sdram控制器、uart等。
epxal0片内集成了软件可编程锁相环路(pll),为微控制器总线及sdram控制器提供了灵活精确的时钟基准。
3 epxal0在图像驱动和处理方面的应用
本文所述的图像驱动和处理系统主要利用fpga逻辑控制实现简单、对大量数据做简单处理速度快以及arm软件编程灵活的特点,系统框图如图2所示。在芯片fpga部分,构造了cmos驱动模块,驱动cmos图像传感器使之能够采集图像数据。然后图像数据经数据接收模块存入片外sdram中,并经串口传人pc机,要将图像数据在pc机中显示成图像,还需编写基于cdib类的图像显示程序;同时将图像数据经芯片arm部分的图像处理算法(本系统采用sobel算子)处理,处理后的图像数据才能经串口传给pc机进行显示。为了验证基于arm的图像处理算法实现的正确性,还将这一算法在pc机中进行了实现,最后针对同一幅图像,将两种实现的结果进行了比较。
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算子为3x3模板,所以图像周边的一圈像素(第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芯片epxal0,单片就实现了上述系统,大大减小了设计的难度和电路的复杂性,同时也减小了硬件电路的体积和功耗,在系统小型化方面有着独特的优势。由于epxal0集成了先进的arm922t处理器器以及高密度的fpga,所以在不增加体积和改进硬件电路的情况下,可以实现更加复杂的图像处理算法和硬件控制逻辑设计,具有很强的系统扩展潜力。这种嵌入式方案必将成为集成电路的发展趋势,将会在未来较短的时间里得到快速的发展。
变频控制系统单片机外围电路设计探讨
浅析储能电池多元化技术升级趋势
Xilinx可编程逻辑器件设计与开发(基础篇)连载34:Spartan
教你实现用Python自动玩王者荣耀
苹果新任设计掌门人的上位之路
基于FPGA芯片和RISC在图像驱动中的应用
紧随Apple Pay 三星支付24日将公开测试
【Makefile】C文件包含的头文件修改,但不重新编译?
断路器锁具适用各种各样双孔,它的特性是怎样的
通过采用多种编码器实现DSP处理器的低功耗总线的设计
食物腐败程度测定仪
AVEVA 剑维软件助力厦门大学深化产学研用深度融合
MiniLED背光:从底层到表现,全新下一代显示技术
英特尔FPGA系列再扩容,打造完美产品矩阵
FAN5400系列USB兼容锂离子电池开关式充电器
HT for Web可视化产品在传统农业中的应用
顺舟智能荣获2023年度海尔智能家电最佳合作奖
安靠封装测试上海守住供应量,产能恢复至100%
比特币期货平台Bakkt为消费者推出了支付应用程序
二次回路的分类