天津大学通信系统集成电路课程设计实验报告四
- 格式:doc
- 大小:161.50 KB
- 文档页数:12
一、实训时间2022年X月X日至2022年X月X日二、实训地点XX大学电子实验室三、实训目的1. 熟悉集成电路的基本原理和实验方法;2. 培养动手能力和实验操作技能;3. 深入了解集成电路的设计与制造过程;4. 提高对电子电路的分析与解决实际问题的能力。
四、实训内容1. 集成电路基本原理及实验(1)半导体材料与器件:了解半导体材料的特性,掌握PN结、二极管、晶体管等基本器件的原理和特性。
(2)集成电路基本电路:学习放大器、稳压器、滤波器等基本电路的设计与实验。
(3)集成电路制造工艺:了解集成电路的制造工艺流程,包括光刻、蚀刻、离子注入、扩散等。
2. 集成电路设计及实验(1)模拟集成电路设计:学习模拟电路的基本原理,掌握运算放大器、滤波器、稳压器等模拟电路的设计方法。
(2)数字集成电路设计:学习数字电路的基本原理,掌握逻辑门、触发器、计数器等数字电路的设计方法。
(3)集成电路版图设计:学习版图设计软件,掌握版图设计的基本规则和技巧。
3. 集成电路制造工艺实验(1)光刻实验:学习光刻原理,掌握光刻机的操作方法和光刻工艺流程。
(2)蚀刻实验:学习蚀刻原理,掌握蚀刻机的操作方法和蚀刻工艺流程。
(3)离子注入实验:学习离子注入原理,掌握离子注入机的操作方法和离子注入工艺流程。
五、实训过程及结果1. 集成电路基本原理及实验在实训过程中,我们学习了半导体材料与器件的基本原理,掌握了PN结、二极管、晶体管等基本器件的特性和应用。
通过实验,我们验证了放大器、稳压器、滤波器等基本电路的性能。
2. 集成电路设计及实验在模拟集成电路设计方面,我们学习了运算放大器、滤波器、稳压器等模拟电路的设计方法,并成功设计出满足要求的电路。
在数字集成电路设计方面,我们掌握了逻辑门、触发器、计数器等数字电路的设计方法,并成功设计出满足要求的电路。
3. 集成电路制造工艺实验在光刻实验中,我们学会了光刻机的操作方法和光刻工艺流程,成功完成了光刻实验。
2023年本科集成电路设计与集成系统专业实习报告本次实习是在一家集成电路设计公司进行的,主要实习内容有三部分,分别是EDA工具使用、电路设计与仿真、芯片测试与验证,下面对每个部分进行详细介绍:一、EDA工具使用在实习前,本人已经掌握了EDA工具的基本理论和使用方法,但在实际应用中还是遇到了一些问题,需要在公司的工程师的指导下逐步解决。
1. Cadence VirtuosoCadence Virtuoso是一个常用的集成电路设计软件,主要用于电路图的绘制和模拟仿真。
在实习期间,我主要使用了Cadence Virtuoso用于向特定厂商提交设计文件。
从设计前,需要确保Cadence Virtuoso已经被正确的配置。
在实习的前几天,负责我的导师帮助我完成了安装、配置和授权的过程,并为我提供了一些在线的参考材料,逐步的帮助我掌握了Cadence Virtuoso的使用。
2. Synopsys HSPICESynopsys HSPICE是一个数学仿真程序,主要用于模拟电路行为、验证电路可行性和进行优化。
在实习期间,我学会了如何使用该软件来验证和优化我设计的电路。
由于HSPICE掌握需要一定的数学和物理知识,并需要对仿真结果进行一定的分析才能准确地得到电路的性能参数,因此在实习的过程中,我也需要经常向导师请教。
二、电路设计与仿真在熟悉了EDA工具后,我开始进行电路设计和仿真,利用所学的理论知识,我着手设计了一个4位二进制计数器。
1. 4位二进制计数器设计该计数器是一个同步计数器,由四个触发器组成,由于需求较为简单,所以我只需要实现计数器的加法模块。
基于这个需求,我使用进位加法器首先完成了设计。
在完成设计后,我将设计文件上传到了Cadence Virtuoso中进行了电路图的绘制和仿真,验证了电路的正确性和稳定性。
2. 电路仿真仿真是设计过程中至关重要的一环,通过仿真可以有效地检验电路的性能表现。
在完成计数器设计后,我使用Synopsys HSPICE进行了电路仿真,并根据仿真结果对电路进行了优化,进一步提高其性能表现。
课程名称:通信系统集成电路设计实验名称:PN9序列与计数器的实现姓名:学号:班级:日期:XXXX年XX月XX日实验二PN9序列与计数器的实现一、实验目的1、了解伪随机序列的应用和产生原理、方法。
2、掌握在FPGA上利用线性反馈移位寄存器实现伪随机码发生器的方法。
3、通过波形仿真验证此实现方法的正确性和伪随机序列的周期性。
4、学会使用VHDL的结构化描述风格设计9~0的计数器。
二、实验环境1、Quartus II 9.1 (32-Bit)2、ModelSim-Altera 6.5a (Quartus II 9.1)3、Win2000操作系统三、实验要求1、PN9(a)利用VHDL语言编程实现伪随机码发生器的设计,在FPGA 内利用线性反馈移位寄存器结构实现伪随机码的产生;(b)将仿真结果dataout.txt文件中的数据导入matlab,统计伪随机序列的周期。
2、计数器采用VHDL结构化描述风格,编程实现9~0的十进制减法计数器。
四、实验内容1、PN9伪随机信号并非随机生成的信号,而是通过相对复杂的一定算法得出的有规律可循的变化信号,具有良好的随机性和接近于白噪声的相关函数,并且有预先的可确定性和可重复性。
这些特性使得伪随机序列得到了广泛的应用,常用于跳频通讯和加密通讯。
伪随机序列虽然不是真正的随机序列,但是当伪随机序列周期足够长时,它便具有随机序列的良好统计特性。
一个n级线性移位寄存器可以用n次多项式来表征,称以此式为特征多项式。
一般情况下,由n级移位寄存器组成的线性反馈电路所产生的序列周期不会超过2n-1。
下图为由n级具有线性反馈逻辑移存器所组成的码序列发生器的框图。
其中反馈系数C k的取值决定了反馈逻辑。
反馈逻辑可由特征多项式f(x)表示:f(x)=c0+c1x+c2x2+c3x3+……+c n x n,其中,n为移存器级数。
m序列:最长线性反馈移存器序列,是最常见和常用的一种伪随机序列,由具有线性反馈的移位寄存器产生的周期最长的序列。
通信课程设计实验总结一、教学目标通过本章的学习,学生将掌握通信原理的基本概念、通信系统的组成及其工作原理;学会分析通信系统的基本性能指标,并能运用通信原理解决实际问题。
具体目标如下:1.知识目标:•了解通信系统的定义、分类和性能指标。
•掌握模拟通信系统和数字通信系统的基本原理。
•熟悉信号与系统的基本概念,包括信号的分类、运算和变换。
•理解调制、解调、编码和解码等基本通信过程。
2.技能目标:•能够运用数学工具分析通信系统的信号和系统特性。
•能够运用通信原理分析和解决实际通信问题。
•学会使用通信实验设备,进行通信系统的仿真和实验。
3.情感态度价值观目标:•培养学生的科学思维和创新能力,提高学生对通信技术的兴趣。
•培养学生团队合作精神,学会与他人共同分析和解决问题。
•培养学生关注社会热点问题,提高学生将通信技术应用于实际问题的意识。
二、教学内容本章主要讲授通信原理的基本概念、通信系统的组成及其工作原理。
教学内容安排如下:1.第一节:通信系统概述•通信系统的定义、分类和性能指标。
•信号与系统的基本概念,包括信号的分类、运算和变换。
2.第二节:模拟通信系统•调制、解调的基本原理和过程。
•模拟通信系统的性能分析。
3.第三节:数字通信系统•数字通信系统的基本原理和过程。
•数字通信系统的性能分析。
4.第四节:通信系统的应用•通信系统在现代社会中的应用实例。
•通信技术的发展趋势。
三、教学方法本章采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:讲解通信原理的基本概念、通信系统的组成及其工作原理。
2.案例分析法:分析实际通信系统案例,让学生更好地理解通信原理的应用。
3.实验法:安排通信实验,让学生动手实践,巩固所学知识。
4.讨论法:学生分组讨论,培养学生的团队合作精神和科学思维能力。
四、教学资源为支持本章的教学内容和教学方法,我们将准备以下教学资源:1.教材:《通信原理》2.参考书:《信号与系统》、《数字信号处理》3.多媒体资料:通信系统原理讲解PPT、通信系统应用案例视频4.实验设备:通信实验装置、信号发生器、示波器等通过以上教学资源,为学生提供丰富的学习体验,提高学生的学习效果。
班级:XX姓名:XXX学号:XXXXXX指导老师:XXX实验日期:XXXX年XX月XX日一、实验目的1. 理解集成电路的基本组成和工作原理。
2. 掌握基本的集成电路设计方法,包括原理图设计、版图设计、仿真分析等。
3. 学习使用集成电路设计软件,如Cadence、LTspice等。
4. 通过实验加深对集成电路理论知识的理解,提高动手能力和问题解决能力。
二、实验内容本次实验主要包括以下内容:1. 原理图设计:使用Cadence软件绘制一个简单的CMOS反相器原理图。
2. 版图设计:根据原理图,使用Cadence软件进行版图设计,并生成GDSII文件。
3. 仿真分析:使用LTspice软件对设计的反相器进行仿真分析,测试其性能指标。
4. 版图与原理图匹配:使用Cadence软件进行版图与原理图的匹配,确保设计正确无误。
三、实验步骤1. 原理图设计:- 打开Cadence软件,选择原理图设计模块。
- 根据反相器原理,绘制相应的电路符号,包括NMOS和PMOS晶体管、电阻和电容等。
- 设置各个元件的参数,如晶体管的尺寸、电阻和电容的值等。
- 完成原理图设计后,保存文件。
2. 版图设计:- 打开Cadence软件,选择版图设计模块。
- 根据原理图,绘制晶体管、电阻和电容的版图。
- 设置版图规则,如最小线宽、最小间距等。
- 完成版图设计后,生成GDSII文件。
3. 仿真分析:- 打开LTspice软件,选择仿真模块。
- 将GDSII文件导入LTspice,生成对应的原理图。
- 设置仿真参数,如输入电压、仿真时间等。
- 运行仿真,观察反相器的输出波形、传输特性和功耗等性能指标。
4. 版图与原理图匹配:- 打开Cadence软件,选择版图与原理图匹配模块。
- 将原理图和版图导入匹配模块。
- 进行版图与原理图的匹配,检查是否存在错误或不一致之处。
- 修正错误,确保版图与原理图完全一致。
四、实验结果与分析1. 原理图设计:- 成功绘制了一个简单的CMOS反相器原理图,包括NMOS和PMOS晶体管、电阻和电容等元件。
集成电路设计实验报告院别:电信学院专业:电子科学与技术班级:\ 姓名:学号:\ 组序:52实验(一)题目名称:熟悉L-EDIT软件工具成绩:教师签名:批改时间:一、实验目的:学会使用集成电路版图设计L-EDIT软件工具,熟练画电路版图的操作指令和各种快捷命令,并熟悉应用特定工艺库即工艺文件来实现电路。
通过该实验,使学生掌握L-EDIT的设计方法,加深对课程知识的感性认识,增强学生的设计与综合分析能力,为将来成为优秀的后端工程师做准备。
二、实验要求:如将设计好的电路制成实际使用的集成块,就必须利用版图工具将设计的电路采用标准工艺文件转换成可以制造的版图。
然后再将版图提交给集成电路制造厂家(foundry),完成最后的集成块制造,所以画版图的本质就是画电路原理图。
在画版图时,首先要明白工艺文件的含义,每一种工艺文件代表一条工艺线所采用的光刻尺寸,以及前后各个工序等等;其次要懂得所使用的工具步骤及各个菜单及菜单栏的内容,以便熟练使用该软件;最后对所画版图进行验证,确保不发生错误。
此外,还必须了解所使用的版图设计法则,对于不同的工艺尺寸其法则有所不同,这就要求设计者在应用该软件时,必须熟悉相应的设计法则,为完成正确的版图做准备。
该实验原理是画常用的NMOS管,画图时要求熟悉NMOS的工艺过程及设计法则。
三、实验方法:熟悉L-EDIT版图软件工具及工艺库相关内容,熟练该软件工具菜单功能及使用方法。
以PMOS器件为例,在调用相应的工艺文件基础上,画元器件的物理实现版图(如选用几微米的工艺线、设计法则等),设计完成后运用该软件的设计规则对所画的版图进行DRC验证,并修改不正确的部分,直至设计无错误。
四、实验内容:1.安装L-EDIT仿真软件:先点击Daemon.exe文件,用虚拟光驱将.ISO文件载入,并点击L-EDIT的Setup.exe文件即可。
2.按照Crack方式注册该软件,并运行。
3.以MOSIS提供的morbn20.tdb工艺库为例,从ReadMe中可以了解许多信息:工艺提供制造商、工艺尺寸、设计规则及器件剖面图等。
一、实训目的通过本次通信系统实训,使学生对通信系统的基本原理、组成、工作过程及性能指标有更深入的了解,掌握通信系统的基本操作方法和实验技能,培养学生的动手能力和分析问题、解决问题的能力。
二、实训内容1. 实验一:通信系统基本模型与性能指标(1)实验目的:了解通信系统的基本模型,掌握通信系统的性能指标。
(2)实验内容:分析通信系统的基本模型,研究通信系统的性能指标,如误码率、信噪比、带宽等。
(3)实验步骤:① 研究通信系统的基本模型,分析其组成部分。
② 研究通信系统的性能指标,如误码率、信噪比、带宽等。
③ 比较不同通信系统的性能指标。
2. 实验二:模拟通信系统与数字通信系统(1)实验目的:了解模拟通信系统与数字通信系统的基本原理,掌握其特点和应用。
(2)实验内容:研究模拟通信系统与数字通信系统的基本原理,分析其特点和应用。
(3)实验步骤:① 研究模拟通信系统的基本原理,分析其特点。
② 研究数字通信系统的基本原理,分析其特点。
③ 比较模拟通信系统与数字通信系统的优缺点。
3. 实验三:无线通信系统(1)实验目的:了解无线通信系统的基本原理,掌握其工作过程。
(2)实验内容:研究无线通信系统的基本原理,分析其工作过程。
(3)实验步骤:① 研究无线通信系统的基本原理,分析其特点。
② 分析无线通信系统的工作过程,包括发射、传播、接收等环节。
③ 研究无线通信系统的关键技术,如调制、解调、编码、解码等。
4. 实验四:通信系统实验平台操作(1)实验目的:掌握通信系统实验平台的操作方法,提高实验技能。
(2)实验内容:学习通信系统实验平台的操作方法,进行实际操作。
(3)实验步骤:① 熟悉实验平台的结构和功能。
② 学习实验平台的操作方法,如连接设备、设置参数、观察波形等。
③ 进行实际操作,验证实验原理。
三、实训总结通过本次通信系统实训,我对通信系统的基本原理、组成、工作过程及性能指标有了更深入的了解。
以下是我对本次实训的总结:1. 通信系统的基本模型包括信源、信道、信宿等部分,性能指标有误码率、信噪比、带宽等。
通信系统实验报告第一点:实验背景与目的通信系统作为现代社会信息交流的重要基础,其稳定性和高效性直接关系到人们的日常生活和工作。
随着科技的快速发展,通信系统也在不断更新和升级,为了适应日益增长的信息传输需求,提高通信系统的性能和可靠性,本实验报告围绕通信系统的相关理论和实践展开。
本次实验的主要目的是让实验者深入了解通信系统的基本原理和工作机制,通过实际操作和观察,掌握通信系统的性能评估方法,并能够针对实际问题进行分析和解决。
通过实验,实验者能够更好地理解通信系统在现代社会中的重要性和应用价值,提高实验者对通信系统的兴趣和热情。
第二点:实验原理与方法通信系统实验基于一定的原理和方法进行,以下是实验中涉及的主要原理和方法:1.通信系统模型:通信系统主要由发送端、传输介质、接收端组成。
发送端将信息进行编码和调制,通过传输介质发送给接收端,接收端对接收到的信号进行解调和解码,恢复出原始信息。
2.信号调制与解调:调制是将基带信号转换为适合在传输介质上传播的信号的过程,解调则是将接收到的信号转换回基带信号的过程。
常用的调制方法有幅度调制、频率调制和相位调制等,解调方法有同步解调、平方解调等。
3.信号编码与解码:编码是将信息转换为适合传输的信号的过程,解码是将接收到的信号转换回原始信息的过程。
常用的编码方法有脉冲编码调制(PCM)、差分脉冲编码调制(DPCM)等。
4.信号滤波与噪声分析:信号滤波是为了去除传输过程中的噪声和干扰,提高信号质量。
噪声分析则是通过对信号的统计特性进行分析,评估通信系统的性能。
5.通信系统性能评估:通过模拟实验,可以对通信系统的误码率、信噪比、传输速率等性能指标进行评估。
常用的评估方法有误码率计算、信噪比计算等。
在实验过程中,实验者需要根据实验要求搭建通信系统实验平台,进行实际的信号传输和处理,观察实验结果,并根据实验数据进行分析和讨论。
通过实验,实验者能够深入理解通信系统的原理和方法,提高实验者的实验技能和科学研究能力。
20 13 -20 14 学年第 1 学期实 验 报 告实验课程名称 通信系统设计专 业 班 级 通信1104学 生 学 号 31102141学 生 姓 名 朱宝森实验指导教师 戚伟编号:基于单片机的多机通信系统设计学号31102141 姓名朱宝森同组同学1:学号姓名【摘要】本次实验我要完成任务的是以stc12c5a60s2单片机为核心,设计一个无线收发通信系统。
1 实验目的:随着单片机技术的不断发展,单片机的应用已经从单机向多机互联化方向发展。
单片机在实时数据采集和数据处理方面,有着成本低、能满足一般要求、开发周期短等优点,其在智能家居、计算机的网络通信与数据传输、工业控制自动化等方面有着广泛的应用。
本次我们所要设计的系统是以stc12c5a60s2单片机为核心,设计一个多机通信系统。
他所需要完成的功能是需要能够实现单片机之间的串口通信以及能够实现单片机之间的无线通信。
最后进过调试完成我们的通信系统。
2 系统总体方案设计介绍2.1系统框架介绍本系统为基于51单片机的多机红外无线通信系统,由一个51单片机模块、一个液晶显示屏、红外接收模块以及通信串口等模块组成组成。
其中单片机作为主机,负责接收来自红外接收模块以及通信串口模块的的数据进过处理后显示在液晶显示屏上。
下图为整个系统各模块的关系框架图:无线模块+红外接收模块———单片机模块———液晶显示模块2.2多机通信原理介绍在多机通信系统中,要保证主机与从机间可靠的通信,必须要让通信接口具有识别功能,51单片机串行口控制寄存器SCON中的控制位SM2正是为了满足这一要求而设置的。
当串行口以方式2或方式3工作时,发送或接收的每一帧信息都是11位的,其中除了包含SBUF寄存器传送的8位数据之外,还包含一个可编程的第9位数据TB8或RB8。
主机可以通过对TB8赋予1或0,来区别发送的是数据帧还是地址帧。
根据串行口接收有效条件可知,若从机的SCON控制位SM2为1,则当接收的是地址帧时,接收数据将被装入SBUF并将RI标志置1,向CPU发送中断请求;若接收的是数据帧时,则不会产生中断标志,信息将被丢弃。
TPE-GP4高频4综合实验箱指导书(天大)集成电路(压控振荡器)构成的频率调制器于I0为恒流源,V7线性斜升,升至VSP时V0跳变为高电平,V0高电平时控制S2闭合,S1断开,恒流源I0全部流入A支路,即I6=I0,于电流转发器的特性,B支路电流I7应等于I6,所以I7=I0,该电流C放电电流提供,因此V7线性斜降,V7降至VSM时V0跳变为低电平,如此周而复始循环下去,I7及V0波形如图9-2。
566输出的方波及三角波的载波频率(或称中心频率)可用外加电阻R和外加电容C来确定。
f(V8V5)RCV8(Hz)其中: R 为时基电阻 C 为时基电容V8 是566管脚⑧至地的电压V5 是566管脚⑤至地的电压五、实验内容及步骤图2实验电路见图3+5V-5VC1201L1201GNDGNDGNDU1201-8P1211C1204P1210U120 1-12200P12JP1201SW1201R1207R1208C1203U1201-1L1203GN DMP1201P1201OUT1P1202OUT2MP1202MP1234566U1XX765R120 1R1203Rp12 图3 566构成的调频器321 40集成电路(压控振荡器)构成的频率调制器1. 按图接线,观察R、C1204对频率的影响(其中R=R1203+RP1201)1)短接JP1201,将C1204接入566管脚⑦,短接JP1202的1-2端,使RP1202及C1205接至566管脚⑤;接通电源(±5V)。
2)调Rp1202,使566⑤脚电压V5=,将频率计接至M1201,改变RP1201, 观察方波输出信号频率,记录当R为最大和最小值时的输出频率。
当R分别为Rmax和Rmin及C1=2200时,计算这二种情况下的频率,并与实际测量值进行比较。
用双踪示波器观察并记录R=Rmin时方波及三角波的输出波形。
2. 观察输入电压对输出频率的影响1)直流电压控制:先调RP1201至最大,然后改变RP1202调整输入电压,测当V5在~变化时输出频率f 的变化,V5按递增。
简单分组码的编译器的实现一、实验目的1、了解分组码尤其是循环码的基本原理。
2、实现简单汉明码(7,4,3)的编码器电路。
3、实现简单汉明码(7,4,3)的译码器电路。
二、实验环境1、Quartus II 9.1 (32-Bit)2、ModelSim-Altera 6.5a (Quartus II 9.1)3、Win2000操作系统三、实验要求本次设计主要实现(7,4,3)汉明码的编码和译码,其中要编译的码字由m 序列产生。
四、实验内容1、分组码分组码定义:将信源的信息序列按照独立的分组进行处理和编码,称为分组码。
编码时将每k个信息位分为一组进行独立处理,变换成长度为n(n>k)的二进制码组。
分组码一般用符号(n,k)表示,其中n是码组的总位数,又称为码组的长度(码长),k是码组中信息码元的数目,n–k= r 为码组中的监督码元数目。
分组码的监督码元是根据一定的规则,由本组的信息码元经过变换得到的。
变换规则不同,得到的分组码也就不同。
如果在某一种分组码中,监督码元和信息码元之间的关系是用线性方程联系起来的,或者说它们之间满足线性变换关系,称这种分组码为线性分组码。
2、汉明码汉明码(Hamming Code)是纠错编码中的一种,由Bell实验室的汉明(R.W.Hamming)提出,当计算机存储或移动数据时,可能会产生数据位错误,这时可以利用汉明码来检测并纠错,简单的说,汉明码是一个错误校验码码集,一种能纠正单个随机错误的线性分组码,用以改善计算机和数字信道通信安全性和可靠性的一种信号处理方法。
目前汉明码已经广泛应用于对计算机的主存储器、只读存储器和数字通信系统的数据进行校验,它可实现纠正单错、检出双错的功能。
很多情况下,需要将采集的数据信息通过无线电传输到工作站,为了避免在信号传输过程中受到外界的影响导致信号失真,有必要采取一种码制对其进行检查和纠错。
而汉明码是目前比较成熟和具有一定纠错能力的码制。
2.1(7,4,3)汉明码的编码原理汉明码无法实现2位或2位以上的纠错,汉明码只能实现一位纠错。
(7,4,3)汉明码有以下特点:对于任一整数m ,m≥3;监督码元数目:r=m ;码长: n=2m -1;信息码元数目:k=2m -1-m ;最小距离: d min =3;纠错能力: t=1;根据设计需要,本设计采用(7,4,3)汉明码,其生成矩阵G 和监督矩阵H 如下:G=1101000101010001100101110001 H= 100110101010110010111 根据生成矩阵,输出码字可按下式计算:b=(a 3,a 2,a 1,a 0)∙G=(a 3,a 2,a 1,a 0) ∙ G=1101000101010001100101110001 所以有信息位 b 6=a 3 监督位 b 2=a 3⊕a 2⊕a 1b 5=a 2 b 1=a 3⊕a 2⊕a 0b 4=a 1 b 0=a 3⊕a 1⊕a 0b 3=a 0由以上关系可得,(7,4,3)汉明码的全部码字如下表1所示:表1 (7,4,3)汉明码的全部码字2.2(7,4,3)汉明码的译码原理设发送码组A=[a n-1,a n-2,……,a 1,a 0];在传输过程中可能发生误码。
接收码组B=[b n-1,b n-2,……,b 1,b 0],收发码组之差定义为错误图样,即E=B-A 。
由伴随式或校正子定义:S=EH T =(e 6,e 5,e 4,e 3,e 2,e 1,e 0)001101101011010111 = 034613562456e e e e e e e e e e e e +++++++++ = 012s s s上述(7,4,3)汉明码的伴随式与错误图样的对应关系如下表2所示:表2 (7,4,3)汉明码伴随式与错误图样的对应关系3、循环码循环码是一类重要的线性分组码,它有许多特殊的代数性质。
由于这种性质便于用代数理论来研究,有助于按照所要求的纠错能力系统地构造这类码,从而可以简化译码方法,使得循环码的编、译电路比较简单,因此得到了广泛的应用。
循环码不仅可以纠正独立的随机错误,也可以纠正突发错误。
循环码是一种线性分组码,其组成与分组码相同,它的前k 位是信息码元,后r 位是监督码元。
它除了具有线性分组码的封闭性之外,还具有循环型。
所谓循环性是指:循环码中任一许用码字经过循环移位之后,得到的码字(码组)仍为一许用码组。
(7,4,3)汉明码既是线性分组码,也是循环码。
4、m 序列产生原理二进制伪随机序列一般是通过移位寄存器加反馈电路共同来产生的。
这种反馈移位寄存器可分为线性反馈和非线性反馈移位寄存器两种。
其中,由线性反馈移位寄存器产生的周期最长的二进制数字序列叫做最大长度线性反馈移位寄存器序列,也称m序列。
m序列的性质主要表现为均衡性、游程特性、移位相加特性、相关特性等。
本次设计采用长度为15的m序列,由4级移位寄存器构成,特征多项式为f(x)=x4+x3+1,其产生电路逻辑框图如图1所示。
四级移存器的所有可能状态为24=16种,0000,0001,0010,0011,0100,0101,0110,0111,1000,1001,1010,1011,1100, 1101,1110,1111。
其中全0状态在m序列中是被禁止的。
在时钟脉冲的作用下移存器的状态不断变化,D4为此m序列的输出,D1、D2、,D3是移存器的状态。
可以知道,从CP=0到CP=15是一个周期,在第15个时钟脉冲时移存器的状态又回到初始状态。
程序中设定初始值为0001。
图1 15位m序列电路编辑图五、实验步骤与结果1、编码器程序设计首先,编码器输入端接收到4位信息码元,输出7位汉明码,根据编码流程图来编写代码。
图2 汉明码编码流程图具体的算法实现:HAMOUT(6 DOWNTO 3) <= DATAIN(3 DOWNTO 0);HAMOUT(2) <= (DATAIN(3) XOR DATAIN(2)) XOR DATAIN(1);HAMOUT(1) <= (DATAIN(3) XOR DATAIN(2)) XOR DATAIN(0);HAMOUT(0) <= (DATAIN(3) XOR DATAIN(1)) XOR DATAIN(0);2、译码器程序设计译码器输入端接收到7位信息码元,输出4位纠错后的编码,同时输出出错码元的位置,根据译码流程图来编写代码。
图3 汉明码译码流程图首先输入7位汉明码,然后根据这7位码来计算校正子s2s1s0的值,可知校正子S与(7,4,3)汉明码各位之间的关系,即编写的程序为:SS(2) := INFO_B(6) XOR INFO_B(5) XOR INFO_B(3) XOR INFO_B(2);SS(1) := INFO_B(6) XOR INFO_B(5) XOR INFO_B(3) XOR INFO_B(1);SS(0) := INFO_B(6) XOR INFO_B(4) XOR INFO_B(3) XOR INFO_B(0);然后判定校正子与0的关系,使用if语句,若等于0,则表示没有错误;若不等于0,则表示其中一位出错。
编写程序如下:WHEN "001" => BB(0) := NOT BB(0);LOC_ERR <= "000";WHEN "010" => BB(1) := NOT BB(1); LOC_ERR <= "001";WHEN "100" => BB(2) := NOT BB(2); LOC_ERR <= "010";WHEN "011" => BB(3) := NOT BB(3); LOC_ERR <= "011";WHEN "101" => BB(4) := NOT BB(4); LOC_ERR <= "100";WHEN "110" => BB(5) := NOT BB(5); LOC_ERR <= "101";WHEN "111" => BB(6) := NOT BB(6); LOC_ERR <= "110";WHEN OTHERS => LOC_ERR <= "111";上述程序中,BB是变量,存放的是输入7位汉明码a6a5a4a3a2a1a0,当=S"001",时,表示a0出错,则只需将这一位的值取反,然后再送给输出。
a1、a2、a3、a4、a5、a6出错的原理也是一样的。
最后,将没有错误的(7,4)汉明码或已经纠正1个错误的(7,4)汉明码输出,这样译码程序就完成了。
3、编译码器程序仿真由图可知,编译码输出符合设计原理,程序正确。
六、实验感想本次实验的题目是用VHDL实现(7,4)汉明码的编码与译码,对通信系统进行编码与译码的作用是提高传输的可靠性。
本次设计主要用到的模块有m序列发生器,(7,4)汉明码的编码和(7,4)汉明码的译码。
整个设计通过硬件描述语言VHDL对各个模块进行编译、仿真,由m序列发生器产生m序列作为编码与译码的信源,通过这次的课程设计,我对VHDL语言有了新的认识,掌握了用VHDL语言编程的方法,并且能够熟练的运用它去编写各种各样的程序,为以后能够从事这方面的工作提供了一定的基础。
在掌握VHDL语言的基础上,进一步理解了(7,4)汉明码的编解码原理以及一些重要的公式。
附录1 汉明码(I)编码:LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;USE IEEE.STD_LOGIC_ARITH.ALL ;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY hamming_co ISPORT(DATAIN: IN STD_LOGIC_VECTOR(3 DOWNTO 0);HAMOUT: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);CLR1,CLK1 : IN STD_LOGIC);END hamming_co;ARCHITECTURE RTL1 OF hamming_co ISBEGINHAMOUT(6 DOWNTO 3) <= DATAIN(3 DOWNTO 0);HAMOUT(2) <= (DATAIN(3) XOR DATAIN(2)) XOR DA TAIN(1);HAMOUT(1) <= (DATAIN(3) XOR DATAIN(2)) XOR DA TAIN(0);HAMOUT(0) <= (DATAIN(3) XOR DATAIN(1)) XOR DA TAIN(0); END RTL1;(II)译码LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;USE IEEE.STD_LOGIC_ARITH.ALL ;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY hamming_deco ISPORT(CLK2,CLR2 : IN STD_LOGIC;INFO_B : IN STD_LOGIC_VECTOR(6 DOWNTO 0);LOC_ERR : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);INFO_A :OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END hamming_deco;ARCHITECTURE BHV2 OF hamming_deco ISSIGNAL BBB : STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL BBB1: STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL TEMP3: STD_LOGIC;BEGINPROCESS(INFO_B)V ARIABLE SS : STD_LOGIC_VECTOR(2 DOWNTO 0);V ARIABLE BB : STD_LOGIC_VECTOR(6 DOWNTO 0);BEGINSS(2) := INFO_B(6) XOR INFO_B(5) XOR INFO_B(3) XOR INFO_B(2);SS(1) := INFO_B(6) XOR INFO_B(5) XOR INFO_B(3) XOR INFO_B(1);SS(0) := INFO_B(6) XOR INFO_B(4) XOR INFO_B(3) XOR INFO_B(0);BB := INFO_B;IF(SS > "000")THENCASE SS IS ----纠1位错码WHEN "001" => BB(0) := NOT BB(0);LOC_ERR <= "000";WHEN "010" => BB(1) := NOT BB(1);LOC_ERR <= "001";WHEN "100" => BB(2) := NOT BB(2);LOC_ERR <= "010";WHEN "011" => BB(3) := NOT BB(3);LOC_ERR <= "011";WHEN "101" => BB(4) := NOT BB(4);LOC_ERR <= "100";WHEN "110" => BB(5) := NOT BB(5);LOC_ERR <= "101";WHEN "111" => BB(6) := NOT BB(6);LOC_ERR <= "110";WHEN OTHERS => LOC_ERR <= "111";END CASE;ELSEINFO_A <= INFO_B(6 DOWNTO 3);END IF;INFO_A <= BB(6 DOWNTO 3);END PROCESS;END BHV2;2、PN4LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY pn4 ISGENERIC(LENGTH:POSITIVE := 3);PORT(CLK0,CLR0:IN STD_LOGIC;DATAOUT1: OUT STD_LOGIC;DATAOUT2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END pn4;ARCHITECTURE BHV1 OF pn4 ISSIGNAL PRREG:STD_LOGIC_VECTOR(LENGTH DOWNTO 0);BEGINPRREG <= (0=> '1',OTHERS => '0')WHEN CLR0 = '1'ELSE(PRREG((LENGTH-1)DOWNTO 0)&(PRREG(3) XOR PRREG(0)))WHEN CLK0'EVENT AND CLK0 = '1'ELSE PRREG;DA TAOUT1 <= PRREG(0);DA TAOUT2 <= PRREG;END BHV1;(II)测试程序TB-MLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY tb_m ISEND tb_m;ARCHITECTURE bhv OF pn4 ISCOMPONENT pn4PORT( CLK0,CLR0: IN STD_LOGIC;DATAOUT1 : OUT STD_LOGIC;DATAOUT2 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END COMPONENT;SIGNAL CLK:STD_LOGIC := '1';SIGNAL CLR:STD_LOGIC := '1';SIGNAL DATAOUT11: STD_LOGIC := '1';SIGNAL DATAOUT22: STD_LOGIC_VECTOR(3 DOWNTO 0) := "0001";BEGINi1:pn4 PORT MAP(CLK,CLR,DA TAOUT11,DA TAOUT22);CLR <= '0' AFTER 200 NS;CLK <= NOT CLK AFTER 10 NS;END bhv;3、汉明码编、译码顶层文件模块程序:LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;USE IEEE.STD_LOGIC_ARITH.ALL ;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY hamming_code ISPORT(CLK,CLR:IN STD_LOGIC;DA TAOUT :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);INFO :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);INFO_CODE :OUT STD_LOGIC_VECTOR(6 DOWNTO 0);LOC_ERR:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END hamming_code;ARCHITECTURE STR OF hamming_code ISCOMPONENT pn4 ISPORT(CLK0,CLR0:IN STD_LOGIC;DATAOUT1:OUT STD_LOGIC;DATAOUT2:OUT STD_LOGIC_vector(3 DOWNTO 0));END COMPONENT;COMPONENT hamming_co ISPORT(CLR1,CLK1 : IN STD_LOGIC;DATAIN: IN STD_LOGIC_VECTOR(3 DOWNTO 0);HAMOUT: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END COMPONENT;COMPONENT hamming_deco ISPORT(CLK2,CLR2 : IN STD_LOGIC;INFO_B : IN STD_LOGIC_VECTOR(6 DOWNTO 0);LOC_ERR : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);INFO_A :OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;SIGNAL L0 : STD_LOGIC;SIGNAL L1,L2 : STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL L3 : STD_LOGIC_VECTOR(6 DOWNTO 0);FOR U0 : pn4 USE ENTITY WORK.pn4(BHV1);FOR U1 : hamming_co USE ENTITY WORK.hamming_co(RTL1);FOR U2 : hamming_deco USE ENTITY WORK.hamming_deco(BHV2);BEGINU0: pn4PORT MAP(CLK0 => CLK,CLR0 => CLR,DA TAOUT1 => L0,DATAOUT2 => L1);U1: hamming_coPORT MAP(CLK1 => CLK,CLR1 => CLR,DA TAIN => L1,HAMOUT => L3);U2: hamming_decoPORT MAP(CLK2 => CLK,CLR2 => CLR,INFO_B => L3,LOC_ERR => LOC_ERR,INFO_A => L2);INFO <= L1;INFO_CODE <= L3;DA TAOUT <= L2;END STR;(II)测试程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TB ISEND TB;ARCHITECTURE BHV3 OF TB ISSIGNAL CLK,CLR : STD_LOGIC := '1';SIGNAL DATAOUT : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0001";SIGNAL INFO : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0001";SIGNAL INFO_CODE : STD_LOGIC_VECTOR(6 DOWNTO 0) := "0001011";SIGNAL LOC_ERR : STD_LOGIC_VECTOR(2 DOWNTO 0) := "111";COMPONENT hamming_codePORT(CLK,CLR:IN STD_LOGIC;DA TAOUT :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);INFO :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);INFO_CODE :OUT STD_LOGIC_VECTOR(6 DOWNTO 0);LOC_ERR:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END COMPONENT;BEGINPROCESSBEGINWAIT FOR 50 NS;CLK <= NOT CLK;END PROCESS;CLR <= '0' AFTER 200 NS;I1:hamming_code PORT MAP(CLK,CLR,DATAOUT,INFO,INFO_CODE,LOC_ERR); END BHV3;。