計算機組成原理課程設計報告_第1頁
計算機組成原理課程設計報告_第2頁
計算機組成原理課程設計報告_第3頁
計算機組成原理課程設計報告_第4頁
計算機組成原理課程設計報告_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、計算機組成原理課程設計說明書題目:基于硬布線控制器的簡單計算機系統(tǒng)設計與實現姓名:劉佳學號:U200915322班級:信息安全0902同組者:李奧涵實驗臺號:30完成日期:2012年1月5日指導老師:秦磊華、王小蘭、周建國目錄1.實驗題目32.實驗目的33.實驗流程34.實驗設計方案34.1數據通路及機器指令的實現(含內存設計)34.2 譯碼電路的實現74.3 時序設計105.測試結果136.遇到的問題及解決方案137.設計總結148.課程設計感想159.參考文獻161. 實驗題目基于硬布線控制的簡單計算機系統(tǒng)的設計與實現。2. 實驗目的加深對馮諾依曼體系結構計算機組成及其各部分功能的理解進一

2、步建立整機的概念。加深對計算機數據通路的理解、加深對計算機指令系統(tǒng)、微指令的認識,并通過時序控制,完整地設計一個簡單的計算機系統(tǒng)。鍛煉初步的計算機系統(tǒng)分析和設計能力。鍛煉學生分析、定位和排除故障的能力。3. 實驗流程在課程設計開始前,我們檢查了各個芯片是否能正常工作。在確定所用的芯片都是好的之后再開始進行接下來的工作。在整個課程設計的過程中,我們依照下面幾步進行:1) 打通數據通路,可向存儲器6116中存數,向寄存器中打入,用手動實現算術或邏輯運算。2) 由PC尋址加載機器指令,完成指定算術或邏輯運算;并將結果存入存儲器中,即實現回存功能。3) 用邏輯電路實現指令編碼,硬布線方式實現對幾個控點

3、的控制,并將譯碼器插入到IR和各控點之間。 4) 將時序控制加入到各控點控制當中,用時序控制各控點狀態(tài)的先后變化,實現自動運行。4. 實驗設計方案4.1數據通路及機器指令的實現(含回存設計)4.4.1 數據通路及回存設計在實驗的開始,首先是實現數據通路。由于一開始對數據通路的概念和實驗思路都不是很清晰,因此就是用計算機組成原理實驗指導書上第30面的電路連接的(電路圖略)。在數據通路測試通過后,在電路中加入回存,方法為在運算結果寄存器出口處和6116的數據引腳之間加入一個244,作為回存數據的寄存器,利用開關控制是否回存。4.4.2 機器指令設計回存測試完成后,開始進行機器指令的設計。由于611

4、6是8位數據存儲器,因此可以將一條指令設計為8位,高四位為操作碼,低四位為操作數。首先考慮僅實現直接尋址方式來設計。一個指令執(zhí)行的完整周期主要包括取值、取數據、譯碼、計算,指令計數器加1為下一條指令做準備,因此需要一個指令寄存器IR、地址寄存器AR、數據寄存器DR以及譯碼器等等。芯片373可以用于一般寄存器,IR和DR的輸入輸出都是固定的,因此都用373來實現;而AR由于要區(qū)分是指令地址還是操作數地址,因此選用157來實現,從而實現二選一的效果。芯片選擇完畢后,將地址寄存器AR放置在計數器161和6116的地址輸入引腳之間,在6116的數據引腳和運算器ALU之間放置數據寄存器DR,同時6116

5、的數據引腳連接指令寄存器IR的輸入引腳,其低四位連接AR的另一半輸入(之前的另一半輸入為161的輸出,即指令地址),高四位留著連接譯碼電路。如此這般便得到了一條指令執(zhí)行的完整數據流。從161獲得指令地址送入地址譯碼器AR,此時AR選擇161端的輸入,根據指令地址從內存(6116)中取得指令送到指令寄存器IR,之后指令高四位與低四位分開,高四位送去譯碼,譯碼后對所有控點進行控制,為接下來的命令執(zhí)行做準備;低四位送進地址譯碼器AR,此時AR選擇IR端的輸入,從內存獲得操作數據后送入數據寄存器DR,再送入ALU,根據譯碼結果即可獲得運算結果送入結果寄存器,打開結果寄存器,則可以根據結果燈得到這條指令

6、執(zhí)行的結果。這樣一條指令就完整地執(zhí)行完了。4.4.3 立即數尋址設計接下來,實現立即數尋址。由于要實現的指令是8條(不包括回存和停機),因此4位的指令只需要占用3位,則可利用其中一位作為判斷是立即數尋址還是直接尋址的標志,為保證指令的完整性,將最高位作為這個標志,于是可以考慮利用AR的二選一模式來實現選址方式的選擇。因為157是4輸出的,而數據是8位的,因此需要兩個157,并將指令的最高位連接157的使能端,控制157的輸出。由于立即數尋址獲得的數據就是指令的低四位,即此數據的高四位全部為零,因此將DR的輸出高四位和四個零連接一個157,DR輸出的低四位和指令低四位連接一個157。157使能端

7、為0,則選擇的是DR的原始輸出,即直接尋址;157的使能端為1,則選擇的是高四位為0,低四位為指令低四位,即立即數尋址。由此,整個電路的基本設計實現,可以通過個開關的狀態(tài)變化手動的實現內存內一組指令的實現過程的演示,電路的系統(tǒng)設計圖如圖1所示。4.2 譯碼電路的實現而若要使得這個電路能夠執(zhí)行指令,就必須進行譯碼器的設計。指令表如表1所示。指令編號指令功能備注0 1/0000F=A減BM=01 1/0001F=ABM=12 1/0010F=A+BM=03 1/0011F=BM=14 1/0100F=A加BM=05 1/0101F=AM=16 1/0110F=AB減1M=07 1/0111F=AB

8、M=18 1101回存9 1111停機注:其中指令最高位為1時表示立即數尋址,為0表示直接尋址。表1 指令表根據這個指令表,可以看到回存和停機時機器指令,回存和停機是機器指令,不需要譯碼,而前面的8條指令可以用指令后四位來控制,假設指令用A3A2A1A0來表示,則根據指令功能,可以看到指令需要控制的控點有S3、S2、S1、S0、M、Cn-,由此獲得指令控點對應表,如表2所示。A2A1A0S3S2S1S0MCn-00001100000110111d01000010101110101d10010010110100001d11001110111101101d表2 指令控點對應表S3S0 M C-nc

9、p圖1 系統(tǒng)設計圖15 14 13 1219 16 15 129 6 5 217 16 15 14 13 11 10 919 16 15 12 9 6 5 24 7 12 93 6 13 102 5 14 1111 12 13 14373161157373395157244244611618118137337318 17 14 13 8 7 4 31572 4 6 817151311181614123 5 7 9C-nS0S3C-n+4C-nMCP使能GOEa-OEb-OEb-OEa-OE-WE-使能S使能S使能S使能G使能G使能G19 16 15 12 9 6 5 218 17 14 13

10、8 7 4 313 11 10 913 11 10 918 20 22 1 19 21 23 218 20 22 1 19 21 23 24 7 12 93 4 5 619 16 15 12 9 6 5 218 17 14 13 8 7 4 32 5 14 113 6 13 102 5 14 113 6 13 108 7 4 318 17 14 135 6 7 84 7 12 9譯碼電路接下來,要根據這個表來構造卡諾圖,從而獲得各控點的表達式。各控點卡諾圖如下所示:S3:A2 A1A0000111100011011000這樣化簡就可以得到S3的表達式:S3=A-2A0+A2A-1A-0。S2:

11、A2 A1A0000111100100010011這樣化簡就可以得到S2的表達式:S2=A-2A-1A-0+A2A1。S1:A2 A1A0000111100111010011這樣化簡就可以得到S1的表達式:S1=A-2A-1+A1A0+A2A1。S0:A2 A1A0000111100010111001這樣化簡就可以得到S0的表達式:S0=A-0A1+A-0A2+A0A-1A-2。M:A2 A1A0000111100011010110這樣化簡就可以得到M的表達式:M=A0。Cn-:A2 A1A00001111000dd111dd1這樣化簡就可以得到Cn-的表達式:C-n=A2+A1。由得到的各控

12、點表達式可以設計譯碼電路,如圖2所示:A0A1A2 S3 S2 S1 S0 A2A1 A1A0 A2A1A0 A2A1A0A1A0 A2A1A0 A2A1 A2A0A2A0 A2A0 A1A0 Cn M圖2 譯碼電路設計將譯碼電路用邏輯門連接完成后,輸入端接IR的高四位輸出,輸出端分別接到留個控點上。為了調試方便,也是出于電路可靠性的考慮,在IR高四位輸出端加入一個395芯片,作為操作碼寄存器,由此,整個電路的體系結構便建立起來了。此時通過個開關的控制便可以實現內存內一組指令的功能實現,并查看到運算結果。4.3 時序設計時序設計的目的是為了實現指令的自動執(zhí)行,因此,必須對指令周期進行設計。一個

13、CPU周期有5個節(jié)拍,執(zhí)行一條指令大致是取指、譯碼取數據、計算、指令計數器加1,因此一個CPU周期已經足夠了。因此可以得到指令周期流程設計圖如圖3所示(其中一個CPU周期的五個節(jié)拍分別為T0T4)。詳細的節(jié)拍分配如下:1) T0:取指操作,將指令地址送入指令寄存器IR;2) T1:將指令高四位和低四位分離,分別送入譯碼器和地址寄存器;3) T2:將得到的操作數數據送入數據寄存器,并將譯碼器中譯碼后指令和數據寄存器中的數據送入運算器;4) T3:運算器算出結果存入累加器;5) T4:指令計數器加1,為下一輪取指操作做準備。開始T4T2T1T3T0DRALUALUAC譯碼器ALUMMDRPCARM

14、MIRIR低四位ARIR高四位譯碼器PC+1圖3 指令周期流程圖而根據指令周期流程設計,結合系統(tǒng)電路圖就可以得到這樣幾個控點(即幾個執(zhí)行過程中狀態(tài)變化的開關):AR使能端、DR使能端、IR使能端、運算結果寄存器使能端、AC使能端、指令計數器、指令操作數寄存器使能端,分別將這些控點標記為K1K6,則可以得到這樣的時序設計思路,如下:1) 首先打開IR,由于AR使能端為0,所以取到的是指令;2) AR使能端打到1,取到指令的操作地址部分,并且從存儲器中讀出地址所對應的數據,送入數據寄存器;指令操作數寄存器打開,將操作數打入譯碼電路,譯碼后輸出結果分別輸入到相應的入口;3) 打開DR,將數據送入運算

15、器,進行上一步譯碼得到的運算,輸出;運算結果寄存器打開,可以從燈上看到運算結果;AR保持高的狀態(tài),防止得到的數據被沖掉;4) 打開AC,將運算所得結果打入累加器,同時AR打到底;5) 指令計數器加1,為下一輪取指令做準備。按照上述五步依次執(zhí)行,則可以實現一條指令的完整執(zhí)行。這樣就得到了時序設計圖,如圖4所示。 T0T1 T2 T3T4CP時鐘 K0AR使能端 K1DR使能端 K2IR使能端 K3運算結果寄存器使能端 K4AC使能端 K5指令計數器K6指令操作數寄存器使能端圖4 時序設計圖最終,根據得到的各控點的時序設計,可以得到下面的時序設計框圖(圖5所示),從框圖上可以很清晰地看到一個指令周

16、期內,每一個控點被觸發(fā)的先后次序,從而實現指令的執(zhí)行。T1+T2S3S0 M C-n譯碼電路地地OEb-OEa-OEb-OEa-WE-OE-T1T0T2T3A3A3T2373T4圖5 時序設計框圖18118161163733953731571573732442441571615. 測試結果表達式:(34減1)5減8)9(其中4和9是立即數尋址)。首先,在內存中填入各指令及相關數據(如下表內存數據所示),并將給一個開始脈沖后,在時序的驅動下,指令開始依次順序執(zhí)行,從指示燈可以查看到內存地址、內存數據、譯碼前及譯碼后指令、執(zhí)行結果等,最終會執(zhí)行停機指令,時許在跑完最后一個完整周期后停止,結果指示燈

17、停在最終結果上。內存及測試結果如下表(表6)所示:內存地址內存數據執(zhí)行操作中間結果0 00000011 0111F=B0000 0011 31 00011110 0100F=AB減10000 0010 22 00100111 1001F=AB0000 0111 73 00110000 1010F=A減B1111 1111 -14 01001001 1001F=AB0000 1001 95 01010101 0000F=A1111 0110 -106 01101111 0000停機1111 0110 -107 01110000 001138 10000000 000009 10010000 01

18、01510 10100000 10008表3 測試記錄表格對照各組指示燈可以得到上面的記錄表格,由于其中有兩個指令都是立即數尋址,因此將要處理的數據直接寫進指令的操作數部分(紅色標記),從得到的各步結果可以確定每一步的操作是沒有問題的。6. 遇到的問題及解決方案(1) 調試:剛連完數據通路時,隨便存進兩個數做實驗,結果是錯的,面對著錯綜復雜的線,我和搭檔都不知道該怎樣調試。后來周老師教我們拿一根導線插在一個LED燈上做萬用表,看每一個芯片的輸入輸出哪里出錯了。于是,我們就利用這種方法去調試,果然找到了一根連錯的線。這之后,我們一直沿襲著這個習慣,因此效率和正確率也得到了大大提高,對于線路的邏輯

19、關系和芯片功能也更加清晰。(2) 拆線:在由手動改為自動的過程中,由于要拆除一些控點的連線,從而造成了很大的麻煩。因為之前連線時不注意,將很多線壓在了因腳底下,從而使得拆線的工作變得異常艱難。我們試著拆了一根無果后,決定將幾根要拆的導線用透明膠粘起來,放在一邊。然而這造成了很大的問題,就是幾根不用的導線相互之間會碰撞,偶爾也會碰到其他的東西,從而造成輸出極不穩(wěn)定,不停的亂閃,甚至出現短路報警。最終我們下了狠心,還是決定一根根小心拆掉,以免后患無窮。然而,這一工程耗費了我們一上午的時間,還造成一根線練錯了位置,檢查了半天。但這也讓我們痛下決心,接下來的連線一定要注意把線搭在引腳上面,切忌再不可壓

20、在引腳下面了。(3) 引腳柱子松動:由于多次拔插,一個芯片的柱子松了,但此時已經沒有合適的位置去移植芯片。有同學支招,把一根導線截斷,直接將銅線系在送了的那根柱子對應的芯片的引腳上,這種方法果然可行,但白白浪費了一根導線,且操作起來十分麻煩,也告誡我們要小心插拔導線,愛惜臺子。(4) 回存存數:做回存時,由于要將讀寫控制端加入時序控制,而時序一開始默認是為低的,這使得讀寫控制端總是保持“寫”的狀態(tài)。這樣,一旦將時需打開,內存里的數據總是被擦得干干凈凈。我曾想過利用反相器或者是D觸發(fā)器來控制器讀寫狀態(tài),但之前的狀況一直沒有消失,最后自動回存這一功能沒有實現,這也成為我們這次試驗的一個遺憾。(5)

21、 經驗總結:將一根導線連上一盞LED燈,作為萬用表,專門用于調試; 連接導線時注意不要將導線壓在引腳下面;插拔導線時注意輕手輕腳,不要用力過度,造成柱子松動;調試的時候,一步步分析每塊芯片的輸入輸出,逐步縮小范圍,直到發(fā)現問題。7. 設計總結這次的課程設計是分下面幾步進行的:實現數據通路、實現回存(手動)、實現整體系統(tǒng)電路、實現立即數尋址、實現譯碼電路、加入時序控制,將回存加入時序控制(未完成)。1) 實現數據通路:按照計算機組成原理實驗指導書上第30面的數據通路圖進行連線,將兩個395改為一個373,將這個373與181的連接及6116與這個181的連接換過來。2) 實現回存:從輸出接一個2

22、44連向6116的數據端,當6116為寫狀態(tài),244打開,則可以將結果寫進6116.3) 實現整體系統(tǒng)電路:加入IR、AR、DR等必要寄存器,實現直接尋址。利用157做AR,實現指令地址和操作數地址分離,將DR結果打入181,即運算單元,實現整體系統(tǒng)電路結構的初步架構。4) 實現立即數尋址:在DR輸出端加兩個157,利用指令操作碼最高位決定157使能端的高低,從而實現區(qū)分進入ALU的是指令的操作碼部分還是其取址后得到的數據,即立即數尋址還是直接尋址。5) 實現譯碼電路:利用邏輯門芯片實現所有控點邏輯并由IR操作碼部分控制。6) 加入時序控制:將各寄存器開關及157使能端按照其先后觸發(fā)次序加入時

23、序,開啟時序,按照一步步手動控制分析每一步(一個完整的CPU周期)結果是否正確,然后在最后加上停機指令,分析其連續(xù)自動運行結果是否正確。7) 將回存加入時序控制:利用取址操作后的周期進行回存操作,封鎖AC,防止取到的數據寫進AC,影響下一步操作。但因為讀寫端控制問題,沒有辦法將寫入數據保存下來(開啟時序,即被一個一個擦掉),因此沒有完成。8) 在每一次添加新功能之前,都會對將要使用的芯片和導線進行測試,然后再進行連線。8. 課程設計感想這次的課程設計由于時間倉促,自己的能力也有限,以致于并沒有完成時限所涉及的回存功能,只能實現簡單的手動回存,這無疑是一個遺憾。但是,這次的實驗已經讓我學到了很多的東西,至少讓我對簡單的計算機系統(tǒng)有了一個較為詳實的了解。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論