?? cdma_reciever.m
字號:
<matlab> CDMA業務信道接收機仿真實現
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% 該函數仿真CDMA接收機的功能,包括解擴,解交織,信道編碼(卷積碼) %
% 解碼,信源編碼(CRC)解碼5個功能模塊,生成用于數字基帶傳輸的信號序列 %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [original_sequence] = cdma_reciever(mul_fad_sequence,frame_length,...
crc_select,cov_select,in_info_len,in_supv_len,sf,add_bits,i_add_bits,max_delay,fade_sign)
% sequence 輸入的待解擴序列
% frame_length CRC編碼的碼字長度
% crc_select CRC編碼生成多項式的選項 1 - CRC_CCITT,2 - CRC_CIT,3 - CRC32
% cov_select 卷積碼的編碼其選擇 1 - 約束長度為9,效率1/2,2 - 約束長度9,效率1/3
% in_info_len 交織器的信息位長度
% in_supv_len 交織器的監督位長度
% sf 擴頻因子
% add_bits CRC編碼時添加的尾比特
% i_add_bits 分組交織器添加的尾比特
% max_delay 信道延遲
% fade_sign 瑞利信道衰落符號
sequence = mul_fad_sequence;
len = length(sequence);
sequence = fade_sign.*sequence(1:(len-max_delay));
despread_seq = DS_modulation_demodulation(sequence,sf,2); % 解擴部分
despread_seq = sign(despread_seq);
inter_seq = (despread_seq + 1)/2; % 轉單極性碼
de_inter_seq = block_cancellation_interlace(...
inter_seq,in_info_len,in_supv_len,i_add_bits); % 解交織
rev_seq = convolutional_decode_Viterbi(de_inter_seq,45,cov_select); % 卷積解碼
%%
if crc_select == 1
code_generator = 1; % CRC解碼部分
code_len = 16;
elseif crc_select == 2
code_generator = 2;
code_len = 16;
else
code_generator = 3;
code_len = 32;
end
iterate_num = length(rev_seq)/(frame_length+code_len);
rev_seq = reshape(rev_seq,(frame_length+code_len),iterate_num);
rev_seq = rev_seq';
decode_seq = zeros(iterate_num,frame_length);
frame_error = 0;
for k = 1:iterate_num
[output_seq,err] = cyclic_redundancy_decode(rev_seq(k,:),(frame_length+code_len),code_generator);
if err == 1
frame_error = frame_error + 1;
% decode_seq(k,:) = 0.5 * ones(1,frame_length);
decode_seq(k,:) = output_seq;
else
decode_seq(k,:) = output_seq;
end
end
decode_seq = reshape(decode_seq',1,iterate_num*frame_length); % 解碼
if ~isempty(add_bits) % 在接受端增加的一個參數add_bits
len = iterate_num*frame_length;
decode_seq((len-add_bits+1):len) = [];
end
original_sequence = 2*decode_seq - 1; % 得到原序列
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -