通信工程實驗_第1頁
通信工程實驗_第2頁
通信工程實驗_第3頁
通信工程實驗_第4頁
通信工程實驗_第5頁
已閱讀5頁,還剩47頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、通信工程實驗報告 班級:通信2012-04班 學號: 20122211 姓名: 劉濤 實驗一:FPGA實驗_BDPSK調制解調器設計一、實驗目的 學習BDPSK 原理的硬件實現(xiàn)方法。 學習用VerilogHDL 硬件描述語言建模時序邏輯電路的能力。2、 實驗報告要求由于在 BPSK 解調中,相干載波恢復可能出現(xiàn)相位模糊,所以在實際應用中經常采用 BDPSK(二進制差分相移鍵控)方式。BDPSK 方式不需要在解調端恢復相干參考信號, 非相干接收機容易制造而且成本低,因此在無線通信系統(tǒng)中被廣泛使用。在 BDPSK 系統(tǒng) 中,輸入的二進制序列先進行差分編碼,然后再用 BPSK 調制器調制。 BDPS

2、K 調制系統(tǒng)的結構圖。(Microsoft Visio 中截圖) BDPSK 調制器模塊的VerilogHDL 代碼及注釋。 功能仿真和時序仿真結果的波形。(ModelSim 中截圖) (選做)開發(fā)板驗證后的波形。(示波器上拍照)三、 實驗結果1、 調制器和解調器的外引腳圖和內部結構圖圖1.1 調制器的外部引腳圖1.2 調制器的內部結構圖1.3 解調器的外部引腳圖1.4 解調器的內部結構2、調制器模塊和解調器模塊的 VerilogHDL 代碼及注釋(1)差分編碼module chafen( reset_n,clk,a,b );input reset_n;input clk;input a;ou

3、tput b;reg c;assign b = a c ;always ( posedge clk or negedge reset_n )if(!reset_n)c <= 0 ;elsebeginc <= b;endEndmodule(2) 控制器module Controller(clk,reset_n,data,address,clk_DA,blank_DA_n,sync_DA_n);input clk ;input reset_n ;input data ;output 4 : 0 address ;output clk_DA ; /數(shù)模轉換器控制信號output blan

4、k_DA_n ; /數(shù)模轉換器控制信號output sync_DA_n ; /數(shù)模轉換器控制信號reg 4 : 0 address_data;reg c ;always ( posedge clk or negedge reset_n )beginif(!reset_n) c<=1'bz;else c<=data;endalways ( posedge clk or negedge reset_n )beginif(!reset_n) address_data<=5'b00000;else if(c=data) address_data<=address

5、_data+5'b00001;elsebegincase(data)1'b0:address_data<=5'b00000;1'b1:address_data<=5'b10000;default:address_data<=5'bzzzzz;endcaseendendassign address = address_data;assign clk_DA = clk;assign blank_DA_n = 1'b1;assign sync_DA_n = 1'b1;Endmodule(3) 查找表module Loo

6、kUpTable( clk,reset_n,address,dataout,);input clk;input reset_n;input 4 : 0 address;output 7 : 0 dataout;reg 7 : 0 LUT 0 : 31 ;always ( posedge clk or negedge reset_n )beginif( !reset_n )begin /用C編程計算出的查找表采樣值填在這里 LUT 0 <= 8'h7f;/0° LUT 1 <= 8'h97; LUT 2 <= 8'haf; LUT 3 <

7、= 8'hc5; LUT 4 <= 8'hd9; LUT 5 <= 8'he8; LUT 6 <= 8'hf4; LUT 7 <= 8'hfc; LUT 8 <= 8'hfe; LUT 9 <= 8'hfc; LUT 10 <= 8'hf5; LUT 11 <= 8'hea; LUT 12 <= 8'hda; LUT 13 <= 8'hc7; LUT 14 <= 8'hb2; LUT 15 <= 8'h9a; LUT 1

8、6 <= 8'h81;/180° LUT 17 <= 8'h69; LUT 18 <= 8'h51; LUT 19 <= 8'h3b; LUT 20 <= 8'h27; LUT 21 <= 8'h17; LUT 22 <= 8'hb ; LUT 23 <= 8'h3 ; LUT 24 <= 8'h0 ; LUT 25 <= 8'h1 ; LUT 26 <= 8'h8 ; LUT 27 <= 8'h13; LUT 28

9、<= 8'h22; LUT 29 <= 8'h35; LUT 30 <= 8'h4a; LUT 31 <= 8'h62;endendassign dataout = LUT address ;endmodule 功能仿真和時序仿真結果的波形圖1.5 功能仿真圖1.6 時序仿真 實驗二 MATLAB實驗_OFDM誤碼率仿真(AWGN)一、實驗目的:1、 掌握OFDM 的基本原理。2、 掌握用Matlab 搭建OFDM 系統(tǒng)的基本方法3、 用MATLAB 進行OFDM 系統(tǒng)在AWGN 信道下誤碼率分析。二、實驗內容(1) 發(fā)送部分 對產生的

10、0 、1 比特流進行 16QAM 調制 ,映射到星座圖上 ,即將數(shù)據(jù)變?yōu)閺推矫鎯鹊臄?shù)據(jù); 將變換后的數(shù)據(jù)進行串并轉換進行 IFFT 變換后在進行并串轉換。為了避免多徑造傳播成 的 IS I 干擾,要對每一 個 OFD M 符號加循環(huán)前綴( CP )。為 了避免碼間干擾,CP 中的信號與對應 OFDM 符號尾部寬度為 Tg 的部分相同,Tg 為人為設定。本實驗中為 OFDM 符號長度的 1/4 。 加保護間隔。為了最大限度的消除碼間干擾,該保護間隔一般大于多徑信道的最大時延, 這樣一個符號的多徑干擾就不會對下一個符號造成干擾。將產生的 OFDM 符號組成一個串行序列,即組幀。(2)信道部分:AW

11、GN 信道(3) 接收部分: 解幀,將接收的序列分解為一個個獨立的 OFDM 符號。 去掉保護間隔,將加在每個符號前的保護間隔去掉。 將去掉保護間隔的 OFDM 符號進行串并轉換 , 為下一步快速傅里葉變換做準備。 將并行的信號進行快速傅里葉變換得到對應的時域信號。 進行并串轉換,再進行 QAM 解調,解調之前要進行均衡處理。解調之后得到之前生 成的 0 、 1 比特流。設計仿真方案,得到在數(shù)據(jù)傳輸過程中不同信噪比的 BER 性能結論,要求得到的 BER曲線較為平滑。四、實驗報告要求所有程序完整的源代碼(.m 文件)以及注釋。仿真結果。對于所有的圖形結果(包括波形與仿真曲線等),將圖形保存成.

12、tif 或者.emf 的格式并插入 word 文檔。三、實驗結果1、所有程序完整的源代碼(.m文件)以及注釋clear all;close all;fprintf('OFDM基帶系統(tǒng)nn'); %參數(shù)設置% carrier_count=256; %FFT數(shù)目number_symbol=1500; %OFDM符號數(shù)目()Guard_count=carrier_count/4; %循環(huán)前綴Pilot_interval=15; %導頻間隔Pilot_count=ceil(number_symbol/Pilot_interval); %每一行導頻的個數(shù)modulation_mode=1

13、6; %16QAMSNR=-2:35;k=log2(modulation_mode);%主程序循環(huán)% for number_snr=1:length(SNR) fprintf('nnn仿真信噪比',SNR(number_snr); %產生發(fā)送的隨機序列% Source_Bits=randi(0 1,1,k*(carrier_count*number_symbol); %16QAM調制% QAM_16_IQ = -3 -1 3 1; QAM_input_I = QAM_16_IQ(Source_Bits(1:4:end)*2+Source_Bits(2:4:end)+1);%00

14、:-3 01:-1 11:1 10:3 QAM_input_Q = QAM_16_IQ(Source_Bits(3:4:end)*2+Source_Bits(4:4:end)+1);%00:-3 01:-1 11:1 10:3 Modulated_Sequence_Tx1 = QAM_input_I + 1i * QAM_input_Q; %串并變換% Modulated_Sequence_Tx=reshape(Modulated_Sequence_Tx1,carrier_count,number_symbol); %產生已知的導頻序列% Pilot_symbols=(round(rand(c

15、arrier_count,Pilot_count)*2-1); %導頻符號的插入% for kk=1:Pilot_count Modulated_Sequence_Tx_insert(:,(kk-1)*(Pilot_interval+1)+1)=Pilot_symbols(:,kk); Modulated_Sequence_Tx_insert(:,(kk-1)*(Pilot_interval+1)+2:(kk-1)*(Pilot_interval+1)+16)=Modulated_Sequence_Tx(:,(kk-1)*Pilot_interval+1:(kk-1)*Pilot_interv

16、al+15);end %IFFT變換% Time_signal_Tx1=ifft(Modulated_Sequence_Tx_insert); %加循環(huán)前綴% Time_signal_Tx_cp1(1:Guard_count,:)=Time_signal_Tx1(carrier_count-Guard_count+1:carrier_count,:);Time_signal_Tx_cp1(Guard_count+1:Guard_count+carrier_count,:)=Time_signal_Tx1(1:carrier_count,:); %并串變換% Time_signal_Tx_cp=

17、reshape(Time_signal_Tx_cp1,1,(Guard_count+carrier_count)*(number_symbol+Pilot_count); %高斯信道和瑞利信道% Time_signal_Tx_cp_channel1=awgn(Time_signal_Tx_cp,SNR(number_snr),'measured'); %串并變換% Time_signal_Tx_cp_channel=reshape(Time_signal_Tx_cp_channel1,carrier_count+Guard_count,number_symbol+Pilot_c

18、ount); %信號接收 去循環(huán)前綴% Time_signal_Rx_channel(1:carrier_count,:)=Time_signal_Tx_cp_channel(Guard_count+1:carrier_count+Guard_count,:); %FFT變換%frequence_signal_Rx_channel1=fft(Time_signal_Rx_channel);%獲取導頻符號處的序列 信道估計%for kk=1:Pilot_count Pilot_symbols_channel(:,kk)=frequence_signal_Rx_channel1(:,(kk-1)*

19、(Pilot_interval+1)+1); frequence_signal_Rx_channel(:,(kk-1)*Pilot_interval+1:(kk-1)*Pilot_interval+15)=frequence_signal_Rx_channel1(:,(kk-1)*(Pilot_interval+1)+2:(kk-1)*(Pilot_interval+1)+16);end%并串變換%frequence_signal_Rx_channel_desert=reshape(frequence_signal_Rx_channel,1,(carrier_count)*number_sym

20、bol);%16QAM解調%QAM_input_I = real(frequence_signal_Rx_channel_desert);QAM_input_Q = imag(frequence_signal_Rx_channel_desert); for a=1:(carrier_count*number_symbol) if QAM_input_I(a) <= -2 receive_Bits(a*k-3) = 0; %,a*k-1,a*k receive_Bits(a*k-2) = 0; elseif (QAM_input_I(a) > -2) && (QAM_

21、input_I(a) <= 0) receive_Bits(a*k-3) = 0; receive_Bits(a*k-2) = 1; elseif (QAM_input_I(a) > 0) && (QAM_input_I(a) <= 2) receive_Bits(a*k-3) = 1; receive_Bits(a*k-2) = 1; else receive_Bits(a*k-3) = 1; receive_Bits(a*k-2) = 0; end end for a=1:(carrier_count*number_symbol) if QAM_input

22、_Q(a) <= -2 % & QAM_input_Q(a) <= -2 receive_Bits(a*k-1) = 0; %,a*k-1,a*k receive_Bits(a*k) = 0; elseif (QAM_input_Q(a) > -2) && (QAM_input_Q(a) <= 0) receive_Bits(a*k-1) = 0; receive_Bits(a*k) = 1; elseif (QAM_input_Q(a) > 0) && (QAM_input_Q(a) <= 2) receive_Bi

23、ts(a*k-1) = 1; receive_Bits(a*k) = 1; else receive_Bits(a*k-1) = 1; receive_Bits(a*k) = 0; end end%誤碼率計算% Num,Rat=biterr(Source_Bits,receive_Bits); biterr_total(number_snr)=Rat; fprintf('nn誤碼率為%fnn', biterr_total(number_snr);end%畫圖%figuresemilogy(SNR, biterr_total,'bp-','LineWidt

24、h',2);axis(-2 35 10-5 0.9)xlabel('SNR');ylabel('BER');title('OFDM基帶系統(tǒng)(高斯信道)');2、 仿真結果圖2.1 仿真結果實驗三、MATLAB實驗_OFDM誤碼率仿真(衰落)一、實驗目的:1、 了解瑞利信道產生的原因及其特征。2、 用MATLAB 進行OFDM 系統(tǒng)在瑞利信道下誤碼率分析。二、實驗報告要求1. 所有程序完整的源代碼(.m 文件)以及注釋。2. 仿真結果。對于所有的圖形結果(包括波形與仿真曲線等),將圖形保存成.tif 或者.emf的格式并插入word 文檔。

25、三、實驗結果1、 所有程序完整的源代碼(.m文件)以及注釋clear all;close all;fprintf('OFDM基帶系統(tǒng)nn');%參數(shù)設置%carrier_count=256; %FFT數(shù)目number_symbol=1500; %OFDM符號數(shù)目()Guard_count=carrier_count/4; %循環(huán)前綴Pilot_interval=15; %導頻間隔Pilot_count=ceil(number_symbol/Pilot_interval); %每一行導頻的個數(shù)modulation_mode=16; %16QAMSNR=-2:35;k=log2(m

26、odulation_mode);%主程序循環(huán)%for number_snr=1:length(SNR) fprintf('nnn仿真信噪比',SNR(number_snr);%產生發(fā)送的隨機序列% Source_Bits=randi(0 1,1,k*(carrier_count*number_symbol);%16QAM調制% QAM_16_IQ = -3 -1 3 1; QAM_input_I = QAM_16_IQ(Source_Bits(1:4:end)*2+Source_Bits(2:4:end)+1);%00:-3 01:-1 11:1 10:3 QAM_input_

27、Q = QAM_16_IQ(Source_Bits(3:4:end)*2+Source_Bits(4:4:end)+1);%00:-3 01:-1 11:1 10:3 Modulated_Sequence_Tx1 = QAM_input_I + 1i * QAM_input_Q;%串并變換%Modulated_Sequence_Tx=reshape(Modulated_Sequence_Tx1,carrier_count,number_symbol); %產生已知的導頻序列% Pilot_symbols=(round(rand(carrier_count,Pilot_count)*2-1);

28、%導頻符號的插入%for kk=1:Pilot_count Modulated_Sequence_Tx_insert(:,(kk-1)*(Pilot_interval+1)+1)=Pilot_symbols(:,kk); Modulated_Sequence_Tx_insert(:,(kk-1)*(Pilot_interval+1)+2:(kk-1)*(Pilot_interval+1)+16)=Modulated_Sequence_Tx(:,(kk-1)*Pilot_interval+1:(kk-1)*Pilot_interval+15);end%IFFT變換%Time_signal_Tx1

29、=ifft(Modulated_Sequence_Tx_insert);%加循環(huán)前綴%Time_signal_Tx_cp1(1:Guard_count,:)=Time_signal_Tx1(carrier_count-Guard_count+1:carrier_count,:);Time_signal_Tx_cp1(Guard_count+1:Guard_count+carrier_count,:)=Time_signal_Tx1(1:carrier_count,:);%并串變換%Time_signal_Tx_cp2=reshape(Time_signal_Tx_cp1,1,(Guard_co

30、unt+carrier_count)*(number_symbol+Pilot_count);%高斯信道和瑞利信道%raysign=raylrnd(1,1,(number_symbol+Pilot_count)*(Guard_count+carrier_count); Time_signal_Tx_cp=Time_signal_Tx_cp2.*raysign; Time_signal_Tx_cp_channel2=awgn(Time_signal_Tx_cp,SNR(number_snr),'measured');Time_signal_Tx_cp_channel1=real(

31、Time_signal_Tx_cp_channel2)./raysign+1i*(imag(Time_signal_Tx_cp_channel2)./raysign);%串并變換%Time_signal_Tx_cp_channel=reshape(Time_signal_Tx_cp_channel1,carrier_count+Guard_count,number_symbol+Pilot_count);%信號接收 去循環(huán)前綴%Time_signal_Rx_channel(1:carrier_count,:)=Time_signal_Tx_cp_channel(Guard_count+1:ca

32、rrier_count+Guard_count,:);%FFT變換%frequence_signal_Rx_channel1=fft(Time_signal_Rx_channel);%獲取導頻符號處的序列 信道估計%for kk=1:Pilot_count Pilot_symbols_channel(:,kk)=frequence_signal_Rx_channel1(:,(kk-1)*(Pilot_interval+1)+1); frequence_signal_Rx_channel(:,(kk-1)*Pilot_interval+1:(kk-1)*Pilot_interval+15)=fr

33、equence_signal_Rx_channel1(:,(kk-1)*(Pilot_interval+1)+2:(kk-1)*(Pilot_interval+1)+16);end%并串變換% frequence_signal_Rx_channel_desert=reshape(frequence_signal_Rx_channel,1,(carrier_count)*number_symbol); %16QAM解調% QAM_input_I = real(frequence_signal_Rx_channel_desert);QAM_input_Q = imag(frequence_sign

34、al_Rx_channel_desert); for a=1:(carrier_count*number_symbol) if QAM_input_I(a) <= -2 receive_Bits(a*k-3) = 0; %,a*k-1,a*k receive_Bits(a*k-2) = 0; elseif (QAM_input_I(a) > -2) && (QAM_input_I(a) <= 0) receive_Bits(a*k-3) = 0; receive_Bits(a*k-2) = 1; elseif (QAM_input_I(a) > 0) &

35、amp;& (QAM_input_I(a) <= 2) receive_Bits(a*k-3) = 1; receive_Bits(a*k-2) = 1; else receive_Bits(a*k-3) = 1; receive_Bits(a*k-2) = 0; end end for a=1:(carrier_count*number_symbol) if QAM_input_Q(a) <= -2 % & QAM_input_Q(a) <= -2 receive_Bits(a*k-1) = 0; %,a*k-1,a*k receive_Bits(a*k)

36、= 0; elseif (QAM_input_Q(a) > -2) && (QAM_input_Q(a) <= 0) receive_Bits(a*k-1) = 0; receive_Bits(a*k) = 1; elseif (QAM_input_Q(a) > 0) && (QAM_input_Q(a) <= 2) receive_Bits(a*k-1) = 1; receive_Bits(a*k) = 1; else receive_Bits(a*k-1) = 1; receive_Bits(a*k) = 0; end end %誤碼

37、率計算% Num,Rat=biterr(Source_Bits,receive_Bits); biterr_total(number_snr)=Rat; fprintf('nn誤碼率為%fnn', biterr_total(number_snr);end %畫圖% figuresemilogy(SNR, biterr_total,'bp-','LineWidth',2);axis(-2 35 10-5 0.9)xlabel('SNR');ylabel('BER');title('OFDM基帶系統(tǒng)(高斯信道)

38、'); 2、 仿真結果圖3.1 仿真結果實驗四、MATLAB實驗_多入多出(MIMO)系統(tǒng)接收端檢測一、實驗目的1.掌握MIMO 系統(tǒng)信道模型2.掌握MIMO 接收端檢測的算法原理3.掌握MIMO 系統(tǒng)誤碼率仿真的過程與分析方法二、實驗要求1. 所有程序完整的源代碼(.m 文件)以及注釋。2. 仿真結果。對于所有的圖形結果(包括波形與仿真曲線等),將圖形保存成.tif 或者.emf的格式并插入word 文檔。三、實驗結果1、 所有程序完整的源代碼(.m文件)以及注釋(1)ZF檢測clear all;close all;fprintf('ZF均衡檢測nn');% 發(fā)端初始

39、化% 發(fā)射天線數(shù)tx,接收天線數(shù)rx,發(fā)射矩陣長度L(幀長) tx=2;rx=2;L=10000; Modulation='BPSK' SNR=-3:5:40; B=30000;Ts=1/24300; % 建立EbN0與SNR之間的換算關系 %SNR=EbN0-10*log10(Ts*B); % 信源A A=randint(tx*L,1); % 經過BPSK調制的V-Blast發(fā)射矩陣X X=zeros(tx,L); for k=1:tx X(k,:)=(-1).(A(k:tx:end)+1); end % 信道傳輸= H=sqrt(1/2)*(randn(rx,tx,L)+i

40、*randn(rx,tx,L); % 快衰落Rayleigh信道H n=sqrt(1/2)*(randn(rx,L)+i*randn(rx,L); % 均值為0方差為1的高斯白噪聲nR=zeros(rx,L); % 未疊加噪聲的接收信號R for k=1:L R(:,k)=sqrt(1/tx)*H(:,:,k)*X(:,k); end %ZF檢測 =disp('berz'); berz=; % 在不同的信噪比下計算ZF接收機誤比特率berz for m=SNR % 每個子信道的平均信噪比為snr的接受信號R_noised snr=10(m/10); R_noised=R+sqr

41、t(1/snr)*n; x=; a=zeros(tx*L,1); % 逐時隙對接收符號矢量進行檢測,合并得到一幀發(fā)射矩陣X的估計x for t=1:L r=R_noised(:,t); % 迫零矩陣G G=pinv(H(:,:,t); %pinv(a)是求偽逆矩陣,逆矩陣函數(shù)inv只能對方陣求逆,pinv(a)可以對非方陣求逆。 y=G*r; xtemp=(y>=0)-(y<0)+0; %BPSK判決 x=x,xtemp; %每次增加一列 end % 從x求A的估計a for k=1:tx a(k:tx:end)=(x(k:tx:end)+1)/2; %BPSK解調 end % 比

42、較A和a計算錯值率temp_ber errbit,temp_ber=biterr(A,a); berz=berz,temp_ber; end figuresemilogy(SNR, berz,'bp-','LineWidth',2);axis(-5 35 10-5 0.9)xlabel('SNR');ylabel('BER');title('ZF均衡檢測(瑞利信道)');(2)MMSE檢測clear all;close all;fprintf('MMSE均衡檢測nn');% 發(fā)端初始化= % 發(fā)射天

43、線數(shù)tx,接收天線數(shù)rx,發(fā)射矩陣長度L(幀長) tx=2;rx=2;L=10000; Modulation='BPSK' SNR=-5:5:40; B=30000;Ts=1/24300; % 建立EbN0與SNR之間的換算關系 %SNR=EbN0-10*log10(Ts*B); % 信源A A=randint(tx*L,1); % 經過BPSK調制的V-Blast發(fā)射矩陣X X=zeros(tx,L); for k=1:tx X(k,:)=(-1).(A(k:tx:end)+1); end % 信道傳輸= % 快衰落Rayleigh信道H H=sqrt(1/2)*(randn

44、(rx,tx,L)+i*randn(rx,tx,L); % 均值為0方差為1的高斯白噪聲n n=sqrt(1/2)*(randn(rx,L)+i*randn(rx,L); % 未疊加噪聲的接收信號R R=zeros(rx,L); for k=1:L R(:,k)=sqrt(1/tx)*H(:,:,k)*X(:,k); end % 檢測 disp('MMSE') berm=; for m=SNR m snr=10(m/10); R_noised=R+sqrt(1/snr)*n; x=; a=zeros(tx*L,1); for t=1:L r=R_noised(:,t); HH=H(:,:,t); xtemp=zeros(tx,1); w=inv(HH'*HH+(1/snr)*eye(tx)*HH' % Y =eye(n):返回n*n單位矩陣 y=w*r; xtemp=(y>=0)-(y<0)+0; %BPSK判決 x=x,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論