🌷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位。