《电气卄矣>(2019.No.3)27文章编号:1004-289X(2019)03-0027-04
基于SoC FPGA的音视频播放器设计
黄燕华,杨秀芝
(福州大学物理与信息工程学院,福建福州350116)
摘要:本系统设计了一款基于SoC FPGA的音视频播放器,实现了音视频文件的正常解码和播放。该设计既发挥ARM强大的串行处理能力和处理复杂算法的优势,也发挥FPGA高速处理大量数据的优势。系统采用DE1-SoC开发板,在硬件上,采用FPGA设计了Mixer,Frame read.VGA等IP核,并且在Qsys中利用AXI和Avalon总线连接各个IP核。在软件上,利用SD卡启动Linux操作系统,编写基于ARM硬核处理器的嵌入式系统软件应用程序控制整个硬件。最后通过板级验证实现了系统功能。实验结果显示,MPEG2视频解码速率大约18f/s,数据从ARM传输到FPGA的速率约为38M/s o
关键词:SoC FPGA;音视频播放器;Linux操作系统
中图分类号:TM925.7文献标识码:B
Audio and Video Player Design Based on SoC FPGA
HUANG Yan-hua,YANG Xiu-zhi
(College of Physics and Information Engineering,Fuzhou University,Fuzhou350116,China)
Abstract:This system has designed an audio and video player based on SoC FPGA,which realizes the normal decoding and playing of audio and video files.It can not only exert the advantages of ARM powerful serial processing ability and processing complex algorithms,but also can use FPGA to process large amounts of data at high speed.The system is based on SoC FPGA to achieve the normal decoding and playing of audio and video files.The system uses the DEI一SoC development board.On the hardware,the IP cores of Mixer,Frame read,and VGA were designed in FPGA,and then AXI and Avalon bus were used to connect the IP core in QSYS.On the software,use the SD card to start the Linux operating system and write an embedded system software application program based on the ARM hard-core processor to control the entire hardware.The system's function is realized finally through board level validation.The experimental results show that the MPEG2video decoding rate is approximately18£/s,and the data transfer rate from ARM to FPGA is approxi­mately38M/s.
Key words:SoC FPGA;audio and video player;linux operation system
1引言
FPGA(Filed Programmable Gate Array)即现场可编程门阵列。是20世纪80年代出现的可编程器件,用户可以通过对FPGA内部独立的现场可编程逻辑块编程来实现所需要的逻辑功能⑴。FPGA可以被多次编写和擦除,用户可以在不改变外围电路的情况下设计不同逻辑,实现不同的电路功能,所以,用FPGA设计产品原型,能以最快的速度占领市场。
ARM嵌入式微控制器资源丰富,性能卓越且扩展性强,加之体积小,功耗低,人机监护也很友好,使它在各种应用场合都表现出了优异的性能。ARM支持嵌入式操作系统,因此应用领域得到了极大的扩展。本设计在ARM中嵌入了Linux系统,Linux系统源代码开放,资源丰富,具有良好的可定制性和可裁剪性,它支持文件系统,支持多任务并发并处理实时的交互任务。因此,嵌入式操作系统比很多其他的控制系统更为灵活和高效⑵。
为了体现ARM软件编程灵活以及FPGA高速处理大量数据的优势,在串行和并行处理能力上得到双
28<**14^>(2019.No.3)
赢,ARM和FPGA的结合成为嵌入式发展的必然趋势。Altera公司在2013年推出了新一代的SoC FPGA 芯片,与传统的FPGA相比,Altera SoC产品拥有双核ARM Cortex-A9MPCore处理器和FPGA,硬核处理器(ARM)⑶与FPGA之间采用高于125Gb/s的宽带互联。SoC FPGA既实现了FPGA可编程逻辑的灵活性,又有硬核IP的性能和低功耗特性[4-5]o可以实现基于ARM处理器的嵌入式系统软件开发,具有
良好的应用前景。
2系统总体设计
基于SoC FPGA的音视频播放器原理框图如图1所示。整个系统由硬件处理系统(HPS),Altera Cyclone V系列的FPGA芯片、芯片外接存储器(包括SDRAM和SD卡)以及LCD显示器和音频播放器组成。
HPS/ARM FPGA/Qsys
图1系统总体框架
本设计采用的Linux操作系统平台通过SD卡启动,通过编写Linux应用程序控制Qsys硬件系统工作。其中Qsys硬件系统由各个IP核通过Avalon-ST总线和Avalon-MM[6]总线连接。
系统工作流程可分为以下几部分:
(1)首先硬核处理器(HPS)从SD卡中读出MPEG2格式的视频数据和mp3格式的音频数据,通过ARM应用程序调用mpg_decode解码出原始RGB格式的视频和调用mad_decode解码出pcm格式的文件。
(2)其次h2f_axi_master桥接通道将RGB格式的视频保存在FPGA的SDRAM存储器中,由于音频数据量比较小,所以直接通过h2f_lw_axi_master桥接通道传输到音频IP核。
(3)最后VGA接口将整个视频画面传输到LCD 显示器且耳机通过AUDIO接口接收音频文件。
系统的设计包括FPGA逻辑代码设计、Qsys硬件系统设计和硬件处理器系统(HPS)的软件设计。3FPGA硬件系统设计
3.1图像显示部分硬件设计
图像显示部分主要实现的功能是获取SD卡的MPEG2视频信息。帧读取(Frame_readO)读取SDRAM中原始的RGB信息,并且加上背景生成器的图像和友晶LOGO生成器的图像一起传输给混合器(Mixer),混合器把数据分层并传输给VGA接口,图像显示第零层为分辨率为的黑背景铺满整个LCD显示器,第一层为MPEG视频。并且设置视频数据可以在整个LCD显示器上随意跳动,大小为,第二层为ALTER LOGE样式,置于屏幕下方。
3.2Qsys系统搭建
基于Altera公司SoC FPGA的嵌入式系统硬件设计,首先需根据工程需求设计好整个系统的硬件框架。接着使用Qaurtus II中Tools的SoC设计工具Qsys来搭建整个硬件系统。在Qsys中,硬件设计分为硬核处理器(HPS)和FPGA两部分的外设。其中HPS中的外设可根据DE1-SoC开发板的硬件设定,并且系统自动布局布线。而FPGA外设需根据硬件设计的特殊需要添加相应的IP核,并且要手动的布局布线来连接各个IP核,最后通过编译,产生XX.sof与XX.pof编程文件供硬件与软件开发使用。
为了实现FPGA与HPS之间的存储器共享和数据传输,Altera SoC FPGA提供了两种方法用于FPGA 和HPS通信。他们是FPGA-to-SDRAM和AXI bridge接口。FPGA-to-SDRAM接口是HPS内部的SDRAM控制器提供给FPGA访问HPS内存的接口。AXI bridge是FPGA和HPS总线之间数据交互的接口,包括FPGA-to-HPS AXI,HPS-to-FPGA AXI,Light­weight HPS-to-FPGA AXI O本实验采用HPS-to-FPGA AXI桥传输视频流数据,采用Light-weight HPS-to-FP- GA AXI桥控制FPGA的外设。本设计的硬件包括ARM硬核处理器.SDRAM存储器、JTAG调试端口、AUDIO,叭按钮、中断捕获、背景生成器、LOGO生成器、锁相环、帧缓存器,帧读取器(两个)、混合器、VGA 接口、Avalon-ST总线等。通过AXI总线连接各个IP 核,包括时钟、复位、CPU数据总线、指令总线与模块间的连接。Qsys系统总体硬件配置如图2所示。
4HPS软件系统设计
在开发流程中,用户需要将Linux镜像文件下载到SD卡中,并在串口调试助手PuTTY中完成目标板和PC的连接验证以及登陆。本设计中的ARM是在Linux的基础上完成对视频的MPEG2
解码和对音频
《电气卄矣》(2019.No.3)29的MAD解码。
fieicriptian“part Cicek Base End IK
田0Cleck S・urc・
田■A r mi SDMM C«nU.n(r pll airu satBlkl ft0»0000_00000x03ff_ffff
S、*・00.00000000Oxffff ffff
田・・・・saxc JTAC to Avalon lutar Brid<(
田FI0(TaraUd I/O)ft0x00010040)10001004f
田di*n_jia PIO1/0)ft0x0001_00800x0001_008f H
□PIO(TarOlal1/0)ft0x0001OOcO010001OOcf K
田UAKT a0x000200000x00020007H
田*11Altars PUL
田amo it o AUDIO n pU・・di・•atclkO ft0x0000_02000x0000021f
田・・i2c・・・Qer0•c i2c«a*t«r ft0«00000220010000023f
田Tait Fatttra G*n«ratsr*11Btraaa awtslkl
田LOG Cnarata01«C gMwrator*11atreaa avtslkl
田alt vi>v£r0Fraa・laadar■i OsOOOO01000x0000017f
田tcr_0ikralan-ST TiaiBg Adaftar pll・tr•■一
田0Alpha Bluidins lisar■U alraaa avtalU*OxOOOO00003x000000£f
S«lt it«0Cl・4d Tiiao Ontfst*11・traaa
田jOl-atraaa Alt>r・PLL
田“・・k wiac«5Cltck IriS*11・“・■rataUO
田>U_a4rBB Altera HX
图2Qsys系统总体硬件配置
软件部分主要完成以下两个主要功能,一是对音视频数据的解码,二是控制Frame Reader和mixer两个IP 核的工作。由于本系统软件开发采用的是在Linux操作系统上编写嵌入式应用软件。而Embedded Linux 支持文件系统,程序可以直接通过读取文件获得数据,这使得编程变得更加简单。
视频解码功能核心伪代码为:
mpg_decode();
mpeg2_close ();
核心函数是mpg_decode()程序不仅实现了视频解码,而且还把生成的数据转成原始RGB格式以此来匹配VGA接口的输出。
音频解码功能核心伪代码为:
mad_decoder_init();
mad_decoder_run();
mad_decoder_finish();
程序初始化音频解码器后,就运行函数mad_de-coder_run(),把解码后的PWM格式的数据直接发送给AUDIOJF IP,用户直接插上耳机就可以接听播放的音频。
程序通过配置寄存器的值来实现Frame Reader按帧来抓取SDRAM中的图像。该寄存器设置一帧结束后自动读取下一帧,循环读取SDRAM中的图像。
Mixer寄存器设置核心代码:
void VIP_MIX_Config(void){
h2p_vip_mix_addr10=0x00;
//layer1(mpeg)
h2p_vip_mix_addr2=0;
h2p_vip_mix_addr L3=0;
h2p_vip_mix_addr'4=0x01;
//layer2(log)
h2p_vip_mix_addr®=448;
h2p_vip_mix_addr[ 6-=963;
h2p_vip_mix_addr17=0x01;
h2p_vip_mix_addr'0=0x01;|
程序通过配置寄存器的值来实现Mixer分层显示。寄存器0位位开始结束控制位、寄存器2、3、4位为第一层,寄存器5、6、7位为第二层。全黑背景第零层,铺满整个屏幕无需设置,第一层为MPEG视频,第二层为ALTER LOGE样式。
整个工程所包含的文件如图3所示。
Prefect Explorer孕StreamEne PataY
__________________________________________________I
A del_soc_«udio_video
Includes
為Debug
[xl aud i o_controlx:
国hps_O.h
⑥hps.h
[ci lib_b<tmapx:
回ma«n.c
lx)mp3fx:
⑥mpegx:
国mpeg.h
[cl parse_seLc
[ft terasic_osjncludes.h
⑥wavfc
5¾bwld_script.sh
carshow.m2v
Si del_soc_audio_yideo
1¾generate_hps_q s ys_header^h
Makefile
舷pockerface.mp3
1¾¾TheDawn.mp3
1¾¾vl_64Ox48O.m2v
图3工程中所包含的文件
音视频播放系统的应用程序用于控制音频播放、图像获取、图像传输和图像显示。程序主要通过DE1板子的两个外设按键KEY1和KEY2来控制系统工作。当CPU软件检测到启动视频播放的按键KEY1按下后,软件开始从SDRAM中读取视频数据,并将视频数据传输到LCD显示器中。当CPU软件检测到切换视频KEY2后,通过HPS读取另一个视频文件。程序流程图如图3所示。
30
《电 *14 ^>(2019. No. 3)
(开始)
沪 COM3 - PuTTY
韦东山嵌入式linux视频| [P 核初始化
I 视频1显示| H  视频2显示|
图4程序流程图
5系统测试与分析
在完成系统的软硬件设计后,需要对系统的功能
加以测试。主要分为以下几步:
(1) 使用Altera 公司提供的EDS 软件中的Altera  Embedded  Command  Shell 编译应用程序生成可执行文 件,并且通过网络传输(ssh)的方法将可执行文件和视 频文件拷贝到装有Linux 系统的SD 卡。
(2) 利用Quartus  II  13. 1打开硬件工程,并且通 过USB-Blaster 下载线把编译好的整个硬件工程即.sof
  文件烧写到DE1板子的FPGA 芯片中。
(3) 通过控制开发板的按钮,完成视频播放和切 换。程序运行在LCD 显示器效果如图5、图6所示。
图5测试结果
效果与预期的一样,通过耳机可以接收DE1板子
的音频接口收听音乐,LCD 显示器分为三成输出,底
层为全黑背景,第二层是调用ALTER  LOGE 的一个IP  核显示在底部,第三层为一个640x480的视频显示。
从图7传输速率可以知道,HPS 向FPGA 传输的速 率大约是38M/S,MPEG2的解码速率大约是18帧每秒。
图7传输速率
6结语
本文采用Altera 公司的SoC  FPGA 芯片,通过
Qsys 硬件设计、FPGA 逻辑设计、以及基于Linux 操作 系统的嵌入式应用软件设计,采用软硬结合,实现了基
于SoC  FPGA 的音视频播放系统,而且音视频传输稳
定。该设计采用单片SoC  FPGA 芯片实现了系统整体 功能,与传统采用1片ARM 芯片和一片FPGA 芯片进 行嵌入式系统设计相比,该设计方法集成度更高、系统
成本更低、电路板面积更小、可靠性更强而且还降低了 软硬件设计难度、节约了开发成本,具有非常重要的参 考价值。
参考文献
[1]
罗朝霞,高书莉.CPLD/FPGA 设计及应用[M].人民邮电出版社,
2007.
[2] 任哲.ARM 体系结构及其嵌入式处理器[J].北京 航 空,2008.[3]
聂永军,徐光辉,郑国建.基于Altera  SoC  FPGA 的图像釆集系统
设计[J].单片机与嵌入式系统应用,2016(4) :56 -59.[4]
陈新泽,杨斌.ARM  Cortex  - A9的NEON 技术研究及应用[J].单
片机与嵌入式系统应用,2013,13(10) :46-49.
[5] 季茂胜,左国辉,张丽娜•基于SoC  FPGA 的千兆以太网接入设计
[J].计算机与网络,2017,43(2) :94 -96.[6]
杨定定,施慧彬.基于AXI 总线的MicroBlaze 双核SoPC 系统设计
[J].电子产品世界,2012,19(1):76 -77.
收稿日期:2018 -07 -16
作者简介潢燕华(1992 -),男,福建省泉州市人,硕士研究生,主要研究方向:嵌
入式与FPGA;
杨秀芝(1963 -),女,山西省灵石县人,教授,主要研究方向:嵌入式与 FPGA O
图6
切换效果

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。