设计一:计算机数据表示

一、课程设计目的

(一)第1、2关:汉字国标码转区位码实验/汉字机内码获取实验

  1. 帮助学生理解汉字机内码、区位码,最终能利用相关工具批量获取一段文字的 GB2312 机内码,并利用简单电路实现 GB2312 编码与区位码的转换;

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

(二)第3、4关:偶校验编码设计/偶校验解码电路设计

  1. 帮助学生掌握奇偶校验基本原理和特性,能在 Logisim 中实现偶校验编码电路,检错电路,理解校验码传输的原理。

(三)第5、6关:16位海明编码电路设计/16位海明解码电路设计

  1. 帮助学生掌握海明码设计原理与检错纠错性能,能独立设计实现汉字 GB2312 编码的海明校验编码体系,并最终在实验环境中利用硬件电路实现对应的编解码电路。

(四)第7、9关:海明编码流水传输实验/CRC编码流水传输实验

  1. 学生熟悉流水数据传输机制,流水暂停原理,为最终的流水 CPU 设计做好技术储备,最终学生能对实验环境提供的五段流水编码传输电路进行简单修改,实现数据编码在不可靠网络中的可靠传输。

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

  1. 学生掌握 CRC 循环冗余校验码的基本原理,能看懂串行 CRC 编解码电路,并利用所学数字逻辑知识设计实现 GB2312 编码16位数据的并行 CRC 编解码电路。

二、课程设计内容

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

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

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

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

  2. 指定句子如下:请思考数字,英文字符怎么输入和显示的。

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

(三)第3关:偶校验编码设计

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

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

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

(五)第5关:16位海明编码电路设计

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

(六)第6关:16位海明解码电路设计

  1. 在 Logisim 中打开实验资料包中的 data.circ 文件,在对应电路中完成海明校验解码电路。输入输出引脚定义如图,输入:22位校验码;输出:16位原始数据,1位检错位;2位检错位;无错误状态位。注意输入16位原始数据的每一位都已经通过分线器利用隧道标签引出,可以直接复制到绘图区使用。

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

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

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

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

img

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

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

img

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

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

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

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

img

三、课程设计步骤

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

  1. 我们要引入一个常量,将它的数据位宽确定为 16 位,同时为其赋值为 “def0”。要知道,在涉及区位码和国标码的计算里,存在区位码 = 国标码 – 2020H 这样的关系,按照补码的原理,这意味着区位码 = 国标码 + dfe0H(此处的 dfe0 就是 2020H 的补码)。随后,把这个常量和 GB2312 按要求连接到加法器上,再把加法器的输出连接到集线器上,其连线方式详见图 1.1 呈现的内容。

image-20241227202346107

图1.1 国标转区位码电路连线图

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

  1. 要把下面一段文字替换为GB2312,文字如下:

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

替换成GB2312之后,如图1.2所示:

img

图1.2 文字转换成GB2312

  1. 把刚刚获取到的文字的GB2312的值编辑到logisim十六进制编辑器中,如图1.3所示:

img

图1.3 编辑器里的数据

  1. 退出编辑器,在logisim的绘图区按CTRL+K自动运行时钟,会得到如图1.4所示:

img

图1.4 汉字电路显示结果

(三)第3关:偶校验编码设计

  1. 在绘图区放置一个异或门,并将该异或门的输入引脚位宽设定为 16 位。

  2. 把每一位数据逐一对应连接至异或门的各个引脚上,确保一位数据仅连接一个引脚,且连线之间不存在交叉现象。之后,把异或门的输出端与分线器的 16 号端口相连接,连接效果如图 1.5 所示。

    img

图1.5 偶校验电路图

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

  1. 把偶校验位传输至与数据位的数据进行异或运算,若检错位呈现奇数状态,则表明有错误产生;若检错位为偶数,则意味着数据无误。故而仅需依照图1.6进行连线操作即可。

img

图1.6 偶校验解码

  1. 传输过程中没有错误,左右两边的字相同,“检错位”不亮灯,“数据正确”亮绿灯。结果如图1.7所示:

img

图1.7 数据正确

  1. 有奇数个错误,“检错位”亮红灯,结果如图1.8所示:

img

图1.8 存在奇数个错误,亮红灯

  1. 有偶数个错误,偶校验无法检测出偶数个错误,会导致亮绿灯,如图1.9所示:

img

图1.9 偶数个错误,产生误报

(五)第5关:16位海明编码电路设计

  1. 海明编码是设置多个奇偶校验位来实现纠错能力的。连线图如图1.10所示:

    img

图1.10 海明码编码电路图

(六)第6关:16位海明解码电路设计

  1. 增设 1 位总的奇偶校验位 G6,以此来判别是一位错误还是两位错误。具体情形如下:

(1)当 G5G4G3G2G1 的值为 0 且 G6 为 0 时,意味着数据未出 现错误;

(2)若 G5G4G3G2G1 的值不为 0 且 G6 为 1,则表示发生了一 位数据错误;

(3)当 G5G4G3G2G1 为 0 且 G6 为 1 时,表明该奇偶校验位出 错,也就是出现了一位错误;

(4)若 G5G4G3G2G1 的值不为 0 且 G6 为 0,则代表发生了两 位数据错误。

  1. 借助上一个实验的方法,能够通过对各个检验位与使用了检验位的数据执行异或运算,从而获取指错字,其电路图可参照图1.11所示

img

图1.11 海明解码电路图

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

  1. 电路图如图1.12所示:

img

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

  1. 当没有错误时候,结果如图1.13所示。

img

图1.13 没有错误情况

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

img

图1.14 一位错误情况

  1. 当出现二位错误时候,结果如图1.15所示:

img

图1.15 二位错误情况

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

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

img

图1.16 CRC常用生成式

  1. 实验采取的是并行编码,可先对该16位数据按位与多项式进行模2除运算,再根据其实际数据进行异或操作。

  2. 需要通过选择器,当某一位的数据为1的时候,就选择它与多项式进行模2除运算的结果,否则就选择0。

  3. 设计电路图,电路图如图1.17所示:

img

图1.17 16位CRC编码电路图

  1. CRC解码电路连线图如图1.18所示:

img

图1.18 16位CRC解码电路图

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

  1. CRC编码流水传输连线图如图1.19所示:

img

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

四、课程设计总结

1.这是我首次接触这类实验,实验内容全然陌生,logisim 平台的操作更是棘手难题。在开启实验之前,我深知熟悉平台与理解原理的重要性。于是,我依照教学操作指南,精心设计并模拟了一些基础电路。

2.当正式进入实验连线阶段,每一关都像是布满荆棘的关卡。诸多问题接踵而至,比如加法器的数据带宽若与常量国标码位数不相匹配,连线便会呈现橙色,这警示着数据传输可能存在隐患。而向 logisim 十六进制编辑器输入 GBK 值时,4 个一组的格式要求绝不可忽视。值得庆幸的是,我发现适当调整时钟频率能够让实验现象更清晰地展现,如同在迷雾中点亮一盏明灯,使我能更好地观察和分析实验过程中的各种变化。

3.历经此次实验,我仿若在知识的海洋中收获了满满一船宝藏。我对 logisim 实验的理解不再停留在表面,而是深入其内核。在数字逻辑电路的逻辑构建、二进制数系统的运算规则、整数表示的多种形式、字符编码的奥秘以及存储器表示的原理等多方面都汲取了丰富的知识养分。这一切收获都为我后续的实验铺就了坚实的道路,提供了强大的助力,让我对未来在相关领域的探索充满信心与期待。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐