华中科技大学计算机组成原理实验——数据表达实验

本文详细介绍了如何通过Logisim软件进行汉字编码实验,包括汉字GB2312机内码的获取、区位码与国标码的转换,以及CRC编码和解码的设计与应用。实验涉及CRC校验码的原理和纠错性能,以及在不可靠网络中的数据可靠传输。此外,还涵盖了在出现错误时的地址回滚、数据清空和暂停显示等数据重传机制。
摘要由CSDN通过智能技术生成

所有资源都已打包 

计算机组成原理.zip官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘

一、实验目的

1.理解汉字机内码、区位码的概念,并且能够利用相关的工具批量获取一段汉字文字的GB2312机内码,利用简单的电路实现汉字GB2312机内码与区位码的转换;

2.了解字形码显示的基本原理,能够在实验环境中实现汉字GB2312编码的字形码点阵显示;

3.掌握CRC校验码设计原理与纠错性能,能单独设计实现16位汉字GB2312机内码的CRC编码体系,并最终在实验环境中利用硬件电路实现对应的CRC编码和解码电路;

4.熟悉流水传输机制、流水暂停原理,能够对实验环境提供的五段流水编码传输电路进行简单的修改,实现数据编码在不可靠网络中的可靠传输。

二、实验内容

1.汉字编码实验

1.1设计国标转区位码电路;

1.2汉字GB2312机内码提取实验;

1.3在线自动测试。

2.CRC校验码设计实验

2.1设计CRC校验编码电路;

2.2设计CRC校验解码电路;

2.3 CRC校验传输测试。

3.编码流水传输设计实验

三、实验工具

Logisim仿真实验软件、浏览器

四、方案设计与实验步骤及结果

1.国标转区位码

区位码和GB2312编码之间的转换关系为:区位码+A0A0H=GB2312编码,所以区位码= GB2312-A0A0H。

bb81a3209236484e9c3a4c819dbac759.png

图表 1 国标转区位码电路图

2.汉字GB2312机内码提取实验

汉字GB2312机内码可以通过编写程序获得,也可通过市面上已经有免费的转换程序获得,故借用浏览器搜索相关网页完成汉字GB2312机内码的获取,需要注意汉字要全角输入。实现过程如“汉字GB2312机内码提取图”所示。

3e6a9d12c6d2475e958e7733591d0b7a.png

图表 2 汉字GB2312机内码提取图

3.在线自动测试

将通过步骤2(汉字GB2312机内码提取)提取的机内码输入至汉字显示电路中的ROM存储器中,运行电路进行测试,直至LED点阵显示出正确的汉字显示结果,显示频率应调整为8Hz。实现效果如“汉字显示电路图”所示。

13e4e88c05b24028a4b80acbc1bab826.png

图表 3 汉字显示电路图

4.CRC编码电路

43065e29d6b5475a8321f5dbff99c7b0.png

图表 4 CRC编码


4.1 CRC编码原理

输入的是16位数据,输出22位CRC编码数据,其中包括16位原始数据,6位校验位,其中一位为总的奇偶校验位(校验位的位数也可由k+r<=2^r-1得到)。因此此时的r=5(不包含奇偶校验位),选择的多项式G(x)位数则为r+1=6位,选择多项式G(x)=100101,原始16位数据Q(X),左移r=5位成21位Q’(x)(即后面补r个0),再与多项式100101做模2运算,得到的r位的余数,将该余数替换掉Q’(X)后面的r位,即将它后面的r个0替换成该余数。如图所示r5r4r3r2r1便是得到的余数,而r6是总的奇偶校验位,对所有数据进行异或便可得到该偶校验位r6。

由于要采用并行编码,又有以下公式

38f7e1c584fb48849be478b6a8db2ada.png

因此可先对该16位数据按位与该多项式进行模2除运算,再根据其实际数据进行异或操作。

先将16位原始数据所对应位置上取1时,与G(x)进行模2除运算得到各自的5位余数,再用选择器进行根据每一位数据选择输入的是余数还是0,最后将16个输入数据进行异或,即可得到5位最终的余数。

4.2 选择器的使用原理

7d1354bb4e7b4ac3b3142ae657325e03.png

图表 5 多路复用器

此时选择器的选择端连接的是D1,由于D1数据位宽为1,则选择器有2^1=2个输入端。当D1为0,则输入0端的数据即00;若D1为1时,则输入1端的数据即0a。将16位数据Di(i=1,2…16)作为选择端控制每位数据输入的是00还是该位与多项式进行模2运算后的余数,最后将最终输入的16个5位数据进行异或,即可得到最终的余数。

ba1cd009766647dbb5b65bdc01b3d5a8.png

图表 6 CRC编码


4.3求16位与多项式的余数

如上图所示,Di(i=1,2…16)分别位数CRC编码的第7,8,9…22位上,因此其各自取1时与多项式模2除运算后的余数如下所示:

2374597cce0148f4956c1dfd23c58a05.png

图表 7 多项式模2除运算所得余数


根据以上分析,编写出如下CRC编码电路图:

9d98f02d68074447bfb4511619a49d1a.png

图表 8 CRC编码电路图

5.CRC解码电路

5.1 检码原理

接收方在接受到CRC编码后,将该编码与多项式进行模2除运算,得到余数r’,再根据q(假设q为总的奇偶检验位,将所有数据进行异或可得)的值进行判断数据是否产生错误,及产生错误后是一位错还是两位错。

有以下情况:

①r’ =0,q=0,表示数据无出错;

②r’ !=0,q=1,表示发生一位数据出错;

③r’ =0,q=1,表示该奇偶校验位出错,即发生一位出错;

④r’ !=0,q=0,表示发生两位数据出错。

在求余数时,可参照设计CRC编码时求余数的方法。因为CRC编码最后的r位少于多项式位数,因此可将最后r位看作一个整体,让它与多项式进行模2除运算后,得到的余数显然是它本身,因此让它与其它16位数据与G(x)模2除后所得的余数进行异或,即可得最后接收方检验的余数。

如下图所示,箭头所指的该5位数据位便是其最终得到的余数(异或门输出位宽为5)。

e124efa816b04fd38fda7917f786a931.png

图表 9 部分CRC解码电路

5.2 纠错,得原始16位数据

若CRC编码发生出错,而它的出错位可能为第7,8,9…22位(不考虑第1到6位,因为我们要得的原始16位数据处于第7…22位上,因此只需要判断这些位是否出错,若出错对它们进行纠正,再输出即可)。因此将CRC编码按位取反后再与G(x)进行模2除运算,若余数为0,则说明该位出错,因此将余数取反为1,再与该位数据进行异或从而纠正该位的数据;若余数不为0,则说明该数据位并未发生传输错误,因此对该余数取反为0,再与该位的数据进行异或得到的数据仍为该数据位。(x异或0=x,x异或1=x反)

CRC编码按位取反(即按位异或1)后再与G(x)进行模2除运算,根据公式可化成

CRC编码%G(x)异或该数据位取1%G(x)。

5.3 CRC解码电路图

4ed0752ad542452682e14ae27023ce3e.png

图表 10 CRC解码电路图

6.CRC传输测试

在CRC传输测试电路中测试CRC编解码电路的正确性,通过发送方与接收方的汉字显示对比可以很直观地观察CRC编码纠错的效果。通过设置干扰位数,可以测试电路在不同干扰下产生的效果。无错误、一位错和两位错时的结果分别如“CRC传输测试图1”、“CRC传输测试图2”和“CRC传输测试图3”所示。

b52acbd2277c4c60a3670acce302f697.png

图表 11 CRC传输测试图1

4528ee2655d2457b89aa7591e087d848.png

图表 12 CRC传输测试图2

b380abc4eb174359a76d2234f4184df1.png

图表 13 CRC传输测试图3

由结果可以看出,当出现一位错时,可以判断错误位数并纠正错误,出现两位错时,便只能检测出错误而不能纠错。

7.编码流水传输设计实验

7.1地址回滚

当传输过程出现两位错时,因为无法纠正错误,所以需要重新传送信息,可以使用选择器,当无两位错发生时,则按正常传输,当出现两位错时,则进行地址回滚。实现电路如“地址回滚功能实现电路图”所示。

49a18d07fabd460fb7a412e5b216a91e.png

图表 14 地址回滚功能实现电路图

7.2清空数据

由于每个阶段都保存有原来的数据,实现数据重传功能需要清空原来已有的数据,即当数据传输有效且发生两位错时需要进行数据清0操作。实现电路如“清空数据功能实现电路图”所示。

cd4de4dcd7014b78adc030ef1a85dbe5.png

图表 15 清空数据功能实现电路图

7.3暂停显示

数据发生两位错时,该数据不应该传入显示阶段,显示阶段应该继续显示上个数据,即暂停显示阶段的动作。有两种情况应该暂停显示阶段的动作:1.发生两位错误时;2.数据无效时。任意一种情况发生,都要进行暂停显示阶段的动作。实现电路如“暂停显示功能实现电路图”所示。

db05b95b73574092939306a1fb19f0c3.png

图表 16 暂停显示功能实现电路图

07cbc31b7f394784806e5cd009943f66.png

图表 17 CRC编码流水传输电路图

通过一位错纠错动作,两位错地址回滚、清空数据和暂停显示的数据重传动作,即可以实现在两位错误以内的数据正常传输,实现效果如“CRC编码流水传输电路图“所示。

  • 20
    点赞
  • 109
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
华中科技大学计算机组成原理实验实验报告及alu源文件 1 实验目的  熟悉Logisim软件平台;  掌握运算器基本工作原理;  掌握运算溢出检测的原理和实现方法;  理解有符号数和无符号数运算的区别;  理解基于补码的加/减运算实现原理; 2 实验环境 Logisim是一款数字电路模拟的教育软件,每一位用户都可以通过它来学习如何创建逻辑电路,方便简单。 它是一款基于Java的应用程序,可运行在任何支持JAVA环境的平台,方便学生来学习设计和模仿数字逻辑电路。Logisim中的主要组成部分之一就在于设计并以图示来显示CPU。当然Logisim中还有其他多种组合分析模型来对你进行帮助,如转换电路,表达式,布尔型和真值表等等。同时还可以重新利用小规模的电路来作为大型电路的一部分。 3 实验内容 3.1 Logism实验  学习使用Logism工具栏上的功能  学会使用子电路,并能将子电路放到main电路中使用  学会使用分线器,理解线宽的概念  学会使用隧道,学习使用探测器,了解logisim数据监测方法。 3.2 运算器封装实验利用logisim平台中现有运算部件构建一个32位运算器,可支持算数加、减、乘、除,逻辑与、或、非、异或运算、逻辑左移、逻辑右移,算术右移运算,支持常用程序状态标志(有符号溢出OF、无符号溢出CF,结果相等Equal),运算器功能以及输入输出引脚见下表,在主电路中详细测试自己封装的运算器。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值