1、海明码生成与校验电路的设计1目 录第1章 总体设计方案 11.1 设计原理 11.2 设计思路 11.3 设计环境 2第2章 详细设计方案 42.1 顶层方案图的设计与实现 42.1.1创建顶层图形设计文件 42.1.2器件的选择与引脚锁定 62.2 功能模块的设计与实现 72.2.1海明码SHENGCHENG模块的设计与实现 72.2.2海明码ERROR模块的设计与实现 7 2.2.3海明码JIAOYAN模块的设计与实现93.1 编程下载 133.2 硬件测试及结果分析 13参考文献 14附 录(程序清单或电路原理图) 15第1章 总体设计方案1.1 设计原理海明校验码是在数据中加入几个校验
2、位,并把数据的每一个二进制位分配在几个奇偶校验组中。当某一位出错后,就会引起有关的几个校验组的值发生变化,这不但可以发现出错,还能指出是哪一位出错,为自动纠错提供了证据。海明码能检测出2位错误,并能纠正1位错误。(1)数据位和校验位的关系假设校验位的个数为r,则它能表示2r个信息,用其中的一个信息指出“没有错误”,其余的2r-1个信息指出错误发生在哪一位。然而错误也可能发生在校验位,因此只有k=2r-1-r个信息能用于纠正被传送数据的位数,也就是说要满足关系:2r=k+r+1 (发现一位错) 2r-1=k+r (发现与自动校正一位错,并发现两位错)数据位与校验位的对应关系K值 最小的r值 14
3、 5111226 2757 58120 4 5 6 7 8(2)海明码的编码规律若海明码的最高位号为m,最低位号为1,即HmHm-1H2H1,则海明码的编码规律通常是:a.校验位与数据位之和为m,每个校验位Pi在海明码中被分在2i-1的位置,其余各位为数据位,并按从低向高逐位依次排列的关系分配各数据位。b.海明码的每一位Hi(包含数据位和校验位本身)由多个校验位校验,其关系是被校验的每一位位号要等于校验它的各校验位的位号之和。这样安排的目的,是希望校验的结果能正确反映出出错位的位号。1.2 设计思路(一)海明码的生成:上述规律讨论一个字节的海明码。每个字节由8个二进制位组成,此处的k为8,按照
4、数据位和校验位的对应关系,r应为5,由于总校验位只是检测两位出错还是一位出错,因此设计时不必考虑它的值,设r为4,故海明码的总位数为12,可表示为: H12H11H3H2H1, 4个校验位P4P1对应的海明码位号分别为:H8,H4,H2,H1。其余为数据位Di,则有如下排列关系: D8D7D6D5P4D4D3D2P3D1P2P1每个海明码的位号要等于参与校验它的几个校验位的位号之和,因此得出如下的表格: 出错的海明码位号和校验位位号的关系海明码位号数据位/校验位参与校验的校验位位号被校验位的海明码位号=校验位位号之和H1P111=1 H2P222=2H3D11,23=1+2H4P344=4H5
5、D21,45=1+4H6D32,46=2+4H7D41,2,47=1+2+4H8P488=8H9D51,89=1+8H10D62,810=2+8H11D71,2,811=1+2+8H12D84,812=4+8P1=D1D2D4D5D7P2=D1D3D4D6D7P3=D2D3D4D8P4=D5D6D7D8在这种安排中,每一位数据位,都至少出现3个Pi值的形成关系中,当任一位数据码发生变化时,必将引起3个或4个Pi值跟着变化,该海明码的码距为4。(二)海明码的校验:海明码校验函数(S函数)及校验过程S1=P1D1D2D4D5D7S2=P2D1D3D4D6D7S3=P3D2D3D4D8S4=P4D5
6、D6D7D81.3 设计环境硬件环境:伟福COP2000型计算机组成原理实验仪、XCV200实验板、微机;EDA环境:Xilinx foundation f3.1设计软件、COP2000仿真软件。图1.1 Xilinx foundation f3.1设计平台第2章 详细设计方案2.1 顶层方案图的设计与实现顶层方案图实现海明码的生成与校验逻辑功能,采用原理图设计输入方式完成,电路实现基于XCV200可编程逻辑芯片。在完成原理图的功能设计后,把输入/输出信号安排到XCV200指定的引脚上去,实现芯片的引脚锁定。2.1.1创建顶层图形设计文件顶层图形文件主要由一个SHENGCHENG元件,ERRO
7、R元件和JIAOYAN元件模块组装而成的一个完整的设计实体。顶层图形文件结构如图所示。图2.1 SHENGCHENG模块图2.2 ERROR模块图2.3 JIAOYAN模块2.1.2器件的选择与引脚锁定(1)器件的选择由于硬件设计环境是基于伟福COP2000型计算机组成原理实验仪和XCV200实验板,故采用的目标芯片为Xlinx XCV200可编程逻辑芯片。(2)引脚锁定把顶层图形文件中的输入/输出信号安排到Xlinx XCV200芯片指定的引脚上去,实现芯片的引脚锁定。图形文件中的输入/输出信号XCV200芯片引脚信号ID1P103ID2P102ID3P101ID4P100ID5P97ID6
8、P96ID7P95ID8P94K1P87K2P86K3P85OD1P110OD2P111OD3P203OD4P185OD5P184OD6P178OD7P152OD8P147OH1P125OH2P124OH3P109OH4P108OH5P107OH6P99OH7P93OH8P78OH9P223OH10P222OH11P221OH12P2202.2 功能模块的设计与实现海明码生成与校验设计电路是由2个模块组成,其中SHENGCHENG模块是由8个输入端输入海明码的8位数据位,经异或门求得校验位P1,P2,P3,P4,由此输出12位海明码;JIAOYAN模块是由三八译码器来改变输入数据的正确性,从而
9、实现海明码校验的功能。2.2.1shengcheng模块的设计与实现(1)元件的内部结构海明码生成模块,原理是通过输入的数据ID1ID8按照公式:P1=D1D2D4D5D7,P2=D1D3D4D6D7,P3=D2D3D4D8,P4=D5D6D7D8,生成了4位校验码P1P4,得出了12位海明码。图2.4 SHENGCHENG模块内部电路(2)功能仿真对创建的SHENGCHENG元件进行功能仿真,验证其功能的正确性。图2.5 SHENGCHENG模块仿真结果分析:输入D1-D8为10011001,输出H1-H12为101000101001,结果是正确的海明码。2.2.2 ERROR模块的设计与实
10、现(1)元件的内部结构原理是通过3线8线译码器选择性的对8位输入数据的一位取反,得出一组错误的数据,然后送与校验模块进行校验。图2.6 ERROR模块内部电路(2)功能仿真对创建的ERROR元件进行功能仿真,验证其功能的正确性图2.7 ERROR模块仿真结果分析:输入K1-K3为000,输入D1-D8为10011001,输出H3、H5、H6、H7、H9、H10、H11、H12为00011001,3线8线译码器使数据的第一位取反。2.2.3 JIAOYAN模块的设计与实现(1)元件的内部结构原理是通过S1=P1D1D2D4D5D7,S2=P2D1D3D4D6D7,S3=P3D2D3D4D8,S4
11、=P4D5D6D7D8,连成的电路对数据进行校验,判断数据是那一位出错,并对出错的那一位取反,得出正确的数据。图2.8 JIAOYAN模块内部电路(2)功能仿真对创建的JIAOYAN元件进行功能仿真,验证其功能的正确性图2.9 JIAOYAN模块仿真2.3 仿真调试仿真调试主要验证设计电路逻辑功能、时序的正确性,这里采用输入8位数据位生成12位海明码,并经三八译码器来故意输错一位海明码,经校验电路来进行修改,从而输出正确的8位数据位.仿真调试时采用两组数据:D1D8第一组数据10011001第二组数据10000001(1)建立仿真波形文件及仿真信号选择功能仿真时,输入数据位采用了两组数据。其中
12、前半部分为第一组数据,D1D8为10011001,生成的海明码H12H1为100010001111。后半部分为第二组数据,D1D8为10000001,生成的海明码H12H1为100010001111。其中这两组数据又经三八译码器变为有一位错的数据输入到校验电路里,经校验后输出正确的数据位,从而实现了海明码生成和校验的整个功能。(2)功能仿真结果与分析功能仿真波形结果如图2.2所示,仿真数据结果如表2.3所示。对表2.3与表1.1的内容进行对比,可以看出功能仿真结果是正确的,进而说明电路设计的正确性。表2。3:输入数据8位数据(ID1ID8)3线8线译码器输入(K1K3)输出海明码(OH1OH1
13、2)输出校验后的数据(OD1OD8)10011001000101000101001100110011000000110011110001000110000001图2.10 第一组数据功能仿真波形结果图2.11 第二组数据功能仿真波形结果第3章 编程下载与硬件测试3.1 编程下载利用Xilinx ISE的编程下载功能,将得到的*.bin文件下载到XCV200实验板的XCV200可编程逻辑芯片中。3.2 硬件测试及结果分析利用XCV200实验板进行硬件功能测试。海明码数据位的输入数据通过XCV200实验板的输入开关实现,输出数据通过XCV200实验板的LED指示灯和七段数码管实现,其对应关系如表3
14、.1所示。表3.1 XCV200实验板信号对应关系XCV200芯片引脚信号XCV200实验板ID1 K0ID2K0ID3K0ID4 K0ID5K0ID6K0ID7K0ID8K0KAK1KBK1KCK1 OD1OD8LEDA OH1OH8LEDB OH9OH12七段数码管S0利用输入参数作为输入数据,逐个测试输出结果,即用XCV200实验板的开关K0、K1输入数据,同时观察LEDA和LEDB,及七段数码管D0的输出,得到如表3.2所示的硬件测试结果。表3.2 硬件测试结果输 入 信 号输 出 信 号K1 K0LEDALEDB数码管S00001001100110011001010001010900
15、11000000110000001100011108图3.1 第一组数据cop2000仿真下载结果结果分析:输入K1-K3为000,输入ID1-ID8为10011001,输出A0-A7为10011001对应OD1-OD8,输出B0-B7为10100010对应OH1-OH8,输出SO为09化为二进制为1001对应 OH12-OH9。 图3.2 第二组数据cop2000仿真下载结果结果分析:输入K1-K3为001,输入ID1-ID8为10000001,输出A0-A7为10000001对应OD1-OD8,输出B0-B7为11110001对应OH1-OH8,输出SO为08化为二制为1000对应OH12
16、-OH9。参考文献1 白中英,计算机组成原理(第三版)。北京:科学出版社,20002 王爱英.计算机组成与结构(第4版)M.北京:清华大学出版社,2006附 录(程序清单或电路原理图)总电路原理图课程设计总结: 在做课程设计过程中,我遇到了很多问题和困难。例如在第一画逻辑图时仿真的结果不完全正确,后来检查出是其中的线路有连接重复或连错的现象,经修改实现了电路的仿真。第二是在下载到电路板时,原因是COP只能识别XCV2004PQ240的工程,而我的工程是XCV4004PQ240,所以下载时出错,把工程改为XCV2004PQ240后下载成功。课设的目的是实现了海明码的生成与校验功能,成功地实现了对
17、输入八位数据生成12位海明码,以及输入一位错的海明码,对其进行校验生成正确的海明码的功能。通过本次课设,不仅增强了自己对信息的搜集与应用能力,增加了自己的计算机硬件知识,也培养了自己对计算机硬件的兴趣。虽然在设计过程中遇到了许多困难和问题,但解决后也同时给自己带来了喜悦和成功感,这更让我对组原产生了兴趣。在电路设计过程中自己独立思考,独立完成电路设计和连接,使自己的独立思考能力得到了很大的提高。课程设计过程中遇到了一些问题,在指导老师的耐心帮助下均得到了解决。在课程设计过程中自己逐渐意识到,做好一个项目不仅仅需要渊博的知识做基础,更要有一定的耐心和毅力。指导教师评语:指导教师(签字): 年 月 日课程设计成绩