标签:ble open 实验环境 family google ati body 计算 如何
实验目的
实验环境
(以下文字仅供google搜索)
Logisim平台,该平台是一款数字电路模拟的教育软件,用户都可以通过它来学习如何创建逻辑电路,方便简单。它是一款基于Java 的应用程序,可运行在任何支持JAVA 环境的平台,方便学生来学习设计和模仿数字逻辑电路。Logisim 中的主要组成部分之一就在于设计并以图示来显示CPU。当然Logisim 中还有其他多种组合分析模型来对你进行帮助,如转换电路,表达式,布尔型和真值表等等。同时还可以重新利用小规模的电路来作为大型电路的一部分
本章所有实验均基于实验包提供的data.circ 文件完成
data.circ原始文件
https://drive.google.com/open?id=1rvhs-o0V76AwB5HZwmVZ2ycMIEs6zdS9
data.circ完成文件
https://drive.google.com/file/d/1jbXW2mIa82wQ-gWKbYNfjss9IeCezezG/view?usp=sharing
实验内容_汉字编码
_GB2312 区位号
在ROM存储器中存入25个成句的汉字,并用时钟仿真依次显示
GB2312字符集构成一个94行,94列的二维表,列号称为位号,行号称为区号;每一个汉字或符号在码表中的位置用它所在的区号和尾号来表示
计算机内部 每个汉字的区号和位号分别用一个Byte来表示:例如"学"字的区号49,位号07,区位码即4907
0011 0001 0000 0111
区位码因为与通信使用的控制码(00H~1FH)冲突,所以ISO2022规定每个汉字区号位号必须加上20H,"学"字的国际交换码就是
0101 0001 0010 0111:5127H
^注意
因为区号和尾号范围是1~94所以用7bit表示
设计国际码转区位码电路
输入:GB2312 16位国际码
输出 区号行号
子电路如下
上述子电路由减法器和分离器组成
具体由实验文件data.circ可推知
汉字GB2312编码实验
5127H 表示一个汉字…
这个项目就是要找一段汉字对应的gb2312码
比如下面这段
ced2 d2aa c1a2 c2ed b7a2 d2bb c6aa b2a9 |
实验内容_偶校验
_奇偶校验
…
设计16位数据编码的偶校验编码电路
编码就是 16位数据的最高位置再加上一位,这位数是所有数据位的异或值(如果是奇校验还要取反)
需要特别注意异或门,中的多输入行为标签,默认的不是异或门
电路设计
我没有找到按位异或的方法,下面这个 子电路 可以复制作为按位异或器
编码电路
设计17位偶校验编码的检错电路
1表示有错
1表示有错
偶校验传输测试1
没错则显示正确
出现一位错能够检错
出现两位错则误报
测试2
出现一位错能纠正错误
出现两位错则不能纠正
实验内容_海明校验
_海明校验
给你一组k位的有效信息,b1 b2 b3 b4 b5 b6 b7 b8
海明校验在其中插入r个校验位来检测错误和纠错
校验位位置
从最左边开始插入在第2^i位,位数是相对 有效信息+校验码 的整体而言
P1 P2 b1 P3 b2 b3 b4 P4 b5 b6 b7 b8 b9 b11 P5 …
所以信息码与检验位的位数对应如下
1 | 2~4 | 5~11 | 12~26 |
2 | 3 | 4 | 5 |
检验位是多少
例子10011101
插入ab1c001d1101(字母表示校验码
a的确定由第1,3,5,7,9,…位确定
bcd的确定由下表的规律:
检验码所在海明码的位置 | 检验的 海明码的位数 |
1(P1) | (1) 3 5 7 9 11 13 15 17 19 21 23 |
2(P2) | (2),3 6,7 10,11 14,15 18,19 22,23 |
4(P3) | (4),5,6,7 12,13,14,15 20,21,22,23 |
纠错方法
这里介绍的只能纠错一位:
引入指错码G1 G2 G3 G4 G5
也就是第i个指错码是 第i个检验位的值 异或 它之前检验的值
根据奇偶校验的性质,G为1,表示G对应的检验位所负责的组中出现了问题
按照先前分组的规则,纠错可以根据2进制的特点来判断:比如第1,2,8(G1,G2,G4)位校验位=1,表示第1+2+8位的数据出错
^注意
校验位本身也可能出错
(如果只出现一位错的话)将只有1个指错码是1
设计16位数据编码的海明校验编码电路
输入16位原始数据
输出16位数据位,5位海明校验位,1位奇校验位(指的是所有数据位的异或再取反)
下面这个版本是广为流传的错误版本,引以为戒↓
正确版本
校验位 | 被检验的数据位 |
P1 | D1 D2 D4 D5 D7 D9 D11 D12 D14 D16 |
P2 | D1 D3 D4 D6 D7 D10 D11 D13 D14 |
P3 | D2 D3 D4 D8 D9 D10 D11 D15 D16 |
P4 | D5 D6 D7 D8 D9 D10 D11 |
P5 | D12 D13 D14 D15 D16 |
电路
这里的检验位P1 P2 P3 P4 P5采用偶检验;想改引脚改标签名字就可以了
这里一定要慎之又慎,并且影响下一步试验
设计22位海明校验码的解码电路
输入22位校验码
输出…
原理分析
与上面我们谈到到海明校验码相比,这里多了一位奇校验码,所以能够纠两位错误,并改正一位错误:
所有指错码都为0时,奇校验码(指的是检验全部的)也为0
把指错码作为二进制的位数 得到的二进制数就是出错的数;同时奇校验码为1(具体见上面的分析)
首先奇校验码为0
指错码的变化比较大..
电路设计
奇校验码 | G1*G2*G3*G4*G5 |
|
1 | 0 | 电路设计错误 |
0 | 0 | 无错误 |
1 | 1 | 一位错 |
0 | 1 | 两位错 |
解码器的其他部分只要把编码的电路拿过来稍加改动就可以了
纠错部分比较麻烦
下面的电路包含了一些debug用的东西,
我测试过,正确,能纠错一个字,检查两位错
Decd
这是复用器decoder,默认下,你输入一个5位数 10001:
输出32位,其中第(10001)2也就是第17位输出是1,其余均为0
海明校验传输测试
测试编解码电路的正确性(最多两位错误)…
_险象
标签:ble open 实验环境 family google ati body 计算 如何
原文地址:https://www.cnblogs.com/migeater/p/9078117.html