实验4 信号发生器实验sine_第1页
实验4 信号发生器实验sine_第2页
实验4 信号发生器实验sine_第3页
实验4 信号发生器实验sine_第4页
实验4 信号发生器实验sine_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

利用DSP实现模拟信号的数字处理框图信号输入输出电路图信号源toDSP

McBSP1fromDSP

McBSP1输出①②①②AIC23信号输入输出电路图信号输出端口AIC23AIC23输出①②实验4信号发生器实验一、实验目的二、实验原理三、实验内容四、实验思考题

一、实验目的1.学习并掌握D/A转换器的初始化设置及其应用2.学习并掌握使用DSP产生正弦波的原理和算法,进而掌握任意信号波形(如三角波、锯齿波、矩形波等信号)产生的原理和算法。3.比较产生信号的两种主要方法(查表法和计算法)的优缺点。

1.TLV320AIC23B的内部结构及工作原理2.A/D、D/A转换器的初始化与编程3.产生连续的波形的方法二、实验原理TLV320AIC23B是TI公司生产的高性能语音芯片,16、20、24、32位串行A/D、D/A转换电路。采样速率:可通过DSP对其寄存器编程来设置,范围8KHz~96KHz。内含抗混叠滤波器和重构滤波器。在ADC之后有一个抽取滤波器:提高输入信号的信噪比(通带截频0.416fs或0.4535fs)。在DAC之前有一个插值滤波器:保证输出信号平滑(通带截频0.416fs或0.4535fs)。1.TLV320AIC23B的内部结构及工作原理详情见TLV320AIC23Bdatasheet.pdfTLV320AIC23B的内部结构McBSP1TLV320AIC23B的11个寄存器(含编程)1.左侧line输入通道音量控制(地址:0000000)(1)左右通道音量同步设置(2)左通道音量增益设置

//AIC23左声道音量控制

Uint16Left_Line_Input_Volume_Control[2]={ Codec_LLIVC_LPS(1),//左右通道音量同步 LLIVC_LIM(0)+LLIVC_LIV(23)};//左通道音量0增益编程在AIC32.c中2.右侧line输入通道音量控制(地址:0000001)(1)右左通道音量同步设置(2)右通道音量增益设置

//AIC23右声道音量控制Uint16Right_Line_Input_Volume_Control[2]={ Codec_RLIVC_RLS(1),//左右通道音量同步 RLIVC_RIM(0)+RLIVC_RIV(23)};//右通道音量0增益TLV320AIC23B的11个寄存器(含编程)编程在AIC32.c中3.耳机左声道音量控制(地址:0000010)(1)左右耳机声道音量同步设置(2)耳机左声道零交叉检测设置(3)耳机左声道检测使能耳机左声道增益设置

//AIC23耳机左声道音量控制Uint16Left_Headphone_Volume_Control[2]={ Codec_LHPVC_LRS(1),//耳机左声道零交叉检测使能 LHPVC_LZC(1)+LHPVC_LHV(127)//耳机左声道零交叉//+检测使能耳机左声道增益6db};

TLV320AIC23B的11个寄存器(含编程)编程在AIC32.c中4.耳机右声道音量控制(地址:0000011)(1)右左耳机声道音量同步设置(2)耳机右声道零交叉检测设置(3)耳机右声道检测使能耳机左声道增益设置

//AIC23耳机右声道音量控制Uint16Left_Headphone_Volume_Control[2]={ Codec_LHPVC_LRS(1),//耳机右声道零交叉检测使能 LHPVC_LZC(1)+LHPVC_LHV(127)//耳机右声道零交叉//+检测使能耳机右声道增益6db};

TLV320AIC23B的11个寄存器(含编程)编程在AIC32.c中5.模拟音频通道控制(地址:0000100)(1)DAC使能设置(2)ADC输入设置:0=line,1=microphone//AIC23模拟音频通道控制Uint16Analog_Aduio_Path_Control[2]={ Codec_AAPC_STA2(0), AAPC_STA10(0)+AAPC_STE(0)+AAPC_DAC(1)+AAPC_BYP(0)+AAPC_INSEL(0)+AAPC_MICM(0)+AAPC_MICB(0)};//DAC使能,ADC输入为lineTLV320AIC23B的11个寄存器(含编程)编程在AIC32.c中6.数字音频通道控制(地址:0000101)(1)噪声去加重使能设置(2)ADC高通滤波器使能设置:0=禁止,1=使能//AIC23数字音频通道控制Uint16Digital_Audio_Path_Control[2]={ Codec_DAPC_REV, DAPC_DACM(0)+DAPC_DEEMP(0)+DAPC_ADCHP(1)}//ADC使能高通滤波器TLV320AIC23B的11个寄存器(含编程)编程在AIC32.c中7.采样率控制(地址:0001000)(1)CLKIN分频器设置:0=MCLK,1=MCLK/2(2)CLKOUT分频器设置:0=MCLK,1=MCLK/2(3)采样率选择(见下表)当SR3|SR2|SR1|SR0=(0110)b=6时,ADC采样率=32KHz(4)时钟模式选择:0=Normal,1=USBTLV320AIC23B的11个寄存器(含编程)7.采样率控制(地址:0001000)(续)//AIC23波特率设置,CLKIN=CLKOUT=MCLK,采样率32KHz,时钟模式为普通模式,Uint16Sample_Rate_Control[2]={ Codec_SRC_REV,SRC_CLKIN(0)+SRC_CLKOUT(0)+SRC_SR(6)+SRC_BOSR(0)+SRC_USB(0)};TLV320AIC23B的11个寄存器(含编程)编程在AIC32.c中8.数字音频接口格式设置(地址:0000111)(1)AIC23主从模式设置(2)数据格式设置:11=DSP格式,10=I2S格式(3)数据长度:

00=16bit,01=20bit,10=24bit,11=32bit//AIC23为主模式,数据长度16bit,数据为DSP模式Uint16Digital_Audio_Inteface_Format[2]={ Codec_DAIF_REV, DAIF_MS(1)+DAIF_LRSWAP(0)+DAIF_LRP(1)+DAIF_IWL(0)+DAIF_FOR(3)};(9、10、11寄存器略)TLV320AIC23B的11个寄存器(含编程)编程在AIC32.c中/*将数据DataTempLeft从McBSP1发送寄存器数据发送出去*/

while(!MCBSP_xrdy(hMcbsp))

{};//如果无数据,等待MCBSP_write16(hMcbsp,DataTempLeft); 2.数据输出对A/D、D/A转换器编程完成后,DSP将数据通过串行口MCBSP1发送出去。/*从McBSP1接收寄存器读入数据,存入DataTempLeft中*/

while(!MCBSP_rrdy(hMcbsp)){};

//如果无数据,等待DataTempLeft=MCBSP_read16(hMcbsp);3.数据输入对A/D、D/A转换器编程完成后,如果需要DSP通过MCBSP1接收寄存器读入数据,则可如下设置。利用DSP和D/A转换器可以产生连续的正弦波信号,以及矩形波、锯齿波、三角波等其它各种信号波形。产生连续的波形的方法一般有两种:查表法和计算法

3.产生连续的波形的方法(1)产生波形方法:查表法事先将需要输出的数据计算好,存储在DSP中,然后依次输出就可以了。优点:速度快,可以产生频率较高的波形,而且不占用DSP的计算时间。缺点:需要占用DSP的内部的存储空间,尤其对采样频率比较大的输出波形。这样,需要占用的内部的空间将更大,而DSP内部的存储空间有所限制,所以查表法的应用场合十分有限。

查表法(以正弦波为例)设周期为1的正弦信号,对此信号一个周期采用256个点(),作为原始数据,存入正弦波信号的表格中。如果利用DSP十六进制整型数表示,还需将原始数据(十进制小数格式)乘以32767,变成DSP是16位整型格式(Q15格式数据)。(2)计算法(以正弦波为例)采用计算的方法依次计算数据而后输出,然后再计算而再输出。优缺点正好和查表法相反。优点:不占用DSP的存储空间缺点:占用DSP的计算时间,执行程序的开销变大。

计算法(以正弦波为例)如果要计算一个角度x的正弦和余弦值,可以使用泰勒级数进行近似计算。也可以使用递归的差分方程计算正弦和余弦值。y[n]=2cos(a)*y[n-1]-y[n-2] 其中:

a=2p

f0/fS为角度的计算步长。

f0是正弦信号的频率,fS是D/A转换速率。

计算法(以正弦波为例)在产生周期性的正弦信号时,必须以一定的D/A转换速率fS将各个样点值送往D/A转换器。正弦信号每个周期的样点数N由正弦信号的频率f0及D/A转换速率fS决定:

计算法(以正弦波为例)例如,当利用递归的差分方程产生正弦信号时,若设定D/A转换速率fS=16000Hz,则产生f0=1000Hz的正弦波信号时,存在,此时

a=2πf0/fS=2π/N=2π/16=0.3927首先在程序中计算出cos(a)及初始值y[0]和y[1]。cos(a)=0.9238795;y[0]=sin(0)=0;y[1]=sin(a)=0.382683;n≥2以后的y[n]的值,通过递归计算得出。

利用Taylor级数计算正弦波部分参考程序

在c主程序中添加:#defineNx360//每周期抽取点数#pragmaDATA_SECTION(output1,"data_out1");floatoutput1[Nx];//存放sin数据,浮点型#pragmaDATA_SECTION(output,"data_out");intoutput[Nx];//存放sin数据,定点型在cmd文件中添加:data_out:{}>SDRAMdata_out1:{}>SDRAMUint16i,j=0,k=0;floatinput0=0,x1,x2;floata,b,c,d,e,f,g,h,ii,step;//step为角度步长

step=360.0/Nx;//Nx为360度内取样点数for(i=0;i<=Nx-1;i++){floatangle,xx;angle=input0+step*i;x1=3.1415926*angle/180;//

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论