计算机组成原理--算术逻辑

这篇文章是关于计算机组成原理最后一篇文章了。饿……至少近期内不会再更新与此相关的文章了,研究这个实验箱是十一期间计划的事,之后就要准备比赛了。

一小时搞定的事,却写了一下午,唉……


这个实验箱的ALU包含11个芯片,分别是:

74LS245八路双向三态缓冲器*1, 

 74LS181四位算术逻辑单元*2

74LS273八位锁存器*2,

74LS299八位通用移位寄存器*1,

 74LS002输入与非门*!,

 74LS74双上升沿D触发器*1,

 74LS082输入与门*1,

 GAL16V8D可编程逻辑器件*2. 

看起来很复杂的样子。不过对于这个实验只用到了前三行提到的芯片。

ALU只具有运算能力而不能存储数据,所以还需要两个寄存器用来保存输入的数据。这个破实验箱(刚刚又有几个开关失灵了)把74LS273用作存储输入数据,74LS245用来传送输入的数据和输出运算结果。为了尽可能快地搞清楚ALU是如何工作的,我决定先不研究他的内部实现,先搞清楚如何使用这个实验箱的ALU UNIT提供的接口。

这个就是传说中的ALU UNIT的全貌:


要是研究算术逻辑的话只需要这些部分:


D1~D7向ALU单元输入或输出数据,

ALU_G为ALU始能,低电平有效,

LDDR1,LDDR2,寄存器始能,高电平有效,

S3,S2,S1,S0,M,CN,ALU功能选择(开关组合见附表),

SIGNAL区的T4和+PS连接(虽然没搞明白为什么要这样连,不过只有这样才能存数据)。

在进行运算之前要先把数据送入寄存器,不然计算出的结果都是无意义的。然后呢,像图片上这样连接好就可以了,注意LDDR线不要接反,虽然只是顺序的问题。

在写入数据前我决定重定义一下LDDR1为REG1,LDDR2为REG2(看起来好听多了 -ω-)。配置环境变量NORM,STEP,CLR,ALU_G高电平,用爪子推控制面板的数据开关状态到11100001,这个数据扔进REG1,于是让REG1为高电平,接着按下电建PULSE(我也不知道为啥,反正按就可以了= =)写数据到REG1。只听“啪唧”一声,数据就这么写进去了。不过这个实验箱经过无数人的蹂躏,再加上年久失修,开关都不好用了。万一数据写错了肿么办?把数据读出来就可以了啊。查 74LS181手册可知,当S3,S2,S1,S0,M,CN全部为高电平时输出REG1中的数据。那就试试看吧……

Oyeah~校验数据相同,数据没写错~

然后要给REG2写数据了,写点啥好呢?写00011110吧,取个反而已。好,写REG2开始~REG2,SW_G高电平,写数据00011110,最后戳PULSE一下。貌似写进去了顺便也校验数据下吧。查芯片手册可知,当S3,S2,S1,S0,M,CN的状态是101011的时候,74LS181输出REG2中的数据。很不巧,这次写了四次才把数据写对。

看下74LS181的芯片手册还能做什么运算。如果想知道REG1中的数据取反的话,要将S3,S2,S1,S0,M,CN拨到00001x的状态,此时CN的状态对运算无影响,用x表示。那顺便也把S0123什么的也重定义一下吧。假设S3,S2,S1,S0,M,CN,从左到右排列,且每位的相对位置在任何情况下都不会改变。那么,当要进行有进位算术运算A乘B时,它对应的状态就是101100。

经过这样重定义之后,拨开关的效率比以前高多了。也可以列一个长长的表格,把运算功能和他对应的指令对应起来。说到指令,大家有想到汇编指令么?没错,汇编指令就是把机器指令再做一次抽象。但问题是,为了计算1加1等于几这样的问题而去研究一套汇编语言是不是有点小题大做了= =在机器指令写程序复杂到失控的情况出现之前就去研究汇编是无价值,无意义的。

在进行000000运算时,不小心碰了一下REG1开关,然后数据总线的亮灯顺序就跟刚才不一样了,而且REG1的开关是边沿有效的,这是为什么呢?虽然原理看似很简单,但我认为在没有充分准备好之前就去探索未知的东西是不明智的,说不定从一开始努力方向就错了,于是继续选择性无视(-ω-)为了更直观地看清REG1+1之后的结果(其实没差啦),把数据总线显示的结果输出到数码管显示器上,REG1接到时钟接口上就能看到数码管不停的在闪了,从00到FF循环一次大约需要0.5秒,用示波器测得实验箱的时钟频率保持在310Hz以上。嗯,效果不错。

OVER

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值