前言:
本帖仅为在下的加法计算器的部分教程并非整个计算器 |
1.此颜色and字体均为注释 2.【】内的为模块标题,模块内的“1. 2.”为模块序号,各个模块互不相关。 3.每个模块的讲解均带有Logsim版和MC版 4.该颜色字体为特别注意事项 5.该字体颜色为模块关键(详解)部分6.本贴图片较多,打开折叠请做好准备 7.如果您没有一定的红石基础,或许看帖的过程中您会晕头转向。推荐阅读:【sjjklh红石基础教程系列】索引贴 【TRP红石进阶教程系列】索引贴 7.为方便大家阅读,本帖会尽量减少专业语言。 |
教程开始:
part①:
【基础单元】 1.半加器: 半加器真值表: ![]() 半加器电路(Logisim): ![]() ①注:A—输入1;B—输入2;S—和(计算结果);C—进位 半加器的组成:首先大家知道在二进制中0+0=0 1+0=1 0+1=1 1+1=10;这就是一个单位加法计算过程,那么我们要怎么样才能用红石来完成这个计算过程呢?仔细想一下就会发现,异或门可以完成大部分的过程,对于缺少了的进位输出我们只需要把a和b的输入连成一个与门即可。 MC版半加器教程:大家看到普通的的异或门 ![]() ![]() ![]() 从之前的一个异或门的图中可以看出,还需要在这两个非门之间加一个控制的与门 ![]() ![]() ![]() ![]() 2.全加器 全加器真值表: ![]() 全加器电路(Logisim): ![]() ①注:A为输入1;B为输入2;S为输出(计算结果);C1为进位输入;C2为进位输出 全加器的组成:根据Logisim的电路可得知:全加器就是由两个半加器组成的,那为什么需要两个半加器呢?原因如下:根据半加器的特性,1+1=10对吧,但是根据半加器的电路可得知:当半加器为1+1时,半加器的输入都是1因而如果此时再来一个进位信号就无效了。举个例子:如果光光使用半加器,计算11+11的时候结果就会为100,但是正确答案为110,那是因为半加器进位要直接接入输入端(A/B)此时都为1,因而占用了进位的输入空间,所以我们需要两个半加器。从Logisim的电路可以看出:第一个半加器的输出直接连上了第二个半加器的其中一个输入,这并不影响计算结果,这时我们就可以把第二个半加器的另一个输入留给进位~\(≧▽≦)/~啦啦啦。当然可能还有人会问:为什么两个半加器的输入都要连一个与门还要再连到或门去呢?举个例子你就知道了:11+1=100,如果不把第二个半加器的输入连到一起做一个进位输出的话那么11+1的计算结果就会变成10(听不懂的推荐先看MC版的图文教程),因此我们需要把两个半加器的输入分别做一个与门再用或门连在一起才能保证准确的计算。 MC版教程:首先我们先回去看一下之前的半加器的总览 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 3.小结:全加器是加法算阵最基础的地方,也是最重要的地方,而半加器又是全加器的重要部分,因此理解透彻半加器,学会运用、制作半加器是非常重要的。下一part会讲到BCD运算的重要部分(什么是BCD码? BCD码,就是用4位一组2进制数来表示10进制数 )总之大家要想真正学会组装一个加法算阵,首先必不可缺的就是全加器和半加器。 |
part②:
【进阶组件】 1.BCD全加器 电路(Logisim): ![]() ①注:正方形的方框为1位全加器 ②注:只有左下方的8个输入端为输入,其余输入端均为保证电路正常运行。 BCD全加器功能及组成:如果单单用多位全加器,那么输入和输出的译码部分就会变得很麻烦,因此我们采用自带有BIN-BCD的全加器;当这种全加器的计算结果不为BCD码时,就会自动将其译成BCD码,所以我的整个算阵都是在用BCD码运算。首先,我们举几个例子:1.1001+1=1010我们知道BCD码只有1至9,最大数仅为1001;那么如果我们将其译成BCD码的结果就是0000并向前进1,我们要怎么做呢?LZ发现了一个规律(不知道别人有没有发现过):当计算结果大于1001时,我们只要在计算结果上+110,的出来的结果就是BCD码。回到前面的例子,1010+110就等于1 0000这就满足了结果为0000并向前进1的正确结果。我们再换几个数试试:111+1001=10000,1 0000+110=1 0110也满足了BCD所需要的条件。那么根据这个规律,我们就可以在一个普通的四位全加器上改造一下,根据Logisim电路可得知:图中我用了8个全加器,前四个是一个普通的四位全加器,而这个四位全加器的输出又接上了一个四位全加器;当然改造的地方就是输出电路。我们先列举出大于1001的四位数:1010 1011 1100 1101 1110 1111大家看一下,前两个数字都含有1010,其他的数字都含有1100;由此我们可以得知:只要我们在输出线路的地方做上1010的与门和1100的与门,再接上一个或门输出,那么只要前一个四位全加器计算的结果大于1001,这个或门就会有输出;然后我们再把或门的输出接入110的输入,也就达到了自动译成BCD码的过程。这也就是一个四位BCD全加器。 MC版教程:先是1010和1100的与门 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 2.多个BCD全加器的组合: MC版教程:(Logisim的就算了,不好理解):我们先把四个四位BCD全加器拼在一起 ![]() ![]() ![]() ![]() ![]() ![]() ![]() 3.小结:只要理解透彻、善于运用全加器这些都不算什么难题,所以还是推荐先巩固好基础。 |
part③:
【输入与输出】
1.锁存输入: 组成及功能: ![]() ![]() ![]() ![]() ![]() 2.译码输出 对于译码输出,我们只需要做几个与门就好了。首先我们先像这样延长输出 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
本次教程共用图片61张,13859字节。存档:http://www.mcbbs.net/forum.php?mod=viewthread&tid=159023&extra= 我觉得这些如果从细节去解析的话会很容易学会,祝君早日成为大师~~~~ 接下来是吐槽:去你丫的这坑坑了我两个多星期啊 ![]() ![]() ![]() ![]() ![]() (ps: ![]() |