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

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


咨詢
建站咨詢
