DSP课程设计报告.docx

上传人:b****2 文档编号:3223884 上传时间:2023-05-05 格式:DOCX 页数:26 大小:398.89KB
下载 相关 举报
DSP课程设计报告.docx_第1页
第1页 / 共26页
DSP课程设计报告.docx_第2页
第2页 / 共26页
DSP课程设计报告.docx_第3页
第3页 / 共26页
DSP课程设计报告.docx_第4页
第4页 / 共26页
DSP课程设计报告.docx_第5页
第5页 / 共26页
DSP课程设计报告.docx_第6页
第6页 / 共26页
DSP课程设计报告.docx_第7页
第7页 / 共26页
DSP课程设计报告.docx_第8页
第8页 / 共26页
DSP课程设计报告.docx_第9页
第9页 / 共26页
DSP课程设计报告.docx_第10页
第10页 / 共26页
DSP课程设计报告.docx_第11页
第11页 / 共26页
DSP课程设计报告.docx_第12页
第12页 / 共26页
DSP课程设计报告.docx_第13页
第13页 / 共26页
DSP课程设计报告.docx_第14页
第14页 / 共26页
DSP课程设计报告.docx_第15页
第15页 / 共26页
DSP课程设计报告.docx_第16页
第16页 / 共26页
DSP课程设计报告.docx_第17页
第17页 / 共26页
DSP课程设计报告.docx_第18页
第18页 / 共26页
DSP课程设计报告.docx_第19页
第19页 / 共26页
DSP课程设计报告.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

DSP课程设计报告.docx

《DSP课程设计报告.docx》由会员分享,可在线阅读,更多相关《DSP课程设计报告.docx(26页珍藏版)》请在冰点文库上搜索。

DSP课程设计报告.docx

DSP课程设计报告

1.绪论

1.1原理及目的

数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域。

滤波的目的。

根据其单位冲激响应函数的时域特性可分为两类:

无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。

与IIR滤波器相比,FIR滤波器只有零点,除原点外.在z平面上没有极点,因此总是稳定的和可实现的;更重要的是,FIR滤波器在满足一定的对称条件下,可以获得严格的线性相位特性,这一点是IIR滤波器难以实现的。

因此,在高保真的信号处理.如数字音频、图像处理、数据传输、生物医学等领域得到广泛应用。

与单片机相比,DSP有着更适合于数字滤波的特点。

它利用改进的哈佛总线结构,内部有硬件乘法器、累加器,使用流水线结构,具有良好的并行特点,并有专门设计的适用于数字信号处理的指令系统等。

通过本次课程设计,综合运用数字信号处理、DSP技术课程以及其他有关先修课程的理论和生产实际知识去分析和解决具体问题,并使所学知识得到进一步巩固、深化和发展。

初步培养学生对工程设计的独立工作能力,掌握电子系统设计的一般方法。

通过课程设计完成基本技能的训练,如查阅设计资料和手册、程序的设计、调试等,提高学生分析问题、解决问题的能力。

 

1.2设计步骤及要求

本题目通过DSP处理器控制TLC32AIC23采集音频信号,在CCS软件中分析音频信号的频谱图,使用Matlab设计相应的FIR数字滤波器(低通、带通、带阻等)并得到滤波器H(z)的系数,然后根据这些系数,编写DSP程序(C语言或汇编)对已采集信号进行处理,最后在CCS软件中得到处理后音频信号的频谱图,比较滤波前后信号的频谱图。

设计步骤包括:

1、DSP与TLC320AIC23接口电路的原理图绘制;

2、DSP控制TLC320AIC23的程序编写与调试;

3、TLC320AIC23模拟量到数字量的转换,采集声音信号,查看并记录信号频谱;

4、使用Matlab对FIR滤波器的设计;

5、编写FIR滤波处理的DSP程序,查看并记录处理后的信号频谱;

6、用TLC320AIC23实现数字量到模拟量的转换,回放处理后的声音;

7、按要求编写课程设计报告书,正确、完整的阐述设计和实验结果。

8、在报告中绘制程序的流程图,并文字说明。

 

2.设计总体方案

2.1语音信号的采集

所需的硬件主要是DSP、DRAM、TLC320AIC23、TLC2272,语音信号从麦克风输入后经过TLC2272(双路低噪声)滤波,通过AD50的A/D将模拟信号转换为数字信号后,编写DSP程序,将采集的数字信号存入DSP的DRAM,然后经某一事件触发,将信号回放出去,信号由耳机输出。

图1.语音处理的硬件连接示意图

 

2.2FIR滤波器的原理及特点

2.2.1FIR数字滤波器原理及设计方法分类

FIR滤波器的传递函数为:

(2-1)

可得FIR滤波器的系统差分方程为:

因此,FIR滤波器又称为卷积滤波器。

根据系统频率响应,FIR滤波器的频率响应表达式为:

(2-2)

信号通过FIR滤波器不失真条件与(6-6)式所描述的相同,即滤波器在通带内具有恒定的幅频特性和线性相位特性。

理论上可以证明(这里从略):

当FIR滤波器的系数满足下列中心对称条件:

(2-3)

滤波器设计在逼近平直幅频特性的同时,还能获得严格的线性相位特性。

线性相位FIR滤波器的相位滞后和群延迟在整个频带上是相等且不变的。

对于一个N阶的线性相位FIR滤波器,群延迟为常数,即滤波后的信号简单地延迟常数个时间步长。

这一特性使通带频率内信号通过滤波器后仍保持原有波形形状而无相位失真。

 

表1.FIR滤波器设计的主要方法

函数设计方法

说明

工具函数

窗函数法

理想滤波器加窗处理

fir1(单频带),fir2(多频带),kaiserord

最优化设计

平方误差最小化逼近理想幅频响应或Park-McClellan算法产生等波纹滤波器

firls,remez,remezord

约束最小二乘逼近

在满足最大误差限制条件下使整个频带平方误差最小化

fircls,fircls1

升余弦函数

具有光滑、正弦过渡带的低通滤波器设计

Fircos

2.3窗函数设计方法

 FIR滤波器设计的主要任务是根据给定的性能指标确定滤波器的系数b,即系统单位脉冲序列h(n),它是一个有限长序列。

FIR滤波器的理想频率响应,可写成复数形式的Fourier级数形式:

(2-4)

式中,hd(n)是对应的单位脉冲响应序列。

这说明滤波器的频率响应和单位脉冲响应互为Fourier变换对。

因此其单位脉冲响应可由下式求得,

(2-5)

求得序列

后,通过z变换,可得到

(2-6)

注意,这里

为无限长序列,因此

是物理上不可实现的。

如何变成物理上可实现呢?

一个自然的想法是只取其中的某些项,即只截取

中的一部分,比如n=0,…,N-1,N为正整数。

这种处理相当于将

n=-∞~∞与函数w(n)相乘,w(n)具有下列形式:

w(n)相当于一个矩形,我们称之为矩形窗。

即我们可采用矩形窗函数w(n)将无限脉冲响应

截取一段h(n)来近似为

,这种截取在数学上表示为:

h(n)=

w(n)(2-7)

这里应该强调的是,加窗函数不是可有可无的,而是将设计变为物理可实现所必须的。

截取之后的滤波器传递函数变为:

(2-8)

式中,N为窗口宽度,H(z)是物理可实现系统。

为了获得线性相位,FIR滤波器h(n)必须满足中心对称条件(即7-3式),序列h(n)的延迟为

这种方法的基本原理是用一定宽度的矩形窗函数截取无限脉冲响应序列获得有限长的脉冲响应序列,从而得到FIR滤波器的脉冲响应,故称为FIR滤波器的窗函数设计法。

经过加矩形窗后所得的滤波器实际频率响应能否很好地逼近理想频率响应呢?

图2示意给出了理想滤波器加矩形窗后的情况。

理想低通滤波器的频率响应如图中左上角图,矩形窗的频率响应为左下角图。

时间域内的乘积(2-7)式要求实际频率响应为这两个频率响应函数在频域内的卷积(卷积定理),即得到图形为图2(下图)。

图2.FIR滤波器理想与实际频率响应

由图可看出,加矩形窗后使实际频率响应偏离理想频率响应,主要影响有三个方面:

(1)理想幅频特性陡直边缘处形成过渡带,过渡带宽取决于矩形窗函数频率响应的主瓣宽度。

(2)过渡带两侧形成肩峰和波纹,这是矩形窗函数频率响应的旁瓣引起的,旁瓣相对值越大,旁瓣越多,波纹越多。

(3)随窗函数宽度N的增大,矩形窗函数频率响应的主瓣宽度减小,但不改变旁瓣的相对值。

为了改善FIR滤波器性能,要求窗函数的主瓣宽度尽可能窄,以获得较窄的过渡带;旁瓣相对值尽可能小,数量尽可能少,以获得通带波纹小,阻带衰减大,在通带和阻带内均平稳的特点,这样可使滤波器实际频率响应更好地逼近理想频率响应。

这里我们明确两个概念:

截断和频谱泄漏。

信号是无限长的,而在进行信号处理时只能采取有限长信号,所以需要将信号“截断”。

在信号处理中,“截断”被看成是用一个有限长的“窗口”看无限长的信号,或者从分析的角度是无限长的信号x(t)乘以有限长的窗函数w(t)。

由傅立叶变换性质可知,时间域内的乘积对应于频率域的卷积,即

(2-9)

这里,x(t)是频宽有限信号,而w(t)是频宽无限信号,

表示互为Fourier变换对。

截断后的信号也必须是频宽无限信号,这样就是有限频带的信号分散到无限频带中去,这样就产生了所谓频谱泄漏。

从能量的角度来看,频谱泄漏也是能量的泄漏,因为加窗后使原来信号集中的窄频带内的能量分散到无限的频带宽度范围内。

频谱泄漏是不可避免的,但要尽量减小。

上边只考虑了矩形窗,如果我们使窗的主瓣宽度尽可能地窄,旁瓣尽可能地小,可以获得性能更好的滤波器,能否改变窗的形状而达到这个目的呢?

回答是肯定的。

其实数字信号处理的前驱者们设计了不同于矩形窗的很多窗函数,这些窗函数在主瓣和旁瓣特性方面各有特点,可满足不同的要求。

为此,用窗函数法设计FIR数字滤波器时,要根据给定的滤波器性能指标选择窗口宽度N和窗函数w(n)。

 

2.4FIR滤波器的DSP实现方案

一个典型的DSP系统如图3所示

图3.典型DSP系统的构成

其中的输入信号可以是麦克风输出的语音信号、电话线的已调数据信号,可以是编码后在数字链路上传输或存储在计算机里的摄像机图像信号等输入号。

首先进行带限滤波和抽样,然后进行A/D转换成数字比特流,由耐奎斯特样定理可知为了保证信息完整抽样频率至少是输入带限信号最高频率的2倍。

之后输入DSP芯片的是以抽样形式表示的数字信号,DSP芯片对输入信号行处理,如进行一系列的乘累加操作,最后经过处理后的数字样值经D/A换成为模拟样值再经过内插和平滑滤波就得到了连续的模拟波形。

TMS320VC5416是定点的数字信号处理器。

它采用先进的修正哈佛结构,片内共有8条16位的总线,其中包括4条程序/数据总线和4条地址总线,各条总线的作用如下:

①程序总线PB传输来自程序存储器的指令代码和立即数;②三条数据总线CB,DB,EB相互连接不同的单元,如中央处理单元、数据地址产生逻辑、程序地址产生逻辑、片内外设和数据存储器。

其中,CB和DB传输从程序存储器读来的数据,EB传输待写入存储器的数据;.PAB,CAB,DAB和EAB这4条地址总线传输指令执行所需要的地址。

图4为TMS320C5416DSP的内部硬件组成框图。

CPU采用并行结构设计特点,使其能在一条指令周期内,高速地完成多项算术运算。

CPU的基本组成如下:

①40位算术逻辑运算单元(ALU),包括一个40位桶形移位寄存器和2个独立的40位累加器;②17X17位并行乘法器,与40位专用加法器相连,用于非流水线式单周期乘法/累加(MAC)运算:

③比较、选择和存储单元(CSSU),用于加法/比较选择。

④指数编码器,可以在单个周期内计算40位累加器中数值的指数。

DSP5402的片上外围电路包括:

通用u0引脚(XF和BIO#),定时器,时钟发生器,一个与外部处理器通信的8位的HPI(HostPortInterface)接口,两个多通道缓冲串行口McBSP(MultichannelBSP)。

器片内存储器的种类只要有以下几种:

双访问RAM(DARAM),单访问RAM(SRAM)和ROM.RAM一般映射在数据空间。

DRAM一般由若干块构成,由于每块DARAM在一个机器周期内可以被访问2次,中央处理单元和片内外设在一个周期内可以同时对其进行一次读和一次写操作。

根据需要,通过改变处理器状态寄存器的三个位MP/MC,OVLY和DROM来灵活地改变存储器的配置。

数据存储空间还有一块特殊的区域,OOH--08H。

这块区域包含的是存储器映像寄存器,它包含了DSP中所有的寄存器,可以通过读这块存储器来了解各个寄存器的值,或者通过写这块寄存器来改变寄存器的值。

因此编程时不能随便向这个区域存储数据,除非根据需要来改变相应寄存器的值,否则会导致程序运行结果错误。

具有高度专业化的指令系统,包括单指令重复和块指令重复操作,块存储器传输指令,32位长操作数指令,同时读入2或3个操作数的指令,能并行存储和并行加载的算术指令,条件存储指令和从中断快速返回。

图4.TMS320C5416DSP的内部硬件组成框图

 

2.5FIR滤波器的Matlab设计

MATLAB被称为第四代计算机语言,又称为“草稿纸式”的语言,它具有不同于其他语言如Fortran、C语言等的特点,是边解释边执行的计算机语言。

MATLAB是一款具有强大的矩阵运算、数据处理和图形显示功能的软件,其输出结果可视化,编程效率极高,用极少的代码即可实现复杂的运行,因此它使工程技术人员摆脱了繁琐的程序代码,以便快速地验证自己的模型和算法。

fir1就是采用经典窗函数法设计线性相位FIR数字滤波器的函数,且具有标准低通,带通,高通,带阻等类型。

函数调用格式为:

b=fir1(n,wn[,'ftype',window])

式中,n为FIR滤波器的阶数,对于高通,带阻滤波器,n需取偶数;wn为滤波器截止频率,范围为0~1(归一化频率)。

对于带通,带阻滤波器,wn=[w1,w2](w1

0

‘ftype'为滤波器的类型:

缺省时为低通或带通滤波器;'high'为高通滤波器;‘stop'为带阻滤波器,'DC-1'为第一频带为通带的多带滤波器;'DC-0'为第一频带为阻带的多带滤波器。

window为窗函数列向量,其长度为n+1。

缺省时,自动取哈明窗。

MATLAB提供的窗函数有boxcar、hanning、hamming、bartlett、blackman、kaiser、chebwin,调用方式见上节。

b为FIR滤波器系数向量,长度为n+1。

FIR滤波器的传递函数具有下列形式:

(4-21)

用函数fir1设计的FIR滤波器的群延迟为n/2。

考虑到n阶滤波器系数个数为N,即n+1,这里的延迟与前面所讲的(N-1)/2的延迟一致。

注意这里的滤波器的最小阶数比窗函数的长度少1。

 

2.6硬件连接及通信协议

2.6.1硬件连接

根据图2和图4的时序,则容易实现TLC320AIC23与TMS320VC5416的硬件连接,如图5所示。

图5.TLC320AIC23与TMS320VC5416的硬件连接

TLC320AIC23的MCLK外接8.192MHz的晶振,TMS320VC5416的FSX和FSR由TLC320AIC23设置。

如果选择D7=0,N=8,则采样速率为8kHz。

2.6.2通信协议

TLC320AIC23的通信有两种格式:

一次通信格式和二次通信格式。

一次通信格式的16位都用来传输数据。

DAC的数据长度由寄存器1的D0位决定。

启动和复用时,缺省值为15+1位模式,最后一位要求二次通信。

如果工作在16位传输模式,则必须由FC产生二次通信请求。

二次通信格式则用来初始化和修改TLC320AIC23内部寄存器的值。

在二次通信中可以通过向DIN写数据来初始化。

系统复位后,必须通过DSP的DX口向TLC320AIC23的DIN写数据,如果采用一片TLC320AIC23,只需初始化其寄存器1、寄存器2和寄存器4。

由于通信数据长度为16位,初始化时应通过RCR1和XCR1设置McBSP的传输数据长度为16。

考虑到TLC320AIC23复位后至少经过6个MCLK才可以脱离复位,故可以在此时间内初始化DSP的串行口。

 

3.软件设计

图6.MATLAB的人机交互软件设计

 

3.1用MATLAB控制串口接收数据

1.先进行串口的初始化操作,然后打开串口,用到的函数为:

serial和open。

2.设定MATLAB和DSP的握手方式,可通过串口目标的FlowControl属性设定。

3.接收和发送数据,用到fread和fwrite函数。

对于用DSP器件设计的语音信号滤波器,其系统软件设计可使用CCS(CodeComposerStudio)软件来进行调试。

设计调试时,首先应对各个设备进行初始化配置,然后再调用子程序来处理音频数据的输入和输出。

在子程序中,首先初始化语音缓冲区和工作变量,等待MCBSP通道0传送结束后,再采集语音信号,然后传送到MCBSP并保存于左声道缓冲区,此时即可调用材料计算FIR滤波输出,滤波后的结果存放于右声道缓冲区,最后将滤波后的信号输出到MCBSP接口,再将此信号传送到TMS320C5410中。

通过DSP的串口0输入/输出数据。

在串口通讯中,数据时钟和帧同步信号都由AC01产生,所以VC5410将使用外部时钟和帧同步信号。

串口设置代码如下:

stm#0,spsa0

stm#2000h,spcr10

stm#1,spsa0

stm#0c0h,spcr20

stm#2,spsa0

stm#40h,39h

stm#3,spsa0

stm#0,39h

stm#4,spsa0

stm#40h,xcr10

stm#5,spsa0

stm#0,39h

stm#0eh,spsa0

stm#0dh,pcr0

stm#7h,spsa0

stm#8000h,39h

rpt#0ffffh

nop

stm#00h,dxr10

ldm22h,a

stm#1,38h

stm#0c1h,39h

完成串口设置后,还需要修改中断向量表以便正确响应串口0的接收和发送中断请求。

使用发送中断产生送出滤波之后的数字语音信号;使用接收中断存贮输入的数据,并设置新数据到达标志。

主循环在检测到该标志后,调用FIR滤波程序,完成对输入数据的处理。

3.2matlab设计fir带通滤波器

[n,Wn,beta,ftype]=kaiserord([7131723],[010],[0.010.010.01],100);

   //得出滤波器的阶数n=38,beta=3.4

w1=2*fc1/fs;w2=2*fc2/fs;//将模拟滤波器的技术指标转换为数

字滤波器的技术指标

window=kaiser(n+1,beta);//使用kaiser窗函数

b=fir1(n,[w1w2],window);//使用标准频率响应的加窗设计函数

fir1

freqz(b,1,512);//数字滤波器频率响应

t=(0:

100)/Fs;

s=sin(2*pi*t*5)+sin(2*pi*t*15)+sin(2*pi*t*30);//混和正弦波信号

sf=filter(b,1,s);//对信号s进行滤波

图7.滤波前后的波形

运行程序后,使用DSP的集成开发环境CCS可以将输入数据与滤波结果显示出来,通过与使用MATLAB的SIMULINK功能仿真出的滤波结果进行比较,可以验证用DSP芯片C54x实现的该FIR滤波器的滤波过程是否正确。

利用MATLAB的滤波器设计函数fir1设计了一个具有线性相位的数字低通FIR滤波器,得到了该滤波器的滤波系数及幅频特性曲线、相频特性曲线,并且用MATLAB的仿真工具SIMULINK仿真了该FIR滤波器的滤波过程;通过线性缓冲区法对FIR滤波器在DSP芯片C54x的实现做了理论上的分析。

用MATLAB语言可方便、快捷地设计具有线性相位的FIR滤波器,而且对于参数的修改也十分方便。

用MATLAB仿真工具可以清晰地仿真出FIR滤波器的滤波过程,有利于理解滤波过程,且可以判断滤波结果的正确性。

利用DSP芯片实现FIR滤波器,不仅具有准确度高、执行速度快等特点,而且用程序可移植性好,实用性强可以十分方便地改变滤波器特性。

在实际应用中,只需要按照要求修改滤波器的参数,并对程序作微小的改动,即可实现不同要求的FIR滤波器。

 

4.运行步骤与结果

启动CCS,输入实验程序代码,进行编译并加载到DSP中。

采用单步运行或执行到光标处,或全速运行,并打开波形观察窗口,跟踪观察其执行过程和滤波效果。

先打开项目,然后编译、加载实验程序,然后点击菜单debug—Gomain就进入预先编译的实验程序

然后打开波形观察窗口,路径是View—Graph—Time/Frequence,将出现如下图5.1所示的图形属性框,在DisplayType一栏中选择DualTime项;InterleavedDataSources一栏中选择No项;StartAddress-upperdisplay一栏中输入x,StartAddress-upperdisplay一栏中输入r;AcquistitionBufferSize一栏中输入256;DisplayDataSize一栏中输入256;DSPDataType一栏中选择16-bitsignedinteger项;其他为默认值,然后点击“OK”就可打开图形观察窗口如图8。

 

图8.图形属性窗口

之后输入语音数据文件,将文件所在路径输入,然后就会出现如图9所示的输入波形窗口。

图9.语音数据波形

之后再运行已编写的程序,就可观察到输入数据经过FIR滤波后的效果,如图10所示,至此就可观察信号经过FIR滤波后的信号的改变.

图10.FIR滤波后的输出波形数据

通过硬件测试证明,当未进行FIR滤波时,声音中含有的高频杂音将明显地影响听觉效果。

但是在进行滤波以后,高频杂音去掉了,声音质量明显的改善了。

因此,在实际应用中对语音信号进行FIR滤波,可以很好的将噪音部分去掉。

 

5.心得体会

通过这次的课程设计使我进一步加深了对于DSP这门课程的学习以及对于CCS软件的应用。

在课程设计过程中我遇到一些课堂中从未有过、也从未思考过的问题,通过上网查找资料和老师同学交流,在实践中不断解决问题,并加以改进,最终得出了结果。

这次的课程设计使我对DSP的功能的认识有了进一步了解,从对CCS软件一无所知,到能利用此软件进行基本操作,通过自己动手做课程设计我才真正看到其功能的广泛性和便捷性。

在编程的过程中也对汇编语言渐渐熟悉起来,把课堂上学过的知识真正转化成能够实践运行的程序。

在实际操作中我发现,CCS和其他的编程语言不一样,它的基本思想更接近于机器语言,和以前所学的MATLAB不同,更不能用C语言的思想来套用。

在应用中我掌握了用汇编语言编写输出正弦波信号的程序,学会了利用TMS320C54x对基本的文件的汇编、编译、链接和调试。

相信这些会对我今后的学习有所帮助。

在课设过程中我还认识到细节对于编程和运行的重要性,理解老师上课所讲的东西打好基础也尤为重要。

作为一个应用软件,学好CCS的关键就是在实践中不断积累,勤加练习,习惯于用CCS来解决实际问题。

对于每个写过的程序都要问明白,真正理解每一步的操作原理,这样才能为以后的学习打好基础。

学习新的知识就是要有耐心和好奇心,才能真正掌握知识,才是真正好的学习态度。

 

参考文献

[1]邹彦.DSP原理及应用[M].北京:

电子工业出版社,2005,1.

[2]戴明桢.TMS320C54xDSP结构、原理及应用[M].北京航空航天大学出版社,2001,8.

[3]胡圣尧.DSP原理及应用[M].东南大学出版社,2008.7.

[4]清源科技.TMS320C54xDSP应用程序设计教程[M].机械工业出版社,2004,1.

[5]清源科技.TMS320C54x硬件开发教程[M].机械工业出版社,2003,1.

 

附录:

程序代码

BSP.set0;//当前使用McBsp0

;McBsp0内存映射寄存器

SPSA0.set038h;//定义子地址寄存器映射位置

SPSD0.set039h;//定义子块数据寄存器映射位置

DRR10.set021h;//接收数据寄存器1映射位置

DRR20.set020h;//接收数据寄存器2映射位置

DXR10.set023h;//发送数据寄存器1映射地址

DXR20.set022h;//发送数据寄存器2映射地址

;McBsp1//内存映射寄存器

SPSA1.set048h

SPSD1.set049h

DRR11.set

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2