当前位置:首页 > ZedBoard
  • 基于ZedBoard的SCA架构的设计原理

    基于ZedBoard的SCA架构的设计原理

    摘 要:ZedBoard是Xilinx公司首款融合了ARM Cortex A9双核和7系列FPGA的全可编程片上系统,兼具ARM和FPGA两者的优势,是小型化SCA实现的最佳嵌入式平台之一。本文介绍了ZedBoard平台的硬件结构,并针对SCA架构在专用硬件平台上无法实现的问题,通过分析研究MHAL硬件抽象层技术和OCP接口规范,设计了符合ZedBoard平台硬件环境的MHAL硬件抽象接口和FPGA波形组件容器,有效地解决了SCA架构在ZedBoard平台上的实现问题,为在ZedBoard上实现以SCA架构为核心的系统开发打下了基础。   0 引言   软件通信体系架构(Software CommunicaTIons Architecure,SCA)是美军在联合战术无线电系统(Joint TaTIcal Radio System,JTRS)中针对GPP环境提出的软件无线电实现框架,结合JTRS后续推出SCA补充标准对SCA架构进行裁剪,可在硬件资源有限的嵌入式硬件平台上搭建小型化SCA架构,增强系统软件的可重用性和可移植性,是实现嵌入式可重构系统的主要架构之一。ZedBoard是Xilinx公司推出的首款融合了GPP和FPGA的嵌入式开发环境,可满足大部分嵌入式系统开发的需求,是嵌入式开发环境的必然发展趋势,但是由于FPGA中的应用组件都由具体的逻辑电路实现,完全不同于GPP上的程序调用执行,所以SCA架构在ZedBoard平台上会有诸多实现问题[1]。 本文首先介绍了ZedBoard平台硬件结构,提出了基于ZedBoard的SCA架构的总体设计,并重点针对SCA架构在ZedBoard平台上难以实现的问题,通过深入分析研究Modem硬件抽象层(Modem Hardware AbstraTIon Layer,MHAL)标准和Open Core Protocol(OCP) 接口协议,结合ZedBoard硬件结构设计了MHAL硬件平台外部抽象接口和SCA波形组件容器,有效地解决了SCA架构在ZedBoard上的实现问题,为在ZedBoard上实现以SCA架构为核心的系统开发打下了基础。 1 基于ZedBoard的SCA架构总体设计   ZedBoard平台是Xilinx公司最新推出的首款融合了ARM Cortex A9双核和FPGA的全可编程片上系统,兼备GPP和FPGA的特点和优势。ZedBoard平台的核心是Xilinx的Zynq-7020芯片,主要包括processing system(PS)和programmable logic(PL)两部分。其中PS部分包含双核的ARM Cortex A9处理器,不仅负责整个ZedBoard开发板的管理和配置,也可作为独立的芯片单独使用,是ZedBoard平台的系统控制核心,同时还集成了SIMD多媒体处理引擎(NEON)、内存管理器(MMU)等功能模块和多种对外扩展接口,具有很强的功能扩展能力。PL部分主要包括Xilinx的高性能7系列FPGA,作为PS部分的补充提供了丰富的IO资源和高速数字处理能力[2-3]。 基于ZedBoard的SCA架构总体设计如图1所示,为充分发挥ZedBoard平台PS部分的高性能系统控制能力,设计将SCA架构的核心框架、中间件和操作系统在PS部分的ARM上实现;而PL部分的高速数字处理能力和可重配置特点非常适合SCA应用层波形组件的实现。本文通过自行设计的MHAL硬件抽象接口和OCP波形组件容器来解决SCA架构在FPGA上的实现问题,并利用ZedBoard平台的APC接口和IO总线实现PS部分的核心框架和FPGA波形组件间的消息传输,下面对MHAL硬件抽象接口和FPGA波形组件容器进行重点讲述。 2 MHAL硬件抽象接口设计   Modem硬件抽象层MHAL是JTRS办公室在2007年颁布的接口标准,其初衷是为SCA系统中不同处理单元的通信提供标准的协议和接口,同时也涉及了硬件平台外部接口的抽象,为实现SCA消息在ZedBoard上的标准传输提供了方法[4-5]。本文深入分析研究了MHAL标准,并结合ZedBoard开发环境,对MHAL消息结构进行了修改,重新定义了MHAL硬件抽象接口的功能结构和接口函数,分别设计了ARM和FPGA的MHAL消息发送和接收结构,完成了MHAL硬件抽象接口的设计。 2.1 MHAL消息结构设计   MHAL消息从最低有效位到最高有效位以地址递增的方式进行排列,本文对MHAL标准中的消息结构进行了修改和扩充,添加了消息起始符和消息类型字段,使其能更好地满足SCA架构在ZedBoard上的实现需求,其消息结构如图2所示,其他字段与MHAL标准中的消息结构一样,在此不做赘述。

    时间:2020-08-05 关键词: FPGA zedboard

  • Zedboard实现了算法的硬件化及脱机处理

    Zedboard实现了算法的硬件化及脱机处理

    摘 要:本文选择了一种新颖的图像缩放算法进行FPGA硬件实现。该算法基于奇偶分解的思想,具有复杂度低、硬件需求小和缩放效果良好等突出优点。首先利用MATLAB对该算法进行了功能验证,然后用缩放耗时、PSNR、边缘模糊等级和脉冲噪声等指标评估基于该算法图像处理效果。与传统时域算法作对比,对比结果表明该算法在处理效果和运算速度上的优异性。基于Zedboard开发板,运用Vivado HLS高级综合工具将算法的C程序综合成硬件IP,并搭建了包含ARM处理器和VGA等模块的软硬协同验证系统。实验验证了图像缩放算法硬件设计的正确性和实用性。   1. 引言 数字图像处理因其广泛应用于社会生活的各个领域,而成为了研究的热点。图像缩放是数字图像处理中的一项基本而又关键的操作,多数图像与视频帧都是以压缩的格式进行存储和传送,以降低存储资源的占用,提高数据传输的效率。针对不同的应用,用户通常需要不同分辨率的图像。例如,在图像数据传输过程中为节省带宽,则通常需要发送低分辨率的图像,而当接收到图像后,进行显示时又很希望看到高分辨率的图像。尽管存在各种数据压缩软件,但数据的压缩仍是有限的,而且数据的压缩很可能已经对图片造成了一定的损坏,并不能确保图片关键信息的保留。图像缩放算法有很多,总体可分为基于时域和频域两大类算法,在时域图像缩放方法中,主要有最近邻域算法、双线性插值算法和双三次线性插值等。虽然它们在改善图像缩放处理后的失真度上逐渐增强,但其不断下降的运算速度也成为了不容忽视的问题(特别在视频帧放大中,图片的切换频率限制了缩放算法的可执行时间)。 这些算法中,有的通过PC机上的MATLAB、C等高级语言实现,有的基于ARM等嵌入式处理器实现,而有的则是基于FPGA这类芯片进行硬件的实现。由于PC机和ARM属于多任务的操作系统,通过软件编程实现缩放算法是其常用的图像缩放处理手段。系统代码解析和串行执行,以及多任务的切换等因素会严重降低图像缩放效率和实时数据显示,频繁的图像缩放会给系统的正常运行造成相当大的负担。因此,本文重点研究第三种图像缩放实现方法,充分利用FPGA的并行运算、高集成度、可编程和低成本特性,编程实现缩放算法的硬件结构和IP生成,为进一步实现专用图像缩放处理芯片的开发和应用提供帮助,以释放处理器,提高图像缩放质量和效率。 在综合考虑图片处理效果、运算速度和硬件资源需求后,本文选择了由Hoon Yoo和Byong-Deok Choi共同提出的算法[1] ——基于奇偶分解的分段加权插值的图像缩放算法(简称WLI算法)进行硬件实现。 WLI算法借助于奇偶分解的理论,基于16个相关点实现了图像中新点值的确立。本课题基于Xilinx的全可编程器件Zedboard,利用vivado hls高级综合工具编写可综合的c程序,实现了WLI缩放算法的硬件IP设计,利用开发板实际缩放操作验证了硬件缩放的高效率和低时间耗用特征,并通过图像缩放的VGA对比显示实验对设计进行了验证。同时,设计实现的IP也可以为图像处理的SoC复用,降低SoC的开发难度。 2. 图像插值算法及MATLAB仿真 2.1. 传统插值算法 本文分别选取了最简单的、基于四个相关点的最近邻插值算法;有二阶线性运算参与的双线性插值算法;以及最复杂多浮点运算的双三次插值运算作为对比算法,通过多种图像质量和效率评价方法,来评估WLI算法的优劣性(具体算法实现参考 [2] 相关内容)。 2.2. WLI算法 WLI算法应用奇偶分解的思想,将一维缩放中相关的四个点进行奇偶分解(奇部和偶部的相关点值分解后的关系示例见图1)。从定义上分析,奇部向量在频域图像数据处理中是一个高通滤波结构,相比于偶部向量,它具有更强的噪声。而噪声和高频信号对该部分的影响往往会掩盖该部分对正确缩放的像素点取值的贡献,所以为尽量避免奇部向量中携带的噪声等参量对缩放质量造成损害,对它进行简单的线性化操作,得出公式(1)的处理方案。 因为偶部向量对称的特性,其对缩放点的最终取值具有很大的影响度。直接的线性拟合虽然具有运算简单的特点,但正如图2所示,这会使得图片点值的变化太快,影响视觉效果。为使该部分的取值具有缓慢变化的特征,基于平滑曲线的原型方程是一个很好的选择,但曲线的复杂运算带来的资源耗用往往使算法缩放得不偿失。因此,引文对此部分的曲线公式进行分析讨论,巧妙的引入w参数完成了运算方法的降次和近似,如图2所示,最终得出同样是一次方程的拟合曲线图像插值计算公式(2)。

    时间:2020-08-05 关键词: zpnq zedboard

  • ZedBoard试用测评+HDMI接口硬件平台

    因为我拿的这套是全新的,先上张板子的全家福。见下图: 除了一个大信封里装的是板子上的各种IC的厂家的资料的外,还有一张ISE14.1的安装光盘。但是建议大家采用ISE14.2的开发环境,因为这个对zynq的器件支持会多一些。 想到评测这块ARM SOC的FPGA的板子,这块板子和以往FPGA开发板或者是ARM的开发板的区别。其实就是更好的体现ARM与FPGA直接的数据交互。还有本人没做过linux系统,所以先不做系统的移植方面的。主要评测一下ARM与FPGA之间的数据交互。 先先搭好硬件系统。首先使用PlanAhead建立工程,然后采用添加文件的方式创建嵌入式系统的xmp文件,这里需要注意的是:使用ZYNQ中的ARM硬需采用PlanAhead,ISE只能创建嵌入式软核。需要采用create sub-design的方式创建。以后和过程和使用软化差不多了。具体的设置步骤可以参见相关的文档,或者导入现成的.xmp文件 在上面的架构中,PS部分是主要部分,外面的接口部分的存储器采用的SD卡,SPI Flash 以及512M的DDR3。我所使用的控制HDMI接口芯片的控制时序作为自定义的IP核通过AXI总线挂到PS中。 使用心得: 1.搭好上述硬件平台后,以后的使用的操作就和使用Microblaze的方法差不多了。在没有跑操作系统的情况下,先把他当做一个硬化吧CPU吧。 2.主要是使用这块板子做HDMI接口显示方面的工作。具体的功能的实现是通过PS提供提供需要显示的数据,PL部分完成HDMI接口芯片时序的。后面在继续进行C的代码。 相关的说明: 1.其实还这块板子的很多资料在http://www.zedboard.org/content/support可以找的到。充分利用这个网站可以解决很多问题 2.这块板子有附带的SD卡中的文件,想知道文件含义以及如何生成该文件的方法,具体参见附件一。 如何操作可以参见doc文件夹下的readme.txt 1304640411450.zip

    时间:2012-10-17 关键词: hdmi 接口 硬件平台 zedboard

  • Zedboard使用评测+HDMI显示与SD读取

    上次搭好了硬件平台,后面立马开始了软件方面的调试。 因为以前做的都是些用HDL做过显示,比如VGA,以及最近用FPGA做的LVDS屏的显示。其工作原理的就是讲数据写入到显存(DRAM)中,然后再按照行场模式或者是使能DE模式读出DRAM中的数据,按照屏的显示时序,发送给屏完成显示。 具体的功能框图如下: ZYNQ作为整个系统的控制核心,提供HDMI的显示数据,以及时读写显存的控制,以及DDC的数据产生。PL部分主要是ADV7511的控制,还有将24bit的RGB数据转换为16bit的YCBCR422的数据发送给ADV7511   EDK中的数据到显存的函数如下: #define  img_length 2073600  //1920*1080 void ddr_video_wr(u32 write_addr){   u32 n;   u32 dcnt;   dcnt = 0;   xil_printf("DDR write start:nr");   for (n=0; n< img_length; n++){    Xil_Out32((write_addr+(dcnt*4)),write_data);  // RGB        dcnt = dcnt + 1;   }   Xil_DCacheFlush();   xil_printf("DDR write: completed (total %d)nr", dcnt); } 说明:write_data的数据位十六进制的RGB数据的组合。整个一幅图片的RGB值的大小为1920*1080的数据。 因为此时没有存取数据的地方,所以测试的图片显示的时候,将write_data 设定为固定值,让全篇显示红色的背景。 当时的设想是从SD卡中国读取过数据,毕竟以前用HDL语言做过读取SD的数据,实际上就是把他单过flah来操作。 于是在zynq_fsbl/src/下看到了关于SD卡两个文件,sd.c以及sd.h 在SD.C中看到了能使用的3个函数,如下: 1.InitSD(char *filename)  功能是读取sd中的指定的文件 2. u32 SDAccess( u32 SourceAddress,u32 DestinationAddress,u32 LengthWords); 功能就是讲原地的数据,复制一定长度的数据到目的地址。算作读数据。 3.void ReleaseSD(void); 功能就是算作释放掉SD卡操作完成。 于是就想用来试试看,新建了一个功能,当然还是用14.2. 程序如下:  #include <stdio.h> #include "platform.h" #include "sd.h" #include "xbasic_types.h" void xil_printf( const char *ctrl1, ...); int main(){   u32 data;   init_platform();   InitSD(“123.bin”);   xil_printf("@@read 123.bin success!@@@");   cleanup_platform();   return(0); }; 功能就是读取SD卡文件中的123.bin的文件。记过一编译就开始缺少文件,然后我就在电脑里找啊找,找了7.8文件的.h 到目前为止还剩下ff.h下的integer.h还没找到。 我想既然能从SD卡boot启动,应该可以自己操作SD卡,可是遇到这文件找不到,一切都没辙了。上次AET提醒过14.2容易少静态库,这次编译的时候特地选上所有standalone。

    时间:2012-10-17 关键词: hdmi 读取 评测 zedboard

  • ZedBoard试用测评+HDMI接口硬件平台

    因为我拿的这套是全新的,先上张板子的全家福。见下图: 除了一个大信封里装的是板子上的各种IC的厂家的资料的外,还有一张ISE14.1的安装光盘。但是建议大家采用ISE14.2的开发环境,因为这个对zynq的器件支持会多一些。 想到评测这块ARM SOC的FPGA的板子,这块板子和以往FPGA开发板或者是ARM的开发板的区别。其实就是更好的体现ARM与FPGA直接的数据交互。还有本人没做过linux系统,所以先不做系统的移植方面的。主要评测一下ARM与FPGA之间的数据交互。 先先搭好硬件系统。首先使用PlanAhead建立工程,然后采用添加文件的方式创建嵌入式系统的xmp文件,这里需要注意的是:使用ZYNQ中的ARM硬需采用PlanAhead,ISE只能创建嵌入式软核。需要采用create sub-design的方式创建。以后和过程和使用软化差不多了。具体的设置步骤可以参见相关的文档,或者导入现成的.xmp文件 在上面的架构中,PS部分是主要部分,外面的接口部分的存储器采用的SD卡,SPI Flash 以及512M的DDR3。我所使用的控制HDMI接口芯片的控制时序作为自定义的IP核通过AXI总线挂到PS中。 使用心得: 1.搭好上述硬件平台后,以后的使用的操作就和使用Microblaze的方法差不多了。在没有跑操作系统的情况下,先把他当做一个硬化吧CPU吧。 2.主要是使用这块板子做HDMI接口显示方面的工作。具体的功能的实现是通过PS提供提供需要显示的数据,PL部分完成HDMI接口芯片时序的。后面在继续进行C的代码。 相关的说明: 1.其实还这块板子的很多资料在http://www.zedboard.org/content/support可以找的到。充分利用这个网站可以解决很多问题 2.这块板子有附带的SD卡中的文件,想知道文件含义以及如何生成该文件的方法,具体参见附件一。 如何操作可以参见doc文件夹下的readme.txt 1304640411450.zip

    时间:2012-10-15 关键词: Linux hdmi zedboard

发布文章

技术子站

更多

项目外包