项目名称:Mp3播放器的FPGA实现 
项目信息:
应用领域:消费类电子
设计摘要:
尽管MP3格式的数字音乐已经在因特网和光碟市场上唾手可得,但由于其核心器件Flash存储器的成本居高不下,造成MP3播放器卖价不菲,利用FPGA实现的MP3播放器用尽可能低的成本提供尽可能多的附加性能,如个人数字助理(PDA)中常见的存储联系信息、备忘录和其它功能。
由于之前我们并没有参加或学习过任何与FPGA有关的项目,所以我们以一个简单的课题开始FPGA的学习,所设计的功能为LCD的显示。
系统原理和技术特点:
系统主要有三个功能模块  
用于下载音乐和进行网络连接的USB接口; 
容量为32MB的内置Flash存储器;
Flash卡或MicroDrive硬盘进行存储空间扩展所需的Flash接口。
所有这些功能部件都在FPGA和高性能32RISC处理器的驱动下工作。设计中用到的其它可定制标准器件
如下:
a. 立体声数模转换器
b. Flash存储器 
c. SDRAM存储器
d. USB控制器
e. FPGA器件 
各功能模块的实现及所需的软硬件资源 
a. IP总线控制器
Ip总线控制器模块主要完成两大任务:地址解码和IP总线仲裁。地址解码模块用来产生作为传送目标IP模块的选择信号,同时还控制复用器选择来自传送目标的反馈信号(如应答信号等)
来自CPU接口的访问请求与来自LCD控制器的访问请求之间的IP总线仲裁采用了循环优先级方案,IP总线仲裁模块还可以控制复用器选择控制传送所需的控制信号(RDWR)
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. 存储器接口
存储器接口模块用于实现将816位存储器映射到32IP总线。
e. SDRAM控制器
SDRAM控制器是在Xilinx应用指南XAPP 134中给出的原始设计基础上进行开发的,为了适应主机接口的差别对原始设计作了一些修改。原始设计中主机接口是地址数据复用总线,而本设计中的IP总线是非复用总线。另外,原始设计支持2MT48LC1M16存储器所需的32位宽存储器结构,而本设计中存储器数据总线仅为16位,而且MT48LC1M16也只有一个。
f. Flash控制器
本设计的最大成本因素是存储MP3音频文件所需的大容量Flash存储器(32MB)。为了有效降低这一成本,可以充分利用该存储器来满足系统中所有非易失性存储的要求,包括存储CPU的执行代码,以及存储FPGA配置信息。采用这种结构带来这样一个问题:是直接从Flash执行程序?还是挎贝到SDRAM再执行程序呢?为此要考虑以下两方面因素。
首先是性能。地址和数据共用的8位接口虽然会对性能有所影响,但最重要的问题实际上是随机访问延时。512字节的页存储数据读取时间可以保持在50ns之内,但当处理器访问的数据在不同的页时就会遇到麻烦。当处理器工作频率为66MHz时,将一个数据页调入可被访问的页寄存器的时间为7us,约为462个指令周期。这种延时会极大地影响器件的实时工作性能。
其次是误码处理。Flash中每512字节的页面只留有16字节的空间用于存储ECC信息,而对于小型存储模块来说存储ECC信息的存储空间远远不够。例如,采用汉明码来纠正RC32364(16字节)缓冲线上的单个误码位,模块中数据位数量NECC位数量K的关系必须满足下面公式:
N<= 2K-K-1
这里:N代表模块中数据位的数量。
K代表ECC位的数量。
K的解为:
16×8 =256<=2K-K-1
K=9ECC/缓冲线
因为每个页面有32(512/16)缓冲线,因此存储ECC总共需要36个字节,但Flash只提供了16个字节的存储空间。
解决这个问题的方法是将块增加到32个字节,这时每个块所需的ECC位为10位,但这时每个页只能有16个块及相应的ECC存储空间。为了适应这种较大容量的块可以在两个缓冲线上执行RC32364块检查,这样做的副作用是每次只能加载一根缓冲线,如果二根同时检查的话会相应增加存储器的延时特性。
因此,可选择在启动时将可执行图像挎贝到SDRAM存储器的方法。这种方法不仅能提高系统性能,而且可以将ECC检查问题转化为非实时软件处理。该模块所需的支持软件由Flash BOIS组成,它可以实现编程、擦除和存储块有效性检查所用的底层原语(primitive)
Irda控制器
Irda控制器实际上是一个专用的固定功能的UART
音频数模转换器接口
音频数模转换器CS4343的接口由两个独立的功能模块组成,一个模块对应一个串口。控制端接口实际上是软件操作的2I/O端口,可以实现访问DAC中控制寄存器和状态寄存器所用的I2C协议。这种接口方案所用的器件最少,并且由于端口的低数据速率和低的工作频率而具有很强的实用性。
而串行音频端口在系统工作的大多数时间内都处于工作状态。这种专用硬件由两个FIFO(一个FIFO对应一个音频通道)、一个用于管理FIFO和安排接口信号的状态机组成,主要用来实现传送协议和发送连续的音频数据流。
FPGA器件选择
姓名代码转换器百度Spartan-II系列器件具有多种不同的密度和封装,本设计选用的器件满足以下引脚数量的设计要求为137个;2. 设计工作电压为3.3V3.估计规模为83,000个门;4. 存储控制器和缓冲器管理状态机使用的最高时钟速率为64MHz,剩余逻辑电路以8MHz的时钟速率运行;5. 由于器件尺寸的限制需要采用高密度SMT封装。

系统框图:TA91-1.jpg
当前项目状态:
正常执行
参赛信息:
指导老师姓名:
陈宁,叶崧,姜志鹏
指导老师职称:
副教授
学校:
其他
研究方向:
Embedded direction
参赛情况:
Xilinx杯开放源码硬件创新大赛
需求信息:
拟采用的平台:高级板-Virtex-2 Pro,内置2PowerPC,SDRAM, Ethernet,CF,SATA,音频Codec
是否需要设计扩展板?
需要的基本功能:SRAM  Flash  USB1.1/2.0  RS-232  音频编解码  视频编解码  LED指示  LCD显示  VGA