分享一些心得与经历
这篇文章也是会先稍微讲一下原理,再给出教程。
汉字国标码转区位码实验
(这里与下一个实验一起来将有逻辑一点)
实验目的
(1)帮助学生理解汉字机内码、区位码,最终能利用相关工具批量获取一段文字的 GB2312 机内码,并利用简单电路实现 GB2312 编码与区位码的转换;
(2)学生了解字形码显示的基本原理,能在实验环境中实现汉字 GB2312 编码的点阵显示。
实验注意
实验文件data.circ 与GB2312ROM.circ应该放在同一个目录下
实验原理:
机内码:计算机内存储字符时使用的编码
区位码:4位10进制(94*94矩阵)
GB2312汉字机内码=区位码+0xA0A0
(GB2312把汉字分成94个区,每个区有94个位,所以每个汉字可以用区号和位号来表示。比如“啊”字在16区01位,区位码就是1601。)
(在GB2312中,区位码需要转换才能得到机内码。通常的转换方法是加上A0A0H,这样每个字节的最高位都是1,区分于ASCII码。比如区位码是1601,转换成十六进制是1001H,加上A0A0H就变成B0A1H,这就是机内码。)
字形码:输出汉字点阵的信息编码
点阵信息量大,所占存储空间大
用来构成汉字字库,不能用于机内存储
计数器+1使得GB2312会从中取出一个新的16位机内码,再传入到国标转区位码,转换成14位的区位码包括7位的区号,7位的位号输入字库电路,显示预先存储的1024点阵信息(32*32位)[字形码]
所以我们要先完成对国标转区位码的封装:
双击进入编辑,首先将加法器的位宽改为16
根据上述的区位、国标码之间的关系可得
区位码=国标码+FFFF-2020H+0001H=国标码+dfe0
由于采用加法器,所以用补码的形式表示,-2020H的补码为def0
所以这里引入一个常量,设置位宽为16,值为0xdef0
连接线路,构建加法转换成区位码
该国标转区位码封装完成。
汉字机内码获取实验
实验目的
(1)帮助学生理解汉字机内码、区位码,最终能利用相关工具批量获取一段文字的 GB2312 机内码,并利用简单电路实现 GB2312 编码与区位码的转换;
(2)学生了解字形码显示的基本原理,能在实验环境中实现汉字 GB2312 编码的点阵显示。
实验内容
完成国标码到区位码的转换电路后,可以在汉字显示电路中进行测试,尝试在下图所示电路中的 ROM 存储器中存入下面给出的指定句子,注意这里不允许使用逐字查码表的方式获得编码,应掌握批量转换的方法和原理。
返回汉字显示电路,接下来我们要把想要输入的汉字串的国标码(16进制码)输入GB2312中存储,我们我们要将下面这段话转成16进制,这里推荐一个网站能快速转化 传送门
12345ABCDEFGabcdefg轻轻的我走了,正如我轻轻的来;我轻轻的招手,作别西天的云彩。那河畔的金柳,是夕阳中的新娘;波光里的艳影,在我的心头荡漾。
我们要获取的就是下面16进制这列,存入GB2312中,这里我也给出可直接复制的16进制内容
A3B1
A3B2
A3B3
A3B4
A3B5
A3C1
A3C2
A3C3
A3C4
A3C5
A3C6
A3C7
A3E1
A3E2
A3E3
A3E4
A3E5
A3E6
A3E7
C7E1
C7E1
B5C4
CED2
D7DF
C1CB
A3AC
D5FD
C8E7
CED2
C7E1
C7E1
B5C4
C0B4
A3BB
CED2
C7E1
C7E1
B5C4
D5D0
CAD6
A3AC
D7F7
B1F0
CEF7
CCEC
B5C4
D4C6
B2CA
A1A3
C4C7
BAD3
C5CF
B5C4
BDF0
C1F8
A3AC
CAC7
CFA6
D1F4
D6D0
B5C4
D0C2
C4EF
A3BB
B2A8
B9E2
C0EF
B5C4
D1DE
D3B0
A3AC
D4DA
CED2
B5C4
D0C4
CDB7
B5B4
D1FA
右键编辑存储内容,将原有的值删除,复制进入16进制值
效果如下:
然后将其最小化,Ctrl+K 运行时钟计数器,最后将可以将文件在记事本中复制提交结果了。
【补充】:如果觉得时钟频率太高,不好观察,可以按照下列调节时钟频率,推荐使用8Hz.
偶校验编码设计
实验目的:
帮助学生掌握奇偶校验基本原理和特性,能在 Logisim 中实现偶校验编码电路,检错电路,理解校验码传输的原理。
实验原理:
这里我们只需要通过逻辑电路求出偶校验位,根据下列连线,注意更改一下异或门的引脚数16。
更改设置如下:
偶校验解码电路设计
实验目的:
帮助学生掌握奇偶校验基本原理和特性,能在 Logisim 中实现偶校验编码电路,检错电路,理解校验码传输的原理。
根据上一个实验可以得出最终生成的校验码为,接下来收方收到的校验码为
,利用如下公式生成检错码
。
偶校验检错码:
奇校验检错码:
若G=1,表示编码不符合奇偶性,接收到的信息有错。若G=0,表示传送没有出错,严格上讲是没有出现奇数位错。奇偶校验能够检测出任意奇数位的错误,但无法检测偶数位的错误。
因此设计出电路,并正确连线。
16位海明编码电路设计
实验目的:
帮助学生掌握海明码设计原理与检错纠错性能,能独立设计实现汉字 GB2312 编码的海明校验编码体系,并最终在实验环境中利用硬件电路实现对应的编解码电路。
原理:
海明码:
注意修改一下异或的位宽,这里不再赘述。
16位海明解码电路设计
1检错码原理与作用
检错原理当G5G4G3G2G1=0时,表示数据无传输错误,否则,表示出错。
2错误逻辑原理与设计
当发生一位数据错误时,G5G4G3G2G1所指示的数据,表示那位数据出错(例如G5G4G3G2G1=00101,则表示第5位数据出错)。若发生两位错时,G5G4G3G2G1仍不为0,由于只能纠正1位错误,故该海明编码是尽努力去纠正。因此,增加一位总的奇偶校验位G6,进行判断是一位错,还是两位错。
3纠错原理与设计
- 当G5G4G3G2G1=0,G6=0,表示数据无出错;②G5G4G3G2G1 !=0,G6=1,表示发生一位数据出错;③G5G4G3G2GG1=0,G6=1,表示该奇偶校验位出错,即发生一位出错;④G5G4G3G2G1 !=0,G6=0,表示发生两位数据出错。