1. 程式人生 > >組建一臺計算機4_硬體4 單位儲存器

組建一臺計算機4_硬體4 單位儲存器

前言:

放假有一週的時間,到家也有四五天的時間了,這幾天把《code》好好的看了一遍。儘管之前也有草草翻過,但是把時候我就曾告訴自己,無論如何都是要把書中的這些東西都實現一遍的。於是說幹就幹,這幾天基本上就在搞這些東西了。這些學習成果要感謝餘富帥給我傳的軟體以及一些推薦。

=========================================================================

閱讀此文,你需要擁有以下基礎:

1.小學代數相關知識;2.初中電路;3.高中閘電路相關知識;4.二進位制和十進位制的轉換(這一點不會也沒有關係)。

        前面三節已經解決了任意位數的加減法運算器的構造方案,提出了一些問題——人類有時候不想把什麼資料都自己記著,總是想找個東西存住他們。如何設計一個基本電路來實現呢?

        首先分析一下需求:1.在發出命令後能記住命令;2.命令發出後即使停止發出命令也能持續記住命令。

        第一點是在是太好做到了,只需要一個輸入端即可。如下圖,輸出端和輸入端保持一致。當輸入資料為1,輸出就是1,輸入0,輸出0.

image

image

但是第二點似乎有點困難。想把資料記住就意味著輸入1之後,再輸入0,輸出仍然是1.或者說輸入0之後,再輸入1,輸出仍然是0——輸出位一直保持他第一次變化的狀態。仔細想一想,為了讓輸出位出現1後一直保持1,這也不難做到——只需要把輸出和輸入取或運算即可。如圖:

剛開始,輸入輸出都是0:

image

緊接著,輸入1,輸出也變成1——記住了這個狀態:

image

當不再輸入1的時候,由於自己的輸出1支援了或運算的輸入,所以輸出仍保持1的狀態:

image

這樣一來,不論我再怎麼變化輸入端S,輸出端Q始終保持1,這就把1給記住了。

但是問題遠沒有解決——如果我想儲存‘0’,而不是‘1’怎麼辦?如果我想擦除這個記憶,再重新寫入其他資料怎麼辦?

這也很好辦!只需要增加一個輸入端來控制‘復位’即可:

image

其中R就是新加的輸入位——復位位。不難想象,當R位值為0時,這個電路和上面的電路沒有任何區別(不妨試試)。當S輸入一次1後,Q就會一直保持1的狀態,不管之後S怎麼變化:

image image

但是當R輸入端輸入1的時候不難想象會發生什麼情況——首先最上方的或運算輸出1,經過非門輸出轉變成0,所以Q會被清零。即使S端再輸入1,只要R端一直輸入1,Q就會一直是0.

image image

這樣,就可以總結一下了,如下表:

image

為什麼沒有列出R,S都是1的情況呢?試想,邊寫入資料邊復位,這不是閒的eggache嘛?儘管這樣做不會導致任何錯誤,但是沒有實際意義,所以忽略不計。

仔細觀察上表,可以得出一個結論:

1)當R,S都是0的時候Q儲存住了最近一次操作的值,巨集觀上看就是當即不寫入資料也不復位的時候,輸出埠一直保持之前存入的狀態Q(可能是1也可能是0);

2)當R,S中有一個是1時,另一個必然是相反狀態的——這時候要麼會寫入1,要麼會寫入0,而寫入的是什麼和S端的值保持一致!也就是說想要儲存什麼,就讓S是什麼,讓R取一個相反的值就好了!

當只考慮寫入資料的時候,這兩個輸入端可以歸結成一個輸入端——一個對另一個取反即可:

image(圖1)

但是我們要做的RAM是有要很多個這樣的儲存單元的,每一個儲存單元總會有‘不寫入資料’的時候,在這個時候,必須改進一下電路使得電路滿足:1.當該寫入的時候可以隨意寫入;

                                                            2.當不寫入的時候能儲存上一次寫入的狀態,並且輸入端不論怎麼輸入儲存的儲存值也不會變。

那麼應該怎麼辦呢?加入一個控制輸入埠吧~當控制埠是1的時候才能進行寫入,當是0的時候不論S端輸入什麼都不影響Q的值,這個改進的電路看起來很好理解——:

image

紅色線框內的電路就是我們之前設計好的電路的後半部分,他的輸入輸出真值表就是之前那個表格。

1)當保持位是0的時候,代表不往這個儲存元中寫入東西,不管S怎麼輸入,都不會影響到紅色的電路——兩個大大的‘與門’死活都不變——就輸出0,當兩個輸入都是0的時候,從之前的真值表不難看出,Q會保持自己之前的值——記憶住了!

2)當保持位是1的時候,代表該往這個儲存元裡寫入東西了,S的輸入將會和圖1的電路一樣(其實是等價的),寫什麼就存什麼。

好了,現在我們就可以來試一試這個儲存器到底聽不聽話了~

首先點亮(輸入1)保持位,表示我要開始寫入資料啦~

image

這時我的S端是0,也就是說往這個儲存器裡寫入0,果然Q端就是0.

現在我想寫入1,我點亮S(輸入1):

image

Q立即就變成1,寫入1成功!

現在我想把這個‘1’的狀態保持住,不再往裡寫入任何資訊了,那麼我要做的僅僅是讓保持位輸入0.:

image

這時候不論我怎麼輸入S,儲存器的Q端都牢牢的記住了我需要他記住的‘1’。比如我現在輸入S端為0,Q無所動——他已經記住之前的‘1’啦~

image

現在我們在回顧一下整個電路:保持位就相當於是一個箱子(Q)的蓋子,當他開啟(輸入1)的時候,可以把S放進去,S是什麼箱子裡(Q)就會有什麼,當把蓋子關上的時候(保持位輸入0),箱子禁閉,再怎麼放S都放不進去,裡面已經儲存了之前放進去的值了。這個過程是可重複的——我們設計的這個儲存器可以多次利用。

如果你學過C,或者瞭解過記憶體構架,就應該瞭解‘地址’這一概念,當我把許許多多個這樣的儲存元連在一起的時候,每個儲存元都有一個相應的地址,舉個例子,在C++裡面我們定義一個bool值:bool a = true,那麼計算機就會找到一個空閒狀態的儲存元,把true,也就是1寫入這個儲存元,那麼寫入的過程就可以簡單的認為是:

1.尋找空閒地址;

2.找到空閒地址(比方說是0x0001);

3.把地址是0x0001的儲存元的保持位開啟——輸入1,其他地址的儲存元的保持為關閉——輸入0;

4.這時在資料匯流排S上寫入1,這時,每個儲存元的S端都會輸入1,但是隻有地址是0x0001的儲存元的保持位是1,所以只有他一個儲存元會寫入1;

5.關閉0x0001的保持位。

這樣,1就被存到記憶體裡了。

我們稱這個儲存元叫單位鎖存器。

當然,這僅僅是一種最初始的儲存方式,隨著科技的發展不同的儲存方式層出不窮,但是理解這種最簡單的儲存方式總是沒壞處的。

但是人類總是不能滿足的,到這裡很容易得出這樣的問題:

1.保持位必須保持一段時間是1才能寫入資料,這在運算速度指數擴增的今天會不會容易導致低效和出錯?

2.怎麼樣才能保證輸入的記憶體的地址轉換成具有那個地址的獨特的鎖存器保持為輸入1,而其他鎖存器的保持位輸入0呢?

3.如何把這種鎖存器連線起來變成一個幾K,甚至幾G的記憶體晶片呢?

這些問題,我們馬上就能解決。(未完待續)

至此,一個單位鎖存器就設計完成了。

相關推薦

組建計算機4_硬體4 單位儲存器

前言: 放假有一週的時間,到家也有四五天的時間了,這幾天把《code》好好的看了一遍。儘管之前也有草草翻過,但是把時候我就曾告訴自己,無論如何都是要把書中的這些東西都實現一遍的。於是說幹就幹,這幾天基本上就在搞這些東西了。這些學習成果要感謝餘富帥給我傳的軟體以及一些推薦。 ================

組建計算機1_硬體1 單位加法器

前言: 放假有一週的時間,到家也有四五天的時間了,這幾天把《code》好好的看了一遍。儘管之前也有草草翻過,但是把時候我就曾告訴自己,無論如何都是要把書中的這些東西都實現一遍的。於是說幹就幹,這幾天基本上就在搞這些東西了。這些學習成果要感謝餘富帥給我傳的軟體以及一些推薦。 ================

組建計算機2_硬體2 多位加法器

前言: 放假有一週的時間,到家也有四五天的時間了,這幾天把《code》好好的看了一遍。儘管之前也有草草翻過,但是把時候我就曾告訴自己,無論如何都是要把書中的這些東西都實現一遍的。於是說幹就幹,這幾天基本上就在搞這些東西了。這些學習成果要感謝餘富帥給我傳的軟體以及一些推薦。 ================

組建計算機3_硬體3 多位運算器

前言: 放假有一週的時間,到家也有四五天的時間了,這幾天把《code》好好的看了一遍。儘管之前也有草草翻過,但是把時候我就曾告訴自己,無論如何都是要把書中的這些東西都實現一遍的。於是說幹就幹,這幾天基本上就在搞這些東西了。這些學習成果要感謝餘富帥給我傳的軟體以及一些推薦。 ================

組建計算機5_硬體5 多位儲存器&累加器&初始彙編(1)

閱讀此文,你需要擁有以下基礎: 1.能理解本系列第2節和第4節;2.已經閱讀了第4節。 ========================================================================= (為什麼mac總是配圖失敗呢,,)   很久沒有更新本系列了誒

5.組裝1u的伺服器(4.445cm)

組裝一臺1u的伺服器(4.445cm)   1.主要部分:     中央處理器     記憶體     晶片組     I/O匯流排     

把資料通過串列埠或USB以1秒間隔實時發給另外計算機,在另外計算機上以同樣方式顯示條形圖或趨勢曲線。

前面兩篇文章已經講過了隨機資料產生,繪製直方圖,趨勢圖,資料儲存,串列埠傳送。接下來則是串列埠接收部分的程式。 注意:如果在一臺電腦上進行除錯,需要用虛擬串列埠軟體把串列埠1,2連結起來。 // 作業Dlg.cpp : 實現檔案 // #includ

1.組裝1u的伺服器(4.445cm)

組裝一臺1u的伺服器(4.445cm)   1.主要部分:     中央處理器     記憶體     晶片組     I/O匯流排     I/O裝置     電源     機箱     相關軟體    2.伺服器的品牌:    3. 處理器:intel AMD      

在安裝Win7時,出現提示“Windows無法安裝到這個磁碟。這計算機硬體可能不支援啟動到此磁碟。請確保在計算機的bios選單中啟用了磁碟的控制器。”

        博主為小白,我在通過U盤安裝win7系統的過程中遇到了很多問題。在這裡向大家分享其中之一的解決方法。        博主電腦型號:話說(ASUS) VM590Z題外話,在安裝win7時需要將U盤插入usb2.0的插口中,避免安裝過程中的USB驅動問題。接下來回

java實現遠端喚醒計算機

1. 在BIOS設定支援網路喚醒大多數整合網絡卡都能實現網路喚醒功能,不過需要事先進入BIOS中開啟網路喚醒功能,不同主機板的設定不一樣,以VIA 主機板為例,在BIOS中找到“OnBoard LAN”選項,將它設成“Enabled”。同時將“POWER MANAGEMENT

從微軟的萬物互聯到騰訊的三網:當今世界就是計算機

智造觀點如今,以物聯網、人工智慧、大資料、雲端計算等技術為核心的科技研究已成為了不

文了解雲計算,全世界計算機

基礎 分發 應用技術 京東雲 求和 roc 減少 found 個性化 雲計算,這是自2008年全球金融危機以來全世界最熱的詞匯之一。世界各國、大街小巷,上至國家元首、下至家中老人,幾乎全社會所有人都知道有這樣一種新科技,叫“雲計算”。 自從2006年,亞馬遜公司對外發布了一

網絡與分布式集群系統的區別:每個節點都是計算機,而不是各種計算機內部的功能設備。

邏輯 方法 告訴 jsp 服務器 ket 進程通信 sock 引入 網絡與分布式集群系統的區別:每個節點都是一臺計算機,而不是各種計算機內部的功能設備。 Ip:具有全球唯一性,相對於internet,IP為邏輯地址。 端口(port):一臺PC中可以有65536個端口,

小白級別,計算機如何把資料傳送給另計算機

天各一方的兩臺計算機是如何找到對方並進行資料傳輸的?這一切要從計算機網路中五層模型開始講起。**五層模型**有以下這些 ![](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/fdbba6d1d76d4d2480b87256b3f3d392~tplv-k3

用不到1000美元攢深度學習用的電腦次深度學習和便宜硬體的探奇

從上世紀80年代後我就再沒攢過電腦。我也相當擔心花好幾百塊,最終搞一堆我自己裝不出來的零件(或是攢出來了,但可能沒法正常工作)。不過我要告訴你,攢機是可以的!另外,整個過程也很好玩。最後你能擁有一臺通用的電腦,並能做預測,同時比筆記本快20多倍。下面是購買清單和一些細節建議:主機板主機板有不同的尺寸規格。因為

自助咖啡機月入4萬,萬億消費紅利迎來爆發可能?

隨著冬季咖啡銷量旺季的到來,瑞幸/星巴克搶佔咖啡市場的速度持續加快,使用者對咖啡的需求也持續增長。 媒體分析,到2019年咖啡市場將形成咖啡線下門店、咖啡外賣、咖啡終端零售(機器)三足鼎立的市場格局。 而細分三類商業模式,獨佔場租、人力成本低優勢的咖啡自助新零售領域又最顯活力,其中的頭

幅圖理解計算機系統硬體組成

一、前言     試想一下,我們編輯好HelloWord程式,如果是C/C++語言編寫,一般是一個.c或者.cpp的檔案,這是一個文字檔案,你一般會把它放在你的硬盤裡面,難道不是嗎?比如桌面、D、E盤下,那當我們打算執行HelloWord的時候計算機就需要載入這個檔案,然後經

獲取PC硬體硬體序列號,唯一標識PC

用一個庫: jydisk.dll  百度說是windows提供的C++標準動態庫,很方便使用。 點選連線下載檔案,裡面有各種語言的呼叫例子,可直接使用。測試多臺機器,結果靠譜。沒有遇到獲取出來是全零的情況。             &

如何建造超級計算機

你需不需要一臺每秒可以進行數百萬億次浮點運算的機器?或者,你想不想知道點關於你家地下室裡的超級計算機是如何上電執行的趣事兒?建造一臺屬於自己的計算叢集——亦即超級計算機——是每個閒得發慌還有錢燒的專業極客都能做到的事情!從技術上來講,一臺現代多處理器超級計算機實際上是一個計算機網路,這些計算機並行地

報錯:Win10 這計算機中已經安裝了 .NET Framework 4.5.2/4.6.1/4.7.1等等任何版本 或版本更高的更新

Win10系統自帶的.net framework版本為4.7,自己安裝.NET Framework 4.5.2時會提示:這臺計算機中已經安裝了 .NET Framework 4.5.2 或版本更高的更新。 解決方法 下載安裝.net framework的開發版或者說開發包。開發版地址h