计组头哥实验 实验五 汉字字库存储芯片扩展

实验涉及使用Logisim平台构建GB2312汉字编码的16K*16点阵字库,通过4K*32和16K*32ROM组件,处理区号和位号以生成汉字点阵信息。同时,设计了一个包含32个32位寄存器的MIPS寄存器组,利用多路选择器和解复用器实现寄存器的读写选择。实验测试表明设计正确。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验目的

理解存储系统进行位扩展、字扩展的基本原理,能利用相关原理解决实验中汉字字库的存储扩展问题,并能够使用正确的字库数据填充。

实验内容

现有如下 ROM 组件,4片4K*32位 ROM ,7片  16K*32位 ROM,请在 Logisim 平台构建 GB2312 汉字编码的16K*16点阵汉字字库,电路输入为汉字区号和位号,电路输出为8×32位(16K*16=256 位点阵信息),待完成的字库电路输入输出引脚见后图,具体参见工程文件中的 storage.circ 文件,图中左侧是输入引脚,分别对应汉字区位码的区号和位号,中间区域为8个32位的输出引脚,可一次性提供一个汉字的256位点阵显示信息,右侧是实际显示区域,用于观测汉字显示是否正常。待完成字库子电路封装已经完成,请勿修改以免影响后续自动测试功能。

实验过程

1. 打开 Logisim 软件,创建新的电路文件。

2.在编辑栏中打开工具箱,选择“Project Rom”文件夹,将其中的 4 片 4K32 位 ROM 和 7 片 16K32 位 ROM 分别拖动到电路面板中,并调整它们的位置和大小。这里需要注意,每个 ROM 的输入地址线数为 12 位和 14 位,输出数据线数为 32 位。

3.在工具箱中找到字库子电路,并将其拖动到电路面板中。该子电路已经封装好了读取汉字区号和位号、计算ROM地址、读取ROM数据等功能,我们只需要连接它的输入输出引脚即可。

4. 添加输入输出引脚。根据文字要求,在电路左侧添加两个输入引脚,分别对应汉字区号和位号;在电路中间添加 8 个 32 位输出引脚,表示一个汉字的 256 位点阵信息。要注意选择正确的端口类型和数量,以确保电路能够正常工作。

5.连接字库子电路。将字库子电路的输入引脚分别连接到汉字区号和位号的输入引脚上,将字库子电路的输出引脚连接到 8 个 32 位输出引脚上。

6.连接 ROM。将字库子电路输出的 ROM 地址连接到 4 片 4K32 位 ROM 和 7 片 16K32 位 ROM 的地址输入端口上,将 ROM 的数据输出引脚连接到字库子电路的数据输入端口上。

7. 测试字库电路是否正常工作。使用仿真工具在 Logisim 中进行测试,包括输入汉字区号和位号,观测 8 个 32 位输出引脚是否能够正确显示一个汉字的 256 位点阵信息。

实验详细操作步骤

电路图

2) 设计分析与说明

    对区号和位号经过一系列处理之后计算出存储器的14位偏移地址

    其中0-11位位地址线,12和13位为片选信号

    2位片选信号用来决定选择4个4K*32中的哪一个

    12位地址线用来选择相应ROM的地址

    将选中地址内的数据输出到相应的数据线

    8个输出引脚D0-D7,每个引脚输出32位数据,总计输出8*32=256位数据,从而可以表示16*16字形点阵所需要的256位信息

输入:**汉字在GB2312编码中的区号和位号。

注意:这里区号引脚和位号引脚都只接受7个位数据,这是因为GB2312-80将汉字分为94个区和94个位,故7个位(可表示0-127)即可涵盖区间[0,94]。以“边”字为例,其GB2312编码为1763,17表示区号,63表示位号,故为了显示“边”,我们需要往区号引脚输入0010001(17),往位号引脚输入0111111(63)。

输出:**GB2312区位码对应的汉字字形码。

电路总共有8个输出引脚D0-D7,每个引脚输出32位数据,总计输出8*32=256位数据,从而可以表示16*16字形点阵所需要的256位信息。

3) 实验结果的记录与分析

 

经测试,标准库与待测字库的显示一致,字库实现正确

4) 列出操作步骤及顺序

    对区号和位号经过一系列处理之后计算出存储器的偏移地址,每个偏移地址对应一个16*16汉字点阵码

    每次使用同一个存储器偏移地址同时对8个32位ROM进行寻址,单次寻址就可获得8*32=256位数据,其中每个32位ROM保存16*16点阵码的固定两行(表示一行需要16位,两行即32位)

    将2个 4K*16 ROM位扩展成1个 4K*32 ROM(使用splitter)

    将4个 4K*32 ROM字扩展成1个 16K*32 ROM(使用multiplexer)

    字库电路的8个输出引脚(D0-D7)连接至16*16 LED点阵屏上,从而显示汉字的形状

2、MIPS 寄存器文件设计

**实验目的:**为MIPS CPU构造核心功能部件,进一步熟悉多路选择器,译码器,解复用器等Logisim部件的使用

**实验内容:**设计完成满足如下规格要求的 MIPS 通用寄存器组。

1)利用 logisim 平台构建一个 MIPS 寄存器组,内部包含 32 个 32 位寄存器,其具体功能如下,具体封装文件为 regfile.circ.

表 1 芯片引脚与功能描述

2.为减少实验中画图工作量,实验工程文件中对 5 位寄存器地址进行了简化,具体见引脚示意图,最终只需实现 4 个寄存器,0 号寄存器功能仍然是恒零。后续实验中如需要使用 32 个寄存器的 MIPS 寄存器文件组,将提供标准组件。

3.注意时钟信号和电平信号不要混连,时钟仅仅触发状态改变。

3) 实验结果的记录与分析

 

经测试,符合条件,电路设计正确

4) 列出操作步骤及顺序

输入引脚:

    分别通过reg1# reg2# write_reg#获得输入的三个寄存器编号,因为实验只要求实现0-3号寄存器,所以只需提取5位编号输入的低2位(00/01/10/11)

通过 write_data 获取要写入寄存器的32位数据,通过 WE 获取写入标志

通过 clk 获取时钟信号

输出引脚:

    将读寄存器1的值输出到reg1

    将读寄存器2的值输出到reg2

    将4个寄存器当前保存的值输出到$0,$1,$2,$3

寄存器选择输出:

    利用多路复用器(multiplexer),多路复用器可以通过select bits选择多个输入中的一个进行输出

    将四个寄存器的输出引脚同时接到多路复用器的输入引脚上,将reg1#和reg2#作为多路复用器的select bits,从而选择指定输入进行输出。

寄存器选择写入:

    利用解复用器(demultiplexer),解复用器可以将输入只通过select bits指定的线路输出。

    将write_data同时连接到四个寄存器的data引脚(由于0号寄存器恒为0,因此可以忽略data引脚,或者将en置0)

    将we引脚作为解复用器的输入

    将write_reg#作为解复用器的select bits

    通过解复用器将要写入数据的寄存器的enable引脚置1,下个时钟信号到来时,只有该写入寄存器的enable引脚为1,因此wrtie_data数据只会写入到该寄存器中(其余寄存器enable引脚为0,时钟信号不会触发寄存器写入),从而实现寄存器选择写入

 实验结果

 疑难小结

 本次实验是针对 GB2312 汉字编码的 16K*16 点阵汉字字库的构建,通过使用 Logisim 平台中的 ROM 组件和字库子电路,成功实现了汉字区号和位号到点阵信息的转换。在实验过程中,我深入了解了 GB2312 编码的原理、汉字点阵信息的存储方式以及 Logisim 中 ROM 组件和子电路的使用方法,并具备了使用 Logisim 构建字库电路的能力。

在实验中,我遇到了一些问题,比如

1.ROM 组件的选择和配置。在构建字库电路时,需要选择适当的 ROM 组件,并配置输入地址线数、输出数据线数等参数。如果选择不当或者配置错误,将会导致电路无法正常工作。

2.字库子电路的连接。字库子电路封装了读取汉字区号和位号、计算 ROM 地址、读取 ROM 数据等功能,但是要正确连接其输入输出引脚并调整参数才能发挥其作用。如果连接不当或者参数设置不正确,将会导致电路无法正常工作。

3.测试方式的选择。在测试字库电路时,需要选择合适的测试方式,包括输入汉字区号和位号、观察 8 个 32 位输出引脚是否能够正确显示一个汉字的 256 位点阵信息等方面。如果测试方式选择不当,可能会导致测试结果不准确。

通过本次实验,我也学习到了一些实用的调试技巧,比如使用仿真工具进行测试、观察波形进行调试等,这些技巧对我的电路设计以及其他实验项目也有很大帮助。

最后,我认为本次实验的收获非常大,不仅提高了我的实验技能和电路设计能力,而且拓宽了我的知识面和思维方式。我将继续努力,在未来的实验中取得更好的成果。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

真的卷不栋了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值