资源描述
辽 宁 工 业 大 学
综合实践报告
2011-2012 学年第一学期 第1-2周
院(系): 电子与信息工程学院
专业班级: xxxxxxxxxxx
学 号: xxxxxxxx
学生姓名: xxx
指导教师: xxx
教师职称: 讲 师
综合实践(论文)任务及评语
院(系):电子与信息工程学院 教研室:计算机科学与技术
学 号
xxxxxxx
学生姓名
xxx
专业班级
xxxxx
综合实践(论文)题 目
MP3的软件及硬件设计与实现
综合实践设计报告
综合实践任务要求与步骤:
本次综合实践的主要任务侧重于MP3播放器与U盘设计的设计与实践,主要问题在于规划系统的功能和特性,进行分析设计,最终达到预定的标准
(1)系统分析:了解基本原理,确定MP3播放器的基本功能;
(2)系统设计:确定系统总体结构、模块关系和总体流程图,确定模块内部的流程;
(3)详细设计:画硬件原理图、画出PCB图、焊接制版、硬件测试以及软件设计并调试;
(4)提交综合实践报告。
指导教师评语及成绩
成绩: 指导教师签字:
2011年 月 日
目 录
第1章 实践目的 1
1.1 嵌入式技术的发展前景 1
1.2实习的主要目的 2
第2章 工具介绍 3
2.1工具的介绍 3
第3章 系统设计 5
3.1硬件设计 5
3.2 软件设计 9
第4章 系统实现 11
4.1 硬件实现 11
4.2 软件实现 15
第5章 总结 20
参考文献 21
第1章 实践目的
1.1 嵌入式技术的发展前景
在现在日益信息化的社会中,计算机和网络已经全面渗透到日常生活的每一个角落。对于我们每个人,需要的已经不再仅仅是那种放在桌上处理文档,进行工作管理和生产控制的计算机"机器";各种各样的新型嵌入式系统设备在应用数量上已经远远超过通用计算机,任何一个普通人可能拥有从大到小的各种使用嵌入式技术的电子产品,小到mp3,PDA等微型数字化产品,大到网络家电,智能家电,车载电子设备。而在工业和服务领域中,使用嵌入式技术的数字机床,智能工具,工业机器人,服务机器人也将逐渐改变传统的工业和服务方式
目前嵌入式系统技术已经成为了最热门的技术之一,吸引了大批的优秀人才投入其中。但是对于何为嵌入式系统,什么样的技术又可以称之为嵌入式技术,仍在讨论之中,有关嵌入式系统定义的问题,已经在很多论坛社区引发了多次争论。就这个问题我们可以分别从广义上和狭义上讲:
广而化之,可以认为凡是带有微处理器的专用软硬件系统都可以称为嵌入式系统。作为系统核心的微处理器又包括三类:微控制器(MCU)、数字信号处理器(DSP)、嵌入式微处理器(MPU)。所以有人简单的说:"嵌入式系统是指操作系统和功能软件集成于计算机硬件系统之中。"还有人认为嵌入式系统就是"以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统"。应该说后者从功能应用特征上比较好的给出了嵌入式系统的定义,嵌入式的概念的分析根本上应该从应用上加以切入。
由工业和信息化部软件与集成电路促进中心等单位主办的“2011中国嵌入式技术创新应用大会”日前召开,大会主要围绕嵌入式技术在智慧城市、云计算、移动终端以及软件和操作系统中的创新应用进行了广泛交流。
嵌入式作为装置或设备的一部分,近年来越来越广泛地应用于手机、车载导航、多媒体终端、网关、数字电视在内的众多领域。会上,AMD公司作为唯一获奖的外商投资企业,凭借在国内嵌入式领域的诸多成果,获得了“中国嵌入式技术创新应用突出贡献奖”。AMD中国嵌入式解决方案业务总经理张明介绍说,今年AMD推出了一系列低功耗高性能的APU(融合CPU与GPU在一个芯片)的嵌入产品。AMD的嵌入式产品在强调低功耗的同时也保证了客户高性能的要求,最新推出的APU加速处理器在图形处理能力上的表现也非常突出。
据介绍,AMD的嵌入式产品已覆盖到国内多个行业和产品中。AMD多年前便涉足中国的嵌入式领域,凭借x86架构的低功耗嵌入式计算机技术,结合国内厂商的终端产品,在包括智能电视、数字家庭设备、瘦客户机、工业控制、数字标牌等低功耗嵌入式研究领域展开深入合作。2008年,万利达推出的当时国内唯一一款能够运行Windows XP操作系统,并支持大容量硬盘的无风扇超便携笔记本,就搭载了超低功耗的AMD嵌入式处理器。近几年,AMD又与海信、福建星网锐捷等合作伙伴,成立了多个联合实验室,推出了数字家庭多媒体中心、瘦客户机等基于嵌入式平台的多媒体终端产品,进一步深耕嵌入式市场。今年,AMD专为嵌入式设备打造的“嵌入式G系列平台”是世界上第一套CPU、GPU融合的嵌入式平台,目前已经得到了广泛采纳,包括海尔、升腾、顶星等在内的数十家厂商,已经或即将推出平板电脑、智能电视、瘦客户机、数字标牌等相关产品。
1.2实习的主要目的
学习和了解了嵌入式在生活中的重要作用和发展过程,熟练掌握ARM硬件体系结构,熟悉linux下的嵌入式编程流程,积累自己的软件编写经验,能够参与并实现一个真实和完整的嵌入式项目,为今后的学习和将从事的技术工作打下坚实的基础
生产实习是本专业学生的一门主要实践性课程。是学生将理论知识同生产实践相结合的有效途径,是增强学生的群众性观点、劳动观点、工程观点和建设有中国特色社会主义事业的责任心和使命感的过程。
通过生产实习,使学生学习和了解电视机从原材料到成品批量生产的全过程以及生产组织管理等知识,培养学生树立理论联系实际的工作作风,以及生产现场中将科学的理论知识加以验证、深化、巩固和充实。并培养学生进行调查、研究、分析和解决工程实际问题的能力,为后继专业课的学习、课程设计和毕业设计打下坚实的基础。通过生产实习,拓宽学生的知识面,增加感性认识,把所学知识条理化系统化,学到从书本学不到的专业知识,并获得本专业国内、外科技发展现状的最新信息,激发学生向实践学习和探索的积极性,为今后的学习和将从事的技术工作打下坚实的基础。
生产实习是与课堂教学完全不同的教学方法,在教学计划中,生产实习是课堂教学的补充,生产实习区别于课堂教学。课堂教学中,教师讲授,学生领会,而生产实习则是在教师指导下由学生自己向生产向实际学习。通过现场的讲授、参观、座谈、讨论、分析、作业、考核等多种形式,一方面来巩固在书本上学到的理论知识,另一方面,可获得在书本上不易了解和不易学到的生产现场的实际知识,使学生在实践中得到提高和锻炼。
第2章 工具介绍
2.1工具的介绍
Altium Designer 提供了唯一一款统一的应用方案,其综合电子产品一体化开发所需的所有必须技术和功能。Altium Designer 在单一设计环境中集成板级和FPGA系统设计、基于FPGA和分立处理器的嵌入式软件开发以及PCB版图设计、编辑和制造。并集成了现代设计数据管理功能,使得Altium Designer成为电子产品开发的完整解决方案-一个既满足当前,也满足未来开发需求的解决方案。
2005 年年底,Protel 软件的原厂商Altium 公司推出了Protel 系列的最新高端版本Altium Designer 6.0。Altium Designer 6.0,它是完全一体化电子产品开发系统的一个新版本,也是业界第一款也是唯一一种完整的板级设计解决方案。Altium Designer 是业界首例将设计流程、集成化PCB 设计、可编程器件(如FPGA)设计和基于处理器设计的嵌入式软件开发功能整合在一起的产品,一种同时进行PCB 和FPGA 设计以及嵌入式设计的解决方案,具有将设计方案从概念转变为最终成品所需的全部功能。
这款最新高端版本Altium Designer 6.0 除了全面继承包括99SE,Protel2004 在内的先前一系列版本的功能和优点以外,还增加了许多改进和很多高端功能。Altium Designer 6.6 拓宽了板级设计的传统界限,全面集成了FPGA 设计功能和SOPC 设计实现功能,从而允许工程师能将系统设计中的FPGA 与PCB 设计以及嵌入式设计集成在一起。后来推出的Altium Designer 6.6功能更加完善。
Altium 宣布 Altium Designer 6.6 的发布,该版本具有超过225个改进。这次更新给 Altium Designer的版图设计和制造输出功能带来很大改进,包括圆形焊盘的扩展控制、装配变量新的直观支持以及扩展的 IPC 封装向导功能。Altium Designer 6.6 也提供了真实世界信号完整性的扩展集合,引入了新的 MCAD 集成,还具有更加准确3D设计显示的 STEP 组件模型导入功能。
新发布进一步提高了功能,可在更短的设计到制造时间内创造出更加高级更加创新的电子产品装配变量
装配变量在 Altium Designer 中得到了极大改进,本视频将演示这些主要的新功能。
该视频演示创建了一个滤波器设计的6种不同的装配设计,每种都有不同的滤波频率。每种设计的板卡都是一样的,但填充的部件不同。同样,在一些低频设计中没有安装连接器而是使用可替代连接器。
FPGA设计中的信号完整性检查在本视频中您将看到如何利用 Altium Designer 强大的信号完整性功能优化 FPGA 设计中的信号驱动设置。主题包括导入 IBIS 模块、反射特性仿真、耦合网络查找、串话检查以及利用终结器顾问选取终结器类型和终结器组件的最佳值。本视频中用到的设计与 Altium Designer的最新更新一起交付,同时还有详细的指导文档: TU0126 检查FPGA 设计的信号完整性。该范例基于 NBP28子板。该子板包括 Xilinx Spartan 3、集成了ARM7处理器的Sharp LH79520、 SRAM 和 Flash RAM。在这个例子中我们将回答如下问题: "在正确解决振铃和串扰之前我可以怎样驱动信号 D[31..0]?" 或者是: " FPGA 管脚驱动信号 D[31..0]的最优摆率和驱动设置是什么?"圆角矩形焊盘在设计PCB封装和版图中现在提供了一种新的焊盘形状——圆角矩形焊盘。在PCB数据转换过程中,这将更好的实现与P-CAD和其他CAD应用间兼容。特别是这将令您设计出更加接近于器件商推荐的建议图形。对于PCB设计者主要的好处,如下:更好的控制和更广泛地选择焊盘的形状。全面控制拐角的半径——从简单的矩形(0%)到圆形(100%)。对于PCB版图上紧凑的圆形区域,可以更灵活地放置一个大的焊盘。STEP模型导入功能:STEP格式是一种非常强大的机械CAD设计标准,从而成为不同工具间一种通用的数据转换格式。
在6.3版本内,我们增加了从我们3D工具中导出STEP的功能。STEP模型导入将成为接下来更好的集成MCAD的环节。允许用户去导入STEP数据并在设计中使用器件模型。由于绝大多数MCAD工具都可以导出STEP,从而有效地使用种类更丰富的器件模型。在3D图像和未来STEP导出中使用更加精确的模型。更重要的在于这种数据被用于模型模版和平台。
第3章 系统设计
3.1硬件设计
AT89C51SND1单片机各引脚在本学习板的具体定义和功能划分见图11。RESET 引脚在单片机内部有下拉电阻,所以只需一个上拉电容即可完成上电复位。ISP按键主要是用于下载时候进行芯片的准备工作。AT89C51SND1的引脚使用情况分类说明如下:
图2.13 AT89C51SND1 电路原理图
1)键盘中断输入引脚KIN0~KIN3,和P1.0~P1.3 复用。外接4个键盘作为MP3控制
2)时钟电路FILT、OSCX1 和OSCX2。时钟电路见图13。接在FILT引脚的阻容网络是单片机内部PLL锁相环的滤波电路,以给USB和MP3部件提供更高的频率。OSCX1和OSC2外接晶体振荡器,为系统提供基本的20M时钟。
图2.14 键盘电路 图15 时钟电路
3)USB接口USBD+和USBD-。这两个引脚就是单片机内部USB部件的差分信号输入输出引脚,通过图14所示的电路接到USB Device插口上。USB_INS定义的是IO端口P3.4,用来检测USB电缆上的5V电压,判断是否插入USB电缆,以决定是U 盘功能还是MP3功能,如图14所示。
4)FLASH 芯片接口引脚:FALE(P5.2)、nFCE(P5.3)、FCLE(P5.1)、FR/nB(P5.0)。
图2.16 USB 电路 图2.17 NAND Flash 芯片电路
5)音频输出信号MCLK、LRCLK、SCLK、SDATA 等。这些信号将数字音频信息送到立体声音频DA芯片CS4330中,再通过TDA2822放大后推动耳机。
图2.18 音频DA 及功放电路
6)电源电路,包括升压芯片MAX856和降压芯片AS1117。电源电路如图所示。
USB 的5V 电压经过AS1117-3.3 稳压芯片就可以作为板上电路的电源使用。另外,电路板还具有由MAX856构成的升压电路,支持电压低于3.3V的电池供电,但AT89C51SND1C和CS4330芯片本身的功耗并不适用于低功耗应用,所以无法苛求使用电池作为电源。所以,
板上的电源输入配置有三种插座。同时,从这三个电源插座输入的电压如果大于4.5V的时候,通过跳线JP1选择到相应位置(PCB 丝印中有JP1 跳线打到2位置),就可不经过升压电路,而直接送入AS1117降压到3.3V使用。但如果JP1 跳线选择升压电路时(PCB 丝印中有JP1 跳线打到1位置),由于升压电路当输入电压大于3.3V 后其输出不再受控制(将随输入电压而增加),所以此时输入电压严禁超过3.3V,否则会烧毁其他负载芯片。电路中加入若干低压降二极管1N5817来分别防止USB5V和外接电源VCC5V、升压器输出的3.3V和AS1117稳压器输出的3.3V 之间的冲突。MAX856升压电源输入端对地的100K电阻用来保证在没有外接电源的时候,升压芯片处于关断状态。PCB见附录C。
原理图:
图3.2 MP3原理图
图3.3 AUDIO原理图
图3.4 POWER原理图
3.2 软件设计
根据系统功能的构成,软件可分为主控程序、MP3 播放程序、U 盘程序等主要结构,而提供支持的则有文件系统和Flash 读写程序。还有用于交互的串口通讯、LCD 显示、键盘控制等程序。软件的构成如图4—1 所示。
使用键盘功能及软件流程图
产生数据请求中断
需要读下一个扇区的数据
当前数据已经不是一扇区
是否按了暂停键
是否单击“选曲”按钮
结束当前歌曲,指向下一首歌
读出一个新的扇区
继续往解码器中送数据
等待再次按下暂停键
是
是
是
是
否
否
否
否
否
第4章 系统实现
4.1 硬件实现
芯片描述:AT89C51SND1A是一款带有51内核,支配数据流和MP3播放器控制的高集成优越MP3解码芯片。包含64K的flash存储器和支持通过4K嵌入存储器在线编程。为人机交互提供所有的特征:如定时计数,键盘接口,串并接口,模数转换输入,I2S输出,和其他外部存储器接口。
引脚描述:
图3.1 AT89C51SND1A 引脚图
表3.1 输入输出口的描述
引脚名称
类型
描述
备用功能
P0
I/O
八位双向口,高阻抗输入,为了消除寄生电流,不用的脚接地或接电源。
AD7:0
P1
I/O
八位双向口,含内部上拉电阻。
KIN3:0,SCL,SDA
P2
I/O
八位双向口,含内部上拉电阻。
A15:8
P3
I/O
八位双向口,含内部上拉电阻。
RXD,TXD,INT0,INT1
,TO,T1,WR#,RD#
P4
I/O
八位双向口,含内部上拉电阻。
MISO,MOSI,SCK,SS#
P5(P5.0-P5.3)
I/O
八位双向口,含内部上拉电阻。
-
表3.2 时钟信号的描述
信号名称
类型
描述
备用功能
X1
I
输入到芯片晶振放大放大器。如果使用内部晶振,此脚连接电阻,如果接外部晶振,则从此处输入。X1是内部定时器的时钟源。
-
X2
O
输出到芯片晶振放大放大器。如果使用内部晶振,此脚连接电阻,如果接外部晶振,则此脚不连接。
-
FILT
I
相同步低通滤波器输入
-
表3.3 定时器的描述
信号名称
类型
描述
备用功能
INT0#
I
外部中断0
P3.2
INT1#
I
外部中断1
P3.3
T0
I
定时计数器0
P3.4
T1
I
定时计数器1
P3.5
表3.4 音频接口信号描述
信号名称
类型
描述
备用功能
DCLK
O
DAC数据时钟
-
DOUT
O
DAC 音频数据
-
DSEL
O
DAC信道选择
-
SCLK
O
DAC系统时钟
-
表3.5 USB控制信号描述
信号名称
类型
描述
备用功能
D+
I/O
USB正数据端口。为了全速运行,此脚建议连接一个1.5K的外部上拉电阻。
-
D-
I/O
USB负数据端口。
-
表3.6 多媒体接口信号描述
信号名称
类型
描述
备用功能
MCLK
O
MMC时钟输出
-
MCMD
I/O
MMC命令出入
-
MDAT
I/O
MMC数据出入
-
表3.7 通用异步通信信号描述
信号名称
类型
描述
备用功能
RXD
I/O
串口接收
P3.0
TXD
O
串口发送
P3.1
表3.8 串行外部接口SPI信号描述
信号名称
类型
描述
备用功能
SCL
I/O
双总线时钟
P1.6
SDA
I/O
双总线数据
P1.7
表3.9 A/D转换信号描述
信号名称
类型
描述
备用功能
AIN1:0
I
A/D转换模拟输入
-
AREFP
I
模拟参考正电压
-
AREFN
I
模拟参考负电压
-
表3.10 键盘接口信号描述表
信号名称
类型
描述
备用功能
KIN3:0
I
键盘输入行
P1.3:0
表3.11 ISP接口描述
信号名称
类型
描述
备用功能
A15:8
I/O
高八位外部地址
P2.7:0
AD7:0
I/O
低八位/数据
P0.7:0
ALE
O
锁存
ISP#
I/O
ISP使能输入
RD#
O
读信号
P3.7
WR#
O
写信号
P3.6
表3.12 系统信号描述
信号名称
类型
描述
备用功能
RST
I
复位输入
-
TST#
I
测试输入
-
表3.13 电源信号描述
信号名称
类型
描述
备用功能
VDD
PWR
电路板供电
-
VSS
GND
电路板接地
-
AVDD
PWR
模拟供电
AVSS
GND
模拟接地
PVDD
PWR
PLL供电
-
PVSS
GND
PLL接地
UVDD
PWR
USB供电
UVSS
GND
USB接地
-
核心芯片图
图2.2 AT89C51SND1A芯片框图
4.2 软件实现
实现代码:
REGSND1.H"
#include "UART.H"
/** 宏定义USB端点中断的标志位 **/
#define EP2 (0x1<<2)
#define EP1 (0x1<<1)
#define EP0 (0x1<<0)
#define EKB (0x10)
/** 宏定义MP3播放功能的标志位 **/
#define SELECTSONG 3
#define PLAY 1
#define STOP 0
/** 声明外部函数 **/
extern void AtmelUSBInit();
extern void EpEnable();
extern void Ep0();
extern void main_txdone();
extern void main_rxdone();
extern void Flash_Reset(void);
extern void MP3_Init();
extern void PlayInit(unsigned char *SongName);
extern unsigned char GetMP3List(void);
extern void Func();
extern void Next();
extern void Previous();
extern void PlayPause();
extern void PlayMP3(unsigned char *SongName);
extern void KeyBoardInit();
/** 定义MP3播放相关的变量 **/
unsigned char SONG[88] = {'M', 'O', 'O', 'N', ' ', ' ', ' ', ' ', 'T', 'X', 'T'};
unsigned char data CurrentFun = SELECTSONG;
unsigned char data PlayState = STOP;
unsigned char data NowPlaying = 0;
unsigned char data NumofSong = 0;
unsigned char data MP3InitFlag;
void key_interrupt() interrupt 11
{
unsigned char i = 200;
EA = 0; //关中断 IEN1 &= (~EKB); //Enable KeyBoard Interrupt
while (i)
{
i--;
}
i = KBSTA; //取键盘中断位
switch (i)
{ //依次处理四个键中的某个键
case 1 : Func(); break; //被按下时的情况
case 2 : Next(); break;
case 4 : Previous(); break;
case 8 : PlayPause(); break;
default : break;
}
IEN1 |= EKB; //Enable KeyBoard Interrupt
EA = 1; //开中断
return;
}
void main()
{
printu(">>>> UP-TECH MP3 USB Disk V3.00 <<<<\n");
CKCON|=0x01; //使能该单片机的X2模式
Flash_Reset(); //Flash 芯片复位
if(P3_4) //此引脚为USB接入检测端
{ //在此将设备做为U盘处理
printu("Entering USB Mode...\n"); //输出进入U盘功能的信息
AtmelUSBInit(); //USB寄存器配置函数
EpEnable(); //使能有关USB的配置
while(1)
{
if (UEPINT & EP0) Ep0();
if (UEPINT & EP1) main_txdone();
if (UEPINT & EP2) main_rxdone();
UEPINT=0;
}
}
else //进入MP3播放模式
{
printu("Entering MP3 Mode...\n");
MP3_Init(); //MP初始化
KeyBoardInit(); //键盘初始化
MP3InitFlag = 1;
EA = 1; //开中断,键盘可以开始工作
P3_5 = 0; //打开USB灯亮 NumofSong = GetMP3List(); //得到U盘中的MP3歌曲列表
printuf("Song:%x\n", NumofSong); //输出歌曲总数信息
if(NumofSong == 0)
{
printu("There is no MP3 file in USB Disk!\n");
P3_5 = 1; //关闭指示LED}
while(1)
{
if(NumofSong != 0)
{
if(MP3InitFlag)
{
PlayInit(&SONG[11 * NowPlaying]);
MP3InitFlag = 0;
}
PlayMP3(&SONG[11 * NowPlaying]); //如果处于播放状态,则播放当前歌曲
}
if(NowPlaying == NumofSong)
{
PlayState = STOP; //全部歌曲播放完了,播放器停止
NowPlaying = 0; //循环播放
}
P3_5 =~P3_5; //指示LED闪烁
}
第5章 总结
为期两周的暑期生产实习结束了。整个实习过程可以说是充满欢乐的,和队员之间的亲密合作的欢乐,学习知识锻炼能力的欢乐,和老师交流的欢乐,体会上班下班的欢乐,出行参观的欢乐等等等等。实习从开始的紧张畏惧到后来的喜欢习惯,短短的一个月,匆匆就过了,但是留下的记忆是深刻的、收获是丰盛的、汗水是晶莹的。实习,顾名思义,在实践中学习。在经过一段时间的学习之后,或者说当学习告一段落的时候,我们需要了解,自己的所学需要或应当如何应用在实践之中,因为任何知识都源于实践,归于实践,所以,要将所学付诸实践,来检验所学。然而,我们当然不希望实习仅止于此,那太狭隘了。实习是发挥和应用专业知识,查漏补缺,认真学习,巩固不足的重要一环,因为它毕竟与社会相挂钩,是检验在校学习成果的好时机,因为即使在校学得再好,一旦到了社会,也许所有的一切都会变得一文不值。因为社会毕竟不同于学校。所以,如果不好好的体验、经历这一过程,怎么会知道究竟自己的分量有多重,究竟自己真正懂得多少呢?所以实习是每一个大学毕业生必须拥有的一段经历,他也使我们在实践中了解社会,让我们学到了很多在课堂上根本就学不到的知识,也打开了视野,长了见识,为我们以后进一步走向社会打下坚实的基础。实习使我开拓了视野,领略到不同企业的风格和模式,实习是我们把学到的理论知识应用在实践中的一次尝试。实习时把自己所学的理论知识用于实践,让理论知识更好的与实践相结合,在这结合的时候就是我们学以致用的时候,并且是我们扩展自己充实自己的时候。
参考文献
[1] 李珩.ALTIUM D
[2] 赵建领.51单片机开发与应用技
[3] 南建辉,熊鸣.MCS:51单片学出版社,2004.3
[4] 公茂法,杨学蔚.MCS-51/52社,2009.3
[5] 张子红.Altium Designer6.6电.9
[6] 史久贵.基于Altium D出版社 ,2010.1
[7] 廖济林.USB2.0出版社,2006.7
展开阅读全文