【自己动手画CPU】计算机数据表示

简介: 【自己动手画CPU】计算机数据表示



🌷1. 闯关目的

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

(1) 掌握汉字机内码、区位码,最终利用相关工具批量获取一段文字的 GB2312 机内码,并利用简单电路实现 GB2312 编码与区位码的转换;

(2) 理解字形码显示的基本原理,能在实验环境中实现汉字 GB2312 编码的点阵显示。

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

(1) 掌握汉字机内码、区位码,最终利用相关工具批量获取一段文字的 GB2312 机内码,并利用简单电路实现 GB2312 编码与区位码的转换;

(2) 理解字形码显示的基本原理,能在实验环境中实现汉字 GB2312 编码的点阵显示。

🌼第3关:偶校验编码设计

(1) 理解校验码传输的原理;

(2) 掌握奇偶校验基本原理和特性,在 Logisim 中实现偶校验编码并且检查电路。

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

(1) 理解校验码传输的原理;

(2) 掌握奇偶校验基本原理和特性,在 Logisim 中实现偶校验编码并且检查电路。

🌼第5关:16位海明编码电路设计

(1) 掌握海明码设计原理与检错纠错性能,能独立设计实现汉字 GB2312 编码的海明校验编码体系;

(2) 实现利用硬件电路对应的编解码电路。

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

(1) 掌握海明码设计原理与检错纠错性能,能独立设计实现汉字 GB2312 编码的海明校验编码体系;

(2) 实现利用硬件电路对应的编解码电路。

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

(1) 熟悉流水数据传输机制,流水暂停原理,为最终的流水 CPU 设计做好技术储备;

(2) 对实验环境提供的五段流水编码传输电路进行简单修改,实现数据编码在不可靠网络中的可靠传输。

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

(1) 掌握 CRC 循环冗余校验码的基本原理,能看懂串行 CRC 编解码电路;

(2) 利用所学数字逻辑知识设计实现 GB2312 编码16位数据的并行 CRC 编解码电路。

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

(1) 熟悉流水数据传输机制,流水暂停原理,为最终的流水 CPU 设计做好技术储备,

(2) 能对实验环境提供的五段流水编码传输电路进行简单修改,实现数据编码在不可靠网络中的可靠传输。


🌷2. 闯关内容

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

在 logisim 中打开实验资料包中的 data.circ 文件,在对应电路中完成国标码转区位码的子电路设计。其中输入引脚为16位的 GB2312 双字节国标码;输出为区号和位号(区号位号均从1开始计数),转换子电路引脚定义,请在电路中复制对应隧道标签信号使用,注意不要增改引脚,不要修改子电路封装,以免影响子电路在其它电路模块中的正常调用。

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

完成国标码到区位码的转换电路后,可以在汉字显示电路中进行测试,尝试电路中的 ROM 存储器中存入下面给出的指定句子,注意这里不允许使用逐字查码表的方式获得编码,应掌握批量转换的方法和原理。

指定句子如下:

12345ABCDEFGabcdefg轻轻的我走了,正如我轻轻的来;我轻轻的招手,作别西天的云彩。那河畔的金柳,是夕阳中的新娘;波光里的艳影,在我的心头荡漾。

🌼第3关:偶校验编码设计

在 logisim 中打开实验资料包中的 data.circ 文件,在对应电路中完成偶校验编码电路。输入:16位原始数据;输出:17位校验码(16位数据位+1位校验位),其中校验位存放在最高位,注意输入16位原始数据的每一位都已经通过分线器利用隧道标签引出,可以直接复制到绘图区使用。

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

在logisim中打开实验资料包中的 data.circ 文件,在对应电路中完成偶校验检错电路。输入:17位校验码,校验位存放在最高位;输出:16位原始数据,1位检错位;注意17位校验码的每一位都通过分线器利用隧道标签引出,方便实验时使用。

🌼第5关:16位海明编码电路设计

在 logisim 中打开实验资料包中的 data.circ 文件,在对应电路中完成海明校验编码电路。输入:16位原始数据;输出:22位校验码(16位数据位+5位校验位+1位总校验位),注意输入16位原始数据的每一位都已经通过分线器利用隧道标签引出,可以直接复制到绘图区使用。

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

在 logisim 中打开实验资料包中的 data.circ 文件,在对应电路中完成海明校验编码电路。输入:16位原始数据;输出:22位校验码(16位数据位+5位校验位+1位总校验位),注意输入16位原始数据的每一位都已经通过分线器利用隧道标签引出,可以直接复制到绘图区使用。

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

将海明编码传输过程分成了5个阶段(取数,编码,传输,解码,显示)类似 CPU 指令流水线的处理过程。中间蓝色长条为流水接口部件(内部实际是若干锁存器/寄存器,用于锁存数据和控制信号),流水接口部件提供同步清零控制信号,试启用时钟自动仿真运行该电路(CTRL+T),观察接收方接受到的信息,当发生两位错时,将会发生错误。

尝试使用最少的器件简单修改该电路,使得解码阶段出现两位错时,系统能自动重传出错的编码(类似指令流水线中的分支跳转),从而使得该电路能正确传输所有数据。

解题思路:当出现两位错时,首先要将编码阶段和传输阶段的数据清空,这部分数据会导致接收端数据顺序不一致,同时要将已经进入显示阶段的数据锁定,并将取数阶段的地址回滚到正确的位置。

图1-1

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

在 Logisim 中打开实验资料包中的 data.circ 文件,尝试利用纯组合逻辑电路实现 CRC 并行编解码电路。输入:16位原始数据;输出:22位校验码(16位数据位+5位 CRC 校验位+1位偶校验位),注意输入16位原始数据的每一位都已经通过分线器利用隧道标签引出,可以直接复制到绘图区使用。

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

将 CRC 编码传输过程分成了5个阶段(取数,编码,传输,解码,显示)类似 CPU 指令流水线的处理过程。中间蓝色长条为流水接口部件(内部实际是若干锁存器/寄存器,用于锁存数据和控制信号),流水接口部件提供同步清零控制信号,试启用时钟自动仿真运行该电路(CTRL+T),观察接收方接受到的信息,当发生两位错时,将会发生错误。

尝试使用最少的器件简单修改该电路,使得解码阶段出现两位错时,系统能自动重传出错的编码(类似指令流水线中的分支跳转),从而使得该电路能正确传输所有数据。

解题思路:当出现两位错时,首先要将编码阶段和传输阶段的数据清空,这部分数据会导致接收端数据顺序不一致,同时要将已经进入显示阶段的数据锁定,并将取数阶段的地址回滚到正确的位置。


🌷3. 闯关步骤

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

图1-2

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

图1-3

🌼第3关:偶校验编码设计

图1-4

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

图1-5

🌼第5关:16位海明编码电路设计

图1-6

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

图1-7

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

图1-8

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

图1-9

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

图1-10


4. 闯关总结

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

1. 注意把data.circ 与GB2312ROM.circ放在同一目录下,否则上传平台时测试显示该路径文件不存在。

2. 常量默认输入为十进制,此次试验需要输入十六进制故增加0x开头。

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

1. 需要提前找到相关汉字的16进制对应值如何edit进去并且保持。

2. 解决测评时系统提示找不到GB2312ROM.CIRC方法:将data.circ与GB2312ROM.circ剪切移动到一个新目录中,再次打开data.circz来的G找不到原来的B2312ROM.circ,当提示找不到该文件的时候点击同目录的GB2312ROM.circ,存盘退出再次提交测试。

🌼第3关:偶校验编码设计

1. Educoder平台实际输出XXXX原因:电路的封装引脚可能因为增删改引脚发生变化,系统测试时对应的输出引脚未正确连接。

2. 需要仔细检查待测电路的封装,目前所有框架文件均提供了待测电路的封装测试子电路,引脚和连线特别容易错位。

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

1. 偶校验可描述为给每个码字加一校验位,用此构成偶性校验。可知附加码元d2是用来使每个字成为偶性的。因此若有一个码元错的,则很容易分辨。

2. 因为奇偶校验将成为奇性。奇偶校验编码通过增加一位校验位来使编码中1个个数为奇数(奇校验)或者为偶数(偶校验),从而使码距变为2。因为其利用的是编码中1的个数的奇偶性作为依据,所以不能发现偶数位错误。

🌼第5关:16位海明编码电路设计

1. 实验大体解题思路:实验要求设计22位海明编码(16位原始数据+5位海明检验位+1位总奇偶校验位)。由于16位原始数据已经存在,因此我们只需设计5位海明校验位的电路和一位总奇偶校验位的电路。

2. 如何计算5位海明校验位:k+n<=2^r-1,此时k=16,r=5(有5位的校验位),因此总的数据位数有16+5+1(总的奇偶校验位)=22位。设校验位为Pi(i=1,2,3,4,5),分别位于22位数据的第2的i-1次方的位置上,故分别位于第1,2,4,8,16位上,按此设计电路即可通关。

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

1. 实验大体要求:对22位海明编码进行解码成原来的16位,且判断是否出错,有一位错,两位错,还有无错。对于一位错需要进行纠正。

2. 判断是否出错:设置六位指错字,Gi(i=1,2,3,4,5,6),其中G5G4G3G2G1是进行判断是否数据出错,G6是总的奇偶校验位,可以用来检验数据是一位错,还是两位错。

3. 检错原理:当G5G4G3G2G1=0时,表示数据无传输错误,否则,表示出错。当发生一位数据错误时,G5G4G3G2G1所指示的数据,表示那位数据出错(例如G5G4G3G2G1=00101,则表示第5位数据出错)。若发生两位错时,G5G4G3G2G1仍不为0,由于只能纠正1位错误,故该海明编码是尽努力去纠正。在纠正数据,首先得到原始16位数据,可采用解码器对出错位进行输出,再与原来的数据进行异或,即可获得纠正后的数据。

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

1. 选用选择器,当无发生两位错误时,此时箭头所指的输入端为0,此时选择器选择第0位的数据输入即将01输入,常量和加法器,寄存器够成的电路实现的是x=x+01的功能,即类似于计数器。因此无发生两位错时,不需进行地址回滚。

2. 发生两位数据出错时,此时输入的是fd,即-3(8位二进制)的补码表示,因为此时是加法器,因此减3,要用补码进行表示成fd,从而实现地址回滚。

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

1. 解题思路:实验输入的为16位数据,输出22位CRC编码数据包括16位原始数据,6位校验位,其中一位为总的奇偶校验位(校验位的位数也可由k+r<=2^r-1得到)。因此此时的r=5(不包含奇偶校验位),选择的多项式G(x)位数则为r+1=6位,此时选择多项式是G(x)=100101(该多项式不固定,选择其它六位的多项式也是可以的)。

2. CRC编码原理:原始16位数据Q(X),左移r=5位成21位Q’(x)(即后面补r个0),再与多项式100101做模2运算,得到的r位的余数,将该余数替换掉Q’(X)后面的r位,即将它后面的r个0替换成该余数,r5r4r3r2r1便是得到的余数,而r6是总的奇偶校验位,对所有数据进行异或便可得到该偶校验位r6。

3. 根据选择器的选择原理,将16位数据Di(i=1,2…16)作为选择端控制每位数据输入的是00还是该位与多项式进行模2运算后的余数,最后将最终输入的16个5位数据进行异或,即可得到最终的余数。

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

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

2. 解码的电路设计,常量0和余数都是五位,所以设置其对应器件位宽均为5位。

目录
相关文章
|
2月前
|
存储 缓存 人工智能
计算机的CPU
计算机的CPU
21 1
|
6月前
|
缓存 测试技术 数据中心
【计算机架构】计算 CPU 动态功耗 | 集成电路成本 | SPEC 基准测试 | Amdahl 定律 | MIPS 性能指标
【计算机架构】计算 CPU 动态功耗 | 集成电路成本 | SPEC 基准测试 | Amdahl 定律 | MIPS 性能指标
256 0
|
6月前
|
算法 编译器
【计算机架构】响应时间和吞吐量 | 相对性能 | 计算 CPU 时间 | 指令技术与 CPI | T=CC/CR, CC=IC*CPI
【计算机架构】响应时间和吞吐量 | 相对性能 | 计算 CPU 时间 | 指令技术与 CPI | T=CC/CR, CC=IC*CPI
285 0
|
7月前
什么是计算机 cpu 的地址总线?
什么是计算机 cpu 的地址总线?
134 0
|
3天前
|
存储 算法 Linux
【计算机操作系统】深入探究CPU,PCB和进程工作原理
【计算机操作系统】深入探究CPU,PCB和进程工作原理
|
2月前
|
存储 人工智能 并行计算
计算机架构:漫游CPU的奥秘世界(二)
计算机架构:漫游CPU的奥秘世界
54 0
|
2月前
|
存储 人工智能 缓存
计算机架构:漫游CPU的奥秘世界(一)
计算机架构:漫游CPU的奥秘世界
62 0
|
5月前
|
JavaScript 前端开发 Java
关于对计算机发展史、冯诺依曼体系、CPU基本工作流程以及关于编程语言的简单认识
关于对计算机发展史、冯诺依曼体系、CPU基本工作流程以及关于编程语言的简单认识
|
5月前
|
存储 缓存 C语言
内存与CPU:计算机默契交互的关键解析
内存与CPU之间的密切互动是计算机运行的关键。从RAM到Cache,内存的物理结构和读写过程都影响着计算机的性能。指针在内存中的作用至关重要,就像楼房模型和数组一样,帮助我们理解内存的工作原理。了解内存的重要性,是深入了解计算机运行的第一步。
内存与CPU:计算机默契交互的关键解析
|
5月前
|
存储 缓存 Java
揭秘计算机指令执行的神秘过程:CPU内部的绝密操作
本文介绍了计算机指令和CPU如何执行指令。它解释了计算机指令可以被视为CPU所理解的语言,不同的CPU支持不同的指令集。文中重点介绍了MIPS指令集作为示例。同时,还描述了CPU的内部处理过程,包括控制单元、算术逻辑单元和数据单元。文章最后讨论了CPU和内存之间通过地址和数据总线进行的数据传输。
105 1