matlab通信工具箱教程.ppt_第1页
matlab通信工具箱教程.ppt_第2页
matlab通信工具箱教程.ppt_第3页
matlab通信工具箱教程.ppt_第4页
matlab通信工具箱教程.ppt_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

第-6-章 通信系统仿真,6.1 通信工具箱函数 6.2 信息的度量和编码 6.3 差错控制编/译码方法 6.4 模拟调制和解调 6.5 数字调制和解调 6.6 通信系统的性能仿真 6.7 扩频通信系统的仿真,6.1通信工具箱的函数,在MATLAB的Communication Toolbox(通信工具箱)中提供了许多仿真函数和模块,用于对通信系统进行仿真和分析。主要包括两部分内容:通信函数命令和Simulink的Communications Blockset(通信模块集)仿真模块。用户既可以在MATLAB的工作空间中直接调用工具箱中的函数,也可以使用Simulink平台构造自己的仿真模块,以达到扩充工具箱的内容。通信工具箱中的函数名称和内容列表,其内容包含:,Signal Sources(信号源函数); Signal Analysis function(信号分析函数); Source Coding(信源编码); Error Control Coding(差错控制编码函数); Lower Level Function for Error Control Coding(差错控制编码的底层函数); Modulation/Demodulation(调制/解调函数) Special Filters(特殊滤波器设计函数); Lower Level Function for Specials Filters(设计特殊滤波器的底层函数); Channel Functions(信道函数); Galosi Field Computation(有限域估计函数); Utilities(实用工具函数)。,6.2 信息的量度与编码,信源熵的输出可以用随机过程来表达。对于一个离散无记忆平稳随机过程,其信息量 (熵)定义为:,其中X表示信源取值集合,p(x)是信源取值x的概率。,6.2.1 Huffman编码 信源编码可分为两类:无失真编码和限失真编码。Huffman编码的基本原理就是为概率较小的信源输出分配较长的码字,而对那些出现可能性较大的信源输出分配较短的码字。,Huffman编码算法及步骤如下: 将信源消息按照概率大小顺序排队。 按照一定的规则,从最小概率的两个消息开始编码。 将经过编码的两个消息的概率合并,并重新按照概率大小排序,重复步骤。 重复上面步骤,一直到合并的概率达到1时停止。这样便可以得到编码树状图。 按照后出先编码的方式编程,即从数的根部开始,将0和1分别放到合并成同一节点的任意两个支路上,这样就产生了这组Huffman码。,6.2.2 MATLAB信源编/译码方法,大多数信源(比如语音、图像)最开始都是模拟信号,为了将信源输出数字化,信源必须量化为确定数目的级数。量化方案可划分为标量量化和矢量量化两种。在标量量化中每个信源输出都分别被量化,标量量化可进一步分为均匀量化和非均匀量化。在均匀量化中量化区域是等长的;在非均匀量化中量化区域可以是不等长的。矢量量化是对信源输出组合进行整体量化。,在标量量化中,随机标量X的定义域被划分成N个互不重叠的区域Ri,1 iN , Ri被称为量化间隔,且在每个区域内选择一个点作量化级数。这样落在区域Ri内的随机变量的所有值都被量化为第i个量化级数,用,来表示。这就意味着:,易见,这类量化引入了失真,其均方误差为:,其中f(x)是信源随机变量的概率密度函数。信号量化噪声比(SQNR)为:,在MATLAB通信工具箱中提供了两种信源编译码的方法:标量量化和预测量化。 1.标量量化,(1)信源编码中的,律或A律压扩计算函数compand( ),格式:out=compand(in, param, V, method) 功能:实现,律或A律压扩,其中param为,值,V为峰值。压扩方式由method指定。,(2) 产生量化索引和量化输出值的函数quantiz( ) 格式:indx=quantiz(sig, partition) 功能:根据判断向量partition,对输入信号sig产生量化索引indx,indx的长度与sig矢量的长度相同。 (3) 采用训练序列和Lloyd算法优化标量算法的函数lloyds( ) 格式:parition, codebook=lloyds(training_set, ini_codebook) 功能:用训练集矢量training_set优化标量量化参数partition和码本codebook。ini_codebook是码本codebook的初始值。,例6-2 用训练序列和Lloyd算法,对一个正弦信号数据进行标量化。 MATLAB程序如下: N=23; %以3比特传输信道 t=0:100*pi/20; u=cos(t); p,c=lloyds(u,N); %生成分界点矢量和编码手册 index,quant,distor=quantiz(u,p,c); %量化信号 plot(t,u,t,quant,*); 该程序运行结果如图6.3所示。,2.预测量化 根据过去发送的信号来估计下一个将要发送的信号值。 (1) 差分脉冲调制编码函数dpcmenco( ) 格式:indx=dpcmenco(sig, codebook, partition, predictor) 功能:返回DPCM编码的编码索引indx。其中参数sig为输入信号,predictor为预测器 传递函数,其形式为0, t1, tm。 预测误差的量化参数由partition和predictor指定。 (2) 信源编码中的DPCM解码函数dpcmdeco( ) 格式:sig=dpcmdeco(indx, codebook, predictor) 功能:根据DPCM信号编码索引indx进行解码。predictor为指定的预测器,codebook为 码本。,(3) 用训练数据优化差分脉冲调制参数的函数dpcmopt( ) 格式:predictor=dpcmopt(training_set, ord) 功能:对给定训练集的预测器进行估计,训练集及其顺序由training_set和ord指定,预测器由predictor输出。,例6-3 用训练数据优化DPCM方法,对一个余弦信号数据进行标量化。 MATLAB程序如下: N=23; %以3比特传输信道 t=0:100*pi/20; u=cos(t); predictor,codebook,partition=dpcmopt(u,1,N); %优化的预测传递函数 index,quant=dpcmenco(u,codebook,partition,predictor); %使用DPCM编码 sig, equant=dpcmdeco(index, codebook, predictor); %使用DPCM解码 plot(t,u,t,equant,*); 运行后所得图形如图6.4所示。,6.3 差错控制编/译码方法,在通信系统中,差错控制编/译码技术被广泛地用于检查和纠正信息在传递过程中发生的错误。在发送端,差错控制编码添加了一定的冗余码元到信源序列;接收时就利用这些冗余信息来检测和纠正错误。纠错编码主要有分组码和卷积码两种类型。 MATLAB通信工具箱提供了一系列函数用于有限域计算。概率解码中最常用的是Viterbi解码,用于卷积码解码。常用的纠错编码方法包括线性分组码、海明码、循环码、BCH码、Reed-Solomon码和卷积码。,1. 纠错编码函数encode( )及译码函数decode( ) 格式:code=encode(msg, N, K, method, opt) 功能:用method指的方法完成纠错编码。其中msg代表信息码元;method是允许的编码方法,包括hamming 、linear等, opt是一个可选择的优化参数。 格式:msg=decode(code,n,k,method) 功能:用指定的method方式进行译码。为了正确地复制出信源序列,编码和译码的调用方式必须相同。,2. 卷积纠错编码函数convenc( ) 格式:code=convenc(msg, trellis) 功能:利用poly2trellis函数定义的格形trellis 结构,对二进制矢量信息msg进行卷积 编码。编码器的初始状态为零状态。,3. 将卷积编码多项式转换成格形(trellis)结构函数poly2trellis( ) 格式:trellis = poly2trellis(constrainlength, codegenerator) 功能:将前向反馈卷积编码器的多项式转换成一格形(trellis)结构。,4. 利用Viterbi 算法译卷积码函数vitdec( ) 格式:decoded = vitdec(code,trellis,tblen,opmode,dectype) 功能:利用Viterbi 算法译卷积码。Code为poly2trellis函数或istrellis函数定义的格形 trellis结构的卷积码。参数tblen 取正整数,表示记忆(traceback)深度。参数opmode 代表解码操作模型。,例6-6 利用vitdec函数对一个信号进行卷积码译码的例子。 MATLAB程序如下: t = poly2trellis(3 3,4 5 7;7 4 2); k = log2(t.numInputSymbols); msg = 1 1 0 1 1 1 1 0 1 0 1 1 0 1 1 1; code = convenc(msg,t); tblen = 3; d1=vitdec(code,t,tblen,cont,hard); d m p in = vitdec(code,t,tblen,cont,hard); 该程序运行结结果:d1与d相同;d为信息msg的延迟结果, d(tblen*k+1:end)与 msg(1:end-tblen*k)相同。,6.4 模拟调制与解调,根据调制信号的不同,可将调制分为模拟调制和数字调制。模拟调制的输入信号为连续变化的模拟量,数字调制的调制信号是离散的数字量。在对调制进行仿真模拟有带通的和基带的两种选择。带通仿真的载波信号包含于传输模型中。由于载波信号的频率远高于输入信号,根据抽样定理,抽样频率必须至少大于两倍的载波频率才能正确地恢复信号,因此对高频信号的模拟仿真效率低、速度慢。为了加速模拟仿真,一般使用基带仿真,也称为低通对等方法。基带仿真使用带通信号的复包络。,6.4.1带通模拟调制与解调,模拟调制通常分为:幅度调制(AM)、频率调制(FM)和相位调制(PM)。幅度调制又可分为常规幅度调制(AM)、抑制双边带幅度调制(DSB-AM)、抑制单边带幅度调制(SSB-AM)和正交幅度调制(QAM)等。解调就是从调制信号中提取消息信号。解调过程与利用何种解调方式有关。在模拟调制的仿真中包含两个频率:载波频率 fc和仿真的采样频率 fs。,1双边幅度调制(DSB-AM)与解调 在DSB-AM中,已调信号的时域表示如下式:,其中m(t)是消息信号,,为载波,,是载波的频率(单位赫兹Hz),,是初始相位。,对u(t) 作傅立叶变换,即可得到信号的频域表示:,传输带宽BT 是消息信号带宽的两倍,即:,DSB-AM调制信号的解调过程如图6.7所示,调制信号与接收机本地振荡器所产生的正弦信号相乘可得混频器输出:,图6.7 DSB-AM调制信号的解调,然后利用低通滤波器对低通分量进行滤波即可恢复被调信号。,图6.5 信号调制前后比较,图6.6 DSB-AM调幅前后频谱,图6.9 未调制信号、解调信号及其相应的频谱比较,2单边幅度调(SSB-AM)与解调 去掉DSB-AM的一边就得到SSB-AM。依据所保留的边带是上边,还是下边,可以分为USSA和LSSB两种不同的方式,此时信号的时域表示为:,在频域表示为:,其中,的希尔特变换,定义为, 在频域中为:,是,单边SSB幅度调制占有DSB-AM的一半的带宽,即等于信号带宽:,SSB-AM调制信号的解调过程基本上与DSB-AM调制信号的解调过程是相同的,即调制信号与本地振荡器的输出进行混频得:,然后利用低通滤波器对低通分量进行滤波即可恢复被调信号。,图6.11 上、下边带调制信号频谱,图6.10 上、下边带调制信号,图6.12 未调制信号、解调信号及其相应的频谱比较,这里a是调制指数,,是经过归一化处理的消息信号。,在常规AM中,调制信号的时域表示为:,3. 常规幅度调制(AM) 常规幅度调制(AM)在很多方面与双边幅度调制类型。不同的是,用,对u(t)作傅里叶变换,即可得到信号的频域表示:,常规幅度调制(AM)信号的解调,可采用包络检波器来实现。包络检波器可得到AM调制信号的包络为: 式中mn(t)与被调信号m(t)成比例,1对应于可由直流电路分离出来的载波分量。,图6.13 常规幅度调制信号,图6.14 常规幅度调制信号频谱,图6.15 常规幅度调制信号,4正交幅度调制 正交幅度调制(QAM)调制信号为:,其中mI(t)为同相信号,mQ(t)为正交信号,fc是载波频率(单位赫兹Hz), 是初始相位。正交幅度调制过程如图6.16所示。对应的解调过程如图6.17所示。,图6.16 正交幅度调制框图,图6.17 正交幅度调制的解调框图,5频率调制 频率调制亦称为等振幅调制。在频率调制过程中,输入信号控制载波的频率,使已调信号u(t)的频率按输入信号的规律变化。调制公式为:,其中u(t)是调制后的信号,fc是载波的频率(单位赫兹Hz), 是初始相位, 是瞬时相位,随着输入信号的振幅变化。 的计算公式为:,其中 为比例常数。,频率调制的解调过程使用锁相环方法,如图6.18所示。,图6.18 FM解调框图,其中 为比例常数,称为调制器的灵敏度。相位调制的解调过程如图6.19所示。,6相位调制 相位调制则是利用输入信号m(t)控制已调信号u(t)的相位,控制规律为:,其中u(t)是调制后的信号,fc是载波的频率(单位赫兹Hz), 是初始相位, 是瞬时相位,随着输入信号的振幅变化。 的计算公式为:,图6.19 PM解调框图,7带通模拟调制/解调函数 (1) 带通模拟调制函数amod( ) 格式:y=amod(x,Fc,Fs,method) 功能:用载波为Fc(Hz)的信号来调制模拟信号x,采样频率为Fs(Hz),Fc Fs。变量Fs可以是标量也可以为一个二维的矢量。二维矢量中第一个值为采样频率,第二个值为调制载波的初相,初相以弧度表示,默认值为0。根据采样定理,采样频率必须大于或等于调制信号最高频率的两倍。字符串变量method指定所用的调制方式,见表6.4。,(2) 带通模拟解调函数ademod( ) 格式:z=ademod(y,Fc,Fs,method.) 功能:对载波为Fc的调制信号y进行解,采样频率Fs,FcFs。它是amod函数的逆过程,amod与ademod选择的调制方式必须相同,否则不容易正确复制出源信号。该函数在解调中用到一个低通滤波器,低通滤波器传输函数的分子、分母由输入参数num、den指定,低通滤波器的采样时间等于1/Fs。当num=0或缺省时,函数使用一个默认的巴特沃斯低通滤波器,可由num,den=butter(5,Fc*2/Fs)生成。字符串变量method指定所用的调制方式, 见表6.4。,例6-13 使用MATLAB对一信号进行正交幅度调制。 MATLAB程序如下: Fs=100; %采样频率 Fc=15; %载波频率 t=0:0.025:2; %采样时间 x=sin(pi*t,2*pi*t); %信号 y=amod(x,Fc,Fs,qam); %正交幅度调制 z=ademod(y,Fc,Fs,qam); %正交幅度解调 plot(t,x(:,1),-,t,z(:,1),-) %绘制调制信号 hold; plot(t,x(:,2),-o,t,z(:,2),-*) %绘制调制信号 程序运行得到的信号和解调信号的波形如图6.20所示。,6.4.2 基带模拟调制/解调,基带仿真,也称低通对等方法,使用带通信号的复包络作为输入信号。设B为原始信号带宽,基带仿真要求仿真抽样率大于或等于2B ,而一般的有 Bfc 。基带调制器的输出为复数信号,作为基带解调器的输入。,其中fc和 分别是载波信号的频率和相位。利用z(t)的估值可以恢复信号u(t), 相干解调 接收信号z(t)的同相和正交分量为:, 非相干解调 非相干解调可以应用于 DSB-SC AM 、 DSB-TC AM 、 FM 和 PM 。对于AM调制, 非相干解调可以使用包络检测法。,图6.23 基带调制/解调,1基带模拟调制函数amodce( ) 格式:y=amodce(x,Fs,method,) 功能:对输入信号x进行调制,输出复包络信号。输入输出的采样频率为Fs(Hz)。输出y为一个复矩阵。Fs可以是标量也可以为二维的矢量。二维矢量中第一个值为采样频率,第二个值为载波信号的初相,初相以弧度表示,默认值为0。字符串变量method指定所用的调制方式,见表6.3。,2基带模拟解调函数ademodce( ) 格式:z =ademodce(y,Fs,method) 功能:对接收的复包络信号y进行解调,y的采样频率为Fs(Hz)。Fs可为标量也可以为二维矢量。矢量中第一个值为采样频率,第二个值为调制载波的初相,初相为弧度表示,且默认值为 0。采样频率必须与调制中所用的采样频率一致,但初相可以不一致。 函数在解调中可使用低通滤波器,低通滤波器传输函数的分子、分母分别由输入参数num和den指定,低通滤波器的采样时间为1/Fs 秒。当num=0或缺省时,该函数将不使用低通滤波器。字符串变量method指定所用的调制方式, 见表6.3。 。,例6-15 利用MATLAB对一信号进行基带调制解调。 MATLAB程序如下: Fs=100; %信号采样频率 t=0:1/Fs:5; %信号采样时间 x=sin(2*pi*t),.5*cos(5*pi*t),sawtooth(4*t); %输入信号原 y=amodce(x,Fs,fm); %调制 z=ademodce(y,Fs,fm); %解调 subplot(2,1,1);plot(x); %绘制源信号 subplot(2,1,2);plot(z); %绘制调制解调后的信号 程序运行得到的信号源和解调信号的波形如图6.24所示。,6.5 数字调制与解调,1M元幅度键控调制(M-ASK) M元幅度键控调制包含两部分,M-ASK映射和模拟幅度调制。M-ASK映射将输入的 数字码符映射到区间-x, x,数字码符取值范围是 0, M-1区间内的整数。输出信号 的幅值分别为-x, x的M-1等分点。,按数字调制的方法分类可以分为多进制幅度键控 (M-ASK)、正交幅度键控(QASK)、多进制频率键控(M-FSK)以及多进制相位键控(M-PSK)。数字调制包括数模转换和模拟调制两部分,如图6.25所示。,图6.25 数字调制过程,3M 元频率键控调制(M-FSK) M 元频率键控调制是通过使用输入信号控制输出信号的频率来实现对数字信号的调制。M-FSK调制过程分成两部分,即映射和模拟调制。映射过程将输入信号反映成载波频率变化,模拟调制即FM。M-FSK的解调有两种方法,即相干法和非相干法。相干方法要求事先知道已调信号的相位,而非相干方法则不要求相位信息 , 它可以在解调过程中恢复已调信号的相位信息。,2M元正交键控调制(M-QASK) M-QASK是数字调制使用得最多的一种方法。它一般将输入的数字码符映射成为同相和正交的两个独立分量,然后用模拟QAM法对它们进行调制;在接收方,接收的信号被解调为同相和正交信号,从它们映射过程中恢复原始信号。有许多种方法可将输入信号映射成同相和正交分量。通信工具箱为M-QASK提供三种方案,即平面直角点集、圆点集和用户定义任意点集。,4M-元相位键控调制(M-PSK) M-PSK通过改变已调信号的相位信息来实现对数字信号的调制。M-PSK设置不同的初 相移位以区别不同的数字码符。M-PSK调制器输入信号的取值区间0, M-1,数字 i对应的相位位移为,6.5.1 带通数字调制/解调,1. 数字带通调制函数dmod( ) 格式:y=dmod(x, Fc, Fd, Fs, method ) 功能:用频率为Fc(Hz)的载波去调制数字信号,然后再输出采样频率为Fs(Hz)的仿真已调信号,Fs/Fd 必须是一个正整数。当输入x是一个矩阵时,x中每列做不相关处理,输出矩阵y的行数是Fs/Fd(x的行数)。若变量Fs是一个两维矢量。当它为矢量时,第一个元素是采样频率,第二个元素是调制载波信号的初相(弧度),且默认值为0。要求FsFcFd。method 为调制方法,见表6.6。,2数字带通解调函数ddemod( ) 格式:z=ddemod(y, Fc, Fd, Fs, method ) 功能:解调载波为Fc(Hz)的数字调制信号y,其抽样频率为Fd(Hz),计算抽样频率为Fs(Hz)。该函数为dmod的逆过程,对频率与函数为dmod 中求要相同。当Fd为一个二维矢量时,Fd中的第二个值即为输出抽样点的时间偏移量(必须是整数,默认为0)。该函数测出接收码到编码中所有可能的码的距离,然后以离接收码最近的码作为输出数字码。除method =msk和method =fsk解调外,该函数可使用一个指定的低通滤波器,该滤波器的传输函数由分子num和分母den指定,滤波器的抽样时间为1/Fs,缺省滤波器时,在解调时无积分器。,(a) 调制解调前后的信号,(b)星座图,图6.27 16-QASK调制,例6-16 利用MATLAB进行带通数字调制解调M元正交幅度键控调制。,6.5.2 基带数字调制/解调 1基带数字调制函数dmodce( ) 格式:y=dmodce(x, Fd, Fs, method, ) 功能:调制一个带复包络的数字信号,主要用于基带数字调制。输出y为复数,其采样频率为Fs,输入x的采样频率为Fd,Fs/Fd必须是一个正整数。当输入x是一个矩阵时,x中每列是相互独立的,输出矩阵y的行数是Fs/Fd*x的行数。当变量Fs为两维矢量,矢量中第一个值是抽样频率,第二个值是调制载波的初始相位(弧度),默认值为0。method 为调制方法,见表6.6。,2数字基带解调函数ddemodce( ) 格式:z=ddemodce(y,Fd,Fs,method) 功能:解调数字基带调制信号y,其抽样频率为Fd (Hz), 计算抽样频率为Fs(Hz)。Fs/Fd必须为正整数,变量Fd可以是一个标量或两维矢量,矢量中第一个值是抽样频,第二个值为抽样时间偏移量(必须为整数),默认值为0。,3AWGN信道函数awgn 格式:y=awgn(x,snr) 功能:向功率为0dB的信号x添加高斯白噪声,输出信号y的信噪比SNR为参数snr (单位dB)。如果信号x为复信号,该函数添加复高斯白噪声。,例6-17 利用MATLAB对信号进行基带数字调制解调。 MATLAB程序如下: M=4; %设置M的数目 Fd=1; %信号采样速率 Fs=32; %采样频率 SNRperBit=5; %信噪比 adjSNR=SNRperBit-10*log10(Fs/Fd)+10*log10(log2(M); x=randint(5000,1,M); %源信号 %正交FSK调制 tone=0.5; %频隙间隙f=Fd/2 randn(state,1945724); %设置RANDN产生器的状态 w1=dmodce(x,Fd,Fs,fsk,M,tone); %调制 y1=awgn(w1,adjSNR,measured,dB); % 对调制信号添加噪声 z1=ddemodce(y1,Fd,Fs,fsk,M,tone); %调制 ser1=symerr(x,z1) %输出符号误差率 %非正交FSK调制 tone=0.25; randn(state,1945724); %设置RANDN产生器的状态 w2=dmodce(x,Fd,Fs,fsk,M,tone); %调制 y2=awgn(w2,adjSNR,measured,dB); % 对调制信号添加噪声 z2=ddemodce(y2,Fd,Fs,fsk,M,tone); %解调 ser2=symerr(x,z2) %输出符号误差率,6.6 通信系统的性能仿真,6.6.1通信系统的误码率仿真 通信系统误码率的大小是衡量通信系统性能的好坏。无论是仿真带通系统还是基带通信系统,通信系统模型的误码率的计算过程主要由设置相关参数、创建信号及信源编码、调制、对调制信号添加高斯噪声、解调、计算系统的误码率等步骤组成。,6.6.2 误码率仿真界面 MATLAB提供了一种有效的分析误码率的工具误码率仿真界面,它可用来计算和比较不同调制方式、不同差错控制编码方式和不同信道噪声模型条件下的通信系统的误码率。 在MATLAB命令窗中输入命令: commgui 即可打开一个图形用户界面窗口误码率仿真界面。误码率仿真界面包含了通信系统中信号处理的全部过程:信号源信号的生成;信号经过差错控制编码和调制后发送;叠加在信道噪声后送到接收设备;经过解调和解码恢复出原始数据、进行误码率的计算过程等。,图6.29 误码率仿真窗口,误码率仿真窗口上半部分功能区域,分为以下四个部分: Source(信号源); Err-Ctr-Code(差错控制编码); Mo

温馨提示

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

评论

0/150

提交评论