实验目的
在logisim平台构建GB2312汉字编码的16K16点阵汉字字库,电路输入为汉字区号和位号,电路输出为8×32位(16K16=256位点阵信息)。实验包中有从0到7的8个数据字库,其中4片ROM需要将HZK16_1分为4份分别输入。汉字字库本质上是利用区号和位号进行检索的字形码存储器,要显示一个汉字华,我们需要用到16位*16位的点阵信息,也就是256位信息进行数据显示,那么汉字字库的存储位宽就应该是256位。但Logisim中由于ROM最大的数据位宽只有32位,要一次提供256位的字信息是无法用单片的ROM解决的,需要使用多个ROM组件进行位扩展来达到设计的目的。
电路图布局分析
D0-D7是连接ROM的端口用来指代这些ROM,decd是译码器,CPU中sel是接译码器故为CS端,A是地址端,D是连接数据总线的一端,下方是事先准备好的逻辑地址,由于已经设置好了地址条数,因此没必要改,只需要连接好线路即可,线路连接如下。
进行国标码到区位码的转换,区位码=国际码-2020H,由于采用加法器实现,因此用补码形式进行表示,区位码=国际码+FFFF-2020H+0001H=国际码+dfe0。
分线器的配置
具体步骤:
打开文件,分析电路
用logisim打开storage.circ,该实验附带有8个文本文件,分别是对8个存储器的输入。
连接电路
用4片小容量的ROM替换16Kx32bits的芯片。采用分线器连接电路。
字库数据的复制迁移
在存储芯片中导入数据。将第一个,第3-8个数据一次复制粘贴到新的存储器中。将第2个数据划分为4部分,例如第一部分为第0000–0FF0行,编辑到第一个存储器中,第二部分为1000-1FF0……,分别对4个ROM进行编辑。
0000-0FF0 放在第一块8×32的存储器中。
1000-1FF0 放在第二块8×32的存储器中。
2000-2FF0 放在第三块8×32的存储器中。
3000-3FF0 放在第四块8×32的存储器中。
字库电路测试
使时钟频率为8Hz,Ctrl+K自动测试,在测试完成的时候上方显示区域显示的汉字应该和下面参考字库的显示完全一致。
故障与调试:
故障现象:导入字库时无法导入0-7号字库中的1号字库。
原因分析:如图,由于需要把1号字库拆分成4份,分别导入对应的4片ROM。其中对应的4片ROM从左往右,分别从ZIKU中的ROM1依次导入的行号为0000 ~ 0ff0,1000 ~ 1ff0,2000 ~ 2ff0,3000 ~ 3ff0。
解决方案:把参考字库按照行号拆分成4份,分别导入,导入后字库测试可以正常显示,没有出现丢失3-4行的现象。