通信原理课程设计报告以及CPLD汉明码编译
- 格式:doc
- 大小:369.00 KB
- 文档页数:23
通信原理课程设计报告一、引言通信原理课程设计报告旨在总结和分析本次通信原理课程设计的过程和结果。
本报告将详细介绍课程设计的背景、目标、方法和结果,并对所得结果进行评估和讨论。
二、背景通信原理是电子信息类专业中的重要课程之一,旨在培养学生对通信原理的理论和实践应用能力。
本次课程设计以通信原理为基础,通过设计和实现一个通信系统,提高学生对通信原理的理解和应用能力。
三、目标本次课程设计的目标是设计和实现一个基于频分复用(FDM)技术的数字通信系统。
具体目标包括:1. 理解和掌握FDM技术的原理和应用;2. 设计和实现一个完整的通信系统,包括发送端、传输信道和接收端;3. 评估和分析通信系统的性能指标,如误码率、信噪比等。
四、方法本次课程设计采用以下步骤和方法:1. 确定通信系统的需求和参数,包括信号频率范围、带宽要求等;2. 设计发送端,包括信号源、调制器和功率放大器等模块;3. 设计传输信道,模拟真实通信环境,包括添加噪声、信道衰减等;4. 设计接收端,包括解调器、滤波器和信号恢复等模块;5. 实现通信系统,并进行调试和测试;6. 评估和分析通信系统的性能指标。
五、结果经过设计和实现,我们成功完成了一个基于FDM技术的数字通信系统。
以下是我们的主要结果:1. 发送端:我们设计了一个信号源,产生多个频率不同的信号,并通过调制器将这些信号转换为调制信号。
最后,我们使用功率放大器将调制信号放大到适当的功率水平。
2. 传输信道:我们模拟了真实的传输信道,并添加了噪声和信道衰减。
这样可以更好地评估通信系统在实际环境下的性能。
3. 接收端:我们设计了一个解调器,通过解调器将接收到的信号转换为原始信号。
然后,我们使用滤波器去除噪声,并对信号进行恢复和解码。
4. 性能评估:我们评估了通信系统的性能指标,包括误码率、信噪比等。
通过对这些指标的分析,我们可以判断通信系统的可靠性和稳定性。
六、讨论通过本次课程设计,我们对通信原理的理论知识有了更深入的理解,并且掌握了实际应用的能力。
cpld课程设计报告一、教学目标本课程的教学目标是让学生掌握CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)的基本原理、编程方法和应用技巧。
通过本课程的学习,学生应能理解CPLD的工作原理,熟练使用相关软件进行编程,并能够运用CPLD设计简单的数字电路系统。
1.了解CPLD的基本结构和工作原理。
2.掌握CPLD的编程语言和编程方法。
3.理解CPLD在数字电路设计中的应用。
4.能够使用CPLD相关软件进行编程。
5.能够设计简单的数字电路系统。
6.能够进行CPLD的硬件编程和调试。
情感态度价值观目标:1.培养学生对电子技术的兴趣和热情。
2.培养学生动手实践能力和团队协作精神。
3.培养学生勇于探索和创新的精神。
二、教学内容本课程的教学内容主要包括CPLD的基本原理、编程方法和应用。
1.CPLD的基本原理:介绍CPLD的基本结构、工作原理和特点。
2.CPLD的编程方法:介绍CPLD的编程语言、编程步骤和相关软件。
3.CPLD的应用:介绍CPLD在数字电路设计中的应用实例,如数字信号处理器、数字通信系统等。
三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式进行教学。
1.讲授法:通过讲解CPLD的基本原理、编程方法和应用,使学生掌握相关知识。
2.案例分析法:通过分析具体的CPLD应用实例,使学生更好地理解CPLD的应用。
3.实验法:安排实验室实践环节,让学生亲自动手进行CPLD编程和调试,提高学生的动手能力。
四、教学资源为了保证教学效果,我们将准备以下教学资源:1.教材:选择合适的教材,为学生提供全面、系统的学习资源。
2.参考书:提供相关的参考书籍,丰富学生的知识体系。
3.多媒体资料:制作课件、教学视频等多媒体资料,提高学生的学习兴趣。
4.实验设备:准备CPLD实验设备,为学生提供实践操作的机会。
五、教学评估本课程的评估方式将采用多元化、全过程的评价体系,以全面、客观、公正地评估学生的学习成果。
目录前言...............................................................1第1章设计要求..................................................3第2章QuartusⅡ软件介绍.......................................4第3章汉明码的构造原理........................................6 3.1 (7,4)汉明码的构造原理...........................................63.2 监督矩阵H与生成矩阵G..........................................73.3 校正子(伴随式S)...............................................8第4章(7,4)汉明码编码器的设计...............................104.1 (7,4)汉明码的编码原理及方法....................................104.2 (7,4)汉明码编码程序的设计......................................104.3 (7,4)汉明码编码程序的编译及仿真................................11第5章(7,4)汉明码译码器的设计.............................125.1 (7,4)汉明码的译码方法.........................................125.2 (7,4)汉明码译码程序的设计....................................13 5.3 (7,4)汉明码译码程序的编译及仿真..............................15第6章(7,4)汉明码编译码器的设计..........................176.1 (7,4)汉明码编译码器的设计...................................17参考文献.........................................................18体会与建议.......................................................19附录..............................................................20前言汉明(Hamming)码是一种能够纠正一位错码或检测两位错码的一种效率较高的线性分组码。
PCM/ADPCM编译码实验一、实验原理和电路说明PCM/ADPCM编译码模块将来自用户接口模块的模拟信号进行PCM/ADPCM编译码,该模块采用MC145540集成电路完成PCM/ADPCM编译码功能。
该器件工作前通过显示控制模块将其配置成直接PCM或ADPCM模式,使其具有以下功能:1、对来自接口模块发支路的模拟信号进行PCM编码输出。
2、将输入的PCM码字进行译码(即通话对方的PCM码字),并将译码之后的模拟信号送入用户接口模块。
电路工作原理如下:PCM/ADPCM编译码模块中,由收、发两个支路组成,在发送支路上发送信号经U501A 运放后放大后,送入U502的2脚进行PCM/ADPCM编码。
编码输出时钟为BCLK(256KHz),编码数据从语音编译码集成电路U502(MC145540)的20脚输出(DT_ADPCM1),FSX为编码抽样时钟(8KHz),晶振U503(20.48MHz)。
编码之后的数据结果送入后续数据复接模块进行处理,或直接送到对方PCM/ADPCM译码单元。
在接收支路中,收数据是来自解数据复接模块的信号(DT_ADPCM_MUX),或是直接来自对方PCM/ADPCM编码单元信号(DT_ADPCM2),在接收帧同步时钟FSX(8KHz)与接收输入时钟BCLK(256KHz)的共同作用下,将接收数据送入U502中进行PCM/ADPCM译码。
译码之后的模拟信号经运放U501B放大缓冲输出,送到用户接口模块中。
二、实验内容及现象记录与分析1.准备工作:加电后,将KB03置于左端PCM编码位置,此时MC145540工作在PCM编码状态。
将K501设置在右边。
2.PCM/ADPCM编码信号输出时钟和抽样时钟信号观测①输出时钟和抽样时钟即帧同步时隙信号观测:测量、分析和掌握PCM编码抽样时钟信号与输出时钟的频率、占空比以及它们之间的对应关系等。
记录与分析:输出时钟。
由图中右侧测量数据可见,抽样信号频率为8kHz,输出时钟信号频率为256kHz(见下图CH2频率,上图测得为260.4kHz存在误差,因为时间轴选取得太密)。
通信原理课程设计报告信道一、课程目标知识目标:1. 让学生理解并掌握通信原理中信道的基本概念、分类及特性;2. 使学生了解信道编码、解码的基本原理,掌握常见的信道编码技术;3. 引导学生掌握信道容量、信道带宽等关键参数的计算方法。
技能目标:1. 培养学生运用通信原理知识分析实际信道问题的能力;2. 提高学生设计简单信道编码、解码方案的能力;3. 培养学生运用计算工具对信道参数进行计算和优化的能力。
情感态度价值观目标:1. 激发学生对通信原理学科的兴趣,培养良好的学习态度;2. 培养学生团队协作、沟通交流的能力,形成合作共赢的价值观;3. 引导学生关注通信技术在现实生活中的应用,认识到科技发展对社会的贡献。
课程性质分析:本课程为通信原理课程的实践环节,旨在帮助学生将理论知识与实际应用相结合,提高解决实际问题的能力。
学生特点分析:高二年级学生已具备一定的物理和数学基础,具备初步的分析问题和解决问题的能力,但对通信原理的实际应用尚不熟悉。
教学要求:1. 注重理论与实践相结合,提高学生的实际操作能力;2. 采用案例分析、小组讨论等教学方法,引导学生主动参与、积极思考;3. 强调课程目标的可衡量性,便于教学设计和评估。
二、教学内容1. 信道概念及分类:介绍信道的定义、分类(如有线信道、无线信道、模拟信道、数字信道等)及特性;2. 信道编码与解码:讲解信道编码的基本原理,如卷积编码、汉明编码等,以及解码方法;3. 信道参数计算:阐述信道容量、信道带宽等关键参数的计算方法;4. 信道模型:介绍常见的信道模型,如AWGN信道、多径信道等;5. 信道仿真:利用相关软件进行信道仿真,分析不同信道特性对通信系统性能的影响;6. 实践环节:设计简单信道编码方案,进行编码、解码实验,观察实验结果,优化方案。
教学内容安排与进度:1. 第1周:信道概念及分类,信道特性;2. 第2周:信道编码与解码原理;3. 第3周:信道参数计算方法;4. 第4周:信道模型及仿真;5. 第5周:实践环节,设计、实验和优化信道编码方案。
汉明编译码系统自行设计实验一、 实验原理差错控制编码的基本作法是:在发送端被传输的信息序列上附加一些监督码元,这些多余的码元与信息之间以某种确定的规则建立校验关系。
汉明码(7,4)是一种纠错码,是能纠正单个错误的线性分组码。
它有以下特点:码长n=2m -1 最小码距d=3 信息码位 k=2n -m -1纠错能力t=1监督码位r=n -k这里m 位≥2的正整数,给定m 后,既可构造出具体的汉明码(n ,k )。
汉明码的监督矩阵有n 列m 行,它的n 列分别由除了全0之外的m 位码组构成,每个码组只在某列中出现一次。
系统中的监督矩阵如下图所示:1110100H=01110101101001其相应的生成矩阵为:1000101010011100101100001011G=汉明译码的方法,可以采用计算校正子,然后确定错误图样并加以纠正的方法。
图9.1和图9.2给出汉明编码器和译码器电原理图。
a 6 a 5 a 4 a 3 a 2 a 1 a 0a 6 a 5 a 4 a 3图9.1汉明编码器电原理图●●●●●●●●●a 6 a 5 a 4 a 3a 6 a 5 a 4 a 3 a 3 a 3 a 3图9.2汉明译码器电原理图3-8译码器校正子生成错码 指示765432 1● ●● ● ●●●●表1.1 (7,4)汉明编码输入数据与监督码元生成表4位信息位 a 6, a 5, a 4, a 3 3位监督码元 a 2, a 1, a 04位信息位 a 6, a 5, a 4, a 3 3位监督码元a 2, a 1, a 00000 000 1000 101 0001 011 1001 110 0010 110 1010 011 0011 101 1011 000 0100 111 1100 010 0101 100 1101 001 0110 001 1110 100 01110101111111表1.1为(7,4)汉明编码输入数据与监督码元生成表。
姓名:学号:班级:
第周星期第大节
实验名称:汉明编码和译码实验
一、实验目的
1.掌握汉明码编译码原理。
2.掌握汉明码纠错检错原理。
3.通过纠错编解码实验,加深对纠错编解码理论的理解。
二、实验仪器
1.ZH5001A通信原理综合实验系统
2.20MHz双踪示波器
三、实验内容
2.编码规则验证
(1)输入数据为0011
(2)输入数据为1100
3.译码数据输出观测
(1)m序列方式为11
(1)不加错
♦观测加错指示TPC03与错码检测指示输出波形TPW03波形
(2)加1位错
♦观测加错指示TPC03与错码检测指示输出波形TPW03波形
(4)加3位错
(1)不加错
加2位错不能全部正确译码
(4)加3位错
四、思考题
2.汉明编码器模块的使能开关,译码器模块的使能模块(H_EN断路器)起什么作用?
从电路图中可以看出,没有插入H_EN时,汉明编码器被短路,输出数据没有经过汉明编码。
插入H_EN时,输出数据经过汉明编码。
一、实验目的1、了解信道编码在通信系统中的重要性。
2、掌握汉明码编译码的原理。
3、掌握汉明码检错纠错原理。
4、理解编码码距的意义。
5、了解信道编码在通信系统中的重要性;6、掌握BCH码编译码的原理;7、掌握BCH码检错纠错原理;8、了解CPLD实现BCH码编译码的方法。
二、实验原理1、实验原理框图汉明码编译码实验框图实验框图说明汉明码编码过程:数字终端的信号经过串并变换后,进行分组,分组后的数据再经过汉明码编码,数据由4bit变为7bit。
2、实验原理框图BCH码编译码实验原理框图实验框图说明BCH码编码过程:数据经过串并变换后进行分组,分组后的数据再经过BCH码编码。
三、实验过程实验14项目一汉明码编码规则验证概述:本项目通过改变输入数字信号的码型,观测延时输出,编码输出及译码输出,验证汉明码编译码规则。
1、关电,按表格所示进行连线。
2、开电,设置主控菜单,选择【主菜单】→【通信原理】→【汉明码】。
(1)将2号模块的拨码开关S12#拨为10100000,拨码开关S22#、S32#、S42#均拨为00000000;(2)将6号模块的拨码开关S16#拨为0001,即编码方式为汉明码。
开关S36#拨为0000,即无错模式。
按下6号模块S2系统复位键。
3、此时系统初始状态为:2号模块提供32K编码输入数据,6号模块进行汉明编译码,无差错插入模式。
4、实验操作及波形观测。
(1)用示波器观测6号模块TH5处编码输出波形。
注:为方便观测,可以以TH4处延时输出作为输出编码波形的对比观测点。
此处观测的两个波形是同步的。
(2)设置2号模块拨码开关S1前四位,观测编码输出并填入下表中:实验14项目二汉明码检纠错性能检验概述:本项目通过插入不同个数的错误,观测译码结果与输入信号验证汉明码的检纠错能力。
1、保持实验项目一中的连线。
2、将6号模块S3拨成0001(即插入单个错),按下6号模块S2系统复位。
3、对比观测译码结果与输入信号,验证汉明码的纠错能力。
课程设计报告课程名称通信原理课程设计系别:专业班级:学号:姓名:课程题目:汉明码编译码CPLD实现完成日期:指导老师:附件:汉明码编译码CPLD 实现摘要:通过利用CPLD实现对汉明码进行编译。
利用ALTERA公司的FLEX10K系列芯片设计和实现了汉明码的编译码,详细地阐述了设计的方法和实现的过程。
首先进行电路设计,然后在MAX+PLUSII编辑环境下,采用自顶向下的层次设计方法,以及VHDL文本输入的输入方法编制程序,经编译正确后进行波形仿真,经过仿真、调试,验证了功能和时序正确性后,将编辑的程序烧写到CPLD。
关键词:CPLD 汉明码编译MAX+PLUSII正文一.汉明码理论:汉明码是一种能够纠正一位错码且编码效率较高的线性分组码。
汉明码的编译码原理:汉明码的编码是对信源端发出的原始码字上加入一些监督码,得到新的码字,这的码字增加了信息的冗余,但保证了传输的质量,设其码字为A=[a6,a5,a4,a3,a2,a1,a0],其中前4位是信息元,后3位是监督元,使信息码元与监督码元通过线性方程式联系起来,可用下列线性方程组来描述该分组码,产生监督元:发送端计算监督位 a n = a n-1 ⊕a n-2⊕…. ⊕a 0=0 ,接收端解码计算S = a n-1 ⊕a n-2 ⊕…. ⊕a n-2⊕a0 ,校正子S =0则无错、S=1则有错,该式为监督关系式;S称为校正子。
由于校正子S只有两种取值,故它只能代表有错和无错这两种信息,而不能指出错码的位置。
一般来说,若码长为n,信息位数为k,则监督位数r=n-k。
用r个监督位构造出r个监督关系式来指示1位错码的n种可能位置,则2r -1 ≥ n 即2r ≥ k+r+1满足此汉明不定式。
(7, 4)汉明码,为了纠正1位错码,由上式可知,要求监督位数r≥ 3。
若r = 3,则n = k + r = 7。
我们用a6 a5⋯a0表示这7个码元,用S1、S2和S3表示3个监督关系式中的校正子,则S1、S2和S3的值与错码位置的对应关系可以规定如下:表格一:S2= a6 ⊕a5 ⊕a3 ⊕a1S3 = a6⊕a4 ⊕a3 ⊕a0错码位置a0 a1 a2 a3 a4 a5 a6 无错码仅当一位错码的位置在a2 、a4、a5或a6时,校正子S1为1;否则S1为零。
自主设计实验二.汉明码编译码121180165赵博睿一.实验原理汉明码是差错控制编码的一种,是一种线性分组码,可以纠一位错,利用监督位和信息位的线性方程关系实现监督。
满足n=k+r,n=2^r-1的关系,本次实验采用的是(7,4)汉明码。
二.设计思路本次实验可以分为6个模块:m序列产生模块、汉明编码模块、编码输出模块、信道加错模块、接收译码模块、译码输出模块。
1.m序列产生模块:上次实验做过,因此不赘述设计思路;2.汉明码编码模块:需要将m序列缓冲到一个寄存器中进行汉明编码,编码方法由生成矩阵G决定,需要将编码数据放入到另一个寄存器中。
3.编码输出模块:将寄存器中编好的数据输出,需要另一个寄存器进行并行存储到串行输出的转换,并且需要一个同步计数器跟踪串行输出的首位。
4.信道加错模块:需要一个计数器来进行固定频率的加错,需要一个寄存器进行汉明码串行输出到并行存储的转换。
5.译码输出模块:将加错后的汉明码进行纠错译码并且输出,需要一个同步信号查找首位,需要一个寄存器进行译码,需要一个寄存器进行译码后数据并行存储到串行输出的转换。
从技术层面来讲,需要三种技术:同步技术、串/并行转换技术、编译码技术。
三.Verilog代码module hanmingma(clk,mout,hout,tout);input clk;//晶振clk信号//output reg mout;//m序列输出//output reg hout;//汉明码输出//reg mclk;//m序列clk//reg hclk;//汉明码clk//reg [3:0] mreg;//m序列寄存器//reg [6:0] hreg;//用来汉明码编码的汉明码寄存器//reg [6:0] hreg2;//用来输出的汉明码寄存器//reg [6:0] rereg;//接收端汉明码寄存器//reg [3:0] m;//m序列产生寄存器//reg [7:0] count1;//mclk计数器//reg [7:0] count2;//hclk计数器//reg [1:0] mcount;//m序列同步计数器//reg [2:0] hcount;//汉明码同步计数器//reg [6:0] ecount;//加错计数器//reg [3:0] rem;//用来译码的译码m序列寄存器//output reg tout;//译码输出//reg [3:0 ]rem2;//用来输出的译码m序列寄存器//reg[2:0] tcount;//译码输出同步计数器//reg [2:0] a1;//接收端同步寄存器1//reg[2:0] a2;//接收端同步寄存器2//reg [3:0] acount;//接收端同步计数器//always @(posedge clk)beginif(count1==223)//分频产生32khz时钟信号mclk// beginmclk<=~mclk;count1<=0;endelsecount1<=count1+1;if(count2==127)//分频产生56khz的时钟信号hclk// beginhclk<=~hclk;count2<=0;endelsecount2<=count2+1;endalways @(posedge mclk)//产生m序列并且输出到mout// beginif(m==0)m=1;elsebeginm[0]<=m[0]^m[3];m[1]<=m[0];m[2]<=m[1];m[3]<=m[2];mout<=m[3];endendalways @(posedge mclk)//将mout输入到mreg寄存器中并且计数,每当存入4个数据时进行汉明码编码并存储到hreg寄存器中,并且重新开始计数//beginmreg[3:1]<=mreg[2:0];mreg[0]<=mout;if(mcount==2)beginhreg[6:3]<=mreg[3:0];hreg[2]<=mreg[3]^mreg[2]^mreg[1];hreg[1]<=mreg[1]^mreg[2]^mreg[0];hreg[0]<=mreg[3]^mreg[0]^mreg[2];mcount<=mcount+1;endelsemcount<=mcount+1;endalways @(posedge hclk)//将hreg中的汉明码存入hreg2中用以输出,hreg2中的最高位输出到hout并且进行移位,同时进行计数,输出7个数据之后重新将hreg中的数据存入hreg2中并且重复上述输出过程//beginhout<=hreg2[6];hreg2[6:1]<=hreg2[5:0];if(hcount==6)beginhreg2<=hreg;hcount<=0;endelsehcount<=hcount+1;endalways @(posedge hclk)//模拟加错信道,将hout输入到接收端汉明码寄存器,并将接收端寄存器数据移位,同时进行错码周期计数,当传输18个数据时,将当前数据取反输入给接收端//beginrereg[6:1]<=rereg[5:0];if(ecount==17)beginrereg[0]<=~hout;ecount<=0;endelsebeginrereg[0]<=hout;ecount<=ecount+1;endendalways @(posedge hclk)//进行接收端汉明码首位寻址,若两个同步监督寄存器中有一个为0,即连续两个7位序列中有一个无错误,视为同步成功,将同步计数器归0,否则同步计数器数值不变,继续寻找满足条件的首位//beginif(acount==6)beginif(a2==0||a1==0)acount<=0;elseacount<=6;endelseacount<=acount+1;endalways @(posedge hclk)//接收端纠错译码和监督,寻找首位时进行同步监督,并将同步监督寄存器1值赋给同步监督寄存器2,以实现监督连续两组汉明码的目的,与上一个模块共同作用保证同步,并同时进行纠错译码,将译码后的结果放到译码m序列寄存器中// beginif(acount==6)begina1[2]<=rereg[6]^rereg[5]^rereg[4]^rereg[2];a1[1]<=rereg[5]^rereg[4]^rereg[3]^rereg[1];a1[0]<=rereg[6]^rereg[5]^rereg[3]^rereg[0];a2<=a1;rem[3]<=((~(rereg[5]^rereg[3]^rereg[4]^rereg[1]))&(rereg[6] ^rereg[5]^rereg[3]^rereg[0])&(rereg[6]^rereg[5]^rereg[4]^re reg[2]))^rereg[6];rem[2]<=((rereg[5]^rereg[3]^rereg[4]^rereg[1])&(rereg[6]^re reg[5]^rereg[3]^rereg[0])&(rereg[6]^rereg[5]^rereg[4]^rereg [2]))^rereg[5];rem[1]<=((rereg[5]^rereg[3]^rereg[4]^rereg[1])&(~(rereg[6] ^rereg[5]^rereg[3]^rereg[0]))&(rereg[6]^rereg[5]^rereg[4]^r ereg[2]))^rereg[4];rem[0]<=((rereg[5]^rereg[3]^rereg[4]^rereg[1])&(rereg[6]^re reg[5]^rereg[3]^rereg[0])&(~(rereg[6]^rereg[5]^rereg[4]^rer eg[2])))^rereg[3];endendalways @(posedge mclk)//译码后的m序列输出,将译码m序列寄存器中的数据存入rem2中,rem2中最高位输出到tout并进行移位,并同时进行计数,输出4个数据后将m序列寄存器中的数据再次存入rem2中,重复上述输出过程//begintout<=rem2[3];rem2[3:1]<=rem2[2:0];if(tcount==3)beginrem2<=rem;tcount<=0;endelsetcount<=tcount+1;endendmodule四.实验结果分析1.程序仿真结果分析:图1.汉明码编码仿真分析:图中的hout为..1110100 1011000 0010110 0011101.., 经查表(此表格在报告最后附录给出)可知分为别1110,1011,0010,0011的汉明码编码,而1110-1011-0010-0011也符合mout的输出,所以这个仿真结果表明编码成功。
实验十七汉明码的编解码实验实验十八汉明码的编解码实验实验内容1. 熟悉汉明码码型变换编码实验2.熟悉汉明码码型变换译码实验一、实验目的1.了解汉明码的编解码原理2.掌握汉明码的编解码过程3. 学习通过CPLD编程实现汉明码编译码实验二、实验电路工作原理汉明码是1949年提出的一种能纠正单个错误的线性分组码。
它是在原有数据中插入若干校验码来进行错误检查和纠正的编码技术。
它在CDMA多载波系统中得到了广泛应用。
1.线性分组码的编码原理分组码中信息码元和监督码元是用线性方程联系起来的。
设分组系统码(n,k)中k=4,为能纠正一位误码,取r=3,则n=k+r=7。
我们用a0a1a2a3a4a5a6表示这7个码元,用S1,S2,S3表示由三个监督方程式计算得到的校正子,并假设S1S2S3三位校正子组码与误码位置的对应关系如表1-1所示。
由表可知: S1=6542(1-1)94实验十七 汉明码的编解码实验95S2=6531a a a a ⊕⊕⊕ (1-2) S3=6430a a a a ⊕⊕⊕ (1-3)在编码时,a6,a5,a4,a3为信息码元,取决于被传输的信息。
由式(1-1),(1-2),(1-3)可知,监督码元a2,a1和a0应根据以下的监督方程确定:a2=654a a a ⊕⊕(1-4); a1=653a a a ⊕⊕(1-5); a0=643a a a ⊕⊕(1-6)不难看出,上述(7.4)码的最小码距dmin=3,它能纠正一个误码或检测两个误码。
如超出纠错能力,则反而会因“乱纠”而增加新的误码。
2.线性分组码的实现方法 dataout(7)<='0';dataout(6 downto 3 ) <=datain(3 downto 0); dataout(2)<=datain(3)xor datain(2) xor datain(1); dataout(1)<=datain(2) xor datain(1) xor datain(0); dataout(0)<=datain(3) xor datain(2) xor datain(0); 3.线性分组码的解码原理接收端收到的每个码组后,计算出S1,S2和S3,如不全为0,则可按表1-1确定误码的位置,然后给以纠正。
课程设计报告题目:(7,4)汉明码编译码系统CPLD实现系(部):专业:班级:姓名:年月日(7,4)汉明码编译码系统CPLD实现一.设计目的通过本课程设计巩固并扩展通信原理课程的基本概念、基本理论、分析方法和实现方法。
结合EDA技术、数字通信技术和微电子技术,学习现代数字通信系统的建模和设计方法,使学生能有效地将理论和实际紧密结合,培养创新思维和设计能力,增强软件编程实现能力和解决实际问题的能力。
二.设计要求⑴熟悉数字电路设计的一般方法,熟练地运用通信理论,进行数字基带信号、数字信号频带传输系统设计,掌握对数字基带信号的处理方法,并进行通信系统建模。
⑵熟悉和掌握MAXPLUSⅡ软件的使用,按设计要求进行建模;⑶设计完成后,按学校规范统一书写格式撰写课程设计报告一份,包括:设计目的、设计要求、逻辑分析、设计总体电路、模块设计、模块程序(含对程序的说明)、仿真波形、实验结果分析、心得体会(不少于500字)、参考文献(不少于5篇)等。
三.逻辑分析线性分组码是一种很重要的纠错码,应用很广泛。
在(n,k)分组码种,若监督码元是按线性关系模2相加而得到的,则称其为线性分组码。
循环码是采用循环移位特性界定的一类线性分组码。
如果一个线性分组码的任意一个码字都是另外一个码字的循环移位,那么称此线性分组码为一个循环码。
而本次课程设计要求采用新型数字系统设计的方法实现(7,4)汉明码。
汉明码是差错控制编码中最主要、最常用的一种。
它有很强的纠错能力,所以普遍应用于各种实际的差错控制系统。
要求用CPLD实现(7,4)汉明码编码解码的方法,可以采用原理图或VHDL编程输入的方式。
(7,4)汉明码的编码就是将输入的4位信息码加上3位监督码从而编成7位汉明码输出。
监督位的生成如下:b(2)<=a(3) xor a(2) xor a(1);b(1)<=a(3) xor a(2) xor a(0);b(0)<=a(3) xor a(1) xor a(0);(7,4)汉明码的译码就是将输入的7位汉明码译为4位信息码,并且根据得到的校正子纠正编码过程中可能出现的1位错码。
兰州理工大学课程设计报告课程名称:通信系统课程设计设计名称:汉明码的编码和译码姓名:学号:班级:指导教师:起止日期:2014.4.7-2014.4.9课程设计任务书学生班级:学生姓名:学号:设计名称:汉明码的编译和译码起止日期:2012.6.11-2012.6.25 指导教师:课程设计学生日志课程设计评语表汉明码的编码和译码一、 设计目的和意义1. 学习汉明码的编码和译码;2. 学习Matlab 的相关使用,学会用Malab 解决实际问题;3. 培养自己全面、独立思考的能力。
二、 设计原理2.1汉明码编码原理一般来说,若汉明码长为n ,信息位数为k ,则监督位数r=n-k 。
若希望用r 个监督位构造出r 个监督关系式来指示一位错码的n 种可能位置,则要求21r n -≥或211rk r -≥++ (1)下面以(7,4)汉明码为例说明原理:设汉明码(n,k )中k=4,为了纠正一位错码,由式(1)可知,要求监督位数r ≥3。
若取r=3,则n=k+r=7。
我们用6543210a a a a a a a 来表示这7个码元,用123s s s 的值表示3个监督关系式中的校正子,则123s s s 的值与错误码元位置的对应关系可以规定如表1所列。
表1 校正子和错码位置的关系则由表1可得监督关系式: 16542s a a a a =⊕⊕⊕()226531s a a a a =⊕⊕⊕ ()3 36430s a a a a =⊕⊕⊕()4 在发送端编码时,信息位6543a a a a 的值决定于输入信号,因此它们是随机的。
监督位2a 、1a、a 应根据信息位的取值按监督关系来确定,即监督位应使式(2)~式(4)中1s、2s 、3s 的值为0(表示编成的码组中应无错码)654265316430000a a a a a a a a a a a a ⊕⊕⊕=⎧⎪⊕⊕⊕=⎨⎪⊕⊕⊕=⎩ (5)式(5)经过移项运算,接触监督位265416530643a a a a a a a a a a a a=⊕⊕⎧⎪=⊕⊕⎨⎪=⊕⊕⎩ (6)式(5)其等价形式为:6543210111010001101010010110010a a a a a a a ⎡⎤⎢⎥⎢⎥⎢⎥⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎢⎥⎢⎥⎢⎥⎣⎦(7)式(6)还可以简记为0T T H A •=或0TA H •= (8)其中111010011010101011001H ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦[]6543210A a a a a a a a =[]0000=111011011011P ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦100010001r I ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦ 所以有[]r H PI = (9)式(6)等价于[][][]21065436543111110101011a a a a a a a a a a a Q⎡⎤⎢⎥⎢⎥==⎢⎥⎢⎥⎣⎦(10)其中Q 为P 的转置,即T Q P = (11)式(10)表示,信息位给定后,用信息位的行矩阵乘矩阵Q 就产生出监督位。
数字光纤通信线路编译码CPLD仿真实验一、实验目的1.熟悉m序列NRZ码、任意周期码产生原理以及光纤线路CMI编译码原理。
2.初步熟练Altera公司Maxplus II仿真平台的使用。
3.进一步熟悉数字电路设计技巧。
4.基本掌握如何进行CPLD的电路设计与仿真。
5.深入理解光纤线路编译码在光纤通信系统中的实际运用方法。
二、实验内容1.学习使用Altera公司Maxplus II仿真平台进行CPLD数字电路的设计与仿真。
2.设计m序列NRZ码产生电路以及光纤线路CMI编译码电路。
m序列: 伪随机序列;NRZ: 不归零码;CMI编码规则: 0码:01;1码::00/11 交替;3.通过CPLD仿真确保上述电路的正确设计。
4.总结光纤线路编译码在光纤通信系统中的实际运用。
三、实验要求A 实验过程要求在MAX+plus II软件仿真环境中,1.用绘制原理图的方法建立新工程,设计CPLD内部下述电路:15位m序列NRZ码的生成电路;CMI编码电路;CMI编码输入的选择电路:周期15位m序列与由周期15位二进制码表示本组内某学号最后四位(前面可补零)分别选择作为CMI编码输入;CMI译码电路(在实验室条件下使用统一系统时钟,输入为CMI编码输出)。
2.对所做设计完成正确编译。
3.使用仿真环境完成信号波形仿真。
CPLD电路仿真的输入输出信号即各测试点信号要求如下:输入:电路的总复位信号:1路(位);系统时钟信号(2Mbps):1路;CMI编码输入的选择信号:1路;输出:周期15位m序列NRZ码:1路;周期15位二进制后四位学号:1路;CMI编码输出信号:1路;CMI译码输出信号:1路;4.对仿真信号波形结果进行原理分析,发现可能的问题并加以解决,得到正确的仿真结果。
B 结果要求1.实验报告:总结实验目的、工作原理、实验内容、设计电路;对比设计报告中的信号波形理论分析结果与实际仿真结果是否存在差异,如果有差异,分析产生差异的原因;实验中出现的问题及解决方法;心得体会。
课程设计报告课程名称通信原理课程设计系别:专业班级:学号:姓名:课程题目:汉明码编译码CPLD实现完成日期:指导老师:附件:汉明码编译码CPLD 实现摘要:通过利用CPLD实现对汉明码进行编译。
利用ALTERA公司的FLEX10K系列芯片设计和实现了汉明码的编译码,详细地阐述了设计的方法和实现的过程。
首先进行电路设计,然后在MAX+PLUSII编辑环境下,采用自顶向下的层次设计方法,以及VHDL文本输入的输入方法编制程序,经编译正确后进行波形仿真,经过仿真、调试,验证了功能和时序正确性后,将编辑的程序烧写到CPLD。
关键词:CPLD 汉明码编译MAX+PLUSII正文一.汉明码理论:汉明码是一种能够纠正一位错码且编码效率较高的线性分组码。
汉明码的编译码原理:汉明码的编码是对信源端发出的原始码字上加入一些监督码,得到新的码字,这的码字增加了信息的冗余,但保证了传输的质量,设其码字为A=[a6,a5,a4,a3,a2,a1,a0],其中前4位是信息元,后3位是监督元,使信息码元与监督码元通过线性方程式联系起来,可用下列线性方程组来描述该分组码,产生监督元:发送端计算监督位 a n = a n-1 ⊕a n-2⊕…. ⊕a 0=0 ,接收端解码计算S = a n-1 ⊕a n-2 ⊕…. ⊕a n-2⊕a0 ,校正子S =0则无错、S=1则有错,该式为监督关系式;S称为校正子。
由于校正子S只有两种取值,故它只能代表有错和无错这两种信息,而不能指出错码的位置。
一般来说,若码长为n,信息位数为k,则监督位数r=n-k。
用r个监督位构造出r个监督关系式来指示1位错码的n种可能位置,则2r -1 ≥ n 即2r ≥ k+r+1满足此汉明不定式。
(7, 4)汉明码,为了纠正1位错码,由上式可知,要求监督位数r≥ 3。
若r = 3,则n = k + r = 7。
我们用a6 a5⋯a0表示这7个码元,用S1、S2和S3表示3个监督关系式中的校正子,则S1、S2和S3的值与错码位置的对应关系可以规定如下:表格一:S2= a6 ⊕a5 ⊕a3 ⊕a1S3 = a6⊕a4 ⊕a3 ⊕a0错码位置a0 a1 a2 a3 a4 a5 a6 无错码仅当一位错码的位置在a2 、a4、a5或a6时,校正子S1为1;否则S1为零。
这就意味着a2 、a4、a5和a6四个码元构成偶数监督关系;同理,a1、a3、a5和a6构成偶数监督关系;以及a0、a3、a4和a6构成偶数监督关系。
在发送端编码时,信息位a6、a5、a4和a3的值决定于输入信号,因此它们是随机的。
监督位a2、a1和a0应根据信息位的取值按监督关系来确定,即监督位应使上3式中S1、S2和S3的值为0(表示编成的码组中应无错码):a6 ⊕ a5⊕ a4⊕a2=0 a2=a6⊕ a5⊕ a4a6 ⊕a5 ⊕a3 ⊕a1=0 移项运算,解出监督位a1= a6 ⊕a5 ⊕a3a6⊕a4 ⊕a3 ⊕a0=0 a0= a6⊕a4 ⊕a3根据上面三个表达式,可以得到16个许用码组如下表许用码组表表格二:(7,4)码的三个监督方程式可以重新改写为如下形式:可以用矩阵形式来表示:记作:或,其中通常H称为监督矩阵,A称为信道编码得到的码字。
在这个例子中H为r×n阶矩阵,P为r×k 阶矩阵,Ir为r×r(3x3)阶单位矩阵,具有这种特性的H矩阵称为典型监督矩阵,这是一种较为简单的信道编译码方式。
典型形式的监督矩阵各行是线性无关的。
接收端收到每个码组后,先计算出S1、S2和S3,再查表判断错码情况。
例如,若接收码组为0000011,按上述公式计算可得:S1 = 0,S2 = 1,S3 = 1。
由于S1 S2 S3 等于011,故查表可知在a3位有1错码。
按照上述方法构造的码称为汉明码。
表中所列的(7, 4)汉明码的最小码距d0 = 3。
因此,这种码能够纠正1个错码或检测2个错码。
由于码率k/n = (n - r) /n =1 –r/n,故当n很大和r很小时,码率接近1。
可见,汉明码是一种高效码。
二.软件部分:1、(7,4)汉明码的编码、程序流程图汉明码的编码就是将输入的四位信息码编成七位的汉明码,即加入三位监督位。
因为A = [a6 a5 a4 a3] ·G,信息码与生成矩阵G的乘积就是编好以后的(7,4)汉明码,而生成矩阵G又是已知的,可得1 0 0 0 1 1 10 1 0 0 1 1 0G =0 0 1 0 1 010 0 0 10 1 1所以,可以得出如下方程组a6 = a6a5 =a5a4 =a4a3=a3(方程组2)a2 = a6 + a5 + a4a1 = a6 + a5+ a3a0 = a6+ a4 + a3根据上式就可以完成设计编码程序。
编码流程图如下图:(7,4)汉明码的编码仿真图2、(7,4)汉明码的译码、程序流程图及仿真(7,4)汉明码的译码思路:(7,4)汉明码的译码就是将输入的七位汉明码翻译成四位的信息码,并且纠正其中可能出现的一个错误。
由于生成矩阵G是已知的,由G = [I k Q] ,(其中Ik是4x4阶单位阵)可以得到矩阵Q的值1 1 1Q = 1 1 0=P T(3.2.1)1 0 10 1 1那么1110P=1101(3.2.2)101 1而监督矩阵H与P T又存在一定的关系,即H =[PI r](3.2.3)那么就可以算出监督矩阵H的值,即1 1 1 0 1 0 0H = 1 1 0 1 0 10(3.2.4)1 0 1 1 0 0 1所以11 111010 1H T=011(3.2.5)10001000 1根据式S = BH T =(A + E)H T= EH T (S称为伴随式或校正子,收发码组之差定义为错误图样E,即 E = B - A),可以看出校正子S与错误样E之间有确定的线性变换关系如下表所示。
表格三:(7,4)汉明码S与E的对应关系表E =[ en-1,en-2,…,e1,e],算出校正子S与(7,4)汉明码各位之间的关系表达式为S2= a2+ a6+ a5+ a4S1= a1+ a6+ a5+a3S0 = a+ a6+ a4+ a3明显可以确定每一位出错时,对应的校正子s2s1s的值。
译码流程图如右图所示:(7,4)汉明码的译码仿真图三.程序清单:(7,4)汉明码的编码程序:library ieee;use ieee.std_logic_1164.all;entity bm isport(a:in std_logic_vector(3 downto 0);b:out std_logic_vector(6 downto 0));end ;architecture one of bm isbeginb(6)<=a(3);b(5)<=a(2);b(4)<=a(1);b(3)<=a(0);b(2)<=a(3) xor a(2) xor a(1);b(1)<=a(3) xor a(2) xor a(0);b(0)<=a(3) xor a(1) xor a(0);end;(7,4)汉明码的译码程序:library ieee;use ieee.std_logic_1164.all;entity ym isport(a:in std_logic_vector(6 downto 0);s:out std_logic_vector(2 downto 0);b:out std_logic_vector(3 downto 0);c:out std_logic_vector(2 downto 0)); end ;architecture one of ym isbeginprocess(a)variable ss:std_logic_vector(2 downto 0); variable bb:std_logic_vector(6 downto 0); beginss(2):=a(6) xor a(5) xor a(4) xor a(2);ss(1):=a(6) xor a(5) xor a(3) xor a(1);ss(0):=a(6) xor a(4) xor a(3) xor a(0); bb:=a;if ss> "000"thencase ss iswhen "001" =>bb(0):= not bb(0);c<="000"; when "010" =>bb(1):= not bb(1);c<="001"; when "100" =>bb(2):=not bb(2);c<="010"; when "011" =>bb(3):=not bb(3);c<="011";when "101" =>bb(4):=not bb(4);c<="100"; when "110" =>bb(5):=not bb(5);c<="101"; when "111" =>bb(6):=not bb(6);c<="110"; when others => null;c<="111";end case;else b<= a(6)&a(5)&a(4)&a(3);end if;s<=ss;b<=bb(6)&bb(5)&bb(4)&bb(3);end process;end;四.编译结果及分析编译结果:图1 (7,4)汉明码的编码程序的仿真在max+plus Ⅱ采用波形编辑器:先建立一个仿真通道文件bm·scf,如下图示:图二编辑的wdf文件如图所示:图三编译结果如下:图四(7,4)汉明码的编码程序的编译和仿真分析按照上述编码程序的编写思路,编写好程序,点击,进行编译,出现一些错误,列举如下:图五Error 1表明在使用"std_logic_vector"时,没有打开可以使用这个函数的库,应该在程序的最前面加上如下语句:library ieee;use ieee.std_logic_1164.all;图六Error 2: vhdl syntax error:the ending simple name “bm”must match the entity identifier “ym”. Error 2表明程序中的文件名与保存时的文件名不一致,两者应该相同。