計算機組成原理課程設計--簡單計算機系統(tǒng)設計與實現_第1頁
已閱讀1頁,還剩62頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設計任務書</b></p><p> 題 目:基于微程序控制器的簡單計算機系統(tǒng)設計與實現</p><p> 專 業(yè):計算機科學與技術</p><p> 班 級:</p><p> 學 號:</p><p> 姓 名:</p>

2、;<p> 電 話:</p><p> 郵 件:</p><p> 實 驗 臺:</p><p> 完成日期:2012-03-04 周日下午</p><p> 指導教師:</p><p><b>  目 錄</b></p><p>  1 課程

3、設計概述7</p><p>  1.1 課設目的7</p><p>  1.2 設計任務7</p><p>  1.3 設計要求8</p><p>  2 實驗原理與環(huán)境9</p><p>  2.1 實驗原理9</p><p>  2.2 實驗環(huán)境9</p><

4、;p>  3 總體方案設計10</p><p>  3.1 需求分析10</p><p>  3.2 硬件設計10</p><p>  3.3 軟件設計16</p><p>  4 詳細設計與實現18</p><p>  4.1 選用芯片18</p><p>  4.2 硬件實

5、現24</p><p>  4.3 軟件實現30</p><p>  5 實驗過程與調試48</p><p>  5.1 仿真XXX48</p><p>  5.2 主要故障與調試49</p><p>  5.3 功能測試51</p><p>  5.4 實驗流程圖53</p

6、><p>  6 設計總結與心得55</p><p>  6.1 課設總結55</p><p>  6.2 課設心得57</p><p><b>  參考文獻59</b></p><p><b>  1、課程設計概述</b></p><p><

7、;b>  1.1課設目的</b></p><p>  計算機組成原理是計算機專業(yè)的核心專業(yè)基礎課,也是作為計算機專業(yè)的學生應該要好好掌握的重要學科。課程設計屬于設計型實驗,不僅鍛煉學生簡單計算機系統(tǒng)的設計能力,考驗同學的創(chuàng)新思維,而且通過進行設計及實現,進一步提高分析和解決問題的能力。再者,組成原理課設也是對學生們一個學期的學習成果的檢驗和鞏固,也是同學們提高分析、定位、排錯能力的一次機會。&l

8、t;/p><p><b>  1.2設計任務</b></p><p>  計算機系統(tǒng)設計的總體目標是設計模型機系統(tǒng)的總體結構、指令系統(tǒng)和時序信號。在對該模型機系統(tǒng)中的部件功能利用EDA軟件的仿真功能進行仿真分析和功能驗證的基礎上,將部分電路下載到FPGA,并與適當的外圍器件(包括部分芯片、輸入/輸出開關、LED顯示等)相配合,實現模型機的主機系統(tǒng)。</p>

9、<p>  要求所設計的主機系統(tǒng)能支持自動和單步運行方式,能正確地執(zhí)行存放在主存中程序的功能,對主要的數據流和控制流通過LED適時顯示信息。</p><p><b>  具體如下:</b></p><p>  設計微程序控制器或硬布線控制器或基于微程序和硬布線相結合方式的CPU控制器;</p><p>  利用所設計的CPU組成一臺功

10、能完整的模型機并基于實驗平臺實現.要求部分功能利用FPGA實現,部分功能用芯片連接實現;</p><p>  所設計的模型機支持加法減運算等基本的算術運算指令、支持邏輯運算類指令、支持存儲器讀寫指令、支持寄存器間數據傳送等幾類指令、支持定點數的溢出判斷;</p><p>  支持立即數尋址、直接尋址、隱含尋址、間接尋址(寄存器尋址)等幾種基本的尋址方式;</p><p&

11、gt;  能支持10條以上的指令;</p><p>  能運行由自己設計的CPU所支持的指令系統(tǒng)構成的一段程序,程序執(zhí)行功能正確;</p><p>  根據課程設計指導書和本次課程設計的具體要求,制定出設計方案。確定CPU 的基本結構是采用總線方式還是采用專用通路方式;</p><p>  畫出自己所設計計算機系統(tǒng)的原理框圖和器件連接圖,分析器件連接圖中各器件不同引

12、腳的功能,哪些可以固定連接,哪些需要通過微程序來控制,以及這些控制信號的有效形式;</p><p>  畫出各指令的指令周期流程圖和所需要的控制信號;</p><p>  布線、調試、驗收; </p><p>  鼓勵完成上述基本功能的基礎上進行適當擴展,比如支持流水線、支持其他尋址方式等。</p><p><b>  1.3設計要

13、求</b></p><p>  根據理論課程所學的至少,設計出簡單計算機系統(tǒng)的總體方案,結合各單元實驗積累和課堂上所學知識,選擇適當芯片,設計簡單的計算機系統(tǒng),具體要求如下:</p><p>  利用各單元實驗和課堂上所學知識,選擇適當的芯片,設計簡單的計算機系統(tǒng);</p><p>  在完成數據通路設計并驗證數據通路功能的基礎上增加指令和微指令控制的功

14、能;</p><p>  以手動方式產生各指令執(zhí)行過程中所需要的微命令,控制指令的執(zhí)行;</p><p>  以自己所設計的計算機系統(tǒng)為硬件環(huán)境,設計出完成指定功能的各指令周期流程圖,并設計出相應的微命令;</p><p>  設計時序列電路,產生滿足指令周期和指令執(zhí)行所需要的多級時序信號;</p><p>  設計控存,將各指令的微程序存放

15、在CM中,經過適當的時序控制,通過微程序自動控制指令的執(zhí)行(當采用微程序控制器時)。</p><p><b>  2、實驗原理與環(huán)境</b></p><p><b>  2.1實驗原理</b></p><p>  計算機組成原理,數字邏輯, FPGA(Field Programmable Gate Array)現場可編程門

16、陣列 、QUARTUS仿真等</p><p><b>  2.2實驗環(huán)境</b></p><p>  JZYL—II型計算機組成原理試驗臺,windows xp系統(tǒng),512M內存電腦電腦一臺,Quartus II 6.0版軟件,導線若干。</p><p><b>  3、總體方案設計</b></p><

17、p><b>  3.1需求分析</b></p><p>  在這次計算機系統(tǒng)設計中,我們需要根據計算機的各個部件先畫出總的框圖,然后在框圖的基礎上選擇適當的芯片實現各自的功能,主要先實現運算器部分,保證運算的正確性,然后設計存儲部分,選擇主存和控存是合并還是分開,然后設計對應的微指令,用手動操作檢驗后,進行設計時序電路,轉成自動執(zhí)行。</p><p><b

18、>  3.2硬件設計</b></p><p><b>  3.2.1總體設計</b></p><p>  本次我們采用的方案是微程序控制,且主、控存分開的方案,即采用微程序控制方式,實現主存儲器(MM)和微程序控制存儲器(CM)不共用一個存儲器的方式完成方案的設計。同時在實施的過程中,采用部分電路用FPGA方式下載、部分電路用硬件搭建的方式完成,,其

19、中運算器和存儲器部分由硬件搭線完成,主存使用6116芯片實現,控存與主存分開,使用2816芯片實現,然后時序控制部分選擇用FPGA方式下載,最后匯總在一起,形成實現所有功能的整體計算機系統(tǒng)。</p><p>  總體結構圖如圖 3.1所示。</p><p>  圖 3.1 總體結構圖</p><p><b>  3.2.2運算通路</b>&l

20、t;/p><p>  由181作運算,373鎖存組合成的電路,其中包括了AC,DR1,DR2等設計</p><p>  如圖3.2所示幾點說明(包括選擇芯片的理由及引腳連接情況):</p><p>  圖 3.2 運算器圖</p><p>  3.2.3存儲通路 :由6116作主存。2816作控存的主控存分開方式</p><

21、p><b>  如圖3.3所示</b></p><p>  圖 3.3 存儲器圖</p><p>  3.2.4選擇電路 </p><p><b>  如圖3.4所示</b></p><p>  為方便置數,直接讓指令的數據部分與161的輸入相連</p><p> 

22、 圖 3.4 選擇通路圖</p><p>  3.2.5時序控制:通過各種控制點設計而出</p><p><b>  如圖3.5所示</b></p><p>  圖 3.5 時序控制圖</p><p><b>  3.3軟件設計</b></p><p>  3.3.1機器指

23、令系統(tǒng)設計</p><p>  本次指令設計格式遵循常見指令格式設計原則,機器指令共占8位,其中高四位為操作碼OP,低四位為操作數地址ADDR,見下表描述:</p><p><b>  指令尋址方式設計</b></p><p>  順序尋址:根據PC(74LS161)計數器自動增1,順序讀取下一條指令;</p><p>

24、  跳躍尋址:根據PC(74LS161)的PC-SET功能,依照跳躍指令內容往計 數器中預置打入數據,從而跳轉到相應地址。</p><p><b>  操作數尋址方式設計</b></p><p>  寄存器尋址:利用AC(74LS373)寄存器進行尋址;</p><p>  直接尋址:根據指令中的ADDR所指向的地址得到主存相應數據;<

25、;/p><p>  隱含尋址:利用AC(74LS373)寄存器,對于需要雙操作數的機器指令只提供一個操作數,另一操作數隱含在AC中。</p><p>  3.3.2微指令設計</p><p>  微指令設計思想:此次設計共決定選取12條指令,分別是取址公操作、store存儲指令、load導入指令、jump跳轉指令、加、減、與、或、非、地址非、異或等運算指令,以及最后的停

26、機指令。指令采用雙周期、自動執(zhí)行。</p><p>  微指令設計方案:根據具體的電路原理決定采取16個微程序控制點,然后通過對各個控制點的值來實現對微指令的編碼(即各個控制點的值取0或1),不同的指令所對應的各個控制點的編碼會有不同。</p><p>  微指令設計流程:因為事先必須確定好電路才能得出各個控制點,因此根據完整的電路的各個可控信號確定了16個控制點,在這個過程中,實際有的控

27、制點不止16個,因此我們采取了一些措施,部分控制點合并,另外一些改成了直接采用節(jié)拍控制,最終將控制點的數目控制在了16個,然后設計了取址公操作部分各個控制點的值,形成了取址公操作的編碼,然后在此基礎上修改各個控制點的值,形成了一個大概的指令編碼表,然后在實踐中檢驗、糾錯、修改,最后得到完整的微指令設計表。</p><p><b>  微程序設計</b></p><p>

28、;  對于每條指令都設計了相應的匯編程序來進行檢驗,將匯編程序設計好,然后改寫成計算機所能識別的二進制形式,事先將二進制程序存入內存的芯片中,然后開始執(zhí)行檢驗即可。</p><p>  對于各條指令的微程序要考慮到指令的控制點編碼,以及控制它的地址,還有內存中的存儲數據的部分。將微程序分為兩段,一段是所執(zhí)行的操作,另一段是操作數。</p><p>  而每一行代碼又可分為3部分,比如我們設

29、計的微程序地址四位,數據八位,指令八位,因此我們的程序中,前四位二進制數字表示程序執(zhí)行的地址,即PC計數器的內容,后八位是指令,指令的前四位對應的是操作碼,需送入控存譯碼,進而得到具體操作,后四位是數據地址,返送回內存讀取數據。</p><p>  各個指令所對應的微程序具體還是不同的,在后面會有詳細說明。</p><p><b>  詳細設計與實現</b></

30、p><p><b>  4.1 所選用芯片</b></p><p><b>  74LS181</b></p><p>  系統(tǒng)使用了2片181芯片作為ALU,用于8位的運算器,負責執(zhí)行階段的各種運算。181芯片引腳圖及引腳說明如表 4.1.</p><p>  表4.1 74181芯片引腳及其引腳說明

31、</p><p><b>  2、74LS157</b></p><p><b>  如圖4.2所示</b></p><p>  表4.2 74167芯片引腳及其引腳說明</p><p><b>  3、74LS161</b></p><p><b

32、>  如圖4.3所示</b></p><p>  表4.3 74161芯片引腳及其引腳說明</p><p><b>  4、74LS395</b></p><p><b>  如圖4.4所示</b></p><p>  表4.4 74181芯片引腳及其引腳說明</p>

33、<p><b>  5、6116</b></p><p><b>  如圖4.5所示</b></p><p>  表4.5 6116芯片引腳及其引腳說明</p><p><b>  6、2816</b></p><p><b>  如圖4.6所示</

34、b></p><p>  表4.6 2816芯片引腳及其引腳說明</p><p><b>  7、74LS244</b></p><p><b>  如圖4.7所示</b></p><p>  表4.7 74LS244芯片引腳及其引腳說明</p><p><b&g

35、t;  8、74LS373</b></p><p><b>  如圖4.8所示</b></p><p>  表4.8 74181芯片引腳及其引腳說明</p><p><b>  4.2硬件實現</b></p><p>  4.2.1硬件原理圖</p><p>  

36、本次我們采用的方案是微程序控制,且主、控存分開的方案,即采用微程序控制方式,實現主存儲器(MM)和微程序控制存儲器(CM)不共用一個存儲器的方式完成方案的設計。同時在實施的過程中,采用部分電路用FPGA方式下載、部分電路用硬件搭建的方式完成,,其中運算器和存儲器部分由硬件搭線完成,主存使用6116芯片實現,控存與主存分開,使用2816芯片實現,然后時序控制部分選擇用FPGA方式下載,最后匯總在一起,形成實現所有功能的整體計算機系統(tǒng)。具體

37、的電路設計圖如圖4.9所示:</p><p>  圖4.9 系統(tǒng)總框架引腳圖</p><p>  4.2.2運算通路實現</p><p>  運算器部分電路是采用硬件連線實現的,但是原價努力圖還是用Quartus設計的,并且為了檢驗其正確性,也進行了仿真.設計圖如4.10所示:</p><p>  圖4.10 運算器電路的圖</p&g

38、t;<p>  4.2.3存儲器部分實現</p><p>  此部分通路中,主要為一片6116做主存,其IO輸出數據通過一片373緩沖然后經過一片157選擇高四位送給作為寄存器的395芯片,然后送入作為控存的2816芯片中,低四位作為數據地址傳回內存,讀取操作數。如圖4.11所示</p><p>  圖4.11 存儲器電路引腳圖</p><p>  4

39、.2.4選擇電路的實現</p><p>  采用了157芯片作為選擇控制,從161芯片或者是作為IR的373芯片的兩個輸出中選擇一個作為其輸出。如圖4.12所示</p><p>  圖4.12 選擇通路電路引腳圖</p><p>  4.2.5時序電路的實現</p><p>  根據具體的控制信號得出的時序電路圖,用16個控制點與節(jié)拍信號作為

40、輸入,通過各種邏輯門實現邏輯運算,最后將其輸出作為控制開關的信號來實現各條指令。如圖4.13所示</p><p>  圖 4.13 時序電路圖</p><p><b>  4.3軟件實現</b></p><p>  4.3.1機器指令系統(tǒng)實現</p><p>  本次指令設計格式遵循常見指令格式設計原則,機器指令共占8

41、位,其中高四位為操作碼OP,低四位為操作數地址ADDR</p><p><b>  指令尋址方式設計</b></p><p>  順序尋址:根據PC(74LS161)計數器自動增1,順序讀取下一條指令;</p><p>  跳躍尋址:根據PC(74LS161)的PC-SET功能,依照跳躍指令內容往計 數器中預置打入數據,從而跳轉到相應地址。

42、</p><p><b>  操作數尋址方式設計</b></p><p>  寄存器尋址:利用AC(74LS373)寄存器進行尋址;</p><p>  直接尋址:根據指令中的ADDR所指向的地址得到主存相應數據;</p><p>  隱含尋址:利用AC(74LS373)寄存器,對于需要雙操作數的機器指令只提供一個操作數

43、,另一操作數隱含在AC中。</p><p><b>  1指令格式</b></p><p>  本次指令設計格式遵循常見指令格式設計原則,機器指令共占8位,其中高四位為操作碼OP,低四位為操作數地址ADDR,見表4.14描述:</p><p>  表 4.14 系統(tǒng)指令格式</p><p>  指令格式編碼及其格式說明如

44、表4.15所示:</p><p>  表4.15 指令格式說明表</p><p>  2、指令周期流程圖如下圖4.16所恨死</p><p>  圖 4.16 指令流程圖</p><p><b>  具體的指令流程</b></p><p>  LOAD指令,如圖4.17所示</p>

45、<p>  4.17 LOAD指令流程圖</p><p>  STORE指令,如圖4.18所示</p><p>  圖4.18 STORE指令流程圖</p><p>  JMP指令如圖4.19所示</p><p>  圖4.19 JMP指令流程圖</p><p>  4、END指令如圖4.20所示</p

46、><p>  圖4.20 END 指令流程圖</p><p>  5、ADD指令如圖4.21所示</p><p>  注:所有的雙操作數運算指令均和ADD相同</p><p>  圖4.21 ADD 指令流程圖</p><p>  6、NOT (A)指令如圖4.22所示</p><p>  注:所

47、有單操作數指令均同此,如A加A</p><p>  圖4.22 NOT(A) 指令流程圖</p><p>  4.3.2微指令實現</p><p><b>  控制信號選擇</b></p><p>  運算器部分:如表4.23所示</p><p>  表4.23 運算器部分控制點選擇</p

48、><p>  主、控存部分:如表4.24所示</p><p>  表4.24 主控存部分控制點選擇</p><p>  默認部分:如表4.25所示</p><p>  表4.25 默認部分控點H/L控制</p><p>  時序部分: STOP ,控制時序停止</p><p><b>  

49、指令周期設計</b></p><p>  每條指令包含兩個機器周期,其中第一個用于取指令,用M1標識,第二個用于執(zhí)行指令,用M2標識;每個機器周期包含4個T周期,分別為T1、T2、T3、T4,對于所有的指令,設計了取指公操作,則其第一個機器周期都一樣,即進行取指公操作,第二個機器周期則執(zhí)行對應的指令功能。</p><p><b>  3、時序產生設計</b>

50、;</p><p>  選擇JZYL—Ⅱ型計算機組成原理實驗臺左半邊的時序電路部分,通過其中的T1、T2、T3、T4來作為時序控制中的T1——T4,同時通過一片正沿 雙D觸發(fā)器74LS74和一片反相器74LS04作為產生時序控制中所需的M1與M2(其中 =M2);其時序部分的接線如下:</p><p>  T1、T2、T3、T4:接邏輯控制電路的輸入;</p><p&g

51、t;  START:接脈沖P1;</p><p>  STOP:接微指令設計中的第一位C0;</p><p>  CLK:接某一頻率控點;</p><p>  SEL:接地,持續(xù)產生T1、T2、T3、T4;</p><p>  M1、M2:接邏輯控制電路的輸入。如圖4.26所示</p><p>  圖4.26 雙周期

52、實現</p><p><b>  微指令流程設計</b></p><p> ?。喝≈腹僮鳎禾幱贛1內(其中表內L為低,H為高);如表4.27</p><p>  表4.27 取指公操作設計流程</p><p>  :LOAD指令(M1同取指公操作,只列出M2的設計):如表4.28</p><p>

53、;  表4.28 LOAD指令設計流程</p><p> ?。篠TORE指令(M1同取指公操作,只列出M2的設計):如表4.29</p><p>  表4.29 STORE指令設計流程</p><p>  :JMP指令(M1同取指公操作,只列出M2的設計):如表4.30</p><p>  表4.30 JMP指令設計流程</p>

54、<p> ?。篈DD指令(M1同取指公操作,只列出M2的設計):如表4.31</p><p>  注:所有雙操作數指令(SUB,AND,Fab,NOT D,⊙等)流程均同ADD,區(qū)別只是(S3,S2,S1,S0,M,)序列值不同而已,此處不再贅述,類比即可。</p><p>  表4.31 ADD指令設計流</p><p> ?。篘OT(A)指令(M1同

55、取指公操作,只列出M2的設計):如表4.32</p><p>  注:所有單操作數指令(乘2等)流程均同該指令,區(qū)別只是(S3,S2,S1,S0,M,)序列值不同而已,此處不再贅述,類比即可。</p><p>  表4.32 NOT(A)指令設計流</p><p>  :END指令(M1同取指公操作,只列出M2的設計):如表4.33</p><p

56、>  表4.33 END指令設計流</p><p><b>  邏輯表達式</b></p><p>  因為很多符號無法直接打出(如作為非的上劃線等),在這里直接用紙質上的截圖來作為參考:</p><p>  4.3.3微程序的設計</p><p> ?。何⒅噶罡袷剑喝绫?.34</p><p&

57、gt;  微指令共設計了16位,并且全部投入使用,共有16位微指令控制信號,微地址為4位,可以存放16位微指令,滿足使用需求,具體設計如下:</p><p>  表4.34 微指令格式設計</p><p>  :控制存儲器內容:如表4.35</p><p>  指令存入主存和控存中,如下所示</p><p>  表4.35 存儲的指令表&

58、lt;/p><p><b>  4.3.4測試程序</b></p><p>  1、檢測邏輯運算(1+2-2)&3</p><p>  Load 1 0000 0001 0101</p><p>  加 2 0001 0100 0110</p><p>  減 2

59、 0010 0101 0111</p><p>  AND 3 0011 0110 1000</p><p>  END 0100 1100 1111</p><p>  操作數A =1 0101 0000 0001</p><p>  操作數B =2 0110 0000 0010</p><

60、p>  操作數C =2 0111 0000 0010</p><p>  操作數D =3 1000 0000 0011</p><p><b>  最后結果為1</b></p><p>  檢測store/Jump</p><p>  Load 0000 0001 1100</p><p&

61、gt;  Store 0001 0010 1111</p><p>  Jump 0010 0011 0111</p><p><b>  … </b></p><p>  Store 0111 0010 1110</p><p>  End 1000 1100 1111</p><p> 

62、 地址原來存的數 1100 1010 1010</p><p>  1110 0000 0000</p><p>  1111 0000 0000</p><p>  指令執(zhí)行完后 地址存的新數據:</p><p>  1100 1010 1010</p><p>  1110 1010 1010</p>

63、;<p>  1111 1010 1010</p><p>  并且成功看到PC數值的變化,即完成了跳轉!</p><p><b>  5、實驗過程與調試</b></p><p><b>  5.1仿真</b></p><p>  實驗中的時序電路部分采用了波形仿真,主要用于檢驗電路能

64、否實現預期的效果,出現問題也主要是根據波形仿真去發(fā)現錯誤然后改正,對于時序電路的仿真圖5.1所示:</p><p>  圖 5.1 時序仿真圖</p><p>  5.2主要故障與調試</p><p>  5.2.1故障1——雙周期運行不正常</p><p>  解決:當初在時序設計中,我們決定采用的是雙周期來實現指令,并且在波形仿真時得到了

65、完全正確的結果,但是在下載后具體連線檢驗時,發(fā)現了問題,雙周期的運行并不對,M1周期比M2周期長很多,準確是M2很短,然后我們仔細對比后,發(fā)現是M2沒有實現完整的4個節(jié)拍,經過一系列排錯,發(fā)現是時序電路的信號有問題,T0節(jié)拍并不靈敏,單獨用燈檢測是發(fā)現T0節(jié)拍的燈并不是藍紅交錯的閃爍,而是藍一下,然后暗了,后來換了一個節(jié)拍,發(fā)現雙周期待運行正常了!</p><p>  5.2.2故障2 ——AC累加器顯示燈有信號

66、沖突</p><p>  當我們連接完整個運算器部分,然后檢測電路的正確性時,發(fā)現了AC的接出燈的紅燈很暗,而藍燈很正常,因此認為產生了信號沖突,于是開始對整個電路進行檢查,發(fā)現電路連接正常,并且373的使能端和244的高阻端控制也很正確,但是信號沖突一直存在著,即使是換過一些數據結果也會出現相應的情況,最后檢測芯片時,發(fā)現時181芯片的輸入端有信號輸出,于原來的輸入產生了沖突,最后問老師才知道181芯片在通電時

67、偶爾會出現這樣的情況,換了181芯片后問題終于得到了解決!</p><p>  5.2.3故障3—— load指令導致其他指令運行不正確</p><p>  我們設計指令時,因為得到的控制點數目超過了16,所以有一些控制點選擇了接到節(jié)拍信號上,所以隨著節(jié)拍信號,一些開關也是隨之每條指令都會打開,我們的load指令的微程序控制便是因為連接的節(jié)拍,導致了一些運算指令因為373的使能和244的高

68、阻打開的不是時候而出現了一系列問題,最后重新合并了一些控制結點,將load單獨做了一個控制位才使問題解決!</p><p>  5.2.4故障4——Quartus無法編譯原理圖</p><p>  在設計完原理圖,用Quartus編譯時,發(fā)現有錯誤,發(fā)現是因為已經過了使用期限,因此無法正常使用,最后發(fā)現了兩個辦法解決問題:第一、使用教程中的破解方法生成一個license。dat文件進行破解

69、,具體操作見教程;第二種方法較簡單,就是直接修改計算機的時間,向前調一段很長的時間,這樣軟件可以正常進行編譯了。</p><p>  5.2.5故障5——FPGA下載出問題</p><p>  在設計完時序電路后用FPGA進行下載,但是出現了一些問題,修改過原理圖后還是無法將其下載進去,實際運行的還是原來的原理圖,這讓我們百思不得其解,老師對這個也不是很拿手,最后細心的同學提示是quart

70、us中下載要修改一些文件,比如q6.0&dsp&mega這個文件,就要將文件中的序列號改成我們主機中quartus的序列號,這樣才能正常下載。</p><p>  5.2.6 故障6——執(zhí)行store指令時,數據無法正常寫入</p><p>  在依次檢查各條指令的執(zhí)行情況時,發(fā)現有兩條指令的執(zhí)行有問題,其中之一就是store指令,發(fā)現數據無法正常寫入,例如本來想向0000

71、地址寫入數據10001001,但是在檢查時發(fā)現0000地址存的并不是100001001,而是11111111,而后發(fā)現無論往該地址存什么數據,結果都是11111111不變,于是我們覺得是數據并沒有寫入,于是檢查了指令的執(zhí)行過程,最后發(fā)現在微程序的控制上有問題,當6116在寫時,373置成了高祖狀態(tài),因此才會寫入的是11111111,最后修改了微程序的執(zhí)行節(jié)拍,將其分開,然后發(fā)現結果正確!</p><p>  5.

72、2.6 故障7——執(zhí)行JUMP指令時,并沒有跳轉</p><p>  我們設計的指令中有兩條出了問題,另外一條便是JUMP指令了,無法跳轉,從仿真圖上來看,應該是可以正常跳轉的,但是結果就是不對,這讓我和搭檔非常郁悶,單獨將芯片接出來檢測,發(fā)現手動控制可以實現直數功能,即芯片本身并沒有問題,但自動執(zhí)行的時候會出錯,仔細研究了161芯片后,我們發(fā)現關于跳轉的實現是要兩個信號控制一個是cp脈沖,一個控制開關,于是我們

73、討論是不是上升沿給的不是時候,于是將CP信號由本來的一個節(jié)拍延長到兩個節(jié)拍,讓其可以完全覆蓋到整個控制開關的變化,最后結果正確了</p><p><b>  5.3功能測試</b></p><p>  在本次課程設計中,我們能夠根據具體的運算式寫出系統(tǒng)運行的程序,一般要求所設計的機器指令中包含了運算式的所有運算要求,倘若沒有包含的話(如異或運算等等),需要重新寫控存C

74、M,操作比較麻煩,但是其實現思路非常簡單,只需通過兩個74LS244直接操作對2816進行寫入即可,寫完再調整2816為讀狀態(tài),便可實現后續(xù)功能。經過測試,完全能夠實現此項操作。</p><p>  下面就以本次課程設計中檢查時老師給我出的測試題目為例,分析程序設計的過程和方法。其余程序均可按照下述方法和步驟進行設計,不在贅述。</p><p>  題目:[(8+7非)加8] + 9異或6

75、乘2與6減7</p><p>  程序流程為:如表5.2所示</p><p><b>  表5.2</b></p><p>  內存內容為:如表5.3所示</p><p><b>  表5.3</b></p><p><b>  程序運行結果</b>&l

76、t;/p><p>  運行完成后,最后在AC里面的結果為 :1111 1111</p><p><b>  5.4實驗流程圖</b></p><p><b>  1、2月27周一:</b></p><p>  熟悉實驗要求,并閱讀相關資料開始準備。</p><p><b&g

77、t;  2、2月28周二:</b></p><p>  設計實驗圖,并完成運算器和存儲器部分的設計</p><p><b>  3、2月29周三:</b></p><p>  開始連線,完成了運算器部分的連線,并檢驗正確</p><p><b>  4、3月1 周四</b></p&

78、gt;<p>  開始設計控存和微指令</p><p><b>  5、3月2 周五</b></p><p><b>  對微指令進行修改</b></p><p>  6、3月3~4 周六周日</p><p>  開始設計時序電路部分</p><p><b

79、>  7、3月5 周一</b></p><p>  通過波形仿真對時序檢驗,并進行修改</p><p>  8、3月6~7 周二,周三</p><p>  將電路全部連接,進行排錯和優(yōu)化</p><p><b>  9、3月8日 周四</b></p><p><b> 

80、 老師電路檢查</b></p><p><b>  6、設計總結與心得</b></p><p><b>  6.1課設總結</b></p><p>  基于對象的存儲是為了克服當前基于塊的存儲存在的諸多難題,在存儲接口和結構層次的重要發(fā)展??梢愿鶕秘撦d選擇優(yōu)化的存儲策略。作了如下幾點工作:</p>

81、;<p><b>  完成方案總結:</b></p><p>  本次組成原理課程設計難度還是相對較大的,在老師的指導和幫助以及我們自己的努力下,最終成功的設計出了一臺基于微指令設計和FPGA的支持自有指令系統(tǒng)的簡單計算機系統(tǒng)。我們所設計的系統(tǒng)能在基于EDA的實驗平臺上運行一段基于自有指令的程序,并能夠根據設計的程序計算出正確的結果,且在JZYL—Ⅱ型計算機組成原理實驗臺的LE

82、D燈(或數碼管)上顯示出結果,此次設計的系統(tǒng)為全自動執(zhí)行!完成了本次組成原理課程設計的基本任務與要求,雖然沒有剩余時間去進行功能的擴展,但至少所設計的系統(tǒng)的各項指標均符合設計要求。 同時,在這個過程中,我們也確實通過努力、學習與設計,鍛煉了我們自身對于簡單計算機系統(tǒng)的設計、系統(tǒng)的故障分析與定位以及系統(tǒng)調式的能力,更進一步提高了我們分析和解決問題的能力。</p><p><b>  功能總結:</b

83、></p><p>  在本次課程設計中,我們完成的設計工作和我們設計的系統(tǒng)具有的功能如下所示:</p><p>  具有準確無誤的數據通路,且在其基礎上具有指令和微指令控制的功能;</p><p>  設計了完成指定功能的各指令相對應的微命令;</p><p>  設計了時序列電路,能夠產生滿足指令周期和指令執(zhí)行所需要的兩級時序信號;

84、</p><p>  可以手動方式產生各指令執(zhí)行過程中所需要的微命令,控制指令的執(zhí)行;</p><p>  設計控存,將各指令的微程序存放在CM(用2816實現)中,經過適當的時序控制,通過微程序可以完成自動控制指令的執(zhí)行功能;</p><p>  對該模型機系統(tǒng)中的運算器模塊功能和微程序邏輯控制電路部分利用QuartusⅡ 6.0軟件仿真功能進行仿真分析和功能驗證

85、,且將該部分電路下載到FPGA,并與適當的外圍器件(包括部分芯片、輸入/輸出開關、LED顯示等)相配合,實現模型機的主機系統(tǒng);</p><p>  所設計的主機系統(tǒng)能支持自動和單步運行方式,能正確地執(zhí)行存放在主存中程序的功能,對主要的數據流和控制流通過LED適時顯示結果;</p><p>  所設計的模型機支持加、減運算等基本的算術運算指令,支持與、或、非等邏輯運算類指令,支持存儲器寫的回

86、存指令,支持寄存器間數據傳送的LOAD指令,支持跳轉指令等幾類指令;</p><p>  支持直接尋址、隱含尋址等幾種基本的尋址方式;</p><p>  能支持12條以上的指令;</p><p>  能運行由自己設計的CPU所支持的指令系統(tǒng)構成的一段程序,程序執(zhí)行功能正確且能夠穩(wěn)定輸出結果;</p><p>  所設計的主機系統(tǒng)在運行期間和

87、修改程序期間不需要拆拔一根導線,完全可以通過開關和脈沖或控制信號控制。</p><p>  其他需要總結的內容:</p><p>  在本次課程設計,我們采用的方案是微程序控制,且主、控存分開的方案,即采用微程序控制方式,實現主存儲器(MM)和微程序控制存儲器(CM)不共用一個存儲器的方式完成方案的設計;同時在實施的過程中,采用部分電路用FPGA方式下載、部分電路用硬件搭建的方式完成。在這

88、種微程序控制,且主、控存分開的方式中,我們所設計的主存8位專門用來存放機器指令和操作數,控存16位專門用來存放微指令,兩者分開。此方案連線較多且復雜,同時要打入初試的數據比較麻煩,需要分別打入;但是在此方案中不論做什么操作,控制存儲器中的內容永遠不需要改變(因為采用E2PROM存儲器2816,掉電不丟失數據,同時默認設計的程序中沒有涉及到微程序中不包括的微指令操作),同時一般不需要擴展地址,內存的地址單元是夠用的;在主存進行地址選擇也比

89、較簡單,做自動時與時序的配合也相對容易,而且容易理解。</p><p><b>  6.2課設心得</b></p><p>  這次組成原理課程設計確確實實讓我學到了很多課堂上學不到的東西,不僅是課本上的知識,同時也有很多自己動手才會明白的東西。通過這次實驗也確實加深了我對組成原理這門課的理解,對馮諾依曼體系結構的計算機有了一定的認識,同時也學到了很多在組原課上沒有詳

90、細介紹過的知識,如數據通路、時序電路等,通過我們自己設計了一個簡單的計算機系統(tǒng),我們將這些知識完完整整的融匯在一起,應用了一遍,讓我有深刻的感觸,同時這次也接觸到了FPGA的下載,了解了一些相關的注意事項和操作,再者也讓我學會了Quartus的使用方法,學會使用這么一款強大的軟件確實是獲益匪淺啊。最后,這是一次對自身各方面能力有很大提高的實驗,自身的初步計算機系統(tǒng)分析和設計能力、分析、定位和排除故障的能力等得到了鍛煉。</p>

91、;<p>  以下也是我對這次試驗的一些小小的心得體會,也是我的切身感受:</p><p>  在開始實驗前一定要好好檢查芯片,不能盲目的開始,否則在電路連好后再去尋找問題所在是件很麻煩的事,或許會浪費比檢查芯片所需的更多的寶貴時間。</p><p>  同時要重新理解和回顧計算機組成原理實驗的前3個實驗,即:運算器組成實驗、半導體存儲實驗、數據通路實驗,如果要選擇用FPGA

92、的話也要學習實驗指導書中“FPGA及EDA開發(fā)環(huán)境介紹”部分的講解,只有好好復習了之前的知識才能最快的動手!</p><p>  實驗前要熟悉所有用到的芯片的功能和引腳職能,同時要熟悉該芯片的輸入輸出等具體內容,免得每次都得查閱課本上的講解,詳細知道了用到的芯片的資料,這樣做起來會順利點,指導書上的那些邏輯表是遠遠不夠的。</p><p>  在用PFGA下載之前一定要記得修改相關的設置,

93、并修改序列號,否則會出現無法下載的情況!</p><p>  還有就是連線時候,最好不要兩個人同時在實驗臺上連接,這樣出現問題的幾率最大,因為兩個人的思維和連線方式及習慣都不一樣,所以可以兩人一個負責連線,一個負責報引腳號!</p><p>  最后還有一點就是實驗要保持冷靜,這個實驗的工程量還是相對比較巨大的,因此不出現錯誤應該說一般情況下是不可能的,我們也出現了很多錯誤,關鍵還是不要驚

94、慌,按照自己的思路來搜尋錯誤的根源,然后解決。</p><p>  總的來說,開學一個月,這個課設的完成確實是讓我最有成就感的一件事,對于在一定的時間內完成到這種程度,我也確實感到驚訝,也對自己的成長感到自豪!雖然在這次實驗中,我們并沒有什么太大的亮點,也沒有做出來高級功能的擴展,但是我們還是靠著自己的努力一步步實現了任務目標,靠自己的力量解決一系列難題,這也是一件很讓人愉快的事。同時也很感謝老師們一直陪伴我們,

95、給與我們指導與幫助,讓我們能更有效率的完成這個實驗。</p><p>  最后也是對這次試驗的一個感慨,這次試驗確實讓我有了很大的提高,不只是知識層面,精神層面也有著飛躍,思考能力,發(fā)現錯誤能力,排錯糾錯能力,這才是我覺得學到的最寶貴的東西,希望在以后的學習生活中還能再接觸到相關的有趣知識,讓我能有更大的提高!</p><p><b>  參考文獻</b></p

96、><p>  [1] 王曉蘭 周建國 秦磊華《計算機組成原理實驗及課程設計指導書》華中科技大學出版社 湖北武漢 2008</p><p>  [2] 番松 潘明《現代計算機組成原理》科學技術出版社 北京2007</p><p>  [3] 易小琳 朱文軍 魯鵬程《計算機組成原理實踐教程(基于EDA平臺)》北京航空航天大學出版社 北京2006</p><

溫馨提示

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

評論

0/150

提交評論