当前位置:首页 >> 信息与通信 >>

基于NiosⅡ软核处理器的嵌入式PMP系统设计


中文摘要
摘要:随着人类社会迈入数字化时代,以音频和视频为主的多媒体技术正发生着 日新月异的变化,人们不再满足于只是听觉上的享受而日益要求在一个移动平台 上欣赏照片、电影、电视节目等数字内容,这股趋势将要求我们突破MP3播放器 的音频领域将研究范围扩展到视频领域,这就使得便携式多媒体播放器(PMP) 成为消费类电子产品的新热点。与此同时,半导体工业自身也站在一个新时代的

门槛上,工艺线宽正在按照既定的速度向90hm以下挺进,微电子技术的迅猛发展 和集成规模的不断扩大,使得芯片的复杂性不断的上升,而单片成本不断降低。 FPGA产品朝逻辑单元越来越多,性能越来越高,单位成本和功耗却越来越低的方 向发展,使得sOPc设计成为必然趋势。 本论文就是从多媒体和SOPC技术的交叉点出发,提出了运用SoPC技术在
Altera的CyclonIIEP2C35FPGA上构建PMP系统的设计方案。本设计运用口复用、 软硬件协同、硬件加速等方法,结合实验平台资源特点.构建了基于NiosII软核

处理器的PMP系统。实现了PMP系统的图片浏览功能、MPEGl layer3音频解码
流畅播放、MPEG4 Simple Profile的QCIF视频解码播放功能和电子书阅读功能, 对SOPC技术在PMP领域的应用迈出了探索性的一步。该系统具有体积小,设计 灵活,开发周期短等优点。

关键词:FPGA;SOPC;NiosII;PMP;便携式多媒体播放器;MP3:ⅫPEG4

sP

ABSTRACT:.As human society entered the digital era,the audio and video-based

multimedia technology is experiencing rapid chants.People

no

longer

satisfied

with

just

the

enjoyment of

hearing,they want to view d J陋g tal content like photos,movies and
US

TV in



mobile platform.This trend will require

to

expand

our

study fields from

audio to At the


video.and

then make PMP becomes the new hot consumer electronic product. itself has been standing at the threshold of 90rim.The rapid development of

same time,the semiconductor industry
to technology and
ever

new era,the linewidth develops

less than

microelectronic

the

high

integration

Ic,makes

the chip

inore

complexity with lower

cost

than befor.While

FPGA iS

heing

developed in the

direction which contents more
cost

and

more logic elements,with hiigh

performance,low

and

low power.So,SOPC technology becomes

an

inevitable

trend.


From the intersection of

multimedia

and SOPC technology,we proposed


design

plan of PMP embedded system based SOPC werc

on

Altera’S cyclon II

EP2C'35 FPGA using

technology.IP

Reuse,hardware/software CO—design and hardware acceleration
on

used

to designe the PMP system based

Nios II

core

processor,Finally,we

achieved

photo viewing,MP3 playing,MPEG4 simple profile decoding&playing
SUCCESS

and
for

electronic book r∞ding functions.So,the applying SOPC

of this design is very

meaningful

technology

in the field of

PMP.The

system has many advantages such
SO OD.

as"small,design flexibility,short development cyde and

KEYWORDS:FPGA;SOPC;Nios II;PMP;Portable Media Hayer;MP3;MPEG4

SP

学位论文版权使用授权书
本学位论文作者完全了解北京交通大学有关保留、使用学位论文的规定。特 授权北京交通大学可以将学位论文的全部或部分内容编入有关数据库进行检索, 并采用影印、缩印或扫描等复制手段保存、汇编以供查阅和借阅。同意学校向国 家有关部门或机构送交论文的复印件和磁盘。 (保密的学位论文在解密后适用本授权说明)

学位论文作者签名:‘誓珏色
签字日期:)?07年肛月,ep日

导师签名;

仫略

弹醐:岬纠蝴彤日 ||

独创性声明
本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得的研 究成果,除了文中特别加以标注和致谢之处外,论文中不包含其他人已经发表或 撰写过的研究成果,也不包含为获得北京交通大学或其他教育机构的学位或证书
而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作 了明确的说明并表示了谢意。

学位论文作者签名:嗜啦l

签字日期:z唧

年阻月斗R

1引言 1.1研究背景
1.1.1便携式多媒体播放器(PMP)
便携式多媒体播放器(PMP:Portable
Media

Player)由于其眩fl的娱乐功能,是

继MP3播放器之后的又一个热点。从来还没有一种产品像PMP这样,在市场刚

萌芽时就已经成为各大半导体供应商火拼的战场。 近年来,随着人们的娱乐需求逐步提高以及多种技术的不断融合,人们不仅
仅只满足于听觉上的享受,而日益要求在一个移动平台上欣赏照片、电影、电视

节目等数字内容,这股趋势要求我们超越音频的范围,不断推出更新的产品。因 此,MP3播放机的一种必然的延伸——便携式多媒体播放器(PMP)成为消费类产
品的一个新热点。

从目前面市上的PMP播放器来看,它所有的规格需求几乎都高于一般MP3 随身听并且属于高价位消费电子,加上与视讯相关的编解码技术、防拷贝技术、
作业系统、授权等相关技术具有一定门槛,因此,现阶段PMP市场仍旧不会出现

高出货率。但是,近期数据表明:完整的PMP解决方案的价格已呈明显的下降趋 势。此外,占据PMP成本很大份额的闪存卡和硬盘在相互竞争下,价格也在迅速
下降,因此,随着PMP的价位开始走近普通消费者,价格障碍正在消失,PMP正

在走出功能单一的桎梏,这一市场的爆发性增长就在眼前。 PMP作为MP3播放器的超集合,它既可以播放音频文件也可以播放视频文件, 还可以扩展诸如视频录制、摄像/拍照、数码相册、收音机、电子书、游戏、上网 等丰富的功能,成为一种个人信息和娱乐的便携式设备。因此,PMP市场不论在 中国还是在全球市场都正处于爆炸性增长的边缘。
PMP的主要功能:

1)图片测览:图片、相片等静态图像浏览,可以充当随身携带的数码相册来观赏、
浏览。

2)音乐:可播放存储的多种音频文件。 3)视频:播放并观赏存储的视频短片、电影等。 4)电子书阅读:文本文档显示,可以方便地阅读文档格式的电子书。 5)电视:若PMP提供Video--In的视讯输入界面,则可以成为个人在飞机、客

运、房车等交通工具上的自用显示器,甚至用在上网、电玩等互动性更高的娱
乐.

目前,推出PMP处理器和解决方案的半导体供应商多达十几家,在众多PMP 解决方案中使用嵌入式处理器ARM7或者ARM9比较多,但是一直以来,设计电 子类产品的工程师面I临的压力在于:他们必须尽可能减小系统体积和芯片数量, 这对系统可靠性和成本的贡献是显而易见的g同时,系统的灵活性对于产品快速 上市又是十分重要的,因为在最初设计阶段,一些问题是无法预见的,比如说某 种器件突然缺货或是价格升高到无法接受的程度或者产品的功能为了适应市场的 变化必须改变等等,可编程片上系统(SOPC)技术的就可以解决这些问题。

随着微电子设计技术与工艺的发展,数字集成电路从电子管、晶体管、中小 规模集成电路、超大规模集成电路逐步发展到今天的专用集成电路(ASIC)。ASIC 的出现降低了生产成本,提高了系统的可靠性,缩小了设计的物理尺寸。但是, ASIC因其设计周期长,改版投资大,灵活性差等缺陷制约着它的应用范围。硬件 工程师希望有一种更灵活的设计方法,根据需要,在实验室就能设计、更改大规 模数字逻辑,研制自己的ASIC并马上投入使用,这就是提出了可编程逻辑器件的
思想。

可编程逻辑器件最初的目的是为了用较少的PLD品种替代种类繁多的各式中 小规模逻辑电路。随着微电子制造工艺的发展,PLD的结构、工艺、功耗、逻辑 规模和工作速度等都得到了重大的进步。可编程逻辑器件从早期的只能存储少量 数据,完成简单逻辑功能的可编程只读存储器(PROM),已经发展到今天的可以 完成超大规模的组合逻辑与时序逻辑的复杂可编程逻辑器件(CPLD)和现场可编
程逻辑器件(FPGA,Field ProgrammableArray)。 1985年第一片现场可编程逻辑器件问世。在这二十几年的发展过程中,以

FPGA为代表的数字系统现场集成技术取得了惊人的发展:现场可编程逻辑器件从 最初的1200门,发展到现在的几百万门,器件的集成度提高到一个新的水平。尤 其是最近几年,FPGA的主要厂商Altera、Xilinx等不断更新优化产品架构和生产 工艺,不断降低FPGA的功耗和系统成本,推出了很多高性能低价位的解决方案,
将市场从传统的高端通信扩展到汽车和消费类电子产品。

近几年,FPGA市场的飞速增长,一代代新工艺新产品的不断推出。FPGA产 品的逻辑单元越来越多,性能越来越高,而单位成本和功耗却越来越低,这是因 为FPGA厂商不断优化产品结构和采用更先进的生产工艺。现在FPGA厂商相继


采用90nm的制造工艺生产新一代的FPGA产品。先进的90nm制造工艺在物理上 达到了一个新的极限,这对于FPGA厂商来说是一个新的挑战。但是,克服了这
一极限的挑战后,产品成熟量产,将大大降低FPGA的功耗和成本。Altera的Cyclone

Ⅱ器件就是采用90rim成熟的生产工艺,容量从4608至68416个逻辑单元(u巳), 能够在0.35美元的逻辑上实现超过100MIPS的性能。Altera已经开始向65rim进
军。Xilinx的Spantan.3系列也是采用90rim生产,5万门的价格仅为3.5美元,100

万门的价格不到20美元,而400万门的价格低于100美元,兼具高性能、成品可
用性以及低成本特点。

随着ASIC的掩膜成本不断增加,具有极大灵活性和可编程性的FPGA器件,
如果真正突破了成本、功耗等方面的瓶颈,可迅速将市场从传统的高端通信领域

扩展到消费类电子市场。FPGA极有可能对ASIC市场造成威胁。实际上,FPGA 在除了通信之外的很多领域都有很好的市场前景,比如高端PC工作站、高端打印
机、医疗设备、高档照相机、家庭和办公设备、汽车、数字电视及平板显示器等。 高清LCD、DLP、PDP等平板显示产品以及电子消费类新热点PMP都将是FPGA

产品一个新的市场热点,尤其是中国数字电视产业的起飞将给FPGA带来一个巨
大的市场空间。

从本质上来讲,FPGA更像一个应用平台,客户可根据自己的需要在平台上做 自己的设计和产品定义。随着各种不同的新应用层出不穷,复杂性越来越大,客 户对速度、功能、效率的要求越来越高,因此FPGA也将集成越来越多的 IP(Intelligent Property)模块和功能,比如高速I/0口、收发器、更大的存储器以及 DSP模块。BDTl(Berkeley
Design

Technology,著名的DSP评估公司1对集成了DSP

模块的FPGA与传统DSP在性能上做了比较和评估。这个报告指出,同样的价格 下,Altera的Stratix系列能够处理的接收器通道比高端的DSP处理器高几十倍以 上,Stratix具有很高的存储器密度和带宽,这是DSP应用中非常重要的特性,意

味着很高的片上数据带宽。看来集成了模块的FPGA在某些方面确实拥有比DSP
更好的性能。

“量产”是分隔FPGA和AsIC市场的关键词语之一。ASIC结构完全固化,成 本低,是适合大规模量产的芯片结构;而FPGA可编程,灵活性高,一直以来都
是用作建模的平台,设计经过验证后基本都要移植到ASIC进行量产。这两个处在 对立面的产品,现在看来似乎有相互融合的趋势。

FPGA厂商推出了解决FPGA在成本和量产方面的解决方案,以逾越这条横亘 在FPGA面前的鸿沟。结构化ASIC是方案之一。Altera的Hardcopy方案是一套 典型的结构化ASIC方案。最近推出的I-Iardcopy II方案通过改变映射方法,只保 留了FPGA原型内有用的逻辑单元,从而大大减小芯片尺寸、功耗和成本。用户



无需额外的设计就能快速移植到ASIC量产。结构化ASIC给市场带来了新的增长。 作为一个基于高端技术的行业,FPGA的发展前景显然是非常广阔的,业内的 专家们不拘泥于固有的平台。新的设计思路和方法不断涌现,新的应用市场不断 拓展,而挑战则意味着更大的机遇,这绝对是一个非常值得关注和期待的行业。 FPGA、DSP和MCU被称为未来数字电路发展的三块基石,也是目前硬件设 计研究的热点。与传统电路设计方法相比,FPGA具有功能强大,开发过程投资小, 周期短,可反复编程修改,保密性能好,开发工具智能化等特点,特别是随着电 子工艺的不断改进,低成本FPGA器件推陈出新。这一切都促使FPGA成为当今 硬件设计的首选方式之一.

1.1.3可编程片上系统(SOPC)技术
白20世纪下半叶以来,微电子技术得到了迅速发展,集成电路设计和工艺技 术有了很大的提高,单片集成度中每片已能包含上亿个晶体管,从而使得将原先 由许多lC组成的电子系统集成在一个单片硅片上成为可能,构成所谓的片上系统
(System On

Chip,SOC),或系统芯片。系统芯片不再是一种功能单一的单元电路,

而是将信号采集、处理和输入输出等完整的系统功能集成在一起,成为一个专用 功能的电子系统芯片,而其设计思想也有别于普通I(2。SOC把系统的处理机制、 模型算法、芯片结构、各层次电路及器件的设计紧密结合,在一片或数片单片上 完成整个系统复杂的功能。 SOC的出现,是电子系统设计的一场革命,它对电子信息产业的影响将不亚
于集成电路的诞生所产生的影响。因此,当今电子系统的设计已不再是利用各种

通用lC进行PCB板级的设计和调试,而是转向以大规模FPGA或ASIC位物理载
体的系统芯片设计,前者称为SOPC(System

On

Programmable Chip)即可编程的

片上系统,后者为SOC。Altera和Xilinx公司将自己生产的可配置PLD与可配置 处理器内核结合在一起,推出了SOPC解决方案。这就意味着SOPC既是片上系 统SOC,它又是可编程系统,具有灵活的设计方式,可裁减、可扩充、可升级,
并具备软硬件在系统可编程的功能。另一方面,由于集成电路工艺的成熟和EDA 工具的迅速发展,使得电子系统的设计者并不需要过多地关注半导体集成工艺,

完全可以利用现有的成熟工艺,在EDA工具的帮助下完成整个系统从行为算法级 (系统级)到物理结构级的全部设计,并最终在H'GA上实现。
片内使用口构建是SOC和SOPC的一个重要特性。口是指可用来生成

Amc(Application

Specific Integrated

Circuit)和PLD(Programmable

Logic

Device)的

逻辑功能块,又称为lP核(口Core)及虚拟器件(、_C)。根据IP核描述的所在集成电


路的设计层次,或者说根据核优化的程度,口可分为硬口、软口和固核口。硬IP 所有的验证和仿真工作都已完成,用它可以直接产生硅片,系统设计者不能再对
它进行修改。而软口是以行为级或RTL级的Verilog或VH DL代码的形式存在,

它要经过逻辑综合及版图综合才能最终实现在硅片上。固核口是指在结构和拓扑 方面针对性能和面积通过版图规划,它们以综合好的代码或通用库元件的网表形
式存在,介于软核和硬核之间。当要推出新产品时,SOPC开发人员可以将原来的

口转移到新的系统上,或者只需要更改小部分的电路,就可以符合产品所需要的 功能要求。这就是口的重要利用。同时,通过把更多的特性和性能添加到更小的
lP中,可以做到最有效的利用口,将缩短产品的开发周期,降低开发复杂度。

SOPC的技术是现代化计算机辅助设计技术、EDA技术和大规模集成电路技 术高度发展的产物。SOPC技术的目标是试图将尽可能大而完整的电子系统,包括 嵌入式处理器系统、接口系统、硬件协处理器或如速器系统、存储电路、DSP系 统、数字通信系统、以及普通数字系统等,在单一FPGA中实现,使得所设计的 电路系统在其规模、可靠性、体积、功耗、功能、性能指标、上市周期、开发成 本、产品维护及其硬件升级等多方面实现最优化。
SOPC技术使开发者更能动地在软硬件系统综合与构建两个方面有了充分发

挥之间创造性和想象力的巨大空间,从而使得多角度、多因素和多结构层面上大 幅度优化自己的设计成为可能。事实上,诸如单片机、DSP或ARM系统等基于传 统开发技术的设计流程而言,一旦方案确定,硬件系统的核心器件是现成的,功 能是确定的,结构是固定的,指令系统是不可更改的,从而导致硬件组织方案和 连接方案是限定的,系统的性能和指标已无从改变,用户只能被动地遵循和适应,
而所需要做的只有软件设计。显然,硬件的可设计性和用户目标的适应性在系统 性能指标上占更大的份额,而SOPC技术的优势正在于使设计者本身而非器件设 计商区更有效地占据这一份额。 SOPC是基于FP(A解决方案的SOC,与ASIC的SOC解决方案相比,SOPC

系统及其开发技术具有更多的特色,构成SOPC的方案也有多种: 1)基于FPGA嵌入IP硬核的SOPC系统。在FPGA中预先植入嵌入式系统
处理器:

2)基于FPGA嵌入口软核的SOPC系统。目前最具代表性的软核嵌入式系
统处理器分别是Altera的Nios II核以及Xilinx的MicroBlazc核,本设计

主要采用FPGA嵌入lP软核的SOPC技术,设计基于Altera的NiceII核
的嵌入式PMP系统;

3)基于HardCopy技术的SOPC系统。HardCopy技术是一种全新的SOC级 ASIC设计解决方案,即将专用的硅片设计和FPGA至HardCopy自动迁

移过程结合在一起的技术。

现代大容量、高速度的FPGA以及相应的SOPC技术的出现,克服了DSP设 计方案上的不足。在过去的很长一段时间,DSP处理器几乎是DSP应用系统核心 器件的唯一选择。尽管DSP处理器具有通过软件设计能适用于不同功能实现灵活 性,但面对当今迅速变化的DSP应用市场,早已经力不从心了。在大容量的高速 FPGA中一般都有可配置的高速RAM、Pu。LVDS接口以及硬件乘法累加器等 DSP模块。用FPGA来实现数字信号处理可以很好地解决并行性和顺序性的矛盾, 直至速度问题,而且其灵活的可配置特性,使得FPGA构成的DSP系统非常易于 修改、测试和硬件升级。
由上述介绍,我们可以得出结论:SOC和SOPC的设计都是以口为基础的,

以硬件描述语言为主要设计手段,借助于以计算机为平台的EDA I具进行的。 SOPC技术主要是指面向单片系统级专用集成电路设计的计算机技术,它具备以下
特点:

1)设计全程,包括电路系统描述、硬件设计、仿真测试、综合、调试、系统 软件设计,直至整个系统的完成,都由计算机进行; 劫设计技术直接面向用户; 31系统级专业集成电路的实现有了更多的途径,即除了传统的ASIC器件外, 还能通过大规模FPGA等可编程器件来实现。

1.1.4嵌入式系统
嵌入式系统指的是以应用为中心,以计算机技术为基础,软件硬件可裁减, 适应应用系统对功能、可靠性、成本、体积及功耗严格要求的专用计算机系统。 具有软件代码小、高度自动化、响应速度快等特点。根据IEEE(国际电机工程师 协会)的定义,嵌入式系统是“控制、监视或者辅助各类生产装备、机器和设备运行
的装置”(原文为:devices
equipment,machinery
or

used

to

control,monitor,or assist the operation of

plants)。这主要是从应用上加以定义的,从中可以看出嵌

入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。 从本世纪70年代初第一个微处理器出现至今,嵌入式系统已经有25年的历 史。随着计算机技术的发展,嵌入式系统的应用领域不断扩大,大至航天飞机自 动导航系统,小至移动电话、智能家用电器。嵌入式系统是一种典型的软硬件混
合系统,目前的产品一般包括嵌入式微处理器和相应的控制软件。早期的微处理

器都是4位和8位的,随着制造技术的不断发展,集成的8位微控制器开始出现, 并且16位微处理器也开始用于更复杂的嵌入式系统中,32位结构的设备和高度集


成的微控制器逐渐占领了高端应用的市场。尽管如此,功能更强大的微处理器并
没有取代早期的微处理器,而只是给嵌入式系统设计人员提供更大的选择范围,

使其可以根据功能、特点、可用性和价格,选择合适的微处理器产品。 早期由于系统功能单一,嵌入的软件部分都是由厂家自己单独设计的代码组 成,所以非常简单。但随着应用的扩大,系统越来越复杂,尤其是对于高档嵌入 式微处理器系统,多任务模型被广泛应用于软件开发,并且许多厂家还选择了第 三方的商用嵌入式实时操作系统产品(IHDs)。嵌入式系统中的硬件资源环境一般 比较苛刻,内存一般都不大,外存也很有限,要在如此紧张的资源下完成复杂的 功能,这就要求嵌入式系统的软件部分必须尽量的小巧、稳定和高效。 用于嵌入式系统的操作系统在20世纪70年代后期开始出现,其中许多是用
汇编语言写成的,并且仅能用于为其编写的微处理器上。当这种微处理器过时的

时候,它们所使用的操作系统同时面临了一个问题:必须在新豹处理器上重新编
写一遍才能运行。当C语言出现后,操作系统采用一种高效的、稳定的和可移植 的方式来编写。这种方式对使用和经营软件的个人或企业有直接的吸引力,因为 当处理器更新时,它能保护个人或企业的软件投资。 嵌入式系统的发展主要体现在芯片技术的进步上,以及在芯片技术限制下的 算法与软件的进步上。今天正在开发的嵌入式系统,到底哪些明天定会取得应用

上的成功,这是很难预料的。因为这不仅要取决子技术的因素,还要取决于社会 的因素。虽然预测未来是困难的,但不管怎样,展望未来,明天的嵌入式系统将 会比今天的更廉价、更小巧、更可靠、更高效而且更智能化,因为这毕竟是它赖 以发展并为人类所最能接受的简单而基本的条件。

1.1.5

MPEG数字音频技术的发展

声音和图像编码技术一直就是多媒体、信息处理的核心技术。近些年来,随 着计算机和数字设备在多媒体领域得到了广泛的应用,音频和视频等多媒体数据 流也通过各种各样的途径得以广泛传播。在通信、广播、多媒体系统中,为了不 失真能复制原始音质,数字化存储得到了普遍应用。这首先要归功于Philips在1982 年所推荐的CD格式。相对于模拟格式,数字格式有众多的优点,如:更好的音质、 处理能力,以及更少的带宽消耗。事实上,是计算机和数字化网络无法利用模拟
格式使得数字化音频成为必需。

最常用的保存数字音频的格式为脉冲调制编码技术(PCM)。PCM实际就是以 一定速率对声音进行采样并以一定的比特位数来表示信号的幅值。PCM最早是在 1937年由A.H.Reeves发明的。PCM格式可以使用不同的采样率和比特位数,16



位44.1kHz是目前高保真音频所最为常用的格式。但是,存储一首16位比特数 44.1kHz采样率时长为4分钟(240秒1的立体声PCM格式歌曲需要240X44100X 16X2的比特数,也就是超过40Mb的存储空问。因而,如何以低比特率传送音频 信号以及如何以更低的容量将音频信号存储在硬件设备上是一个非常重要的问 题. 由于数字存储媒体、电视传播及通信等应用中对运动图像编码方法需求的日

益增长,删、ISO等国际组织都成立了专门的机构,致力于制订运动图像压缩编
码的国际标准。1988年,国际标准化组织成立了一个致力于制订有关运动图像压 缩编码的组织——MPEG(Moving
Pictures Experts

Group)。到目前为止,已经开

发和正在开发的运动图像压缩标准有:H.261,H.263,MPEG.1,MPEG.2,MPEG-4, MPEG-7,H.264等。下面对主要运动图像压缩编码标准做简要介绍。 1993年MPEG正式通过了MPEG.1音频标准草案。该音频标准包括了三种操 作模式,分别为Layer-1、Layer-2、Layer-3,其复杂度和性能是依次提升的,MPEG.1 Layer-3(通常称为MP3)最为复杂,是建立在现代感知音频编码的技术上的,充分 考虑到人耳的特性,因而能够从一个原始CD音频中压缩12倍的音频数据而不损 失丝毫声音品质,甚至一个24倍的压缩因子所得到的音质比降低一半采样率的做 法所获得的音质还要好的多。由于其高质量、低比特率工作特性,MP3在Internet、
数字音频广播等领域中得到了广泛的应用。

MPEG.2是MPEG第二阶段的工作,引入了很多新的概念到MPEG视频编码 中,包括对交织视频信号的支持。MPEG.2的主要应用领域就是数字电视。最初的 MPEG-2音频标准0s 13818.3)是在1994年确定下来的,它包括了对MPEG.1音频 的两方面的延续:一方面,为低比特率应用提供了低采样率,增加了16kHz、 22.5Hz、24kHz三种采样率的支持,输出比特率为32到256kbps(齐J"Layer
11 8到

160kbps(对Layer2、3);另一方面,为环绕声的应用发展了逆向兼容的多声道扩展, 分别为左右声道,中央声道,左右环绕声道和一个附加的低频增强声道(Low
Frequency

Enhancement,LFE),比特率上限是1Mbps。1994年,一种和MPEG.1

不逆向兼容的算法得到验证,它表现出明显的编码效率的提升。最终,一项新条 款定义了一种新的MPEG音频标准,MPEG.2 Advanced
1997年标准化为IS 13818.7。
Audio

Coding(AAC),在

MPEG.3是MPEG有为高清晰度数字电视(I{DTV)制定了一个视频编码的方 案。然而在随后的阶段中发现MPEG.2视频编码标准发展的工具能满足HDTV的
需求,因而MPEG放弃了为MPEG-3单独制定标准的计划。有时候MPEG-1 3会被误解为MPEG-3。
Layer

MPEG-4项目是MPEG于1991年5月提出的,设系统、音频、视频、需求、



实现研究、测试及自然合成混合编码(SNHc)子组,1998年11月成为国际标准。
MPEG-4旨在将众多的多媒体应用集于一个完整的框架内,为不同性质的视频、音

频数据制定通用的编码方案,提出基于内容(Content-Based)的视频对象(Video Object)的编码标准。它不仅针对一定比特率下(4800-64006ps)的视频、音频编码,
更加注重于多媒体系统的交互性和灵活性。MPEG-4音频对象编码为表达自然声音

和基于机构化描述的合成声音都提供工具。合成声音的表达可从文本数据或所谓 的结构描述,以编码参数提供反射、空间定向等效果的方式实现,该方式提供压 缩和其他例如可伸缩性和效果处理等其他功能。MPEG-4引入T对象基表达 (object-based representation)的概念,用来表达视听对象(audio/visual objects.AVO); MPEG-4扩充了编码的数据类型,由自然数据对象扩展到计算机生成的合成数据对 象,采用合成对象/自然对象混合编码(synthetic/Natural
Hybrid

Coding,SNHC)算

法;基于内容的压缩编码是MPEG-4研究的热点。MPEG-4的编码系统是开放的,
为各种多媒体应用提供一个灵活的框架和一套开放的编码工具,不同的应用可选 取不同的算法。覆盖6kbit/s到24kbit/s速率的MPEG-4语音编码工具已和NADIB

合作通过AM数字语音广播应用检验性测试。MPEG还进行了附加检验测试,把 话音和普通语音编码的工具与现存标准进行比较,就其应用前景而言,MPEG-4
未来将在多个应用领域大显身手,如Intranet上的多媒体流服务、视频点播、可视

游戏、低比特率的移动多媒体通信(视频手机等)、交互式多媒体应用、实时多媒 体监控、数字电视与演播电视、虚拟会议等等。
MPEG一7是为了满足特定要求的用于表示视听信息的标准。MPEG.7构建于其

他标准之上,这些标准包括模拟的PCM抽样的MPEG.1、MPEG.2和MPEG-4。
MPEG一1和MPEG一2几乎完全用于数据压缩。MPEG.3则是面向HDTV的,后来 因为这些工作可以用MPEG.2标准的工具来完成所以这一标准被弃用。MPEG-4

在译码目标上达到了较高的抽象层次并使用了特定内容技术满足译码满意度。 MPEG一7则达到了更高的抽象层次,在一定层次上可以说是一种有感知的译码。从
原理上说,MPEG一1、MPEG.2和MPEG-4用于表示信息本身,而MPEG-7则是一

种表示信息的信息(the

bits for

bits)的方法。从另一个角度来看MPEG.1、MPEG.2

和MPEG一4使信息内容变得可用,而MPEG.7可以使您找到想要的信息内容。 MPEG一7能独立于其他MPEG标准来使用,甚至可以用来描述模拟电影。另外, MPEG.7标准可以用于提高先前MPEG系列标准的功能。在MPEG.4和MPEG.7 之间可能存在着许多联系。绝大多数像MPEG-4这样的细节描述工具有着很大的 潜力,因为它们通过选择一种针对原始材料的一些重要特征进行编码的方法定义 了一种内容描述模型。MPEG.7要能在许多不同环境下支持不同的应用,就意味着 必须提供~种灵活的可扩展的视昕数据描述框架。因此,MPEG.7将不会为内容描



述定义一种单电路系统,而是提供一组方法和工具用于多媒体描述的不同层次。

1.2

课题研究的主要内容
便携式多媒体播放器(PMP)在消费类电子产品中具有巨大应用潜力和市场

前景,本课题用正处于飞速发展的SOPC技术实现便携式多媒体播放器(PMP) 的相片浏览功能、音频播放功能、视频播放功能、电子书阅读功能.
本文的结构安排如下:

论文共5个章节,第一章为引言部分; 第二章介绍了SOPC技术的基本原理,包括NiosII软核处理器、知识产权核 (口Core)复用、外围设备、Avalong交换架构、定制指令等,以流程图的方式介
绍了Nios II系统的开发流程。 第三章首先介绍了实验平台、软件平台和Altera Cyclon II EP2C35FPGA,然后

详细介绍了PMP系统的构建过程,并分模块详细描述了各个功能模块的组成和实
现过程。

第四章在第三章的基础上详细介绍了:文件系统和如何在NiosII的/zC/OS.II 操作系统上建立文件系统;SD卡、LCD屏驱动程序;MPEG.1 layer3音频解码原 理及实现播放过程;MPEG.4 Simple Profile的QCIF视频解码原理和设计过程:BMP 图像格式和图像显示浏览系统的设计过程;电子书阅读系统。最后介绍了整个系 统的软硬件协同运行。 第五章是对本课题工作的总结,并提出了该课题的优化和展望。

10

2SOPC技术
soPc是基于可编程逻辑器件(FPGA或CP【D)解决方案的SOC。SOPC集 成了硬核或者软核CPU、DSP、锁相环(eLL)、存储器、I/O接口及可编程逻辑, 可以灵活高效地解决SOC方案.

2.1

知识产权核(IP Core)
嵌入式系统是一个面向应用、技术密集、资金密集、高度分散,不可垄断的

产业,随着各个领域应用需求的多样化,嵌入式设计技术和芯片技术也经历着一 次又一次的革新。
由于芯片设计的复杂性和产品面市时间对于保证终端市场的成

功率至关重要,设计师不断寻求缩短设计周期的方法,以及更有效的设计方式。

随着我们步入系统级芯片时代,利用口内核和可编程逻辑进行设计复用显得日趋 重要,而且,基于soPc的嵌入式系统设计在很大程度上依赖于IP
Core。

IPCore即知识产权核,是指用于产品应用的专用集成电路(ASIC)或者可编 辑逻辑器件(FPGA)的逻辑块或数据块。将一些在数字电路中常用但比较复杂的 功能块,如FIR滤波器,SDRAM控制器,PCI接口等等设计成可修改参数的模块, 让其他用户可以直接调用这些模块,这样就大大减轻了工程师的负担,避免重复
劳动。随着CPLD/FPGA的规模越来越大,设计越来越复杂,使用IP核是一个发 展趋势。理想地,一个IP Core应该是完全易操作的,也就是说,易于插入任何一

个卖主的技术或者设计方法。通用异步接发报机(UARTs)、中央处理器(CPUs)、 以太网控制器和PCI接口(周边元件扩展接口)等都是IPCore的具体例子。 IPCore分为三大种类:硬核,中核和软核。硬件中心是IPCore构思的物质表 现。这些利于即插即用应用软件并且比其它两种类型核的轻便性和灵活性要差。 像硬核一样,中核(有时候也称为半硬核)可以携带许多配置数据,而且可以配 置许多不同的应用软件。三者之中最有灵活性的就是软核了,它存在于任何一个
网络列表(一些逻辑门位和互相连接而成的集成电路)或者硬件描述语言(加)L)

代码中。目前许多组织,像免费的口项目和开放核一类的都联合起来共同致力于 促进口核的共享。
口资源复用(IP Reuse)是指在集成电路设计过程中,通过继承、共享或购买 所需的知识产权内核,然后再利用EDA工具进行设计、综合和验证,从而加速流

片设计过程,降低开发风险。IP Reuse已逐渐成为现代集成电路设计的重要手段, 在日新月异的各种应用需求面前,超大规模集成电路设计时代正步入一个口整合

1l

的时代。
IP

Core是IP Reuse的载体和核心内容,基于应用需求、规范协议和行业标准

的不同。IPCore的内容也是千差万别的。但是,为了使IPCore易于访问和易于集
成,其设计必须遵循一定的规范和准则。 编码风格(Coding Style)是基于HDL的口Core源码编写的指导性文档,其 可读性直接关系到IP Core的易于访问和易于集成性。编码风格一般包含几个方面 的约定:文件头和版本说明、联机注释、命名规则、可综合编码等。 项目模板则规定了完成一个IPCore设计包含的主要内容及所需提供的文档, 项目模板内容及其文档直接关系到口Core的易于集成特性,一个口Core必须是 完整的、经过全面验证的,才能顺利地集成到应用项目中去。项目模板~般包含 几个方面的内容:项目定义、接口说明、系统结构和模块、设计文档说明、测试 验证报告、约束和实现、版本说明、试用评价以及参考文献等。

2.2

Nios

II软核处理器

Altera的NioslI嵌入式处理器是一种软核CPU,它是一种面向用户的,可以 灵活定制的通用32位RSIC(精简指令集架构)嵌入式CPU,它具有超过200 DMIPS的性能,由于处理器是软核形式的,具有很大的灵活性,可以在多种系统 设置组合中进行选择,它的外设可以灵活选择或者增删,还可以自定制用户逻辑, 允许用户定制自己的指令集,设计者可以使用Nios 11加上外部的Flash、SRAM等 外设来构成一个嵌入式系统,达到性能、特性和成本目标。采用NioslI处理器进 行设计,可以迅速将产品推向市场,延长产品生命周期,使产品可满足现在和今
后的需求。

NiosII嵌入式处理器一直是FI'GA和结构化ASIC设计的业界标准处理器。 NiosII系列嵌入式处理器目前由三种处理器内核构成,提供常用指令集架构,每一 种内核都针对特定的价格/性能点进行了优化,由相同的软件工具链提供支持。
设计人员可以从以下内核中进行选择: 1)NiosII/f:快速 2)NiosII/e:经济 3)NiosII/s:标准

这3种产品具有32位处理器的基本结构单元—32位指令大小,32位数据

和地址路径,32位通用寄存器和32个外部中断源;使用同样的指令集架构(ISA), 100%二进制代码兼容,设计者可以根据系统需求的变化更改CPU,选择满足性能 和成本的最佳方案,而不会影响已有的软件投入。每一型号都针对价格和性能范

围进行了优化,如表2.1所示。
表2.1 NiosII处理器核性能表

特性
说明

NiosII/f(快速) 针对最佳性能优


Niosll/s(标准) 比第一代Nios CPU最快的型号

NiosII/e(经济) 针对最少的逻辑 资源占用优化

还要快,而体积比
最小的还要小 流水线 6级 1周期 动态 可设置 可设置
256

5级 3周期 静态 可设置 无
256

无 软件仿真实现 无 无 无
256

乘法器
支路预测 指令缓冲 数据缓冲 定制指令

NiosII/f(快速)——最高的系统性能,中等FPGA使用量。本设计使用的就 是NiosII/f(快速)处理器内核。该内核针对性能要求较高的应用以及代码和数据量
较大的应用进行了优化,例如运行完整操作系统的应用。NiosII/f内核在200MHz 时性能达到250 DM口S,与ARM9内核性能相当。 NiosII/f内核具有:

1)指令和数据缓冲分离 21可访问高达2 Gbytes的外部地址空间
31可选的指令和数据紧耦合存储器 们6级流水线实现最大DMIPS/MHz 51硬件乘法、除法和移位操作 6)动态分支预测

乃256条定制指令
8)JTAG调试模块

9)可选的JTAG调试模块增强功能,包括硬件断点、数据触发和实时跟踪等。 针对含有数字信号处理(DSP)模块的Altera器件系列,Nios ll/f内核提供更多 的功能和性能支持。在这种情况下,NiosII/f内核提供硬件乘法电路,实现单周期 乘法运算。乘法单元还可以用作单周期桶形移位寄存器。NiosII/f内核还提供除法
电路,加速除法运算。

NiosII/s(标准)——高性能,低FPGA使用量;这一小型处理器内核保持了
较好的软件性能。Nios ll/s内核针对价格敏感的中等性能应用进行了优化,包括那

些代码和数据量较大的情况,例如运行完整操作系统的应用。
NiosII/s内核具有:

11指令缓冲; 21高达2 Gbytes的外部地址空间; 31可选的指令紧耦合存储器; 41 5级流水线; 51静态分支预测; 6)硬件乘法、除法和移位选项;
7)256条定制指令;

鳓JTAG调试模块; 外可选的JTAG调试模块增强功能,包括硬件断点、数据触发和实时跟踪等。 针对含有数字信号处理(DSP)模块的Altera器件系列,Nios II/s内核提供更多 的功能和性能支持,NiosII/s内核含有硬件乘法电路,实现3周期乘法运算。乘法 单元还可以用作单周期桶形移位寄存器。
Nios

II/e(经济卜占用最少的FPGA逻辑和存储器资源,是成本绝对最低的
II/e内核具有:

NiosII处理器内核。NiosII/e内核与同类型的8051体系结构具有相同的成本,但
是性能更高,200MHz时,达到30 DMIPS,占用的逻辑资源少于700个逻辑单元

㈣。
Nios

1)高达2 G10Iytes的外部地址空间;

∞JTAG调试模块; 3)不到700个LE便实现了系统;
4)可选的调试增强功能;
51

256条定制指令。

Niosli/e内核针对价格敏感的应用进行了优化,例如汽车电子、工业和消费类 市场等。

2.2.1外围设备
不同于其他独立的微处理器固定的外围设备,NiosII的外设是可以任意定制
的,这使得NiosII的SOPC系统可以按照具体的应用需求而量身定制。NiosII开 发包含有一套通用外设和接口库,如Flash Controller、SDRAM Controller。利用
SOPC

Builder软件中的用户逻辑接口向导,根据外设的具体参数和接口,可以生

成自己的定制外设,并将其集成在Nios II处理器系统中。

2.2.2

Avalon交换架构

Avalon交换架构,也叫Avalon总线,NjoslI系统的所有外设都是通过Avalon 总线与NiosIICPU相接的。Avalon总线是一种协议较为简单的片内总线,NiosII

14

通过Avalon总线与外设进行数据交换。Avalon总线接口分为两大类:Slave和 Master。Slave是从控接口,而Master是主控接口。Slave和Master的主要区别是
对于Avalon总线控制权的把握。Master接口具有直接的Avalon总线的控制权,而 Slave接口是被动的。

Avalon交换架构能够进行多路数据同时处理,实现无与伦比的系统吞吐量。
SOPC

Builder自动生成的Avalon交换架构针对系统处理器和外设的专用互联需求

进行优化。传统总线结构中,单个总线仲裁器控制总线主机和从机之间的通信。 每个总线主机发起总线控制请求,由总线仲裁器对某个主机授权接入总线。如果 多个主机试图同时接入总线,总线仲裁器会根据一套固定的总裁规则,分配总线 资源给某个主机。由于每次只有一个主机能够接入总线、使用总线资源,因此会
导致带宽瓶颈。 Avalon交换架构的同时多主机体系结构提高了系统带宽,消除了带宽瓶颈。

采用Avalon交换架构,每个总线主机均有自己的专用互联,总线主机只需抢占共 享从机,而不是总线本身。每当系统加入模块或者外设接入优先权改变时,SOPC
Builder利用最少的FPGA资源,产生新的最佳Avalon交换架构。

Avalon交换架构支持多种系统体系结构,如单主机/多主机系统,可实现数据
在外设与性能最佳数据通道之间的无缝传输。 Avalon交换架构体系如图2.1所示。

图2.1 Avalon交换架构体系
Fi92.1 Avalon Switch Fabric system

2.2.3定制指令

Nios

II是一个建立在FPGA上的嵌入式微处理器软核,因而自定制指令可以

在Niosll中进行实现,而对于其他独立的微处理器,使用硬件自定制指令是不可 能的。NiosII系列处理器支持多达256条的定制指令,加速通常由软件实现的逻辑 和复杂数学算法。例如,在64K字节缓冲中,执行循环冗余编码计算的逻辑模块, 其定制指令速度比软件快27倍。NiosII处理器支持固定和可变周期操作,其向导 功能将用户逻辑作为定制指令输入系统,自动生成便于在开发人员代码中使用的
软件宏功能。

自定制指令是使用Nios II嵌入式软核处理器的SOPC系统的一个重要特性。 使用自定制指令可以针对SOPC具体应用来合理使用硬件资源,做出相应的指令 集调整,以便提高软件算法的处理能力。由硬件模块构成的自定制指令可通过单 时钟周期或多时钟周期的硬件算法操作来完成原本十分复杂的软件处理任务。自 定制指令扩展了CPU指令集,提高对时间要求严格的软件运行速度,从而使开发 人员能够提高系统性能。采用定制指令,可以实现传统处理器无法达到的最佳系
统性能。

2.2.4硬件加速
专用硬件加速器可以作为FPGA中的定制协处理器,协助CPU同时处理多个 数据块。如循环冗余编码,采用硬件加速器处理64K字节缓冲比软件速度快530 倍。SOPCBuilder含有一个输入向导,帮助开发人员将其加速逻辑和DMA通道引 入系统。 开发人员希望快速将他们的产品推向市场,保持一个较长的产品生命周期。 避免更新换代。基于NiosII的嵌入式系统在以下几个方面可以帮助用户实现此目
标。

加快产品的上市时间——仰GA可编程的特性使其具有最快的产品上市时间。
许多的设计"sins”通过简单的修改都可以被快速地实现到FPGA设计上。NiosII系 统的这些灵活性和加速上市的特性源于Altera提供完整的开发套件、众多的参考
设计、强大的硬件开发工具(SOPC Builder)和软件开发工具(NiosIImE)。许多

客户借助Nios开发套件所带的设计,在几个小时内就创建了设计的原型。由于将 NiosII处理器放置于FPGA内部就可以验证外部的存储器和I,O组件,电路板设计
得以显著地加速。

建立有竞争性的优势。维持一个基于通用硬件平台的产品的竞争优势是非常 困难的。而创建一个SOPC系统且带有一个或多个Nios II处理器,具备硬件加速、 定制指令、定制的可裁减的外设等配置系统,给对手的超越制造了有效的障碍,

具备了竞争的优势。 延长了产品的生存时间。抢先占领市场通常会使产品的完善程度低于实际的 所需。使用Nios 1I处理器的SOPC产品带来的一个独特优势就是能够升级硬件的 特性,即使产品已经交付给客户,同样,软件也可以定期升级。这些特性可以解
决很多问题:如延长产品的生存时间,随着时间的增加,可以不断有新的特性添 加到硬件中;减少由于标准的制定和改变而带来的硬件上的风险;简化了硬件缺

陷的修复和排除,不再需要做RMA和其他重复工作;避免处理器的过时——嵌入 式处理器供应商通常提供一个很宽的配置选择范围以适应不同的客户群。不可避 免的是,某个或多个处理器有可能会因为生产计划等原因而停止供应或很难寻找。
Nios设计人员拥有在Altera FPGA上使用和配置基于Nios的设计的永久许可。一

个基于Nios的设计可以容易的被重新实现在新系列的FPGA器件中,从而保护了 应用软件的投资;在产品产量增加的情况下减少成本,当一个FPGA的设计被选
定,并且打算进行大批量的生产,可以选择将它移植到Altera的Hard Copy中,一

种结构化的ASIC系列,从而减少了成本并提升性能——这仅需几周时间。Altera 还可以提供NiosII处理器的ASIC制造许可,您可以将包含NiosII处理器、外设、
Avalon交换式总线的设计移植到基于单元的ASIC中。

2.3

SOPC系统开发流程
完整的基于Nios II的SOPC系统是一个软硬件复合的系统,在开发时可分为

硬件和软件两个部分。首先确定哪部分功能由硬件实现,哪部分功能由软件实现:
其次,在SOPC Builder中定制裁减缛当的SOPC系统,并生成相应的SDK(软件 开发包);然后,在生成的SDK基础上,开发者可以进入软件开发流程;最后,

进行编译、链接以及调试。图2.2所示是SOPC系统开发的流程图,概述了利用 SOPC工具实现NiosⅡ嵌入式系统的完整设计流程。

17

jL宝銮通太星亟±堂位监奎

§Q££

拄盔

。巨囹
自定义外设、指令 定义Nios系统模块 生成Nios系统模块 锁定引脚、硬件编译 自定制硬件模块的 驱动或子程序

rl—]L



os移植 .编写应用程序 编译、链接、调试

臣亟塑困
图2.2 Nios II软硬件开发流程图

Fi够.2

Nios II

hardware and software development flowchart

18

3系统硬件结构设计
3.1实验平台简介
本设计使用革新科技的CIDE系列综合创新开发实验平台,采用全新的“核心 板+……+核心板+平台主板”自由叠层结构。灵活的CIDE综合创新开发实验平台 功能强大、硬件接口丰富,平台嵌入式软件除支持c、c++语言开发之外,还支持 JuC/OS-11、/zClinux嵌入式操作系统。独特的核心板扩展接口可完美实现核心板与 核心板、核心板与平台主板之间无缝连接,实现复杂的系统功能。用户可根据需 求,选择SOPC和DSP组合、SOPC和ARM组合、ARM和DSP组合、单片机和 SOPC的组合等通过模式转换功能,不同的硬件模块间,可轻松实现近20种独立
的综合特色模块组合。实验平台如图3 1所示。

图3.1实验平台
Fi93.1 Experimental Platform

CDE平台硬件资源:
1)4X64Pin核心模块扩展接口:可实现SOPC、多核MPSOC、ARM、DSP、

PPC、8/16/32位单片机…核心板叠加扩展: 2)IIC总线:4路8位ADC输入,1路8位DAC输出;
31
IIC

EEPROM;

4)1路高速串行SPI总线ADC,速度为1Msps,可选配8、10、12位; 5)4路高速串行SPI总线DAC,8位四通道:

6)1路高速并行PAR总线ADC,速度为50Msps,可选配8位75Msps ADC;

7)1路高速并行PAR总线DAC,速度为125Msps; 8)创新开发扩展模块1:EDA实验扩展模块、CMOS摄像头与TFl3.5寸液
晶屏;

外8/16/32位数字存储器扩展接1:3; lO)彩色LCD模块; 11)CAN总线接I:1:带串行CAN总线控制器; 12)VGA接口;专用JTAG接口;RS485接口;2个RS232接口;SD卡接口;
LcD复位按键;

13)8位功能模块拨码开关; 14)8个LED指示灯;

15)4个8X8点阵LED,构成16X16点阵;
16)10个七段数码管:8个共阴七段数码管,2个共阳七段数码管; 17)8个独立按键输入; 18)2行x16字符LCD液晶屏模块; 19)24位立体声Audio codec模块:1路LINE-out、1路HP-out、1路MIC-in、
1路LINE.in:

20)音频功放模块; 21)1路扬声器;1路蜂鸣器; 22)高速DAC同步时钟输入: CIDE核心板硬件资源: 11核心板采用8层板精心设计;
∞Cyclone II EP2C35芯片;

3)4x64脚核心模块扩展接口可与其他SOPC板、ARM板、DSP板、单片机
板与主板的无缝结合。并也可通过扩展口外扩存储器,既能实现数据的大 容量存储,又能提高数据的存取速度;
41

2片x16/32/64Mbl6位总线FLASH芯片;

研2片x4/8Mbl6位总线SRAM;

6)2片x64/128Mbl6位总线SDRAM;
乃4个多功能按键; 8)8个LED用户指示灯;

外1个系统复位按键,产生系统复位信号; 10)1个配置按键,用于重新配置;
11)12C EEPROM+专用复位芯片;

12)1个配置电路:带串行EPCSl6芯片;

13)1个JTAG接口;1个AS接口;

3.2

SOPC系统开发工具
Altera的QuartusII提供了完整的多平台设计环境,能满足各种特定设计的需

要,是SOPC设计的综合性环境和开发的基本设计工具,并为Altera DSP开发包

进行系统模型设计提供了集成综合环境。Q恤rtusII的SOPC Builder工具是Altera 推出的在PLD内实现嵌入式处理器相关设计的工具,它允许用户将工作重点集中
在系统级的需求上,设计者可以在SOPC Builder中定义一个从硬件到软件的完整

系统。QuartusII设计工具完全支持VHDL、Vefilog的设计流程。QuartusII也可以 利用第三方的综合工具,如Multisim,并能直接调用。本设计使用Quartus 版本。 Altera的NioslIIDE(集成开发环境)是NiosII嵌入式处理器的基本软件开发 工具,所有软件任务都可以在NiosIIIDE下完成,包括编程、编译、调试和下载。
本设计使用NiosIIIDE6.0版本。
II 6.0

3.3基本系统构建
本设计选用的FPGA芯片是Altera公式的Cyclon II系列的EP2C35,该芯片具

有35000个逻辑单元、672个引脚、475个用户自定义I/O接口、35个嵌入式乘法 器和4个锁相环,是一个集成度极高的、功能强大的FPGA芯片。 在Altera的OuartuslI中新建工程,并在SOPC Builder中添加口核构建系统.
1)cpu_0:Nios II Processor—Altera Corporation

首先,为系统加入处理器,选用NiosIl/f:快速软核,具有最高的系统性能,

中等FPGA使用量。该内核针对性能要求较高的应用以及代码和数据量较大的应 用进行了优化,例如运行完整操作系统gC/OS.II的应用。NiosII/f内核在200MHz
时性能达到250 DMIPS,与ARM9内核性能相当。NioslI/f内核具有:指令和数

据缓冲分离、可访问高达2



bytes的外部地址空间、可选的指令和数据紧耦合存

储器、6级流水线实现最大DMIPs/MHz、硬件乘法、除法和移位操作、动态分支 预测、256条定制指令、JTAG调试模块、可选的JTAG调试模块增强功能,包括 硬件断点、数据触发和实时跟踪等。 2)jtag_uart_0:JTAG
UART(JTAG universal asynchronous receiveT/transmitter

(UART)core)即JTAG通用异步通信总线,Altera的JTAG UART核具有 Avalon总线接口,PC机和Altera FPGA上的SOPC Builder系统可以通

过JTAGUART进行通信,也用于NiosII系统的仿真调试。
3)sdgain:SDRAM Controller,为了实现Nios II对SDRAM存储器的读写访 问,加入SDRAM

Controller,大大简化了硬件系统的构成。

4)timer:Interval timer,即内部定时器,在一个嵌入式系统中,定时器往往 是必不可少的。考虑到FPGA资源的合理利用,Interval timer提供了多种

模式以选择,这里我们选用默认的配置“Full feature(全功能)”配置。
5)sysid:System ID Peripheral,即系统标识,它是SOPC中的一个简单只读

组件。NiosII处理器系统利用它来检验软件程序和配置与FTGA中的硬件 电路是否一致。
6)epcs_controller:EPcs
EPCS Serial Flash

Controller,为了实现Nios ll处理器对
Serial Flash

Hash存储器的读写访问,加入EPCS

Controller组件,

通过此控制器将用于FPGA配置的SOF文件和CPU运行的软件一并存于 EPCS器件中,大大简化了硬件系统组成结构。
7)onchip_memory_0:On-Chip Memory(RAM
or

ROW,设置为RAM。

8)ext_bus:Avalon Tristate Bridge,即三态总线桥,一般通用的一般SRAM 和Flash的数据总线是三态的,NiosIICPU与SRAM、Flash相接需要Avalon 三态总线桥。 9)cfi_flash_O:Flash Memory(Common
Flash

interface),即Flash存储器,Flash

的加入类似与PC机接入了硬盘,用于存放程序和数据,并在掉电时仍然 保持数据。 lo)sram一256×16bit
SRAM是Static
O:SRAM 256x16bit.
Random Access

Memory的缩写,由于SRAM的速度非常

快,它一般被作为高速系统程序运行的空间或者高速缓存,在数据采集系统 中,也常用它来做数据的缓存。SRAM芯片的种类很多,在Altera的口库中 只提供了几种型号SRAM的接口口,因此,我们根据系统的需要来定制SRAM 的大小和型号定义SRAM的接口控制器。 SRAM的接口一般有数据线、地址线、读写控制线、字节使能线等接口线, 与Avalon总线的内部信号比较类似,其中,数据线为三态总线,它与NiosIl 的连接需要三态总线桥进行桥接,在SOPC Builder中提供了Avalon Bridge可以直接使用;Avalon
Tri State
Tfi State

Bridge的作用就是把Avalon总线的接

口信号引出,不同的是将数据总线定义为三态,这样SRAM、FLASH等芯片 的三态数据总线就可以直接挂接在上面。由于SRAM接口可以直接挂在总线 接口上,因此我们不需要专门的控制逻辑,只需要做好Avalon三态总线与 sRAM接口信号的匹配即可。

11)ALTI'LL(Phase.10cked Loop):PLL即锁相环,包括时钟乘法器和除法器、
锁相器、可编程占空比、外部时钟输出控制信号。FPGA片内嵌入PLL可

以与一输入的时钟信号同步,并以其作为参考信号实现锁相,从而输出一
至多个同步倍频或分频的片内时钟,以供逻辑系统使用。与直接来自外部

的时钟相比,这种片内时钟可以减少时钟延时和时钟变形,减少片外干扰;
还可以改善时钟建立的时钟和保持时间。

本设计中,实验平台上只有一个50MHz的时钟信号,通过PLL生成一个 100MHz的时钟为系统时钟,以及两个50MHz的时钟分别为存储器提供时钟信号 以及外设芯片的时钟信号。我们使用Altera的基本宏功能来生成PLL。通过Altera 的口工具MegaWizard管理器定制基本宏功能参数,生成一个封装文件,然后在
设计中可以直接调用该封装文件。

首先,在属性设置里正确选择所使用的器件系列(cyclon II)和外部时钟输入 (50MHz);其次,在输出时钟设置中,选择需要设置的时钟频率和相移;最后, 生成库文件。 在设置PU,时钟时候的时候需要注意:如果Nios II]DE编译没有通过,提示:
。Verify failed between address 0x800020 and 0x80FFFF”

因为0x800020到

0x80FFFF这段地址属于SDRAM,所以是SDRAM没有正常工作,判断是SDRAM

的PLL的问题。这时要修改Pu。中输出时钟的相移(一般情况下都为0),计算公 式如下:

读滞后:f口(SDRAM)-t.w(FPGA)
写滞后:tcLg—tco MAX(FPGA)一tos(-£DRc4M)
注:50MRz时钟的tcLx=20
ns

(公式1) (公式2)

取它们之间的较小值,设为x; 读超前:tco s口(FPGA)一tDx(SDRAM)
(公式3) (公式4)

写超前:f“一tHzo)(SDS4M)-tsu.MAX(FPGA)
取它们之间的较小值,设为Y;
相移=(y.x)/2

设置后生成的PLL模块如图3.2所示。



裟翟篇“峰荨
削等l;剁甓剥l
::.=

:::研魁 ‘‘::崩K

?;i;,r
。o

.■。d

口■b

3.4

SD卡通信模块
由于开发板上flash存储器存储容量只有“M对于一个PMP系统来说,作为

主存储器是显然不够的,而SD卡的存储容量多样,从32M到2G产品齐全,用户 可以根据自身需要来确定SD卡的存储容量,因此,本设计选用128M的SD卡作 为主存储,所有音频、视频、图像和文档文件都存放在SD卡中。

3.4.1

SD卡介绍

SD卡在不同的通信模式下,各引脚的功能也不相同。这里的通信模式是指微 控制器(主机)访问SD卡时使用的通信协议,分为两种:SD模式及SPI模式。 在具体通信过程中,主机只能选择其中一种通信模式。通信模式的选择对于 主机来说是透明的。卡将会自动检测复位命令的模式(即自动检测复位命令使用 的协议),而且要求以后双方的通信都按相同的通信模式进行。本设计使用的是SD 模式,下面介绍SD模式。 在SD模式下,主机使用SD总线访问SD卡,其拓朴结构如图3.3所示。

韭立窑煎去堂亟±堂僮监奎
隶视

丕统蘧鲑绪拉途让

图3.3SD总线访问SD卡拓扑结构图
Fi93.3 The topological map of SD bus communicate with SD card

SD总线上的信号线的详细功能描述如表3.1所示。
表3.1 SD总线上的信号线功能描述表 Fi93.1 The
ruction description of signals
Oil

SD bus

信号线
CLK

功能描述 主机向卡发送的用于同步双方通信的时钟信号 双向的命令/响应信号

CMD

D脚一D√’1.:3
VDD VSSl、VSS2

4个双向的数据信号(MMC卡只有DA仰信号线)
电源正极,一般电压范围为2.7以.6V
电源地

SD存储卡系统(SD模式)的总线拓扑结构为:一个主机(如微控制器)、多 个从机(卡)和同步的星形拓扑结构(参考图3.4.1)。所有卡共用时钟CLK、电

源和地信号。而命令线(CMD)和数据线(DAT0一DA∞)则是卡的专用线,即
每张卡都独立拥有这些信号线。 SD卡输入和输出时序信号如图3.4所示。该时序图适用于SPI模式和SD模 式。在SPI模式下,tnput与Output信号共占用2个单向的FO口。在SD模式下, Input与Output信号共用一个双向IO口。

vm VL VH Vk VoH VoL

辨曩;郝分袭零t赣

图3.4 SD卡输入输出时序图
Fi93.4 SD Card input and output timing chart

电源等SD卡引脚已经在实验板上固定好了,SD卡与系统进行通信的引脚只 有三个:CLK、CMD和DAT,分别是SD卡的时钟,指令信号,数据引脚。

3.4.2

SD卡通信模块构建

根据上述SD卡的通信描述,我们在SOPC Builder中调用PIO核,分别生成 SD_CLK、SD_CMD和SD_DAT。SD_CMD和SD_DAT都是双向引脚,负责传送
SD卡的指令和数据。

1)SD_DAT:设置为双向引脚,负责传送SD卡的数据; 2)SD_CMD:设置为双向引脚,负责传送SD卡的指令;
31

SD_CLK:是输出引脚,为SD卡提供时钟信号。

3.5

音频播放模块
音频播放模块大致由两部分组成:音频解码芯片和控制音频解码芯片的口核。

下面我们将具体介绍这两部分内容。

3.5.1音频解码芯片
实验平台上的音频解码芯片选用的是WM8731。WM8731是一款带有集成耳 机驱动器的极低功耗、高质量音频编码解码器,专为便携数字音频应用而设计。 该器件可以提供CD音质的音频录音和回放,为160的负载提供50roW的输出功

率。它内建了24bit多位(multi.bit)sigma三角模数转换和数模转换,ADC和DAC 都使用了超采样数字插值技术,它支持的数字音频的位数可以是16位至32位, 采样率从8KHz到96KHz。立体声音频输出带有数据缓存和数字音量调节。该器 件的数字部分运行的最低电源电压为1.42V,同时模拟部分要求的电压最小为 1.8V。WM873I具有多种功耗降低模式,为用户避免电池功率消耗。WM8731在 回放模式的下典型功率消耗为8.5row,同步录音和回放时(3.3v)的功率消耗为 24mW。待机模式下,供电电流可降低到50/YA。 WM8731带有一个片上时钟发生器,支持多种时钟模式。通过一个12MHz时 钟,该器件可以直接生成44.1kHz、48kHz和96kHz等采样率,以及MP3标准定 义的其他采样率,完全不需要一个独立的锁相环(phase Iockexl loop)或晶振。支

持其他公用的主时钟频率,例如12.288M№。
WM8731由FPGA中的12C总线控制,它的引脚分布及描述如表3.2所示。
表3.2 WM8731引脚分布及描述表
Table3.2 WM8731 pins dislribufion and desc'r/pficna tabk Signal Name AUD_ADCLRCK AUD_ADCDAT Description

Audio CODEC ADC LR Clock
Audio CODEC ADC D』^:I'A Audio CODEC DAC Ut

AUD_DACLRCK AUD_DACDAT
AUD XCK AUD_BCLK 12C SCLK 12C SDAT

Clock

Audio CODEC DAC DATA Audio CODEC Chip"Clock Audio CODEC

Bit.Stream CIock

12CClock
12CData

3.5.2音频控制模块构建
1、dk_12:在原理图模式下用两个DFF(D触发器)实现四分频,将外部时

钟50MI'iz四分频后频率为12.5Hz提供给音频CODEC--WM8731。
cik_12原理图如图3.5所示。

震◆}
图3.5clk_12原理图
Fi93.5 clk_12 schematic

2、Audio_0:User Logic Audio,即用户自定义IP Core:Audio,Audio中包

括三个设计文件:AuDIO
AUDIO DAC

PLL、册16 FIFO:DAC唧,音频解码后数据的FIFO。
DAC FIFO、AUDIO

256

AUDIO_PLL:产生音频解码芯片需要的时钟信号。 FIFo-16—256:存放音频解码后数据。
3、audio_config:自定制IP

Core,通过硬件的方式配置WM8731。WM8731

内部有11个寄存器。该芯片的初始化以及工作状态和功能都是通过以12C 总线方式对其内部的这11个寄存器进行相应的配置来实现的。 1)12C(Inter-IC)总线是由飞利浦公式为了在集成电路之间进行控制和 通信而开发的一种总线标准。它由两条双向串行总线(SCL、SDA) 构成,可以完成多个器件之问的数据交换,尤其适用于多个器件之间
短距离内随机通信。

数据传输格式:主从器件之间在SDA总线上进行数据传输,SCL 总线的功能是进行时钟同步。数据传输以字节为单位,每位占用一个 时钟,最高有效位在先,每个字节后跟随一个应答位(ACK)。数据传 输时,每一位都在时钟总线SCL的高电平期间进行采样,因而数据总 线SDA必须在SCL高电平期间保持稳定,SDA的状态变化只能发生
在SCL低电平期间。一旦时钟总线SCL高电平期『自j SDA总线高低状

态发生转变,则意味着主器件发出了开始或者停止信号。 audio_config中12C总线配置模块是按照上述12C总线规范和标准 时序,用Verilog语言设计实现的,该模块命名为12C Controller。 2)audio_config中调用/2C_Controller对WM8731的各个寄存器进行配
置,WM8731的基地址是34h,11个寄存器的配置如表3.3所示。 表3.3 WM8731的寄存器及其参数设置
Table33 The register

sftti螂ofWM8731

I寄存器地址 I设置参数

ooh lab

02h 1Ah

04h 7Fh

06h 7Fh

08h F8h

0Ah 06h

OCh 00h

ol’h 21h

10h 02b

12h 01h

1Eh
reset

用Verilog语言实现audio config的逻辑功能后,生成audio_config模块,
如图3.7所示。

::::::i硎翼嘧好~ji兰
匝西可一__一一一j一
图3.6
audio_config

Fi93.6 audio_config

4、Audio_Full:PIO

Core,用来判断User Logic Audio中的FIFO中数据是否

已经写满。

3.6

LCD显示模块
LCD控制器

3.6.1

实验平台提供3.5寸耵T彩色屏模块,包括LCD控制板TCB8000A,TCB8000A
采用TS000作为控制器,设置了8位MCU]/o接口(缺省设置)或16位的总线

接口:16-bpp(位深度)RGB的数据格式,能够实现6.5万种颜色的显示。控制器 内置ADCII码,另有256KROM中文字库版本可选。TCB8000A具有图像加速器 功能,简单命令就能实现点、线段、矩形和圆的2D作图,方便用户制作菜单、列 表、连线图等,可加快11叩产品的开发。 控制板特点: 11单5v电源供电;
21内置背光驱动电路; 31嵌入64KX 16SRAM: 舢内置LCD DC--DC升压电路:
5)3.3V

6)可直接连接LMlm5DM删或LMl仿7DNAF、矾I

MCU接口/逻辑I/O(可接受5v逻辑输入);

n叮液晶显示模块。

3.6.2

LCD显示模块构建

LCD控制器TS000一端接收用户控制,一端实现LeD的复杂时序,并集成多 种功能。用户只需与控制器的简单接口交互,便能达到控制“=D的作用,大大降 低了工作量。采用总线方式控制TCB8000A的时序,利用SOPC Builder添加一个 挂接在三态桥上的接口,将TCB8000A的控制引脚与Avalon总线相关联。由于 TCB8000A的控制时序与Avalon总线三态接口的时序基本吻合,只需在定制接口
时调整等待、建立时间便可以达到控制目的。

在NiosII程序内用简单的写操作产生Avalon总线时序。需要注意的是, TCB8000A只需一个地址控制线A1,且与总线的A1相连,因此写操作应使总线 上的地址线A1符合TCBS000A对A1管脚的时序要求。在控制时序的基础上,进 一步编写应用程序以在屏上显示图片、汉字、画图等操作。 n丌LCD控制器相关引脚映射如表3.4所示。
表3.4 11丌LCD控制器相关引脚映射表
Table3.4 TFr LCD controller pins mapping

设计端口
tfl led resetn_pio

FPC渔引脚
PⅡ、『N22 PIN

开发平台芯片管脚
tft——led—.resetn
tft led
csn

to led to led

csn_.pio al_pio

M19,挂接在总线上

to 挂接在总线上,与SRAM, FLASH共用这些管脚 to

lcd al lcd win

tfLJcd wm_pio
LCD RD tft

LcD RD

led data_pio[0]

to led data[O] to led data[1】

to led data_pio[1】
fit led data_pio[2】
tft

tft—led—data[2】
tO led
tfl

led data_pio[3】

data[3】

tfl led to led to led
tO

data_pio[4】 data_pio[5】 data_pio[6】
data

led data[4】

to led

data[5】

led data[6】

led

pio[7】

to—led—data[7】

下面,根据LCD控制器要求来构建自定制IP,将LCD屏连接到系统的Avalon
总线上。

1)gx_to_lcd:在Ouartus中打开SOPC

Builder,Create New Component,即

创建一个新的器件gx_tfl_led,gxj址lcd这个口核的作用是建立Nios系
统和外部器件LCD控制器——?rC=B8000A的接口,实现由Avalon总线直

接控制液晶屏,因此该口核应设置为avalon_tristate_slave,即Avalon总 线三态从端口模式,创建过程和设置如下: 首先,创建一个Avalontri-state接口,不需要HDL文件和HAL文件,添加接 口所需要的信号。此处的设置用户应参考Avalon总线三态从端口写时序图和
TCB8000A的控制接口,来添加需要的信号,设置如表3.5所示。
表3.59x mJcd信号设置

Name Data address

Interface avalon_tristate_slave_0 avalon_tristatc_slave 0 avalon_tristate_slave_0 avalon_tristate_slave_O avalon_tristate_slave_O

signal Type Data Address

Width
8 2 1 1 1

Direction
Bidir input input input input native

Wrjte



Write



Chipselect_n Bl坞switch

Chipselect_n Chipselect

其次,在slave addressing栏中选择端口的地址对齐方式。Register(use
bus

sizing)是指地址静态对齐,它适合于所有映射到存储器空间的寄存器控制的
receive stderr/stdout

从外设。MinimumArbitration shares为最小仲裁共享设置,Can

为设备是否可以介绍stdrr/stdout,这两项一般按默认设置即可。由于本系统中tft_lcd 不是存储器设备,所以选用Register(use
native bus sizing)地址静态对齐。

再次,设置接口时序:这一步很重要,需要仔细理解外设芯片数据手册的时 序要求来进行设置。 然后,由于除了片选信号外,data、address、write_n信号都与其它总线外设 共享。而write U默认为不共享,需要打开该元件所在文件夹下的元件描述文件
class.ptf,将write_n端口改为共享(is_shared改为等于1)。如下:
PORTwrite



width=”1。: width_expression=”: direction=’’input”: type=”write_n": is_shared=”1”: vhdl_record_name=’”’: vhdl_record_type=”;;



31

最后,写群tft lcd的逻辑功能;
Bus

switch:通用10口,通过判断Bus_switch的值来控制群tft lcd的数据

流向。LCD Controller的数据流有两种:普通数据和视频数据。普通数据就是图像

数据、t】【t文档数据等不需要再经过处理或者只要简单处理就可以直接送到LCD RAM中显示的数据;视频数据是需要经过视频后处理模块处理才能送到LCD显 示的数据。如果是普通数据,Bus switch置O,送数据到BMP
度转换,然后送到LCD外设;如果是视频数据,Bus
24 1

16进行色彩深

hctiws_频视到据数送,置

后处理模块,处理完毕后。送数据到BMP一24—16进行色彩深度转换后,输出到外
设.
Gx Yuv to

RGB:YUv格式到RGB格式转换的IPCore,将ⅥⅣ格式转换

为24位RGB格式数据。具体算法在视频系统构建中阐述。 根据以上描述,黔二蠊Ijcd逻辑功能如图3.8所示。

Avalon Switch fabrk

图3.7 gx-m-lcd逻辑功能框图 Fi93.7 gx_tft_lcd logic diagram

完成以上模块构建后,就可以将我们自定制的舒—m—lcd添如到NiosII系统中
了;
21 BMP 24
to

16:实现24位深度(bpp)到16bpp转换,根据LCD屏的要

求对图像数据进行处理,具体算法将在图像显示系统中阐述,算法用

Ⅵ{DL语言实现:
3)tft
le.xl resetn

pio:PIOCore,即通用IO口,是LCD控制器的复位信号口。
led

完成gxjfl_lcd、tft

resetn_pio和BMP-24-16的设置,并把它们添加到

NiosIi系统中,我们就将耵可LCD屏连接到Avalon总线上了。

3.7视频解码播放系统构建
3.7.1选择解码标准
MPEG4提供了大量的工具对视频对象编码。为了有效地实现这个标准, MPEG4针对不同的应用需求,定义了一些MPEG珥系统、视频、音频的子集,这 些子集被称为类(Profile)。而在每一个Doffie中又定义了多个机(Level),用来 限制计算的复杂性。Prome使得用户完全可以根据自己的需求来选择使用相应的
MPEG4工具,并且在构建解码器时也不需要为所有MPEG4中使用的编码算法准

备好相应的解码算法。对于MPEG4视频部分来说,主要有以下几个类: 11简单类(Simple Profile):主要针对较低处理能力的应用领域,能对矩形 视频对象进行有效编码,适用于视频会议和无线网络移动设备,如手机、
PDA等手持终端产品;

∞简单可扩展类(Simple

Scalable

Profile):比前者增加了对时空可扩展对象

的编码支持,能适用于较高处理能力的应用环境,如网络广播等:

∞核心类(Core Profile):增加对任意形状和时间可扩展对象的编码支持,
主要应用于网络多媒体应用; 钔主要类(Main Profile):增加象素宽度为4—12位的视频对象的编码支持,

适用于监视仪器等领域。
根据实验平台上LCD屏的特点,本设计采用MPEG4 Simple Profile级解码。

3.7.2视频解码系统构建
为了提高解码和显示的效率,我们可以利用一些成熟的11'Core来完成部分工
作: 1)DMAController:DMA控制器,设置为WidthofDMAlength re西ster24bits。

用于在两存储器、存储器和外围设备或两个外围设备之间实现DMA数据 传输。用于连接由数据流处理能力的外围设备,并在CPu不干预的情况 下完成固定或可变长度的数据传输。设置两个Avalon控制器接口(read
master和write master)和一个Avalon
slave

port。DMA完成从SDRAM

中将解码后的视频数据存储到LCD的RAM中。视频解码每解完一帧图
像,启动DMA将数据搬移到群tft lcd模块进行处理,然后发送到LCD

显示,每次搬移完一帧图像产生中断,通知Nios CPU数据搬移完毕,Nios
向DMA发送下一帧数据地址和大小,开始传送下一帧数据。

刚警秦刊吲

㈨s,

:一……]

’—一]

国自 {o


自自
:o j


图3.8 YUV-RGB转换结构图
H93.8 YUV-RGB Switch
structure

计算产生24位的RGB值,再通过BMP

24 to

16模块产生16位的RGB值

送入LCD RAM中显示,具体算法将在图像显示系统中阐述。 最后,将Gx_YUV
to

RGB集成到gx tft_lcd中。因为如果这个模块是单独的

模块,它和存储器需要有多次的数据交换,而将这个模块集成到gx_饪t_Icd中只要 一次数据传输,减少了与存储器的数据交换次数,加快了系统处理速度。

3.8顶层系统构建
在SOPC Builder中完成以上模块构建并添加完毕之后,锁定cfi_flash地址,
然后调整所有存储器地址;最后设置SOPC系统的地址,如表3.6所示。
表3.6 SOPC系统地址设置
Table3.6Address settingsofSOPC system Processor Funetion Reset Address Exception Address Break Location

Memory

module

Offset

Address

cfi flash 0 sdram 0

0xo【)000000

0x0I)0()0000
Ox00800020 Ox00280020

cpu_O/jtag_debug_module

Ox删20

On00000020

设置完SOPC系统的地址后就可以编译生成PMP系统了,硬件系统结构如图
3.9所示。

圈3.9硬件系统结构图 Fi驴.9
SOPC
I-hll'dwm-e system structure charI

Builder编译完毕后,进行连线、引脚分配,全程编译通过后生成顶层

系统机构如图3.10所示:

图3.10PMP顶层系统图
Fi93.10 PMP top level schematics

4系统软件设计
SOPC系统软件设计:指令生成并加入总线和各种需要加入的外设组件(如各 类接口、Fl弱h等)后,对基于NiDsII的s0Pc系统进行编译并下载到FPGA中。
在NiosII的硬件系统生成的同时,SOPC Buidcr帮助用户生成相应的SOF文件。

由于在硬件开发中的Ni∞II CI'U及其外设构成的系统是自定制的,存储器、外设 地址的映射等都各不相同,需要专有的SOF文件,用户新定制的指令也必须修改
原有的编译工具,这些都由SOPCBinder自动生成。

在生成SOF文件的基础上,可进入系统软件的设计。在这里,软件的开发设 计与通常的嵌入式系统的开发设计相类似,唯一不同点在于这时面对的嵌入式系 统是自己定制的、裁剪过的,因此,受到硬件的局限性会小些。可使用汇编、C、 C++来进行嵌入式程序设计,使用IDE工具或其它的第三方工具进行程序的编译 连接以及调试。比如,将复数乘法器硬件模块设置成相应的指令后,锁定引脚。 全程编译。然后利用QuartusII编辑C程序进行测试。在FI'GA中的Ni∞ⅡCPU 中运行C程序。测试成功后,在DSP计算中遇到复数乘法就可以运用复数乘法指
令。DDS模块还是以硬件形式固化在FPGA中,可以根据需要,利用DDS设计出

幅度、相位和频率调制器。
在Quartus II编译成功后,我们可以在Altera的Ni∞II IDE下对PMP系统进行软

件开发,本设计使用Ni吣ⅡIDE6.0版本。

4.1驱动程序设计
4.1.1

SD卡驱动程序

SD卡作为PMP系统的主存储器,主要功能就是存储文件,并在文件被调用
的时候读取并传送文件数据。

在NmsII系统中,SD卡模块包括:SD
核。SD
SD

CLK、SD CMD、SD

DAT三个Plo

是输出引脚,时钟信号通过 SD CLK 输出给 SD KLC_,脚引钟时的卡

CMD和SD DAT都是双向引脚,负责传送SD卡的指令和数据。

SD卡驱动的源代码文件只有一个:SD Card.h文件,以头文件的形式加入 pro商et中,主要功能是实现SD卡的初始化、获取文件系统首扇区数据、读一个块 的数据以及文件系统与SD卡物理层接口。

SD_Card.h中的主要函数描述如表4.1所示。
表4.1 SD卡驱动主要程序

函数名称
SD_Initialize SD_ReadBlock

功能描述
SD卡的初始化

函数参数

返回值



特殊说明



buff:读出数据的缓 冲区 lba:逻辑块地址 secent:读取扇区数, 一般设置为1

读SD卡一个块
的数据

在这个函数
中,Iba需要加 上一个常数, 这个常数为

SD卡物理扇
区与逻辑扇区 地址的差值。

responsc_R

接收SD卡响应 函数

s:接收响应的类型

1:接受 成功, 响应正 确; 2:错误



send cmd

向SD卡发送命


in:指向命令数组的 指针 Device:卷地址

8位crc 校验码 保留给 底层驱 动程序



GetVolumeFirs
tSect


获得卷首扇区数




SDCammand

逻辑盘驱动程序

Camand:ZLG压峪对 驱动程序请求的操 作。 Parameter:传递给低 层驱动的参数结构 体。







Fat.h中

的定义

需要注意的是参数:lba(逻辑块地址),在程序中加上了常数99。这个常数 是SD卡中逻辑扇区编号与物理扇区编号的差值,每个SD卡都可能不一样,所以 建议用WINHEX软件查看后确定。

4.1.2

LCD控制器驱动程序

LCD控制器TS000指令包格式:

I操作码(1byte)l

参数/数据(最多64bytes)



并行模式下,MPU首先把完整的命令包送入地址为F004H的只写寄存器(A1 =O),然后送“1”到地址为F006H的寄存器(A1=1),结束命令包,并打开显 示。对于地址线A0,A2~A17控制板中已设定好,用户只需控制A1便可完成命 令。 t,CD驱动程序的主要函数如表4.2所示。
表4.2 U=D驱动程序主要函数
Table4.2 Main

flln甜Oll

of LCD Drive Program

类别

函数名称
SdCmd

功能描述 向LCD控制器发送指令, 将寄存器A1置为0

函数参数
Alt_.u8 Command


令 传 递

C'mdEnd

向LCD控制器发送指令, 将寄存器AI置为1,表示 指令发送完毕



WIi忙Pl【G

向LCD控制器发送指令一 个指令包

alt_u8+pkg

SetFgColor

设置字符前景色 设置屏幕前景色 设置屏幕背景色 清屏

alt_u16 color alt u16color alt_u16 color


本 设 置 操 作

SetFontColor SetFontBgColor CIearScreen

Mt_u16 color
alt u8+pstr alt_u16 x、Mt_u16 Y、alt_u8’pstr

Printchar
PrintASCⅡ

屏幕显示一个字符
屏幕上显示ASCII码

ShowB~口

从屏幕的(x,y)坐标处
传送图像数组数据

air_u32 x、alt_u32 Y、alt_u8+pstr

图 形

Draw Dot Draw

画点 画直线

alt_u16 x、alt_u16 Y

Line

alt_u16 xl、alt_u16 yl、alt_u16
x2、alt u16y2


本 操 作
Draw Rect

画矩形

altul6 xl、flt_u16 yl、alt_u16
x2、alt_u16 y2

Fill Rect

填充矩形

aIt_u16 xl、aIt u16 yl、alt_u16 x2、alt_u16 y2

Fill Circle

填充圆

alt_u16 xl、alt_u16 yl、alt_u16 x2、alt_u16 y2

ColorStrlp

画矩形,并变换颜色 画圆,并变换颜色 LcD初始化
在LCD上显示坟t文档 在LCD上显示BMP图像



Circlcs



应 用 程 序

Initlcd read txt showimage

uint8’dat uint8*dat

臣墨;口 兰竺苎竺竺!竺


◇否 F亟互Vi


[亟窭

[至]

结柬

7I

Fi94.1 Write Instruction Packet flowchart

基本设置程序,包括设置前景色、背景色、显示字符、显示ASCII码、清屏 程序流程如图4.2所示。

庄 臣三童 应

40



LCD初始化流程如图4.3所示。

喜喜
图4.3 I.CD初始化流程图

图形基本操作ShowBMP程序流程如图4.4所示。

[堕至 <》
目马』 竺!

应 草


图4.4 showbmp程序流程图

由于I_L'D屏是320×240象素的,每个象素16bit,显示RAM中每个地址放

8bit数据,因此I.CD显示一行图像是显示了320个象素点,对于RAM来说是显
示了640个地址空间的数据.

rcad_txt和showimage两个程序将在电子书阅读系统和图像显示系统中相似描 述。

4.2建立文件系统
对于一个PMP系统来说,存放文件的存储空间需要有专门的部分负责组织、 分配、信息的传输,并对已存储信息进行检索和保护等;从用户来的角度来说, 需要有专门的部分负责存取文件,并且当用户要使用文件时,可以根据文件名方 便地找出某个具体文件。因此,文件系统对于整个PMP系统来说是必不可少的。 本设计的文件系统是建立在#C/OS.II操作系统基础上的,下面将详细阐述构
建文件系统的过程。

4.2.1/lC/OS-II操作系统
/MC/OS.II是著名的源代码公开的实时内核,是一个完整的、可移植、固化、 裁剪的占先式实时多任务内核。/MC/OS.II是用ANSI C编写的,包含-d,部分与微 处理器类型相关的汇编语言代码,使之可供不同架构的微处理器使用。虽然/lC/OS. II是在Pc机上开发和测试的,但gC/OS.II的实际对象是嵌入式系统,并且很容 易移植到不同架构的微处理器上。至今,从8位到64位,gC/OS.II已在超过40 种不同架构的微处理器上运行。 #C/OS—II是一个微型的实时操作系统,包括了一个操作系统最基本的一些特 性,如任务调度、任务通信、内存管理、中断管理等。/“C/OS.II浅显易懂,虽然/lC/OS. II的功能很不完整,比如缺少文件系统、设备管理、网络协议栈、图形用户接口, 但正因为它的不完整,为我们按照需求自定制操作系统提供了机会,/MC/OS.II是
低端实时操作系统和嵌入式应用不错的选择。 /zC/OS.II具有如下特点: 11公开源代码

许多商业实时内核的软件是以源代码形式提供的,#C/OS.II代码于净和谐, 注释详尽,组织有序。
21可移植性

绝大部分/【IC/OS.II的源码是用移植性很强的ANSIC写的。和微处理器硬件相 关的那部分是用汇编语言写的。汇编语言写的部分已经压到最低限度,使得/MC/OS.

Ⅱ可以很方便地移植到其他微处理器上,条件是,只要该微处理器有堆栈指针, 由CPU内部寄存器入栈、出栈指令。#C/OS—II可以在绝大多数8位、16位、32 位以至64位微处理器、微控制器、数字信号处理器(DSP)上运行。从移植了的 /zC/OS升级到#C/OS.II,全部工作一个小时左右就可完成。因#C/OS.II和#C/OS
是向下兼容的,应用程序从/,C/OS升级到#C,/OS.II几乎不需要改动或根本不需要 改动。

3)可固化 /,C/OS.II是为嵌入式应用而设计的,这就意味着,只要工程师有固化手段(C 编译、连接、下载和固化)。#C/OS.II可以嵌入到读者的产品中成为产品的一部分。
4)可裁剪

可以只使用gC/OS.II中应用程序需要的那些系统服务。也就是说某产品可以 只使用很少几个gC/OS.II调用,而另一个产品则使用了几乎所有/“C/OS.II的功 能。这样可以减少产品中的gC/OS.II所需的存储空间(RAM和ROM),这种可
裁剪性是靠条件编译实现的。只要在用户的应用程序中(用#define constants语句)

定义哪些搿C/OS.II中的功能是应用程序需要的就可以了。程序和数据两部分的存
储用量已被最大限度地压低了。

5)多任务
gC/OS.II可以管理64个任务,然而,目前这一版本保留8个给系统。应用程 序最多可以有56个任务。赋予每个任务的优先级必须是不同的,这意味着

/,C/OS—II不支持时间片轮转调度法(Round—robin Scheduling)。该调度法适用于调 度优先级平等的任务。
6)任务栈

每个任务有自己单独的栈,/“C/OS.II允许每个任务有不同的栈空间,以便压 低应用程序对RAM的需求。使用#C/OS一11的栈空间校验函数,可以确定每个任 务到底需要多少栈空间。 乃系统服务 /*C/OS.II提供很多系统服务,例如邮箱、消息队列、信号量、块大小固定的
内存的申请与释放、时问相关函数等。 8)中断管理 中断可以使正在执行的任务暂时挂起。如果优先级更高的任务被该中断唤醒,

则高优先级的任务在中断嵌套全部退出后立即执行,中断嵌套层数可达255层。
∞稳定性与可靠性

#C/OS.II是基于gC/OS的,#C/OS.自1992年以来已经有好几百个商业应用。 #C/OS.II与#C/OS的内核是一样的,只不过提供了更多的功能。

4.2.2/MC/OS—II在Nios II中运行
Altcm公司已经在NiosII软核处理器上移植了pC/OS.Ⅱ,并将/uC/OS.II整合 到Altcra的Nios
Develop

Kits中。在Altm的Nios Development Kits中,提供了一

组已经编译测试通过的/zC/OS.1I例程,供用户参考,并可作为基本的,lC/OS.II程 序框架使用。 Altera的pC/OS.I[onNiosII移植以EasytoUSe为目标,将∥C/OS.II的开发整 合到NiosIDE中,提供了图形界面来完成/MC/OS.II的配置和开发,无需再手工修
改OS CFGh文件。

在NiosIIIDE中,ⅣC/OS.II的使用方法类似NiosII处理器的外设驱动。在IDE 中,Project被指定支持flC/OS.II组件,相应的/[1C/OS.II头文件和源代码就会被包 含到Proioct的路径中,使/[1C/OS.II能够被编译并链接到Project中。
Altera的/zC/OS.II本质上是Nios HAL的一个超集。是/YC/OS.II任务调度器
HAL

和相关API函数在HAL环境上的扩展。在pC/OS.II Project中,所有的Nios
API都可以同样使用。

。uC/OS-1I在NiosII歃核处理器系统中的结构如图4.5所示。
User Program

C Standard Library

MjcroClOS.II^PI

HALAPI

nwicc Driver

Device Driver

Device Drivef

NiOS

II Processor System HarcWare

图4.5flC/OS?II在NiosII软核处理器系统中结构图
Fi94.5 Sffucturcchartof#C/OS—IIbeasedODNiosl[corelxcssion system

4.2.3文件系统
应用最广泛的文件系统当属FAT(File
Allocation

Table,文件分配表)文件系统,

它起源于20世纪70年代末80年代初,是微软MS.DOS操作系统采用的文件系统。 开发之初,它作为一个简单的文件系统,适合于小于500K得软盘驱动器。随着时

间推移,它被加强从而支持越来越大的介质。目前有三种文件系统:FATl2、FATl6、 FAT32。这些FAT子类型的基本区别,即命名规则,在于实际磁盘上FAT结构每

一表项的大小,也就是所占位数。FATl2文件分配表每一表项为12位,FATl6为 16位,FAl32为32位。 当把一部分磁盘空间格式化为FAT文件系统时,FAT文件系统就将这个分区 当成整块可分配的区域进行规划,以便于数据的存储。一般来讲,其划分形式如
图4.6所示。

蒯余扇区

熬瞧区
F^T2 F^t1

第二个分区 件,系BJ,统FA为T3例2Z

31个保留扇区 操作系统DBR

{溯区
刺余扇区

不63鑫q附笸i垦E锗,爿A
第一个分区

第=分区Dl'T4‘JSAll,

数据区
F^T2 F^T1

鬃翱舒{

操作系统DBR 62个保留扇区 (系镜扇区)

皿R+DPm6从
图4.6 FAT文件系统结构图 R94.6
FAT file system structure chm't

下面简要介绍FAT文件系统的结构。
操作系统DBR区(DOS
BOOT

RECORD)即操作系统引导记录区的意思,通

常占用分区的第0扇区共512个字节区(特殊情况也要占用其它保留扇区,我们 先说第O扇区)。在这512个字节中,其实又是由跳转指令,厂商标志和操作系统
版本号,BPB(BIOS Parameter Block),扩展BPB,OS引导程序,结束标志几部 分组成。

FATl6简单来讲由图4.2.3所示的6部分组成(主要是前5部分1。FATl6在 DBR之后没有留有任何保留扇区,其后紧随的便是FAT表。FAT表是FATl6用来
记录磁盘数据区簇链结构的。FAT将磁盘空间按一定数目的扇区为单位进行划分,

这样的单位称为簇。通常情况下,每扇区512字节的原则是不变的。簇的大小一 般是2n佃为整数)个扇区的大小,像51213,1K,2K,4K,8K,16K,32K,64K。 实际中通常不超过32K,之所以簇为单位而不以扇区为单位进行磁盘的分配,是 因为当分区容量较大时,采用大小为512b的扇区管理会增加FAT表的项数,对大 文件存取增加消耗,使得文件系统效率不高。 FATl6DBR参数的偏移Oxll处记录了根目录所占扇区的数目,偏移0x16记

录了FAT表所占扇区的数据,偏移0x10记录了FAT表的副本数目,系统在得到
这几项参数以后,就可以确定数据区的开始扇区偏移了。FATl6文件系统从根目 录所占的32个扇区之后的第一个扇区开始,以簇为单位进行数据的处理,这之前 仍以扇区为单位。对于根目录之后的第一个簇,系统并不编号为第O簇或第1簇, 而是编号为第2簇,也就是说数据区顺序上的第1个簇也是编号上的第2簇。如
图4.7所示。

鼍徽繁㈣fi墨≯螂气|渊E”。募
图4.7 FATl6文件系统结构图 Fi94.7 FATl6 file
system structure

本设计采用ZLG/FS作为PMP系统的文件系统。ZLG/FS是广州周立功单片机

发展有限公司开发的面向嵌入式系统开发的小型文件系统,它与FATl2、FATl6、

FAl32高度兼容,可以直接与个人电脑交换文件。zu趼是可移植的、可固化的
文件系统,可以用于前系统,也可用于多任务环境。
ZLG/FS特点:

1)高度兼容:FATl2、FATl6、FAT32。ZLG/FS可以正确访问由windows98

建立的FATl2、FATl6、脚2逻辑盘,ZL建立的逻辑盘也可以被
windows98正确的访问:

2)可移植:全部代码由ANSIC编写,并且与目标处理器的存储器结构无关 (即无论是存为大端结构还是小端结构均不影响程序的执行),方便用户 移植到自己的目标中; 3)可固化:ZLG/FS为嵌入系统设计,如果您有固化手段,它可以嵌入到您 的产品中成为产一部分; 4)支持多任务操作系统:提供ZLG/FS在/YC/OS.II中使用的接口代码,用户 参考这些代码就可以很方便的的多任务环境下使用zL_G/fs:

5)兼容多种介质:ZLG/FS提供一个底层驱动程序的接口,用户只需要提供
相应的介质的扇区访问就可以在相应的介质上使用ZLG/FS; 6)可配置:得到源码的用户可以对一些参数进行配置。 ZLG/FS已经实现的特性: 11支持多个逻辑盘;

21不同的逻辑盘可以在不同的介质上;
31支持树型目录结构,子目录层数不受限制;

4)支持以FATl2、FATl6、FAl32格式化的逻辑盘; 研支持8.3文件名格式; 6)支持文件读写和目录操作: 71提供格式化(format)范例代码。
zu5/FS结构如图4.8所示。

图4.8ZLG/FS结构图
Fi94.8 ZLG/FS structure chart

应用程序是用户自己编写的程序,是ZLG/FS的使用者,位于整个程序的最高 层。应用程序可以调用ZLG/FS提供的函数(API)对文件和目录进行相应的操作。 文件管理模块和目录管理模块是直接与应用程序接口的模块,位于ZLG/FS 的最高层。大部分用户接口函数(API)都在这两个模块中定义。文件管理模块提 供所有与相关文件相关的函数(API);目录管理模块提供与操作录相关的函数
(API)。

文件分配表管理模块和文件目录表管理模块管理着FAT文件系统的两个重 要的数据结构,用户程序不能调用它们。

逻辑盘管理模块保存着每个逻辑盘的一些基本信息。例如,逻辑盘使用的驱 动程序由这个模块保存。这些信息会被很多其它模块使用,大部分模块都需要调 用这个模块的函数(API)来获取自己需要的逻辑盘的信息。ZL6/FS通过这个模
块管理多个逻辑盘。

高速缓存(Cache)是为了加快逻辑盘的访问速度而加入的。它利用一些RAM 作为Cache保存一些访问过的逻辑盘扇区的内容。如果某次读逻辑盘扇区的数据 时Cache中有其备份,则不再读取磁盘。同时,写数据到逻辑盘扇区实际并不直 接操作逻辑盘扇区,而是先写到Cache中,当某种原因这一片Cache要存储其它 扇区数据时,或是调用相应的函数(API)时才真正的写入逻辑盘。这样就极大的 减少了访问逻辑盘的次数,相应的提高了速度(通常逻辑盘速度比较慢)。这个模
块就是用来管理Cache的。

ZLG/FS可以兼容多种介质和硬件,这是通过底层驱动程序实现的。底层驱动 为上层程序提供与设备无关的接口,ZLG/FS就通过这个接口访问实际的硬件。由
于嵌入式系统的硬件没有标准,千差万别,所以底层驱动程序一般由用户编写。

不过,ZLG/FS已经把与硬件相关的代码压缩到最小,用户只要编写很少的代码就
可以使用ZLG/FS了。同时ZLG/FS给出相应的文档及实例帮助用户编写底层驱 动程序。

实用程序不是ZLG/FS的组成部分,用户的最终代码也可能不包括它们。但 它们又是非常必要的。例如,初次使用文件系统时往往要用到format(格式化逻 辑盘)实用程序初始化逻辑盘。当前版本的Z133/FS包含一个与硬件无关format 的代码(一些实用程序如分区是与硬件相关的)。

4.2.4

SD卡文件系统

一张新的SD卡中是没有文件系统的,我们先在PC机中把SD卡格式化为 FATl6文件系统,并对盘符命名。

4.2.5文件系统的构建
Altera公司已经在Nios II软核处理器上移植了#C/OS.II,并将肛C/OS.II整

合到Altera的Nios

Develop

Kits中。AItera的/MC/OS.II本质上是Nios HAL的一

个超集,是,lC/0S—II任务调度器和相关API函数在HAL环境上的扩展。在pC/OS.
IIProject中,所有的Nios HALAPI都可以同样使用。

首先,在Nios

II

IDE中修改工程属性,在system

h'brary

propertis中将system

library

contens中的RTOS改为MicroC/OS?Ⅱ,其设置为默认设置。这样,我们就

在工程中加入了/zC/OS—II,即工程已经包含了/ⅢC/OS—II的所有文件。

本设计的ZLG/FS文件系统,采用模块化层次结构设计,并使用底层驱动程序 来兼容不同的硬件结构和不同的介质,并且能够很好地兼容FATl6文件系统。 ZLG/FS由多个文件组成,其简要说明见表4.3。
表4.3 ZLG/FS文件系统组成
Table4.3 ZLG/FS flie system structure

文件名
Fat.h
file.c dir.c

所属模块

备注


文件管理 目录管理 文件分配表管理 文件目录表管理 逻辑盘管理 高速缓存管理 /zC/OS一Ⅱ接1:3代码 底层驱动程序 实用程序

ZL肿S的头文件
无 无 用户不能直接调用 用户不能直接调用 无 用户不能直接调用

阻c

眦c
disk.c

RWSec.c
0SFile.c


无 格式化例子

用户编写文件
format.c

ZLG/FS是一个可以配置的软件包。目前,其可配置的选项不多,具体信息参 考表4.4。其配置的方法是在config.h的#include“fat.h”之前定义这些常量。
表4.4 ZLG/FS系统配置一览表
Table4A ZLGfI。S system settings

功能 可以同时打开的 文件数目

常量名 MAX_OPEN_HLES

取值范围
14)x8000

描述 默认值为10。

Cache可缓冲的数 据大小

DISK_CACHE_SIZE

根据实际 情况取值

所有逻辑盘中扇区所占 字节数最大的逻辑盘的

扇区的尺寸,默认值为
512。

Cache可缓冲的扇 区数目 可同时支持的逻

MAX_DISK_CACHES

1—65535

通过实验决定该值,默认 值为100。

MAX

DRIVES

1—,26

根据实际需要,用较小的

辑盘数目

值可以优化代码和RAM




其中,常数MAX
DIsK



I的使用。默认值为1。



cACl扣巳s在ZLG/FS软件包中的Fat.h文件里,它的

设定非常重要,这个常数的设定对文件系统读取数据的速度影响很大。
MAX DISK

CACHES只能通过测试得出最合适的值。其值区间为1-65535在本系

统中,通过测试得知其值取…1能使文件读取的速度达到最大。
ZLG/FS有很多用户可以调用的接口函数,但在本工程只用了其中几个重要的 函数,下面对它们简要说明:
表4.5 ZLG/PS重要用户接口函数
Table,4.5 ImportantAPI fuctions ofZLG/FS

函数名
DiskInit

功能描述

函数参数
无 无

返回值

说明

逻辑盘信息管理 模块初始化

仅在系统 初始化时
调用

AddFileDriver

为ZLG/FS加载一 个底层驱动程序

DiakCommand:驱





动程序接口函数
无 Drive:包含逻辑 盘符地字符串 (路径格式) 无 无 无 无

FileIIlit

初始化文件系统 改变当前逻辑盘

ChangeDriver

ChangeDir

改变当前目录

Path:路径

每一个逻
辑盘都由 自己的当 前目录

FileOpen

以指定方式打开 文件

DirFileNamc:用

文件句柄,
Not_Open_Fl

户使用地文件名
Type:打开方式

LE为不能打 开

FneSeek

移动文件读/写位 置

Handle:文件旬柄 Offset:移动偏移 量



与c语言的
fseek参数 和用法相

Whence:移动模


同,文件指 针换为句


FUeRead

从指定文件读取

Buf:保存读回地

实际读到地

与C语言标

指定大小数据

数据地址 Size:要读地字节 数 Handle:文件句柄

字节数

准库函数 的fread类



其中,FileOpen函数与C语言标准库函数地fopen的参数和用法相同,只是文 件指针体会为文件句柄,需要注意的是:不能同时以读写和/或只写方式打开同一 个文件两次或两次以上。 这几个重要的函数都需要在主程序中调用,在工程中占有很重要的地位。
文件系统的移植过程:

1)修改SD卡参数lba(逻辑块地址),这个常数是SD卡中逻辑扇区编号和 物理扇区编号的差值,每个SD卡都不一样; 2)在ZLG/FS软件包中的Fat.h文件里,修改常数MAX
31修改ZLG/FS软件程序的硬件接口参数。 完成以上步骤,ZLG/FS就成功移植到PMP系统上了。
DISK CACHES;

文件系统主程序流程如图4.9所示。
开始


磁盘初始化

一I
【舔加逻辑盘驱动

l文件系统初始化



l改变到当前逻辑盘


l打开文件所在目录

图4.9文件系统主程序流程图
Fi94.9 Main

flil蜘on of File

syetem flowchart

4.3图像显示系统
图像显示系统就是PMP系统的图片浏览功能,该功能就是将存储在SD卡上 的BMP格式的图像文件通过文件系统读取,进行处理后在LCD上显示。下面我 们将详细阐述图像显示系统的各部分功能和构建过程。

4.3.1

BMP图像文件

BMP(Bitmap-File)[][]形文件是Windows采用的图形文件格式,在W'mdows环 境下运行的所有图像处理软件都支持BMP图像文件格式。Windows系统内部各图
像绘制操作都是以BMP为基础的。Windows 3.0以前的BMP图文件格式与显示设

备有关,因此把这种BMP图像文件格式称为设备相关位图DDB(devicc-dependent bitmap)文件格式。Windows 3.0以后的BMP图像文件与显示设备无关,因此把这 种BMP图像文件格式称为设备无关位图DIB(devicc-indepcndcnt bitmap)格式。BMP 位图文件默认的文件扩展名是BMP或者bmp(有时它也会以.DIB或.RLE作扩展
名)。

BMP文件结构:

位图文件可看成由4个部分组成:位图文件头(bitmap—file header)、位图信息
头(bitmap—information header)、彩色表(color table)和定义位图的字节阵列,它具有

如表4.6所示的形式。
表4.6BMP文件结构
1.ablea.6 B~心脚e
structure

位图文件的组成

结构名称

符号
bmfh

位图文件头
(bitmap—file header)

B11MAPFILEHEADER

位图信息头
(bitmap—file information header)

B盯限御D师DHEADER
RGBQUAD
BYTE

Bmill

彩色表(color table) 图像数据阵列字节

aColors[】 aBitmapBits[】

BMP图像文件结构各个部分详细解释见表4.7。
表4.7位图文件结构表 TableA.7 BMP file
s血'ucture

0D00h

文件标识

2bytes

‘BM’:windows3.1x,9.5,WI"……
‘BA':OS/2 Bitmap Array ‘CI’:OS/2ColorIcon
‘CP’:oS,2

Color Pointer

位 图 文 件 头

‘IC’:O副2Icon
‘PT’:OS/2 Pointer
0002h File Size 1dword

用字节表示整个文件的大


0()06h 000Ah

Reserved

1 dword 1 dword

保留,必须设置为0 从文件开始到位图数据开

Bitmap data offset

始的数据(bitmap data)之间的
偏移量
0()oEh Bitmap Header size 1 dword

位图信息头(Bitmap

Info

Header)的长度,用来描述位 图的颜色、压缩方法等
0012h 0016h

Width
Height Planes Bit Per Pixel

1 dword 1 dword 1word 1 WOrd

位图的宽度,以象素为单位 位图的高度,以象素为单位

位 图

001Ah 00lC五

位图的位面数(该值总是1) 每个象素的位数 1一单色位图(实际上可能有两 种颜色,缺省情况下是黑色和 白色,你可以自己定义)
4—16色位图 8—256色位图 16—16bit高彩色位图


息 头

24—24bit真彩色位图
32--32bit增强型真彩色位图
001Eh

Compression

1dword

O一不压缩

1--RI.E8,使用8位RLE压缩
方式(用BI__RLE8表示)

2--RI_FA,使用4位RLE压缩
方式(用BI_RLE4表示) 3--Bitfields,位域存放方式(用

BI_BITFIELDS表示)
0【12:2h Bitmap Data Size
1 dword

用字节数表示位图数据的大 小,该数必须是4的倍数

0026h 002Ah 002Eh 0032h

HResolotion VResolotion Colors

1dword 1 dword 1 dword 1 dword

用象素/米表示的水平分辨率 用象素/米表示的水平分辨率 位图使用的颜色数, 指定重要的颜色数,当该域的
值等于颜色数时(或者等于0

Important Colors

时),表示所有颜色都一样重要 根

Palette N’4 byte

调色板规范。对于调色板中的

BMP版 调 色 板 数 据 本的不 同而不 同

每个表项,这4个字节用下述 方法来描述RGB的值:1字
节用于蓝色分量

1字节用于绿色分量1字节用
于红色分量l字节用于填充符 (设置为0)





Bitmap Data

XbvtgS

该域的大小取决于压缩方法及 图像的尺寸和图像的位深度,
它包含所有的位图数据字节, 这些数据可能是彩色调色板的

BMP版 本及调 图


数 据

色板尺 寸的不 同而不 同

索引号,也可能是实际的RGB 值,这将根据图像信息头中的 位深度值来决定。

1、位图文件头重要参数说明:位图文件头包含有关于文件类型、文件大小、 存放位置等信息。 bfrype:文件的类型,该值必需是0x4D42,也就是字符。BM’。 bfSize:文件的大小,用字节为单位 bfOffBits:从文件头开始到实际的图像数据之间的字节的偏移量。这个参数是 非常有用的,因为位图信息头和调色板的长度会根据不同情况而变化。所以你可 以用这个偏移值迅速的从文件中读取到位数据。
2、位图信息头重要参数说明:

bmiHeader:B11MAP矾F0}玎弘LDER结构,其中包含了有关位图的尺寸及位
格式等信息。 bmiColors:彩色表RGBQUAD结构的阵列,其中包含索引图像的真实RGB

值。 biWidth:图像的宽度,以象素为单位。
biHeight:图像的高度,以象素为单位。

biplanes:为目标设备说明位面数,其值将总是被设为1。 biBitCount:比特数/象素,其值为1、4、8、16、24、或32。
11

biBitCount---1:位图最多有两种颜色,图像数据阵列中的每一位表示一个 象素; biBitCount=4:位图最多有16种颜色。每个象素用4位表示,并用这4 位作为彩色表的表项来查找该象素的颜色;

21

31

biBitCount=8表示位图最多有256种颜色。每个象素用8位表示,并用这 8位作为彩色表的表项来查找该象素的颜色;

舢biBitCount=16:位图最多有216种颜色。每个色素用16位(2个字节) 表示。这种格式叫作高彩色,或叫增强型16位色,或64K色。它的情况
比较复杂,当biCompression成员的值是BI RGB时,它没有调色板。16 位中,最低的5位表示蓝色分量,中间的5位表示绿色分量,高的5位表 示红色分量,一共占用了15位,最高的一位保留,设为0。这种格式也

被称作555 16位位图。如果biCompression成员的值是BI

BITHELDS,

那么情况就复杂了,首先是原来调色板的位置被三个DWORD变量占据,

称为红、绿、蓝掩码。分别用于描述红、绿、蓝分量在16位中所占的位
置。在Windows 95(或98)中,系统可接受两种格式的位域:555和565,

在555格式下,红、绿、蓝的掩码分别是:Ox7C00、咴03E0、0)【001F, 而在565格式下,它们则分别为:OxFS00、OxO?EO、Ox001F。你在读取 一个像素之后,可以分别用掩码“与”上像素值,从而提取出想要的颜色分 量(当然还要再经过适当的左右移操作)。在NT系统中,则没有格式限
制,只不过要求掩码之间不能有重叠;
51

biBitCount=24表示位图最多有224种颜色。这种位图没有调色板 (bmiColors成员尺寸为O),在位数组中,每3个字节代表一个象素,分 别对应于颜色R、G、B:

61

biBitCount=32表示位图最多有232种颜色。这种位图的结构与16位位图 结构非常类似。

biSizelmage:图像的大小,以字节为单位。
3、位图数据

图像的每一扫描行由表示图像象素的连续的字节组成,每一行的字节数取决 于图像的颜色数目和用象素表示的图像宽度。扫描行是由底向上存储的,即阵列

中的第一个字节表示位图左下角的象素,而最后一个字节表示位图右上角的象素。 倒向DIB的原点在图像的左下角,而正向DIB的原点在图像的左上角。同时,每 一扫描行的字节数必需是4的整倍数,也就是DWORD对齐的.

4.3.2

LCD屏显示数据

LCD屏幕显示数据的格式如图4.10所示。

-捌h” 0 l 2 3

图4.10 LCD屏幂显示数据格式
Fi94.10The data stmdⅢeofI.ED display

本实验平台的LCD屏只能显示16bpp的RGB格式图像,由上图可以看出LCD 显示屏显示图像是按照象素点,从图像的第一个象素开始,从左到右逐行显示图 像,每个象素的代码按照G:G。Go风口3口2且BoR.月,R:RI凡G,G。G3的格式,存储在
LCD屏的显示RAM中。

4.3.3

BMP图像在LCD上显示

BMP图像显示函数说明如表4.8所示。
表4.8 BMP图像显示主要程序说明

函数名称
函数参数

showimage
uint8’buf

功能描述
返回值 特殊说明

在LCD上显示存储在SD卡中的BMP图像
无 该函数可以显示16bpp和24bpp的BMP图像

BMP图像显示程序showimage流程图如图4.11所示。

『疆进文件系绕取誓露繁据
~’




I”

读BMP文件头

,+j

图像数据重俳



发送9]LCDI示

图4.11 BMP图像显示沉程图

Fi94.11 BMP display

flowchart

色彩深度转换:现在广泛应用的BMP图像有16bpp(位深度)和24bpp两种。
bpp(位深度)是指每个象素的位数,16bpp的位图最多有216种颜色,每个色素

用16位(2个字节)表示。这种格式叫作高彩色,或叫增强型16位色,或64K

色。可见光的三元色——红(R)、蓝(B)、绿(G),一个象素用RGB分别表示
红色、绿色和蓝色的强度,由于人眼对绿色最敏感,所以绿色比红色和蓝色多占 一位来保证象素颜色信息的准确。24bpp的位图,表示位图最多有256种颜色。每 个象素用8位表示,
BMP
24 to

即凡G。Bs,红色、绿色和蓝色强度分别用8位数据来表示。

16:用硬件的方式将24bpp图像转为16bpp图像。因为在实验板

上LCD液晶屏显示的象素图像格式为:565,即R;G。风,所以在送到LCD显示

RAM之前要先对其进行色彩深度转换,将风G最格式转换成足G。B,格式。在每 个象素的三个颜色中,总是高位的数据代表的象素信息最重要,反之,越不重要, 因此,我们在BMP
24 to

16模块中用VHDL语言实现24bpp到16bpp的逻辑功

能:采用按位与的方法取R的高5位、G的高6位、B的高5位,然后按照R,G。B5 格式拼成16bit数据,送LCD显示,达到了比较好的显示效果。 图像数据重排:BMP图像的每一扫描行由表示图像象素的连续的字节组成, 每一行的字节数取决于图像的颜色数目和用象素表示的图像宽度。扫描行是由底 向上存储的,即阵列中的第~个字节表示位图左下角的象素,而最后一个字节表 示位图右上角的象素,因此,我们需要从图像文件的头信息中读取图像的长和宽, 来确定每个象素的位置,然后将它重新排列成LCD显示RAM中的象素存储顺序, 才能在LCD屏上正确显示图像。

4.4音频播放系统
音频播放功能是PMP系统重要的娱乐功能之一,该系统支持现在最流行的 WAV和MP3格式音频文件的播放。

4.4.1

WAV音频文件播放

WAV格式是微软公司开发的一种声音文件格式,被Windows平台及其应用程 序广泛支持。WAV格式支持许多压缩算法,支持多种音频位数、采样频率和声道, 采用44.1kHz的采样频搴,16位量化位数。因此WAV的音质与CD相差无几。用 不同的采样频率对声音的模拟波形进行采样可以得到一系列离散的采样点,以不 同的量化位数(8位或16位)把这些采样点的值转换成二进制数,就产生了声音 的WAV文件,即波形文件。该格式记录声音的波形,故只要采样率高、采样字节 长、机器速度快,利用该格式记录的声音文件能够和原声基本一致,质量非常高, 但这样做的代价就是文件的存储量惊人。 因为way格式记录声音的波形,故只要采样率高、采样字节长、机器速度快, 利用该格式记录的声音文件能够和原声基本一致,质量非常高,存储量惊人,但 是way文件没有经过处理和压缩,所以way文件作为最简单的音频文件之一,无
需解码或处理,可以直接播放。

wav文件播放程序流程如图4.12所示:

58





图4.12 way文件播放流程图
Fi94.12 way file playing flowchart

4.4.2

MP3音频文件播放

1、MPEG-1 Layer3解码 MPEG.1 LAYER 3就是我们熟知的MP3格式,码流通过数据流解包获得每一

帧的同步字,根据对起始位置信息的解析进而获得实际一帧的音频数据对头信息 的分析从而获得相应的解码参数,同时对边信息和主数据实现分流,边信息部分
码流通过解码得到Huffman解码信息和逆量化信息,而主数据码流根据Huffman

解码信息在Huff'man模块中解出量化前数据,结合逆量化信息在逆量化模块中得

到频域数据流。由于MP3格式文件支持多种声道模式所以根据帧头的立体声信息 (单双声道联合立体声强度立体声)对逆量化结果进行立体声处理最后通过频域到 时域的映射变换模块重建数字音频信号。
MPEG.1

广匡习一尽(习
图4.13 MPEG一1 LAYER 3解码流程图
Fi94.13 MPEG?1 LAYER 3 Decoding flowchart

LAYER

3解码算法简要流程如图4.13所示。

1)数据流解包:

由于MP3为了获取更高的数据压缩比采用了较为复杂的比特流。当前处理帧 的主数据(包含缩放因子和Huffman码字)起始位置一般不在该帧的边信息后,而
是根据边信息中指针main
data

begin的值决定主数据的分配是由下面这种方式

来完成的:当下一帧的头到达输入缓冲区时,所有的主数据都驻留在输入缓冲区 中。当解码主数据时必须跳过头和附加信息。头信息的长度时4字节,附加信息 的长度在单声道模式下时17字节,在其它模式下都是32字节,由于
main_data

begin为9bit,其最大值可达511×8=4092bit。每一帧包含的比特数可

以是不定的,公式为:

帧内比特数=堕堕铲

(公式7)

而对于Layer 3每帧由1152个采样,采样率有32kHz,44.1kHz,48kHz三种,
比特率可从32kbps到320kbps不等。 ∞Huffman解码:

MP3用霍夫曼编码来压缩量化值,霍夫曼编码是一种变长码。因为576道频 率线中,较低频率处的值往往比较大,较高频率处的值往往比较大并且有0游程。 因此,576道频率线分成5个区:0区(Zero regio.)只包含数值0,计数1区(countl region)只包含着3个值,即一1,0,1。大值区的数值从--8206到8206。 根据信号的统计特性和最大的量化值,来选择不同的霍夫曼码表。计数1区

60

对应着两个码表,一个码字对应着连续4个值。 计数1区所占有的频率线数并未编码在码流中。只有当颗粒的主值区结束, 计数1区解码完毕之后,才能间接的知道计数1区的结束。 31逆量化: 逆量化的公式为: 对于短块:

灯∽;s辔嘏(j『)×陋(外3×≯咖脚妇卜21—帅髓鲫枷出1


。,面面鬲面磊而石可可两而碉 ^-
(公式8) 对于长块:

盯(j『)=s辔嘏(m b(.『枷4 2}舭k弘妇㈨


×2面磊而面面蕊面翻同而可而面而磊硐
(公式9)

其中:xr[j]是逆量化恢复的样值,isD】为Huffman解码所得的量化值,
scalefac_multipiler为2

m.5或1取决于是否把边信息部分的scalefac[鲥分别设为0

或1;subblock_gain[window]为施加于一个粒度组中三个短窗口之一的增益偏置。 Preflag设置为O或1,取决于是否施加了预加重。Pretab由标准指定的预加重因子 表确定。
钔立体声处理: 在MPEG-1 Layer3中除了支持简单的单声道(single)和双声道(dual)外,还支持

较为复杂和高效的MS.立体声模式和强度立体声模式,以及两者兼有的模式。
MS一立体声模式:

在MS立体声模式中,传送的是规格化的中间/旁边声道M。/si值,而不是左、 右声道厶/g值,这时厶/R,重构时使用下面的等式:





肘一 M~

(公式10)





铲茅
(公式11)

值吖j在左声道中传送,值Si在右声道中传送。考虑到一般情况下,左右声道 的采样是较为接近的,而采用了jls一立体声模式后,使得原先两个较为接近的值变 换为一个均值和一个小值,由于Layer 3对主数据采用了Huffman编码,采用这种 方式对于小值而言所耗费的比特数较小。 强度立体声模式: 利用人耳听觉对声音高频段方向的敏感性只取决于各声道声音强度的差,与 信号波形信息基本无关的特性,当比特率紧张时,只传送信号的和以及分配因子 (is.ratio),以保持声音信号在特定比例因子频带内的空间位置。这种关系虽然在编 码时会带来较大的复杂度,单增加的预算量却是可以忽略的。通常采用了立体声 模式后可以节省10kbps.30kbps的比特率。
在Layer 3中强度立体声模式是指定幅值(象通常一样经过右声道的比例因子)

和立体声位置担一pos。[s/b1。对于右声道,传送的是/s—pos。留参1,丽不是比例因 子。根据下面的公式,用立体声位置来到处左右声道信号。

is_旭ff口;tan(is—pos。×云)

‘-‘×焉 墨-羁×志

(公式12)

(公式13)

(公式14)

以强度立体声解码的比例因子频带的下界限来自右声道的“零.部分”。高于此 界限时,强度立体声的解码使用右声道的比例因子作为强度立体声位置,在一个 比例因子频带中强度立体声位置位7表明此比例因子频带不是强度立体声解码。 51频域到时域的映射: 此部分最终重构音频信号,它包括了以下的一些子模块如图4.14所示。

…叫滑迭h虢

广—————]厂—————]厂——————]厂—————]P(M
}.叫矾Dcr

b-卅频率反转

I.,.....................—....J【............................一—...—J

L..........—J【..................一—..1
domai to虹mc domai

卜叫综合子带嫩I



图4.14频域到时域映射过程图 Fi94.14 The mapping flowchart of Frequency

消减混迭是为了正确重构数据,我们人为的在解码过程中加入失真。这个模 块之后是进行IMDCT交换,公式如下:

如喜噩cos(丢(2/+1+2)(2k+1)),i=。到n.1
其中,也是频率线,对短窗口说11为12,对长窗口为36a
综合子带滤波是分析子带滤波的逆过程,其过程如下:

(公加)

渊口一田一比
、 ~









√ ‘






























睦口?口
Fi94.15脚ated
2、MP3帧格式 图4.15综合子带滤波过程图

口-旺
subband坷lefing process chLrl

帧是解码MP3的码流的一个重要概念。每一帧包含着1152个单声道或者是立 体声的频域样本信号,1帧又被均分为两个颗粒,每个颗粒含有576个样本信号。
每个颗粒又被划分为32个子带,每个子带有18道频率线。 频谱的范围从0到采样频率的一半。32个子带将频谱等分为32份,每个子带

包含着18个信号,这些信号已经由修正的离散余弦变换转换到频域。每个颗粒的
576道频率线同时又被分成21个缩放因子带,缩放因子带设计的与临界频带尽可 能的一致,缩放因子带主要用于样本的逆量化。

MP3帧由四部分构成:帧头、边信息、主数据、辅助数据,如表4.9所示。
表4.9MP3帧格式
Table4.9 MP3 fl'dmt:format

帧头都是32位,包含同步码和编码参数。同步码由12位1组成,用于在码 流中找到一帧的开始。编码参数由12个字段组成,即关于层号、差错保护指示位、 码率、采样频率、填充槽、立体声模式、版权等。 边信息中包含着一系列解码主数据的参数,控制着霍夫曼码表的选择、窗的 切换、增益控制、主数据开始指针等。边信息在单声道模式中是17个字节长,在

双声道模式中是32个字节长。 主数据部分由两部分组成,编码的缩放因子值与霍夫曼编码后的码字。主数 据的长度取决于码率与辅助数据的长度。缩放因子部分的长度取决于缩放因子是 否重用。窗的长度,即短块还是长块,缩放因子用于样本的逆量化。编码时随着 时间不同,霍夫曼编码后所需的位数不同,放可采用变码率格式。不过有时实际 应用中要求固定的码率,这里就采用位库技术。位库技术使得前面帧未用的位配 额,可以留给后面的帧用。 边信息中的主数据开始指针(main.data.begin)。指明了该帧的主数据是否放在 前面帧的位配额中,每一帧的主数据都放在该帧及其前面帧的位配额中。位库的
最大容量是511个字节。

1)MP3解码程序实现 MP3码流通过数据流解包获得每一帧的同步字,根据对起始位置信息的解析 进而获得实际一帧的音频数据对头信息的分析从而获得相应的解码参数,同时对 边信息和主数据实现分流,边信息部分码流通过解码得到Huffman解码信息和逆 量化信息,而主数据码流根据Huffman解码信息在Huffman模块中解出量化前数
据,结合逆量化信息在逆量化模块中得到频域数据流。由于MP3格式文件支持多

种声道模式所以根据帧头的立体声信息(单双声道联合立体声强度立体声)对逆量 化结果进行立体声处理最后通过频域到时域的映射变换模块重建数字音频信号。
MP3解码程序流程如图4.16所示。

『保存量化数据,获取比例因子 J

H nfire

霉圃一
an懈码


!一j一{一
图4.16 MP3解码程序流程图 Fi94.16 MP3 decode program flowchart

Huffman解码将MP3压缩码流中的变长码字解码秤频域谱线,是MP3解码的
重要部分,Huffman解码流程如图4.17。

、—------------.-—-------------一

舍今 令


——......j

l竺r

崮N}崮
l竺竺卜厂=:—L=]:

读增}啦J. 1



输衄碰缸d稠疽

图4.17 Huffman解码框图
Fi94.17 Huffman decode program flowchart

立体声处理程序简单流程如图4.18所示。



图4.18立体声处理框图 Fi94.18
Stereo processing flowchart

FPGA内部的sram作为MP3解码后的PCM码流的缓存,建立乒乓机制,将

PCM码流通过audio模块送到WM8731进行解码播放,同时,MP3继续解码,直
到解码结束。

4.5视频播放系统
本设计的视频播放系统旨在播放MPEG4格式的视频文件,对视频文件的解码 使用xvidcore.1.0.0.rc3版本的MPEG4开放源代码作为解码程序,其中包含了 MPEG4编码部分和MPEG4
Simple

Profile的解码部分,以及基于其他系统的汇编

加速函数。因此,在具体应用的时候还需进行一些修改。 在视频流方面,由于实验平台上的液晶显示屏分辩率是320×240,所以我们 选择MPEG4 QCIF(176X 144)Simple Profile进行MPEG4解码,为此,我们根据
MPEG4

Simple Profile的特性,通过专门的视频制作工具制作了QCIF(176×144)

Simple Profile编码视频流。

jE塞銮煎太茔亟±竺焦监塞

垂统煞挂丝让

4.5.1

MPEG4标准

MPEG4标准的规划从1995年开始,至今仍然针对各个层面进行修订,这项 技术包括16部分,本设计是基于Part2视频部分。MPEG4和以前的视频标准
MPEGl、MPEG2及H.26X系列相比最重要的特征有:

11编码是基于对象的。这样就使得操作、控制对象成为可能,而传统的编码 都是基于帧的,显然无法对对象进行操作,而MPEG4可以控制对象的比 特率,即在带宽低时,可以根据对象的重要性进行比特的科学分配,从而 使图像的主观质量得到保证。 2)MPEG4在时域和空域有灵活的可扩展性。可根据现场带宽和误码率的客
观条件在时域和空域进行扩展。

MPEG4解码过程大致为如下步骤: 1)对比特流中的视频序列vS解码,一个视频序列由一个或多个视频对象
VO组成:

2)对视频对象VO解码。一个视频对象通常包括三种信息:运动信息、形状
信息和纹理信息:

3)对视频对象层VOL解码。某个视频对象在某一个时刻的信息称为视频对 象平面VOP,这是MPEG4编码的基本单位; 4)对视频对象平面VOP的头信息解码; 5)对一个视频对象平面中的运动矢量和宏单元解码; 价对一个宏单元中的块(block)解码。
图4.19所示为MPEG4解码的一般流程。从图中可以看出解码过程主要是针

对VOP的解码。VOP中的主要信息包括形状、运动、纹理这三类信息。对VOP 的解码就是围绕这三方面进行的。

图4.19 MPEG4解码流程图
Fi94.19 MPEG4 decoding flowchart

通过对MPEG4的这几个Profile的分析比较,结合硬件实验平台的条件,我 们选用MPEG4
Simple Profile作为解码器设计的压缩标准。

4.5.2

MPEG4解码实现过程

为了使源代码能够在NiosII平台上运行,首先需要对代码做简化修改:
1)删除编码部分;

2)将代码中基于其他操作系统的汇编函数改写成C函数或Nios II函数; 3)代码输出是Yuv视频格式,而LCD显示屏是RGB格式的,因此需要加 入YUV到RGB的格式转换部分。
MPEG4 SP级解码如图4.20所示。

圃盛
匡 而一刁-1
图4.20MPEG4SP解码流程图
Fi94.20 MPEG4 SP decode flowchart

1、码流解释:从码流中得到头信息,并把对我们有用的信息保存下来。接着 把纹理数据交给纹理解码模块,运动数据送交运动解码模块。实际上也就 是把对码流的控制权交给它们。将输入基本视频流解析,是一个拆包的过 程。由于其码流结构不同,对于shortheader和MPEG4由不同的方法。这 部分功能可分为三个部分: 1)固定长度解码:slice层以上码流每部分为固定长度编码,这部分主要 完成找同步头(包括vol头、vop头、slice头),提取各种头信息; 荔变长码解码:宏块层采用了变长码编码,这部分主要解析运动矢量, dct系数。这部分是码流解释的核心,我们采用状态机和lei—s帅基于 PLA的VLC解码算法。首先必须根据已经解码的信息来判断该查哪一 个码表。码表之间的转换是通过状态机的转换来实现的。然后用lci— sun算法进行VI.C解码; 如图4。21所示,输入码流每次读入4个字节放入lower rcl;中,而lower
reg

中的内容存入upper reg中,barrel shifter把64位码流左移sum位。PLAbased codetable根据当前的状态查相应的码表,输出对应信息和code 取码流指示load。
length。Adder

负责累加码子长度,指示barrel shifter要左移的位数,当累加至32后,发出读

Data咂


图4.21变长码解码结构框图 Fi94.21
Variable length Decoding flowchart

3)运动矢量差分解码,运动矢量采用的是差分编码,变长码解码解出差
分矢量,这部分解出绝对矢量,提供给补偿模块。 2、纹理解码实现如图4.22所示。

图4.22纹理解码实现框图 Fi94.22
Texture decoding flowchart

1、反扫描:主要功能是将一维数组QFS转换为二维数组PQF的方法。其
中,QFS表示变长解码输出端的数据,PQf表示反扫描的结果。反扫

描主要有三种方式:水平交替扫描、垂直交替扫描和锯齿形扫描; 21帧内宏块系数的预测:解码系数的预测过程,这个过程只在非短头格 式下的帧内宏块中进行。当短头格式情况下,或者此宏块不是内部宏 块时,这个过程不使用。如果需要预测,则DC预测肯定要做,AC预

测时可选择的;

3)反量化:系数的二维数组QF,通过逆量化产生重建DCT系数。 3、运动补偿解码:解码过程包括,根据从码流中解析到运动矢量的数据得到 当前宏块的运动矢量(可能不止一个),然后根据当前宏块的运动矢量, 从参考帧中找出相应的参考宏块。如果运动矢量不时整象数值,还需要通 过内插来获得参考宏块。一个帧间宏块可以只有一个运动矢量,也可以有 四个运动矢量,每个亮度块都对应~个运动矢量,这种模式被称为四矢量 模式。码流中的mcbps变长码字决定有几个运动矢量。

4.5.3视频后处理
MPEIG4解码后的数据是1420的YUv格式信号,需要通过色彩空间转换为 RGB信号。1420的Yuv格式,Y表示亮度、u和v表示色度,其中U表示和红 色的色差、V表示和蓝色的色差,四个Y共用一个Uv,所以每次计算出四个点的 R、G、B值。虽然YUV格式的数据量比RGB格式小,但是在“m屏上显示时,

最终需要用到RGB格式,所以在图像压缩过程中采用HⅣ格式,而在解码完成
后需要显示时再转换为RGB格式。YuV到RGB格式的转换由gx GxJrUV_to_RGB完成。 DMA从SDRAM中将解码后的视频数据以帧为单位发送,每发送完一帧DMA
通知Nios II CPU传送完毕,CPU把下一帧的地址和数据块大小发送给DMA启动
tft lcd

IP中的

下一次数据搬移。DMA发送的一帧数据经过Gx

YUV to

RGB色彩空问转换为

24bpp得RGB图像,再经过Bmp_24_to_16色彩深度转换为16bpp的RGB格式数

据后发送到LCDRAM中,在I.L'D屏上显示,显示完一帧图像刷新屏幕显示下一
帧图像。

4.6电子书阅读系统
电子书阅读(也称为支持文本阅读耵clr)功能是PMP的时尚娱乐功能之一。 近几年,随着internet的普及发展,越来越多的书籍以盯盯文档的电子书形式在 网上共享,越来越多的人推崇这种经济的书籍方式,使得手机上的电子书阅读功 能风靡一时。电子书阅读功能已经成为娱乐设备必不可少的功能之一,在PMP上 看电子书形式就如同在电脑上浏览电子书一样。 TXT文件是微软在操作系统上附带的一种文本格式,是晟常见的一种文件格 式,存储为ASCII格式,早在DOS时代应用就很多,主要存文本信息,即为文

字信息,现在多用的操作系统得使用记事本等程序保存,大多数软件,如记事本,
浏览器等都可以查看。

实验平台上的LCD控制器T8000A内置了ASCII码,并且由256KROM中文 字库版本可选,因此,我们能够很方便地在LCD上显示汉字和字符。我们可以通
过软件方式实现:字符显示、分行显示、满屏显示、翻页,这些基本电子书阅读 功能。

TXT文档在LCD上显示软件编程实现流程图如图4.23所示。

[磊画




图4.23

1Ⅺ文档显示流程图

Fi94.23 TXT file display flowchart

韭塞奎亟太堂亟±星焦逾奎

丕统毯往盈让

4.7系统运行
硬件系统在Quanus II中全程编译通过后,将生成的SOF文件下载到FPGA芯 片中;在此硬件系统上在NiosIIIDE中编写、调试软件程序,编译通过后,通过 JTAGUART接口将编译好的程序代码下载到FPGA中,然后全速运行,通过实验 平台上的按键切换就可以看到PMP系统的各个功能效果了。

5课题总结
本课题用SOPC技术在一片FPGA和少数外设上实现了便携式媒体播放器 (PMP)的基本功能,并针对一些影响系统性能的部分进行硬件加速,改善了系
统的性能。该PMP系统在100MHz的系统时钟下实现的功能包括:图片浏览,支

持16bpp和24bpp两种格式的BMP文件显示;MPEGl layer3解码,流畅播放MP3、 wnla格式的音频文件;实现MPEG4 QCIF(176×144)Simple Profile解码,满足基
本播放要求;电子书阅读,支持TXT文档显示阅读。

该方案的优势在于该系统功能改进的灵活性,在不改变硬件平台的情况下, 可以方便对系统进行增删和优化,这是传统ARM方案无法达到的。 PMP系统的FPGA编译报告如下表所示:
表5.1.1 FPGA编译报告
Table5.1.1 FPGA compilation report:

Total logic elements Total registets TotaJ pins Total memory bits

5095/18752(27%)
2450

120/31508%1 127488/239616(53%)
1/4(25%)

1btalPULs

从上表可以看出FPGA的资源还有很大部分的剩余,因此该系统还存在较大 的优化空间: 11可以将更多的用软件执行的费时操作转化为硬件实现,如MP3解码和
MPEG4解码的刀口CT部分等;

∞可以针对NioslI处理器特点,对软件算法优化,加快系统的处理速度,提
高系统的性能。

3)优化现有功能,如MP3播放的同时LCD屏显示播放界面,显示音频文件
信息和波形。

另外,本设计由于LCD屏刷新频率不高的限制,我们选择MPEG4 OCIF(176 ×144)Simple Profile解码,它仅是一种最简单的MPEG4解码,对视频图像的处理 衙单,视频播放效果不理想。因此,除了对系统的改善,我们还能从硬件上改进 系统性能,如:选择处理速度更快的FPGA、选择刷新频率更快的LCD液晶屏。

参考文献
【1】王建校,危建国.‘sOPc设计基础与实践》.西安电子科技大学出版社.2006年4月

【21王诚,吴继华,范丽珍,薛宁,薛小刚.(AlteraFPGA/CPLD设计》.人民邮电出版社.2005
年7月 【31江国强.(SOPC技术与应用》.机械工业出版社.2006年9月 f41潘松,黄继业,曾毓.(SOPC技术实用教程》.清华大学出版社.2005年3月 f51周立功.(ARM嵌入式系统基础教程》.北京航空航天大学出版社.2005年1月 【61王田苗.《嵌入式系统设计与实例开发》.清华大学出版社2003年10月

f刀候伯亨,顾新.(VHDL硬件描述语言与数组逻辑电路设计》.西安电子科技大学出版
社.1997年9月 『81 Altera.《Nios II Processor Reference Hand book).Altera Corporation.2005年5月 『91 Altera.(Nios II Software Developer’S Hand book).Altera Corporation.2005年5月 【10】Altera.{Nios II Embedded Peripherals Hand book).Altera Corporation.2005年5月 【儿】MPEG-4 Industry Forum,”MPEG-4 Simple and Advanced Simple Profiles".2002年 f121程培星(MPEG4视频解码系统的设计与实现》.西安电子科技大学.2005年1月 『13】毛利萍《h但3音频编解码运算中的IMDCT算法研究及其FPGA实现》.2007年5 月 【141王本峰.(MP3 SOc解码系统的设计与实现》.上海交通大学.2005年1月 f151王命延.余爱军.《一种加载在uCOS.II内核上的嵌入式文件系统》.南昌大学学报.2005 年4月.第29卷第2期

【16】蒋小艳.《基于BMP图像的LCD点阵数据提取实现》.现代电子技术.2006年第11期 【17】Cai
Suwei.Xiao Xingjie.Zhang Jiahao.(Embedded Network MP3 Playing System)

f181泰国启.(ARM9上MP3播放器的研究与实现》.北京邮电大学.2005年2月

【19]Mierium

Technologies

Corporation.《Graphical

User

Interface

with

Graphic

Library》.Micrium Technologies

Corporation.2002
MP3
Playing

『201郝育闻.(MP3解码器软件实现》.大连理工大学.2000年3月 121】Cai Suwei.Xiao Xingiie.Zhang Jiahao.‘Embedded Network
System}.Nios II Embedded Processor Design

Contest-Outstanding

Designs 2005

122】Rob
2002

KOellCn.(Overview of the MPEG-4 Standard)).ISO/IEC JTCl/SC29/WGll N4668.

『231周立功.(ARM嵌入式系统软件开发实例(1)》.北京航空航天大学出版社.2004 『241周立功.(ARM嵌入式系统软件开发实例(2)》.北京航空航天大学出版社.2006 f251
SanDisk Corporation.《SD

Memory Card Specifications).2001

『261周立功.(12C总线规范》.广州周立功单片机发展有限公司

作者简历
曾璇,女,1983年7月生,中共党员,专业:电路与系统
教育经历: 2005年9月一至今北京交通大学电子信息工程学院攻读电路与系统专业硕士学位 2001年9月一2005年7月北京电子科技学院电子信息工程专业学士学位 工作经历: 2007年6月一至今高等教育出版社实验课程研发中心研发实习 2006年9月一2007年5月北京革新科技有限公司研发实习 攻读学位期问发表的论文: 在2007年第4期(总第136期)‘仪器仪表标准化与计量)发表论文:<基于NioslI 软核处理器的嵌入式MP3播放器》


相关文章:
基于NIOS II嵌入式处理器实现LCD的控制
基于NIOS II嵌入式处理器实现LCD的控制_信息与通信_工程科技_专业资料。随着半导体...在设计中利用 FPGA 的 Altera 的 SOPC Builder 定制 NIOS II 软核处理器及其...
嵌入式系统Nios IISOPCFPGALinuxuClinux图形用户界面硕...
嵌入式系统Nios IISOPCFPGALinuxuClinux图形用户界面硕士论文_专业资料。嵌入式系统...因此,本文主要研究 基于 Nios II 软核处理器的嵌入式系统应用。Nios II 是 ...
基于Nios_II_的贪吃蛇游戏设计(电子设计)
摘要基于 NiosII 软核处理器和 LED 点阵显示屏的贪吃蛇游戏内容是: 一条蛇在...Nios II 片上系统的设计片上系统的设计核心是 Nios II 嵌入式 CPU 软核...
NIOSⅡ经典教程
Nios II系列嵌入式处理器扩展了目前世界上最流行的软核嵌入式处理器的性能,把...了最基本的多功能性,设计师可以以此来创建一个最适合 他们需求的嵌入式系统。 ...
基于Nios II贪吃蛇的游戏设计(电子综合设计)
基于Nios II贪吃蛇的游戏设计(电子综合设计)_计算机软件及应用_IT/计算机_专业资料...Nios II 系统的结构如下: Avalon 4 (1) 、Nios II 嵌入式 CPU 软核 Nios...
基于fpga的嵌入式系统设计——复习题
2、 填空题 (1) NiosII 处理器有三种运行模式: ___ ,___ ,___ 。(2)...NiosII 软核的 FPGA 系统才是嵌入式系统 B.基于 FPGA 的嵌入式系统是在 FPGA...
基于NIOSII的VGA显示电路设计
基于 NiosII 软核这种设计方法的嵌入式 VGA 显示系统,可以在不使用 VGA 显示卡...本课题搭建的是一个以 Nios II 软核处理器为核心的数据处理平台,编程至 Altera...
基于nios的flash数据烧写
本文简单介绍了基于 Nios II 的可编程片上系统的系统 设计,并以 Flash 数据...Nios 嵌入式 CPU 是 一种专门为 SOPC 设计应用而优化的 CPU 软核, Nios II...
电子系统设计与EDA技术期末作业
电子系统设计与 EDA 技术期末 作业——基于 Nios II 的奥运倒计时牌 学生:丁...摘录本系统采用 SOPC 设计包括以 NiosⅡ软核处理器为核心的嵌入式系统控制,以 ...
重点基于NiosⅡ的虹膜识别系统的设计
重点基于NiosⅡ的虹膜识别系统的设计_专业资料。重点...位软核处理器,且其内核仅占用很少的逻辑资源,另外它...对 NIOS 嵌入式系统设计,对 SOPC 等等的认识都有...
更多相关标签:
nios ii软核开源吗 | 软核处理器 | 嵌入式微处理器 | 嵌入式处理器 | 嵌入式处理器分类 | intel嵌入式处理器 | 微处理器与嵌入式系统 | 主流嵌入式处理器 |