新聞中心
該文章需要整理以符合格式指導(dǎo)。
討論

在麗江等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站建設(shè)、網(wǎng)站制作 網(wǎng)站設(shè)計制作按需網(wǎng)站建設(shè),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計,成都全網(wǎng)營銷,外貿(mào)營銷網(wǎng)站建設(shè),麗江網(wǎng)站建設(shè)費用合理。
請幫助優(yōu)化文章格式來讓它符合格式指導(dǎo)。
目錄
- 1 加法器
- 1.1 第一個版本
- 1.2 單列版加法器
- 1.3 第二個版本
- 1.4 第三個版本
- 1.5 快速加法器
- 1.6 活塞加法器
- 1.7 4位加法器
- 1.8 交替式4位加法器
- 2 減法器
- 3 邏輯單元
- 3.1 算術(shù)邏輯單元(ALU)
加法器[ ]
第一個版本[ ]
全加器的游戲截圖
- 全加器
一個全加器接受兩個輸入位A、B以及一個來自低位的進(jìn)位,并輸出一位和以及向高位的進(jìn)位。它依賴于2個異或門,2個與門和1個或門。經(jīng)過一些方面的考慮后,這些邏輯門結(jié)構(gòu)可以被壓縮
如圖,A、B是兩個輸入位且C'是來自低位的進(jìn)位。它產(chǎn)生一個和(S)以及向高位的進(jìn)位(C)。當(dāng)多個全加器單元連接在一起時,將下一個全加器的C'和當(dāng)前全加器的C連接起來,以便產(chǎn)生的進(jìn)位能夠向高位傳遞。
全加器示意
- 半加器
半加器和全加器幾乎相同,但沒有第二個異或門并且直接從第一個異或門輸出和(S)。它沒有來自低位的進(jìn)位(C'),但向高位的進(jìn)位(C)仍然在第一個異或門頂端且向第一個全加器產(chǎn)生一個進(jìn)位。有的運算器不使用半加器作為第一位,以支持增量(允許向第一位進(jìn)位)。
單列版加法器[ ]
- 全加器
2格寬全加器的游戲截圖
這種全加器相似于上面的那種,除了事實上它兩格寬且易于對齊。這樣的設(shè)計對于最小化水平空間是相當(dāng)有用的,而且可以被成列地建造并接入兩條紅石總線,消除因擴(kuò)張總線以接入擴(kuò)大規(guī)模的加法器(的要求)致浪費的空間。
全加器的示意圖
| 教程視頻(在 YouTube 上觀看) |
|---|
第二個版本[ ]
- 全加器
使用的邏輯門:同或門(2),蘊涵門,非門,或門,與門
尺寸:6×12×5(包括輸入輸出信號占用的空間)
這個加法器將取2個輸入位A、B和1個低位的進(jìn)位C(事實上是C的否定C而并非是C,即示意圖中Layer 1左下角紅石端的信號值)并將它們相加,產(chǎn)生一個和位(S)和一個向高位的進(jìn)位(這里同樣是C的否定C而并非是C)。
使用上述的邏輯門時,請注意輸入和輸出。你可能想知道為什么有那么多反相的信號位用以代替常規(guī)的信號位。
上述加法器使用了同或門而不是異或門,因為這樣設(shè)計更加緊湊。同理,我們使用蘊含門來代替與門,這樣能夠更加緊湊。
因此對于(結(jié)構(gòu))最緊湊的加法器,必然要使用反相的信號。這些加法器太復(fù)雜,很難用(每格可以容納2層的)平面圖來表示,所以將每一層都單獨表示為一張示意圖以使建造過程更加清晰易懂。
全加器的示意圖
- 半加器
使用的邏輯門:同或門,蘊含門
尺寸:5×4×4
這個加法器將2個輸入位相加得到結(jié)果作為和輸出(S)。如果2個輸入位的信號值都是1,進(jìn)位C將會得到1(C將會是0)??梢詫@個半加器進(jìn)行修改來獲得一個非反相的輸出C,但使用這個半加器才能作為一個全加器鏈(多位全加器)的起始部分。
拓展: 對于剛接觸紅石的人來說,這樣更容易理解:我們說輸出位C有一個非門將信號反相并連接到一個鐵門、活塞門之類的門,輸出位S連接到一些黏性活塞來控制地面陷阱。假設(shè)有一個1×1×1的方塊不受黏性活塞影響,稱之為安全方塊。當(dāng)輸入位A有紅石信號時,門打開的同時,地面也會打開,如果你站在安全方塊上,你就不會掉下去。輸入位B只控制地面,但如果輸入位A有紅石信號,則輸入位B會同時控制這二者。(同理)當(dāng)兩個輸入位都有紅石信號時,輸入位A只控制地面。這意味著如果你離開服務(wù)器的時候不想讓任何人進(jìn)來,你可以給輸入位A和B加上紅石信號,當(dāng)其他人移除輸入位A的紅石信號時,地面會打開,但門依然是關(guān)閉的。即使他們知道這個秘密也仍然不能進(jìn)來。
半加器的示意圖
第三個版本[ ]
- 全加器
尺寸:5×6×3
每位進(jìn)位都是相互對齊的,這樣可以方便地串聯(lián)這些子模塊。
全加器的示意圖
快速加法器[ ]
當(dāng)建造高級數(shù)字電路比如計算機和乘法器時,使用的加法器必須盡可能地快,以確保最大的運行速度。簡單的加法器存在一個基本的速度問題,許多加法器設(shè)計都嘗試改善這一問題。這個問題是進(jìn)位傳播的延遲,這是由加法器的進(jìn)位方式所引起的延遲。我們可以看如下的1111 + 0001的例子:
1111 0001 ---- 1110
這是加法運算過程的第一步,對兩個輸入異或。由于最低有效位有兩個1,這會觸發(fā)與門產(chǎn)生進(jìn)位并送往高位:
1 1111 0001 ---- 1100
此時就產(chǎn)生了問題:由于待進(jìn)位的當(dāng)前位上仍然有兩個1,所以會再次觸發(fā)向高位的進(jìn)位。這是通過將第一個半加器的輸出與低位的進(jìn)位相加來完成的,這里存在很大的問題,因為接下來你將反復(fù)產(chǎn)生向高位的進(jìn)位直到越過最高位。如果每個與門產(chǎn)生2刻的延遲,為了計算最后一步中需要相加的所有進(jìn)位,總共需要2刻×4,即8刻的時間。
如果現(xiàn)在你要計算999+1,你不會有“9 + 1 = 10,進(jìn)位1,所以9 + 1 = 10,進(jìn)位1,所以9 + 1 = 10,得到1000”這種閑得無聊的想法。在高級電路中同樣也是如此。
真正的電路工程師和有創(chuàng)造力的紅石玩家已經(jīng)設(shè)計出了計算進(jìn)位比這種串行方式更高效的電路。
順便提一下,以這種串行方式計算進(jìn)位的加法器被稱為行波進(jìn)位加法器。
活塞加法器[ ]
解決行波進(jìn)位存在的問題的最簡單、最經(jīng)典的方法之一是使用帶活塞的即時與門。這種加法器簡單快速,但由于使用活塞導(dǎo)致電路不穩(wěn)定,當(dāng)方塊因意外而掉落時,整個電路就被破壞了?;钊泊嬖跁r鐘同步上可能難以忍受的不便之處,在建造高級電路時可能會對(整個裝置)的同步時鐘產(chǎn)生嚴(yán)重依賴性。
每當(dāng)產(chǎn)生進(jìn)位時,其將會通過帶拉桿的紅石線路傳送,而不是與門。活塞收縮,進(jìn)位C被送到高位,這一過程完全沒有產(chǎn)生進(jìn)位傳播的延遲(直到信號強度耗盡)。
下面這個視頻展示了這種邏輯的一個簡單實現(xiàn)。這種設(shè)計龐大而且分散,容易看到每一個單獨的加法器部分以及進(jìn)位邏輯。
| YouTube視頻(在 YouTube 上觀看) |
|---|
4位加法器[ ]
使用的邏輯門:同或門(7),蘊含門(4)非門(4),或門(3),與門(3)
尺寸:23×12×5
注意!最低有效位(個位)在圖的左邊,這樣可以更清楚地看到從半加器到全加器的過程。如果想要通常的從左向右的輸入,請翻轉(zhuǎn)示意圖。
這個加法器將第2、第4位的輸入位(A和B)相加,每加1位產(chǎn)生一個和(S)以及一個進(jìn)位(C)。和的順序與輸入位順序相同,這意味著圖中最左邊的輸出位S代表結(jié)果的最低有效位。這是一個多位加法器的例子;加法器可以通過這種方式串聯(lián)起來以計算更多位數(shù)的數(shù)字。
4位加法器示意
交替式4位加法器[ ]
功能相同但設(shè)計不同,使用4個全加器而不是1個半加器和3個全加器。
注意:開關(guān)為輸入位A和B(頂部為低位進(jìn)位C)。
交替式4位加法器示意
減法器[ ]
減法和加法的道理是一樣的,例如,3 - 2 = 3 + (-2) = 1。因為我們已經(jīng)有了加法計算的框架,只需要添加一個負(fù)號就可以簡單地得到結(jié)果。問題在于如何表示這個負(fù)數(shù)。
我們對小學(xué)減法中向高位借位的概念很熟悉,比如這樣:
5623 - 128 -----
我們沒有辦法用3減去8,所以我們從高一位借了1以通過13減8代替(結(jié)果顯然是5)。
1
5623
- 128
-----
5
然而計算機是沒法做這種考慮的,所以當(dāng)計算機找到一個負(fù)數(shù)時,它不會也不能在前面硬添一個負(fù)號。它只會像如下這樣從高位進(jìn)行"借位"相減:
000000 - 3 ------- -999997
這在二進(jìn)制中同樣適用。讓我們用一個4位二進(jìn)制數(shù)作為例子:
1 11 111 1111 0000 0000 0000 0000 -0011 -0011 -0011 -0011 ----- ----- ----- ----- - 1 - 01 - 101 -1101
我們可以按照這個方式一直反復(fù)計算下去,但這并沒有什么用。這就體現(xiàn)了4位寄存器的作用:它將在接收到4位數(shù)據(jù)后截斷(拋棄其他數(shù)據(jù))。因此,在我們截斷這個數(shù)字之后(在這個例子中已經(jīng)得到了體現(xiàn),否則最后結(jié)果的左邊會有無窮多個1),多虧這個小技巧,我們可以對這4位數(shù)據(jù)之外的0做任何想做的事情,包括在它們之前添一個1(這將在之后被證明是非常有用的)。
10000 -0011 ----- 1101 <-- 注意:這個數(shù)字是正數(shù)!成功!
還記得我們說過我們的紅石沒有特別的方法來區(qū)分正數(shù)和負(fù)數(shù)嗎?我們只是創(chuàng)造了一種區(qū)分的方式:如果數(shù)字的符號位(最高位)是1,那么它就是一個負(fù)數(shù)。這種利用在二進(jìn)制數(shù)中的小技巧其實是一套名為“二進(jìn)制補碼”的理論。
二進(jìn)制補碼的正式定義是:
一個負(fù)數(shù)b的補碼等于2 ^ (n+1) - b,其中n是b的位數(shù)。
本質(zhì)上說,-b的補碼就是將b的補碼的各位取反(用1替換0,用0替換1)再加1。
我們所做的是將最高位變成一個"負(fù)號"(如果它是1),但如果你一直在閱讀這個頁面,你會意識到這沒有那么簡單。通常把帶有這種符號標(biāo)識位的數(shù)字稱為帶符號的整數(shù)。 在普通的加法器中,這種二進(jìn)制補碼規(guī)則并不生效,這種數(shù)字稱為無符號的整數(shù)。無符號的數(shù)字可以比帶符號的數(shù)字取到更大的值,但不能比0?。粠Х柕臄?shù)字最大只能取到無符號數(shù)字所能取到的大約一半,但可以比0小。 這意味著這兩種數(shù)字有相同長度的取值范圍,但取值區(qū)間的位置不同,比如下面的8位整數(shù)的例子:
無符號:0-255帶符號:-128-127
應(yīng)當(dāng)注意的是,當(dāng)使用最小的有符號數(shù)(在上面的例子中是-128)時,可能會出現(xiàn)一些匪夷所思的問題,所以應(yīng)該避免這種情況。
現(xiàn)在我們有了一種用正的值來表示負(fù)數(shù)的方法,將它運用到加法器中就很簡單了。目前我們可以計算
A + B
我們要計算的是
A - B
即
A + (-B)
所以,只要我們輸入B的補碼,加法器就變成了減法器。通過使用符號位(最高位)作為進(jìn)位的1,這很容易實現(xiàn)。剩下的就是如何對B求補碼。
在實現(xiàn)此功能時需要注意一件重要的事情:因為得到的結(jié)果依然是二進(jìn)制補碼,所以存在減去符號位的問題,因此要倒過來減。這個問題通常由最高位的加法器來處理。
這都可以實現(xiàn)到一個加法器中:
電路中加入了一個控制位,當(dāng)它被通入紅石信號時,就會變成一個減法器,當(dāng)沒有紅石信號時則是一個加法器。此外,在控制位和輸入B的每一位之間都增加了一個異或門,將每個異或門的輸出作為每個加法器單元真正的輸入位B。最后,為了使二進(jìn)制補碼單元兼容,需要在控制位和符號位上添加最后一個異或門。
這是在CPU中實現(xiàn)負(fù)數(shù)和減法的最簡單方法,因為它可以優(yōu)雅地進(jìn)行加法運算并將結(jié)果存儲在寄存器中。如果需要在計算器中實現(xiàn)這種操作,只需要將輸出結(jié)果減1,然后將符號位之外的每一位取反。如果數(shù)字是負(fù)數(shù),只需要將符號位設(shè)為1即可。
為了建造一個減法器,只需要對其中一個輸入按位取反即可。如果這個數(shù)是負(fù)數(shù),那么結(jié)果也是相反的。在實際的計算機中,符號位決定數(shù)字的正負(fù)性,如果將它也納入考慮(應(yīng)用相同的取反規(guī)則),你可以判斷出這到底是一個負(fù)數(shù),還是僅僅是一個較大的數(shù)字。
邏輯單元[ ]
在電路中使用一個邏輯單元可能是有用的。邏輯單元會根據(jù)控制信號來決定輸出哪種操作的結(jié)果。這樣的邏輯單元可以使用在更加復(fù)雜的電路中,比如ALU(算術(shù)邏輯單元)。
這是一個2位邏輯單元的例子,它的控制信號有4種狀態(tài)。
它的輸出在最上面一行,從左到右依次通過輸入11、00、01和10來觸發(fā)(輸入在左邊,上面是低位,下面是高位)
以下是另一個使用格雷碼的簡化版本,輸出體現(xiàn)在最上面一行紅石火把的亮滅。這種設(shè)計可以擴(kuò)展到任意的位數(shù),但考慮到時間效率的問題,一般不會超過1個字節(jié)(8位)。輸出從左到右依次通過輸入11、01、00、10來觸發(fā)。
算術(shù)邏輯單元(ALU)[ ]
算術(shù)邏輯單元(ALU)是CPU的核心部分。它進(jìn)行計算和邏輯處理,然后將結(jié)果傳遞給寄存器。ALU根據(jù)輸入來選擇一個特定的運算操作,執(zhí)行它,然后給出結(jié)果。
下圖顯示的ALU是一個1位的ALU,可以執(zhí)行下列運算:ADD(求和),AND(求與),XOR(求異或)。它接收輸入A和B,然后執(zhí)行所選擇的運算操作。閱讀加法器以了解ADD運算是如何工作的。XOR和AND運算是在邏輯電路頁面上所介紹的基本功能。
可以向ALU中添加更多的運算操作,比如乘法,除法,OR(求或),NAND(求與非)等等,這些運算都可以通過對ALU進(jìn)行一定的修改來加入到其中。
這樣的1位ALU可以相互連接起來以形成多位的ALU。就像加法器一樣,把示意圖中的C out端連接到另一個ALU的C in端即可。
1位ALU示意
這是一個Minecraft中實際建造的1位ALU的游戲截圖。你可以在這里查看它的3D示意
紅石
參見: Template:Redstone/content
[編輯]
教程(作下劃線標(biāo)記的教程為中文獨有教程) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
標(biāo)題名稱:創(chuàng)新互聯(lián)MinecraftWiki教程:加法器[]
文章起源:http://m.5511xx.com/article/cdsijce.html


咨詢
建站咨詢
