基于FPGA的多软核图像处理系统设计
正在对共享存储器的特定区域进行写操作,而同时另一个处理器正在对同一区域进行读或写操作,则很可能出现数据错误。因此,在共享存储器时需要通过使用Mutex核或Mailbox核通知其他处理器何时正在使用共享资源,以便处理器之间不会相互干扰。
图1为本设计中两个Nios II软核处理器与共享存储器的连接框图。其中:SDRAM为共享的程序存储器,用于存放两个处理器的代码;Flash存储器为共享的启动存储器;On_chip_memory是利用片上资源实现的双口RAM,在系统中是共享的数据存储器,用于存放图像数据。
由于两个Nios II CPU使用同一个SDRAM作为程序存储器,因此需要用SoPC Builder提供的存储器分区功能来指定每个Nios II CPU使用的存储器区域。SoPC Builder的分区功能使用处理器的异常地址来定义不同处理器之间代码存放的分界,每个处理器的异常地址用来决定处理器代码存放的基地址,其末地址由下一个异常地址或存储器的末地址决定。每个Nios II CPU有5个主要的代码段需要被链接到存储器中,它们分别是: .text、.rodata、.rwdata、heap和stack段。在对程序存储器分区时,必须为每个处理器的heap和stack段提供足够的地址空间,否则heap和stack段可能溢出,进而破坏处理器的代码运行。
本设计中的两个Nios II CPU还共享了一个Flash存储器,作为启动存储器。与程序存储器类似,在多Nios II软核处理器系统中,每个处理器必须从自己独立的存储区域启动,多个处理器不能从同一非易失存储器的同一地址启动。SoPC Builder对启动存储器提供了与程序存储器类似的分区功能,用处理器的复位地址来定义不同处理器之间启动代码的分界。
在本设计中,多软核系统的所有硬件资源通过SoPC Builder连接矩阵的互联情况如图2所示。Mutex核用于两个Nios II CPU对On_chip_memory的互斥访问。两个Nios II CPU通过SoPC Builder中的连接矩阵与这些资源相连接,实现了资源共享。此外,本设计中每个Nios II CPU都有独立的cpu_timer(计时器)、custom_comp(自定义CSC MegaCore IP接口)外设。
图2 多软核系统中硬件资源通过连接矩阵的互联情况
Nios II IDE具有在片上对多处理器同时进行调试的能力。Nios II IDE multiprocessor collection支持在FPGA片上对多软核系统的软件进行调试。Nios II IDE下载软件代码到每一个处理器,然后运行软件。在multiprocessor collection中不同处理器的启动并不是在同一个时钟周期开始的,只要一个处理器对应的代码下载完毕,该处理器就开始执行代码。
运行在两个Nios II处理器上的软件通过硬件Mutex核协调对共享片上数据存储器的访问。运行在两个Nios II CPU上的程序各负责一半的图像数据处理任务,并将处理后的图像数据写入共享数据存储器中。最后由一个Nios II CPU将结果数据从共享缓存中读出,并输出到结果文件中。
此外,软核处理器上运行的代码通过Altera公司提供的Altera Host Based File System文件系统对存储在计算机上的文件进行读写操作。Altera Host Based File System文件系统与Altera Zip Read-Only File System只读文件系统相比,可以对文件进行写操作,更加符合本设计的需求。加入Altera Host Based File System后即可在代码中使用ANSI C对存储在计算机上的文件进行访问,代码如下:
FILE*fp_bin=NULL;
fp_bin=fopen(″/mnt/host/hostfs_read_binary.bin″,″r″);
fread(buffer,1,BUF_SIZE,fp_bin);
for(i=0;i P>
{
printf(″%X″,buffer[i]);
}
设计中进行读/写的文件是BMP位图文件。BMP位图文件由四个部分组成:位图文件头、位图信息头、调色板数据和图像数据区。为了对设计进行简化,假设处理的BMP位图文件为非压缩且没有调色板的位图文件。在这类文件中图像数据区开始于0036h,使用ANSI C中的fseek( )函数即可读到图像数据实体。
4 多核系统与单核系统的性能对比
由于本设计为多软核系统,为了与单Nios II软核系统进行比较,在软件设计中加入了监测软件执行时间的代码。对不同像素数的图像进行处理时,单核系统与多核系统的程序执行时间如表1所示。
对表1中的数据进行分析可知,由于在多核系统中,CPU之间进行通信需要一定的时间开销,在待处理数据量不大时,如1 024像素,单Nios II软核系统(单Nios II 软核CPU带一个CSC MegaCore IP)与双Nios II软核系统(双Nios II软核CPU带双CSC MegaCore IP)在处理耗时上的差别并不明显。当处理的图像数据量增大时,双Nios II软核系统对性能的提升逐渐显示,如图3所示。
以一幅64×64的
- 基于DSP的嵌入式显微图像处理系统的设计(06-28)
- 基于PCI总线和DSP芯片的图像处理平台的硬件设计(07-06)
- 超级图像编解码技术(Scalado)(01-01)
- 基于FPGA的多DSP红外实时图像处理系统(01-21)
- 一种新型的多DSP红外实时图像处理系统设计(02-03)
- 基于DSP数字信号处理器的墙体裂缝测图像的处理(03-02)