账号:
密码:
最新动态
产业快讯
CTIMES / 文章 /
以FPGA设计MP3播放器
 

【作者: 景元】2002年06月05日 星期三

浏览人次:【2814】

采用「现场可程序门阵列(FPGA)」产品(例如:Spartan-II),及RC32364 RISC处理器和多种「特殊应用标准组件」(Application-Specific Standard Product;ASSP)可以将MP3数字音频播放器设计成具有先进的用户接口特性。FPGA组件主要用于实现内存与输入输出组件(I/O devices)的管理和接口功能,RC32364则用来实现MP3译码、图形用户接口(GUI)和控制其它组件的功能。这种设计方法也适用于其它多媒体或网络通讯嵌入式系统。


设计过程中,主要工作是解决如何对压缩的音频数据进行译码和播放,下面列出了这些方面的技术问题及解决方案,包括:


  • (1) 如何在嵌入式系统中提供图形用户接口;


  • (2) 如何在嵌入式系统中实现低成本的LCD显示器、触摸屏、USB、IrDA和微型Flash的接口;


  • (3) 使用NAND Flash内存时如何进行误码处理;


  • (4) 如何控制SDRAM内存。



组件的选用

嵌入式系统设计的主要目的是如何用最低的成本提供最多的附加性能,如个人数字助理器(PDA)中常见的储存联系信息、备忘录和其它功能。


(图一)是总体设计蓝图,其中的主要功能模块包括:


  • ●128×128像素的图形触摸屏;


  • ●用于下载音乐和进行网络连接的USB接口;


  • ● 用于与其它设备交换数据的IrDA兼容红外线接口;


  • ● 容量为32MB的内置Flash内存;


  • ● 用Flash卡或MicroDrive硬盘进行储存空间扩展所需的Flash接口。



《图一 MP3播放器内部电路图》
《图一 MP3播放器内部电路图》

所有这些功能组件都在FPGA和高性能32位RISC处理器的驱动下工作。在详细介绍由FPGA组件(Spartan-II)实现的功能之前,先看一下设计中所用到的其他可定制(customized)标准组件(ASSP)。


立体声数字模拟转换器

可选用CS4343作为数字模拟转换组件,该组件的特点包括:1.工作电压为1.8V到3.3V;2. 转换精密度为24位,最高转换速度为96KHz;3. 具有数字化音量控制功能;4. 具备数字化高音和低音增强功能;5. 内置耳机放大器,可以在16Ω负载时提供5mW的输出功率。此外,CS4343提供模拟立体声耳机接口、用于传送数字音频数据流的串行埠(serial port)以及用于组件配置的控制埠。


Flash内存

可选用KM29U64000T作为Flash内存,其容量为8×8Mbits。该内存采用NAND Flash技术设计,具有密度高和位成本低的特点。KM29U64000T有两个重要的特性,在系统设计时须注意。第一个特性是高度再使用的窄频撷取接口,该接口既用作地址总线、又用作数据总线(8位)。


第二个特性是数据完整性问题,它是所有采用NAND技术设计的组件所共有的问题。可以从两个方面来看待这个问题。首先,在组件出厂时,可能由于数据错误存在不可用的储存区块,这在组件的数据手册中可以看得出来,手册中会有个称为NVB的参数用来表示组件所包含的有效区块(block)数量。组件不同,这个参数值也不相同,取值范围从1,014到1,024,典型值为1,020。尽管第一个区块保证是完好的,但是内存数组中任何地方都可能出现不可用的区块,在出厂时通常会在页面(page)中第一个或第二个区块的0地址处写入0以标示这些无效区块。因此有必要在系统级了解组件中哪些是好区块,因为不可用区块的存在会产生不连续的储存映像(mapping)。


SDRAM内存

SDRAM内存可选用容量为512K×16×2的MT48LC1M16A1S。工作频率为125MHz到166MHz,该组件可提供LVTTL(low-voltage TTL)同步接口。


USB控制器

USB接口可采用USBN9602控制器。这种28接脚SOIC封装的全速USB控制器内含有USB整合收发器和7个FIFO,其中有2个FIFO的深度为64字节。USBN9602采用8位微处理器总线,可以工作于再使用或非再使用模式。从软件角度看由于再使用模式支持对内部缓存器的随机存取,因此表现得更有吸引力,而且该模式还能减少所需的接脚数量。


FPGA组件

所采用的Spartan-II组件包含有10个主要功能模块:IP总线控制器、CPU接口、LCD控制器、内存数据信道、SDRAM控制器、Flash控制器、CompactFlash控制器、IrDA控制器、DAC接口和触摸屏接口。


这些模块藉由称为IP总线的多主控组件(multi-host)非再使用数据地址总线相连。虽然IP总线看上去有些像功能模块的一根连接总线,但事实上该总线由再使用器来控制数据进入内部数据信道,采用这种方法可以取消三态驱动器。在这个设计中,IP总线有CPU接口和LCD控制器两个主控组件。


大多数字模拟模块是相互独立的,但Flash、SDRAM和Flash接口之间共享同一地址和数据总线,这使得这些数据信道上的再使用变得相当复杂,但是减少了接脚数量。


各模块所需的资源


IP总线控制器

IP总线控制器模块主要完成两大任务:地址译码和IP总线仲裁。地址译码模块用来产生作为传送目标IP模块的选择讯号,同时还控制再使用器选择来自传送目标的反馈讯号(如应答讯号等)。


来自CPU接口的访问请求(visit request)与来自LCD控制器的访问请求之间的IP总线仲裁采用了循环优先等级方案,IP总线仲裁模块还可以控制再使用器选择控制传送所需的控制讯号(如RD、WR等)。


CPU接口

CPU接口模块完成三大功能:协议转换、CPU初始化和地址再使用。


CPU初始化模块产生复位讯号所需的时序,以及产生总线配置信息并发送到总线的允许和中断讯号接口上。这些配置信息用来设置引导程序PROM宽度,并启动CPU定时器。该模块在初始化工作完成后驱动IrDA和音频DAC产生中断讯号,并输出到CPU相应中断讯号接口。


总线状态机(state machine)将CPU总线上的讯号格式转换成IP总线所用的格式,或者当CPU总线与USB接口交换信息时将讯号转换为USBN9602所接受的格式。


虽然本模块不需要任何软件的支持,但USB接口本身需要大量的软件支持。这种被称为USB通讯协议堆栈的软件流程分为二个部份:一部份是参与USB协议以及即插即用(PnP)功能所需的软件,另外一部份是将MP3文件从主机系统传送到播放器所需的特定应用代码。


LCD控制器

LCD控制器负责用储存于SDRAM的图像数据重新整理(refresh)屏幕。它的工作原理类似于CRT显示控制器的工作原理,但与大多数显示控制器不同的是LCD控制器所产生的显示格式不具备可程序性,而且光栅模式固定为128×128像素,显示时序也是固定的,对于采用整合显示器的嵌入式系统设计来说这种安排是非常有利的。虽然显示模式不能在系统中动态改变,但藉由设计时将不同的FPGA装加载Flash就可以支持不同的显示模式。


为了防止出现不良的显示图像,每当移位寄存器清空时,FIFO就必须产生有效的新数据,产生周期为500ns。由于对SDRAM的不连续数据读取会占用很大的资源,为了减少这种开销可以采用多字节读取方法,但多字节占用多的FIFO容量以及占用IP总线时间长,降低总线反应速度。因此,折衷后采用2字节读取,3字节深度的FIFO,显示器缓冲存储器每1毫秒(ms)执行一次数据读取。


本模块所需的支持软件仅为利用缓冲存储器产生屏幕图像的一段程序代码。该缓冲器是512×32个字(character)的数组,每个字代表屏幕图像的32个像素。位于基位地址(base address)的字中最高位(MSB)代表屏幕左上角的像素,最低位(LSB)代表屏幕上第一排第32个像素。


内存接口

内存接口模块用于实现将8和16位内存映像到32位IP总线。


SDRAM控制器

SDRAM控制器可在Xilinx应用指南XAPP 134中给出的原始设计基础上进行开发,为了适应主机接口的差别可对原始设计做一些修改。原始设计中主机接口是地址数据再使用总线,而本设计所用的IP总线是非再使用总线。另外,原始设计支持2个MT48LC1M16内存所需的32位宽内存结构,而本设计中内存数据总线仅为16位,而且MT48LC1M16也只有一个。


Flash控制器

本设计的最大成本因素是储存MP3音频文件所需的大容量Flash内存(32MB)。为了有效降低这一成本,可以充分利用该内存来满足系统中所有非挥发性储存的要求,包括储存CPU的执行代码,以及储存FPGA的配置信息。采用这种结构带来这样一个问题:是直接从Flash执行程序?还是复制到SDRAM再执行程序呢?这需要考虑以下两因素。


首先是性能,地址和数据共享的8位接口虽然会对性能有所影响,但最重要的问题实际上是随机存取延迟。512字节的分页储存数据读取时间可以保持在50ns之内,但当处理器撷取的数据在不同的页面时就会遇到麻烦。当处理器工作频率为66MHz时,将一个数据页调入可被撷取的页缓存器的时间为7μs,约为462个指令周期。这种延迟会严重地影响组件的实时工作性能。


其次是误码(error code)处理。Flash中每512字节的页面只留有16字节的空间用于储存ECC信息,而对于小型储存模块来说储存ECC信息的储存空间远远不够。例如,采用Hamming码来纠正RC32364(16字节)缓冲在线的单个误码位,模块中数据位数量N与ECC位数量K的关系必须满足下面公式:


《公式一 》
《公式一 》

因为每个页面有32根(512/16)缓冲线,因此储存ECC总共需要32个字节(32*8/8),但Flash只提供了16个字节的储存空间。


解决这个问题的方法是将区块增加到32个字节,这时每个区块所需的ECC位为9位,但这时每个分页只能有16个区块及相应的ECC储存空间。为了适应这种较大容量的区块,可以在两个缓冲在线执行RC32364区块检查,这样做的副作用是原本每次只能有一根缓冲线,如果二根同时检查的话会相对地增加内存的延迟特性。


因此,可选择在启动时将可执行图像复制到SDRAM内存的方法。这种方法不仅能提高系统性能,而且可以将ECC检查问题转化为非实时软件处理。Flash控制器所需的支持软件由Flash BIOS组成,它可以执行编程、清除和储存区块有效性检查,所使用的程序是属底层原始语言(primitive)或组合(机器)语言。


IrDA控制器

IrDA控制器实际上是一个专门的和固定功能的UART。


音频数字模拟转换器接口

音频数字模拟转换器CS4343的接口是由两个独立的功能模块组成,每一个模块对应到个别的串行端口(serial port)。控制端接口实际上是由软件执行的2位I/O埠,可以实现DAC中控制缓存器和状态缓存器所用的I2C协议。这种接口方案所用的组件最少,并且由于埠的低数据速率和低工作频率,而具有很大的实用性。


序列音频埠在系统工作的大多数时间内都处于工作状态。这种硬件由两个FIFO组成:一个FIFO对应一个音频信道、一个用于管理FIFO和安排接口讯号的状态机,主要用来实现传送协议和发送连续的音频数据流。


触摸屏接口

触摸屏接口实际上就是一个普通的I/O埠,允许处理器藉由它读取双信道模拟数字转换器返回的数据。藉由该接口系统软件能顺利读取用户触摸屏幕相对应的X、Y轴阻抗值,再藉由系统软件进行线性化处理,并去除瞬态触摸。


FPGA组件选择

Spartan-II系列组件具有多种不同的密度和封装,本设计选用的组件脚数量满足设计要求为137个;设计工作电压为3.3V;估计规模为83,000个闸;储存控制器和缓冲器管理状态机使用的最高时钟速率为64MHz,剩余逻辑电路以8MHz的时钟速率执行;由于组件尺寸的限制需要采用高密度SMT封装。


结语

本文提出的设计能实现MP3播放器低成本的目标,而且仍然保有应有的附加功能。在成本预算不宽裕的情况下,依此设计方法,开发成本可以做到100美元以下。同时本设计还提供了包括CPU和FPGA闸在内的足够空闲资源以支持未来系统之升级,而64MHz的核心时钟速率能使RC32364提供强大的音频译码能力和用户接口性能。


尽管当前可程序逻辑组件的别名很多如FPGA、PLD等,现在情况正在产生变化。FPGA将成为设计平台,它们将使微处理器、DSP、互连电容和开关构成的系统变为全能的通用平台,并消除设计中的差异。为因应不同的应用和市场需求,以及能快速商品化,可程序逻辑组件因极具弹性特性已经成为逻辑或状态机的主角,继续被设计者青睐。


相关文章
专攻低功耗工业4.0应用 可程式化安全功能添防御
以设计师为中心的除错解决方案可缩短验证时间
移动演算法 而非巨量资料
最大限度精减电源设计中输出电容的数量和尺寸
Nexus技术平台:重新定义低功耗、小尺寸FPGA
comments powered by Disqus
相关讨论
  相关新闻
» Nordic上市nRF Cloud设备管理服务 大幅扩展其云端服务
» 是德、新思和Ansys共同开发支援台积电N6RF+制程节点射频设计迁移流程
» 美光32Gb伺服器DRAM通过验证并出货 满足生成式AI应用要求
» Cadence结合生成式AI技术 开创多物理场模拟应用新时代
» AMD公布2024年第一季财报 成长动能来自AI加速器出货增长


刊登廣告 新聞信箱 读者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 远播信息股份有限公司版权所有 Powered by O3  v3.20.1.HK85E9ABKAASTACUKC
地址:台北数位产业园区(digiBlock Taipei) 103台北市大同区承德路三段287-2号A栋204室
电话 (02)2585-5526 #0 转接至总机 /  E-Mail: webmaster@ctimes.com.tw