打印
[Actel FPGA]

FPGA实现MP3播放器设计的器件选择策略

[复制链接]
1710|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liwsx|  楼主 | 2012-2-11 16:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本设计主要是解决如何对压缩的音频数据进行解码和播放,因此这里也列出一些这方面的技术问题的解决方案,包括:
如何在嵌入式系统中提供图形用户接口;
如何在嵌入式系统中实现低成本的LCD显示器、触摸屏、USB、Irda和微型Flash的接口;
使用NAND Flash存储器时如何进行误码处理;
如何控制SDRAM存储器。
器件的选用及特点
本方案实现的主要目的是如何用最低的成本提供尽可能多的附加性能,如个人数字助理(PDA)中常见的存储联系信息、备忘录和其它功能。

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

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


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


容量为32MB的内置Flash存储器;


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

所有这些功能部件都在FPGA和高性能32位RISC处理器的驱动下工作。在详细介绍由FPGA器件Spartan-II实现的功能以前,让我们先来看一下设计中用到的其它可定制标准器件。
a. 立体声数模转换器
本设计选用CS4343作为数模转换器件,该器件的特点包括:1.工作电压为1.8V到3.3V;2. 转换精度为24位,最高转换速度为96KHz;3. 具有数字化音量控制功能;4. 具备数字化高音和低音增强功能;5. 内置耳机放大器,可以在16Ω负载时提供5mW的输出功率。
另外,CS4343提供模拟立体声耳机接口、用于传送数字音频数据流的串行端口以及用于器件配置的控制端口。
b. Flash存储器
本设计选用的Flash存储器是KM29U6?000T,其容量为8×8Mb。该存储器采用NAND Flash技术设计,具有密度高和位成本低的特点。
KM29U6?000T有两个重要的特点,在系统设计时须注意处理。第一个特点是高度复用的窄带访问接口,该接口为既用作地址总线、又用作数据总线的8位总线接口。
第二个是数据完整性问题,它是所有采用NAND技术设计的器件所共有的问题。可以从两个方面来看待这个问题。首先,在器件出厂时,可能由于数据错误存在不可用的存储块,这在器件的数据手册中可以看得出来,手册中会有个称为NVB的参数用来表示器件所包含的有效块数量。器件不同,这个参数值也不相同,取值范围从1,014到1,024,典型值为1,020。尽管第一个块保证是完好的,但是存储器阵列中任何地方都可能出现不可用的块,在出厂时通常会在页面中第一个或第二个块的0地址处写入0以标志这些无效块。因此很有必要在系统级了解器件中哪些是好块,当由于不可用块的存在会产生不连续的存储映像。
c. SDRAM存储器
SDRAM存储器选用容量为512K×16×2的MT48LC1M16A1S。工作频率为125MHz到166MHz,该器件可提供LVTTL同步接口。
d. USB控制器
本设计的USB接口采用USBN9602控制器。这种28引脚SOIC封装的全速USB控制器内含有USB集成收发器和7个FIFO,其中有2个FIFO的深度为6?字节。
USBN9602采用8位微处理器总线,可以工作于复用或非复用模式。从软件角度看由于复用模式支持对内部寄存器的随机存取因此表现得更有吸引力,而且该模式还能减少所需的引脚数量。
e. FPGA器件
本设计采用Spartan-II器件,它包含有以下10个主要功能模块:IP总线控制器、CPU接口、LCD控制器、存储器数据通道、SDRAM控制器、Flash控制器、CompactFlash控制器、Irda控制器、DAC接口和触摸屏接口。
这些模块通过称为IP总线的多主非复用数据地址总线相连。虽然IP总线看上去有些像功能模块的一根连接总线,但事实上该总线由复用器来控制数据进入内部数据通道,采用这种方法可以取消三态驱动器。在本方案中IP总线有CPU接口和LCD控制器两个主控器件。
大多数模块是相互独立的,但Flash、SDRAM和Flash接口之间共享同一地址和数据总线,这使得这些数据通道上的复用变得相当复杂,这减少了引脚数量。
各功能模块的实现及所需的软硬件资源
a. IP总线控制器
IP总线控制器模块主要完成两大任务:地址解码和IP总线仲裁。地址解码模块用来产生作为传送目标IP模块的选择信号,同时还控制复用器选择来自传送目标的反馈信号(如应答信号等)。
来自CPU接口的访问请求与来自LCD控制器的访问请求之间的IP总线仲裁采用了循环优先级方案,IP总线仲裁模块还可以控制复用器选择控制传送所需的控制信号(如RD、WR等)。
b. CPU接口
CPU接口模块完成以下三大功能:协议转换、CPU初始化和地址解复用。
CPU初始化模块产生复位信号所需的时序,以及产生总线配置信息并发送到总线的允许和中断信号接口上。这些配置信息用来设置引导程序PROM宽度,并激活CPU定时器。该模块在初始化工作完成后驱动Irda和音频DAC产生中断信号,并输出到CPU相应中断信号接口。
总线状态机将CPU总线上的信号格式转换成IP总线所用的格式,或者当CPU总线与USB接??换信息时将信号转换为USBN9602所接受的格式。
虽然本模块不需要任何软件的支持,但USB接口本身需要大量的软件支撑。这种被称为USB协议栈的软件流程分为二个部分:一部分是参与USB协议以及即插即用功能所需的软件,另外一部分是将MP3文件从主机系统传送到播放器所需的特定应用代码。
c. LCD控制器
LCD控制器负责用存储于SDRAM的图像数据刷新屏幕。它的工作原理类似于CRT显示控制器的工作原理,但与大多数显示控制器不同的是LCD控制器所产生的显示格式不具备可编程性,而且光栅模式固定为128×128像素,显示时序也是固定的,对于采用集成显示器的嵌入式系统设计来说这种安排是非常有利的。虽然显示模式不能在系统中动态改变,但通过制造时将不同的FPGA配置装载入Flash就可以支持不同的显示模式。
为了防止出现不良的显示图像,每当移位寄存器空时,FIFO就必须产生有效的新数据字,产生周期为500ns。由于对SDRAM的不连续数据读取占用很大的开销,为了减少这种开销可以采用多字节读取方法,但同时多字节占用多的FIFO容量以及占用IP总线时间长,降低总线反应速度。通过折中后本设计采用2字节读取,3字节深度的FIFO,显示器缓存每1毫秒执行一次数据读取。
本模块所需的支持软件仅为利用缓冲存储器产生屏幕图像的一段代码。该缓冲器是512×32位字的阵列,每个字代表屏幕图像的32个像素。位于基地址的字中最高位(MSB)代表屏幕左上角的像素,最低位(LSB)代表屏幕上第一排第32个像素。
d. 存储器接口
存储器接口模块用于实现将8和16位存储器映射到32位IP总线。
e. SDRAM控制器
SDRAM控制器是在Xilinx应用指南XAPP 134中给出的原始设计基础上进行开发的,为了适应主机接口的差别对原始设计作了一些修改。原始设计中主机接口是地址数据复用总线,而本设计中的IP总线是非复用总线。另外,原始设计支持2个MT48LC1M16存储器所需的32位宽存储器结构,而本设计中存储器数据总线仅为16位,而且MT48LC1M16也只有一个。
f. Flash控制器
本设计的最大成本因素是存储MP3音频文件所需的大容量Flash存储器(32MB)。为了有效降低这一成本,可以充分利用该存储器来满足系统中所有非易失性存储的要求,包括存储CPU的执行代码,以及存储FPGA配置信息。采用这种结构带来这样一个问题:是直接从Flash执行程序?还是挎贝到SDRAM再执行程序呢?为此要考虑以下两方面因素。
首先是性能。地址和数据共用的8位接口虽然会对性能有所影响,但最重要的问题实际上是随机访问延时。512字节的页存储数据读取时间可以保持在50ns之内,但当处理器访问的数据在不同的页时就会遇到麻烦。当处理器工作频率为66MHz时,将一个数据页调入可被访问的页寄存器的时间为7us,约为462个指令周期。这种延时会极大地影响器件的实时工作性能。
其次是误码处理。Flash中每512字节的页面只留有16字节的空间用于存储ECC信息,而对于小型存储模块来说存储ECC信息的存储空间远远不够。例如,采用汉明码来纠正RC3236?(16字节)缓冲线上的单个误码位,模块中数据位数量N与ECC位数量K的关系必须满足下面公式:
N<= 2K-K-1
这里:N代表模块中数据位的数量。
K代表ECC位的数量。
K的解为:
16×8 =256<=2K-K-1
K=9个ECC位/缓冲线
因为每个页面有32根(512/16)缓冲线,因此存储ECC总共需要36个字节,但Flash只提供了16个字节的存储空间。
解决这个问题的方法是将块增加到32个字节,这时每个块所需的ECC位为10位,但这时每个页只能有16个块及相应的ECC存储空间。为了适应这种较大容量的块可以在两个缓冲线上执行RC3236?块检查,这样做的副作用是每次只能加载一根缓冲线,如果二根同时检查的话会相应增加存储器的延时特性。
因此,可选择在启动时将可执行图像挎贝到SDRAM存储器的方法。这种方法不仅能提高系统性能,而且可以将ECC检查问题转化为非实时软件处理。该模块所需的支持软件由Flash BOIS组成,它可以实现编程、擦除和存储块有效性检查所用的底层原语(primitive)。
Irda控制器
Irda控制器实际上是一个专用的固定功能的UART。
音频数模转换器接口
音频数模转换器CS4343的接口由两个独立的功能模块组成,一个模块对应一个串口。控制端接口实际上是软件操作的2位I/O端口,可以实现访问DAC中控制寄存器和状态寄存器所用的I2C协议。这种接口方案所用的器件最少,并且由于端口的低数据速率和低的工作频率而具有很强的实用性。
而串行音频端口在系统工作的大多数时间内都处于工作状态。这种专用硬件由两个FIFO(一个FIFO对应一个音频通道)、一个用于管理FIFO和安排接口信号的状态机组成,主要用来实现传送协议和发送连续的音频数据流。
触摸屏接口
触摸屏接口实际上就是一个普通的I/O端口,允许处理器通过它读取双通道模数转换器返回的数据。通过该接口系统软件能顺利读取用户触摸屏幕相对应的X、Y轴阻抗值,再经过系统软件进行线性化处理并去除瞬态触摸。
FPGA器件选择
Spartan-II系列器件具有多种不同的密度和封装,本设计选用的器件满足以下引脚数量的设计要求为137个;2. 设计工作电压为3.3V;3.估计规模为83,000个门;4. 存储控制器和缓冲器管理状态机使用的最高时钟速率为6?MHz,剩余逻辑电路以8MHz的时钟速率运行;5. 由于器件尺寸的限制需要采用高密度SMT封装。
本文总结
以上设计能很好地满足原始设计目标,即用最低的成本提供尽可能多的附加性能。在成本预算不宽裕的情况下,该方案成本可以做到不足100美元。同时本设计还提供了包括CPU和FPGA门在内的足够多的空闲资源以支持现场升级,而6?MHz的内核时钟速率能使RC3236?提供强大的功能用于处理音频解码和用户接口性能。

转自OPENHW

相关帖子

沙发
lirfv| | 2012-2-12 16:48 | 只看该作者
我们现在普通的MP3的CPU是神马啊,是FPGA吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

221

帖子

0

粉丝