海明码生成与校验电路的设计
计算机组成原理实验报告-汉字编码与校验设计实验

实验一汉字编码与校验设计实验一、实验目的本实训将帮助同学们巩固对计算机中数据表示方法的理解,要求能设计汉字国标码与区位码之间的转换电路,能批量获取汉字机内码并用点阵形式进行显示。
通过设计16 位数据的海明编解码电路,16 位数据的CRC 并行编解码电路,帮助同学们理解校验码传输过程。
通过校验码流水传输实验帮助大家提前建立流水线的基本概念二、实验原理、内容与步骤实验原理、实验内容参考:1、汉字编码原理1)机内码与区位码区位码转换为十六进制+2020H得到国标码,国标码+8080H得到机内码。
区位码(十六进制)+A0A0H=机内码机内码-A0A0H=区位码(十六进制)2)存储器数据编辑使用实验里附带的十六进制编辑器,在使用ASCII码保存的记事本编辑,记得得到。
2、汉字编码电路设计国标转区位码汉字显示3、海明编码原理与设计1)编码原理若有效消息b1b2b3b4=1011,则先将它分别填入第3,5,6,7位,再分组进行奇偶统计,分别填入校验位P1,P2,P3的值。
这里分组采用偶校验,因此,要保证3组校验位的取值都满足偶校验规则。
各校验码的取值如下:P1=H3⊕H5⊕H7=b1⊕b2⊕b4=1⊕0⊕1=0P2=H3⊕H6⊕H7=b1⊕b3⊕b4=1⊕1⊕1=1P3=H5⊕H6⊕H7=b2⊕b3⊕b4=0⊕1⊕1=0这样就得到了海明码2)分组原理在海明码H1~Hn中,位号数(1,2,3,。
,n)为2的权值的那些位,即1(20),2,4,。
,2r-1位,作为奇偶校验码,并记作P1,P2,P3,。
,P r,余下各位则为有效信息位。
与N=11,k=7,r=4相应海明码可示意为位号 1 2 3 4 5 6 7 8 9 10 11P i占位P1P2 b1 P3 b2 b3 b4 P4 b5 b6 b7其中,b i均为有效信息。
3)校验位逻辑与电路设计海明编码4、海明解码原理与设计1)检错码原理与作用海明编码在解码过程中,被分作3组校验,每组可产生一个检错消息,3组共3个检错消息便可构成一个指错字,由G3 G2 G1组成,其中G3=P3⊕b2⊕b3⊕b4,G2=P2⊕b1⊕b3⊕b4,G1=P3⊕b1⊕b2⊕b4,3个指错字共表示8种状态,在没有出错的情况下,G3 G2 G1=000.由于在分组时就确定了每组校验位参与校验的组别,所以,指错字能准别地知错错误所在位2)错误逻辑原理与设计当目的部件接收到一-组海明码后,送人电路进行分组并检测,得到检错字信息G,G2G,这组信息通过译码电路译码,给出出错(或无错)的信号,这个信号就是纠错的依据。
海明校验码设计实验报告

海明校验码设计实验报告实验名称:海明校验码设计实验实验目的:通过实验设计和实现海明校验码的算法,了解海明校验的原理以及如何使用。
实验原理:海明校验码是一种能够检测并纠正传输错误的码,常用于计算机存储系统和数据通信系统中,可以通过添加冗余位来实现数据的纠错。
海明码的基本原理是将数据位和校验位进行组合,使得校验位的值能够表示数据位中出现的错误的位置和数量。
具体实验步骤:1. 设计一段数据,例如8位二进制数,作为输入数据。
2. 计算校验位的数量,并根据数据位和校验位的数量,计算海明码的总位数。
校验位的数量可以通过公式计算:2^r ≥ r + k + 1,其中r为校验位的数量,k为数据位的数量。
3. 将数据位插入到海明码的对应位置,即在海明码中留出位置用于存放数据位。
4. 计算各个校验位的值,并填充到海明码中。
5. 对于海明码的接收端,通过计算校验位的奇偶性,检测并纠正可能出现的错误。
实验结果与分析:实验中,我们设计了一个8位二进制数据,需要添加3个校验位。
根据公式2^r ≥ r + k + 1,计算出总位数为12位。
将数据位填入到对应的海明码位置,并计算校验位的值,得到最终的海明码。
例如,原始数据为:1011校验位的数量为3,海明码的总位数为12。
填充数据位得到海明码:1 0 1 1 * * 0 * 1 0 1 1计算校验位的值,并填充到海明码:1 0 1 1 0 1 0 0 1 0 1 1接收端接收到海明码后,计算校验位的奇偶性,并与接收到的海明码进行比较,即可检测并纠正错误。
如果校验位的奇偶性与接收到的海明码不一致,说明出现了错误。
通过校验位的位置,我们可以判断错误出现的位置,并根据校验位的奇偶性提示错误的数量。
实验结论:通过实验,我们成功设计并实现了海明校验码的算法。
海明校验码能够检测并纠正传输错误,可以应用于计算机存储系统和数据通信系统中,提高数据的可靠性和完整性。
实验结果表明,海明校验码能够很好地检测和纠正错误,具有较高的纠错能力,因此在实际应用中具有广泛的应用价值。
海明码的实验报告

海明码的实验报告一、实验目的和背景海明码(Hamming Code)是一种能够检测和纠正单一错误的错误检测和纠正编码方法,它使用了冗余位(Redundancy Bit)来增加数据的可靠性。
本实验的目的是通过编写程序来实现海明码的生成、纠正和检测功能,并验证海明码的可靠性。
二、实验内容与步骤1. 生成海明码:编写程序实现海明码的生成功能,读取输入的原始数据并生成相应的海明码。
2. 引入错误:编写程序在生成的海明码中引入1个错误位。
3. 纠正错误:编写程序实现海明码的错误纠正功能,通过纠正之后的码字与原始数据进行比对,验证纠正效果。
4. 检测错误:编写程序实现海明码的错误检测功能,通过检测错误的海明码数据,输出错误位置。
三、实验过程与结果1. 生成海明码根据海明码的生成规则,我们编写了一个生成海明码的程序。
用户在控制台输入原始数据,程序经过处理后输出相应的海明码。
例如,输入数据为`1101`,生成的海明码为`1101001`。
2. 引入错误在生成的海明码中,我们通过编写程序随机选择一个位置并进行改写,引入1个错误位。
例如,原本生成的海明码为`1101001`,改写后为`1101101`。
3. 纠正错误根据海明码的纠正规则,我们编写了一个纠正错误的程序。
用户输入引入错误后的海明码,程序经过处理后输出经过纠正后的码字。
例如,输入的海明码为`1101101`,经过纠正后输出的码字为`1101001`。
4. 检测错误根据海明码的检测规则,我们编写了一个检测错误的程序。
用户输入海明码,程序经过处理后输出错误位置。
例如,输入的海明码为`1101101`,程序输出错误位置为`5`。
四、实验结果分析通过实验结果可以得出以下结论:1. 海明码的生成功能能够准确地将原始数据转换成相应的海明码。
2. 引入错误后,海明码的纠正功能可以将引入的错误位纠正回原始数据。
3. 海明码的检测功能能够准确地检测出错误位置。
综上所述,海明码具有较高的可靠性,能够有效地检测和纠正单一错误。
计算机组成原理课设(韩文敬.海明码生成)

沈阳课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:COP2000实现汉明码的生成院(系):计算机学院专业:计算机科学与技术班级:94010102学号:2009040101045姓名:韩文敬指导教师:杨华完成日期:2012年1月13日沈阳航空航天大学课程设计报告目录第1章总体设计方案 (1)1.1设计原理 (1)1.2设计思路 (1)1.3设计环境 (2)第2章详细设计方案 (4)2.1算法与程序的设计与实现 (4)2.1.1算法具体描述 (4)2.2流程图的设计与实现 (4)2.2.1流程图具体分析 (4)第3章程序调试与结果测试 (8)3.1程序调试 (8)3.2程序测试及结果分析 (8)参考文献 (10)附录(源代码) (11)第1章总体设计方案1.1设计原理根据海明码的实现原理,在数据中加入几个校验位,并把数据的每一个二进制位分配在几个奇偶校验组中,当某一位出错后,就会引起有关的几个校验组的值发生变化。
不但可以发现出错,还能指出错误的地方,并能通过电路完成自动纠正。
设校验位的个数为r,则它能表示2r个信息,用其中的一位信息指出“没有错误”,其余的2r-1指出错误发生的位置。
错误也可能发生在校验;位,因此只有2r-1-r个信息能用于纠正被传送的数据的位数k,必须满足:2r≥k+1+r对8位数据位,查表可知需要4位校验位。
如表1所示:表1其校验位等于所监测数据位的异或,即:C1=D8⊕D7⊕D5⊕D4⊕D2;C2=D8⊕D6⊕D5⊕D3⊕D2 ;C3=D7⊕D6⊕D5⊕D1;C4=D4⊕D3⊕D2⊕D1;1.2设计思路程序的第一步应是准备工作,通过算法的分析易知,准备数据有循环控制次数,由数据位为8bit二进制数,则可设循环次数为8,标志位,控制不同子程序实现,第一个校验位可直接生成,不需要标志位,且结果运算需置一位,则需设置4个,可在内存中存储,当子程序开始执行时,首先需将标志位更改,表示此过程已经执行。
【精品】海明码课程设计报告

【精品】海明码课程设计报告海明码是一种纠错码,用于在数字通信中检测和纠正数据传输中的错误。
在本次课程设计中,我们设计了一个海明码编码器和解码器,并进行了相关的实验和测试。
首先,我们设计了海明码编码器。
编码器的输入是一个长度为k的二进制数据序列,输出是一个长度为n的二进制数据序列,其中n=k+r,r是冗余位数。
编码器的主要功能是根据输入数据生成冗余位,并将输入数据和冗余位按照一定的规则组合起来形成输出数据。
我们采用了海明码的标准编码规则,具体实现过程如下:1. 输入数据序列为D,冗余位数为r。
2. 根据输入数据序列的长度确定冗余位数,使得r满足2^r ≥ r+k+1。
3. 初始化输出数据序列为0。
4. 将输入数据序列按照一定的规则插入到输出数据序列中,形成初始编码结果。
5. 针对每一个冗余位,计算该位的值,并将其插入到输出数据序列中。
6. 输出最终的编码结果。
接下来,我们设计了海明码解码器。
解码器的输入是一个长度为n的二进制数据序列,输出是一个长度为k的二进制数据序列。
解码器的主要功能是根据输入数据序列检测和纠正错误,并将纠正后的数据输出。
我们采用了海明码的标准解码规则,具体实现过程如下:1. 输入数据序列为C。
2. 针对每一个冗余位,计算该位的值,并与输入数据序列中对应的位进行比较,如果不一致,则表示该位有错误。
3. 根据错误位的位置,确定错误位对应的输入数据序列中的位置,将该位置上的位进行翻转。
4. 输出最终的解码结果。
为了验证海明码编码器和解码器的正确性,我们进行了一系列实验和测试。
首先,我们随机生成了一些输入数据序列,并将其输入到编码器中进行编码。
然后,我们将编码结果输入到解码器中进行解码,并与原始输入数据序列进行比较。
实验结果表明,编码器和解码器能够正确地生成和纠正错误,验证了其正确性和可靠性。
总结起来,本次课程设计中我们设计了海明码编码器和解码器,并进行了相关实验和测试。
通过实验验证,编码器和解码器能够正确地生成和纠正错误,具有较高的可靠性和实用性。
海明码

演讲者 2014.1.16
请在此输入您的标题
请在此输入您的副标题
演讲者 2014.1.16
请在此输入您的标题
请在此输入您的副标题
over
LOREM IPSUM DOLOR
一般来说,若汉明码长为n,信息位数为k,则监督位数r=n-k。 若希望用r个监督位构造出r个监督关系式来指示一位错码的n种 可能位置,则要求 演讲者 2014.1.16 2-1≥n或2-1≥k+r+1 现以数据码1101为例说明汉明码编码原理,此时D4=1、D3=1、 D2=0、D1=1,在P1编码时,先将D4、D3、D1的二进制码相 加,结果为奇数3,汉明码对奇数结果编码为1,偶数结果为0 (奇数位。若奇数结果编码为0.偶数结果为1,则叫偶数位), 因此P1值为1,D4+D2+D1=2,为偶数,那么P2值为0, D3+D2+D1=2,为偶数,P3值为0。这样,参照上文的位置表, 汉明码处理的结果就是1101001。在这个4位数据码的例子中, 我们可以发现每个汉明码都是以三个数据码为基准进行编码的。
演讲者 2014.1.16
请在此输入您的标题
请在此输入您的副标题
演讲者 2014.1.16
请在此输入您的标题
请在此输入您的副标题
演讲者 2014.1.16
请在此输入您的标题
请在此输入您的副标题
演讲者 2014.1.16
请在此输入您的标题
请在此输入您的副标题
从编码形式上,我们可以发现汉明码是一个校验很严谨 的编码方式。在这个例子中,通过对4个数据位的 3个位 演讲者 2014.1.16 的3次组合检测来达到具体码位的校验与修正目的(不 过只允许一个位出错,两个出错就无法检查出来了,这 从下面的纠错例子中就能体现出来)。在校验时则把每 个汉明码与各自对应的数据位值相加,如果结果为偶数 (纠错代码为0)就是正确,如果为奇数(纠错代码为1) 则说明当前汉明码所对应的三个数据位中有错误,此时 再通过其他两个汉明码各自的运算来确定具体是哪个位 请在此输入您的副标题 出了问题。
海明校验码设计实验报告
海明校验码设计实验报告实验目的设计并实现海明校验码,实现对于数据传输中出错信息的检测与纠正功能。
实验原理海明校验码是对于二进制数据进行检错和纠错的一种编码方法。
其基本思想是对数据进行二进制化,并在数据后面加上校验码,以便检查发生的错误,并在发生一些错误的时候进行纠正。
其中,校验码的生成基于原始数据中出现的错误的反转。
为了避免出现错误情况,海明编码使得校验码中的每一位都与原始数据中的多个位置有关。
海明校验码的实现流程包括以下步骤:1. 将要传输的数据转换为二进制形式,并将其划分为多个位。
2. 根据海明编码的规则,计算得出控制位的位置,并将0和1分配给这些位置。
3. 将校验位插入到原始数据的中间,构成海明编码,并发送到接收端。
4. 在接收端,收到海明编码后,进行计算并检查出现的错误情况。
如有错误,则尝试更改应该更改的冗余位以进行自动校正。
实验器材与材料计算机,IDE软件,Python语言。
实验步骤1. 设计海明编码程序。
(1)将要传输的数据分割,初始状态下没有校验码。
(2)计算出每个校验位的数值。
(3)用计算得到的校验码替换掉原来没有校验码的位,以形成海明编码。
2. 制造模拟信道错误的程序。
将字符数据中某些位置的位进行反转模拟数据在传输过程中出现错误的情况。
3. 设计海明编码解码程序。
(1)接收传输过来的海明编码。
(2)计算收到的码字的海明校验码。
(3)如果发现了错误,则进行纠错操作,纠正错误的位数。
实验结果经过测试,我们成功设计并实现了海明编码解码的程序。
我们在编码原始数据后,成功地对编码的数据进行了传输,并通过测试程序检查对于在数据传输过程中出现的错误信息的检测与纠正功能。
同时,在发送者向接收者发送数据的过程中,我们还成功制造了信道错误,以模拟数据传输中出现错误的情况。
在测试程序的帮助下,我们成功地对海明编码的纠错机制进行了测试,并发现其有效性和高可用性。
结论与总结在本次实验中,我们通过使用Python语言和IDE软件成功地设计并实现了海明校验码的程序,实现了对于数据传输中出错信息的检测与纠正功能。
海明码编码与校验
海明码编码与校验(1)海明码的工作原理在传输的数据中加入几个校验位,并把数据的每个二进制位分配在几个奇偶校验组中。
当某一位出错后,就会有关的几个校验组的值的变化,这不但可以发现出错,还能指出那一位出错,为自动纠正提供了依据。
假设校验位的个数为r,则它能表示2r个信息,用其中的一个信息指出“没有错误”,其余的2r-1个信息指出错误发生在哪一位。
然而错误也可能发生在校验位,因此只有k=2r-1-r个信息能用于纠正被传送数据的位数。
满足以下关系:2r≥k+r+1(3.1.1)(2)模拟海明码工作的例子例1:要发送0101编码,求其海明码解:已知要发送的编码为0101,则k=4,根据(3.1.1)公式求出rmin=3。
r=3校验位插入的位置:P1=21-1=1………第一位P2=22-1=2………第二位P3=23-1=4………第三位则模拟编码位:7 6 5 4 3 2 10 1 0 * 1 * *D4 D3 D2 P3 D1 P2 P1D1=P1+P2,D1位置为 3=(0011)2D2=P1+P3,D2位置为 5=(0101)2D3=P2+P3,D3位置为 6=(0110)2D4=P1+P2+P3 ,D4位置为7=(0111)2求校验位PP1=D1⊕D2⊕D4=1 (对应上面二进制数右起第一位为1的参与异或操作)P2=D1⊕D3⊕D4=0P3=D2⊕D3⊕D4=1注:⊕为异或操作(相同为0,不同为1)得到最终的海明码:7 6 5 4 3 2 10 1 0 1 1 0 1D4 D3 D2 P3 D1 P2 P1↑↑ ↑例2:传输后得到错误码0001101,找出错误位并改正。
解:则模拟编码位:7 6 5 4 3 2 10 0 0 1 1 0 1D4 D3 D2 P3 D1 P2 P1S1=P1⊕D1⊕D2⊕D4=0S2=P2⊕D1⊕D3⊕D4=1S3=P3⊕D2⊕D3⊕D4=1排列S3,S2,S1=110(110)2=(6)10说明右起第六位出错!正确的码为:0101101。
校检码之海明校验码的求法
校检码之海明校验码的求法计算机组成原理汉明(海明)校验法求信息1011的海明码。
1.根据信息位数,确定校验位数根据公式 2^r≥k+r+1求,k为信息位数,r为校验位数。
1011⼀共是4位,所以k=4,r为满⾜不等式的最⼩的r.当r=1时带⼊式⼦不符合,2不符合,r=3时,8>=4+3+1,符合所以确定了初步的表格如下,为了后⾯填充⽅便,位数是由⼤到⼩排列的:2.求校验位2.1校验位的填充校验位⼀般都是在2^n的位置,因为表格确定了⼀共七位,所以,我们在这7位⾥⾯寻找到1、2、4,在表格中填充如下:2.2在表格中填充信息位,信息位是由⾼位向低位填充,⾼位的数字要填充到⾼位上,10112.3求校验位的值确定每个位置的校验位,每个位数都由R1、R2、R3中的⼀或若⼲个所确定。
1由第⼀个校验位来确定R1,2由第⼆个校验位来确定R2,3=1+2(1和2都是2的n次⽅),所以3由第⼀个和第⼆个校验位确定,4由第四个校验位R3确定,5和3道理是⼀样的,5=1+4(2^0+2^2);6=2+4;7=1+2+4,依次类推,这个题就是这些了。
整理为如下的表格:进⾏汇总,看每个校验位都确定了哪⼀位。
R1:1、3、5、7R2:2、3、6、7R3: 4、5、6、7最后求校验位的值,1对应的信息位为空,2也为空,3为1,4为空,5为1,依次类推,根据本博客中的第三个表格就可以得知。
然后对每个R所对应的信息位进⾏异或运算,相同时为0,不同时为1以R1为例,求出R1=1同理求出R2=0(101),R3=0(101)最后将这些数字填⼊表格:海明码就求出来了,把上⾯的红⾊的数字按照位数从低到⾼排列下来就是:1010101。
计算机组成原理--海明码的编码和校验方法(易懂)
计算机组成原理--海明码的编码和校验⽅法(易懂)海明码(也叫汉明码)具有⼀位纠错能⼒。
本⽂以1010110这个⼆进制数为例解释海明码的编码和校验⽅法。
编码 确定校验码的位数x 设数据有n位,校验码有x位。
则校验码⼀共有2x种取值⽅式。
其中需要⼀种取值⽅式表⽰数据正确,剩下2x-1种取值⽅式表⽰有⼀位数据出错。
因为编码后的⼆进制串有n+x位,因此x应该满⾜2x-1 ≥ n+x 使不等式成⽴的x的最⼩值就是校验码的位数。
在本例中,n=7,解得x=4。
确定校验码的位置 校验码在⼆进制串中的位置为2的整数幂。
剩下的位置为数据。
如图所⽰。
位置1234567891011内容x1x21x3010x4110 求出校验位的值 以求x2的值为例。
为了直观,将表格中的位置⽤⼆进制表⽰。
位置00010010001101000101011001111000100110101011内容x1x21x3010x4110 为了求出x2,要使所有位置的第⼆位是1的数据(即形如**1*的位置的数据)的异或值为0。
即x2^1^1^0^1^0 = 0。
因此x2 = 1。
同理可得x1 = 0, x3 = 1, x4 = 0。
位置00010010001101000101011001111000100110101011内容01110100110 因此1010110的海明码为01110100110。
校验 假设位置为1011的数据由0变成了1,校验过程为: 将所有位置形如***1, **1*, *1**, 1***的数据分别异或。
***1: 0^1^0^0^1^1 = 1 **1*: 1^1^1^0^1^1 = 1 *1**: 1^0^1^0 = 0 1***: 0^1^1^1 = 1 以上四组中,如果⼀组异或值为1,说明该组中有数据出错了。
***1 **1* 1***的异或都为1,说明出错数据的位置为1011。
海明码简单分析确定校验位个数海明码的码组长度需要符合:2^r – 1 (r代表校验位个数)为什么是这个公式呢?因为:只有这样才能保证校验位⾜够覆盖整个需要校验的码组。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
沈阳航空航天大学课程设计报告目录第1章总体设计方案 (1)1.1设计原理 (1)1.2设计思路 (1)1.3设计环境 (3)第2章详细设计方案 (5)2.1顶层方案图的设计与实现 (5)2.1.1创建顶层图形设计文件 (5)2.1.2器件的选择与引脚锁定 (5)2.1.3编译、综合、适配 (7)2.2功能模块的设计与实现 (7)2.2.1 取补模块的设计与实现 (7)2.2.2选择器模块的设计与实现 (9)2.2.3 乘数补码移位寄存器模块的设计与实现 (12)2.2.4 部分积移位寄存器模块的设计与实现 (14)2.2.5加法器模块的设计与实现 (16)2.3仿真调试 (16)第3章编程下载与硬件测试 (19)3.1编程下载 (19)3.2硬件测试及结果分析 (19)参考文献 (21)附录(电路原理图) (22)第1章总体设计方案1.1 设计原理海明校验码是由理查得·海明(Richard Hanmming)于1950年提出的,它不仅具有检测错误的能力,同时还具有给出错误所在的准确位置的能力,这在通信领域有着很广泛的应用。
海明校验码是在数据中加入几个校验位,并把数据的每一个二进制位分配在几个奇偶校验组中。
当某一位出错后,就会引起有关的几个校验组的值发生变化,这不但可以发现出错,还能指出是哪一位出错,为自动纠错提供了证据。
海明码能检测出2位错误,并能纠正1位错误。
(1)数据位和校验位的关系假设校验位的个数为r,则它能表示2r个信息,用其中的一个信息指出“没有错误”,其余的2r-1个信息指出错误发生在哪一位。
然而错误也可能发生在校验位,因此只有k=2r-1-r个信息能用于纠正被传送数据的位数,也就是说要满足关系:2r>=k+r+1 (发现一位错)2r-1>=k+r (发现与自动校正一位错,并发现两位错)数据位与校验位的对应关系K值最小的r值1~4 5~11 12~26 27~57 58~120 4 5 6 7 8(2)海明码的编码规律若海明码的最高位号为m,最低位号为1,即H m H m-1…H2H1,则海明码的编码规律通常是:a.校验位与数据位之和为m,每个校验位P i在海明码中被分在2i-1的位置,其余各位为数据位,并按从低向高逐位依次排列的关系分配各数据位。
b.海明码的每一位H i(包含数据位和校验位本身)由多个校验位校验,其关系是被校验的每一位位号要等于校验它的各校验位的位号之和。
这样安排的目的,是希望校验的结果能正确反映出出错位的位号。
1.2 设计思路(一)海明码的生成:因为要求的是8位的二进制数据,所以此处的k为8,按照数据位和校验位的对应关系,r应为5,由于总校验位只是检测两位出错还是一位出错,因此设计时不必考虑它的值,设r为4,故海明码的总位数为12,可表示为:H12——H1,4个校验位P4~P1对应的海明码位号分别为:H8/H4/H2/H1,则有如下排列关系:D8D7D6D5P4D4D3D2P3D1P2P1 按照海明码的原理得出如下的表格:海明码位号数据位/校验位参与校验的校验位位号被校验位的海明码位号=校验位位号之和H1 P1 1 1=1H2 P2 2 2=2H3 D1 1,2 3=1+2H4 P3 4 4=4H5 D2 1,4 5=1+4H6 D3 2,4 6=2+4H7 D4 1,2,4 7=1+2+4 H8 P4 8 8=8H9 D5 1,8 9=1+8H10 D6 2,8 10=2+8 H11 D7 1,2,8 11=1+2+8 H12 D8 4,8 12=4+8P1=D1⊕D2⊕D4⊕D5⊕D7P2=D1⊕D3⊕D4⊕D6⊕D7P3=D2⊕D3⊕D4⊕D8P4=D5⊕D6⊕D7⊕D8(二)海明码的校验:海明码校验函数(S函数)及校验过程 <偶校验>S1=P1⊕D1⊕D2⊕D4⊕D5⊕D7S2=P2⊕D1⊕D3⊕D4⊕D6⊕D7S3=P3⊕D2⊕D3⊕D4⊕D8S4=P4⊕D5⊕D6⊕D7⊕D8课程设计的要求为:(1)采用自上而下的设计方法,顶层设计使用原理图设计输入方式;底层设计输入方式自行选定;(2)课程设计的电路主要应包括:寄存器·P函数发生器和门电路等。
其中控制信号可选用外部开关或VHDL语言以控制器方式实现,其他部分可以调用系统资源库中的器件;(3)数据位数由指导老师指定;(4)对设计电路进行仿真并验证其正确性,仿真数据由指导老师给出;(5)实现编程下载和硬件测试;(6)独立设计·调试·仿真·下载和硬件测试并通过指导老师现场验收;(7)撰写课程实验报告。
课程设计的思路为:海明码的生成有着规律,通过其规律找出相同点1.3 设计环境(1)硬件环境•伟福COP2000型计算机组成原理实验仪COP2000计算机组成原理实验系统由………•COP2000集成调试软件COP2000集成开发环境是为………….(2)EDA环境•Xilinx foundation f3.1设计软件图1.1Xilinx foundation f3.1设计平台Xilinx foundation f3.1是Xilinx公司主要的可编程器件开发工具,它可用来开发Xilinx公司的Spar-tan? Virtex? XC3000? XC4000? XC5200系列的FPGA芯片和XC9500系列的CPLD芯片。
该平台功能强大,主要用于百万逻辑门级的设计和1Gb/s的高速通信内核的设计。
利用该系统可完成从设计构想到比特流下载的全部过程。
该平台以工程管理器为主界面,同时集成了Xilinx公司以及其他公司的一些优秀软件。
第2章详细设计方案2.1 顶层方案图的设计与实现顶层方案图是………….2.1.1创建顶层图形设计文件顶层图形文件的设计实体……………….顶层图形文件结构如图2.1所示:图2.1 顶层图形文件结构图2.1.2器件的选择与引脚锁定(1)器件的选择由于硬件……………(2)引脚锁定把顶层图形文件中的………………对应关系如表2.1所示:图形文件中的输入/输出信号XCV200芯片引脚信号GRD P50ZCLOCK P213FJW P47CLR P49VCC P48S1 P80S2 P81S3 P82S4 P84S5 P85S6 P86S7 P87Y1 P95Y2 P96Y3 P97Y4 P100Y5 P101Y6 P102Y7 P103E0 P63E1 P73E2 P72E3 P71E4 P70E5 P66E6 P65E7 P64表2.1 信号和芯片引脚对应关系2.1.3编译、综合、适配利用Xilinx foundation f3.1的原理图编辑器…………2.2 功能模块的设计与实现功能模块主要…………..2.2.1 取补模块的设计与实现进行求补的方法………….(1)电路模块设计原理图。
求乘数补码电路原理结构如图2.2所示,实际电路如图2.3所示。
图2.2 电路模块逻辑框图图2.3 实际取补电路(2)创建元件图形符号其元件图形符号如图2.4所示:图2.4 求乘数补码电路模块元件图形符号(3)功能仿真对创建的取补模块进行功能仿真,验证其功能的正确性,可用Xilinxfoundation f3.1编译器的Simulator 模块实现。
仿真结果如图2.5所示:图2.5 取补模块仿真结果2.2.2选择器模块的设计与实现选择器主要由一个D2-4E 芯片和逻辑门电路控制选择输出。
输入端输入的值分别为补][X -,补][X 以及“00000000”(八个输入端为一组)。
D2-4E 芯片的0A 和1A 端的“0”和“1”控制0D ,1D ,2D ,3D 当10A A 为01时,输出为2D 高电平,即为2D 输出值为1,通过逻辑门电路实现输出为补][X -的值;当10A A 为10时,输出为1D 为 高电平,即为1D 输出值为1,通过逻辑门电路实现输出为补][X 的值;当10A A 为00时,输出为0D 为 高电平,即为0D 输出值为1,同时当10A A 为11时,输出为3D 为 高电平,即为3D 输出值为1,由于此时0D 和3D 输出值为相同,故此两条数据线通过一个或门输出一条数据线,此时输出值为“00000000”。
正好实现三输入一输出的选择器模块。
(1)创建选择器设计原理图。
三输入一输出选择器原理结构如图2.6所示:图2.6 选择器原理框图(2)创建元件图形符号其元件图形符号如图2.7所示:图2.7 选择器元件图形符号(3)功能仿真对创建的三输入一输出器模块进行功能仿真,验证其功能的正确性,可用Xilinx foundation f3.1编译器的Simulator模块实现。
仿真结果如图2.8所示:(b(a))(d)(c)图2.8 选择模块仿真结果图2.2.3移位寄存器模块的设计与实现乘数补码移位寄存器模块由八个二选一选择器(MUXCY ),9个寄存器(FD )组成,CP 端输入的是1个低电平信号其余都为高电平信号。
MUXCY 选择器由控制信号S 端,输入端i D 和i C ,以及输出端O 组成,当S 端为低电平信号时,选择输出i D 值,当S 端为高电平信号时,选择输出i C 值。
每次的输出信号寄存到FD 中,MUXCY 输出端O 连接下一位的寄存器,这样就实现了移位寄存的功能。
移位的07Y 和08两个输出端恰好为n y 和1+n y 的两个值,n y 和1+n y 的两个值要分别接到选择器的0A 和1A 端。
(1)移位寄存器模块设计原理图。
乘数补码移位寄存器原理结构如图2.9所示:图2.9 乘数补码移位寄存器原理结构图(2)创建元件图形符号其元件图形符号如图2.10所示:图2.10 乘数补码移位寄存器电路模块元件图形符号(3)功能仿真对创建的乘数补码移位寄存器模块进行功能仿真,验证其功能的正确性,可用Xilinx foundation f3.1编译器的Simulator模块实现。
仿真结果如图2.11所示:图2.11 乘数补码移位寄存器模块仿真结果2.2.4 部分积移位寄存器模块的设计与实现部分积移位寄存器模块是由一个8位寄存器(FD8CE)和四个逻辑门电路组成,实现部分积移位寄存功能。
由于部分积的初始值为“00000000”,这样就要求FD8CE寄存器的初始值为“00000000”,只需要给清零端CLR一个高电平的信号即可实现。
进行部分积移位时,要求移位过程中保证符号位相同,这样就需要把第一位符号位复制为两个数,而其余的6位相继向下串一位,这样就实现了移位功能,同时还保证的符号位相同。
(1)部分积移位寄存器设计原理图。
部分积移位寄存器原理结构如图2.12所示:图2.12部分积移位寄存器原理图(2)功能仿真对创建的寄存器模块进行功能仿真,验证其功能的正确性,可用Xilinxfoundation f3.1编译器的Simulator模块实现。