通信原理课程设计报告通信1005班实验目的通信原理实验是针对通信工程专业学生的实践教学环节,通过这一环节,可使学生巩固相关课程知识,增强动手能力,提高学生对通信系统的仿真技能。
在强调基本原理的同时,更突出设计过程的锻炼,强化学生的实践创新能力。
选题:第二题、码型变换的仿真实现Ⅰ、基本任务:原始PCM脉冲编码信号的AMI码型和CMI码型变换。
主要步骤和要求:(1)把原始的PCM脉冲编码信号转换成适合在信道中传输的AMI码型。
要求PCM码可以是数字型也可以是字符型,要求画出AMI码型变换前后的波形图。
(2)把原始的PCM脉冲编码信号转换成适合在信道中传输的CMI码型。
要求PCM码可以是数字型也可以是字符型,要求画出CMI码型变换前后的波形图。
Ⅱ、选做任务:原始PCM脉冲编码信号的HDB3码型转换。
主要步骤和要求:把原始的PCM脉冲编码信号转换成适合在信道中传输的HDB3码型。
要求PCM码可以是数字型也可以是字符型;要求保证输入的PCM脉冲编码信号中1的个数为偶数;要求画出HDB3码型变换前后的波形图。
设计原理AMI码AMI(Alternative Mark Inversion)码的全称是信号交替反转码,是通信编码中的一种,为极性交替翻转码,分别有一个高电平和低电平表示两个极性。
一、编码规则:消息代码中的0 传输码中的0 ,消息代码中的1 传输码中的+1、-1交替例如: 消息代码:1 0 1 0 1 0 0 0 1 0 1 1 1AMI码: +1 0 -1 0 +1 0 0 0 -1 0 +1 -1 +1二、AMI码的特点:1 由AMI码确定的基带信号中正负脉冲交替,而0电位保持不变;所以由AMI码确定的基带信号无直流分量,且只有很小的低频分量;2 不易提取定时信号,由于它可能出现长的连0串。
三、解码规则从收到的符号序列中将所有的-1变换成+1后,就可以得到原消息代码程序流程图HDB3码一、High Density Bipolar of order 3code,三阶高密度双极性码。
HDB3的编码规则1 先将消息代码变换成AMI码,若AMI码中连0的个数小于4,此时的AMI码就是HDB3码;2 若AMI码中连0的个数大于3,则将每4个连0小段的第4个0变换成与前一个非0符号(+1或-1)同极性的符号,用表示(+1+,-1-);3为了不破坏极性交替反转,当相邻符号之间有偶数个非0符号时,再将该小段的第1个0变换成+B或-B,符号的极性与前一非零符号的相反,并让后面的非零符号从符号开始再交替变化。
例如: 消息代码: 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1AMI码: +1 0 0 0 0 -1 0 0 0 0 +1 -1 0 0 0 0 +1 -1HDB3码:+1 0 0 0 +V -1 0 0 0 -V +1 -1 +B 0 0 +V -1 +1 流程图:CMI码CMI(Coded Mark Inversion)码是传号反转码的简称,与双相码类似,它也是一种双极性二电平码。
其编码规则是“1”码交替用“11”和“00”两位码表示;“0”码固定地用“01”表示。
CMI码易于实现,含有丰富的定时信息。
此外,由于10为禁用码组,不会出现三个以上的连码,这个规律可以用来宏观检错。
该码已被ITU-T推荐为PCM四次群的接口码型,有时也用在速率低于8.44Mb/s的光缆传输系统中。
运行结果截图输入源代码function varargout = gui02(varargin)gui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @gui02_OpeningFcn, ...'gui_OutputFcn', @gui02_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before gui02 is made visible.function gui02_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% varargin command line arguments to gui02 (see VARARGIN)% Choose default command line output for gui02handles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes gui02 wait for user response (see UIRESUME)% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line. function varargout = gui02_OutputFcn(hObject, eventdata, handles)% varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Get default command line output from handles structurevarargout{1} = handles.output;function inputcode_Callback(hObject, eventdata, handles)% hObject handle to inputcode (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of inputcode as text% str2double(get(hObject,'String')) returns contents of inputcode as a double%ÒÔ×Ö·û´®µÄÐÎʽÀ´´æ´¢Êý¾ÝÎı¾¿ò1µÄÄÚÈÝinput = str2num(get(hObject,'String'));guidata(hObject, handles);% --- Executes during object creation, after setting all properties. function inputcode_CreateFcn(hObject, eventdata, handles)% hObject handle to inputcode (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end% --- Executes on button press in amibutton.function amibutton_Callback(hObject, eventdata, handles)% hObject handle to amibutton (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)xn = str2num(get(handles.inputcode,'String'));yn=xn;%AMIÂënum=0;for k=1:length(xn)if xn(k)==1num=num+1;if num/2==fix(num/2)yn(k)=1;elseyn(k)=-1;endendendxnynfigure;subplot(2,1,1);stairs([0:length(xn)-1],xn);axis([0 length(xn) -2 2]);title('PMCÂë')subplot(2,1,2);stairs([0:length(xn)-1],yn);axis([0 length(xn) -2 2]);title('AMIÂë')% --- Executes on button press in hdb3button2.function hdb3button2_Callback(hObject, eventdata, handles)% hObject handle to hdb3button2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)xn = str2num(get(handles.inputcode,'String'));yn=xn;%AMIÂënum=0;for k=1:length(xn)if xn(k)==1num=num+1;if num/2==fix(num/2)yn(k)=1;elseyn(k)=-1;endendendnum=0;%HDB3yh=yn;sign=1;V=zeros(1,length(yn));for k=1:length(yn)if yn(k)==0num=num+1;if num==4v(1)=yh(k-4);breakendelsenum=0;endendfor k=1:length(yn)if yn(k)==0num=num+1;if num==4num=0;yh(k)=v(sign);v(sign+1)=-v(sign);if yh(k)==yh(k-4)elseyh(k-3)=yh(k);yh(k+1:length(yn))=-1*yh(k+1:length(yn));endsign=sign+1;endelsenum=0;endendys=zeros(1,2*length(xn));xnyhfiguresubplot(2,1,1);stairs([0:length(xn)-1],xn);axis([0 length(xn) -2 2]);title('PMCÂë')subplot(2,1,2);stairs([0:length(xn)-1],yh);axis([0 length(xn) -2 2]);title('HDB3Âë')% --- Executes on button press in cimbutton3.function cimbutton3_Callback(hObject, eventdata, handles)% hObject handle to cimbutton3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)xn = str2num(get(handles.inputcode,'String'));num=0;yc=zeros(1,2*length(xn));%CMIfor k=1:length(xn)if xn(k)==1num=num+1;if num/2==fix(num/2)yc(2*k-1)=1;yc(2*k)=1;elseyc(2*k-1)=0;yc(2*k)=0;endelseyc(2*k-1)=0;yc(2*k)=1;endendxnycfiguresubplot(2,1,1);stairs([0:length(xn)-1],xn);axis([0 length(xn) -2 2]);title('PMCÂë')subplot(2,1,2);stairs([0:2*length(xn)-1],yc);axis([0 2*length(xn) -2 2]);title('CMIÂë')。