史上最全的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文库

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

用草书谱写兰亭序

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

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

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

打赏作者

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

抵扣说明:

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

余额充值