电子系统设计实验
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
姓名 李浩然
指导老师 贾立新
班级 自动化0903
学院 信息工程学院
提交日期 2010/12/4
一,设计题目
基于SOC单片机的数字化语音存储与回放系统
设计要求:
(1)前置放大器增益可调,功率放大器输出功率≥0.5W
(2)带通滤波器:通带为300Hz~3.4kHz 。
(3)ADC:采样频率fs=8kHz,字长8位。
(4)语音存储时间≥60秒。
(5)DAC:变换频率fc=8kHz,字长8位。
(6)回放语音质量良好。
(7)采用语音压缩算法,增加录放时间。
二,
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
设计
语音的存储与回放系统将语音信号转化为电信号,经放大、滤波处理后通过A/D转换器转化为数字信号,然后将数字化的语音信号存放在大容量的存储器中;回放时,从存储器中取出数字化的语音信号,经D/A转化器转化为模拟信号,经滤波放大后驱动扬声器发出声音。
(1) 模拟子系统设计
前置放大电路设计
在语音存储与回放系统中,通过麦克风将声音信号转化为电信号。麦克风内部含有一个电容元件和场效应管构成的内部前置放大器。电容随机械振动发生变化,从而产生与声波成比例的变化电压。麦克风在使用时需要通过一个电阻R1连接到电源对其进行偏置。R1的阻值决定了麦克风的输出电阻和增益,通常在1~10kΩ之间。麦克风输出的电信号比较微弱,信号增值在1~20mV之间。
前置放大器就是对麦克风输出的语音信号进行放大一边对其进一步处理。前置放大电路有两种设计方案。一种方案是针对双麦克风设计的前置放大器,由一级差分放大器和一级增益可调反向放大器组成的设计方案。本次系统设计中,为了是器材简单,使用了后一种,电路图如下所示
(2) 带通滤波器设计
语音存储与回放系统中,模拟量输入通道和输出通道均需要带通滤波器。带通滤波器的通带范围为300Hz~3。4kHz,主要实现的功能如下:
1、保证300Hz~3。4kHz的语音信号不失真的通过滤波器。
2、滤除带通外的低频信号,减少工频等分量的干扰,减小噪声影响。
3、滤除带通外的告辞谐波信号,减少因8kHz采样率引起的混叠失真,根据实际情况,该上限频率在2。7kHz左右。带通滤波器按品质因数Q的大笑分为窄带滤波器(Q〉10)和宽带滤波器(Q〈10)两种。在本系统中,上线频率fH400Hz,下线频率fL=300Hz,带通滤波器的中心频率f0与品质因数Q分别为
显然,Q〈10。过带通滤波器为宽带带通滤波器,宽带带通滤波器一般采用高筒滤波器和低通滤波器级联构成。以下给出4阶低通滤波器和4阶高筒滤波器设计过程。
四阶低通滤波器由两个二阶低通滤波器串联而成,二阶低通滤波器如下图:
计算二阶四阶低通滤波器参数值
前一个低通滤波器Q1=0.541,后一个低通滤波器Q2=1.306
根据对电路的交流分析,传递函数为
将上式与原理图中的二阶低通滤波器传递函数
,比较得
Q=
设
得到滤波器中各项参数的
计算公式
六西格玛计算公式下载结构力学静力计算公式下载重复性计算公式下载六西格玛计算公式下载年假计算公式
为
解的参数值为
Q=0.541
假设C2=2200pF,基准电阻R0=1/2
fH C2,R0=21.29K
C1=4Q^2(1+A0)C2=5151pF.
R7=R0/(2QA0)=19.67K
R8=A0*R1=19.67k
R9=R0/[(2Q(1+A0))=9.83K
Q=1.306
假设C2=2200pF,基准电阻R0=1/2
fcC2,R0=24.11K
C1=4Q^2(1+A0)C2=0.0313uF
R10=R0/(2QA0)=8.15K
R11=A0*R1=8.2 K
R12= R0/[(2Q(1+A0))=4.07 K
四阶高通滤波器由两个二阶高通滤波器串联而成,二阶低通滤波器如下图:
其中C1,R1构成高通级,通过R2的正反馈对Q进行控制。
利用前面公式,可以计算出如下解
Q=0.541
C1=C2=C0=0.033uF
R0=1/2
fL C0=16.08 K
C3=C0/A0=0.033uF
R13=R0/[Q(2+1/A0)]=11.88 K
R14=R0[Q(1+2A0)]=21.75 K
Q=1.306
C1=C2=C0=0.033uF
C3=C0/A0=0.033uF
R15=R0/[Q(2+1/A0)]=4.10 K
R16=R0[Q(1+2A0)]=62.98K
利用以上参数,可以得到最后的电路图为下图:
(2)数字子系统设计
键盘接口设计:
键盘采用4*4矩阵式键盘,Y0~Y3为四根列扫描信号输出线,轮流将每一列置为低电平。X0~X3为四根行输入线,但没有键按下时,X0~X3被上拉电阻拉成高电平。KEYCLK为键盘接口的时钟信号,可由单片机IO引脚提供,也可由外部有源晶体振荡器或RC振荡器提供。DAV为键值有效信号,当按键有效时,DAV产生由高到低的跳变,向单片机发出外部中断请求信号,单片机通过中断服务程序从键盘接口读取四位键值。顶层原理图如下
LCD12864模块并行接口设计:
LCD12864作为单片机的外部设备,单片机通过MOVX指令对LCD12864内部寄存器进行读写。C8051F360的P1端口先送出低8位地址,然后/WR或/RD信号有效,因此可用低8为地址线中的A1,A0作为LCD12864的RW与RS。E信号为高电平有效,时序上滞后于RS,RW信号,因此可以利用/WR与/RD信号通过一与非门得到E信号,为了防止单片机在访问其他外设时对LCD 12864产生误操作,E信号的产生同时还应加一片选信号LCDCS。顶层原理图如下
C8051F360与FPGA接口:
C8051F360单片机通过一个外部数据存储器接口来寻址片外的数据存储器与外部设备。在设计中,把EMIF设置成引脚复用模式。选择不带块选择的分片模式。把外部数据接口引脚设置为推拉式输出。在ALE高电平期间,P1口先送出低8位地址,在ALE下降沿时刻,P1口的低8位地址处于稳定状态,因此可用一地址锁存器在ALE下降沿时刻将地址锁存。随后,读写数据出现在P1口上,同时/RD与/WR信号有效。在/RD 或/WR信号的上升沿前,数据被读入单片机或被写入殉职的数据存储单元。顶层原理图如下
(3) 系统软件设计
语音存储回放系统软件的基本功能是通过按键控制系统实现录音和放音。录音时,采集语音信号并将采集的数据存入M25P16中,放音时,从M25P16中读取数据送入DAC,系统分为以下几个框架
1, 人机接口的功能设计
2, M25P16的读写方案设计
3, A/D和D/A转换器的控制
4, C8051F360单片机内部资源的使用
主程序流程图如下
键盘中断服务程序流程图
A/D中断服务程序流程图
定时器T2中断服务程序流程图
三,系统调试
1, 单片机部分的调试
单片机部分的调试主要是对系统部分进行调试,将EC5仿真器将单片机最小系统与PC机相连,采用C8051F单片机的集成开发环境Silicon Laboratory IDE进行调试,主要步骤如下
调试键盘显示程序
测试单片机对M25P16读写是否正常
测试C8051F360单片机的A/D和D/A转换器
2, 模拟部分的调试
麦克风和前置放大器的调试
带通滤波器的调试
音频功放电路的调试
四,实验
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
通过这次试验,对C8051F360和FPGA有了深刻的理解,通过整个系统的设计,发现,容易出错的地方往往不是程序代码语法或者输入错误,而是系统逻辑问题,因此在以后的系统设计中,要重视逻辑的建立,在做系统之前,首先要画出没有挑剔的程序流程图,因为这是系统的思想路径,只有有了明确正确的路径,才能踏踏实实的编写程序,同时也会发现,以前恐惧的几百行代码已经变得多么易于理解了。
还有,再写好代码后,最重要的就是调试,很多时候,实际和自己的理论判断并不是相靠拢的,这时我们要相信实际,逐步的调试,最终实现系统的完美设计。
五,程序代码
//voice sample and play
//design ang done by haoran lee in 2011/12/4
#define uchar unsigned char
#define WDATADDR 0XC009
#define RDATADDR 0XC00B
#define WCOMADDR 0XC008
#define RCOMADDR 0XC00A
#define KEYCS 0xC00C;
uchar code hanzi[] = "语音存储回放";
void CheckLcd()
{
uchar temp=0x00;
ucharxdata *addr; //xdata means the data is the outside memory
while(1)
{
addr=RCOMADDR;
temp=*addr;
temp&=0x80; //if busy
if(temp==0x00)
break;
}
}
//Initial out memory
void XramInit(void)
{
SFRPAGE=0x0F;
EMI0CN=0x00; //visit Xram 0000-00FF
EMI0CF=0x07; //ALE borad is 3 system,seek for address do not need block
//EMI0TC=
SFRPAGE=0x00;
return;
}
//write data to the lcd
void WriteData(uchar m)
{
ucharxdata *addr;
CheckLcd();
addr=WDATADDR;
*addr=m;
}
//write command to the lcd
void WriteCom(uchar n)
{
ucharxdata *addr;
CheckLcd();
addr=WCOMADDR;
*addr=n;
}
//Lcd initial
void InsitiLcd()
{
WriteCom(0x30); //set as basic command