計算機組成原理學習-實驗二 寄存器實驗(詳細、系統)

如果你對其他計算機組成原理知識感興趣,請考慮閱讀我的專欄:

計算機組成原理【專欄】

須知

本文僅作學習筆記使用,僅在CSDN網站發佈,如果在其他網站發現,均爲侵權行爲,請舉報。作者:小王在努力。.

實驗要求

 基本要求

  1. 理解CPU運算器中寄存器的作用

  2. 設計並驗證寄存器組(至少四個寄存器)

  3. 利用寄存器或組合邏輯電路實現移位運算功能(至少含左移、右移、循環左移、循環右移四種運算功能)

 擴展要求

  1. (擴展)實現更多的寄存器

  2. (擴展)實現多總線結構寄存器訪問

 思考內容

  思考隨着寄存器的增多,電路設計的複雜度是什麼比例增大

實驗步驟

 一、理論分析

 本次實驗需要驗證寄存器組,我們選擇74LS373來充當寄存器,在此處我們選擇用299芯片來實現移位運算功能,包含了左移、右移、循環左移、循環右移,299的功能圖(圖片截自電子發燒友網站)如下:
在這裏插入圖片描述

 由於擴展要求:用74LS138配合一個讀開關和寫開關實現選中8個寄存器中的一個並對其進行讀寫控制,所以我們用到了一些與或運算,因此,我們採用74LS04來實現非運算,4073來實現3位與運算、4075來實現3位或運算。

 二、實現方法

 基礎要求:

 四位寄存器的設計:

 通過使用74LS245將數據輸入到總線上,然後數據在總線上流動。如果需要進行移位操作,則進入74LS299芯片,並將數據保存在74LS299芯片中,同時關閉74LS245,進行移位操作,最後將數據放回到總線上,數據流動到寄存器輸入端位置,通過74LS138和兩個開關進行與或運算,實現選中並控制寄存器的操作,用74LS138選中寄存器之後,打開寫開關,將數據寫入到選中寄存器中,然後打開讀開關,將數據讀出到總線上。
在這裏插入圖片描述

 擴展要求:

 八個寄存器的設計:

 在四個的基礎上縱向延伸4個寄存器,其重要功能與四個的一樣。

這個圖片描述沒啥用吧我覺得
 擴展要求:實現138和讀、寫開關與或運算實現選中讀、選中寫功能。
在這裏插入圖片描述
 介紹一下讀、寫開關和74LS138進行的與或運算。
在這裏插入圖片描述

 通過真值表可得:

 OE非=A非+B+C

 LE=(A非)與B與(C非)

 三、實驗結果分析

 四個八位寄存器讀寫:
 讓編號爲010的寄存器寫入0001 0001,輸出結果:
在這裏插入圖片描述
讀出結果:
在這裏插入圖片描述

 四個寄存器右移(由於篇幅原因,左移右移選擇一個實現):
在這裏插入圖片描述

 四個寄存器循環右移(由於篇幅原因,循環左移循環右移選擇一個實現):
在這裏插入圖片描述

 八個八位寄存器讀寫:

 讓編號爲110的寄存器寫入0001 0001,輸出結果:
在這裏插入圖片描述 讀出結果:
在這裏插入圖片描述

 八個寄存器右移(由於篇幅原因,左移右移選擇一個實現):

在這裏插入圖片描述

 八個寄存器循環右移(由於篇幅原因,循環左移循環右移選擇一個實現):

在這裏插入圖片描述

 四、思考問題

 我在增加寄存器的時候,並沒有感到電路設計複雜難度有明顯的提高(不是博主裝X,應該是博主沒有理解題目意思吧!)。

 五、問題和解決辦法

 一、 299的使用:
  在接觸到這個299的芯片的時候,我就納悶了,你說你弄成個輸入輸出分開的不好嗎?非要輸入輸出在一起,不吐槽了,不如正題。
  首先我們先看功能圖:
在這裏插入圖片描述
  從這張圖上,我們得出,299的功能有:清零、保持、左移、右移和置數功能。但是我們只需要用到他的三個功能:左移、右移和置數功能。
  proteus裏面的74LS299:
在這裏插入圖片描述
  簡單說一下上面的端口對應:

proteus 真實端口
MR CLR非
OE2非 G2非
OE1非 G1非
CLK CLK
S1 S1
S0 S0
D7 SL
D0 SR

  看完功能表和端口對應,想必大家對299芯片有了一個初步的認識了,接下來我就來演示如何實現左移功能:
  總體來說,想要讓其實現移位,得讓要移位的數據存儲進299芯片內部,也就是第一步,置數,通過查看功能表,只需要將:MR置爲1,OE2非和OE1非置爲0,S1和S0置爲1,D7和D0置爲0。然後讓數據流入,此時撥動CLK,實施置數功能即可,然後改變S1或S0通過撥動CLK來實現自己想要的功能。
  具體步驟:
  (1).將299的端口值設置爲置數功能(參考功能表進行設置)
在這裏插入圖片描述  (2).打開245,讓245內保存的數據流入總線,同時流經299。

在這裏插入圖片描述
   (3).此時總線上有了數據,而且299還設置爲置數功能,此時只需要撥動兩下下CLK,實現這個功能即可。
在這裏插入圖片描述

  (4).撥動完一次CLK之後,記得將其復原爲低電平,以便形成下一次上升沿。
在這裏插入圖片描述
  (5).此時關閉245,因爲299已經實現了置數功能,也就是將數據保存在了299芯片中了,我們就不需要245的數據了,而且待會299也需要往總線上輸出數據,所以現在需要將245關閉。

在這裏插入圖片描述
  (6).此時,我們的299內部已經保存了要移位的數據了,我們只需要設置S0和S1來實現我們想要的功能,此處我將S1置爲0,S0置爲1來實現右移的功能,我們看到,在我設置S1和S0之後,299內部保存的數據就放出來了。

在這裏插入圖片描述
  (7).撥動CLK,實現數據右移。

在這裏插入圖片描述
 二、74LS373的使用:
  我一直以爲74LS373就是一個簡單的鎖存器,其接口OE非是類似“總閘”的一個芯片開關,LE是讓數據流過的開關,結果打錯特錯!
  OE非是74LS373的讀開關,此處的讀是講74LS373芯片內鎖存的數據讀出芯片,而LE則是74LS373的寫開關,同理,此處的寫是將外部數據寫入到74LS373中。

 六、結論

 通過本次實驗,我深刻了解了74LS373的功能,並學會了74LS299芯片的使用,重要的是瞭解了運算器內部寄存器的工作方式,並運用了數電知識來解決自己遇到的問題。

後話

  1. 首先給大家說一下,博主經常在線,如果有什麼問題或者想法,可以在下方評論,我會積極反饋的。
  2. 其次還是要請大家能夠多多指出問題,我也會在評論區等候大家!
    在這裏插入圖片描述 .
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章