史上最全的Logisim数据表示实验教程(基于华中科技大学计算机组成原理实验)

目录

第1关:汉字国标码转区位码实验

第2关:汉字机内码获取实验

第3关:偶校验编码设计

第4关:偶校验解码电路设计

第5关:偶检验传输测试

第6关:海明编码

第7关:16位海明解码电路设计

第8关:16位CRC并行编解码电路设计

第9关:CRC编码流水传输实验


看完有收获给我点个赞这对我很重要🌹🌹🌹🌹

你的点赞让我的创作更有动力⭐⭐⭐⭐⭐

第1关:汉字国标码转区位码实验

国标码与区位码的定义

  1. 国标码是二字节码,用两个七位二进制数编码表示一个汉字。
  2. 为了使每一个汉字有一个全国统一的代码,区位码是国家规定的94×94的一个方阵,其中每行叫做一个区,每列叫做一个位,组合起来就组成了区位码。

⭐国标码与区位码转换:

国标码=区位码(十六进制)+2020H

​区位码=国标码+FFFF-2020H+0001H=国标码+dfe0

​由于采用加法器,所以用补码的形式表示,-2020H的补码为def0

引入一个常量,把数据位宽设置位16位,并且复制为def0,把常量和GB2312连接到加法器上,加法器的另一端连接到集线器上,连线方式如图1.1所示:

图1.1:国标转区位码电路

可能会遇到的问题,问题电路如图1.2所示:

图1.2:国标转区位码电路报错

上图的问题导致的原因是因为,加法器的数据带宽和常量国标码的位数不一致导致的,我们可以点击加法器,然后在最下角的数据位宽改为16即可,如图1.3所示:

图1.3:设置数据位宽

第2关:汉字机内码获取实验

第一步:点击到汉字显示电路可以观察到如图1.4显示的结果:

图1.4:汉字显示电路

第二步:要把下面一段文字替换为GB2312,我们可以访问网站 汉字字符集编码查询;中文字符集编码:GB2312、BIG5、GBK、GB18030、Unicode (qqxiuzi.cn),查看这段文字对应的GB2312(GBK)的值,如图1.5所示:

图1.5:文字转化GB2312结果

但是我们需要把上面文本调整为4个一行的格式才可以直接粘贴到编辑器中

第三步:把刚刚获取到的GBK的值编辑到logisim十六进制编辑器中,删除之前的,粘贴进去即可,如图1.6所示:

图1.6:编辑器内容

第四步:退出编辑器,在logisim的绘图区按CTRL+K自动运行时钟,会得到如图1.7所示结果:

图1.7:汉字电路显示结果

❗注意:关于如何调整时钟频率,以及如何重新启动模拟器

点击模拟->重启模拟器就可以实现重启模拟器

点击时钟频率我们可以把时钟频率切换为视频中推荐的频率8Hz,具体如图1.8所示:

图1.8:时钟频率设置

第3关:偶校验编码设计

  1. 奇校验:编码中有奇数个1,发送给接收方,接收方收到后,会计算收到的编码有多少个1,如果是奇数个,则无误,是偶数个,则有误
  2. 偶校验:编码中有偶数个1
  3. 奇偶校验:只能检测1位错,无法检查出偶数个错误,并且无法纠错
  4. 假设计算机规定好的是奇校验,发送方发送的编码是01101 0,而接收方收到的是11111 0,但是奇数个1,符合奇校验,但有两个0变成了1,所以奇偶校验只能检测出1位错误,且没法纠错。

第一步:那一个异或门到绘图区,并且设置异或门的输入引脚位数为16位,如图1.9所示:

图1.9:16引脚异或门

第二步:把每一位数据对应连接到异或门的引脚上,一个引脚直连一位数据,不可以有交叉,然后把异或门的输出端连接到分线器的16号端口上,结果如图1.10所示:

图1.10:偶校验电路图

第4关:偶校验解码电路设计

也就是把偶校验位,送去与数据位的数据去做异或运算,如果检错位为奇数,说明有错误发生;如果检错位为偶数,说明数据是正确的。

所以只需要按照图1.11连线即可:

图1.11偶校验解码

第5关:偶检验传输测试

(1)传输过程中没有错误,左右两边的字相同,“检错位”不亮灯,“数据正确”亮绿灯。

(2)有奇数个错误,“检错位”亮红灯,结果如图1.12所示:

图1.12奇数个错误

(3)有偶数个错误,偶校验无法检测出偶数个错误,“误报”亮绿灯,如图1.13所示:

图1.13:偶数个错误报错

第6关:海明编码

我们首先要理解海明编码的原理。海明编码是设置多个奇偶校验位来实现纠错能力的。

每一个检验位都在特点的位置上。

一般有一个公式来算我们需要多少个检验位。

K+r <= 2^r - 1

k是多少位信息,r是需要的检验位.

这道题目k=16,所以我们需要5位检验位+1位总检验位。所以一共是22位海明编码。

而且检验位的位置一般是2^i-1(1,2,4,8,……)

p1,p2,p3……都是检验位,而D1,D2,D3……都是数据位.

每一个数据位都由最少两位检验位检验。

例如

D1:P1,P2(3=1+2 这里的1、2是第几位)

D2:P1,P3(5=1+4)

D3:P2,P3

D4:P1,P2,P3

D5:P1,P4

D6:P2,P4

D7:P1,P2,P4

D8:P3,P4

D9:P1,P3,P4

D10:P2,P3,P4

D11:P1,P2,P3,P4

D12:P1,P5

D13:P2,P5

D14:P1,P2,P5

D15:P3,P5

D16:P1,P3,P5

所以我们可以知道P1~P6分别检验的是什么数据位,如下表内容所示:

P1

B1,B2,B4,B5,B7,B9,B11,B12,B14,B16

P2

B1,B3,B4,B6,B7,B10,B11,B13,B14

P3

B2,B3,B4,B8,B9,B10,B11,B15,B16

P4

B5,B6,B7,B8,B9,B10,B11

P5

B12,B13,B14,B15,B16

P6

全部数据异或

所以根据以上表格我们可以构建电路图1.14如下所示:

图1.14:海明码编码电路图

第7关:16位海明解码电路设计

检错原理:

当G5G4G3G2G1=0时,表示数据无传输错误,否则,表示出错。当发生一位数据错误时,G5G4G3G2G1所指示的数据,表示那位数据出错(例如G5G4G3G2G1=00101,则表示第5位数据出错)。若发生两位错时,G5G4G3G2G1仍不为0,由于只能纠正1位错误,故该海明编码是尽努力去纠正。

因此,增加一位总的奇偶校验位G6,进行判断是一位错,还是两位错。

①当G5G4G3G2G1=0,G6=0,表示数据无出错;

②G5G4G3G2G1 !=0,G6=1,表示发生一位数据出错;

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

④G5G4G3G2G1 !=0,G6=0,表示发生两位数据出错。

通过上一个实验我们可以通过对各个检验位和使用了检验位的数据进行异或操作拿到指错字,电路图如图1.15所示:

图1.15 指错字电路图

3.纠正数据
在纠正数据,得到原始16位数据这块设计上,可采用解码器对出错位进行输出,再与原来的数据进行异或,即可得纠正后的数据。解码器也就是你输入的数据对应输出的哪一位是1,如果是5位2进制的话就是00000,对应解码器0端口输出1,如果二进制是00101的话,对应解码器5端口输出1,所以就纠正数据只需要把对应位的错误异或过了就可以了,然后有几位错就有上面提到过的逻辑去完成电路设计就好,电路设计如下图1.16所示:

图1.16:纠正电路

第7关:海明编码流水传输实验

       实验要求我们做的是一位错就纠正两位错就退回重传,那也就是我们需要控制当报错是两位的时候把寄存器中的数需要减3,因为在整个运行的过程中当数到待了解码器找到错误的时已经走了3步了,减3的功能规定我们使用加法器去完成所以我们可以加上fdH来完成减3 的操作,然后我们还需要控制这个时候不会把结果送入接收端所以我们要把接收端的使能端设置为0,电路图如图1.17所示:

图1.17 海明编码流水传输电路图

当没有错误时候,结果如图1.18所示显示没有错误:

图1.18 没有错误情况

当出现一位错误时候,结果如图1.19所示:

图1.19 一位错误情况

当出现二位错误时候,数据选择器选择的是fdH结果如图1.20所示:

图1.20 两位错误情况

第8关:16位CRC并行编解码电路设计

一、CRC编码电路

       首先我们需要了解的是CRC编码是一个上面东西,CRC编码是循环冗余校验,CRC编码基于多项式除法,通过在数据后面添加一些额外的校验位,使得整个数据(包括校验位)可以被一个预定的生成多项式整除。

第一步:选取生成多项式,常用的CRC生成如图1.21所示,这里我选择的是G(x)=100101

图1.21 CRC常用生成式

第二步:由于本实验要采取的是并行编码,所以可以得到如下的公式,公式可以让我们知道,可先对该16位数据按位与多项式进行模2除运算,再根据其实际数据进行异或操作。

第三步:我们现在就需要通过选择器,当某一位的数据为1的时候,就选择它与多项式进行模2除运算的结果,否则就选择0,所以每一位进行模2除运算(手算就好)的结果如下所示:

1000000                                     0a

10000000                                    14

100000000                                   0d

1000000000                                  1a

10000000000                                 11

100000000000                                07

1000000000000                               0e

10000000000000                              1c

100000000000000                             1d

1000000000000000                            1f

10000000000000000                           1b

100000000000000000                          13

1000000000000000000                         03

10000000000000000000                        06

100000000000000000000                       0c

1000000000000000000000                      18

第四步:设计电路图,电路图如图1.22所示:

图1.22 CRC编码电路图

二、CRC解码电路

检错原理

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

有以下情况:

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

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

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

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

2、求余数时,可参照设计CRC编码时求余数的方法,也就是把各位的模二运算的结果和余数做异或运算得到最终的余数。

电路图如图1.24所示:

     

图1.24 CRC解码

第9关:CRC编码流水传输实验

电路图如图1.25所示:

图1.25 CRC编码流水传输电路图

cric文件的下载地址如下:有需要的自行下载噢!🌹🌹🌹🌹

【免费】华中科技大学数据表示源码资源-CSDN文库

  • 97
    点赞
  • 386
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
### 回答1: 华中科技大学计算机组成原理课程中进行的数据表示实验(HUST)是该课程的一个重要实践环节。该实验旨在帮助学生深入理解计算机内部的数据表示方法和相关的计算机硬件知识。 在这个实验中,学生需要通过编写程序来实现不同的数据表示方法,如原码、反码、补码等,并进行相应的数据操作和算术运算。他们需要理解每种表示方法的特点和应用场景,以及相应操作和运算的计算规则。通过这个实验,学生可以掌握不同数据表示方法的原理和实现方式,加深对计算机内部数据表示的理解。 在实验过程中,学生还需要通过使用特定的硬件平台和开发工具,如学校提供的开发板、仿真软件等,将编写好的程序加载到硬件上运行,并进行调试和测试。通过这一过程,学生可以深入了解计算机硬件和软件之间的交互,进一步加强对计算机组成原理的理解。 实验结束后,学生需要提交实验报告,其中包括实验过程的详细记录、问题分析和解决方案,以及对实验结果的讨论和总结。这有助于学生系统地总结和巩固所学知识,提高实际操作和问题解决的能力。 总之,华中科技大学计算机组成原理数据表示实验(HUST)是一门旨在提高学生对计算机内部数据表示方法和计算机硬件知识的理解和应用能力的重要实践课程。通过这个实验,学生可以加深对计算机内部数据表示原理的理解,提高实际操作和问题解决的能力,为进一步学习和研究计算机组成原理提供坚实的基础。 ### 回答2: 华中科技大学计算机组成原理课程中的数据表示实验是一项实践环节,旨在帮助学生加深对计算机中数据表示方式的理解和应用。 这个实验通常分为两个部分,分别是补码的表示和浮点数的表示。 首先,对于补码的表示,学生需要掌握正数和负数的二进制表示以及补码的相关概念。通过使用硬件平台或者仿真软件,学生可以使用不同的方法来表示一个给定的负数,例如使用反码或补码。实验中,学生需要逐步理解和实践每一种表示方法的原理和过程,并能够对不同方法进行比较和分析。 其次,对于浮点数的表示,学生需要掌握浮点数的基本概念,例如尾数、阶码、符号位等,并理解单精度和双精度浮点数的表示方式。在实验中,学生将会学习如何将一个给定的实数换为浮点数,并通过硬件平台或仿真软件进行验证和实践。他们将会进行多组浮点数的换,并能够分析不同浮点数表示方式的优缺点。 该实验不仅仅是对计算机组成原理课程中理论知识的实践应用,还提供了一个锻炼学生设计和调试能力的机会。通过自主完成实验,学生将会通过不断尝试、分析和改进,提高他们的计算机理论知识及实践技能,培养他们解决问题和创新能力。 总之,华中科技大学计算机组成原理数据表示实验是一项重要的实践环节,通过实验让学生深入理解和应用计算机数据表示方式,同时提高他们的计算机设计和调试能力。这些实践锻炼对于学生未来的学习和工作具有重要的意义。 ### 回答3: 华中科技大学计算机组成原理数据表示实验是计算机科学与技术专业学生在学习计算机组成原理课程中的重要实践环节。该实验旨在帮助学生深入理解计算机中数据的表示方式,并通过实际操作来巩固理论知识。 在这个实验中,学生需要使用HUST软件,它是华中科技大学自主开发的用于计算机组成原理实验的仿真软件。通过该软件,学生可以模拟构建一个真实的计算机系统,并进行对数据存储和数据表示实验。 在实验中,学生首先需要了解计算机中数据存储的基本原理,包括二进制数表示、整数和浮点数的表示、字符编码等。然后,学生可以通过HUST软件进行相关的实验操作,如输入不同的二进制数、整数或浮点数,观察其在计算机中的表示方式和存储格式,并进行相应的计算和换。 通过这些实验,学生可以直观地理解不同数据类型在计算机中存储和表示的方式,深入了解计算机内部的数据结构和存储器的工作原理。同时,学生还可以通过实验来掌握计算机的数据表示换的相关技巧和方法,提高对计算机原理的理解和运用能力。 总之,华中科技大学计算机组成原理数据表示实验通过HUST软件的使用,帮助学生巩固和应用计算机组成原理的相关知识,提高对计算机内部数据表示和存储的理解能力,为日后从事计算机相关工作打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

用草书谱写兰亭序

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值