玻珠是23届的 老师给的资料关键的不说 网上找到的所有资料要么不一样要么糊的要死对着都做不出来 最后自己钻研到凌晨两点才搞明白 我不许你们再熬夜啦TT
叠甲:转行刚半年不到所以不一定对,错了补药骂我呀
前言
电路图如下,我自己连的始终不知道错哪了于是用了同学的:
电路图那个线上的标号每一根都要标注,我的精神状态很好啊
简单说一下左边的开关:
- ALU_EN 是ALU部件的开关,决定是否使用ALU
- ALU_BUS 是输出开关
- SW_BUS 是输入开关
- CLK 结尾的是管时钟信号的
- ALU 打头的控制进行什么运算
- S0S1 是缓存器信号 不要动
- 红色是1,蓝色是0
所以正确的初始状态是
开始之前这几个必须按照这个打 右边那一列用的时候调对就好
开始
接下来启动仿真
我们接下来要做的事情是把两个操作数依次写进寄存器里,在这里用二进制输入你的第一个操作数 我的尾号对应是0X22,如下:
这时候你的整个界面是这样的:
这个时候你需要手动拨动时钟产生一个脉冲来把这个数字写进寄存器,操作如下
- 快速点击两下
DRA_CLK
(在左边的那一堆开关里) - 快速点击两下
r0_clk
(在右边)
怎么检查是否写入成功呢?
看一下这张图,如上操作后我把输入数字的地方改成0x00了,这个时候看右上角这里:
左边U5下面红蓝的地方 0010 0010 就是0X22 右边 U6 是刚刚新打的数字0X00 说明成功了
接下来写入第二个数字,0X55 应该是统一的 和第一个一样:
- 快速点击两下
DRB_CLK
(在左边的那一堆开关里) - 快速点击两下
r1_clk
(在右边)
一通操作之后应该是这样的,说明两个数字写进去了。
接下来开始运算,依次:
- SW_BUS 打到 1(红)
- ALU_BUS 打到 0
- ALU_EN 打到 0
接下来选定你要做的运算按照表格给的S0 S1 S2 S3 M CN拨号,我就选这个示范一下:
注意这里要拨动的是ALU开头那个,S0 S1 CLK从这个时候就不要再去动了!如果误触最好从头开始
比如这个,这个时候有朋友就要问了:玻珠我怎么和你的标识符显示不一样,其实老师给的文档里说了
中译中就是:每次动了ALU_:S0 S1 S2 S3 M CN 之后都需要再点两下ALU_BUS 刷新标识符才是真正的标识符
嗯应该没了,至少我想不起来了,按照表里给的做就完了。如果有时候突然按开关不动了结束进程从头操作下就行,有的时候会突然抽风算出很奇怪的结果。