华中科技大学 计算机组成原理 上机实验1 2018

实验目的

  • GB2312 区位码
  • 字模码
  • 奇偶校验校

    • 验位
    • 检错
  • 海明码编解码电路基本原理
  • 流水数据传输机制,流水暂停原理

实验环境

(以下文字仅供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

海明校验传输测试

测试编解码电路的正确性(最多两位错误)…

_险象

原文地址:https://www.cnblogs.com/migeater/p/9078117.html

时间: 2024-08-13 22:02:50

华中科技大学 计算机组成原理 上机实验1 2018的相关文章

[转]华中科技大学 计算机组成原理 上机实验2 2018

notice : 这篇文章仅仅具有上机实验的参考作用,并且需要配套的文件 Logisim学习 ? 隧道 ? 相当于局部变量 复用器-Bit-Selector? 把(West edge)输入数据从最低位开始,平均分成n组,n由输出位宽决定; 另一个输入(South egde)决定选择第i组数据 用到的组件总结 ? Wiring→Bit Extender,Constant,Tunnel,Probe Gates→- Plexers→Multiplexer,Decoder,Bit Selector Ar

2000年华中科技大学计算机研究生机试真题 阶乘

题目1179:阶乘 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4993 解决:1464 题目描述: 输入n,求y1=1!+3!+...m!(m是小于等于n的最大奇数)y2=2!+4!+...p!(p是小于等于n的最大偶数). 输入: 每组输入包括1个整数:n 输出: 可能有多组测试数据,对于每组数据,输出题目要求的y1和y2 样例输入: 4 样例输出: 7 26 来源: 2000年华中科技大学计算机研究生机试真题 #include <iostream> #include <

2000年华中科技大学计算机研究生机试真题 对称矩阵

题目1180:对称矩阵 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2518 解决:1295 题目描述: 输入一个N维矩阵,判断是否对称. 输入: 输入第一行包括一个数:N(1<=N<=100),表示矩阵的维数.接下来的N行,每行包括N个数,表示N*N矩阵的元素. 输出: 可能有多组测试数据,对于每组数据,输出"Yes!”表示矩阵为对称矩阵.输出"No!”表示矩阵不是对称矩阵. 样例输入: 4 16 19 16 6 19 16 14 5 16 14 16 3

2005年华中科技大学计算机保研机试真题 找位置

题目1199: 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 #include <vector> 5 using namespace std; 6 struct node{ 7 vector<int> v; 8 }; 9 node map['z'+1]; 10 int main(){ 11 string s; 12 while(cin>>s){ 13

Java语言程序设计 上机实验5 异常

Java语言程序设计 上机实验5 实验目的: 理解异常的概念,掌握Java的异常处理机制.常见异常的捕获方法.自定义异常及其抛出和捕获方法. 实验内容: 常见异常的捕获: 编写一个程序,分别生成ArrayIndexOutOfBoundsException类型和NumberFormatException类型的异常:然后改写程序,对这两种类型的异常进行捕获并合理地处理. 另外,思考并回答问题:能否0同时抛出ArrayIndexOutOfBoundsException类型和NumberFormatEx

Java语言程序设计 上机实验4 掌握声明接口、一个类实现接口的声明和使用方法

Java语言程序设计 上机实验4 实验目的: 理解接口的作用,理解接口和实现接口的类的关系,掌握声明接口.一个类实现接口的声明和使用方法:熟悉Java语言包和实用包中的常用类. 实验内容:(*)为选做 声明圆柱体类Cylinder,继承椭圆类Ellipse(实现周长Perimeter接口和面积Area接口),为圆柱体类设计较为全面的构造方法,并实现体积Volume接口,计算表面积和体积. 将Java的若干关键字(15个以上)保存在一个字符串数组中,对其按升序排列,再采用顺序查找和二分法查找,判断

lingo运筹学上机实验指导

<运筹学上机实验指导>分为两个部分,第一部分12学时,是与运筹学理论课上机同步配套的4个实验(线性规划.灵敏度分析.运输问题与指派问题.最短路问题和背包问题)的Excel.LONGO和LINDO求解方法和3个大综合作业,并配有解答和操作的视频:第二部分16学时,介绍LINGO求解运筹学中线性.整数等问题,主要侧重介绍解决大规模的运筹学问题,包含10个实验和1个综合大实验,并附有求解过程.答案及相应的视频,且答案经过上课检验全部正确.建议在上完“运筹学”的理论课和基本了解Excel.LONGO和

计算机组成原理 课程设计报告

        计算机组成原理 课程设计报告      成员:许恺   2014011329          胡强勇  2014011315     时间:2016.12.20                 一.简要总结计算机组成原理实验 计算机组成原理实验总共五个实验,首先我们熟悉了教学机的使用方法,后面的实验我们分为运算器.存储器.控制器,控制器分为两次实验.紧接的第二次实验我们就进行了运算器的实验,对运算器的内部构造极其原理进行了验证理解,在这里我们学习了运算器ALU的8种运算功能,以

5. 蛤蟆的计算机组成原理笔记五输入输出系统

5. 蛤蟆的计算机组成原理笔记五输入输出系统 本篇名言:"质朴却比巧妙的言辞更能打动我的心. --莎士比亚" 欢迎转载,转载请标明出:http://blog.csdn.net/notbaron/article/details/48037245 1.  输入输出系统 1.1             I/O 软件 (1) I/O 指令 CPU 指令的一部分 (2) 通道指令 通道自身的指令 1.2             I/O设备与主机信息传送的控制方式 1. 程序查询方式 2. 程序中